@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/portfolio/_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(/portfolio/_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(/portfolio/_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(/portfolio/_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(/portfolio/_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(/portfolio/_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(/portfolio/_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(/portfolio/_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(/portfolio/_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(/portfolio/_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(/portfolio/_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}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/portfolio/_astro/space-grotesk-vietnamese-wght-normal.D0rl6rjA.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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/portfolio/_astro/space-grotesk-latin-ext-wght-normal.D9tNdqV9.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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/portfolio/_astro/space-grotesk-latin-wght-normal.BhU9QXUp.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{--primary:#171c28;--secondary:#171c28;--neutral:#2f3b54;--contrast:#fc6;--text-color:#d7dce2;--code-background:#1d2433;--muted:color-mix(in oklab, var(--text-color) 68%, var(--primary));--line:color-mix(in oklab, var(--text-color) 22%, var(--primary));--surface:color-mix(in oklab, var(--text-color) 5%, var(--primary));--good:color-mix(in oklab, #2ea043 75%, var(--text-color));--warn:color-mix(in oklab, #d29922 75%, var(--text-color));--bad:color-mix(in oklab, #e5534b 75%, var(--text-color));--cat-1:color-mix(in oklab, #3b82f6 75%, var(--text-color));--cat-2:color-mix(in oklab, #f97316 75%, var(--text-color));--cat-3:color-mix(in oklab, #14b8a6 75%, var(--text-color));--cat-4:color-mix(in oklab, #d946ef 75%, var(--text-color));--max-width:720px;--font-sans:"Geist Variable", system-ui, sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, monospace;--font-heading:"Space Grotesk Variable", system-ui, sans-serif;color:var(--text-color);background-color:var(--primary);font-family:var(--font-sans);color-scheme:dark;height:100%;line-height:1.5}:root[data-theme=light]{--primary:#fff;--secondary:#eef0f5;--neutral:#dce0e8;--contrast:#7c3aed;--text-color:#111827;--code-background:#f6f8fa;color-scheme:light}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--primary:#fff;--secondary:#eef0f5;--neutral:#dce0e8;--contrast:#7c3aed;--text-color:#111827;--code-background:#f6f8fa;color-scheme:light}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{flex-direction:column;justify-content:space-between;height:100%;display:flex}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)}blockquote{border-left:4px solid var(--contrast);color:var(--muted);padding-left:1rem}code{color:var(--contrast);font-family:var(--font-mono)}.astro-code{border-radius:4px;padding:20px;overflow-x:unset!important;background-color:var(--code-background)!important}:root:not([data-theme=light]) .astro-code-themes,:root:not([data-theme=light]) .astro-code-themes span{color:var(--shiki-dark)!important}:root:not([data-theme=light]) .astro-code-themes{background-color:var(--code-background)!important}[data-theme=light] .astro-code-themes{background-color:#f6f8fa!important}a{color:var(--contrast);text-decoration:none}a:visited{color:var(--contrast)}ul{margin-left:10px}@media screen and (width>=720px){body{align-items:end}}@keyframes fade-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:no-preference){.animate{animation:.5s both fade-up;animation-delay:var(--delay,0s)}}:focus-visible{outline:2px solid var(--contrast);outline-offset:4px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important}}svg[data-astro-cid-ccg5yoga]{vertical-align:middle;width:var(--size,1em);height:var(--size,1em)}button[data-astro-cid-l6lhmie6]{cursor:pointer;border:none;border-radius:999rem;justify-self:end;width:64px;height:32px;display:flex}.icon[data-astro-cid-l6lhmie6]{border-radius:999rem;width:2rem;height:2rem;padding:.5rem;font-size:1rem;display:flex;position:relative}html[data-theme=dark] #icon-light[data-astro-cid-l6lhmie6]{opacity:.5}html[data-theme=dark] #icon-dark[data-astro-cid-l6lhmie6]{background-color:var(--contrast);box-shadow:0 0 0 1px var(--contrast)}html[data-theme=light] #icon-dark[data-astro-cid-l6lhmie6]{opacity:.5}html[data-theme=light] #icon-light[data-astro-cid-l6lhmie6]{background-color:var(--contrast);box-shadow:0 0 0 1px var(--contrast)}@media (prefers-color-scheme:dark){html[data-theme=dark] #icon-light[data-astro-cid-l6lhmie6],html[data-theme=light] #icon-dark[data-astro-cid-l6lhmie6]{opacity:.5}}@media screen and (width>=900px){button[data-astro-cid-l6lhmie6]{margin-left:unset;margin-top:unset}}#site-header[data-astro-cid-khl6wkln]{z-index:100;background-color:color-mix(in srgb, var(--primary) 80%, transparent);-webkit-backdrop-filter:blur(12px);transition:background-color .3s,box-shadow .3s;position:fixed;top:0;left:0;right:0}#site-header[data-astro-cid-khl6wkln].scrolled{background-color:color-mix(in srgb, var(--primary) 95%, transparent);box-shadow:0 2px 20px #0003}.nav-container[data-astro-cid-khl6wkln]{justify-content:space-between;align-items:center;width:100%;max-width:1400px;height:64px;margin:0 auto;padding:0 20px;display:flex}.logo[data-astro-cid-khl6wkln]{font-family:var(--font-heading);color:var(--contrast);letter-spacing:-.02em;flex-shrink:0;font-size:1.25rem;font-weight:700;text-decoration:none}.logo[data-astro-cid-khl6wkln]:visited{color:var(--contrast)}#desktop-nav[data-astro-cid-khl6wkln]{align-items:center;gap:4px;display:none}.nav-link[data-astro-cid-khl6wkln]{color:var(--text-color);padding:6px 12px;font-size:.9rem;font-weight:500;text-decoration:none;transition:color .2s;position:relative}.nav-link[data-astro-cid-khl6wkln]:after{content:"";background-color:var(--contrast);transform-origin:0;height:2px;transition:transform .2s;position:absolute;bottom:2px;left:12px;right:12px;transform:scaleX(0)}.nav-link[data-astro-cid-khl6wkln]:hover{color:var(--contrast)}.nav-link[data-astro-cid-khl6wkln]:hover:after,.nav-link[data-astro-cid-khl6wkln].active:after{transform:scaleX(1)}.nav-link[data-astro-cid-khl6wkln].active{color:var(--contrast)}.nav-link[data-astro-cid-khl6wkln]:visited{color:var(--text-color)}.nav-link[data-astro-cid-khl6wkln].active:visited,.nav-link[data-astro-cid-khl6wkln]:hover:visited{color:var(--contrast)}.nav-right[data-astro-cid-khl6wkln]{align-items:center;gap:4px;display:flex}.nav-icon-link[data-astro-cid-khl6wkln]{width:36px;height:36px;color:var(--text-color);border-radius:6px;justify-content:center;align-items:center;text-decoration:none;transition:color .2s,background-color .2s;display:none}.nav-icon-link[data-astro-cid-khl6wkln]:visited{color:var(--text-color)}.nav-icon-link[data-astro-cid-khl6wkln]:hover{color:var(--contrast);background-color:var(--surface)}.menu-btn[data-astro-cid-khl6wkln]{color:var(--text-color);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:6px;transition:color .2s;display:flex}.menu-btn[data-astro-cid-khl6wkln]:hover{color:var(--contrast)}#mobile-overlay[data-astro-cid-khl6wkln]{z-index:200;opacity:0;background-color:#00000080;transition:opacity .3s;display:none;position:fixed;inset:0}#mobile-overlay[data-astro-cid-khl6wkln].visible{opacity:1;display:block}#side-nav[data-astro-cid-khl6wkln]{background-color:var(--primary);z-index:300;flex-direction:column;width:280px;height:100vh;padding:24px 20px;transition:transform .3s;display:flex;position:fixed;top:0;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-4px 0 30px #0000004d}#side-nav[data-astro-cid-khl6wkln].open{transform:translate(0)}.close-btn[data-astro-cid-khl6wkln]{color:var(--text-color);cursor:pointer;background:0 0;border:none;border-radius:4px;align-self:flex-end;margin-bottom:24px;padding:6px;transition:color .2s}.close-btn[data-astro-cid-khl6wkln]:hover{color:var(--contrast)}#mobile-nav[data-astro-cid-khl6wkln]{flex-direction:column;gap:4px;display:flex}.mobile-nav-link[data-astro-cid-khl6wkln]{color:var(--text-color);border-radius:6px;padding:12px 16px;font-size:1.05rem;font-weight:500;text-decoration:none;transition:color .2s,background-color .2s;display:block}.mobile-nav-link[data-astro-cid-khl6wkln]:visited{color:var(--text-color)}.mobile-nav-link[data-astro-cid-khl6wkln]:hover,.mobile-nav-link[data-astro-cid-khl6wkln].active{color:var(--contrast);background-color:var(--surface)}.hidden[data-astro-cid-khl6wkln]{display:none!important}#posts-list[data-astro-cid-khl6wkln]{background-color:var(--primary);border:1px solid var(--line);z-index:99;border-top:none;width:320px;max-height:calc(100vh - 64px);padding:16px;position:fixed;top:64px;left:0;overflow-y:auto;box-shadow:4px 4px 20px #0003}#posts-list[data-astro-cid-khl6wkln] h2[data-astro-cid-khl6wkln]{color:var(--text-color);text-transform:uppercase;letter-spacing:.08em;opacity:.6;margin-bottom:12px;font-size:.8rem;font-weight:600}#posts-list[data-astro-cid-khl6wkln] ul[data-astro-cid-khl6wkln]{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}#posts-list[data-astro-cid-khl6wkln] a[data-astro-cid-khl6wkln]{color:var(--text-color);border-radius:4px;padding:8px 12px;font-size:.9rem;text-decoration:none;transition:color .2s,background-color .2s;display:block}#posts-list[data-astro-cid-khl6wkln] a[data-astro-cid-khl6wkln]:visited{color:var(--text-color)}#posts-list[data-astro-cid-khl6wkln] a[data-astro-cid-khl6wkln]:hover{color:var(--contrast);background-color:var(--surface)}@media screen and (width>=900px){.nav-container[data-astro-cid-khl6wkln]{padding:0 60px}#desktop-nav[data-astro-cid-khl6wkln],.nav-icon-link[data-astro-cid-khl6wkln]{display:flex}.menu-btn[data-astro-cid-khl6wkln]{display:none}}@media screen and (width>=1300px){.nav-container[data-astro-cid-khl6wkln]{padding:0 80px}}#footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--neutral);width:100%;margin-top:auto;padding:24px 20px}.footer-content[data-astro-cid-jo6i4kqk]{flex-direction:column;justify-content:space-between;align-items:center;gap:16px;max-width:100%;margin:0 auto;display:flex}.footer-links[data-astro-cid-jo6i4kqk]{align-items:center;gap:24px;display:flex}a[data-astro-cid-jo6i4kqk]{color:var(--text-color);text-decoration:none;transition:color .3s}a[data-astro-cid-jo6i4kqk]:hover{color:var(--contrast);text-decoration:underline}p[data-astro-cid-jo6i4kqk]{color:var(--contrast);margin:0;font-size:.9rem}@media screen and (width>=720px){#footer[data-astro-cid-jo6i4kqk]{padding:40px}.footer-content[data-astro-cid-jo6i4kqk]{flex-direction:row;max-width:720px}}@media screen and (width>=900px){#footer[data-astro-cid-jo6i4kqk]{margin-left:0;padding:40px 60px}.footer-content[data-astro-cid-jo6i4kqk]{max-width:100%}}@media (width>=1300px){#footer[data-astro-cid-jo6i4kqk]{padding:60px 80px}.footer-content[data-astro-cid-jo6i4kqk]{max-width:1000px;margin:0 auto}}
