:root{--bg:#0d1117;--bg-soft:#0f141b;--panel:#161b22;--panel-2:#1a2029;--inset:#0b0f15;--line:#232a33;--line-soft:#1c222b;--line-strong:#30363d;--line-warm:#3b434e;--text:#e6edf3;--muted:#9aa6b2;--quiet:#6e7a87;--ink:var(--text);--ink-2:var(--muted);--ink-3:var(--quiet);--ink-4:#566370;--accent:#1fb6cf;--accent-rgb:31, 182, 207;--accent-soft:#1fb6cf21;--accent-dim:#1fb6cf6b;--accent-hover:#3fcde4;--on-accent:#04232b;--accent-2:#00bf95;--accent-2-rgb:0, 191, 149;--accent-2-soft:#00bf9521;--accent-2-hover:#19d3a6;--accent-grad:linear-gradient(135deg, var(--accent-2) 0%, var(--accent) 100%);--main-actor:#d8a657;--main-actor-soft:#d8a6571f;--tail:#4bb6a8;--tail-soft:#4bb6a81f;--ok:#57ab5a;--drop:#cf6679;--warn:var(--main-actor);--tok-kw:#e0a85c;--tok-type:#45c8db;--tok-str:#5fdcab;--tok-num:#c8a6f5;--tok-com:#6e7a87;--topbar-bg:#0d1117db;--code-fg:#c9d4de;--code-ln:#43505c;--term-bg:#060606;--term-red:#ff5f56;--term-yellow:#ffbd2e;--term-green:#27c93f;--term-dot:#1f1f1f;--font-sans:"Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono", ui-monospace, "SF Mono", "JetBrains Mono", Menlo, monospace;--sans:var(--font-sans);--mono:var(--font-mono);--radius:10px;--radius-sm:7px;--shell-max:1320px;--gutter:24px}:root[data-theme=light]{color-scheme:light;--bg:#fff;--bg-soft:#f6f8fa;--panel:#fff;--panel-2:#f6f8fa;--inset:#f6f8fa;--line:#d8dee4;--line-soft:#e6eaef;--line-strong:#d0d7de;--line-warm:#c2c9d1;--text:#1f2328;--muted:#57606a;--quiet:#818b98;--ink-4:#a0a8b0;--accent:#0a7d92;--accent-rgb:10, 125, 146;--accent-soft:#0a7d921a;--accent-dim:#0a7d9252;--accent-hover:#0a6576;--on-accent:#fff;--accent-2:#0c7e62;--accent-2-rgb:12, 126, 98;--accent-2-soft:#0c7e621a;--accent-2-hover:#0a6b53;--main-actor:#9a6700;--main-actor-soft:#9a67001f;--tail:#1b7c70;--tail-soft:#1b7c701f;--ok:#1a7f37;--drop:#cf222e;--tok-kw:#9a6700;--tok-type:#0a7d92;--tok-str:#0f7a52;--tok-num:#8250df;--tok-com:#6e7781;--topbar-bg:#ffffffd9;--code-fg:#1f2328;--code-ln:#8c959f;--term-bg:#f6f8fa;--term-dot:#d0d7de}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}html{color-scheme:dark;-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}[id]{scroll-margin-top:76px}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-feature-settings:"ss01", "cv11";font-synthesis:none;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;min-height:100dvh;line-height:1.5;overflow-x:clip}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}img,svg{display:block}::selection{background:var(--accent-dim);color:var(--text)}.grain{z-index:100;pointer-events:none;opacity:.045;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");position:fixed;inset:0}.ambient{z-index:0;pointer-events:none;background:radial-gradient(900px 540px at 86% -10%,#1fb6cf1a,#0000 60%),radial-gradient(760px 520px at -8% 12%,#00bf9512,#0000 60%);position:fixed;inset:0}:root[data-theme=light] .ambient{background:radial-gradient(900px 540px at 86% -10%,#0a7d920f,#0000 60%),radial-gradient(760px 520px at -8% 12%,#0c7e620d,#0000 60%)}:root[data-theme=light] .grain{display:none}.shell{width:100%;max-width:var(--shell-max);padding:0 var(--gutter);z-index:1;margin:0 auto;position:relative}.mono{font-family:var(--font-mono);font-feature-settings:"ss02", "zero"}.kbd{border:1px solid var(--line-strong);background:var(--panel-2);min-width:18px;height:18px;font-family:var(--font-mono);color:var(--ink-2);letter-spacing:0;border-radius:4px;justify-content:center;align-items:center;padding:0 5px;font-size:11px;display:inline-flex}.tag{border:1px solid var(--line-strong);background:var(--panel-2);font-family:var(--font-mono);color:var(--ink-2);letter-spacing:.02em;text-transform:uppercase;border-radius:999px;align-items:center;gap:8px;padding:4px 10px 4px 8px;font-size:11px;display:inline-flex}.tag .dot{background:var(--accent-grad);width:6px;height:6px;box-shadow:0 0 0 3px var(--accent-soft);border-radius:50%;animation:2.4s ease-in-out infinite dot-pulse}@keyframes dot-pulse{0%,to{box-shadow:0 0 0 3px var(--accent-soft)}50%{box-shadow:0 0 0 6px rgba(var(--accent-rgb), .04)}}@keyframes reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.reveal{animation:.72s cubic-bezier(.16,1,.3,1) both reveal;animation-delay:calc(var(--i,0) * 70ms)}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;animation:none;transform:none}}:root.is-handoff .site-header .brand{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .26s,transform .26s,visibility 0s linear .26s;transform:translateY(-6px)}:root.is-handoff.is-scrolled .site-header .brand{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .26s,transform .26s,visibility;transform:none}.divider{background:var(--line);width:100%;height:1px}.eyebrow{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);font-size:11px}.eyebrow .num{color:var(--ink-4);margin-right:8px}h1,h2,h3,h4{font-family:var(--font-sans);letter-spacing:-.022em;color:var(--text);margin:0;font-weight:500;line-height:1.04}h1{letter-spacing:-.034em;word-break:normal;overflow-wrap:break-word;font-size:clamp(34px,6.2vw,72px);font-weight:540;font-stretch:95%}h2{letter-spacing:-.026em;overflow-wrap:break-word;font-size:clamp(26px,3.4vw,40px);font-weight:540}h3{font-size:18px;font-weight:500}p{color:var(--ink-2);margin:0}.cta{border:1px solid var(--line-strong);background:var(--panel-2);color:var(--ink);letter-spacing:-.005em;border-radius:8px;align-items:center;gap:10px;padding:11px 16px;font-size:13.5px;font-weight:500;transition:transform .2s cubic-bezier(.16,1,.3,1),border-color .2s,background .2s;display:inline-flex}.cta:hover{border-color:var(--line-warm);background:var(--panel-2)}.cta:active{transform:translateY(1px)}.cta--primary{background:var(--accent);color:var(--on-accent);border-color:#0000;box-shadow:inset 0 1px #fff6,inset 0 -1px #0003}.cta--primary:hover{background:var(--accent-hover)}.cta .arrow{transition:transform .2s cubic-bezier(.16,1,.3,1)}.cta:hover .arrow{transform:translate(2px)}.theme-toggle{border:1px solid var(--line-strong);background:var(--panel-2);width:32px;height:32px;color:var(--ink-2);border-radius:7px;flex-shrink:0;place-items:center;transition:border-color .16s,color .16s,background .16s;display:grid}.theme-toggle:hover{color:var(--ink);border-color:var(--line-warm)}.theme-toggle .icon{width:16px;height:16px}.theme-toggle .icon-moon,:root[data-theme=light] .theme-toggle .icon-sun{display:none}:root[data-theme=light] .theme-toggle .icon-moon{display:block}@media (width<=920px){:root{--gutter:18px}}:root,:root[data-theme=light]{--home-paper:#f5f7f3;--home-paper-soft:#edf1ec;--home-ink:#101512;--home-muted:#58615b;--home-quiet:#737d75;--home-line:#cfd5cf;--home-line-soft:#1015120f;--home-line-strong:#929b94;--home-accent:#087b69;--home-accent-ink:#05594d;--home-accent-on:#f5f7f3;--home-terminal-accent:#62d6bf;--home-code:#29312c;--home-code-type:#2f6458;--home-code-string:#705a24;--home-code-number:#6b526c;--bg:var(--home-paper);--bg-soft:var(--home-paper-soft);--panel:var(--home-paper);--panel-2:var(--home-paper-soft);--inset:var(--home-paper-soft);--line:var(--home-line);--line-soft:#e1e6e0;--line-strong:var(--home-line-strong);--line-warm:#6f7a72;--text:var(--home-ink);--muted:var(--home-muted);--quiet:var(--home-quiet);--ink-4:#89928b;--accent:var(--home-accent);--accent-rgb:8, 123, 105;--accent-soft:#087b691a;--accent-dim:#087b6952;--accent-hover:#056555;--on-accent:var(--home-accent-on);--topbar-bg:#f5f7f3eb;--font-sans:"Helvetica Neue", Helvetica, Arial, ui-sans-serif, sans-serif;--font-mono:"SFMono-Regular", "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", monospace;--shell-max:1380px;--gutter:24px;--radius:4px;--radius-sm:3px}:root[data-theme=dark]{--home-paper:#101512;--home-paper-soft:#151c17;--home-ink:#e8eee9;--home-muted:#a0aca3;--home-quiet:#78847b;--home-line:#2a342d;--home-line-soft:#e8eee90d;--home-line-strong:#536158;--home-accent:#62d6bf;--home-accent-ink:#8be1cf;--home-accent-on:#101512;--home-terminal-accent:#62d6bf;--home-code:#d5ddd7;--home-code-type:#91cdbc;--home-code-string:#d3be84;--home-code-number:#c4abc6;--line-soft:#202923;--ink-4:#6f7c73;--accent-rgb:98, 214, 191;--accent-soft:#62d6bf1a;--accent-dim:#62d6bf4d;--accent-hover:#8be1cf;--topbar-bg:#101512eb}body.marketing-subpage{background:var(--home-paper);min-width:320px;color:var(--home-ink);font-family:var(--font-sans);font-feature-settings:normal}body.marketing-subpage .ambient,body.marketing-subpage .grain{display:none}body.marketing-subpage .shell{width:min(100%, calc(var(--shell-max) + (var(--gutter) * 2)))}body.marketing-subpage :focus-visible{outline:3px solid var(--home-accent);outline-offset:4px}body.marketing-subpage ::selection{background:var(--home-accent);color:var(--home-accent-on)}.skip-link{z-index:100;background:var(--home-ink);color:var(--home-paper);padding:11px 15px;font-size:13px;position:fixed;top:-90px;left:16px}.skip-link:focus{top:14px}.mark[data-astro-cid-4pt2nqzy]{width:var(--mark-size);height:var(--mark-size);border-radius:var(--mark-radius);object-fit:cover}.site-header[data-astro-cid-fzpbxy5g]{--header-h:68px;z-index:40;border-bottom:1px solid var(--line-strong);background:var(--topbar-bg);-webkit-backdrop-filter:blur(12px)saturate(120%);position:sticky;top:0}.header-row[data-astro-cid-fzpbxy5g]{min-height:var(--header-h);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:28px;display:grid}.brand[data-astro-cid-fzpbxy5g]{color:var(--ink);font-size:24px;font-weight:650;font-family:var(--font-mono);letter-spacing:-.025em;grid-column:1;align-items:center;gap:10px;display:inline-flex}.site-nav[data-astro-cid-fzpbxy5g]{min-width:0;color:var(--ink-2);font-family:var(--font-mono);grid-column:2;justify-content:center;align-items:center;gap:clamp(14px,1.8vw,26px);font-size:11.5px;display:flex}.nav-group[data-astro-cid-fzpbxy5g]{display:contents}.site-nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{white-space:nowrap;transition:color .14s}.site-nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]:hover{color:var(--ink)}.nav-divider[data-astro-cid-fzpbxy5g]{color:var(--ink-4)}.nav-divider[data-astro-cid-fzpbxy5g]:before{content:"—"}.nav-divider--meta[data-astro-cid-fzpbxy5g],.nav-github[data-astro-cid-fzpbxy5g]{display:none}.header-actions[data-astro-cid-fzpbxy5g]{grid-column:3;align-items:center;gap:7px;display:flex}.github-link[data-astro-cid-fzpbxy5g],.nav-toggle[data-astro-cid-fzpbxy5g],.theme-toggle{border:1px solid var(--line-strong);width:36px;height:36px;color:var(--ink-2);background:0 0;border-radius:3px;place-items:center;transition:border-color .14s,color .14s,background .14s;display:grid}.github-link[data-astro-cid-fzpbxy5g]:hover,.nav-toggle[data-astro-cid-fzpbxy5g]:hover,.theme-toggle:hover{border-color:var(--accent);color:var(--ink)}.nav-toggle[data-astro-cid-fzpbxy5g]{grid-column:4;display:none}.nav-toggle[data-astro-cid-fzpbxy5g] .icon[data-astro-cid-fzpbxy5g]{width:17px;height:17px}.nav-toggle[data-astro-cid-fzpbxy5g] .icon-close[data-astro-cid-fzpbxy5g],.nav-toggle[data-astro-cid-fzpbxy5g][aria-expanded=true] .icon-menu[data-astro-cid-fzpbxy5g]{display:none}.nav-toggle[data-astro-cid-fzpbxy5g][aria-expanded=true] .icon-close[data-astro-cid-fzpbxy5g]{display:block}@media (width<=820px){.site-header[data-astro-cid-fzpbxy5g]{--header-h:62px}.header-row[data-astro-cid-fzpbxy5g]{grid-template-columns:auto minmax(0,1fr) auto auto;gap:12px}.brand[data-astro-cid-fzpbxy5g],.header-actions[data-astro-cid-fzpbxy5g],.nav-toggle[data-astro-cid-fzpbxy5g]{grid-row:1}.header-actions[data-astro-cid-fzpbxy5g]{grid-column:3}:root[data-nav-enhanced=true] .nav-toggle[data-astro-cid-fzpbxy5g]{display:grid}:root[data-nav-enhanced=true] .github-link[data-astro-cid-fzpbxy5g]{display:none}.site-nav[data-astro-cid-fzpbxy5g]{grid-area:2/1/auto/-1;grid-template-columns:minmax(0,1fr);gap:0;padding-bottom:10px;font-size:14px;display:grid}.nav-group[data-astro-cid-fzpbxy5g]{display:grid}.site-nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{align-items:center;min-height:44px;padding:4px 0;display:flex}.nav-divider[data-astro-cid-fzpbxy5g]{background:var(--line);height:1px;margin:7px 0}.nav-divider[data-astro-cid-fzpbxy5g]:before{content:none}.nav-divider--meta[data-astro-cid-fzpbxy5g],.nav-github[data-astro-cid-fzpbxy5g]{color:var(--ink-3);align-items:center;gap:9px;display:flex}.nav-divider--meta[data-astro-cid-fzpbxy5g]{display:block}:root[data-nav-enhanced=true] .site-nav[data-astro-cid-fzpbxy5g]{max-height:calc(100vh - var(--header-h) - 12px);max-height:calc(100dvh - var(--header-h) - 12px);padding:6px var(--gutter) 16px;overscroll-behavior:contain;border-bottom:1px solid var(--line-strong);background:var(--bg);opacity:0;visibility:hidden;pointer-events:none;grid-area:auto;transition:opacity .18s,transform .18s,visibility 0s linear .18s;position:absolute;top:calc(100% + 1px);left:0;right:0;overflow-y:auto;transform:translateY(-8px);box-shadow:0 18px 36px #00000024}:root[data-nav-enhanced=true] .site-header[data-astro-cid-fzpbxy5g][data-nav-open=true] .site-nav[data-astro-cid-fzpbxy5g]{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .18s,transform .18s,visibility;transform:none}}@media (width<=380px){.brand[data-astro-cid-fzpbxy5g]{font-size:20px}}@media (prefers-reduced-motion:reduce){.site-nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g],.github-link[data-astro-cid-fzpbxy5g],.nav-toggle[data-astro-cid-fzpbxy5g],.theme-toggle,:root[data-nav-enhanced=true] .site-nav[data-astro-cid-fzpbxy5g],:root[data-nav-enhanced=true] .site-header[data-astro-cid-fzpbxy5g][data-nav-open=true] .site-nav[data-astro-cid-fzpbxy5g]{transition:none}}.site-footer[data-astro-cid-nns7i3if]{border-top:1px solid var(--line-strong);background:var(--bg);padding:72px 0 28px}.footer-main[data-astro-cid-nns7i3if]{grid-template-columns:minmax(220px,.72fr) minmax(0,1.28fr);gap:clamp(50px,9vw,130px);display:grid}.footer-brand[data-astro-cid-nns7i3if]{align-content:start;gap:16px;display:grid}.footer-brand[data-astro-cid-nns7i3if]>a[data-astro-cid-nns7i3if]{color:var(--ink);letter-spacing:-.025em;justify-self:start;align-items:center;gap:11px;font-weight:650;display:inline-flex}.footer-brand[data-astro-cid-nns7i3if] p[data-astro-cid-nns7i3if]{max-width:30ch;color:var(--ink-3);font-size:13px;line-height:1.55}.footer-links[data-astro-cid-nns7i3if]{grid-template-columns:repeat(3,minmax(0,1fr));gap:30px;display:grid}.footer-links[data-astro-cid-nns7i3if]>div[data-astro-cid-nns7i3if]{flex-direction:column;gap:7px;display:flex}.footer-links[data-astro-cid-nns7i3if] h2[data-astro-cid-nns7i3if]{color:var(--ink-4);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;margin:0 0 6px;font-size:10px;font-weight:600}.footer-links[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{color:var(--ink-2);font-size:12.5px;line-height:1.45;transition:color .14s}.footer-links[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{color:var(--ink)}.footer-bottom[data-astro-cid-nns7i3if]{border-top:1px solid var(--line);color:var(--ink-4);font-family:var(--font-mono);justify-content:space-between;align-items:center;gap:20px;margin-top:54px;padding-top:18px;font-size:10.5px;display:flex}.footer-bottom[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{color:var(--ink-2)}@media (width<=760px){.footer-main[data-astro-cid-nns7i3if]{grid-template-columns:1fr}}@media (width<=520px){.footer-links[data-astro-cid-nns7i3if]{grid-template-columns:1fr}.footer-bottom[data-astro-cid-nns7i3if]{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){.footer-links[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{transition:none}}
