.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}@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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.I4S5GZfc.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.BmXc_FBt.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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.GZpp1pK2.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.D8KDMBhC.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.DrnZ1wKl.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.B_7UjwxQ.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}:root{--bg: #fafafa;--fg: #16161a;--muted: #71717a;--faint: #a1a1aa;--accent: #f00c57;--border: rgba(22, 22, 26, .1);--card: #ffffff;--shadow: 0 8px 30px rgba(0, 0, 0, .08);--sans: "Inter Variable", ui-sans-serif, system-ui, sans-serif;--mono: "Geist Mono Variable", ui-monospace, "SF Mono", Menlo, monospace}html[data-theme=dark]{--bg: #0c0c0e;--fg: #ededf0;--muted: #8f8f98;--faint: #5c5c66;--border: rgba(237, 237, 240, .12);--card: #141417;--shadow: 0 8px 30px rgba(0, 0, 0, .5)}*{box-sizing:border-box;margin:0}html{color-scheme:light;scrollbar-gutter:stable}html[data-theme=dark]{color-scheme:dark}body{background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased}.wrap{max-width:40rem;margin:0 auto;padding:clamp(3rem,10vh,6rem) 1.5rem 4rem}.mono{font-family:var(--mono);font-size:.8125rem;letter-spacing:-.01em}a{color:inherit;text-decoration:none}.u{background-image:linear-gradient(var(--accent),var(--accent)),linear-gradient(var(--border),var(--border));background-repeat:no-repeat;background-position:0 100%,0 100%;background-size:0% 1.5px,100% 1px;transition:background-size .25s ease,color .15s ease}.u:hover,.u:focus-visible{background-size:100% 1.5px,100% 1px;color:var(--accent)}.ext:after{content:"↗";font-family:var(--mono);font-size:.75em;margin-left:.3em;display:inline-block;color:var(--muted);transition:color .15s ease,transform .2s ease}.ext:hover:after,.ext:focus-visible:after{color:var(--accent);transform:translate(1px,-1px)}.site-head h1{font-size:1.375rem;font-weight:640;letter-spacing:-.02em}.site-head .role{color:var(--muted);margin-top:.2rem}.links{display:flex;align-items:baseline;gap:.4rem;margin-top:1.1rem;color:var(--muted)}.links .sep{color:var(--faint);user-select:none}.feed{margin-top:3.5rem;list-style:none;padding:0}.feed-label{color:var(--faint);margin-bottom:.75rem}.feed li+li{border-top:1px solid var(--border)}.post-row{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;padding:.8rem 0}.post-row .title{font-weight:480;transition:transform .2s ease}.post-row .meta{color:var(--muted);white-space:nowrap;display:flex;align-items:baseline;gap:.55rem;transition:color .2s ease}.post-row .arrow{display:inline-block;transition:transform .2s ease}.post-row:hover .title{transform:translate(4px)}.post-row:hover .meta{color:var(--accent)}.post-row:hover .arrow{transform:translate(2px,-2px)}.post-head,.back,.prose h2,.prose h3{text-transform:lowercase}.post-head .date{color:var(--muted)}.post-head h1{font-size:1.75rem;font-weight:640;letter-spacing:-.025em;line-height:1.25;margin-top:.4rem}.back{color:var(--muted);display:inline-block;margin-bottom:2.5rem}.prose{margin-top:2rem}.prose>*+*{margin-top:1.1em}.prose h2{font-size:1.25rem;letter-spacing:-.02em;margin-top:2em}.prose h3{font-size:1.05rem;margin-top:1.8em}.prose a{background-image:linear-gradient(var(--accent),var(--accent)),linear-gradient(var(--border),var(--border));background-repeat:no-repeat;background-position:0 100%,0 100%;background-size:0% 1.5px,100% 1px;transition:background-size .25s ease,color .15s ease}.prose a:hover,.prose a:focus-visible{background-size:100% 1.5px,100% 1px;color:var(--accent)}.prose a[href^=http]:after{content:"↗";font-family:var(--mono);font-size:.75em;margin-left:.3em;display:inline-block;color:var(--muted);transition:color .15s ease,transform .2s ease}.prose a[href^=http]:hover:after{color:var(--accent);transform:translate(1px,-1px)}.prose code{font-family:var(--mono);font-size:.85em;background:var(--card);border:1px solid var(--border);border-radius:4px;padding:.1em .35em}.prose pre{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem;overflow-x:auto}.prose pre code{background:none;border:none;padding:0;font-size:.8125rem}.prose blockquote{border-left:2px solid var(--accent);padding-left:1rem;color:var(--muted)}.prose img{max-width:100%;border-radius:8px}.prose table{display:block;overflow-x:auto;border-collapse:collapse;font-size:.9rem}.prose th{font-family:var(--mono);font-size:.8125rem;font-weight:400;color:var(--muted);text-align:left;text-transform:lowercase}.prose th,.prose td{padding:.5rem 1.25rem .5rem 0;border-bottom:1px solid var(--border)}.prose tr:last-child td{border-bottom:none}footer{margin-top:5rem;padding-top:1.25rem;border-top:1px solid var(--border);color:var(--faint);display:flex;justify-content:space-between;align-items:baseline}.theme-toggle{position:fixed;top:1.1rem;right:1.1rem;z-index:20;background:none;border:none;color:var(--faint);cursor:pointer;padding:.4rem;line-height:0;transition:color .15s ease,transform .3s ease}.theme-toggle svg{width:17px;height:17px;display:none}html:not([data-theme=dark]) .theme-toggle .moon{display:block}html[data-theme=dark] .theme-toggle .sun{display:block}.theme-toggle:hover{color:var(--accent);transform:rotate(40deg)}html.theming::view-transition-old(root),html.theming::view-transition-new(root){animation:none;mix-blend-mode:normal}html.theming-in::view-transition-new(root){clip-path:circle(0px at var(--vt-x) var(--vt-y))}html.theming-out::view-transition-old(root){z-index:1}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade{animation:fade-up .45s cubic-bezier(.2,.7,.3,1) both;animation-delay:calc(var(--i, 0) * 60ms)}html.navigated .fade{animation:none}@media(prefers-reduced-motion:reduce){.fade{animation:none}*,*:before,*:after{transition-duration:.01ms!important}}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
