@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-vietnamese-wght-normal.D0rl6rjA.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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-ext-wght-normal.D9tNdqV9.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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-wght-normal.BhU9QXUp.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}@layer base{:root{font-synthesis:none;--section-space:clamp(44px, 5.5vw, 72px);--page:#fafbfe;--page-alt:#f3f6fb;--ink:#192337;--body-ink:#54627a;--faint-ink:#5f6c82;--display-quiet-ink:#7a879c;--line:#dce3ee;--soft:#eef2f8;--brand:#5100ff;--accent:#5100ef;--accent-ink:#4400c9;--button-ink:#fff;--surface:#fff;--success-line:oklch(74.8% .15 164.295);--success-ink:oklch(44.8% .119 151.328);--success-soft:oklch(96.2% .044 166.961);--mono-font:"IBM Plex Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;--shadow-tint:222 47% 16%;--header-height:64px;color-scheme:light;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 24px);font-family:Space Grotesk Variable,Space Grotesk,sans-serif}:root[data-theme=dark]{color-scheme:dark;--page:#0d1421;--page-alt:#111a2a;--ink:#eef2f8;--body-ink:#acb8c9;--faint-ink:#8391a7;--display-quiet-ink:#8391a7;--line:#29354a;--soft:#172133;--accent:#a28aff;--accent-ink:#b9a6ff;--button-ink:#130831;--surface:oklch(20.8% .042 265.755);--success-line:oklch(50% .13 153);--success-ink:oklch(72% .14 162);--success-soft:oklch(30% .08 157/.55);--shadow-tint:222 60% 3%}@media (prefers-reduced-motion:reduce){:root{scroll-behavior:auto}}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2")}*{box-sizing:border-box}body{background:var(--page);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;overflow-x:clip}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}svg{stroke-width:1.8px;flex-shrink:0}h1,h2,h3,h4,h5,p,ul,figure{margin:0}ul{padding:0}h1,h2,h3{overflow-wrap:anywhere}code,pre{font-family:var(--mono-font)}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.wrap{width:min(1280px,100% - 64px);margin-inline:auto}.wrap-wide{width:min(1480px,100% - 48px);margin-inline:auto}.text-link{color:var(--accent-ink);text-underline-offset:3px;text-decoration:underline 1px}.text-link:hover{text-decoration-thickness:2px}.nobreak{white-space:nowrap}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.visually-hidden[data-visible]{clip-path:none;white-space:normal;width:auto;height:auto;position:static;overflow:visible}.skip-link{z-index:100;background:var(--page);border:2px solid var(--accent);padding:12px;position:fixed;top:-80px;left:16px}.skip-link:focus{top:12px}.section{padding-block:var(--section-space)}@media (width<=767px){.wrap{width:calc(100% - 32px)}.wrap-wide{width:calc(100% - 24px)}}}@layer state{[hidden]{display:none}.replica [data-resizing]{overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none;animation:none}}[data-motion=paused] .replica *,[data-motion=paused] .replica :before,[data-motion=paused] .replica :after,.scene[data-motion=paused] *,.scene[data-motion=paused] :before,.scene[data-motion=paused] :after{animation-play-state:paused}}@layer site{.brand{letter-spacing:-.04em;align-items:center;gap:10px;font-size:1.25rem;font-weight:650;display:inline-flex}.duck-mark{flex-shrink:0;width:30px;height:30px}.duck-tile{fill:var(--brand)}.duck-bob{fill:#fff}.duck-water{stroke:#fff;stroke-width:2.5px;opacity:0}.duck-visor{fill:none;stroke:var(--brand);stroke-width:6px;stroke-linecap:round}.duck-light{fill:none;stroke:#fff;stroke-width:2.4px;stroke-linecap:round}.duck-bob,.duck-water{transform-box:view-box;transform-origin:32px 50px}:root[data-motion=running] .duck-light{animation:5s ease-in-out 1.4s infinite duck-scan}:root[data-motion] .duck-mark[data-play=hop] .duck-bob{animation:1.51s .4s both duck-hop}:root[data-motion] .duck-mark[data-play=hop] .duck-water{animation:.95s .4s both duck-wave}:root[data-motion] .duck-mark[data-play=bob] .duck-bob{animation:.96s both duck-bob}:root[data-motion] .duck-mark[data-play=bob] .duck-water{animation:.95s both duck-wave}@keyframes duck-hop{0%{animation-timing-function:cubic-bezier(.3333,1,.6667,1);transform:none}13.25%{animation-timing-function:cubic-bezier(.3333,0,.6667,.3333);transform:translateY(-5px)rotate(-6deg)}21.67%{animation-timing-function:cubic-bezier(.3333,.6667,.6667,1);transform:none}25.89%{animation-timing-function:cubic-bezier(.3333,0,.6667,.3333);transform:translateY(-1.25px)rotate(-1.5deg)}30.1%{animation-timing-function:cubic-bezier(.3333,.6667,.6667,1);transform:none}32.21%{animation-timing-function:cubic-bezier(.3333,0,.6667,.3333);transform:translateY(-.3125px)rotate(-.375deg)}34.32%{animation-timing-function:cubic-bezier(.3333,.6667,.6667,1);transform:none}35.37%{animation-timing-function:cubic-bezier(.3333,0,.6667,.3333);transform:translateY(-.0781px)rotate(-.0938deg)}36.42%{animation-timing-function:cubic-bezier(.3333,1,.6667,1);transform:none}48.34%{animation-timing-function:cubic-bezier(.37,0,.63,1);transform:translateY(1.5px)rotate(-10deg)}65.56%{animation-timing-function:cubic-bezier(.37,0,.63,1);transform:translateY(-1px)rotate(7deg)}80.13%{animation-timing-function:cubic-bezier(.61,1,.88,1);transform:translateY(.5px)rotate(-3deg)}to{transform:none}}@keyframes duck-bob{0%{animation-timing-function:cubic-bezier(.3333,1,.6667,1);transform:none}18.75%{animation-timing-function:cubic-bezier(.37,0,.63,1);transform:translateY(1.5px)rotate(-10deg)}45.83%{animation-timing-function:cubic-bezier(.37,0,.63,1);transform:translateY(-1px)rotate(7deg)}68.75%{animation-timing-function:cubic-bezier(.61,1,.88,1);transform:translateY(.5px)rotate(-3deg)}to{transform:none}}@keyframes duck-wave{0%{opacity:0;animation-timing-function:cubic-bezier(.37,0,.63,1);transform:translate(-3px)}31.58%,36.84%{opacity:.6;animation-timing-function:cubic-bezier(.12,0,.39,0);transform:none}to{opacity:0;transform:translate(3px)}}@keyframes duck-scan{0%,40%,to{transform:none}12%{transform:translate(-8px)}24%{transform:translate(1px)}}.button{background:var(--accent);min-height:48px;color:var(--button-ink);box-shadow:0 1px 0 #ffffff2e inset, 0 8px 20px -10px color-mix(in srgb, var(--accent) 80%, transparent);white-space:nowrap;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:10px;padding:0 20px;font-size:.9375rem;font-weight:600;transition:background .16s,transform .16s,box-shadow .16s;display:inline-flex}.button:hover{background:color-mix(in srgb, var(--accent), var(--ink) 14%);transform:translateY(-1px)}.button:active{transform:translateY(1px)}.button.small{min-height:38px;padding:0 14px;font-size:.8125rem}.site-header{z-index:50;background:color-mix(in srgb, var(--page) 82%, transparent);backdrop-filter:saturate(1.4)blur(14px);border-bottom:1px solid #0000;transition:border-color .2s;position:sticky;top:0}.site-header[data-scrolled]{border-bottom-color:var(--line)}.header-row{min-height:var(--header-height);flex-wrap:wrap;align-items:center;gap:8px 28px;padding-block:13px;display:flex}.brand-row{align-items:center;gap:12px;display:flex}.release{border:1px solid var(--line);color:var(--body-ink);font-family:var(--mono-font);border-radius:999px;padding:3px 8px;font-size:.75rem;line-height:1.4}.release:hover{border-color:color-mix(in srgb, var(--body-ink) 45%, var(--line));color:var(--ink)}.site-nav{gap:4px;display:flex}.site-nav a{color:var(--body-ink);border-radius:8px;padding:8px 12px;font-size:.875rem;font-weight:550}.site-nav a:hover{background:var(--soft);color:var(--ink)}.header-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.icon-button,.github-link{border:1px solid var(--line);background:var(--page);min-width:38px;height:38px;color:var(--ink);border-radius:8px;place-items:center;padding:0;display:inline-grid}.github-link{justify-content:center;gap:8px;padding:0 12px;font-size:.8125rem;font-weight:600;display:inline-flex}.icon-button:hover,.github-link:hover{background:var(--soft);border-color:color-mix(in srgb, var(--body-ink) 50%, var(--line))}.sun,.play-icon{display:none}[data-theme=dark] .sun{display:block}[data-theme=dark] .moon{display:none}.motion-toggle[aria-pressed=true] .play-icon{display:block}.motion-toggle[aria-pressed=true] .pause-icon{display:none}@media (width<=1023px){.site-nav{display:none}}@media (width<=767px){.header-row{gap:12px}.github-link span{display:none}.github-link{width:38px;padding:0}}@media (width<=479px){.header-download,.release{display:none}}@media (width<=359px){.header-actions{gap:4px}.icon-button,.github-link{min-width:36px;height:36px}.github-link{width:36px}}}
