@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(*),[data-astro-transition-scope]{animation:none!important}}:root{--bg-color:#0f0f0f;--bg-color-muted:#161616;--text-color:#e8ddd0;--text-muted:#9a9187;--link-color:#c8a46e;--accent-color:#c8a46e;--border-color:#e8ddd01a;--hover-bg:#c8a46e0f;--glow-color:#c8a46e21;--font-sans:"DM Sans", system-ui, -apple-system, sans-serif;--font-heading:"Fraunces", Georgia, serif;--font-mono:"Roboto Mono", Consolas, "Courier New", monospace;--transition-base:.2s cubic-bezier(.4, 0, .2, 1)}.theme-transition{--theme-transition:var(--transition-base)}.theme-transition button,.theme-transition input,.theme-transition textarea,.theme-transition select,.theme-transition pre,.theme-transition code,.theme-transition blockquote,.theme-transition .card{transition:background-color var(--theme-transition), border-color var(--theme-transition), box-shadow var(--theme-transition)}.theme-transition *{transition-property:background-color,border-color,box-shadow;transition-duration:var(--theme-transition)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUpFade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.initial-load{animation:none!important}.initial-load .animate-fade{animation:fadeIn .5s var(--transition-base) both}.initial-load .animate-slide-up{animation:slideUpFade .5s var(--transition-base) both}.initial-load .animate-scale{animation:scaleIn .3s var(--transition-base) both}.initial-load .stagger-1{animation-delay:.1s}.initial-load .stagger-2{animation-delay:.15s}.initial-load .stagger-3{animation-delay:.2s}@media (prefers-reduced-motion:no-preference){.hover-lift{transition:transform var(--transition-base)}.hover-lift:hover{transform:translateY(-2px)}.hover-scale{transition:transform var(--transition-base)}.hover-scale:hover{transform:scale(1.02)}.link-underline{position:relative}.link-underline:after{content:"";transform-origin:100%;width:100%;height:1px;transition:transform var(--transition-base);background:currentColor;position:absolute;bottom:-2px;left:0;transform:scaleX(0)}.link-underline:hover:after{transform-origin:0;transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--font-primary:"DM Sans", system-ui, -apple-system, sans-serif;--font-mono:"Roboto Mono", Consolas, "Courier New", monospace;--text-xs:.85rem;--text-sm:1rem;--text-base:1.1rem;--text-lg:1.25rem;--text-xl:1.4rem;--text-2xl:1.7rem;--text-3xl:2rem;--link-animation-duration:.3s}@keyframes linkUnderline{0%{width:0}to{width:100%}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;scrollbar-gutter:stable;font-size:16px;line-height:1.6;overflow-x:hidden}body{background:var(--bg-color);width:100%;min-height:100vh;font-family:var(--font-primary);color:var(--text-color);font-size:var(--text-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-weight:300;position:relative;overflow-x:hidden}.astro-code *{font-size:var(--text-xs)}main{width:100%;max-width:680px;margin:0 auto;padding:2rem 1.5rem;position:relative;overflow-x:hidden}.nav-container{flex-wrap:wrap;justify-content:space-between;align-items:center;margin-bottom:2rem;padding:0;display:flex}.site-logo{opacity:.85;align-items:center;text-decoration:none;transition:opacity .2s;display:flex}.site-logo img{border-radius:0}.site-logo:hover{opacity:1}.site-logo:after{display:none}@media (width<=640px){main{padding:1rem}.nav-container{padding:0}}body:before{content:"";background:radial-gradient(ellipse at 50% -5%, var(--glow-color), transparent 65%);z-index:-1;pointer-events:none;height:70vh;position:fixed;top:0;left:0;right:0}.bottom-glow{z-index:-1;pointer-events:none;background:radial-gradient(at 15% 120%,#c8a46e12,#0000 60%);height:40vh;position:fixed;bottom:0;left:0;right:0}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:-.04em;margin-bottom:.75rem;font-weight:300;line-height:1.2}h1{font-size:var(--text-3xl);letter-spacing:-.02em;font-weight:400}h2{font-size:var(--text-2xl);letter-spacing:-.01em;font-weight:300}h3{font-size:var(--text-xl);letter-spacing:-.01em;font-weight:300}h4{font-size:var(--text-lg);letter-spacing:0;font-weight:300}h5{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.04em;font-weight:400}h6{font-size:var(--text-sm);letter-spacing:0;font-weight:300}p{max-width:70ch;margin-bottom:1rem;line-height:1.7}a{color:var(--link-color);transition:opacity var(--link-animation-duration);text-decoration:none;position:relative}a:not(.category-link):after{content:"";width:0;height:1px;transition:width var(--link-animation-duration) ease;background:currentColor;position:absolute;bottom:-2px;left:0}a:not(.category-link):hover:after{width:100%}.section-header a{color:var(--text-color);text-decoration:none}.social-link-pill:after{content:none!important}ul,ol{margin:1.5rem 0;padding-left:1.5rem}li{margin-bottom:.5rem}code,pre{font-family:var(--font-mono);font-weight:400;font-size:var(--text-xs);letter-spacing:0}pre{background:#ffffff0d;border-radius:.5rem;margin:1.5rem 0;padding:1rem;overflow-x:auto}code{background:#ffffff0d;border-radius:.25rem;padding:.2em .4em}pre code{background:0 0;border-radius:0;padding:0}img{border-radius:.5rem;max-width:100%;height:auto;display:block}figure{margin:2rem 0}figcaption{font-size:var(--text-xs);opacity:.8;text-align:center;margin-top:.5rem}input,textarea,select,button{font-family:var(--font-primary);font-size:var(--text-xs);letter-spacing:-.02em;color:inherit;border:1px solid var(--border-color);background:0 0;border-radius:.375rem;padding:.375rem .75rem;font-weight:300}.muted-text{color:var(--text-muted);margin-top:.25rem}button{cursor:pointer;font-weight:400}table{border-collapse:collapse;width:100%;margin:1.5rem 0}th,td{text-align:left;border-bottom:1px solid var(--border-color);padding:.75rem}.subtitle{opacity:.7;font-size:var(--text-lg);margin-top:.5rem}th{font-weight:500}blockquote{border-left:3px solid var(--border-color);margin:1.5rem 0;padding-left:1.5rem;font-style:italic}hr{border:none;border-top:1px solid var(--border-color);margin:2rem 0}::selection{background:var(--hover-bg)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--hover-bg)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-color);opacity:.2}:focus-visible{box-shadow:0 0 0 2px var(--border-color);outline:none}.card{background:var(--hover-bg);border:1px solid var(--border-color);border-radius:.75rem;padding:1.5rem;transition:transform .2s,box-shadow .2s}.card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}h1,h2,h3{color:var(--text-color)}h1 .highlight{background:linear-gradient(120deg, var(--text-color) 40%, var(--accent-color) 100%);-webkit-text-fill-color:transparent;background-clip:text}.image-modal-overlay{z-index:10000;cursor:zoom-out;opacity:0;pointer-events:none;background:#000000d9;justify-content:center;align-items:center;width:100vw;height:100vh;transition:opacity .2s;display:flex;position:fixed;top:0;left:0}.image-modal-overlay.active{opacity:1;pointer-events:auto}.image-modal-overlay img{border-radius:.5rem;max-width:90vw;max-height:90vh;box-shadow:0 4px 32px #00000080}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-mono-cyrillic-ext-400-normal.Q6o0JNvR.woff2)format("woff2"),url(/_astro/roboto-mono-cyrillic-ext-400-normal.C4uWV10k.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-mono-cyrillic-400-normal.DEN69lup.woff2)format("woff2"),url(/_astro/roboto-mono-cyrillic-400-normal.B6g5SoKk.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-mono-greek-400-normal.BdERMBEW.woff2)format("woff2"),url(/_astro/roboto-mono-greek-400-normal.Dp0HotGv.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-mono-vietnamese-400-normal.BJn9WoS4.woff2)format("woff2"),url(/_astro/roboto-mono-vietnamese-400-normal.BJbtp2UX.woff)format("woff");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:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-mono-latin-ext-400-normal.D_EPU6CM.woff2)format("woff2"),url(/_astro/roboto-mono-latin-ext-400-normal.CFnj-Ilb.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:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-mono-latin-400-normal.C_5wUCW5.woff2)format("woff2"),url(/_astro/roboto-mono-latin-400-normal.B0u6u4eV.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}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}nav[data-astro-cid-5upy6dye]{align-items:center;display:flex}.nav-links[data-astro-cid-5upy6dye]{gap:1.5rem;display:flex}.nav-links[data-astro-cid-5upy6dye] a[data-astro-cid-5upy6dye]{color:var(--text-muted);font-size:var(--text-sm);transition:color var(--transition-base);text-decoration:none;position:relative}.nav-links[data-astro-cid-5upy6dye] a[data-astro-cid-5upy6dye]:hover,.nav-links[data-astro-cid-5upy6dye] a[data-astro-cid-5upy6dye].active{color:var(--text-color)}.nav-links[data-astro-cid-5upy6dye] a[data-astro-cid-5upy6dye].active:after{content:"";background:var(--accent-color);width:100%;height:1px;position:absolute;bottom:-2px;left:0}.hamburger[data-astro-cid-5upy6dye]{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;padding:4px;display:none}.hamburger[data-astro-cid-5upy6dye] span[data-astro-cid-5upy6dye]{background:var(--text-muted);border-radius:1px;width:20px;height:1.5px;transition:transform .2s,opacity .2s;display:block}.hamburger[data-astro-cid-5upy6dye].open span[data-astro-cid-5upy6dye]:first-child{transform:translateY(6.5px)rotate(45deg)}.hamburger[data-astro-cid-5upy6dye].open span[data-astro-cid-5upy6dye]:nth-child(2){opacity:0}.hamburger[data-astro-cid-5upy6dye].open span[data-astro-cid-5upy6dye]:nth-child(3){transform:translateY(-6.5px)rotate(-45deg)}.mobile-menu[data-astro-cid-5upy6dye]{border-top:1px solid var(--border-color);flex-direction:column;width:100%;margin-top:.75rem;padding:.5rem 0 1rem;display:flex}.mobile-menu[data-astro-cid-5upy6dye][hidden]{display:none}.mobile-menu[data-astro-cid-5upy6dye] a[data-astro-cid-5upy6dye]{color:var(--text-muted);font-size:var(--text-sm);border-bottom:1px solid var(--border-color);transition:color var(--transition-base);padding:.75rem 0;text-decoration:none}.mobile-menu[data-astro-cid-5upy6dye] a[data-astro-cid-5upy6dye]:last-child{border-bottom:none}.mobile-menu[data-astro-cid-5upy6dye] a[data-astro-cid-5upy6dye].active{color:var(--text-color)}.mobile-menu[data-astro-cid-5upy6dye] a[data-astro-cid-5upy6dye]:after{display:none}@media (width<=768px){.nav-links[data-astro-cid-5upy6dye]{display:none}.hamburger[data-astro-cid-5upy6dye]{display:flex}}
