@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.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:Inter Fallback;src:local(Arial),local(ArialMT),local(Liberation Sans);size-adjust:107.06%;ascent-override:90.49%;descent-override:22.56%;line-gap-override:0%}:root{--bg:#f3f3ee;--fg:#121715;--dim:#4d5752;--line:#12171524;--teal:#3fd0c8;--ink:#051211;--mark-bg:var(--teal);--accent:#0d716b;--gx:clamp(16px, 7vw, 96px);--code-bg:#1217150d;--surface:#fafaf6;--surface-2:#ecece6;--pre-bg:#e9e9e3;--radius:12px;--ok:#166534;--warn:#92400e;--on-accent:#051211;--shadow:0 1px 2px #1217150f, 0 12px 28px -16px #12171547;--ease:cubic-bezier(.2, .8, .2, 1);--sans:"Inter Variable", "Inter Fallback", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, "Cascadia Mono", "JetBrains Mono", Consolas, "Liberation Mono", monospace;--measure:36em}@media (prefers-color-scheme:dark){:root{--bg:#0f1413;--fg:#e8ebe6;--dim:#a1aaa3;--line:#e8ebe624;--accent:#3fd0c8;--mark-bg:var(--ink);--code-bg:#e8ebe60f;--surface:#151b19;--surface-2:#1d2523;--pre-bg:#171d1b;--ok:#4ade80;--warn:#fbbf24;--shadow:0 1px 2px #0006, 0 12px 28px -16px #000000b3}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;height:100%}body{min-height:100svh;padding:clamp(28px, 7vh, 96px) max(var(--gx), env(safe-area-inset-right)) clamp(24px, 5vh, 64px) max(var(--gx), env(safe-area-inset-left));background:var(--bg);color:var(--fg);font:400 clamp(16px, .3vw + 15px, 18px) / 1.6 var(--sans);font-optical-sizing:auto;font-kerning:normal;flex-direction:column;margin:0;display:flex}code,kbd,samp,pre{font-family:var(--mono);font-weight:400}body:before{content:"";z-index:-1;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27160%27 height=%27160%27%3E%3Cfilter id=%27n%27%3E%3CfeTurbulence type=%27fractalNoise%27 baseFrequency=%27.9%27 numOctaves=%272%27 stitchTiles=%27stitch%27/%3E%3CfeColorMatrix values=%270 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 .06 0%27/%3E%3C/filter%3E%3Crect width=%27100%25%27 height=%27100%25%27 filter=%27url(%23n)%27/%3E%3C/svg%3E");position:fixed;inset:0}main{flex-direction:column;flex:1;width:100%;max-width:68em;display:flex}header{align-items:center;gap:.28em;margin-bottom:.2em;font-size:clamp(2.8em,11vw,5em);line-height:1;display:flex}header.compact{margin-bottom:1.6em;font-size:1.45em}header .home{text-decoration:none;display:flex}header .h,h1{letter-spacing:-.045em;font-weight:700}h1{margin:0;font-size:1em}.dot{color:var(--accent)}#mark{background:var(--mark-bg);border-radius:22%;flex:none;width:.78em;height:.78em;position:relative;overflow:hidden}.sub{color:var(--dim);margin:.5em 0 clamp(2em,6vh,3.2em);font-size:clamp(1.05em,1.2vw + .7em,1.25em);line-height:1.45}.sub b{color:var(--fg);font-weight:600}.rows{border-top:1px solid var(--line);overflow-clip-margin:8px;overflow-x:clip}.row{border-bottom:1px solid var(--line);grid-template-columns:5.5em minmax(0,1fr) auto;grid-template-areas:"k v y";align-items:baseline;gap:.3em 2em;padding:1.3em 0 1.35em;display:grid;position:relative}.row .v a:before{content:"";position:absolute;inset:0}.row:has(a:focus-visible){outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}.row a:focus-visible{box-shadow:none}.k,.y{font-family:var(--mono);color:var(--dim);white-space:nowrap;font-size:.76em}.k{text-transform:uppercase;letter-spacing:.1em;grid-area:k}.v{overflow-wrap:anywhere;grid-area:v;min-width:0}.v a{letter-spacing:-.012em;text-wrap:balance;font-size:1.12em;font-weight:600;line-height:1.35;text-decoration:none}.v small{max-width:40em;color:var(--dim);text-wrap:pretty;margin-top:.3em;font-size:.95em;line-height:1.5;display:block}.y{font-variant-numeric:tabular-nums;text-align:right;letter-spacing:.02em;grid-area:y}@media (hover:hover) and (pointer:fine){.row:after{content:"";background:var(--accent);transform-origin:0;height:1px;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.row .v a:after{content:"→" / "";color:var(--accent);opacity:0;margin-left:.3em;position:absolute;transform:translate(-.4em)}.row:hover .v a,.row:has(a:focus-visible) .v a{color:var(--accent);transition:color .15s 60ms}.row:hover .v a:after,.row:has(a:focus-visible) .v a:after{opacity:1;transition:opacity .2s 60ms, transform .3s 60ms var(--ease);transform:none}.row:hover:after{transition:transform .45s 60ms var(--ease);transform:scaleX(1)}.row:hover .k,.row:hover .y{color:var(--fg);transition:color .15s 60ms}}a{color:inherit;-webkit-text-decoration:underline 1px var(--line);text-decoration:underline 1px var(--line);text-underline-offset:.22em;-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto}a:hover,a:focus-visible{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);outline:none}a:focus-visible{box-shadow:0 0 0 3px var(--bg), 0 0 0 5px var(--accent);border-radius:2px}footer{font-family:var(--mono);flex-wrap:wrap;gap:.4em 1.8em;margin-top:auto;padding-top:clamp(3em,8vh,5em);font-size:.8em;display:flex}footer:before{content:"";background:linear-gradient(90deg, var(--line), transparent);flex-basis:100%;height:1px;margin-bottom:1.2em}footer a{color:var(--dim);padding-block:.3em;text-decoration:none}footer a:hover{color:var(--accent)}@media (width<=640px){.row{grid-template-columns:1fr auto;grid-template-areas:"k y""v v";gap:.45em 1em;padding:1.15em 0 1.2em}footer{gap:.2em 1.4em}}::selection{background:var(--teal);color:var(--ink)}.progress{display:none}@supports (animation-timeline:scroll()){.progress{z-index:50;pointer-events:none;transform-origin:0;background:linear-gradient(90deg, #0f7a73, var(--teal) 60%, #8fe3dc);height:3px;animation:linear both read;animation-timeline:scroll(root);display:block;position:fixed;inset:0 0 auto}@keyframes read{0%{transform:scaleX(0)}to{transform:scaleX(1)}}}.meta{color:var(--dim);font-family:var(--mono);letter-spacing:.02em;margin:0 0 1.6em;font-size:.82em}.prose{max-width:var(--measure);margin-bottom:3em;font-size:1.04em;line-height:1.7}.prose h1{letter-spacing:-.03em;margin:0 0 .4em;font-size:clamp(1.8em,4.4vw,2.6em);font-weight:700;line-height:1.12}.prose h2{letter-spacing:-.02em;margin:2.2em 0 .55em;font-size:1.45em;font-weight:650;line-height:1.25}.prose h3{letter-spacing:-.01em;margin:1.8em 0 .45em;font-size:1.15em;font-weight:600;line-height:1.35}.prose :is(h1,h2,h3,h4){text-wrap:balance}.prose :is(p,li,blockquote,figcaption){text-wrap:pretty}.prose p,.prose ul,.prose ol,.prose blockquote,.prose pre,.prose figure{margin:0 0 1.15em}.prose li{margin:.35em 0}.prose li::marker{color:var(--dim)}.prose strong,.prose b{font-weight:650}.prose blockquote{border-left:2px solid var(--accent);color:var(--dim);padding-left:1.1em}.prose :not(pre)>code{background:var(--code-bg);overflow-wrap:anywhere;border-radius:5px;padding:.12em .38em;font-size:.86em}.prose img{max-width:100%;height:auto}.prose hr{background:linear-gradient(90deg, var(--accent), transparent 70%);border:0;height:2px;margin:2.4em 0}.prose pre{border-radius:var(--radius);border:1px solid var(--line);background:var(--pre-bg);tab-size:2;font-variant-ligatures:none;padding:1em 1.1em;font-size:.84em;line-height:1.65;overflow-x:auto}.prose pre code{background:0 0;padding:0;font-size:1em}.prose pre:focus-visible{outline:2px solid var(--accent);outline-offset:2px}:where(.prose,.meta) a{color:var(--accent);-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent)}:where(.prose,.meta) a:hover{text-decoration-color:currentColor;text-decoration-thickness:2px}.code{border:1px solid var(--line);border-radius:var(--radius);background:var(--pre-bg);box-shadow:var(--shadow);margin:0 0 1.1em;overflow:hidden}.code-bar{border-bottom:1px solid var(--line);min-height:2.6em;color:var(--dim);font-family:var(--mono);justify-content:space-between;align-items:center;gap:.5em;padding:.1em .4em .1em 1em;font-size:.76em;display:flex}.code-lang{letter-spacing:.03em;align-items:center;gap:.6em;display:inline-flex}.code-lang:not(:empty):before{content:"";background:var(--accent);border-radius:50%;width:.55em;height:.55em}.code pre,.prose .code pre{background:0 0;border:0;border-radius:0;margin:0}code-actions{visibility:hidden;gap:.2em;display:flex}:root.js code-actions{visibility:visible}code-actions button,.tbtn{font:inherit;color:var(--dim);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;min-height:30px;padding:0 .75em;transition:color .15s,border-color .15s,background-color .15s}code-actions button:hover,.tbtn:hover{color:var(--fg);border-color:var(--line)}code-actions button:focus-visible,.tbtn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}code-actions button[aria-pressed=true],code-actions button[data-state=done]{color:var(--accent);border-color:var(--accent)}pre.wrap,pre.wrap code{white-space:pre-wrap;overflow-wrap:anywhere}@media (pointer:coarse){code-actions button,.tbtn{min-width:44px;min-height:44px}}.shiki span{color:var(--shiki-light)}@media (prefers-color-scheme:dark){.shiki span{color:var(--shiki-dark)}}[data-shader]{background:linear-gradient(100deg, #0f7a73, var(--teal) 55%, #8fe3dc);position:relative;overflow:hidden}@media (prefers-color-scheme:dark){[data-shader]{background:linear-gradient(100deg, #1c4a46, #0f7a73 50%, var(--teal))}}[data-shader] canvas{width:100%;height:100%;display:block}.fade-r{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 2.5em),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 2.5em),#0000)}.fade-l{-webkit-mask-image:linear-gradient(90deg,#0000,#000 2.5em);mask-image:linear-gradient(90deg,#0000,#000 2.5em)}.fade-l.fade-r{-webkit-mask-image:linear-gradient(90deg,#0000,#000 2.5em calc(100% - 2.5em),#0000);mask-image:linear-gradient(90deg,#0000,#000 2.5em calc(100% - 2.5em),#0000)}[data-shader=rule]{border-radius:99px;width:min(100%,14em);height:4px;margin:1.3em 0 2.2em}[data-shader=hero]{border-radius:var(--radius);height:clamp(88px,18vw,150px);margin:0 0 1.6em}@media (prefers-reduced-motion:no-preference){[data-shader=rule]{animation:draw .9s .1s var(--ease) both}@keyframes draw{0%{clip-path:inset(0 100% 0 0 round 99px)}to{clip-path:inset(0 round 99px)}}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important}}.prose table{border-collapse:collapse;font-variant-numeric:tabular-nums;max-width:100%;margin-bottom:1.1em;font-size:.92em;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);text-align:left;padding:.35em .7em}.prose th{font-weight:600}.err{color:var(--dim);border:1px dashed var(--line);border-radius:8px;padding:1em}
