.mark[data-astro-cid-4pt2nqzy]{width:var(--mark-size);height:calc(var(--mark-size) * 1.25);background:var(--color-accent);flex:none;display:inline-block}.wordmark[data-astro-cid-qisgtjgl]{min-height:44px;font-family:var(--font-sans);letter-spacing:.14em;align-items:center;gap:.6rem;font-size:.95rem;font-weight:650;display:inline-flex}.wordmark[data-astro-cid-qisgtjgl] .wordmark__mark{transition:transform var(--dur) var(--ease-out)}.wordmark[data-astro-cid-qisgtjgl]:hover .wordmark__mark{transform:translateY(-3px)}.theme-toggle[data-astro-cid-l6lhmie6]{width:44px;height:44px;color:var(--color-muted);border-radius:var(--radius);transition:color var(--dur-fast) ease;place-items:center;display:inline-grid}.theme-toggle[data-astro-cid-l6lhmie6]:hover{color:var(--color-fg)}.icon[data-astro-cid-l6lhmie6]{transition:opacity var(--dur) ease, transform var(--dur) var(--ease-out);grid-area:1/1}.icon--moon[data-astro-cid-l6lhmie6]{opacity:0;transform:rotate(-30deg)scale(.8)}[data-theme=light] .icon--sun[data-astro-cid-l6lhmie6]{opacity:0;transform:rotate(30deg)scale(.8)}[data-theme=light] .icon--moon[data-astro-cid-l6lhmie6]{opacity:1;transform:none}.header[data-astro-cid-nen7h5rs]{z-index:50;background:color-mix(in srgb, var(--color-bg) 92%, transparent);-webkit-backdrop-filter:saturate(1.2)blur(10px);border-bottom:1px solid color-mix(in srgb, var(--color-border) 70%, transparent);position:sticky;top:0}.header__inner[data-astro-cid-nen7h5rs]{height:var(--header-h);justify-content:space-between;align-items:center;display:flex}.nav[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-2);display:none}.nav__list[data-astro-cid-nen7h5rs]{gap:var(--space-1);display:flex}.nav__link[data-astro-cid-nen7h5rs]{min-height:44px;padding:0 var(--space-3);font-size:var(--text-sm);color:var(--color-muted);transition:color var(--dur-fast) ease;align-items:center;font-weight:500;display:inline-flex;position:relative}.nav__link[data-astro-cid-nen7h5rs]:hover,.nav__link[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--color-fg)}.nav__link[data-astro-cid-nen7h5rs]:after{content:"";left:var(--space-3);right:var(--space-3);background:var(--color-accent);transform-origin:0;height:2px;transition:transform var(--dur) var(--ease-out);position:absolute;bottom:10px;transform:scaleX(0)}.nav__link[data-astro-cid-nen7h5rs]:hover:after,.nav__link[data-astro-cid-nen7h5rs][aria-current=page]:after{transform:scaleX(1)}.mobile[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-1);display:flex}.menu-btn[data-astro-cid-nen7h5rs]{min-height:44px;padding:0 var(--space-3);margin-right:calc(var(--space-3) * -1);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;align-items:center;display:inline-flex}@media (width>=40rem){.nav[data-astro-cid-nen7h5rs]{display:flex}.mobile[data-astro-cid-nen7h5rs]{display:none}}.sheet[data-astro-cid-nen7h5rs]{background:var(--color-bg);width:100%;max-width:none;height:100dvh;max-height:none;color:var(--color-fg);opacity:0;transition:opacity var(--dur) ease, display var(--dur) allow-discrete, overlay var(--dur) allow-discrete;border:0;margin:0;padding:0;position:fixed;inset:0}.sheet[data-astro-cid-nen7h5rs]:popover-open{opacity:1}@starting-style{.sheet[data-astro-cid-nen7h5rs]:popover-open{opacity:0}}.sheet__top[data-astro-cid-nen7h5rs]{height:var(--header-h);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.sheet__list[data-astro-cid-nen7h5rs]{padding-top:var(--space-7)}.sheet__link[data-astro-cid-nen7h5rs]{align-items:baseline;gap:var(--space-4);padding:var(--space-3) 0;letter-spacing:var(--tracking-tighter);border-bottom:1px solid var(--color-border);font-size:clamp(2.5rem,12vw,4rem);font-weight:600;line-height:1.1;display:flex}.sheet__link[data-astro-cid-nen7h5rs][aria-current=page] .label[data-astro-cid-nen7h5rs]{color:var(--color-accent-ink)}.footer[data-astro-cid-jo6i4kqk]{margin-top:var(--section);border-top:1px solid var(--color-border);font-size:var(--text-sm)}.footer__grid[data-astro-cid-jo6i4kqk]{gap:var(--space-7) var(--space-5);padding-block:var(--space-8) var(--space-7);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.footer__brand[data-astro-cid-jo6i4kqk]{gap:var(--space-2);grid-column:1/-1;justify-items:start;display:grid}.footer__brand[data-astro-cid-jo6i4kqk] .wordmark{margin-top:-10px}.footer__email[data-astro-cid-jo6i4kqk]{margin-top:var(--space-3);color:var(--color-fg)}.footer__list[data-astro-cid-jo6i4kqk]{gap:var(--space-1);display:grid}.footer__list[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{min-height:36px;color:var(--color-muted);transition:color var(--dur-fast) ease;align-items:center;gap:.3em;display:inline-flex}.footer__list[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--color-fg)}.footer__base[data-astro-cid-jo6i4kqk]{justify-content:space-between;gap:var(--space-4);padding-block:var(--space-5);border-top:1px solid var(--color-border);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;color:var(--color-muted);display:flex}@media (width>=48rem){.footer__grid[data-astro-cid-jo6i4kqk]{grid-template-columns:2fr 1fr 1fr 1fr}.footer__brand[data-astro-cid-jo6i4kqk]{grid-column:auto}}@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}:root{--color-bg:#0d0d0d;--color-bg-raised:#141414;--color-fg:#f2f2ee;--color-muted:#92928c;--color-border:#292929;--color-accent:#c7ff3d;--color-on-accent:#0d0d0d;--color-accent-ink:#c7ff3d;--color-selection:#c7ff3d;--font-sans:"Geist Variable", "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono Variable", "Geist Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.125rem;--text-lg:clamp(1.25rem, 1.1rem + .6vw, 1.5rem);--text-xl:clamp(1.5rem, 1.2rem + 1.4vw, 2.25rem);--text-2xl:clamp(2.25rem, 1.6rem + 3vw, 4rem);--text-3xl:clamp(2.75rem, 1.5rem + 6vw, 6.5rem);--text-hero:clamp(3.4rem, .8rem + 11.5vw, 12.5rem);--tracking-tight:-.035em;--tracking-tighter:-.055em;--tracking-label:.08em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--space-10:9rem;--section:clamp(4.5rem, 3rem + 7vw, 10rem);--gutter:clamp(1rem, .4rem + 3vw, 3rem);--max-width:90rem;--measure:38rem;--header-h:4rem;--radius:2px;--ease-out:cubic-bezier(.2, .7, .1, 1);--dur-fast:.14s;--dur:.28s;--dur-slow:.7s;color-scheme:dark}:root[data-theme=light]{--color-bg:#f5f4ef;--color-bg-raised:#ecebe5;--color-fg:#111;--color-muted:#6f6f6a;--color-border:#d8d7d1;--color-accent:#c7ff3d;--color-on-accent:#111;--color-accent-ink:#4a6b00;--color-selection:#c7ff3d;color-scheme:light}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + var(--space-4))}body{background:var(--color-bg);min-height:100dvh;color:var(--color-fg);font-family:var(--font-sans);font-size:var(--text-base);font-feature-settings:"ss01", "cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;transition:background-color var(--dur) ease, color var(--dur) ease;flex-direction:column;line-height:1.55;display:flex}main{flex:1}img,picture,svg,video{max-width:100%;height:auto;display:block}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}h1,h2,h3,h4{letter-spacing:var(--tracking-tight);text-wrap:balance;font-weight:600;line-height:1.05}p{text-wrap:pretty}a{color:inherit;text-decoration:none}ul[role=list],ol[role=list]{padding:0;list-style:none}::selection{background:var(--color-selection);color:#0d0d0d}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:var(--radius)}:root[data-theme=light] :focus-visible{outline-color:var(--color-fg)}.container{width:100%;max-width:var(--max-width);padding-inline:var(--gutter);margin-inline:auto}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{left:var(--gutter);z-index:100;padding:var(--space-3) var(--space-4);background:var(--color-accent);color:var(--color-on-accent);font-weight:600;position:absolute;top:-100px}.skip-link:focus{top:var(--space-3)}.label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-muted);font-weight:450}.muted{color:var(--color-muted)}.link{text-underline-offset:.2em;text-decoration:underline 1px;text-decoration-color:var(--color-border);transition:text-decoration-color var(--dur-fast) ease, color var(--dur-fast) ease}.link:hover{text-decoration-color:var(--color-accent-ink)}.btn{--btn-bg:var(--color-accent);--btn-fg:var(--color-on-accent);background:var(--btn-bg);min-height:3rem;color:var(--btn-fg);font-weight:550;font-size:var(--text-base);letter-spacing:-.01em;border-radius:var(--radius);border:1px solid var(--btn-bg);transition:background-color var(--dur-fast) ease, color var(--dur-fast) ease, border-color var(--dur-fast) ease;align-items:center;gap:.6em;padding:0 1.25rem;display:inline-flex}.btn .arrow{transition:transform var(--dur) var(--ease-out)}.btn:hover .arrow{transform:translate(4px)}.btn:hover{--btn-bg:var(--color-fg);--btn-fg:var(--color-bg)}.btn--ghost{--btn-bg:transparent;--btn-fg:var(--color-fg);border-color:var(--color-border)}.btn--ghost:hover{--btn-bg:transparent;--btn-fg:var(--color-fg);border-color:var(--color-fg)}.section-head{gap:var(--space-4);padding-bottom:var(--space-6);border-bottom:1px solid var(--color-border);display:grid}@media (width>=48rem){.section-head{grid-template-columns:1fr 2fr;align-items:end}}.section-head h2{font-size:var(--text-2xl);letter-spacing:var(--tracking-tighter)}.prose{max-width:var(--measure);font-size:var(--text-md);line-height:1.65}.prose>*+*{margin-top:1.1em}.prose h2{font-size:var(--text-xl);margin-top:2.2em}.prose h3{font-size:var(--text-lg);margin-top:1.8em}.prose h2+*,.prose h3+*{margin-top:.7em}.prose p,.prose li{color:color-mix(in srgb, var(--color-fg) 86%, var(--color-muted))}.prose a{text-underline-offset:.2em;text-decoration:underline 1px;text-decoration-color:var(--color-accent-ink)}.prose a:hover{color:var(--color-accent-ink)}.prose ul,.prose ol{padding-left:1.2em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--color-muted)}.prose strong{color:var(--color-fg);font-weight:600}.prose code{font-family:var(--font-mono);background:var(--color-bg-raised);border:1px solid var(--color-border);border-radius:var(--radius);padding:.1em .35em;font-size:.88em}.prose hr{border:0;border-top:1px solid var(--color-border);margin-block:2.5em}.prose img{border:1px solid var(--color-border)}:root[data-theme=light] .only-dark,:root:not([data-theme=light]) .only-light{display:none!important}@view-transition{navigation:auto}::view-transition-old(root),::view-transition-new(root){animation-duration:.22s}@keyframes rise{0%{opacity:0;transform:translateY(.4em)}to{opacity:1;transform:none}}.rise{animation:rise var(--dur-slow) var(--ease-out) both;animation-delay:var(--delay,0s)}@supports (animation-timeline:view()){.reveal{animation:linear both rise view();animation-range:entry entry 40%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{animation:none!important}@view-transition{navigation:none}}
