@font-face{font-family:Geist;src:url(/fonts/Geist/Geist-VariableFont_wght.ttf)format("truetype");font-weight:100 900;font-style:normal}@font-face{font-family:Geist;src:url(/fonts/Geist/Geist-Italic-VariableFont_wght.ttf)format("truetype");font-weight:100 900;font-style:italic}@font-face{font-family:Geist Mono;src:url(/fonts/Geist/GeistMono-VariableFont_wght.ttf)format("truetype");font-weight:100 900;font-style:normal}@font-face{font-family:Geist Mono;src:url(/fonts/Geist/GeistMono-Italic-VariableFont_wght.ttf)format("truetype");font-weight:100 900;font-style:italic}:root{--well:#151413;--bg:#181716;--surface-1:#1d1c1a;--surface-2:#21201e;--surface-3:#272523;--border:#2f2e2b;--border-strong:#373530;--border-disabled:#252422;--fg:#edecea;--icon:#d9d8d5;--fg-muted:#b4b2ae;--fg-subtle:#908e89;--fg-disabled:#565451;--doc-body:#e0e0e0;--inverse-bg:#edecea;--inverse-fg:#181716;--status-on:#ededed;--status-idle:#a1a1a1;--status-off:#7a7a7a;--error:#d96b6b;--error-bg:rgba(217,107,107,.12);--warning:#d9904c;--warning-bg:rgba(217,144,76,.12);--success:#7fae7f;--success-bg:rgba(127,174,127,.12);--info:#6fbbf0;--info-bg:rgba(111,187,240,.12);--code-fg:var(--fg-muted);--code-keyword:var(--fg);--code-entity:#b8c9a4;--code-var:var(--fg-muted);--code-string:#8fae83;--code-const:#d0cfcc;--code-punct:#8b8984;--code-comment:var(--fg-subtle);--selection:rgba(237,237,237,.16);--selection-accent:rgba(111,187,240,.22);--focus:#6fbbf0;--font-sans:"Geist", sans-serif;--font-mono:"Geist Mono", monospace;--font-alt:"Inter", sans-serif;--text-xs:12px;--text-sm:13px;--text-md:14px;--text-lg:16px;--text-xl:24px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--section-pad:50px;--r-sm:4px;--r-md:8px;--r-lg:12px;--r-pill:999px;--container-width:1240px;--nav-h:50px;--z-sticky:100;--nav-w:300px;--toc-w:var(--nav-w);--shell-max:1500px;--doc-measure:90ch;--doc-size:15px;--z-pane:10;--link:var(--info);--doc-in:.5s;--overlay-hover:rgba(237,237,237,.06);--ease-out:cubic-bezier(.22, 1, .36, 1);--dur:.3s;--pcard-dur:.55s;--pcard-rise:8px;--pcard-stagger:55ms;--blog-dur:.5s;--blog-rise:6px;--blog-stagger:45ms}*,:before,:after{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}::selection{background:var(--selection)}html,body{overscroll-behavior-x:none;overflow-x:clip}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;min-height:100dvh;line-height:1.5}.home-content{padding-top:var(--s3);flex-direction:column;display:flex}.home-content>div{padding-block:var(--section-pad);border-bottom:1px solid var(--border)}.home-content>div>h2{margin-bottom:var(--s5)}.home-content>hr{border:none;border-top:1px solid var(--border)}.home-content>footer{padding-block:var(--s5);justify-content:space-between;align-items:center;gap:var(--s5);flex-wrap:wrap;display:flex}.home-content>footer>p{align-items:center;gap:var(--s3);font-size:var(--text-xs);color:var(--fg-subtle);display:inline-flex}.home-content>footer>p>span:first-child{align-items:center;gap:3px;display:inline-flex}.home-content>footer>p>span:first-child svg{stroke-width:2px;width:11px;height:11px}.home-content>footer>p>a{color:var(--fg-subtle);border-radius:var(--r-sm);transition:color var(--dur) var(--ease-out);text-decoration:none}.home-content>footer>p>a:hover{color:var(--fg);text-underline-offset:3px;text-decoration:underline}.home-content>footer>p>a:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);outline:none}.home-content>footer>div{align-items:center;gap:var(--s5);display:flex}.home-content>footer>div>a{color:var(--fg-muted);border-radius:var(--r-sm);transition:color var(--dur) var(--ease-out);text-decoration:none}.home-content>footer>div>a:hover{color:var(--fg)}.home-content>footer>div>a:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);outline:none}.home-content>footer>div>a:has(>span){font-size:var(--text-sm);align-items:center;gap:6px;margin:-2px -4px;padding:2px 4px;display:inline-flex}.home-content>footer>div>a:has(>span) span{color:var(--fg-subtle);transition:color var(--dur) var(--ease-out);display:inline-flex}.home-content>footer>div>a:has(>span):hover span{color:var(--fg)}.home-content>footer>div>a:has(>span) svg{width:16px;height:16px}.nav-align,.nav-sticky>nav>div{padding-inline:max(var(--s4), (100% - var(--container-width)) / 2 + var(--s4))}.nav-sticky{z-index:var(--z-sticky);width:100%;position:sticky;top:0}.nav-sticky>nav{width:100%;height:var(--nav-h);backdrop-filter:blur(10px)saturate(1.4);border-bottom:1px solid var(--border);background:rgba(24,23,22,.78)}@supports not (backdrop-filter:blur(1px)){.nav-sticky>nav{background:var(--bg)}}@media (prefers-reduced-transparency:reduce){.nav-sticky>nav{background:var(--bg);backdrop-filter:none}}.nav-sticky>nav>div{justify-content:space-between;align-items:center;gap:var(--s5);height:100%;display:flex}.nav-sticky button{width:30px;height:30px;color:var(--fg-muted);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;transition:background var(--dur) var(--ease-out), color var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out);background:0 0;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.nav-sticky button:hover{border-color:var(--border-strong);color:var(--fg);background:rgba(237,237,237,.06)}.nav-sticky button:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);outline:none}.nav-sticky button svg{width:18px;height:18px}.nav-sticky:has(.nav-menu:popover-open) button{color:var(--fg);border-color:var(--border-strong)}.crumbs{min-width:0;font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:.01em}.crumbs ol{align-items:center;gap:6px;min-width:0;list-style:none;display:flex}.crumbs li{color:var(--fg-muted);align-items:center;gap:6px;display:flex}.crumbs li:before{content:"";background:var(--border-strong);border-radius:1px;flex-shrink:0;width:2px;height:18px;margin-inline:2px;transform:rotate(18deg)}.crumbs a{color:var(--fg-muted);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--fg-subtle);text-decoration-color:var(--fg-subtle);transition:color var(--dur) var(--ease-out), text-decoration-color var(--dur) var(--ease-out);border-radius:4px;margin:-2px -4px;padding:2px 4px}.crumbs a:hover{color:var(--fg);-webkit-text-decoration-color:var(--fg);text-decoration-color:var(--fg)}.crumbs a:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);outline:none}.crumbs [aria-current=page]{color:var(--fg);cursor:default}.nav-menu{min-width:248px;max-height:min(60vh,420px);color:var(--fg);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);inset:46px auto auto;right:max(var(--s3), (100vw - var(--container-width)) / 2 + var(--s3));opacity:0;transition:opacity var(--dur) var(--ease-out), transform var(--dur) var(--ease-out), overlay var(--dur) allow-discrete, display var(--dur) allow-discrete;margin:0;padding:8px;position:fixed;overflow:auto;transform:translateY(-4px)}.nav-menu:popover-open{opacity:1;transform:translateY(0)}.nav-menu p{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-subtle);padding:4px 10px}.nav-menu hr{background:var(--border);border:0;height:2px;margin:8px 6px}.nav-menu ul{flex-direction:column;gap:1px;list-style:none;display:flex}.nav-menu a{color:var(--fg-muted);font-size:var(--text-sm);transition:background var(--dur) var(--ease-out), color var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out);border-radius:6px;grid-template-columns:16px 1fr;align-items:center;gap:8px;padding:5px 10px;text-decoration:none;display:grid}.nav-menu a:hover{color:var(--fg);background:rgba(237,237,237,.06)}.nav-menu a:focus-visible{box-shadow:0 0 0 2px var(--surface-2), 0 0 0 4px var(--focus);outline:none}.nav-menu a[aria-current=true]{color:var(--fg);cursor:default;background:rgba(237,237,237,.05)}.nav-menu a svg{width:15px;height:15px;color:var(--fg-subtle);grid-column:1}.nav-menu a:hover svg{color:var(--fg)}.nav-menu a span{white-space:nowrap;text-overflow:ellipsis;grid-column:2;min-width:0;overflow:hidden}.nav-menu ul:not(:has(svg)) a{grid-template-columns:1fr}.nav-menu ul:not(:has(svg)) a span{grid-column:1}@starting-style{.nav-menu:popover-open{opacity:0;transform:translateY(-4px)}}.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}.hero{background:var(--well);border-bottom:1px solid var(--border);padding-block:var(--s7);align-items:center;gap:var(--s7);grid-template-columns:1fr 520px;display:grid}.hero>.hero-copy{min-width:0}.hero>.hero-copy h1{letter-spacing:-.02em;color:var(--fg);text-wrap:balance;font-size:clamp(22px,3vw,26px);font-weight:600}.hero>.hero-copy p{margin-top:var(--s4);max-width:54ch;font-size:var(--text-lg);color:var(--fg-muted);text-wrap:pretty;line-height:1.6}@media (width<=860px){.hero{grid-template-columns:1fr;align-items:start}.hero>.term{max-width:520px}}.term{gap:var(--s4);flex-direction:column;display:flex}.term>[aria-hidden]{align-items:center;gap:var(--s3);color:var(--fg);display:flex}.term>[aria-hidden] svg{stroke-width:2px;flex-shrink:0;width:36px;height:36px}.term>[aria-hidden] hr{border:none;border-top:1px solid var(--border);flex:1;margin:0}.term>ol{gap:var(--s3);font-family:var(--font-mono);font-size:var(--text-md);flex-direction:column;line-height:1.7;list-style:none;display:flex}.term>ol>li{align-items:flex-start;gap:var(--s2);flex-direction:column;display:flex}.term>ol>li+li{border-top:1px solid var(--border);padding-top:var(--s3)}.term>ol>li>span{color:var(--fg-muted)}.term>ol>li>div{color:var(--fg);flex-direction:column;display:flex}.term>ol>li>div>span{display:block}.term>ol>li>div>span span{color:var(--fg-subtle)}.term>div:not([aria-hidden]){align-items:center;gap:var(--s2);font-family:var(--font-mono);font-size:var(--text-md);border-top:1px solid var(--border);padding-top:var(--s3);display:flex}.term>div:not([aria-hidden])>span{color:var(--fg-muted);align-items:center;display:inline-flex}.term>div:not([aria-hidden]) input{color:var(--fg);font-family:inherit;font-size:inherit;caret-color:var(--fg);background:0 0;border:none;outline:none;flex:1}.term>div:not([aria-hidden]) .caret{animation:1.1s step-end infinite caret-blink}.term>div:not([aria-hidden]):focus-within .caret{display:none}.caret{background:var(--fg);opacity:0;flex:none;width:1ch;height:1.15em;display:inline-block}@keyframes caret-blink{0%{opacity:1}50%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.term .caret{animation:none}}.term-render{contain:layout paint;--tt:34ms;--t-seam:0s;--t-cmd1:.3s;--t-out1:.78s;--t-row2:.98s;--t-cmd2:1.04s;--t-out2:1.82s;--t-live:2.3s;--t-caret:var(--t-live);--caret-beat:1.15s;--out-dur:.45s}@media (prefers-reduced-motion:no-preference){.term-render>[aria-hidden]{animation:term-rise var(--out-dur) var(--ease-out) var(--t-seam) backwards}.term-render>ol>li>span{align-items:center;display:inline-flex}.term-render>ol>li>span>span:first-child{white-space:nowrap;clip-path:inset(0);overflow:hidden}.term-render>ol>li:first-child>span>span:first-child{animation:term-type calc(12 * var(--tt)) steps(12) var(--t-cmd1) backwards}.term-render>ol>li:nth-child(2)>span>span:first-child{animation:term-type calc(22 * var(--tt)) steps(22) var(--t-cmd2) backwards}.term-render>ol>li:first-child>span>.caret{--ride:-12ch;animation:term-typecaret calc(12 * var(--tt)) steps(12) var(--t-cmd1)}.term-render>ol>li:nth-child(2)>span>.caret{--ride:-22ch;animation:term-typecaret calc(22 * var(--tt)) steps(22) var(--t-cmd2)}.term-render>ol>li:nth-child(2){animation:term-appear .3s var(--ease-out) var(--t-row2) backwards}.term-render>ol>li:first-child>div{animation:term-rise var(--out-dur) var(--ease-out) var(--t-out1) backwards}.term-render>ol>li:nth-child(2)>div>span{animation:term-rise var(--out-dur) var(--ease-out) backwards}.term-render>ol>li:nth-child(2)>div>span:first-child{animation-delay:var(--t-out2)}.term-render>ol>li:nth-child(2)>div>span:nth-child(2){animation-delay:calc(var(--t-out2) + 90ms)}.term-render>ol>li:nth-child(2)>div>span:nth-child(3){animation-delay:calc(var(--t-out2) + .18s)}.term-render>div:not([aria-hidden]){animation:term-rise .4s var(--ease-out) var(--t-live) backwards}.term-render>div:not([aria-hidden]) .caret{animation:caret-blink var(--caret-beat) step-end var(--t-caret) 3 forwards}}@keyframes term-type{0%{clip-path:inset(0 100% 0 0)}}@keyframes term-typecaret{0%{opacity:1;transform:translateX(var(--ride))}to{opacity:1;transform:translate(0)}}@keyframes term-rise{0%{opacity:0;transform:translateY(6px)}}@keyframes term-appear{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.crumbs a,.nav-sticky button,.nav-menu,.nav-menu a{transition:none}@starting-style{.nav-menu:popover-open{opacity:1;transform:none}}}.col-span-6,.col-span-4{grid-column:span 12}.col-span-12{grid-column:1/-1}@media (width>=768px){.col-span-6{grid-column:span 6}.col-span-4{grid-column:span 4}}.pcatalog>ul{gap:var(--s5);grid-template-columns:repeat(12,1fr);list-style:none;display:grid}.pcatalog>ul>li{display:contents}.pcatalog>ul>li:only-child>a{grid-column:1/-1}.pcatalog>ul>li>a{animation:pcard-in var(--pcard-dur) var(--ease-out) backwards}.pcatalog>ul>li:first-child>a{animation-delay:calc(0 * var(--pcard-stagger))}.pcatalog>ul>li:nth-child(2)>a{animation-delay:calc(1 * var(--pcard-stagger))}.pcatalog>ul>li:nth-child(3)>a{animation-delay:calc(2 * var(--pcard-stagger))}.pcatalog>ul>li:nth-child(4)>a{animation-delay:calc(3 * var(--pcard-stagger))}.pcatalog>ul>li:nth-child(5)>a{animation-delay:calc(4 * var(--pcard-stagger))}.pcatalog a{gap:var(--s5);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);height:100%;padding:var(--s6);color:inherit;cursor:pointer;transition:border-color var(--dur) var(--ease-out);flex-direction:column;text-decoration:none;display:flex}.pcatalog a:hover:not(:has(>div>span:hover)){border-color:var(--border-strong)}.pcatalog a:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);outline:none}.pcatalog a>div{align-items:center;gap:var(--s3);display:flex}.pcatalog a>div>svg{stroke-width:2px;width:18px;height:18px;color:var(--icon);flex-shrink:0}.pcatalog a>div>h3{font-size:var(--text-lg);color:var(--fg);font-weight:500}.pcatalog a>div>span{white-space:nowrap;font-family:var(--font-mono);color:var(--fg-muted);border:1px solid var(--border);border-radius:var(--r-pill);cursor:pointer;transition:border-color var(--dur) var(--ease-out);flex-shrink:0;align-items:center;gap:6px;margin-left:auto;padding:3px 10px;font-size:11px;display:inline-flex}.pcatalog a>div>span:hover{border-color:var(--border-strong)}.pcatalog a>div>span svg{stroke-width:2px;width:13px;height:13px;color:var(--fg-subtle)}.pcatalog a>p{font-size:var(--text-md);color:var(--fg-muted);line-height:1.65}.pcatalog a>dl{border-top:1px solid var(--border);padding-top:var(--s4);gap:var(--s3);flex-direction:column;margin-top:auto;display:flex}.pcatalog a>dl>div{align-items:center;gap:var(--s2);display:flex}.pcatalog a>dl>div dt{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-pill);flex-shrink:0;padding:2px 9px;font-size:10px}.pcatalog a>dl>div dd{font-size:var(--text-sm);color:var(--fg-muted);line-height:1.5}@keyframes pcard-in{0%{opacity:0;transform:translateY(var(--pcard-rise))}}@media (prefers-reduced-motion:reduce){.pcatalog>ul>li>a{animation:none}}.pcatalog-skel{grid-column:1/-1}.pcatalog-skel>ul{gap:var(--s5);grid-template-columns:repeat(12,1fr);list-style:none;display:grid}.pcatalog-skel>ul>li{grid-column:1/-1}@media (width>=768px){.pcatalog-skel>ul>li:first-child,.pcatalog-skel>ul>li:nth-child(2){grid-column:span 6}.pcatalog-skel>ul>li:nth-child(3){grid-column:1/-1}}.pcatalog-skel>ul>li>div{gap:var(--s5);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);height:100%;padding:var(--s6);flex-direction:column;display:flex}.pcatalog-skel span{border-radius:var(--r-sm);background:linear-gradient(100deg, var(--surface-2) 30%, var(--surface-3) 50%, var(--surface-2) 70%);background-size:200% 100%;height:13px;animation:2.8s linear infinite skel-wave;display:block}.pcatalog-skel>ul>li>div>div:first-child{align-items:center;gap:var(--s3);display:flex}.pcatalog-skel>ul>li>div>div:first-child>span:first-child{border-radius:var(--r-sm);width:20px;height:20px}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2){width:auto;height:auto;font-size:var(--text-lg);color:var(--border);background:0 0;font-weight:500;animation:none;display:inline-flex}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2)>span{text-align:center;background:0 0;border-radius:0;width:.7em;height:auto;animation:none}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2)>span:before{content:"·";animation-duration:.66s;animation-timing-function:step-end;animation-iteration-count:infinite}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2)>span:first-child:before{animation-name:glyph-a;animation-delay:-.05s}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2)>span:nth-child(2):before{animation-name:glyph-c;animation-delay:-.31s}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2)>span:nth-child(3):before{animation-name:glyph-b;animation-delay:-.12s}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2)>span:nth-child(4):before{animation-name:glyph-d;animation-delay:-.44s}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2)>span:nth-child(5):before{animation-name:glyph-b;animation-delay:-.22s}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2)>span:nth-child(6):before{animation-name:glyph-a;animation-delay:-.53s}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2)>span:nth-child(7):before{animation-name:glyph-d;animation-delay:-.18s}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(2)>span:nth-child(8):before{animation-name:glyph-c;animation-delay:-.37s}.pcatalog-skel>ul>li>div>div:first-child>span:nth-child(3){border-radius:var(--r-pill);width:128px;height:20px;margin-left:auto}.pcatalog-skel>ul>li>div>div:last-child{gap:var(--s3);flex-direction:column;display:flex}.pcatalog-skel>ul>li>div>div:last-child>span:first-child{width:65%}.pcatalog-skel>ul>li>div>div:last-child>span:nth-child(2){display:none}@media (prefers-reduced-motion:reduce){.pcatalog-skel span,.pcatalog-skel span:before{animation:none}}@keyframes glyph-a{0%{content:"A"}16%{content:"d"}33%{content:"f"}50%{content:"L"}66%{content:"K"}83%{content:"h"}to{content:"Q"}}@keyframes glyph-b{0%{content:"a"}16%{content:"A"}33%{content:"e"}50%{content:"d"}66%{content:"d"}83%{content:"s"}to{content:"z"}}@keyframes glyph-c{0%{content:"R"}16%{content:"j"}33%{content:"v"}50%{content:"q"}66%{content:"W"}83%{content:"b"}to{content:"x"}}@keyframes glyph-d{0%{content:"z"}16%{content:"X"}33%{content:"n"}50%{content:"m"}66%{content:"G"}83%{content:"T"}to{content:"e"}}@keyframes skel-wave{0%{background-position:200% 0}to{background-position:-200% 0}}.bl{gap:var(--s5);border-bottom:none;grid-template-columns:1fr;padding-block-end:var(--s6);display:grid}@media (width>=900px){.bl{gap:var(--s7);grid-template-columns:300px 1fr}}.bl>div{border-bottom:none;flex-direction:column;align-self:start;align-items:flex-start;display:flex}.bl>div>h2{margin-bottom:var(--s5)}.bl>div>p{font-size:var(--text-md);color:var(--fg-muted);max-width:34ch;margin-bottom:var(--s5);line-height:1.65}.bl>div>a{font-size:var(--text-sm);color:var(--fg-muted);transition:color var(--dur) var(--ease-out);align-items:center;gap:6px;font-weight:500;text-decoration:none;display:inline-flex}.bl>div>a:hover{color:var(--fg)}.bl>div>a>svg{stroke-width:2px;width:14px;height:14px;transition:transform var(--dur) var(--ease-out)}.bl>div>a:hover>svg{transform:translate(2px)}.bl>ol:not(.bl-skel){border-top:1px solid var(--border);list-style:none}.bl>ol:not(.bl-skel)>li{border-bottom:1px solid var(--border);transition:background var(--dur) var(--ease-out);animation:blog-in var(--blog-dur) var(--ease-out) backwards}.bl>ol:not(.bl-skel)>li:last-child{border-bottom:none}.bl>ol:not(.bl-skel)>li:hover{background:var(--surface-1)}.bl>ol:not(.bl-skel)>li:first-child{animation-delay:calc(0 * var(--blog-stagger))}.bl>ol:not(.bl-skel)>li:nth-child(2){animation-delay:calc(1 * var(--blog-stagger))}.bl>ol:not(.bl-skel)>li:nth-child(3){animation-delay:calc(2 * var(--blog-stagger))}.bl>ol:not(.bl-skel)>li:nth-child(4){animation-delay:calc(3 * var(--blog-stagger))}.bl>ol:not(.bl-skel)>li:nth-child(5){animation-delay:calc(4 * var(--blog-stagger))}.bl>ol:not(.bl-skel)>li:nth-child(6){animation-delay:calc(5 * var(--blog-stagger))}.bl>ol:not(.bl-skel)>li>a{align-items:center;gap:var(--s3);padding:var(--s4) var(--s3);width:100%;font-size:var(--text-md);color:var(--fg-muted);transition:color var(--dur) var(--ease-out);line-height:1.4;text-decoration:none;display:flex}.bl>ol:not(.bl-skel)>li>a:hover{color:var(--fg)}.bl>ol:not(.bl-skel)>li>a>span{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--fg-subtle);flex-shrink:0}.bl>ol:not(.bl-skel)>li>a>span:first-child{width:54px}.bl>ol:not(.bl-skel)>li>a>span:nth-child(2){width:62px}.bl>ol:not(.bl-skel)>li>a>svg{stroke-width:2px;width:14px;height:14px;color:var(--fg-subtle);opacity:0;transition:opacity var(--dur) var(--ease-out), color var(--dur) var(--ease-out);flex-shrink:0;margin-left:auto}.bl>ol:not(.bl-skel)>li>a:hover>svg{opacity:1;color:var(--fg)}@media (prefers-reduced-motion:reduce){.bl>div>a,.bl>div>a>svg,.bl>ol:not(.bl-skel)>li,.bl>ol:not(.bl-skel)>li>a,.bl>ol:not(.bl-skel)>li>a>svg{transition:none}.bl>ol:not(.bl-skel)>li{animation:none}}@keyframes blog-in{0%{opacity:0;transform:translateY(var(--blog-rise))}}.bl-skel{border-top:1px solid var(--border);list-style:none}.bl-skel>li{border-bottom:1px solid var(--border)}.bl-skel>li:last-child{border-bottom:none}.bl-skel>li>div{align-items:center;gap:var(--s3);padding:var(--s4) var(--s3);display:flex}.bl-skel span{border-radius:var(--r-sm);background:linear-gradient(100deg, var(--surface-2) 30%, var(--surface-3) 50%, var(--surface-2) 70%);background-size:200% 100%;height:13px;animation:2.8s linear infinite skel-wave;display:block}.bl-skel>li>div>span:first-child{flex-shrink:0;width:54px}.bl-skel>li>div>span:nth-child(2){width:62px;height:auto;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--border-strong);background:0 0;flex-shrink:0;animation:none;display:inline-flex}.bl-skel>li>div>span:nth-child(2)>span{text-align:center;background:0 0;border-radius:0;width:.6em;height:auto;animation:none}.bl-skel>li>div>span:nth-child(2)>span:before{content:"·";animation-duration:.66s;animation-timing-function:step-end;animation-iteration-count:infinite}.bl-skel>li>div>span:nth-child(2)>span:first-child:before{animation-name:glyph-a;animation-delay:-.05s}.bl-skel>li>div>span:nth-child(2)>span:nth-child(2):before{animation-name:glyph-c;animation-delay:-.31s}.bl-skel>li>div>span:nth-child(2)>span:nth-child(3):before{animation-name:glyph-b;animation-delay:-.12s}.bl-skel>li>div>span:nth-child(2)>span:nth-child(4):before{animation-name:glyph-d;animation-delay:-.44s}.bl-skel>li>div>span:nth-child(2)>span:nth-child(5):before{animation-name:glyph-b;animation-delay:-.22s}.bl-skel>li>div>span:nth-child(3){width:58%}.bl-skel>li:nth-child(2)>div>span:nth-child(3){width:44%}.bl-skel>li:nth-child(3)>div>span:nth-child(3){width:66%}.bl-skel>li:nth-child(4)>div>span:nth-child(3){width:39%}.bl-skel>li:nth-child(5)>div>span:nth-child(3){width:52%}@media (prefers-reduced-motion:reduce){.bl-skel span,.bl-skel span:before{animation:none}}html{scroll-behavior:smooth}.docs-shell{max-width:var(--shell-max);grid-template-columns:var(--nav-w) minmax(0, 1fr);align-items:start;margin-inline:auto;display:grid}@media (width<=860px){.docs-shell{grid-template-columns:minmax(0,1fr)}}.docs-shell>main{width:100%;min-width:0;min-height:calc(100dvh - var(--nav-h));grid-template-columns:minmax(0, 1fr) var(--toc-w);align-items:start;display:grid}.docs-shell>main:not(:has(>.doc-nav)){grid-template-columns:minmax(0,1fr)}@media (width<=1180px){.docs-shell>main{grid-template-columns:minmax(0,1fr)}}.nav-sticky:has(+.docs-shell)>nav>div{padding-inline:calc(max(0px, (100% - var(--shell-max)) / 2) + var(--s5) + var(--s3))}@media (width<=860px){.nav-sticky:has(+.docs-shell)>nav>div{padding-inline:var(--s5)}}.project-nav{top:var(--nav-h);height:calc(100dvh - var(--nav-h));overscroll-behavior:contain;z-index:var(--z-pane);-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--s4), #000 calc(100% - var(--s6)), transparent 100%);-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--s4), #000 calc(100% - var(--s6)), transparent 100%);mask-image:linear-gradient(to bottom, transparent 0, #000 var(--s4), #000 calc(100% - var(--s6)), transparent 100%);position:sticky;overflow-y:auto}.project-nav::-webkit-scrollbar{width:10px}.project-nav::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--r-pill);border:3px solid var(--bg)}.project-nav:hover::-webkit-scrollbar-thumb{background:var(--border-strong)}.project-nav>details{height:auto}.project-nav summary{display:none}.project-nav>details>nav{padding:var(--s5) var(--s5) var(--s7)}.project-nav nav>a:has(svg){align-items:center;gap:var(--s3);padding:2px var(--s3) var(--s4);color:var(--fg);font-weight:500;font-size:var(--text-lg);border-radius:var(--r-sm);transition:color var(--dur) var(--ease-out);text-decoration:none;display:flex}.project-nav nav>a:has(svg) svg{flex-shrink:0;width:18px;height:18px}.project-nav nav>a:has(svg):hover{color:var(--link)}.project-nav nav>a:has(svg):focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);outline:none}.project-nav ul{flex-direction:column;gap:2px;list-style:none;display:flex}.project-nav nav>div{gap:var(--s2);flex-direction:column;display:flex}.project-nav nav>div:before{content:"";height:1px;width:calc(100% - 2 * var(--s3));margin-inline:var(--s3);background:var(--border);margin-bottom:var(--s2)}.project-nav nav>div>p{font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--fg);padding:0 var(--s3);font-weight:500}.project-nav nav>div+div,.project-nav nav>a+div{margin-top:var(--s4)}.project-nav li>a{padding:3px var(--s3);border-radius:var(--r-sm);font-size:var(--text-sm);color:var(--fg-subtle);transition:background var(--dur) var(--ease-out), color var(--dur) var(--ease-out);line-height:1.45;text-decoration:none;display:block}.project-nav nav>a:not(:has(svg)){padding:3px var(--s3);border-radius:var(--r-sm);font-size:var(--text-sm);color:var(--fg-subtle);transition:background var(--dur) var(--ease-out), color var(--dur) var(--ease-out);line-height:1.45;text-decoration:none;display:block}.project-nav li>a:hover{color:var(--fg)}.project-nav nav>a:not(:has(svg)):hover{color:var(--fg)}.project-nav li>a:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);outline:none}.project-nav nav>a:not(:has(svg)):focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);outline:none}.project-nav li>a[aria-current=page]{color:var(--fg);cursor:default;font-weight:500}@media (width<=860px){.project-nav{border-bottom:1px solid var(--border);height:auto;position:static;overflow:visible;-webkit-mask-image:none;mask-image:none}.project-nav>details>nav{max-height:60vh;padding:var(--s4) var(--s5) var(--s5)}.project-nav summary{justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s3) var(--s5);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:.02em;color:var(--fg);font-weight:500;list-style:none;display:flex}.project-nav summary::-webkit-details-marker{display:none}.project-nav summary svg{color:var(--fg-subtle);transition:transform var(--dur) var(--ease-out)}.project-nav>details[open] summary svg{transform:rotate(180deg)}.project-nav>details:not([open])>nav{display:none}}.doc{border-left:1px solid var(--border);min-width:0;padding:var(--s7) var(--s6) var(--s8)}.doc>div{max-width:var(--doc-measure);color:var(--doc-body);font-size:var(--doc-size);animation:doc-in var(--doc-in) var(--ease-out) both;overflow-wrap:break-word;line-height:1.7}.doc>div>*+*{margin-top:var(--s4)}.doc p{text-wrap:pretty}.doc :is(h1,h2,h3,h4){color:var(--fg);text-wrap:balance;scroll-margin-top:calc(var(--nav-h) + var(--s5));font-weight:600}.doc h1{letter-spacing:-.02em;margin-bottom:var(--s2);font-size:27px;line-height:1.2}.doc h2{letter-spacing:-.01em;margin-top:var(--s7);font-size:20px;line-height:1.3}.doc h3{margin-top:var(--s6);font-size:17px;line-height:1.35}.doc h4{margin-top:var(--s5);color:var(--fg);font-size:14px;line-height:1.4}.doc .anchor{color:var(--fg-subtle);opacity:0;transition:opacity var(--dur) var(--ease-out), color var(--dur) var(--ease-out);margin-left:.4em;font-size:1.35em;font-style:normal;font-weight:550;text-decoration:none}.doc :is(h2,h3):hover .anchor{opacity:1}.doc .anchor:focus-visible{opacity:1}.doc .anchor:hover{color:var(--fg)}.doc .anchor:focus-visible{color:var(--link);outline:none}.doc a:not(.anchor){color:var(--fg);text-underline-offset:2px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--fg-muted);text-decoration-color:var(--fg-muted);transition:text-decoration-color var(--dur) var(--ease-out)}.doc a:not(.anchor):hover{-webkit-text-decoration-color:var(--fg);text-decoration-color:var(--fg)}.doc a:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);border-radius:2px;outline:none}.doc strong{color:var(--fg);font-weight:650}.doc em{font-style:italic}.doc :is(ul,ol){padding-left:1.5em}.doc li{margin-top:var(--s2)}.doc li::marker{color:var(--fg-disabled);font-weight:600}.doc ul>li::marker{content:"–  "}.doc ol li::marker{font-family:var(--font-mono);font-size:.85em}.doc li>:is(ul,ol){margin-top:var(--s2)}.doc :not(pre)>code{font-family:var(--font-mono);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--fg);overflow-wrap:anywhere;padding:.12em .4em;font-size:.86em}.doc pre{--gutter-w:calc(2ch + 2 * var(--s2));background-color:var(--well);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--text-md);padding:0;line-height:1.65;overflow:hidden}.doc pre code{font-family:var(--font-mono);color:var(--code-fg);padding:var(--s4);white-space:pre;background:0 0;border:0;display:block;overflow-x:auto}.doc pre:has(.line-numbers) code{padding-inline:0;display:flex}.doc pre:has(.line-numbers) .line-numbers{min-width:2ch;padding-left:var(--s3);padding-right:var(--s5);background:var(--well);color:var(--fg-disabled);text-align:right;-webkit-user-select:none;user-select:none;flex:none;font-weight:500;position:sticky;left:0}.doc pre:has(.line-numbers) .code-lines{padding-right:var(--s4)}.doc pre:has(.ln-num) code{grid-template-columns:auto minmax(0,1fr);padding-inline:0;display:grid}.doc pre:has(.ln-num) .ln-num{padding-inline:var(--s4);color:var(--fg-disabled);text-align:right;-webkit-user-select:none;user-select:none}.doc pre:has(.ln-num) .ln-code{padding-right:var(--s4);white-space:pre-wrap;overflow-wrap:anywhere}.doc pre:has(.ln){background-image:linear-gradient(to right, var(--surface-1) 0 var(--gutter-w), transparent var(--gutter-w))}.doc pre:has(.ln) code{white-space:normal;counter-reset:ln;padding-inline:0}.doc pre:has(.ln) .ln{counter-increment:ln;white-space:pre;min-height:1lh;padding-right:var(--s4);width:max-content;min-width:100%;display:block}.doc pre:has(.ln) .ln:before{content:counter(ln);width:var(--gutter-w);padding:0 var(--s2);margin-right:var(--s3);color:var(--fg-subtle);text-align:right;-webkit-user-select:none;user-select:none;background:var(--surface-1);display:inline-block;position:sticky;left:0}.doc pre code{scrollbar-width:thin;scrollbar-color:transparent transparent;transition:scrollbar-color var(--dur) var(--ease-out)}.doc pre code::-webkit-scrollbar{height:10px}.doc pre code::-webkit-scrollbar-track{background:0 0}.doc pre code::-webkit-scrollbar-thumb{border-radius:var(--r-pill);border:3px solid var(--well);transition:background var(--dur) var(--ease-out);background:0 0}.doc pre:hover code{scrollbar-color:var(--fg-subtle) transparent}.doc pre:focus-within code{scrollbar-color:var(--fg-subtle) transparent}.doc pre:hover code::-webkit-scrollbar-thumb{background:var(--fg-subtle)}.doc pre:focus-within code::-webkit-scrollbar-thumb{background:var(--fg-subtle)}.doc blockquote{background:var(--well);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s4) var(--s5);color:var(--fg-muted)}.doc blockquote>*+*{margin-top:var(--s3)}.doc blockquote strong{color:var(--fg)}.doc hr{border:0;border-top:1px solid var(--border);margin-block:var(--s6)}.doc .table-scroll{overflow-x:auto}.doc table{border-collapse:collapse;width:100%;font-size:var(--text-md)}.doc :is(th,td){text-align:left;padding:var(--s3) var(--s4);border-bottom:1px solid var(--border)}.doc th{color:var(--fg);background:var(--surface-1);white-space:nowrap;font-weight:600}.doc td{color:var(--doc-body);vertical-align:top}.doc tr:last-child td{border-bottom:0}.doc tbody tr:hover td{background:rgba(237,237,237,.02)}.doc img{border-radius:var(--r-md);border:1px solid var(--border);max-width:100%;height:auto}.doc ul:has(>li>input[type=checkbox]){padding-left:.2em;list-style:none}.doc li:has(>input[type=checkbox]){align-items:baseline;gap:var(--s2);display:flex}.doc li>input[type=checkbox]{appearance:none;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface-2);flex-shrink:0;place-content:center;width:15px;height:15px;margin:0;display:grid;translate:0 2px}.doc li>input[type=checkbox]:checked{background:var(--success);border-color:var(--success)}.doc li>input[type=checkbox]:checked:after{content:"";border:solid var(--well);border-width:0 2px 2px 0;width:4px;height:8px;margin-top:-2px;rotate:45deg}@media (width<=860px){.doc{padding:var(--s6) var(--s5) var(--s7);border-left:0}.doc .anchor{display:none}}@keyframes doc-in{0%{opacity:0;transform:translateY(6px)}}.syntax-highlighting .comment{color:var(--code-comment);font-style:italic}.syntax-highlighting .punctuation.definition.comment{color:var(--code-comment)}.syntax-highlighting .string,.syntax-highlighting .punctuation.definition.string{color:var(--code-string)}.syntax-highlighting .constant.character.escape,.syntax-highlighting .constant.other.placeholder,.syntax-highlighting .constant,.syntax-highlighting .punctuation.separator.decimal{color:var(--code-const)}.syntax-highlighting .entity{color:var(--code-entity)}.syntax-highlighting .entity.other.inherited-class{color:var(--code-entity);font-style:italic}.syntax-highlighting .entity.name.namespace,.syntax-highlighting .entity.name.label{color:var(--code-var)}.syntax-highlighting .entity.name.constant{color:var(--code-const)}.syntax-highlighting .entity.name.tag{color:var(--code-keyword)}.syntax-highlighting .entity.other.attribute-name{color:var(--code-var)}.syntax-highlighting .entity.name.section{color:var(--fg);font-weight:600}.syntax-highlighting .keyword{color:var(--code-keyword)}.syntax-highlighting .keyword.operator{color:var(--code-punct)}.syntax-highlighting .keyword.operator.word,.syntax-highlighting .storage{color:var(--code-keyword)}.syntax-highlighting .support{color:var(--code-entity)}.syntax-highlighting .support.constant{color:var(--code-const)}.syntax-highlighting .variable{color:var(--code-var)}.syntax-highlighting .variable.other.constant{color:var(--code-const)}.syntax-highlighting .variable.function{color:var(--code-entity)}.syntax-highlighting .variable.language{color:var(--code-keyword);font-style:italic}.syntax-highlighting .variable.annotation{color:var(--code-entity)}.syntax-highlighting .punctuation{color:var(--code-punct)}.syntax-highlighting .punctuation.definition.keyword{color:var(--code-keyword)}.syntax-highlighting .punctuation.definition.variable{color:var(--code-var)}.syntax-highlighting .punctuation.definition.annotation{color:var(--code-entity)}.syntax-highlighting .punctuation.definition.generic{color:var(--code-punct)}.syntax-highlighting .invalid{color:var(--error)}.syntax-highlighting .invalid.illegal{background:var(--error-bg);border-radius:var(--r-sm);padding:0 2px}.syntax-highlighting .invalid.deprecated{color:var(--warning);background:var(--warning-bg);border-radius:var(--r-sm);padding:0 2px}.syntax-highlighting .markup.heading{color:var(--fg);font-weight:600}.syntax-highlighting .markup.bold{color:var(--fg);font-weight:650}.syntax-highlighting .markup.italic{font-style:italic}.syntax-highlighting .markup.underline{text-decoration:underline}.syntax-highlighting .markup.underline.link,.syntax-highlighting .markup.other.link{color:var(--link);text-underline-offset:2px;text-decoration:underline}.syntax-highlighting .markup.raw{color:var(--code-entity)}.syntax-highlighting .markup.list{color:var(--code-punct)}.syntax-highlighting .markup.quote{color:var(--fg-muted);font-style:italic}.syntax-highlighting .markup.inserted{color:var(--success)}.syntax-highlighting .markup.deleted{color:var(--error)}.syntax-highlighting .markup.changed{color:var(--warning)}.syntax-highlighting .markup.ignored{color:var(--fg-disabled)}.syntax-highlighting .punctuation.definition.inserted{color:var(--success)}.syntax-highlighting .punctuation.definition.deleted{color:var(--error)}.doc-404{border-left:1px solid var(--border);min-width:0;padding:var(--s7) var(--s6) var(--s8);color:var(--doc-body);font-size:var(--doc-size);animation:doc-in var(--doc-in) var(--ease-out) both;line-height:1.7}.doc-404>p:first-child{font-family:var(--font-mono);letter-spacing:-.02em;color:var(--fg);margin-bottom:var(--s4);font-size:clamp(40px,8vw,64px);font-weight:600;line-height:1}.doc-404 h1{max-width:var(--doc-measure);letter-spacing:-.02em;color:var(--fg);text-wrap:balance;margin-bottom:var(--s2);font-size:27px;font-weight:600;line-height:1.2}.doc-404 h1+p{max-width:var(--doc-measure);color:var(--fg-muted);text-wrap:pretty;font-size:16px}.doc-404 a{align-items:center;gap:var(--s2);height:36px;margin-top:var(--s6);padding:0 var(--s4);font-size:var(--text-sm);color:var(--fg);border:1px solid var(--border);border-radius:var(--r-md);white-space:nowrap;cursor:pointer;transition:background var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out);background:0 0;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.doc-404 a:hover{border-color:var(--border-strong);background:rgba(237,237,237,.03)}.doc-404 a:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);outline:none}.docs-shell>.doc-404{grid-column:1/-1}@media (width<=860px){.doc-404{padding:var(--s6) var(--s5) var(--s7);border-left:0}}.doc-nav{top:var(--nav-h);max-height:calc(100dvh - var(--nav-h));overscroll-behavior:contain;padding:var(--s7) var(--s5) var(--s6) 0;z-index:var(--z-pane);align-self:start;position:sticky;overflow-y:auto}@media (width<=1180px){.doc-nav{display:none}}.doc-nav>div{--toc-gutter:var(--s5);border-left:1px solid var(--border);margin-left:var(--s4);padding-left:var(--toc-gutter);gap:var(--s3);animation:doc-in var(--doc-in) var(--ease-out) both;flex-direction:column;display:flex}.doc-nav p{font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--fg);margin-bottom:var(--s3);font-weight:500}.doc-nav section a{align-items:center;gap:var(--s2);font-size:var(--text-sm);color:var(--fg-subtle);transition:color var(--dur) var(--ease-out);padding:4px 0;text-decoration:none;display:flex}.doc-nav section a svg{width:15px;height:15px;color:var(--fg-subtle);transition:color var(--dur) var(--ease-out);flex-shrink:0}.doc-nav section a:hover,.doc-nav section a:hover svg{color:var(--fg)}.doc-nav section a:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);border-radius:2px;outline:none}.doc-nav nav ul{list-style:none}.doc-nav nav a{padding:4px var(--s4) 4px 0;font-size:var(--text-sm);color:var(--fg-subtle);transition:color var(--dur) var(--ease-out);line-height:1.4;text-decoration:none;display:block;position:relative}.doc-nav nav a:hover{color:var(--fg)}.doc-nav nav a:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--focus);border-radius:2px;outline:none}.doc-nav nav ul ul a{padding-left:var(--s4)}.doc-nav nav a[aria-current=true]{color:var(--fg)}.doc-nav nav a[aria-current=true]:before{content:"";left:calc(-1 * var(--toc-gutter) - 1px);background:var(--fg);width:2px;position:absolute;top:4px;bottom:4px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.doc>div,.doc-nav>div,.doc-404{animation:none}}