:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ground:#f1efea;--ground-deep:#e9e6df;--card:#fff;--card-edge:#faf9f6;--tint:#f6f4ef;--tint-strong:#efece5;--hairline:#e3e0d8;--hairline-strong:#d3cfc4;--ink:#161616;--ink-2:#34332f;--muted:#66665f;--on-ink:#fff;--ink-hover:#2e2e2c;--link:#2f54c8;--focus:#2f54c8;--selection:#2f54c82e;--caret:#2f54c8;--ok:#2b7a4b;--ok-tint:#ecf5ef;--ok-line:#b9dcc6;--bad:#b23f2c;--bad-tint:#fbefec;--bad-line:#efc4ba;--level-on:#4a4944;--level-off:#c4bfb2;--code-bg:#f6f4ef;--code-bar:#efece5;--code-ink:#24231f;--code-gutter:#a19e95;--code-line:#2f54c80f;--code-inline-bg:#f0ede6;--code-inline-ink:#2a2925;--hl-keyword:#8a3b9e;--hl-string:#2c7340;--hl-number:#a84f17;--hl-comment:#6f6d66;--hl-title:#2f54c8;--hl-builtin:#0d6a74;--ch-l:.62;--ch-c:.13;--font-body:"Atkinson Hyperlegible Next", "Atkinson Hyperlegible", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display:"Bricolage Grotesque", "Atkinson Hyperlegible Next", system-ui, sans-serif;--font-mono:"Geist Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-2xs:11px;--fs-xs:12.5px;--fs-sm:13.5px;--fs-ui:14.5px;--fs-code:14.5px;--fs-md:16px;--fs-body:18px;--fs-lead:20px;--fs-h3:17px;--fs-h2:21px;--fs-count:24px;--fs-h1:clamp(26px, 1.6vw + 18px, 34px);--fs-cue:clamp(22px, 1.2vw + 16px, 27px);--lh-body:1.7;--lh-tight:1.15;--measure:66ch;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--r-xs:5px;--r-sm:8px;--r-md:12px;--r-lg:20px;--r-pill:999px;--shadow-card:0 1px 2px #1e1a100d, 0 10px 28px -8px #1e1a101f;--shadow-edge:0 1px 2px #1e1a100a;--shadow-pop:0 2px 6px #1e1a100f, 0 18px 40px -12px #1e1a1038;--shadow-front:0 1px 2px #1e1a100f, 0 4px 10px -4px #1e1a101a;--rail-w:288px;--mast-h:60px;--card-w:780px;--card-pad:48px;--ease-out:cubic-bezier(.16, 1, .3, 1);--t-fast:.15s;--t-card:.25s}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ground:#111113;--ground-deep:#0c0c0e;--card:#1b1b1e;--card-edge:#18181b;--tint:#222226;--tint-strong:#28282d;--hairline:#2a2a2e;--hairline-strong:#3a3a40;--ink:#eceae4;--ink-2:#d4d2cc;--muted:#a3a19a;--on-ink:#141416;--ink-hover:#fff;--link:#93abf5;--focus:#93abf5;--selection:#93abf547;--caret:#93abf5;--ok:#74c795;--ok-tint:#17261d;--ok-line:#2b4a37;--bad:#f2917d;--bad-tint:#2c1a17;--bad-line:#57302a;--level-on:#cfccc4;--level-off:#4c4c54;--code-bg:#222226;--code-bar:#26262b;--code-ink:#e4e2dc;--code-gutter:#6c6b67;--code-line:#93abf512;--code-inline-bg:#2a2a2f;--code-inline-ink:#ebe9e3;--hl-keyword:#d6a2f2;--hl-string:#9cd3a0;--hl-number:#f1b37f;--hl-comment:#8f8d87;--hl-title:#a3b9ff;--hl-builtin:#80d2dc;--ch-l:.74;--ch-c:.11;--shadow-card:0 1px 2px #0006, 0 14px 34px -10px #0009;--shadow-edge:0 1px 2px #00000059;--shadow-pop:0 2px 6px #0006, 0 20px 44px -12px #000000b3;--shadow-front:0 1px 2px #0006, 0 4px 10px -4px #00000080}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ground:#111113;--ground-deep:#0c0c0e;--card:#1b1b1e;--card-edge:#18181b;--tint:#222226;--tint-strong:#28282d;--hairline:#2a2a2e;--hairline-strong:#3a3a40;--ink:#eceae4;--ink-2:#d4d2cc;--muted:#a3a19a;--on-ink:#141416;--ink-hover:#fff;--link:#93abf5;--focus:#93abf5;--selection:#93abf547;--caret:#93abf5;--ok:#74c795;--ok-tint:#17261d;--ok-line:#2b4a37;--bad:#f2917d;--bad-tint:#2c1a17;--bad-line:#57302a;--level-on:#cfccc4;--level-off:#4c4c54;--code-bg:#222226;--code-bar:#26262b;--code-ink:#e4e2dc;--code-gutter:#6c6b67;--code-line:#93abf512;--code-inline-bg:#2a2a2f;--code-inline-ink:#ebe9e3;--hl-keyword:#d6a2f2;--hl-string:#9cd3a0;--hl-number:#f1b37f;--hl-comment:#8f8d87;--hl-title:#a3b9ff;--hl-builtin:#80d2dc;--ch-l:.74;--ch-c:.11;--shadow-card:0 1px 2px #0006, 0 14px 34px -10px #0009;--shadow-edge:0 1px 2px #00000059;--shadow-pop:0 2px 6px #0006, 0 20px 44px -12px #000000b3;--shadow-front:0 1px 2px #0006, 0 4px 10px -4px #00000080}[style*=--h]{--ch-rule:oklch(var(--ch-l) var(--ch-c) var(--h));--ch-soft:oklch(var(--ch-l) var(--ch-c) var(--h) / .35);--ch-chip-bg:oklch(.93 .04 var(--h));--ch-chip-ink:oklch(.42 .11 var(--h))}:root[data-theme=dark] [style*=--h]{--ch-chip-bg:oklch(.31 .05 var(--h));--ch-chip-ink:oklch(.87 .08 var(--h))}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) [style*=--h]{--ch-chip-bg:oklch(.31 .05 var(--h));--ch-chip-ink:oklch(.87 .08 var(--h))}}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--ground);color:var(--ink);font-family:var(--font-body);font-size:var(--fs-ui);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;accent-color:var(--ink);caret-color:var(--caret);margin:0;line-height:1.5}::selection{background:var(--selection);color:inherit}*{scrollbar-width:thin;scrollbar-color:var(--hairline-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--hairline-strong);border-radius:var(--r-pill);background-clip:padding-box;border:3px solid #0000}::-webkit-scrollbar-thumb:hover{background-color:var(--muted)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-xs)}[tabindex="-1"]:focus{outline:none}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;line-height:var(--lh-tight);letter-spacing:-.02em;text-wrap:balance;color:var(--ink);margin:0}p{text-wrap:pretty;margin:0}a{color:var(--link);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}kbd{min-width:1.7em;height:1.7em;font-family:var(--font-body);color:var(--muted);background:var(--card);border:1px solid var(--hairline-strong);border-radius:var(--r-xs);border-bottom-width:2px;place-items:center;padding:0 .4em;font-size:.82em;font-weight:600;line-height:1;display:inline-grid}.icon{flex:none;display:block}:not(pre)>code{font-family:var(--font-mono);font-variant-ligatures:none;border-radius:var(--r-xs);background:var(--code-inline-bg);color:var(--code-inline-ink);-webkit-box-decoration-break:clone;box-decoration-break:clone;white-space:break-spaces;overflow-wrap:break-word;padding:.1em .25em;font-size:.88em;font-weight:450}strong>code,b>code,:is(h1,h2,h3,h4) code{font-weight:600}:is(h1,h2,h3,h4) code{padding:.04em .26em;font-size:.86em}a>code{color:inherit}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:not-allowed}a.btn{text-decoration:none}.btn{justify-content:center;align-items:center;gap:var(--s-2);min-height:40px;font-size:var(--fs-ui);white-space:nowrap;transition:background-color var(--t-fast) ease, border-color var(--t-fast) ease, color var(--t-fast) ease, transform var(--t-fast) ease;border:1px solid #0000;border-radius:10px;padding:0 18px;font-weight:600;line-height:1;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.38}.btn-primary{background:var(--ink);color:var(--on-ink)}.btn-primary:hover:not(:disabled){background:var(--ink-hover)}.btn-ghost{border-color:var(--hairline-strong);color:var(--ink);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--tint);border-color:var(--muted)}.btn-text{min-height:34px;color:var(--muted);padding:0 10px;font-weight:500}.btn-text:hover:not(:disabled){color:var(--ink);background:var(--tint)}.btn-text.is-danger{color:var(--bad)}.btn-text.is-danger:hover:not(:disabled){background:var(--bad-tint);color:var(--bad)}.icon-btn{width:38px;height:38px;color:var(--muted);transition:background-color var(--t-fast) ease, color var(--t-fast) ease;border-radius:10px;place-items:center;display:inline-grid}.icon-btn:hover{color:var(--ink);background:color-mix(in srgb, var(--ink) 6%, transparent)}.icon-btn[aria-pressed=true],.icon-btn[aria-expanded=true]{color:var(--ink);background:var(--card);box-shadow:var(--shadow-front)}.actions{align-items:center;gap:var(--s-3);margin-top:var(--s-4);flex-wrap:wrap;display:flex}.hint{color:var(--muted);font-size:var(--fs-sm)}.pill{border-radius:var(--r-pill);border:1px solid var(--hairline);background:var(--card);min-height:30px;color:var(--ink-2);font-size:var(--fs-sm);transition:border-color var(--t-fast) ease, background-color var(--t-fast) ease, color var(--t-fast) ease;align-items:center;gap:6px;padding:0 12px;font-weight:500;text-decoration:none;display:inline-flex}.pill:hover{border-color:var(--hairline-strong);background:var(--tint);color:var(--ink);text-decoration:none}input[type=search],input[type=text],input[type=email],input[type=password],textarea{font:inherit;color:var(--ink)}input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}input[type=search]::-webkit-search-cancel-button{display:none}.text-input{border:1px solid var(--hairline-strong);background:var(--card);width:100%;height:44px;color:var(--ink);transition:border-color var(--t-fast) ease;border-radius:10px;padding:0 14px}.text-input:hover{border-color:var(--muted)}.text-input[aria-invalid=true]{border-color:var(--bad)}.field-hint{color:var(--muted);font-size:var(--fs-xs)}.form-error,.form-ok{align-items:flex-start;gap:var(--s-2);padding:var(--s-3);border-radius:var(--r-md);font-size:var(--fs-sm);margin:0;line-height:1.5;display:flex}.form-error{background:var(--bad-tint);border:1px solid var(--bad-line);color:var(--bad)}.form-ok{background:var(--ok-tint);border:1px solid var(--ok-line);color:var(--ok)}.form-error svg,.form-ok svg{flex:none;margin-top:2px}.search{align-items:center;gap:var(--s-2);background:var(--card);border:1px solid var(--hairline);height:38px;color:var(--muted);transition:border-color var(--t-fast) ease, box-shadow var(--t-fast) ease;border-radius:10px;padding:0 8px 0 12px;display:flex;position:relative}.search:hover{border-color:var(--hairline-strong)}.search:focus-within{border-color:var(--focus);box-shadow:0 0 0 3px var(--selection)}.search input{min-width:0;height:100%;font-size:var(--fs-ui);background:0 0;border:0;outline:none;flex:1}.search input:focus-visible{outline:none}.search-clear{width:24px;height:24px;color:var(--muted);border-radius:6px;place-items:center;display:grid}.search-clear:hover{background:var(--tint);color:var(--ink)}.skip-link{z-index:100;border-radius:var(--r-sm);background:var(--ink);color:var(--on-ink);padding:8px 14px;font-weight:600;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}.app{grid-template-columns:var(--rail-w) minmax(0, 1fr);height:100dvh;display:grid;overflow:hidden}.app.rail-closed{grid-template-columns:minmax(0,1fr)}.app.rail-closed .rail{display:none}.rail{background:var(--ground-deep);border-right:1px solid var(--hairline);flex-direction:column;min-height:0;display:flex}.rail-top{gap:var(--s-3);padding:var(--s-4) var(--s-4) var(--s-3);display:grid}.brand{align-items:center;gap:10px;min-height:40px;padding-left:4px;display:flex}.brand-home{text-align:left;border-radius:10px;flex:1;align-items:center;gap:10px;min-height:40px;margin-left:-4px;padding:0 4px;display:flex}.brand-home:hover{background:var(--tint)}.brand-name{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h3);letter-spacing:-.02em;color:var(--ink);flex:1}.brand-mark .bm-back{fill:none;stroke:var(--muted);stroke-width:1.5px}.brand-mark .bm-card{fill:var(--card);stroke:var(--ink);stroke-width:1.5px}.brand-mark .bm-rule{stroke:var(--muted);stroke-width:1.75px;stroke-linecap:round}.brand-mark .bm-box{fill:var(--ink)}.seg{background:color-mix(in srgb, var(--ink) 6%, transparent);border-radius:11px;grid-template-columns:repeat(3,1fr);gap:2px;padding:3px;display:grid}.seg-btn{height:32px;font-size:var(--fs-sm);color:var(--muted);transition:background-color var(--t-fast) ease, color var(--t-fast) ease;border-radius:8px;justify-content:center;align-items:center;gap:6px;font-weight:600;display:inline-flex}.seg-btn:hover{color:var(--ink)}.seg-btn[aria-current=page]{background:var(--card);color:var(--ink);box-shadow:var(--shadow-front)}.seg-count{border-radius:var(--r-pill);background:var(--ink);min-width:18px;height:18px;color:var(--on-ink);font-size:var(--fs-2xs);font-variant-numeric:tabular-nums;padding:0 5px;line-height:18px}.rail .search kbd{font-size:var(--fs-2xs)}.chapters{min-height:0;padding:var(--s-1) var(--s-3) var(--s-6);overscroll-behavior:contain;flex:1;overflow-y:auto}.rail-empty{padding:var(--s-3) var(--s-2);color:var(--muted);font-size:var(--fs-sm)}.chapter+.chapter{margin-top:2px}.chapter>summary{cursor:pointer;-webkit-user-select:none;user-select:none;min-height:40px;transition:background-color var(--t-fast) ease;border-radius:10px;grid-template-columns:26px minmax(0,1fr) auto 14px;align-items:center;gap:10px;padding:6px 8px;list-style:none;display:grid}.chapter>summary::-webkit-details-marker{display:none}.chapter>summary:hover{background:color-mix(in srgb, var(--ink) 5%, transparent)}.ch-chip{background:var(--ch-chip-bg);width:26px;height:26px;color:var(--ch-chip-ink);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;border-radius:7px;place-items:center;font-weight:700;display:inline-grid}.ch-title{font-size:var(--fs-ui);color:var(--ink);font-weight:600;line-height:1.3}.ch-count{font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums}.ch-caret{color:var(--muted);transition:transform var(--t-fast) var(--ease-out)}.chapter[open]>summary .ch-caret{transform:rotate(90deg)}.chapter ul{margin:2px 0 var(--s-3);padding:0 0 0 18px;list-style:none;position:relative}.chapter ul:before{content:"";background:var(--hairline-strong);width:1px;position:absolute;top:4px;bottom:4px;left:20px}.ch-bulk{margin:calc(-1 * var(--s-2)) 0 var(--s-3) 8px;font-size:var(--fs-sm)}.topic-row{text-align:left;width:100%;color:var(--ink-2);font-size:var(--fs-sm);transition:background-color var(--t-fast) ease, color var(--t-fast) ease;border:1px solid #0000;border-radius:9px;grid-template-columns:auto minmax(0,1fr) 14px;align-items:baseline;gap:8px;padding:7px 10px 7px 16px;line-height:1.35;display:grid;position:relative}.topic-row:hover{background:color-mix(in srgb, var(--ink) 5%, transparent);color:var(--ink)}.topic-row[aria-current=page]{background:var(--card);border-color:var(--hairline);box-shadow:var(--shadow-front);color:var(--ink);font-weight:600}.t-num{min-width:2.5em;color:var(--muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;font-weight:500}.t-level{align-self:center;place-items:center;display:grid}.level rect.off{fill:var(--level-off)}.level rect.on{fill:var(--level-on)}.scrim{display:none}.main{min-width:0;scroll-padding-top:calc(var(--mast-h) + var(--s-4));position:relative;overflow:hidden auto}.masthead{z-index:20;justify-content:space-between;align-items:center;gap:var(--s-4);height:var(--mast-h);padding:0 var(--s-5);background:var(--ground);transition:border-color var(--t-fast) ease;border-bottom:1px solid #0000;display:flex;position:sticky;top:0}.masthead.is-scrolled{border-bottom-color:var(--hairline)}.mast-start{align-items:center;gap:var(--s-2);min-width:0;display:flex}.mast-end{align-items:center;gap:var(--s-1);flex:none;display:flex}.crumbs{min-width:0}.crumbs ol{min-width:0;font-size:var(--fs-ui);align-items:center;margin:0;padding:0;list-style:none;display:flex}.crumbs li{white-space:nowrap;color:var(--muted)}.crumbs li+li:before{content:"/";color:var(--hairline-strong);margin:0 10px}.crumbs li[aria-current=page]{text-overflow:ellipsis;color:var(--ink);font-weight:600;overflow:hidden}.streak,.goal{height:34px;font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:6px;padding:0 10px;font-weight:600;display:inline-flex}.streak.is-on{color:var(--ink)}.goal-segs{gap:2px;display:inline-flex}.goal-segs span{background:var(--level-off);border-radius:2px;width:6px;height:14px}.goal-segs[data-size="10"] span{width:4px}.goal-segs span.on{background:var(--ink)}.goal-text{color:var(--ink);align-items:center;gap:4px;display:inline-flex}.goal-text .goal-long{color:var(--muted);font-weight:500}.goal.is-reached .goal-text{color:var(--ok)}.goal.is-reached .goal-segs span{background:var(--ok)}.goal-short{display:none}.mode-toggle{margin:0 var(--s-2);background:color-mix(in srgb, var(--ink) 6%, transparent);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.mode-toggle button{height:30px;font-size:var(--fs-sm);color:var(--muted);transition:background-color var(--t-fast) ease, color var(--t-fast) ease;border-radius:7px;align-items:center;gap:6px;padding:0 10px;font-weight:600;display:inline-flex}.mode-toggle button:hover{color:var(--ink)}.mode-toggle button[aria-pressed=true]{background:var(--card);color:var(--ink);box-shadow:var(--shadow-front)}.show-narrow{display:none!important}.settings{position:relative}.popover{z-index:40;width:300px;padding:var(--s-4);background:var(--card);border:1px solid var(--hairline);box-shadow:var(--shadow-pop);border-radius:14px;gap:2px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.pop-title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-md);padding:0 4px var(--s-2)}.pop-account{gap:var(--s-3);padding:var(--s-2) 4px var(--s-3);margin-bottom:var(--s-2);border-bottom:1px solid var(--hairline);font-size:var(--fs-ui);display:grid}.pop-account:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}.sync-status{color:var(--muted);font-size:var(--fs-xs);margin:0}.pop-account-who{margin:0;display:grid}.pop-account-who small{color:var(--muted);font-size:var(--fs-xs);overflow-wrap:anywhere}.pop-account-form{gap:var(--s-3);display:grid}.pop-account-actions{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.switch-row,.pop-row{justify-content:space-between;align-items:center;gap:var(--s-3);min-height:48px;font-size:var(--fs-ui);color:var(--ink);padding:6px 4px;font-weight:500;display:flex;position:relative}.switch-row+.switch-row,.switch-row+.pop-row,.pop-row+.pop-row{border-top:1px solid var(--hairline)}.switch-row{cursor:pointer}.switch-row small,.pop-row small{color:var(--muted);font-size:var(--fs-xs);font-weight:400;display:block}.switch-row input{opacity:0;pointer-events:none;position:absolute}.switch{border-radius:var(--r-pill);background:var(--hairline-strong);width:38px;height:22px;transition:background-color var(--t-fast) ease;flex:none;position:relative}.switch:after{content:"";background:var(--card);width:16px;height:16px;box-shadow:var(--shadow-front);transition:transform var(--t-fast) var(--ease-out);border-radius:50%;position:absolute;top:3px;left:3px}.switch-row input:checked+.switch{background:var(--ink)}.switch-row input:checked+.switch:after{transform:translate(16px)}.switch-row input:focus-visible+.switch{outline:2px solid var(--focus);outline-offset:2px}.pills{background:color-mix(in srgb, var(--ink) 6%, transparent);border-radius:9px;gap:2px;padding:3px;display:inline-flex}.pills button{min-width:36px;height:28px;font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums;border-radius:6px;padding:0 8px;font-weight:600}.pills button:hover{color:var(--ink)}.pills button[aria-checked=true]{background:var(--card);color:var(--ink);box-shadow:var(--shadow-front)}.stage{padding:var(--s-5) var(--s-5) var(--s-8)}.stage:focus{outline:none}@media (width<=1100px){.goal-long,.mode-toggle span{display:none}.mode-toggle button{padding:0 8px}}@media (width<=760px){:root{--mast-h:56px;--card-pad:20px}.app,.app.rail-closed{grid-template-columns:minmax(0,1fr)}.app.rail-closed .rail{display:flex}.rail{z-index:60;width:min(320px,86vw);box-shadow:var(--shadow-pop);visibility:hidden;transition:transform var(--t-card) var(--ease-out), visibility 0s linear var(--t-card);position:fixed;inset:0 auto 0 0;transform:translate(-104%)}.app.rail-open .rail{visibility:visible;transition:transform var(--t-card) var(--ease-out);transform:none}.app.rail-open .scrim{z-index:50;cursor:default;background:#0a0a0c61;display:block;position:fixed;inset:0}.masthead{padding:0 var(--s-2) 0 var(--s-2);gap:var(--s-2)}.crumbs li:not([aria-current=page]),.crumbs li:before{display:none}.streak,.goal{padding:0 6px}.goal-segs{display:none}.goal.is-reached .goal-short{display:inline}.mode-toggle,.hide-narrow{display:none!important}.show-narrow{display:flex!important}.stage{padding:var(--s-3) 12px var(--s-7)}.popover{top:calc(var(--mast-h) + 4px);width:calc(100vw - 24px);max-width:340px;position:fixed;right:12px}}.app-loading{min-height:100dvh;color:var(--muted);background:var(--ground);place-items:center;padding:16px;font-size:15px;display:grid}.btn-sm{min-height:32px;font-size:var(--fs-sm);padding:0 12px}.data-row{flex-wrap:wrap}.data-actions{gap:6px;display:inline-flex}.data-confirm,.data-msg{font-size:var(--fs-sm);flex-basis:100%;margin:0}.data-confirm{gap:var(--s-2);padding:var(--s-3);background:var(--tint);border-radius:10px;display:grid}.data-confirm p{margin:0}.data-confirm div{gap:6px;display:flex}.data-msg{color:var(--muted)}.data-msg.is-bad{color:var(--bad)}.course-switch{align-items:center;gap:var(--s-2);background:var(--card);border:1px solid var(--hairline);height:38px;color:var(--muted);cursor:pointer;border-radius:10px;padding:0 10px 0 12px;display:flex;position:relative}.course-switch:hover{border-color:var(--hairline-strong)}.course-switch:focus-within{border-color:var(--focus);box-shadow:0 0 0 3px var(--selection)}.course-chip{background:var(--ch-chip-bg);min-width:26px;height:22px;color:var(--ch-chip-ink);font-family:var(--font-body);font-size:var(--fs-xs);letter-spacing:.01em;border-radius:6px;flex:none;place-items:center;padding:0 5px;font-weight:700;line-height:1;display:inline-grid}.course-switch{padding-left:7px}.course-switch select{min-width:0;height:100%;color:var(--ink);font:inherit;font-size:var(--fs-ui);appearance:none;cursor:pointer;background:0 0;border:0;outline:none;flex:1;font-weight:600}.course-switch svg{pointer-events:none;flex:none;transform:rotate(90deg)}.lesson{max-width:var(--card-w);margin:0 auto}.card{z-index:1;background:var(--card);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:var(--shadow-card);position:relative}.sheet{max-width:var(--card-w);padding:var(--s-6) var(--card-pad) var(--s-7);margin:0 auto}.stack{isolation:isolate;padding-bottom:21px;position:relative}.stack-edge{border-radius:var(--r-lg);background:var(--card-edge);border:1px solid var(--hairline);box-shadow:var(--shadow-edge);transform-origin:50% 100%;pointer-events:none;position:absolute;inset:0 0 21px}.edge-1{z-index:3;transform:translateY(7px)scaleX(.975)}.edge-2{z-index:2;background:color-mix(in srgb, var(--card-edge) 70%, var(--ground));transform:translateY(14px)scaleX(.95)}.edge-3{z-index:1;background:color-mix(in srgb, var(--card-edge) 45%, var(--ground));transform:translateY(21px)scaleX(.925)}.stack .lesson-card{z-index:4}.lesson-card{padding:var(--s-5) var(--card-pad) 0;view-transition-name:lesson-card}.stepbar{margin-bottom:var(--s-5);gap:4px;display:flex}.stepbar span{background:var(--hairline);max-width:64px;height:4px;transition:background-color var(--t-card) var(--ease-out);border-radius:2px;flex:1}.stepbar span.is-done{background:var(--ch-soft,var(--hairline-strong))}.stepbar span.is-now{background:var(--ch-rule,var(--ink))}.card-head{padding-bottom:var(--s-4);position:relative}.card-head:after{content:"";left:calc(-1 * var(--card-pad));right:calc(-1 * var(--card-pad));background:var(--ch-rule,var(--hairline-strong));height:2px;position:absolute;bottom:0}.card-title{font-size:var(--fs-h1);letter-spacing:-.025em;font-weight:700;line-height:1.12}.card-body{padding:var(--s-6) 0 var(--s-6);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-2);max-width:var(--measure)}.card-body>*+*{margin-top:var(--s-4)}.step-title{font-size:var(--fs-h2);letter-spacing:-.018em;color:var(--ink);font-weight:600}.step-title-sm{font-size:var(--fs-h3);letter-spacing:-.01em;color:var(--ink);font-weight:600}.card-body>.step-sub,.step-sub{margin-top:var(--s-1);color:var(--muted);font-size:var(--fs-ui);line-height:1.5}.step-title+.step-sub+*{margin-top:var(--s-5)}.step-title+:not(.step-sub){margin-top:var(--s-4)}.card-foot{justify-content:space-between;align-items:center;gap:var(--s-3);padding:var(--s-4) 0 var(--s-5);border-top:1px solid var(--hairline);display:flex}.card-count{color:var(--muted);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}.card-foot-end{align-items:center;gap:var(--s-2);display:flex}.back-topic{margin:var(--s-3) auto 0;text-overflow:ellipsis;max-width:100%;display:flex;overflow:hidden}::view-transition-old(root){animation:none}::view-transition-new(root){animation:none}::view-transition-group(lesson-card){animation-duration:var(--t-card);animation-timing-function:var(--ease-out)}:root[data-card-dir=next]::view-transition-old(lesson-card){animation:card-away var(--t-card) var(--ease-out) both}:root[data-card-dir=next]::view-transition-new(lesson-card){animation:card-forward var(--t-card) var(--ease-out) both}:root[data-card-dir=back]::view-transition-old(lesson-card){animation:card-back-in var(--t-card) var(--ease-out) reverse both}:root[data-card-dir=back]::view-transition-new(lesson-card){animation:card-away var(--t-card) var(--ease-out) reverse both}@keyframes card-away{to{opacity:0;transform:translate(-56px)rotate(-1.5deg)}}@keyframes card-forward{0%{opacity:.4;transform:translateY(14px)scale(.975)}}@keyframes card-back-in{to{opacity:0;transform:translateY(14px)scale(.975)}}@media (prefers-reduced-motion:reduce){.lesson-card{view-transition-name:none}}.big-idea{font-family:var(--font-display);font-size:var(--fs-cue);letter-spacing:-.015em;color:var(--ink);text-wrap:balance;font-weight:600;line-height:1.3}.intro .step-title-sm{margin-top:var(--s-6)}.intro .why{margin-top:var(--s-2)}.prose{overflow-wrap:break-word}.prose>*+*{margin-top:var(--s-4)}.prose>:first-child{margin-top:0}.prose p,.prose li{color:var(--ink-2)}.prose strong{color:var(--ink);font-weight:600}.prose ul,.prose ol{margin-bottom:0;padding-left:1.3em}.prose li+li{margin-top:var(--s-2)}.prose li::marker{color:var(--muted)}.prose h3,.prose h4,.prose h5{margin-top:var(--s-6);font-size:var(--fs-h3);font-weight:600}.prose h5{margin:var(--s-7) 0 var(--s-2);font-family:var(--font-display);font-size:calc(var(--fs-h3) * 1.08);letter-spacing:-.01em;color:var(--ink);line-height:1.25}.prose h5:first-child{margin-top:0}.prose hr{border:0;border-top:1px solid var(--hairline);margin:var(--s-6) 0}.prose blockquote{margin:var(--s-5) 0;padding:var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--tint);color:var(--ink-2)}.prose blockquote>*+*{margin-top:var(--s-2)}.prose table{border-collapse:collapse;width:100%;font-size:var(--fs-ui);font-variant-numeric:tabular-nums;line-height:1.5;display:table}@media (width<=640px){.prose table{width:max-content;max-width:100%;display:block;overflow-x:auto}}.prose th,.prose td{text-align:left;vertical-align:top;border-bottom:1px solid var(--hairline);padding:10px 18px 10px 0}.prose th{color:var(--ink);border-bottom-color:var(--hairline-strong);white-space:nowrap;font-weight:600}.prose td{color:var(--ink-2)}.prose tr:last-child td{border-bottom:0}.exercise>*+*{margin-top:var(--s-4)}.task-prompt{color:var(--ink-2)}.q-text{font-size:var(--fs-lead);color:var(--ink);overflow-wrap:break-word;font-weight:500;line-height:1.5}.options{gap:var(--s-2);display:grid}.opt{align-items:center;gap:var(--s-3);border-radius:var(--r-md);border:1px solid var(--hairline);background:var(--card);min-height:54px;font-size:var(--fs-ui);color:var(--ink);cursor:pointer;transition:border-color var(--t-fast) ease, background-color var(--t-fast) ease;grid-template-columns:30px minmax(0,1fr) auto;padding:10px 14px 10px 12px;line-height:1.5;display:grid;position:relative}.opt:hover{border-color:var(--hairline-strong);background:var(--tint)}.opt:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:2px}.opt:has(input:disabled){cursor:default}.opt-key{border:1px solid var(--hairline-strong);width:30px;height:30px;font-size:var(--fs-sm);color:var(--muted);transition:background-color var(--t-fast) ease, color var(--t-fast) ease, border-color var(--t-fast) ease;border-radius:8px;place-items:center;font-weight:700;display:grid}.opt-text{overflow-wrap:anywhere;font-size:var(--fs-md)}.opt-note{font-size:var(--fs-xs);white-space:nowrap;font-weight:600}.opt.is-chosen{border-color:var(--ink);background:var(--card)}.opt.is-chosen .opt-key{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.opt.correct{border-color:var(--ok-line);background:var(--ok-tint)}.opt.correct .opt-key{background:var(--ok);border-color:var(--ok);color:var(--card)}.opt.correct .opt-note{color:var(--ok)}.opt.wrong{border-color:var(--bad-line);background:var(--bad-tint);animation:.18s ease-out shake}.opt.wrong .opt-key{background:var(--bad);border-color:var(--bad);color:var(--card)}.opt.wrong .opt-note{color:var(--bad)}@keyframes shake{25%{transform:translate(-4px)}60%{transform:translate(3px)}}.field{gap:6px;display:grid}.field-label{font-size:var(--fs-sm);color:var(--ink);font-weight:600}.answer-input{border-radius:var(--r-md);border:1px solid var(--hairline-strong);background:var(--code-bg);width:100%;min-height:96px;color:var(--code-ink);font-family:var(--font-mono);font-size:var(--fs-code);font-variant-ligatures:none;resize:vertical;transition:border-color var(--t-fast) ease, box-shadow var(--t-fast) ease;padding:12px 14px;line-height:1.65}.answer-input:hover:not(:disabled){border-color:var(--muted)}.answer-input:focus{border-color:var(--focus);box-shadow:0 0 0 3px var(--selection);outline:none}.answer-input.is-wrong{border-color:var(--bad-line)}.answer-input:disabled{color:var(--muted);cursor:default}.feedback{gap:var(--s-3);border-radius:var(--r-md);font-size:var(--fs-ui);grid-template-columns:22px minmax(0,1fr);padding:14px 16px;line-height:1.55;display:grid}.feedback.ok{background:var(--ok-tint)}.feedback.bad{background:var(--bad-tint)}.feedback.note{background:var(--tint)}.feedback.note .feedback-icon{color:var(--muted)}.feedback-icon{place-items:center;width:22px;height:22px;display:grid}.feedback.ok .feedback-icon{color:var(--ok)}.feedback.bad .feedback-icon{color:var(--bad)}.feedback-body>strong{color:var(--ink);font-weight:700;display:block}.feedback.ok .feedback-body>strong{color:var(--ok)}.feedback.bad .feedback-body>strong{color:var(--bad)}.feedback-body>*+*{margin-top:var(--s-2)}.feedback-body p{color:var(--ink-2)}.explain{color:var(--ink-2);overflow-wrap:break-word}.feedback .code{background:color-mix(in srgb, var(--card) 70%, transparent)}.check-mark{fill:none;stroke:currentColor;stroke-width:2.25px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:24;stroke-dashoffset:24px;width:20px;height:20px;animation:draw .24s var(--ease-out) 60ms forwards}@keyframes draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.check-mark{stroke-dashoffset:0;animation:none}}.recall>*+*{margin-top:var(--s-4)}.recall>.step-sub{margin-top:var(--s-1)}.recall-cue{font-family:var(--font-display);font-size:var(--fs-cue);letter-spacing:-.015em;color:var(--ink);text-wrap:balance;padding:var(--s-2) 0;font-weight:600;line-height:1.3}.recall .step-sub+.recall-cue{margin-top:var(--s-5)}.recall-cover{justify-items:start;gap:var(--s-5);padding:var(--s-5);border-radius:var(--r-md);background:var(--tint);display:grid}.recall-lines{gap:14px;width:100%;display:grid}.recall-lines span{border-radius:var(--r-pill);background:var(--hairline);height:10px}.recall-lines span:first-child{width:88%}.recall-lines span:nth-child(2){width:72%}.recall-lines span:nth-child(3){width:80%}.key-points{counter-reset:kp;overflow-wrap:break-word;gap:0;margin:0;padding:0;list-style:none;display:grid}.key-points li{counter-increment:kp;padding:var(--s-3) 0 var(--s-3) 44px;color:var(--ink-2);border-top:1px solid var(--hairline);position:relative}.key-points li:first-child{border-top:0}.key-points li:before{content:counter(kp);left:0;top:calc(var(--s-3) + 2px);background:var(--tint);width:28px;height:28px;color:var(--ink);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;border-radius:8px;place-items:center;font-weight:700;display:grid;position:absolute}.key-points:focus{outline:none}.rate{padding-top:var(--s-4);border-top:1px solid var(--hairline)}.rate-q{font-size:var(--fs-ui);color:var(--ink);font-weight:600}.rate-row{align-items:center;gap:var(--s-2);margin-top:var(--s-3);flex-wrap:wrap;display:flex}.rate-btn{min-width:92px}.filed{align-items:center;gap:var(--s-3);border-radius:var(--r-md);background:var(--tint);font-size:var(--fs-ui);color:var(--ink-2);padding:12px 14px;display:flex}.topic-status{align-items:center;gap:var(--s-2);font-size:var(--fs-ui);display:flex;margin-top:var(--s-6)!important}.topic-status .btn-text{margin-left:-10px}.topic-done{color:var(--ok);align-items:center;gap:6px;font-weight:600;display:inline-flex}.topic-done+.btn-text{margin-left:0}.page-view{padding-top:var(--s-6)}.page-view>.card-head{margin-bottom:var(--s-6)}.page-view .page-section,.page-view>.topic-status{max-width:var(--measure);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-2)}.page-section+.page-section{margin-top:var(--s-7)}.page-section>h2{font-size:var(--fs-h2);margin-bottom:var(--s-4)}.page-section .task+.task{margin-top:var(--s-6);padding-top:var(--s-6);border-top:1px solid var(--hairline)}.page-section .task>h3{font-size:var(--fs-h3);margin-bottom:var(--s-3)}.page-section.intro .step-title-sm{margin-top:var(--s-5);margin-bottom:var(--s-2)}.pager{gap:var(--s-3);margin-top:var(--s-7);padding-top:var(--s-5);border-top:1px solid var(--hairline);grid-template-columns:1fr 1fr;display:grid}.pager-link{align-items:center;gap:var(--s-3);border-radius:var(--r-md);text-align:left;min-width:0;color:var(--muted);transition:background-color var(--t-fast) ease, color var(--t-fast) ease;padding:12px 14px;display:flex}.pager-link:hover{background:var(--tint);color:var(--ink)}.pager-link>span{min-width:0;display:grid}.pager-link.is-next{text-align:right;grid-column:2;justify-content:flex-end}.pager-dir{font-size:var(--fs-xs)}.pager-title{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}@media (width<=760px){:root{--fs-body:17px}.lesson-card{padding-top:var(--s-4)}.card-body{padding:var(--s-5) 0}.card-foot{padding-bottom:var(--s-4)}.card-count{display:none}.sheet{padding:var(--s-5) var(--card-pad) var(--s-6)}.opt{grid-template-columns:30px minmax(0,1fr)}.opt-note{grid-column:2}.pager{grid-template-columns:1fr}.pager-link.is-next{grid-column:1}.stack{padding-bottom:15px}.stack-edge{inset-block-end:15px}.edge-1{transform:translateY(5px)scaleX(.975)}.edge-2{transform:translateY(10px)scaleX(.95)}.edge-3{transform:translateY(15px)scaleX(.925)}}.code{border-radius:var(--r-md);background:var(--code-bg);border:1px solid color-mix(in srgb, var(--hairline) 70%, transparent);font-size:var(--fs-code);overflow:hidden}.prose .code{margin-top:var(--s-5);margin-bottom:var(--s-5)}.code-bar{justify-content:space-between;align-items:center;gap:var(--s-3);min-height:40px;padding:4px 6px 4px 16px;display:flex}.code-lang{font-family:var(--font-body);font-size:var(--fs-xs);color:var(--muted);letter-spacing:.01em;font-weight:600}.code-actions{align-items:center;gap:2px;display:flex}.code-act{height:30px;font-family:var(--font-body);font-size:var(--fs-xs);color:var(--muted);transition:background-color var(--t-fast) ease, color var(--t-fast) ease;border-radius:7px;align-items:center;gap:6px;padding:0 10px;font-weight:600;display:inline-flex}.code-act:hover:not(:disabled){color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, transparent)}.code-act[aria-pressed=true]{color:var(--ink);background:var(--card)}.code-act.code-run{color:var(--ink)}.code-act:disabled{opacity:.5}.code-pre,.prose pre{font-family:var(--font-mono);font-size:var(--fs-code);font-variant-ligatures:none;tab-size:4;color:var(--code-ink);white-space:pre;margin:0;padding:14px 18px;line-height:1.65;overflow-x:auto}.code-bar+.code-pre,.code-bar+.runner-body>.code-pre{padding-top:2px}.code-pre code,.prose pre code{font:inherit;color:inherit;white-space:inherit;background:0 0;padding:0}.code-plain .code-pre{white-space:pre-wrap;overflow-wrap:anywhere}.code-plain{background:var(--card);border-color:var(--hairline-strong)}.code-out{border-top:1px solid var(--hairline);background:var(--card);padding:10px 18px 14px}.code-out-label{font-size:var(--fs-xs);color:var(--muted);margin-bottom:4px;font-weight:600;display:block}.code-out pre{font-family:var(--font-mono);font-size:var(--fs-code);font-variant-ligatures:none;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink);margin:0;line-height:1.65}.code-out.is-error{background:var(--bad-tint);border-top-color:var(--bad-line)}.code-out.is-error .code-out-label{color:var(--bad)}.code-trace{color:var(--bad)!important}.code-out pre+pre{margin-top:var(--s-2)}.code-wait{color:var(--muted)!important}.runner-body{min-height:calc(var(--lines,3) * 1.65em + 16px)}.runner-frame.is-editing{border-color:var(--hairline-strong)}.runner-frame:focus-within{border-color:var(--focus);box-shadow:0 0 0 3px var(--selection)}.runner-foot{align-items:center;gap:var(--s-3) var(--s-4);margin-top:var(--s-3);flex-wrap:wrap;display:flex}.runner-foot .hint{font-size:var(--fs-sm);line-height:1.4}.guess{gap:var(--s-1);margin-top:var(--s-4);justify-items:start;display:grid}.guess .field{width:100%}.guess-input{min-height:64px}.guess-skip{min-height:28px;font-size:var(--fs-sm);margin-left:-10px}.runner+.feedback,.runner>.feedback{margin-top:var(--s-4)}.python-editor{border-radius:var(--r-md);border:1px solid var(--hairline-strong);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--fs-code);resize:vertical;height:calc(max(var(--rows,6), 6) * 1.65em + 32px);min-height:120px;max-height:85vh;overflow:hidden}.python-editor:focus-within{border-color:var(--focus);box-shadow:0 0 0 3px var(--selection)}.python-editor.is-bare{box-shadow:none;height:calc(max(var(--rows,6), 3) * 1.65em + 16px);background:0 0;border:0;border-radius:0;min-height:80px}.code .python-editor.is-bare .cm-content{padding-top:2px}.python-editor .cm-editor{height:100%}.code.is-editing:focus-within{border-color:var(--focus);box-shadow:0 0 0 3px var(--selection)}.hljs-keyword,.hljs-selector-tag,.hljs-literal{color:var(--hl-keyword)}.hljs-string,.hljs-meta .hljs-string,.hljs-regexp{color:var(--hl-string)}.hljs-number{color:var(--hl-number)}.hljs-comment,.hljs-quote{color:var(--hl-comment);font-style:italic}.hljs-built_in,.hljs-type{color:var(--hl-builtin)}.hljs-title,.hljs-title.function_,.hljs-section{color:var(--hl-title)}.hljs-attr,.hljs-attribute{color:var(--hl-number)}.hljs-params,.hljs-variable,.hljs-name,.hljs-operator,.hljs-punctuation{color:inherit}.hljs-meta{color:var(--hl-builtin)}.hljs-meta.prompt_{color:var(--muted)}@media (width<=760px){:root{--fs-code:13.5px}.code-pre,.prose pre{padding-inline:14px}.code-bar{padding-left:14px}.code-act{padding:0 8px}}.lead{font-size:var(--fs-lead);color:var(--ink-2);max-width:var(--measure);line-height:1.5}.lead strong{color:var(--ink);font-weight:700}.section-h{font-size:var(--fs-h3);letter-spacing:-.01em;margin:var(--s-7) 0 var(--s-4);font-weight:600}.sheet>.card-head{margin-bottom:var(--s-5)}.review-lead{justify-items:start;gap:var(--s-5);display:grid}.levels{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.level-col{padding:var(--s-4) var(--s-4) var(--s-5);align-content:start;gap:6px;display:grid}.level-col+.level-col{border-left:1px solid var(--hairline)}.level-col:first-child{padding-left:0}.level-name{font-size:var(--fs-sm);color:var(--ink);align-items:center;gap:8px;font-weight:600;display:inline-flex}.level-count{font-size:var(--fs-count);font-weight:600;font-family:var(--font-display);color:var(--ink);line-height:1.2}.level-note{font-size:var(--fs-xs);color:var(--muted);line-height:1.45}.empty-state{justify-items:start;gap:var(--s-4);display:grid}.empty-state p{font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-2);max-width:var(--measure)}.empty-state .actions{margin-top:0}.overall{gap:var(--s-3);display:grid}.bar{border-radius:var(--r-pill);background:var(--tint-strong);height:6px;position:relative;overflow:hidden}.bar>span{border-radius:inherit;background:var(--ink);min-width:0;position:absolute;inset:0 auto 0 0}.bar-lg{height:10px}.bar-ch>span{background:var(--ch-rule)}.status-line{margin:var(--s-1) 0 0;gap:var(--s-2) var(--s-5);font-size:var(--fs-sm);color:var(--muted);flex-wrap:wrap;padding:0;list-style:none;display:flex}.status-line li{align-items:center;gap:8px;display:inline-flex}.status-line .num{color:var(--ink);font-weight:600}.week-row .section-h{margin-bottom:var(--s-3)}.week-dots{margin:0 0 var(--s-3);gap:var(--s-4);padding:0;list-style:none;display:flex}.week-dots li{justify-items:center;gap:6px;display:grid}.week-dots .dot{border:1.5px solid var(--hairline-strong);border-radius:50%;width:14px;height:14px}.week-dots li.on .dot{background:var(--ink);border-color:var(--ink)}.week-label{font-size:var(--fs-xs);color:var(--muted)}.week-row>p{font-size:var(--fs-sm)}.week-foot{justify-content:space-between;align-items:center;gap:var(--s-2) var(--s-4);flex-wrap:wrap;display:flex}.recap-open{min-height:28px;font-size:var(--fs-sm);margin-right:-10px}.weak-rows{margin:0;padding:0;list-style:none}.weak-row{align-items:center;column-gap:var(--s-3);padding:var(--s-3) 0;border-top:1px solid var(--hairline);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name open""note open";row-gap:2px;display:grid}.weak-row:last-child{border-bottom:1px solid var(--hairline)}.weak-name{font-weight:600;font-size:var(--fs-ui);color:var(--ink);overflow-wrap:anywhere;grid-area:name}.weak-note{font-size:var(--fs-sm);color:var(--muted);grid-area:note}.weak-open{grid-area:open;min-height:32px;margin-right:-10px}.recap{width:min(520px,100% - 32px);max-height:calc(100% - 32px);padding:var(--s-6);border:1px solid var(--hairline);border-radius:var(--r-lg);background:var(--card);color:var(--ink);box-shadow:var(--shadow-pop);margin:auto;overflow-y:auto}.recap[open]{gap:var(--s-4);animation:recap-in var(--t-card) var(--ease-out);display:grid}.recap::backdrop{background:#0a0a0c61}.recap .lead{font-size:var(--fs-md)}.recap-list{gap:var(--s-2);font-size:var(--fs-ui);color:var(--ink-2);margin:0;padding:0 0 0 1.1em;line-height:1.55;display:grid}.recap .actions{margin-top:var(--s-2)}@keyframes recap-in{0%{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion:reduce){.recap[open]{animation:none}}@media (width<=760px){.recap{padding:var(--s-5)}}.due-row{justify-content:space-between;align-items:center;gap:var(--s-3);margin-top:var(--s-6);padding:var(--s-4) var(--s-4) var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--tint);font-size:var(--fs-ui);color:var(--ink-2);flex-wrap:wrap;display:flex}.ch-rows{margin:0;padding:0;list-style:none}.ch-row{align-items:center;column-gap:var(--s-3);padding:var(--s-4) 0;border-top:1px solid var(--hairline);grid-template-columns:26px minmax(0,1fr) auto;grid-template-areas:"chip name count"".bar bar"".mark mark";row-gap:8px;display:grid}.ch-row:last-child{border-bottom:1px solid var(--hairline)}.ch-row .ch-chip{grid-area:chip}.ch-row-name{font-weight:600;font-size:var(--fs-ui);color:var(--ink);grid-area:name}.ch-row-count{font-size:var(--fs-sm);color:var(--muted);grid-area:count}.ch-row .bar{grid-area:bar}.ch-row-mark,.ch-row-done{font-size:var(--fs-sm);grid-area:mark;justify-self:start}.ch-row-mark{min-height:28px;margin-left:-10px}.ch-row-done .confirm-btn{margin-left:var(--s-2);color:var(--muted)}.ch-row-done{color:var(--ok);align-items:center;gap:6px;min-height:28px;font-weight:600;display:inline-flex}.confirm-ask{align-items:center;gap:var(--s-1) var(--s-2);font-size:var(--fs-sm);color:var(--ink-2);flex-wrap:wrap;padding-left:10px;display:inline-flex}.confirm-ask .confirm-yes{color:var(--ink);font-weight:600}.bulk-course{gap:var(--s-1) var(--s-4);margin:var(--s-3) 0 0 -10px;font-size:var(--fs-ui);flex-wrap:wrap;display:flex}.bulk-undo{left:50%;bottom:var(--s-5);z-index:70;align-items:center;gap:var(--s-2);max-width:calc(100vw - 2 * var(--s-4));padding:var(--s-1) var(--s-2) var(--s-1) var(--s-4);border:1px solid var(--hairline-strong);border-radius:var(--r-md);background:var(--card);color:var(--ink);font-size:var(--fs-ui);box-shadow:var(--shadow-pop);animation:bulk-undo-in .2s var(--ease-out);display:flex;position:fixed;transform:translate(-50%)}@keyframes bulk-undo-in{0%{opacity:0;transform:translate(-50%,8px)}}@media (prefers-reduced-motion:reduce){.bulk-undo{animation:none}}.storage-notice{top:calc(var(--mast-h) + var(--s-2));z-index:6;width:calc(100% - 2 * var(--s-4));max-width:780px;margin:var(--s-3) auto 0;padding:var(--s-3) var(--s-4);border:1px solid var(--hairline-strong);border-radius:var(--r-md);background:var(--tint);color:var(--ink-2);font-size:var(--fs-ui);position:sticky}.danger-zone{margin-top:var(--s-7);padding-top:var(--s-4);font-size:var(--fs-ui);color:var(--ink-2)}.danger-zone p{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.danger-zone>.btn-text{margin-left:-10px}.cheatsheet-view .cs-intro{font-size:var(--fs-body)}.cs-toolbar{top:var(--mast-h);z-index:5;align-items:center;gap:var(--s-3);margin:var(--s-5) calc(-1 * var(--card-pad)) 0;padding:var(--s-3) var(--card-pad);background:var(--card);display:flex;position:sticky}.cs-filter{background:var(--tint);border-color:var(--hairline);flex:1;height:44px}.cs-filter input{font-size:15px}.cs-count{font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.cs-jump{gap:var(--s-4);margin-top:var(--s-4);padding-bottom:var(--s-6);border-bottom:1px solid var(--hairline);display:grid}.cs-jump-group{gap:var(--s-3);grid-template-columns:130px minmax(0,1fr);align-items:start;display:grid}.cs-jump-label{font-size:var(--fs-sm);color:var(--ink);padding-top:6px;font-weight:600}.cs-jump-chips{flex-wrap:wrap;gap:6px;display:flex}.cs-results{scroll-margin-top:calc(var(--mast-h) + 80px)}.cs-empty{padding:var(--s-6) 0;font-size:var(--fs-ui)}.cs-section{padding-top:var(--s-6);scroll-margin-top:calc(var(--mast-h) + 76px)}.cs-section+.cs-section{margin-top:var(--s-4);border-top:1px solid var(--hairline)}.cs-title{justify-content:space-between;align-items:baseline;gap:var(--s-3);font-size:var(--fs-h2);margin-bottom:var(--s-3);display:flex}.cs-group{font-family:var(--font-body);font-size:var(--fs-xs);color:var(--muted);letter-spacing:0;font-weight:500}.cs-entries{margin:0}.cs-entry{gap:var(--s-2) var(--s-5);grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;padding:10px 0;display:grid}.cs-entry+.cs-entry{border-top:1px solid var(--hairline)}.cs-entry dt{min-width:0;position:relative}.cs-entry dd{font-size:var(--fs-ui);color:var(--ink-2);margin:0;padding-top:7px;line-height:1.55}.cs-code{border-radius:var(--r-sm);background:var(--code-bg);color:var(--code-ink);font-family:var(--font-mono);font-size:var(--fs-sm);font-variant-ligatures:none;white-space:pre-wrap;overflow-wrap:anywhere;cursor:copy;transition:border-color var(--t-fast) ease, background-color var(--t-fast) ease;border:1px solid #0000;margin:0;padding:7px 10px;line-height:1.6}.cs-code:hover{border-color:var(--hairline-strong)}.cs-code.copied{border-color:var(--ok-line);background:var(--ok-tint)}.cs-copied{border-radius:var(--r-pill);background:var(--card);color:var(--ok);font-size:var(--fs-xs);box-shadow:var(--shadow-front);align-items:center;gap:4px;padding:1px 8px;font-weight:600;display:inline-flex;position:absolute;top:6px;right:8px}.cs-since{border-radius:var(--r-pill);background:var(--tint);color:var(--muted);font-size:var(--fs-xs);white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:8px;padding:1px 7px;font-weight:600}.cs-refs{margin-top:var(--s-3);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.cs-refs-label{font-size:var(--fs-xs);color:var(--muted);margin-right:4px;font-weight:600}@media (width<=760px){.levels{grid-template-columns:repeat(2,minmax(0,1fr))}.level-col:nth-child(3){border-left:0;padding-left:0}.level-col:nth-child(n+3){border-top:1px solid var(--hairline)}.cs-entry{grid-template-columns:minmax(0,1fr)}.cs-entry dd{padding-top:0}.cs-jump-group{gap:var(--s-2);grid-template-columns:minmax(0,1fr)}.week-dots{gap:var(--s-3)}}.history-strip{margin:0 0 var(--s-3);grid-template-columns:repeat(14,minmax(0,1fr));gap:4px;max-width:420px;padding:0;list-style:none;display:grid}.history-strip li{aspect-ratio:1;background:var(--level-off);border-radius:4px}.history-strip li[data-level="0"]{box-shadow:inset 0 0 0 1.5px var(--hairline-strong);background:0 0}.history-strip li[data-level="1"]{background:color-mix(in srgb, var(--level-on) 35%, var(--level-off))}.history-strip li[data-level="2"]{background:color-mix(in srgb, var(--level-on) 65%, var(--level-off))}.history-strip li[data-level="3"]{background:var(--level-on)}.history-foot{font-size:var(--fs-sm)}.admin{gap:var(--s-4);align-content:start;display:grid}.admin .picker-title,.admin .picker-lead{margin:0}.admin>section{margin-top:var(--s-3)}.admin-card{gap:var(--s-3);max-width:560px;padding:var(--s-5);background:var(--card);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:var(--shadow-card);display:grid}.admin-card .section-h{margin:0}.admin-note{color:var(--ink-2);font-size:var(--fs-ui);margin:0}.admin-form{gap:var(--s-4);display:grid}.admin-form .btn-primary{justify-self:start}.admin-pw{gap:var(--s-2);display:flex}.admin-pw-input{min-width:0;font-family:var(--font-mono);font-size:var(--fs-ui);flex:1}.copy-value{align-items:center;gap:var(--s-1);flex-wrap:wrap;display:inline-flex}.copy-value code{border-radius:var(--r-xs);background:var(--code-inline-bg);color:var(--code-inline-ink);font-family:var(--font-mono);overflow-wrap:anywhere;padding:2px 8px}.acct-list{border-top:1px solid var(--hairline);max-width:760px;margin:0;padding:0;list-style:none}.acct-row{align-items:center;gap:var(--s-1) var(--s-4);padding:var(--s-3) 0;border-bottom:1px solid var(--hairline);grid-template-columns:minmax(0,1fr) auto;display:grid}.acct-who{min-width:0;display:grid}.acct-who small{color:var(--muted);overflow-wrap:anywhere}.acct-tags{gap:var(--s-1);justify-self:end;margin:0;display:flex}.acct-tag{border-radius:var(--r-pill);background:var(--tint-strong);color:var(--ink-2);font-size:var(--fs-xs);padding:2px 8px;font-weight:600}.acct-tag.is-paused{background:var(--bad-tint);color:var(--bad)}.acct-actions{align-items:center;gap:var(--s-1) var(--s-2);font-size:var(--fs-sm);flex-wrap:wrap;grid-column:1/-1;margin-left:-10px;display:flex}.acct-reset{gap:var(--s-2);grid-column:1/-1;max-width:480px;display:grid}.acct-reset .acct-actions{margin-left:0}.acct-msg{grid-column:1/-1}.picker{background:var(--ground);min-height:100dvh}.picker-top{justify-content:space-between;align-items:center;gap:var(--s-3);max-width:1040px;padding:var(--s-4) var(--s-5);margin:0 auto;display:flex}.picker-main{max-width:1040px;padding:var(--s-6) var(--s-5) var(--s-8);margin:0 auto}.picker-title{margin:0 0 var(--s-2);font-family:var(--font-display);font-weight:600;font-size:var(--fs-h1);letter-spacing:-.025em;text-wrap:balance}.picker-lead{max-width:60ch;margin:0 0 var(--s-6);font-size:var(--fs-md);line-height:1.6}.course-grid{gap:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));margin:0;padding:0;list-style:none;display:grid}.course-card{gap:var(--s-3);padding:var(--s-5) var(--s-5) var(--s-5);background:var(--card);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:var(--shadow-card);flex-direction:column;display:flex}.course-card-title{padding-bottom:var(--s-3);border-bottom:2px solid var(--ch-rule);font-family:var(--font-display);font-weight:600;font-size:var(--fs-h2);letter-spacing:-.02em;align-items:center;gap:10px;margin:0;display:flex}.course-card-summary{font-size:var(--fs-ui);color:var(--ink-2);flex:1;margin:0;line-height:1.6}.course-card-meta{font-size:var(--fs-sm);margin:0}.course-card-progress{font-size:var(--fs-sm);gap:6px;display:grid}.course-card-progress .bar>span{background:var(--ch-rule)}.course-card .btn{place-self:flex-start start}@media (width<=760px){.picker-top{padding:var(--s-3) var(--s-4)}.picker-main{padding:var(--s-4) var(--s-4) var(--s-7)}.course-card{padding:var(--s-4)}}.course-card-title .course-chip{min-width:32px;height:28px;font-size:var(--fs-sm);border-radius:8px}.picker-actions{align-items:center;gap:var(--s-2);display:flex}.account-btn{text-overflow:ellipsis;max-width:16ch;overflow:hidden}.login{min-height:100dvh;padding:var(--s-5) var(--s-4);background:var(--ground);place-items:center;display:grid;position:relative}.login-theme{top:var(--s-3);right:var(--s-3);position:absolute}.login-card{gap:var(--s-4);width:min(100%,400px);padding:var(--s-6) var(--s-6) var(--s-6);background:var(--card);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:var(--shadow-card);display:grid}.login-title{margin:var(--s-3) 0 0;font-family:var(--font-display);font-weight:600;font-size:var(--fs-h1);letter-spacing:-.025em;text-wrap:balance}.login-lead{font-size:var(--fs-ui);color:var(--ink-2);margin:0;line-height:1.6}.login-form{gap:var(--s-4);display:grid}.login-submit{width:100%}@media (width<=760px){.login-card{padding:var(--s-5)}}
