@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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+1F00-1FFF}@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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,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+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,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+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-wght-normal.Czsa-EzN.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-wght-normal.C-3rgBeH.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-wght-normal.CCVVNp6i.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@media (prefers-reduced-motion: no-preference){.reveal{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease;transition-delay:calc(var(--i, 0) * 80ms)}.reveal.revealed{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.reveal{opacity:1!important;transform:none!important;transition:none!important;animation:none!important}}@media (prefers-reduced-motion: no-preference){.prose a{background-image:linear-gradient(currentColor,currentColor);background-size:0% 1.5px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .3s ease,color .2s ease;text-decoration:none}.prose a:hover{background-size:100% 1.5px;text-decoration:none}.hover-lift{transition:transform .2s ease,box-shadow .2s ease}.hover-lift:hover{transform:translateY(-2px)}.btn-press{transition:transform .15s ease,opacity .15s ease}.btn-press:active{transform:scale(.97)}.nav-hover{transition:color .2s ease,opacity .2s ease}.theme-toggle-icon{transition:transform .4s ease}.theme-toggle-rotate{transform:rotate(180deg)}}@media (hover: hover) and (prefers-reduced-motion: no-preference){.tilt-card{transform:perspective(800px) rotateY(calc(var(--mx, 0) * 2deg)) rotateX(calc(var(--my, 0) * -2deg));transition:transform .3s ease-out}.tilt-card:hover{will-change:transform}}@media (prefers-reduced-motion: no-preference){@keyframes slide-in{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}@keyframes slide-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-8px)}}::view-transition-old(root){animation:slide-out .2s ease-out both}::view-transition-new(root){animation:slide-in .2s ease-out both}}.site-nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:color-mix(in srgb,var(--color-surface) 80%,transparent);border-bottom:1px solid var(--color-border-muted);padding:18px 24px;display:flex;align-items:center;justify-content:space-between}.site-nav .brand{font-family:Inter Variable,system-ui,sans-serif;font-weight:600;letter-spacing:-.01em;font-size:15px;color:var(--color-ink);transition:color .15s}.site-nav .brand:hover{color:var(--color-accent)}.site-nav .nav-right{display:flex;align-items:center;gap:24px}.site-nav .nav-link{font-family:Inter Variable,system-ui,sans-serif;font-size:14px;color:var(--color-ink-muted);transition:color .15s}.site-nav .nav-link:hover,.site-nav .nav-link.active{color:var(--color-ink)}.site-nav .nav-icon{background:transparent;border:none;padding:4px;color:var(--color-ink-faint);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s}.site-nav .nav-icon:hover{color:var(--color-ink)}.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin:56px 0 24px}.sec-head:first-child{margin-top:0}.sec-title{font-family:Inter Variable,system-ui,sans-serif;font-size:20px;font-weight:600;letter-spacing:-.015em;margin:0;color:var(--color-ink)}.sec-link{font-size:13px;color:var(--color-ink-faint);transition:color .15s}.sec-link:hover{color:var(--color-accent)}.sec-meta{font-size:12px;color:var(--color-ink-faint);white-space:nowrap;font-family:JetBrains Mono Variable,ui-monospace,monospace}.year-group{margin-bottom:32px}.year-label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-ink-faint);margin-bottom:8px;font-family:JetBrains Mono Variable,ui-monospace,monospace}.post-list{list-style:none;padding:0;margin:0}.post-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--color-border-muted)}.post-list li:last-child .post-row{border-bottom:none}.post-row:hover .post-title{color:var(--color-accent)}.post-title{font-family:Inter Variable,system-ui,sans-serif;font-size:15px;color:var(--color-ink);transition:color .15s;letter-spacing:-.005em}.post-date{font-size:12px;color:var(--color-ink-faint);white-space:nowrap;font-variant-numeric:tabular-nums;font-family:JetBrains Mono Variable,ui-monospace,monospace}.archive-head{padding-bottom:48px;border-bottom:1px solid var(--color-border-muted);margin-bottom:48px}.archive-h1{font-family:Inter Variable,system-ui,sans-serif;font-size:28px;font-weight:600;letter-spacing:-.02em;margin:0 0 12px;color:var(--color-ink)}.archive-sub{font-size:15px;color:var(--color-ink-muted);margin:0 0 24px;line-height:1.5}.archive-meta{font-size:12px;color:var(--color-ink-faint);margin-top:12px;font-family:JetBrains Mono Variable,ui-monospace,monospace}.article-back{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--color-ink-faint);margin-bottom:80px;font-family:JetBrains Mono Variable,ui-monospace,monospace;letter-spacing:.02em;transition:color .15s}.article-back:hover{color:var(--color-accent)}.article-head{margin-bottom:56px}.article-eyebrow{display:inline-block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent);font-family:JetBrains Mono Variable,ui-monospace,monospace;font-weight:500;margin-bottom:20px}.article-h1{font-family:Inter Variable,system-ui,sans-serif;font-size:44px;font-weight:600;line-height:1.1;letter-spacing:-.03em;color:var(--color-ink);margin:0 0 20px;text-wrap:balance}.article-lede{font-size:20px;line-height:1.5;color:var(--color-ink-muted);margin:0;text-wrap:pretty;font-weight:400}.article-meta{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--color-ink-faint);font-family:JetBrains Mono Variable,ui-monospace,monospace;margin-top:28px;padding-top:20px;border-top:1px solid var(--color-border-muted)}.article-meta .dot{width:3px;height:3px;background:var(--color-ink-faint);border-radius:50%}.clap{margin-top:80px;padding-top:40px;border-top:1px solid var(--color-border-muted);display:flex;flex-direction:column;align-items:center;gap:12px}.clap-button{position:relative;width:64px;height:64px;border-radius:50%;background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-ink-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .15s,border-color .2s,color .2s,background .2s}.clap-button:hover{transform:scale(1.05);border-color:var(--color-accent);color:var(--color-accent)}.clap-button:active{transform:scale(.95)}.clap-button.clapped{border-color:var(--color-accent);color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 8%,var(--color-surface))}.clap-count{font-family:JetBrains Mono Variable,ui-monospace,monospace;font-size:13px;color:var(--color-ink-faint);font-variant-numeric:tabular-nums}.clap-label{font-size:12px;color:var(--color-ink-faint);text-align:center;max-width:240px;line-height:1.5}@keyframes clap-pop{0%{transform:scale(1)}40%{transform:scale(1.18)}to{transform:scale(1)}}.clap-button.popping{animation:clap-pop .35s ease}@keyframes clap-burst{0%{opacity:1;transform:translate(-50%,-50%) scale(.6)}to{opacity:0;transform:translate(-50%,-120%) scale(1.4)}}.clap-burst{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;font-family:JetBrains Mono Variable,ui-monospace,monospace;font-size:13px;color:var(--color-accent);font-weight:600;animation:clap-burst .8s ease-out forwards}.article-foot{margin-top:64px;padding-top:24px;border-top:1px solid var(--color-border-muted);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--color-ink-faint)}.article-foot a{display:inline-flex;align-items:center;gap:6px;color:var(--color-ink-muted);transition:color .15s;max-width:45%}.article-foot a:hover{color:var(--color-accent)}.site-foot{max-width:640px;margin:80px auto 0;padding:24px;border-top:1px solid var(--color-border-muted);display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--color-ink-faint);flex-wrap:wrap;gap:12px;font-family:Inter Variable,system-ui,sans-serif}.site-foot a{transition:color .15s}.site-foot a:hover{color:var(--color-ink)}@media (max-width: 520px){.site-nav{padding:14px 20px}.site-nav .nav-right{gap:16px}.article-h1{font-size:28px}.article-lede{font-size:17px}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}:root{--color-surface: #ffffff;--color-surface-muted: #fafafa;--color-surface-subtle: #f4f4f5;--color-border: #e4e4e7;--color-border-muted: #f4f4f5;--color-ink: #18181b;--color-ink-muted: #52525b;--color-ink-faint: #a1a1aa;--color-accent: #2563eb;--color-accent-hover: #1d4ed8;--color-accent-subtle: #eff6ff}html.dark{--color-surface: #09090b;--color-surface-muted: #111113;--color-surface-subtle: #1c1c1f;--color-border: #27272a;--color-border-muted: #1c1c1f;--color-ink: #fafafa;--color-ink-muted: #a1a1aa;--color-ink-faint: #71717a;--color-accent: #60a5fa;--color-accent-hover: #93bbfd;--color-accent-subtle: #172554}
