.icon[data-astro-cid-ccg5yoga]{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:1.125em;height:1.125em}.brand[data-astro-cid-6bctqxxv]{align-items:center;gap:.55rem;display:inline-flex}.wordmark[data-astro-cid-6bctqxxv]{width:auto;height:1.55rem;color:var(--ink);margin-inline-start:-.55rem}.product[data-astro-cid-6bctqxxv]{color:var(--accent);letter-spacing:-.02em;font-size:1.125rem;font-weight:620;translate:0 -1px}.motion-toggle[data-astro-cid-ws4wxc4c]{color:var(--ink-2);transition:color var(--fast) var(--ease-out), border-color var(--fast) var(--ease-out);place-items:center;display:grid}.corner[data-astro-cid-ws4wxc4c]{z-index:40;border:1px solid var(--rule);background:var(--ground-raised);border-radius:999px;width:2.75rem;height:2.75rem;position:fixed;inset-block-end:var(--space-4);inset-inline-end:var(--space-4);box-shadow:0 6px 18px -10px oklch(30% .03 250/.35)}.corner[data-astro-cid-ws4wxc4c]:hover{color:var(--ink);border-color:var(--rule-strong)}.menu[data-astro-cid-ws4wxc4c]{gap:var(--space-2);min-height:2.75rem;font-size:var(--text-sm);background:0 0;border:0;padding:0;font-weight:560;display:inline-flex}.menu[data-astro-cid-ws4wxc4c]:hover{color:var(--ink)}.motion-toggle[data-astro-cid-ws4wxc4c] .when-paused{display:none}:root[data-motion=paused] .motion-toggle[data-astro-cid-ws4wxc4c] .when-paused{display:block}:root[data-motion=paused] .motion-toggle[data-astro-cid-ws4wxc4c] .when-running{display:none}@media (width<=48rem){.corner[data-astro-cid-ws4wxc4c].menu-on-phones{display:none}}@media (prefers-reduced-motion:reduce){.motion-toggle[data-astro-cid-ws4wxc4c]{display:none}}.site-footer[data-astro-cid-nns7i3if]{padding-block:var(--space-8) var(--space-6);border-block-start:1px solid var(--rule);background:var(--ground-raised)}.grid[data-astro-cid-nns7i3if]{gap:var(--space-6);grid-template-columns:2fr repeat(3,1fr);display:grid}.about[data-astro-cid-nns7i3if] p[data-astro-cid-nns7i3if]{color:var(--ink-3);font-size:var(--text-sm);margin-block-start:var(--space-3)}nav[data-astro-cid-nns7i3if]{align-content:start;gap:var(--space-2);display:grid}h2[data-astro-cid-nns7i3if]{color:var(--ink-3);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;margin-block-end:var(--space-2);font-weight:560}nav[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{width:fit-content;color:var(--ink-2);font-size:var(--text-sm);text-decoration:none}nav[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{color:var(--ink);text-decoration:underline}.base[data-astro-cid-nns7i3if]{color:var(--ink-3);font-size:var(--text-xs);margin-block-start:var(--space-8)}@media (width<=48rem){.grid[data-astro-cid-nns7i3if]{grid-template-columns:1fr 1fr}.about[data-astro-cid-nns7i3if]{grid-column:1/-1}}.site-header[data-astro-cid-fzpbxy5g]{z-index:50;transition:background-color var(--base) var(--ease-out), box-shadow var(--base) var(--ease-out), backdrop-filter var(--base) var(--ease-out);position:sticky;inset-block-start:0}.site-header[data-astro-cid-fzpbxy5g][data-scrolled],.site-header[data-astro-cid-fzpbxy5g][data-open]{background:color-mix(in oklch, var(--ground-raised) 78%, transparent);backdrop-filter:blur(18px)saturate(1.6);box-shadow:0 1px 0 color-mix(in oklch, var(--rule) 80%, transparent)}.site-header[data-astro-cid-fzpbxy5g][data-dark]{--ink:var(--night-ink);--ink-2:var(--night-ink-2);--ink-3:var(--night-ink-2);--ground-raised:var(--night-raised);--ground-sunk:var(--night);--rule:var(--night-rule);color:var(--ink)}.site-header[data-astro-cid-fzpbxy5g][data-dark][data-scrolled]{background:color-mix(in oklch, var(--night) 72%, transparent)}:root[data-motion=running] .site-header[data-astro-cid-fzpbxy5g]{animation:drop .9s var(--ease-out) .12s both}@keyframes drop{0%{opacity:0;translate:0 -12px}}.bar[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--space-6);height:var(--header-h);display:flex}.home[data-astro-cid-fzpbxy5g]{color:inherit;text-decoration:none;display:flex}.links[data-astro-cid-fzpbxy5g]{gap:var(--space-1);display:flex}.links[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g],.login[data-astro-cid-fzpbxy5g]{border-radius:var(--radius-sm);height:2.5rem;color:var(--ink-2);font-size:var(--text-sm);transition:color var(--fast) var(--ease-out), background-color var(--fast) var(--ease-out);align-items:center;padding-inline:.75rem;font-weight:540;text-decoration:none;display:inline-flex}.links[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]:hover,.login[data-astro-cid-fzpbxy5g]:hover{color:var(--ink);background:color-mix(in oklch, var(--ground-raised) 70%, transparent)}.actions[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--space-2);margin-inline-start:auto;display:flex}.languages[data-astro-cid-fzpbxy5g]{background:color-mix(in oklch, var(--ground-sunk) 80%, transparent);border-radius:999px;padding:3px;display:inline-flex}.languages[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{color:var(--ink-3);font-size:var(--text-xs);transition:color var(--fast), background-color var(--fast);border-radius:999px;padding:.3rem .65rem;font-weight:620;text-decoration:none}.languages[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g][aria-current]{background:var(--ground-raised);color:var(--ink);box-shadow:0 1px 2px oklch(30% .02 250/.12)}.menu-button[data-astro-cid-fzpbxy5g]{border-radius:var(--radius-sm);background:0 0;border:0;place-items:center;width:2.75rem;height:2.75rem;margin-inline-end:-.5rem;display:none}.menu-button[data-astro-cid-fzpbxy5g] .shut{display:none}.menu-button[data-astro-cid-fzpbxy5g][aria-expanded=true] .shut{display:block}.menu-button[data-astro-cid-fzpbxy5g][aria-expanded=true] .open{display:none}.sheet[data-astro-cid-fzpbxy5g]{border-block-start:1px solid var(--rule);overflow:hidden}.sheet[data-astro-cid-fzpbxy5g] nav[data-astro-cid-fzpbxy5g]{padding-block:var(--space-4) var(--space-6);display:grid}.sheet[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]:not(.languages a){padding-block:var(--space-3);border-block-end:1px solid var(--rule);font-size:var(--text-xl);letter-spacing:-.02em;font-weight:600;text-decoration:none}.sheet-foot[data-astro-cid-fzpbxy5g]{justify-content:space-between;align-items:center;padding-block-start:var(--space-5);display:flex}:root[data-motion=running] .site-header[data-astro-cid-fzpbxy5g][data-open] .sheet[data-astro-cid-fzpbxy5g]>nav[data-astro-cid-fzpbxy5g]>[data-astro-cid-fzpbxy5g]{animation:sheet-in .52s var(--ease-out) both;animation-delay:calc(var(--i,0) * 50ms)}@keyframes sheet-in{0%{opacity:0;translate:0 -10px}}@media (width<=60rem){.links[data-astro-cid-fzpbxy5g],.actions[data-astro-cid-fzpbxy5g]>.languages[data-astro-cid-fzpbxy5g],.login[data-astro-cid-fzpbxy5g]{display:none}.menu-button[data-astro-cid-fzpbxy5g]{display:grid}}@media (width<=26rem){.actions[data-astro-cid-fzpbxy5g] .button[data-astro-cid-fzpbxy5g]{display:none}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--ground:oklch(97.7% .006 250);--ground-raised:oklch(100% 0 0);--ground-sunk:oklch(95.1% .01 250);--ink:oklch(24% .008 260);--ink-2:oklch(42% .018 260);--ink-3:oklch(53% .016 260);--rule:oklch(91% .01 250);--rule-strong:oklch(84% .012 250);--dot:oklch(82% .014 250);--accent:#0d99ff;--accent-hover:#0a86e0;--accent-ink:oklch(52% .16 250);--accent-wash:oklch(95.5% .03 240);--accent-glow:oklch(66.9841% .18275 249.224/.28);--peer:oklch(62% .22 350);--live:oklch(60% .14 155);--live-ink:oklch(45% .12 155);--sample-terra:oklch(56% .15 45);--sample-cream:oklch(97% .02 85);--sample-bean:oklch(32% .05 50);--night:oklch(20% .006 260);--night-raised:oklch(25.5% .008 260);--night-rule:oklch(34% .01 260);--night-ink:oklch(95% .004 260);--night-ink-2:oklch(76% .01 260);--font-sans:"Geist Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, "SFMono-Regular", Menlo, monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.1875rem;--text-xl:clamp(1.375rem, 1.1rem + .9vw, 1.75rem);--text-2xl:clamp(2rem, 1.4rem + 2.2vw, 3.25rem);--text-display:clamp(3rem, 1.5rem + 6vw, 6.5rem);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4.5rem;--space-9:7rem;--gutter:clamp(1rem, .4rem + 2.6vw, 2.5rem);--page:78rem;--radius:.875rem;--radius-sm:.5rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--fast:.14s;--base:.28s;--slow:.64s;--header-h:4rem}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + var(--space-5))}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background-color:var(--ground);background-image:radial-gradient(var(--dot) 1px, transparent 1.2px);min-height:100svh;color:var(--ink);font-family:var(--font-sans);font-size:var(--text-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-size:22px 22px;margin:0;line-height:1.55;position:relative;overflow-x:clip}body:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(to bottom, color-mix(in oklch, var(--ground) 20%, transparent) 0%, color-mix(in oklch, var(--ground) 50%, transparent) 50%, var(--ground) 100%), url(/sky/sky-2400.jpg) center 30% / cover no-repeat;height:max(52vw,46rem);position:absolute;inset-block-start:0;inset-inline:0}@media (width<=48rem){body:before{background-image:linear-gradient(to bottom, color-mix(in oklch, var(--ground) 20%, transparent) 0%, color-mix(in oklch, var(--ground) 50%, transparent) 50%, var(--ground) 100%), url(/sky/sky-1200.jpg);height:40rem}}::selection{background:var(--accent);color:oklch(100% 0 0)}h1,h2,h3,p,ul,ol,figure,dl,dd{margin:0}h1,h2,h3{letter-spacing:-.032em;text-wrap:balance;font-weight:640;line-height:1.02}p{text-wrap:pretty}img,svg{max-width:100%;display:block}button,input{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-underline-offset:.22em;text-decoration-thickness:1px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.wrap{width:100%;max-width:calc(var(--page) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);background:var(--ink);color:var(--ground);transition:transform var(--base) var(--ease-out);font-weight:560;position:fixed;inset-block-start:var(--space-3);inset-inline-start:var(--space-3);transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.button{--h:3.25rem;align-items:center;gap:var(--space-2);height:var(--h);border-radius:var(--radius-sm);font-size:var(--text-lg);letter-spacing:-.01em;white-space:nowrap;transition:background-color var(--fast) var(--ease-out), box-shadow var(--base) var(--ease-out), translate var(--fast) var(--ease-out);border:0;padding-inline:1.375rem 1.125rem;font-weight:560;text-decoration:none;display:inline-flex}.button .icon{transition:translate var(--base) var(--ease-spring)}.button:hover .icon{translate:3px}.button:active{translate:0 1px}.button.primary{background:var(--accent);color:oklch(100% 0 0);box-shadow:0 1px 0 oklch(100% 0 0/.25) inset, 0 10px 24px -12px var(--accent)}.button.primary:hover{background:var(--accent-hover);box-shadow:0 1px 0 oklch(100% 0 0/.25) inset, 0 16px 32px -14px var(--accent)}.button.quiet{padding-inline:var(--space-2);color:var(--ink);background:0 0}.button.small{--h:2.5rem;font-size:var(--text-sm);padding-inline:1rem .75rem}.eyebrow{align-items:center;gap:var(--space-2);color:var(--accent-ink);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;font-weight:560;display:inline-flex}.selectable{display:inline-block;position:relative}.selection{pointer-events:none;opacity:0;position:absolute;inset:-.18em -.3em}.selection rect{fill:none;stroke:var(--accent);stroke-width:1.5px;vector-effect:non-scaling-stroke}.selection svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.selection i{border:1.5px solid var(--accent);background:var(--ground-raised);border-radius:2px;width:9px;height:9px;margin:-4.5px;position:absolute}.selection i:first-of-type{inset:0 auto auto 0}.selection i:nth-of-type(2){inset:0 0 auto auto}.selection i:nth-of-type(3){inset:auto 0 0 auto}.selection i:nth-of-type(4){inset:auto auto 0 0}.selection b{background:var(--accent);color:oklch(100% 0 0);font-family:var(--font-mono);letter-spacing:0;white-space:nowrap;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:500;line-height:1.4;position:absolute;inset-block-start:calc(100% + 7px);inset-inline-start:50%;translate:-50%}:root[data-motion=paused] *,:root[data-motion=paused] :before,:root[data-motion=paused] :after,[data-loop]:not([data-on-screen]) *,[data-loop]:not([data-on-screen]) :before,[data-loop]:not([data-on-screen]) :after{animation-play-state:paused!important}@media (prefers-reduced-motion:reduce){[data-loop] *,[data-loop] :before,[data-loop] :after{animation:none!important}*,:before,:after{transition-duration:0s!important}}[data-reveal]{transition:opacity .7s var(--ease-out), translate .9s var(--ease-out), filter .7s var(--ease-out);transition-delay:calc(var(--i,0) * 90ms)}[data-reveal=pending]{opacity:0;filter:blur(8px);translate:0 28px}
