@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Inter-VariableFont_opsz_wght.ttf) format("truetype-variations")}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/Inter-Italic-VariableFont_opsz_wght.ttf) format("truetype-variations")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/JetBrainsMono_wght_.ttf) format("truetype-variations")}@font-face{font-family:JetBrains Mono;font-style:italic;font-weight:100 800;font-display:swap;src:url(/fonts/JetBrainsMono-Italic_wght_.ttf) format("truetype-variations")}:root{--paper: #F7F6F2;--paper-2: #EEECE5;--paper-3: #E2DFD6;--ink: #111110;--ink-2: #2A2A28;--ink-3: #6B6B66;--ink-4: #A8A89F;--tp: #22B573;--tp-ink: #0E7C4A;--tp-wash: #DDF1E7;--tp-contrast: #0B3A24;--fp: #E8B84A;--fn: #D06A5C;--tn: #6B6B66;--fg: var(--ink);--fg-muted: var(--ink-3);--fg-subtle: var(--ink-4);--bg: var(--paper);--bg-panel: var(--paper-2);--rule: var(--ink);--rule-hair: var(--paper-3);--accent: var(--tp);--accent-ink: var(--tp-ink);--accent-wash: var(--tp-wash);--font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-d1: 96px;--lh-d1: .95;--fs-d2: 72px;--lh-d2: 1;--fs-d3: 56px;--lh-d3: 1.04;--fs-h1: 40px;--lh-h1: 1.08;--fs-h2: 28px;--lh-h2: 1.15;--fs-h3: 20px;--lh-h3: 1.25;--fs-body: 17px;--lh-body: 1.55;--fs-small: 14px;--lh-small: 1.45;--fs-micro: 11px;--lh-micro: 1.3;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--s-9: 96px;--s-10: 128px;--r-0: 0px;--r-sm: 2px;--r-md: 4px;--r-pill: 999px;--bw-hair: 1px;--bw-rule: 1.5px;--bw-grid: 2px;--bw-bold: 3px;--shadow-none: none;--shadow-lift: 0 2px 0 0 var(--ink);--shadow-soft: 0 12px 32px -16px rgba(17,17,16,.25);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-fast: .12s;--dur-med: .22s;--dur-slow: .42s}.cl-body,body.cl{background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"ss01","cv11";font-variation-settings:"opsz" 16}.cl-d1,h1.cl-display,.cl-d2,.cl-d3{font-variation-settings:"opsz" 32}.cl-d1,h1.cl-display{font-size:var(--fs-d1);line-height:var(--lh-d1);font-weight:100;letter-spacing:-.04em}.cl-d2{font-size:var(--fs-d2);line-height:var(--lh-d2);font-weight:100;letter-spacing:-.035em}.cl-d3{font-size:var(--fs-d3);line-height:var(--lh-d3);font-weight:100;letter-spacing:-.03em}.cl-h1{font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:400;letter-spacing:-.02em}.cl-h2{font-size:var(--fs-h2);line-height:var(--lh-h2);font-weight:400;letter-spacing:-.015em}.cl-h3{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:500;letter-spacing:-.01em}.cl-p,p.cl{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:400;color:var(--fg)}.cl-small{font-size:var(--fs-small);line-height:var(--lh-small)}.cl-label{font-size:var(--fs-micro);line-height:var(--lh-micro);font-weight:800;letter-spacing:.14em;text-transform:uppercase;font-feature-settings:"cv11"}.cl-num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum","cv11"}code.cl,.cl-code{font-family:var(--font-mono);font-size:.92em;background:var(--paper-2);padding:2px 6px;border-radius:var(--r-sm)}:root{--shell-h: 64px;--sidebar-w: 300px;--sidebar-w-collapsed: 56px;--rail-w: 220px;--reading-w: 720px;--font-scale: 1}[data-theme=dark]{--paper: #0F0F0E;--paper-2: #1A1A18;--paper-3: #2A2A26;--ink: #F3F1EA;--ink-2: #D9D7CF;--ink-3: #9E9D93;--ink-4: #63625B;--tp: #22B573;--tp-ink: #4ED29A;--tp-wash: #0E3F2A;--fg: var(--ink);--fg-muted: var(--ink-3);--fg-subtle: var(--ink-4);--bg: var(--paper);--bg-panel: var(--paper-2);--rule: var(--ink);--rule-hair: var(--paper-3);--accent-ink: var(--tp-ink)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--fg);overflow-x:clip}img,svg,video{max-width:100%}html{font-size:16px}body{font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);font-weight:400;font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh}button{font-family:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}a{color:inherit;text-decoration:none}a:hover{color:var(--accent-ink)}.shell{display:grid;grid-template-rows:minmax(var(--shell-h),auto) 1fr;grid-template-columns:minmax(0,1fr);min-height:100vh}.shell-body{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:0;min-width:0}.shell-body>main{min-width:0;overflow-x:hidden}.shell[data-sidebar=collapsed] .shell-body{grid-template-columns:var(--sidebar-w-collapsed) 1fr}@media (max-width: 960px){.shell-body{grid-template-columns:minmax(0,1fr)!important}.sb{display:none}}.hdr{display:flex;align-items:stretch;border-bottom:1.5px solid var(--rule);background:var(--bg);position:sticky;top:0;z-index:30}.hdr-left{display:flex;align-items:center;gap:14px;padding:0 18px;border-right:1.5px solid var(--rule);flex-shrink:0;width:var(--sidebar-w);transition:width var(--dur-med) var(--ease-out)}.shell[data-sidebar=collapsed] .hdr-left{width:var(--sidebar-w-collapsed);padding:0 10px;gap:0;justify-content:center}.shell[data-sidebar=collapsed] .brand-mini{display:none}.shell[data-sidebar=collapsed] .sb-toggle{margin-left:0}.hdr-center{flex:1;display:flex;align-items:center;padding:0 22px;gap:14px;min-width:0}.hdr-right{display:flex;align-items:stretch;gap:0}.brand-mini{display:flex;align-items:center;gap:10px;flex-shrink:0}.brand-mini svg{width:26px;height:26px;display:block}.brand-mini .wm{display:flex;flex-direction:column;line-height:1;font-weight:100;font-size:13px;letter-spacing:-.2px}.brand-mini .wm b{font-weight:800;font-size:9px;letter-spacing:.18em;margin-top:2px}.shell[data-sidebar=collapsed] .brand-mini .wm{display:none}@media (max-width: 720px){.brand-mini .wm{display:none}.shell[data-view=home] .brand-mini .wm{display:flex}}.hamburger{display:none;width:40px;height:40px;align-items:center;justify-content:center;border:1.5px solid var(--rule);background:var(--bg)}.hamburger:hover{background:var(--bg-panel)}@media (max-width: 960px){.hamburger{display:inline-flex}.hdr-left{width:auto!important;padding:0 10px 0 14px;border-right:0;gap:8px}.hdr-center{padding:0 8px}}@media (max-width: 720px){.hdr-left{padding:0 6px 0 12px;gap:6px}.hdr-center{padding:0 6px}}.sb-toggle{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--rule-hair);background:transparent;color:var(--fg-muted);margin-left:auto}.sb-toggle:hover{background:var(--bg-panel);color:var(--fg)}@media (max-width: 960px){.sb-toggle{display:none}}.crumbs{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted)}.crumbs a,.crumbs button.crumb{color:var(--fg-muted);white-space:nowrap;padding:4px 6px;border:0;font:inherit;letter-spacing:inherit;text-transform:inherit}.crumbs a:hover,.crumbs button.crumb:hover{color:var(--fg);background:var(--bg-panel)}.crumbs .sep{color:var(--fg-subtle);flex-shrink:0;font-weight:400}.crumbs .current{color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:0 1 auto}.crumbs .show-sm{display:none}@media (max-width: 600px){.crumbs .hide-sm{display:none}.crumbs .show-sm{display:inline-flex}}@media (max-width: 720px){.crumbs .current{white-space:normal;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;line-height:1.3;min-width:0;flex:1 1 0}}.hdr-btn{display:inline-flex;align-items:center;gap:8px;padding:0 14px;border-left:1.5px solid var(--rule);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);background:var(--bg);height:100%}.hdr-btn:hover{color:var(--fg);background:var(--bg-panel)}.hdr-btn .kbd{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:0;padding:2px 6px;border:1px solid var(--rule-hair);color:var(--fg-subtle);text-transform:none}.hdr-btn svg{width:14px;height:14px}@media (max-width: 600px){.hdr-btn .lbl,.hdr-btn .kbd{display:none}.hdr-btn{padding:0 12px}}.sb{border-right:1.5px solid var(--rule);background:var(--bg);overflow-y:auto;overflow-x:hidden;padding:22px 0 60px;position:sticky;top:var(--shell-h);height:calc(100vh - var(--shell-h))}.shell[data-sidebar=collapsed] .sb .sb-full,.shell[data-sidebar=collapsed] .sb .sb-course-head,.shell[data-sidebar=collapsed] .sb .sb-search{display:none}.sb-collapsed-strip{display:none;flex-direction:column;gap:12px;align-items:center;padding-top:10px}.shell[data-sidebar=collapsed] .sb-collapsed-strip{display:flex}.sb-dot{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid var(--rule-hair);font-size:10px;font-weight:800;letter-spacing:.06em;color:var(--fg-muted)}.sb-dot.on{border-color:var(--rule);color:var(--fg)}.sb-dot.done{background:var(--tp-wash);border-color:var(--tp);color:var(--tp-ink)}.sb-course-head{padding:0 22px 18px;border-bottom:1px solid var(--rule-hair);margin-bottom:16px}.sb-course-eyebrow{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:8px}.sb-course-title{font-size:18px;font-weight:400;letter-spacing:-.01em;line-height:1.2}.sb-course-meta{margin-top:12px;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);display:flex;gap:10px;align-items:center}.sb-course-meta .bar{flex:1;height:6px;background:var(--bg-panel);border:1px solid var(--rule-hair);position:relative}.sb-course-meta .bar>span{position:absolute;top:0;left:0;bottom:0;background:var(--tp);transition:width var(--dur-med) var(--ease-out)}.sb-search{margin:0 22px 16px;display:none}@media (max-width: 960px){.sb-search{display:block}}.sb-search input{width:100%;font-family:inherit;font-size:14px;padding:10px 12px;border:1px solid var(--rule);background:var(--bg);color:var(--fg);border-radius:4px}.sb-search input:focus{outline:none;border-color:var(--tp);box-shadow:0 0 0 3px var(--tp-wash)}.sb-scope{display:flex;gap:0;margin-top:10px;border:1px solid var(--rule-hair)}.sb-scope button{flex:1;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);padding:8px 4px;border-right:1px solid var(--rule-hair)}.sb-scope button:last-child{border-right:0}.sb-scope button.on{background:var(--ink);color:var(--paper)}.sb-module{padding:0 22px;margin-bottom:22px}.sb-module-hdr{display:flex;align-items:baseline;gap:10px;padding:6px 0 8px;width:100%;text-align:left;border:0}.sb-module-hdr .sec{font-size:10px;font-weight:800;letter-spacing:.14em;color:var(--fg-muted)}.sb-module-hdr .title{font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--fg);flex:1}.sb-module-hdr .chev{color:var(--fg-subtle);transition:transform var(--dur-fast) var(--ease-out)}.sb-module[data-open=false] .chev{transform:rotate(-90deg)}.sb-module[data-open=false] .sb-lessons{display:none}.sb-lessons{list-style:none;margin:4px 0 0;padding:0}.sb-lessons li{margin:0}.sb-lesson{display:flex;align-items:stretch;width:100%;color:var(--fg-muted);border-left:2px solid transparent;transition:background var(--dur-fast) var(--ease-out)}.sb-lesson:hover{background:var(--bg-panel);color:var(--fg)}.sb-lesson.on{color:var(--fg);border-left-color:var(--ink);background:var(--bg-panel)}.sb-check{flex-shrink:0;border:0;background:none;padding:8px 6px 8px 8px;display:flex;align-items:flex-start;cursor:pointer;color:inherit}.sb-check:hover .sb-check-box{border-color:var(--ink)}.sb-check-box{width:15px;height:15px;border:1.5px solid var(--ink-4);flex-shrink:0;margin-top:2px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.sb-lesson.done .sb-check-box{background:var(--tp);border-color:var(--tp);color:#fff}.sb-lesson.done .sb-check:hover .sb-check-box{background:var(--tp-ink);border-color:var(--tp-ink)}.sb-check:focus-visible{outline:2px solid var(--tp);outline-offset:-2px}.sb-lesson-link{flex:1;display:flex;align-items:flex-start;gap:10px;padding:8px 10px 8px 6px;text-align:left;border:0;background:none;font-size:13px;line-height:1.35;color:inherit;cursor:pointer}.sb-lesson-link .num{font-family:var(--font-mono);font-size:10px;color:var(--fg-subtle);margin-top:2px;min-width:22px}.sb-lesson-link .txt{flex:1}.main{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) var(--rail-w);gap:0}@media (max-width: 1200px){.main{grid-template-columns:minmax(0,1fr)}.rail{display:none}}.content{padding:40px 56px 120px;max-width:min(100%,calc(var(--reading-w) + 112px));width:100%;min-width:0;justify-self:center}@media (max-width: 720px){.content{padding:24px 20px 100px}}.rail{padding:40px 24px;position:sticky;top:var(--shell-h);height:calc(100vh - var(--shell-h));overflow-y:auto;border-left:1px solid var(--rule-hair)}.rail-hdr{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:14px}.rail ul{list-style:none;margin:0;padding:0}.rail a{display:block;font-size:12px;color:var(--fg-muted);border-left:2px solid transparent;padding:5px 0 5px 10px;transition:color var(--dur-fast)}.rail a:hover{color:var(--fg)}.rail a.on{color:var(--fg);border-left-color:var(--ink)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11111066;z-index:40;opacity:0;pointer-events:none;transition:opacity var(--dur-med) var(--ease-out)}.drawer-backdrop.on{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;bottom:0;left:0;width:min(340px,88vw);background:var(--bg);z-index:50;transform:translate(-100%);transition:transform var(--dur-med) var(--ease-out);display:flex;flex-direction:column;border-right:1.5px solid var(--rule)}.drawer.on{transform:translate(0)}.drawer-hdr{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1.5px solid var(--rule)}.drawer-hdr .close{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--rule-hair)}.drawer-body{flex:1;overflow-y:auto;padding:18px 0}.progress-pill{position:fixed;right:22px;bottom:22px;z-index:25;display:inline-flex;align-items:stretch;border:1.5px solid var(--ink);background:var(--bg);box-shadow:var(--shadow-lift);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.progress-pill .chip{background:var(--tp);color:var(--tp-contrast);padding:10px 12px;border-right:1.5px solid var(--ink);display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;letter-spacing:0;font-weight:500}.progress-pill .lbls{padding:6px 14px;display:flex;flex-direction:column;gap:2px;justify-content:center}.progress-pill .lbls .big{font-size:12px;color:var(--fg)}.progress-pill .lbls .sm{font-size:9px;color:var(--fg-muted);font-weight:800;letter-spacing:.12em}@media (max-width: 600px){.progress-pill{right:12px;bottom:12px}.progress-pill .lbls .sm{display:none}}.palette-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11111073;z-index:60;display:flex;align-items:flex-start;justify-content:center;padding-top:10vh}.palette{width:min(640px,92vw);background:var(--bg);border:1.5px solid var(--ink);box-shadow:var(--shadow-soft);display:flex;flex-direction:column;max-height:70vh}.palette-search{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1.5px solid var(--rule)}.palette-search svg{color:var(--fg-muted)}.palette-search input{flex:1;font-family:inherit;font-size:16px;border:0;background:transparent;outline:none;color:var(--fg)}.palette-scope{display:flex;border-bottom:1px solid var(--rule-hair);padding:10px 18px;gap:0}.palette-scope button{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:6px 10px;color:var(--fg-muted);border:1px solid var(--rule-hair);border-right-width:0}.palette-scope button:last-child{border-right-width:1px}.palette-scope button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.palette-results{overflow-y:auto;padding:8px 0}.palette-row{display:flex;align-items:center;gap:12px;padding:10px 18px;width:100%;text-align:left;border:0;font-size:13px;color:var(--fg);border-left:2px solid transparent}.palette-row:hover,.palette-row.sel{background:var(--bg-panel);border-left-color:var(--ink)}.palette-row .pr-path{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);margin-right:auto}.palette-row .pr-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-row .pr-kind{font-size:9px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:3px 6px;border:1px solid var(--rule-hair);color:var(--fg-muted)}.palette-empty{padding:30px;text-align:center;font-size:12px;color:var(--fg-muted)}.tweaks{position:fixed;right:22px;top:calc(var(--shell-h) + 16px);z-index:35;width:280px;background:var(--bg);border:1.5px solid var(--ink);box-shadow:var(--shadow-lift)}.tweaks-hdr{padding:12px 14px;border-bottom:1.5px solid var(--rule);display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.tweaks-body{padding:14px;display:flex;flex-direction:column;gap:16px}.tweak{display:flex;flex-direction:column;gap:8px}.tweak-lbl{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);display:flex;justify-content:space-between}.tweak-seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border:1px solid var(--rule-hair)}.tweak-seg button{font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-muted);padding:8px 4px;border-right:1px solid var(--rule-hair)}.tweak-seg button:last-child{border-right:0}.tweak-seg button.on{background:var(--ink);color:var(--paper)}.tweak-slider{width:100%}.tweak-toggle{display:flex;align-items:center;justify-content:space-between;padding:8px 0}.tweak-switch{width:40px;height:22px;border:1px solid var(--rule);position:relative;cursor:pointer;background:var(--bg-panel)}.tweak-switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--ink);transition:left var(--dur-fast) var(--ease-out)}.tweak-switch.on{background:var(--tp);border-color:var(--tp)}.tweak-switch.on:after{left:20px;background:var(--tp-contrast)}.cl-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:40px 56px;border-top:1px solid var(--rule);margin-top:64px}.cl-footer__brand{display:grid;grid-template-columns:32px 1fr;gap:8px;align-items:start;color:var(--fg);text-decoration:none}.cl-footer__brand:hover{color:var(--tp-ink)}.cl-footer__mark{width:32px;height:32px}.cl-footer__mark svg{width:32px;height:32px;display:block}.cl-footer__word{position:relative;height:32px;min-width:150px}.cl-footer__confusion{position:absolute;top:0;left:0;font-weight:100;font-size:16px;letter-spacing:-.032em;line-height:1;font-variation-settings:"opsz" 32;color:var(--fg);white-space:nowrap}.cl-footer__labs{position:absolute;left:0;top:17px;font-weight:800;font-size:16px;letter-spacing:.5em;line-height:1;color:var(--fg);white-space:nowrap}.cl-footer__copy{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-subtle)}@media (max-width: 720px){.cl-footer{padding:28px 20px;flex-direction:column;align-items:flex-start;gap:14px}.cl-footer__word{min-width:0}}.lesson-head{margin-bottom:28px;padding-bottom:22px;border-bottom:1.5px solid var(--rule)}.lesson-eyebrow{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:12px;display:flex;gap:10px;flex-wrap:wrap;align-items:baseline}.lesson-eyebrow .dot{color:var(--fg-subtle);font-weight:400}.lesson-eyebrow .diff{padding:2px 6px;border:1px solid var(--rule-hair)}.lesson-title{font-size:clamp(32px,5vw,52px);line-height:1.04;font-weight:100;letter-spacing:-.03em;font-variation-settings:"opsz" 32;margin:0 0 14px}.lesson-desc{font-size:18px;color:var(--fg-muted);max-width:60ch;line-height:1.5}.lesson-meta{margin-top:18px;display:flex;gap:18px;flex-wrap:wrap;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted)}.lesson-meta .ok{color:var(--tp-ink)}.lesson h2{font-size:28px;font-weight:400;letter-spacing:-.015em;line-height:1.15;margin:56px 0 16px;scroll-margin-top:calc(var(--shell-h) + 20px)}.lesson h2 .num{font-family:var(--font-mono);font-size:14px;color:var(--fg-muted);font-weight:500;letter-spacing:0;margin-right:10px}.lesson h3{font-size:20px;font-weight:500;letter-spacing:-.01em;line-height:1.25;margin:32px 0 12px;scroll-margin-top:calc(var(--shell-h) + 20px)}.lesson p{font-size:17px;line-height:1.65;margin:0 0 14px;max-width:68ch;text-wrap:pretty}.lesson ul,.lesson ol{margin:10px 0 18px;padding-left:22px;max-width:64ch}.lesson li{margin:6px 0;line-height:1.55}.lesson strong{font-weight:800}.lesson em{font-style:italic}.lesson p code,.lesson li code{font-family:var(--font-mono);font-size:.9em;padding:2px 6px;background:var(--bg-panel);border:1px solid var(--rule-hair);color:var(--fg)}.lesson a.inlink{color:var(--accent-ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.callout{margin:22px 0;padding:18px 22px;border:1px solid var(--rule);display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:flex-start;background:var(--bg-panel)}.callout .tag{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;padding:4px 8px;background:var(--ink);color:var(--paper);align-self:start;white-space:nowrap}.callout.tip .tag{background:var(--tp);color:var(--tp-contrast)}.callout.warn .tag{background:var(--fp);color:#3e2f0b}.callout.note .tag{background:var(--ink);color:var(--paper)}.callout p:last-child{margin-bottom:0}.callout p{max-width:none}.code-block{margin:22px 0;border:1.5px solid var(--ink)}.code-block-hdr{display:flex;align-items:stretch;background:var(--ink);color:var(--paper)}.code-block-hdr .file{flex:1;padding:8px 14px;font-family:var(--font-mono);font-size:11px;color:var(--paper);display:flex;align-items:center;gap:8px}.code-block-hdr .file:before{content:"";display:inline-block;width:8px;height:8px;background:var(--tp)}.code-block-hdr .copy{padding:0 14px;border-left:1.5px solid var(--paper-3);font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--paper);display:flex;align-items:center;gap:6px;background:var(--ink)}.code-block-hdr .copy:hover{background:var(--ink-2)}.code-block-hdr .copy.done{color:var(--tp)}.code-block pre{margin:0;padding:18px 22px;font-family:var(--font-mono);font-size:13px;line-height:1.6;background:#111110;color:#f7f6f2;overflow-x:auto;white-space:pre}.code-block pre .kw{color:#d4a5ff}.code-block pre .fn{color:var(--tp)}.code-block pre .st{color:var(--fp)}.code-block pre .co{color:#6b6b66;font-style:italic}.code-block pre .op{color:var(--fn)}.code-block pre .nm{color:#f7f6f2}.term{margin:22px 0;border:1.5px solid var(--ink);background:#111110;color:#f7f6f2;font-family:var(--font-mono);font-size:13px;line-height:1.6}.term-hdr{background:#1a1a18;color:#a8a89f;padding:6px 12px;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;border-bottom:1px solid #2A2A26;display:flex;align-items:center;gap:8px}.term-hdr:before{content:"";display:inline-block;width:8px;height:8px;background:var(--tp);border-radius:999px}.term-body{padding:14px 18px;overflow-x:auto;white-space:pre;max-height:360px}.term .prompt{color:var(--tp);font-weight:500}.term .cmd{color:#f7f6f2}.term .out{color:#a8a89f}.term .dim{color:#6b6b66}.term .warn{color:var(--fp)}.term .err{color:var(--fn)}.term .ok{color:var(--tp)}.cc{margin:22px 0;border:1.5px solid var(--ink);background:#0f0f0e;color:#f3f1ea;font-family:var(--font-mono);font-size:13px}.cc-hdr{display:flex;align-items:center;gap:10px;padding:8px 14px;background:#1a1a18;border-bottom:1px solid #2A2A26;font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#9e9d93}.cc-hdr .pulse{width:8px;height:8px;background:var(--tp);animation:ccPulse 2.2s ease-in-out infinite}.cc-hdr .path{margin-left:auto;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:0;text-transform:none;color:#63625b}@keyframes ccPulse{0%,to{opacity:1}50%{opacity:.35}}.cc-body{padding:16px 18px;display:flex;flex-direction:column;gap:14px}.cc-turn{display:grid;grid-template-columns:22px 1fr;gap:10px;line-height:1.55}.cc-gutter{font-size:11px;color:#63625b;font-weight:800;letter-spacing:.08em;padding-top:2px}.cc-turn.user .cc-gutter{color:var(--tp)}.cc-turn.assistant .cc-gutter{color:#9e9d93}.cc-content{min-width:0}.cc-content .tool{margin:6px 0;padding:8px 10px;background:#1a1a18;border-left:2px solid var(--tp);font-size:12px;color:#d9d7cf}.cc-content .tool .tlbl{font-size:9px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#63625b;margin-bottom:2px}.cc-content .diff-add{color:var(--tp)}.cc-content .diff-del{color:var(--fn)}.cc-options{padding:12px 14px;background:#1a1a18;border-top:1px solid #2A2A26;display:flex;flex-direction:column;gap:8px}.cc-options .opt-label{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#9e9d93;margin-bottom:4px}.cc-opt{display:flex;gap:10px;padding:10px 12px;border:1px solid #2A2A26;background:transparent;color:#d9d7cf;font-family:var(--font-mono);font-size:12px;line-height:1.5;text-align:left;align-items:flex-start;cursor:pointer;transition:background var(--dur-fast),border-color var(--dur-fast)}.cc-opt:hover{border-color:var(--tp);background:#15211b}.cc-opt.picked{border-color:var(--tp);background:#0e1e16}.cc-opt .num{color:var(--tp);font-weight:800;min-width:14px}.cc-opt .arrow{color:#63625b;margin-left:auto}.cc-reset{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#9e9d93;padding:6px 10px;border:1px solid #2A2A26;align-self:flex-start;margin-top:6px}.cc-reset:hover{border-color:#9e9d93;color:#f3f1ea}.cc-equiv{display:flex;gap:10px;align-items:flex-start;padding:8px 14px;background:#0b0b0a;border-top:1px solid #2A2A26;font-size:11px;color:#9e9d93}.cc-equiv .tag{font-size:9px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#63625b;white-space:nowrap;padding-top:2px}.cc-equiv code{font-family:var(--font-mono);color:#d9d7cf}body[data-show-equiv="0"] .cc-equiv{display:none}.gitgraph{margin:24px 0;border:1.5px solid var(--ink);background:var(--bg);padding:28px 28px 22px}.gitgraph-cap{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:18px;display:flex;gap:8px}.gitgraph-cap .fig{color:var(--fg)}.gitgraph svg{width:100%;height:auto;display:block}.gitgraph .label{font-family:var(--font-sans);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;fill:var(--fg)}.gitgraph .hash{font-family:var(--font-mono);font-size:10px;fill:var(--fg-muted)}.gitgraph .msg{font-family:var(--font-sans);font-size:12px;fill:var(--fg)}.gitgraph .branch-label{font-family:var(--font-sans);font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;fill:var(--paper)}.filetree{margin:22px 0;border:1.5px solid var(--ink);padding:22px 26px;font-family:var(--font-mono);font-size:13px;line-height:1.7;background:var(--bg)}.filetree .ft-row{display:flex;align-items:baseline;gap:8px;color:var(--fg)}.filetree .ft-row.dim{color:var(--fg-muted)}.filetree .ft-row.tp{color:var(--tp-ink)}.filetree .ft-ind{color:var(--fg-subtle);white-space:pre}.filetree .ft-icon{width:14px;flex-shrink:0;color:var(--fg-muted)}.filetree .ft-note{margin-left:auto;font-family:var(--font-sans);font-size:11px;color:var(--fg-muted);font-weight:800;letter-spacing:.08em;text-transform:uppercase}.check{margin:26px 0;border:1.5px solid var(--ink);background:var(--bg)}.check-hdr{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--ink);color:var(--paper);font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.check-hdr .num{font-family:var(--font-mono);letter-spacing:0;font-weight:500}.check-body{padding:20px 22px}.check-q{font-size:17px;line-height:1.45;margin-bottom:18px;max-width:60ch}.check-options{display:flex;flex-direction:column;gap:8px}.check-opt{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--rule-hair);background:var(--bg);text-align:left;font-size:14px;line-height:1.45;transition:border-color var(--dur-fast),background var(--dur-fast)}.check-opt:hover{border-color:var(--ink)}.check-opt .dot{width:18px;height:18px;border:1.5px solid var(--ink);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:10px;font-weight:800}.check-opt.picked{border-color:var(--ink)}.check-opt.picked .dot{background:var(--ink);color:var(--paper)}.check-opt.correct{border-color:var(--tp);background:var(--tp-wash)}.check-opt.correct .dot{background:var(--tp);border-color:var(--tp);color:var(--tp-contrast)}.check-opt.wrong{border-color:var(--fn)}.check-opt .mark{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted)}.check-opt.correct .mark{color:var(--tp-ink)}.check-opt.wrong .mark{color:#b4463a}.check-short{width:100%;font-family:inherit;font-size:15px;padding:12px 14px;border:1px solid var(--ink);background:var(--bg);color:var(--fg);border-radius:4px}.check-short:focus{outline:none;border-color:var(--tp);box-shadow:0 0 0 3px var(--tp-wash)}.check-actions{display:flex;gap:10px;align-items:center;margin-top:14px}.check-fb{margin-top:16px;padding:14px;background:var(--bg-panel);border-left:2px solid var(--ink);font-size:14px;line-height:1.5}.check-fb.ok{border-left-color:var(--tp)}.check-fb.no{border-left-color:var(--fn)}.check-fb .fb-tag{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:6px}.exercise{margin:26px 0;border:1.5px solid var(--ink)}.exercise-hdr{display:flex;padding:10px 16px;background:var(--ink);color:var(--paper);font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;gap:10px;align-items:center}.exercise-hdr .goal{margin-left:auto;font-weight:400;letter-spacing:.04em;text-transform:none;color:var(--paper-3);font-size:11px}.exercise-body{background:#0f0f0e;color:#f3f1ea;font-family:var(--font-mono);font-size:13px;padding:16px 18px;max-height:400px;overflow-y:auto}.exercise-body .line{white-space:pre-wrap;margin:2px 0;line-height:1.55}.exercise-body .prompt{color:var(--tp);font-weight:500}.exercise-body .out{color:#a8a89f}.exercise-body .ok{color:var(--tp)}.exercise-body .err{color:var(--fn)}.exercise-input-row{display:flex;gap:8px;align-items:center;padding:10px 16px;background:#0b0b0a;border-top:1px solid #2A2A26;font-family:var(--font-mono);font-size:13px}.exercise-input-row .prompt{color:var(--tp);font-weight:500}.exercise-input-row input{flex:1;font-family:inherit;font-size:13px;background:transparent;border:0;outline:none;color:#f3f1ea}.exercise-progress{padding:10px 16px;border-top:1px solid var(--rule-hair);background:var(--bg-panel);font-size:11px;display:flex;align-items:center;gap:14px;color:var(--fg-muted);font-weight:800;letter-spacing:.08em;text-transform:uppercase}.exercise-progress .step{padding:3px 8px;border:1px solid var(--rule-hair);font-family:var(--font-mono);letter-spacing:0;font-weight:500;font-size:11px;text-transform:none}.exercise-progress .step.done{background:var(--tp);color:var(--tp-contrast);border-color:var(--tp)}.exercise-progress .step.current{background:var(--ink);color:var(--paper);border-color:var(--ink)}.video-ph{margin:24px 0;border:1.5px solid var(--ink);aspect-ratio:16 / 9;background:repeating-linear-gradient(45deg,var(--bg-panel) 0 10px,var(--bg) 10px 20px);position:relative;display:flex;align-items:center;justify-content:center}.video-ph .vlabel{background:var(--bg);border:1.5px solid var(--ink);padding:14px 20px;display:flex;align-items:center;gap:14px;max-width:80%}.video-ph .vlabel .play{width:40px;height:40px;background:var(--ink);color:var(--paper);display:flex;align-items:center;justify-content:center;font-size:14px}.video-ph .vlabel .meta{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted)}.video-ph .vlabel .title{font-size:15px;color:var(--fg);margin-top:2px}.lesson-footer{margin-top:72px;padding-top:30px;border-top:1.5px solid var(--rule);display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:stretch}@media (max-width: 720px){.lesson-footer{grid-template-columns:1fr}.lesson-footer .complete-card{order:-1}}.nav-card{display:flex;flex-direction:column;gap:6px;padding:18px 20px;border:1.5px solid var(--ink);background:var(--bg);min-width:0;transition:background var(--dur-fast)}.nav-card:hover{background:var(--bg-panel)}.nav-card.disabled{opacity:.35;pointer-events:none}.nav-card .dir{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);display:flex;gap:6px;align-items:center}.nav-card.next{text-align:right;align-items:flex-end}.nav-card .name{font-size:15px;line-height:1.3}.nav-card .mod{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);margin-top:4px}.complete-card{display:flex;flex-direction:column;gap:8px;padding:16px 18px;border:1.5px solid var(--ink);background:var(--ink);color:var(--paper);align-items:stretch;min-width:180px}.complete-card.done{background:var(--tp);color:var(--tp-contrast);border-color:var(--tp)}.complete-card .lbl{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--paper-3)}.complete-card.done .lbl{color:var(--tp-contrast)}.complete-card button{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:10px 14px;border:1.5px solid var(--paper);background:transparent;color:var(--paper)}.complete-card button:hover{background:var(--paper);color:var(--ink)}.complete-card.done button{border-color:var(--tp-contrast);color:var(--tp-contrast)}.complete-card.done button:hover{background:var(--tp-contrast);color:var(--tp)}.home{padding:40px 56px 120px;max-width:1080px;margin:0 auto}@media (max-width: 720px){.home{padding:24px 20px 80px}}.home-hero{padding:36px 0 48px;border-bottom:1.5px solid var(--rule);margin-bottom:40px}.home-eyebrow{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:18px;display:flex;gap:10px;flex-wrap:wrap}.home-title{font-size:clamp(40px,7vw,88px);line-height:.98;font-weight:100;letter-spacing:-.04em;font-variation-settings:"opsz" 32;margin:0 0 22px;max-width:16ch}.home-sub{font-size:18px;line-height:1.55;color:var(--fg-muted);max-width:64ch;margin-bottom:28px}.home-stats{display:grid;grid-template-columns:repeat(4,1fr);border:1.5px solid var(--ink);margin-right:220px}@media (max-width: 900px){.home-stats{margin-right:0}}.home-stats .st{padding:18px 20px;border-right:1.5px solid var(--ink)}.home-stats .st:last-child{border-right:0}.home-stats .lbl{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:6px}.home-stats .val{font-size:28px;font-weight:100;letter-spacing:-.02em;font-variant-numeric:tabular-nums}@media (max-width: 720px){.home{padding:24px 20px 100px}.home-stats{grid-template-columns:repeat(2,1fr)}.home-stats .st:nth-child(2){border-right:0}.home-stats .st:nth-child(1),.home-stats .st:nth-child(2){border-bottom:1.5px solid var(--ink)}}.home-module{padding:30px 0;border-bottom:1px solid var(--rule-hair);display:grid;grid-template-columns:80px 1fr auto;gap:24px;align-items:flex-start;cursor:pointer;transition:padding var(--dur-fast)}.home-module:hover{background:var(--bg-panel);padding-left:16px;padding-right:16px}.home-module .mnum{font-family:var(--font-mono);font-size:14px;color:var(--fg-muted);padding-top:4px}.home-module .mtitle{font-size:22px;line-height:1.3;font-weight:400;letter-spacing:-.01em;margin-bottom:6px}.home-module .mdesc{font-size:14px;color:var(--fg-muted);line-height:1.5;margin-bottom:10px;max-width:60ch}.home-module .mmeta{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);display:flex;gap:14px}.home-module .mprog{display:flex;flex-direction:column;align-items:flex-end;gap:8px;min-width:120px}.home-module .mprog .bar{width:120px;height:6px;border:1px solid var(--rule-hair);position:relative}.home-module .mprog .bar span{position:absolute;top:0;left:0;bottom:0;background:var(--tp)}.home-module .mprog .mrat{font-family:var(--font-mono);font-size:11px;color:var(--fg-muted);letter-spacing:0;font-weight:500}@media (max-width: 720px){.home-module{grid-template-columns:50px 1fr;gap:14px}.home-module .mprog{grid-column:1 / -1;align-items:flex-start}}
