@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}.site-footer[data-astro-cid-nns7i3if]{border-top:1px solid var(--border);padding-block:2rem max(2rem, env(safe-area-inset-bottom))}.footer-inner[data-astro-cid-nns7i3if],.footer-links[data-astro-cid-nns7i3if]{align-items:center;display:flex}.footer-inner[data-astro-cid-nns7i3if]{justify-content:space-between;gap:1.5rem}.footer-copy[data-astro-cid-nns7i3if]{color:var(--text-faint);margin:0;font-size:.78rem}.footer-links[data-astro-cid-nns7i3if]{flex-wrap:wrap;justify-content:flex-end;gap:1rem}.footer-links[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{color:var(--text-soft);transition:color var(--motion-fast) ease;font-size:.78rem;text-decoration:none}.footer-links[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{color:var(--accent)}@media (width<=40rem){.footer-inner[data-astro-cid-nns7i3if]{flex-direction:column;align-items:flex-start}.footer-links[data-astro-cid-nns7i3if]{justify-content:flex-start}}.theme-toggle[data-astro-cid-l6lhmie6]{min-width:2.75rem;min-height:2.75rem;color:var(--text-soft);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.track[data-astro-cid-l6lhmie6]{border:1px solid var(--border-strong);background:var(--surface);width:2.65rem;height:1.45rem;transition:border-color var(--motion-fast) ease, background-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease;border-radius:999px;position:relative}.thumb[data-astro-cid-l6lhmie6]{background:var(--bg-elevated);width:1.05rem;height:1.05rem;color:var(--text);transition:transform var(--motion-base) var(--ease-out), background-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease, color var(--motion-fast) ease;border-radius:50%;place-items:center;display:grid;position:absolute;top:.15rem;left:.15rem;box-shadow:0 .12rem .35rem #0f120e33}.sun[data-astro-cid-l6lhmie6],.moon[data-astro-cid-l6lhmie6]{grid-area:1/1}.moon[data-astro-cid-l6lhmie6],.theme-toggle[data-astro-cid-l6lhmie6][aria-checked=true] .sun[data-astro-cid-l6lhmie6]{display:none}.theme-toggle[data-astro-cid-l6lhmie6]:hover .track[data-astro-cid-l6lhmie6],.theme-toggle[data-astro-cid-l6lhmie6][aria-checked=true] .track[data-astro-cid-l6lhmie6]{border-color:var(--accent)}.theme-toggle[data-astro-cid-l6lhmie6][aria-checked=true] .track[data-astro-cid-l6lhmie6]{background:color-mix(in srgb, var(--accent) 30%, var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 24%, transparent)}.theme-toggle[data-astro-cid-l6lhmie6][aria-checked=true] .thumb[data-astro-cid-l6lhmie6]{background:var(--accent);box-shadow:0 0 0 .16rem color-mix(in srgb, var(--accent) 22%, transparent), 0 .16rem .45rem #00000047;color:var(--on-accent);transform:translate(1.2rem)}.theme-toggle[data-astro-cid-l6lhmie6][aria-checked=true] .moon[data-astro-cid-l6lhmie6]{display:block}.theme-toggle[data-astro-cid-l6lhmie6][aria-checked=true]:hover .thumb[data-astro-cid-l6lhmie6]{background:var(--accent-hover)}.site-header[data-astro-cid-fzpbxy5g]{z-index:50;height:var(--header-height);border-bottom:1px solid color-mix(in srgb, var(--border) 75%, transparent);background:color-mix(in srgb, var(--bg) 91%, transparent);backdrop-filter:blur(1rem);position:sticky;top:0}.header-inner[data-astro-cid-fzpbxy5g],.desktop-controls[data-astro-cid-fzpbxy5g],.desktop-nav[data-astro-cid-fzpbxy5g],.mobile-controls[data-astro-cid-fzpbxy5g],.mobile-menu-top[data-astro-cid-fzpbxy5g],.mobile-menu-utilities[data-astro-cid-fzpbxy5g]{align-items:center;display:flex}.header-inner[data-astro-cid-fzpbxy5g]{justify-content:space-between;gap:2rem;height:100%}.wordmark[data-astro-cid-fzpbxy5g]{letter-spacing:-.04em;transition:color var(--motion-fast) ease;flex:none;font-weight:720;text-decoration:none}.wordmark[data-astro-cid-fzpbxy5g]:hover{color:var(--accent)}.desktop-controls[data-astro-cid-fzpbxy5g]{gap:clamp(1.25rem,3vw,2.5rem);min-width:0}.desktop-nav[data-astro-cid-fzpbxy5g]{gap:clamp(1rem,2.5vw,2rem)}.desktop-nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{color:var(--text-soft);transition:color var(--motion-fast) ease;font-size:.91rem;font-weight:540;text-decoration:none;position:relative}.desktop-nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]:hover,.desktop-nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g][aria-current=page]{color:var(--text)}.desktop-nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g][aria-current=page]:after{background:var(--accent);content:"";height:2px;position:absolute;bottom:-.55rem;left:0;right:0}.icon-button[data-astro-cid-fzpbxy5g],.menu-button[data-astro-cid-fzpbxy5g]{border:1px solid var(--border);border-radius:var(--radius-sm);width:2.25rem;height:2.25rem;color:var(--text);cursor:pointer;transition:border-color var(--motion-fast) ease, background-color var(--motion-fast) ease, color var(--motion-fast) ease;background:0 0;place-items:center;display:inline-grid}.icon-button[data-astro-cid-fzpbxy5g]:hover,.menu-button[data-astro-cid-fzpbxy5g]:hover{border-color:var(--border-strong);background:var(--surface);color:var(--text)}.mobile-controls[data-astro-cid-fzpbxy5g]{gap:.45rem;display:none}.mobile-menu[data-astro-cid-fzpbxy5g]{border:0;border-left:1px solid var(--border);background:var(--bg);width:min(100%,30rem);max-width:none;height:100dvh;max-height:none;color:var(--text);margin:0 0 0 auto;padding:0}.mobile-menu[data-astro-cid-fzpbxy5g]::backdrop{backdrop-filter:blur(.2rem);background:#080a088a}.mobile-menu-inner[data-astro-cid-fzpbxy5g]{min-height:100%;padding:max(1rem, env(safe-area-inset-top)) max(1.25rem, env(safe-area-inset-right)) max(1.5rem, env(safe-area-inset-bottom)) max(1.25rem, env(safe-area-inset-left));flex-direction:column;display:flex}.mobile-menu-top[data-astro-cid-fzpbxy5g],.mobile-menu-utilities[data-astro-cid-fzpbxy5g]{justify-content:space-between}.mobile-menu-nav[data-astro-cid-fzpbxy5g]{gap:.1rem;margin-block:2.5rem auto;display:grid}.mobile-menu-nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{border-bottom:1px solid var(--border);letter-spacing:-.025em;transition:color var(--motion-fast) ease;padding-block:.75rem;font-size:clamp(1.1rem,5vw,1.3rem);font-weight:600;text-decoration:none}.mobile-menu-nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g][aria-current=page]{color:var(--accent)}.mobile-menu-utilities[data-astro-cid-fzpbxy5g]{border-top:1px solid var(--border);color:var(--text-faint);gap:.75rem;padding-top:1.25rem;font-size:.78rem}@media (width<=56rem){.desktop-controls[data-astro-cid-fzpbxy5g]{display:none}.mobile-controls[data-astro-cid-fzpbxy5g]{display:flex}}:root{color-scheme:light;--font-sans:"Geist Variable", "Helvetica Neue", Arial, sans-serif;--font-mono:"Geist Mono Variable", "SFMono-Regular", Consolas, monospace;--bg:#f7f6f2;--bg-elevated:#fff;--surface:#efeee9;--text:#111210;--text-soft:#555851;--text-faint:#6d7069;--border:#d9d8d2;--border-strong:#b9bbb4;--accent:#4d7c0f;--accent-hover:#3f6212;--accent-soft:#ecfccb;--accent-ink:#3f6212;--on-accent:#fff;--dark:#101310;--dark-text:#f4f5ef;--dark-soft:#aeb4aa;--dark-border:#2b312b;--dark-accent:#a3e635;--max-width:72rem;--article-width:46rem;--radius-sm:.45rem;--radius-md:.75rem;--shadow:0 1rem 3rem #1a1c1814;--header-height:4.5rem;--motion-fast:.16s;--motion-base:.24s;--motion-slow:.42s;--motion-visual-pulse:1.1s;--ease-out:cubic-bezier(.22, 1, .36, 1);--visual-bg:#111611;--visual-panel:#161c16;--visual-panel-soft:#141a15c7;--visual-border:#303831;--visual-border-soft:#2a322b;--visual-text:#f1f3ed;--visual-text-strong:#f4f5ef;--visual-soft:#aeb4aa;--visual-muted:#7f877b;--visual-faint:#788177;--visual-accent:#b7ee58;--visual-accent-strong:#8fce2f;--visual-accent-glow:#b7ee582e;--visual-model:#c9cec5;--visual-code:#b8c3ad;--visual-copy:#9fa69c;--visual-success:#a3e635;--visual-success-glow:#a3e63524}:root[data-theme=dark]{color-scheme:dark;--bg:#111310;--bg-elevated:#171a16;--surface:#1d211c;--text:#f1f2ed;--text-soft:#b8bcb3;--text-faint:#91978d;--border:#30352f;--border-strong:#4a5148;--accent:#a3e635;--accent-hover:#bef264;--accent-soft:#26320f;--accent-ink:#bef264;--on-accent:#111310;--dark:#0b0e0b;--dark-border:#343a33;--shadow:0 1rem 3rem #00000038}*,:before,:after{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 1rem)}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;font-size:1rem;line-height:1.6}body:has(dialog[open]){overflow:hidden}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:.08em}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}img,svg{max-width:100%;display:block}::selection{background:var(--accent);color:var(--on-accent)}:focus-visible{outline:.16rem solid var(--accent);outline-offset:.2rem}.skip-link{z-index:100;border-radius:var(--radius-sm);background:var(--text);color:var(--bg);transition:transform var(--motion-fast) var(--ease-out);padding:.65rem .9rem;font-weight:650;position:fixed;top:.75rem;left:.75rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.container{width:min(calc(100% - 2.5rem), var(--max-width));margin-inline:auto}.section{padding-block:clamp(4.5rem,9vw,8rem)}.section-kicker{color:var(--accent);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .9rem;font-size:.75rem;font-weight:620}.text-link{color:var(--text-soft);transition:color var(--motion-fast) ease;font-size:.92rem;font-weight:560;text-decoration:none}.text-link:hover{color:var(--accent)}.button-row{flex-wrap:wrap;gap:.75rem;display:flex}.button{border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--accent);min-height:2.85rem;color:var(--on-accent);transition:transform var(--motion-fast) var(--ease-out), background-color var(--motion-fast) ease, border-color var(--motion-fast) ease;justify-content:center;align-items:center;gap:.6rem;padding:.68rem 1rem;font-size:.92rem;font-weight:620;line-height:1;text-decoration:none;display:inline-flex}.button:hover{border-color:var(--accent-hover);background:var(--accent-hover);color:var(--on-accent);transform:translateY(-1px)}@media (prefers-reduced-motion:no-preference){[data-enter]{animation:enter-up var(--motion-slow) var(--ease-out) both}[data-enter=delayed]{animation-delay:90ms}[data-reveal].reveal-ready{opacity:0;transition:transform var(--motion-slow) var(--ease-out), opacity var(--motion-slow) ease;transform:translateY(.9rem)}[data-reveal].reveal-ready.is-revealed{opacity:1;transform:none}[data-reveal-delay="1"]{transition-delay:70ms!important}[data-reveal-delay="2"]{transition-delay:.14s!important}@keyframes enter-up{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:none}}@keyframes visual-status-pulse{50%{box-shadow:0 0 0 .45rem #0000}}@keyframes visual-flow-pulse{0%{opacity:.22}to{opacity:1;filter:drop-shadow(0 0 .28rem var(--visual-accent-glow))}}}.button-secondary{border-color:var(--border-strong);color:var(--text);background:0 0}.button-secondary:hover{border-color:var(--text);background:var(--surface);color:var(--text)}@media (width<=40rem){:root{--header-height:4rem}.container{width:min(calc(100% - 1.5rem), var(--max-width))}.section{padding-block:4rem}.button-row{grid-template-columns:1fr;display:grid}.button{width:100%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{.site-header,.site-footer,.button-row,.toc{display:none!important}body{color:#000;background:#fff}.container{width:100%}}.prose{min-width:0;max-width:var(--article-width)}.prose>:first-child{margin-top:0}.prose h2{letter-spacing:-.045em;margin:4rem 0 1.1rem;font-size:clamp(1.8rem,4vw,2.7rem);font-weight:630;line-height:1.1}.prose h3{letter-spacing:-.025em;margin:2.5rem 0 .75rem;font-size:1.25rem;font-weight:620}.prose h4{margin:2rem 0 .65rem;font-size:1rem;font-weight:650}.prose p,.prose li,.prose figcaption{color:var(--text-soft)}.prose strong{color:var(--text);font-weight:620}.prose a{color:var(--accent-ink)}.prose ul,.prose ol{padding-left:1.3rem}.prose li+li{margin-top:.45rem}.prose li::marker{color:var(--accent)}.prose blockquote{border-left:3px solid var(--accent);margin:2rem 0;padding:.2rem 0 .2rem 1.25rem}.prose blockquote>:first-child{margin-top:0}.prose blockquote>:last-child{margin-bottom:0}.prose :not(pre)>code{background:var(--surface);color:var(--text);font-family:var(--font-mono);border-radius:.25rem;padding:.12rem .3rem;font-size:.88em}.prose pre{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--dark);max-width:100%;color:var(--dark-text);scrollbar-gutter:stable;padding:1.2rem;font-size:.84rem;line-height:1.65;overflow-x:auto}.prose pre code{min-width:max-content;font-family:var(--font-mono);background:0 0;padding:0;display:block}.prose .token.comment,.prose .token.prolog,.prose .token.doctype,.prose .token.cdata{color:var(--visual-muted)}.prose .token.punctuation,.prose .token.operator{color:var(--visual-copy)}.prose .token.property,.prose .token.tag,.prose .token.boolean,.prose .token.number,.prose .token.constant,.prose .token.symbol{color:var(--visual-model)}.prose .token.selector,.prose .token.attr-name,.prose .token.string,.prose .token.char,.prose .token.builtin,.prose .token.inserted{color:var(--visual-code)}.prose .token.atrule,.prose .token.attr-value,.prose .token.keyword{color:var(--visual-accent)}.prose .token.function,.prose .token.class-name{color:var(--visual-success)}.prose .token.regex,.prose .token.important,.prose .token.variable{color:var(--visual-text-strong)}.prose table{border-collapse:collapse;scrollbar-gutter:stable;width:max-content;max-width:100%;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:.7rem 1rem .7rem 0}.prose th{color:var(--text);font-weight:620}.prose img{border:1px solid var(--border);border-radius:var(--radius-sm);height:auto}.prose figure{margin:2rem 0}.prose figcaption{margin-top:.6rem;font-size:.8rem}
