:root{--navy-950:#07162f;--navy-900:#0b2145;--navy-800:#12315f;--navy-700:#1b4079;--blue-600:#2563a8;--blue-100:#eaf2ff;--bg:#f4f6fa;--card:#fff;--line:#e1e7f0;--ink:#101828;--ink-2:#475569;--ink-3:#8390a5;--ok:#15803d;--ok-bg:#e9f7ee;--warn:#b85c00;--warn-bg:#fff3df;--bad:#b42318;--bad-bg:#feebe9;--muted:#667085;--muted-bg:#eef1f5;--radius:12px;--shadow:0 1px 2px #0f2a5c0d, 0 10px 28px #0f2a5c0f}*{box-sizing:border-box}html{background:var(--bg)}body{background:var(--bg);color:var(--ink);margin:0;font:14px/1.45 Inter,Segoe UI,system-ui,-apple-system,sans-serif}a{color:inherit}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--navy-900);color:#fff;flex-direction:column;flex:0 0 244px;align-self:flex-start;width:244px;min-height:100vh;display:flex;position:sticky;top:0}.brand{border-bottom:1px solid #ffffff17;align-items:center;gap:11px;padding:20px 18px;display:flex}.brand-mark{background:linear-gradient(145deg, #3180d9, var(--navy-700));letter-spacing:.4px;border-radius:10px;place-items:center;width:36px;height:36px;font-weight:800;display:grid}.brand strong{font-size:15px;display:block}.brand small{color:#96abc9;margin-top:2px;font-size:11px;display:block}.nav{flex:1;padding:13px 10px 20px}.nav-section{color:#6f89aa;text-transform:uppercase;letter-spacing:.09em;padding:15px 12px 6px;font-size:10px;font-weight:800}.nav-link{color:#c6d4e8;border-radius:8px;align-items:center;gap:10px;margin:2px 0;padding:9px 12px;text-decoration:none;display:flex}.nav-link:hover,.nav-link.active{background:var(--navy-700);color:#fff}.nav-link.active{font-weight:700}.nav-icon{text-align:center;opacity:.95;width:19px}.sidebar-foot{color:#7f96b6;border-top:1px solid #ffffff14;padding:13px 17px;font-size:11px}.main{flex:1;min-width:0}.topbar{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#fffffff7;align-items:center;gap:16px;height:62px;padding:0 24px;display:flex;position:sticky;top:0}.topbar-search{flex:1;max-width:440px;position:relative}.topbar-search input{border:1px solid var(--line);background:#f8fafc;border-radius:9px;width:100%;padding:9px 12px 9px 34px}.topbar-search span{color:var(--ink-3);position:absolute;top:9px;left:12px}.topbar-user{align-items:center;gap:10px;margin-left:auto;display:flex}.avatar{background:var(--navy-700);color:#fff;border-radius:50%;place-items:center;width:34px;height:34px;font-size:12px;font-weight:800;display:grid}.user-copy strong,.user-copy small{display:block}.user-copy strong{font-size:13px}.user-copy small{color:var(--ink-3);font-size:11px}.logout-button{border:1px solid var(--line);color:var(--ink-2);background:#fff;border-radius:8px;padding:6px 10px}.content{max-width:1540px;margin:0 auto;padding:24px}.page-head{flex-wrap:wrap;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.page-head h1{letter-spacing:-.025em;margin:0 0 4px;font-size:23px;line-height:1.2}.page-head p{color:var(--ink-3);margin:0}.page-actions{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.btn{border:1px solid var(--line);min-height:36px;color:var(--ink);background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:7px 13px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.btn:hover{background:#f8fafc}.btn.primary{background:var(--navy-700);border-color:var(--navy-700);color:#fff}.btn.primary:hover{background:var(--navy-800)}.btn.danger{color:var(--bad);border-color:#f0bbb6}.btn.small{min-height:30px;padding:4px 9px;font-size:12px}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.disabled{opacity:.62;cursor:not-allowed;pointer-events:none}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.card+.card{margin-top:14px}.card-title{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:14px 16px;display:flex}.card-title h2,.card-title h3{margin:0;font-size:14px}.card-title .card-link{color:var(--blue-600);margin-left:auto;font-size:12px;font-weight:700;text-decoration:none}.card-body{padding:16px}.kpi-grid{grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;margin-bottom:16px;display:grid}.kpi{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;padding:15px;text-decoration:none;transition:transform .15s,border-color .15s,box-shadow .15s;display:block}.kpi:hover{border-color:#b9cae2;transform:translateY(-2px);box-shadow:0 4px 10px #0f2a5c14,0 14px 32px #0f2a5c17}.kpi:focus-visible{outline-offset:2px;border-color:var(--blue-600);outline:3px solid #a9c8ee}.kpi-label{color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;font-size:10.5px;font-weight:800}.kpi-value{letter-spacing:-.035em;margin-top:7px;font-size:29px;font-weight:800;line-height:1.1}.kpi-sub{color:var(--ink-3);margin-top:3px;font-size:11.5px}.kpi.warn .kpi-value{color:var(--warn)}.kpi.bad .kpi-value{color:var(--bad)}.kpi.ok .kpi-value{color:var(--ok)}.grid-2{grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:14px;display:grid}.stack{gap:14px;display:grid}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th{color:var(--ink-3);text-transform:uppercase;letter-spacing:.055em;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;background:#fafbfd;padding:10px 14px;font-size:10.5px}td{vertical-align:middle;border-bottom:1px solid #eef2f6;padding:11px 14px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfdff}.person{align-items:center;gap:9px;min-width:185px;display:flex}.person-avatar{background:var(--navy-700);color:#fff;border-radius:50%;flex:none;place-items:center;width:32px;height:32px;font-size:11px;font-weight:800;display:grid}.person strong,.person small{display:block}.person strong{font-size:13px}.person small{color:var(--ink-3);font-size:11px}.pill,.company-badge{white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:800;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.pill.valid{background:var(--ok-bg);color:var(--ok)}.pill.expiring{background:var(--warn-bg);color:var(--warn)}.pill.expired,.pill.missing{background:var(--bad-bg);color:var(--bad)}.pill.neutral{background:var(--muted-bg);color:var(--muted)}.company-badge.apex{color:var(--navy-700);background:#e7eef9}.company-badge.bts{color:#5b36a4;background:#eee9fb}.status-dots{gap:5px;display:flex}.status-dot{border-radius:50%;width:10px;height:10px}.status-dot.valid{background:#16a34a}.status-dot.expiring{background:#f59e0b}.status-dot.expired,.status-dot.missing{background:#dc2626}.filters{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.filters input,.filters select{border:1px solid var(--line);min-height:36px;color:var(--ink-2);background:#fff;border-radius:8px;padding:7px 10px}.filters input{flex:1;min-width:230px}.flash{border:1px solid;border-radius:9px;margin-bottom:14px;padding:11px 13px}.flash.success{background:var(--ok-bg);color:#166534;border-color:#b5e2c4}.flash.error{background:var(--bad-bg);color:var(--bad);border-color:#f1bbb5}.flash.info{background:var(--blue-100);color:var(--navy-700);border-color:#bed5f4}.empty{color:var(--ink-3);text-align:center;padding:34px 18px}.muted{color:var(--ink-3)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.profile{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;margin-bottom:14px;overflow:hidden}.profile-main{flex-wrap:wrap;align-items:center;gap:16px;padding:18px;display:flex}.profile-avatar{background:var(--navy-700);color:#fff;border-radius:15px;place-items:center;width:64px;height:64px;font-size:21px;font-weight:800;display:grid}.profile h1{margin:0;font-size:21px}.profile-meta{color:var(--ink-2);flex-wrap:wrap;gap:14px;margin-top:6px;font-size:12.5px;display:flex}.completeness{text-align:center;margin-left:auto}.completeness-ring{--value:0%;background:conic-gradient(var(--ok) var(--value), #e9edf3 0);border-radius:50%;place-items:center;width:78px;height:78px;display:grid;position:relative}.completeness-ring:after{content:"";background:#fff;border-radius:50%;width:58px;height:58px;position:absolute}.completeness-ring strong{z-index:1;font-size:16px}.profile-actions{flex-wrap:wrap;gap:8px;padding:0 18px 15px;display:flex}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.data-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 18px;display:grid}.data-item{border-bottom:1px solid #eff2f6;min-width:0;padding-bottom:8px}.data-item small{color:var(--ink-3);margin-bottom:2px;font-size:11px;display:block}.data-item strong{overflow-wrap:anywhere;display:block}.sensitive{color:var(--warn);font-size:10px;font-weight:800}.doc-list{gap:8px;display:grid}.doc-row{border:1px solid var(--line);border-radius:9px;align-items:center;gap:10px;padding:10px 11px;display:flex}.doc-row .doc-copy{flex:1;min-width:0}.doc-row strong,.doc-row small{display:block}.doc-row small{color:var(--ink-3)}.doc-actions{gap:6px;display:flex}.form-card{max-width:1100px}.form-section{border-bottom:1px solid var(--line);padding:18px}.form-section:last-child{border-bottom:0}.form-section h2{margin:0 0 4px;font-size:16px}.form-section>p{color:var(--ink-3);margin:0 0 14px}.form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;display:grid}.field{min-width:0}.field.span-2{grid-column:span 2}.field.span-3{grid-column:span 3}.field label{color:var(--ink-2);margin-bottom:5px;font-size:11.5px;font-weight:750;display:block}.field input,.field select,.field textarea{background:#fff;border:1px solid #d7dfeb;border-radius:8px;width:100%;min-height:38px;padding:8px 10px}.field textarea{resize:vertical;min-height:76px}.field input:focus,.field select:focus,.field textarea:focus{border-color:#8bb0df;outline:2px solid #c6d9f4}.checkbox-row{flex-wrap:wrap;gap:12px 20px;display:flex}.checkbox{color:var(--ink-2);align-items:center;gap:7px;display:inline-flex}.checkbox input{width:16px;height:16px}.form-footer{background:#fafbfd;justify-content:flex-end;gap:8px;padding:18px;display:flex}.import-toolbar{flex-wrap:wrap;align-items:center;gap:12px;max-width:1100px;margin-bottom:12px;display:flex}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.ai-suggest{margin-top:7px}.student-subsection{border-top:1px solid var(--line);margin-top:4px;padding-top:14px}.student-subsection h3{margin:0 0 10px;font-size:14px}.modal-backdrop{z-index:100;background:#07142b9e;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modal-card{background:#fff;border-radius:13px;width:min(1050px,100%);max-height:calc(100vh - 36px);overflow:auto;box-shadow:0 24px 80px #00000047}.modal-card .card-title>div{gap:3px;display:grid}.modal-card .card-title small{color:var(--ink-3)}.ocr-review-table{min-width:760px;padding:8px 16px 14px;display:grid}.ocr-review-row{border-bottom:1px solid #edf1f6;grid-template-columns:42px 1.1fr 1.4fr 1.4fr 110px;align-items:center;gap:10px;padding:10px 8px;display:grid}.ocr-review-row.ocr-head{color:var(--ink-3);text-transform:uppercase;font-size:10.5px;font-weight:800}.ocr-review-row.uncertain{background:var(--warn-bg)}.ocr-review-row em{color:var(--ink-3)}.help{color:var(--ink-3);margin-top:4px;font-size:11px}.form-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.upload-form{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.upload-form .field{flex:170px}.upload-form .field:has(input[type=file]){flex-basis:280px}.user-admin-list{gap:12px;margin-top:18px;display:grid}.user-form{border:1px solid var(--line);border-radius:10px;gap:12px;padding:14px;display:grid}.form-footer.inline{background:0 0;justify-content:space-between;align-items:center;padding:0}.export-filters{align-items:center;margin-bottom:10px}.filters>label:not(.checkbox){color:var(--ink-2);align-items:center;gap:7px;display:inline-flex}.login-page{background:#fff;grid-template-columns:minmax(320px,1.05fr) minmax(420px,.95fr);min-height:100vh;display:grid}.login-hero{background:linear-gradient(145deg, var(--navy-950), var(--navy-700));color:#fff;flex-direction:column;justify-content:center;padding:9vw;display:flex}.login-hero h1{letter-spacing:-.05em;margin:18px 0;font-size:clamp(34px,5vw,62px);line-height:1}.login-hero p{color:#bdd0eb;max-width:560px;font-size:16px}.login-bullets{color:#dce7f6;gap:12px;margin-top:30px;display:grid}.login-bullets div{align-items:center;gap:10px;display:flex}.login-panel{place-items:center;padding:34px;display:grid}.login-box{width:min(430px,100%)}.login-box h2{margin:0 0 6px;font-size:28px}.login-box>p{color:var(--ink-3);margin:0 0 22px}.login-box .field{margin-bottom:14px}.login-box .btn{width:100%;min-height:42px;margin-top:5px}.login-note{color:var(--ink-3);margin-top:18px;font-size:12px}.progress-bar{background:#e9edf3;border-radius:99px;height:8px;overflow:hidden}.progress-bar span{background:var(--ok);height:100%;display:block}.summary-list{gap:9px;display:grid}.summary-row{border-bottom:1px solid #eff2f6;justify-content:space-between;gap:12px;padding-bottom:8px;display:flex}.mapping-list{gap:10px;display:grid}.mapping-intro{margin:0 0 2px}.mapping-document{border:1px solid var(--line);border-radius:10px;scroll-margin-top:76px;overflow:hidden}.mapping-document>summary{cursor:pointer;background:#fafbfd;align-items:center;gap:10px;padding:13px 14px;list-style:none;display:flex}.mapping-document>summary::-webkit-details-marker{display:none}.mapping-document>summary:hover{background:#f5f8fc}.mapping-chevron{color:var(--ink-3);font-size:24px;line-height:1;transition:transform .15s;transform:rotate(0)}.mapping-document[open] .mapping-chevron{transform:rotate(90deg)}.mapping-summary-copy{flex:1;min-width:0}.mapping-summary-copy strong,.mapping-summary-copy small{display:block}.mapping-summary-copy small{color:var(--ink-3);overflow-wrap:anywhere;margin-top:2px}.mapping-content{border-top:1px solid var(--line)}.mapping-content>.flash{margin:14px}.mapping-token{background:var(--blue-100);color:var(--navy-700);white-space:nowrap;border:1px solid #c8d7ec;border-radius:6px;padding:3px 7px;font:700 11px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace;display:inline-block}.mapping-table td{vertical-align:top}.mapping-table td:nth-child(2){min-width:250px}.mapping-table td:nth-child(3){min-width:220px}.mapping-sensitive{margin-top:4px;display:block}@media (max-width:1180px){.kpi-grid{grid-template-columns:repeat(3,minmax(150px,1fr))}.form-grid,.form-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.field.span-3{grid-column:span 2}}@media (max-width:900px){.app-shell{display:block}.sidebar{width:100%;min-height:auto;position:static}.brand{padding:13px 16px}.nav{padding:7px 9px;display:flex;overflow-x:auto}.nav-section,.sidebar-foot{display:none}.nav-link{white-space:nowrap;padding:8px 10px}.topbar{padding:0 14px;position:static}.topbar-search{display:none}.content{padding:16px}.grid-2,.detail-grid,.login-page{grid-template-columns:1fr}.login-hero{padding:40px 28px}}@media (max-width:650px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-value{font-size:24px}.form-grid,.form-grid.compact,.data-grid{grid-template-columns:1fr}.field.span-2,.field.span-3{grid-column:span 1}.profile-main{align-items:flex-start}.completeness{margin-left:0}.user-copy,.hide-mobile{display:none}}
