:root{--paper:#ffffff;--ink:#0b0b0f;--text:#1d1e24;--muted:#565862;--faint:#8b8e98;--hair:#e4e4ea;--hair-strong:#d3d5de;--tint:#f5f5f8;--accent:#3b4cff;--marker:#d4ff3d;--c1:#3b4cff;--c2:#12b76a;--c3:#ff6a1a;--c4:#00add8;--c5:#8b5cf6;--c6:#e5484d;--c7:#f5a524;--c8:#e93d82;--c-soon:#b9bbc4;--c:var(--accent);--note:#2540d9;--tip:#12804a;--warning:#a15c00;--important:#c2255c;--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:15.5px;--text-prose:17px;--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:80px;--line:1.5px solid var(--ink);--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--pop:4px 4px 0 var(--ink);--ease:160ms cubic-bezier(.3, .7, .3, 1);--header-h:60px;--ctx-h:0px;--w-page:1200px;--w-prose:740px;--w-sidebar:288px;--w-toc:236px}@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}[hidden]{display:none!important}html{scroll-padding-top:calc(var(--header-h) + var(--ctx-h) + var(--space-5));-webkit-text-size-adjust:100%;background:var(--paper);color-scheme:light}html,body{overflow-x:clip}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--paper);color:var(--text);font:var(--text-base)/1.6 var(--font-sans);font-feature-settings:"cv11","ss03","calt";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body>main,body>.layout{flex:1;width:100%}::selection{background:var(--marker);color:var(--ink)}a{color:var(--ink);text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}h1,h2,h3,h4{color:var(--ink);text-wrap:balance}p{text-wrap:pretty}kbd{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border:1.5px solid var(--ink);border-bottom-width:3px;border-radius:6px;background:var(--paper);color:var(--ink);font:700 11px/1 var(--font-mono)}.icon{flex:none;display:block}.muted{color:var(--muted);font-size:var(--text-sm)}:focus-visible{outline:3px solid var(--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(--ink);color:#fff;border-radius:var(--radius-sm)}.skip-link:focus{top:var(--space-2)}.read-progress{position:fixed;top:0;left:0;z-index:60;height:4px;width:calc(var(--read,0) * 1%);background:var(--c)}.kind-home .read-progress,.kind-404 .read-progress{display:none}.eyebrow,.toc-title,.tree-label,.mono-label{margin:0;font:700 11px/1.5 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.num{font:700 var(--text-xs)/1 var(--font-mono);color:var(--faint);font-variant-numeric:tabular-nums}.ulink,.crumbs a{background:linear-gradient(currentColor,currentColor)0 100%/0 1.5px no-repeat;transition:background-size var(--ease)}.ulink:hover,.crumbs a:hover{background-size:100% 1.5px}.topbar{position:sticky;top:0;z-index:50;height:var(--header-h);background:var(--paper);border-bottom:var(--line);view-transition-name:topbar}.topbar-in{display:flex;align-items:center;gap:var(--space-2);height:100%;padding:0 var(--space-5)}.kind-home .topbar-in,.kind-404 .topbar-in,body:has(.start) .topbar-in{max-width:calc(var(--w-page) + 2 * var(--space-6));margin-inline:auto;padding-inline:var(--space-6)}.brand{display:flex;align-items:center;gap:10px;margin-right:var(--space-5);color:var(--ink);font-size:17px;font-weight:800;letter-spacing:-.03em;white-space:nowrap}.brand-mark{position:relative;flex:none;width:22px;height:22px;border-radius:5px;background:var(--ink);transition:transform var(--ease)}.brand-mark i{position:absolute;right:-4px;bottom:-4px;width:12px;height:12px;border:2px solid var(--paper);border-radius:3px;background:var(--accent)}.brand:hover .brand-mark{transform:rotate(-8deg)}.topnav{display:flex;align-items:center;gap:6px}.topnav>a,.nav-menu>summary{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 13px;border:1.5px solid transparent;border-radius:999px;color:var(--muted);font-size:14.5px;font-weight:650;white-space:nowrap;transition:color var(--ease),border-color var(--ease),background var(--ease),transform var(--ease),box-shadow var(--ease)}.topnav>a .icon{width:16px;height:16px}.topnav>a:hover,.nav-menu>summary:hover{color:var(--ink);border-color:var(--ink)}.nav-start{color:var(--ink)!important;background:var(--marker);border-color:var(--ink)!important;box-shadow:2px 2px 0 var(--ink)}.nav-start:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}.nav-start[aria-current]{background:var(--ink);color:#fff!important;box-shadow:2px 2px 0 var(--marker)}.nav-menu{position:relative}.nav-menu>summary{list-style:none;cursor:pointer;user-select:none}.nav-menu>summary::-webkit-details-marker{display:none}.nav-chev{width:14px;height:14px;transform:rotate(90deg);transition:transform var(--ease)}.nav-menu[open]>summary{background:var(--ink);border-color:var(--ink);color:#fff}.nav-menu[open] .nav-chev{transform:rotate(-90deg)}.nav-cur{display:inline-flex;align-items:center;gap:6px;padding:1px 9px 1px 7px;border:1.5px solid;border-radius:999px;color:var(--ink);font:700 11px/1.5 var(--font-mono);letter-spacing:.02em}.nav-cur::before{content:"";width:7px;height:7px;border-radius:2px;background:var(--c)}.nav-menu[open] .nav-cur{color:#fff}.menu-panel{position:absolute;left:-8px;top:calc(100% + 12px);z-index:70;width:min(720px,calc(100vw - 32px));padding:8px;border:var(--line);border-radius:var(--radius-lg);background:var(--paper);box-shadow:8px 8px 0 var(--ink)}.menu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px}.menu-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:var(--radius-md);color:var(--ink);transition:background var(--ease)}.menu-item:hover,.menu-item:focus-visible{background:var(--tint)}.menu-item[aria-current]{background:color-mix(in srgb,var(--c) 14%,var(--paper))}.menu-glyph{flex:none;display:grid;place-items:center;width:44px;height:44px;border:var(--line);border-radius:var(--radius-md);background:color-mix(in srgb,var(--c) 18%,var(--paper))}.menu-glyph .glyph{width:28px;height:28px}.menu-text{display:grid;min-width:0}.menu-text b{font-size:15px;font-weight:750;letter-spacing:-.015em}.menu-text small{font:500 var(--text-xs)var(--font-mono);color:var(--muted)}.menu-foot{display:flex;align-items:center;gap:12px;margin-top:6px;padding:12px;border-top:1px solid var(--hair);border-radius:0 0 var(--radius-md)var(--radius-md);color:var(--muted);font-size:var(--text-sm);transition:background var(--ease)}.menu-foot b{color:var(--ink)}.menu-foot>.icon:first-child{width:20px;height:20px;color:var(--ink)}.menu-foot span{flex:1}.menu-foot:hover{background:var(--marker);color:var(--ink)}.topbar-gap{flex:1}.icon-btn{flex:none;display:grid;place-items:center;width:38px;height:38px;border:1.5px solid transparent;border-radius:var(--radius-md);background:0 0;color:var(--ink);transition:border-color var(--ease),background var(--ease)}.icon-btn:hover{border-color:var(--ink)}.menu-btn{display:none}.menu-btn .when-open,.nav-open .menu-btn .when-closed{display:none}.nav-open .menu-btn .when-open{display:block}.search-btn{display:flex;align-items:center;gap:var(--space-2);height:38px;padding:0 7px 0 12px;min-width:230px;border:var(--line);border-radius:var(--radius-md);background:var(--paper);color:var(--muted);font-size:14px;font-weight:500;box-shadow:3px 3px 0 var(--ink);transition:transform var(--ease),box-shadow var(--ease)}.search-btn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink);color:var(--ink)}.search-btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.search-btn span{flex:1;text-align:left}.search-btn .icon{width:16px;height:16px;color:var(--ink)}.btn{display:inline-flex;align-items:center;gap:var(--space-2);min-height:46px;padding:0 20px;border:var(--line);border-radius:var(--radius-md);background:var(--paper);color:var(--ink);font-size:15px;font-weight:700;white-space:nowrap;box-shadow:var(--pop);transition:transform var(--ease),box-shadow var(--ease)}.btn:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink)}.btn:active{transform:translate(3px,3px);box-shadow:1px 1px 0 var(--ink)}.btn .icon{width:17px;height:17px}.btn.primary{background:var(--ink);color:#fff;box-shadow:4px 4px 0 var(--c)}.btn.primary:hover{box-shadow:6px 6px 0 var(--c)}.btn.primary:active{box-shadow:1px 1px 0 var(--c)}.btn.small{min-height:34px;padding:0 12px;font-size:13px;box-shadow:2px 2px 0 var(--ink)}.btn.small:hover{box-shadow:3px 3px 0 var(--ink)}.btn.small .icon{width:14px;height:14px}.mnum{flex:none;display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 5px;border:1.5px solid var(--ink);border-radius:6px;background:var(--paper);color:var(--ink);font:700 11px/1 var(--font-mono)}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:var(--text-sm);font-weight:500;color:var(--faint)}.crumbs a{color:var(--muted)}.crumbs a:hover{color:var(--ink)}.block{margin-top:var(--space-8)}.block-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-2)var(--space-6);margin:0 0 var(--space-5);padding-bottom:var(--space-3);border-bottom:var(--line)}.block-title{margin:0;font-size:clamp(24px,3vw,34px);line-height:1.1;letter-spacing:-.04em;font-weight:800}.content .block-title{font-size:22px}.block-lede{margin:0;max-width:52ch;color:var(--muted)}.rows{list-style:none;margin:0;padding:0;border:var(--line);border-radius:var(--radius-lg);background:var(--paper);overflow:hidden}.rows>li+li,.rows>a+a{border-top:1px solid var(--hair)}.go{flex:none;width:17px;height:17px;color:var(--faint);transition:transform var(--ease),color var(--ease)}a:hover>.go{color:var(--ink);transform:translateX(3px)}.home{max-width:calc(var(--w-page) + 2 * var(--space-6));margin-inline:auto;padding:0 var(--space-6)var(--space-8)}.hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr);align-items:center;min-height:clamp(520px,62vh,640px);padding:clamp(28px,4vw,56px)0;isolation:isolate}.hero-copy{grid-row:1;grid-column:1;position:relative;z-index:1;max-width:46%}.hero-art{grid-row:1;grid-column:1;justify-self:end;width:min(820px,60%);margin-right:-24px;z-index:0}.hero::before{content:"";position:absolute;z-index:-1;inset:0 calc(50% - 50vw);background:radial-gradient(circle,var(--hair-strong) 1px,transparent 1.2px)0 0/20px 20px;-webkit-mask-image:linear-gradient(transparent,#000 12%,#000 70%,transparent);mask-image:linear-gradient(transparent,#000 12%,#000 70%,transparent)}.hero-svg{display:block;width:100%;height:auto;overflow:visible}.hero .eyebrow{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.pill{padding:3px 10px;border:var(--line);border-radius:999px;background:var(--marker);color:var(--ink)}.hero h1{margin:0 0 var(--space-6);font-size:clamp(44px,5.8vw,84px);line-height:.96;letter-spacing:-.05em;font-weight:850;text-shadow:0 0 18px var(--paper),0 0 6px var(--paper)}.hero h1 em{font-style:normal;white-space:nowrap;background:linear-gradient(transparent 58%,var(--marker) 58%,var(--marker) 92%,transparent 92%)}.hero-text{max-width:50ch;margin:0 0 var(--space-6);color:var(--muted);font-size:18px;line-height:1.6}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-4)}.hero-actions .btn:not(.primary){background:color-mix(in srgb,var(--paper) 88%,transparent)}.hero-svg text{font-family:var(--font-mono);fill:var(--ink)}.hd-label{font-size:10px;font-weight:700;letter-spacing:.08em;fill:var(--muted)!important}.hd-title{font-size:11.5px;font-weight:700;letter-spacing:.08em}.hd-title-ink{font-size:11.5px;font-weight:700;letter-spacing:.08em}.hd-sub{font-size:10px;fill:var(--muted)!important}.hd-tiny{font-size:9px;font-weight:700;letter-spacing:.06em;fill:var(--muted)!important}.hd-tag{font-size:9.5px;font-weight:700;letter-spacing:.08em}.hd-tag-bg{fill:var(--k);stroke:var(--ink);stroke-width:1.5}.hd-box{fill:var(--paper);stroke:var(--ink);stroke-width:1.5}.hd-fill{fill:var(--k)}.hd-wire{fill:none;stroke:var(--ink);stroke-width:1.5}.hd-boundary{fill:none;stroke:var(--k);stroke-width:2;stroke-dasharray:8 6}.hd-dim{fill:none;stroke:var(--k);stroke-width:1.5}.hd-req rect{fill:var(--paper);stroke:var(--ink);stroke-width:1.5}.hd-req path{stroke:var(--faint);stroke-width:3;stroke-linecap:round}.hd-shield{fill:var(--k);stroke:var(--ink);stroke-width:1.5}.hd-check{fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1}.hd-queue rect{fill:var(--k);stroke:var(--ink);stroke-width:1.5}.hd-sm{fill:var(--k);fill-opacity:.16;stroke:var(--ink);stroke-width:1.2}.hd-hbm{fill:color-mix(in srgb,var(--k) 35%,var(--paper));stroke:var(--ink);stroke-width:1.2}.hd-kv{fill:var(--paper);stroke:var(--ink);stroke-width:1.2}.hd-token rect{fill:color-mix(in srgb,var(--c1) 16%,var(--paper));stroke:var(--ink);stroke-width:1.2}.hd-token text{font-size:10px;font-weight:700}.hd-axis{fill:none;stroke:var(--ink);stroke-width:1.2}.hd-slo{fill:none;stroke:var(--c6);stroke-width:1.2;stroke-dasharray:3 3}.hd-line{fill:none;stroke:var(--k);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1}.hd-packet{fill:var(--marker);stroke:var(--ink);stroke-width:1.5}.hd-part{cursor:pointer}.hd-part>*{transition:transform var(--ease)}.hd-part:hover>*,.hd-part:focus-visible>*{transform:translate(-2px,-2px)}.hd-part:hover .hd-box,.hd-part:focus-visible .hd-box{stroke-width:2.5}.hd-part:focus-visible{outline:none}@media(prefers-reduced-motion:no-preference){.hd-boundary{animation:march 1.6s linear infinite}.hd-req{animation:req 3.6s ease-in-out infinite;animation-delay:var(--d)}.hd-queue rect{animation:queue 1.2s ease-in-out infinite;animation-delay:var(--d)}.hd-sm{animation:sm 2.4s ease-in-out infinite;animation-delay:var(--d)}.hd-kv{animation:kv 5.6s steps(1)infinite;animation-delay:var(--d)}.hd-token{animation:tok 4s ease-out infinite;animation-delay:var(--d)}.hd-line{animation:draw 4s ease-in-out infinite}.hd-check{animation:draw 3.6s ease-in-out infinite}}@keyframes march{to{stroke-dashoffset:-28}}@keyframes req{0%,100%{transform:none}50%{transform:translateX(4px)}}@keyframes queue{0%,100%{transform:none}50%{transform:translateY(-3px)}}@keyframes sm{0%,100%{fill-opacity:.16}35%{fill-opacity:1}70%{fill-opacity:.3}}@keyframes kv{0%{fill:var(--paper)}4%,82%{fill:var(--k)}}@keyframes tok{0%,4%{opacity:0;transform:translateY(5px)}14%,78%{opacity:1;transform:none}92%,100%{opacity:0}}@keyframes draw{0%{stroke-dashoffset:1}55%,85%{stroke-dashoffset:0}100%{stroke-dashoffset:-1}}.hd-token,.hd-req,.hd-queue rect{transform-box:fill-box}.side-course i{flex:none;width:10px;height:10px;border-radius:3px;background:var(--c)}.tile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5)}.tile{position:relative;display:grid;grid-template-columns:minmax(0,1fr)auto;gap:var(--space-3)var(--space-4);align-content:start;padding:var(--space-6);border:var(--line);border-radius:var(--radius-lg);background:var(--paper);color:var(--text);transition:transform var(--ease),box-shadow var(--ease)}a.tile:hover{transform:translate(-4px,-4px);box-shadow:8px 8px 0 var(--c)}a.tile:active{transform:none;box-shadow:none}.tile-glyph{grid-column:1;justify-self:start;display:grid;place-items:center;width:60px;height:60px;border:var(--line);border-radius:var(--radius-md);background:color-mix(in srgb,var(--c) 20%,var(--paper));color:var(--ink);box-shadow:3px 3px 0 var(--ink);transition:background var(--ease)}.tile-glyph .glyph{width:36px;height:36px}a.tile:hover .tile-glyph{background:var(--c)}.tile h3{grid-column:1/-1;margin:var(--space-3)0 0;font-size:clamp(26px,3vw,36px);line-height:1.02;letter-spacing:-.045em;font-weight:800}.tile p{grid-column:1/-1;margin:0;max-width:48ch;color:var(--muted);font-size:16px;line-height:1.55}.tile-mods{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:4px;margin-top:var(--space-2)}.tile-mods i{width:12px;height:12px;border:1.5px solid var(--ink);border-radius:3px;background:var(--paper);transition:background var(--ease)}a.tile:hover .tile-mods i{background:var(--c)}.tile-meta{grid-column:1;display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--space-3)}.tile-meta span,.stat-chips li{padding:3px 10px;border:1.5px solid var(--hair);border-radius:999px;background:var(--tint);font:700 11.5px/1.6 var(--font-mono);color:var(--ink);white-space:nowrap}.tile-go{grid-column:2;grid-row:1;display:grid;place-items:center;width:40px;height:40px;border:var(--line);border-radius:50%;color:var(--ink);transition:background var(--ease),color var(--ease),transform var(--ease)}a.tile:hover .tile-go{background:var(--ink);color:#fff;transform:rotate(-45deg)}.tile.is-soon{--c:var(--c-soon);grid-column:1/-1;border-style:dashed;border-color:var(--c-soon)}.tile.is-soon h3{color:var(--muted)}.list-note{margin:var(--space-4)0 0;color:var(--muted);font-size:var(--text-sm)}.recent a{display:grid;grid-template-columns:40px minmax(0,1fr)auto 17px;gap:var(--space-4);align-items:center;padding:14px var(--space-5);color:var(--ink);font-weight:600;transition:background var(--ease)}.recent a:hover{background:var(--tint)}.recent .muted{font:500 var(--text-xs)var(--font-mono);color:var(--muted)}.course-head{padding-top:var(--space-5)}.course-title{display:flex;align-items:center;gap:var(--space-5);margin-bottom:var(--space-4)}.course-glyph{flex:none;display:grid;place-items:center;width:84px;height:84px;border:var(--line);border-radius:var(--radius-lg);background:var(--c);color:var(--ink);box-shadow:var(--pop)}.course-glyph .glyph{width:52px;height:52px}.course-head h1{margin:0;font-size:clamp(38px,5.6vw,68px);line-height:1;letter-spacing:-.045em;font-weight:850}.lede{margin:0 0 var(--space-5);max-width:60ch;color:var(--muted);font-size:19px;line-height:1.55}.course-cta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4)var(--space-5)}.stat-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.modules{list-style:none;margin:0;padding:0}.module{display:grid;grid-template-columns:44px minmax(0,1fr);gap:var(--space-4);padding-bottom:var(--space-3);scroll-margin-top:calc(var(--header-h) + var(--space-4))}.module-rail{position:relative;display:flex;justify-content:center}.module-rail::before{content:"";position:absolute;top:44px;bottom:calc(var(--space-3) * -1);border-left:1.5px dashed var(--ink)}.module:last-child .module-rail::before{display:none}.module-dot{display:grid;place-items:center;width:44px;height:44px;margin-top:8px;border:var(--line);border-radius:var(--radius-md);background:var(--paper);color:var(--ink);font:800 16px var(--font-mono);z-index:1;transition:background var(--ease),color var(--ease),box-shadow var(--ease)}.module:has(.tgroup[open]) .module-dot{background:var(--ink);color:#fff;box-shadow:3px 3px 0 var(--c)}.module .tgroup{border:var(--line);border-radius:var(--radius-lg);background:var(--paper);overflow:hidden}.tgroup-kicker{font:700 10.5px/1.6 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.tgroup[open]>summary .tgroup-kicker{color:var(--marker)}.tgroup>summary{display:grid;grid-template-columns:minmax(0,1fr)auto 17px;gap:var(--space-3);align-items:center;padding:15px var(--space-4);list-style:none;cursor:pointer;transition:background var(--ease)}.tgroup>summary::-webkit-details-marker{display:none}.tgroup>summary:hover{background:var(--tint)}.tgroup[open]>summary{background:var(--ink)}.tgroup[open]>summary :is(.tgroup-title,.tgroup-meta,.go){color:#fff}.tgroup[open]>summary .tgroup-desc{color:#c9cbd3}.tgroup-main{display:grid;gap:1px;min-width:0}.tgroup-title{color:var(--ink);font-size:16.5px;font-weight:700;letter-spacing:-.015em}.tgroup-desc{color:var(--muted);font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tgroup[open] .tgroup-desc{white-space:normal}.tgroup-meta{font:500 var(--text-xs)var(--font-mono);color:var(--muted);white-space:nowrap}.tgroup .go{transition:transform var(--ease)}.tgroup[open]>summary .go{transform:rotate(90deg)}.topic-list{list-style:none;margin:0;padding:6px 0}.topic-row{display:grid;grid-template-columns:34px minmax(0,1fr)62px 17px;gap:var(--space-3);align-items:center;min-height:42px;padding:6px var(--space-4);color:var(--ink);font-weight:500;transition:background var(--ease),padding var(--ease)}.topic-row:hover{background:var(--tint);padding-left:calc(var(--space-4) + 4px)}.topic-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topic-time{font:var(--text-xs)var(--font-mono);color:var(--muted);white-space:nowrap}.topic-time{text-align:right}.topic-row.is-overview{color:var(--muted)}.topic-row.is-overview .topic-title{grid-column:2/4}.ref-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:var(--space-4)}.ref-card{display:grid;gap:4px;align-content:start;padding:var(--space-4);border:var(--line);border-radius:var(--radius-md);background:var(--paper);color:var(--text);font-size:var(--text-sm);transition:transform var(--ease),box-shadow var(--ease)}.ref-card:hover{transform:translate(-3px,-3px);box-shadow:6px 6px 0 var(--c)}.ref-card strong{color:var(--ink);font-size:17px;font-weight:800;letter-spacing:-.02em}.ref-card span{color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.glyph{display:block;color:var(--ink)}.glyph .g-f{fill:var(--c)}.glyph .g-draw{stroke-dasharray:1}.glyph .g-dash{stroke-dasharray:3 3}.glyph :is(.g-blink,.g-blink2,.g-spin,.g-tok,.g-fill){transform-box:fill-box;transform-origin:center}@media(prefers-reduced-motion:no-preference){:is(a.tile,.menu-item,.mt-material):hover .g-draw,.course-glyph .g-draw{animation:gdraw .9s ease-out both}:is(a.tile,.menu-item,.mt-material):hover .g-blink{animation:gblink .7s ease-in-out infinite alternate}:is(a.tile,.menu-item,.mt-material):hover .g-blink2{animation:gblink .7s ease-in-out .35s infinite alternate}:is(a.tile,.menu-item,.mt-material):hover .g-spin{animation:gpulse .9s ease-in-out infinite alternate}:is(a.tile,.menu-item,.mt-material):hover .g-dash{animation:march .8s linear infinite}:is(a.tile,.menu-item,.mt-material):hover .g-tok{animation:gtok .9s ease-in-out infinite alternate}:is(a.tile,.menu-item,.mt-material):hover .g-fill{animation:gfill .9s steps(1)infinite}}@keyframes gdraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes gblink{to{fill:var(--paper)}}@keyframes gpulse{to{transform:scale(.7)}}@keyframes gtok{to{transform:translateX(3px)}}@keyframes gfill{50%{fill:var(--c)}}.start{padding-top:var(--space-6)}.start-head{padding:var(--space-5)0 var(--space-3)}.start-head h1{margin:0 0 var(--space-4);font-size:clamp(44px,6.4vw,84px);line-height:.98;letter-spacing:-.05em;font-weight:850}.start-head h1 em{font-style:normal;background:linear-gradient(transparent 58%,var(--marker) 58%,var(--marker) 92%,transparent 92%)}.start-head .lede{max-width:56ch}.start .block-head{align-items:end}.tree-tools{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)var(--space-5)}.structure{display:grid;grid-template-columns:minmax(0,1.15fr)minmax(0,1fr);gap:var(--space-6);align-items:start}.anatomy{margin:0;padding:var(--space-5);border:var(--line);border-radius:var(--radius-lg);background:var(--paper)url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20'%3E%3Ccircle cx='1' cy='1' r='1' fill='%23d3d5de'/%3E%3C/svg%3E");overflow-x:auto}.anatomy>.mt-v{margin-left:0}.anatomy>.mt-v>li::before,.anatomy>.mt-v>li::after{display:none}.study{padding:var(--space-5);border:var(--line);border-radius:var(--radius-lg);background:var(--ink);color:#fff;box-shadow:6px 6px 0 var(--marker)}.study-title{margin:0 0 var(--space-4);color:#fff;font-size:22px;letter-spacing:-.03em;font-weight:800}.study-steps{list-style:none;margin:0;padding:0;counter-reset:s;display:grid;gap:var(--space-4)}.study-steps li{display:grid;grid-template-columns:34px minmax(0,1fr);gap:2px var(--space-3);counter-increment:s}.study-steps li::before{content:counter(s);grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border:1.5px solid var(--marker);border-radius:8px;color:var(--marker);font:800 14px var(--font-mono)}.study-steps b{font-size:15.5px}.study-steps span{color:#c9cbd3;font-size:var(--text-sm);line-height:1.5}.mtree,.mt-kids{list-style:none;margin:0;padding:0}.mtree-wrap{overflow-x:auto;padding:var(--space-5)var(--space-4);border:var(--line);border-radius:var(--radius-lg);background:var(--paper)url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20'%3E%3Ccircle cx='1' cy='1' r='1' fill='%23d3d5de'/%3E%3C/svg%3E");scrollbar-width:thin}.mtree>li,.mtree .mt-kids>li{display:flex;align-items:center}.mtree .mt-kids{position:relative;display:flex;flex-direction:column;margin-left:44px}.mtree .mt-kids::before{content:"";position:absolute;left:-44px;top:50%;width:22px;border-top:1.5px solid var(--ink)}.mtree .mt-kids>li{position:relative;padding:5px 0}.mtree .mt-kids>li::before{content:"";position:absolute;left:-22px;top:50%;width:22px;border-top:1.5px solid var(--ink)}.mtree .mt-kids>li::after{content:"";position:absolute;left:-22px;top:0;bottom:0;border-left:1.5px solid var(--ink)}.mtree .mt-kids>li:first-child::after{top:50%}.mtree .mt-kids>li:last-child::after{bottom:50%}.mtree .mt-kids>li:only-child::after{display:none}.mt-mods>li::before,.mt-mods>li::after,.mt-mods::before{border-color:var(--c)!important;border-width:2px!important}.mt-node{position:relative;display:grid;gap:1px;align-content:center;padding:9px 14px;border:var(--line);border-radius:var(--radius-md);background:var(--paper);color:var(--ink);line-height:1.3}.mt-node b{font-size:15px;font-weight:750;letter-spacing:-.015em}.mt-node small{color:var(--muted);font-size:12px;line-height:1.4}.mt-kicker{font:700 10px/1.5 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.mt-root{display:flex;align-items:center;gap:10px;padding:14px 16px;background:var(--ink);color:#fff;box-shadow:4px 4px 0 var(--marker)}.mt-root b{color:#fff;font-size:18px}.mt-root small{color:#c9cbd3;font-family:var(--font-mono)}.mt-root .brand-mark{background:#fff}.mt-root .brand-mark i{border-color:var(--ink)}.mt-layer{width:200px;background:var(--tint)}.mt-material{display:grid;grid-template-columns:40px minmax(0,1fr);gap:2px 10px;width:290px;padding:9px 10px;border-left:7px solid var(--c);transition:box-shadow var(--ease),transform var(--ease)}.mt-material:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--c)}.mt-glyph{grid-row:span 2;display:grid;place-items:center;width:40px;height:40px;border:1.5px solid var(--ink);border-radius:8px;background:color-mix(in srgb,var(--c) 22%,var(--paper))}.mt-glyph .glyph{width:26px;height:26px}.mt-material a:hover b{text-decoration:underline;text-decoration-color:var(--c);text-decoration-thickness:2px;text-underline-offset:3px}.mt-toggle{justify-self:start;display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 8px 0 5px;border:1.5px solid var(--ink);border-radius:999px;background:var(--paper);color:var(--ink);font:700 11px var(--font-mono);white-space:nowrap}.mt-toggle .icon{width:13px;height:13px;transition:transform var(--ease)}.mt-toggle:hover{background:var(--marker)}.mt-toggle[aria-expanded=true]{background:var(--ink);color:#fff}.mt-toggle[aria-expanded=true] .icon{transform:rotate(45deg)}.mt-module{display:grid;grid-template-columns:26px minmax(0,1fr)auto;align-items:center;gap:10px;width:330px;padding:6px 12px 6px 6px;transition:background var(--ease),transform var(--ease)}.mt-module .num{display:grid;place-items:center;width:26px;height:26px;border:1.5px solid var(--ink);border-radius:6px;background:var(--c);color:var(--ink);font-size:12px}.mt-module b{font-size:14px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mt-module small{font:500 11px var(--font-mono);white-space:nowrap}.mt-module:hover{background:var(--tint);transform:translateX(3px)}.mt-lesson{display:flex;align-items:center;gap:10px;padding:6px 12px;font-size:14px;font-weight:500;border-color:var(--hair-strong)}.mt-lesson .num{color:var(--ink)}.mt-lesson:hover{border-color:var(--ink);background:var(--tint)}.mt-more{border-style:dashed;border-color:var(--faint);color:var(--muted);font:500 12px var(--font-mono);padding:6px 12px}@media(prefers-reduced-motion:no-preference){.mt-mods:not([hidden])>li{animation:grow 260ms cubic-bezier(.2,.8,.2,1)both;animation-delay:calc(var(--i,0) * 22ms)}}@keyframes grow{from{opacity:0;transform:translateX(-8px)}}.mt-v{position:relative;display:block;margin-left:26px}.mt-v>li{position:relative;display:block;padding-top:8px}.mt-v>li::before{content:"";position:absolute;left:-16px;top:calc(8px + var(--mid,19px));width:16px;border-top:1.5px solid var(--ink)}.mt-v>li::after{content:"";position:absolute;left:-16px;top:0;bottom:0;border-left:1.5px solid var(--ink)}.mt-v>li:last-child::after{bottom:auto;height:calc(8px + var(--mid,19px))}.mt-v .mt-node{display:inline-flex;align-items:center;gap:10px;min-height:38px;width:auto}.mt-v .mt-material,.mt-v .mt-module{display:inline-flex;width:auto;padding:7px 14px;border-left-width:1.5px}.mt-v .mt-material{background:var(--c);border-color:var(--ink)}.mt-v .mt-material .mt-kicker{color:var(--ink)}.mt-v .mt-module{background:color-mix(in srgb,var(--c) 18%,var(--paper))}.mt-v .mt-module b{white-space:normal}.paths{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:var(--space-5)}.path-card{display:grid;align-content:start;padding:var(--space-5);border:var(--line);border-radius:var(--radius-lg);background:var(--paper);transition:box-shadow var(--ease),transform var(--ease)}.path-card:hover{transform:translate(-3px,-3px);box-shadow:6px 6px 0 var(--ink)}.path-card h3{margin:0 0 4px;font-size:21px;line-height:1.2;letter-spacing:-.03em;font-weight:800}.path-card>p{margin:0 0 var(--space-4);color:var(--muted);font-size:var(--text-sm)}.path-steps{list-style:none;margin:0;padding:0;counter-reset:p}.path-steps li{position:relative;padding:0 0 var(--space-2)34px;counter-increment:p}.path-steps li::before{content:counter(p);position:absolute;left:0;top:7px;display:grid;place-items:center;width:22px;height:22px;border:1.5px solid var(--ink);border-radius:50%;background:var(--c);color:var(--ink);font:700 11px var(--font-mono);z-index:1}.path-steps li:not(:last-child)::after{content:"";position:absolute;left:10.5px;top:28px;bottom:0;border-left:1.5px dashed var(--ink)}.path-steps a{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 var(--space-2);align-items:baseline;padding:6px 10px;border-radius:var(--radius-sm);color:var(--ink);transition:background var(--ease)}.path-steps a:hover{background:color-mix(in srgb,var(--c) 16%,var(--paper))}.ps-mat{font-weight:750;letter-spacing:-.01em}.ps-mods{font:700 11px var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink)}.ps-note{grid-column:1/-1;color:var(--muted);font-size:var(--text-sm)}.drawer-start{display:none}.layout{display:grid;grid-template-columns:var(--w-sidebar)minmax(0,1fr)var(--w-toc)}.layout.is-wide{grid-template-columns:var(--w-sidebar)minmax(0,1fr)}.sidebar,.toc{position:sticky;top:var(--header-h);height:calc(100dvh - var(--header-h));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--hair)transparent}.sidebar{padding:var(--space-5)var(--space-3)var(--space-7)var(--space-4);border-right:1px solid var(--hair);background:var(--paper)}.sidebar.drawer-only{display:none}.path-switch{display:none}.col{min-width:0}.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:920px}.scrim{display:none}.ctxbar{display:none}.side-course{display:flex;align-items:center;gap:var(--space-2);margin:0 var(--space-2);padding-bottom:var(--space-3);border-bottom:var(--line);color:var(--ink);font-size:17px;font-weight:800;letter-spacing:-.03em}.tree>.side-course:not(:first-child){margin-top:var(--space-6)}.tree{font-size:14px}.tree-label{display:flex;gap:var(--space-2);margin:var(--space-5)var(--space-2)6px}.tree-group>summary{display:flex;align-items:center;gap:9px;padding:7px var(--space-2);border-radius:var(--radius-sm);color:var(--ink);list-style:none;cursor:pointer;user-select:none;transition:background var(--ease)}.tree-group>summary::-webkit-details-marker{display:none}.tree-group>summary:hover{background:var(--tint)}.tree-title{flex:1;font-weight:700;line-height:1.35;letter-spacing:-.01em}.count{font:700 11px var(--font-mono);color:var(--faint)}.tree-kids{margin:2px 0 var(--space-2)11px;padding-left:6px;border-left:1.5px solid var(--hair)}.tree-link{display:flex;gap:var(--space-2);padding:6px var(--space-2);border-radius:var(--radius-sm);color:var(--muted);font-weight:500;line-height:1.4;transition:background var(--ease),color var(--ease)}.tree-link:hover{background:var(--tint);color:var(--ink)}.tree-link .num{flex:none;width:28px;font:700 11px/1.75 var(--font-mono)}.tree-link.is-active{background:var(--ink);color:#fff;font-weight:700}.tree-link.is-active .num{color:var(--marker)}.tree-group[open]>summary .mnum{background:var(--ink);color:#fff}.page-head{margin-top:var(--space-4);margin-bottom:var(--space-6);padding-bottom:var(--space-5);border-bottom:var(--line)}.page-head h1{margin:0 0 var(--space-4);font-size:clamp(32px,4.2vw,48px);line-height:1.05;letter-spacing:-.04em;word-spacing:.04em;font-weight:850}.meta-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font:700 11px var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--ink)}.meta-line>*{padding:3px 10px;border:1.5px solid var(--hair);border-radius:999px;background:var(--tint)}.meta-line>.mod-badge{border-color:var(--ink);background:var(--c);color:var(--ink)}.meta-line>a.mod-badge:hover{box-shadow:2px 2px 0 var(--ink)}.prereq{margin:var(--space-3)0 0;font-size:var(--text-sm);color:var(--muted)}.prereq b{margin-right:var(--space-2);font:700 11px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}.tags{display:flex;flex-wrap:wrap;gap:6px;margin:var(--space-3)0 0}.tags span{padding:1px 8px;border:1.5px solid var(--hair);border-radius:999px;font:var(--text-xs)var(--font-mono);color:var(--muted)}.lesson-list{margin-bottom:var(--space-7)}.lesson-row{display:grid;grid-template-columns:34px minmax(0,1fr)58px 17px;gap:var(--space-3);align-items:center;padding:13px var(--space-4);color:var(--ink);transition:background var(--ease)}.lesson-row:hover{background:var(--tint)}.lesson-main{display:grid;gap:1px;min-width:0}.lesson-title{font-weight:700;letter-spacing:-.01em}.lesson-desc{color:var(--muted);font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lesson-time{font:var(--text-xs)var(--font-mono);color:var(--muted);white-space:nowrap}.lesson-time{text-align:right}.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.2em 0 .7em;padding-top:1.2em;border-top:1px solid var(--hair);font-size:29px;line-height:1.15;letter-spacing:-.04em;font-weight:800}.prose>h2:first-child{padding-top:0;border-top:0}.prose h3{margin:2em 0 .6em;font-size:21px;line-height:1.3;letter-spacing:-.025em;font-weight:750}.prose h4{margin:1.7em 0 .5em;font-size:var(--text-prose);font-weight:750}.prose :is(h2,h3,h4) .anchor{margin-left:var(--space-2);color:var(--faint);font-weight:400;opacity:0;transition:opacity var(--ease)}.prose :is(h2,h3,h4):hover .anchor,.prose .anchor:focus-visible{opacity:1}.prose .anchor:hover{color:var(--ink)}.prose p,.prose ul,.prose ol{margin:0 0 1.2em}.prose ul,.prose ol{padding-left:1.45em}.prose li{margin:.4em 0}.prose ul>li::marker{color:var(--ink)}.prose ol>li::marker{font:700 .82em var(--font-mono);color:var(--ink)}.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(--ink)}.prose hr{display:none}.prose strong{font-weight:700;color:var(--ink)}.prose a{text-decoration:underline;text-decoration-thickness:2px;text-decoration-color:var(--c);text-underline-offset:3px;font-weight:500;transition:background var(--ease)}.prose a:not(.anchor):hover{background:color-mix(in srgb,var(--c) 22%,transparent)}.prose .anchor{text-decoration:none}.prose img,.prose svg,.prose video{max-width:100%;height:auto}.prose blockquote,.callout{margin:1.6em 0;padding:var(--space-4)var(--space-5);border:var(--line);border-left-width:8px;border-left-color:var(--k,var(--ink));border-radius:var(--radius-md);background:var(--paper);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:700 11px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--k)}.callout-note{--k:var(--note)}.callout-tip{--k:var(--tip)}.callout-warning,.callout-caution{--k:var(--warning)}.callout-important{--k:var(--important)}.prose :not(pre)>code{padding:.12em .4em;border:1px solid var(--hair);border-radius:5px;background:var(--tint);color:var(--ink);font:.86em var(--font-mono);font-variant-ligatures:none}.prose pre{margin:0;padding:var(--space-4)18px;overflow-x:auto;font:13.5px/1.7 var(--font-mono);font-variant-ligatures:none;tab-size:4;scrollbar-width:thin;scrollbar-color:var(--faint)transparent}.prose pre code{font:inherit}.code{position:relative;margin:1.6em 0;border:var(--line);border-radius:var(--radius-md);background:var(--tint);overflow:hidden}.code .highlight pre,.code .chroma{background:0 0!important}.code-head{display:flex;align-items:center;justify-content:space-between;height:38px;padding:0 6px 0 18px;border-bottom:var(--line);background:var(--paper)}.code-lang{display:inline-flex;align-items:center;gap:var(--space-2);font:700 11px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}.copy-btn{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 9px;border:1.5px solid transparent;border-radius:var(--radius-sm);background:0 0;color:var(--muted);font:600 12px var(--font-sans);transition:border-color var(--ease),color var(--ease)}.copy-btn .icon{width:13px;height:13px}.copy-btn:hover{border-color:initial;color:var(--ink)}.copy-btn .ico-done,.copy-btn.is-copied .ico-copy{display:none}.copy-btn.is-copied .ico-done{display:block}.copy-btn.is-copied{color:var(--tip)}.code.is-term{background:var(--ink);box-shadow:4px 4px 0 var(--marker)}.code.is-term .code-head{background:var(--ink);border-bottom-color:#2c2d36}.code.is-term .code-lang{color:#fff}.code.is-term .code-lang::before{content:"$";display:grid;place-items:center;width:20px;height:20px;border-radius:5px;background:var(--marker);color:var(--ink);letter-spacing:0}.code.is-term .copy-btn{color:#a5a9b3}.code.is-term .copy-btn:hover,.code.is-term .copy-btn.is-copied{color:var(--marker)}.code.is-plain{border:1.5px solid var(--hair);background:var(--paper)}.prose pre.ascii{font-size:13px;line-height:1.45;white-space:pre;color:var(--text)}.prose table{display:block;width:max-content;max-width:100%;overflow-x:auto;margin:1.6em 0;border-collapse:collapse;font-size:15px;line-height:1.55;scrollbar-width:thin}.prose th,.prose td{padding:10px 14px;border-bottom:1px solid var(--hair);vertical-align:top;text-align:left}.prose th{border-bottom:var(--line);font:700 11px/1.8 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);white-space:nowrap}.prose tbody tr:hover td{background:var(--tint)}.prose td:first-child{font-weight:600;color:var(--ink)}.prose [id^=term-]{scroll-margin-top:calc(var(--header-h) + var(--ctx-h) + var(--space-5))}.prose [id^=term-]:target{background:var(--marker)}.diagram{position:relative;margin:1.8em 0;padding:var(--space-5)var(--space-4);border:var(--line);border-radius:var(--radius-md);background:var(--paper);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(--faint);text-align:left;font:12px/1.5 var(--font-mono);max-height:160px;overflow:hidden}.diagram svg{max-width:100%;height:auto}:is(.diagram,.zoom-scene) svg:not(.hw-svg) :is(.nodeLabel,.edgeLabel,.cluster-label,text){font-family:var(--font-hand)!important}.diagram.hw{padding:0;overflow:hidden;text-align:left;contain:inline-size}.diagram.hw>svg{display:block;width:100%}.diagram.hw figcaption{min-height:46px;padding:var(--space-3)120px var(--space-3)var(--space-4);border-top:1px solid var(--hair);font:12.5px/1.55 var(--font-sans);color:var(--muted)}.diagram.hw .diagram-zoom{top:auto;bottom:var(--space-2);opacity:1}:is(.diagram,.zoom-scene) svg .edgeLabel,:is(.diagram,.zoom-scene) svg .edgeLabel p{background:var(--paper)!important}.diagram-zoom{position:absolute;top:var(--space-2);right:var(--space-2);display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 9px 0 7px;border:var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);font:700 11px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;box-shadow:2px 2px 0 var(--ink);opacity:.55;transition:opacity var(--ease),transform var(--ease),box-shadow var(--ease)}.diagram-zoom .icon{width:15px;height:15px}.diagram:hover .diagram-zoom,.diagram-zoom:focus-visible{opacity:1}.diagram-zoom:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink);background:var(--marker)}@media(hover:none){.diagram-zoom{opacity:1}}.lg{display:inline-block;width:22px;height:22px;margin-right:7px;vertical-align:-5px;background:50%/contain no-repeat}:is(.diagram,.zoom-scene) svg .nodeLabel small{font-size:12.5px;color:#495057}:is(.diagram,.zoom-scene) svg .cluster-label .lg{width:18px;height:18px;vertical-align:-4px}.related{margin-top:var(--space-8)}.related-row{grid-template-columns:minmax(0,1fr)17px}.page-foot{display:grid;gap:var(--space-5);margin-top:var(--space-8);padding-top:var(--space-5);border-top:var(--line)}.foot-note{margin:0;color:var(--muted);font-size:var(--text-sm)}.foot-note a{font-weight:700}.pager{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.pager-link{display:grid;gap:6px;align-content:start;padding:var(--space-4)var(--space-5);border:var(--line);border-radius:var(--radius-md);background:var(--paper);color:var(--ink);font-size:18px;font-weight:800;line-height:1.25;letter-spacing:-.03em;transition:transform var(--ease),box-shadow var(--ease)}.pager-link:hover{transform:translate(-3px,-3px);box-shadow:6px 6px 0 var(--c)}.pager-link small{font:700 11px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.pager-link.next{text-align:right;grid-column:2;background:var(--ink);color:#fff}.pager-link.next small{color:var(--marker)}.toc{padding:var(--space-6)var(--space-5)var(--space-7)0;font-size:13.5px}.toc-title{margin-bottom:var(--space-3);padding-left:var(--space-3);color:var(--ink)}.toc ul,.ctx-toc ul{list-style:none;margin:0;padding:0}.toc ul ul a{padding-left:var(--space-5)}.toc a{display:block;padding:4px var(--space-3);border-left:2px solid var(--hair);color:var(--muted);line-height:1.45;transition:color var(--ease),border-color var(--ease)}.toc a:hover{color:var(--ink)}.toc a.is-active{color:var(--ink);border-left-color:var(--ink);font-weight:700}.ctxbar{position:sticky;top:var(--header-h);z-index:30;align-items:center;gap:var(--space-2);height:44px;padding:0 var(--space-4);border-bottom:1px solid var(--hair);background:var(--paper);font-size:var(--text-sm);font-weight:600}.ctx-nav{display:none;align-items:center;gap:var(--space-2);min-width:0;height:100%;padding:0;border:0;background:0 0;color:var(--ink)}.ctx-nav .icon{width:16px;height:16px}.ctx-here{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);text-align:left}.ctx-here b{margin-right:6px;font:700 11px var(--font-mono);color:var(--faint)}.ctx-toc{flex:none}.ctx-toc>summary{display:flex;align-items:center;gap:4px;height:30px;padding:0 5px 0 11px;border:var(--line);border-radius:999px;color:var(--ink);list-style:none;cursor:pointer;user-select:none}.ctx-toc>summary::-webkit-details-marker{display:none}.ctx-toc>summary .icon{width:14px;height:14px;transform:rotate(90deg);transition:transform var(--ease)}.ctx-toc[open]>summary{background:var(--ink);color:#fff}.ctx-toc[open]>summary .icon{transform:rotate(-90deg)}.ctx-toc nav{position:absolute;right:var(--space-3);top:calc(100% + 8px);width:min(340px,calc(100vw - 24px));max-height:min(60vh,440px);overflow-y:auto;padding:6px;border:var(--line);border-radius:var(--radius-md);background:var(--paper);box-shadow:6px 6px 0 var(--ink)}.ctx-toc a{display:block;padding:8px 10px;border-radius:var(--radius-sm);color:var(--muted);font-weight:500;line-height:1.4}.ctx-toc ul ul a{padding-left:var(--space-5)}.ctx-toc a:hover{background:var(--tint);color:var(--ink)}.ctx-toc a.is-active{background:var(--ink);color:#fff}dialog{padding:0;color:var(--text);border:var(--line);border-radius:var(--radius-lg);background:var(--paper);box-shadow:10px 10px 0 var(--ink)}dialog::backdrop{background:rgba(255,255,255,.78);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog.search{width:min(660px,calc(100vw - 32px));max-height:none;margin-top:12vh;overflow:hidden}.search-box{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);border-bottom:var(--line);color:var(--ink)}.search-box input{flex:1;min-width:0;height:58px;padding:0;border:0;outline:0;background:0 0;color:var(--ink);font:600 18px var(--font-sans);letter-spacing:-.01em}.search-box input::placeholder{color:var(--faint);font-weight:500}.search-box input::-webkit-search-cancel-button{display:none}.search-results{list-style:none;margin:0;padding:6px;max-height:min(56vh,460px);overflow-y:auto;scrollbar-width:thin}.search-results:empty{display:none}.search-results .group{padding:10px 10px 4px;font:700 10.5px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.search-results a{display:grid;grid-template-columns:24px minmax(0,1fr)auto;gap:0 var(--space-3);align-items:center;padding:8px 10px;border-radius:var(--radius-sm);color:var(--ink)}.search-results .r-ico{display:grid;place-items:center;width:24px;height:24px;border:1.5px solid var(--hair);border-radius:6px;font:700 11px var(--font-mono);color:var(--muted)}.search-results li.is-sel a{background:var(--ink);color:#fff}.search-results li.is-sel .r-ico{border-color:var(--marker);background:var(--marker);color:var(--ink)}.search-results li.is-sel :is(.r-path,.r-tag){color:#c9cbd3}.search-results li.is-sel mark{color:var(--ink)}.search-results .r-main{display:grid;min-width:0}.search-results .r-title{font-size:15px;font-weight:700;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-results .r-path{color:var(--muted);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-results .r-tag{font:700 10.5px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.search-results mark{background:var(--marker);color:var(--ink);border-radius:2px}.search-results .empty{padding:var(--space-6)var(--space-3);color:var(--muted);text-align:center}.search-hint{display:flex;gap:var(--space-4);align-items:center;margin:0;padding:10px var(--space-4);border-top:var(--line);background:var(--tint);color:var(--muted);font-size:var(--text-xs);font-weight:600}.search-hint span{display:inline-flex;align-items:center;gap:5px}.search-hint .count{margin-left:auto}dialog.zoom{width:96vw;height:92vh;max-width:none;max-height:none;overflow:hidden}dialog.zoom[open]{display:grid;grid-template-rows:auto minmax(0,1fr)}.zoom-bar{display:flex;align-items:center;gap:var(--space-2)var(--space-4);padding:10px var(--space-4);border-bottom:var(--line);background:var(--paper);z-index:2}.zoom-reset{height:30px;padding:0 12px;border:var(--line);border-radius:var(--radius-sm);background:var(--paper);font:700 11px var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.zoom-reset:hover,.zoom-step:hover{background:var(--marker)}.zoom-step{display:grid;place-items:center;width:30px;height:30px;padding:0;border:var(--line);border-radius:var(--radius-sm);background:var(--paper)}.zoom-step .icon{width:15px;height:15px}.zoom-pct{min-width:46px;font:700 11px var(--font-mono);text-align:center;color:var(--ink);font-variant-numeric:tabular-nums}.zoom-hint{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--text-xs)var(--font-mono);color:var(--faint)}.zoom-close{border-color:var(--ink)}.zoom-stage{position:relative;overflow:hidden;cursor:grab;touch-action:none;user-select:none;background:var(--paper)}.zoom-stage.is-dragging{cursor:grabbing}.zoom-scene{position:absolute;left:0;top:0;transform-origin:0 0}.zoom-scene svg{display:block;width:100%;height:100%;max-width:none!important}.site-foot{background:var(--ink);color:#fff;overflow:hidden}.site-foot-in{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)var(--space-5);padding:var(--space-6)var(--space-5)var(--space-4);font-size:14px}.kind-home .site-foot-in,.kind-404 .site-foot-in,body:has(.start) .site-foot-in{max-width:calc(var(--w-page) + 2 * var(--space-6));margin-inline:auto;padding-inline:var(--space-6)}.site-foot p{margin:0}.foot-line{flex:1;min-width:240px;color:#fff;font-weight:700}.site-foot nav{display:flex;flex-wrap:wrap;gap:var(--space-2)var(--space-5)}.site-foot a{color:#c9cbd3;font-weight:500;transition:color var(--ease)}.site-foot a:hover{color:var(--marker)}.site-foot .muted{flex-basis:100%;font:var(--text-xs)var(--font-mono);color:#8b8e98}.site-foot::after{content:attr(data-word);display:block;margin:0 0 -.19em;padding-left:var(--space-4);font:850 clamp(64px,17vw,250px)/1 var(--font-sans);letter-spacing:-.07em;white-space:nowrap;color:transparent;-webkit-text-stroke:1.5px #3a3c48;user-select:none}.notfound{padding-top:var(--space-8)}.notfound h1{margin:var(--space-3)0;font-size:clamp(40px,7vw,80px);line-height:1;letter-spacing:-.05em;font-weight:850}.notfound .tile-grid{margin-top:var(--space-6)}@media(prefers-reduced-motion:no-preference){@view-transition{navigation: auto; }::view-transition-old(root),::view-transition-new(root){animation-duration:160ms}dialog[open]{animation:pop 170ms cubic-bezier(.2,.8,.2,1)}dialog[open]::backdrop{animation:fade 170ms ease}.ctx-toc[open] nav{animation:pop 150ms cubic-bezier(.2,.8,.2,1)}}@keyframes pop{from{opacity:0;transform:translateY(8px)scale(.98)}}@keyframes fade{from{opacity:0}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}@media(min-width:1600px){:root{--w-prose:780px;--w-sidebar:304px}}@media(max-width:1240px){.layout,.layout.is-wide{grid-template-columns:var(--w-sidebar)minmax(0,1fr)}.toc{display:none}:root:has(.has-ctx){--ctx-h:44px}.ctxbar{display:flex}.content{padding-inline:var(--space-6)}.search-btn{min-width:180px}}@media(max-width:1080px){:root{--w-sidebar:260px}.brand{margin-right:var(--space-3)}.topnav>a,.nav-menu>summary{padding-inline:10px}.nav-cur{display:none}.search-btn{min-width:0}.search-btn span{display:none}}@media(max-width:900px){:root{--header-h:56px}.layout,.layout.is-wide{grid-template-columns:minmax(0,1fr)}.menu-btn{display:grid;margin-left:-8px}.topnav{display:none}.topbar-in,.kind-home .topbar-in,.kind-404 .topbar-in{padding:0 var(--space-3)0 var(--space-4)}.icon-btn{width:42px;height:42px}.search-btn{width:42px;height:42px;padding:0;justify-content:center;box-shadow:none;border-color:transparent}.search-btn:hover{transform:none;box-shadow:none;border-color:var(--ink)}.search-btn .icon{width:19px;height:19px}.search-btn kbd{display:none}.gh-btn{display:none}.sidebar,.sidebar.drawer-only{display:block;position:fixed;z-index:45;left:0;top:var(--header-h);width:min(350px,90vw);height:calc(100dvh - var(--header-h));padding:var(--space-4)var(--space-3)var(--space-7);border-right:var(--line);transform:translateX(-102%);transition:transform 220ms cubic-bezier(.3,.7,.3,1),visibility 220ms;visibility:hidden}.nav-open{overflow:hidden}.nav-open .sidebar{transform:none;visibility:visible;box-shadow:10px 0 0 var(--ink)}.nav-open .scrim{display:block;position:fixed;inset:var(--header-h)0 0;z-index:40;background:rgba(255,255,255,.8)}.path-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:var(--space-5)}.drawer-start{display:flex;align-items:center;gap:10px;min-height:48px;margin-bottom:var(--space-3);padding:0 14px;border:var(--line);border-radius:var(--radius-md);background:var(--marker);color:var(--ink);font-weight:800;box-shadow:3px 3px 0 var(--ink)}.drawer-start span{flex:1}.path-switch a,.path-switch .nav-soon{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:var(--line);border-radius:var(--radius-md);background:var(--paper);color:var(--ink);font-size:14.5px;font-weight:700}.path-switch a::before{content:"";width:9px;height:9px;border-radius:3px;background:var(--c)}.path-switch a[aria-current]{background:var(--ink);color:#fff}.path-switch .nav-soon{border:1.5px dashed var(--c-soon);color:var(--faint);justify-content:space-between}.tree{font-size:15px}.tree-link,.tree-group>summary{padding-block:10px}.ctx-nav{display:flex;flex:1}.ctxbar>.ctx-here{display:none}.content{padding:var(--space-5)var(--space-4)var(--space-7)}.home{padding-inline:var(--space-4)}.kind-home .site-foot-in,.kind-404 .site-foot-in{padding-inline:var(--space-4)}.block{margin-top:var(--space-7)}.tile-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.hero{display:flex;flex-direction:column;min-height:0;padding-bottom:var(--space-4)}.hero-copy{order:-1}.hero-copy{max-width:none}.hero-art{width:100%;margin:var(--space-6)0 0}.hero h1{margin-bottom:var(--space-5)}.structure{grid-template-columns:minmax(0,1fr)}.mtree-wrap{padding:var(--space-4)var(--space-3)}.mtree>li,.mtree .mt-kids>li{display:block}.mtree .mt-kids{display:block;margin-left:22px}.mtree .mt-kids::before{display:none}.mtree .mt-kids>li{padding:8px 0 0}.mtree .mt-kids>li::before{left:-14px;top:calc(8px + var(--mid,20px));width:14px}.mtree .mt-kids>li::after,.mtree .mt-kids>li:first-child::after{left:-14px;top:0;bottom:0;display:block}.mtree .mt-kids>li:last-child::after{bottom:auto;height:calc(8px + var(--mid,20px))}.mtree .mt-branch{--mid:31px}.mt-layer,.mt-material,.mt-module{width:auto;max-width:100%}.mt-root{display:inline-flex}.mt-layer small{display:none}.mt-layer{display:inline-flex;gap:8px;align-items:center;min-height:40px}.mt-material{min-height:62px}.mt-module{grid-template-columns:26px minmax(0,1fr)}.mt-module small{display:none}.mt-module b{white-space:normal}}@media(max-width:600px){:root{--text-prose:16.5px;--leading-prose:1.7;--space-8:64px}.hero{padding-top:var(--space-6)}.hero h1{font-size:clamp(42px,13.5vw,60px)}.hero-text{font-size:16.5px}.hero-actions .btn{flex:1;justify-content:center}.tile{padding:var(--space-5)}.course-title{gap:var(--space-4)}.course-glyph{width:60px;height:60px;box-shadow:3px 3px 0 var(--ink)}.course-glyph .glyph{width:38px;height:38px}.paths{grid-template-columns:minmax(0,1fr)}.menu-grid{grid-template-columns:minmax(0,1fr)}.module{grid-template-columns:34px minmax(0,1fr);gap:var(--space-3)}.module-dot{width:34px;height:34px;font-size:13px;margin-top:10px}.module-rail::before{top:44px}.course-cta .btn{width:100%;justify-content:center}.tgroup>summary{grid-template-columns:minmax(0,1fr)17px;gap:var(--space-2);padding:14px var(--space-3)}.tgroup-meta{display:none}.topic-row{grid-template-columns:34px minmax(0,1fr)auto;gap:var(--space-2);min-height:46px;padding-inline:var(--space-3)}.topic-row .go{display:none}.topic-title{white-space:normal}.topic-row.is-overview .topic-title{grid-column:2/-1}.lesson-row{grid-template-columns:34px minmax(0,1fr)auto;gap:var(--space-2);min-height:50px;padding-inline:var(--space-3)}.lesson-row .go{display:none}.related-row{grid-template-columns:minmax(0,1fr)}.pager{grid-template-columns:1fr}.pager-link.next{grid-column:1;grid-row:1;text-align:left}.prose pre{font-size:12.5px;padding:var(--space-3)var(--space-4)}.prose pre.ascii{font-size:11.5px}.prose h2{font-size:25px}.prose h3{font-size:19px}.prose .code,.prose .diagram{margin-inline:calc(var(--space-4) * -1);border-inline:0;border-radius:0;box-shadow:none}.diagram.hw{overflow-x:auto}.diagram.hw>svg{width:760px;max-width:none}.code-head{padding-left:var(--space-4)}.recent a{grid-template-columns:36px minmax(0,1fr)17px;gap:2px var(--space-3);padding-inline:var(--space-4)}.recent .muted{grid-column:2;grid-row:2}.recent .num{grid-row:1/span 2}.recent .go{grid-row:1/span 2;grid-column:3}dialog{box-shadow:6px 6px 0 var(--ink)}dialog.search{margin-top:10px}.search-hint span:nth-child(3){display:none}.zoom-hint{display:none}dialog.zoom{width:100vw;height:100dvh;border-radius:0}}@media print{.topbar,.sidebar,.toc,.ctxbar,.page-foot,.site-foot,.read-progress,.copy-btn,.diagram-zoom{display:none!important}.layout{display:block}}:root{--syn-fg:#1d1e24;--syn-comment:#8a8d96;--syn-keyword:#c2255c;--syn-string:#2b7a1f;--syn-number:#a15c00;--syn-func:#2540d9;--syn-type:#0b7285;--syn-punct:#5b5e68}.code.is-term{--syn-fg:#e6e7ea;--syn-comment:#7d818c;--syn-keyword:#ff8fab;--syn-string:#a9e08a;--syn-number:#ffc46b;--syn-func:#8fb4ff;--syn-type:#7fe0d4;--syn-punct:#a5a9b3}.chroma{color:var(--syn-fg);-webkit-text-size-adjust:none}.chroma :is(.c,.ch,.cm,.c1,.cs){color:var(--syn-comment);font-style:italic}.chroma :is(.cp,.cpf){color:var(--syn-type)}.chroma :is(.k,.kd,.kn,.kp,.kr,.ow){color:var(--syn-keyword)}.chroma :is(.kt,.nc,.nb,.bp,.nv,.vc,.vg,.vi,.vm){color:var(--syn-type)}.chroma :is(.kc,.no,.m,.mb,.mf,.mh,.mi,.il,.mo,.se,.ld){color:var(--syn-number)}.chroma :is(.s,.sa,.sb,.sc,.dl,.sd,.s2,.sh,.si,.sx,.sr,.s1,.ss,.l){color:var(--syn-string)}.chroma :is(.nf,.fm,.nd,.nt,.na,.nl,.py){color:var(--syn-func)}.chroma :is(.o,.p){color:var(--syn-punct)}.chroma :is(.gp,.go){color:var(--syn-comment)}.chroma .gh,.chroma .gu{color:var(--syn-func);font-weight:700}.chroma .gi{color:var(--syn-string)}.chroma .gd{color:var(--syn-keyword)}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}