@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}:root{--text-base:.9375rem;--text-small:.8125rem;--page-gutter:1.5rem;--ease-out:cubic-bezier(.23, 1, .32, 1);--color-canvas:oklch(99% .016 95.219);--color-ink:oklch(17% .002 17.321);--color-body:oklch(36.5% .004 67.689);--color-muted:oklch(53.8% .008 97.449);--color-divider:oklch(91.7% .015 98.298/.7);--color-surface:oklch(95.4% .015 98.288);--color-selection:oklch(48.2% .131 254.789);--color-selection-ink:oklch(99% .016 95.219);--color-accent:oklch(55.4% .086 186.744);--color-faint:oklch(77.2% .013 96.47);--color-placeholder:oklch(77.2% .013 96.47);--color-active:oklch(84.6% .014 102.053);--color-active-ink:oklch(17% .002 17.321);--color-highlight:oklch(91.4% .087 93.228);--color-demo-stage:oklch(91.7% .015 98.298)}*{box-sizing:border-box;scrollbar-color:var(--color-divider) transparent;scrollbar-width:thin}html,body{min-height:100%;overflow-x:clip}html{background:var(--color-canvas);color-scheme:light dark;scroll-behavior:smooth}@media (prefers-color-scheme:dark){:root{--color-canvas:oklch(17% .002 17.321);--color-ink:oklch(99% .016 95.219);--color-body:oklch(84.6% .014 102.053);--color-muted:oklch(61.7% .008 88.674);--color-divider:oklch(27.3% .002 67.727/.7);--color-surface:oklch(22.3% .002 67.699);--color-selection:oklch(59.9% .11 246.996);--color-selection-ink:oklch(17% .002 17.321);--color-accent:oklch(67% .1 186.578);--color-faint:oklch(45.3% .005 91.503);--color-placeholder:oklch(45.3% .005 91.503);--color-active:oklch(36.5% .004 67.689);--color-active-ink:oklch(99% .016 95.219);--color-highlight:oklch(37% .074 88.38);--color-demo-stage:oklch(27.3% .002 67.727)}}body{background:var(--color-canvas);min-width:320px;color:var(--color-body);font-family:Geist Variable,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:var(--text-base);font-synthesis:none;text-transform:lowercase;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;line-height:1.7}::selection{background:var(--color-selection);color:var(--color-selection-ink)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}:where(a){color:inherit;text-underline-position:from-font;text-decoration:none}:where(a):focus-visible{outline:2px solid var(--color-muted);outline-offset:4px}:where(h1,h2,h3,p,figure,ol){margin:0}h1,h2{color:var(--color-ink)}p{text-wrap:pretty}.shell{width:min(calc(100% - var(--page-gutter) - var(--page-gutter)), 40rem);margin-inline:auto}.landing-shell{width:min(calc(100% - var(--page-gutter) - var(--page-gutter)), 76rem)}.skip-link{z-index:10;background:var(--color-ink);color:var(--color-canvas);font-size:var(--text-small);padding:.625rem .875rem;transition:transform .15s ease-out;position:fixed;inset-block-start:1rem;inset-inline-start:1rem;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}.site-header,.site-footer{color:var(--color-muted);font-size:var(--text-small);justify-content:space-between;gap:1.5rem;line-height:1.5;display:flex}.site-header{z-index:9;isolation:isolate;background:var(--color-canvas);transition:transform .25s var(--ease-out);align-items:center;padding-block:1.5rem;position:sticky;inset-block-start:0;transform:translateY(0)}.site-header:before{z-index:-1;background:var(--color-canvas);content:"";pointer-events:none;position:absolute;inset-block:0;inset-inline:calc(50% - 50vw)}.site-header[data-scroll-hidden]{transform:translateY(-100%)}.site-header:focus-within{transform:translateY(0)}.header-meta{align-items:center;gap:.75rem;display:flex}.header-nav{align-items:center;gap:1.25rem;display:flex}.header-nav a{align-items:center;min-height:2.5rem;display:inline-flex}.header-separator{border-inline-start:1px solid var(--color-divider);height:1rem}.github-link{justify-content:center;align-items:center;width:2.5rem;height:2.5rem;display:inline-flex}.github-link svg{fill:currentColor;width:1rem;height:1rem}.wordmark,.site-footer span{color:var(--color-ink);letter-spacing:-.025em;font-weight:600}.site-header a,.site-footer a{transition:color .15s}.hero{padding-block:clamp(6rem,16vh,10rem) 2rem}.hero h1{letter-spacing:-.04em;text-wrap:balance;max-width:18ch;font-size:3.25rem;font-weight:500;line-height:1.08}.hero-eyebrow{color:var(--color-accent);text-decoration:underline;text-decoration-color:var(--color-divider);text-underline-offset:.16em;margin-block-end:1rem;display:inline-block}.hero-download{margin-block-start:1.5rem}.open-source{border-block:1px solid var(--color-divider);justify-content:space-between;align-items:center;gap:2rem;padding-block:1.5rem;display:flex}.open-source-copy h2{color:var(--color-ink);font-size:var(--text-base);font-weight:600;line-height:1.5}.open-source-copy p{color:var(--color-muted);font-size:var(--text-small);margin-block-start:.375rem;line-height:1.5}.open-source-actions{flex-wrap:wrap;flex-shrink:0;gap:.75rem;display:flex}.open-source-action{border:1px solid var(--color-divider);min-height:2.75rem;color:var(--color-ink);font:inherit;font-size:var(--text-small);transition:border-color .15s var(--ease-out), color .15s ease, background-color .15s var(--ease-out), transform .12s var(--ease-out);background:0 0;border-radius:.5rem;justify-content:center;align-items:center;padding:.625rem .875rem;line-height:1.5;text-decoration:none;display:inline-flex}.open-source-action:active{transform:scale(.96)}.open-source-action--primary{border-color:var(--color-ink);background:var(--color-ink);color:var(--color-canvas)}@media (hover:hover) and (pointer:fine){.site-header a:hover,.site-footer a:hover{color:var(--color-accent)}.hero-eyebrow:hover{color:var(--color-ink)}.open-source-action:hover{border-color:var(--color-accent);color:var(--color-accent)}.open-source-action--primary:hover{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-canvas)}}.case-study{padding-bottom:3rem}.table-of-contents{z-index:1;width:14rem;color:var(--color-muted);font-size:var(--text-small);transition:opacity .16s ease, transform .2s var(--ease-out), visibility 0s;line-height:1.5;position:fixed;inset-block-start:clamp(12rem,26vh,17rem);inset-inline-start:max(4rem,50% - 50rem)}.table-of-contents ol{gap:.375rem;padding:0;list-style:none;display:grid}.table-of-contents a{align-items:center;gap:.75rem;transition:color .15s;display:inline-flex}.table-of-contents a:before{content:"";opacity:.6;transform-origin:100%;width:2rem;height:2px;transition:opacity .15s ease, transform .18s var(--ease-out);background:currentColor;flex:none;transform:scaleX(.375)}.table-of-contents a:hover{color:var(--color-ink)}.table-of-contents a:hover:before{opacity:.8;transform:scaleX(.625)}.table-of-contents a.is-active,.table-of-contents a.is-active:hover{color:var(--color-accent)}.table-of-contents a.is-active:before,.table-of-contents a.is-active:hover:before{opacity:1;transform:scaleX(1)}.story-section h2,.product-section h2{scroll-margin-block-start:2rem}.story-section,.product-section{padding-block:1.75rem}.case-study.is-reveal-ready :where(.story-section,.product-section){opacity:0;filter:blur(2px);transition:opacity .5s ease, filter .5s ease, transform .5s var(--ease-out);will-change:opacity, filter, transform;transform:translateY(.75rem)}.case-study.is-reveal-ready :where(.story-section,.product-section).is-revealed{opacity:1;filter:blur();will-change:auto;transform:translateY(0)}.story-section h2,.product-section h2{font-size:var(--text-base);letter-spacing:-.015em;margin-bottom:.625rem;font-weight:600;line-height:1.6}.story-section p+p{margin-top:1rem}.site-footer{border-block-start:1px solid var(--color-divider);padding-block:1.5rem 2rem;display:block}.footer-brand{gap:.375rem;display:grid}.footer-year{color:var(--color-muted);font-size:var(--text-small);letter-spacing:normal;font-weight:400}.footer-heading,.footer-details,.footer-meta,.footer-links,.footer-nav{align-items:center;display:flex}.footer-heading{justify-content:space-between;align-items:baseline}.footer-details{justify-content:space-between;gap:1.5rem}.footer-brand p{max-width:34ch;color:var(--color-muted);font-size:var(--text-small);line-height:1.5}.footer-meta,.footer-links,.footer-nav{gap:1.25rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.case-study.is-reveal-ready :where(.story-section,.product-section){opacity:1;filter:none;transform:none}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=74rem){.table-of-contents{display:none}}@media (width<=40rem){.hero h1{font-size:2.5rem}.header-nav a{min-height:2.75rem}.github-link{width:2.75rem;height:2.75rem}.hero{padding-block:5rem 1.5rem}.open-source{flex-direction:column;align-items:flex-start;gap:1.25rem}.open-source-actions{width:100%}.footer-details{flex-direction:column;align-items:flex-start;gap:1.5rem}.footer-links{flex-wrap:wrap;row-gap:.75rem}.footer-nav{gap:1rem}.story-section,.product-section{padding-block:1.5rem}}
