@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--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;--space-16: 64px;--font-sans: "Inter Variable", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--leading-tight: 1.2;--leading-snug: 1.35;--leading-normal: 1.55;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-full: 9999px;--radius-control: var(--radius-md);--radius-button: var(--radius-md);--content-max: 1120px;--bg: #f7f6f2;--surface: #ffffff;--surface-2: #fbfaf7;--surface-sunken: #f0eee8;--border: #e3e0d6;--border-strong: #c9c5b8;--text: #1d2420;--text-muted: #55605a;--text-subtle: #66706a;--primary: #2c6b58;--primary-hover: #235746;--primary-soft: #e2efe9;--primary-contrast: #ffffff;--danger: #b3261e;--danger-hover: #8f1d17;--danger-contrast: #ffffff;--focus-color: #1f7a5f;--overlay: rgba(20, 26, 22, .45);--tone-neutral-bg: #e9e7df;--tone-neutral-fg: #3d4741;--tone-info-bg: #dcecfa;--tone-info-fg: #14507f;--tone-success-bg: #dbf1e2;--tone-success-fg: #1b6a3a;--tone-warning-bg: #fdf0cf;--tone-warning-fg: #7a5600;--tone-danger-bg: #fbdcd9;--tone-danger-fg: #9a2118;--shadow-sm: 0 1px 2px rgba(29, 36, 32, .06);--shadow-md: 0 4px 12px rgba(29, 36, 32, .08), 0 1px 3px rgba(29, 36, 32, .06);--shadow-lg: 0 16px 40px rgba(29, 36, 32, .16), 0 4px 10px rgba(29, 36, 32, .08);--focus-ring: 3px solid var(--focus-color);--muted: var(--text-muted);--radius: var(--radius-md);--primary-dark: var(--primary-hover)}:root[data-color-scheme=dark]{--bg: #0f1411;--surface: #171d19;--surface-2: #1c241f;--surface-sunken: #0c100d;--border: #29332d;--border-strong: #3b483f;--text: #e8eee9;--text-muted: #a6b2aa;--text-subtle: #8c988f;--primary: #7cc8a9;--primary-hover: #97d6bc;--primary-soft: #1d3329;--primary-contrast: #0b1a13;--danger: #f08178;--danger-hover: #f5a39b;--danger-contrast: #2a0b08;--focus-color: #8fd9b9;--overlay: rgba(0, 0, 0, .62);--tone-neutral-bg: #26302a;--tone-neutral-fg: #c6d0c8;--tone-info-bg: #14293a;--tone-info-fg: #92c8f0;--tone-success-bg: #14301f;--tone-success-fg: #90d8a8;--tone-warning-bg: #382d0f;--tone-warning-fg: #f0c972;--tone-danger-bg: #3d1b18;--tone-danger-fg: #f6a69e;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 6px 16px rgba(0, 0, 0, .42), 0 1px 3px rgba(0, 0, 0, .4);--shadow-lg: 0 20px 48px rgba(0, 0, 0, .6), 0 4px 12px rgba(0, 0, 0, .45)}[data-theme=student]{--text-xs: .875rem;--text-sm: 1rem;--text-base: 1.1875rem;--text-lg: 1.375rem;--text-xl: 1.625rem;--text-2xl: 2.125rem;--text-3xl: 2.75rem;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--radius-control: var(--radius-md);--radius-button: var(--radius-full);--bg: #fff8ee;--surface-2: #fffcf6;--surface-sunken: #f7ecda;--border: #ecdfc8;--border-strong: #d6c4a3;--primary: #2c6b58;--primary-hover: #235746;--primary-soft: #e0f1e8;--accent-1: #d6453a;--accent-1-soft: #fde8e4;--accent-1-ink: #9c2a1f;--accent-2: #b98600;--accent-2-soft: #fff1c2;--accent-2-ink: #6e4e00;--accent-3: #2a7fc4;--accent-3-soft: #e1f0fc;--accent-3-ink: #0f5489;--accent-4: #7b4cc4;--accent-4-soft: #efe7fb;--accent-4-ink: #5a2fa0;--accent-5: #1f9c72;--accent-5-soft: #dcf5ec;--accent-5-ink: #0d654a;--accent-6: #d9700f;--accent-6-soft: #fdebd6;--accent-6-ink: #854600;--accent-7: #d13b7f;--accent-7-soft: #fce3ee;--accent-7-ink: #9b1d52;--accent-8: #12909a;--accent-8-soft: #d9f2f4;--accent-8-ink: #0a5a62}:root[data-color-scheme=dark] [data-theme=student]{--bg: #191611;--surface: #221e17;--surface-2: #28231b;--surface-sunken: #14110d;--border: #3a3326;--border-strong: #524835;--primary: #7cc8a9;--primary-hover: #97d6bc;--primary-soft: #1d3329;--accent-1: #ff8a7c;--accent-1-soft: #3b201c;--accent-1-ink: #ffb8ae;--accent-2: #f6c344;--accent-2-soft: #36290a;--accent-2-ink: #f6d780;--accent-3: #72b9f4;--accent-3-soft: #14283a;--accent-3-ink: #a8d4f8;--accent-4: #b793f2;--accent-4-soft: #2a1e42;--accent-4-ink: #d0baf7;--accent-5: #52d4a8;--accent-5-soft: #12332a;--accent-5-ink: #93e5c8;--accent-6: #f7a456;--accent-6-soft: #382210;--accent-6-ink: #f9c697;--accent-7: #f580ae;--accent-7-soft: #3b1a29;--accent-7-ink: #f8add0;--accent-8: #48c8d1;--accent-8-soft: #0f2f33;--accent-8-ink: #92dee4}[data-accent="1"]{--accent: var(--accent-1);--accent-soft: var(--accent-1-soft);--accent-ink: var(--accent-1-ink)}[data-accent="2"]{--accent: var(--accent-2);--accent-soft: var(--accent-2-soft);--accent-ink: var(--accent-2-ink)}[data-accent="3"]{--accent: var(--accent-3);--accent-soft: var(--accent-3-soft);--accent-ink: var(--accent-3-ink)}[data-accent="4"]{--accent: var(--accent-4);--accent-soft: var(--accent-4-soft);--accent-ink: var(--accent-4-ink)}[data-accent="5"]{--accent: var(--accent-5);--accent-soft: var(--accent-5-soft);--accent-ink: var(--accent-5-ink)}[data-accent="6"]{--accent: var(--accent-6);--accent-soft: var(--accent-6-soft);--accent-ink: var(--accent-6-ink)}[data-accent="7"]{--accent: var(--accent-7);--accent-soft: var(--accent-7-soft);--accent-ink: var(--accent-7-ink)}[data-accent="8"]{--accent: var(--accent-8);--accent-soft: var(--accent-8-soft);--accent-ink: var(--accent-8-ink)}:root{--print-ink: #000000;--print-muted: #404040;--print-rule: #8c8c8c;--print-paper: #ffffff}@page{size:auto;margin:16mm 14mm}*,*:before,*:after{box-sizing:border-box}:root{color-scheme:light;font-family:var(--font-sans);line-height:var(--leading-normal);color:var(--text);-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}:root[data-color-scheme=dark]{color-scheme:dark}body{margin:0;background:var(--bg);color:var(--text);font-size:var(--text-base);-webkit-font-smoothing:antialiased}[data-theme=student]{background:var(--bg);color:var(--text);font-size:var(--text-base)}h1,h2,h3,h4{margin:0 0 var(--space-3);line-height:var(--leading-tight);letter-spacing:-.02em;font-weight:var(--weight-semibold);color:var(--text)}h1{font-size:var(--text-2xl);letter-spacing:-.03em;font-weight:var(--weight-bold)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}h4{font-size:var(--text-base)}p{margin:0 0 var(--space-3)}a{color:var(--primary);text-underline-offset:3px}a:hover{color:var(--primary-hover)}:focus-visible{outline:var(--focus-ring);outline-offset:2px}::selection{background:var(--primary-soft);color:var(--text)}img,svg{max-width:100%}button,input,select,textarea{font:inherit;color:inherit}.muted{color:var(--text-muted)}.hint{font-size:var(--text-sm);font-weight:var(--weight-regular);color:var(--text-muted)}.visually-hidden{position:absolute;width:1px;height:1px;margin:0;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:40px;padding:var(--space-2) var(--space-4);font-family:inherit;font-size:var(--text-sm);font-weight:var(--weight-semibold);line-height:var(--leading-snug);text-decoration:none;white-space:nowrap;cursor:pointer;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-button);box-shadow:var(--shadow-sm);transition:background-color .15s,border-color .15s,box-shadow .15s,transform .05s}.btn:hover:not(:disabled){background:var(--surface-sunken);color:var(--text)}.btn:active:not(:disabled){transform:translateY(1px);box-shadow:none}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;box-shadow:none}.btn svg{flex:none;width:1.15em;height:1.15em}.btn-secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text)}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-contrast)}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover);color:var(--primary-contrast)}.btn-ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--text-muted)}.btn-ghost:hover:not(:disabled){background:var(--surface-sunken);color:var(--text)}.btn-danger{background:var(--danger);border-color:var(--danger);color:var(--danger-contrast)}.btn-danger:hover:not(:disabled){background:var(--danger-hover);border-color:var(--danger-hover);color:var(--danger-contrast)}.btn-link{background:transparent;border-color:transparent;box-shadow:none;color:var(--primary);padding-inline:var(--space-2)}.btn-link:hover:not(:disabled){background:var(--primary-soft);color:var(--primary-hover)}.btn-sm{min-height:32px;padding:var(--space-1) var(--space-3);font-size:var(--text-xs)}.btn-lg{min-height:48px;padding:var(--space-3) var(--space-6);font-size:var(--text-base)}.btn-icon{padding:var(--space-2);min-width:40px}.btn-icon.btn-sm{min-width:32px;padding:var(--space-1)}.stack{display:flex;flex-direction:column}.stack-gap-1{gap:var(--space-1)}.stack-gap-2{gap:var(--space-2)}.stack-gap-3{gap:var(--space-3)}.stack-gap-4{gap:var(--space-4)}.stack-gap-5{gap:var(--space-5)}.stack-gap-6{gap:var(--space-6)}.stack-gap-7{gap:var(--space-8)}.stack-gap-8{gap:var(--space-10)}.cluster{display:flex;flex-wrap:wrap;align-items:center}.cluster-gap-1{gap:var(--space-1)}.cluster-gap-2{gap:var(--space-2)}.cluster-gap-3{gap:var(--space-3)}.cluster-gap-4{gap:var(--space-4)}.cluster-gap-5{gap:var(--space-5)}.cluster-gap-6{gap:var(--space-6)}.cluster-gap-7{gap:var(--space-8)}.cluster-gap-8{gap:var(--space-10)}.grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm)}.card-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.card-header h2,.card-title{margin:0;font-size:var(--text-lg)}.card-actions,.actions,.form-actions,.lesson-form-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.page-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-8)}.stack>.page-header,.admin-page>.page-header,.new-curriculum>.page-header,[data-theme=student] .student>.page-header{margin-bottom:0}.page-header-text{flex:1 1 320px;min-width:0}.page-header h1{margin:0}.page-header-description{margin:var(--space-2) 0 0;color:var(--text-muted);max-width:64ch}.page-header-back{display:inline-flex;align-items:center;gap:var(--space-1);margin-bottom:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted);text-decoration:none}.page-header-back:hover{color:var(--text)}.page-header-back svg{width:1em;height:1em}.page-header-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.form{display:flex;flex-direction:column;gap:var(--space-4)}.field{display:flex;flex-direction:column;gap:var(--space-2);font-weight:var(--weight-medium);font-size:var(--text-sm)}.field-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text)}.field-error{font-size:var(--text-sm);font-weight:var(--weight-regular);color:var(--tone-danger-fg)}.field input,.field select,.field textarea{width:100%;min-height:40px;padding:var(--space-2) var(--space-3);font-family:inherit;font-size:var(--text-base);font-weight:var(--weight-regular);color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-control);transition:border-color .15s,box-shadow .15s}.field textarea{min-height:96px;resize:vertical}.field input::placeholder,.field textarea::placeholder{color:var(--text-subtle)}.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--text-subtle)}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:var(--focus-ring);outline-offset:0;border-color:var(--focus-color)}.field input[aria-invalid=true],.field select[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:var(--tone-danger-fg)}.field input[type=checkbox],.field input[type=radio]{width:auto;min-height:0;accent-color:var(--primary)}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:var(--space-4) 0;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th,.table td{padding:var(--space-3) var(--space-4);text-align:left;vertical-align:middle;border-bottom:1px solid var(--border)}.table thead th{font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);white-space:nowrap;background:var(--surface-2)}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover{background:var(--surface-2)}.table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table .nowrap{white-space:nowrap}.table .cell-sub{display:block;font-size:var(--text-xs);color:var(--text-muted)}.table .progress-label{margin-top:var(--space-1)}.table input,.table select{min-width:120px;max-width:100%}.table input[type=number]{min-width:80px;width:90px}.table-actions{display:flex;gap:var(--space-2);justify-content:flex-end;white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:var(--leading-snug);white-space:nowrap}.badge-neutral{background:var(--tone-neutral-bg);color:var(--tone-neutral-fg)}.badge-info{background:var(--tone-info-bg);color:var(--tone-info-fg)}.badge-success{background:var(--tone-success-bg);color:var(--tone-success-fg)}.badge-warning{background:var(--tone-warning-bg);color:var(--tone-warning-fg)}.badge-danger{background:var(--tone-danger-bg);color:var(--tone-danger-fg)}.tabs{display:flex;flex-wrap:wrap;gap:var(--space-1);border-bottom:1px solid var(--border);margin-bottom:var(--space-4)}.tabs [role=tab],.tabs button{padding:var(--space-2) var(--space-4);background:transparent;border:0;border-bottom:2px solid transparent;margin-bottom:calc(var(--space-1) * -.25);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted);cursor:pointer}.tabs [role=tab]:hover,.tabs button:hover{color:var(--text)}.tabs [aria-selected=true],.tabs [aria-current=page]{color:var(--primary);border-bottom-color:var(--primary)}.filter-tabs{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-4) 0}.filter-tab{display:inline-flex;align-items:center;gap:var(--space-2);min-height:36px;padding:var(--space-1) var(--space-4);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-full);cursor:pointer;transition:background-color .15s,color .15s}.filter-tab:hover{background:var(--surface-sunken);color:var(--text)}.filter-tab[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:var(--primary-contrast)}.filter-tab-count{font-size:var(--text-xs);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;opacity:.85}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--overlay)}.dialog{width:100%;max-width:480px;max-height:calc(100vh - var(--space-8));overflow-y:auto;padding:var(--space-6);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg)}.dialog h2{font-size:var(--text-lg)}.dialog-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-6)}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-10) var(--space-4);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--surface-2);color:var(--text-muted)}.empty-state h3{color:var(--text);margin-bottom:var(--space-2)}.empty-state-icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;margin-bottom:var(--space-3);border-radius:var(--radius-full);background:var(--primary-soft);color:var(--primary)}.empty-state-icon svg{width:24px;height:24px}.empty-state-body{max-width:52ch}.empty-state-action{justify-content:center;margin-top:var(--space-4)}.loading{justify-content:center;gap:var(--space-3);padding:var(--space-8);text-align:center;color:var(--text-muted)}.spinner{flex:none;width:18px;height:18px;color:var(--primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-message{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--tone-danger-fg);border-radius:var(--radius-md);background:var(--tone-danger-bg);color:var(--tone-danger-fg);font-size:var(--text-sm)}.error-message-icon{flex:none;width:20px;height:20px}.error-message-text{flex:1 1 auto;min-width:0}.error-message .btn{flex:none;margin-left:auto}.callout{display:flex;align-items:flex-start;gap:var(--space-3);margin:0;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm)}.callout svg{flex:none;width:18px;height:18px;margin-top:var(--space-1)}.callout-warning{background:var(--tone-warning-bg);color:var(--tone-warning-fg);border:1px solid var(--tone-warning-fg)}.delete-impact>:last-child{margin-bottom:0}.impact-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-2);margin:0 0 var(--space-4)}.impact-stats>div{padding:var(--space-3);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-md)}.impact-stats dt{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.impact-stats dd{margin:var(--space-1) 0 0;font-weight:var(--weight-semibold)}.voice-picker{display:flex;flex-direction:column;gap:var(--space-3);max-width:360px;padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.voice-picker-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.voice-picker [role=alert]{color:var(--tone-danger-fg);font-size:var(--text-sm)}.voice-picker [role=status]{color:var(--tone-success-fg);font-size:var(--text-sm)}.progress{width:100%}.progress-label{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-1)}.progress-track{height:10px;border-radius:var(--radius-full);background:var(--tone-neutral-bg);overflow:hidden}.progress-fill{width:var(--progress, 0%);height:100%;background:var(--accent, var(--primary));border-radius:var(--radius-full);transition:width .3s}.theme-toggle{display:inline-flex;gap:var(--space-1);padding:var(--space-1);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-full)}.theme-toggle-option{display:inline-flex;align-items:center;gap:var(--space-2);min-height:32px;padding:var(--space-1) var(--space-3);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted);background:transparent;border:0;border-radius:var(--radius-full);cursor:pointer}.theme-toggle-option:hover{color:var(--text)}.theme-toggle-option[aria-checked=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.theme-toggle-option svg{width:16px;height:16px;flex:none}.theme-toggle-compact .theme-toggle-option{padding:var(--space-1) var(--space-2)}.sg-page{max-width:var(--content-max);margin:0 auto;padding:var(--space-8) var(--space-4) var(--space-16)}.sg-section{margin-top:var(--space-12)}.sg-section>h2{padding-bottom:var(--space-3);margin-bottom:var(--space-6);border-bottom:1px solid var(--border)}.swatch-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.swatch{display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-muted)}.swatch-chip{height:56px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--swatch)}.swatch code{color:var(--text)}.token-row{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:flex-end}.token-box{background:var(--primary-soft);border:1px solid var(--primary);border-radius:var(--radius-sm);width:var(--box, 16px);height:var(--space-6)}.token-card{width:96px;height:64px;background:var(--surface);border:1px solid var(--border)}.radius-sm{border-radius:var(--radius-sm)}.radius-md{border-radius:var(--radius-md)}.radius-lg{border-radius:var(--radius-lg)}.radius-xl{border-radius:var(--radius-xl)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.type-sample{margin:0 0 var(--space-3);line-height:var(--leading-snug)}.type-xs{font-size:var(--text-xs)}.type-sm{font-size:var(--text-sm)}.type-base{font-size:var(--text-base)}.type-lg{font-size:var(--text-lg)}.type-xl{font-size:var(--text-xl)}.type-2xl{font-size:var(--text-2xl)}.type-3xl{font-size:var(--text-3xl)}.sg-student{padding:var(--space-8);border-radius:var(--radius-xl);border:1px solid var(--border)}.accent-card{background:var(--accent-soft);color:var(--accent-ink);border:1px solid var(--accent);border-radius:var(--radius-lg);padding:var(--space-5);font-weight:var(--weight-semibold)}.accent-card .progress-fill{background:var(--accent)}.accent-card .progress-track{background:var(--surface)}.sg-header{justify-content:space-between}.sg-subhead{margin-top:var(--space-8)}.sg-dialog-stage{margin-bottom:var(--space-4)}.pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-4);font-variant-numeric:tabular-nums}.pagination-summary{color:var(--text-muted);font-size:var(--text-sm)}.pagination-controls{display:flex;align-items:center;gap:var(--space-3);margin-left:auto}.pagination-status{font-size:var(--text-sm);color:var(--text);white-space:nowrap}@media (max-width: 480px){.pagination{flex-direction:column;align-items:stretch}.pagination-controls{margin-left:0;justify-content:space-between;flex-wrap:nowrap}}.markdown{max-width:68ch;overflow-wrap:anywhere;line-height:var(--leading-normal)}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:0 0 var(--space-4)}.markdown h2{margin:var(--space-8) 0 var(--space-3);font-size:var(--text-xl)}.markdown h3{margin:var(--space-6) 0 var(--space-2);font-size:var(--text-lg)}.markdown ul,.markdown ol{margin:0 0 var(--space-4);padding-left:var(--space-6)}.markdown li{margin-bottom:var(--space-2)}.markdown li::marker{color:var(--text-subtle)}.markdown blockquote{margin:var(--space-5) 0;padding:var(--space-3) var(--space-5);border-left:4px solid var(--primary);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--primary-soft);color:var(--text)}.markdown blockquote>:last-child{margin-bottom:0}.markdown code{padding:0 var(--space-1);font-family:var(--font-mono);font-size:var(--text-sm);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm)}.markdown pre{overflow-x:auto;margin:0 0 var(--space-4);padding:var(--space-4);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-md);line-height:var(--leading-snug)}.markdown pre code{padding:0;background:none;border:0;font-size:var(--text-sm)}.markdown table{display:block;overflow-x:auto;width:100%;margin:0 0 var(--space-4);border-collapse:collapse;font-size:var(--text-sm)}.markdown th,.markdown td{padding:var(--space-2) var(--space-3);text-align:left;border:1px solid var(--border)}.markdown th{background:var(--surface-sunken);font-weight:var(--weight-semibold)}.markdown hr{margin:var(--space-6) 0;border:0;border-top:1px solid var(--border)}.markdown img{max-width:100%;height:auto}.lesson-figure{margin:var(--space-6) 0;padding:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.lesson-figure img{display:block;max-width:100%;height:auto;margin:0 auto;border-radius:var(--radius-md)}.lesson-figure figcaption{margin-top:var(--space-2);padding:0 var(--space-2) var(--space-1);font-size:var(--text-sm);color:var(--text-muted)}.figure-credit{display:block;margin-top:var(--space-1);font-size:var(--text-xs);color:var(--text-subtle)}.figure-credit a{color:inherit}.lesson-video{margin:var(--space-6) 0;padding:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.lesson-video-stage{position:relative;aspect-ratio:16 / 9;overflow:hidden;background:var(--surface-sunken);border-radius:var(--radius-md)}.lesson-video-poster{position:relative;display:block;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:pointer}.lesson-video-poster img{display:block;width:100%;height:100%;object-fit:cover}.lesson-video-poster:focus-visible{outline:var(--focus-ring);outline-offset:2px}.lesson-video-play{position:absolute;top:50%;left:50%;display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;transform:translate(-50%,-50%);color:var(--primary-contrast);background:var(--primary);border-radius:var(--radius-full);box-shadow:var(--shadow-md);transition:background-color .15s,transform .15s}.lesson-video-play svg{width:28px;height:28px;fill:currentColor}.lesson-video-poster:hover .lesson-video-play{background:var(--primary-hover);transform:translate(-50%,-50%) scale(1.06)}.lesson-video-duration{position:absolute;right:var(--space-2);bottom:var(--space-2);padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:1;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-variant-numeric:tabular-nums}.lesson-video-frame{display:block;width:100%;height:100%;border:0}.lesson-video figcaption{margin-top:var(--space-2);padding:0 var(--space-2) var(--space-1);font-size:var(--text-sm);color:var(--text-muted)}.read-aloud-button{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;margin-left:var(--space-2);padding:0;vertical-align:middle;font-size:var(--text-xs);line-height:1;color:var(--primary);background:var(--primary-soft);border:1px solid transparent;border-radius:var(--radius-full);cursor:pointer;transition:background-color .15s,color .15s}.read-aloud-button:hover{background:var(--primary);color:var(--primary-contrast)}.read-aloud-button[aria-busy=true]{cursor:progress}.read-aloud-spinner{width:1.25em;height:1.25em;animation:read-aloud-spin .9s linear infinite}@keyframes read-aloud-spin{to{transform:rotate(360deg)}}.read-aloud-status{display:inline-block;max-width:100%;margin-left:var(--space-3);vertical-align:middle;font-size:var(--text-sm);color:var(--text-muted);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}[data-read-aloud-section][data-read-aloud]{background:var(--primary-soft);border-radius:var(--radius-md);background-image:linear-gradient(var(--primary),var(--primary));background-repeat:no-repeat;background-size:4px 100%;transition:background-color .2s,background-size .2s}[data-read-aloud-section][data-read-aloud=loading]{background-color:transparent;background-image:repeating-linear-gradient(to bottom,var(--primary) 0 6px,transparent 6px 10px)}.read-aloud-block,.lesson-block-reading[data-read-aloud],.lesson-quiz>li[data-read-aloud-section],.lesson-quiz .hint[data-read-aloud-section]{position:relative;isolation:isolate}.read-aloud-block[data-read-aloud],.lesson-block-reading[data-read-aloud],.lesson-quiz>li[data-read-aloud-section][data-read-aloud],.lesson-quiz .hint[data-read-aloud-section][data-read-aloud]{background:none;transition:none}.read-aloud-block[data-read-aloud]:before,.lesson-block-reading[data-read-aloud]:before,.lesson-quiz>li[data-read-aloud-section][data-read-aloud]:before,.lesson-quiz .hint[data-read-aloud-section][data-read-aloud]:before{content:"";position:absolute;z-index:-1;pointer-events:none;top:calc(-1 * var(--space-2));bottom:calc(-1 * var(--space-2));left:calc(-1 * var(--space-3));right:calc(-1 * var(--space-3));background-color:var(--primary-soft);background-image:linear-gradient(var(--primary),var(--primary));background-repeat:no-repeat;background-size:4px 100%;border-radius:var(--radius-md);transition:background-color .2s,background-size .2s}.lesson-quiz>li[data-read-aloud-section][data-read-aloud]:before{left:calc(-1 * (var(--space-6) + var(--space-3)))}.read-aloud-block[data-read-aloud=loading]:before,.lesson-block-reading[data-read-aloud=loading]:before,.lesson-quiz>li[data-read-aloud-section][data-read-aloud=loading]:before,.lesson-quiz .hint[data-read-aloud-section][data-read-aloud=loading]:before{background-color:transparent;background-image:repeating-linear-gradient(to bottom,var(--primary) 0 6px,transparent 6px 10px)}@media (prefers-reduced-motion: reduce){.read-aloud-spinner{animation:none}[data-read-aloud-section][data-read-aloud]{transition:none}.read-aloud-block[data-read-aloud]:before,.lesson-block-reading[data-read-aloud]:before,.lesson-quiz>li[data-read-aloud-section][data-read-aloud]:before,.lesson-quiz .hint[data-read-aloud-section][data-read-aloud]:before{transition:none}}.read-aloud-all{width:auto;margin-left:0;padding:0 var(--space-4);font-size:var(--text-sm);font-weight:var(--weight-semibold)}.read-aloud-block{position:relative}@media (min-width: 900px){.read-aloud-block{max-width:68ch}.read-aloud-block>.read-aloud-button{position:absolute;top:0;left:auto;right:calc(100% + var(--space-3) + var(--space-2));margin-left:0}}[data-theme=student] .markdown{max-width:62ch;font-size:var(--text-lg);line-height:1.7}[data-theme=student] .markdown p{margin-bottom:var(--space-5)}[data-theme=student] .markdown h2{font-size:var(--text-2xl)}[data-theme=student] .markdown h3{font-size:var(--text-xl)}[data-theme=student] .markdown blockquote{border-left-width:6px;border-radius:0 var(--radius-lg) var(--radius-lg) 0}[data-theme=student] .lesson-figure,[data-theme=student] .lesson-video{border-radius:var(--radius-xl)}[data-theme=student] .lesson-video-stage{border-radius:var(--radius-lg);border:3px solid var(--primary)}[data-theme=student] .lesson-video-play{width:76px;height:76px}[data-theme=student] .lesson-video figcaption{font-size:var(--text-base)}[data-theme=student] .lesson-figure figcaption{font-size:var(--text-base)}[data-theme=student] .read-aloud-button{width:40px;height:40px;font-size:var(--text-sm)}[data-theme=student] .read-aloud-all{width:auto}.lesson-blocks{display:flex;flex-direction:column;gap:var(--space-5)}.lesson-block{position:relative;padding:var(--space-4) var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.lesson-block-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.lesson-block-head:empty{display:none}.lesson-block-label{display:inline-block;margin-bottom:var(--space-2);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.04em;text-transform:uppercase;border-radius:var(--radius-full);color:var(--text);background:var(--surface-sunken)}.lesson-block-reading{background:none;border-color:transparent;padding-left:0;padding-right:0}.lesson-block-example{background:var(--accent-3-soft);border-color:var(--accent-3)}.lesson-block-example .lesson-block-label{color:var(--accent-3-ink);background:var(--surface)}.lesson-block-practice{background:var(--accent-2-soft);border-color:var(--accent-2)}.lesson-block-practice .lesson-block-label{color:var(--accent-2-ink);background:var(--surface)}.lesson-block-narration{background:var(--accent-4-soft);border-color:var(--accent-4)}.lesson-block-narration .lesson-block-label{color:var(--accent-4-ink);background:var(--surface)}.lesson-block-activity{background:var(--accent-5-soft);border-color:var(--accent-5)}.lesson-block-activity .lesson-block-label{color:var(--accent-5-ink);background:var(--surface)}.lesson-block-problem,.lesson-block-prompt{margin:0 0 var(--space-3);font-weight:var(--weight-medium)}.lesson-block-steps{margin:0 0 var(--space-3);padding-left:var(--space-6)}.lesson-block-steps li{margin-bottom:var(--space-2)}.lesson-block-answer,.lesson-block-hint{margin:var(--space-3) 0 0;padding:var(--space-2) var(--space-3);background:var(--surface);border-radius:var(--radius-md)}.lesson-block-answer{font-weight:var(--weight-semibold)}.lesson-block-reveal{margin:0 var(--space-2) var(--space-1) 0;padding:var(--space-2) var(--space-4);min-height:44px;font:inherit;font-weight:var(--weight-semibold);color:var(--primary);background:var(--surface);border:2px solid var(--primary);border-radius:var(--radius-button);cursor:pointer}.lesson-block-reveal:hover,.lesson-block-reveal[aria-expanded=true]{background:var(--primary-soft)}.lesson-block-materials h3{margin:var(--space-3) 0 var(--space-1);font-size:var(--text-base)}.lesson-block-materials ul{margin:0;padding-left:var(--space-6)}.lesson-block .lesson-figure,.lesson-block .lesson-video{margin:0}.app-shell{--sidebar-w: 260px;min-height:100vh;background:var(--bg);color:var(--text)}.app-skip{position:fixed;top:var(--space-2);left:var(--space-2);z-index:100;padding:var(--space-2) var(--space-4);background:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-weight:var(--weight-semibold);transform:translateY(-200%)}.app-skip:focus{transform:none}.app-brand{display:inline-flex;align-items:center;gap:var(--space-3);min-width:0}.app-brand-mark{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;background:var(--primary);color:var(--primary-contrast);border-radius:var(--radius-md)}.app-brand-mark svg{width:20px;height:20px}.app-brand-text{display:flex;flex-direction:column;min-width:0;line-height:var(--leading-tight)}.app-brand-name{font-weight:var(--weight-bold);color:var(--text)}.app-brand-role{font-size:var(--text-xs);color:var(--text-muted)}.app-avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;background:var(--primary-soft);color:var(--primary);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-bold)}.app-user{display:flex;align-items:center;gap:var(--space-3);min-width:0}.app-user-name{color:var(--text);font-weight:var(--weight-medium);font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-nav{display:flex;flex-direction:column;gap:var(--space-1)}.app-nav-link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--text-muted);font-weight:var(--weight-medium);text-decoration:none}.app-nav-link svg{flex:none;width:20px;height:20px}.app-nav-link:hover{background:var(--surface-sunken);color:var(--text)}.app-nav-link[aria-current=page]{background:var(--primary-soft);color:var(--primary)}.app-main{width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-6) var(--space-4) var(--space-16);outline:none}.app-topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--surface);border-bottom:1px solid var(--border)}.app-sidebar{position:fixed;inset:0 auto 0 0;z-index:50;display:flex;flex-direction:column;gap:var(--space-6);width:min(280px,85vw);padding:var(--space-4);background:var(--surface);border-right:1px solid var(--border);box-shadow:var(--shadow-lg);overflow-y:auto;transform:translate(-100%);visibility:hidden;transition:transform .2s ease,visibility .2s}.app-sidebar.is-open{transform:none;visibility:visible}.app-sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.app-sidebar-foot{margin-top:auto;display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--border)}.app-sidebar-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2)}.app-drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:var(--overlay)}@media (prefers-reduced-motion: reduce){.app-sidebar{transition:none}}@media (min-width: 960px){.app-shell:not(.app-shell-student){display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);align-items:start}.app-shell:not(.app-shell-student)>.app-topbar,.app-close,.app-drawer-backdrop{display:none}.app-sidebar{position:sticky;inset:0 auto auto 0;height:100vh;width:auto;transform:none;visibility:visible;box-shadow:none;z-index:20;transition:none}.app-main{padding:var(--space-10) var(--space-8) var(--space-16)}}.app-shell-student{background:var(--bg)}.app-topbar-student{flex-wrap:wrap;gap:var(--space-2) var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:3px solid var(--accent-3)}.app-topbar-student .app-brand-mark{background:var(--accent-1);color:var(--surface);border-radius:var(--radius-lg);width:44px;height:44px}.app-topbar-student .app-brand-name{color:var(--accent-1-ink);font-size:var(--text-lg)}.app-topbar-student .app-nav{flex-direction:row;flex:1}.app-topbar-student .app-nav-link{border-radius:var(--radius-full);padding:var(--space-2) var(--space-4)}.app-topbar-student .app-nav-link[aria-current=page]{background:var(--accent-3-soft);color:var(--accent-3-ink)}.app-topbar-student .app-avatar{width:40px;height:40px;background:var(--accent-2-soft);color:var(--accent-2-ink);border:2px solid var(--accent-2)}.app-topbar-tools{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}@media (max-width: 640px){.app-topbar-student .app-user-name,.app-topbar-student .app-brand-role{display:none}.app-topbar-student .app-nav{order:3;flex-basis:100%}}.not-found{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-6) var(--space-4);background:var(--bg)}.not-found-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);max-width:420px;text-align:center;padding:var(--space-10) var(--space-8)}.not-found-card h1,.not-found-card p{margin:0}.not-found-card p{color:var(--text-muted);margin-bottom:var(--space-3)}.not-found-icon{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;background:var(--primary-soft);color:var(--primary);border-radius:var(--radius-full)}.not-found-icon svg{width:32px;height:32px}.app-content{display:flex;flex-direction:column;min-width:0;min-height:100vh}.app-content>.app-main{flex:1 0 auto;padding-bottom:var(--space-8)}.app-footer{max-width:var(--content-max);width:100%;margin:0 auto;padding:var(--space-4) var(--space-4) var(--space-6);font-size:var(--text-sm);color:var(--text-muted)}.app-shell-student .app-footer{padding-top:0}@media (min-width: 960px){.app-footer{padding-left:var(--space-8);padding-right:var(--space-8)}}.auth-page{position:relative;min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;background:var(--bg);color:var(--text)}.auth-theme{position:absolute;top:var(--space-4);right:var(--space-4);z-index:2}.auth-brand{display:flex;flex-direction:column;gap:var(--space-6);padding:var(--space-4) var(--space-4) var(--space-4);padding-right:calc(var(--space-16) * 2);background:var(--primary-soft);border-bottom:1px solid var(--border)}.auth-brand-head{display:flex;align-items:center;gap:var(--space-3)}.auth-logo{display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;background:var(--primary);color:var(--primary-contrast);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.auth-logo svg{width:24px;height:24px}.auth-brand-name{margin:0;font-size:var(--text-lg);font-weight:var(--weight-bold);line-height:var(--leading-tight)}.auth-tagline{display:none;margin:var(--space-2) 0 0;color:var(--text-muted);font-size:var(--text-base);line-height:var(--leading-snug)}.auth-art{display:none}.auth-main{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--space-4);padding:var(--space-6) var(--space-4) var(--space-10)}.auth-card{width:100%;max-width:420px;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-md)}.auth-title{margin:0;font-size:var(--text-2xl);line-height:var(--leading-tight)}.auth-description{margin:calc(var(--space-2) * -1) 0 var(--space-2);color:var(--text-muted)}.auth-notice{margin:0;padding:var(--space-3) var(--space-4);background:var(--tone-info-bg);color:var(--tone-info-fg);border-radius:var(--radius-md);font-size:var(--text-sm)}.auth-submit{width:100%;margin-top:var(--space-2)}.auth-links{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-1);padding-top:var(--space-4);border-top:1px solid var(--border)}.auth-links .btn{width:100%;justify-content:center;color:var(--primary)}@media (min-width: 900px){.auth-page{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);grid-template-rows:1fr}.auth-theme{top:var(--space-6);right:var(--space-6)}.auth-brand{justify-content:space-between;padding:var(--space-12);border-bottom:0;border-right:1px solid var(--border);background:radial-gradient(circle at 15% 10%,var(--surface) 0,transparent 45%),linear-gradient(160deg,var(--primary-soft),var(--surface-sunken))}.auth-brand-head{flex-direction:column;align-items:flex-start;gap:var(--space-5)}.auth-logo{width:56px;height:56px}.auth-logo svg{width:30px;height:30px}.auth-brand-name{font-size:var(--text-3xl);letter-spacing:-.02em}.auth-tagline{display:block;max-width:28ch;font-size:var(--text-lg)}.auth-art{display:block;position:relative;flex:1 1 auto;min-height:260px}.auth-main{justify-content:center;padding:var(--space-12) var(--space-8)}.auth-card{padding:var(--space-8)}}.auth-art-orb{position:absolute;border-radius:var(--radius-full)}.auth-art-orb-1{left:8%;top:12%;width:220px;height:220px;background:linear-gradient(135deg,var(--primary),var(--primary-soft));opacity:.35}.auth-art-orb-2{right:10%;bottom:8%;width:160px;height:160px;background:linear-gradient(135deg,var(--tone-warning-bg),var(--tone-info-bg));opacity:.9}.auth-art-card{position:absolute;display:inline-flex;align-items:center;justify-content:center;width:84px;height:84px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg)}.auth-art-card svg{width:40px;height:40px}.auth-art-card-1{left:22%;top:30%;color:var(--primary);transform:rotate(-6deg)}.auth-art-card-2{left:52%;top:12%;color:var(--tone-warning-fg);transform:rotate(5deg)}.auth-art-card-3{left:46%;top:58%;color:var(--tone-info-fg);transform:rotate(-3deg)}[data-theme=student].auth-page .auth-brand{background:radial-gradient(circle at 85% 15%,var(--accent-2-soft) 0,transparent 40%),radial-gradient(circle at 10% 90%,var(--accent-3-soft) 0,transparent 45%),var(--accent-1-soft)}[data-theme=student].auth-page .auth-logo{background:var(--accent-1);color:var(--surface)}[data-theme=student].auth-page .auth-brand-name,[data-theme=student].auth-page .auth-title{color:var(--accent-1-ink)}[data-theme=student].auth-page .auth-art-orb-1{background:linear-gradient(135deg,var(--accent-4),var(--accent-3-soft))}[data-theme=student].auth-page .auth-art-orb-2{background:linear-gradient(135deg,var(--accent-2-soft),var(--accent-6-soft))}[data-theme=student].auth-page .auth-art-card-1{color:var(--accent-1)}[data-theme=student].auth-page .auth-art-card-2{color:var(--accent-2)}[data-theme=student].auth-page .auth-art-card-3{color:var(--accent-5)}[data-theme=student].auth-page .auth-card{border-radius:var(--radius-xl);border-width:2px}[data-theme=student].auth-page .field input{min-height:56px;padding:var(--space-3) var(--space-4);font-size:var(--text-lg);border-width:2px;border-radius:var(--radius-lg)}[data-theme=student].auth-page .field-label{font-size:var(--text-base);font-weight:var(--weight-semibold)}[data-theme=student].auth-page .auth-submit{min-height:56px;font-size:var(--text-lg)}.student-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.student-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);min-height:120px;padding:var(--space-4);background:var(--surface);color:var(--text);border:2px solid var(--border);border-radius:var(--radius-xl);font:inherit;cursor:pointer}.student-tile:hover{border-color:var(--accent-1);background:var(--primary-soft)}.student-tile:focus-visible{outline:3px solid var(--accent-1);outline-offset:2px}.student-tile-avatar{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--radius-full);background:var(--accent-1);color:var(--surface);font-size:var(--text-2xl);font-weight:var(--weight-bold)}.student-tile-name{font-size:var(--text-lg);font-weight:var(--weight-semibold);overflow-wrap:anywhere;text-align:center}@media (min-width: 640px){.student-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}.auth-legal{font-size:var(--text-sm)}.terms-check{gap:var(--space-2)}.terms-meta{margin:0 0 var(--space-4);color:var(--text-muted);font-size:var(--text-sm)}.terms-check-row{display:flex;align-items:flex-start;gap:var(--space-3)}.terms-check-row input[type=checkbox]{flex:none;width:20px;height:20px;margin-top:var(--space-1);accent-color:var(--primary)}.terms-check-row label{font-size:var(--text-base);color:var(--text)}.auth-forgot{align-self:flex-end;margin-top:calc(var(--space-2) * -1);color:var(--primary);font-size:var(--text-sm)}.auth-success{display:flex;flex-direction:column;gap:var(--space-4)}.auth-success p{margin:0}.form-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.form-grid>.span-2{grid-column:1 / -1}.form-status{margin:0;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--tone-success-bg);color:var(--tone-success-fg);font-size:var(--text-sm)}.form-fieldset{margin:0;padding:0;border:0;min-width:0}.form-fieldset legend{padding:0;margin-bottom:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-medium)}.table-wrap.flush{margin:0}.split{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6);align-items:start}.household-code-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-6);background:var(--primary-soft);border:1px solid var(--primary);border-radius:var(--radius-lg)}.household-code{font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:var(--weight-bold);letter-spacing:.04em;color:var(--text);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.household-code-card .hint{color:var(--text)}.household-code-label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-muted)}.household-code-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.household-code-status{font-size:var(--text-sm);font-weight:var(--weight-medium)}.device-list{list-style:none;margin:0;padding:0}.device-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--border)}.device-list li:first-child{border-top:0;padding-top:0}.device-list li:last-child{padding-bottom:0}.device-text{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;overflow-wrap:anywhere}.device-label{font-weight:var(--weight-medium)}.device-load-error{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);color:var(--text-muted)}.person-list{list-style:none;margin:0;padding:0}.person-list li{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--border)}.person-list li:first-child{border-top:0;padding-top:0}.person-list li:last-child{padding-bottom:0}.person-avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;border-radius:var(--radius-full);background:var(--primary-soft);color:var(--primary);font-weight:var(--weight-bold)}.person-text{min-width:0;overflow-wrap:anywhere;font-weight:var(--weight-medium)}.person-text .cell-sub{display:block;font-weight:var(--weight-regular)}.curriculum-link{font-weight:var(--weight-semibold)}.table .status-cell{min-width:200px}.status-cell .progress{margin-top:var(--space-2)}.new-curriculum{gap:var(--space-6)}.approach-options{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3);min-width:0;margin:0;padding:0;border:0}.approach-options legend{padding:0;margin-bottom:var(--space-3);font-size:var(--text-sm);font-weight:var(--weight-medium)}.approach-option{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);cursor:pointer}.approach-option:hover{background:var(--surface-2)}.approach-option.is-selected{background:var(--primary-soft);border-color:var(--primary)}.approach-option input{flex:none;margin:var(--space-1) 0 0;accent-color:var(--primary)}.approach-text{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.schedule-total{margin:var(--space-4) 0 0;color:var(--text-muted)}.action-bar{display:flex;justify-content:flex-end;padding:var(--space-4);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-lg)}.summary{display:flex;flex-direction:column;gap:var(--space-1)}.summary p{margin:0}.summary-main{font-weight:var(--weight-medium)}.danger-zone{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border)}.generation-banner{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);background:var(--tone-info-bg);color:var(--tone-info-fg);border:1px solid var(--tone-info-fg);border-radius:var(--radius-lg)}.generation-banner .spinner{margin-top:var(--space-1);color:inherit}.unit-list{display:flex;flex-direction:column;gap:var(--space-4);list-style:none;margin:0;padding:0}.unit-list .card-header h2{font-size:var(--text-lg)}.lesson-rows{list-style:none;margin:var(--space-4) 0 0;padding:0;border:1px solid var(--border);border-radius:var(--radius-md)}.lesson-rows li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border)}.lesson-rows li:first-child{border-top:0}.lesson-when{flex:none;min-width:130px}.lesson-sources-toggle{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--text-muted);font-size:var(--text-sm)}.lesson-sources-toggle input{accent-color:var(--primary)}.sources-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.lesson-rows a{flex:1 1 200px;min-width:0;font-weight:var(--weight-medium)}.review-list,.review-history{list-style:none;margin:0;padding:0}.review-list{display:flex;flex-direction:column;gap:var(--space-3)}.review-row{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4) var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.review-row p{margin:0}.review-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-1) var(--space-3)}.review-lesson{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);font-weight:var(--weight-semibold)}.review-feedback{white-space:pre-wrap;padding:var(--space-3);background:var(--surface-sunken);border-radius:var(--radius-md)}.review-foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3)}.review-item{border-top:1px solid var(--border);padding:var(--space-3) 0}.review-item:first-child{border-top:0}.review-item>div{margin-bottom:var(--space-1)}@media (min-width: 720px){.form-grid,.split,.approach-options{grid-template-columns:repeat(2,minmax(0,1fr))}.approach-options legend{grid-column:1 / -1}}.approval-banner{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);background:var(--tone-info-bg);color:var(--tone-info-fg);border:1px solid var(--tone-info-fg);border-radius:var(--radius-lg)}.approval-banner svg{flex:none;margin-top:var(--space-1)}.include-videos .field{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:var(--space-3);row-gap:var(--space-1)}.include-videos .field input[type=checkbox]{grid-column:1;grid-row:1;width:20px;height:20px}.include-videos .field-label{grid-column:2;grid-row:1}.include-videos .hint{grid-column:2;grid-row:2}.data-card{display:flex;flex-direction:column;gap:var(--space-3)}.data-card p{margin:0}.data-card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4)}.danger-zone{border-color:var(--tone-danger-fg)}.danger-zone-rows{display:flex;flex-direction:column}.danger-zone-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) 0;border-top:1px solid var(--border)}.danger-zone-row:first-child{border-top:0;padding-top:0}.danger-zone-row:last-child{padding-bottom:0}.danger-zone-row>div{flex:1 1 240px;min-width:0}.danger-zone-row h3{margin:0 0 var(--space-1);font-size:var(--text-base)}.danger-zone-row p{margin:0;color:var(--text-muted);font-size:var(--text-sm)}.danger-zone-row .hint{margin-top:var(--space-1)}.delete-list{margin:0 0 var(--space-4);padding-left:var(--space-6)}.lesson-meta{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.lesson-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6);align-items:start}.lesson-main,.lesson-side{display:flex;flex-direction:column;gap:var(--space-6);min-width:0}@media (min-width: 1100px){.lesson-layout{grid-template-columns:minmax(0,1fr) 340px}.lesson-side{position:sticky;top:var(--space-4)}}.lesson-edit{margin-bottom:var(--space-6)}.lesson-submission{white-space:pre-wrap}.lesson-review{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--border);display:flex;flex-direction:column;gap:var(--space-3)}.lesson-review h3,.lesson-review p{margin:0}.lesson-review blockquote{margin:0;padding:var(--space-3) var(--space-4);border-left:4px solid var(--primary);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--surface-sunken)}.lesson-objectives,.lesson-progress,.lesson-sources{margin:0;padding-left:var(--space-5);display:flex;flex-direction:column;gap:var(--space-2)}.lesson-progress{list-style:none;padding-left:0}.lesson-side .card ul{margin:0;padding-left:var(--space-5)}.lesson-side .card p{margin:0 0 var(--space-3)}.lesson-quiz{margin:0;padding-left:var(--space-6);display:flex;flex-direction:column;gap:var(--space-6)}.lesson-quiz-prompt{margin:0 0 var(--space-3);font-weight:var(--weight-semibold)}.lesson-choices{list-style:none;margin:0 0 var(--space-3);padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.lesson-choice{padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.lesson-quiz-attempt{margin:0 0 var(--space-4);color:var(--text-muted)}.lesson-choice-picked-wrong{border-left:4px solid var(--tone-danger-fg)}.lesson-choice-student{display:inline-block;padding:0 var(--space-2);border-radius:var(--radius-md);background:var(--tone-success-bg);color:var(--tone-success-fg);font-size:var(--text-sm);font-weight:var(--weight-semibold)}.lesson-choice-picked-wrong .lesson-choice-student{background:var(--tone-danger-bg);color:var(--tone-danger-fg)}.lesson-choice-correct{border-color:var(--tone-success-fg);background:var(--tone-success-bg);color:var(--tone-success-fg);font-weight:var(--weight-medium)}.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:var(--space-4)}.image-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);min-width:0}.image-card img{display:block;width:100%;height:160px;object-fit:cover;border-radius:var(--radius-md);background:var(--surface-sunken)}.image-card-body{display:flex;flex-direction:column;gap:var(--space-1);flex:1}.image-card-body p{margin:0}.image-card-actions{display:flex;flex-direction:column;gap:var(--space-2)}.image-card-actions .btn{width:100%}.image-place{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-sunken)}.image-place select{width:100%;min-width:0;min-height:36px;padding:var(--space-1) var(--space-2);font:inherit;font-size:var(--text-sm);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-control)}.image-place select:focus-visible{outline:var(--focus-ring);outline-offset:0;border-color:var(--focus-color)}.lesson-page{min-width:0}.lesson-approval{margin-bottom:var(--space-6);border-color:var(--tone-warning-fg);background:var(--tone-warning-bg)}.lesson-approval p{margin:0 0 var(--space-3)}.media-panel-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.media-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.video-card .media-card-thumb{position:relative}.media-card-thumb .lesson-video-duration{right:var(--space-2);bottom:var(--space-2)}.dialog.dialog-wide{max-width:720px}.media-search-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3)}.media-search-form .field{flex:1 1 220px;min-width:0}.media-link-form{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3)}.media-link-form .field{align-self:stretch}.media-results{list-style:none;margin:var(--space-4) 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:var(--space-3)}.media-result{display:flex;flex-direction:column;gap:var(--space-2);min-width:0;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.media-result img{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:var(--radius-md);background:var(--surface-sunken)}.media-result-body{display:flex;flex-direction:column;gap:var(--space-1);flex:1;min-width:0;font-size:var(--text-sm);overflow-wrap:anywhere}.media-result .btn{width:100%}.blocks-editor{display:flex;flex-direction:column;gap:var(--space-4)}.blocks-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.block-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-left-width:4px;border-radius:var(--radius-lg);background:var(--surface);min-width:0}.block-card-reading{border-left-color:var(--border-strong)}.block-card-example{border-left-color:var(--accent-3)}.block-card-practice{border-left-color:var(--accent-2)}.block-card-narration{border-left-color:var(--accent-4)}.block-card-activity{border-left-color:var(--accent-5)}.block-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.block-card-head h3{margin:0;font-size:var(--text-base)}.block-card-actions{display:flex;gap:var(--space-1);flex-shrink:0}.block-steps{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;border:0;min-width:0}.block-steps legend{padding:0;margin-bottom:var(--space-2)}.block-step{display:flex;align-items:center;gap:var(--space-2)}.block-step input{flex:1;min-width:0;min-height:40px;padding:var(--space-1) var(--space-3);font:inherit;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-control)}.block-media{display:flex;align-items:center;gap:var(--space-3);min-width:0}.block-media img{width:96px;height:64px;object-fit:cover;border-radius:var(--radius-md);background:var(--surface-sunken);flex-shrink:0}.block-media p{margin:0;overflow-wrap:anywhere}.block-add{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border)}.block-add .field{flex:1 1 200px;min-width:0}.dashboard-student{display:inline-flex;align-items:center;gap:var(--space-3)}.dashboard-curricula,.dashboard-summary{list-style:none;margin:0;padding:0}.dashboard-curricula{display:flex;flex-direction:column;gap:var(--space-4)}.dashboard-curriculum{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md)}.dashboard-curriculum-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.dashboard-curriculum-name{font-size:var(--text-lg);font-weight:var(--weight-semibold);overflow-wrap:anywhere}.dashboard-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-3)}.dashboard-stat{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;padding:var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.dashboard-stat-progress{grid-column:span 2}.dashboard-stat-label{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-muted)}.dashboard-stat-label svg{width:14px;height:14px;flex:none}.dashboard-stat-value{font-size:var(--text-xl);font-weight:var(--weight-semibold);line-height:var(--leading-tight);font-variant-numeric:tabular-nums}.dashboard-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);font-size:var(--text-sm);color:var(--text-muted)}.dashboard-summary{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6);color:var(--text-muted)}.dashboard-table td:nth-child(2){min-width:200px}tr.muted td{color:var(--text-muted)}@media (max-width: 480px){.dashboard-stat-progress{grid-column:auto}.dashboard-curriculum{padding:var(--space-3)}}[data-theme=student] .student{font-size:var(--text-base);line-height:var(--leading-normal);display:flex;flex-direction:column;gap:var(--space-6)}[data-theme=student] .student-lesson-header .page-header{margin-bottom:0}[data-theme=student] .student h1{font-size:var(--text-3xl);line-height:var(--leading-tight)}[data-theme=student] .student h2{font-size:var(--text-xl);margin:0 0 var(--space-3)}[data-theme=student] .student .muted{font-size:var(--text-sm)}[data-theme=student] .student .student-big-button{font-size:var(--text-lg);min-height:56px;padding:var(--space-3) var(--space-6);border-radius:var(--radius-full);text-align:center;max-width:100%;white-space:normal}[data-theme=student] .student .btn-primary,[data-theme=student] .student .btn-primary:hover:not(:disabled){background:var(--accent-ink, var(--primary));border-color:var(--accent-ink, var(--primary));color:var(--accent-soft, var(--primary-contrast))}[data-theme=student] .student .btn-primary:hover:not(:disabled){box-shadow:var(--shadow-md)}[data-theme=student] .student .btn-secondary{border-radius:var(--radius-full)}[data-theme=student] .student-cards{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-6);grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr))}[data-theme=student] .student-card{display:flex;flex-direction:column;background:var(--surface);border:2px solid var(--accent-soft);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-md)}[data-theme=student] .student-card-band{background:var(--accent-soft);padding:var(--space-4) var(--space-6);border-bottom:4px solid var(--accent)}[data-theme=student] .student-card-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--radius-lg);background:var(--accent);color:var(--surface)}[data-theme=student] .student-card-icon svg{width:30px;height:30px}[data-theme=student] .student-card-body{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-3);padding:var(--space-6);flex:1}[data-theme=student] .student-card-body h2{margin:0;color:var(--accent-ink);overflow-wrap:anywhere}[data-theme=student] .student-card .progress-label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text)}[data-theme=student] .student-card .progress-track{height:16px;background:var(--accent-soft)}[data-theme=student] .student-card .progress-fill{background:var(--accent)}[data-theme=student] .student-caught-up{display:flex;align-items:center;gap:var(--space-2);margin:0;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);background:var(--accent-soft);color:var(--accent-ink);font-weight:var(--weight-semibold)}[data-theme=student] .student-caught-up svg{flex:none;width:1.4em;height:1.4em}[data-theme=student] .student-see-all{font-weight:var(--weight-semibold);color:var(--accent-ink)}[data-theme=student] .student-empty{display:flex;align-items:center;gap:var(--space-3);margin:0;padding:var(--space-8);border:2px dashed var(--border-strong);border-radius:var(--radius-xl);background:var(--surface-2);color:var(--text-muted)}[data-theme=student] .student-empty svg{flex:none;width:32px;height:32px;color:var(--primary)}[data-theme=student] .student-revisions,[data-theme=student] .student-revision-banner{background:var(--tone-warning-bg);color:var(--tone-warning-fg);border:2px solid var(--tone-warning-fg);border-radius:var(--radius-xl);padding:var(--space-5) var(--space-6)}[data-theme=student] .student-revisions ul{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-4)}[data-theme=student] .student-revisions li{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}[data-theme=student] .student-revisions li p,[data-theme=student] .student-revision-banner p{margin:0}[data-theme=student] .student-revisions .muted{color:var(--tone-warning-fg)}[data-theme=student] .student-revisions h2,[data-theme=student] .student-revision-banner h2{margin:0 0 var(--space-3)}[data-theme=student] .student-revision-banner a{font-weight:var(--weight-bold);color:inherit}[data-theme=student] .student-assignment-status{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);border:1px solid currentColor;font-weight:var(--weight-semibold)}[data-theme=student] .student-assignment-status svg{flex:none;width:24px;height:24px}[data-theme=student] .student-assignment-status span{min-width:0;overflow-wrap:anywhere}[data-theme=student] .student-assignment-status--info{background:var(--tone-info-bg);color:var(--tone-info-fg)}[data-theme=student] .student-assignment-status--success{background:var(--tone-success-bg);color:var(--tone-success-fg)}[data-theme=student] .student-assignment-status--warning{background:var(--tone-warning-bg);color:var(--tone-warning-fg)}[data-theme=student] .student-submitted-banner{display:flex;align-items:flex-start;gap:var(--space-3);background:var(--tone-info-bg);color:var(--tone-info-fg);border:2px solid var(--tone-info-fg);border-radius:var(--radius-xl);padding:var(--space-5) var(--space-6)}[data-theme=student] .student-submitted-banner svg{flex:none;width:28px;height:28px}[data-theme=student] .student-submitted-banner>div{min-width:0;overflow-wrap:anywhere}[data-theme=student] .student-submitted-banner h2{margin:0 0 var(--space-2);font-weight:var(--weight-bold)}[data-theme=student] .student-submitted-banner p{margin:0 0 var(--space-2)}[data-theme=student] .student-submitted-banner a{font-weight:var(--weight-bold);color:inherit}[data-theme=student] .student-map-header{padding:var(--space-6);border-radius:var(--radius-xl);background:var(--accent-soft);border-bottom:6px solid var(--accent)}[data-theme=student] .student-map-header h1,[data-theme=student] .student-map-header .page-header-back{color:var(--accent-ink)}[data-theme=student] .student-unit{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm)}[data-theme=student] .student-unit>h2{margin-bottom:var(--space-1)}[data-theme=student] .student-lessons{list-style:none;padding:0;margin:var(--space-4) 0 0;display:flex;flex-direction:column;gap:var(--space-3)}[data-theme=student] .student-lessons li{display:flex;gap:var(--space-4);align-items:center;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);background:var(--surface-2);border:1px solid var(--border)}[data-theme=student] .student-lesson-text{min-width:0;overflow-wrap:anywhere}[data-theme=student] .student-lesson-text a{font-weight:var(--weight-semibold)}[data-theme=student] .student-status{display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;border-radius:var(--radius-full);border:2px solid var(--border-strong);color:var(--text-subtle);background:var(--surface)}[data-theme=student] .student-status svg{width:24px;height:24px}[data-theme=student] .student-status.done{background:var(--tone-success-bg);border-color:var(--tone-success-fg);color:var(--tone-success-fg)}[data-theme=student] .student-score{display:inline-block;margin-left:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);background:var(--tone-info-bg);color:var(--tone-info-fg);font-size:var(--text-sm);font-weight:var(--weight-semibold)}[data-theme=student] .student-coming-soon{display:inline-flex;align-items:center;gap:var(--space-2);margin:var(--space-3) 0 0;padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);background:var(--surface-sunken);color:var(--text-muted);font-weight:var(--weight-semibold)}[data-theme=student] .student-coming-soon svg{width:1.1em;height:1.1em}[data-theme=student] .student-lesson-header{padding:var(--space-6);border-radius:var(--radius-xl);background:var(--accent-soft, var(--primary-soft));border-bottom:6px solid var(--accent, var(--primary))}[data-theme=student] .student-lesson-header h1{color:var(--accent-ink, var(--text))}[data-theme=student] .student-lesson-header>.muted{margin-bottom:var(--space-2);font-weight:var(--weight-semibold);color:var(--accent-ink, var(--text-muted))}[data-theme=student] .student-voice-panel{flex-basis:100%}[data-theme=student] .student-lesson-intro{display:flex;flex-direction:column;gap:var(--space-4)}[data-theme=student] .student-lesson-intro h2{margin:0}[data-theme=student] .student-lesson-intro ul{margin:0;padding-left:var(--space-6)}[data-theme=student] .student-reading{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-6);font-size:var(--text-lg);line-height:var(--leading-normal)}[data-theme=student] .student-sources{display:flex;flex-direction:column;gap:var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-6);overflow-wrap:anywhere}[data-theme=student] .student-sources h2{display:flex;align-items:center;gap:var(--space-2);margin:0}[data-theme=student] .student-sources p{margin:0}[data-theme=student] .student-sources-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-4);font-size:var(--text-lg)}[data-theme=student] .student-sources-list a{font-weight:var(--weight-semibold)}[data-theme=student] .student-sources-list a svg{width:1em;height:1em;margin-left:var(--space-1);vertical-align:-.1em}[data-theme=student] .student-source-host{color:var(--text-muted);font-size:var(--text-sm)}[data-theme=student] .student-quiz{display:flex;flex-direction:column;gap:var(--space-4)}[data-theme=student] .student-quiz h2{margin:0}[data-theme=student] .student .student-question{margin:0;padding:var(--space-6);min-width:0;border:2px solid var(--border);border-radius:var(--radius-xl);background:var(--surface);display:flex;flex-direction:column;gap:var(--space-3)}[data-theme=student] .student .student-question legend{font-weight:var(--weight-bold);font-size:var(--text-lg);padding:0 var(--space-2)}[data-theme=student] .student .student-choice{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);border:2px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--surface-2);cursor:pointer}[data-theme=student] .student .student-choice:has(input:disabled){cursor:default}[data-theme=student] .student .student-choice:hover:not(:has(input:disabled)){border-color:var(--accent, var(--primary))}[data-theme=student] .student .student-quiz-locked{display:flex;align-items:center;gap:var(--space-2);margin:0;color:var(--text-muted);font-size:var(--text-base)}[data-theme=student] .student .student-quiz-locked svg{flex:none;width:1.2em;height:1.2em}[data-theme=student] .student .student-choice.is-selected{border-color:var(--accent, var(--primary));background:var(--accent-soft, var(--primary-soft));font-weight:var(--weight-semibold)}[data-theme=student] .student .student-choice.is-correct{border-color:var(--tone-success-fg);background:var(--tone-success-bg);color:var(--tone-success-fg)}[data-theme=student] .student .student-choice.is-wrong{border-color:var(--tone-danger-fg);background:var(--tone-danger-bg);color:var(--tone-danger-fg)}[data-theme=student] .student .student-choice input{flex:none;width:1.4rem;height:1.4rem;margin:0;accent-color:var(--accent, var(--primary))}[data-theme=student] .student .student-feedback{padding:var(--space-4);border-radius:var(--radius-lg)}[data-theme=student] .student .student-feedback strong{display:flex;align-items:center;gap:var(--space-2)}[data-theme=student] .student .student-feedback svg{flex:none;width:1.4em;height:1.4em}[data-theme=student] .student .student-correct{background:var(--tone-success-bg);color:var(--tone-success-fg)}[data-theme=student] .student .student-wrong{background:var(--tone-danger-bg);color:var(--tone-danger-fg)}[data-theme=student] .student-result-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);padding:var(--space-6);border-radius:var(--radius-xl);background:var(--accent-soft, var(--primary-soft))}[data-theme=student] .student-result-card p{margin:0}[data-theme=student] .student .student-result,[data-theme=student] .student .student-complete{font-size:var(--text-2xl);font-weight:var(--weight-bold)}[data-theme=student] .student-assignment{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);padding:var(--space-6);border-radius:var(--radius-xl);background:var(--surface);border:2px solid var(--accent-soft, var(--border))}[data-theme=student] .student-assignment>*{max-width:100%;margin-top:0;margin-bottom:0}[data-theme=student] .student-assignment h2{margin:0}[data-theme=student] .student textarea{width:100%;font-size:var(--text-base);border-radius:var(--radius-lg)}[data-theme=student] .student-finish{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8) var(--space-6);border-radius:var(--radius-xl);background:var(--tone-success-bg);text-align:center}[data-theme=student] .student-finish p{margin:0}[data-theme=student] .student-finish .muted{color:var(--tone-success-fg)}[data-theme=student] .student .student-complete{display:flex;align-items:center;gap:var(--space-2);color:var(--tone-success-fg)}[data-theme=student] .student .student-done-button{min-height:72px;font-size:var(--text-xl);box-shadow:var(--shadow-lg);background:var(--tone-success-fg);border-color:var(--tone-success-fg);color:var(--tone-success-bg)}[data-theme=student] .student .student-done-button:hover:not(:disabled){background:var(--tone-success-fg);border-color:var(--tone-success-fg);color:var(--tone-success-bg)}[data-theme=student] .student-finish svg{width:1.3em;height:1.3em}.notify-bell{position:relative;display:inline-block}.notify-bell-button{position:relative;border-radius:var(--radius-full);min-width:44px;min-height:44px}.notify-bell-button svg{width:24px;height:24px}.notify-badge{position:absolute;top:calc(var(--space-1) * -1);right:calc(var(--space-1) * -1);min-width:22px;padding:0 var(--space-1);border-radius:var(--radius-full);background:var(--danger);color:var(--danger-contrast);font-size:var(--text-xs);font-weight:var(--weight-bold);line-height:22px;text-align:center}.notify-panel{position:absolute;right:0;top:calc(100% + var(--space-2));z-index:30;width:min(24rem,calc(100vw - var(--space-8)));max-height:70vh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-3);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-4);font-size:var(--text-sm);line-height:var(--leading-snug);text-align:left;box-shadow:var(--shadow-lg)}.notify-panel h2{margin:0;font-size:var(--text-lg)}.notify-panel p{margin:0}.notify-panel .btn{align-self:flex-start}.notify-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-3)}.notify-item{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface-2);overflow-wrap:anywhere}.notify-item.notify-unread{background:var(--tone-warning-bg);border-color:var(--tone-warning-fg);color:var(--tone-warning-fg)}.notify-unread .notify-message{font-weight:var(--weight-bold)}.notify-item a{font-weight:var(--weight-semibold)}.notify-unread a,.notify-unread .muted{color:inherit}.notify-feedback{margin:0;padding-left:var(--space-3);border-left:3px solid var(--border-strong);font-style:italic}[data-theme=student] .student-lesson{min-width:0}@media (max-width: 640px){.notify-panel{left:0;right:auto;width:calc(100vw - var(--space-8))}}.notify-message{display:flex;align-items:flex-start;gap:var(--space-2)}.notify-icon{flex:none;width:1em;height:1em;margin-top:var(--space-1)}[data-theme=student] .student .student-up-next{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}[data-theme=student] .student .student-up-next-label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--muted);text-transform:uppercase}[data-theme=student] .student .student-up-next-title{margin:0;max-width:100%;font-size:var(--text-base);color:var(--text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}[data-theme=student] .student .student-up-next-button{align-self:flex-start;display:inline-flex;align-items:center;gap:var(--space-2);min-height:44px;border-radius:var(--radius-full);padding:var(--space-2) var(--space-5);white-space:nowrap}[data-theme=student] .student-reading .lesson-block{font-size:var(--text-lg);line-height:var(--leading-normal)}[data-theme=student] .student-reading .lesson-block-reveal{min-height:52px;padding:var(--space-3) var(--space-5);font-size:var(--text-base)}[data-theme=student] .student-reading .lesson-block-label{font-size:var(--text-sm)}.admin-page{display:flex;flex-direction:column;gap:var(--space-5);min-width:0}.admin-page>.page-header,.admin-page>.tabs,.admin-page>.filter-tabs,.admin-page .table-wrap{margin-top:0;margin-bottom:0}.admin-page>.tabs{margin:0}.admin-page>.page-header-actions{align-items:center}.admin-section{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.admin-section>h2,.admin-section-head h2,.admin-section-head h3{margin:0;font-size:var(--text-lg)}.admin-section-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3)}.admin-page .error-message{margin:0}.cell-subject{min-width:120px;max-width:190px;overflow-wrap:break-word}.admin-page .table th,.admin-page .table td{padding-left:var(--space-3);padding-right:var(--space-3)}.admin-page .table .progress{min-width:80px}.admin-page .table td:nth-child(n+3):nth-child(-n+4){max-width:110px;overflow-wrap:anywhere}.cache-ttl{margin:0;color:var(--text-muted)}.live-indicator{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);color:var(--text-muted);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap}.live-dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--text-subtle)}.live-live{color:var(--tone-success-fg);background:var(--tone-success-bg);border-color:transparent}.live-live .live-dot{background:var(--tone-success-fg)}.live-connecting .live-dot,.live-reconnecting .live-dot{background:var(--tone-warning-fg)}.job-summary{display:flex;flex-direction:column;gap:var(--space-3)}.job-summary-status{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.job-summary-status p{margin:0;font-size:var(--text-sm)}.stage-list{display:flex;flex-direction:column;gap:var(--space-3);list-style:none;margin:0;padding:0}.stage{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.stage-running{border-color:var(--tone-warning-fg);background:var(--tone-warning-bg)}.stage-failed{border-color:var(--tone-danger-fg)}.stage-icon{flex:none;display:inline-flex;margin-top:var(--space-1);color:var(--text-subtle)}.stage-icon svg{width:20px;height:20px}.stage-succeeded .stage-icon{color:var(--tone-success-fg)}.stage-running .stage-icon{color:var(--tone-warning-fg)}.stage-running .stage-icon svg{animation:spin 1.2s linear infinite}.stage-failed .stage-icon{color:var(--tone-danger-fg)}.stage-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:var(--space-2)}.stage-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3)}.stage-attempts{font-size:var(--text-sm);color:var(--text-muted)}.stage-meta{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);font-size:var(--text-sm)}.stage-failure{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-3)}.stage-error{flex:1 1 260px;margin:0;padding:var(--space-3) var(--space-4);background:var(--tone-danger-bg);color:var(--tone-danger-fg);border-radius:var(--radius-md);font-size:var(--text-sm);overflow-wrap:anywhere}.stage-output .btn-link{padding-left:0}.code-block{margin:var(--space-2) 0 0;padding:var(--space-3) var(--space-4);max-height:240px;overflow:auto;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-family:var(--font-mono);font-size:var(--text-xs);white-space:pre-wrap;overflow-wrap:anywhere}.job-log{max-height:320px;overflow-y:auto;padding:var(--space-4);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-snug);overflow-wrap:anywhere}.job-log p{margin:0;color:var(--text-muted)}.provider-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4);list-style:none;margin:0;padding:0}.provider{display:flex;flex-direction:column;gap:var(--space-2);min-width:0;padding:var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.provider-head{display:flex;flex-direction:column;gap:var(--space-1)}.provider-head .muted{font-size:var(--text-sm)}.provider-name{font-size:var(--text-base);overflow-wrap:anywhere}.provider-detail{color:var(--text-muted);font-size:var(--text-sm);overflow-wrap:anywhere}.provider-key{font-family:var(--font-mono);font-size:var(--text-sm)}.provider-actions{margin-top:auto;padding-top:var(--space-3)}.provider-form-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.provider-form-card h3{margin:0}.check-row{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm)}@media (min-width: 720px){.provider-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.admin-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.admin-toolbar form{flex:1 1 100%;max-width:28rem}.search-input{position:relative;display:block;width:100%}.search-input svg{position:absolute;left:var(--space-3);top:50%;width:1.1em;height:1.1em;transform:translateY(-50%);color:var(--text-subtle);pointer-events:none}.search-input input{width:100%;min-height:40px;padding:var(--space-2) var(--space-3);font-family:inherit;font-size:var(--text-base);font-weight:var(--weight-regular);color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-control);transition:border-color .15s,box-shadow .15s}.search-input input{padding-left:calc(var(--space-3) + 1.1em + var(--space-2))}.search-input input::placeholder{color:var(--text-subtle)}.search-input input:hover{border-color:var(--text-subtle)}.search-input input:focus-visible{outline:var(--focus-ring);outline-offset:0;border-color:var(--focus-color)}.admin-page .users-table td:nth-child(2){min-width:13rem;overflow-wrap:anywhere}.admin-page .users-table td:nth-child(1){min-width:7rem}.admin-page .users-table td:nth-child(3){min-width:6.5rem}.admin-page .users-table td:nth-child(7){min-width:9rem}.admin-page .users-table td:nth-child(4):nth-child(-n+4){overflow-wrap:normal;white-space:nowrap}.admin-page .page-header h1{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.admin-page .page-header-actions{gap:var(--space-2) var(--space-3)}.admin-page .form-status{margin:0}.detail-list{display:grid;grid-template-columns:minmax(8rem,12rem) minmax(0,1fr);margin:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.detail-list dt,.detail-list dd{align-self:baseline;margin:0;padding:var(--space-3) var(--space-5);border-top:1px solid var(--border)}.detail-list dt:first-of-type,.detail-list dt:first-of-type+dd{border-top:0}.detail-list dt{color:var(--text-muted);font-size:var(--text-sm)}.detail-list dd{color:var(--text);overflow-wrap:anywhere}.admin-muted-panel{margin:0;padding:var(--space-4) var(--space-5);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-muted)}.switch-row{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:var(--space-3);row-gap:var(--space-1);align-items:center}.switch-row label{display:contents;font-weight:var(--weight-medium);cursor:pointer}.switch-row .switch-text{grid-column:2;grid-row:1}.switch-row .muted{grid-column:2;grid-row:2;margin:0;font-size:var(--text-sm)}.switch{-moz-appearance:none;appearance:none;-webkit-appearance:none;grid-column:1;grid-row:1 / span 2;align-self:start;position:relative;flex:none;width:2.75rem;height:1.5rem;margin:0;border-radius:var(--radius-full);background:var(--border-strong);border:0;cursor:pointer;transition:background-color .15s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:calc(1.5rem - 6px);height:calc(1.5rem - 6px);border-radius:var(--radius-full);background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .15s}.switch:checked{background:var(--primary)}.switch:checked:after{transform:translate(1.25rem)}.switch:focus-visible{outline:var(--focus-ring);outline-offset:2px}.switch:disabled{opacity:.6;cursor:progress}.invite-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3)}.invite-form .field{flex:1 1 16rem;min-width:0}.invite-form .btn{flex:none}.invite-result{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:var(--tone-success-bg);border-radius:var(--radius-lg)}.invite-result p{margin:0;color:var(--tone-success-fg);font-weight:var(--weight-medium)}.invite-link-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3)}.invite-link-row .field{flex:1 1 16rem;min-width:0}.invites-card{display:flex;flex-direction:column;gap:var(--space-4)}.invites-card>.admin-section-head{margin-top:var(--space-2)}.invites-card>.card-header{margin-bottom:0}.invites-card .table-wrap{margin:0}@media (max-width: 480px){.detail-list{grid-template-columns:minmax(0,1fr)}.detail-list dt{padding-bottom:0;border-top:1px solid var(--border)}.detail-list dd{padding-top:var(--space-1);border-top:0}.detail-list dt:first-of-type{border-top:0}.invite-form .btn,.invite-link-row .btn{width:100%}}.attendance-controls{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3)}.attendance-student{font-size:var(--text-lg);font-weight:var(--weight-semibold);margin:0}.attendance-custom{display:flex;flex-wrap:wrap;gap:var(--space-3)}.attendance-range{margin:0}.attendance-totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3)}.attendance-total{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.attendance-total-label{font-size:var(--text-sm);color:var(--text-muted)}.attendance-total-value{font-size:var(--text-2xl);font-weight:var(--weight-semibold);line-height:var(--leading-tight);font-variant-numeric:tabular-nums}.attendance-calendar{display:flex;flex-direction:column;gap:var(--space-3)}.attendance-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.attendance-calendar-title{margin:0;font-size:var(--text-lg)}.attendance-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--space-1)}.attendance-weekday{text-align:center;font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-muted);padding-bottom:var(--space-1)}.attendance-cell{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);min-width:0;min-height:64px;padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;text-align:left}.attendance-cell-blank{border-color:transparent;background:transparent}.attendance-cell-out{background:var(--surface-sunken);color:var(--text-subtle);opacity:.6}.attendance-cell-num{font-size:var(--text-sm);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums}.attendance-cell-time{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}.attendance-day{cursor:pointer}.attendance-day:hover{border-color:var(--text-subtle)}.attendance-day:focus-visible{outline:var(--focus-ring);outline-offset:1px}.attendance-day-present{background:var(--tone-success-bg);border-color:var(--tone-success-fg)}.attendance-day-present .attendance-cell-num,.attendance-day-present .attendance-mark,.attendance-day-present .attendance-cell-time{color:var(--tone-success-fg)}.attendance-day-absent{background:var(--tone-danger-bg);border-color:var(--tone-danger-fg)}.attendance-day-absent .attendance-cell-num,.attendance-day-absent .attendance-mark{color:var(--tone-danger-fg)}.attendance-day-none{color:var(--text-muted)}.attendance-mark{position:absolute;top:var(--space-1);right:var(--space-1);width:14px;height:14px}.attendance-manual{position:absolute;right:var(--space-1);bottom:var(--space-1);width:12px;height:12px;color:var(--text-muted)}.attendance-legend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3);margin:0}.attendance-legend svg{width:14px;height:14px;vertical-align:-2px}.attendance-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.attendance-row{display:grid;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md)}.attendance-row-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.attendance-row-times{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6);margin:0}.attendance-row-times dt{font-size:var(--text-xs);color:var(--text-muted)}.attendance-row-times dd{margin:0;font-variant-numeric:tabular-nums}.attendance-row-lessons,.attendance-row-note{margin:0;overflow-wrap:anywhere}.attendance-row-lessons{color:var(--text-muted);font-size:var(--text-sm)}.attendance-row-note{font-style:italic}.attendance-row-actions{display:flex}.attendance-app-activity{margin:0;color:var(--text-muted)}.attendance-status{display:flex;flex-wrap:wrap;gap:var(--space-3);margin:0;padding:0;border:0}.attendance-status legend{padding:0;margin-bottom:var(--space-2);font-weight:var(--weight-medium)}.attendance-status-option{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);cursor:pointer}.attendance-status-option.is-selected{border-color:var(--primary);background:var(--primary-soft)}.attendance-status-option input{accent-color:var(--primary)}@media (max-width: 480px){.attendance-cell{min-height:52px;padding:var(--space-1)}.attendance-cell-time{font-size:var(--text-xs)}.attendance-mark{width:12px;height:12px}.attendance-manual{width:10px;height:10px}}.public-shell{display:flex;flex-direction:column;min-height:100vh;background:var(--bg);color:var(--text)}.public-header{position:sticky;top:0;z-index:30;background:var(--surface);border-bottom:1px solid var(--border)}.public-header-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-4);max-width:var(--content-max);margin:0 auto;padding:var(--space-2) var(--space-4)}.public-brand{text-decoration:none}.public-nav{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.public-main{flex:1 0 auto;width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-6) var(--space-4) var(--space-12);outline:none}.public-footer{border-top:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:var(--text-sm)}.public-footer-inner{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-6);max-width:var(--content-max);margin:0 auto;padding:var(--space-8) var(--space-4) var(--space-4)}.public-footer-brand{min-width:0}.public-footer-name{margin:0;font-weight:var(--weight-bold);color:var(--text)}.public-footer-tagline{margin:var(--space-1) 0 0}.public-footer-title{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text)}.public-footer a{color:var(--text-muted);overflow-wrap:anywhere}.public-footer a:hover{color:var(--primary)}.public-footer-list,.public-footer .legal-links ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-1)}.public-footer-copy{max-width:var(--content-max);margin:0 auto;padding:var(--space-2) var(--space-4) var(--space-6);overflow-wrap:anywhere}.legal-links ul{margin:0;padding:0;list-style:none}.legal-links-compact ul{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4)}.legal-links-compact a{color:var(--text-muted);font-size:var(--text-sm)}.legal-links-compact a:hover{color:var(--primary)}.legal-page{max-width:68ch;margin:0 auto}.legal-intro{margin-bottom:var(--space-6)}.legal-meta{margin:0 0 var(--space-4);color:var(--text-muted);font-size:var(--text-sm)}.legal-page .callout{margin-bottom:var(--space-6)}.legal-placeholder{padding:0 var(--space-1);background:var(--tone-warning-bg);color:var(--tone-warning-fg);border-radius:var(--radius-sm)}.legal-toc{margin:0 0 var(--space-8);padding:var(--space-4) var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.legal-toc-title{margin:0 0 var(--space-2);font-size:var(--text-base)}.legal-toc ol{margin:0;padding-left:var(--space-6);columns:2 220px}.legal-toc li{margin-bottom:var(--space-1)}.legal-body section{scroll-margin-top:var(--space-16)}.legal-contact{margin-top:var(--space-8);padding-top:var(--space-4);border-top:1px solid var(--border);color:var(--text-muted);overflow-wrap:anywhere}.landing-hero{display:grid;gap:var(--space-8);align-items:center;padding:var(--space-8) 0 var(--space-12)}.landing-hero-text{min-width:0}.landing-hero h1{margin:0 0 var(--space-4);font-size:var(--text-3xl);line-height:var(--leading-tight);letter-spacing:-.02em}.landing-lead{margin:0 0 var(--space-6);max-width:52ch;font-size:var(--text-lg);color:var(--text-muted);line-height:var(--leading-normal)}.landing-cta{display:flex;flex-wrap:wrap;gap:var(--space-3)}.landing-cta-center{justify-content:center}.landing-student{margin:var(--space-4) 0 0}.landing-section{padding:var(--space-8) 0}.landing-section>h2,.landing-final h2{margin:0 0 var(--space-6);font-size:var(--text-2xl)}.landing-art{position:relative;display:flex;justify-content:center;padding:var(--space-8) var(--space-4);background:linear-gradient(160deg,var(--primary-soft),var(--surface-sunken));border-radius:var(--radius-xl)}.landing-art-card{display:flex;flex-direction:column;gap:var(--space-3);width:100%;max-width:320px;padding:var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg)}.landing-art-title{display:block;width:60%;height:14px;background:var(--text);border-radius:var(--radius-full)}.landing-art-line{display:block;height:8px;background:var(--border-strong);border-radius:var(--radius-full)}.landing-art-line-short{width:70%}.landing-art-progress{display:block;height:10px;background:var(--surface-sunken);border-radius:var(--radius-full);overflow:hidden}.landing-art-progress-fill{display:block;width:65%;height:100%;background:var(--primary);border-radius:var(--radius-full)}.landing-art-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.landing-art-tile{display:flex;align-items:center;justify-content:center;height:44px;background:var(--surface-2);border:2px solid var(--border);border-radius:var(--radius-md)}.landing-art-tile-right{background:var(--tone-success-bg);border-color:var(--tone-success-fg);color:var(--tone-success-fg)}.landing-art-tile svg{width:20px;height:20px}.landing-art-badge{position:absolute;right:var(--space-4);bottom:var(--space-4);display:inline-flex;padding:var(--space-2);background:var(--primary);color:var(--primary-contrast);border-radius:var(--radius-full);box-shadow:var(--shadow-md)}.landing-art-badge svg{width:28px;height:28px}.landing-art-spark{position:absolute;left:var(--space-4);top:var(--space-4);display:inline-flex;color:var(--primary)}.landing-art-spark svg{width:28px;height:28px}.landing-steps,.landing-features{display:grid;gap:var(--space-4);margin:0;padding:0;list-style:none}.landing-step,.landing-feature{padding:var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.landing-step h3,.landing-feature h3{margin:var(--space-3) 0 var(--space-2);font-size:var(--text-lg)}.landing-step p,.landing-feature p{margin:0;color:var(--text-muted)}.landing-step-num{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;background:var(--primary);color:var(--primary-contrast);border-radius:var(--radius-full);font-weight:var(--weight-bold)}.landing-feature-icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--primary-soft);color:var(--primary);border-radius:var(--radius-md)}.landing-feature-icon svg{width:22px;height:22px}.landing-family{padding:var(--space-8) var(--space-5);background:var(--primary-soft);border-radius:var(--radius-xl)}.landing-checks{display:grid;gap:var(--space-3);margin:0 0 var(--space-4);padding:0;list-style:none}.landing-checks li{display:flex;gap:var(--space-3);align-items:flex-start}.landing-checks svg{flex:none;width:20px;height:20px;margin-top:var(--space-1);color:var(--primary)}.landing-faq{display:flex;flex-direction:column;gap:var(--space-3);max-width:68ch}.landing-faq details{padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.landing-faq summary{cursor:pointer;font-weight:var(--weight-semibold)}.landing-faq details p{margin:var(--space-2) 0 0;color:var(--text-muted)}.landing-final{margin-top:var(--space-8);padding:var(--space-10) var(--space-5);text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl)}.landing-final p{margin:0 0 var(--space-6);color:var(--text-muted)}@media (min-width: 720px){.public-header-inner,.public-main,.public-footer-inner,.public-footer-copy{padding-left:var(--space-8);padding-right:var(--space-8)}.landing-hero{grid-template-columns:1.1fr .9fr;padding-top:var(--space-12)}.landing-hero h1{font-size:var(--text-3xl)}.landing-steps,.landing-features{grid-template-columns:repeat(3,1fr)}.landing-family{padding:var(--space-10)}}.landing-notice{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin:0 0 var(--space-6);padding:var(--space-3) var(--space-4);border:1px solid var(--tone-success-fg);border-radius:var(--radius-md);background:var(--tone-success-bg);color:var(--tone-success-fg);font-size:var(--text-sm)}.landing-notice p{margin:0}.print-state{max-width:800px;margin:var(--space-8) auto;padding:0 var(--space-4)}.print-page{max-width:800px;margin:var(--space-6) auto var(--space-12);padding:var(--space-10) var(--space-12);background:var(--print-paper);color:var(--print-ink);border:1px solid var(--print-rule);border-radius:var(--radius-md);font-family:var(--font-sans);line-height:var(--leading-normal)}.print-page h1,.print-page h2,.print-page h3,.print-page h4{color:var(--print-ink);line-height:var(--leading-tight)}.print-page a{color:var(--print-ink)}.print-page .markdown{max-width:none}.print-page .markdown blockquote{background:none;color:var(--print-ink);border-left-color:var(--print-ink)}.print-page .markdown code,.print-page .markdown pre,.print-page .markdown th{background:none;color:var(--print-ink);border-color:var(--print-rule)}.print-page .markdown td,.print-page .markdown th{border-color:var(--print-rule)}.print-page .lesson-figure{background:none;border-color:var(--print-rule)}.print-page .lesson-figure figcaption,.print-page .figure-credit{color:var(--print-muted)}.print-page .lesson-figure img{max-width:100%;max-height:90mm;width:auto;object-fit:contain}.print-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--print-rule)}.print-toolbar .btn-secondary{background:var(--print-paper);color:var(--print-ink);border-color:var(--print-rule)}.print-toolbar .btn-primary{background:var(--print-ink);color:var(--print-paper);border-color:var(--print-ink)}.print-header{margin-bottom:var(--space-6)}.print-eyebrow{margin:0 0 var(--space-2);font-size:var(--text-sm);color:var(--print-muted);text-transform:uppercase;letter-spacing:.04em}.print-header h1{margin:0 0 var(--space-5);font-size:var(--text-3xl)}.print-name-date{display:flex;gap:var(--space-8)}.print-write-in{display:flex;flex:1;align-items:flex-end;gap:var(--space-2);font-weight:var(--weight-semibold)}.print-write-in:last-child{flex:0 0 35%}.print-write-line{flex:1;height:var(--space-6);border-bottom:1px solid var(--print-ink)}.print-section{margin-top:var(--space-8)}.print-section h2{margin:0 0 var(--space-3);padding-bottom:var(--space-1);font-size:var(--text-xl);border-bottom:1px solid var(--print-ink)}.print-section p{margin:0 0 var(--space-3)}.print-reading{overflow-wrap:anywhere}.print-objectives{margin:0;padding-left:var(--space-6)}.print-hint,.print-muted{color:var(--print-muted)}.print-hint{font-size:var(--text-sm);font-style:italic}.print-quiz{margin:0;padding-left:var(--space-6)}.print-question{margin-bottom:var(--space-5);padding-left:var(--space-1)}.print-prompt{margin:0 0 var(--space-2);font-weight:var(--weight-semibold)}.print-choices{margin:0;padding:0;list-style:none}.print-choice{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.print-choice-letter,.print-choice-correct{font-weight:var(--weight-semibold)}.print-correct-mark{margin-left:var(--space-2);font-weight:var(--weight-semibold)}.print-explanation{margin:var(--space-1) 0 0;color:var(--print-muted)}.print-bubble{flex:none;width:var(--space-4);height:var(--space-4);border:1.5px solid var(--print-ink);border-radius:var(--radius-full)}.print-block{margin-bottom:var(--space-5);break-inside:avoid}.print-block-label{margin:0 0 var(--space-2);font-size:var(--text-base);font-weight:var(--weight-bold)}.print-block-example{padding:var(--space-3) var(--space-4);border:1px solid var(--print-ink)}.print-block-problem{font-weight:var(--weight-semibold)}.print-block-steps{margin:0 0 var(--space-3);padding-left:var(--space-6)}.print-block-answer{margin:0;font-weight:var(--weight-bold)}.print-block-practice .print-lines,.print-block-narration .print-lines{margin-top:var(--space-1)}.print-block-narration .print-block-problem{font-style:italic}.print-block-activity{padding:var(--space-3) var(--space-4);border:1px dashed var(--print-ink)}.print-block-materials h4{margin:var(--space-3) 0 var(--space-1);font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.04em}.print-block-materials ul,.print-practice-answers{margin:0;padding-left:var(--space-6)}.print-practice-answers .print-block-label{display:inline}.print-lines{margin-top:var(--space-2)}.print-line{height:var(--space-10);border-bottom:1px solid var(--print-rule)}.print-sources{margin:0;padding-left:var(--space-6);font-size:var(--text-sm)}@media print{html,body{background:var(--print-paper);color:var(--print-ink)}.print-toolbar{display:none}.print-page{max-width:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none}.print-page a{color:var(--print-ink);text-decoration:none}.print-page h1,.print-page h2,.print-page h3{break-after:avoid}.print-question,.print-page .lesson-figure,.print-name-date,.print-line{break-inside:avoid}.print-page img{max-width:100%;max-height:90mm}}.print-report-range,.print-report-generated{margin:0 0 var(--space-1)}.print-report-generated{font-size:var(--text-sm);color:var(--print-muted)}.print-report-totals{display:flex;flex-wrap:wrap;gap:var(--space-3);margin:0 0 var(--space-6)}.print-report-total{flex:1 1 120px;min-width:0;padding:var(--space-2) var(--space-3);border:1px solid var(--print-ink)}.print-report-total dt{font-size:var(--text-sm);color:var(--print-muted)}.print-report-total dd{margin:0;font-size:var(--text-xl);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums}.print-report-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.print-report-table th,.print-report-table td{padding:var(--space-1) var(--space-2);text-align:left;vertical-align:top;border-bottom:1px solid var(--print-rule);overflow-wrap:anywhere}.print-report-table th{border-bottom:1px solid var(--print-ink);font-weight:var(--weight-semibold)}.print-report-empty{margin:0 0 var(--space-4);color:var(--print-muted)}.print-report-footnote{margin:var(--space-4) 0 0;font-size:var(--text-sm);font-style:italic;color:var(--print-muted)}.print-report-signature{display:flex;gap:var(--space-8);margin-top:var(--space-12)}.print-report-signature .print-write-in:first-child{flex:2}.print-report-signature .print-write-in:last-child{flex:1}@media (max-width: 600px){.print-report{padding:var(--space-5) var(--space-4)}.print-report-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.print-report-table,.print-report-table tbody,.print-report-table tr,.print-report-table td{display:block}.print-report-table tr{padding:var(--space-2) 0;border-bottom:1px solid var(--print-ink)}.print-report-table td{display:flex;gap:var(--space-2);border:0}.print-report-table td:before{content:attr(data-label);flex:0 0 90px;font-weight:var(--weight-semibold)}.print-report-signature{flex-direction:column;gap:var(--space-4)}}@media print{.print-report{font-size:var(--text-sm)}.print-report-table thead{display:table-header-group}.print-report-table,.print-report-table tbody,.print-report-table tr,.print-report-table td{display:revert}.print-report-table tr{break-inside:avoid;border:0;padding:0}.print-report-table td{border-bottom:1px solid var(--print-rule)}.print-report-table td:before{content:none}.print-report-total,.print-report-signature{break-inside:avoid}.print-report-totals{flex-wrap:nowrap}}
