@font-face{font-family:Geist;src:url(/fonts/geist-latin.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+2713,U+FEFF,U+FFFD}@font-face{font-family:Geist;src:url(/fonts/geist-latin-ext.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+100-130,U+132-151,U+154-2AF,U+1E??,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-latin.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+2713,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);size-adjust:104.5%;ascent-override:96%;descent-override:28%;line-gap-override:0%}@font-face{font-family:Geist Mono Fallback;src:local(Courier New);size-adjust:100%;ascent-override:100.5%;descent-override:29.5%;line-gap-override:0%}:root{color-scheme:light;--bg:#f4f3ee;--surface:#fff;--sunken:#eae8e1;--line:#d5d2c8;--line-strong:#857f72;--text:#121417;--text-2:#454a52;--text-3:#5e636b;--accent:#c2410c;--accent-ink:#9a3412;--accent-soft:#fbe9df;--on-accent:#fff;--accent-hover:#a93a0b;--hud:#3e6b12;--ok:#1e6b3a;--ok-soft:#e3f1e8;--warn:#8a5300;--warn-soft:#f7ecd6;--bad:#b3261e;--bad-soft:#f8e3e1;--info:#1d5fa8;--info-soft:#e3ecf8;--fork:#6b3fa0;--fork-soft:#eee6f7;--removed:#6d6a63;--upstream-soft:#ecebe6;--focus:#1d5fa8;--api-d3d8:#b86e00;--api-d3d9:#1d6fb0;--api-d3d11:#0a7f55;--api-dxgi:#6b5e00;--api-vulkan:#a1253a;--api-native:#7a7f87;--ver-3:#c2410c;--ver-2:#1d5fa8;--ver-1:#7a6a3a;--ver-native:#7a7f87;--seq-0:#fff;--seq-1:#f7d9c9;--seq-2:#eda987;--seq-3:#d9733f;--seq-4:#c2410c;--shadow-float:0 1px 0 var(--line), 0 16px 40px -20px #00000059;--code-border:var(--line)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--tokens-dark:1;--bg:#0c0e11;--surface:#14171c;--sunken:#1b1f25;--line:#2a2f37;--line-strong:#6b7380;--text:#ecedef;--text-2:#aeb4bd;--text-3:#8d949e;--accent:#ff7d45;--accent-ink:#ffa27a;--accent-soft:#2c1a12;--on-accent:#0c0e11;--accent-hover:#ff915f;--hud:#c4ee6a;--ok:#5ccb8a;--ok-soft:#12261b;--warn:#f0b54d;--warn-soft:#2a2112;--bad:#ff7a70;--bad-soft:#2d1715;--info:#7fb4ff;--info-soft:#14213a;--fork:#c3a2f0;--fork-soft:#221a33;--removed:#a39f96;--upstream-soft:#1b1f25;--focus:#7fb4ff;--api-d3d8:#d99a2b;--api-d3d9:#4fa3e0;--api-d3d11:#3dd1a0;--api-dxgi:#f0e442;--api-vulkan:#ff5a5a;--api-native:#8a9099;--ver-3:#ff7d45;--ver-2:#7fb4ff;--ver-1:#cdb77a;--ver-native:#8a9099;--seq-0:#14171c;--seq-1:#3b2418;--seq-2:#6b3820;--seq-3:#b6562c;--seq-4:#ff7d45;--shadow-float:0 1px 0 var(--line), 0 16px 40px -20px #0009;--code-border:#232830}}:root[data-theme=dark]{color-scheme:dark;--tokens-dark:1;--bg:#0c0e11;--surface:#14171c;--sunken:#1b1f25;--line:#2a2f37;--line-strong:#6b7380;--text:#ecedef;--text-2:#aeb4bd;--text-3:#8d949e;--accent:#ff7d45;--accent-ink:#ffa27a;--accent-soft:#2c1a12;--on-accent:#0c0e11;--accent-hover:#ff915f;--hud:#c4ee6a;--ok:#5ccb8a;--ok-soft:#12261b;--warn:#f0b54d;--warn-soft:#2a2112;--bad:#ff7a70;--bad-soft:#2d1715;--info:#7fb4ff;--info-soft:#14213a;--fork:#c3a2f0;--fork-soft:#221a33;--removed:#a39f96;--upstream-soft:#1b1f25;--focus:#7fb4ff;--api-d3d8:#d99a2b;--api-d3d9:#4fa3e0;--api-d3d11:#3dd1a0;--api-dxgi:#f0e442;--api-vulkan:#ff5a5a;--api-native:#8a9099;--ver-3:#ff7d45;--ver-2:#7fb4ff;--ver-1:#cdb77a;--ver-native:#8a9099;--seq-0:#14171c;--seq-1:#3b2418;--seq-2:#6b3820;--seq-3:#b6562c;--seq-4:#ff7d45;--shadow-float:0 1px 0 var(--line), 0 16px 40px -20px #0009;--code-border:#232830}:root{--code-bg:#0f1216;--code-bar:#161a20;--code-rule:#232830;--code-text:#e3e6ea;--c-key:#ffb088;--c-str:#b5e07a;--c-num:#f5c76b;--c-com:#8a929d;--c-path:#86c5ff;--c-env:#d7b8ff;--c-err:#ff8f86;--c-warn:#f0c060;--c-info:#9fb0c2;--c-hud:#c4ee6a;--font-sans:"Geist", "Geist Fallback", ui-sans-serif, system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"Geist Mono", "Geist Mono Fallback", ui-monospace, "Cascadia Mono", "SF Mono", Menlo, Consolas, monospace;--fs-display:clamp(2.25rem, 1.6rem + 2.9vw, 3.75rem);--fs-h1:clamp(2rem, 1.55rem + 2vw, 3rem);--fs-h2:clamp(1.5rem, 1.3rem + .9vw, 2rem);--fs-h3:clamp(1.1875rem, 1.12rem + .3vw, 1.375rem);--fs-h4:1.0625rem;--fs-lead:clamp(1.125rem, 1.07rem + .25vw, 1.3125rem);--fs-body:1.0625rem;--fs-small:.9375rem;--fs-micro:.8125rem;--fs-readout:.9375rem;--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;--container:1320px;--gutter:clamp(16px, 4vw, 40px);--r-1:4px;--r-2:6px;--r-3:8px;--r-4:12px;--header-h:64px;--anchor-safe:0px;--ease-out:cubic-bezier(.2,.7,.1,1);--ease-in-out:cubic-bezier(.6,0,.2,1);--t-press:.1s;--t-hover:.14s;--t-menu:.2s;--t-panel:.32s}@media (width<=1023px){:root{--header-h:56px}}@media (prefers-reduced-motion:reduce){:root{--t-press:0s;--t-hover:0s;--t-menu:0s;--t-panel:0s}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 16px)}body{background:var(--bg);color:var(--text);font:400 var(--fs-body)/1.65 var(--font-sans);hyphens:none;overflow-wrap:break-word;flex-direction:column;min-height:100vh;margin:0;display:flex}main{flex:1}img,svg,video,canvas{max-width:100%;height:auto;display:block}h1,h2,h3,h4{color:var(--text);text-wrap:balance;margin:0}h1{font-size:var(--fs-h1);letter-spacing:-.02em;max-width:22ch;font-weight:680;line-height:1.1}h2{font-size:var(--fs-h2);letter-spacing:-.015em;max-width:32ch;margin:var(--s-8) 0 var(--s-4);font-weight:640;line-height:1.2}h3{font-size:var(--fs-h3);letter-spacing:-.01em;margin:var(--s-6) 0 var(--s-3);font-weight:600;line-height:1.3}h4{font-size:var(--fs-h4);margin:var(--s-5) 0 var(--s-2);font-weight:600;line-height:1.4}p{text-wrap:pretty;margin:0 0 1em}a{color:var(--accent-ink);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--bg);border-radius:var(--r-1)}hr{border:0;border-top:1px solid var(--line);margin:var(--s-6) 0}code,kbd,samp,.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}:not(pre)>code{background:var(--sunken);border-radius:var(--r-1);overflow-wrap:anywhere;padding:.1em .35em;font-size:max(.9em,14px)}table,.tnum{font-variant-numeric:tabular-nums}abbr[title]{text-underline-offset:.2em;cursor:help;text-decoration:underline dotted}[hidden]{display:none!important}.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}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);margin-inline:auto}.measure{max-width:68ch}.eyebrow,.micro{font:500 var(--fs-micro)/1.4 var(--font-mono);letter-spacing:.02em;text-transform:uppercase;color:var(--text-3)}.icon{stroke-width:1.75px;flex:none;width:20px;height:20px}.icon-16{width:16px;height:16px}.skip{left:var(--s-3);z-index:100;background:var(--accent);color:var(--on-accent);padding:var(--s-3) var(--s-4);border-radius:var(--r-2);font-weight:600;text-decoration:none;position:absolute;top:-100px}.skip:focus{top:var(--s-3)}.btn{justify-content:center;align-items:center;gap:var(--s-2);min-height:44px;padding:0 var(--s-4);border-radius:var(--r-2);font:600 15px/1 var(--font-sans);cursor:pointer;transition:background-color var(--t-hover) var(--ease-out), border-color var(--t-hover) var(--ease-out);border:1px solid #0000;text-decoration:none;display:inline-flex}.btn-compact{min-height:40px}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-hover);text-decoration:none}.btn-primary:active{background:var(--accent-ink);color:var(--on-accent)}.btn-secondary{border-color:var(--line-strong);color:var(--text);background:0 0}.btn-secondary:hover{background:var(--sunken);text-decoration:none}.btn-ghost{color:var(--accent-ink);padding-inline:var(--s-2);background:0 0}.btn[aria-disabled=true],.btn:disabled{opacity:.4;cursor:not-allowed}.input{width:100%;min-height:44px;padding:0 var(--s-3);background:var(--surface);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--r-2);font:400 16px/1.2 var(--font-sans)}.input::placeholder{color:var(--text-3)}.input:focus{border-color:var(--focus)}.input[aria-invalid=true]{border-color:var(--bad)}.strip{background:var(--sunken);color:var(--text-2);font-size:var(--fs-micro);line-height:1.4}.strip .container{align-items:center;gap:var(--s-3);min-height:28px;padding-block:4px;display:flex}.strip p{flex:1;margin:0}.strip button{color:var(--text-2);cursor:pointer;background:0 0;border:0;min-width:24px;min-height:24px;padding:0}.site-header{z-index:50;background:var(--bg);border-bottom:1px solid var(--line);transition:transform var(--t-menu) var(--ease-in-out);position:sticky;top:0}.site-header.is-hidden{transform:translateY(-100%)}.hdr{align-items:center;gap:var(--s-4);height:var(--header-h);display:flex;position:relative}.brand{align-items:center;gap:var(--s-2);color:var(--text);font:650 1.25rem/1 var(--font-sans);letter-spacing:-.02em;text-decoration:none;display:inline-flex}.brand:hover{text-decoration:none}.brand .dev{color:var(--text-3)}.mark{width:24px;height:24px}.mark .m-bar{fill:var(--text)}.mark .m-mid{fill:var(--accent)}.nav{justify-content:center;gap:var(--s-1);flex:1;height:100%;display:none}.nav-group>button{height:var(--header-h);padding:0 var(--s-3);color:var(--text);font:500 15px/1 var(--font-sans);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;display:inline-flex}.nav-group>button[aria-expanded=true],.nav-group>button:hover{color:var(--accent-ink)}.nav-group>button .icon{width:14px;height:14px;transition:transform var(--t-hover) var(--ease-out)}.nav-group>button[aria-expanded=true] .icon{transform:rotate(180deg)}.nav-panel{background:var(--surface);border:1px solid var(--line);border-radius:0 0 var(--r-4) var(--r-4);box-shadow:var(--shadow-float);padding:var(--s-5);gap:var(--s-2) var(--s-5);grid-template-columns:repeat(3,1fr);margin-top:1px;display:none;position:absolute;top:100%;left:0;right:0}.nav-panel.open{display:grid}.nav-panel a{padding:var(--s-2) var(--s-3);border-radius:var(--r-2);color:var(--text);text-decoration:none;display:block}.nav-panel a:hover{background:var(--sunken)}.nav-panel a strong{font-weight:600;display:block}.nav-panel a span{font-size:var(--fs-small);color:var(--text-2);line-height:1.4;display:block}.signal{height:2px;display:none;position:absolute;bottom:-1px;left:22%;right:22%}.signal-line{background:var(--line);position:absolute;inset:0}.signal-node{background:var(--surface);border:1px solid var(--line-strong);border-radius:50%;width:8px;height:8px;position:absolute;top:-3px;transform:translate(-50%)}.signal-node[data-on]{background:var(--accent);border-color:var(--accent)}.signal-node:after{content:attr(data-label);font:500 var(--fs-micro)/1 var(--font-mono);color:var(--text-3);white-space:nowrap;opacity:0;transition:opacity var(--t-hover);pointer-events:none;position:absolute;top:12px;left:50%;transform:translate(-50%)}.nav:hover .signal-node:after,.nav:focus-within .signal-node:after{opacity:1}.hdr-right{align-items:center;gap:var(--s-2);margin-left:auto;display:flex}.icon-btn{border-radius:var(--r-2);width:44px;height:44px;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{background:var(--sunken)}.hdr-tools{display:none}.menu-btn{display:inline-flex}@media (width>=1024px){.nav,.signal{display:flex}.menu-btn{display:none}}@media (width>=1280px){.hdr-tools{display:inline-flex}}.sheet{z-index:60;background:var(--bg);padding:var(--s-4) var(--gutter) var(--s-8);visibility:hidden;transition:transform var(--t-menu) var(--ease-out), visibility 0s linear var(--t-menu);position:fixed;inset:0;overflow-y:auto;transform:translateY(100%)}.sheet.open{visibility:visible;transition-delay:0s;transform:none}.sheet-top{gap:var(--s-2);margin-bottom:var(--s-4);align-items:center;display:flex}.sheet details{border-bottom:1px solid var(--line)}.sheet summary{cursor:pointer;justify-content:space-between;align-items:center;min-height:52px;font-weight:600;list-style:none;display:flex}.sheet summary::-webkit-details-marker{display:none}.sheet details[open] summary .icon{transform:rotate(180deg)}.sheet details a{padding:var(--s-3) var(--s-2);min-height:44px;color:var(--text);text-decoration:none;display:block}body.locked{overflow:hidden}dialog.search{width:min(680px,100vw - 32px);max-height:80vh;padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-4);background:var(--surface);color:var(--text);box-shadow:var(--shadow-float);margin:10vh auto auto}dialog.search::backdrop{background:#00000073}.search-results{margin:var(--s-3) 0 0;max-height:50vh;padding:0;list-style:none;overflow-y:auto}.search-results a{padding:var(--s-3);border-radius:var(--r-2);color:var(--text);text-decoration:none;display:block}.search-results a:hover,.search-results a:focus-visible{background:var(--sunken)}.search-results mark{background:var(--accent-soft);color:var(--text)}.search-hint{color:var(--text-3);font-size:var(--fs-small);margin:var(--s-3) 0 0}.site-footer{background:var(--sunken);color:var(--text-2);margin-top:var(--s-9);padding:var(--s-8) 0 var(--s-6);font-size:var(--fs-small)}.site-footer a{color:var(--text-2)}.foot-cols{gap:var(--s-6);grid-template-columns:repeat(2,1fr);display:grid}@media (width>=1024px){.foot-cols{grid-template-columns:repeat(4,1fr)}}.foot-cols h2{font:500 var(--fs-micro)/1.4 var(--font-mono);text-transform:uppercase;letter-spacing:.02em;color:var(--text-3);margin:0 0 var(--s-3);max-width:none}.foot-cols ul{gap:var(--s-2);margin:0;padding:0;list-style:none;display:grid}.foot-band{margin-top:var(--s-7);padding-top:var(--s-6);border-top:1px solid var(--line);gap:var(--s-4);display:grid}.foot-band p{max-width:70ch;margin:0}.readouts{gap:var(--s-2) var(--s-5);font:500 var(--fs-micro)/1.4 var(--font-mono);text-transform:uppercase;color:var(--text-3);flex-wrap:wrap;display:flex}.readouts b{color:var(--text);font-weight:500}.legal-links{gap:var(--s-2) var(--s-4);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.ad-slot{display:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:0s!important;animation-duration:0s!important}}
