:root{--ink:#17233b;--muted:#728099;--navy:#173b63;--blue:#2675a8;--line:#dce4ec;--soft:#f5f8fb;--green:#16866f}*{box-sizing:border-box}body{color:var(--ink);background:#eef3f7;margin:0;font-family:Inter,ui-sans-serif,PingFang SC,Microsoft YaHei,sans-serif}.login-shell{background:radial-gradient(circle at 20% 10%,#e9f4f5 0,#0000 38%),linear-gradient(145deg,#f6f8fa,#edf2f3);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:#fff;border:1px solid #dce5e7;border-radius:18px;flex-direction:column;gap:16px;width:min(420px,100%);padding:36px;display:flex;box-shadow:0 24px 70px #1e3d441f}.login-card h1{color:#173f46;margin:0;font-family:Georgia,serif;font-size:28px}.login-card p,.login-card small{color:#708088;margin:0;line-height:1.6}.login-card label{color:#3e555b;flex-direction:column;gap:7px;font-size:13px;font-weight:700;display:flex}.login-card input{border:1px solid #cfdadd;border-radius:8px;height:44px;padding:0 12px;font-size:15px}.login-brand{color:#fff;background:#0d6670;border-radius:14px;place-items:center;width:54px;height:54px;font-family:Georgia,serif;font-weight:700;display:grid}.login-error{color:#9b1c1c;background:#fff0f0;border-radius:8px;padding:10px 12px;font-size:13px}button,input,select{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh}.topbar{color:#fff;background:#102f50;border-bottom:1px solid #ffffff1f;align-items:center;gap:28px;min-height:82px;padding:10px 28px;display:flex}.brand{align-items:center;gap:12px;min-width:520px;max-width:680px;display:flex}.brand-mark{letter-spacing:.08em;background:#1b5278;border:1px solid #76b8d7;border-radius:10px;place-items:center;width:40px;height:40px;font-size:12px;font-weight:800;display:grid}.brand strong,.brand small{display:block}.brand strong{letter-spacing:.02em;font-family:Georgia,serif;font-size:20px}.brand small{color:#bdd0df;margin-top:3px;font-size:9px;line-height:1.35}.study-pill{color:#d9e8f1;background:#ffffff14;border-radius:999px;margin:auto;padding:9px 14px;font-size:12px}.study-pill i{background:#5ad0a7;border-radius:50%;width:7px;height:7px;margin-right:8px;display:inline-block}.user{color:#d9e8f1;align-items:center;gap:12px;font-size:12px;display:flex}.user-button{text-align:right;background:0 0;border:0}.user-button span small{color:#9eb8ca;text-overflow:ellipsis;max-width:150px;margin-top:2px;font-size:8px;display:block;overflow:hidden}.user b{color:#fff;background:#3f779a;border-radius:50%;place-items:center;width:36px;height:36px;display:grid}.workspace{grid-template-columns:238px 1fr;min-height:calc(100vh - 82px);display:grid}.sidebar{border-right:1px solid var(--line);background:#fff;padding:26px 16px}.eyebrow{color:#8b97a9;letter-spacing:.14em;text-transform:uppercase;margin:0 10px 10px;font-size:10px;font-weight:800}.nav-button,.domain{text-align:left;color:#546279;background:0 0;border:0;width:100%}.nav-button{border-radius:8px;align-items:center;gap:11px;margin:2px 0;padding:10px 12px;font-size:13px;display:flex}.nav-button.active{color:#153f64;background:#eaf2f7;font-weight:700}.nav-button em{color:#fff;background:#d76954;border-radius:999px;margin-left:auto;padding:2px 7px;font-size:10px;font-style:normal}.domain-title{margin-top:28px}.domain{border-radius:7px;grid-template-columns:27px 1fr auto;align-items:center;gap:5px;padding:9px;font-size:12px;display:grid}.domain>span{color:#9aa6b6;font-family:monospace;font-size:10px}.domain>b{font-weight:600}.domain small{color:#a2adba;font-size:9px}.domain.active{color:#164c71;background:#edf5f9;box-shadow:inset 3px 0 #2d7aa3}.domain.locked{opacity:.48;cursor:not-allowed}.phase-card{background:#f4f9fb;border:1px solid #dce8ef;border-radius:10px;margin-top:28px;padding:14px}.phase-card span,.phase-card strong{display:block}.phase-card span{color:#8492a3;text-transform:uppercase;letter-spacing:.12em;font-size:9px}.phase-card strong{color:#285c7b;margin-top:5px;font-size:12px}.phase-card p{color:#78889a;margin:8px 0 0;font-size:10px;line-height:1.5}.content{min-width:0;padding:30px 34px 50px}.page-head{justify-content:space-between;align-items:end;margin-bottom:22px;display:flex}.page-head .eyebrow{color:#457897;margin-left:0}.page-head h1{color:#183853;margin:0;font:700 30px/1.15 Georgia,Songti SC,serif}.page-head p:last-child{color:#718097;margin:7px 0 0;font-size:12px}.page-actions{align-items:center;gap:8px;display:flex}.primary,.secondary{border-radius:7px;padding:10px 16px;font-size:12px;font-weight:700}.primary{color:#fff;background:#1f668f;border:1px solid #1d5d86;box-shadow:0 4px 12px #1f668f29}.secondary{color:#476074;background:#fff;border:1px solid #ccd8e2}.metrics{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px;display:grid}.metrics article{border:1px solid var(--line);background:#fff;border-radius:10px;padding:16px 18px;box-shadow:0 2px 8px #243f570a}.metrics span,.metrics article>small{color:#7b899b;font-size:10px;display:block}.metrics strong{color:#183e5c;margin:4px 0 3px;font:700 25px Georgia,serif;display:block}.metrics strong small{margin-left:2px;font:600 11px sans-serif;display:inline}.metrics .good{color:#19836c}.metrics .warn{color:#b06b34}.main-grid{grid-template-columns:260px minmax(430px,1fr) 220px;align-items:start;gap:14px;display:grid}.panel{border:1px solid var(--line);background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 2px 10px #243f570b}.panel-head,.form-title{border-bottom:1px solid #e5ebf0;justify-content:space-between;align-items:center;padding:16px 17px;display:flex}.panel h2{color:#203f59;margin:0;font:700 17px Georgia,Songti SC,serif}.panel-head h2{margin-right:7px;display:inline-block}.panel-head span{color:#8c99a8;font-size:10px}.panel-head input{border:1px solid #dbe3ea;border-radius:6px;outline:none;width:120px;padding:7px 8px;font-size:10px}.subject-list{padding:6px}.subject{text-align:left;background:#fff;border:0;border-radius:8px;grid-template-columns:36px 1fr auto;align-items:center;gap:9px;width:100%;padding:11px 8px;display:grid}.subject:hover,.subject.active{background:#edf5f9}.subject.active{box-shadow:inset 3px 0 #2b769e}.avatar{color:#2d6889;background:#dcebf3;border-radius:50%;place-items:center;width:32px;height:32px;font-size:10px;font-weight:800;display:grid}.subject-copy strong,.subject-copy small{display:block}.subject-copy strong{font-size:12px}.subject-copy small{color:#7d8999;margin:3px 0 7px;font-size:9px}.subject-copy i{background:#dde6ec;border-radius:3px;width:100%;height:3px;display:block;overflow:hidden}.subject-copy i b{background:#3a94a5;border-radius:3px;height:100%;display:block}.subject-meta{text-align:right}.subject-meta em{color:#96662d;white-space:nowrap;background:#fff2d9;border-radius:4px;padding:2px 5px;font-size:8px;font-style:normal;display:block}.subject-meta em.done{color:#17735f;background:#def4ea}.subject-meta em.check{color:#9b523f;background:#fde7df}.subject-meta small{color:#8290a1;margin-top:8px;font-size:9px;display:block}.form-title p{color:#7d8b9d;text-transform:uppercase;letter-spacing:.08em;margin:0 0 3px;font-size:9px}.form-title-actions{align-items:center;gap:8px;display:flex}.lock-button{padding:6px 9px;font-size:9px}.locked-badge{color:#9a5a43;font-size:9px;font-weight:700}.draft{color:#39806f;font-size:9px}form{padding:19px}.pvr-month-menu{background:#f5f9fb;border:1px solid #d9e5eb;border-radius:9px;margin:-3px 0 18px;padding:12px}.pvr-month-tabs{flex-wrap:wrap;gap:7px;display:flex}.pvr-month-tabs>button{color:#587084;background:#fff;border:1px solid #c9d9e3;border-radius:7px;align-items:center;gap:7px;padding:8px 11px;font-size:9px;font-weight:700;display:flex}.pvr-month-tabs>button.active{color:#fff;background:#236d94;border-color:#236d94;box-shadow:0 3px 9px #236d942e}.pvr-month-tabs span{background:#00000014;border-radius:50%;place-items:center;width:15px;height:15px;font-size:11px;line-height:1;display:grid}.custom-month{border-top:1px solid #dce6eb;align-items:center;gap:7px;margin-top:10px;padding-top:10px;display:flex}.custom-month label{color:#61778a;margin-right:auto;font-size:9px}.custom-month input{background:#fff;border:1px solid #cfdae2;border-radius:6px;width:100px;padding:8px;font-size:9px}.section-label{border-bottom:1px solid #e8edf1;align-items:center;gap:9px;margin-bottom:17px;padding-bottom:11px;display:flex}.section-label>span{color:#fff;background:#1f668f;border-radius:6px;place-items:center;width:27px;height:27px;font:700 10px monospace;display:grid}.section-label strong,.section-label small{display:block}.section-label strong{font-size:12px}.section-label small{color:#8c98a8;margin-top:1px;font-size:8px}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}label{color:#435268;font-size:10px;font-weight:700}label input,label select{color:#2d3b4f;background:#fff;border:1px solid #d8e0e7;border-radius:6px;outline:none;width:100%;margin-top:6px;padding:9px 10px;font-size:11px;display:block}label input:focus,label select:focus{border-color:#3982aa;box-shadow:0 0 0 3px #3982aa1a}label input:disabled{color:#6f7c8d;background:#f3f5f7}.validation-note{color:#87683b;background:#fff9ec;border-left:3px solid #d7a34f;gap:10px;margin-top:16px;padding:11px;font-size:9px;line-height:1.5;display:flex}.form-actions{border-top:1px solid #e5ebf0;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:15px;display:flex}.primary.next{background:#184f72}.dynamic-grid{grid-template-columns:1fr 1fr;gap:13px;display:grid}.field-card{background:#fbfcfd;border:1px solid #dce4eb;border-radius:8px;min-width:0;padding:12px;transition:all .15s}.field-card:focus-within{background:#fff;border-color:#4a91b5;box-shadow:0 0 0 3px #4a91b51a}.field-card.has-error{background:#fff8f6;border-color:#cf6f5c}.field-heading{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:7px;display:flex}.field-heading label{color:#354b60;font-size:10px;font-weight:800}.field-heading label sup{color:#c34f3f;font-size:9px}.field-heading label small{color:#778596;font-size:9px;font-weight:500}.field-heading code{color:#748497;white-space:nowrap;background:#eaf0f4;border-radius:3px;padding:2px 4px;font-size:7px}.field-card>input,.field-card>select,.field-card>textarea{color:#2e4154;background:#fff;border:1px solid #d6dfe6;border-radius:6px;outline:none;width:100%;padding:8px 9px;font-size:10px}.select-with-settings{gap:6px;display:flex}.select-with-settings select{color:#2e4154;background:#fff;border:1px solid #d6dfe6;border-radius:6px;outline:none;flex:1;min-width:0;padding:8px 9px;font-size:10px}.select-with-settings button{color:#286684;background:#edf5f9;border:1px solid #bed0dc;border-radius:6px;font-size:9px;font-weight:700}.field-card>textarea{resize:vertical}.field-card>input:disabled,.field-card>select:disabled,.field-card>textarea:disabled{color:#929ca8;background:#eef1f3}.choice-grid{grid-template-columns:1fr 1fr;gap:5px 8px;padding:5px 0;display:grid}.choice-grid label{color:#556577;align-items:center;gap:5px;font-size:9px;font-weight:500;display:flex}.choice-grid input{accent-color:#2675a8}.field-foot{justify-content:space-between;align-items:center;gap:8px;margin-top:7px;display:flex}.field-foot>span{color:#8793a1;min-height:12px;font-size:8px;line-height:1.4}.has-error .field-foot>span{color:#bd4f3f;font-weight:700}.field-foot select{color:#778695;background:#fff;border:1px solid #dbe2e8;border-radius:5px;max-width:82px;padding:4px;font-size:8px}.section-label>b{color:#2e718f;background:#e9f2f6;border-radius:999px;margin-left:auto;padding:4px 8px;font-size:9px}.skip-banner{color:#80633a;background:#fff8e9;border-left:3px solid #d09a4c;margin:16px 19px 0;padding:11px 13px;font-size:9px;line-height:1.5}.skip-banner strong{margin-right:9px}.error-summary{color:#a44939;background:#fff3f0;border:1px solid #ebc4ba;border-radius:7px;margin-top:14px;padding:11px 13px;font-size:9px}.error-summary strong{margin-right:8px}.legend p{color:#68778a;align-items:center;gap:7px;margin:8px 0;font-size:9px;display:flex}.legend p>b{color:#c34f3f}.legend p>i{background:#4e94b3;border-radius:2px;width:8px;height:8px}.legend p>span{color:#748293;background:#edf1f4;border-radius:3px;padding:2px 4px;font-size:7px}.modal-backdrop{z-index:20;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f233494;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.dictionary-modal{background:#fff;border-radius:12px;width:min(1100px,96vw);max-height:88vh;overflow:hidden;box-shadow:0 28px 80px #0000004d}.settings-modal{background:#fff;border-radius:12px;width:min(620px,94vw);overflow:hidden;box-shadow:0 28px 80px #0000004d}.import-modal{background:#fff;border-radius:12px;width:min(980px,96vw);max-height:90vh;overflow:auto;box-shadow:0 28px 80px #0000004d}.query-modal{background:#fff;border-radius:12px;width:min(920px,96vw);max-height:90vh;overflow:auto;box-shadow:0 28px 80px #0000004d}.user-modal{background:#fff;border-radius:12px;width:min(850px,96vw);max-height:90vh;overflow:auto;box-shadow:0 28px 80px #0000004d}.audit-modal{background:#fff;border-radius:12px;width:min(1000px,96vw);max-height:90vh;overflow:hidden;box-shadow:0 28px 80px #0000004d}.audit-filter{background:#f7fafb;border-bottom:1px solid #e1e8ed;align-items:center;gap:7px;padding:12px 18px;display:flex}.audit-filter span{color:#84919e;margin-left:auto;font-size:8px}.audit-table{max-height:62vh;padding:0 16px 16px;overflow:auto}.audit-table table{border-collapse:collapse;width:100%;font-size:8px}.audit-table th{color:#fff;text-align:left;background:#173f5e;padding:8px;position:sticky;top:0}.audit-table td{color:#596a79;vertical-align:top;border-bottom:1px solid #e5ebef;padding:8px}.audit-table code{color:#2d7294;font-size:8px}.user-add{background:#f7fafb;border-bottom:1px solid #e0e7ec;grid-template-columns:1.3fr 1fr 150px auto;gap:8px;padding:17px 22px;display:grid}.user-add input,.user-add select{background:#fff;border:1px solid #d2dde4;border-radius:6px;padding:9px;font-size:9px}.user-list{gap:8px;padding:16px 22px;display:grid}.user-list article{border:1px solid #dce5ea;border-radius:8px;grid-template-columns:34px 1fr 145px 70px;align-items:center;gap:10px;padding:10px;display:grid}.user-list article>b{color:#286481;background:#dcecf3;border-radius:50%;place-items:center;width:32px;height:32px;font-size:9px;display:grid}.user-list strong,.user-list small{display:block}.user-list strong{font-size:10px}.user-list small{color:#83909e;margin-top:3px;font-size:8px}.user-list select{background:#fff;border:1px solid #d3dde4;border-radius:5px;padding:7px;font-size:9px}.user-list label{align-items:center;gap:5px;font-size:9px;display:flex}.permission-matrix{grid-template-columns:repeat(3,1fr);gap:8px;padding:0 22px 18px;display:grid}.permission-matrix span{color:#647786;background:#eef5f8;border-radius:7px;padding:10px;font-size:8px;line-height:1.5}.permission-matrix b{color:#285f7a;font-size:9px;display:block}.query-create{background:#f8fafb;border-bottom:1px solid #e1e8ed;padding:18px 22px}.role-strip{color:#718193;align-items:center;gap:8px;margin-bottom:13px;font-size:9px;display:flex}.role-strip b{color:#245f7e;background:#dcecf3;border-radius:999px;padding:4px 8px}.role-strip small{margin-left:auto}.query-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.query-grid select{background:#fff;border:1px solid #d3dde5;border-radius:6px;width:100%;margin-top:5px;padding:8px;font-size:9px;display:block}.query-create textarea{resize:vertical;border:1px solid #d3dde5;border-radius:7px;width:100%;margin-top:10px;padding:10px;font:10px/1.5 inherit}.query-create>.primary{margin-top:8px}.query-list{gap:10px;max-height:420px;padding:16px 22px;display:grid;overflow:auto}.query-list article{background:#fff;border:1px solid #dce4ea;border-radius:8px;padding:13px}.query-head{align-items:center;gap:8px;display:flex}.query-head b{color:#344d61;font-size:10px}.query-head small{color:#8b97a4;margin-left:auto;font-size:8px}.query-status{color:#9c642f;background:#fdebd8;border-radius:999px;padding:3px 6px;font-size:8px}.query-status.answered{color:#2b6a8c;background:#e2eff7}.query-status.closed{color:#21705d;background:#e1f2ea}.query-list article>p{color:#516476;margin:10px 0;font-size:10px;line-height:1.55}.query-list blockquote{color:#536b7b;background:#f1f7f9;border-left:3px solid #4c91ad;margin:9px 0;padding:9px 11px;font-size:9px}.query-response{gap:7px;margin-top:10px;display:flex}.query-response input{border:1px solid #d3dde5;border-radius:6px;flex:1;padding:8px;font-size:9px}.empty-query{text-align:center;color:#8a97a5;padding:30px;font-size:10px}.import-steps{grid-template-columns:1fr 1fr;gap:12px;padding:20px 22px;display:grid}.import-steps article{background:#f8fafb;border:1px solid #dce5eb;border-radius:9px;grid-template-columns:30px 1fr auto;align-items:center;gap:11px;padding:15px;display:grid}.import-steps article>b{color:#fff;background:#1f668f;border-radius:50%;place-items:center;width:27px;height:27px;font-size:11px;display:grid}.import-steps strong,.import-steps span{display:block}.import-steps strong{color:#29485e;font-size:11px}.import-steps span{color:#7b8998;margin-top:4px;font-size:9px;line-height:1.45}.file-button{color:#fff;white-space:nowrap;background:#1f668f;border:1px solid #1d5d86;border-radius:7px;padding:10px 14px;font-size:10px}.file-button input{display:none}.import-file{color:#3e6175;background:#eef6f8;border:1px solid #d8e4ea;border-radius:7px;justify-content:space-between;margin:0 22px;padding:10px 12px;font-size:10px;display:flex}.import-preview{border:1px solid #dfe7ec;border-radius:8px;max-height:300px;margin:14px 22px;overflow:auto}.import-preview table{border-collapse:collapse;width:100%;font-size:9px}.import-preview th{color:#fff;text-align:left;background:#173f5e;padding:8px;position:sticky;top:0}.import-preview td{color:#59697a;vertical-align:top;border-bottom:1px solid #e7edf1;padding:8px}.import-preview>p{color:#788696;background:#f6f8fa;margin:0;padding:9px 12px;font-size:9px}.import-ok{font-weight:700;color:#16866f!important}.import-error{font-weight:700;color:#b24e3d!important}.import-modal>.error-summary{margin:14px 22px}.settings-body{padding:20px 22px}.settings-body>p{color:#758394;margin:0 0 15px;font-size:10px;line-height:1.6}.new-subject-form{grid-template-columns:1fr 1fr;gap:14px;padding:22px;display:grid}.new-subject-form label{color:#445b6d;font-size:10px}.new-subject-form input,.new-subject-form select{color:#30475a;background:#fff;border:1px solid #d3dde5;border-radius:6px;width:100%;margin-top:6px;padding:10px;font-size:10px;display:block}.new-subject-form .error-summary{grid-column:1/-1;margin:0}.center-list{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.center-list>span{color:#365b72;background:#f3f8fa;border:1px solid #d7e2e9;border-radius:999px;align-items:center;gap:8px;padding:7px 8px 7px 11px;font-size:9px;display:flex}.center-list button{color:#637888;background:#dce8ee;border:0;border-radius:50%;place-items:center;width:17px;height:17px;padding:0;display:grid}.add-center{gap:8px;display:flex}.add-center input{border:1px solid #d5dee5;border-radius:6px;outline:none;flex:1;padding:9px 10px;font-size:10px}.modal-actions{background:#f8fafb;border-top:1px solid #e1e8ed;justify-content:flex-end;gap:8px;padding:14px 22px;display:flex}.death-prompt{text-align:center;background:#fff;border-radius:13px;width:min(500px,94vw);padding:26px 28px 0;overflow:hidden;box-shadow:0 28px 80px #0000004d}.death-icon{color:#9b5447;background:#f4e8e4;border-radius:50%;place-items:center;width:48px;height:48px;margin:0 auto 13px;font:700 25px Georgia,serif;display:grid}.death-prompt>p{color:#9a746d;letter-spacing:.12em;text-transform:uppercase;margin:0 0 5px;font-size:8px}.death-prompt h2{color:#503d3a;margin:0;font:700 21px Georgia,Songti SC,serif}.death-prompt>div:not(.modal-actions){color:#74808e;margin:13px 0 22px;font-size:10px;line-height:1.7}.death-prompt .modal-actions{margin:0 -28px}.modal-head{border-bottom:1px solid #e1e8ed;justify-content:space-between;align-items:center;padding:19px 22px;display:flex}.modal-head p{color:#5f879f;letter-spacing:.13em;margin:0 0 3px;font-size:8px}.modal-head h2{color:#1f425e;margin:0;font:700 20px Georgia,Songti SC,serif}.modal-head button{color:#53687a;background:#edf2f5;border:0;border-radius:50%;width:32px;height:32px;font-size:20px}.dictionary-summary{background:#f5f8fa;border-bottom:1px solid #e1e8ed;gap:24px;padding:13px 22px;display:flex}.dictionary-summary span{color:#788696;font-size:9px}.dictionary-summary strong{color:#1e597d;margin-right:5px;font:700 17px Georgia,serif}.dictionary-table{max-height:68vh;padding:0 16px 16px;overflow:auto}.dictionary-table table{border-collapse:collapse;width:100%;font-size:9px}.dictionary-table th{color:#fff;text-align:left;background:#173f5e;padding:9px;position:sticky;top:0}.dictionary-table td{color:#536376;vertical-align:top;border-bottom:1px solid #e6ebef;padding:8px}.dictionary-table tr:nth-child(2n) td{background:#f8fafb}.dictionary-table code{color:#2d7599;font-size:8px}.quality-panel{padding:17px}.ring{--value:260deg;background:conic-gradient(#3196a2 var(--value),#e3eaee 0);border-radius:50%;place-items:center;width:116px;height:116px;margin:20px auto;display:grid;position:relative}.ring:after{content:"";background:#fff;border-radius:50%;position:absolute;inset:10px}.ring span{z-index:1;text-align:center}.ring strong,.ring small{display:block}.ring strong{color:#17445f;font:700 24px Georgia,serif}.ring small{color:#8b98a6;margin-top:2px;font-size:9px}.quality-row{color:#647286;justify-content:space-between;align-items:center;padding:9px 0;font-size:10px;display:flex}.quality-row i{border-radius:2px;width:7px;height:7px;margin-right:7px;display:inline-block}.green{background:#3fa58b}.amber{background:#dfa54c}.blue{background:#5a92b6}.quality-row b{color:#34465a}.quality-panel hr{border:0;border-top:1px solid #e6ebef;margin:12px 0 15px}.quality-panel h3{margin:0 0 12px;font-size:11px}.timeline p{gap:9px;margin:0;padding:0 0 15px;display:flex;position:relative}.timeline p>i{z-index:1;background:#fff;border:2px solid #4d91a7;border-radius:50%;width:8px;height:8px;margin-top:3px}.timeline p:not(:last-child):after{content:"";border-left:1px solid #d8e2e7;position:absolute;top:10px;bottom:0;left:3px}.timeline strong,.timeline small{display:block}.timeline strong{font-size:9px}.timeline small{color:#8c98a7;margin-top:3px;font-size:8px}.workflow-card{background:#f3f8fa;border:1px solid #d8e4ea;border-radius:8px;padding:11px}.workflow-card b,.workflow-card small{display:block}.workflow-card b{color:#245f7d;font-size:10px}.workflow-card small{color:#83909d;margin:4px 0 9px;font-size:8px}.workflow-card button{width:100%;padding:7px;font-size:9px}.domain-preview{padding:22px}.domain-preview>p{color:#718095;margin:0 0 17px;font-size:11px}.domain-preview>div{grid-template-columns:1fr 1fr;gap:9px;margin-bottom:20px;display:grid}.domain-preview span{border:1px solid #e0e7ed;border-radius:7px;grid-template-columns:25px 1fr auto;align-items:center;gap:7px;padding:12px;font-size:10px;display:grid}.domain-preview span b{color:#5a8fa8;font-family:monospace}.domain-preview span small{color:#a0aab6;font-size:8px}.toast{color:#fff;background:#163e5d;border-radius:8px;padding:12px 18px;font-size:11px;position:fixed;bottom:28px;right:28px;box-shadow:0 12px 30px #112f4b3d}.dashboard-content{min-width:0;overflow:hidden}.dashboard-head{align-items:center}.dashboard-metrics{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.dashboard-metrics article{border:1px solid var(--line);background:#fff;border-radius:10px;padding:16px 18px;position:relative;overflow:hidden;box-shadow:0 2px 8px #243f570a}.dashboard-metrics article:before{content:"";background:#398ca1;width:4px;position:absolute;top:0;bottom:0;left:0}.dashboard-metrics span,.dashboard-metrics small{color:#7b899b;font-size:10px;display:block}.dashboard-metrics strong{color:#183e5c;margin:4px 0 3px;font:700 25px Georgia,serif;display:block}.dashboard-metrics .metric-overdue:before{background:#d2932f}.dashboard-metrics .metric-lost:before{background:#b67b2f}.dashboard-metrics .metric-death:before{background:#c94f4f}.dashboard-metrics .metric-missing:before{background:#9aa5af}.followup-dashboard-panel{overflow:hidden}.dashboard-controls{background:#fff;border-bottom:1px solid #e2e9ee;grid-template-columns:minmax(260px,1fr) 180px 130px 130px;align-items:end;gap:10px;padding:17px 19px;display:grid}.dashboard-controls h2{margin:0 0 3px}.dashboard-controls>div>span{color:#7d8998;font-size:9px}.dashboard-controls label{color:#678;font-size:9px}.dashboard-controls input,.dashboard-controls select{color:#354a5d;background:#fff;border:1px solid #d5dfe6;border-radius:6px;outline:none;width:100%;margin-top:5px;padding:8px 9px;font-size:9px;display:block}.dashboard-legend{color:#647588;background:#f8fafb;border-bottom:1px solid #e5ebef;flex-wrap:wrap;gap:15px;padding:10px 19px;font-size:8px;display:flex}.dashboard-legend span{align-items:center;gap:6px;display:flex}.dashboard-legend i{background:#28899d;border-radius:3px;width:22px;height:4px;display:inline-block}.dashboard-legend .legend-overdue{background:repeating-linear-gradient(90deg,#d2932f 0 6px,#0000 6px 9px)}.dashboard-legend .legend-lost{background:0 0;border-top:2px dashed #b67b2f;height:0}.dashboard-legend .legend-death{background:#c94f4f;height:5px}.dashboard-legend .legend-missing{opacity:.6;background:#a3adb6}.followup-timeline-scroll{background:#fff;max-height:62vh;overflow:auto}.followup-timeline-canvas{min-width:1120px}.cohort-grid-row{grid-template-columns:190px minmax(720px,1fr) 175px;display:grid}.cohort-axis{z-index:8;color:#607384;background:#edf3f6;border-bottom:1px solid #ccd8e0;min-height:45px;font-size:8px;font-weight:800;position:sticky;top:0}.cohort-axis-label,.cohort-axis-state{background:#edf3f6;align-items:center;padding:0 14px;display:flex}.cohort-axis-label{z-index:10;border-right:1px solid #d4dee5;position:sticky;left:0}.cohort-axis-state{z-index:10;border-left:1px solid #d4dee5;position:sticky;right:0}.cohort-axis-track{margin:0 14px;position:relative}.cohort-axis-track>span{color:#637687;font-size:8px;position:absolute;bottom:8px;transform:translate(-50%)}.cohort-axis-track>span:before{content:"";border-left:1px solid #9fb0bc;height:5px;position:absolute;bottom:-8px;left:50%}.today-axis{color:#315f77;white-space:nowrap;border-right:1px dashed #5b7f92;font-size:7px;font-style:normal;position:absolute;top:5px;bottom:0;transform:translate(-100%)}.cohort-row{background:#fff;border-bottom:1px solid #e7edf1;min-height:52px}.cohort-row:hover>div{background-color:#f6fafb}.cohort-subject-cell,.cohort-state-cell{z-index:4;background:#fff;flex-direction:column;justify-content:center;padding:7px 14px;display:flex;position:sticky}.cohort-subject-cell{border-right:1px solid #e0e7ec;left:0}.cohort-state-cell{border-left:1px solid #e0e7ec;right:0}.cohort-subject-cell button{color:#245f7e;text-align:left;background:0 0;border:0;width:max-content;padding:0;font-size:10px;font-weight:800}.cohort-subject-cell button:hover{text-decoration:underline}.cohort-subject-cell small,.cohort-state-cell small{color:#8593a0;margin-top:3px;font-size:7px}.cohort-state-cell b{color:#30758a;font-size:9px}.cohort-row.overdue .cohort-state-cell b{color:#a86d1f}.cohort-row.lost .cohort-state-cell b{color:#966522}.cohort-row.death .cohort-state-cell b{color:#b44444}.cohort-row.missing .cohort-state-cell b{color:#7d8790}.cohort-track{background-image:linear-gradient(90deg,#edf2f5 1px,#0000 1px);background-size:10% 100%;min-height:52px;margin:0 14px;position:relative}.today-guide{border-left:1px dashed #3d64796b;position:absolute;top:0;bottom:0}.cohort-line{background:#28899d;border-radius:4px;min-width:5px;height:4px;position:absolute;top:50%;transform:translateY(-50%)}.cohort-line.overdue{background:repeating-linear-gradient(90deg,#d2932f 0 8px,#0000 8px 12px)}.cohort-line.lost{background:0 0;border-top:3px dashed #b67b2f;height:0}.cohort-line.death{background:#c94f4f;height:5px;box-shadow:0 0 0 1px #c94f4f14}.start-marker,.end-marker{background:#fff;border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;transform:translate(-50%,-50%)}.start-marker{border:2px solid #28899d;width:8px;height:8px;left:0}.cohort-line.overdue .start-marker{border-color:#d2932f}.cohort-line.lost .start-marker{border-color:#b67b2f}.cohort-line.death .start-marker{border-color:#c94f4f}.end-marker{color:#0000;border:2px solid #28899d;width:9px;height:9px;font-size:0;left:100%}.end-marker.overdue{border-color:#d2932f}.end-marker.lost{color:#a87026;background:0 0;border:0;width:16px;height:16px;font-size:10px}.end-marker.death{color:#c43f3f;background:#fff;border:0;width:20px;height:20px;font:800 20px/1 sans-serif}.missing-date-note{color:#7d8790;background:#eef1f3;border-radius:5px;padding:4px 7px;font-size:8px;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.dashboard-empty{text-align:center;color:#8593a0;padding:44px;font-size:10px}.dashboard-error{color:#a24e42;grid-template-columns:1fr auto;align-items:center;gap:4px 14px;padding:30px 34px;display:grid}.dashboard-error strong,.dashboard-error span{display:block}.dashboard-error strong{font-size:12px}.dashboard-error span{font-size:9px}.dashboard-error button{grid-area:1/2/3}.dashboard-footnote{color:#778695;background:#f8fafb;border-top:1px solid #e2e9ed;padding:10px 19px;font-size:8px;line-height:1.55}@media (max-width:1100px){.main-grid{grid-template-columns:230px 1fr}.quality-panel,.study-pill{display:none}}@media (max-width:780px){.workspace{display:block}.sidebar{display:none}.content{padding:20px 14px}.main-grid{grid-template-columns:1fr}.metrics{grid-template-columns:1fr 1fr}.topbar{padding:9px 14px}.brand{min-width:0;max-width:none}.brand small{max-width:250px}.user span{display:none}.page-head{align-items:center;gap:10px}.page-head h1{font-size:24px}.page-actions{flex-direction:column;align-items:stretch}.subject-panel{max-height:300px}.form-grid,.dynamic-grid{grid-template-columns:1fr}.form-actions{flex-wrap:wrap}.dictionary-summary{gap:12px}.modal-backdrop{padding:8px}.import-steps{grid-template-columns:1fr;padding:14px}.import-steps article{grid-template-columns:28px 1fr}.import-steps article>button,.import-steps article>.file-button{grid-column:2}.import-file{margin:0 14px}.import-preview{margin:12px 14px}}@media (max-width:1200px){.dashboard-metrics{grid-template-columns:repeat(3,1fr)}.dashboard-controls{grid-template-columns:1fr 150px 120px}.dashboard-controls>label:last-child{grid-column:3}.dashboard-controls>div{grid-column:1/-1}}@media (max-width:780px){.dashboard-metrics,.dashboard-controls{grid-template-columns:1fr 1fr}.dashboard-controls>div{grid-column:1/-1}.dashboard-controls>label:last-child{grid-column:auto}.followup-timeline-scroll{max-height:58vh}}
