:root{--indigo:#1d3b6d;--indigo-deep:#152848;--coral:#f37045;--coral-deep:#d85c34;--amber:#f9c041;--cream:#fff8e7;--cultured:#f4f4f5;--navy:var(--indigo);--navy-deep:var(--indigo-deep);--ink:#1a2f54;--muted:#5c6573;--gold:var(--amber);--sand:var(--cream);--paper:#fff;--line:#e2e3e7;--valid:#1f7a46;--valid-bg:#e5f5ea;--soon:#9a6b00;--soon-bg:#fff4cc;--expired:#a12626;--expired-bg:#fde8e8;--na:#5c6573;--na-bg:#ececec;--draft:#3d4f8a;--draft-bg:#eceefc;--archived:#6a6258;--archived-bg:#efeae2;--danger:#9b1c1c;--shadow:0 12px 32px #1d3b6d1a;--radius:14px;--font-sans:Manrope, "Segoe UI", sans-serif;--font-display:"League Spartan", Manrope, sans-serif;font-family:var(--font-sans);color:var(--ink);background:var(--cream);font-synthesis:none;text-rendering:optimizelegibility;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(1100px 420px at 8% -8%, #f9c04147 0%, transparent 52%), radial-gradient(900px 380px at 100% 0%, #f370451f 0%, transparent 46%), var(--cream)}a{color:var(--indigo)}a:hover{color:var(--coral-deep)}:focus-visible{outline:2px solid var(--coral);outline-offset:2px}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{grid-template-columns:260px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--paper);color:var(--ink);border-right:1px solid var(--line);flex-direction:column;gap:22px;padding:22px 16px 16px;display:flex}.brand{align-items:center;gap:12px;padding:6px 8px 10px;display:flex}.brand-logo{height:auto;display:block}.brand-logo-crest{flex:0 0 52px;width:52px;height:52px}.brand-logo-lockup{width:min(280px,100%);height:auto}.brand-text h1{font-family:var(--font-display);letter-spacing:.01em;color:var(--indigo);margin:2px 0 0;font-size:22px;font-weight:700}.brand-kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--coral);font-size:11px;font-weight:700}.brand p{color:var(--muted);margin:4px 0 0;font-size:12px}.nav-list{flex-direction:column;gap:4px;display:flex}.nav-link{color:var(--indigo);border-radius:10px;padding:9px 12px;font-weight:600;text-decoration:none;display:block}.nav-link:hover{background:var(--cultured);color:var(--indigo)}.nav-link.active{color:var(--indigo);box-shadow:inset 3px 0 0 var(--coral);background:#f370451f}.nav-group-label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:12px 12px 6px;font-size:11px;font-weight:700}.sidebar-note{color:var(--muted);background:var(--cream);border:1px solid #f9c04173;border-radius:10px;margin-top:auto;padding:10px 12px;font-size:12px}.main-col{background:var(--cultured);flex-direction:column;min-width:0;display:flex}.mock-banner{background:var(--amber);color:#5a4300;border-bottom:1px solid #e0a82c;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:8px 22px;font-size:13px;font-weight:600;display:flex}.topbar{border-bottom:1px solid var(--line);z-index:5;background:#fffffff0;justify-content:space-between;align-items:center;gap:16px;padding:14px 22px;display:flex;position:sticky;top:0}.topbar-brand{align-items:center;gap:10px;display:none}.topbar-brand .brand-logo-crest{flex-basis:36px;width:36px;height:36px}.topbar-brand strong{font-family:var(--font-display);color:var(--indigo);letter-spacing:.02em}.page{max-width:1240px;padding:22px}.page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;display:flex}.page-header h2,.page h2{font-family:var(--font-display);color:var(--indigo);letter-spacing:.01em;margin:0 0 6px;font-size:32px}.lede{color:var(--muted);max-width:68ch;margin:0}.location-selector{min-width:220px}.location-selector span{color:var(--indigo);align-items:center;gap:8px;font-weight:600;display:flex}.location-selector select{border:1px solid var(--indigo);background:#fff;font-weight:500}.role-switcher{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.segmented{background:var(--cultured);border:1px solid var(--line);border-radius:999px;padding:3px;display:inline-flex}.segmented button{color:var(--indigo);background:0 0;border:0;border-radius:999px;padding:6px 12px}.segmented button[aria-pressed=true]{background:var(--indigo);color:#fff}.user-chip{flex-direction:column;align-items:flex-end;font-size:13px;display:flex}.user-chip strong{color:var(--indigo);font-weight:700}.user-chip span{color:var(--muted)}.badge{letter-spacing:.01em;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:12px;font-weight:700;display:inline-flex}.badge.mock{color:#6b4e00;background:#fff4cc}.badge.valid{background:var(--valid-bg);color:var(--valid)}.badge.soon{background:var(--soon-bg);color:var(--soon)}.badge.expired{background:var(--expired-bg);color:var(--expired)}.badge.na{background:var(--na-bg);color:var(--na)}.badge.current{background:var(--valid-bg);color:var(--valid)}.badge.archived{background:var(--archived-bg);color:var(--archived)}.badge.draft{background:var(--draft-bg);color:var(--draft)}.badge.extract-verified{background:var(--valid-bg);color:var(--valid)}.badge.extract-unverified{background:var(--soon-bg);color:var(--soon)}.badge.extract-review{background:var(--expired-bg);color:var(--expired)}.badge.extract-conflict{color:#8a1f1f;background:#fde8e8}.badge.extract-failed{background:var(--expired-bg);color:var(--expired)}.badge.extract-analyse-failed{background:var(--soon-bg);color:var(--soon)}.badge.extract-pending{background:var(--na-bg);color:var(--na)}.struct-table{border-collapse:collapse;width:100%;margin:8px 0 16px;font-size:13px}.struct-table th,.struct-table td{border:1px solid var(--line);text-align:left;vertical-align:top;padding:6px 8px}.struct-table th{background:var(--cultured)}.grid-4,.grid-3,.grid-2{gap:14px;display:grid}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card h3{color:var(--indigo);margin:0 0 8px;font-size:15px}.stat{font-family:var(--font-display);color:var(--indigo);margin:0;font-size:34px}.table-wrap{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:11px 12px}th{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--cream);font-size:12px}tr.clickable{cursor:pointer}tr.clickable:hover{background:#fff4e0}.filters{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.field{flex-direction:column;gap:5px;font-size:13px;display:flex}.field span,.field label{color:var(--muted)}.field input,.field select,.field textarea{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 10px}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{border-color:var(--coral)}.btn{background:var(--indigo);color:#fff;border:1px solid #0000;border-radius:10px;padding:8px 12px;font-weight:600}.btn:hover:not(:disabled){background:var(--indigo-deep)}.btn.secondary{color:var(--indigo);border-color:var(--line);background:#fff}.btn.secondary:hover:not(:disabled){background:var(--cultured)}.btn.ghost{color:var(--indigo);background:0 0}.btn.ghost:hover:not(:disabled){background:var(--cultured)}.btn.danger{color:var(--danger);background:#fff;border-color:#f0c4c4}.btn.danger:hover:not(:disabled){background:var(--expired-bg)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-row{flex-wrap:wrap;gap:8px;display:flex}.meta-list{grid-template-columns:160px 1fr;gap:8px 12px;font-size:14px;display:grid}.meta-list dt{color:var(--muted);margin:0}.meta-list dd{margin:0}.viewer{border-radius:var(--radius);background:#1b1f24;flex-direction:column;min-height:640px;display:flex;overflow:hidden}.viewer-toolbar{color:#f3efe6;background:#11151a;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.viewer-stage{flex:1;justify-content:center;padding:18px;display:flex;overflow:auto}.viewer canvas{background:#fff;max-width:100%;height:auto;box-shadow:0 8px 30px #00000059}.wizard-steps{gap:8px;margin-bottom:16px;display:flex}.wizard-steps span{background:var(--cultured);color:var(--muted);border-radius:999px;padding:6px 10px;font-size:13px}.wizard-steps span.active{background:var(--indigo);color:#fff}.tree{flex-direction:column;gap:10px;display:flex}.tree-cat{border:1px solid var(--line);background:#fff;border-radius:12px}.tree-cat header{border-bottom:1px solid var(--line);justify-content:space-between;gap:10px;padding:12px 14px;display:flex}.tree-cat ul{margin:0;padding:8px 12px 12px;list-style:none}.tree-cat li{border-bottom:1px dashed var(--line);justify-content:space-between;gap:8px;padding:8px 0;display:flex}.tree-cat li:last-child{border-bottom:0}.chat{grid-template-rows:1fr auto;min-height:520px;display:grid}.chat-log{flex-direction:column;gap:10px;margin-bottom:12px;display:flex}.bubble{border-radius:12px;max-width:76%;padding:10px 12px}.bubble.user{background:var(--indigo);color:#fff;margin-left:auto}.bubble.assistant{background:var(--cream);border:1px solid #f9c04166}.login-wrap{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--paper);border:1px solid var(--line);width:min(460px,100%);box-shadow:var(--shadow);border-radius:20px;padding:32px 28px 28px}.login-card .brand-logo-lockup{margin-bottom:18px}.login-card h2{font-family:var(--font-display);color:var(--indigo);margin:4px 0 8px;font-size:30px}.login-loading{font-family:var(--font-display);color:var(--indigo);font-size:22px}.modal-backdrop{z-index:20;background:#15284875;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--paper);border:1px solid var(--line);border-radius:16px;width:min(520px,100%);padding:20px}.alert{color:#6b4e00;background:#fff4cc;border-radius:10px;margin-bottom:12px;padding:10px 12px}.alert.danger{background:var(--expired-bg);color:var(--expired)}.help-list{padding-left:18px}.mobile-nav-toggle{display:none}@media (width<=1100px){.grid-4,.filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=860px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.sidebar.open{z-index:15;width:min(280px,86vw);display:flex;position:fixed;inset:0 auto 0 0}.mobile-nav-toggle,.topbar-brand{display:inline-flex}.grid-3,.grid-2,.filters,.page-header,.topbar{flex-wrap:wrap;grid-template-columns:1fr}.user-chip{align-items:flex-start}}@media print{body.block-print *{display:none!important}}
