@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-wght-normal.DLoelf7F.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:Red Hat Mono Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/red-hat-mono-latin-ext-wght-normal.BQQ6IFDA.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:Red Hat Mono Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/red-hat-mono-latin-wght-normal.Dwfc5A3M.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-wght-normal.DLoelf7F.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:Red Hat Mono Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/red-hat-mono-latin-ext-wght-normal.BQQ6IFDA.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:Red Hat Mono Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/red-hat-mono-latin-wght-normal.Dwfc5A3M.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-fog:#eef1f4;--color-white:#fff;--color-harbor:#0e2238;--color-slate:#5b6b7c;--color-hairline:#d6dce3;--color-crate:#ef7d3e;--color-bg:var(--color-fog);--color-panel:var(--color-white);--color-ink:var(--color-harbor);--color-text:var(--color-harbor);--color-text-secondary:var(--color-slate);--color-border:var(--color-hairline);--color-accent:var(--color-crate);--color-button-bg:var(--color-harbor);--color-button-text:var(--color-fog);--color-link:var(--color-harbor);--font-display:"Bricolage Grotesque Variable", "Bricolage Grotesque", system-ui, sans-serif;--font-mono:"Red Hat Mono Variable", "Red Hat Mono", ui-monospace, monospace;--radius:.625rem;--radius-lg:1rem;--ease-house:cubic-bezier(.23, 1, .32, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--text-xs:clamp(.78rem, .75rem + .1vw, .85rem);--text-sm:clamp(.88rem, .85rem + .15vw, .95rem);--text-base:clamp(1rem, .97rem + .2vw, 1.0625rem);--text-lg:clamp(1.125rem, 1.05rem + .4vw, 1.3rem);--text-xl:clamp(1.4rem, 1.25rem + .8vw, 1.75rem);--text-2xl:clamp(1.85rem, 1.55rem + 1.4vw, 2.5rem);--text-3xl:clamp(2.4rem, 1.9rem + 2.4vw, 3.4rem);--text-4xl:clamp(2.9rem, 2.1rem + 3.8vw, 4.6rem);--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2.25rem;--space-xl:3.5rem;--space-2xl:5.5rem;--space-3xl:8rem;--reveal-distance:18px;--reveal-duration:.64s;--parallax-strength:1}@media (prefers-reduced-motion:reduce){:root{--reveal-distance:0px;--reveal-duration:1ms;--parallax-strength:0}}:root[data-theme=dark],:root.theme-dark{--color-bg:#0a1622;--color-panel:#101f30;--color-ink:#eef1f4;--color-text:#eef1f4;--color-text-secondary:#93a4b6;--color-border:#eef1f424;--color-accent:var(--color-crate);--color-button-bg:var(--color-fog);--color-button-text:var(--color-harbor);--color-link:var(--color-fog)}*{box-sizing:border-box}html{color-scheme:light}html[data-theme=dark]{color-scheme:dark}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-display);font-size:var(--text-base);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}p,li,dd,dt{overflow-wrap:break-word}[data-reveal]{opacity:0;transform:translateY(var(--reveal-distance));transition:opacity var(--reveal-duration) var(--ease-out), transform var(--reveal-duration) var(--ease-out);transition-delay:var(--reveal-delay,0s)}[data-reveal].is-visible{opacity:1;transform:none}[data-parallax]{will-change:transform}code,pre,kbd,.mono{font-family:var(--font-mono)}a{color:var(--color-link)}::selection{background:var(--color-crate);color:var(--color-harbor)}.skip-link{background:var(--color-harbor);color:var(--color-fog);z-index:100;padding:.5rem 1rem;position:absolute;top:0;left:-9999px}.skip-link:focus{top:1rem;left:1rem}.wrap{max-width:76rem;margin:0 auto;padding-inline:1.5rem}.site-nav{z-index:20;background:color-mix(in srgb, var(--color-bg) 82%, transparent);backdrop-filter:saturate(1.4)blur(14px);border-bottom:1px solid color-mix(in srgb, var(--color-hairline) 70%, transparent);position:sticky;top:0}:root[data-theme=dark] .site-nav{border-color:var(--color-border)}.site-nav .wrap{align-items:center;gap:2rem;height:4rem;display:flex}.brand{color:var(--color-crate);align-items:center;gap:.5rem;font-size:1.05rem;font-weight:700;text-decoration:none;display:flex}.brand span{color:var(--color-text)}.site-nav nav{flex:1;gap:1.5rem;display:flex}.site-nav nav a{color:var(--color-text-secondary);font-size:.95rem;text-decoration:none}.site-nav nav a:hover{color:var(--color-text);text-decoration:underline}.nav-actions{align-items:center;gap:.75rem;display:flex}.gh-link{color:var(--color-text-secondary);font-family:var(--font-mono);border-radius:var(--radius);transition:color .16s var(--ease-house), background .16s var(--ease-house);align-items:center;gap:.4rem;padding:.4rem .55rem;font-size:.85rem;text-decoration:none;display:inline-flex}.gh-link:hover{color:var(--color-text);background:var(--color-fog)}:root[data-theme=dark] .gh-link:hover{background:var(--color-panel)}#theme-toggle{border:1px solid var(--color-border);cursor:pointer;width:2.25rem;height:2.25rem;color:var(--color-text);background:0 0;border-radius:999px;place-items:center;display:grid}.theme-icon-dark,:root[data-theme=dark] .theme-icon-light{display:none}:root[data-theme=dark] .theme-icon-dark{display:block}.btn{border-radius:var(--radius);transition:transform .16s var(--ease-house), opacity .16s var(--ease-house);border:1px solid #0000;justify-content:center;align-items:center;padding:.6rem 1.15rem;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{opacity:.9}.btn-primary{background:var(--color-button-bg);color:var(--color-button-text)}.btn-secondary{color:var(--color-text);border-color:var(--color-border);background:0 0}.btn-secondary:hover{border-color:var(--color-ink);opacity:1}.btn:focus-visible,.site-nav a:focus-visible,#theme-toggle:focus-visible{outline:2px solid var(--color-crate);outline-offset:2px}.site-footer{background:var(--color-harbor);color:var(--color-fog);margin-top:2rem;padding-block:3.5rem 2rem;position:relative;overflow:hidden}.footer-grid{z-index:1;grid-template-columns:1.4fr repeat(3,1fr);gap:2rem;display:grid;position:relative}.footer-brand{flex-direction:column;gap:.5rem;display:flex}.footer-brand>span:nth-child(2){font-weight:700}.site-footer p{color:#93a4b6;margin:0;font-size:.9rem}.site-footer h3{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:#93a4b6;margin:0 0 .75rem;font-size:.75rem}.site-footer ul{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.site-footer a{color:var(--color-fog);font-size:.9rem;text-decoration:none}.site-footer a:hover{text-decoration:underline}.footer-mark{opacity:.12;color:var(--color-fog);position:absolute;bottom:-3rem;right:-2rem}@media (width<=900px){.site-nav nav{display:none}.footer-grid{grid-template-columns:1fr 1fr}}@media (width<=480px){.site-nav .wrap{gap:.75rem}.nav-actions{gap:.4rem}.gh-stars{display:none}.nav-actions .btn-primary{padding:.55rem .8rem;font-size:.88rem}}
