:root{color-scheme:light dark}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}:root{--paper-0:#ffffff;--paper-50:#fbfaf7;--paper-100:#f5f3ee;--paper-150:#efece5;--paper-200:#e7e3da;--paper-300:#d9d4c8;--paper-400:#b9b3a5;--paper-500:#8f897d;--paper-600:#686358;--paper-700:#46423b;--paper-800:#2a2824;--paper-900:#161513;--night-0:#060608;--night-50:#0b0c0e;--night-100:#101114;--night-150:#15161a;--night-200:#1b1c21;--night-300:#24252b;--night-400:#31323a;--night-500:#4a4b55;--night-600:#6d6e79;--night-700:#9b9ca6;--night-800:#c9cad1;--night-900:#eeeef1;--red-300:#ff8f9b;--red-400:#ff5c6e;--red-500:#ec2d45;--red-600:#d21f38;--red-700:#ad172d;--red-800:#85111f;--green-400:#45d08a;--green-600:#157043;--amber-400:#f2b544;--amber-600:#8a5700;--bg:light-dark(var(--paper-100),var(--night-100));--bg-raised:light-dark(var(--paper-50),var(--night-150));--surface:light-dark(var(--paper-0),var(--night-150));--surface-2:light-dark(var(--paper-50),var(--night-200));--surface-3:light-dark(var(--paper-150),var(--night-300));--surface-hover:light-dark(var(--paper-150),var(--night-200));--inset:light-dark(var(--paper-150),var(--night-50));--line:light-dark(#e2ded4,#24252b);--line-strong:light-dark(#cdc7ba,#34353d);--line-subtle:light-dark(#ebe8e0,#1c1d22);--text:light-dark(#161513,#eeeef1);--text-muted:light-dark(#5f5a50,#a2a3ad);--text-faint:light-dark(#736e63,#80818c);--text-inverse:light-dark(#f5f3ee,#101114);--ink:light-dark(#161513,#eeeef1);--ink-hover:light-dark(#2e2c28,#ffffff);--on-ink:light-dark(#f5f3ee,#101114);--signal:light-dark(var(--red-600),var(--red-500));--signal-hover:light-dark(var(--red-700),var(--red-400));--signal-fill:var(--red-600);--signal-fill-hover:var(--red-700);--signal-text:light-dark(var(--red-700),var(--red-400));--signal-soft:light-dark(rgb(210 31 56/0.08),rgb(236 45 69/0.14));--signal-line:light-dark(rgb(210 31 56/0.28),rgb(236 45 69/0.38));--on-signal:#ffffff;--ok:light-dark(var(--green-600),var(--green-400));--ok-soft:light-dark(rgb(25 128 74/0.10),rgb(69 208 138/0.12));--warn:light-dark(var(--amber-600),var(--amber-400));--warn-soft:light-dark(rgb(154 98 0/0.10),rgb(242 181 68/0.12));--danger:light-dark(var(--red-700),var(--red-400));--danger-soft:light-dark(rgb(173 23 45/0.08),rgb(255 92 110/0.12));--neutral-soft:light-dark(rgb(22 21 19/0.06),rgb(238 238 241/0.08));--focus:light-dark(var(--red-600),var(--red-400));--selection:light-dark(rgb(210 31 56/0.18),rgb(236 45 69/0.35));--code-bg:#0d0e11;--code-bg-2:#15161a;--code-line:#26272e;--code-text:#e6e6ea;--code-muted:#7d7e89;--code-key:#ff7a88;--code-str:#f0c27b;--code-fn:#f3f3f5;--code-num:#c9a7ff;--code-com:#6f707b;--shadow-color:light-dark(rgb(48 40 28/0.10),rgb(0 0 0/0.55));--shadow-1:0 1px 0 var(--shadow-color);--shadow-2:0 1px 2px var(--shadow-color),0 8px 24px -12px var(--shadow-color);--shadow-3:0 2px 4px var(--shadow-color),0 24px 48px -20px var(--shadow-color);--shadow-pop:0 0 0 1px var(--line),0 16px 40px -12px light-dark(rgb(48 40 28/0.22),rgb(0 0 0/0.7));--highlight:inset 0 1px 0 light-dark(rgb(255 255 255/0.9),rgb(255 255 255/0.05));--font-sans:var(--font-instrument-sans),"Instrument Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--font-serif:var(--font-instrument-serif),"Instrument Serif",ui-serif,Georgia,"Times New Roman",serif;--font-mono:var(--font-jetbrains-mono),"JetBrains Mono",ui-monospace,"Cascadia Code",Consolas,monospace;--fs-display:clamp(2.6rem,1.55rem + 4.6vw,5.5rem);--fs-h1:clamp(2.2rem,1.5rem + 3vw,4rem);--fs-h2:clamp(1.75rem,1.3rem + 1.9vw,2.875rem);--fs-h3:clamp(1.25rem,1.12rem + 0.5vw,1.5rem);--fs-h4:1.125rem;--fs-lead:clamp(1.0625rem,0.98rem + 0.4vw,1.3125rem);--fs-body:1rem;--fs-sm:0.9375rem;--fs-xs:0.8125rem;--fs-label:0.75rem;--fs-micro:0.6875rem;--lh-tight:1.02;--lh-snug:1.18;--lh-body:1.6;--tracking-display:-0.042em;--tracking-h:-0.03em;--tracking-label:0.08em;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--s-20:80px;--s-24:96px;--gutter:clamp(16px,4vw,32px);--section-y:clamp(72px,5vw + 48px,136px);--container:1280px;--container-wide:1360px;--container-prose:720px;--nav-h:64px;--r-xs:4px;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:20px;--r-pill:999px;--hairline:1px;--ease-out:cubic-bezier(0.2,0.8,0.2,1);--ease-in-out:cubic-bezier(0.65,0,0.35,1);--dur-1:120ms;--dur-2:200ms;--dur-3:360ms;--z-nav:50;--z-menu:60;--z-overlay:80;--z-toast:90}*,:after,:before{box-sizing:border-box}*{margin:0}html{text-size-adjust:100%;scroll-padding-top:calc(var(--nav-h) + 24px);background:var(--bg)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{min-height:100dvh;display:flex;flex-direction:column;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:clip}main{flex:1 0 auto;display:block}canvas,img,svg,video{display:block;max-width:100%}img,video{height:auto}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0;padding:0}:disabled{cursor:not-allowed}a{color:inherit;text-decoration:none}ol[role=list],ul[role=list]{list-style:none;padding:0}table{border-collapse:collapse}dd,li,p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{font-weight:600;text-wrap:balance;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}hr{border:0;border-top:var(--hairline) solid var(--line)}code,kbd,pre,samp{font-family:var(--font-mono);font-size:.92em}b,strong{font-weight:600}::selection{background:var(--selection)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}[hidden]{display:none!important}html.nav-locked{overflow:hidden}.theme-switching *,.theme-switching :after,.theme-switching :before{transition:none!important}.form{display:flex;flex-direction:column;gap:var(--s-5)}.skip-link{position:fixed;top:8px;left:8px;z-index:calc(var(--z-overlay) + 1);padding:10px 14px;border-radius:var(--r-sm);background:var(--ink);color:var(--on-ink);font-weight:600;transform:translateY(-160%);transition:transform var(--dur-2) var(--ease-out)}.skip-link:focus-visible{transform:none}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.t-display{font-size:var(--fs-display);line-height:var(--lh-tight)}.t-display,.t-h1{letter-spacing:var(--tracking-display);font-weight:600}.t-h1{font-size:var(--fs-h1);line-height:1.04}.t-h2{font-size:var(--fs-h2);line-height:1.08;letter-spacing:var(--tracking-h)}.t-h2,.t-h3{font-weight:600}.t-h3{font-size:var(--fs-h3);line-height:var(--lh-snug);letter-spacing:-.018em}.t-h4{font-size:var(--fs-h4);line-height:1.3;letter-spacing:-.01em;font-weight:600}.t-lead{font-size:var(--fs-lead);line-height:1.55;color:var(--text-muted);letter-spacing:-.005em}.t-body{font-size:var(--fs-body)}.t-sm{font-size:var(--fs-sm)}.t-xs{font-size:var(--fs-xs)}.t-muted{color:var(--text-muted)}.t-faint{color:var(--text-faint)}.t-signal{color:var(--signal-text)}.t-mono{font-size:.92em}.t-label,.t-mono{font-family:var(--font-mono)}.t-label{font-size:var(--fs-label);line-height:1.4;letter-spacing:var(--tracking-label);text-transform:uppercase;font-weight:500}.t-accent{font-family:var(--font-serif);font-style:italic;font-weight:400;letter-spacing:-.01em;color:var(--signal-text);padding-right:.04em}.t-accent--ink{color:inherit}.t-balance{text-wrap:balance}.t-center{text-align:center}.container{width:100%;max-width:calc(var(--container) + 2 * var(--gutter));margin-inline:auto;padding-inline:var(--gutter)}.container--wide{max-width:calc(var(--container-wide) + 2 * var(--gutter))}.container--prose{max-width:calc(var(--container-prose) + 2 * var(--gutter))}.section{padding-block:var(--section-y)}.section--tight{padding-block:calc(var(--section-y) * .6)}.section--flush-top{padding-top:0}.section+.section--ruled{border-top:var(--hairline) solid var(--line)}.stack{display:flex;flex-direction:column;gap:var(--stack-gap,var(--s-4))}.cluster{gap:var(--cluster-gap,var(--s-3))}.cluster,.split{display:flex;flex-wrap:wrap;align-items:center}.split{justify-content:space-between;gap:var(--s-4)}.grid{display:grid;grid-gap:var(--grid-gap,var(--s-4));gap:var(--grid-gap,var(--s-4))}.grid--2{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}.grid--3{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}.grid--4{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}.mt-0{margin-top:0}.mt-2{margin-top:var(--s-2)}.mt-4{margin-top:var(--s-4)}.mt-6{margin-top:var(--s-6)}.mt-8{margin-top:var(--s-8)}.mt-12{margin-top:var(--s-12)}.mt-16{margin-top:var(--s-16)}.maxw-prose{max-width:62ch}.maxw-narrow{max-width:48ch}.rule{position:relative;height:1px;background:var(--line)}.rule:after,.rule:before{content:"";position:absolute;top:-4px;width:9px;height:9px;background:linear-gradient(var(--line-strong),var(--line-strong)) 50% /1px 100% no-repeat,linear-gradient(var(--line-strong),var(--line-strong)) 50% /100% 1px no-repeat}.rule:before{left:-4px}.rule:after{right:-4px}.dotgrid{background-image:radial-gradient(circle at 1px 1px,var(--line-strong) 1px,transparent 1.4px);background-size:24px 24px;-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,#000 30%,transparent 75%);mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,#000 30%,transparent 75%)}.code-inline{font-family:var(--font-mono);font-size:.86em;padding:.12em .4em;border-radius:var(--r-xs);background:var(--neutral-soft);border:var(--hairline) solid var(--line-subtle);white-space:nowrap}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.reveal{animation:rs-reveal linear both;animation-timeline:view();animation-range:entry 0 entry 40%}}}@keyframes rs-reveal{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.prose{--prose-gap:1.15em;font-size:1.0625rem;line-height:1.7;color:var(--text);max-width:68ch}.prose>*+*{margin-top:var(--prose-gap)}.prose h2{font-size:clamp(1.4rem,1.2rem + .8vw,1.75rem);line-height:1.2;letter-spacing:-.022em;margin-top:2.4em}.prose h2,.prose h3{scroll-margin-top:calc(var(--nav-h) + 24px)}.prose h3{font-size:1.1875rem;line-height:1.3;letter-spacing:-.012em;margin-top:2em}.prose h4{font-size:1.0625rem;margin-top:1.6em}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.6em}.prose>:first-child{margin-top:0}.prose li,.prose p{color:var(--text)}.prose .muted,.prose p.muted{color:var(--text-muted)}.prose a:not([class]){color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--signal-line);text-decoration-color:var(--signal-line);text-decoration-thickness:1.5px;text-underline-offset:3px;transition:color var(--dur-1),-webkit-text-decoration-color var(--dur-1);transition:text-decoration-color var(--dur-1),color var(--dur-1);transition:text-decoration-color var(--dur-1),color var(--dur-1),-webkit-text-decoration-color var(--dur-1)}.prose a:not([class]):hover{color:var(--signal-text);-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}.prose ol,.prose ul{padding-left:1.3em}.prose li+li{margin-top:.4em}.prose ul>li::marker{color:var(--text-faint)}.prose ol>li::marker{color:var(--text-faint);font-family:var(--font-mono);font-size:.9em}.prose code:not(pre code){font-size:.86em;padding:.1em .38em;border-radius:var(--r-xs);background:var(--neutral-soft);border:var(--hairline) solid var(--line-subtle);overflow-wrap:anywhere}.prose blockquote{padding-left:1.1em;border-left:2px solid var(--signal);color:var(--text-muted)}.prose hr{margin-block:2.4em}.prose table{width:100%;font-size:.9375rem;border:var(--hairline) solid var(--line);border-radius:var(--r-md);border-collapse:separate;border-spacing:0;overflow:hidden;display:block;overflow-x:auto}.prose td,.prose th{text-align:left;padding:10px 14px;border-bottom:var(--hairline) solid var(--line);vertical-align:top}.prose th{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;font-weight:500;color:var(--text-muted);background:var(--surface-2)}.prose tr:last-child td{border-bottom:0}.prose kbd{font-size:.8em;padding:.15em .45em;border-radius:var(--r-xs);border:var(--hairline) solid var(--line-strong);border-bottom-width:2px;background:var(--surface)}