:root{--paper:#101113;--paper-2:#16171a;--paper-3:#1c1e21;--glass:#1c1e21b8;--glass-blur:10px;--bright:#fff;--ink:#ddd9cf;--ink-2:#a5a196;--ink-3:#716d63;--border:#ddd9cf21;--border-strong:#ddd9cf42;--accent:#56c8da;--accent-strong:#7fd8e6;--accent-soft:#1a8fa2;--accent-wash:#56c8da21;--on-accent:#06262c;--night:#ddd9cf;--night-ink:#101113;--night-mute:#55524a;--night-border:#10111329;--ok:#7ce38b;--warn:#d9a13f;--danger:#e06a5a;--void:var(--paper);--deep:var(--paper-2);--panel:var(--paper-3);--line:var(--border);--line-2:var(--border-strong);--mute:var(--ink-2);--mute-2:var(--ink-3);--tick:var(--danger);--accent-terminal:var(--accent);--accent-glass:#ddd9cf0d;--glow:#56c8da29;--surface-0:var(--paper);--surface-1:var(--paper-2);--surface-2:var(--paper-3);--on-surface:var(--ink);--on-surface-muted:var(--ink-2);--on-surface-subtle:var(--ink-3);--outline-subtle:var(--border);--outline-strong:var(--border-strong);--state-attention:var(--danger);--display:"Noto Sans Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;--body:"Noto Sans Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;--mono:"Noto Sans Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;--type-hero:clamp(21px, 2.7vw, 31px);--type-display:clamp(20px, 2.4vw, 27px);--type-title:15px;--type-body-lg:14.5px;--type-body:14px;--type-small:12.5px;--type-label:11px;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--track-tight:-.01em;--track-normal:0;--track-label:.1em;--leading-display:1.5;--leading-title:1.4;--leading-body:1.75;--ease:cubic-bezier(.2, .8, .2, 1);--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--motion-fast:.16s;--motion-medium:.24s;--motion-slow:.42s;--tilt:0deg;--pad-side:24px;--space-section:56px;--space-section-tight:40px;--space-block:28px;--space-copy:16px;--radius-xs:3px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-pill:999px;--shadow-soft:none;--shadow-lift:0 16px 40px -18px #000000b3;--inner-light:none;--elevation-0:none;--elevation-1:none;--elevation-2:var(--shadow-lift)}@media (width<=900px){:root{--pad-side:18px}}@font-face{font-family:Fraunces;font-weight:300 700;font-style:normal;font-display:swap;src:url(/fonts/fraunces-var.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-weight:300 700;font-style:italic;font-display:swap;src:url(/fonts/fraunces-var-italic.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Clash Grotesk;font-weight:300;font-style:normal;font-display:swap;src:url(/fonts/clash-grotesk-300.woff2)format("woff2")}@font-face{font-family:Clash Grotesk;font-weight:400;font-style:normal;font-display:swap;src:url(/fonts/clash-grotesk-400.woff2)format("woff2")}@font-face{font-family:Clash Grotesk;font-weight:500;font-style:normal;font-display:swap;src:url(/fonts/clash-grotesk-500.woff2)format("woff2")}@font-face{font-family:Clash Grotesk;font-weight:600;font-style:normal;font-display:swap;src:url(/fonts/clash-grotesk-600.woff2)format("woff2")}@font-face{font-family:Noto Sans Mono;font-weight:400;font-style:normal;font-display:swap;src:url(/fonts/noto-sans-mono-400.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Mono;font-weight:500;font-style:normal;font-display:swap;src:url(/fonts/noto-sans-mono-500.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Mono;font-weight:600;font-style:normal;font-display:swap;src:url(/fonts/noto-sans-mono-600.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*{box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{scroll-behavior:smooth;scroll-padding-top:90px}html,body{background:var(--paper);color:var(--ink);font-family:var(--mono);font-weight:var(--weight-regular);font-size:var(--type-body);line-height:var(--leading-body);margin:0;padding:0;overflow-x:hidden}body{min-height:100svh}#root{isolation:isolate;min-height:100svh;position:relative}a{color:var(--accent);transition:color var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out);border-bottom:1px solid #56c8da59;text-decoration:none}@media (hover:hover) and (pointer:fine){a:hover{color:var(--bright);border-bottom-color:var(--bright)}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}::selection{background:var(--ink);color:var(--paper)}img,svg,canvas{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}p{text-wrap:pretty}code,kbd{font-family:var(--mono);font-size:.93em}.col{max-width:760px;padding:0 var(--pad-side);margin:0 auto}.sect{padding-top:64px}.shead{border-bottom:1px solid var(--border-strong);justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:22px;padding-bottom:10px;display:flex}.shead h2{font-size:12px;font-weight:var(--weight-semibold);letter-spacing:.12em;color:var(--bright);margin:0}.shead .n{color:var(--ink-3);text-align:right;font-size:11px}.prose{font-size:var(--type-body-lg);line-height:var(--leading-body);color:var(--ink-2);max-width:62ch;margin:0}.prose b{color:var(--ink);font-weight:var(--weight-medium)}.prose+.prose{margin-top:16px}.hl{color:var(--bright);font-weight:var(--weight-semibold);background:var(--accent-wash);padding:0 4px}.well{background:var(--paper-2);border:1px solid var(--border);border-radius:var(--radius-md);font-size:13px;line-height:1.85;overflow:hidden}.well-bar{border-bottom:1px solid var(--border);color:var(--ink-3);justify-content:space-between;gap:14px;padding:9px 18px;font-size:11px;display:flex}.well-body{padding:14px 18px 16px;overflow-x:auto}.well .ps{color:var(--accent)}.well .dim{color:var(--ink-3)}.caret{background:var(--accent);vertical-align:text-bottom;width:.55em;height:1.05em;margin-left:3px;animation:1.2s step-end infinite caret-blink;display:inline-block}@keyframes caret-blink{0%,49%{opacity:1}50%,to{opacity:0}}.btn{font-family:var(--mono);font-size:13.5px;font-weight:var(--weight-semibold);cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;transition:background .15s var(--ease-out), color .15s var(--ease-out), transform .16s var(--ease-out);border:none;border-radius:5px;justify-content:center;align-items:center;gap:10px;text-decoration:none;display:inline-flex}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.btn:active{transform:scale(.97)}.btn--primary{height:46px;color:var(--paper);background:var(--ink);padding:0 26px}@media (hover:hover) and (pointer:fine){.btn--primary:hover{background:var(--bright);color:#000}}.btn--ghost{color:var(--ink-2);border-radius:0}@media (hover:hover) and (pointer:fine){.btn--ghost:hover{color:var(--bright)}}.js .reveal{opacity:0;transition:opacity .55s var(--ease-out), transform .55s var(--ease-out);transform:translateY(14px)}.js .reveal:not(.in){will-change:opacity, transform}.reveal.in{opacity:1;transform:none}.reveal.delay-1{transition-delay:80ms}.reveal.delay-2{transition-delay:.16s}.reveal.delay-3{transition-delay:.24s}.glass-card{background:var(--paper-2);border:1px solid var(--border);border-radius:var(--radius-md)}.section{padding:56px var(--pad-side);background:0 0;position:relative}.section-inner{max-width:760px;margin:0 auto}@media (width<=640px){.shead{flex-direction:column;gap:4px}.shead .n{text-align:left}body code,body pre,.well-body{max-width:100%;overflow-x:auto}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.js .reveal,.js .reveal.in{opacity:1;transition:none;transform:none}.caret{opacity:.6;animation:none}.btn:active{transform:none}}
