@font-face{font-family:Sora;src:url(/fonts/Sora-Variable.woff2)format("woff2");font-weight:100 800;font-style:normal;font-display:swap}@font-face{font-family:Manrope;src:url(/fonts/Manrope-Variable.woff2)format("woff2");font-weight:200 800;font-style:normal;font-display:swap}@font-face{font-family:Andika;src:url(/fonts/Andika-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Andika;src:url(/fonts/Andika-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-Variable.woff2)format("woff2");font-weight:100 800;font-style:normal;font-display:swap}:root,[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-display:Sora, "Avenir Next", system-ui, sans-serif;--font-sans:Manrope, "Segoe UI", Roboto, system-ui, sans-serif;--font-pupil:Andika, "Comic Neue", Manrope, system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, Menlo, monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--control-sm:36px;--control-md:44px;--control-lg:52px;--pupil-target:72px;--nav-bar:64px;--side-nav:248px;--radius-xs:4px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-pill:999px;--border-thin:1px;--border-regular:2px;--border-thick:4px;--icon-sm:16px;--icon-md:20px;--icon-lg:24px;--icon-xl:32px;--text-display:600 36px/44px var(--font-display);--text-h1:600 28px/36px var(--font-display);--text-h2:600 22px/30px var(--font-display);--text-h3:600 18px/26px var(--font-display);--text-overline:600 12px/16px var(--font-display);--text-stat:600 32px/40px var(--font-display);--text-body-lg:400 17px/28px var(--font-sans);--text-body:400 15px/24px var(--font-sans);--text-body-strong:700 15px/24px var(--font-sans);--text-label:600 13px/20px var(--font-sans);--text-table:500 14px/20px var(--font-sans);--text-caption:500 12px/16px var(--font-sans);--text-pupil-question:700 28px/38px var(--font-pupil);--text-pupil-option:700 22px/30px var(--font-pupil);--text-pupil-body:400 19px/30px var(--font-pupil);--text-code:500 13px/20px var(--font-mono);--brand-navy:#05204f;--brand-green:#12a150;--on-brand-green:#04220f;--navy-block:#05204f;--surface-page:#f4f6f9;--surface-card:#fff;--surface-sunken:#e9edf3;--surface-overlay:#fff;--ink:#0b1a33;--ink-muted:#4a566b;--ink-subtle:#566277;--ink-inverse:#fff;--line:#d9dfe8;--line-strong:#7b8598;--primary:#05204f;--primary-hover:#0d2f6e;--on-primary:#fff;--primary-ink:#13408f;--primary-soft:#e3e9f5;--success:#0b7a3c;--on-success:#fff;--success-soft:#dcf3e5;--warning:#f5a524;--on-warning:#2b1a02;--warning-ink:#8a5300;--warning-soft:#fdf0d5;--danger:#b42318;--on-danger:#fff;--danger-soft:#fbe1dc;--highlight:#f5b423;--option-a:#2f5bd3;--option-b:#0b7a3c;--option-c:#f5a524;--option-d:#7a4cc2;--focus:#1a5fd6;--tooltip-bg:#0b1a33;--scrim:#0b1a337a;--skeleton:#e2e7ee;--shadow-raise:0 1px 2px #0b1a3314;--shadow-overlay:0 12px 32px #0b1a332e, 0 2px 6px #0b1a3314;--shadow-option:0 4px 0 #0b1a3338}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--brand-navy:#05204f;--brand-green:#12a150;--on-brand-green:#04220f;--navy-block:#1f4290;--surface-page:#0b1424;--surface-card:#121d31;--surface-sunken:#08101d;--surface-overlay:#17233a;--ink:#e8eef8;--ink-muted:#a8b3c7;--ink-subtle:#8792a8;--ink-inverse:#0b1a33;--line:#24324b;--line-strong:#5d6b85;--primary:#8fb3ff;--primary-hover:#a9c4ff;--on-primary:#061634;--primary-ink:#9dbcff;--primary-soft:#172a4d;--success:#4fd38a;--on-success:#04220f;--success-soft:#0f3322;--warning:#f5b445;--on-warning:#2b1a02;--warning-ink:#f7c56b;--warning-soft:#3a2a10;--danger:#ff8a7a;--on-danger:#2a0906;--danger-soft:#3f1d1b;--highlight:#f5b445;--option-a:#2f5bd3;--option-b:#0b7a3c;--option-c:#f5a524;--option-d:#7a4cc2;--focus:#7fb0ff;--tooltip-bg:#e8eef8;--scrim:#02060eb3;--skeleton:#1c283f;--shadow-raise:0 1px 2px #0006;--shadow-overlay:0 12px 32px #0000008c, 0 2px 6px #0006;--shadow-option:0 4px 0 #0000008c}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--brand-navy:#05204f;--brand-green:#12a150;--on-brand-green:#04220f;--navy-block:#1f4290;--surface-page:#0b1424;--surface-card:#121d31;--surface-sunken:#08101d;--surface-overlay:#17233a;--ink:#e8eef8;--ink-muted:#a8b3c7;--ink-subtle:#8792a8;--ink-inverse:#0b1a33;--line:#24324b;--line-strong:#5d6b85;--primary:#8fb3ff;--primary-hover:#a9c4ff;--on-primary:#061634;--primary-ink:#9dbcff;--primary-soft:#172a4d;--success:#4fd38a;--on-success:#04220f;--success-soft:#0f3322;--warning:#f5b445;--on-warning:#2b1a02;--warning-ink:#f7c56b;--warning-soft:#3a2a10;--danger:#ff8a7a;--on-danger:#2a0906;--danger-soft:#3f1d1b;--highlight:#f5b445;--option-a:#2f5bd3;--option-b:#0b7a3c;--option-c:#f5a524;--option-d:#7a4cc2;--focus:#7fb0ff;--tooltip-bg:#e8eef8;--scrim:#02060eb3;--skeleton:#1c283f;--shadow-raise:0 1px 2px #0006;--shadow-overlay:0 12px 32px #0000008c, 0 2px 6px #0006;--shadow-option:0 4px 0 #0000008c}}.t-display{font:var(--text-display);letter-spacing:-.015em}.t-h1{font:var(--text-h1);letter-spacing:-.01em}.t-h2{font:var(--text-h2)}.t-h3{font:var(--text-h3)}.t-overline{font:var(--text-overline);letter-spacing:.16em;text-transform:uppercase}.t-stat{font:var(--text-stat);letter-spacing:-.01em}.t-body-lg{font:var(--text-body-lg)}.t-body{font:var(--text-body)}.t-body-strong{font:var(--text-body-strong)}.t-label{font:var(--text-label)}.t-table{font:var(--text-table)}.t-caption{font:var(--text-caption)}.t-pupil-question{font:var(--text-pupil-question)}.t-pupil-option{font:var(--text-pupil-option)}.t-pupil-body{font:var(--text-pupil-body)}.t-code{font:var(--text-code)}
.he-root,body{font-family:var(--font-sans);color:var(--ink);background:var(--surface-page)}.he-icon{vertical-align:middle;flex:none;display:inline-block}.he-overline{font:600 12px/16px var(--font-display);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted)}.he-mono{font-family:var(--font-mono);font-size:12px}.he-text-success{color:var(--success)}.he-text-danger{color:var(--danger)}.he-text-warning{color:var(--warning-ink)}:where(.he-btn,.he-iconbtn,.he-seg-item,.he-tab,.he-mark,.he-option,.he-qnav-item,.he-pic,.he-bottomnav-item,.he-sidenav-item,.he-toast-action,.he-picpass-undo):focus-visible,:where(.he-input,.he-score input):focus-within{outline:2px solid var(--focus);outline-offset:2px}@media (prefers-reduced-motion:reduce){.he-spin,.he-sync.is-spinning .he-icon{animation-duration:3s!important}*{transition:none!important}}.he-btn{justify-content:center;align-items:center;gap:var(--space-2);height:var(--control-md);padding:0 var(--space-4);border-radius:var(--radius-md);border:var(--border-thin) solid transparent;font:700 15px/1 var(--font-sans);cursor:pointer;white-space:nowrap;transition:background .15s,transform .1s;display:inline-flex}.he-btn:active:not(:disabled){transform:translateY(1px)}.he-btn:disabled{cursor:not-allowed;opacity:.5}.he-btn.is-loading{opacity:.8}.he-btn-sm{height:var(--control-sm);padding:0 var(--space-3);border-radius:var(--radius-sm);font-size:13px}.he-btn-lg{height:var(--control-lg);padding:0 var(--space-6);font-size:16px}.he-btn-block{width:100%;display:flex}.he-btn-primary{background:var(--primary);color:var(--on-primary)}.he-btn-primary:hover:not(:disabled){background:var(--primary-hover)}.he-btn-secondary{background:var(--surface-card);color:var(--ink);border-color:var(--line-strong)}.he-btn-secondary:hover:not(:disabled){background:var(--surface-sunken)}.he-btn-ghost{color:var(--primary-ink);background:0 0}.he-btn-ghost:hover:not(:disabled){background:var(--primary-soft)}.he-btn-success{background:var(--success);color:var(--on-success)}.he-btn-danger{background:var(--danger);color:var(--on-danger)}.he-spin{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.8s linear infinite he-rot}@keyframes he-rot{to{transform:rotate(360deg)}}.he-iconbtn{width:var(--control-md);height:var(--control-md);border-radius:var(--radius-md);border:var(--border-thin) solid transparent;color:var(--ink);cursor:pointer;background:0 0;place-items:center;display:inline-grid;position:relative}.he-iconbtn-sm{width:var(--control-sm);height:var(--control-sm)}.he-iconbtn-lg{width:var(--control-lg);height:var(--control-lg)}.he-iconbtn-ghost:hover{background:var(--surface-sunken)}.he-iconbtn-secondary{background:var(--surface-card);border-color:var(--line-strong)}.he-iconbtn-primary{background:var(--primary);color:var(--on-primary)}.he-iconbtn-dot{border-radius:var(--radius-pill);background:var(--danger);min-width:18px;height:18px;color:var(--on-danger);font:700 11px/18px var(--font-sans);text-align:center;padding:0 5px;position:absolute;top:4px;right:4px}.he-field{gap:6px;min-width:0;display:grid}.he-field-label{font:600 13px/20px var(--font-sans);color:var(--ink)}.he-req{color:var(--danger)}.he-input{align-items:center;gap:var(--space-2);height:var(--control-md);padding:0 var(--space-3);background:var(--surface-card);border:var(--border-thin) solid var(--line-strong);border-radius:var(--radius-md);color:var(--ink-muted);display:flex}.he-input input,.he-input select{min-width:0;height:100%;color:var(--ink);font:400 15px var(--font-sans);appearance:none;background:0 0;border:0;outline:none;flex:1}.he-input.is-mono input{font-family:var(--font-mono);font-size:14px}.he-input input::placeholder{color:var(--ink-subtle)}.he-input:focus-within{border-color:var(--focus)}.he-affix{color:var(--ink-muted);font-weight:600}.he-select{position:relative}.he-select select{padding-right:var(--space-6);cursor:pointer}.he-select .he-icon{right:var(--space-3);pointer-events:none;position:absolute}.he-field.is-invalid .he-input{border-color:var(--danger);border-width:var(--border-regular);background:var(--danger-soft)}.he-field.is-disabled .he-input{background:var(--surface-sunken)}.he-field-hint,.he-field-error{gap:var(--space-1);font:500 12px/16px var(--font-sans);color:var(--ink-muted);align-items:center;margin:0;display:flex}.he-field-error{color:var(--danger)}.he-check,.he-switch{align-items:flex-start;gap:var(--space-3);min-height:var(--control-md);cursor:pointer;font:500 15px/24px var(--font-sans);color:var(--ink);padding:10px 0;display:flex}.he-check input,.he-switch input{opacity:0;width:1px;height:1px;position:absolute}.he-check-box{border-radius:var(--radius-xs);border:var(--border-regular) solid var(--line-strong);background:var(--surface-card);color:#0000;flex:none;place-items:center;width:24px;height:24px;display:grid}.he-check input:checked+.he-check-box{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.he-check input:focus-visible+.he-check-box,.he-switch input:focus-visible+.he-switch-track{outline:2px solid var(--focus);outline-offset:2px}.he-check-text{display:grid}.he-check-hint{font:500 12px/16px var(--font-sans);color:var(--ink-muted)}.he-switch{justify-content:space-between}.he-switch-track{border-radius:var(--radius-pill);background:var(--surface-sunken);border:var(--border-regular) solid var(--line-strong);flex:none;width:48px;height:28px;transition:background .15s;position:relative}.he-switch-thumb{background:var(--line-strong);border-radius:50%;width:20px;height:20px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.he-switch input:checked+.he-switch-track{background:var(--success);border-color:var(--success)}.he-switch input:checked+.he-switch-track .he-switch-thumb{background:var(--on-success);transform:translate(20px)}.is-disabled{opacity:.55;cursor:not-allowed}.he-seg{border-radius:var(--radius-md);background:var(--surface-sunken);gap:4px;max-width:100%;padding:4px;display:inline-flex;overflow-x:auto}.he-seg-item{align-items:center;gap:var(--space-1);height:36px;padding:0 var(--space-3);border-radius:var(--radius-sm);color:var(--ink-muted);font:600 13px var(--font-sans);cursor:pointer;white-space:nowrap;background:0 0;border:0;display:inline-flex}.he-seg-item.is-on{background:var(--surface-card);color:var(--ink);box-shadow:var(--shadow-raise)}.he-badge{align-items:center;gap:var(--space-1);border-radius:var(--radius-sm);height:26px;font:600 13px/1 var(--font-sans);white-space:nowrap;padding:0 10px;display:inline-flex}.he-tone-neutral{background:var(--surface-sunken);color:var(--ink-muted)}.he-tone-info{background:var(--primary-soft);color:var(--primary-ink)}.he-tone-success{background:var(--success-soft);color:var(--success)}.he-tone-warning{background:var(--warning-soft);color:var(--warning-ink)}.he-tone-danger{background:var(--danger-soft);color:var(--danger)}.he-badge.is-solid.he-tone-info{background:var(--primary);color:var(--on-primary)}.he-badge.is-solid.he-tone-success{background:var(--success);color:var(--on-success)}.he-badge.is-solid.he-tone-warning{background:var(--warning);color:var(--on-warning)}.he-badge.is-solid.he-tone-danger{background:var(--danger);color:var(--on-danger)}.he-grade{border-radius:var(--radius-xs);min-width:32px;height:26px;font:700 14px/1 var(--font-sans);font-variant-numeric:tabular-nums;place-items:center;padding:0 6px;display:inline-grid}.he-grade.is-lg{border-radius:var(--radius-md);min-width:56px;height:auto;font:600 24px/1.1 var(--font-display);gap:2px;padding:8px 10px}.he-grade small{font:600 11px/1 var(--font-sans);letter-spacing:.04em}.he-avatar{border-radius:var(--radius-pill);background:var(--primary-soft);color:var(--primary-ink);font-family:var(--font-display);flex:none;place-items:center;font-weight:600;display:inline-grid;overflow:hidden}.he-avatar img{object-fit:cover;width:100%;height:100%}.he-card{background:var(--surface-card);border:var(--border-thin) solid var(--line);border-radius:var(--radius-lg);min-width:0}.he-card-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:var(--space-4) var(--space-5) 0;display:flex}.he-card-title{font:600 18px/26px var(--font-display);margin:2px 0 0}.he-card-sub{font:400 13px/20px var(--font-sans);color:var(--ink-muted);margin:2px 0 0}.he-card-actions{gap:var(--space-2);display:flex}.he-card-body{padding:var(--space-4) var(--space-5)}.he-card.is-flush .he-card-body{padding:var(--space-3) 0 0}.he-card-foot{justify-content:flex-end;gap:var(--space-3);padding:var(--space-3) var(--space-5);border-top:var(--border-thin) solid var(--line);display:flex}.he-stat{gap:var(--space-1);padding:var(--space-4) var(--space-5);background:var(--surface-card);border:var(--border-thin) solid var(--line);border-radius:var(--radius-lg);min-width:0;display:grid}.he-stat-label{align-items:center;gap:var(--space-2);font:600 13px/20px var(--font-sans);color:var(--ink-muted);display:flex}.he-stat-value{font:600 32px/40px var(--font-display);letter-spacing:-.01em;font-variant-numeric:tabular-nums}.he-stat-unit{color:var(--ink-muted);margin-left:4px;font-size:16px}.he-stat-foot{gap:var(--space-2);font:500 12px/16px var(--font-sans);color:var(--ink-muted);flex-wrap:wrap;display:flex}.he-stat-delta{font-weight:700}.he-tabs{gap:var(--space-1);border-bottom:var(--border-thin) solid var(--line);display:flex;overflow-x:auto}.he-tab{align-items:center;gap:var(--space-2);height:var(--control-md);padding:0 var(--space-3);color:var(--ink-muted);font:600 14px var(--font-sans);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;display:inline-flex}.he-tab.is-on{color:var(--primary-ink);border-bottom-color:var(--primary)}.he-tab-count{border-radius:var(--radius-pill);background:var(--surface-sunken);min-width:22px;height:20px;color:var(--ink-muted);font:700 12px/20px var(--font-sans);text-align:center;padding:0 6px}.he-tab.is-on .he-tab-count{background:var(--primary-soft);color:var(--primary-ink)}.he-table-wrap{border:var(--border-thin) solid var(--line);border-radius:var(--radius-lg);background:var(--surface-card);overflow-x:auto}.he-table{border-collapse:collapse;width:100%;font:500 14px/20px var(--font-sans);font-variant-numeric:tabular-nums}.he-table caption{text-align:left;padding:var(--space-3) var(--space-4);font:600 13px var(--font-sans);color:var(--ink-muted)}.he-table thead th{background:var(--surface-sunken);color:var(--ink-muted);font:600 12px/16px var(--font-sans);letter-spacing:.02em;padding:10px var(--space-3);border-bottom:var(--border-thin) solid var(--line);white-space:nowrap;position:sticky;top:0}.he-table td,.he-table tbody th{padding:12px var(--space-3);border-bottom:var(--border-thin) solid var(--line);text-align:left;white-space:nowrap;font-weight:500}.he-table tbody th{font-weight:700}.he-table.is-dense td,.he-table.is-dense tbody th{padding:8px var(--space-3)}.he-table tbody tr:last-child>*{border-bottom:0}.he-table tbody tr:hover>*{background:var(--surface-page)}.he-table tr.is-selected>*{background:var(--primary-soft)}.he-table-wrap.is-sticky-first tbody th,.he-table-wrap.is-sticky-first thead th:first-child{z-index:1;background:var(--surface-card);box-shadow:1px 0 0 var(--line);position:sticky;left:0}.he-table-wrap.is-sticky-first thead th:first-child{background:var(--surface-sunken);z-index:2}.he-alert{gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font:400 14px/22px var(--font-sans);align-items:flex-start;display:flex}.he-alert-body{flex:1;gap:2px;min-width:0;display:grid}.he-alert-body strong{font-weight:700}.he-alert-body div{color:var(--ink)}.he-alert-action{align-self:center}.he-toast{align-items:center;gap:var(--space-3);max-width:480px;min-height:48px;padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);border-radius:var(--radius-md);background:var(--tooltip-bg);color:var(--ink-inverse);box-shadow:var(--shadow-overlay);font:500 14px/20px var(--font-sans);display:inline-flex}.he-toast-text{flex:1;padding:6px 0}.he-toast-success .he-icon{color:var(--success-soft)}.he-toast-danger .he-icon{color:var(--danger-soft)}.he-toast-warning .he-icon{color:var(--warning)}.he-toast-action{height:36px;padding:0 var(--space-3);border-radius:var(--radius-sm);color:var(--ink-inverse);font:700 14px var(--font-sans);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;text-decoration:underline}.he-modal-scrim{padding:var(--space-4);background:var(--scrim);z-index:50;place-items:center;display:grid;position:fixed;inset:0}.he-modal-scrim.is-inline{position:absolute}.he-modal{background:var(--surface-overlay);border-radius:var(--radius-xl);width:min(480px,100%);max-height:calc(100% - 32px);box-shadow:var(--shadow-overlay);overflow:auto}.he-modal.is-sheet{border-radius:var(--radius-xl) var(--radius-xl) 0 0;align-self:end;width:100%;max-width:560px}.he-modal-head{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-4) 0 var(--space-6);display:flex}.he-modal-head h3{font:600 18px/26px var(--font-display);margin:0}.he-modal-body{padding:var(--space-3) var(--space-6) var(--space-4);font:400 15px/24px var(--font-sans);color:var(--ink-muted)}.he-modal-foot{justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-6) var(--space-6);flex-wrap:wrap;display:flex}.he-empty{justify-items:center;gap:var(--space-2);padding:var(--space-8) var(--space-4);text-align:center;display:grid}.he-empty-icon{border-radius:var(--radius-pill);background:var(--primary-soft);width:72px;height:72px;color:var(--primary-ink);margin-bottom:var(--space-2);place-items:center;display:grid}.he-empty h3{font:600 18px/26px var(--font-display);margin:0}.he-empty p{max-width:40ch;color:var(--ink-muted);font:400 15px/24px var(--font-sans);margin:0}.he-empty-action{margin-top:var(--space-3)}.he-progress{gap:6px;display:grid}.he-progress-top{font:600 13px/20px var(--font-sans);justify-content:space-between;display:flex}.he-progress-val{font-variant-numeric:tabular-nums;color:var(--ink-muted)}.he-progress-track{border-radius:var(--radius-pill);background:var(--surface-sunken);height:8px;overflow:hidden}.he-progress-fill{border-radius:inherit;height:100%;transition:width .3s;display:block}.he-fill-primary{background:var(--primary)}.he-fill-success{background:var(--success)}.he-fill-warning{background:var(--warning)}.he-fill-danger{background:var(--danger)}.he-sync{border-radius:var(--radius-pill);height:28px;font:600 12px/1 var(--font-sans);white-space:nowrap;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.he-sync-time{opacity:.85;font-weight:500}.he-sync.is-spinning .he-icon{animation:1.2s linear infinite he-rot}.he-appbar{align-items:center;gap:var(--space-2);min-height:var(--nav-bar);padding:0 var(--space-2);background:var(--surface-card);border-bottom:var(--border-thin) solid var(--line);display:flex}.he-appbar-title{min-width:0;padding-left:var(--space-2);flex:1;display:grid}.he-appbar-title strong{font:600 18px/24px var(--font-display);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.he-appbar-school{font:600 11px/14px var(--font-display);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}.he-appbar-sub{font:500 12px/16px var(--font-sans);color:var(--ink-muted)}.he-appbar-actions{gap:var(--space-1);display:flex}.he-bottomnav{height:var(--nav-bar);background:var(--surface-card);border-top:var(--border-thin) solid var(--line);display:flex}.he-bottomnav-item{color:var(--ink-muted);font:600 11px/14px var(--font-sans);cursor:pointer;background:0 0;border:0;flex:1;align-content:center;justify-items:center;gap:2px;display:grid}.he-bottomnav-icon{border-radius:var(--radius-pill);place-items:center;width:56px;height:30px;display:grid;position:relative}.he-bottomnav-icon .he-iconbtn-dot{top:-4px;right:4px}.he-bottomnav-item.is-on{color:var(--primary-ink)}.he-bottomnav-item.is-on .he-bottomnav-icon{background:var(--primary-soft)}.he-sidenav{width:var(--side-nav);background:var(--surface-card);border-right:var(--border-thin) solid var(--line);height:100%;padding:var(--space-4) var(--space-3);gap:var(--space-4);flex-direction:column;display:flex}.he-sidenav ul{flex:1;align-content:start;gap:2px;margin:0;padding:0;list-style:none;display:grid}.he-sidenav-school,.he-sidenav-user{align-items:center;gap:var(--space-3);padding:0 var(--space-2);display:flex}.he-sidenav-school div>strong,.he-sidenav-user div>strong{font:700 14px/20px var(--font-sans);display:block}.he-sidenav-school div>span,.he-sidenav-user div>span{font:500 12px/16px var(--font-sans);color:var(--ink-muted);display:block}.he-sidenav-user{padding-top:var(--space-3);border-top:var(--border-thin) solid var(--line)}.he-sidenav-section{padding:var(--space-4) var(--space-3) var(--space-1);font:600 11px/16px var(--font-display);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-subtle)}.he-sidenav-section button{width:100%;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;padding:0;display:flex}.he-sidenav-item{align-items:center;gap:var(--space-3);width:100%;height:40px;padding:0 var(--space-3);border-radius:var(--radius-md);color:var(--ink-muted);font:600 14px var(--font-sans);cursor:pointer;text-align:left;background:0 0;border:0;display:flex}.he-sidenav-item span:first-of-type{flex:1}.he-sidenav-item:hover{background:var(--surface-sunken);color:var(--ink)}.he-sidenav-item.is-on{background:var(--primary-soft);color:var(--primary-ink)}.he-att{align-items:center;gap:var(--space-3);min-height:68px;padding:var(--space-2) var(--space-4);background:var(--surface-card);border-bottom:var(--border-thin) solid var(--line);display:flex}.he-att-who{flex:1;min-width:0;display:grid}.he-att-who strong{font:700 15px/22px var(--font-sans);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.he-att-who span{color:var(--ink-muted)}.he-att-marks{gap:var(--space-2);display:flex}.he-mark{width:var(--control-lg);height:var(--control-lg);border-radius:var(--radius-md);border:var(--border-regular) solid var(--line-strong);background:var(--surface-card);color:var(--ink-muted);font:700 16px var(--font-sans);cursor:pointer;place-items:center;transition:background .12s,border-color .12s;display:grid}.he-mark-present.is-on{background:var(--success);border-color:var(--success);color:var(--on-success)}.he-mark-late.is-on{background:var(--warning);border-color:var(--warning);color:var(--on-warning)}.he-mark-absent.is-on{background:var(--danger);border-color:var(--danger);color:var(--on-danger)}.he-att.is-absent{background:var(--danger-soft)}.he-score{justify-items:start;gap:4px;display:inline-grid}.he-score label{font:600 12px/16px var(--font-sans);color:var(--ink-muted)}.he-score-max{color:var(--ink-subtle);font-weight:500}.he-score input{width:72px;height:var(--control-md);border:var(--border-thin) solid var(--line-strong);border-radius:var(--radius-xs);background:var(--surface-card);color:var(--ink);font:700 18px var(--font-sans);font-variant-numeric:tabular-nums;text-align:right;padding:0 var(--space-3);outline:none}.he-score.is-compact input{width:56px;height:36px;font-size:15px}.he-score input:focus{border-color:var(--focus)}.he-score input:disabled{background:var(--surface-sunken);color:var(--ink-muted)}.he-score.is-invalid input{border:var(--border-regular) solid var(--danger);background:var(--danger-soft);color:var(--danger)}.he-score-err{font:600 12px/16px var(--font-sans);color:var(--danger);align-items:center;gap:4px;display:inline-flex}.he-option{align-items:center;gap:var(--space-4);width:100%;min-height:var(--pupil-target);padding:var(--space-3) var(--space-4);border:var(--border-thick) solid var(--line);border-radius:var(--radius-xl);background:var(--surface-card);color:var(--ink);font:700 22px/30px var(--font-pupil);text-align:left;cursor:pointer;box-shadow:var(--shadow-option);transition:transform 80ms,box-shadow 80ms;display:flex;position:relative}.he-option:active:not(:disabled){box-shadow:none;transform:translateY(4px)}.he-option-key{border-radius:var(--radius-md);color:#fff;width:48px;height:48px;font:700 20px var(--font-pupil);flex:none;place-items:center;display:grid;position:relative}.he-option-key .he-shape{fill:currentColor;opacity:.28;width:36px;height:36px;position:absolute;inset:6px}.he-option-key span{position:relative}.he-option-a .he-option-key{background:var(--option-a)}.he-option-b .he-option-key{background:var(--option-b)}.he-option-c .he-option-key{background:var(--option-c);color:var(--on-warning)}.he-option-d .he-option-key{background:var(--option-d)}.he-option-text{flex:1;min-width:0}.he-option-pic{border-radius:var(--radius-md);background:var(--surface-sunken);flex:none;place-items:center;width:88px;height:88px;display:grid;overflow:hidden}.he-option-pic img{object-fit:cover;width:100%;height:100%}.he-option.is-selected{border-color:var(--primary);background:var(--primary-soft)}.he-option-tick{border-radius:var(--radius-pill);background:var(--primary);width:40px;height:40px;color:var(--on-primary);place-items:center;display:grid}.he-option.is-correct{border-color:var(--success);background:var(--success-soft)}.he-option.is-wrong{border-color:var(--danger);background:var(--danger-soft)}.he-timer{align-items:center;gap:var(--space-2);height:52px;padding:0 var(--space-4);border-radius:var(--radius-pill);font-family:var(--font-pupil);display:inline-flex;position:relative;overflow:hidden}.he-timer-time{font:700 24px/1 var(--font-pupil);font-variant-numeric:tabular-nums;min-width:3.2em}.he-timer-neutral{background:var(--surface-sunken);color:var(--ink)}.he-timer-warning{background:var(--warning);color:var(--on-warning)}.he-timer-danger{background:var(--danger);color:var(--on-danger)}.he-timer-bar{background:#0000001f;height:4px;position:absolute;bottom:0;left:0;right:0}.he-timer-bar span{opacity:.6;background:currentColor;height:100%;display:block}.he-qnav{gap:var(--space-2);flex-wrap:wrap;display:flex}.he-qnav-item{border-radius:var(--radius-md);border:var(--border-regular) solid var(--line-strong);background:var(--surface-card);width:48px;height:48px;color:var(--ink);font:700 18px var(--font-pupil);cursor:pointer;place-items:center;display:grid;position:relative}.he-qnav-item.is-answered{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.he-qnav-item.is-current{outline:3px solid var(--focus);outline-offset:2px}.he-qnav-flag{background:var(--warning);width:20px;height:20px;color:var(--on-warning);border-radius:50%;place-items:center;display:grid;position:absolute;top:-6px;right:-6px}.he-picpass{gap:var(--space-4);font-family:var(--font-pupil);max-width:420px;display:grid}.he-picpass-slots{gap:var(--space-3);justify-content:center;align-items:center;display:flex}.he-picpass-slot{border-radius:var(--radius-md);border:var(--border-regular) dashed var(--line-strong);background:var(--surface-card);place-items:center;width:64px;height:64px;display:grid}.he-picpass-slot.is-filled{border-style:solid}.he-picpass-undo{border-radius:var(--radius-pill);border:var(--border-regular) solid var(--line-strong);background:var(--surface-card);width:52px;height:52px;color:var(--ink);cursor:pointer;place-items:center;display:grid}.he-picpass-undo:disabled{opacity:.4;cursor:default}.he-picpass-grid{gap:var(--space-3);grid-template-columns:repeat(3,1fr);display:grid}.he-pic{border-radius:var(--radius-xl);min-height:100px;font:700 16px var(--font-pupil);cursor:pointer;box-shadow:var(--shadow-option);border:0;align-content:center;justify-items:center;gap:4px;transition:transform 80ms,box-shadow 80ms;display:grid}.he-pic:active:not(:disabled){box-shadow:none;transform:translateY(4px)}.he-pic:disabled{opacity:.5;cursor:default}.he-pic-a{background:var(--option-a);color:#fff}.he-pic-b{background:var(--option-b);color:#fff}.he-pic-c{background:var(--option-c);color:var(--on-warning)}.he-pic-d{background:var(--option-d);color:#fff}
*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100dvh;font:var(--text-body);background:var(--surface-page);color:var(--ink);margin:0}h1,h2,h3,p{margin:0}h1{font:var(--text-h1);letter-spacing:-.01em}h2{font:var(--text-h2)}h3{font:var(--text-h3)}a{color:var(--primary-ink)}a.he-btn,a.he-sidenav-item,a.he-bottomnav-item,a.plain{text-decoration:none}a.plain{color:inherit}.muted{color:var(--ink-muted)}.subtle{color:var(--ink-subtle)}.mono{font-family:var(--font-mono);font-size:13px}.num{font-variant-numeric:tabular-nums;text-align:right}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.stack{gap:var(--space-4);align-content:start;display:grid}.stack-sm{gap:var(--space-2);align-content:start;display:grid}.stack-lg{gap:var(--space-6);align-content:start;display:grid}.row{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.row-between{gap:var(--space-3);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.grid-2{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));display:grid}.grid-stats{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));display:grid}.form-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));display:grid}.form-grid .he-field{align-content:start}.form-actions{gap:var(--space-3);flex-wrap:wrap;justify-content:flex-end;display:flex}.office{grid-template-columns:var(--side-nav) 1fr;min-height:100dvh;display:grid}.office>.he-sidenav{height:100dvh;position:sticky;top:0;overflow-y:auto}.office-main{min-width:0;padding:var(--space-8);gap:var(--space-6);align-content:start;display:grid}.office-column{flex-direction:column;min-width:0;min-height:100dvh;display:flex}.office-column>main{flex:1}.overline{font:var(--text-overline);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted)}.page-header{gap:var(--space-4);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;display:flex}.office-topbar{display:none}@media (max-width:900px){.office{grid-template-columns:1fr}.office>.he-sidenav{z-index:30;width:var(--side-nav);box-shadow:var(--shadow-overlay);display:none;position:fixed;inset:0 auto 0 0}.office.nav-open>.he-sidenav{display:flex}.office-main{padding:var(--space-4)}.office-topbar{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--surface-card);border-bottom:1px solid var(--line);z-index:20;display:flex;position:sticky;top:0}}.staff-shell{grid-template-columns:var(--side-nav) 1fr;background:var(--surface-page);min-height:100dvh;display:grid}.staff-shell>.he-sidenav{height:100dvh;position:sticky;top:0;overflow-y:auto}.staff-shell .staff>.he-bottomnav{display:none}.staff-shell .staff-main{width:100%;max-width:1040px;padding:var(--space-6);margin:0 auto}@media (max-width:900px){.staff-shell{display:block}.staff-shell>.he-sidenav{display:none}.staff-shell .staff>.he-bottomnav{display:flex}.staff-shell .staff-main{padding:var(--space-4)}}.staff{background:var(--surface-page);grid-template-rows:1fr auto;max-width:720px;min-height:100dvh;margin:0 auto;display:grid}.staff-shell .staff{min-width:0;max-width:none;margin:0}.staff-page{flex-direction:column;min-width:0;display:flex}.staff-page>.he-appbar{z-index:20;position:sticky;top:0}.staff-main{padding:var(--space-4);gap:var(--space-4);padding-bottom:var(--space-8);align-content:start;display:grid}.staff>.he-bottomnav{z-index:20;position:sticky;bottom:0}.sticky-action{bottom:var(--space-3);z-index:10;gap:var(--space-2);padding:var(--space-3);background:var(--surface-overlay);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay);display:grid;position:sticky}.list{background:var(--surface-card);border:1px solid var(--line);border-radius:var(--radius-lg);display:grid;overflow:hidden}.list>*+*{border-top:1px solid var(--line)}.list-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);min-height:var(--control-lg);color:inherit;text-decoration:none;display:flex}a.list-item:hover{background:var(--surface-sunken)}.list-item .grow{flex:1;min-width:0;display:grid}.list-item .grow>span{color:var(--ink-muted);font-size:13px}.auth{min-height:100dvh;padding:var(--space-4);place-items:center;display:grid}.auth-card{gap:var(--space-5);width:min(100%,420px);display:grid}.auth-logo{justify-self:start;width:auto;height:36px}.logo-dark{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .logo-light{display:none}:root:not([data-theme=light]) .logo-dark{display:block}}[data-theme=dark] .logo-light{display:none}[data-theme=dark] .logo-dark{display:block}.score-grid td,.score-grid th{vertical-align:middle}.cell-invalid{background:var(--danger-soft)}.chip{border-radius:var(--radius-pill);background:var(--surface-sunken);font:var(--text-label);align-items:center;gap:4px;padding:2px 8px;display:inline-flex}.pupil{min-height:100dvh;font-family:var(--font-pupil);background:var(--surface-page);padding:var(--space-6) var(--space-4)}.pupil-wrap{gap:var(--space-6);max-width:880px;margin:0 auto;display:grid}.pupil .t-pupil-question{font:var(--text-pupil-question)}.answer-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));display:grid}.pupil-tiles{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));display:grid}.pupil-tile{justify-items:center;gap:var(--space-2);padding:var(--space-4);border-radius:var(--radius-xl);background:var(--surface-card);border:2px solid var(--line);box-shadow:var(--shadow-option);font:var(--text-pupil-body);color:var(--ink);cursor:pointer;min-height:var(--pupil-target);text-decoration:none;display:grid}.pupil-tile:active{box-shadow:none;transform:translateY(4px)}@media print{.no-print,.he-sidenav,.he-bottomnav,.he-appbar,.office-topbar{display:none!important}.office{display:block}.office-main{padding:0}}input.he-input,textarea.he-input,select.he-input{color:var(--ink);font:400 15px var(--font-sans)}.bars{border-collapse:collapse;width:100%;font:var(--text-table)}.bars th{text-align:left;padding:6px var(--space-3) 6px 0;white-space:nowrap;width:1%;font-weight:600}.bars td{padding:6px 0}.bars td.num{padding-left:var(--space-3);white-space:nowrap;width:1%;color:var(--ink-muted)}.bars-track{position:relative}.bars-track:before{content:"";background:var(--line);height:1px;position:absolute;inset:50% 0 auto}.bars-fill{background:var(--primary);border-radius:0 4px 4px 0;height:12px;display:block;position:relative}.bars tr:hover .bars-fill{background:var(--primary-hover)}.he-table th{text-align:left}.he-table td.is-num,.he-table th.is-num{text-align:right;font-variant-numeric:tabular-nums}.id-cards{grid-template-columns:repeat(auto-fill,85.6mm);gap:6mm;display:grid}.id-card{color:#0b1a33;break-inside:avoid;background:#fff;border:1px solid #c9d1dc;border-top:4mm solid;border-radius:3mm;grid-template-rows:auto 1fr;gap:2mm;width:85.6mm;height:54mm;padding:2.5mm 3mm;font-size:11px;display:grid;overflow:hidden}.id-card-head{font:700 11px/1.2 var(--font-display);align-items:center;gap:2mm;display:flex}.id-card-head img{width:auto;height:7mm}.id-card-body{grid-template-columns:20mm 1fr 22mm;align-items:center;gap:2.5mm;display:grid}.id-photo{object-fit:cover;background:#e9edf3;border-radius:1.5mm;width:20mm;height:25mm}.id-qr svg{width:22mm;height:22mm;display:block}.id-card .subtle{color:#566277}@media print{@page{size:A4;margin:10mm}body{background:#fff}}.only-print{display:none}@media print{.only-print{display:block}}.print-sheet{color:#0b1a33;padding:var(--space-6);border-radius:var(--radius-lg);background:#fff}.print-sheet .subtle{color:#566277}.print-sheet table{border-collapse:collapse;width:100%;font-size:13px}.print-sheet th,.print-sheet td{text-align:left;border:1px solid #c9d1dc;padding:4px 6px}.receipt{color:#0b1a33;break-inside:avoid;background:#fff;border:1px solid #c9d1dc;border-top:3mm solid;border-radius:3mm;gap:3mm;max-width:148mm;padding:6mm;display:grid}.receipt .subtle{color:#566277}.receipt-head{border-bottom:1px solid #e2e7ee;align-items:center;gap:4mm;padding-bottom:3mm;display:flex}.receipt-rows{gap:1.5mm;margin:0;display:grid}.receipt-rows>div{grid-template-columns:34mm 1fr;gap:3mm;display:grid}.receipt-rows dt{color:#566277}.receipt-rows dd{margin:0}.payslip-rows>div{grid-template-columns:1fr auto}.payslip-rows dd{font-variant-numeric:tabular-nums}.payslip-total{border-top:1px solid #e2e7ee;padding-top:1.5mm;font-weight:600}.pager{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.apply{width:min(100%,760px);padding:var(--space-6) var(--space-4);gap:var(--space-5);margin:0 auto;display:grid}.timetable th,.timetable td{vertical-align:top}.timetable td{min-width:110px}.timetable .is-today,.timetable-break th,.timetable-break td{background:var(--surface-sunken)}.timetable select{width:100%;min-width:100px}.timetable select+select{margin-top:4px}.tracker-narrow{grid-template-columns:minmax(0,1fr)}
