:root{--ground:#f1f3f2;--surface:#fff;--surface-2:#e7ebea;--surface-3:#dce1e0;--ink:#14181a;--ink-2:#485155;--ink-3:#7a8386;--rule:#ccd3d2;--rule-2:#a7b0af;--accent:#1f5a78;--accent-ink:#123a4e;--accent-soft:#dbe7ed;--on-accent:#fff;--pass:#2c6b4f;--pass-soft:#dae9e0;--warn:#8c6608;--warn-soft:#f0e7cc;--fail:#9e3226;--fail-soft:#f2deda;--risk-crit:#fdecea;--risk-crit-ink:#8a1c12;--risk-high:#fde8d3;--risk-high-ink:#8a4b12;--risk-med:#fdf6e3;--risk-med-ink:#7a5c12;--risk-low:#e9f6ee;--risk-low-ink:#1f6b3b;--font-ui:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "Cascadia Mono", "Segoe UI Mono", Menlo, Consolas, monospace;--radius:6px;--radius-sm:4px;--sidebar-w:236px;--topbar-h:52px;--shadow-sm:0 1px 2px #121c200f, 0 1px 1px #121c200a;--shadow:0 1px 3px #121c2014, 0 4px 12px #121c200f;--shadow-lg:0 8px 28px #121c201f, 0 2px 8px #121c2014;--zebra:#121c2006;--row-hover:#1f5a780f;--ease:.16s cubic-bezier(.4, 0, .2, 1);--accent-2:#c2691c;--accent-2-soft:#f6e6d4;--sidebar-bg:#16384a;--sidebar-bg-2:#1f4d64;--sidebar-ink:#d4e3ea;--sidebar-ink-2:#8fb2c4;--sidebar-rule:#27516a;--sidebar-active-bg:#2b6c8f;--sidebar-active-ink:#fff;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ground:#0f1315;--surface:#161b1e;--surface-2:#1e2529;--surface-3:#262f33;--ink:#e3e8e7;--ink-2:#a3acae;--ink-3:#6f797c;--rule:#2a3337;--rule-2:#3c474b;--accent:#74b8db;--accent-ink:#a9d5ec;--accent-soft:#143240;--on-accent:#0f1315;--pass:#66bc90;--pass-soft:#12301f;--warn:#d6a93e;--warn-soft:#302509;--fail:#e28372;--fail-soft:#331512;--risk-crit:#3a1512;--risk-crit-ink:#e9a79b;--risk-high:#35230f;--risk-high-ink:#e0b483;--risk-med:#2f2a0d;--risk-med-ink:#d8c784;--risk-low:#12301f;--risk-low-ink:#7fcf9e;--shadow-sm:0 1px 2px #0000004d;--shadow:0 2px 6px #0000005c, 0 6px 16px #00000047;--shadow-lg:0 10px 34px #00000080, 0 3px 10px #0006;--zebra:#ffffff06;--row-hover:#74b8db1a;--accent-2:#e0a85a;--accent-2-soft:#332509;--sidebar-bg:#0e181c;--sidebar-bg-2:#172a31;--sidebar-ink:#bcd2dc;--sidebar-ink-2:#6f8e9b;--sidebar-rule:#21343c;--sidebar-active-bg:#1d4559;--sidebar-active-ink:#eaf4f8;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--ground:#0f1315;--surface:#161b1e;--surface-2:#1e2529;--surface-3:#262f33;--ink:#e3e8e7;--ink-2:#a3acae;--ink-3:#6f797c;--rule:#2a3337;--rule-2:#3c474b;--accent:#74b8db;--accent-ink:#a9d5ec;--accent-soft:#143240;--on-accent:#0f1315;--pass:#66bc90;--pass-soft:#12301f;--warn:#d6a93e;--warn-soft:#302509;--fail:#e28372;--fail-soft:#331512;--risk-crit:#3a1512;--risk-crit-ink:#e9a79b;--risk-high:#35230f;--risk-high-ink:#e0b483;--risk-med:#2f2a0d;--risk-med-ink:#d8c784;--risk-low:#12301f;--risk-low-ink:#7fcf9e;--shadow-sm:0 1px 2px #0000004d;--shadow:0 2px 6px #0000005c, 0 6px 16px #00000047;--shadow-lg:0 10px 34px #00000080, 0 3px 10px #0006;--zebra:#ffffff06;--row-hover:#74b8db1a;--accent-2:#e0a85a;--accent-2-soft:#332509;--sidebar-bg:#0e181c;--sidebar-bg-2:#172a31;--sidebar-ink:#bcd2dc;--sidebar-ink-2:#6f8e9b;--sidebar-rule:#21343c;--sidebar-active-bg:#1d4559;--sidebar-active-ink:#eaf4f8;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%}body{background:var(--ground);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.55}a{color:var(--accent-ink)}::selection{background:var(--accent-soft);color:var(--accent-ink)}*{scrollbar-width:thin;scrollbar-color:var(--rule-2) transparent}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--rule-2);border:3px solid var(--surface);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--ink-3)}::-webkit-scrollbar-corner{background:0 0}.shell{grid-template-columns:var(--sidebar-w) minmax(0, 1fr);min-height:100vh;display:grid}.sidebar{background:var(--sidebar-bg);border-right:1px solid var(--sidebar-rule);height:100vh;color:var(--sidebar-ink);flex-direction:column;display:flex;position:sticky;top:0;overflow-y:auto}.brand{border-bottom:1px solid var(--sidebar-rule);min-height:var(--topbar-h);border-top:3px solid var(--accent-2);gap:1px;padding:14px 18px;display:grid}.brand strong{letter-spacing:.01em;color:#fff;font-size:14px}.brand span{color:var(--sidebar-ink-2);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.nav{flex-direction:column;gap:1px;padding:10px 8px 24px;display:flex}.nav-group{letter-spacing:.09em;text-transform:uppercase;color:var(--sidebar-ink-2);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:7px;width:100%;padding:12px 10px 6px;font-family:inherit;font-size:10.5px;display:flex}.nav-group:hover{color:var(--sidebar-ink)}.nav-caret{opacity:.7;border-top:3.5px solid #0000;border-bottom:3.5px solid #0000;border-left:4px solid;flex:none;width:0;height:0;transition:transform .12s}[aria-expanded=true]>.nav-caret{transform:rotate(90deg)}.nav-group-body.is-closed,.nav-subgroup-body.is-closed{display:none}.nav a{border-radius:var(--radius);color:var(--sidebar-ink);transition:background var(--ease), color var(--ease);border-left:2px solid #0000;align-items:center;gap:9px;padding:6px 10px;font-size:13.5px;text-decoration:none;display:flex}.nav a:hover{background:var(--sidebar-bg-2);color:#fff}.nav a[aria-current=page]{background:var(--sidebar-active-bg);color:var(--sidebar-active-ink);border-left-color:var(--accent-2);font-weight:600}.nav a .count{font-family:var(--font-mono);color:var(--sidebar-ink);background:#ffffff1f;border-radius:8px;margin-left:auto;padding:0 6px;font-size:11px}.nav a .count.alert{background:var(--fail);color:#fff}.main{flex-direction:column;min-width:0;display:flex}.topbar{height:var(--topbar-h);border-bottom:1px solid var(--rule);background:var(--surface);z-index:5;align-items:center;gap:14px;padding:0 20px;display:flex;position:sticky;top:0}.topbar .spacer{flex:1}.topbar .who{text-align:right;line-height:1.25}.topbar .who b{font-size:13px;font-weight:600;display:block}.topbar .who span{color:var(--ink-3);font-size:11.5px}.content{width:100%;max-width:1180px;padding:24px 28px 60px}.app-footer{border-top:1px solid var(--rule);background:var(--surface);color:var(--ink-3);margin-top:auto;padding:12px 28px;font-size:11.5px}.login-foot{text-align:center;color:var(--ink-3);margin-top:18px;font-size:11.5px}.page-head{margin-bottom:20px}.page-head h1{color:var(--accent-ink);border-bottom:3px solid var(--accent-2);margin:0 0 8px;padding-bottom:7px;font-size:21px;line-height:1.2;display:inline-block}.page-head p{color:var(--ink-2);max-width:70ch;margin:0;font-size:13.5px}h2{border-left:3px solid var(--accent);color:var(--accent-ink);margin:28px 0 10px;padding-left:9px;font-size:15px}.actions{grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:8px;margin-bottom:26px;display:grid}.action-card{color:inherit;background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:box-shadow var(--ease), transform var(--ease), border-color var(--ease);padding:12px 14px;text-decoration:none;display:block}.action-card:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.action-card .n{font-variant-numeric:tabular-nums;color:var(--accent-ink);font-size:24px;font-weight:600;line-height:1.1}.action-card .l{color:var(--ink-2);margin-top:2px;font-size:12.5px}.action-card.attention{border-left-color:var(--fail)}.action-card.attention .n{color:var(--fail)}.action-card.soon{border-left-color:var(--warn)}.action-card.soon .n{color:var(--warn)}.action-card.clear{border-left-color:var(--pass)}.table-wrap{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}thead th{text-align:left;letter-spacing:.05em;text-transform:uppercase;color:var(--accent-ink);background:var(--accent-soft);border-bottom:2px solid var(--accent);white-space:nowrap;padding:9px 12px;font-size:11px;font-weight:600}.table-wrap thead th{z-index:2;position:sticky;top:0}tbody tr{transition:background var(--ease)}tbody tr:nth-child(2n) td{background:var(--zebra)}tbody td{border-bottom:1px solid var(--rule);vertical-align:top;padding:9px 12px}tbody tr:hover td{background:var(--row-hover)}tbody tr:last-child td{border-bottom:0}.num,td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.mono{font-family:var(--font-mono);font-size:12px}.result-count{color:var(--ink-2);margin:4px 0 12px;font-size:13px}.muted-text{color:var(--ink-2);font-size:13px}.muted-small{color:var(--ink-3);font-size:12px}.form-inline{display:inline}.badge{white-space:nowrap;border:1px solid;border-radius:9px;padding:1px 7px;font-size:11px;display:inline-block}.badge.ok{color:#fff;border-color:var(--pass);background:var(--pass)}.badge.warn{color:#fff;border-color:var(--warn);background:var(--warn)}.badge.bad{color:#fff;border-color:var(--fail);background:var(--fail)}.badge.mute{color:var(--ink-2);border-color:var(--rule-2);background:var(--surface-2)}.field{gap:5px;margin-bottom:14px;display:grid}.field label{font-size:12.5px;font-weight:500}.field .hint{color:var(--ink-3);font-size:12px}input[type=text],input[type=email],input[type=password],input[type=date],select,textarea{font:inherit;border:1px solid var(--rule-2);border-radius:var(--radius);background:var(--surface);color:var(--ink);width:100%;transition:border-color var(--ease), box-shadow var(--ease);padding:7px 10px;font-size:13.5px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}.btn{font:inherit;border-radius:var(--radius);border:1px solid var(--accent);background:var(--accent);color:var(--on-accent);cursor:pointer;box-shadow:var(--shadow-sm);transition:filter var(--ease), box-shadow var(--ease), transform var(--ease);padding:7px 15px;font-size:13.5px;font-weight:500}.btn:hover{filter:brightness(1.08);box-shadow:var(--shadow)}.btn:active{filter:brightness(.96);box-shadow:var(--shadow-sm);transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.btn.secondary{background:var(--surface);color:var(--ink);border-color:var(--rule-2)}.btn.danger{background:var(--fail);border-color:var(--fail);color:#fff}.alert{border:1px solid var(--rule);border-left:3px solid var(--accent);background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:16px;padding:11px 14px;font-size:13px}.alert.error{border-left-color:var(--fail)}.alert.success{border-left-color:var(--pass)}.alert.warn{border-left-color:var(--warn)}.alert .trace{font-family:var(--font-mono);color:var(--ink-3);font-size:11.5px}.login-wrap{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);width:100%;max-width:372px;box-shadow:var(--shadow-lg);padding:28px}.login-card h1{margin:0 0 2px;font-size:18px}.login-card .sub{color:var(--ink-2);margin:0 0 20px;font-size:13px}.empty{border:1px dashed var(--rule-2);border-radius:var(--radius);text-align:center;color:var(--ink-3);padding:26px;font-size:13px}@media (max-width:860px){.shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--rule);height:auto;position:static}.nav{flex-flow:wrap;padding:8px}.nav-group,.nav-subgroup{display:none}.nav-group-wrap,.nav-group-body,.nav-sub,.nav-subgroup-body,.nav-group-body.is-closed,.nav-subgroup-body.is-closed{display:contents}.nav-subgroup-body>a,.nav-subgroup-body>.nav-pending{padding-left:10px}.content{padding:18px 16px 48px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.nav-pending{color:var(--sidebar-ink-2);cursor:default;opacity:.7;border-left:2px solid #0000;align-items:center;gap:9px;padding:6px 10px;font-size:13.5px;display:flex}.nav-pending .count{margin-left:auto}.table-filter{margin:0 0 10px}.table-filter input{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);width:100%;max-width:340px;color:var(--ink);padding:7px 10px;font-size:13px}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--accent)}th.sortable[data-sort]:after{content:" ▲";opacity:.7;font-size:9px}th.sortable[data-sort=desc]:after{content:" ▼"}.public-wrap{background:var(--ground);min-height:100vh}.public-head{border-bottom:1px solid var(--rule);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;padding:14px 24px;display:flex}.public-brand{flex-direction:column;display:flex}.public-brand strong{font-size:15px}.public-brand span{color:var(--ink-2);font-size:12px}.public-body{max-width:1000px;margin:0 auto;padding:24px 16px 60px}.public-foot{color:var(--ink-3);margin-top:18px;font-size:12px}.public-link{margin-top:14px}.public-btn{text-align:center;width:100%;display:block}.doc-viewer{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);overflow:hidden}.doc-viewer iframe{border:0;width:100%;height:78vh;display:block}.docx-render{color:#111;background:#fff;max-height:78vh;padding:32px 40px;line-height:1.55;overflow:auto}.docx-render h1,.docx-render h2,.docx-render h3{margin:.8em 0 .4em}.docx-render p{margin:0 0 .6em}.docx-render table{border-collapse:collapse;margin:.6em 0}.docx-render td,.docx-render th{border:1px solid #ccc;padding:4px 8px}.docx-render img{max-width:100%;height:auto}.lang-btn{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);color:var(--ink-2);cursor:pointer;align-items:center;gap:6px;padding:5px 10px;font-size:12px;font-weight:600;display:inline-flex}.lang-btn:hover{background:var(--surface-2);color:var(--ink)}.lang-btn:disabled{opacity:.6;cursor:default}.login-top{justify-content:flex-end;margin-bottom:8px;display:flex}.nav-subgroup{letter-spacing:.06em;text-transform:uppercase;color:var(--sidebar-ink-2);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:6px;width:100%;padding:9px 10px 3px;font-family:inherit;font-size:10px;display:flex}.nav-subgroup:hover{color:var(--sidebar-ink)}.nav-subgroup-body>a,.nav-subgroup-body>.nav-pending{padding-left:24px}.inline-form{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:16px;padding:14px 16px}.form-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.form-row .field{flex:180px;min-width:160px;margin-bottom:0}.form-row .field-submit{flex:none;min-width:0}.inline-form .hint{color:var(--ink-3);margin:0;font-size:12px}.role-list{gap:6px;display:grid}.role-block{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius)}.role-block>summary{cursor:pointer;align-items:center;gap:10px;padding:11px 14px;list-style:none;display:flex}.role-block>summary::-webkit-details-marker{display:none}.role-block>summary:before{content:"▸";color:var(--ink-3);font-size:11px}.role-block[open]>summary:before{content:"▾"}.role-block[open]>summary{border-bottom:1px solid var(--rule)}.role-block .role-name{margin-right:auto;font-size:14px;font-weight:600}.perm-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;display:grid}.perm-grid fieldset{border:1px solid var(--rule);border-radius:var(--radius);min-width:0;margin:0;padding:8px 10px 10px}.perm-grid legend{letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);padding:0 4px;font-size:10.5px}.perm{cursor:pointer;align-items:flex-start;gap:7px;padding:2px 0;font-size:12.5px;display:flex}.perm input{flex:none;margin-top:3px}.perm .phase{color:var(--ink-3);border:1px solid var(--rule-2);white-space:nowrap;border-radius:7px;margin-left:5px;padding:0 5px;font-size:10px;font-style:normal;display:inline-block}.btn-sm{padding:3px 10px;font-size:12px}.timeline{gap:6px;margin-bottom:26px;display:grid}.rev{background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--rule-2);border-radius:var(--radius);padding:11px 14px}.rev.current{border-left-color:var(--pass);background:var(--pass-soft)}.rev-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.rev-no{font-size:14px;font-weight:600}.rev-date{color:var(--ink-3);font-size:12px}.rev-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.rev-actions form{display:inline}.rev-meta{grid-template-columns:150px 1fr;gap:3px 14px;margin:9px 0 0;font-size:12.5px;display:grid}.rev-meta dt{color:var(--ink-3)}.rev-meta dd{margin:0}.rev-meta .sha{font-family:var(--font-mono);color:var(--ink-3);margin-top:2px;font-size:11px}.audit-list{gap:3px;display:grid}.audit-row{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius)}.audit-row>summary{cursor:pointer;align-items:center;gap:10px;padding:8px 12px;font-size:13px;list-style:none;display:flex}.audit-row>summary::-webkit-details-marker{display:none}.audit-row[open]>summary{border-bottom:1px solid var(--rule)}.audit-entity{color:var(--ink-2);font-size:12px}.audit-actor{font-size:12.5px}.audit-time{color:var(--ink-3);white-space:nowrap;margin-left:auto;font-size:11.5px}.audit-body{padding:10px 12px 12px}.audit-reason{margin:0 0 10px;font-size:13px}.audit-ids{color:var(--ink-3);margin:8px 0 0;font-size:11px}@media (max-width:700px){.rev-meta{grid-template-columns:1fr}.rev-meta dt{margin-top:6px}.audit-time{width:100%;margin-left:0}}.option-rows{gap:5px;margin-top:10px;display:grid}.option-row{align-items:center;gap:9px;display:flex}.option-row input[type=text]{flex:1}.option-row input[type=radio],.option-row input[type=checkbox]{flex:none}.question-list{gap:6px;margin:0 0 24px;padding-left:0;list-style:none;display:grid}.question-list .q{background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--rule-2);border-radius:var(--radius);padding:10px 13px}.question-list .q.problem{border-left-color:var(--fail)}.q-text{font-size:13.5px;font-weight:500}.q-options{color:var(--ink-2);margin:7px 0 0;padding-left:18px;font-size:12.5px}.q-options .correct{color:var(--pass);font-weight:500}.q-options .mark{font-weight:700}.assign-list{gap:6px;margin-bottom:26px;display:grid}.ac{color:inherit;background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:box-shadow var(--ease), transform var(--ease);padding:12px 14px;text-decoration:none;display:block}.ac:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.ac.overdue{border-left-color:var(--fail)}.ac-title{font-size:14.5px;font-weight:600}.ac-meta{color:var(--ink-2);flex-wrap:wrap;gap:14px;margin-top:4px;font-size:12.5px;display:flex}.ac-meta .due-late{color:var(--fail);font-weight:500}.material-list{gap:10px;margin-bottom:26px;display:grid}.material{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:12px 14px}.material-head{flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:9px;display:flex}.player video{border-radius:var(--radius);background:#000;width:100%;max-height:460px;display:block}.player-progress{align-items:center;gap:10px;margin-top:7px;display:flex}.player-progress .tr{background:var(--surface-3);border-radius:3px;flex:1;height:6px;overflow:hidden}.player-progress .fl{background:var(--accent);height:100%}.player-progress .fl.done{background:var(--pass)}.player-progress span{color:var(--ink-2);text-align:right;min-width:62px;font-size:11.5px}.exam-box{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:14px 16px}.exam-box p{margin:0 0 6px;font-size:13.5px}.exam-timer{top:var(--topbar-h);z-index:4;background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:var(--radius);margin-bottom:14px;padding:8px 13px;font-size:13px;position:sticky}.exam-timer.low{border-left-color:var(--fail);color:var(--fail);font-weight:600}.exam-questions{gap:8px;margin:0;padding-left:0;list-style:none;display:grid}.exam-q{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:13px 15px}.exam-q-text{margin-bottom:9px;font-size:14px;font-weight:500}.exam-q-no{color:var(--ink-3);margin-right:4px}.exam-options{gap:4px;display:grid}.exam-option{border:1px solid var(--rule);border-radius:var(--radius);cursor:pointer;align-items:flex-start;gap:9px;padding:7px 9px;font-size:13.5px;display:flex}.exam-option:hover{background:var(--surface-2)}.exam-option input{flex:none;margin-top:3px}@media (max-width:700px){.exam-option{padding:11px 12px;font-size:15px}.player video{max-height:260px}}.matrix-legend{color:var(--ink-2);flex-wrap:wrap;gap:16px;margin-bottom:10px;font-size:12px;display:flex}.matrix-legend .sw{border:1px solid var(--rule-2);vertical-align:-2px;border-radius:2px;width:12px;height:12px;margin-right:5px;display:inline-block}.matrix-wrap{max-height:70vh;overflow:auto}table.matrix{min-width:0}table.matrix th{z-index:2;position:sticky;top:0}table.matrix th:not(.sticky-col){text-align:center;writing-mode:vertical-rl;vertical-align:bottom;height:108px;padding:6px 3px;transform:rotate(180deg)}table.matrix .sticky-col{z-index:3;background:var(--surface);border-right:1px solid var(--rule-2);min-width:190px;position:sticky;left:0}table.matrix thead .sticky-col{z-index:4;background:var(--surface-2)}table.matrix .sticky-col .sub{color:var(--ink-3);font-size:11px}table.matrix .cell{text-align:center;font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;min-width:46px;font-size:12px}table.matrix .cell .req{color:var(--ink-3);font-size:10.5px}table.matrix .cell .exp{color:var(--warn);margin-left:2px;font-weight:700}.c-ok{background:var(--pass-soft);color:var(--pass)}.c-expert{background:var(--accent-soft);color:var(--accent-ink)}.c-warn{background:var(--warn-soft);color:var(--warn)}.c-critical{background:var(--fail-soft);color:var(--fail);font-weight:600}.c-none{color:var(--ink-3)}.c-ok-extra{color:var(--ink-2)}@media (max-width:700px){table.matrix .sticky-col{min-width:130px}table.matrix th:not(.sticky-col){height:88px}}.topbar-bell{border:1px solid var(--fail);background:var(--fail-soft);color:var(--fail);white-space:nowrap;border-radius:10px;padding:3px 10px;font-size:12px;font-weight:500;text-decoration:none}.topbar-bell:hover{filter:brightness(.97)}.notif-list{gap:4px;display:grid}.notif{background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--rule-2);border-radius:var(--radius);align-items:flex-start;gap:12px;padding:10px 13px;display:flex}.notif.critical{border-left-color:var(--fail)}.notif.warning{border-left-color:var(--warn)}.notif.info{border-left-color:var(--accent)}.notif.read{opacity:.55;border-left-color:var(--rule)}.notif-main{flex:1;min-width:0}.notif-head{flex-wrap:wrap;align-items:center;gap:9px;display:flex}.notif-lead{font-size:12px;font-weight:500}.notif-due{color:var(--ink-3);font-size:11.5px}.notif-label{overflow-wrap:anywhere;margin-top:3px;font-size:13.5px}.topbar-search{flex:0 300px}.topbar-search input[type=search]{width:100%;padding:5px 10px;font-size:13px}.search-group{margin-bottom:20px}.search-group h2{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);align-items:center;gap:8px;margin-bottom:7px;font-size:13px;font-weight:600;display:flex}.search-list{gap:3px;display:grid}.search-hit{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);align-items:center;gap:12px;padding:9px 13px;display:flex}.search-main{flex:1;min-width:0}.search-title{overflow-wrap:anywhere;font-size:13.5px}.search-sub{color:var(--ink-3);font-size:11.5px}.report-group{margin-bottom:22px}.report-group h2{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);margin-bottom:8px;font-size:13px;font-weight:600}.report-cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px;display:grid}.report-card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);color:inherit;box-shadow:var(--shadow-sm);transition:box-shadow var(--ease), transform var(--ease), border-color var(--ease);gap:4px;padding:12px 14px;text-decoration:none;display:grid}.report-card:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-1px)}.report-card strong{font-size:13.5px;font-weight:600}.report-card span{color:var(--ink-2);font-size:12px;line-height:1.45}.report-actions{align-items:center;gap:8px;margin-bottom:10px;display:flex}.report-count{color:var(--ink-3);font-size:12.5px}.report-table table{font-size:12.5px}.report-table td{white-space:nowrap}.report-table td:nth-child(2){white-space:normal;min-width:220px}.mute-cell{color:var(--ink-3)}.report-foot{color:var(--ink-3);margin-top:14px;font-size:12px;line-height:1.5}.readiness-disclaimer{border-left-color:var(--warn)}.readiness-totals{align-items:center;gap:8px;margin-bottom:18px;display:flex}.readiness-total{background:var(--surface);border:1px solid var(--rule);border-top:3px solid var(--rule-2);border-radius:var(--radius);gap:2px;min-width:120px;padding:10px 14px;display:grid}.readiness-total strong{font-variant-numeric:tabular-nums;font-size:21px;font-weight:600}.readiness-total span{color:var(--ink-3);font-size:11.5px}.readiness-total.ok{border-top-color:var(--pass)}.readiness-total.warn{border-top-color:var(--warn)}.readiness-total.bad{border-top-color:var(--fail)}.readiness-area{margin-bottom:20px}.readiness-area h2{align-items:center;gap:9px;margin-bottom:8px;font-size:14px;font-weight:600;display:flex}.readiness-hint{color:var(--ink-3);max-width:62ch;margin-top:2px;font-size:11.5px;line-height:1.45}.print-head{display:none}@media print{:root{--ground:#fff;--surface:#fff}.sidebar,.topbar,.inline-form,.report-actions,.readiness-totals,.btn,.alert,.app-footer{display:none!important}.shell{display:block}.main{margin:0}.content{padding:0}.page-head{display:none}.print-head{margin-bottom:12px;display:block}.print-org{text-transform:uppercase;letter-spacing:.08em;font-size:11px}.print-head h2{margin:2px 0 6px;font-size:15px}.print-meta{flex-wrap:wrap;gap:14px;font-size:10.5px;display:flex}.print-filters{margin-top:3px;font-size:10.5px}.table-wrap{border:none;overflow:visible}.report-table table,.report-table td{white-space:normal;font-size:9px}table{font-size:9.5px}thead{display:table-header-group}tr{page-break-inside:avoid}a{color:inherit;text-decoration:none}.readiness-area{page-break-inside:avoid}.readiness-disclaimer{font-size:9px;display:block!important}@page{margin:14mm 10mm}}.skip-link{z-index:100;background:var(--accent);color:var(--on-accent);border-radius:0 0 var(--radius) 0;padding:9px 14px;font-size:13px;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.seal-panel{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);margin-bottom:16px;padding:13px 15px}.seal-head{align-items:center;gap:9px;margin-bottom:6px;display:flex}.seal-head h2{font-size:14px;font-weight:600}.seal-note{color:var(--ink-3);max-width:78ch;margin-bottom:10px;font-size:12px;line-height:1.5}.seal-root{color:var(--ink-3);font-size:11px}.section-head{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);margin:22px 0 8px;font-size:13px;font-weight:600}.released-holds{margin-top:10px;font-size:12.5px}.released-holds summary{cursor:pointer;color:var(--ink-2)}.btn.active{border-color:var(--accent);color:var(--accent);font-weight:600}.kpi-row{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:6px 0 4px;display:grid}.kpi{background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:var(--radius);color:inherit;box-shadow:var(--shadow-sm);transition:box-shadow var(--ease), transform var(--ease), border-color var(--ease);flex-direction:column;gap:2px;padding:14px 16px;text-decoration:none;display:flex}.kpi:hover{border-left-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-1px)}.kpi-n{color:var(--accent-ink);font-variant-numeric:tabular-nums;font-size:26px;font-weight:700;line-height:1.05}.kpi-l{color:var(--ink-2);font-size:12px}.kpi.attn.fail{border-left-color:var(--fail)}.kpi.attn.fail .kpi-n{color:var(--fail)}.kpi.attn.warn{border-left-color:var(--warn)}.kpi.attn.warn .kpi-n{color:var(--warn)}.kpi.attn.accent{border-left-color:var(--accent)}.allclear{border:1px solid var(--pass);background:var(--pass-soft);color:var(--pass);border-radius:var(--radius);padding:12px 16px;font-size:13px;font-weight:500}.dash-grid{grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px;margin-top:6px;display:grid}.panel{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;padding:14px 16px 16px;display:flex}.panel.span2{grid-column:span 2}.panel-head{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:12px;display:flex}.panel-head h3{color:var(--ink);margin:0;font-size:13px;font-weight:600}.panel-hint{color:var(--ink-3);white-space:nowrap;font-size:11.5px}.panel-body{flex:1}.donut{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.donut svg{flex:none}.donut-num{fill:var(--ink);font-size:22px;font-weight:700;font-family:var(--font-ui)}.donut-lab{fill:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;font-size:9px;font-family:var(--font-ui)}.legend{flex-direction:column;flex:1;gap:6px;min-width:120px;margin:0;padding:0;list-style:none;display:flex}.legend li{color:var(--ink-2);align-items:center;gap:8px;font-size:12.5px;display:flex}.legend .dot{border-radius:2px;flex:none;width:10px;height:10px}.legend .lg-label{flex:1}.legend b{color:var(--ink);font-variant-numeric:tabular-nums}.barrows{flex-direction:column;gap:8px;display:flex}.barrow{grid-template-columns:108px 1fr 34px;align-items:center;gap:8px;display:grid}.br-label{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.br-track{background:var(--surface-3);border-radius:7px;height:14px;overflow:hidden}.br-fill{border-radius:7px;min-width:2px;height:100%;transition:width .3s;display:block}.br-val{color:var(--ink);text-align:right;font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:600}.progress{align-items:center;gap:10px;display:flex}.pg-track{background:var(--surface-3);border-radius:6px;flex:1;height:12px;overflow:hidden}.pg-fill{border-radius:6px;height:100%;display:block}.progress b{color:var(--ink);font-variant-numeric:tabular-nums;font-size:13px}@media (max-width:860px){.panel.span2{grid-column:span 1}}
