.site-header[data-astro-cid-fzpbxy5g]{z-index:50;background:color-mix(in srgb, var(--paper) 86%, transparent);-webkit-backdrop-filter:blur(12px)saturate(1.15);border-bottom:1px solid var(--line);position:sticky;top:0}.site-header__inner[data-astro-cid-fzpbxy5g]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.35rem 1.5rem;padding-block:.95rem;display:flex}.brand[data-astro-cid-fzpbxy5g]{align-items:center;gap:.7rem;display:inline-flex}.brand__mark[data-astro-cid-fzpbxy5g]{width:1.85rem;height:1.85rem;transition:transform var(--duration) var(--ease-out);display:block}@media (hover:hover) and (pointer:fine){.brand[data-astro-cid-fzpbxy5g]:hover .brand__mark[data-astro-cid-fzpbxy5g]{transform:scale(1.06)}}.brand__name[data-astro-cid-fzpbxy5g]{font-family:var(--font-display);letter-spacing:-.01em;font-size:1.28rem}.site-nav[data-astro-cid-fzpbxy5g]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:clamp(.9rem,.4rem + 1.6vw,1.9rem);max-width:100%;display:flex}.site-nav__link[data-astro-cid-fzpbxy5g]{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-muted);transition:color var(--duration-fast) var(--ease-out);padding-block:.35rem;font-weight:500;position:relative}.site-nav__link[data-astro-cid-fzpbxy5g]:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:1px;transition:transform var(--duration) var(--ease-out);position:absolute;bottom:.1rem;left:0;transform:scaleX(0)}.site-nav__link[data-astro-cid-fzpbxy5g]:hover,.site-nav__link[data-astro-cid-fzpbxy5g]:focus-visible{color:var(--ink)}.site-nav__link[data-astro-cid-fzpbxy5g]:hover:after,.site-nav__link[data-astro-cid-fzpbxy5g]:focus-visible:after{transform:scaleX(1)}.theme-toggle[data-astro-cid-fzpbxy5g]{border:1px solid var(--line-strong);width:2.5rem;height:2.5rem;color:var(--ink-muted);cursor:pointer;transition:color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out);background:0 0;border-radius:999px;place-items:center;padding:0;display:inline-grid}html:not(.js) .theme-toggle[data-astro-cid-fzpbxy5g]{display:none}.theme-toggle[data-astro-cid-fzpbxy5g]:hover{color:var(--ink);border-color:var(--accent);background:var(--accent-wash)}.theme-toggle[data-astro-cid-fzpbxy5g] svg[data-astro-cid-fzpbxy5g]{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:1.15rem;height:1.15rem}.theme-toggle__sun[data-astro-cid-fzpbxy5g]{display:none}html[data-theme=dark] .theme-toggle__sun[data-astro-cid-fzpbxy5g],html[data-theme=system] .theme-toggle__sun[data-astro-cid-fzpbxy5g]{display:block}html[data-theme=dark] .theme-toggle__moon[data-astro-cid-fzpbxy5g],html[data-theme=system] .theme-toggle__moon[data-astro-cid-fzpbxy5g]{display:none}@media (prefers-color-scheme:light){html[data-theme=system] .theme-toggle__sun[data-astro-cid-fzpbxy5g]{display:none}html[data-theme=system] .theme-toggle__moon[data-astro-cid-fzpbxy5g]{display:block}}@media (prefers-reduced-motion:reduce){.brand__mark[data-astro-cid-fzpbxy5g]{transition:none}.brand[data-astro-cid-fzpbxy5g]:hover .brand__mark[data-astro-cid-fzpbxy5g]{transform:none}.site-nav__link[data-astro-cid-fzpbxy5g]:after,.theme-toggle[data-astro-cid-fzpbxy5g]{transition:none}}.site-footer[data-astro-cid-nns7i3if]{border-top:1px solid var(--line);padding-block:2.5rem 2rem}.site-footer__inner[data-astro-cid-nns7i3if]{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem 2rem;display:flex}.site-footer__links[data-astro-cid-nns7i3if]{gap:1.5rem;display:flex}.site-footer__colophon[data-astro-cid-nns7i3if]{font-size:var(--step--2);letter-spacing:.04em;margin-top:1.5rem}@media (width<=40rem){.site-footer__inner[data-astro-cid-nns7i3if]{flex-direction:column;align-items:flex-start}}@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-normal.C2je3j2s.woff2)format("woff2"),url(/_astro/instrument-serif-latin-ext-400-normal.CFCUzsTy.woff)format("woff");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:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-normal.DnYpCC2O.woff2)format("woff2"),url(/_astro/instrument-serif-latin-400-normal.BVbkICAY.woff)format("woff");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:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-italic.C9HzH3YL.woff2)format("woff2"),url(/_astro/instrument-serif-latin-ext-400-italic.D7-lnxEk.woff)format("woff");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:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-italic.DKMiL14s.woff2)format("woff2"),url(/_astro/instrument-serif-latin-400-italic.u__WvvIK.woff)format("woff");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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.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: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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAfsABQAAAAAEAwAAAeCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoP0hWQVJbBmA/U1RBVIFiJyYAdC9qEQgKhGSEAAsgADCGCAE2AiQDOgQgBYlMB4EUDAcbLQ4onoexrSC/2ZyLAa8p8VHB8/x3Vue+V0hVJalMJg2nx/TCrQXxBeqLjQG7FyM1WEa/X1tEXN7cFz9EJEMmMUz3RihWSSKeQCbcIou0izz/C8v+fq3VfajEa9gDD11CImXS7qL/RJFVzC1qiB6KmKeD6TZdQ6IRGv78dL6uSVVCfgni5mzu7kcgQBgAEAQTQRCoL++STTYybkJxNfQxAAIAGu8OdEB9teW2jh4BpgDqFjAeSEByW3zFP0CBBgNMsMCGEDjgggdhiEAUAeIIED7ABTDUEnkIE9Q9ahFgKttcVhApo4ACB4qobHaccgDfEjFO6aaWUhjMLt2SyIvHKoDqoA4CSUwEIYQCEjhAO9R1G6keDeDZGjNo+AhxOjCEGTr1WeIF3kYBiLAOKvkJSMiKX0VdAyQt3SDJClCkxJCHkCzfqyVTriJZLcolS32JZHUekq2TYNkYtCtjYHMQXSxGjXDz2t/yLWXzDzxz+o3zFwDEaN23F+13pyMdQAEaSKAR9vcGq4A4MTSKCElGW+M7UcY7xqkggITb28ZJhlqc9q2twYKTt0NjixBgYvO9BIihEBLYuOFXQzfIQ7dXGUEEEgFDooBfAzqiQbpJrhiWSuKJCRFKYbHCyJKI2G5GiZbNAvgAu5pc3vwx4G+g3aDkhklABiSz0BICXrYghtYhx/cdJ+44rY2oZ0aMNRFz3VZjb6W33F3gzltqtOCV8tTHSpOeXuItfvr5lCdfzFpqtEitvqdcdGGFd28ZqqC0tPbeChGXgrIlnhSWu/eUso4uKWFLugyDzQJhflY4659+WjQ++6x72WUMv9G8mw6QJl7BVxX5fe/kpUsOvnZwee9uQ0cGXYd0o89XB2748sDSnt8d2VphdOTTgceDVvOds0v9P/s7HPq15aGun/6Vllb56f1dl0t1LejqrNkpdRZsG8TOnM5vkBG5oiVyVGnS8LHps5cfNWJs6qKPfaNSxiQNBUm3cKNWROr0GSur7Za31k1vieq7LH11VF+jXdRIasRKflc7jkobm1Z9te1IyZA0pDkhLR98+H37Zf1c/8at+dB7x+7GfVyTfJMPiYztsnl59Y5l4j+0n1RXlpHnF3Tq7HecmNF/CJodEMAikruxiyJaGLvHOdAfoA+oDvpjBm2b91cHGRZMU9n25xEU0A8fgEEAdKI3Q1iDtc034sug5YVMkE2jsE+BIkwSoQ3gxXMqz9tELp48bd0cFKOKS7xYjEuXBnZP5ia7DyiO/X/YI+PQSbt2uSdqAkWL9nQbV1XB94/+uPfdZz8dnXYFBYrcTl2SIR/ybxJNJPz/Gupb0JaZeens2ekC7EKr8t+Ls/P5VJPYJdHKyqfg2nqU6bhlidzcddQV/7MmecTzJ5VPcKXkNKSEogHjYFx6QZ7rQ+FSe8njaiNuOnXS8H2ScQ619c2mC3VTtauL0rRbXd/CkSOP37FY9Zkjz8+GibYUMOEWF+RdrFS8Ecv1SHOpPUPZGEIpjPvFyU5cXKjd6OXqorTqy9GwRd++HVufPGnVsW+aO3vggKZ18jR9sXaTC1PWTEsVUaK0FkNySbTQDqlm2PfDjZcu4aalnSLKjnOoYQ0nUlqqXcGpPu/4VgV/xU2pAqW4BW3qzhQ8/hFKhV2qE3+BKAtDqBXjfgnVdH4y0wg5tbVNRenNdTWOrenWLcupQdmsbq5b+18piTe/xRdp1xbILxNPJGInm2z6hoB21Lal0i+ePTtd7B45+3XhFJ329evskXm7qurUVREotqSluSo/L29d3qDhI4YOQqWhI4YNvBNfsMHeXKemXrxQfKeuPOGRVayA3JtkJKEgbPp+dXUDluddutRYLFoXGXWX6N3WFaGLbQtRSitVYNacTNSdy7AaG/HSaUEANcBoGXNdcZvZsOqQ1icBDv21/gzAoYPHH/WDW0qNR3QTYKEAEHig6o13NXbND06CQPlRtYjGNnSktRc09k1mAMDvAlDKfQjgy6fssInlfzmNAjKkDxoxHOBLdVRAIVt9j4qo+hA1w9T1aNBNTUOTTNUHLbqokE+UAfJXCIGw/IxCSL5GRUJeR40rL/UxTm4Q08H6MbCs70ObuNyIIXrINHQYInF06UUlevTjbQzTh5upiDMzMMogUtEnjPs/Y7jAHCJeB0GBHh04tC6FiB6ZFB1oArUSIoFoqhzCeAN6lHwm0T4C3VVPWvjpSMXReuWesMEcoqrmgtNBGd2noWeV0hNAz9rFeShNJxHGsPa3HXeKTk8b55hahySYHaYKKFFLpCfN8rsoaJn01CR04Gkc+5k7KVTCmClX8Q10HCrUEkVlSX+XO33oQR9609tJ516H497WSobWs5Up6TLaS10/dessIskgJSLiDlWvHVUywpkQ7hdPZqGyiEF0uVQerVcPamT1A3eKXdyI1vG9OoflrSXihZ1qqGE3nhmAgiIbRCQgPLEPtOM3UQwTLYaYYomNlpA44opnjV6jkD6id80OOrzf6BzmMD6eEa1zKyeYG1fzfEf16V6jw9XYOaar1/b2kP/IYX8oR2mcFvv2GtBV3JXgd437AQAA)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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.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-scheme:light;--paper:#faf7f1;--paper-raised:#fffdf9;--paper-sunk:#f2ece1;--ink:#1a1511;--ink-soft:#4b4139;--ink-muted:#726757;--line:color-mix(in srgb, var(--ink) 11%, transparent);--line-strong:color-mix(in srgb, var(--ink) 24%, transparent);--accent:#b0492a;--accent-deep:#8a3619;--accent-wash:color-mix(in srgb, var(--accent) 11%, transparent);--font-display:"Instrument Serif", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--font-sans:"Inter Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--step--2:clamp(.72rem, .71rem + .08vw, .78rem);--step--1:clamp(.86rem, .84rem + .1vw, .93rem);--step-0:clamp(1.02rem, .98rem + .18vw, 1.13rem);--step-1:clamp(1.28rem, 1.19rem + .4vw, 1.55rem);--step-2:clamp(1.62rem, 1.42rem + .9vw, 2.3rem);--step-3:clamp(2.1rem, 1.72rem + 1.75vw, 3.5rem);--step-4:clamp(2.75rem, 1.95rem + 3.6vw, 5.6rem);--gutter:clamp(1.25rem, .85rem + 1.9vw, 3rem);--section-y:clamp(4.5rem, 3rem + 6vw, 8.5rem);--shell:72rem;--measure:34rem;--radius:4px;--radius-lg:10px;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--duration-fast:.16s;--duration:.24s;--duration-slow:.42s}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;overscroll-behavior-y:none}body{background:var(--paper);min-height:100svh;color:var(--ink);font-family:var(--font-sans);font-size:var(--step-0);letter-spacing:-.005em;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.65}img,svg,video{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}ul,ol{padding:0;list-style:none}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.015em;text-wrap:balance;font-weight:400;line-height:1.06}p{text-wrap:pretty}::selection{background:var(--accent-wash);color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.shell{width:min(var(--shell), 100% - var(--gutter) * 2);margin-inline:auto}.section{padding-block:var(--section-y);scroll-margin-top:5rem}.section+.section{border-top:1px solid var(--line)}.skip-link{left:var(--gutter);z-index:100;background:var(--ink);color:var(--paper);font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.02em;border-radius:var(--radius);padding:.6rem 1rem;position:absolute;top:.75rem;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}.section-head{justify-content:space-between;align-items:baseline;gap:1.5rem;margin-bottom:clamp(2.25rem,1.5rem + 2.5vw,3.75rem);display:flex}.eyebrow{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);font-weight:500}.eyebrow--accent{color:var(--accent-deep)}.section-title{font-size:var(--step-3);max-width:18ch}.lede{font-size:var(--step-1);color:var(--ink-soft);max-width:var(--measure);line-height:1.5}.prose p+p{margin-top:1.15em}.link{color:var(--ink);transition:color var(--duration-fast) var(--ease-out);position:relative}.link:after{content:"";transform-origin:0;width:100%;height:1px;transition:transform var(--duration) var(--ease-out);background:currentColor;position:absolute;bottom:0;left:0;transform:scaleX(0)}.link:focus-visible:after{transform:scaleX(1)}.link:focus-visible{color:var(--accent-deep)}@media (hover:hover) and (pointer:fine){.link:hover:after{transform:scaleX(1)}.link:hover{color:var(--accent-deep)}.btn:hover{border-color:var(--ink);background:color-mix(in srgb, var(--ink) 4%, transparent)}.btn--solid:hover{background:color-mix(in srgb, var(--ink) 88%, var(--accent));color:var(--paper);border-color:#0000}.btn:hover .btn__arrow{transform:translate(2px,-2px)}.btn:hover .btn__arrow--down{transform:translateY(2px)}}.link--quiet{color:var(--ink-soft)}.btn{border:1px solid var(--line-strong);border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.01em;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out), background-color var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out), color var(--duration) var(--ease-out);background:0 0;align-items:center;gap:.65em;padding:.85em 1.4em;font-weight:500;display:inline-flex}.btn:active{transition-duration:.1s;transform:scale(.97)}.btn--solid{background:var(--ink);border-color:var(--ink);color:var(--paper)}.btn__arrow{transition:transform var(--duration) var(--ease-out)}.tag{border:1px solid var(--line);font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.02em;color:var(--ink-muted);white-space:nowrap;border-radius:999px;align-items:center;padding:.28em .7em;display:inline-flex}.tags{flex-wrap:wrap;gap:.4rem;display:flex}.rule{background:var(--line);border:0;height:1px}.hand-underline{white-space:nowrap;font-style:italic;display:inline-block;position:relative}.hand-underline svg{width:calc(100% + .12em);height:.26em;color:var(--accent);position:absolute;bottom:-.08em;left:-.06em;right:-.06em;overflow:visible}.hand-underline path{fill:none;stroke:currentColor;stroke-width:4px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;animation:draw .8s var(--ease-in-out) .5s forwards}@keyframes draw{to{stroke-dashoffset:0}}.js [data-reveal]{opacity:0}.js [data-reveal].is-visible{opacity:1;animation:reveal-in var(--duration-slow) var(--ease-out) backwards;animation-delay:calc(var(--i,0) * 60ms)}@keyframes reveal-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes reveal-fade{0%{opacity:0}to{opacity:1}}.js [data-reveal=cover].is-visible{animation-name:cover-fade;animation-duration:.76s}.js [data-reveal=cover].is-visible img{animation:cover-zoom .76s var(--ease-out) backwards}@keyframes cover-fade{0%{opacity:0}to{opacity:1}}@keyframes cover-zoom{0%{transform:scale(1.02)}to{transform:none}}@media (prefers-reduced-motion:reduce){.js [data-reveal].is-visible{animation-name:reveal-fade;animation-duration:.2s;animation-delay:0s}.hand-underline path{stroke-dashoffset:0;animation:none}.btn__arrow{transition:none}.btn:hover .btn__arrow{transform:none}.btn:active{transition:none;transform:none}.link:after{transition:none}.link:hover:after,.link:focus-visible:after{transform:scaleX(1)}.js [data-reveal=cover].is-visible img{animation:none}}.mono{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.01em}.muted{color:var(--ink-muted)}@view-transition{navigation:auto}::view-transition-old(root){animation:page-out .18s var(--ease-out) both}::view-transition-new(root){animation:page-in .3s var(--ease-out) both}@keyframes page-out{to{opacity:0}}@keyframes page-in{0%{opacity:0;transform:translateY(10px)}}@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}html[data-theme=dark]{color-scheme:dark;--paper:#14110e;--paper-raised:#1c1713;--paper-sunk:#0e0b09;--ink:#f2ebe3;--ink-soft:#cbbdb1;--ink-muted:#9c8d80;--line:color-mix(in srgb, var(--ink) 12%, transparent);--line-strong:color-mix(in srgb, var(--ink) 28%, transparent);--accent:#e08a63;--accent-deep:#f2ab84;--accent-wash:color-mix(in srgb, var(--accent) 13%, transparent)}@media (prefers-color-scheme:dark){html[data-theme=system]{color-scheme:dark;--paper:#14110e;--paper-raised:#1c1713;--paper-sunk:#0e0b09;--ink:#f2ebe3;--ink-soft:#cbbdb1;--ink-muted:#9c8d80;--line:color-mix(in srgb, var(--ink) 12%, transparent);--line-strong:color-mix(in srgb, var(--ink) 28%, transparent);--accent:#e08a63;--accent-deep:#f2ab84;--accent-wash:color-mix(in srgb, var(--accent) 13%, transparent)}}html[data-variant=shell]{--radius:5px;--radius-lg:10px;--ease-out:cubic-bezier(.23, 1, .32, 1);--duration-fast:.12s;--duration:.2s;--duration-slow:.36s}html[data-variant=shell] body{font-family:var(--font-sans);font-size:var(--step-0);line-height:1.65}html[data-variant=shell] h1,html[data-variant=shell] h2,html[data-variant=shell] h3,html[data-variant=shell] h4{font-family:var(--font-display);letter-spacing:-.015em;text-transform:none;font-weight:400;line-height:1.1}.sh-prompt{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.01em}.sh-ps1{color:var(--accent);font-weight:700}.sh-path{color:var(--ink-soft)}.sh-sep{color:var(--ink-muted)}.sh-typed{color:var(--ink);animation:.62s steps(7,end) .26s backwards sh-type;display:inline-block}.sh-typed--static{animation:none}.sh-actions{flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-top:1.5rem;display:flex}.sh-caret{vertical-align:text-bottom;background:var(--accent);width:.6em;height:1.05em;margin-left:.15em;animation:1.05s steps(2,start) infinite sh-blink;display:inline-block}@keyframes sh-type{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes sh-blink{50%{opacity:0}}.sh-section{padding-block:clamp(1.75rem,1.25rem + 2vw,3rem)}.sh-section--last{padding-bottom:clamp(2.5rem,2rem + 3vw,4.5rem)}.sh-win{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper-raised);overflow:hidden}.sh-win--accent{border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.sh-win__bar{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--ink) 3%, var(--paper));font-family:var(--font-mono);font-size:var(--step--2);color:var(--ink-muted);align-items:center;gap:1rem;padding:.8rem 1.25rem;display:flex}.sh-win__dots{gap:.4rem;display:inline-flex}.sh-win__dots i{border:1px solid var(--line-strong);border-radius:999px;width:.55rem;height:.55rem}.sh-win .sh-win__name{font-family:var(--font-mono);font-size:var(--step-0);letter-spacing:.01em;color:var(--ink);font-weight:500;line-height:1.25}.sh-win__meta{font-family:var(--font-mono);letter-spacing:.08em;margin-left:auto}.sh-win__body{padding:clamp(1rem,.8rem + .8vw,1.6rem)}.sh-kv{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper-raised);padding:.35rem 1rem}.sh-kv__row{border-top:1px dashed var(--line);grid-template-columns:6.5rem minmax(0,1fr);gap:1rem;padding-block:.6rem;display:grid}.sh-kv__row:first-child{border-top:0}.sh-kv dt{color:var(--accent);font-family:var(--font-mono);font-size:var(--step--2)}.sh-kv dt:after{content:":"}.sh-kv dd{color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--step--2);text-align:right;margin:0}html[data-variant=shell] .btn{border:1px solid var(--line-strong);color:var(--ink-soft);font-family:var(--font-mono);letter-spacing:.02em;background:0 0}html[data-variant=shell] .btn--solid{background:var(--ink);color:var(--paper);border-color:#0000}html[data-variant=shell] .tag{border-color:var(--line-strong)}html[data-variant=shell] .eyebrow{color:var(--ink-muted)}html[data-variant=shell] .eyebrow--accent{color:var(--accent-deep)}html[data-theme=light][data-variant=shell] .btn--solid:hover{color:#fffdf9}@media (hover:hover) and (pointer:fine){html[data-variant=shell] .btn:hover{background:var(--accent-wash);border-color:color-mix(in srgb, var(--accent) 55%, transparent);color:var(--ink)}html[data-variant=shell] .btn--solid:hover{background:var(--accent);color:var(--paper-sunk);border-color:#0000}html[data-variant=shell] .btn:hover .btn__arrow{transform:translate(2px,-2px)}html[data-variant=shell] .link:hover,html[data-variant=shell] .link:focus-visible{color:var(--accent-deep)}}html[data-variant=shell].js [data-reveal].is-visible{animation:sh-rise var(--duration-slow) var(--ease-out) backwards;animation-delay:calc(var(--i,0) * 70ms)}@keyframes sh-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){html[data-variant=shell] .sh-typed{clip-path:none;animation:none}html[data-variant=shell] .sh-caret{opacity:1;animation:none}html[data-variant=shell].js [data-reveal].is-visible{animation:.18s backwards sh-rise}}html{scroll-padding-top:6rem}.sh-hero[data-astro-cid-ge2uvauf]{border-bottom:1px solid var(--line);padding-block:clamp(2.5rem,2rem + 3vw,4.5rem)}.sh-hero__title[data-astro-cid-ge2uvauf]{letter-spacing:-.03em;color:var(--ink);margin-top:1.1rem;font-size:clamp(1.75rem,1.1rem + 3vw,3.5rem)}.sh-hero__grid[data-astro-cid-ge2uvauf]{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:start;gap:clamp(2rem,1rem + 3vw,3.5rem);margin-top:2rem;display:grid}.sh-out[data-astro-cid-ge2uvauf]{border-left:2px solid var(--line-strong);color:var(--ink-soft);padding-left:1.15rem}@media (width<=64rem){.sh-hero__grid[data-astro-cid-ge2uvauf]{grid-template-columns:minmax(0,1fr)}}.sh-list[data-astro-cid-5bpsg6b4]{border-top:1px solid var(--line)}.sh-row[data-astro-cid-5bpsg6b4]{border-bottom:1px solid var(--line);color:inherit;transition:background-color var(--duration) var(--ease-out);grid-template-columns:2.5rem minmax(0,1fr) minmax(0,1.4fr);align-items:center;gap:1rem 1.5rem;margin-inline:-.75rem;padding:.75rem;display:grid;position:relative}.sh-row[data-astro-cid-5bpsg6b4]:before{content:"";background:var(--accent);transform-origin:50%;width:2px;transition:transform var(--duration) var(--ease-out);position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.sh-row__idx[data-astro-cid-5bpsg6b4]{color:var(--ink-muted);font-family:var(--font-mono);font-size:var(--step--2)}.sh-row__idx[data-astro-cid-5bpsg6b4]:before{content:">";color:var(--accent);opacity:0;transition:opacity var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);margin-right:.35rem;display:inline-block;transform:translate(-4px)}.sh-row[data-astro-cid-5bpsg6b4]:focus-visible{background:var(--accent-wash)}.sh-row[data-astro-cid-5bpsg6b4]:focus-visible:before{transform:scaleY(1)}.sh-row[data-astro-cid-5bpsg6b4]:focus-visible .sh-row__idx[data-astro-cid-5bpsg6b4]:before{opacity:1;transform:translate(0)}.sh-row__name[data-astro-cid-5bpsg6b4]{min-width:0;display:block}.sh-row__title[data-astro-cid-5bpsg6b4]{font-weight:700;font-size:var(--step-0);letter-spacing:-.01em;color:var(--ink);display:block}.sh-row__tag[data-astro-cid-5bpsg6b4]{font-family:var(--font-mono);font-size:var(--step--2);color:var(--ink-muted);line-height:1.5;display:block}.sh-row__description[data-astro-cid-5bpsg6b4]{font-size:var(--step--1);color:var(--ink-soft);grid-column:3;line-height:1.55}.sh-hint[data-astro-cid-5bpsg6b4]{font-family:var(--font-mono);font-size:var(--step--2);color:var(--ink-muted);margin-top:.9rem}.sh-hint[data-astro-cid-5bpsg6b4] .link[data-astro-cid-5bpsg6b4]{color:var(--ink-soft)}@media (hover:hover) and (pointer:fine){.sh-row[data-astro-cid-5bpsg6b4]:hover{background:var(--accent-wash)}.sh-row[data-astro-cid-5bpsg6b4]:hover:before{transform:scaleY(1)}.sh-row[data-astro-cid-5bpsg6b4]:hover .sh-row__idx[data-astro-cid-5bpsg6b4]:before{opacity:1;transform:translate(0)}}@media (width<=64rem){.sh-row[data-astro-cid-5bpsg6b4]{grid-template-columns:2.5rem minmax(0,1fr)}.sh-row__description[data-astro-cid-5bpsg6b4]{grid-column:2}}@media (width<=44rem){.sh-row[data-astro-cid-5bpsg6b4]{grid-template-columns:2.5rem minmax(0,1fr);align-items:start;row-gap:.35rem}}@media (prefers-reduced-motion:reduce){.sh-row[data-astro-cid-5bpsg6b4]:before,.sh-row__idx[data-astro-cid-5bpsg6b4]:before{transition:none}}.sh-about[data-astro-cid-oxgmilyn]{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start;gap:clamp(1.5rem,1rem + 2vw,3rem);display:grid}.sh-prose[data-astro-cid-oxgmilyn]{color:var(--ink-soft);max-width:44rem}.sh-para[data-astro-cid-oxgmilyn]{grid-template-columns:2rem minmax(0,1fr);gap:.75rem;display:grid}.sh-para[data-astro-cid-oxgmilyn]+.sh-para[data-astro-cid-oxgmilyn]{margin-top:1.15rem}.sh-para__n[data-astro-cid-oxgmilyn]{color:var(--ink-muted);font-family:var(--font-mono);font-size:var(--step--2);padding-top:.2rem}.sh-aside[data-astro-cid-oxgmilyn]{gap:1.25rem;display:grid}.sh-pane[data-astro-cid-oxgmilyn]{border:1px solid var(--line);border-radius:var(--radius);padding-bottom:1rem}.sh-pane__title[data-astro-cid-oxgmilyn]{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--accent) 6%, transparent);font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.1em;color:var(--accent-deep);padding:.45rem .9rem;font-weight:700}.sh-pane[data-astro-cid-oxgmilyn] .sh-kv--flush[data-astro-cid-oxgmilyn]{background:0 0;border:0;padding-inline:.9rem}.sh-pane[data-astro-cid-oxgmilyn] .sh-kv__row[data-astro-cid-oxgmilyn]{grid-template-columns:5rem minmax(0,1fr);gap:.75rem}.sh-pane[data-astro-cid-oxgmilyn] dd[data-astro-cid-oxgmilyn]{text-align:left;font-family:var(--font-sans);font-size:var(--step--1);color:var(--ink-soft);line-height:1.7}.sh-edu[data-astro-cid-oxgmilyn]{padding:.9rem .9rem 0}.sh-edu__degree[data-astro-cid-oxgmilyn]{color:var(--ink);font-weight:700}.sh-edu__meta[data-astro-cid-oxgmilyn]{font-family:var(--font-mono);font-size:var(--step--2);color:var(--ink-muted);margin-top:.3rem}@media (width<=64rem){.sh-about[data-astro-cid-oxgmilyn]{grid-template-columns:minmax(0,1fr)}}.sh-log[data-astro-cid-bl6cniha]{border-left:1px dashed var(--line-strong);margin-left:.4rem}.sh-log__row[data-astro-cid-bl6cniha]{grid-template-columns:11rem minmax(0,1fr);gap:.35rem 1.5rem;padding:.85rem 0 1.35rem 1.5rem;scroll-margin-top:6rem;display:grid;position:relative}.sh-log__row[data-astro-cid-bl6cniha]:last-child{padding-bottom:.35rem}.sh-log__row[data-astro-cid-bl6cniha]:before{content:"";background:var(--paper-raised);border:1px solid var(--accent);border-radius:999px;width:.55rem;height:.55rem;position:absolute;top:1.35rem;left:-.32rem}.sh-log__hash[data-astro-cid-bl6cniha]{font-family:var(--font-mono);font-size:var(--step--2);color:var(--ink-muted)}.sh-log__hash[data-astro-cid-bl6cniha] i[data-astro-cid-bl6cniha]{color:var(--accent);letter-spacing:.08em;font-style:normal;display:block}.sh-log__body[data-astro-cid-bl6cniha]{display:block}.sh-log__title[data-astro-cid-bl6cniha]{color:var(--ink);font-weight:700;display:block}.sh-log__co[data-astro-cid-bl6cniha]{color:var(--accent);font-weight:400}.sh-log__note[data-astro-cid-bl6cniha]{font-size:var(--step--2);color:var(--ink-soft);max-width:44rem;margin-top:.2rem;display:block}.sh-log__points[data-astro-cid-bl6cniha]{gap:.3rem;margin-top:.65rem;display:grid}.sh-log__points[data-astro-cid-bl6cniha] li[data-astro-cid-bl6cniha]{font-size:var(--step--1);color:var(--ink-soft);max-width:52rem;padding-left:1.15rem;line-height:1.7;position:relative}.sh-log__points[data-astro-cid-bl6cniha] li[data-astro-cid-bl6cniha]:before{content:"-";color:var(--ink-muted);position:absolute;left:0}@media (width<=64rem){.sh-log__row[data-astro-cid-bl6cniha]{grid-template-columns:minmax(0,1fr);gap:.3rem}}.sh-contact__title[data-astro-cid-he3spzz3]{letter-spacing:-.03em;margin-top:1.15rem;font-size:clamp(1.5rem,1rem + 2.6vw,2.75rem)}.sh-contact__lede[data-astro-cid-he3spzz3]{max-width:44rem;color:var(--ink-soft);margin-top:.9rem}.sh-contact[data-astro-cid-he3spzz3] .sh-actions[data-astro-cid-he3spzz3]{margin-top:1.5rem}.sh-contact__foot[data-astro-cid-he3spzz3]{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;margin-top:1.75rem;padding-top:1rem;display:flex}.sh-status[data-astro-cid-he3spzz3]{font-family:var(--font-mono);font-size:var(--step--2);color:var(--ink-muted);align-items:center;gap:.6rem;display:flex}.sh-status[data-astro-cid-he3spzz3] i[data-astro-cid-he3spzz3]{background:var(--accent);border-radius:999px;width:.5rem;height:.5rem}.sh-contact__links[data-astro-cid-he3spzz3]{font-family:var(--font-mono);font-size:var(--step--2);flex-wrap:wrap;gap:.6rem 1.25rem;display:flex}
