.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}.ambient-toggle[data-astro-cid-h25gmgn6]{position:fixed;right:18px;bottom:18px;z-index:200;display:inline-flex;align-items:center;gap:6px;padding:8px 12px;background:var(--bg-primary);color:var(--text-secondary);border:.5px solid var(--border);border-radius:999px;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;cursor:pointer;box-shadow:0 2px 12px #00000014;transition:color .2s,border-color .2s,transform .2s;text-transform:uppercase}.ambient-toggle[data-astro-cid-h25gmgn6]:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-1px)}.ambient-toggle[data-astro-cid-h25gmgn6].is-on .ambient-toggle__icon[data-astro-cid-h25gmgn6]{animation:ambient-pulse 2.6s ease-in-out infinite;color:var(--accent)}.ambient-toggle[data-astro-cid-h25gmgn6].is-needs-tap{animation:ambient-glow 1.6s ease-in-out infinite;border-color:var(--accent);color:var(--accent)}.ambient-toggle__icon[data-astro-cid-h25gmgn6]{font-size:13px}@keyframes ambient-pulse{0%,to{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.18)}}@keyframes ambient-glow{0%,to{box-shadow:0 2px 12px #00000014}50%{box-shadow:0 0 0 8px #a32d2d38}}@media(max-width:640px){.ambient-toggle[data-astro-cid-h25gmgn6]{right:12px;bottom:12px;padding:6px 10px;font-size:10px}}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/source-serif-4-cyrillic-ext-wght-normal.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/source-serif-4-cyrillic-wght-normal.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/source-serif-4-greek-wght-normal.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/source-serif-4-vietnamese-wght-normal.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/source-serif-4-latin-ext-wght-normal.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/source-serif-4-latin-wght-normal.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./files/inter-cyrillic-ext-wght-normal.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(./files/inter-cyrillic-wght-normal.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(./files/inter-greek-ext-wght-normal.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(./files/inter-greek-wght-normal.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(./files/inter-vietnamese-wght-normal.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(./files/inter-latin-ext-wght-normal.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(./files/inter-latin-wght-normal.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./files/ibm-plex-mono-cyrillic-ext-400-normal.woff2) format("woff2"),url(./files/ibm-plex-mono-cyrillic-ext-400-normal.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./files/ibm-plex-mono-cyrillic-400-normal.woff2) format("woff2"),url(./files/ibm-plex-mono-cyrillic-400-normal.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./files/ibm-plex-mono-vietnamese-400-normal.woff2) format("woff2"),url(./files/ibm-plex-mono-vietnamese-400-normal.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./files/ibm-plex-mono-latin-ext-400-normal.woff2) format("woff2"),url(./files/ibm-plex-mono-latin-ext-400-normal.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./files/ibm-plex-mono-latin-400-normal.woff2) format("woff2"),url(./files/ibm-plex-mono-latin-400-normal.woff) format("woff");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-primary: #FAFAF7;--bg-secondary: #F0EFE9;--bg-card: #FFFFFF;--text-primary: #1A1C20;--text-secondary: #5C5E64;--text-tertiary: #8E9096;--border: rgba(26, 28, 32, .08);--border-hover: rgba(26, 28, 32, .18);--accent: #A32D2D;--accent-dark: #791F1F;--accent-bg: #FCEBEB;--accent-text: #501313;--warning-bg: #FAEEDA;--warning-text: #854F0B;--font-serif: "Source Serif 4 Variable", "Source Serif 4", Georgia, serif;--font-sans: "Inter Variable", "Inter", -apple-system, system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--text-h1: 42px;--text-h2: 28px;--text-h3: 20px;--text-h4: 16px;--text-body: 16px;--text-small: 13px;--text-meta: 12px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--space-16: 4rem;--space-24: 6rem;--gap-1: 4px;--gap-2: 8px;--gap-3: 12px;--gap-4: 16px;--gap-6: 24px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--transition-fast: .15s ease-out;--transition-base: .2s ease-out;--transition-slow: .35s ease-out;--max-width: 1280px;--content-width: 720px;--sidebar-width: 280px}[data-theme=dark]{--bg-primary: #1F2025;--bg-secondary: #262830;--bg-card: #2B2D35;--text-primary: #F2F0EA;--text-secondary: #B8B6AE;--text-tertiary: #7E7D76;--border: rgba(242, 240, 234, .1);--border-hover: rgba(242, 240, 234, .22);--accent-bg: rgba(163, 45, 45, .2);--accent-text: #F09595;--warning-bg: rgba(133, 79, 11, .22);--warning-text: #FAC775}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{min-height:100vh;line-height:1.65;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,video,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}a{color:inherit}ul,ol{list-style:none}table{border-collapse:collapse}body{font-family:var(--font-sans);font-size:var(--text-body);color:var(--text-primary);background-color:var(--bg-primary)}h1,h2,h3{font-family:var(--font-serif);font-weight:500;line-height:1.2;letter-spacing:-.01em}h1{font-size:var(--text-h1);line-height:1.1;letter-spacing:-.02em}h2{font-size:var(--text-h2);line-height:1.3}h3{font-size:var(--text-h3)}h4{font-family:var(--font-sans);font-size:var(--text-h4);font-weight:500;line-height:1.4}p{line-height:1.65}small{font-size:var(--text-small)}.meta{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.02em;color:var(--text-secondary)}.prose{max-width:var(--content-width);color:var(--text-primary)}.prose h2{margin-top:var(--space-12);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:.5px solid var(--border)}.prose h3{margin-top:var(--space-8);margin-bottom:var(--space-3)}.prose h4{margin-top:var(--space-6);margin-bottom:var(--space-2)}.prose p{margin-bottom:var(--space-4)}.prose ul,.prose ol{padding-left:var(--space-6);margin-bottom:var(--space-4)}.prose ul li,.prose ol li{list-style:disc;margin-bottom:var(--space-2);line-height:1.6}.prose ol li{list-style:decimal}.prose blockquote{border-left:3px solid var(--accent);padding-left:var(--space-4);margin:var(--space-8) 0;color:var(--text-secondary);font-style:italic}.prose table{width:100%;border-collapse:collapse;margin:var(--space-6) 0;font-size:var(--text-small)}.prose table th{font-family:var(--font-mono);font-weight:400;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);background:var(--bg-secondary);padding:var(--gap-2) var(--gap-4);text-align:left;border-bottom:1px solid var(--border)}.prose table td{padding:var(--gap-2) var(--gap-4);border-bottom:.5px solid var(--border);vertical-align:top;line-height:1.5}.prose table tr:last-child td{border-bottom:none}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.prose a:hover{color:var(--accent-dark)}.prose strong{font-weight:500}.prose code{font-family:var(--font-mono);font-size:.875em;background:var(--bg-secondary);padding:1px 5px;border-radius:var(--radius-sm)}.prose hr{border:none;border-top:.5px solid var(--border);margin:var(--space-8) 0}.container{max-width:var(--max-width);margin-inline:auto;padding-inline:var(--space-8)}@media(max-width:640px){.container{padding-inline:var(--space-4)}}.btn{display:inline-flex;align-items:center;gap:var(--gap-2);padding:10px var(--gap-6);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-small);font-weight:500;cursor:pointer;border:1px solid transparent;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast);text-decoration:none;white-space:nowrap}.btn--primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn--primary:hover{background:var(--accent-dark);border-color:var(--accent-dark)}.btn--ghost{background:transparent;color:var(--text-primary);border-color:var(--border-hover)}.btn--ghost:hover{border-color:var(--accent);color:var(--accent)}.link{color:var(--accent);text-decoration:underline;text-underline-offset:2px;font-size:var(--text-small);transition:color var(--transition-fast)}.link:hover{color:var(--accent-dark)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.reveal-on-scroll{opacity:0;transform:translateY(28px) scale(.985);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);will-change:opacity,transform}.reveal-on-scroll.is-revealed{opacity:1;transform:translateY(0) scale(1)}.reveal-stagger>*{opacity:0;transform:translateY(20px);transition:opacity .5s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1)}.reveal-stagger.is-revealed>*{opacity:1;transform:translateY(0)}.reveal-stagger.is-revealed>*:nth-child(1){transition-delay:0ms}.reveal-stagger.is-revealed>*:nth-child(2){transition-delay:80ms}.reveal-stagger.is-revealed>*:nth-child(3){transition-delay:.16s}.reveal-stagger.is-revealed>*:nth-child(4){transition-delay:.24s}.reveal-stagger.is-revealed>*:nth-child(5){transition-delay:.32s}.reveal-stagger.is-revealed>*:nth-child(6){transition-delay:.4s}.reveal-stagger.is-revealed>*:nth-child(7){transition-delay:.48s}.reveal-stagger.is-revealed>*:nth-child(8){transition-delay:.56s}.reveal-stagger.is-revealed>*:nth-child(n+9){transition-delay:.64s}.hero-reveal-on-load>*{opacity:0;transform:translateY(20px);animation:hero-rise .9s cubic-bezier(.2,.7,.2,1) forwards}.hero-reveal-on-load>*:nth-child(1){animation-delay:0ms}.hero-reveal-on-load>*:nth-child(2){animation-delay:.12s}.hero-reveal-on-load>*:nth-child(3){animation-delay:.24s}.hero-reveal-on-load>*:nth-child(4){animation-delay:.36s}.hero-reveal-on-load>*:nth-child(5){animation-delay:.48s}@keyframes hero-rise{to{opacity:1;transform:translateY(0)}}::view-transition-old(root){animation:vt-fade-out .35s cubic-bezier(.4,0,.6,1) both}::view-transition-new(root){animation:vt-fade-in .48s cubic-bezier(.2,.7,.2,1) both}@keyframes vt-fade-out{to{opacity:0;transform:translateY(-12px) scale(.992)}}@keyframes vt-fade-in{0%{opacity:0;transform:translateY(18px) scale(1.008)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.reveal-on-scroll,.reveal-stagger>*,.hero-reveal-on-load>*{opacity:1!important;transform:none!important;animation:none!important;transition:none!important}::view-transition-old(root),::view-transition-new(root){animation:none!important}}
