@import "https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;500;600;700;800&family=Fraunces:opsz,wght@9..144,600;9..144,700&family=IBM+Plex+Mono:wght@500;600&family=Source+Serif+4:opsz,wght@8..60,400;8..60,600&display=swap";:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-ui:"Be Vietnam Pro", ui-sans-serif, sans-serif;--font-display:"Fraunces", Georgia, serif;--font-reading:"Source Serif 4", Georgia, serif;--font-data:"IBM Plex Mono", ui-monospace, monospace;--paper:#fafaf6;--paper-raised:#fff;--paper-soft:#f2f5ee;--paper-green:#e7efe8;--ink:#111a14;--ink-soft:#344139;--ink-muted:#637069;--forest:#1d5638;--forest-deep:#123c27;--forest-mid:#397352;--leaf:#c8e36b;--leaf-soft:#edf5ce;--rule:#cdd6ce;--rule-strong:#86958b;--white:#fff;--ink-on-white:#344139;--auth-art-bg:#123c27;--dashboard-hero-bg:#123c27;--dashboard-hero-text:#fafaf6;--home-page-bg:var(--paper-green);--status-warning:#73520e;--status-warning-soft:#f7edcf;--status-danger:#9b3532;--status-danger-soft:#f7e7e4;--card:var(--paper-raised);--surface:var(--paper);--surface-strong:var(--paper-green);--surface-warm:var(--leaf-soft);--line:var(--rule);--muted:var(--ink-muted);--text:var(--ink);--text-soft:var(--ink-soft);--primary:var(--forest);--primary-dark:var(--forest-deep);--primary-soft:var(--paper-green);--primary-pale:#f5f8f2;--secondary:var(--forest-mid);--secondary-soft:#dfeadf;--accent:var(--leaf);--accent-strong:var(--forest-mid);--accent-soft:var(--leaf-soft);--warning:var(--status-warning);--warning-soft:var(--status-warning-soft);--danger:var(--status-danger);--danger-soft:var(--status-danger-soft);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-sm:2px;--radius-md:5px;--radius-lg:8px;--shadow:#111a140f;--shadow-strong:#111a1421;--glass:#fafaf6f5;--app-bg:var(--paper);--motion-fast:.16s;--motion-med:.24s;--motion-slow:.3s;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.2, .8, .2, 1.05)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#0f1511;--paper-raised:#151d18;--paper-soft:#1a241d;--paper-green:#203126;--ink:#f3f4ec;--ink-soft:#d3dbd3;--ink-muted:#a4b0a7;--forest:#8fc89f;--forest-deep:#b9e0c2;--forest-mid:#72ad83;--leaf:#c8e36b;--leaf-soft:#28351b;--rule:#354239;--rule-strong:#69786e;--white:#fff;--status-warning:#e4c56d;--status-warning-soft:#342d19;--status-danger:#ee9b94;--status-danger-soft:#3c2422;--primary-pale:#121b15;--secondary-soft:#26392b;--shadow:#00000038;--shadow-strong:#0000006b;--glass:#0f1511f5;--home-page-bg:var(--paper)}:root{font-family:var(--font-ui);background:var(--paper);color:var(--ink)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--app-bg);min-width:320px;color:var(--text);margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-color:var(--primary)}h1,h2,h3,p{margin-top:0}.shell{isolation:isolate;min-height:100vh;position:relative}.shell:before{content:"";z-index:-1;opacity:.24;background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);pointer-events:none;background-size:44px 44px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 72%);mask-image:linear-gradient(#000,#0000 72%)}.teacher-theme{--role-accent:var(--secondary)}.student-theme{--role-accent:var(--accent)}.app-header{z-index:20;border-bottom:1px solid color-mix(in srgb, var(--line) 78%, transparent);background:var(--glass);-webkit-backdrop-filter:blur(18px)saturate(140%);backdrop-filter:blur(18px)saturate(140%);box-shadow:0 12px 30px var(--shadow);animation:fadeDrop var(--motion-slow) var(--ease-out) both;position:sticky;top:0}.app-nav{align-items:center;gap:18px;width:100%;max-width:1680px;margin:0 auto;padding:12px 32px;display:flex}.app-nav ul,.site-nav ul,.feature-list{margin:0;padding:0;list-style:none}.nav-groups{flex:auto;justify-content:center;align-items:center;gap:8px;min-width:0;display:flex}.brand{color:var(--primary-dark);animation:fadeLift var(--motion-slow) var(--ease-out) both;flex:0 0 142px;font-size:1.35rem;font-weight:800;text-decoration:none}.brand:after{content:"";background:linear-gradient(90deg, var(--primary), var(--accent), var(--secondary));border-radius:999px;width:64px;height:4px;margin-top:2px;display:block}.nav-link,.bottom-link,.icon-text{min-height:44px;color:var(--text-soft);cursor:pointer;white-space:nowrap;transition:background-color var(--motion-fast) ease, color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) ease, border-color var(--motion-fast) ease;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px 11px;text-decoration:none;display:flex}.teacher-theme .nav-link,.teacher-theme .bottom-link,.teacher-theme .icon-text{color:var(--text-soft)}.nav-link.active,.nav-link:hover,.bottom-link.active{border-color:color-mix(in srgb, var(--primary) 26%, transparent);background:linear-gradient(135deg, var(--primary-soft), color-mix(in srgb, var(--secondary-soft) 60%, transparent));color:var(--primary-dark)}.nav-link:hover,.icon-text:hover{transform:translateY(-1px)}.bottom-link:hover{transform:translateY(-2px)}.nav-link svg,.bottom-link svg,.icon-text svg,.link-button svg{flex:none;width:1.15rem;height:1.15rem}.nav-link svg,.bottom-link svg,.icon-text svg{transition:transform var(--motion-fast) var(--ease-spring)}.nav-link:hover svg,.nav-link.active svg,.bottom-link:hover svg,.bottom-link.active svg,.icon-text:hover svg{transform:scale(1.08)}.nav-group{position:relative}.nav-summary{list-style:none}.nav-summary::-webkit-details-marker{display:none}.nav-summary .chevron{width:1rem;height:1rem;transition:transform var(--motion-fast) var(--ease-out)}.nav-group[open] .chevron{transform:rotate(180deg)}.nav-menu{z-index:30;border:1px solid var(--line);background:color-mix(in srgb, var(--card) 94%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);min-width:210px;box-shadow:0 18px 44px var(--shadow-strong);animation:menuIn .18s var(--ease-out) both;border-radius:8px;gap:4px;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)}.nav-menu-link{min-height:40px;color:var(--text-soft);white-space:nowrap;transition:background-color var(--motion-fast) ease, color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out);border-radius:6px;align-items:center;gap:10px;padding:9px 10px;font-weight:800;text-decoration:none;display:flex}.nav-menu-link:hover,.nav-menu-link.active{background:linear-gradient(135deg, var(--primary-soft), var(--secondary-soft));color:var(--primary-dark);transform:translate(2px)}.nav-menu-link svg{flex:none;width:1.05rem;height:1.05rem}.logout-button{flex:0 0 118px;margin-left:0}.theme-toggle{border-color:var(--line);background:var(--card);min-width:106px;box-shadow:0 10px 24px var(--shadow)}.main{width:100%;max-width:1320px;margin:0 auto;padding:28px 22px 42px}.topbar{border:1px solid var(--line);background:linear-gradient(135deg, color-mix(in srgb, var(--primary-soft) 70%, transparent), transparent 64%), var(--card);box-shadow:0 14px 34px var(--shadow);animation:fadeDrop var(--motion-slow) var(--ease-out) both;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;padding:18px 20px;display:flex}.topbar h1{margin:0;font-size:clamp(1.45rem,3vw,2rem)}.eyebrow{color:var(--primary-dark);letter-spacing:0;text-transform:uppercase;margin-bottom:6px;font-size:.78rem;font-weight:800}.muted{color:var(--muted)}.route-frame{animation:pageIn .38s var(--ease-out) both}.stack{flex-direction:column;gap:18px;display:flex}.grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;display:grid}.grid.two{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.card{background:linear-gradient(180deg, color-mix(in srgb, var(--card) 92%, white) 0%, var(--card) 100%);border:1px solid color-mix(in srgb, var(--line) 86%, white);box-shadow:0 12px 32px var(--shadow);transition:border-color var(--motion-fast) ease, box-shadow var(--motion-med) ease, transform var(--motion-med) var(--ease-out);animation:cardIn .46s var(--ease-out) both;border-radius:8px;padding:20px;position:relative;transform:translateZ(0)}.card:before{content:"";border-radius:inherit;border-top:3px solid color-mix(in srgb, var(--role-accent,var(--primary)) 64%, transparent);pointer-events:none;position:absolute;inset:0}.teacher-theme .card{box-shadow:0 12px 32px var(--shadow)}.card:hover{border-color:color-mix(in srgb, var(--primary) 38%, var(--line));box-shadow:0 18px 44px var(--shadow-strong);transform:translateY(-3px)}.teacher-theme .card:hover{box-shadow:0 18px 44px var(--shadow-strong)}.card h2,.card h3{color:var(--text)}.card h2::selection{background:var(--accent-soft)}.card h3::selection{background:var(--accent-soft)}p::selection{background:var(--accent-soft)}span::selection{background:var(--accent-soft)}strong::selection{background:var(--accent-soft)}.grid .card:nth-child(2),.stack>.card:nth-child(2),.list-row:nth-child(2),.row:nth-child(2){animation-delay:55ms}.grid .card:nth-child(3),.stack>.card:nth-child(3),.list-row:nth-child(3),.row:nth-child(3){animation-delay:.11s}.grid .card:nth-child(4),.stack>.card:nth-child(4),.list-row:nth-child(4),.row:nth-child(4){animation-delay:.165s}.grid .card:nth-child(5),.stack>.card:nth-child(5),.list-row:nth-child(5),.row:nth-child(5){animation-delay:.22s}.hero-card{background:linear-gradient(135deg, var(--card) 0%, var(--primary-soft) 52%, var(--accent-soft) 100%);border-color:color-mix(in srgb, var(--primary) 26%, var(--line));justify-content:space-between;align-items:center;display:flex;position:relative;overflow:hidden}.hero-card:before{content:"";background:linear-gradient(110deg, transparent 10%, color-mix(in srgb, var(--white) 55%, transparent) 45%, transparent 68%);pointer-events:none;animation:4.8s ease-in-out infinite sweep;position:absolute;inset:0;transform:translate(-120%)}.hero-card>*{z-index:1;position:relative}.teacher-theme .hero-card{background:linear-gradient(135deg, var(--card) 0%, var(--secondary-soft) 48%, var(--primary-soft) 100%);border-color:color-mix(in srgb, var(--secondary) 24%, var(--line))}.mascot{background:var(--surface-strong);border:2px solid var(--white);width:120px;height:120px;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--primary) 32%, white);border-radius:50%;flex:0 0 120px;place-items:center;font-size:0;animation:4.5s ease-in-out infinite mascotFloat;display:grid;overflow:hidden}.mascot img{object-fit:contain;width:100%;height:100%;display:block}.teacher-theme .mascot{background:var(--surface-strong);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--primary) 32%, white)}.mascot:not(.logo-mascot):after{content:"★";color:var(--primary);font-size:2.2rem}.logo-mascot{box-shadow:none;background:0 0}.teacher-theme .logo-mascot{box-shadow:none}.logo-mascot img{width:86%;height:86%;transition:transform var(--motion-med) var(--ease-spring);transform:none}.hero-card:hover .logo-mascot img,.login-panel:hover .logo-mascot img{transform:scale(1.05)rotate(-2deg)}.stat{color:var(--primary-dark);font-size:clamp(2rem,4vw,2.6rem);font-weight:800;display:block}.row,.section-head,.inline-form,.actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.stacked-head{flex-direction:column;justify-content:flex-start;align-items:stretch}.stacked-head h2{margin-bottom:0}.stacked-head input{max-width:520px}.actions{flex-wrap:wrap;justify-content:flex-end}.row,.list-row{animation:fadeLift .36s var(--ease-out) both}.row{transition:background-color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out)}.card>.row:hover,.list-row:hover{transform:translate(2px)}.list-row{border-bottom:1px solid var(--line);transition:background-color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out);border-radius:8px;padding:12px 10px}.list-row:hover{background:linear-gradient(135deg, var(--primary-pale), transparent)}.list-row:last-child{border-bottom:0}.list-row span{flex-direction:column;gap:4px;min-width:0;display:flex}small{color:var(--muted);overflow-wrap:anywhere}.pill{background:var(--primary-soft);min-height:28px;color:var(--primary-dark);border:1px solid color-mix(in srgb, var(--primary) 24%, transparent);white-space:nowrap;transition:transform var(--motion-fast) var(--ease-spring), background-color var(--motion-fast) ease;border-radius:999px;align-items:center;padding:4px 10px;font-size:.84rem;font-weight:700;display:inline-flex}.pill.overdue{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb, var(--danger) 32%, transparent)}.pill.due_today,.pill.due_soon{background:var(--warning-soft);color:var(--warning)}.pill.upcoming{background:var(--accent-soft);color:var(--primary-dark)}.note{background:var(--surface);color:var(--text-soft);border:1px solid var(--line);animation:fadeLift .32s var(--ease-out) both;border-radius:8px;padding:10px}.empty{border:1px dashed color-mix(in srgb, var(--primary) 46%, var(--line));color:var(--muted);background:linear-gradient(135deg, var(--primary-pale), var(--surface));animation:fadeLift .38s var(--ease-out) both;border-radius:8px;flex-direction:column;gap:6px;padding:26px;display:flex}.form{flex-direction:column;gap:14px;display:flex}.compact{max-width:720px}.grid-form{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:start;gap:16px;display:grid}.student-create-form{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end}.stacked-head+.student-create-form{margin-top:18px}.student-create-form .form-submit{grid-column:1/-1;justify-self:end;width:fit-content;min-width:180px}.grade-item-form{grid-template-columns:repeat(3,minmax(0,1fr))}.grade-item-form .field:has(textarea){grid-column:1/-1}.grade-item-form .form-submit{grid-column:1/-1;justify-self:end;width:fit-content;min-width:190px}.list-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:12px;display:flex}.list-toolbar>input{flex:260px;max-width:520px}.list-toolbar.compact{justify-content:flex-end}.list-toolbar.compact>input{min-width:min(260px,100%)}.list-toolbar-end{justify-content:flex-end}.grade-item-grid{align-items:stretch}.grade-item-card{flex-direction:column;min-height:310px;display:flex}.grade-item-card .row{align-items:flex-start}.grade-item-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:auto 0 18px;padding-top:18px;display:grid}.grade-item-metrics span{border:1px solid var(--line);background:var(--surface);color:var(--muted);gap:2px;padding:10px;font-size:.78rem;display:grid}.grade-item-metrics strong{color:var(--text);font-size:1rem}.grade-item-open{justify-content:space-between;width:100%}.grade-item-open svg{width:18px;height:18px}.grade-detail-head{border-bottom:3px solid var(--text);justify-content:space-between;align-items:flex-start;gap:24px;padding-bottom:18px;display:flex}.grade-detail-head h2{margin-bottom:6px}.grade-detail-head p:last-child{color:var(--muted);margin:0}.grade-result-heading{align-items:flex-end}.grade-result-table{overflow-x:auto}.grade-result-row{border-top:1px solid var(--line);grid-template-columns:minmax(210px,1.25fr) minmax(120px,.65fr) minmax(110px,.55fr) minmax(135px,.7fr) minmax(180px,1fr);align-items:center;gap:14px;padding:14px 8px;display:grid}.grade-result-row>div{gap:3px;min-width:0;display:grid}.grade-result-header{background:var(--surface-strong);color:var(--primary-dark);border-top:0;font-weight:800}.grade-result-row .attempt-cell strong{align-items:center;gap:6px;display:inline-flex}.grade-result-row .attempt-cell svg{width:17px;height:17px}.listening-create-form .form-submit{grid-column:1/-1;justify-content:center;justify-self:end;align-items:center;gap:8px;width:fit-content;min-width:150px;display:inline-flex}.listening-create-form .form-submit svg{width:18px;height:18px}.field{color:var(--text-soft);flex-direction:column;gap:7px;font-weight:700;display:flex}.teacher-theme .field{color:var(--text-soft)}input,select,textarea{border:1px solid color-mix(in srgb, var(--primary) 28%, var(--line));background:color-mix(in srgb, var(--card) 90%, var(--surface));width:100%;min-height:44px;color:var(--text);transition:border-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out), background-color var(--motion-fast) ease;border-radius:8px;padding:10px 12px;box-shadow:inset 0 1px #ffffff80}.teacher-theme input,.teacher-theme select,.teacher-theme textarea{border-color:color-mix(in srgb, var(--primary) 28%, var(--line));color:var(--text)}textarea{resize:vertical;min-height:88px;max-height:300px}.check-field{min-height:44px;color:var(--muted);align-items:center;gap:10px;font-weight:800;display:flex}.check-field input{width:18px;min-height:18px;accent-color:var(--primary)}.compact-check{background:var(--surface);border:1px solid var(--line);min-height:36px;color:var(--text-soft);transition:border-color var(--motion-fast) ease, background-color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out);border-radius:8px;justify-content:flex-start;padding:6px 8px}.compact-check:hover{border-color:color-mix(in srgb, var(--primary) 34%, var(--line));background:var(--primary-pale);transform:translateY(-1px)}.compact-check span{flex-direction:column;gap:2px;min-width:0;display:flex}.target-panel{border:1px solid var(--line);background:var(--surface);border-radius:8px;gap:12px;padding:14px;display:grid}.segmented{border:1px solid var(--line);background:color-mix(in srgb, var(--card) 92%, var(--surface));border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;width:min(420px,100%);padding:4px;display:inline-grid;box-shadow:inset 0 0 0 1px #ffffff57}.segmented button{min-height:38px;color:var(--text-soft);cursor:pointer;transition:background-color var(--motion-fast) ease, color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out);background:0 0;border:0;border-radius:6px;font-weight:800}.segmented button:hover{background:var(--primary-pale)}.checkbox-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;display:grid}.chip-list{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.chip{background:var(--surface-strong);min-height:30px;color:var(--primary-dark);border:1px solid var(--line);border-radius:999px;align-items:center;padding:5px 10px;font-size:.86rem;font-weight:800;display:inline-flex}.chip-button{cursor:pointer;transition:background-color var(--motion-fast) ease, border-color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) ease}.chip-button:hover,.chip-button.active{border-color:color-mix(in srgb, var(--primary) 42%, var(--line));background:linear-gradient(135deg, var(--primary-soft), var(--secondary-soft));box-shadow:0 8px 18px var(--shadow);transform:translateY(-1px)}.collection-list{padding-top:4px}.primary,.secondary,.danger{cursor:pointer;min-height:44px;transition:background-color var(--motion-fast) ease, border-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out), filter var(--motion-fast) ease;border:1px solid #0000;border-radius:8px;padding:10px 14px;font-weight:800}.primary svg,.secondary svg,.danger svg{vertical-align:middle;flex:0 0 18px;width:18px;height:18px}.primary{background:linear-gradient(135deg, var(--primary), color-mix(in srgb, var(--secondary) 54%, var(--primary)));color:var(--white);box-shadow:0 10px 22px color-mix(in srgb, var(--primary) 18%, transparent)}.primary:hover{filter:saturate(1.08)brightness(.98);box-shadow:0 12px 28px color-mix(in srgb, var(--primary) 30%, transparent);transform:translateY(-1px)}.secondary{background:var(--card);color:var(--primary-dark);border-color:color-mix(in srgb, var(--primary) 28%, var(--line))}.secondary:hover{background:var(--primary-soft);transform:translateY(-1px)}.danger{background:var(--card);color:var(--danger);border-color:color-mix(in srgb, var(--danger) 48%, var(--line))}.danger:hover{background:var(--danger-soft);transform:translateY(-1px)}.primary:active,.secondary:active,.danger:active,.nav-link:active,.bottom-link:active{transform:translateY(1px)scale(.99)}.primary:disabled,.secondary:disabled,.danger:disabled{cursor:not-allowed;opacity:.72;box-shadow:none;transform:none}.link-button{justify-content:center;align-items:center;width:fit-content;text-decoration:none;display:inline-flex}.link-button svg{margin-left:8px}.toast{border:1px solid color-mix(in srgb, var(--primary) 24%, transparent);background:var(--primary-soft);color:var(--primary-dark);box-shadow:0 12px 28px var(--shadow);animation:toastIn .28s var(--ease-out) both;border-radius:8px;padding:12px 14px}.toast.error{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb, var(--danger) 28%, transparent)}.dialog-backdrop{z-index:1000;background:color-mix(in srgb, var(--ink) 58%, transparent);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);animation:fadeIn var(--motion-fast) ease both;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.app-dialog{border:1px solid var(--line);background:var(--card);width:min(500px,100%);box-shadow:0 28px 80px color-mix(in srgb, var(--ink) 30%, transparent);border-radius:8px;grid-template-columns:44px minmax(0,1fr);gap:14px;padding:22px;display:grid}.dialog-mark{background:var(--accent-soft);width:42px;height:42px;color:var(--warning);border-radius:50%;place-items:center;font-size:1.25rem;font-weight:900;display:grid}.dialog-copy{min-width:0}.dialog-copy h3{margin:2px 0 8px}.dialog-copy p{color:var(--text-soft);margin:0;line-height:1.55}.dialog-copy ul{color:var(--text-soft);margin:8px 0 0;padding-left:20px}.dialog-actions{grid-column:1/-1;justify-content:flex-end;gap:8px;padding-top:4px;display:flex}.loading-overlay{z-index:80;background:color-mix(in srgb, var(--surface) 62%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);place-items:center;display:grid;position:fixed;inset:0}.loading-popup{border:1px solid var(--line);background:var(--card);box-shadow:0 18px 44px var(--shadow);border-radius:8px;align-items:center;gap:12px;padding:14px 18px;display:inline-flex}.spinner{border:3px solid var(--line);border-top-color:var(--primary);border-radius:50%;width:18px;height:18px;animation:.82s linear infinite spin}.center-page{text-align:center;place-items:center;min-height:100vh;padding:24px;display:grid}.auth-page{background:var(--surface);grid-template-columns:minmax(0,1.08fr) minmax(420px,.92fr);min-height:calc(100vh - 69px);display:grid}.auth-art{text-align:center;background:var(--forest-deep);isolation:isolate;align-content:center;justify-items:center;min-height:calc(100vh - 69px);padding:clamp(36px,6vw,76px);display:grid;position:relative;overflow:hidden}.auth-art:before,.auth-art:after{content:"";z-index:-1;border-radius:50%;position:absolute}.auth-art:before{background:color-mix(in srgb, var(--white) 16%, transparent);width:260px;height:260px;top:-72px;left:-70px}.auth-art:after{background:color-mix(in srgb, var(--white) 12%, transparent);width:520px;height:520px;box-shadow:inset 0 0 120px color-mix(in srgb, var(--white) 12%, transparent)}.auth-art figure{margin:0 0 42px}.auth-art img{background:var(--white);border:1px solid color-mix(in srgb, var(--white) 34%, transparent);width:min(280px,56vw);height:auto;box-shadow:0 24px 70px color-mix(in srgb, var(--ink) 24%, transparent);border-radius:50%;animation:4.5s ease-in-out infinite mascotFloat}.auth-art h2{max-width:680px;color:var(--white);margin-bottom:10px;font-size:clamp(2rem,4vw,3rem);line-height:1.08}.auth-art p{max-width:660px;color:color-mix(in srgb, var(--white) 82%, transparent);margin-bottom:0;font-size:clamp(1rem,2vw,1.25rem);font-weight:500}.auth-form-section{place-items:center;min-height:calc(100vh - 69px);padding:clamp(32px,5vw,76px);display:grid}.auth-panel{text-align:left;width:min(480px,100%);animation:loginIn .52s var(--ease-out) both}.auth-panel h1{color:var(--text);margin-bottom:8px;font-size:clamp(2rem,4vw,2.75rem);line-height:1.1}.auth-panel>.muted{margin-bottom:30px}.auth-form{gap:20px}.auth-form .primary{min-height:54px;margin-top:8px;font-size:1rem}.auth-form .primary:hover{background:var(--primary-dark);color:var(--white)}.auth-mark{width:64px;height:64px;color:var(--primary);margin:0 auto 38px;display:block}.auth-switch{color:var(--muted);text-align:center;margin:64px 0 0}.auth-switch a{color:var(--primary-dark);font-weight:800;text-decoration:none}.auth-switch a:hover{text-decoration:underline}.home-page{background:var(--home-page-bg);min-height:100vh}.site-header{border-bottom:1px solid var(--line);background:var(--ink);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.site-nav{justify-content:space-between;align-items:center;gap:18px;max-width:1180px;margin:0 auto;padding:14px 22px;display:flex}.site-brand{color:var(--white);-webkit-text-stroke:1px var(--primary);align-items:center;gap:10px;font-size:1.25rem;font-weight:800;text-decoration:none;display:inline-flex}.site-brand img{object-fit:contain;width:36px;height:36px;box-shadow:none;background:0 0;border:0;border-radius:0}.site-nav ul{justify-content:flex-end;align-items:center;gap:8px;display:flex}.site-nav a:not(.site-brand){min-height:40px;color:var(--white);border-radius:8px;align-items:center;padding:8px 12px;font-weight:800;text-decoration:none;display:inline-flex}.home-hero{grid-template-columns:minmax(0,1fr) minmax(260px,360px);align-items:center;gap:42px;max-width:1180px;min-height:min(760px,100vh - 70px);margin:0 auto;padding:64px 22px;display:grid}.tai-hero{border-bottom:1px solid var(--line)}.home-hero article{max-width:740px}.home-hero h1{letter-spacing:0;color:var(--text);margin-bottom:18px;font-size:clamp(3.2rem,9vw,7rem);line-height:.92}.home-hero p{max-width:660px;color:var(--text-soft);font-size:1.08rem}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.home-hero figure{text-align:center;justify-self:center;margin:0}.home-hero figure img{object-fit:contain;width:min(260px,58vw);height:auto;filter:drop-shadow(0 24px 34px color-mix(in srgb, var(--forest-deep) 18%, transparent));background:0 0;border:0;border-radius:0;animation:4.5s ease-in-out infinite mascotFloat}.home-hero figcaption{color:var(--muted);margin-top:14px;font-size:.92rem}.home-section{max-width:1180px;margin:0 auto;padding:56px 22px}.home-section h2{font-size:clamp(2rem,5vw,3.2rem);line-height:1.05}.feature-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:24px;display:grid}.feature-list svg{width:2.1rem;height:2.1rem;color:var(--primary)}.about-section{grid-template-columns:minmax(280px,.85fr) minmax(0,1.15fr);gap:18px;display:grid}.about-card,.about-copy{background:var(--card);border:1px solid var(--line);box-shadow:0 18px 44px var(--shadow);border-radius:8px;padding:clamp(22px,4vw,36px)}.about-copy svg{width:2.4rem;height:2.4rem;color:var(--primary)}.about-copy p{color:var(--text-soft)}.about-credentials{gap:14px;margin:22px 0 0;display:grid}.about-credentials div{border-top:1px solid var(--line);grid-template-columns:130px 1fr;gap:12px;padding-top:14px;display:grid}.ecu-figure{border-top:1px solid var(--line);text-align:center;justify-items:center;gap:12px;margin:26px 0 0;padding-top:22px;display:grid}.ecu-figure img{border:1px solid color-mix(in srgb, var(--primary) 44%, var(--ink));width:min(180px,100%);height:auto;box-shadow:0 14px 34px color-mix(in srgb, var(--forest-deep) 18%, transparent);border-radius:8px}.ecu-figure figcaption{color:var(--muted);font-size:.92rem;font-weight:700}.news-section .section-head svg{width:2.4rem;height:2.4rem;color:var(--primary)}.news-list{align-items:stretch}.news-thumb{aspect-ratio:16/9;object-fit:cover;border:1px solid var(--line);background:var(--surface);border-radius:8px;width:100%;margin-bottom:14px;display:block}.news-preview{aspect-ratio:16/9;object-fit:cover;border:1px solid var(--line);background:var(--surface);border-radius:8px;width:min(320px,100%);display:block}.news-card time{color:var(--primary-dark);margin-bottom:12px;font-size:.86rem;font-weight:800;display:inline-flex}.site-footer section{grid-template-columns:minmax(240px,.75fr) minmax(0,1.25fr);gap:24px;max-width:1180px;margin:0 auto;padding:44px 22px;display:grid}.site-footer .eyebrow,.site-footer h2{color:var(--paper)}.site-footer address{font-style:normal}.site-footer ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.site-footer li{color:color-mix(in srgb, var(--paper) 82%, transparent);align-items:flex-start;gap:10px;display:flex}.site-footer svg{width:1.25rem;height:1.25rem;color:var(--paper);flex:none}.site-footer span{gap:2px;display:grid}.site-footer strong{color:var(--paper)}.details{gap:12px;display:grid}.details div{grid-template-columns:130px 1fr;gap:12px;display:grid}dt{color:var(--muted);font-weight:700}dd{overflow-wrap:anywhere;margin:0}.messages{flex-direction:column;gap:8px;margin:12px 0;display:flex}.bubble{background:var(--primary-pale);border:1px solid var(--line);overflow-wrap:anywhere;animation:bubbleIn .3s var(--ease-out) both;border-radius:8px;margin:0;padding:10px 12px}.table-card{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:680px}th,td{border-bottom:1px solid var(--line);text-align:left;padding:10px}tbody tr{transition:background-color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out)}th{background:linear-gradient(135deg, var(--surface-strong), var(--primary-soft));color:var(--primary-dark)}.grade-item-summary{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.grade-item-summary span{border:1px solid var(--line);background:var(--primary-pale);min-height:32px;color:var(--primary-dark);border-radius:8px;align-items:center;padding:6px 10px;font-weight:800;display:inline-flex}.gradebook-panel{padding:0;overflow:hidden}.gradebook-header,.gradebook-row{grid-template-columns:minmax(210px,1.2fr) minmax(100px,.45fr) minmax(100px,.48fr) minmax(145px,.7fr) minmax(190px,1fr) auto;align-items:center;gap:12px;padding:14px 18px;display:grid}.gradebook-header{background:var(--primary-soft);color:var(--primary-dark);font-weight:800}.gradebook-row{border-top:1px solid var(--line);animation:fadeLift .36s var(--ease-out) both;transition:background-color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out)}.gradebook-row:hover{background:var(--primary-pale);transform:translate(2px)}.student-cell{flex-direction:column;gap:4px;min-width:0;display:flex}.student-cell strong{overflow-wrap:anywhere}.attempt-cell{flex-direction:column;gap:3px;min-width:0;display:flex}.attempt-cell small{color:var(--muted);overflow-wrap:anywhere;font-size:.76rem}.attempt-availability{color:var(--primary-dark);margin:4px 0 12px}.attempt-availability strong{font-family:var(--font-mono);font-size:1.15rem}.disabled-link{opacity:.62;cursor:not-allowed;pointer-events:none}.student-name-link{color:var(--primary-dark);text-underline-offset:4px;font-weight:850;text-decoration-thickness:1px}.student-name-link:hover{color:var(--primary)}.back-link{width:fit-content;color:var(--primary-dark);align-items:center;gap:8px;font-weight:800;text-decoration:none;display:inline-flex}.back-link svg{width:18px}.student-profile-head{border-top:4px solid var(--primary);border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:24px;padding:24px 0;display:flex}.student-profile-head h2{margin:3px 0 7px}.student-profile-head p:last-child{color:var(--muted);overflow-wrap:anywhere;margin:0}.student-stat-grid{border:1px solid var(--line);background:var(--card);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.student-stat{border-left:4px solid var(--primary);align-content:center;gap:5px;min-height:126px;padding:20px;display:grid}.student-stat+.student-stat{border-left-color:var(--leaf);border-inline-start-width:1px}.student-stat>span{color:var(--muted);font-weight:750}.student-stat>strong{color:var(--primary-dark);font-family:var(--font-display);font-size:2rem;line-height:1}.student-stat small{color:var(--muted)}.assessment-history{border:1px solid var(--line);background:var(--card)}.assessment-history summary{cursor:pointer;grid-template-columns:90px minmax(220px,1fr) auto 24px;align-items:center;gap:18px;min-height:82px;padding:16px 20px;list-style:none;display:grid}.assessment-history summary::-webkit-details-marker{display:none}.assessment-history summary:after{content:"+";color:var(--primary);grid-column:4;font-size:1.5rem;font-weight:500}.assessment-history[open] summary:after{content:"−"}.assessment-kind{color:var(--primary-dark);font-family:var(--font-mono);text-transform:uppercase;font-size:.76rem;font-weight:800}.assessment-title{flex-direction:column;gap:5px;min-width:0;display:flex}.assessment-title strong{overflow-wrap:anywhere}.assessment-title small,.assessment-progress{color:var(--muted)}.assessment-progress{white-space:nowrap;font-weight:750}.attempt-history-list{border-top:1px solid var(--line);background:var(--surface-strong)}.assignment-attempt-toolbar{border-bottom:1px solid var(--line);background:var(--card);justify-content:space-between;align-items:center;gap:18px;padding:14px 20px;display:flex}.assignment-attempt-toolbar>div{gap:3px;display:grid}.assignment-attempt-toolbar span,.assignment-attempt-toolbar small{color:var(--muted)}.assignment-attempt-toolbar span{text-transform:uppercase;font-size:.76rem;font-weight:750}.attempt-history-row{border-bottom:1px solid var(--line);grid-template-columns:90px repeat(4,minmax(130px,1fr));gap:16px;padding:16px 20px;display:grid}.attempt-history-row:last-child{border-bottom:0}.attempt-history-row>div{flex-direction:column;gap:5px;min-width:0;display:flex}.attempt-history-row span{color:var(--muted);text-transform:uppercase;font-size:.76rem;font-weight:750}.attempt-history-row strong{overflow-wrap:anywhere;align-items:center;gap:6px;display:inline-flex}.attempt-history-row svg{width:16px;color:var(--primary);flex:none}.attempt-index strong{color:var(--primary-dark);font-family:var(--font-display);font-size:1.45rem}.chart{width:100%;height:330px}.chart.small{height:250px}.skeleton{background:linear-gradient(90deg, var(--primary-soft), var(--card), var(--accent-soft));min-height:130px;animation:shimmer 1.2s ease-in-out infinite, cardIn .36s var(--ease-out) both;background-size:200% 100%}.bottom-nav{display:none}.password-field{align-items:center;display:flex;position:relative}.password-field input{width:100%;padding-right:40px}.toggle-password{cursor:pointer;color:var(--muted);background:0 0;border:none;align-items:center;padding:4px;display:flex;position:absolute;right:8px}.toggle-password:hover{color:var(--primary-dark);transform:scale(1.08)}.toggle-password svg{width:1.15rem;height:1.15rem}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes pageIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes cardIn{0%{opacity:0;transform:translateY(14px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes fadeLift{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeDrop{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes menuIn{0%{opacity:0;transform:translate(-50%,-6px)scale(.98)}to{opacity:1;transform:translate(-50%)scale(1)}}@keyframes menuInMobile{0%{opacity:0;transform:translateY(-6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes loginIn{0%{opacity:0;transform:translateY(18px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toastIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes bubbleIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes mascotFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes sweep{0%,45%{transform:translate(-120%)}70%,to{transform:translate(120%)}}@media (width<=820px){.shell{padding-bottom:0}.app-nav{flex-wrap:wrap;align-items:stretch;padding:12px 16px}.brand{flex-basis:auto}.nav-groups{order:3;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;padding-bottom:2px;display:grid}.nav-summary{width:100%}.nav-menu{width:100%;min-width:0;animation:menuInMobile .18s var(--ease-out) both;margin-top:6px;position:static;transform:none}.nav-menu-link{white-space:normal}.logout-button{margin-left:0}.main{padding:16px}.topbar{align-items:flex-start}.topbar .icon-text:not(.theme-toggle){display:none}.theme-toggle{width:auto;min-width:92px}.site-nav{flex-direction:column;align-items:flex-start;padding:14px 16px}.site-nav ul{flex-wrap:wrap;width:100%}.auth-page{grid-template-columns:1fr}.auth-art{min-height:auto;padding:42px 16px}.auth-art:before{width:190px;height:190px}.auth-art:after{width:360px;height:360px}.auth-art figure{margin-bottom:24px}.auth-form-section{min-height:auto;padding:42px 16px 56px}.auth-mark{margin-bottom:24px}.auth-switch{margin-top:34px}.home-hero{grid-template-columns:1fr;min-height:auto;padding:48px 16px}.home-hero figure{order:-1}.hero-actions,.hero-actions .link-button{width:100%}.feature-list{grid-template-columns:1fr}.bottom-nav{display:none}.bottom-link{border-radius:0;flex:1;justify-content:center}.hero-card,.row,.section-head,.inline-form{flex-direction:column;justify-content:flex-start;align-items:stretch}.actions{grid-template-columns:1fr 1fr;width:100%;display:grid}.segmented{width:100%}.checkbox-grid{grid-template-columns:1fr}.gradebook-header{display:none}.gradebook-row{grid-template-columns:1fr;gap:10px;padding:16px}.student-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.assessment-history summary{grid-template-columns:74px minmax(0,1fr) auto}.assessment-history summary:after{grid-area:1/3}.assessment-progress{grid-column:2}.attempt-history-row{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-form{grid-template-columns:1fr;display:grid}.grid,.grid.two,.student-create-form{grid-template-columns:1fr}.student-create-form .form-submit{justify-self:stretch;width:100%;min-width:0}.grade-item-form{grid-template-columns:1fr}.grade-item-form .field:has(textarea){grid-column:auto}.grade-item-form .form-submit{justify-self:stretch;width:100%;min-width:0}.list-toolbar,.list-toolbar.compact{grid-template-columns:1fr;justify-content:stretch;width:100%;display:grid}.list-toolbar>input,.list-toolbar.compact>input{width:100%;min-width:0;max-width:none}.grade-item-metrics{grid-template-columns:1fr}.grade-detail-head,.grade-result-heading{flex-direction:column;align-items:stretch}.grade-result-header{display:none}.grade-result-row{grid-template-columns:1fr 1fr;gap:14px;padding:16px 4px}.grade-result-row .student-cell{grid-column:1/-1}.listening-create-form .form-submit{justify-self:stretch;width:100%;min-width:0}.details div{grid-template-columns:1fr}.link-button{width:100%}}@media (width<=520px){.site-nav{align-items:stretch}.site-nav ul{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.site-nav a:not(.site-brand){justify-content:center}.auth-panel h1{font-size:1.85rem}.student-profile-head{flex-direction:column}.student-stat-grid{grid-template-columns:1fr}.student-stat+.student-stat{border-top:1px solid var(--line);border-left:4px solid var(--leaf)}.assessment-history summary{grid-template-columns:1fr auto;gap:8px}.assessment-kind,.assessment-title,.assessment-progress{grid-column:1}.assessment-history summary:after{grid-area:1/2/span 3}.attempt-history-row{grid-template-columns:1fr}.assignment-attempt-toolbar{flex-direction:column;align-items:stretch}}@keyframes bottomNavIn{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (hover:none){.card:hover,.teacher-theme .card:hover,.card>.row:hover,.list-row:hover,.gradebook-row:hover,.nav-link:hover,.icon-text:hover,.bottom-link:hover{transform:none}}.reading-workbench{grid-template-columns:minmax(260px,360px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.builder-group,.question-editor,.student-question-group,.review-row{border:1px solid color-mix(in srgb, var(--primary) 20%, var(--line));background:color-mix(in srgb, var(--card) 82%, var(--surface));border-radius:8px;padding:16px}.builder-group,.student-question-group{gap:14px;margin-top:16px;display:grid}.question-editor{gap:12px;display:grid}.assignment-manage-row{border-top:1px solid var(--line);gap:12px;padding:14px 0;display:grid}.assignment-manage-row:first-of-type{border-top:0}.assignment-manage-row small{color:var(--text-soft);margin-top:4px;display:block}.assignment-edit-form{border:1px solid var(--line);background:linear-gradient(135deg, var(--surface-strong), var(--primary-pale));border-radius:8px;padding:14px}.generate-panel{grid-template-columns:120px 120px auto;align-items:end;gap:10px;display:grid}.reading-player{gap:12px;display:grid}.reading-player-bar{z-index:2;border:1px solid color-mix(in srgb, var(--primary) 28%, var(--line));background:linear-gradient(135deg, var(--card), var(--primary-pale));box-shadow:0 14px 34px var(--shadow);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex;position:sticky;top:0}.reading-split{grid-template-columns:minmax(0,1fr) minmax(360px,.9fr);gap:16px;min-height:68vh;display:grid}.reading-passage-panel,.reading-question-panel{border:1px solid color-mix(in srgb, var(--primary) 22%, var(--line));background:linear-gradient(180deg, color-mix(in srgb, var(--surface-warm) 26%, transparent), transparent 180px), var(--card);max-height:72vh;box-shadow:0 12px 28px var(--shadow);border-radius:8px;padding:18px;overflow:auto}.reading-passage{max-width:76ch}.annotatable-text{position:relative}.student-annotation{-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:4px}.student-highlight{background:color-mix(in srgb, var(--accent) 34%, transparent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 20%, transparent)}.student-note{border-bottom:2px solid var(--secondary);cursor:help;position:relative}.student-note:hover:after{content:attr(data-note);z-index:9;border:1px solid var(--line);background:var(--card);width:max-content;max-width:min(280px,72vw);color:var(--text);box-shadow:0 14px 34px var(--shadow-strong);white-space:normal;border-radius:8px;padding:10px 12px;position:absolute;bottom:calc(100% + 8px);left:0}.annotation-popover{z-index:120;border:1px solid var(--line);background:var(--card);box-shadow:0 16px 38px var(--shadow-strong);border-radius:8px;gap:6px;padding:6px;display:inline-flex;position:absolute}.annotation-popover button{border:1px solid color-mix(in srgb, var(--primary) 28%, var(--line));background:var(--primary-soft);min-height:34px;color:var(--primary-dark);cursor:pointer;border-radius:8px;padding:6px 10px;font-weight:800}.annotation-popover button:hover{background:var(--accent-soft)}.annotation-popover.note-editor{gap:8px;width:min(320px,100vw - 24px);padding:10px;display:grid}.annotation-popover.note-editor textarea{resize:vertical;width:100%;min-height:84px}.annotation-note-actions{justify-content:flex-end;gap:8px;display:flex}.listening-annotation-region{gap:18px;display:grid}.assignment-policy-summary{border-left:4px solid var(--primary);background:var(--surface-strong);justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;padding:12px 14px;display:flex}.assignment-policy-summary span{color:var(--muted);font-weight:750}.assignment-policy-toggle{align-self:end;min-height:46px}.preserve-lines{white-space:pre-wrap}.shared-options{background:linear-gradient(135deg, var(--secondary-soft), var(--primary-pale));border-radius:8px;gap:6px;padding:12px;display:grid}.rich-field{gap:8px}.rich-toolbar{flex-wrap:wrap;gap:6px;display:flex}.rich-toolbar button{border:1px solid var(--line);background:color-mix(in srgb, var(--card) 82%, var(--surface-strong));min-height:34px;color:var(--text);border-radius:8px;padding:6px 10px;font-weight:700}.rich-toolbar button:hover{border-color:color-mix(in srgb, var(--primary) 44%, var(--line));background:var(--primary-soft)}.rich-title,.rich-center{white-space:pre-wrap}.rich-center{text-align:center}.rich-justify{text-align:justify}.warning-banner{border:1px solid color-mix(in srgb, var(--warning) 50%, var(--line));background:var(--warning-soft);color:var(--warning);border-radius:8px;padding:12px 14px;font-weight:700}.timer-expired{color:var(--danger);font-weight:800}.student-question{border-top:1px solid var(--line);gap:10px;padding:12px 0;display:grid}.choice-list{gap:8px;display:grid}.question-nav{border:1px solid var(--line);background:var(--card);box-shadow:0 10px 24px var(--shadow);border-radius:8px;flex-wrap:wrap;gap:6px;padding:10px;display:flex}.question-nav span{border:1px solid var(--line);border-radius:999px;justify-content:center;align-items:center;width:34px;height:34px;font-weight:700;display:inline-flex}.question-nav .answered{border-color:var(--primary);background:linear-gradient(135deg, var(--primary-soft), var(--secondary-soft));color:var(--primary-dark)}.review-row{grid-template-columns:80px 120px 1fr 1fr;align-items:center;gap:10px;margin-top:10px;display:grid}@media (width<=900px){.reading-workbench,.reading-split{grid-template-columns:1fr}.reading-passage-panel,.reading-question-panel{max-height:none}.generate-panel,.review-row{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.heading-icon{vertical-align:middle;width:22px;margin-right:6px}.main:has(.listening-builder){max-width:1600px}.listening-builder .inline-title{background:0 0;border:0;padding-left:0;font-size:1.2rem;font-weight:800}.builder-toolbar,.builder-actions,.section-title,.asset-upload,.test-player-header,.audio-meta{justify-content:space-between;align-items:center;gap:12px;display:flex}.builder-toolbar{z-index:12;border:1px solid var(--line);background:color-mix(in srgb, var(--card) 92%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:8px;padding:10px;position:sticky;top:76px}.builder-actions{z-index:10;background:var(--card);border:1px solid var(--line);box-shadow:0 12px 30px var(--shadow);border-radius:8px;justify-content:flex-end;padding:12px;position:sticky;bottom:12px}.asset-upload{border:1px dashed var(--line);background:var(--surface);border-radius:8px;padding:12px}.question-groups-stack,.question-group-editor,.question-list{width:100%;min-width:0;max-width:none}.question-group-editor{border:1px solid var(--line);border-top:4px solid var(--secondary);background:var(--card);box-shadow:0 8px 20px var(--shadow);border-radius:8px;gap:18px;padding:clamp(18px,2.4vw,30px);display:grid;overflow:hidden}.question-group-editor>*,.question-row>*{min-width:0}.question-list,.anchor-settings{gap:10px;display:grid}.question-list{gap:14px}.question-row{border:1px solid var(--line);background:var(--surface);border-radius:8px;grid-template-columns:54px minmax(0,1.15fr) minmax(0,1fr) minmax(150px,.55fr);align-items:center;gap:14px;padding:16px;display:grid}.question-row>strong{color:var(--secondary);font-size:1rem}.question-row textarea{resize:vertical;min-height:112px;line-height:1.5}.question-row input,.question-row select{min-height:46px}.question-row>:last-child{grid-column:4}.completion-builder-layout{grid-template-columns:minmax(0,1fr) minmax(250px,310px);align-items:start;gap:18px;display:grid}.completion-editor{min-width:0}.completion-source{resize:vertical;min-height:520px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.92rem;line-height:1.7}.completion-toolbar{border:1px solid var(--line);background:var(--surface);border-radius:8px;margin:8px 0;padding:8px}.completion-toolbar button{min-width:38px}.completion-token-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.completion-token-row>span{color:var(--muted);margin-right:3px;font-size:.82rem;font-weight:800}.completion-token-row button{min-width:42px;padding:6px 9px}.completion-preview{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:12px}.completion-preview summary{cursor:pointer;color:var(--text-soft);font-weight:850}.completion-preview[open] summary{margin-bottom:14px}.completion-keys{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding-top:14px;display:grid}.completion-keys>div{grid-column:1/-1;display:grid}.completion-keys>div span{color:var(--muted);font-size:.82rem}.completion-keys label{grid-template-columns:42px minmax(0,1fr);align-items:center;gap:7px;display:grid}.completion-keys label>span{color:var(--secondary);font-weight:900}.completion-guide{border:1px solid color-mix(in srgb, var(--secondary) 28%, var(--line));background:color-mix(in srgb, var(--secondary-soft) 45%, var(--card));border-radius:8px;gap:14px;padding:16px;display:grid;position:sticky;top:138px}.completion-guide-heading{align-items:center;gap:10px;display:flex}.completion-guide-heading svg{width:23px;height:23px;color:var(--secondary)}.completion-guide-heading div{display:grid}.completion-guide-heading span{color:var(--muted);text-transform:uppercase;font-size:.75rem;font-weight:800}.completion-guide-heading strong{color:var(--text);font-size:1rem}.completion-guide ol{gap:12px;margin:0;padding:0;list-style:none;display:grid}.completion-guide li{grid-template-columns:24px minmax(0,1fr);align-items:start;gap:9px;display:grid}.completion-guide li>span{background:var(--secondary);width:24px;height:24px;color:var(--white);border-radius:50%;place-items:center;font-size:.75rem;font-weight:900;display:grid}.completion-guide li p{color:var(--muted);gap:2px;margin:0;font-size:.83rem;line-height:1.45;display:grid}.completion-guide li strong{color:var(--text-soft);font-size:.86rem}.completion-example{border-left:3px solid var(--accent);background:var(--card);border-radius:4px;gap:5px;padding:11px;display:grid}.completion-example>span{color:var(--warning);text-transform:uppercase;font-size:.75rem;font-weight:900}.completion-example p{color:var(--muted);margin:0;font-size:.82rem}.completion-tip{color:var(--primary-dark);gap:7px;margin:0;font-size:.8rem;font-weight:800;line-height:1.4;display:flex}.completion-tip svg{flex:none;width:18px;height:18px}.completion-document{border:1px solid var(--line);background:var(--card);border-radius:8px;gap:5px;padding:20px;display:grid}.completion-document-title{text-align:center;margin:0 0 8px;font-size:1.35rem}.completion-document-heading{margin:14px 0 2px;font-size:1rem}.completion-line{margin:0;line-height:2.15}.completion-spacer{height:7px}.completion-blank{vertical-align:middle;white-space:nowrap;align-items:center;gap:5px;margin:0 4px;display:inline-flex}.completion-blank strong{color:var(--secondary);font-size:.82rem}.completion-blank input{border:0;border-bottom:2px dotted var(--muted);background:var(--surface);border-radius:0;width:clamp(110px,18vw,210px);min-height:34px;padding:5px 8px;display:inline-block}.completion-invalid-token{border:1px solid var(--danger);background:var(--danger-soft);color:var(--danger);border-radius:4px;padding:2px 5px;font-weight:850}.completion-format-block{width:100%;display:block}.add-group{border:1px dashed var(--line);background:var(--surface);border-radius:8px;grid-template-columns:minmax(190px,1fr) 110px 110px auto;align-items:end;gap:10px;padding:14px;display:grid}.add-group label{color:var(--text-soft);gap:5px;font-size:.86rem;font-weight:800;display:grid}.add-group input{width:100%}.compact-action{white-space:nowrap;justify-content:center;align-items:center;gap:7px;display:inline-flex}.listening-builder>.stack{gap:20px}.listening-builder .card{overflow:visible}.visual-editor,.student-visual{border:1px solid var(--line);background:var(--white);touch-action:none;border-radius:8px;width:100%;position:relative;overflow:hidden}.visual-editor img,.student-visual>img{width:100%;height:auto;display:block}.visual-anchor{border:2px solid var(--forest);min-width:44px;min-height:30px;color:var(--forest-deep);background:color-mix(in srgb, var(--paper-green) 92%, transparent);cursor:move;box-shadow:0 3px 12px color-mix(in srgb, var(--forest) 20%, transparent);border-radius:5px;place-items:center;padding:3px;font-weight:850;display:grid;position:absolute}.visual-answer{background:color-mix(in srgb, var(--card) 92%, transparent);border:2px solid var(--primary);min-width:62px;min-height:32px;box-shadow:0 4px 12px color-mix(in srgb, var(--forest) 20%, transparent);border-radius:5px;align-items:center;gap:4px;padding:3px;display:flex;position:absolute}.visual-answer span{flex:none;font-weight:900}.visual-answer select,.visual-answer input{width:100%;min-width:0;height:100%;padding:3px}.visual-mobile-fallback{display:none}.pdf-preview{gap:10px;display:grid}.pdf-preview>div{justify-content:space-between;gap:12px;display:flex}.pdf-preview iframe,.student-pdf iframe{border:1px solid var(--line);background:var(--white);border-radius:8px;width:100%;height:min(72vh,820px);display:block}.pdf-preview img,.student-pdf img{object-fit:contain;border:1px solid var(--line);background:var(--white);border-radius:8px;width:100%;max-height:820px;display:block}.document-question-list,.document-student-questions{gap:12px;display:grid}.document-question-row{border:1px solid var(--line);background:var(--surface);border-radius:8px;grid-template-columns:54px minmax(280px,1fr) minmax(190px,.45fr);align-items:center;gap:14px;padding:16px;display:grid}.document-question-row>strong{color:var(--secondary)}.document-question-row label{gap:6px;display:grid}.document-question-row label>span{color:var(--muted);font-size:.8rem;font-weight:850}.document-question-row textarea{resize:vertical;min-height:84px}.document-student-questions{border:1px solid var(--line);background:var(--surface);border-radius:8px;margin-top:8px;padding:4px 16px}.preview-part{border-top:1px solid var(--line);padding:18px 0}.listening-audio{width:100%;margin:10px 0}.listening-player{max-width:1120px;margin-inline:auto}.test-player-header{border:1px solid var(--line);background:var(--card);box-shadow:0 10px 28px var(--shadow);border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:20px;padding:18px 20px;display:grid}.test-player-title{min-width:0}.test-player-title .eyebrow{margin-bottom:3px}.test-player-title h2{overflow-wrap:anywhere;margin:0;font-size:clamp(1.35rem,2.2vw,1.75rem);line-height:1.2}.test-player-title>span{color:var(--muted);margin-top:5px;font-size:.88rem;font-weight:700;display:block}.test-player-actions{border-left:1px solid var(--line);align-items:center;gap:10px;padding-left:18px;display:flex}.test-player-actions .primary{min-width:110px}.timer{border:1px solid var(--line);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:6px;padding:8px 11px;font-weight:850;display:inline-flex}.timer svg,.audio-meta svg{width:21px}.timer.expired{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}.listening-audio-dock{z-index:15;position:sticky;top:72px}.audio-player{border:1px solid var(--line);background:color-mix(in srgb, var(--card) 95%, transparent);box-shadow:0 10px 28px var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:8px;padding:14px}.audio-player audio{width:100%}.exam-controls{grid-template-columns:auto minmax(130px,1fr) auto auto;align-items:center;gap:12px;margin-top:10px;display:grid}.exam-controls label{align-items:center;gap:7px;display:flex}.part-tabs{gap:6px;padding:4px 0;display:flex;overflow-x:auto}.part-tabs button{border:1px solid var(--line);background:var(--card);color:var(--text);flex:none}.part-tabs button.active{border-color:var(--primary);background:var(--primary);color:#fff}.student-question-group{border-top:1px solid var(--line);gap:12px;padding:18px 0;display:grid}.question-instruction{background:var(--primary-soft);border-radius:6px;padding:10px 12px}.question-control{border:0;gap:8px;padding:11px 0;display:grid}.question-control>select,.question-control>input{max-width:520px}.choice{border:1px solid var(--line);background:var(--card);border-radius:6px;align-items:flex-start;gap:8px;padding:9px 10px;display:flex}.question-navigator{z-index:12;border:1px solid var(--line);background:var(--card);box-shadow:0 8px 24px var(--shadow);border-radius:8px;flex-wrap:wrap;gap:5px;padding:9px;display:flex;position:sticky;bottom:10px}.question-navigator button{border:1px solid var(--line);background:var(--surface);width:36px;height:36px;color:var(--text);border-radius:50%;padding:0}.question-navigator button.answered{background:var(--primary);color:#fff;border-color:var(--primary)}.leave-warning{text-align:center}.listening-result-summary{gap:22px;display:grid}.result-title{flex-wrap:wrap;align-items:center;gap:8px 14px;display:flex}.result-title .eyebrow{flex-basis:100%;margin:0}.result-title h2{overflow-wrap:anywhere;min-width:0;margin:0;font-size:clamp(1.45rem,2.5vw,2rem)}.result-overview{grid-template-columns:minmax(180px,.55fr) minmax(240px,1fr) minmax(220px,.75fr);align-items:stretch;gap:18px;display:grid}.result-score-block{border-left:4px solid var(--primary);background:var(--primary-soft);border-radius:6px;align-content:center;gap:3px;padding:18px;display:grid}.result-score-block>span{color:var(--primary-dark);text-transform:uppercase;font-size:.78rem;font-weight:850}.result-score-block>strong{color:var(--primary-dark);font-size:clamp(2.15rem,5vw,3.4rem);line-height:1}.result-score-block small{color:var(--muted);margin-left:7px;font-size:.42em}.result-progress{border:1px solid var(--line);background:var(--surface);border-radius:8px;align-content:center;gap:12px;padding:18px;display:grid}.result-progress>div{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.result-progress>div strong{font-size:1.35rem}.result-progress>div span{color:var(--muted);font-weight:750}.result-progress progress{width:100%;height:10px;accent-color:var(--primary)}.result-parts{align-content:center;gap:8px;display:grid}.result-parts>div{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:11px 12px;display:flex}.result-parts>div:last-child{border-bottom:0}.result-parts span{color:var(--text-soft)}.listening-result{max-width:1120px;margin-inline:auto}.listening-review-part{gap:18px;display:grid}.listening-review-group{border-top:1px solid var(--line);gap:10px;padding-top:16px;display:grid}.listening-review-group>div:first-child{gap:3px;display:grid}.listening-review-rows{gap:8px;display:grid}.listening-review-row{border:1px solid var(--line);background:var(--surface);border-left-width:4px;border-radius:8px;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px;display:grid}.listening-review-row.correct{border-left-color:var(--primary)}.listening-review-row.incorrect{border-left-color:var(--danger)}.review-status svg{width:25px;height:25px}.correct .review-status{color:var(--primary-dark)}.incorrect .review-status{color:var(--danger)}.review-question{gap:3px;min-width:0;display:grid}.review-question>span{color:var(--muted);overflow-wrap:anywhere;font-size:.88rem}.review-question b{color:var(--text-soft)}.review-score{justify-items:end;min-width:90px;display:grid}.review-score span{color:var(--muted);font-size:.8rem}.target-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:14px 0;display:grid}.target-picker>div{border:1px solid var(--line);border-radius:8px;gap:8px;max-height:230px;padding:12px;display:grid;overflow:auto}.compact-filter{min-width:190px;color:var(--muted);gap:4px;font-size:.78rem;font-weight:800;display:grid}.compact-filter select{min-height:38px;padding:7px 10px}.collection-count{border:1px solid var(--line);background:var(--card);color:var(--text-soft);border-radius:999px;align-items:center;gap:7px;padding:8px 11px;font-weight:800;display:inline-flex}.collection-count svg{width:18px}.collection-workspace{grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.collection-editor{position:sticky;top:92px}.collection-editor .form{gap:14px;display:grid}.collection-library{min-width:0}.collection-rows{gap:10px;display:grid}.collection-row{border:1px solid var(--line);background:var(--card);box-shadow:0 8px 20px var(--shadow);transition:border-color var(--motion-fast), transform var(--motion-fast) var(--ease-out);border-radius:8px;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px;display:grid}.collection-row:hover{border-color:color-mix(in srgb, var(--primary) 45%, var(--line));transform:translateY(-1px)}.collection-mark{background:var(--primary-soft);width:44px;height:44px;color:var(--primary-dark);border-radius:8px;place-items:center;display:grid}.collection-mark svg{width:22px}.collection-copy{min-width:0;display:grid}.collection-copy strong,.collection-copy span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.collection-copy span{color:var(--muted);font-size:.9rem}.playback-choice{border:1px solid var(--line);background:var(--surface);border-radius:8px;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;padding:12px;display:grid}.playback-choice p{grid-column:1/-1;margin:0}@media (width<=1180px){.question-row{grid-template-columns:48px minmax(0,1fr) minmax(160px,.42fr);align-items:start}.question-row>textarea:first-of-type{grid-column:2}.question-row>textarea:nth-of-type(2){grid-column:2/-1}.question-row>:last-child{grid-area:1/3}}@media (width<=760px){.builder-toolbar,.test-player-header,.asset-upload{flex-direction:column;align-items:stretch}.builder-toolbar .row{width:100%;overflow-x:auto}.question-row{grid-template-columns:34px 1fr}.question-row textarea,.question-row select,.question-row input:last-child{grid-column:2}.question-row>:last-child{grid-area:auto/2}.document-question-row{grid-template-columns:40px 1fr}.document-question-row label{grid-column:2}.pdf-preview iframe,.student-pdf iframe{height:62vh;min-height:420px}.completion-builder-layout{grid-template-columns:1fr}.completion-guide{position:static}.completion-keys{grid-template-columns:1fr}.completion-document{padding:14px}.completion-source{min-height:390px}.add-group{grid-template-columns:1fr;align-items:stretch}.add-group input{width:100%}.anchor-settings .row{grid-template-columns:40px 1fr;display:grid}.visual-answer{display:none}.visual-mobile-fallback{margin-top:10px;display:grid}.exam-controls{grid-template-columns:1fr auto}.target-picker,.collection-workspace{grid-template-columns:1fr}.collection-editor{position:static}.collection-row{grid-template-columns:40px minmax(0,1fr) auto}.compact-filter{width:100%}.exam-controls progress{grid-column:1/-1;width:100%}.listening-audio-dock{top:62px}.test-player-header{grid-template-columns:1fr;gap:14px}.test-player-actions{border-top:1px solid var(--line);border-left:0;justify-content:space-between;padding:12px 0 0}.test-player-actions .primary{flex:1}.app-dialog{grid-template-columns:36px minmax(0,1fr);padding:18px}.dialog-mark{width:36px;height:36px}.dialog-actions{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.dialog-actions>:only-child{grid-column:1/-1}.result-overview{grid-template-columns:1fr}.listening-review-row{grid-template-columns:28px minmax(0,1fr);align-items:start}.review-score{grid-column:2;justify-items:start}}body{font-family:var(--font-ui);line-height:1.55;overflow-x:clip}h1,h2,h3{color:var(--ink);font-family:var(--font-display);font-weight:700;line-height:1.12}button,input,select,textarea{letter-spacing:0}button,a,input,select,textarea{outline:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{box-shadow:0 0 0 3px var(--paper-raised), 0 0 0 5px var(--forest-mid)!important}.shell:before{opacity:.42;background-image:linear-gradient(90deg, transparent 0, transparent calc(100% - 1px), var(--rule) calc(100% - 1px));background-size:min(8vw,96px) 100%;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.teacher-theme,.student-theme{--role-accent:var(--forest)}.app-header{background:var(--ink);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;border-bottom:0}.app-nav{gap:var(--space-6);min-height:68px;padding:10px clamp(16px,3vw,40px)}.brand{color:var(--paper);font-family:var(--font-display);letter-spacing:0;flex-basis:158px;font-size:1.32rem;position:relative}.brand:after{background:var(--leaf);border-radius:0;width:38px;height:3px;margin-top:5px}.nav-link,.app-header .icon-text{color:var(--paper-soft);border-radius:var(--radius-sm);font-size:.83rem;font-weight:700}.teacher-theme .nav-link,.teacher-theme .icon-text{color:var(--paper-soft)}.nav-link:hover,.nav-link.active,.app-header .icon-text:hover{background:var(--leaf);color:var(--ink);border-color:#0000}.nav-link.active{box-shadow:inset 0 -3px 0 var(--paper)}.nav-menu{padding:var(--space-2);border:1px solid var(--rule-strong);border-radius:var(--radius-sm);background:var(--paper-raised);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:8px 8px 0 var(--ink)}.nav-menu-link{border-radius:var(--radius-sm);color:var(--ink-soft)}.nav-menu-link:hover,.nav-menu-link.active{background:var(--leaf-soft);color:var(--forest-deep)}.main{max-width:1380px;padding:clamp(22px,4vw,48px) clamp(16px,3vw,38px) 64px}.topbar{margin-bottom:var(--space-8);padding:0 0 var(--space-5);border:0;border-bottom:3px solid var(--ink);box-shadow:none;background:0 0;border-radius:0;position:relative}.topbar:after{content:"";background:var(--leaf);width:clamp(64px,10vw,140px);height:3px;position:absolute;bottom:-3px;right:0}.topbar h1{font-size:clamp(1.8rem,4vw,2.65rem)}.eyebrow{color:var(--forest-deep);font-family:var(--font-data);font-size:.72rem;font-weight:600}.theme-toggle{border:1px solid var(--ink);border-radius:var(--radius-sm);background:var(--paper-raised);min-width:96px;box-shadow:4px 4px 0 var(--ink);color:var(--ink)!important}.theme-toggle:hover{background:var(--leaf)!important}.stack{gap:var(--space-5)}.grid{gap:var(--space-4)}.card{border:1px solid var(--rule-strong);border-radius:var(--radius-sm);background:var(--paper-raised);box-shadow:none;transition:border-color var(--motion-fast) ease, transform var(--motion-med) var(--ease-out), box-shadow var(--motion-med) ease;padding:clamp(18px,2.4vw,26px)}.card:before{background:var(--forest);border:0;border-radius:0;width:4px;inset:-1px auto -1px -1px}.card:hover,.teacher-theme .card:hover{border-color:var(--ink);box-shadow:5px 5px 0 var(--leaf-soft);transform:translate(-2px,-2px)}.grid>.card:nth-child(2n):before{background:var(--leaf)}.grid>.card:nth-child(3n):before{background:var(--ink)}.hero-card{border-color:var(--ink);background:var(--dashboard-hero-bg);min-height:180px;color:var(--dashboard-hero-text);box-shadow:8px 8px 0 var(--leaf);padding:clamp(24px,4vw,44px)}.teacher-theme .hero-card,.student-theme .hero-card{border-color:var(--ink);background:var(--dashboard-hero-bg);color:var(--dashboard-hero-text)}.hero-card:before{background:var(--leaf);width:10px}.hero-card h2,.hero-card .eyebrow,.hero-card p{color:var(--dashboard-hero-text)}.hero-card .logo-mascot,.teacher-theme .hero-card .logo-mascot,.student-theme .hero-card .logo-mascot{border-color:var(--white);background:var(--white)}.hero-card:after{content:none}.hero-card:hover{box-shadow:8px 8px 0 var(--leaf)}.hero-card:before{animation:none}.stat{color:var(--forest-deep);font-family:var(--font-data);font-size:clamp(2.2rem,5vw,3.4rem);line-height:1}.grid>.card:nth-child(2) .stat{color:var(--forest)}.grid>.card:nth-child(3) .stat{color:var(--ink)}.list-row{border-radius:0;padding:13px 4px}.list-row:hover,.card>.row:hover{background:var(--leaf-soft)}.pill,.chip,.collection-count{border-radius:var(--radius-sm);font-family:var(--font-data);font-size:.76rem}.pill:hover{transform:none}.primary,.secondary,.danger{border-radius:var(--radius-sm);box-shadow:none;font-size:.88rem}.primary{border-color:var(--forest-deep);background:var(--forest-deep);color:var(--paper)}.primary:hover{border-color:var(--ink);background:var(--leaf);color:var(--ink);box-shadow:3px 3px 0 var(--ink);filter:none}.secondary{border-color:var(--ink);background:var(--paper-raised);color:var(--ink)}.secondary:hover{background:var(--leaf-soft)}input,select,textarea{border-color:var(--rule-strong);border-radius:var(--radius-sm);background:var(--paper-raised);box-shadow:none}input:focus,select:focus,textarea:focus{border-color:var(--forest);box-shadow:inset 4px 0 0 var(--leaf);transform:none}.segmented{border-radius:var(--radius-sm);background:var(--paper-soft);box-shadow:none}.segmented button{border-radius:var(--radius-sm)}.segmented button.active{background:var(--forest-deep);color:var(--paper);box-shadow:none}.toast,.note,.empty,.target-panel,.warning-banner,.app-dialog,.loading-popup{border-radius:var(--radius-sm);box-shadow:none}.app-dialog{border:2px solid var(--ink);box-shadow:8px 8px 0 var(--leaf)}.dialog-backdrop{background:color-mix(in srgb, var(--ink) 72%, transparent)}.dialog-mark{border-radius:var(--radius-sm);background:var(--leaf);color:var(--ink)}th{background:var(--ink);color:var(--paper);font-family:var(--font-data);font-size:.78rem}.teacher-theme th{background:var(--ink);color:var(--paper)}tbody tr:hover{background:var(--leaf-soft)}.site-header{background:var(--ink);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:0}.site-brand{color:var(--paper);font-family:var(--font-display);-webkit-text-stroke:0}.site-nav a:not(.site-brand){border-radius:var(--radius-sm);color:var(--paper)}.site-nav a:not(.site-brand):hover,.site-nav a:not(.site-brand).active{background:var(--leaf);color:var(--ink)}.site-theme-toggle{border:1px solid color-mix(in srgb, var(--paper) 36%, transparent);border-radius:var(--radius-sm);min-height:40px;color:var(--paper);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:7px;padding:8px 11px;font-weight:800;display:inline-flex}.site-theme-toggle:hover{border-color:var(--leaf);background:var(--leaf);color:var(--ink)}.site-theme-toggle svg{width:18px;height:18px}.home-hero{background:var(--home-page-bg);min-height:min(720px,100vh - 69px);padding:clamp(72px,10vw,128px) clamp(22px,5vw,64px);display:block;position:relative;overflow:hidden}.home-hero:before{content:"";border:1px solid var(--rule);border-left:10px solid var(--forest);pointer-events:none;position:absolute;inset:26px 22px}.home-hero:after{content:"";background:var(--white);pointer-events:none;width:36%;position:absolute;top:26px;bottom:26px;right:22px}.home-hero article{z-index:2;width:62%;min-width:0;max-width:720px;position:relative}.home-hero h1{max-width:720px;font-family:var(--font-display);font-size:clamp(4rem,11vw,8.8rem);line-height:.84}.home-hero p{max-width:610px}.home-hero figure{z-index:1;width:36%;padding:var(--space-8);opacity:1;flex-direction:column;justify-content:center;align-items:center;margin:0;display:flex;position:absolute;top:26px;bottom:26px;right:22px}.home-hero figure img{filter:none;width:min(290px,32vw)}.home-hero figcaption{max-width:260px;color:var(--ink-on-white)}.home-section{padding-block:clamp(48px,8vw,88px)}.home-section h2{font-family:var(--font-display)}.about-section{gap:var(--space-6);grid-template-columns:minmax(280px,.78fr) minmax(0,1.22fr);align-items:stretch}.about-card,.about-copy{box-shadow:none;border-radius:0}.about-card{border:2px solid var(--forest-deep);background:var(--forest-deep);color:var(--paper)}.about-card h2,.about-card dt,.about-card dd,.about-card .eyebrow{color:var(--paper)}.about-card .about-credentials div,.about-card .ecu-figure{border-color:color-mix(in srgb, var(--paper) 28%, transparent)}.about-copy{border:1px solid var(--rule-strong);border-left:10px solid var(--leaf);background:var(--paper-green);margin:0}.news-section{border-block:1px solid var(--rule);border-top-width:8px;border-top-color:var(--forest);background:var(--paper-green);width:100%;max-width:none;padding-inline:max(22px,50vw - 568px)}.news-section .empty{background:var(--paper-raised)}.site-footer{background:var(--ink);color:var(--paper)}.site-footer h2,.site-footer strong{color:var(--paper)}.site-footer li{color:color-mix(in srgb, var(--paper) 82%, transparent)}.auth-art{background:var(--auth-art-bg);text-align:left}.auth-art:before,.auth-art:after{background:0 0;border-radius:0}.auth-art:before{border:1px solid color-mix(in srgb, var(--white) 30%, transparent);width:auto;height:auto;inset:28px}.auth-art:after{content:none}.auth-art img{border-radius:var(--radius-sm);box-shadow:10px 10px 0 var(--leaf)}.auth-art h2,.auth-panel h1{font-family:var(--font-display)}.reading-player-bar,.reading-passage-panel,.reading-question-panel,.builder-toolbar,.builder-actions,.question-group-editor,.question-row,.asset-upload,.test-player-header,.audio-player,.question-navigator,.collection-row,.result-progress,.listening-review-row{border-radius:var(--radius-sm);box-shadow:none}.reading-player-bar,.test-player-header{border:2px solid var(--ink);border-left:8px solid var(--forest);background:var(--paper-raised)}.reading-passage-panel,.reading-question-panel{background:var(--paper-raised)}.reading-passage,.reading-passage p{font-family:var(--font-reading);font-size:1.06rem;line-height:1.78}.question-group-editor{border-top-color:var(--forest)}.question-row{background:var(--paper-soft)}.question-row>strong,.document-question-row>strong,.completion-keys label>span{color:var(--forest);font-family:var(--font-data)}.completion-guide{border-radius:var(--radius-sm);background:var(--paper-green)}.completion-guide li>span{background:var(--forest-deep)}.completion-example{border-left-color:var(--leaf)}.completion-source{font-family:var(--font-data)}.timer{border-radius:var(--radius-sm);border-color:var(--ink);font-family:var(--font-data);background:var(--paper-soft)}.part-tabs button,.question-navigator button{border-radius:var(--radius-sm);min-height:44px}.part-tabs button.active,.question-navigator button.answered{border-color:var(--forest-deep);background:var(--forest-deep);color:var(--paper)}.question-instruction{border-left:5px solid var(--forest);border-radius:var(--radius-sm)}.choice{border-radius:var(--radius-sm)}.result-score-block{border-left:8px solid var(--forest);border-radius:var(--radius-sm);background:var(--leaf-soft)}.result-score-block>strong,.result-progress>div strong{font-family:var(--font-data)}.result-progress progress,.exam-controls progress{accent-color:var(--forest)}@media (width>=900px){.route-frame>.stack>.grid:not(.two){grid-template-columns:repeat(12,minmax(0,1fr))}.route-frame>.stack>.grid:not(.two)>.card{grid-column:span 4}.route-frame>.stack>.grid:not(.two)>.card:first-child:nth-last-child(5),.route-frame>.stack>.grid:not(.two)>.card:first-child:nth-last-child(5)~.card{grid-column:span 3}.route-frame>.stack>.grid:not(.two)>.card:first-child:nth-last-child(5){grid-column:span 4}.route-frame>.stack>.grid:not(.two)>.card:last-child:nth-child(5){grid-column:span 5}}@media (width<=820px){.app-nav{min-height:auto}.brand{flex-basis:auto}.nav-groups{background:color-mix(in srgb, var(--paper) 7%, transparent);padding:var(--space-2)}.nav-menu{box-shadow:4px 4px 0 var(--ink)}.home-hero{min-height:650px;padding:72px 34px 220px}.home-hero article{width:100%;max-width:none}.home-hero h1{font-size:5rem}.home-hero:before{inset:18px 16px}.home-hero:after{width:auto;height:190px;inset:auto 16px 18px}.home-hero figure{width:auto;height:190px;padding:var(--space-5);gap:var(--space-5);flex-direction:row;inset:auto 16px 18px}.home-hero figure img{width:min(160px,36vw)}.about-section{gap:var(--space-4);grid-template-columns:1fr}.about-copy{margin:0}.hero-card:after{display:none}}@media (width<=520px){.main{padding-inline:14px}.topbar{align-items:center}.site-nav{width:100%;overflow:hidden}.site-nav ul{grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;width:100%;min-width:0}.site-nav li{min-width:0}.site-nav a:not(.site-brand){min-width:0;padding-inline:5px;font-size:.78rem}.home-hero{min-height:620px;padding:64px 28px 210px}.home-hero h1{overflow-wrap:normal;max-width:280px;font-size:3.65rem}.site-theme-toggle{width:100%;padding-inline:5px}.site-theme-toggle span{display:none}.home-hero figure{max-width:none;right:16px}.home-hero figure img{width:130px}.home-hero figcaption{max-width:170px}.hero-card{min-height:160px;box-shadow:5px 5px 0 var(--leaf)}.hero-card .mascot{flex-basis:86px;width:86px;height:86px}}.reading-passage-image{object-fit:contain;border:1px solid var(--line);background:#fff;width:min(100%,900px);max-height:640px;margin:1rem auto;display:block}.news-composer-card{border-left:6px solid var(--forest);overflow:visible}.news-form{gap:22px}.news-meta-grid,.news-assets-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.news-editor-field{gap:8px;min-width:0;display:grid}.field-label{color:var(--text);font-weight:800}.news-editor-toolbar{border:1px solid var(--line);background:var(--surface-strong);border-bottom:0;flex-wrap:wrap;align-items:center;gap:6px;padding:8px;display:flex}.news-editor-toolbar button{border-color:var(--line);background:var(--card);width:38px;height:38px;min-height:38px;color:var(--text);box-shadow:none;place-items:center;padding:0;display:inline-grid}.news-editor-toolbar button:hover{border-color:var(--forest);color:var(--forest);transform:none}.news-editor-toolbar button:disabled{opacity:.55;cursor:wait}.news-editor-toolbar svg{width:18px;height:18px}.toolbar-divider{background:var(--line);width:1px;height:26px;margin-inline:3px}.editor-size-control select{width:auto;min-width:80px;height:38px;padding-block:6px}.news-editor-layout{border:1px solid var(--line);background:var(--card);grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-width:0;display:grid}.news-editor-layout>textarea{border:0;border-right:1px solid var(--line);resize:vertical;border-radius:0;min-width:0;min-height:390px;padding:20px;line-height:1.7}.news-editor-layout>textarea:focus{z-index:1;outline:2px solid var(--primary);outline-offset:-2px;position:relative}.news-editor-preview{background:var(--paper-raised);min-width:0;min-height:390px;max-height:620px;color:var(--text);padding:24px;line-height:1.75;overflow:auto}.news-editor-preview p{overflow-wrap:anywhere;margin:0 0 1em}.rich-content-image{border:1px solid var(--line);object-fit:contain;background:#fff;border-radius:6px;width:auto;max-width:100%;max-height:640px;margin:20px auto;display:block}.rich-inline-image{border:1px solid var(--line);object-fit:contain;vertical-align:middle;background:#fff;border-radius:6px;width:auto;max-width:min(100%,360px);max-height:280px;margin:8px 10px;display:inline-block}.news-cover-preview{flex-wrap:wrap;align-items:flex-end;gap:14px;display:flex}.news-cover-preview img{aspect-ratio:16/9;border:1px solid var(--line);object-fit:cover;background:#fff;border-radius:6px;width:min(360px,100%);display:block}.news-publish-row{justify-content:space-between;align-items:center;gap:18px;display:flex}.news-publish-row .form-submit{margin-left:auto}.news-list{flex-direction:column;gap:22px;margin-top:30px;display:flex}.news-card{border-left:6px solid var(--forest);padding:0;overflow:hidden}.news-card:nth-child(3n+2){border-left-color:var(--secondary)}.news-card:nth-child(3n){border-left-color:var(--accent)}.news-card:before{display:none}.news-card-link{min-height:280px;color:var(--text);grid-template-columns:minmax(280px,40%) minmax(0,1fr);text-decoration:none;display:grid}.news-card:nth-child(2n) .news-card-media{grid-area:1/2}.news-card:nth-child(2n) .news-card-content{grid-area:1/1}.news-card-media{border-right:1px solid var(--line);background:var(--forest-deep);min-width:0;overflow:hidden}.news-card:nth-child(2n) .news-card-media{border-right:0;border-left:1px solid var(--line)}.news-card-media .news-thumb{object-fit:cover;width:100%;height:100%;min-height:280px;transition:transform .32s var(--ease-out);border:0;border-radius:0;margin:0}.news-media-placeholder{width:100%;height:100%;min-height:280px;color:var(--paper);align-content:center;place-items:center;gap:12px;display:grid}.news-media-placeholder svg{width:64px;height:64px;color:var(--leaf)}.news-media-placeholder small{color:color-mix(in srgb, var(--paper) 78%, transparent);font-family:var(--font-data);text-transform:uppercase;font-weight:800}.news-card-content{flex-direction:column;min-width:0;padding:clamp(24px,4vw,44px);display:flex}.news-card-meta{justify-content:space-between;align-items:center;gap:14px;margin-bottom:22px;display:flex}.news-card-meta time{margin:0}.news-card-meta>span{border:1px solid var(--line);color:var(--muted);font-family:var(--font-data);text-transform:uppercase;padding:5px 9px;font-size:.75rem;font-weight:800}.news-card-link h3{font-family:var(--font-display);margin-bottom:14px;font-size:clamp(1.8rem,3.5vw,2.8rem);line-height:1.02}.news-card-link p{color:var(--text-soft);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-bottom:18px;line-height:1.65;display:-webkit-box;overflow:hidden}.news-card:hover .news-thumb{transform:scale(1.025)}.news-card-cta{border-top:2px solid var(--line);width:fit-content;color:var(--forest);align-items:center;gap:8px;margin-top:auto;padding-top:14px;font-weight:850;display:inline-flex}.news-card-cta svg{width:18px;height:18px;transition:transform .18s var(--ease-out)}.news-card:hover .news-card-cta svg{transform:translate(4px)}.news-detail-page{background:var(--home-page-bg);min-height:100vh;color:var(--text)}.news-detail-header{border-bottom:1px solid var(--line);background:var(--paper-green)}.news-detail-inner{width:min(900px,100% - 44px);margin:0 auto;padding:clamp(48px,8vw,96px) 0 clamp(40px,7vw,76px)}.news-detail-inner .back-link{margin-bottom:clamp(42px,8vw,82px)}.news-detail-inner .eyebrow{margin-bottom:14px}.news-detail-inner h1{max-width:820px;font-family:var(--font-display);overflow-wrap:anywhere;margin-bottom:22px;font-size:clamp(2.8rem,8vw,5.8rem);line-height:.98}.news-detail-summary{max-width:740px;color:var(--text-soft);margin:0;font-size:clamp(1.05rem,2.2vw,1.3rem);line-height:1.65}.news-detail-cover{width:min(1120px,100% - 44px);margin:clamp(34px,6vw,70px) auto 0}.news-detail-cover img{border:1px solid var(--line);object-fit:cover;background:#fff;border-radius:8px;width:100%;max-height:680px;display:block}.news-detail-body{width:min(760px,100% - 44px);font-family:var(--font-reading);margin:0 auto;padding:clamp(44px,7vw,88px) 0 clamp(70px,10vw,120px);font-size:1.08rem;line-height:1.85}.news-detail-body p{overflow-wrap:anywhere;margin:0 0 1.35em}.news-detail-body .rich-content-image{margin-block:34px}.news-detail-body .news-external-link{width:fit-content;font-family:var(--font-body);margin-top:28px}.news-detail-body .news-external-link svg{width:18px;height:18px}.news-detail-state{width:min(760px,100% - 44px);min-height:70vh;margin:0 auto;padding-block:clamp(70px,12vw,150px)}.news-detail-state h1{font-family:var(--font-display);font-size:clamp(2.6rem,7vw,5rem)}@media (width<=820px){.news-meta-grid,.news-assets-grid,.news-editor-layout{grid-template-columns:1fr}.news-editor-layout>textarea{border-right:0;border-bottom:1px solid var(--line);min-height:320px}.news-editor-preview{min-height:260px;max-height:none}.news-publish-row{flex-direction:column;align-items:stretch}.news-publish-row .form-submit{width:100%;margin-left:0}.news-card-link{grid-template-columns:1fr}.news-card:nth-child(2n) .news-card-media,.news-card:nth-child(2n) .news-card-content{grid-area:auto/1}.news-card-media,.news-card:nth-child(2n) .news-card-media{border:0;border-bottom:1px solid var(--line)}.news-card-media .news-thumb,.news-media-placeholder{min-height:240px;max-height:360px}.news-detail-cover,.news-detail-inner,.news-detail-body,.news-detail-state{width:calc(100% - 32px)}}@media (width<=520px){.news-editor-toolbar{gap:4px}.news-editor-toolbar button{width:36px;height:36px;min-height:36px}.editor-size-control select{min-width:72px;height:36px}.news-editor-layout>textarea,.news-editor-preview{padding:16px}.news-list{gap:16px}.news-card-content{padding:22px 18px}.news-card-link h3{font-size:1.9rem}.news-card-media .news-thumb,.news-media-placeholder{min-height:210px}.news-detail-inner h1{font-size:2.75rem}.news-detail-cover img{min-height:220px}}
