.gloss{cursor:help;text-decoration-line:underline;text-decoration-style:dotted;text-decoration-color:var(--border-strong);text-decoration-thickness:1.5px;text-underline-offset:.24em;text-decoration-skip-ink:none;border-radius:2px;transition:text-decoration-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.gloss:hover,.gloss[aria-describedby]{text-decoration-color:var(--accent);background:var(--accent-tint-1)}.gloss:focus-visible{outline-offset:1px}.gloss-card{position:fixed;z-index:var(--z-toast);left:0;top:0;width:max-content;max-width:min(320px,calc(100vw - 16px));padding:var(--space-3) var(--space-4);background:var(--surface-raised);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-family:var(--font-sans);font-size:var(--fs-sm);line-height:var(--lh-snug);text-align:left;animation:gloss-in var(--dur-fast) var(--ease-out)}.gloss-card p{margin:0;color:inherit;line-height:inherit}.gloss-card p+p{margin-top:var(--space-1)}.gloss-card .gloss-head{display:flex;gap:var(--space-2);align-items:baseline;justify-content:space-between;font-size:var(--fs-xs);color:var(--text-muted)}.gloss-kind,.gloss-label{font-size:var(--fs-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)}.gloss-tr{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text)}.gloss-tr-block{font-weight:var(--fw-regular);max-height:40vh;overflow:auto}.gloss-card .gloss-note{color:var(--text-muted)}.gloss-cs [lang=cs]{color:var(--accent-2);font-weight:var(--fw-medium)}.gloss-chip{position:fixed;z-index:var(--z-toast);left:0;top:0;min-height:32px;min-width:40px;padding:0 var(--space-3);border-radius:var(--radius-pill);background:var(--accent-fill);color:var(--accent-contrast);font-family:var(--font-sans);font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:.06em;box-shadow:var(--shadow-md);animation:gloss-in var(--dur-fast) var(--ease-out)}.gloss-chip:hover{background:var(--accent-fill-hover)}@media(pointer:coarse){.gloss-chip{min-height:var(--tap);min-width:var(--tap)}}@keyframes gloss-in{0%{opacity:0;transform:translateY(-2px)}}@media(prefers-reduced-motion:reduce){.gloss,.gloss-card,.gloss-chip{animation:none;transition:none}}.hints-menu{position:relative;display:inline-flex}.hints-menu>.icon-button{min-height:var(--tap)}.hints-menu>.hints-on{color:var(--text)}.hints-panel{position:absolute;z-index:var(--z-toast);right:0;top:calc(100% + var(--space-2));width:min(300px,calc(100vw - 2 * var(--space-4)));padding:var(--space-3);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);animation:gloss-in var(--dur-fast) var(--ease-out)}.hints-panel p{margin:0 var(--space-1)}.hints-title{font-weight:var(--fw-semibold);color:var(--text)}.hints-panel .hints-help{margin-top:var(--space-1);margin-bottom:var(--space-2);font-size:var(--fs-sm);line-height:var(--lh-snug);color:var(--text-muted)}.hints-chip-sample{display:inline-block;padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--accent-fill);color:var(--accent-contrast);font-size:var(--fs-xs);font-weight:var(--fw-bold)}.hints-option{display:flex;gap:var(--space-3);align-items:flex-start;min-height:var(--tap);padding:var(--space-2);border-radius:var(--radius-sm);cursor:pointer}.hints-option:hover{background:var(--hover)}.hints-option input{margin:3px 0 0;accent-color:var(--accent-fill);width:16px;height:16px;flex:none}.hints-option>span{display:flex;flex-direction:column}.hints-label{color:var(--text);font-weight:var(--fw-medium)}.hints-desc{font-size:var(--fs-sm);color:var(--text-muted);line-height:var(--lh-snug)}@media(max-width:640px){.hints-panel{position:fixed;left:var(--space-4);right:var(--space-4);top:calc(var(--header-h) - var(--space-2));width:auto}}@media(prefers-reduced-motion:reduce){.hints-panel{animation:none}}@media print{.gloss{text-decoration:none;background:none}#gloss-layer,.hints-menu{display:none}}.gloss-chip:focus-visible,.gloss-card:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.palette-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-toast);display:flex;align-items:flex-start;justify-content:center;padding:15vh var(--space-4) 0;background:color-mix(in srgb,var(--text) 35%,transparent)}.palette{width:min(480px,100%);background:var(--surface-raised);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-family:var(--font-sans);font-size:var(--fs-sm);overflow:hidden}.palette-input{width:100%;min-height:var(--tap, 44px);padding:0 var(--space-4);border:0;border-bottom:1px solid var(--border);background:transparent;color:inherit;font:inherit}.palette-input:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.palette-list{list-style:none;margin:0;padding:var(--space-1)}.palette-item,.palette-empty{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm, 6px)}.palette-item{cursor:pointer}.palette-item.active{background:var(--surface-sunken)}.palette-current,.palette-empty{color:var(--text-muted)}@font-face{font-family:Fraunces;font-style:normal;font-weight:400 700;font-display:swap;src:url(../fonts/fraunces-latin.woff2) format("woff2");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}@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-weight:400 800;font-display:swap;src:url(../fonts/atkinson-next-latin.woff2) format("woff2");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{--p-paper-0: #fffdf8;--p-paper-50: #f6f3ec;--p-paper-100: #efebe2;--p-paper-200: #e8e2d5;--p-paper-300: #ddd5c4;--p-paper-500: #8b8476;--p-ink-950: #0e100d;--p-ink-900: #131512;--p-ink-850: #181b16;--p-ink-800: #1b1e19;--p-ink-700: #252922;--p-ink-650: #2b2f28;--p-ink-600: #3a3f37;--p-ink-500: #6c7166;--p-ink-400: #979a8d;--p-ink-300: #b4b6a9;--p-ink-100: #ece8dc;--p-graphite-700: #4f5449;--p-graphite-600: #62675b;--p-ochre-800: #6f4200;--p-ochre-700: #8a5200;--p-ochre-600: #b06c0a;--p-ochre-400: #e5a93a;--p-ochre-300: #edb955;--p-ochre-200: #f0c46a;--p-ochre-100: #f6d38f;--p-ochre-ink: #1a1608;--p-ochre-ink-soft: #3d3420;--p-moss-700: #2e6a4a;--p-moss-600: #2e7d55;--p-moss-200: #9fc7a5;--p-clay-700: #b0382a;--p-clay-650: #a8432f;--p-clay-600: #c0492f;--p-clay-200: #eda08f;--p-clay-150: #ee9a8b;--p-iris-700: #5b4fa8;--p-iris-200: #b9b0ef;--p-cobalt-700: #245f99;--p-cobalt-650: #1f5fbf;--p-teal-700: #1f6a8a;--p-cobalt-200: #93bff0;--p-cobalt-150: #8fb8ff;--p-teal-200: #86c6e3;--rw-sign-red: #d32f2f;--rw-sign-yellow: #f2c230;--rw-sign-blue: #1f6fd1;--rw-sign-green: #2e8b57;--rw-sign-white: #ffffff;--rw-sign-ink: #222222;--rw-wire-blue: #87b8eb;--rw-wire-green-yellow: #c8ce59;--rw-wire-brown: #8c5639;--rw-wire-black: #252525;--rw-wire-grey: #999999;--rw-wire-red: #e16565;--rw-wire-dc-blue: #286bcb;--print-ink: #111111;--print-paper: #ffffff;--print-rule: #aaaaaa;--page-white: #ffffff;--font-serif: "Fraunces", "Iowan Old Style", Charter, "Sitka Text", Cambria, Georgia, serif;--font-display: var(--font-serif);--font-sans: "Atkinson Hyperlegible Next", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-xs: .75rem;--fs-sm: .875rem;--fs-md: 1rem;--fs-lg: 1.125rem;--fs-xl: 1.25rem;--fs-2xl: 1.5rem;--fs-3xl: 1.875rem;--fs-4xl: 2.25rem;--fs-5xl: 3rem;--fs-6xl: 3.75rem;--fs-display: clamp(2.75rem, 5.6vw, 5rem);--fs-h1: clamp(2.25rem, 4.4vw, 3.75rem);--fs-h2: clamp(1.75rem, 2.8vw, 2.5rem);--lh-tight: 1.08;--lh-snug: 1.3;--lh-base: 1.6;--lh-loose: 1.75;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--tracking-caps: .08em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--radius-pill: 999px;--container: 1360px;--page-narrow: 960px;--gutter: clamp(16px, 4.5vw, 56px);--header-h: 72px;--tap: 44px;--dur-fast: .12s;--dur-base: .2s;--dur-slow: .32s;--ease-out: cubic-bezier(.2, .7, .2, 1);--z-sticky: 2;--z-header: 20;--z-toast: 50;--z-skip: 100}:root,:root[data-theme=light]{color-scheme:light;--surface: var(--p-paper-50);--surface-raised: var(--p-paper-0);--surface-sunken: var(--p-paper-100);--surface-control: var(--p-paper-200);--text: var(--p-ink-800);--text-muted: var(--p-graphite-700);--text-faint: var(--p-graphite-600);--accent: var(--p-ochre-700);--accent-strong: var(--p-ochre-800);--accent-fill: var(--p-ochre-400);--accent-fill-hover: var(--p-ochre-300);--accent-contrast: var(--p-ochre-ink);--accent-contrast-muted: var(--p-ochre-ink-soft);--accent-2: var(--p-moss-700);--danger: var(--p-clay-700);--success: var(--p-moss-700);--warn: var(--p-ochre-700);--info: var(--p-cobalt-700);--border: var(--p-paper-300);--border-strong: var(--p-paper-500);--focus: var(--p-cobalt-650);--overlay: color-mix(in srgb, var(--p-ink-800) 45%, transparent);--hover: color-mix(in srgb, var(--p-ink-800) 5%, transparent);--course-calc: var(--p-ochre-700);--course-lal: var(--p-moss-700);--course-dmg: var(--p-clay-650);--course-prg: var(--p-iris-700);--course-safety: var(--p-teal-700);--plot-bg: var(--p-paper-0);--plot-grid: var(--p-paper-200);--plot-axis: var(--p-paper-500);--plot-ink: var(--p-ink-800);--plot-a: var(--p-ochre-600);--plot-b: var(--p-moss-600);--plot-c: var(--p-clay-600);--plot-d: var(--p-cobalt-700);--shadow-sm: 0 1px 2px color-mix(in srgb, var(--p-ink-800) 8%, transparent);--shadow-md: 0 1px 2px color-mix(in srgb, var(--p-ink-800) 6%, transparent), 0 8px 24px color-mix(in srgb, var(--p-ink-800) 8%, transparent);--shadow-lg: 0 2px 6px color-mix(in srgb, var(--p-ink-800) 8%, transparent), 0 24px 64px color-mix(in srgb, var(--p-ink-800) 18%, transparent);--glow: 0 0 0 4px color-mix(in srgb, var(--p-ochre-400) 30%, transparent)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--surface: var(--p-ink-900);--surface-raised: var(--p-ink-800);--surface-sunken: var(--p-ink-950);--surface-control: var(--p-ink-700);--text: var(--p-ink-100);--text-muted: var(--p-ink-300);--text-faint: var(--p-ink-400);--accent: var(--p-ochre-200);--accent-strong: var(--p-ochre-100);--accent-fill: var(--p-ochre-200);--accent-fill-hover: var(--p-ochre-100);--accent-contrast: var(--p-ochre-ink);--accent-contrast-muted: var(--p-ochre-ink-soft);--accent-2: var(--p-moss-200);--danger: var(--p-clay-150);--success: var(--p-moss-200);--warn: var(--p-ochre-200);--info: var(--p-cobalt-200);--border: var(--p-ink-650);--border-strong: var(--p-ink-500);--focus: var(--p-cobalt-150);--overlay: color-mix(in srgb, var(--p-ink-950) 78%, transparent);--hover: color-mix(in srgb, var(--p-ink-100) 5%, transparent);--course-calc: var(--p-ochre-200);--course-lal: var(--p-moss-200);--course-dmg: var(--p-clay-200);--course-prg: var(--p-iris-200);--course-safety: var(--p-teal-200);--plot-bg: var(--p-ink-850);--plot-grid: var(--p-ink-650);--plot-axis: var(--p-ink-500);--plot-ink: var(--p-ink-100);--plot-a: var(--p-ochre-200);--plot-b: var(--p-moss-200);--plot-c: var(--p-clay-200);--plot-d: var(--p-cobalt-200);--shadow-sm: 0 1px 2px color-mix(in srgb, var(--p-ink-950) 60%, transparent);--shadow-md: 0 1px 0 color-mix(in srgb, var(--p-ink-100) 4%, transparent) inset, 0 10px 30px color-mix(in srgb, var(--p-ink-950) 55%, transparent);--shadow-lg: 0 1px 0 color-mix(in srgb, var(--p-ink-100) 5%, transparent) inset, 0 30px 90px color-mix(in srgb, var(--p-ink-950) 80%, transparent);--glow: 0 0 14px color-mix(in srgb, var(--p-ochre-200) 55%, transparent)}}:root[data-theme=dark]{color-scheme:dark;--surface: var(--p-ink-900);--surface-raised: var(--p-ink-800);--surface-sunken: var(--p-ink-950);--surface-control: var(--p-ink-700);--text: var(--p-ink-100);--text-muted: var(--p-ink-300);--text-faint: var(--p-ink-400);--accent: var(--p-ochre-200);--accent-strong: var(--p-ochre-100);--accent-fill: var(--p-ochre-200);--accent-fill-hover: var(--p-ochre-100);--accent-contrast: var(--p-ochre-ink);--accent-contrast-muted: var(--p-ochre-ink-soft);--accent-2: var(--p-moss-200);--danger: var(--p-clay-150);--success: var(--p-moss-200);--warn: var(--p-ochre-200);--info: var(--p-cobalt-200);--border: var(--p-ink-650);--border-strong: var(--p-ink-500);--focus: var(--p-cobalt-150);--overlay: color-mix(in srgb, var(--p-ink-950) 78%, transparent);--hover: color-mix(in srgb, var(--p-ink-100) 5%, transparent);--course-calc: var(--p-ochre-200);--course-lal: var(--p-moss-200);--course-dmg: var(--p-clay-200);--course-prg: var(--p-iris-200);--course-safety: var(--p-teal-200);--plot-bg: var(--p-ink-850);--plot-grid: var(--p-ink-650);--plot-axis: var(--p-ink-500);--plot-ink: var(--p-ink-100);--plot-a: var(--p-ochre-200);--plot-b: var(--p-moss-200);--plot-c: var(--p-clay-200);--plot-d: var(--p-cobalt-200);--shadow-sm: 0 1px 2px color-mix(in srgb, var(--p-ink-950) 60%, transparent);--shadow-md: 0 1px 0 color-mix(in srgb, var(--p-ink-100) 4%, transparent) inset, 0 10px 30px color-mix(in srgb, var(--p-ink-950) 55%, transparent);--shadow-lg: 0 1px 0 color-mix(in srgb, var(--p-ink-100) 5%, transparent) inset, 0 30px 90px color-mix(in srgb, var(--p-ink-950) 80%, transparent);--glow: 0 0 14px color-mix(in srgb, var(--p-ochre-200) 55%, transparent)}:root{--accent-tint-1: color-mix(in srgb, var(--accent) 5%, transparent);--accent-tint: color-mix(in srgb, var(--accent) 10%, transparent);--accent-line-soft: color-mix(in srgb, var(--accent) 28%, transparent);--accent-line: color-mix(in srgb, var(--accent) 45%, transparent);--accent-line-strong: color-mix(in srgb, var(--accent) 70%, transparent);--accent-2-tint: color-mix(in srgb, var(--accent-2) 8%, transparent);--accent-2-line: color-mix(in srgb, var(--accent-2) 35%, transparent);--accent-2-line-strong: color-mix(in srgb, var(--accent-2) 65%, transparent);--danger-tint: color-mix(in srgb, var(--danger) 8%, transparent);--danger-line: color-mix(in srgb, var(--danger) 60%, transparent);--surface-glass: color-mix(in srgb, var(--surface) 92%, transparent);--course-color: var(--accent);--accent-text: var(--accent);--text-subtle: var(--text-faint)}@media(prefers-reduced-motion:reduce){:root{--dur-fast: 0ms;--dur-base: 0ms;--dur-slow: 0ms}}@media print{:root,:root[data-theme]{color-scheme:light;--surface: var(--print-paper);--surface-raised: var(--print-paper);--surface-sunken: var(--print-paper);--surface-control: var(--print-paper);--text: var(--print-ink);--text-muted: var(--print-ink);--text-faint: var(--print-ink);--accent: var(--print-ink);--accent-2: var(--print-ink);--border: var(--print-rule);--border-strong: var(--print-rule);--plot-bg: var(--print-paper);--shadow-sm: none;--shadow-md: none;--shadow-lg: none}}:root{font-family:var(--font-sans);font-size:100%;line-height:var(--lh-base);color:var(--text);background:var(--surface);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;text-size-adjust:100%}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--space-6)}html:has(.cheat-toolbar,.exam-bar){scroll-padding-top:calc(var(--header-h) + var(--space-6))}@media(max-width:960px){html{scroll-padding-top:calc(var(--tap) + var(--space-8))}}body{margin:0;min-height:100vh;background:var(--surface);color:var(--text);font-size:var(--fs-md)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:0;background:none}button:disabled{opacity:.45;cursor:not-allowed}a{color:inherit;text-decoration:none}p a,.fine-print a,li a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}svg{flex-shrink:0}img{max-width:100%}p{line-height:var(--lh-base);color:var(--text-muted)}h1,h2,h3,h4,p{margin-top:0}h1,h2{font-family:var(--font-serif);font-weight:var(--fw-semibold);font-optical-sizing:auto;letter-spacing:-.018em;color:var(--text);text-wrap:balance}h1{font-size:var(--fs-h1);line-height:var(--lh-tight)}h2{font-size:var(--fs-h2);line-height:1.15}h3,h4{line-height:var(--lh-snug);font-weight:var(--fw-semibold);color:var(--text)}strong{font-weight:var(--fw-semibold)}button,a,input,textarea,select,summary,[tabindex]{outline-offset:3px}:focus-visible{outline:2px solid var(--focus);outline-offset:3px}input:focus-visible,textarea:focus-visible,select:focus-visible{outline-offset:1px;border-color:var(--focus)}::selection{background:var(--accent-line-soft);color:var(--text)}.bilingual>span{display:block}.translation{font-size:.86em;color:var(--text-muted);font-weight:var(--fw-regular);margin-top:.3em;line-height:1.5}h1 .translation{font-family:var(--font-sans);font-size:max(var(--fs-md),.3em);letter-spacing:0;line-height:1.45;margin-top:var(--space-3);color:var(--text-muted)}h2 .translation{font-family:var(--font-sans);font-size:max(var(--fs-sm),.46em);font-weight:var(--fw-regular);line-height:1.5;letter-spacing:0}h3 .translation{font-size:.82em;font-weight:var(--fw-regular)}main{max-width:var(--container);margin:auto;padding:0 var(--gutter);min-height:70vh}main:has(.route-loading)~.site-footer{visibility:hidden}.route-loading{margin-top:0}main:focus{outline:0}.mono{font:var(--fs-xs)/1.6 var(--font-mono);letter-spacing:.02em}.fine-print{font-size:var(--fs-xs);line-height:1.6;color:var(--text-muted)}.muted{color:var(--text-muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;left:var(--space-4);top:-100px;z-index:var(--z-skip);background:var(--accent-fill);color:var(--accent-contrast);font-weight:var(--fw-semibold);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.skip:focus{top:var(--space-4)}.formula{max-width:100%}.formula-block{display:block;overflow-x:auto;overflow-y:hidden;padding:3px 0}.formula .katex{font-size:1.08em}.formula .katex-display{margin:.6em 0}summary>.bilingual{display:inline-block;vertical-align:middle}details p{margin:var(--space-4) 0 0}kbd{font:var(--fs-xs) var(--font-mono);border:1px solid var(--border-strong);border-bottom-width:2px;padding:2px var(--space-2);border-radius:var(--radius-sm);display:inline-block;color:var(--text);background:var(--surface-raised)}input[type=range]{display:block;width:100%;accent-color:var(--accent);margin:var(--space-4) 0;min-height:24px}input[type=checkbox]{accent-color:var(--accent);width:18px;height:18px;min-height:0;padding:0}table{border-collapse:collapse;width:100%;font-size:var(--fs-sm);margin-top:var(--space-5);font-variant-numeric:tabular-nums}td,th{text-align:left;padding:var(--space-3);border-bottom:1px solid var(--border);line-height:1.5}th{font-weight:var(--fw-semibold);color:var(--text-muted);font-size:var(--fs-xs);letter-spacing:.04em;text-transform:uppercase}input,select,textarea{color:var(--text);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:var(--space-3);min-height:var(--tap)}input::placeholder,textarea::placeholder{color:var(--text-faint)}select{font-size:var(--fs-sm);max-width:100%}@media(max-width:640px){input,select,textarea{font-size:var(--fs-md)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.eyebrow{font:var(--fw-semibold) var(--fs-xs)/1.5 var(--font-sans);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:var(--space-2)}.eyebrow .translation{font-size:var(--fs-xs);font-weight:var(--fw-medium);letter-spacing:.06em;color:var(--text-muted);margin:0}.mini-star{font-size:var(--fs-xl);margin-right:var(--space-1)}.button{border:1px solid transparent;border-radius:var(--radius-md);padding:var(--space-2) var(--space-5);min-height:var(--tap);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);font-size:var(--fs-sm);font-weight:var(--fw-semibold);text-align:left;line-height:1.35;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.button:active:not(:disabled){transform:translateY(1px)}.button .translation{font-size:var(--fs-xs);font-weight:var(--fw-regular);margin-top:1px}.primary{background:var(--accent-fill);color:var(--accent-contrast);border-color:var(--accent);box-shadow:var(--shadow-sm)}.primary .translation{color:var(--accent-contrast-muted)}.primary:hover:not(:disabled){background:var(--accent-fill-hover)}.outline{border-color:var(--border-strong);background:var(--surface-raised);color:var(--text)}.outline:hover:not(:disabled){background:var(--surface-control);border-color:var(--accent)}.text-button{display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--tap);font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:1.4;padding:var(--space-2) 0;text-align:left;color:var(--text)}.text-button:hover{color:var(--accent)}.text-button .translation{font-size:var(--fs-xs)}.icon-button{height:var(--tap);min-width:var(--tap);display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--radius-md);color:var(--text-muted);transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.icon-button:hover{background:var(--hover);border-color:var(--border);color:var(--text)}.icon-button.selected,.icon-button[aria-pressed=true]{color:var(--accent);background:var(--accent-tint);border-color:var(--accent-line-soft)}.status-dot{display:inline-block;height:8px;width:8px;border-radius:50%;background:var(--success);flex-shrink:0}.status-dot.warn{background:var(--warn)}.completed{color:var(--success)}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-5);margin:var(--space-8) 0 var(--space-6)}.section-heading h2{margin:var(--space-2) 0 0}.hand-note{font:italic var(--fs-xl) var(--font-serif);color:var(--text-muted);transform:rotate(-3deg)}.source-links{display:inline-flex;gap:var(--space-2);flex-wrap:wrap}.source-links button{font:var(--fw-medium) var(--fs-xs)/1.2 var(--font-sans);color:var(--accent-2);background:var(--accent-2-tint);border:1px solid var(--accent-2-line);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);min-height:32px;display:flex;gap:var(--space-1);align-items:center}.source-links button:hover{border-color:var(--accent-2)}@media(max-width:960px),(pointer:coarse){.source-links button{min-height:var(--tap)}}.search-box{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);flex:1;color:var(--text-muted)}.search-box:focus-within{border-color:var(--focus);outline:2px solid var(--focus);outline-offset:1px}.search-box input{border:0;background:transparent;width:100%;padding:var(--space-3) 0;font-size:var(--fs-md);min-width:0}.search-box input:focus-visible{outline:0}.empty{padding:var(--space-16) var(--space-5);text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius-lg);color:var(--text-muted);margin:var(--space-8) 0}.empty>svg{color:var(--accent-2);margin-bottom:var(--space-5)}.empty h3{font:var(--fw-semibold) var(--fs-3xl) var(--font-serif);color:var(--text)}.empty p{font-size:var(--fs-sm)}.code-block{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-5) var(--space-6);color:var(--text);font:var(--fs-sm)/1.8 var(--font-mono);overflow:auto;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere}.notice{padding:var(--space-3) var(--gutter);background:var(--accent-tint);color:var(--text);font-size:var(--fs-sm);border-bottom:1px solid var(--accent-line-soft)}.toast{position:fixed;bottom:var(--space-6);left:50%;transform:translate(-50%);background:var(--text);color:var(--surface);padding:var(--space-3) var(--space-6);border-radius:var(--radius-pill);font-size:var(--fs-sm);font-weight:var(--fw-medium);box-shadow:var(--shadow-lg);z-index:var(--z-toast);max-width:calc(100vw - 2 * var(--space-4))}@media(max-width:960px){.hand-note{display:none}.search-box{flex-basis:100%}}.site-header{min-height:var(--header-h);display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);padding:var(--space-3) var(--gutter);border-bottom:1px solid var(--border);background:var(--surface);position:relative}.site-header .translation{font-size:var(--fs-xs);margin-top:0}.brand{display:flex;align-items:center;gap:var(--space-3);text-align:left;white-space:nowrap;padding:0;min-height:var(--tap);color:var(--text)}.brand-symbol{font:italic var(--fw-semibold) var(--fs-4xl)/1 var(--font-serif);color:var(--accent);letter-spacing:-4px;position:relative;width:30px}.brand-symbol>span{font:var(--fs-xs) var(--font-sans);position:absolute;top:0;right:-2px;color:var(--accent-2)}.ucenly-wordmark{font:var(--fw-semibold) var(--fs-2xl)/1 var(--font-serif);letter-spacing:-.02em}.ucenly-wordmark>span{color:var(--accent)}.brand-divider{height:28px;width:1px;background:var(--border);margin:0 var(--space-1)}.brand-meta{font:var(--fw-medium) var(--fs-xs)/1.35 var(--font-sans);letter-spacing:.04em;color:var(--text-muted)}.main-nav{display:flex;gap:var(--space-1);align-items:center}.main-nav>button{font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:1.25;padding:var(--space-2) var(--space-3);min-height:var(--tap);border-radius:var(--radius-md);color:var(--text-muted);position:relative;display:flex;align-items:center;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.main-nav>button:hover{color:var(--text);background:var(--hover)}.main-nav>button.active{color:var(--text);background:var(--surface-control)}.main-nav>button.active:after{content:"";height:2px;border-radius:2px;background:var(--accent);position:absolute;bottom:3px;left:var(--space-3);right:var(--space-3)}.nav-badge{background:var(--accent-fill);color:var(--accent-contrast);border-radius:var(--radius-pill);min-width:20px;font:var(--fw-bold) var(--fs-xs)/1 var(--font-sans);padding:var(--space-1) 6px;margin-left:var(--space-2);text-align:center}.header-actions{display:flex;gap:var(--space-2);align-items:center}.theme-toggle svg{display:block}.mobile-toggle{display:none}.site-footer{max-width:var(--container);margin:var(--space-16) auto 0;padding:var(--space-8) var(--gutter);border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:var(--space-5);font-size:var(--fs-sm);color:var(--text-muted)}.site-footer>span:first-child{font-size:var(--fs-md);color:var(--text);white-space:nowrap}.site-footer .ucenly-wordmark{font-size:var(--fs-xl)}.footer-separator{margin:0 var(--space-3);color:var(--text-faint)}.site-footer .translation{font-size:var(--fs-xs)}.offline-status{font:var(--fs-xs) var(--font-sans);display:flex;align-items:center;gap:var(--space-2)}@media(max-width:1279px){.brand-meta,.brand-divider{display:none}.site-footer{flex-wrap:wrap}}@media(max-width:960px){.site-header{gap:var(--space-3)}.main-nav{display:none;position:absolute;top:100%;left:0;right:0;z-index:var(--z-header);background:var(--surface-raised);padding:var(--space-3) var(--gutter);border-bottom:1px solid var(--border);box-shadow:var(--shadow-md)}.main-nav.open{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-1)}.mobile-toggle{display:inline-flex}.header-actions{gap:var(--space-1)}.header-actions>.icon-button:not(.mobile-toggle):not(.theme-toggle){display:none}.header-actions>.icon-button{height:var(--tap);min-width:var(--tap)}.site-footer>span:nth-child(2){order:3;width:100%}}@media(max-width:640px){.ucenly-wordmark{font-size:var(--fs-xl)}.brand{gap:var(--space-2)}.brand-symbol{font-size:var(--fs-3xl);width:24px}.header-actions{gap:2px}.site-footer{margin-top:var(--space-10)}}[data-course=calc]{--course-color: var(--course-calc)}[data-course=lal]{--course-color: var(--course-lal)}[data-course=dmg]{--course-color: var(--course-dmg)}[data-course=prg]{--course-color: var(--course-prg)}[data-course=safety]{--course-color: var(--course-safety)}.dashboard{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-12);padding:var(--space-10) 0 var(--space-16)}.dash-heading{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-3) var(--space-6);margin-bottom:var(--space-4)}.dash-heading h2{margin:0;font-size:var(--fs-3xl);line-height:var(--lh-snug)}.dash-faint{color:var(--text-faint)}.dashboard .mono .bilingual,.dashboard .mono .bilingual>span,.dash-countdown-num .bilingual>span{display:inline}.dashboard .mono .bilingual>.translation{margin-left:.4em}.dash-glyph,.dash-course-glyph{display:inline-grid;place-items:center;flex:none;width:28px;height:28px;border-radius:var(--radius-sm);font:var(--fw-semibold) var(--fs-sm)/1 var(--font-serif);color:var(--course-color, var(--accent));background:color-mix(in srgb,var(--course-color, var(--accent)) 13%,transparent)}.dash-course-glyph{width:40px;height:40px;border-radius:var(--radius-md);font-size:var(--fs-lg)}.dash-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(272px,304px);gap:var(--space-6);align-items:start}.dash-top-main{display:grid;gap:var(--space-5);min-width:0}.dash-top-side{display:grid;gap:var(--space-4);min-width:0}.dash-week{display:grid;gap:var(--space-1)}.dash-sem .dash-sembar{margin-top:var(--space-2);max-width:none}.dash-date{margin:0;font-size:var(--fs-sm);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--accent)}.dash-week h1{margin:0;font-size:var(--fs-h1);line-height:1;letter-spacing:-.02em}.dash-meta{margin:0;font-size:var(--fs-lg);color:var(--text-muted)}.dash-holiday{display:inline-flex;align-items:center;gap:var(--space-2);margin:var(--space-4) 0 0;padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);background:var(--surface-sunken);font-size:var(--fs-sm);color:var(--text)}.dash-holiday svg{color:var(--warn);flex:none}.dash-sembar{margin-top:var(--space-8);max-width:640px}.dash-sembar-track{position:relative;height:8px;border-radius:var(--radius-pill);background:var(--surface-sunken);box-shadow:inset 0 0 0 1px var(--border)}.dash-sembar-track>span{position:absolute;top:0;bottom:0}.dash-sembar-done{left:0;border-radius:var(--radius-pill);background:var(--accent-fill)}.dash-sembar-break{background:repeating-linear-gradient(135deg,var(--border-strong) 0 1px,transparent 1px 4px)}.dash-sembar-exam{border-radius:0 var(--radius-pill) var(--radius-pill) 0;background:var(--accent-2-tint);box-shadow:inset 0 0 0 1px var(--accent-2-line)}.dash-sembar-track>.dash-sembar-now{top:-5px;bottom:-5px;width:3px;margin-left:-1.5px;border-radius:var(--radius-pill);background:var(--text)}.dash-sembar-legend{position:relative;height:1.5em;margin-top:var(--space-2);font-size:var(--fs-xs);color:var(--text-faint)}.dash-sembar-legend>span{position:absolute;top:0;white-space:nowrap}.dash-sembar-legend.has-break{height:3em}.dash-sembar-legend .dash-sembar-lbl-break{transform:translate(-50%)}.dash-sembar-legend .dash-sembar-lbl-exam{right:0}.dash-sembar-legend.has-break .dash-sembar-lbl-exam{top:1.5em}.dash-countdown{position:relative;padding:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:var(--shadow-sm);overflow:hidden}.dash-countdown:before,.dash-course:before,.dash-detail:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--course-color, var(--accent))}.dash-countdown-kicker{display:flex;align-items:center;gap:var(--space-2);margin:0;font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--danger)}.dash-countdown-num{display:flex;align-items:baseline;gap:var(--space-2);margin:var(--space-3) 0 var(--space-2);font:var(--fw-semibold) var(--fs-6xl)/1 var(--font-serif);font-variant-numeric:tabular-nums;letter-spacing:-.03em}.dash-countdown-num>span:last-child{font:var(--fw-medium) var(--fs-lg) var(--font-sans);letter-spacing:0;color:var(--text-muted)}.dash-countdown-num .dash-approx{color:var(--text-faint);margin-right:-.1em}.dash-countdown-what{display:flex;align-items:center;gap:var(--space-2);margin:0;font-weight:var(--fw-semibold)}.dash-countdown-when{margin:var(--space-1) 0 0;font-size:var(--fs-sm);color:var(--text-muted)}.dash-upcoming{list-style:none;margin:var(--space-5) 0 0;padding:var(--space-3) 0 0;border-top:1px solid var(--border)}.dash-upcoming li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-3);padding:var(--space-1) 0;font-size:var(--fs-sm)}.dash-upcoming .dash-glyph{width:24px;height:24px;font-size:var(--fs-xs);grid-row:1 / span 2}.dash-upcoming-what{grid-column:2;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-upcoming-what .bilingual,.dash-upcoming-what .bilingual>span{display:inline}.dash-upcoming-days{grid-column:2;font-size:var(--fs-xs);color:var(--text-muted);text-align:left}.dash-upcoming li{grid-template-columns:auto minmax(0,1fr);row-gap:0}.dash-columns{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--space-8);align-items:start}.dash-course-list{display:grid;gap:var(--space-4)}.dash-course{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,260px);grid-template-areas:"head head" "weeks actions" "progress actions";gap:var(--space-4) var(--space-8);padding:var(--space-6) var(--space-6) var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised);overflow:hidden}.dash-course-head{grid-area:head;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3)}.dash-course-head h3{margin:0;font:var(--fw-semibold) var(--fs-xl)/var(--lh-snug) var(--font-serif)}.dash-link{padding:0;text-align:left;color:var(--text);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:.2em;transition:text-decoration-color var(--dur-fast) var(--ease-out)}.dash-link:hover{text-decoration-color:var(--accent)}.dash-chip{display:inline-flex;align-items:center;gap:var(--space-1);margin-left:auto;padding:2px var(--space-3);border:1px solid var(--danger-line);border-radius:var(--radius-pill);background:var(--danger-tint);color:var(--danger);font-size:var(--fs-xs);font-weight:var(--fw-semibold)}.dash-chip .mono{font-size:var(--fs-xs);font-weight:var(--fw-medium)}.dash-chip .bilingual>span{display:inline}.dash-chip .bilingual>.translation{margin-left:.4em}.dash-tag{display:inline-flex;padding:1px var(--space-2);border:1px dashed var(--border-strong);border-radius:var(--radius-pill);font-size:var(--fs-xs);color:var(--text-muted);cursor:help}.dash-course-weeks{grid-area:weeks;display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5);margin:0}.dash-course-weeks dt{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-faint)}.dash-course-weeks dd{margin:var(--space-1) 0 0;font-size:var(--fs-md);line-height:var(--lh-snug)}.dash-course-weeks .dash-link{min-height:32px}@media(max-width:960px),(pointer:coarse){.dash-link,.dash-course-weeks .dash-link{display:inline-flex;align-items:center;min-height:var(--tap)}}.dash-course-progress{grid-area:progress;display:flex;align-items:center;gap:var(--space-4);color:var(--text-muted)}.dash-course-progress .mono{white-space:nowrap}.dash-meter{flex:1;max-width:260px;height:6px;border-radius:var(--radius-pill);background:var(--surface-sunken);box-shadow:inset 0 0 0 1px var(--border);overflow:hidden}.dash-meter>span{display:block;height:100%;min-width:0;border-radius:var(--radius-pill);background:var(--course-color);transition:width var(--dur-slow) var(--ease-out)}.dash-course-actions{grid-area:actions;display:grid;gap:var(--space-3);align-content:start}.dash-continue{justify-content:space-between;width:100%;padding-block:var(--space-3)}.dash-course:not(:first-child) .dash-continue{background:var(--accent-tint-1);border-color:var(--accent-line);color:var(--text);box-shadow:none}.dash-course:not(:first-child) .dash-continue:hover:not(:disabled){background:var(--accent-tint);border-color:var(--accent-line-strong)}.dash-course:not(:first-child) .dash-continue .dash-continue-kicker{color:var(--accent)}.dash-continue-label{display:grid;gap:2px;min-width:0}.dash-continue-kicker{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--accent-contrast-muted)}.dash-quick{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-1)}.dash-quick button{display:flex;align-items:center;gap:var(--space-2);min-height:var(--tap);padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-muted);text-align:left;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.dash-quick button:hover{background:var(--hover);color:var(--text)}.dash-quick svg{flex:none;color:var(--course-color)}.dash-count{display:inline-grid;place-items:center;min-width:22px;height:22px;margin-left:auto;padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--accent-fill);color:var(--accent-contrast);font:var(--fw-semibold) var(--fs-xs)/1 var(--font-mono)}.dash-done{position:absolute;right:var(--space-6);bottom:var(--space-5);display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--fs-xs);color:var(--success)}.dash-side{display:grid;gap:var(--space-4)}.dash-panel{padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised)}.dash-panel-title{display:flex;align-items:center;gap:var(--space-3);margin:0 0 var(--space-3);font-size:var(--fs-xl);line-height:var(--lh-snug)}.dash-panel-title .dash-count{margin-left:0}.dash-rows{list-style:none;margin:0;padding:0}.dash-rows li+li{border-top:1px solid var(--border)}.dash-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:var(--space-3);width:100%;min-height:56px;padding:var(--space-2);border-radius:var(--radius-md);text-align:left;transition:background-color var(--dur-fast) var(--ease-out)}.dash-row:hover{background:var(--hover)}.dash-row>svg{color:var(--text-faint)}.dash-row-kicker{display:block;font-size:var(--fs-xs);color:var(--text-muted)}.dash-row-main{display:block;font-size:var(--fs-sm);font-weight:var(--fw-semibold);line-height:var(--lh-snug)}.dash-row-meta{color:var(--text-muted)}.dash-empty{color:var(--text-muted);font-size:var(--fs-sm)}.dash-empty p{margin:0 0 var(--space-3)}.dash-notes{margin-top:var(--space-2);color:var(--text-muted)}.dash-legend{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5);margin:0;padding:0;list-style:none;font-size:var(--fs-xs);color:var(--text-muted)}.dash-legend li{display:inline-flex;align-items:center;gap:var(--space-2)}.dash-legend li:nth-child(2) svg{color:var(--danger)}.dash-legend li:nth-child(3) svg{color:var(--warn)}.dash-legend li:nth-child(4) svg{color:var(--success)}.dash-legend-now{width:3px;height:14px;border-radius:var(--radius-pill);background:var(--accent)}.dash-hint{max-width:72ch;margin:0 0 var(--space-5);font-size:var(--fs-sm);color:var(--text-muted)}.dash-grid-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised)}.dash-grid{display:grid;grid-template-columns:minmax(132px,1.15fr) repeat(13,minmax(60px,1fr)) 18px 18px minmax(60px,1fr) minmax(64px,.9fr);min-width:1140px}.dash-grid-row{display:grid;grid-column:1 / -1;grid-template-columns:subgrid;border-bottom:1px solid var(--border)}.dash-grid-row:last-child{border-bottom:0}.dash-grid-head>div{position:relative;padding:var(--space-3) var(--space-1) var(--space-2);text-align:center}.dash-week-num{display:block;font:var(--fw-semibold) var(--fs-sm)/1.2 var(--font-mono);color:var(--text)}.dash-week-date{display:block;font-size:var(--fs-xs);color:var(--text-faint);white-space:nowrap}.dash-week-hol{position:absolute;top:var(--space-1);right:var(--space-1);color:var(--warn);line-height:0}.dash-week-head.is-now .dash-week-num{color:var(--accent)}.dash-week-head.is-sel{box-shadow:inset 0 -2px 0 var(--accent)}.dash-exam-head .dash-week-num{font-family:var(--font-sans)}.dash-break-head{display:grid;place-items:center;font-size:var(--fs-xs);color:var(--text-faint)}.dash-break-head span{writing-mode:vertical-rl;transform:rotate(180deg)}.dash-break-cell{border-left:1px solid var(--border);background:repeating-linear-gradient(135deg,var(--border) 0 1px,transparent 1px 6px)}.dash-grid-course{position:sticky;left:0;z-index:var(--z-sticky);display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);padding:var(--space-3);background:var(--surface-raised);font-size:var(--fs-sm);font-weight:var(--fw-semibold);line-height:var(--lh-snug)}.dash-grid-course-name{flex:1;min-width:0}.dash-cell{position:relative;border-left:1px solid var(--border)}.dash-cell>button{display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-1);width:100%;height:100%;min-height:84px;padding:var(--space-2) 6px;text-align:left;font-size:var(--fs-xs);line-height:1.35;color:var(--text);transition:background-color var(--dur-fast) var(--ease-out)}.dash-cell>button:hover{background:var(--hover)}.dash-cell>button:focus-visible{outline-offset:-3px}.dash-cell-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden;hyphens:auto;-webkit-hyphens:auto}.dash-cell-marks{display:flex;gap:var(--space-1);align-items:center;min-height:12px}.dash-flag{color:var(--danger);line-height:0}.dash-tick{color:var(--success);line-height:0}.dash-cell.is-past .dash-cell-title{color:var(--text-muted)}.dash-cell.is-admin .dash-cell-title{color:var(--text-faint)}.dash-cell.has-assess{box-shadow:inset 0 3px 0 var(--danger-line)}.dash-cell.is-now,.dash-grid-head .is-now{background:var(--accent-tint-1)}.dash-exam-cell{background:var(--accent-2-tint)}.dash-cell.is-now:not(.dash-exam-cell):after,.dash-week-head.is-now:not(.dash-exam-head):after{content:"";position:absolute;top:0;bottom:0;left:calc(var(--today-x, .5) * 100%);width:2px;margin-left:-1px;background:var(--accent);pointer-events:none}.dash-cell.is-sel>button{background:var(--accent-tint);box-shadow:inset 0 0 0 2px var(--accent)}.dash-picker{display:none}.dash-picker-bar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-2);padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised)}.dash-picker-bar .icon-button{min-width:var(--tap);height:var(--tap);color:var(--text)}.dash-picker-label{text-align:center}.dash-picker-label strong{display:block;font:var(--fw-semibold) var(--fs-xl)/1.2 var(--font-serif)}.dash-picker-label>span{display:block;font-size:var(--fs-xs);color:var(--text-muted)}.dash-picker-label .bilingual>span{display:inline}.dash-picker-label .bilingual>.translation{margin-left:.4em}.dash-picker-home{margin-top:var(--space-1);color:var(--accent)}.dash-picker-list{display:grid;gap:var(--space-2);margin:var(--space-3) 0 0;padding:0;list-style:none}.dash-picker-list .dash-row{grid-template-columns:auto minmax(0,1fr) auto;border:1px solid var(--border);background:var(--surface-raised)}.dash-picker-list .dash-row.is-sel{background:var(--accent-tint);border-color:var(--accent)}.dash-mark{display:inline-flex;align-items:center;gap:var(--space-1);padding:1px var(--space-2);border-radius:var(--radius-pill);background:var(--danger-tint);color:var(--danger);font-size:var(--fs-xs);font-weight:var(--fw-semibold);white-space:nowrap}.dash-mark-homework{background:var(--accent-2-tint);color:var(--accent-2)}.dash-mark-exam,.dash-mark-other{background:var(--accent-tint);color:var(--accent)}.dash-detail{position:relative;margin-top:var(--space-6);padding:var(--space-8);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:var(--shadow-sm);overflow:hidden}.dash-detail-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:var(--space-4)}.dash-detail-kicker{margin:0;font-size:var(--fs-sm);color:var(--text-muted)}.dash-detail-kicker .bilingual,.dash-detail-kicker .bilingual>span{display:inline}.dash-detail-kicker .bilingual>.translation{margin-left:.4em}.dash-detail-head h3{margin:var(--space-1) 0 0;font:var(--fw-semibold) var(--fs-2xl)/var(--lh-snug) var(--font-serif);text-wrap:balance}.dash-detail-tags{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:var(--space-2)}.dash-status{padding:2px var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted)}.dash-status.is-now{background:var(--accent-fill);border-color:var(--accent);color:var(--accent-contrast)}.dash-status.is-now .translation{color:var(--accent-contrast-muted)}.dash-status .bilingual>span{display:inline}.dash-status .bilingual>.translation{margin-left:.4em}.dash-assess{list-style:none;margin:var(--space-5) 0 0;padding:0}.dash-assess li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--border);font-size:var(--fs-sm)}.dash-assess-title{flex:1;min-width:200px}.dash-assess-weight{color:var(--text-muted)}.dash-note{margin:var(--space-4) 0 0;font-size:var(--fs-sm);color:var(--text-muted);max-width:75ch}.dash-topics{display:grid;gap:var(--space-3);margin:var(--space-6) 0 0;padding:0;list-style:none}.dash-topic{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-4) var(--space-8);padding:var(--space-5) var(--space-6);border-radius:var(--radius-md);background:var(--surface-sunken)}.dash-topic h4{display:flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);font:var(--fw-semibold) var(--fs-lg)/var(--lh-snug) var(--font-serif)}.dash-topic-done{color:var(--success);flex:none}.dash-topic p{margin:0;max-width:68ch;color:var(--text-muted)}.dash-topic-math{margin-top:var(--space-4);padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised);overflow-x:auto}.dash-topic-math .katex-display{margin:var(--space-2) 0}.dash-topic-actions{display:grid;align-content:start;gap:var(--space-2);min-width:210px}.dash-topic-actions .button{justify-content:flex-start}@media(max-width:1279px){.dash-top{grid-template-columns:minmax(0,1fr) 264px}.dash-columns{grid-template-columns:minmax(0,1fr) 300px}.dash-course{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "weeks" "progress" "actions"}.dash-course-actions{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);align-items:start}.dash-quick{grid-template-columns:repeat(4,auto);justify-content:start}}@media(max-width:960px){.dashboard{gap:var(--space-10);padding-top:var(--space-6)}.dash-top{grid-template-columns:minmax(0,1fr)}.dash-top-side{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start}.dash-columns{grid-template-columns:minmax(0,1fr)}.dash-side{order:-1;grid-template-columns:1fr 1fr;align-items:start}.dash-grid-scroll,.dash-hint{display:none}.dash-picker{display:block}.dash-legend{display:none}.dash-detail{padding:var(--space-6) var(--space-5)}.dash-topic{grid-template-columns:minmax(0,1fr)}.dash-topic-actions{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));min-width:0}}@media(max-width:640px){.dashboard{gap:var(--space-8)}.dash-week h1{font-size:var(--fs-4xl)}.dash-side{grid-template-columns:minmax(0,1fr)}.dash-course{padding:var(--space-5) var(--space-4) var(--space-4)}.dash-course-weeks{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.dash-course-actions{grid-template-columns:minmax(0,1fr)}.dash-quick{grid-template-columns:1fr 1fr}.dash-chip{margin-left:0}.dash-done{position:static}.dash-detail-head{grid-template-columns:auto minmax(0,1fr)}.dash-detail-tags{grid-column:1 / -1;justify-content:flex-start}.dash-topic{padding:var(--space-4)}.dash-topic-actions{grid-template-columns:minmax(0,1fr)}.dash-heading h2{font-size:var(--fs-2xl)}}@media(pointer:coarse){.dash-course-weeks .dash-link{min-height:var(--tap)}}@media(max-width:640px){.dash-detail-head h3{font-size:var(--fs-xl)}}.term-switch{justify-self:start;flex-wrap:wrap;margin-block:var(--space-1)}@media(max-width:640px){.term-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));justify-self:stretch}.term-switch button{flex-direction:column;align-items:center;justify-content:center;gap:0;min-width:0;padding:var(--space-1) var(--space-2);line-height:1.25;text-align:center}.term-switch .term-tag{font-size:10px}}.term-switch button{display:inline-flex;align-items:baseline;gap:var(--space-2)}.term-tag{font-size:var(--fs-xs);font-weight:var(--fw-regular, 400);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)}@media(min-width:1400px){.dashboard{margin-inline:calc(-1 * var(--space-10))}}.update-chip{position:fixed;right:var(--space-4);bottom:var(--space-4);z-index:60;min-height:36px;padding:0 var(--space-4);border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface-raised);color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-semibold);box-shadow:var(--shadow-md, var(--shadow-sm))}.update-chip:hover{background:var(--surface-sunken)}.course-tabs .translation{font-size:var(--fs-xs)}.course-bar{display:flex;align-items:center;gap:var(--space-6);justify-content:space-between;padding:var(--space-4) 0;border-bottom:1px solid var(--border)}.course-selector{min-width:0;max-width:100%;display:flex;gap:var(--space-1);overflow:auto}.course-selector>button{display:flex;align-items:center;white-space:nowrap;color:var(--text-muted);border-radius:var(--radius-sm)}.course-selector>button.active{color:var(--text);background:var(--surface-raised);box-shadow:inset 0 0 0 1px var(--border-strong),var(--shadow-sm)}.course-selector>button>span:first-child{font:italic var(--fw-semibold) var(--fs-xl) var(--font-serif);color:var(--accent)}.course-heading{position:relative;padding:var(--space-12) 0 var(--space-8);display:flex;justify-content:space-between;align-items:center}.course-heading>div:first-child{min-width:0}.course-heading h1{overflow-wrap:anywhere;margin:var(--space-3) 0 var(--space-5);font-size:var(--fs-h1)}.course-heading p{font-size:var(--fs-md);margin:0}.course-watermark{font:italic var(--fw-semibold) 6.5rem var(--font-serif);color:var(--accent-line-soft);margin-right:var(--space-8)}.course-heading.is-compact{padding:var(--space-6) 0 var(--space-4)}.course-heading.is-compact .eyebrow,.course-heading.is-compact p,.course-heading.is-compact .course-watermark{display:none}.course-heading.is-compact h1{margin:0;font-size:var(--fs-3xl);line-height:var(--lh-tight)}.course-tabs{display:flex;border-bottom:1px solid var(--border);overflow-x:auto;margin-bottom:var(--space-10)}.course-tabs>button{display:flex;gap:var(--space-2);align-items:center;padding:var(--space-3) 0;border-bottom:2px solid transparent;white-space:nowrap;color:var(--text-muted);font-size:var(--fs-sm);font-weight:var(--fw-medium);min-height:var(--tap)}.course-tabs>button.active{color:var(--text);border-color:var(--accent)}.course-overview{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-12)}.course-overview .section-heading{margin-top:0}.topic-list{border-top:1px solid var(--border)}.topic-list>button{display:flex;align-items:center;gap:var(--space-5);text-align:left;width:100%;padding:var(--space-5) var(--space-3);border-bottom:1px solid var(--border)}.topic-list>button:hover{background:var(--hover)}.topic-list>button>span:nth-child(2){flex:1}.topic-list strong{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--text)}.topic-summary{display:block;font-size:var(--fs-sm);line-height:1.6;color:var(--text-muted);margin-top:var(--space-2)}.topic-summary .translation{font-size:var(--fs-xs)}.topic-index{color:var(--accent);font:var(--fw-semibold) var(--fs-xl) var(--font-serif);width:28px;flex-shrink:0;align-self:flex-start;margin-top:2px;font-variant-numeric:lining-nums}.topic-index.done{color:var(--accent-2)}.exam-notes{padding:var(--space-6);background:var(--surface-raised);border:1px solid var(--border);height:fit-content;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.exam-notes h2{font-size:var(--fs-3xl);margin:var(--space-4) 0 var(--space-6)}.exam-notes article{margin-bottom:var(--space-6);padding-bottom:var(--space-5);border-bottom:1px solid var(--border)}.exam-notes h3{font-size:var(--fs-md)}.exam-notes p{font-size:var(--fs-sm)}.exam-notes>.fine-print{margin:var(--space-4) 0 0}.lecture-highlight{display:flex;text-align:left;width:100%;align-items:center;gap:var(--space-5);background:var(--accent-tint-1);border:1px solid var(--accent-line-soft);padding:var(--space-5);margin-bottom:var(--space-6);border-radius:var(--radius-lg)}.highlight-index{font:var(--fw-semibold) var(--fs-5xl) var(--font-serif);color:var(--accent)}.lecture-highlight>span:nth-child(2){flex:1}.lecture-highlight strong{display:block;font:var(--fw-semibold) var(--fs-2xl) var(--font-serif);margin:var(--space-2) 0}.lecture-highlight strong .translation{font-family:var(--font-sans);font-size:var(--fs-xs)}.lecture-highlight .muted{font-size:var(--fs-sm)}.truth-table{font:var(--fs-xl) var(--font-mono);max-width:700px;margin:var(--space-6) auto}.truth-yes{color:var(--accent-2);background:var(--accent-2-tint)}.truth-no{color:var(--danger);background:var(--danger-tint)}.notebook-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-5)}.note-card{padding:var(--space-6);border:1px solid var(--border);background:var(--surface-raised);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.note-card h3{margin:var(--space-4) 0;font:var(--fw-semibold) var(--fs-3xl) var(--font-serif)}.note-card p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--fs-sm)}.reference-table{padding:var(--space-6);border:1px solid var(--border);margin-top:var(--space-10);overflow-x:auto;border-radius:var(--radius-lg);background:var(--surface-raised)}.reference-table summary{cursor:pointer;color:var(--accent);margin-bottom:var(--space-4)}.reference-table table{min-width:600px}.course-selector>button:hover{color:var(--text);background:var(--hover)}.course-tabs>button:hover{color:var(--text)}@media(max-width:1279px){.course-overview{gap:var(--space-6);grid-template-columns:minmax(0,1fr) 280px}}@media(max-width:960px){.course-bar{flex-direction:column;align-items:flex-start;gap:var(--space-3)}.course-selector{width:100%}.course-selector>button{flex-shrink:0}.course-heading:not(.is-compact){padding:var(--space-8) 0}.course-heading:not(.is-compact) h1{font-size:var(--fs-5xl)}.course-heading.is-compact{padding:var(--space-5) 0 var(--space-3)}.course-watermark{font-size:4.375rem;margin:0 var(--space-1)}.course-tabs{margin-bottom:var(--space-7)}.course-overview{grid-template-columns:1fr}.exam-notes{margin-top:var(--space-4)}.notebook-grid{grid-template-columns:1fr 1fr}}@media(max-width:640px){.course-bar{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between}.course-bar>.course-selector{order:3}.course-watermark{display:none}.course-tabs>button>svg{display:none}.topic-list>button{gap:var(--space-3)}.notebook-grid{grid-template-columns:1fr}}.course-selector>button{font:var(--fw-medium) var(--fs-sm)/1.25 var(--font-sans);gap:var(--space-2);padding:var(--space-2) var(--space-3);min-height:var(--tap);border-radius:var(--radius-md)}.course-selector .translation{font-size:var(--fs-xs)}.course-info{margin:calc(-1 * var(--space-3)) 0 var(--space-5);border-top:1px solid var(--border);padding-top:var(--space-3);font-size:var(--fs-sm);color:var(--text-muted)}.course-info summary{cursor:pointer;min-height:var(--tap);padding-block:10px}.course-info>span{display:flex;gap:var(--space-2);margin-top:var(--space-3)}.course-info .mono{color:var(--accent)}.course-tabs{gap:var(--space-6);margin-bottom:var(--space-8)}.course-heading .eyebrow>.bilingual{display:inline}.course-heading .eyebrow .translation{display:none}@media(max-width:960px){.course-selector>button{padding:var(--space-2);font-size:var(--fs-xs)}.course-selector .translation{font-size:var(--fs-xs)}.course-tabs{gap:var(--space-5)}}@media(max-width:640px){.course-selector>button{font-size:var(--fs-xs)}.course-tabs{scroll-snap-type:x proximity;-webkit-mask-image:linear-gradient(90deg,black 88%,transparent);mask-image:linear-gradient(90deg,black 88%,transparent)}.course-tabs>button{scroll-snap-align:start}}.ov-label{display:block;font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)}.ov-top{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:var(--space-4);margin-bottom:var(--space-10)}.ov-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);padding:var(--space-5);text-align:left;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text);min-width:0}button.ov-card:hover{border-color:var(--border-strong);background:var(--hover)}.ov-card h3,.ov-card strong{font:var(--fw-semibold) var(--fs-lg)/var(--lh-snug) var(--font-serif);margin:0}.ov-continue{border-color:var(--accent-line);border-left:4px solid var(--accent)}.ov-continue strong{font-size:var(--fs-2xl)}.ov-go{display:inline-flex;align-items:center;gap:var(--space-2);margin-top:auto;padding-top:var(--space-2);color:var(--accent);font-weight:var(--fw-semibold);font-size:var(--fs-sm)}.ov-week ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-1)}.ov-week .text-button{min-height:var(--tap);text-align:left;font-size:var(--fs-sm)}.ov-days{font:var(--fw-semibold) var(--fs-3xl)/1.1 var(--font-serif);color:var(--accent)}.mastery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-3);margin-top:var(--space-4)}.mastery-tile{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);text-align:left;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text)}.mastery-tile:hover{border-color:var(--border-strong)}.mastery-tile.is-done{border-color:var(--accent-2-line)}.mastery-tile>.mono{color:var(--text-faint);font-size:var(--fs-xs)}.mastery-tile strong{font-size:var(--fs-md);font-weight:var(--fw-semibold);line-height:var(--lh-snug)}.mastery-tile .fine-print{display:inline-flex;align-items:center;gap:var(--space-1);margin:0}.mastery-meter{display:block;height:4px;border-radius:var(--radius-pill);background:var(--surface-sunken);overflow:hidden;margin-top:auto}.mastery-meter>span{display:block;height:100%;background:var(--accent-2)}.lessons-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-6)}.lessons-head>.mono{color:var(--text-muted);font-size:var(--fs-sm)}.segmented{display:inline-flex;padding:var(--space-1);gap:var(--space-1);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-pill)}.segmented>button{display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--tap);padding:0 var(--space-4);border-radius:var(--radius-pill);border:1px solid transparent;background:none;color:var(--text-muted);font-size:var(--fs-sm);font-weight:var(--fw-medium)}.segmented>button[aria-pressed=true]{background:var(--surface-control);border-color:var(--border-strong);color:var(--text);box-shadow:var(--shadow-sm)}.segmented .mono{font-size:var(--fs-xs);color:var(--text-faint)}.lesson-list{list-style:none;margin:var(--space-4) 0 0;padding:0;border-top:1px solid var(--border)}.lesson-list button{display:flex;align-items:center;gap:var(--space-5);width:100%;text-align:left;padding:var(--space-5) var(--space-3);border-bottom:1px solid var(--border);color:var(--text)}.lesson-list button:hover{background:var(--hover)}.lesson-row-text{flex:1;min-width:0}.lesson-row-text strong{font-size:var(--fs-lg);font-weight:var(--fw-semibold)}.lesson-badges{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.lesson-badges>span{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:var(--fs-xs);color:var(--text-muted)}.lesson-badges>.is-curated{border-color:var(--accent-line);color:var(--accent)}.exam-prep{display:flex;flex-direction:column;gap:var(--space-10)}.exam-hero{display:grid;grid-template-columns:minmax(220px,320px) 1fr;gap:var(--space-5)}.exam-hero>div{padding:var(--space-6);background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg)}.exam-count{display:flex;align-items:baseline;gap:var(--space-3);margin:var(--space-2) 0;font-size:var(--fs-lg);color:var(--text-muted)}.exam-count>.exam-num{font:var(--fw-semibold) var(--fs-6xl)/1 var(--font-serif);color:var(--accent);font-variant-numeric:lining-nums}.exam-mock{display:flex;gap:var(--space-4);align-items:flex-start}.exam-mock>svg{flex:none;color:var(--accent-2)}.exam-mock strong{font:var(--fw-semibold) var(--fs-xl) var(--font-serif)}.exam-mock .button{margin-top:var(--space-3)}.exam-columns{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--space-8);align-items:start}.exam-columns .section-heading{margin-top:0}.exam-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.exam-table th{text-align:left;font-size:var(--fs-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-strong)}.exam-table td{padding:var(--space-4) var(--space-3);border-bottom:1px solid var(--border);vertical-align:top;line-height:var(--lh-base)}.exam-table td:first-child{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}.kind-chip{font-size:var(--fs-xs);font-weight:var(--fw-semibold);padding:1px var(--space-2);border-radius:var(--radius-pill);border:1px solid var(--accent-line);color:var(--accent)}.kind-chip.kind-exam{border-color:var(--accent-2-line);color:var(--accent-2)}.library-homework{margin:0 0 var(--space-4)}@media(max-width:1279px){.ov-top{grid-template-columns:1fr 1fr}}@media(max-width:960px){.exam-hero,.exam-columns{grid-template-columns:1fr}}@media(max-width:640px){.ov-top{grid-template-columns:1fr;margin-bottom:var(--space-8)}.lesson-list button{gap:var(--space-3);padding:var(--space-4) var(--space-1)}.segmented{width:100%}.segmented>button{flex:1;justify-content:center;padding:0 var(--space-2);min-height:var(--tap)}.exam-table thead{display:none}.exam-table tr{display:grid;grid-template-columns:1fr auto;border-bottom:1px solid var(--border);padding:var(--space-3) 0}.exam-table td{border:0;padding:var(--space-1) 0}.exam-table td:first-child{grid-column:1 / -1}.course-tabs{position:sticky;top:var(--space-2);box-shadow:var(--shadow-sm);z-index:var(--z-sticky);gap:var(--space-1);padding:var(--space-1);margin-left:calc(-1 * var(--space-1));margin-right:calc(-1 * var(--space-1));background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-pill);scrollbar-width:none;-webkit-mask-image:none;mask-image:none}.course-tabs::-webkit-scrollbar{display:none}.course-tabs>button{flex:none;padding:0 var(--space-4);border:1px solid transparent;border-radius:var(--radius-pill)}.course-tabs>button.active{background:var(--surface-control);border-color:var(--border-strong)}}.content-coming{min-height:35vh}.content-coming p{max-width:52ch;margin-inline:auto;text-align:center}.content-coming-links{list-style:none;margin:var(--space-3) 0 0;padding:0;display:grid;gap:var(--space-2)}.content-coming-links a{display:inline-flex;align-items:center;gap:var(--space-1)}.topic-page{--course-color: var(--accent);padding-top:var(--space-5);padding-bottom:var(--space-12)}.topic-page.course-calc{--course-color: var(--course-calc)}.topic-page.course-lal{--course-color: var(--course-lal)}.topic-page.course-dmg{--course-color: var(--course-dmg)}.topic-page.course-prg{--course-color: var(--course-prg)}.topic-page.course-safety{--course-color: var(--course-safety)}.lesson-topline{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--border)}.lesson-topline>.mono{color:var(--text-muted)}.topic-step{display:flex;gap:var(--space-1)}.topic-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,360px);gap:var(--space-10);padding-top:var(--space-8)}.topic-main{position:relative;min-width:0;display:flex;flex-direction:column;gap:var(--space-5)}.topic-glyph{position:absolute;right:0;top:calc(-1 * var(--space-4));font:var(--fw-semibold) clamp(5rem,12vw,9rem)/1 var(--font-serif);color:var(--course-color);opacity:.14;pointer-events:none}.topic-main h1{font:var(--fw-semibold) var(--fs-h1)/var(--lh-tight) var(--font-serif);max-width:18ch;margin:0}.topic-concept{font-size:var(--fs-xl);line-height:var(--lh-snug);max-width:44ch;margin:0;color:var(--text)}.topic-formula{font-size:var(--fs-xl);border-left:3px solid var(--course-color);padding:var(--space-2) 0 var(--space-2) var(--space-5);overflow-x:auto}.topic-formula .katex-display{margin:0;text-align:left}.present-start{display:flex;align-items:center;gap:var(--space-4);width:fit-content;max-width:100%;margin-top:var(--space-3);padding:var(--space-4) var(--space-6) var(--space-4) var(--space-4);min-height:72px;text-align:left;border-radius:var(--radius-lg);background:var(--accent-fill);color:var(--accent-contrast);border:0;box-shadow:var(--shadow-sm);transition:background-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.present-start:hover{background:var(--accent-fill-hover)}.present-start:active{transform:translateY(1px)}.present-start-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;border:2px solid currentColor;flex:none}.present-start>span:nth-child(2){display:flex;flex-direction:column;gap:2px}.present-start strong{font-size:var(--fs-lg)}.present-start>span:nth-child(2)>span{color:var(--accent-contrast-muted);font-size:var(--fs-sm)}.present-start kbd{margin-left:var(--space-3);background:none;border-color:currentColor;color:inherit}.topic-outline{list-style:none;margin:var(--space-4) 0 0;padding:0;display:grid;border-top:1px solid var(--border)}.topic-outline button{width:100%;display:grid;grid-template-columns:2.25rem 9.5rem 1fr;gap:var(--space-3);align-items:baseline;min-height:var(--tap);padding:var(--space-2) var(--space-2);text-align:left;background:none;border:0;border-bottom:1px solid var(--border);color:var(--text)}.topic-outline button:hover{background:var(--hover)}.topic-outline .mono{color:var(--text-faint);font-size:var(--fs-xs)}.outline-kind{font-size:var(--fs-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)}.outline-kind.kind-lab,.outline-kind.kind-check{color:var(--course-color);font-weight:var(--fw-semibold)}.outline-kind.kind-mistake{color:var(--danger)}.topic-side{display:flex;flex-direction:column;gap:var(--space-4)}.topic-done{display:flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap);border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--surface-raised);color:var(--text);font-weight:var(--fw-semibold)}.topic-done.is-done{border-color:var(--success);color:var(--success)}.topic-next{display:grid;gap:var(--space-2)}.topic-next>button{display:flex;align-items:flex-start;gap:var(--space-3);text-align:left;padding:var(--space-3) var(--space-4);min-height:56px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface-raised);color:var(--text)}.topic-next>button:hover{border-color:var(--border-strong);background:var(--hover)}.topic-next>button>svg{flex:none;color:var(--course-color);margin-top:2px}.topic-next>button>span{display:flex;flex-direction:column;font-size:var(--fs-sm);color:var(--text-muted)}.topic-next strong{color:var(--text);font-size:var(--fs-md)}.topic-note-label{font-weight:var(--fw-semibold);margin-top:var(--space-2)}.topic-note{min-height:120px;width:100%;resize:vertical}.scene-sources{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-4) 0;color:var(--text-muted)}.present-loading{position:fixed;top:0;right:0;bottom:0;left:0;z-index:calc(var(--z-toast) - 1);display:grid;place-items:center;background:var(--surface);color:var(--text-muted)}.takeaway{display:flex;align-items:flex-start;gap:var(--space-4);background:var(--accent-2-tint);border-left:3px solid var(--accent-2);padding:var(--space-5) var(--space-6);margin:var(--space-5) 0;font-size:var(--fs-md);line-height:1.6;border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--text)}.takeaway>svg{color:var(--accent-2);margin-top:3px}.takeaway .eyebrow{color:var(--accent-2);margin-bottom:var(--space-2)}.lesson-quicklinks{display:flex;gap:var(--space-3);flex-wrap:wrap;margin:var(--space-5) 0 var(--space-8)}.lesson-quicklinks button{display:flex;align-items:center;gap:var(--space-3);font-size:var(--fs-sm);color:var(--accent-2);border:1px solid var(--accent-2-line);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);min-height:var(--tap);background:var(--accent-2-tint)}.lesson-quicklinks button:hover{background:var(--accent-2-tint);border-color:var(--accent-2-line-strong)}@media(max-width:960px){.topic-grid{grid-template-columns:1fr;gap:var(--space-8)}}@media(max-width:640px){.topic-grid{padding-top:var(--space-5)}.topic-concept{font-size:var(--fs-lg)}.topic-formula{font-size:var(--fs-md)}.present-start{width:100%;padding-right:var(--space-4)}.present-start kbd{display:none}.topic-outline button{grid-template-columns:1.75rem 1fr}.topic-outline .outline-kind{grid-column:2}.topic-outline button>.bilingual{grid-column:2}.lesson-quicklinks button{font-size:var(--fs-xs);flex:1;padding:var(--space-3);gap:var(--space-2)}}.practice,.recall{max-width:var(--page-narrow)}.practice-toolbar{display:flex;align-items:center;gap:var(--space-6);justify-content:space-between;padding:var(--space-5) 0}.practice-toolbar>label,.recall .section-heading>label{font-size:var(--fs-sm);display:flex;align-items:center;gap:var(--space-2);color:var(--text-muted)}.practice-toolbar select{max-width:45%}.question-card{background:var(--surface-raised);border:1px solid var(--border);padding:var(--space-8) var(--space-8) var(--space-6);margin:var(--space-6) 0;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.question-top{display:flex;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}.question-card h3{font-size:var(--fs-2xl);margin-bottom:var(--space-6);font-family:var(--font-serif);font-weight:var(--fw-semibold);line-height:1.3}.question-card h3 .translation{font-size:var(--fs-md);font-family:var(--font-sans)}.question-card>.formula{font-size:var(--fs-xl);margin:var(--space-5) 0}.answer-options{display:grid;gap:var(--space-3);margin:var(--space-6) 0}.answer-option{border:1px solid var(--border);padding:var(--space-3) var(--space-4);display:flex;gap:var(--space-4);align-items:center;text-align:left;font-size:var(--fs-md);background:var(--surface-raised);border-radius:var(--radius-md);border-color:var(--border-strong);min-height:var(--tap);transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.answer-option.picked{border-color:var(--accent);background:var(--accent-tint-1);box-shadow:inset 0 0 0 1px var(--accent)}.answer-option:disabled{opacity:1}.answer-option.right{border-color:var(--success);background:var(--accent-2-tint);box-shadow:inset 0 0 0 1px var(--success)}.answer-option.wrong{border-color:var(--danger);background:var(--danger-tint);box-shadow:inset 0 0 0 1px var(--danger)}.answer-option>span:nth-child(2){flex:1;min-width:0}.option-letter{height:28px;min-width:28px;border:1px solid var(--border);display:grid;place-items:center;font:var(--fw-semibold) var(--fs-xs) var(--font-sans);color:var(--text-muted);border-radius:var(--radius-sm);border-color:var(--border-strong)}.answer-feedback{margin:var(--space-6) 0;padding:var(--space-6);background:var(--surface-sunken);border:1px solid var(--border);font-size:var(--fs-md);border-radius:var(--radius-md)}.feedback-label{display:block;color:var(--accent);font-size:var(--fs-md);margin-bottom:var(--space-5);font-weight:var(--fw-semibold)}.feedback-label.correct{color:var(--accent-2)}.feedback-label.incorrect{color:var(--danger)}.option-explanation{border-top:1px solid var(--border);padding:var(--space-4) 0;font-size:var(--fs-sm);line-height:1.7}.option-explanation strong{display:block;color:var(--accent);margin-bottom:var(--space-2)}.option-explanation .source-links{margin-top:var(--space-2)}.self-grade{padding:var(--space-5) 0;border-top:1px solid var(--border);margin-top:var(--space-5);display:flex;gap:var(--space-3);flex-wrap:wrap;font-size:var(--fs-sm)}.self-grade>.bilingual{width:100%;margin-bottom:var(--space-3)}.question-navigation{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);border-top:1px solid var(--border);padding-top:var(--space-6);margin-top:var(--space-7)}.question-navigation>div{display:flex;gap:var(--space-3)}.answer-field{display:flex;flex-direction:column;gap:var(--space-3);font-size:var(--fs-sm);margin:var(--space-6) 0}.answer-field textarea{min-height:180px;resize:vertical;font:var(--fs-sm)/1.8 var(--font-mono)}.answer-field input{max-width:340px}.answer-option:hover:not(:disabled){border-color:var(--accent);background:var(--accent-tint-1)}.answer-option.right .option-letter{background:var(--success);color:var(--surface-raised);border-color:var(--success)}.answer-option.wrong .option-letter{background:var(--danger);color:var(--surface-raised);border-color:var(--danger)}@media(max-width:960px){.practice-toolbar{flex-wrap:wrap;gap:var(--space-4)}.practice-toolbar select{max-width:100%;width:100%}.practice .section-heading{align-items:flex-start}.practice .section-heading>.button{padding:var(--space-2);font-size:var(--fs-xs);white-space:nowrap}.question-card{padding:var(--space-6)}.question-card h3{font-size:var(--fs-xl)}.question-card h3 .translation{font-size:var(--fs-sm)}}@media(max-width:640px){.question-card,.answer-feedback{padding:var(--space-5)}.answer-option{padding:var(--space-3);gap:var(--space-3);font-size:var(--fs-xs)}.question-card>.formula{font-size:var(--fs-lg)}.question-navigation .button{padding:var(--space-3);min-width:var(--tap);justify-content:center}.answer-field input,.answer-field textarea,.practice-toolbar select{font-size:var(--fs-md)}}.flashcard{border:1px solid var(--accent-line-soft);background:var(--surface-raised);padding:var(--space-10);min-height:360px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;margin-top:var(--space-6);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border-color:var(--border)}.flashcard>.eyebrow{margin-bottom:var(--space-8)}.flashcard h3{font:var(--fw-semibold) var(--fs-4xl)/1.2 var(--font-serif);max-width:730px;margin-bottom:var(--space-7)}.flashcard h3 .translation{font:var(--fs-md)/1.6 var(--font-sans);margin-top:var(--space-4)}.card-back{padding-top:var(--space-5);border-top:1px solid var(--border);width:100%}.card-back p{font-size:var(--fs-md)}.card-back .source-links{margin-top:var(--space-5)}.rating-buttons{display:flex;justify-content:center;gap:var(--space-4);margin-top:var(--space-5)}@media(max-width:960px){.flashcard{padding:var(--space-8) var(--space-6)}.flashcard h3{font-size:var(--fs-3xl)}}@media(max-width:640px){.rating-buttons{gap:var(--space-2)}.rating-buttons .button{font-size:var(--fs-xs);padding:var(--space-3)}}.library-tools{display:flex;gap:var(--space-3);align-items:center}.library-caption{font-size:var(--fs-sm);margin:var(--space-5) 0 var(--space-7);max-width:820px}.resource-row{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-5) var(--space-2);border-top:1px solid var(--border)}.resource-icon{height:44px;width:37px;border:1px solid var(--border);display:grid;place-items:center;color:var(--accent-2);flex-shrink:0;border-radius:var(--radius-sm);background:var(--surface-raised);border-color:var(--border-strong)}.resource-row>div{flex:1;min-width:0}.resource-row h3{font-size:var(--fs-md);margin:0 0 var(--space-1);overflow-wrap:anywhere}.resource-row p{font-size:var(--fs-sm);margin:0 0 var(--space-2)}.resource-tags{display:flex;gap:var(--space-2);flex-wrap:wrap;font:var(--fw-medium) var(--fs-xs) var(--font-sans)}.resource-tags .historical{color:var(--accent);border-color:var(--accent-line-soft)}.resource-row:hover{background:var(--hover)}.library-tools select{min-height:var(--tap)}.resource-tags>span{padding:2px var(--space-2);background:var(--surface-sunken);border:1px solid var(--border);color:var(--text-muted);border-radius:var(--radius-pill)}.resource-tags .bilingual>span{display:inline}.resource-tags .translation{margin-left:var(--space-1);font-size:inherit}@media(max-width:960px){.library-tools{flex-wrap:wrap}.library-tools>select{flex:1;min-width:0;font-size:var(--fs-xs)}.resource-row{gap:var(--space-3)}.resource-row h3{font-size:var(--fs-xs)}.resource-row>.icon-button{min-width:28px;width:28px}}@media(max-width:640px){.library-tools input,.library-tools select{font-size:var(--fs-md)}.resource-row .icon-button{min-width:var(--tap);min-height:var(--tap)}}.cheat-heading{display:flex;gap:var(--space-8);justify-content:space-between;align-items:center;margin:var(--space-10) 0 var(--space-7)}.cheat-heading h2{margin:var(--space-3) 0 var(--space-4);font-size:var(--fs-h2)}.cheat-heading p{font-size:var(--fs-md);max-width:680px}.cheat-count{text-align:right;padding:var(--space-5) 0 var(--space-5) var(--space-10);border-left:1px solid var(--border)}.cheat-count strong{font:var(--fw-semibold) var(--fs-6xl)/1 var(--font-serif);color:var(--accent)}.cheat-count>.bilingual{font:var(--fw-semibold) var(--fs-xs)/1.5 var(--font-sans);color:var(--text-muted);letter-spacing:.04em}.cheat-toolbar{display:flex;gap:var(--space-3);align-items:stretch;position:sticky;top:0;z-index:var(--z-sticky);background:var(--surface-glass);padding:var(--space-4) 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.cheat-toolbar select{max-width:35%}.cheat-section{margin:var(--space-10) 0 var(--space-12);break-inside:avoid-page}.cheat-section-title{display:flex;gap:var(--space-5);align-items:flex-start;margin:0 0 var(--space-6)}.cheat-topic-number{font:var(--fw-semibold) var(--fs-5xl) var(--font-serif);color:var(--accent);line-height:1}.cheat-section-title>div{flex:1}.cheat-section-title h3{font:var(--fw-semibold) var(--fs-3xl) var(--font-serif);margin:0 0 var(--space-3)}.cheat-section-title h3 .translation{font:var(--fs-sm) var(--font-sans)}@media(max-width:960px){.cheat-heading h2{font-size:var(--fs-4xl)}.cheat-count strong{font-size:var(--fs-5xl)}.cheat-toolbar{flex-wrap:wrap;position:static}.cheat-toolbar .search-box{flex-basis:100%}.cheat-toolbar select{max-width:100%;flex:1;min-width:0}.cheat-heading{gap:var(--space-5)}.cheat-section-title .text-button{font-size:var(--fs-xs)}}@media(max-width:640px){.cheat-heading{flex-direction:column;align-items:flex-start;gap:var(--space-3)}.cheat-count{text-align:left;padding:var(--space-3) 0 0;border-left:0;border-top:1px solid var(--border);align-self:stretch}.cheat-heading h2{font-size:var(--fs-3xl)}.cheat-heading p{font-size:var(--fs-xs)}.cheat-count strong{font-size:var(--fs-5xl)}.cheat-heading{align-items:flex-start}.cheat-section-title{gap:var(--space-3)}.cheat-section-title h3{font-size:var(--fs-2xl)}.cheat-topic-number{font-size:var(--fs-4xl)}}.fs-card{padding:var(--space-6) var(--space-7) var(--space-7);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised)}.fs-card .cheat-section-title{align-items:center}.fs-count{font:var(--fw-medium) var(--fs-xs) / 1.4 var(--font-sans);color:var(--text-muted)}.fs-poster{flex:none}.fs-rows{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,380px),1fr));gap:0 var(--space-7);margin:0}.fs-row{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-1);min-width:0;padding:var(--space-4) 0 var(--space-4) var(--space-4);border-top:1px solid var(--border);border-left:2px solid transparent}.fs-row.is-key{border-left-color:var(--course-color, var(--accent))}.fs-row dt{font:var(--fw-semibold) var(--fs-xs) / 1.35 var(--font-sans);color:var(--text-muted);letter-spacing:.02em}.fs-row.is-key dt{color:var(--text)}.fs-row dd{margin:0;min-width:0;overflow-x:auto}.fs-row .formula{font-size:var(--fs-md)}.fs-row .formula-parts{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--space-6)}.fs-row .katex-display{margin:var(--space-1) 0 0;text-align:left}.fs-row .katex-display>.katex{text-align:left}.fs-row .code-block{margin:var(--space-1) 0 0;font-size:var(--fs-xs)}.fs-value{font:var(--fw-semibold) var(--fs-xl) / 1.2 var(--font-serif);color:var(--text);font-variant-numeric:tabular-nums}@media(max-width:640px){.fs-card{padding:var(--space-5) var(--space-4)}.fs-card .cheat-section-title{flex-wrap:wrap}.fs-row{padding-left:var(--space-3)}}@media print{.fs-card{border:0;padding:0;background:none}.fs-poster{display:none!important}.fs-rows{grid-template-columns:1fr 1fr;gap:0 var(--space-5)}.fs-row{padding:var(--space-2) 0 var(--space-2) var(--space-2);break-inside:avoid;border-top-color:var(--print-rule)!important}.fs-row .formula{font-size:var(--fs-sm)}}.fs-empty{margin:var(--space-3) 0 0;font:var(--fw-medium) var(--fs-sm) / 1.5 var(--font-sans);color:var(--text-muted)}.hw{display:grid;gap:var(--space-6);max-width:var(--container);margin:0 auto;padding:var(--space-8) var(--gutter) var(--space-12)}.hw-head{display:flex;flex-wrap:wrap;gap:var(--space-5);align-items:flex-end;justify-content:space-between}.hw-head h1{margin:var(--space-1) 0 var(--space-2);font:var(--fw-semibold) var(--fs-h1)/var(--lh-tight) var(--font-display)}.hw-head h1:focus{outline:none}.hw-lede{margin:0;max-width:60ch;color:var(--text-muted)}.hw-head-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.hw-remind-note{display:inline-flex;gap:var(--space-2);align-items:center;color:var(--text-muted);font-size:var(--fs-sm)}.hw-filter{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.hw-filter button{display:inline-flex;gap:var(--space-2);align-items:center;min-height:var(--tap);padding:0 var(--space-4);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-muted);font:var(--fw-medium) var(--fs-sm)/1 var(--font-sans);cursor:pointer}.hw-filter button:hover{background:var(--hover);color:var(--text)}.hw-filter button[aria-pressed=true]{border-color:var(--accent-line-strong);background:var(--accent-tint);color:var(--accent-text)}.hw-glyph{color:var(--course-color, var(--text-faint))}.hw-filter-count{margin-left:auto;color:var(--text-faint);font-size:var(--fs-xs)}.hw-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4) var(--space-5);padding:var(--space-6);border:1px solid var(--accent-line);border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:var(--shadow-sm)}.hw-wide{grid-column:1 / -1}.hw-form-head{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:center}.hw-form-head h2{margin:0;font-size:var(--fs-lg)}.hw-field{display:grid;gap:var(--space-2);font-size:var(--fs-sm);font-weight:var(--fw-medium)}.hw-field small{color:var(--text-faint);font-weight:var(--fw-regular)}.hw-field input,.hw-field select,.hw-field textarea{min-height:var(--tap);padding:var(--space-2) var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-control);color:var(--text);font:var(--fw-regular) var(--fs-md)/var(--lh-snug) var(--font-sans)}.hw-field input:disabled{opacity:.55}.hw-field textarea{resize:vertical}.hw-error{margin:0;color:var(--danger);font-size:var(--fs-sm)}.hw-form-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.hw-msg{display:flex;gap:var(--space-3);align-items:center;margin:0;padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);border-radius:var(--radius-md);background:var(--surface-sunken);font-size:var(--fs-sm)}.hw-msg-close{margin-left:auto}.hw-group{display:grid;gap:var(--space-3)}.hw-group-title{display:flex;gap:var(--space-2);align-items:baseline;margin:0;font:var(--fw-semibold) var(--fs-sm)/1 var(--font-sans);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)}.hw-group[data-group=soon] .hw-group-title{color:var(--accent-text)}.hw-count{color:var(--text-faint);font-weight:var(--fw-regular)}.hw-none{margin:0;padding:var(--space-4);border:1px dashed var(--border);border-radius:var(--radius-md);color:var(--text-faint);font-size:var(--fs-sm)}.hw-list{display:grid;margin:0;padding:0;list-style:none;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}.hw-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:var(--space-2) var(--space-4);align-items:center;padding:var(--space-4) var(--space-4) var(--space-4) var(--space-3);border-left:3px solid var(--course-color, var(--border))}.hw-item+.hw-item{border-top:1px solid var(--border)}.hw-item[data-late]{background:var(--danger-tint)}.hw-item[data-status=done] .hw-item-title{color:var(--text-muted);text-decoration:line-through;text-decoration-color:var(--text-faint)}.hw-status{display:grid;place-items:center;width:var(--tap);height:var(--tap);border:0;border-radius:var(--radius-pill);background:transparent;color:var(--text-faint);cursor:pointer}.hw-status:hover{background:var(--hover);color:var(--text)}.hw-item[data-status=doing] .hw-status{color:var(--warn)}.hw-item[data-status=done] .hw-status{color:var(--success)}.hw-item-main{display:grid;gap:var(--space-1);min-width:0}.hw-item-main p{margin:0}.hw-item-kicker{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;color:var(--text-muted);font-size:var(--fs-xs)}.hw-code{color:var(--course-color, var(--text));font-weight:var(--fw-bold)}.hw-tag,.hw-doing{padding:1px var(--space-2);border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--text-muted)}.hw-doing{background:var(--accent-2-tint);color:var(--accent-2)}.hw-item-title{font-weight:var(--fw-semibold);line-height:var(--lh-snug);overflow-wrap:anywhere}.hw-item-meta{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);color:var(--text-muted);font-size:var(--fs-sm)}.hw-item-meta a{display:inline-flex;gap:var(--space-1);align-items:center;color:var(--accent-text)}.hw-item-notes{color:var(--text-muted);font-size:var(--fs-sm);white-space:pre-line}.hw-item-actions{display:flex;gap:var(--space-1)}.hw-chip{padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--text-muted);font:var(--fw-semibold) var(--fs-xs)/1.3 var(--font-sans);white-space:nowrap}.hw-chip[data-u=soon]{background:var(--accent-tint);color:var(--accent-text)}.hw-chip[data-u=late]{background:var(--danger);color:var(--accent-contrast)}.hw-chip[data-u=done]{color:var(--success)}.hw-chip[data-u=none]{background:transparent;color:var(--text-faint);font-weight:var(--fw-regular)}.hw-foot{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;padding-top:var(--space-4);border-top:1px solid var(--border)}.hw-fine{flex-basis:100%;margin:0;color:var(--text-faint);font-size:var(--fs-xs)}.hw-banner{display:flex;gap:var(--space-3);align-items:center;width:min(var(--container),calc(100% - 2 * var(--gutter)));margin:var(--space-3) auto 0;padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);border:1px solid var(--accent-line);border-radius:var(--radius-md);background:var(--accent-tint);color:var(--text);font-size:var(--fs-sm)}.hw-banner>svg{flex:none;color:var(--accent-text)}.hw-banner p{display:flex;flex-wrap:wrap;gap:0 var(--space-3);margin:0;flex:1;min-width:0}.hw-banner p span{color:var(--text-muted);overflow-wrap:anywhere}.hw-banner .text-button{display:inline-flex;gap:var(--space-1);align-items:center;white-space:nowrap}.hw-due .hw-due-code{font:var(--fw-bold) var(--fs-xs)/1 var(--font-sans)}.hw-due .dash-row-kicker{display:none}.cal-due-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;margin-left:var(--space-1);padding:0 var(--space-1);border-radius:var(--radius-pill);background:var(--accent-fill);color:var(--accent-contrast);font:var(--fw-bold) 11px/1 var(--font-sans);vertical-align:middle}.cal-day-due{display:block;width:8px;height:8px;border-radius:50%;background:var(--accent-fill);box-shadow:0 0 0 2px var(--surface)}@media(max-width:640px){.hw{padding-top:var(--space-6);gap:var(--space-5)}.hw-head-actions{width:100%}.hw-head-actions .button{flex:1;justify-content:center}.hw-form{grid-template-columns:minmax(0,1fr);padding:var(--space-4)}.hw-item{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"s m m" "s c a";gap:var(--space-1) var(--space-3);padding-right:var(--space-2)}.hw-status{grid-area:s;align-self:start}.hw-item-main{grid-area:m}.hw-chip{grid-area:c;justify-self:start}.hw-item-actions{grid-area:a}.hw-filter-count{flex-basis:100%;margin-left:0}}.source-modal,.help-modal{background:var(--surface-raised);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-7);box-shadow:var(--shadow-lg);max-height:92dvh;overflow:auto}.source-modal{width:min(1100px,94vw)}.help-modal{width:min(550px,94vw)}dialog::backdrop{background:var(--overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-5);margin-bottom:var(--space-5)}.modal-heading h2{font-size:var(--fs-2xl);overflow-wrap:anywhere;margin:var(--space-2) 0}.modal-heading p{margin-bottom:0}.source-image{background:var(--page-white);min-height:200px;display:flex;justify-content:center;border-radius:var(--radius-md);overflow:hidden}.source-image img{display:block;width:100%;height:auto;object-fit:contain}.text-resource,.pdf-resource{width:100%;min-height:65vh;border:0;background:var(--page-white)}.source-controls{display:flex;justify-content:space-between;gap:var(--space-4);margin:var(--space-5) 0}.shortcut{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4) 0;border-top:1px solid var(--border);font-size:var(--fs-sm)}@media(max-width:960px){.source-modal{padding:var(--space-5)}.source-controls{gap:var(--space-2)}.source-controls .button{padding:var(--space-3);font-size:var(--fs-xs)}.source-controls .translation{font-size:var(--fs-xs)}}@media(max-width:640px){.modal-heading h2{font-size:var(--fs-xl)}.source-controls .button{gap:var(--space-1)}.source-controls .button>svg{display:none}}.lab-selector{display:flex;gap:var(--space-2);flex-wrap:wrap;margin:var(--space-6) 0}.lab-selector>button{border:1px solid var(--border);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);font-size:var(--fs-sm);color:var(--text);min-height:var(--tap);background:var(--surface-raised);border-color:var(--border-strong)}.lab-selector>button.active{border-color:var(--accent);background:var(--accent-fill);color:var(--accent-contrast)}.extra-lab{background:var(--surface-raised);border:1px solid var(--border);padding:var(--space-8);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.extra-lab h2{font-size:var(--fs-4xl);margin:var(--space-3) 0 var(--space-5)}.extra-lab p{font-size:var(--fs-md)}.lab-intro{max-width:780px}.experiment-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-10);align-items:center;margin-top:var(--space-8)}.experiment-svg{width:100%;max-height:440px;background:var(--plot-bg);border:1px solid var(--border);border-radius:var(--radius-md)}.experiment-controls>label{display:block;font-size:var(--fs-sm);margin:var(--space-4) 0;color:var(--text-muted)}.experiment-controls output{float:right;color:var(--accent);font:var(--fw-semibold) var(--fs-sm) var(--font-mono)}.edge-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.trace-state{display:flex;gap:var(--space-6);padding:var(--space-5);border:1px solid var(--border);font:var(--fs-sm) var(--font-sans);border-radius:var(--radius-md)}.trace-state>span{display:flex;flex-direction:column;gap:var(--space-3);color:var(--text-muted)}.trace-state strong{font-size:var(--fs-2xl);color:var(--accent)}.ip-display{text-align:center;font:5.625rem var(--font-mono);letter-spacing:15px;padding:var(--space-8);color:var(--accent)}.ip-display>span{padding:var(--space-1) var(--space-4);border-bottom:1px solid var(--border)}@media(max-width:960px){.experiment-grid{grid-template-columns:1fr;gap:var(--space-6)}.extra-lab{padding:var(--space-6)}}@media(max-width:640px){.ip-display{font-size:var(--fs-6xl);letter-spacing:6px}}.topic-experiment{position:relative;border:1px solid var(--border);background:var(--surface-raised);padding:var(--space-8);margin:var(--space-6) 0;overflow:hidden;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.topic-experiment:before{content:"";height:3px;position:absolute;top:0;left:var(--space-8);width:72px;background:var(--accent);border-radius:0 0 3px 3px}.experiment-heading h3{font:var(--fw-semibold) var(--fs-4xl)/1.1 var(--font-serif);margin:var(--space-4) 0}.experiment-heading h3 .translation{font:var(--fs-sm)/1.6 var(--font-sans);margin-top:var(--space-3)}.experiment-heading p{font-size:var(--fs-md);max-width:750px}.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:var(--glow)}.experiment-hint{display:flex;gap:var(--space-4);margin-top:var(--space-6);border-top:1px solid var(--border);padding-top:var(--space-5);font-size:var(--fs-sm);line-height:1.7;color:var(--text-muted)}.experiment-hint>span:first-child{color:var(--accent);font:var(--fs-2xl) var(--font-serif)}.exp-plot{width:100%;display:block;background:var(--plot-bg);border:1px solid var(--border);border-radius:var(--radius-md);min-width:0;margin:var(--space-4) 0}.exp-plot text{fill:var(--text-muted);font:var(--fs-xs) var(--font-mono)}.exp-stats{display:flex;gap:var(--space-3);flex-wrap:wrap;margin:var(--space-5) 0}.exp-stat{flex:1;min-width:110px;border:1px solid var(--border);background:var(--surface-sunken);padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:var(--space-3)}.exp-stat>.bilingual{font:var(--fw-semibold) var(--fs-xs)/1.5 var(--font-sans);color:var(--text-muted);letter-spacing:.04em}.exp-stat strong{font:var(--fw-semibold) var(--fs-3xl)/1.2 var(--font-serif);color:var(--accent);overflow-wrap:anywhere;font-variant-numeric:lining-nums tabular-nums}.exp-stat.sage strong{color:var(--accent-2)}.exp-stat.rose strong{color:var(--danger)}.exp-slider{display:block;margin:var(--space-6) 0;font-size:var(--fs-sm)}.exp-slider>span{display:flex;justify-content:space-between;gap:var(--space-5);align-items:center}.exp-slider output{font:var(--fw-semibold) var(--fs-sm) var(--font-mono);color:var(--accent);border:1px solid var(--accent-line-soft);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);min-width:43px;text-align:center}.exp-select{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);font-size:var(--fs-sm);margin:var(--space-5) 0}.exp-select select{min-width:0;max-width:65%;font-size:var(--fs-sm)}.topic-experiment .experiment-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);margin-top:var(--space-6);gap:var(--space-7)}.experiment-visual,.experiment-controls{min-width:0}.topic-experiment .code-block{font-size:var(--fs-sm);border-color:var(--border)}.topic-experiment>.formula{color:var(--accent)}.topic-experiment table{background:var(--surface-sunken)}.topic-experiment table caption{font:var(--fw-semibold) var(--fs-xs)/1.5 var(--font-sans);color:var(--text-muted);padding:var(--space-3);letter-spacing:.04em}.topic-experiment td,.topic-experiment th{padding:var(--space-3)}.topic-experiment .lab-selector{margin:var(--space-5) 0}.topic-experiment .lab-selector button{font-size:var(--fs-sm)}.memory-cells{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-5) 0}.memory-cells>div{min-width:48px;border:1px solid var(--accent-line-soft);border-radius:var(--radius-sm);background:var(--accent-tint-1);display:flex;flex-direction:column}.memory-cells small{padding:var(--space-1) var(--space-2);font:var(--fw-semibold) var(--fs-xs) var(--font-sans);color:var(--text-muted);border-bottom:1px solid var(--border)}.memory-cells strong{font:var(--fs-xl) var(--font-mono);padding:var(--space-3);color:var(--accent)}.memory-box{background:var(--accent-tint-1);border:1px solid var(--accent-line-soft);padding:var(--space-6);white-space:pre-wrap;overflow-wrap:anywhere}.memory-box>span{font:var(--fw-semibold) var(--fs-xs)/1.5 var(--font-sans);color:var(--accent);letter-spacing:.04em}.memory-box pre{font:var(--fs-sm)/1.6 var(--font-mono)}.exploration-gallery{display:grid;grid-template-columns:245px minmax(0,1fr);gap:var(--space-8);align-items:start}.exploration-index{min-width:0;position:sticky;top:var(--space-6);background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) 0}.exploration-index>.eyebrow{padding:0 var(--space-5) var(--space-3);font-size:var(--fs-xs)}.exploration-index>button{display:flex;align-items:flex-start;text-align:left;gap:var(--space-3);width:100%;padding:var(--space-4) var(--space-4);font-size:var(--fs-sm);border-left:2px solid transparent;color:var(--text-muted);min-height:var(--tap)}.exploration-index>button>span:first-child{font:var(--fw-semibold) var(--fs-xs) var(--font-sans);opacity:1;margin-top:1px;color:var(--text-faint)}.exploration-index>button>.bilingual{flex:1}.exploration-index>button.active{border-color:var(--accent);background:var(--accent-tint-1);color:var(--text)}.exploration-index>button.active>span:first-child{color:var(--accent);opacity:1}.exploration-index .translation{font-size:var(--fs-xs);line-height:1.4}.exploration-stage{min-width:0}.exploration-stage .topic-experiment{margin-top:0}.exploration-stage .experiment-grid{grid-template-columns:1fr}.exploration-stage .experiment-controls{display:block}@media(max-width:960px){.exploration-gallery{grid-template-columns:200px minmax(0,1fr);gap:var(--space-5)}.topic-experiment .experiment-grid{grid-template-columns:1fr}.topic-experiment{padding:var(--space-6)}.exploration-gallery{grid-template-columns:1fr}.exploration-index{position:static;display:flex;overflow:auto;gap:var(--space-2);padding:var(--space-3);max-width:100%;align-items:stretch}.exploration-index>.eyebrow{display:none}.exploration-index>button{min-width:155px;max-width:190px;font-size:var(--fs-xs);border-left:0;border-bottom:2px solid transparent;border-radius:var(--radius-sm);padding:var(--space-3)}.exploration-index>button.active{border-bottom-color:var(--accent)}.exploration-index>button>svg{display:none}.experiment-heading h3{font-size:var(--fs-3xl)}.exp-select{flex-wrap:wrap}.exp-select select{max-width:100%;width:100%}.exp-stats{gap:var(--space-2)}.exp-stat{padding:var(--space-4);min-width:90px}.exp-stat strong{font-size:var(--fs-2xl)}.topic-experiment .experiment-grid{gap:var(--space-5)}.topic-experiment table{display:block;max-width:100%;overflow-x:auto}}@media(max-width:640px){.topic-experiment{padding:var(--space-5);border-radius:var(--radius-sm)}.experiment-heading h3{font-size:var(--fs-3xl)}.experiment-heading .eyebrow{font-size:var(--fs-xs);letter-spacing:1px}.topic-experiment .formula{font-size:var(--fs-md)}.exp-stat>.bilingual{font-size:var(--fs-xs)}}.lab-shell{box-sizing:border-box;width:100%;padding:clamp(var(--space-5),3vw,var(--space-8));color:var(--text);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;border-color:var(--border)}.lab-shell *,.lab-shell *:before,.lab-shell *:after{box-sizing:border-box}.lab-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}.lab-eyebrow{color:var(--accent);font-size:var(--fs-xs);font-weight:700;letter-spacing:.13em;text-transform:uppercase;margin:0 0 var(--space-2)}.lab-heading h3{color:var(--text);font-family:var(--font-serif);font-size:clamp(24px,3vw,35px);font-weight:var(--fw-semibold);line-height:1.09;letter-spacing:-.025em;margin:0}.lab-translation{display:block;color:var(--text-muted);font-size:.78em;line-height:1.25;margin-top:3px;font-weight:400;letter-spacing:0;text-transform:none}.lab-formula{flex:0 0 auto;color:var(--accent);background:var(--accent-tint);border:1px solid var(--accent-line-soft);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-family:var(--font-serif);font-size:clamp(13px,1.5vw,17px);white-space:nowrap}.lab-layout{display:grid;grid-template-columns:minmax(0,1.22fr) minmax(255px,.78fr);gap:var(--space-5);align-items:stretch}.lab-visual{min-width:0}.lab-graph{display:block;width:100%;height:auto;aspect-ratio:640 / 330;overflow:visible}.lab-motion-graph{aspect-ratio:640 / 350}.lab-graph-bg{fill:var(--plot-bg);stroke:var(--border);stroke-width:1}.lab-grid{stroke:var(--plot-grid);stroke-width:1;opacity:1}.lab-axis{stroke:var(--plot-axis);stroke-width:1.4;opacity:.9}.lab-svg-label{font:600 var(--fs-md) var(--font-sans);paint-order:stroke;stroke:var(--plot-bg);stroke-width:4px;stroke-linejoin:round}.lab-svg-axis{fill:var(--text-muted);font:var(--fs-xs) var(--font-sans)}.lab-legend{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5);align-items:center;min-height:26px;margin:var(--space-2) 3px 0;color:var(--text);font-size:var(--fs-xs);line-height:1.25}.lab-legend>span{display:inline-flex;align-items:center;gap:var(--space-2)}.lab-legend .lab-translation{display:inline;font-size:.9em;margin-left:3px}.lab-key{display:inline-block;width:15px;height:3px;border-radius:var(--radius-sm);background:var(--text)}.lab-key-ivory{background:var(--text)}.lab-key-amber{background:var(--accent)}.lab-key-sage{background:var(--accent-2)}.lab-panel{display:flex;flex-direction:column;min-width:0;gap:var(--space-3);padding:clamp(var(--space-4),2vw,var(--space-5));background:var(--surface-sunken);border:1px solid var(--border-strong);border-radius:var(--radius-lg);border-color:var(--border)}.lab-controls{display:flex;flex-direction:column;gap:var(--space-4)}.lab-slider{display:block;min-width:0;cursor:pointer}.lab-slider-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-2);color:var(--text);font-size:var(--fs-sm)}.lab-slider-heading>span{font-family:var(--font-serif);font-size:var(--fs-lg)}.lab-slider-heading output{color:var(--accent);font-size:var(--fs-md);font-weight:700;font-variant-numeric:tabular-nums}.lab-slider input[type=range]{display:block;width:100%;height:22px;margin:0;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:transparent;cursor:pointer;accent-color:var(--accent)}.lab-slider input[type=range]::-webkit-slider-runnable-track{height:4px;background:var(--border-strong);border-radius:var(--radius-md)}.lab-slider input[type=range]::-moz-range-track{height:4px;background:var(--border-strong);border-radius:var(--radius-md)}.lab-slider input[type=range]::-webkit-slider-thumb{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:18px;height:18px;margin-top:-8px;background:var(--accent-fill);border:3px solid var(--surface-raised);box-shadow:0 0 0 1px var(--accent-fill);border-radius:50%}.lab-slider input[type=range]::-moz-range-thumb{width:13px;height:13px;background:var(--accent-fill);border:3px solid var(--surface-raised);box-shadow:0 0 0 1px var(--accent-fill);border-radius:50%}.lab-slider input[type=range]:focus-visible,.lab-shell button:focus-visible{outline:2px solid var(--focus);outline-offset:4px}.lab-button-row{display:flex;flex-wrap:wrap;gap:var(--space-2)}.lab-action,.lab-quiet-button,.lab-tab,.lab-choice{color:var(--text);font:inherit;cursor:pointer;transition:background .18s ease,border-color .18s ease,transform .18s ease}.lab-action:hover:not(:disabled),.lab-quiet-button:hover,.lab-tab:hover,.lab-choice:hover{transform:translateY(-1px)}.lab-action{display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--tap);padding:var(--space-2) var(--space-3);background:var(--accent-fill);border:1px solid var(--accent-fill);border-radius:var(--radius-md);color:var(--accent-contrast);font-size:var(--fs-xs);font-weight:750}.lab-action:disabled{opacity:.5;cursor:not-allowed}.lab-action .lab-translation,.lab-quiet-button .lab-translation{color:inherit}.lab-quiet-button{display:inline-flex;align-items:center;gap:var(--space-1);min-height:var(--tap);padding:var(--space-2) var(--space-3);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:var(--fs-xs)}.lab-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.lab-metric{min-width:0;padding:var(--space-3) var(--space-3);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);border-color:var(--border)}.lab-metric-label{display:block;margin-bottom:var(--space-1);color:var(--text-muted);font-size:var(--fs-xs);line-height:1.2}.lab-metric-label .lab-translation{color:var(--text-faint);font-size:var(--fs-xs)}.lab-metric strong{color:var(--text);font-family:var(--font-serif);font-size:clamp(20px,2.6vw,30px);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;line-height:1}.lab-metric-amber strong{color:var(--accent)}.lab-metric-sage strong{color:var(--accent-2)}.lab-equation{padding:var(--space-3) var(--space-3);color:var(--text);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);font-family:var(--font-serif);font-size:clamp(12px,1.2vw,15px);line-height:1.4;overflow-wrap:anywhere;border-color:var(--border)}.lab-insight{color:var(--text);font-size:var(--fs-sm);line-height:1.52;margin:0}.lab-insight .lab-translation{color:var(--text-faint);font-size:var(--fs-xs);margin-top:var(--space-1)}.lab-state{display:flex;align-items:center;gap:var(--space-2);color:var(--accent-2);font-size:var(--fs-xs);font-weight:700}.lab-state-still{color:var(--accent)}.lab-state-dot{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:currentColor;box-shadow:0 0 10px currentColor}.lab-tabs{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:-4px 0 var(--space-4)}.lab-tab{display:flex;align-items:baseline;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);font-family:var(--font-serif);font-size:var(--fs-lg);min-height:var(--tap)}.lab-tab small{color:var(--text-muted);font-family:var(--font-sans);font-size:var(--fs-xs)}.lab-tab small .lab-translation{display:inline;margin-left:var(--space-1)}.lab-tab.is-active{color:var(--accent-contrast);background:var(--accent-fill);border-color:var(--accent-fill)}.lab-tab.is-active small,.lab-tab.is-active .lab-translation{color:var(--accent-contrast-muted)}.lab-end-labels{display:flex;justify-content:space-between;color:var(--text-faint);font-size:var(--fs-xs);margin-top:-16px}.lab-end-labels .lab-translation{font-size:var(--fs-xs);margin-top:1px}.lab-control-label{display:flex;align-items:baseline;gap:var(--space-2);font-family:var(--font-serif);font-size:var(--fs-lg)}.lab-control-hint{color:var(--text-muted);font-family:var(--font-sans);font-size:var(--fs-xs)}.lab-choice-row{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-2);margin-top:-12px}.lab-choice{min-height:var(--tap);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:var(--fs-sm)}.lab-choice.is-active{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--accent-contrast);font-weight:800}@media(max-width:960px){.lab-layout{grid-template-columns:1fr}.lab-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:start}.lab-controls{grid-row:span 3}.lab-formula{max-width:45%;white-space:normal}}@media(max-width:640px){.lab-shell{padding:var(--space-4);border-radius:var(--radius-lg)}.lab-heading{align-items:flex-start;flex-direction:column;gap:var(--space-3)}.lab-formula{max-width:100%}.lab-panel{display:flex}.lab-svg-label{font-size:var(--fs-lg)}.lab-tab{padding:var(--space-2) var(--space-2);font-size:var(--fs-md)}.lab-tab small{font-size:var(--fs-xs)}}@media(prefers-reduced-motion:reduce){.lab-action,.lab-quiet-button,.lab-tab,.lab-choice{transition:none}.lab-action:hover:not(:disabled),.lab-quiet-button:hover,.lab-tab:hover,.lab-choice:hover{transform:none}}.ai-block{margin:var(--space-4) 0}.ai-trigger{gap:var(--space-2)}.ai-output{border:1px dashed var(--accent-line, var(--border-strong));border-radius:var(--radius-md);background:var(--surface-sunken);padding:var(--space-4);font-size:var(--fs-sm);line-height:var(--lh-base)}.ai-output-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.ai-badge{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.02em;color:var(--text-muted)}.ai-badge svg{color:var(--accent);flex:none}.ai-text{white-space:pre-wrap;margin:0;color:var(--text)}.ai-cursor{display:inline-block;width:.5em;height:1em;vertical-align:text-bottom;background:var(--accent);opacity:.6;animation:ai-blink 1s steps(2) infinite}@keyframes ai-blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.ai-cursor{animation:none}}.ai-plan-list{margin:0 0 var(--space-3);padding-left:var(--space-5);display:grid;gap:var(--space-3)}.ai-plan-list li>span{display:block;color:var(--text)}.ai-plan-list .text-button{margin-top:var(--space-1);font-size:var(--fs-xs)}.ai-ask-form{display:flex;gap:var(--space-3);align-items:stretch;flex-wrap:wrap;margin-bottom:var(--space-3)}.ai-ask-form .search-box{flex:1 1 16rem}.ai-cite{display:inline;border:0;background:var(--accent-tint, var(--hover));color:var(--accent-text, var(--accent));border-radius:var(--radius-sm);padding:0 var(--space-1);margin:0 1px;font:inherit;font-size:var(--fs-xs);cursor:pointer}.ai-cite:hover,.ai-cite:focus-visible{text-decoration:underline}.ai-none{color:var(--text-muted);font-size:var(--fs-sm)}.ai-settings{border-top:1px solid var(--border);margin-top:var(--space-5);padding-top:var(--space-4);display:grid;gap:var(--space-3)}.ai-settings h3{display:flex;align-items:center;gap:var(--space-2);margin:0;font-size:var(--fs-md)}.ai-settings .fine-print{margin:0}.ai-check{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-sm)}.ai-field{display:grid;gap:var(--space-1);font-size:var(--fs-xs);color:var(--text-muted)}.ai-field input{font:inherit;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text);background:var(--surface-control);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);min-width:0}.ai-test{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;font-size:var(--fs-sm)}.ai-ok{color:var(--success)}.ai-bad{color:var(--danger)}.account-toggle{position:relative}.account-toggle svg{display:block}.account-toggle.is-signed-in:after{content:"";position:absolute;right:6px;bottom:6px;width:7px;height:7px;border-radius:50%;background:var(--success);box-shadow:0 0 0 2px var(--surface)}@media(max-width:960px){.header-actions>.icon-button.account-toggle:not(.mobile-toggle){display:inline-flex}}.sync-modal{background:var(--surface-raised);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-7);box-shadow:var(--shadow-lg);width:min(480px,94vw);max-height:92dvh;overflow:auto}.sync-body{display:grid;gap:var(--space-4);margin-top:var(--space-4)}.sync-body>p{margin:0;line-height:var(--lh-base)}.sync-body .fine-print{margin:0;color:var(--text-muted)}.sync-field{display:grid;gap:var(--space-2);font-size:var(--fs-sm);color:var(--text-muted)}.sync-field input{font:inherit;font-size:var(--fs-md);color:var(--text);background:var(--surface-control);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);min-height:var(--tap)}.sync-field input:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.sync-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.sync-actions .button{gap:var(--space-2)}.sync-account{display:flex;align-items:center;gap:var(--space-3)}.sync-account .fine-print{display:block}.sync-avatar{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--accent-fill);color:var(--accent-contrast);font-weight:600}.sync-email{font-family:var(--font-mono);font-size:var(--fs-sm);overflow-wrap:anywhere}.sync-status{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--surface-sunken);font-size:var(--fs-sm)}.sync-status svg{flex:none;color:var(--accent)}.sync-status.is-ok svg{color:var(--success)}.sync-status.is-error svg,.sync-status.is-offline svg{color:var(--danger)}.sync-status-text{display:grid;gap:2px}.sync-status-text strong{font-weight:var(--fw-semibold)}.sync-time{color:var(--text-muted);font-size:var(--fs-xs)}.sync-time .bilingual{display:inline}.sync-error{margin:var(--space-4) 0 0;color:var(--danger);font-size:var(--fs-sm)}.sync-spin{animation:sync-spin 1s linear infinite}@keyframes sync-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.sync-spin{animation:none}}.sync-delete-open{justify-self:start;color:var(--text-muted);font-size:var(--fs-xs)}.sync-delete-open:hover{color:var(--danger)}.sync-delete{display:grid;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--danger-line);border-radius:var(--radius-md);background:var(--danger-tint)}.sync-delete p{margin:0;font-size:var(--fs-sm);line-height:var(--lh-base)}.sync-deleted{margin:0;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--surface-sunken);font-size:var(--fs-sm)}.footer-links{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-4)}.footer-links a,.footer-feedback{display:inline-flex;align-items:center;min-height:var(--tap);font:var(--fw-medium) var(--fs-sm) var(--font-sans);color:var(--text-muted);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px;background:none;border:0;padding:0;cursor:pointer}.footer-links a:hover,.footer-feedback:hover{color:var(--accent);text-decoration-color:currentColor}@media(max-width:960px){.footer-links{order:2}}.feedback-modal{background:var(--surface-raised);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-7);box-shadow:var(--shadow-lg);width:min(540px,94vw);max-height:92dvh;overflow:auto}.feedback-body{display:grid;gap:var(--space-5)}.feedback-body>p{margin:0}.feedback-kinds{border:0;padding:0;margin:0;display:grid;gap:var(--space-2)}.feedback-kinds legend{font-size:var(--fs-sm);color:var(--text-muted);margin-bottom:var(--space-2);padding:0}.feedback-kind{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);min-height:var(--tap);border:1px solid var(--border-strong);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.feedback-kind:hover{background:var(--hover)}.feedback-kind:has(input:checked){border-color:var(--accent);background:var(--accent-tint)}.feedback-kind:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:2px}.feedback-kind input{margin:0;accent-color:var(--accent)}.feedback-kind svg{color:var(--accent)}.feedback-kind span{display:grid;gap:2px}.feedback-kind strong{font-size:var(--fs-sm);font-weight:var(--fw-semibold)}.feedback-kind small{font-size:var(--fs-xs);color:var(--text-muted)}.feedback-field{display:grid;gap:var(--space-2);font-size:var(--fs-sm);color:var(--text-muted)}.feedback-field textarea{font:inherit;font-size:var(--fs-md);line-height:var(--lh-base);color:var(--text);background:var(--surface-control);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);resize:vertical;min-height:120px}.feedback-count{justify-self:end;font-size:var(--fs-xs);color:var(--text-muted)}.feedback-context{display:grid;gap:var(--space-2);font-size:var(--fs-sm)}.feedback-context code,.feedback-context .fine-print{overflow-wrap:anywhere}.feedback-context .fine-print{margin:0;color:var(--text-muted)}.feedback-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.feedback-error{margin:0;color:var(--danger);font-size:var(--fs-sm)}.feedback-done{display:flex;gap:var(--space-3);align-items:flex-start;line-height:var(--lh-base)}.feedback-done svg{flex:none;color:var(--success);margin-top:3px}.feedback-body .fine-print{margin:0;color:var(--text-muted)}.feedback-body .fine-print a{color:var(--accent)}.crash-toast{position:fixed;z-index:var(--z-toast);left:50%;bottom:var(--space-6);transform:translate(-50%);width:min(520px,calc(100vw - 2 * var(--space-4)));display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-5);background:var(--surface-raised);color:var(--text);border:1px solid var(--border-strong);border-left:4px solid var(--danger);border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}.crash-toast p{margin:0;flex:1;font-size:var(--fs-sm);line-height:var(--lh-base)}.crash-toast-actions{display:flex;align-items:center;gap:var(--space-2);flex:none}@media(max-width:640px){.crash-toast{flex-wrap:wrap;bottom:var(--space-4)}.crash-toast-actions{width:100%;justify-content:space-between}}.question-meta{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--space-1) var(--space-4)}.q-report{min-height:32px;font-size:var(--fs-xs);color:var(--text-muted)}.empty-actions,.empty>.button{margin-top:var(--space-5)}.empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3)}.load-failed h3{margin-bottom:var(--space-2)}.load-failed p{max-width:52ch;margin-inline:auto}.hw-empty{margin-top:var(--space-6)}.button.danger{background:var(--danger-tint);color:var(--danger);border-color:var(--danger-line)}.button.danger:hover:not(:disabled){border-color:var(--danger)}.dash-hidden-note{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-1) var(--space-4);margin:var(--space-4) 0 0;padding:var(--space-2) var(--space-4);border:1px dashed var(--border-strong);border-radius:var(--radius-md);font-size:var(--fs-sm);color:var(--text-muted)}.help-tour{margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--border);display:grid;gap:var(--space-3)}.help-tour h3{font:var(--fw-semibold) var(--fs-md) var(--font-sans);margin:0}.help-tour .fine-print{margin:0;color:var(--text-muted)}.help-tour-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}@media print{body{background:var(--print-paper);color:var(--print-ink)}.site-header,.course-bar,.course-tabs,.site-footer,.course-overview,.course-heading,.reference-table>button{display:none}.reference-table{border:0}.reference-table *{color:var(--print-ink)!important}main{padding:0;max-width:none}.reference-table table{font-size:var(--fs-xs)}.source-links{display:none}.cheat-sheets,.cheat-sheets *{color:var(--print-ink)!important;background:var(--print-paper)!important;box-shadow:none!important}.cheat-toolbar,.cheat-section-title>.text-button,.cheat-count,.homework-hub,.lesson-quicklinks{display:none!important}.cheat-section-title{break-after:avoid}.cheat-section{break-inside:auto}.cheat-heading{margin:0 0 var(--space-4)}.cheat-heading h2{font-size:var(--fs-3xl)}}
