:root{--color-bg:#ffffff;--color-surface:#ffffff;--color-subtle:#f6f7f8;--color-border:#e4e6ea;--color-border-strong:#c9cdd4;--color-text:#101317;--color-muted:#5b6370;--color-faint:#8b929e;--color-accent:#3557e8;--color-accent-soft:#edf0ff;--color-inverse:#101317;--color-inverse-text:#ffffff;--color-done:#18794e;--color-done-soft:#e6f4ec;--color-code-bg:#f6f7f8;--color-note:#2952cc;--color-tip:#18794e;--color-warning:#a15c00;--color-important:#b4232c;--font-sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--font-hand:"Excalifont", "Comic Sans MS", "Segoe Print", cursive;--text-xs:12px;--text-sm:13.5px;--text-base:15px;--text-prose:17px;--text-lg:19px;--leading-prose:1.75;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:72px;--radius-sm:6px;--radius-md:14px;--shadow-pop:0 20px 60px rgba(16, 19, 23, .16), 0 2px 8px rgba(16, 19, 23, .06);--ease:180ms ease;--header-h:56px;--w-page:1120px;--w-prose:760px;--w-sidebar:284px;--w-toc:224px}[data-theme=dark]{--color-bg:#10110e;--color-surface:#171814;--color-subtle:#20211c;--color-border:#30312a;--color-border-strong:#4a4b40;--color-text:#f1f0e9;--color-muted:#aaa99e;--color-faint:#747469;--color-accent:#d7ff45;--color-accent-soft:#283116;--color-inverse:#d7ff45;--color-inverse-text:#11120e;--color-done:#b7dc3a;--color-done-soft:#293116;--color-code-bg:#0b0c09;--color-note:#d7ff45;--color-tip:#b7dc3a;--color-warning:#e0b34a;--color-important:#f0767c;--shadow-pop:0 24px 70px rgba(0, 0, 0, .55), 0 2px 8px rgba(0, 0, 0, .35)}@font-face{font-family:inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/InterVariable.woff2)format("woff2")}@font-face{font-family:inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(../fonts/InterVariable-Italic.woff2)format("woff2")}@font-face{font-family:jetbrains mono;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/JetBrainsMono-Regular.woff2)format("woff2")}@font-face{font-family:jetbrains mono;font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/JetBrainsMono-Italic.woff2)format("woff2")}@font-face{font-family:jetbrains mono;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/JetBrainsMono-Bold.woff2)format("woff2")}@font-face{font-family:excalifont;font-display:swap;src:url(../fonts/Excalifont-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2)format("woff2");unicode-range:U+20-7E,U+A0-A3,U+A5-A6,U+A8-AB,U+AD-B1,U+B4,U+B6-B8,U+BA-FF,U+131,U+152-153,U+2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2024-2026,U+2030,U+2039-203A,U+20AC,U+2122,U+2212}@font-face{font-family:excalifont;font-display:swap;src:url(../fonts/Excalifont-be310b9bcd4f1a43f571c46df7809174.woff2)format("woff2");unicode-range:U+100-130,U+132-137,U+139-149,U+14C-151,U+154-17E,U+192,U+1FC-1FF,U+218-21B,U+237,U+1E80-1E85,U+1EF2-1EF3,U+2113}@font-face{font-family:excalifont;font-display:swap;src:url(../fonts/Excalifont-41b173a47b57366892116a575a43e2b6.woff2)format("woff2");unicode-range:U+37E,U+384-38A,U+38C,U+38E-393,U+395-3A1,U+3A3-3A8,U+3AA-3CF,U+3D7}@font-face{font-family:excalifont;font-display:swap;src:url(../fonts/Excalifont-3f2c5db56cc93c5a6873b1361d730c16.woff2)format("woff2");unicode-range:U+2C7,U+2D8-2D9,U+2DB,U+2DD,U+302,U+306-307,U+30A-30C,U+326-328,U+212E,U+2211,U+FB01-FB02}*,*::before,*::after{box-sizing:border-box}html{scroll-padding-top:calc(var(--header-h) + var(--space-4));-webkit-text-size-adjust:100%;background:var(--color-bg)}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--color-bg);color:var(--color-text);font:var(--text-base)/1.6 var(--font-sans);font-feature-settings:"cv11","ss03";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body>main,body>.layout{flex:1;width:100%}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit;cursor:pointer}h1,h2,h3,h4{text-wrap:balance}kbd{padding:1px 6px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-subtle);color:var(--color-muted);font:11px var(--font-mono)}.icon{flex:none;display:block}.muted{color:var(--color-muted);font-size:var(--text-sm)}.stats{color:var(--color-muted);font-size:var(--text-sm)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.skip-link{position:absolute;left:var(--space-3);top:-60px;z-index:100;padding:var(--space-2)var(--space-3);background:var(--color-inverse);color:var(--color-inverse-text);border-radius:var(--radius-sm)}.skip-link:focus{top:var(--space-2)}.read-progress{position:fixed;top:0;left:0;z-index:60;height:2px;width:calc(var(--read,0) * 1%);background:var(--color-accent)}.kind-home .read-progress{display:none}.eyebrow,.block-title,.toc-title,.tree-label{font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted)}.topbar{position:sticky;top:0;z-index:50;height:var(--header-h);background:color-mix(in srgb,var(--color-bg) 92%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--color-border)}.topbar-in{display:flex;align-items:center;gap:var(--space-2);height:100%;padding:0 var(--space-5)}.brand{display:flex;align-items:center;gap:10px;margin-right:var(--space-5);color:var(--color-text);font-weight:650;letter-spacing:-.01em;white-space:nowrap}.brand:hover{text-decoration:none}.brand-mark{width:15px;height:15px;border:2px solid var(--color-text);border-radius:50%;background:0 0;box-shadow:none}.topnav{display:flex;gap:var(--space-1)}.topnav a,.mobile-nav a{padding:6px 10px;border-radius:var(--radius-sm);color:var(--color-muted);font-size:14px;font-weight:500;transition:color var(--ease),background var(--ease)}.topnav a:hover,.mobile-nav a:hover{color:var(--color-text);background:var(--color-subtle);text-decoration:none}.topnav a[aria-current],.mobile-nav a[aria-current]{color:var(--color-text)}.nav-soon{padding:6px 10px;color:var(--color-faint);font-size:14px;font-weight:500;white-space:nowrap;cursor:default}.nav-soon small{margin-left:4px;padding:1px 6px;border:1px solid var(--color-border);border-radius:999px;font:10px var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.topbar-gap{flex:1}.icon-btn{display:grid;place-items:center;width:36px;height:36px;border:1px solid transparent;border-radius:var(--radius-md);background:0 0;color:var(--color-muted);transition:background var(--ease),color var(--ease)}.icon-btn:hover{background:var(--color-subtle);color:var(--color-text)}.menu-btn{display:none}.search-btn{display:flex;align-items:center;gap:var(--space-2);height:36px;padding:0 8px 0 10px;min-width:200px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-subtle);color:var(--color-muted);font-size:14px;transition:border-color var(--ease)}.search-btn:hover{border-color:var(--color-border-strong)}.search-btn span{flex:1;text-align:left}[data-theme=dark] .when-light,[data-theme=light] .when-dark{display:none}.btn{display:inline-flex;align-items:center;gap:var(--space-2);min-height:40px;padding:0 var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:14px;font-weight:600;transition:border-color var(--ease),background var(--ease),opacity var(--ease)}.btn:hover{border-color:var(--color-text);text-decoration:none}.btn.primary{background:var(--color-inverse);border-color:var(--color-inverse);color:var(--color-inverse-text)}.btn.primary:hover{opacity:.9;transform:translateY(-1px);box-shadow:none}.bar{display:block;height:4px;border-radius:2px;background:var(--color-border);overflow:hidden}.bar.big{height:6px;border-radius:3px}.bar i{display:block;height:100%;width:calc(var(--p,0) * 1%);background:var(--color-text);transition:width 250ms ease}[data-state=done]>.bar i,[data-state=done] .level-head .bar i{background:var(--color-done)}.lvl{display:inline-flex;align-items:center;gap:7px;font-size:var(--text-xs);font-weight:650;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text);white-space:nowrap}.lvl-bars{display:inline-flex;align-items:flex-end;gap:2px;height:11px}.lvl-bars i{width:3px;border-radius:1px;background:var(--color-border-strong)}.lvl-bars i:nth-child(1){height:3px}.lvl-bars i:nth-child(2){height:5px}.lvl-bars i:nth-child(3){height:7px}.lvl-bars i:nth-child(4){height:9px}.lvl-bars i:nth-child(5){height:11px}.lvl-bars i.on{background:var(--color-text)}.lvl-num{font:500 var(--text-xs)var(--font-mono);color:var(--color-faint)}.tick{flex:none;display:inline-grid;place-items:center;width:16px;height:16px;border:1.5px solid var(--color-border-strong);border-radius:50%;font-size:10px;line-height:1;color:transparent;transition:background var(--ease),border-color var(--ease)}.tick::after{content:"✓"}.is-done .tick{background:var(--color-done);border-color:var(--color-done);color:var(--color-bg)}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:var(--text-sm);color:var(--color-faint)}.crumbs a{color:var(--color-muted)}.crumbs a:hover{color:var(--color-text)}.block{margin-top:var(--space-8)}.block-title{margin:0 0 var(--space-4)}.block-lede{margin:calc(var(--space-2) * -1)0 var(--space-5);max-width:60ch;color:var(--color-muted);font-size:16px}.home{padding-top:clamp(28px,6vw,86px)}.hero{position:relative;max-width:960px;padding:0 0 clamp(28px,4vw,54px);border-bottom:1px solid var(--color-border)}.hero .eyebrow{margin:0;color:var(--color-faint)}.hero .eyebrow span{color:var(--color-accent);padding-inline:5px}.hero h1{max-width:12ch;margin:18px 0 clamp(30px,5vw,55px);font-size:clamp(44px,6.3vw,80px);line-height:.98;letter-spacing:-.065em;font-weight:700}.hero-bottom{display:flex;justify-content:space-between;align-items:end;gap:var(--space-6)}.hero-text{max-width:48ch;margin:0;color:var(--color-muted);font-size:17px;line-height:1.6}.hero-actions{display:flex;flex:none;align-items:center;gap:var(--space-4)}.hero-link{color:var(--color-text);font-size:14px;font-weight:600;white-space:nowrap}.hero-link:hover{color:var(--color-accent);text-decoration:none}.hero-link span{color:var(--color-accent);margin-left:4px}.hero-index{display:flex;align-items:center;gap:9px;margin:clamp(40px,7vw,76px)0 0;color:var(--color-faint);font:11px var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.hero-index strong{color:var(--color-accent);font-weight:700}.hero-index i{width:3px;height:3px;border-radius:50%;background:var(--color-border-strong)}.path-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:var(--space-4)}.path-card{position:relative;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);transition:border-color var(--ease),transform var(--ease),background var(--ease)}.path-card:not(.is-empty):hover{border-color:var(--color-border-strong);transform:translateY(-2px);background:var(--color-subtle)}.path-card h3{margin:0;font-size:20px;letter-spacing:-.015em}.path-card h3 a{color:var(--color-text)}.path-card h3 a::after{content:"";position:absolute;inset:0}.card-desc{margin:0;flex:1;color:var(--color-muted)}.card-stats{margin:0;font:var(--text-xs)var(--font-mono);color:var(--color-muted)}.card-progress{display:grid;gap:6px}.card-cta{position:relative;font-weight:600;font-size:14px;color:var(--color-text)}.path-card.is-empty{border-style:dashed;background:0 0}.path-card.is-empty h3{color:var(--color-muted)}.path-card.is-soon .card-stats{letter-spacing:.08em;text-transform:uppercase;color:var(--color-faint)}.side-head.is-soon .side-course{color:var(--color-muted)}.level-strip{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.level-strip li{display:grid;gap:var(--space-2);align-content:start;padding:var(--space-4);border-left:1px solid var(--color-border)}.level-strip li:first-child{border-left:0}.level-blurb{color:var(--color-muted);font-size:var(--text-sm)}.principles{margin:var(--space-5)0 0;padding:0;list-style:none;counter-reset:p;display:grid;gap:var(--space-2);max-width:70ch}.principles li{counter-increment:p;display:grid;grid-template-columns:28px 1fr;color:var(--color-muted)}.principles li::before{content:counter(p);font:var(--text-xs)/2 var(--font-mono);color:var(--color-faint)}.principles b{color:var(--color-text);font-weight:600}.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:var(--space-3)}.topic-card{display:grid;gap:6px;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);background:var(--color-surface);transition:border-color var(--ease),transform var(--ease),background var(--ease)}.topic-card:hover{border-color:var(--color-border-strong);transform:translateY(-2px);background:var(--color-subtle);text-decoration:none}.topic-course{font-size:var(--text-xs);color:var(--color-faint)}.topic-card strong{font-size:16px;font-weight:600}.topic-meta{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-1);font:var(--text-xs)var(--font-mono);color:var(--color-muted)}.topic-card.is-done strong::after{content:" ✓";color:var(--color-done)}.recent{list-style:none;margin:0;padding:0;border-top:1px solid var(--color-border)}.recent a{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-3)0;border-bottom:1px solid var(--color-border);color:var(--color-text)}.recent a:hover{text-decoration:none;color:var(--color-accent)}.recent .muted{flex:none}.course-head h1{margin:var(--space-2)0 var(--space-3);font-size:clamp(30px,4.5vw,40px);line-height:1.15;letter-spacing:-.028em;font-weight:680}.course-head .eyebrow{margin:var(--space-5)0 0}.lede{margin:0 0 var(--space-5);max-width:62ch;color:var(--color-muted);font-size:var(--text-lg);line-height:1.55}.course-progress{display:grid;gap:var(--space-3);justify-items:start;padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-md)}.course-progress .bar{width:100%}.progress-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2);width:100%}.levels{list-style:none;margin:0;padding:0}.level{display:grid;grid-template-columns:44px 1fr;gap:var(--space-4)}.level-rail{position:relative;display:flex;justify-content:center}.level-rail::before{content:"";position:absolute;top:36px;bottom:-4px;width:1px;background:var(--color-border)}.level:last-child .level-rail::before{display:none}.level-dot{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--color-border-strong);border-radius:50%;background:var(--color-bg);font:500 var(--text-xs)var(--font-mono);color:var(--color-text);z-index:1}.level[data-state=done] .level-dot{background:var(--color-done);border-color:var(--color-done);color:var(--color-bg)}.level[data-state=some] .level-dot{border-color:var(--color-text);border-width:2px}.level-body{min-width:0;padding-bottom:var(--space-6)}.level-head{display:grid;gap:6px;padding-top:7px}.level-head h3{margin:0;line-height:1}.level-head .lvl{font-size:14px}.level-head .level-blurb{margin:0;font-size:var(--text-base)}.level-stats{display:flex;justify-content:space-between;margin:0;font:var(--text-xs)var(--font-mono);color:var(--color-muted)}.module-list{margin-top:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.module{border-top:1px solid var(--color-border)}.module:first-child{border-top:0}.module>summary{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3)var(--space-4);list-style:none;cursor:pointer;transition:background var(--ease)}.module>summary::-webkit-details-marker{display:none}.module>summary::before{content:"+";width:12px;font:16px/1 var(--font-mono);color:var(--color-faint)}.module[open]>summary::before{content:"−"}.module>summary:hover{background:var(--color-subtle)}.module-title{flex:1;font-weight:600}.module-count,.level-count{font:var(--text-xs)var(--font-mono);color:var(--color-muted)}.module[data-state=done] .module-count{color:var(--color-done)}.module-desc{margin:0;padding:0 var(--space-4)var(--space-3)44px;color:var(--color-muted);font-size:var(--text-sm)}.topic-list{list-style:none;margin:0;padding:0 0 var(--space-2)}.topic-list a{display:flex;align-items:center;gap:var(--space-3);min-height:38px;padding:6px var(--space-4)6px 44px;color:var(--color-text)}.topic-list a:hover{background:var(--color-subtle);text-decoration:none}.topic-title{flex:1;min-width:0}.topic-time{font:var(--text-xs)var(--font-mono);color:var(--color-faint);white-space:nowrap}.topic-list a.is-done .topic-title{color:var(--color-muted)}.ref-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:var(--space-3)}.ref-card{display:grid;gap:4px;align-content:start;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--text-sm);transition:border-color var(--ease)}.ref-card:hover{border-color:var(--color-border-strong);text-decoration:none}.ref-card strong{font-size:var(--text-base);font-weight:600}.ref-card span{color:var(--color-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.layout{display:grid;grid-template-columns:var(--w-sidebar)minmax(0,1fr)var(--w-toc)}.layout:has(>.content.wide){grid-template-columns:var(--w-sidebar)minmax(0,1fr)}.sidebar,.toc{position:sticky;top:var(--header-h);height:calc(100vh - var(--header-h));overflow-y:auto;overscroll-behavior:contain}.sidebar{padding:var(--space-5)var(--space-3)var(--space-7)var(--space-5);border-right:1px solid var(--color-border)}.mobile-nav{display:none}.content{min-width:0;padding:var(--space-6)var(--space-7)var(--space-8)}.content>*{max-width:var(--w-prose);margin-inline:auto}.content.wide>*{max-width:var(--w-page)}.content.course>*{max-width:860px}.scrim{display:none}.side-head{display:grid;gap:var(--space-2);padding:0 var(--space-2)var(--space-4);border-bottom:1px solid var(--color-border)}.tree>.side-head:not(:first-child){margin-top:var(--space-6)}.side-course{color:var(--color-text);font-weight:650}.tree{font-size:14px}.tree-label{display:flex;gap:var(--space-2);margin:var(--space-5)var(--space-2)var(--space-2)}.tree-group>summary{display:flex;align-items:center;gap:var(--space-2);padding:6px var(--space-2);border-radius:var(--radius-sm);list-style:none;cursor:pointer;user-select:none}.tree-group>summary::-webkit-details-marker{display:none}.tree-group>summary:hover{background:var(--color-subtle)}.tree-title{flex:1;font-weight:550;line-height:1.35}.count{font:11px var(--font-mono);color:var(--color-faint)}.count[data-state=done]{color:var(--color-done)}.tree-kids{margin:2px 0 var(--space-2)var(--space-2);padding-left:var(--space-2);border-left:1px solid var(--color-border)}.tree-link{display:flex;gap:var(--space-2);padding:5px var(--space-2);border-radius:var(--radius-sm);color:var(--color-muted);line-height:1.4}.tree-link:hover{background:var(--color-subtle);color:var(--color-text);text-decoration:none}.tree-link .num{flex:none;width:20px;font:11px/1.8 var(--font-mono);color:var(--color-faint)}.tree-link.is-done .num{color:var(--color-done);font-size:0}.tree-link.is-done .num::before{content:"✓";font-size:12px}.tree-link.is-active{background:var(--color-subtle);color:var(--color-text);font-weight:600;box-shadow:inset 2px 0 0 var(--color-text)}.page-head{margin-top:var(--space-4);margin-bottom:var(--space-6);padding-bottom:var(--space-5);border-bottom:1px solid var(--color-border)}.page-head h1{margin:0 0 var(--space-4);font-size:clamp(28px,4vw,38px);line-height:1.15;letter-spacing:-.028em;font-weight:680}.meta-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px var(--space-3);font:500 var(--text-xs)var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted)}.meta-line>*:not(:last-child)::after{content:"·";margin-left:var(--space-3);color:var(--color-faint);font-weight:400}.meta-line .lvl{font-family:var(--font-sans)}.prereq{margin:var(--space-3)0 0;font-size:var(--text-sm);color:var(--color-muted)}.prereq b{margin-right:var(--space-2);font-weight:600;color:var(--color-text)}.tags{display:flex;flex-wrap:wrap;gap:6px;margin:var(--space-3)0 0}.tags span{padding:1px 8px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font:var(--text-xs)var(--font-mono);color:var(--color-muted)}.module-progress{display:grid;gap:6px;margin-top:var(--space-4);max-width:320px}.lesson-list{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:var(--space-6)}.lesson-row{display:flex;align-items:center;gap:var(--space-3);min-height:46px;padding:var(--space-2)var(--space-4);color:var(--color-text);border-top:1px solid var(--color-border);transition:background var(--ease)}.lesson-row:first-child{border-top:0}.lesson-row:hover{background:var(--color-subtle);text-decoration:none}.lesson-row .num{width:22px;font:var(--text-xs)var(--font-mono);color:var(--color-faint)}.lesson-title{flex:1;min-width:0;font-weight:550}.lesson-diff,.lesson-time{font:var(--text-xs)var(--font-mono);color:var(--color-muted);white-space:nowrap}.lesson-time{width:62px;text-align:right}.lesson-row.is-done .lesson-title{color:var(--color-muted)}.prose{font-size:var(--text-prose);line-height:var(--leading-prose);overflow-wrap:break-word}.prose>:first-child{margin-top:0}.prose h2{margin:2.4em 0 .7em;font-size:25px;line-height:1.3;letter-spacing:-.02em;font-weight:660}.prose h3{margin:2em 0 .6em;font-size:20px;line-height:1.35;letter-spacing:-.01em;font-weight:640}.prose h4{margin:1.7em 0 .5em;font-size:var(--text-prose);font-weight:640}.prose :is(h2,h3,h4) .anchor{margin-left:var(--space-2);color:var(--color-faint);font-weight:400;opacity:0;transition:opacity var(--ease)}.prose :is(h2,h3,h4):hover .anchor,.prose .anchor:focus-visible{opacity:1}.prose p,.prose ul,.prose ol{margin:0 0 1.15em}.prose ul,.prose ol{padding-left:1.45em}.prose li{margin:.4em 0}.prose li::marker{color:var(--color-faint)}.prose li>ul,.prose li>ol{margin-bottom:.3em}.prose li:has(>input[type=checkbox]){list-style:none;margin-left:-1.4em}.prose input[type=checkbox]{width:16px;height:16px;margin-right:var(--space-2);vertical-align:-2px;accent-color:var(--color-done);cursor:pointer}.prose hr{margin:2.6em 0;border:0;border-top:1px solid var(--color-border)}.prose hr:has(+h2),.prose>hr:first-child{display:none}.prose strong{font-weight:640}.prose a{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--color-accent) 40%,transparent);text-underline-offset:3px}.prose a:hover{text-decoration-color:var(--color-accent)}.prose img,.prose svg,.prose video{max-width:100%;height:auto}.prose blockquote,.callout{margin:1.5em 0;padding:var(--space-3)var(--space-4);border:1px solid var(--color-border);border-left:3px solid var(--c,var(--color-border-strong));border-radius:var(--radius-sm);background:var(--color-subtle);font-size:16px;line-height:1.65}.prose blockquote>:last-child,.callout>:last-child{margin-bottom:0}.callout-title{margin:0 0 var(--space-1)!important;font-size:var(--text-xs);font-weight:650;letter-spacing:.08em;text-transform:uppercase;color:var(--c)}.callout-note{--c:var(--color-note)}.callout-tip{--c:var(--color-tip)}.callout-warning,.callout-caution{--c:var(--color-warning)}.callout-important{--c:var(--color-important)}.prose :not(pre)>code{padding:.1em .36em;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-code-bg);font:.86em var(--font-mono);font-variant-ligatures:none}.prose pre{margin:0;padding:var(--space-4);overflow-x:auto;font:14px/1.65 var(--font-mono);font-variant-ligatures:none;tab-size:4}.prose pre code{font:inherit}.prose .highlight,.prose .codewrap{position:relative;margin:1.5em 0;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-code-bg);overflow:hidden}.prose .highlight pre,.prose .chroma{background:0 0!important}.code-head{display:flex;align-items:center;justify-content:space-between;height:34px;padding:0 var(--space-2)0 var(--space-4);border-bottom:1px solid var(--color-border);font:var(--text-xs)var(--font-mono);color:var(--color-muted)}.copy-btn{padding:3px 8px;border:1px solid transparent;border-radius:var(--radius-sm);background:0 0;color:var(--color-muted);font:var(--text-xs)var(--font-sans);transition:background var(--ease),color var(--ease)}.copy-btn:hover{background:var(--color-border);color:var(--color-text)}.copy-btn.is-copied{color:var(--color-done)}.prose pre.ascii{font-size:13.5px;line-height:1.4;white-space:pre}.prose table{display:block;width:max-content;max-width:100%;overflow-x:auto;margin:1.5em 0;border-collapse:collapse;font-size:15px;line-height:1.55}.prose th,.prose td{padding:9px 14px;border-bottom:1px solid var(--color-border);vertical-align:top;text-align:left}.prose th{border-bottom-color:var(--color-border-strong);background:var(--color-subtle);font-size:var(--text-sm);font-weight:600;white-space:nowrap}.prose tbody tr:hover td{background:var(--color-subtle)}.prose td:first-child{font-weight:500}.diagram{position:relative;margin:1.8em 0;padding:var(--space-5)var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);overflow-x:auto;text-align:center}.prose pre.mermaid{padding:0;overflow:visible;background:0 0;font:16px var(--font-hand)}pre.mermaid:not([data-processed]){color:var(--color-faint);text-align:left;font:12px/1.5 var(--font-mono);max-height:160px;overflow:hidden}.diagram svg{max-width:100%;height:auto}.diagram svg :is(.nodeLabel,.edgeLabel,.cluster-label,text),.zoom-body svg :is(.nodeLabel,.edgeLabel,.cluster-label,text){font-family:var(--font-hand)!important}.diagram svg .edgeLabel,.diagram svg .edgeLabel p{background:var(--color-surface)!important}.diagram-zoom{position:absolute;top:var(--space-2);right:var(--space-2);display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-muted);opacity:0;transition:opacity var(--ease)}.diagram:hover .diagram-zoom,.diagram-zoom:focus-visible{opacity:1}@media(hover:none){.diagram-zoom{opacity:1}}.page-foot{display:grid;gap:var(--space-5);margin-top:var(--space-8);padding-top:var(--space-5);border-top:1px solid var(--color-border)}.complete-btn{justify-self:start}.complete-btn.is-done{border-color:var(--color-done);background:var(--color-done-soft);color:var(--color-done)}.pager{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.pager-link{display:grid;gap:4px;padding:var(--space-3)var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-weight:600;transition:border-color var(--ease)}.pager-link:hover{border-color:var(--color-border-strong);text-decoration:none}.pager-link small{color:var(--color-muted);font-weight:400;font-size:var(--text-xs)}.pager-link.next{text-align:right;grid-column:2}.toc{padding:var(--space-6)var(--space-4)var(--space-7)0;font-size:var(--text-sm)}.toc-title{margin-bottom:var(--space-3)}.toc ul{list-style:none;margin:0;padding:0}.toc ul ul{padding-left:var(--space-3)}.toc a{display:block;padding:4px var(--space-3);border-left:1px solid var(--color-border);color:var(--color-muted);line-height:1.4;transition:color var(--ease)}.toc a:hover{color:var(--color-text);text-decoration:none}.toc a.is-active{color:var(--color-text);border-left-color:var(--color-text);font-weight:550}dialog{padding:0;color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-pop)}dialog::backdrop{background:rgba(8,9,11,.5)}dialog.search{width:min(640px,calc(100vw - 24px));margin-top:12vh;overflow:hidden}.search-box{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);border-bottom:1px solid var(--color-border);color:var(--color-muted)}.search-box input{flex:1;min-width:0;padding:var(--space-4)0;border:0;outline:0;background:0 0;color:var(--color-text);font:16px var(--font-sans)}.search-box input::-webkit-search-cancel-button{display:none}.search-results{list-style:none;margin:0;padding:6px;max-height:56vh;overflow-y:auto}.search-results a{display:grid;grid-template-columns:1fr auto;gap:2px var(--space-3);padding:var(--space-2)var(--space-3);border-radius:var(--radius-sm);color:var(--color-text)}.search-results a:hover{text-decoration:none}.search-results li.is-sel a{background:var(--color-subtle);box-shadow:inset 2px 0 0 var(--color-text)}.search-results .r-title{font-weight:550}.search-results .r-level{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);align-self:center}.search-results .r-path,.search-results .snip{grid-column:1/-1;color:var(--color-muted);font-size:var(--text-xs)}.search-results .snip{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--text-sm)}.search-results mark{background:0 0;color:var(--color-accent);font-weight:650}.search-results .empty{padding:var(--space-5)var(--space-3);color:var(--color-muted)}.search-hint{display:flex;gap:6px;align-items:center;margin:0;padding:var(--space-2)var(--space-4);border-top:1px solid var(--color-border);color:var(--color-muted);font-size:var(--text-xs)}dialog.zoom{width:96vw;height:92vh;max-width:none;max-height:none}.zoom-close{position:absolute;top:var(--space-3);right:var(--space-3);z-index:1;background:var(--color-surface);border-color:var(--color-border)}.zoom-body{width:100%;height:100%;padding:var(--space-5);overflow:auto;display:grid;place-items:center}.zoom-body svg{width:100%;height:auto;max-width:none!important;max-height:none}.site-foot{border-top:1px solid var(--color-border)}.site-foot-in{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)var(--space-5);padding:var(--space-5);font-size:var(--text-sm)}.site-foot p{margin:0}.foot-line{flex:1;min-width:240px;color:var(--color-text);font-weight:550}.site-foot nav{display:flex;gap:var(--space-4)}.site-foot nav a{color:var(--color-muted)}@media(min-width:1600px){:root{--w-prose:800px}}@media(max-width:1240px){.layout,.layout:has(>.content.wide){grid-template-columns:var(--w-sidebar)minmax(0,1fr)}.toc{display:none}.content{padding-inline:var(--space-6)}}@media(max-width:900px){.layout,.layout:has(>.content.wide){grid-template-columns:minmax(0,1fr)}.menu-btn{display:grid}.topnav{display:none}.topbar-in{padding:0 var(--space-3)}.brand{margin-right:0}.search-btn{min-width:0;width:36px;padding:0;justify-content:center;border-color:transparent;background:0 0}.search-btn span,.search-btn kbd{display:none}.sidebar{display:block;position:fixed;z-index:45;left:0;top:var(--header-h);width:min(320px,88vw);height:calc(100dvh - var(--header-h));background:var(--color-bg);padding:var(--space-4);transform:translateX(-102%);transition:transform 220ms ease;visibility:hidden}.nav-open .sidebar{transform:none;visibility:visible}.nav-open .scrim{display:block;position:fixed;inset:var(--header-h)0 0;z-index:40;background:rgba(8,9,11,.5)}.mobile-nav{display:grid;gap:2px;margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border)}.mobile-nav a{padding:10px var(--space-2);font-size:15px}.tree-link,.tree-group>summary{padding-block:8px}.content{padding:var(--space-5)var(--space-4)var(--space-7)}.hero{padding-bottom:var(--space-6)}.hero h1{max-width:13ch}.hero-bottom{align-items:flex-start;flex-direction:column}.level-strip{grid-template-columns:1fr}.level-strip li{grid-template-columns:28px 130px 1fr;align-items:center;border-left:0;border-top:1px solid var(--color-border);padding:var(--space-3)var(--space-4)}.level-strip li:first-child{border-top:0}.block{margin-top:var(--space-7)}}@media(max-width:600px){:root{--text-prose:16.5px}.level{grid-template-columns:32px 1fr;gap:var(--space-3)}.level-dot{width:30px;height:30px}.level-rail::before{top:30px}.module-desc,.topic-list a{padding-left:var(--space-4)}.lesson-diff{display:none}.pager{grid-template-columns:1fr}.pager-link.next{grid-column:1}.prose pre{font-size:13px;padding:var(--space-3)}.prose pre.ascii{font-size:12px}.prose h2{font-size:22px}.recent a{flex-direction:column;gap:2px}.level-strip li{grid-template-columns:28px 1fr}.level-strip .level-blurb{grid-column:2}.home{padding-top:var(--space-3)}.hero{margin-inline:0}.hero h1{font-size:clamp(36px,12vw,49px)}.hero-actions{align-items:flex-start;flex-wrap:wrap;gap:var(--space-3)}.hero-index{margin-top:var(--space-6)}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}@media print{.topbar,.sidebar,.toc,.page-foot,.site-foot,.read-progress,.copy-btn,.diagram-zoom{display:none!important}.layout{display:block}}[data-theme=dark] .bg{color:#e6edf3;background-color:#0d1117}[data-theme=dark] .chroma{color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none}[data-theme=dark] .chroma .err{color:#f85149}[data-theme=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}[data-theme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-theme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}[data-theme=dark] .chroma .hl{background-color:#6e7681}[data-theme=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}[data-theme=dark] .chroma .line{display:flex}[data-theme=dark] .chroma .k{color:#ff7b72}[data-theme=dark] .chroma .kc{color:#79c0ff}[data-theme=dark] .chroma .kd{color:#ff7b72}[data-theme=dark] .chroma .kn{color:#ff7b72}[data-theme=dark] .chroma .kp{color:#79c0ff}[data-theme=dark] .chroma .kr{color:#ff7b72}[data-theme=dark] .chroma .kt{color:#ff7b72}[data-theme=dark] .chroma .nc{color:#f0883e;font-weight:700}[data-theme=dark] .chroma .no{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .nd{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .ni{color:#ffa657}[data-theme=dark] .chroma .ne{color:#f0883e;font-weight:700}[data-theme=dark] .chroma .nl{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .nn{color:#ff7b72}[data-theme=dark] .chroma .py{color:#79c0ff}[data-theme=dark] .chroma .nt{color:#7ee787}[data-theme=dark] .chroma .nv{color:#79c0ff}[data-theme=dark] .chroma .vc{color:#79c0ff}[data-theme=dark] .chroma .vg{color:#79c0ff}[data-theme=dark] .chroma .vi{color:#79c0ff}[data-theme=dark] .chroma .vm{color:#79c0ff}[data-theme=dark] .chroma .nf{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .fm{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .l{color:#a5d6ff}[data-theme=dark] .chroma .ld{color:#79c0ff}[data-theme=dark] .chroma .s{color:#a5d6ff}[data-theme=dark] .chroma .sa{color:#79c0ff}[data-theme=dark] .chroma .sb{color:#a5d6ff}[data-theme=dark] .chroma .sc{color:#a5d6ff}[data-theme=dark] .chroma .dl{color:#79c0ff}[data-theme=dark] .chroma .sd{color:#a5d6ff}[data-theme=dark] .chroma .s2{color:#a5d6ff}[data-theme=dark] .chroma .se{color:#79c0ff}[data-theme=dark] .chroma .sh{color:#79c0ff}[data-theme=dark] .chroma .si{color:#a5d6ff}[data-theme=dark] .chroma .sx{color:#a5d6ff}[data-theme=dark] .chroma .sr{color:#79c0ff}[data-theme=dark] .chroma .s1{color:#a5d6ff}[data-theme=dark] .chroma .ss{color:#a5d6ff}[data-theme=dark] .chroma .m{color:#a5d6ff}[data-theme=dark] .chroma .mb{color:#a5d6ff}[data-theme=dark] .chroma .mf{color:#a5d6ff}[data-theme=dark] .chroma .mh{color:#a5d6ff}[data-theme=dark] .chroma .mi{color:#a5d6ff}[data-theme=dark] .chroma .il{color:#a5d6ff}[data-theme=dark] .chroma .mo{color:#a5d6ff}[data-theme=dark] .chroma .o{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .ow{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .c{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .ch{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cm{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .c1{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .gd{color:#ffa198;background-color:#490202}[data-theme=dark] .chroma .ge{font-style:italic}[data-theme=dark] .chroma .gr{color:#ffa198}[data-theme=dark] .chroma .gh{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .gi{color:#56d364;background-color:#0f5323}[data-theme=dark] .chroma .go{color:#8b949e}[data-theme=dark] .chroma .gp{color:#8b949e}[data-theme=dark] .chroma .gs{font-weight:700}[data-theme=dark] .chroma .gu{color:#79c0ff}[data-theme=dark] .chroma .gt{color:#ff7b72}[data-theme=dark] .chroma .gl{text-decoration:underline}[data-theme=dark] .chroma .w{color:#6e7681}