:root{--bg:#f7f8f4;--bg-sub:#eef1e9;--bg-tag:#edf0e8;--card:#fff;--ink:#1c2921;--ink-2:#344438;--muted:#626d62;--muted-2:#6d776d;--line:oklch(91% .005 270);--line-2:oklch(86% .006 270);--hover:oklch(96% .005 270);--good:#367047;--good-bg:oklch(96% .045 150);--good-line:oklch(82% .07 150);--warn:#976016;--warn-bg:oklch(96.5% .04 80);--warn-line:oklch(84% .08 80);--panel:#19261f;--panel-ink:#e7eee4;--panel-muted:#b6c0b5;--signal:#b6e5a4;--r-sm:5px;--r-md:8px;--r-lg:12px;--r-xl:14px;--ring:0 0 0 1px #0000000c, 0 3px 6px #00000003, 0 18px 35px -18px #1f332933;--ring-sm:0 0 0 1px #0000000d, 0 2px 5px #00000003;--ease-out:cubic-bezier(.2, 0, 0, 1);--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:ui-monospace, "SFMono-Regular", "SF Mono", Menlo, monospace;--shell:1184px;--gutter:40px}*{box-sizing:border-box}html,body{margin:0;padding:0}html{scroll-padding-top:96px}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{font-family:var(--font-sans);background:var(--bg);color:var(--ink);font-feature-settings:"ss01", "cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:15px;line-height:1.6}a{color:inherit}h1,h2,h3{text-wrap:balance}p,li{text-wrap:pretty}:focus-visible{outline:2px solid var(--good);outline-offset:3px;border-radius:4px}::selection{background:var(--good-bg)}.skip-link{z-index:100;background:var(--ink);color:#fff;border-radius:8px;padding:12px 18px;position:fixed;top:-80px;left:16px}.skip-link:focus{top:12px}.shell{max-width:var(--shell);padding-inline:var(--gutter);margin-inline:auto}.nav{border-bottom:1px solid var(--line);background:color-mix(in oklab, var(--bg) 88%, transparent);backdrop-filter:saturate(1.4)blur(10px);z-index:50;position:sticky;top:0}.nav-inner{max-width:var(--shell);padding:0 var(--gutter);align-items:center;gap:22px;height:76px;margin:0 auto;display:flex}.brand{font-family:var(--font-mono);letter-spacing:-.06em;align-items:center;gap:8px;font-size:20px;font-weight:600;text-decoration:none;display:flex}.brand-mark{flex-shrink:0;display:block}.brand-zero{color:var(--good)}.nav .brand-zero{margin-left:-8px}.nav-links{align-items:center;gap:4px;margin-left:auto;display:flex}.nav-links a:not(.btn){color:var(--ink-2);border-radius:6px;padding:12px 10px;font-size:13px;text-decoration:none;transition:background .15s}.nav-links a:not(.btn):hover{background:var(--hover)}.nav-links a[aria-current=page]{color:var(--ink);font-weight:500}.nav-cta{margin-left:10px}.btn{background:var(--card);height:36px;color:var(--ink);border:1px solid var(--line);border-radius:var(--r-md);font:500 13px var(--font-sans);white-space:nowrap;cursor:pointer;transition:background .15s, border-color .15s, transform .15s var(--ease-out);align-items:center;gap:8px;padding:0 14px;text-decoration:none;display:inline-flex}.btn:hover{background:var(--hover);border-color:var(--line-2)}.btn:active{transform:scale(.97)}.btn-primary{background:var(--ink);color:#fff;border-color:var(--ink)}.btn-primary:hover{background:oklch(25% .015 270);border-color:oklch(25% .015 270)}.btn-lg{height:48px;padding-inline:20px 18px}.site-footer{border-top:1px solid var(--line-2);margin-top:0}.footer-inner{max-width:var(--shell);padding:30px var(--gutter) 40px;justify-content:space-between;align-items:center;gap:30px;margin-inline:auto;display:flex}.site-footer .brand{gap:0;font-size:18px}.site-footer p{color:var(--muted);margin:10px 0 0;font-size:11px}.site-footer nav{flex-wrap:wrap;gap:8px 24px;display:flex}.site-footer nav a{min-height:44px;color:var(--muted);align-items:center;font-size:12px;text-decoration:none;display:inline-flex}.site-footer nav a:hover{color:var(--ink)}.eyebrow{font-family:var(--font-mono);letter-spacing:.075em;text-transform:uppercase;color:var(--muted);align-items:center;gap:9px;margin:0 0 22px;font-size:10px;display:flex}.status-dot{background:var(--good);border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.mono{font-family:var(--font-mono);font-feature-settings:"zero", "ss02"}.lede{color:var(--muted);max-width:60ch;margin:0;font-size:17px;line-height:1.7}.crumbs{font-family:var(--font-mono);color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 30px;padding:0;font-size:11px;list-style:none;display:flex}.crumbs li+li:before{content:"/";color:var(--line-2);margin-right:8px}.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--ink);text-underline-offset:4px;text-decoration:underline}.crumbs [aria-current]{color:var(--ink-2)}.page-hero{border-bottom:1px solid var(--line-2);grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;gap:56px;padding-block:56px 64px;display:grid}.page-hero h1{letter-spacing:-.055em;margin:0 0 22px;font-size:clamp(38px,4.4vw,56px);font-weight:500;line-height:1.06}.page-hero h1 em{color:var(--good);font-style:normal}.hero-meta{color:var(--muted);flex-wrap:wrap;gap:8px 22px;margin:28px 0 0;padding:0;font-size:12px;list-style:none;display:flex}.hero-meta li{align-items:center;gap:8px;display:inline-flex}.hero-meta strong{color:var(--ink-2);font-weight:500}.hero-meta svg{color:var(--good)}.hero-author img{width:28px;height:28px;box-shadow:var(--ring-sm);border-radius:50%}.hero-author a{color:var(--ink);font-weight:500;text-decoration:none}.hero-author a:hover{text-underline-offset:3px;text-decoration:underline}.page-hero-single{grid-template-columns:minmax(0,1fr)}.hero-actions{margin:28px 0 0}.hero-figure{min-width:0}.hero-figure svg{width:100%;max-width:470px;height:auto;margin-inline:auto;display:block}.figure-caption{font-family:var(--font-mono);color:var(--muted);text-align:center;margin:10px 0 0;font-size:10px}.header-list{border-top:1px solid var(--line-2);margin:0;padding:0;list-style:none}.header-row{border-bottom:1px solid var(--line);grid-template-columns:56px minmax(0,1.1fr) minmax(0,1.4fr) 150px;align-items:center;gap:24px;padding:24px 4px;text-decoration:none;display:grid;position:relative}a.header-row{transition:background .15s}a.header-row:hover{background:color-mix(in oklab, var(--card) 60%, transparent)}.header-weight{font-family:var(--font-mono);color:var(--muted);font-size:11px}.header-weight b{color:var(--ink);letter-spacing:-.04em;font-size:20px;font-weight:500;display:block}.header-name{font-family:var(--font-mono);letter-spacing:-.02em;font-size:15px;font-weight:600}.header-role{color:var(--muted);font-size:13.5px;line-height:1.6}.header-status{justify-self:end;align-items:center;gap:8px;font-size:12px;font-weight:500;display:inline-flex}.header-status.is-planned{color:var(--muted);font-weight:400}.header-status .arrow{transition:transform .2s var(--ease-out)}a.header-row:hover .arrow{transform:translate(2px,-2px)}.chip{font-family:var(--font-mono);background:var(--bg-tag);color:var(--ink-2);border-radius:4px;padding:4px 7px;font-size:10px}.chip-good{background:var(--good-bg);color:var(--good)}.section{border-bottom:1px solid var(--line-2);padding-block:72px}.section-heading{justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:34px;display:flex}.section-heading h2{letter-spacing:-.045em;margin:0;font-size:clamp(28px,3vw,38px);font-weight:500;line-height:1.14}.section-heading>p{max-width:430px;color:var(--muted);margin:0;font-size:14px;line-height:1.7}.method-grid{grid-template-columns:repeat(3,1fr);gap:0 48px;display:grid}.method-item{border-top:1px solid var(--line);padding-top:24px}.method-item .num{font-family:var(--font-mono);color:var(--good);margin-bottom:14px;font-size:11px;display:block}.method-item h3{letter-spacing:-.02em;margin:0 0 10px;font-size:17px;font-weight:600}.method-item p{color:var(--muted);margin:0;font-size:13.5px;line-height:1.75}.article-layout{grid-template-columns:minmax(0,700px) minmax(0,1fr);gap:72px;padding-block:56px 24px;display:grid}.toc{place-self:start end;width:100%;max-width:260px;position:sticky;top:108px}.toc-title{font-family:var(--font-mono);letter-spacing:.075em;text-transform:uppercase;color:var(--muted);margin:0 0 14px;font-size:10px}.toc ol{border-left:1px solid var(--line-2);margin:0;padding:0;list-style:none}.toc li a{color:var(--muted);border-left:1px solid #0000;gap:10px;margin-left:-1px;padding:6px 0 6px 16px;font-size:12.5px;line-height:1.45;text-decoration:none;transition:color .15s,border-color .15s;display:flex}.toc li a span{font-family:var(--font-mono);color:var(--muted-2);padding-top:2px;font-size:10px}.toc li a:hover{color:var(--ink)}.toc li a[aria-current=true]{color:var(--ink);border-left-color:var(--good)}.toc-scan{border-radius:var(--r-lg);background:var(--card);box-shadow:var(--ring-sm);margin-top:28px;padding:18px}.toc-scan p{color:var(--muted);margin:0 0 14px;font-size:12.5px;line-height:1.6}.toc-scan p strong{color:var(--ink);margin-bottom:4px;font-size:13px;font-weight:600;display:block}.toc-scan .btn{justify-content:center;width:100%}.takeaways{background:var(--card);border-radius:var(--r-xl);box-shadow:var(--ring);margin:0 0 48px;overflow:hidden}.takeaways-head{border-bottom:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.075em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:center;gap:12px;padding:16px 22px;font-size:10px;display:flex}.takeaways ul{gap:12px;margin:0;padding:18px 22px 20px;list-style:none;display:grid}.takeaways li{color:var(--ink-2);grid-template-columns:18px 1fr;gap:12px;font-size:14.5px;line-height:1.6;display:grid}.takeaways li svg{color:var(--good);margin-top:4px}.takeaways code{font-family:var(--font-mono);background:var(--bg-sub);border-radius:4px;padding:1px 5px;font-size:.86em}.prose{counter-reset:section;font-size:15.5px;line-height:1.75}.prose>:first-child{margin-top:0}.prose h2{counter-increment:section;letter-spacing:-.04em;border-top:1px solid var(--line-2);margin:64px 0 18px;padding-top:28px;font-size:27px;font-weight:500;line-height:1.2}.prose h2:before{content:counter(section, decimal-leading-zero) " /";font-family:var(--font-mono);letter-spacing:.04em;color:var(--good);margin-bottom:14px;font-size:11px;display:block}.prose h3{letter-spacing:-.02em;margin:40px 0 10px;font-size:18px;font-weight:600}.prose h2 a,.prose h3 a{text-decoration:none}.prose p,.prose li{color:var(--ink-2)}.prose p{margin:0 0 18px}.prose strong{color:var(--ink);font-weight:600}.prose ul,.prose ol{margin:0 0 22px;padding-left:22px}.prose li{margin-bottom:8px;padding-left:4px}.prose li::marker{color:var(--muted-2)}.prose ol>li::marker{font-family:var(--font-mono);color:var(--good);font-size:.85em}.prose a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--good-line);text-underline-offset:3px;text-decoration-thickness:1.5px;transition:text-decoration-color .15s}.prose a:hover{text-decoration-color:var(--good)}.prose :not(pre)>code{font-family:var(--font-mono);background:var(--bg-tag);color:var(--ink);overflow-wrap:anywhere;border-radius:4px;padding:2px 5px;font-size:.84em}.prose hr{border:0;border-top:1px solid var(--line-2);margin:40px 0}.prose blockquote{background:var(--bg-tag);border-radius:var(--r-md);margin:0 0 22px;padding:16px 20px}.prose blockquote p{color:var(--ink-2);font-size:14.5px;line-height:1.7}.prose blockquote p:last-child{margin:0}.prose blockquote strong:first-child{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--good);margin-right:6px;font-size:10.5px}.code-block{background:var(--panel);border-radius:var(--r-xl);margin:0 0 26px;overflow:hidden}.code-head{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--panel-muted);border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:12px;padding:10px 10px 10px 20px;font-size:10px;display:flex}.code-head span:before{content:"";background:var(--signal);vertical-align:1px;border-radius:50%;width:6px;height:6px;margin-right:9px;display:inline-block}.code-copy{visibility:hidden;font:500 11px var(--font-sans);letter-spacing:0;text-transform:none;color:var(--panel-ink);cursor:pointer;height:28px;transition:background .15s, transform .15s var(--ease-out);background:#ffffff0f;border:1px solid #ffffff1a;border-radius:6px;padding:0 10px}.js .code-copy{visibility:visible}.code-copy:hover{background:#ffffff1c}.code-copy:active{transform:scale(.96)}.code-copy[data-state=done]{color:var(--signal)}.prose pre{tab-size:4;margin:0;padding:18px 20px 20px;font-size:13px;line-height:1.7;overflow-x:auto;background:var(--panel)!important}.prose pre code{font-family:var(--font-mono);font-feature-settings:"zero"}.table-wrap{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--ring-sm);margin:0 0 26px;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:13.5px;line-height:1.55}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:12px 16px}.prose tr:last-child td{border-bottom:0}.prose th{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--bg-sub);white-space:nowrap;font-size:10px;font-weight:500}.prose td{color:var(--ink-2)}.prose td:first-child{white-space:nowrap}.end-section{border-top:1px solid var(--line-2);margin-top:72px;padding-top:28px}.end-section>h2{letter-spacing:-.04em;margin:0 0 22px;font-size:27px;font-weight:500;line-height:1.2}.end-section>.eyebrow{margin-bottom:14px}.stack-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.stack-card{border-radius:var(--r-lg);background:var(--card);height:100%;box-shadow:var(--ring-sm);transition:box-shadow .2s var(--ease-out), transform .2s var(--ease-out);flex-direction:column;gap:10px;padding:18px 20px;text-decoration:none;display:flex}a.stack-card:hover{box-shadow:var(--ring);transform:translateY(-1px)}.stack-card-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.stack-card h3{margin:0;font-size:15px;font-weight:600}.stack-card p{color:var(--muted);margin:0;font-size:13px;line-height:1.6}.stack-card.is-planned{box-shadow:inset 0 0 0 1px var(--line-2);background:0 0}.stack-card.is-planned h3{color:var(--muted)}.faq-list details{border-bottom:1px solid var(--line)}.faq-list details:first-child{border-top:1px solid var(--line)}.faq-list summary{cursor:pointer;justify-content:space-between;align-items:center;gap:24px;padding-block:20px;font-size:15px;font-weight:500;list-style:none;display:flex}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary:hover .faq-plus{color:var(--ink)}.faq-plus{color:var(--muted);transition:transform .2s var(--ease-out), color .15s;font-size:20px;font-weight:400;line-height:1}.faq-list details[open] .faq-plus{transform:rotate(45deg)}.faq-list details p{color:var(--muted);margin:0;padding:0 40px 22px 0;font-size:14px;line-height:1.8}.sources{counter-reset:src;margin:0;padding:0;list-style:none}.sources li{counter-increment:src;border-bottom:1px solid var(--line);grid-template-columns:32px 1fr;gap:6px;padding:10px 0;font-size:13.5px;display:grid}.sources li:before{content:"[" counter(src) "]";font-family:var(--font-mono);color:var(--muted);padding-top:2px;font-size:11px}.sources a{color:var(--ink);text-decoration:none}.sources a:hover{text-underline-offset:3px;text-decoration:underline}.sources span{color:var(--muted);font-size:12px;display:block}.author-card-body{grid-template-columns:96px minmax(0,1fr);align-items:start;gap:22px;display:grid}.author-card-body img{width:96px;height:96px;box-shadow:var(--ring-sm);border-radius:16px}.author-card h2{letter-spacing:-.02em;margin:0;font-size:20px;font-weight:600}.author-card h2 a{text-decoration:none}.author-card h2 a:hover{text-underline-offset:4px;text-decoration:underline}.author-role{color:var(--good);margin:4px 0 12px;font-size:13px;font-weight:500}.author-card-body p:not(.author-role){color:var(--muted);margin:0;font-size:14px;line-height:1.7}.author-links{flex-wrap:wrap;gap:6px 18px;margin:14px 0 0;padding:0;font-size:13px;list-style:none;display:flex}.author-links a{color:var(--ink-2);text-decoration:none}.author-links a:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.byline{color:var(--muted);flex-wrap:wrap;gap:6px 18px;margin-top:40px;font-size:12px;display:flex}.closing{border-top:1px solid var(--line-2);justify-content:space-between;align-items:center;gap:28px;margin-top:72px;padding-block:64px;display:flex}.closing h2{letter-spacing:-.045em;margin:0;font-size:clamp(28px,3vw,38px);font-weight:500;line-height:1.14}.closing p:not(.eyebrow){color:var(--muted);max-width:46ch;margin:12px 0 0;font-size:14px}.closing .eyebrow{margin-bottom:14px}.closing-flush{border-top:0;margin-top:0}@media (width<=1060px){.article-layout{grid-template-columns:minmax(0,1fr);gap:0}.toc{display:none}.header-row{grid-template-columns:48px minmax(0,1fr) 130px}.header-role{grid-area:2/2/auto/3;margin-top:-14px}}@media (width<=860px){:root{--gutter:24px}.page-hero{grid-template-columns:minmax(0,1fr);gap:36px;padding-block:40px 48px}.hero-figure svg{max-width:400px}.method-grid{grid-template-columns:1fr;gap:24px}.section{padding-block:54px}.section-heading{flex-direction:column;align-items:flex-start;gap:16px}.closing{flex-direction:column;align-items:flex-start}.footer-inner{flex-direction:column;align-items:flex-start;gap:16px}}@media (width<=600px){:root{--gutter:20px}.nav-inner{gap:12px;height:64px}.nav-github{display:none}.nav-cta{height:34px;margin-left:4px;padding-inline:12px}.page-hero h1{font-size:36px}.lede{font-size:16px}.stack-grid{grid-template-columns:1fr}.header-row{grid-template-columns:40px minmax(0,1fr);gap:6px 14px}.header-role{grid-area:auto/2;margin-top:0}.header-status{grid-column:2;justify-self:start}.prose{font-size:15px}.prose h2{margin-top:52px;font-size:23px}.prose pre{padding-inline:16px;font-size:12px}.faq-list details p{padding-right:0}.author-card-body{grid-template-columns:64px minmax(0,1fr);gap:16px}.author-card-body img{border-radius:12px;width:64px;height:64px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
