@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,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) 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}:root{--color-bg: #0a0a0a;--color-surface: #141414;--color-panel: #0d0d0d;--color-border: #262626;--color-border-subtle: #1a1a1a;--color-border-hover: #333333;--color-text-primary: #fafafa;--color-text-secondary: #a3a3a3;--color-text-muted: #7f7f7f;--color-text-emphasis: #d4d4d4;--color-text-strong: #e5e5e5;--color-text-bright: #ffffff;--color-bar-track: #1c1c1c;--color-bar-hi: #e5e5e5;--color-bar-mid: #8a8a8a;--color-bar-lo: #4d4d4d;--shadow-card: 0 0 32px rgba(250, 250, 250, .03);--font-body: "Inter Variable", "Inter", ui-sans-serif, system-ui, sans-serif;--font-mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, monospace;--measure: 760px;color-scheme:dark}:root[data-theme=light]{--color-bg: #faf9f7;--color-surface: #f0eeea;--color-panel: #f5f3ef;--color-border: #ddd8ce;--color-border-subtle: #ece8e0;--color-border-hover: #c2bcb0;--color-text-primary: #1c1917;--color-text-secondary: #57534e;--color-text-muted: #6b6660;--color-text-emphasis: #44403c;--color-text-strong: #292524;--color-text-bright: #000000;--color-bar-track: #eae7df;--color-bar-hi: #35312d;--color-bar-mid: #716b63;--color-bar-lo: #aaa298;--shadow-card: 0 0 32px rgba(28, 25, 23, .06);color-scheme:light}@media (prefers-color-scheme: light){:root:not([data-theme]){--color-bg: #faf9f7;--color-surface: #f0eeea;--color-panel: #f5f3ef;--color-border: #ddd8ce;--color-border-subtle: #ece8e0;--color-border-hover: #c2bcb0;--color-text-primary: #1c1917;--color-text-secondary: #57534e;--color-text-muted: #6b6660;--color-text-emphasis: #44403c;--color-text-strong: #292524;--color-text-bright: #000000;--color-bar-track: #eae7df;--color-bar-hi: #35312d;--color-bar-mid: #716b63;--color-bar-lo: #aaa298;--shadow-card: 0 0 32px rgba(28, 25, 23, .06);color-scheme:light}}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{font-family:var(--font-body);background:var(--color-bg);color:var(--color-text-secondary);line-height:1.6;font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s ease,color .2s ease}a{color:inherit}[hidden]{display:none!important}img{max-width:100%;height:auto}.site{display:flex;flex-direction:column;min-height:100vh}.site>main{flex:1}.mono-micro{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.08em;color:var(--color-text-muted)}.section-label{font-family:var(--font-mono);font-size:.75rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:24px}.inline-link{display:inline-flex;align-items:center;gap:8px;margin-top:28px;font-family:var(--font-mono);font-size:.8125rem;letter-spacing:.04em;color:var(--color-text-primary);text-decoration:none;transition:gap .15s}.inline-link:hover{gap:12px}.muted-note{color:var(--color-text-muted);font-size:.9375rem}.tech-tags{display:flex;flex-wrap:wrap;gap:8px}.tech-tags span,.tech-tags a{font-family:var(--font-mono);font-size:.75rem;padding:4px 12px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-secondary);text-decoration:none;transition:color .15s,border-color .15s}.tech-tags a:hover{color:var(--color-text-primary);border-color:var(--color-border-hover)}.masthead{border-bottom:1px solid var(--color-border)}.masthead-inner{max-width:var(--measure);margin:0 auto;padding:20px 24px;display:flex;align-items:center;justify-content:space-between;gap:24px}.wordmark{font-family:var(--font-mono);font-size:.8125rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-primary);text-decoration:none;white-space:nowrap}.wordmark:hover{color:var(--color-text-bright)}.masthead-nav{display:flex;align-items:center;gap:20px}.masthead-nav a{font-family:var(--font-mono);font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);text-decoration:none;transition:color .15s}.masthead-nav a:hover,.masthead-nav a[aria-current=page]{color:var(--color-text-primary)}.masthead-tools{display:flex;align-items:center;gap:8px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:1px solid transparent;border-radius:6px;color:var(--color-text-muted);cursor:pointer;text-decoration:none;transition:color .15s,border-color .15s,background .15s}.icon-button:hover{color:var(--color-text-primary);border-color:var(--color-border);background:var(--color-surface)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:1px solid transparent;border-radius:6px;color:var(--color-text-muted);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.theme-toggle:hover{color:var(--color-text-primary);border-color:var(--color-border);background:var(--color-surface)}.theme-toggle .icon-sun{display:block}.theme-toggle .icon-moon{display:none}:root[data-theme=light] .theme-toggle .icon-sun{display:none}:root[data-theme=light] .theme-toggle .icon-moon{display:block}@media (prefers-color-scheme: light){:root:not([data-theme]) .theme-toggle .icon-sun{display:none}:root:not([data-theme]) .theme-toggle .icon-moon{display:block}}.page{max-width:var(--measure);margin:0 auto;padding:72px 24px 120px}.page-header{padding-bottom:40px;margin-bottom:40px;border-bottom:1px solid var(--color-border)}.page-header-top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:48px}.page-header h1{font-size:2.5rem;font-weight:700;line-height:1.15;letter-spacing:-.02em;color:var(--color-text-primary);margin:12px 0 16px;text-wrap:balance}.page-lede{font-size:1.125rem;line-height:1.6;color:var(--color-text-secondary);max-width:60ch}.page-header .tech-tags{margin-top:24px}.page-header-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:24px;font-family:var(--font-mono);font-size:.8125rem;color:var(--color-text-muted)}.page-header-meta .dot{opacity:.5}.page-header-meta a{color:var(--color-text-muted);transition:color .15s}.page-header-meta a:hover{color:var(--color-text-primary)}.back-link{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:.8125rem;letter-spacing:.04em;color:var(--color-text-muted);text-decoration:none;transition:color .15s,gap .15s}.back-link:hover{color:var(--color-text-primary);gap:12px}.page-section{padding-top:64px}.page-section:first-of-type{padding-top:0}.intro{padding-bottom:8px}.intro h1{font-size:2.5rem;font-weight:700;line-height:1.1;letter-spacing:-.02em;color:var(--color-text-primary);margin-bottom:16px;text-wrap:balance}.intro .editorial-line{font-size:1.25rem;font-weight:500;color:var(--color-text-emphasis);margin-bottom:20px}.intro p+p{margin-top:14px}.intro .intro-body{font-size:1.0625rem;color:var(--color-text-secondary);max-width:62ch}.card{border:1px solid var(--color-border);border-radius:12px;padding:32px;background:var(--color-bg);transition:background .25s,border-color .25s,box-shadow .25s}.card:hover{background:var(--color-surface);border-color:var(--color-border-hover);box-shadow:var(--shadow-card)}a.card{display:block;text-decoration:none;color:inherit}.card h3{font-size:1.5rem;font-weight:700;line-height:1.2;color:var(--color-text-primary);margin-bottom:12px;text-wrap:balance}.card .tagline{font-size:1.125rem;font-weight:500;color:var(--color-text-emphasis);margin-bottom:16px}.card .description{font-size:1rem;line-height:1.6;color:var(--color-text-secondary);margin-bottom:24px}.card .header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.card .logo{width:32px;height:32px}.card .links{display:flex;flex-wrap:wrap;gap:8px 28px;margin-bottom:24px}.card .link{display:inline-flex;align-items:center;gap:8px;font-size:1rem;font-weight:500;color:var(--color-text-primary);text-decoration:none;transition:gap .15s,color .15s}.card .link:hover{gap:12px;color:var(--color-text-bright)}.card .inline-link{margin-top:4px}.selected-list{display:flex;flex-direction:column}.selected-item{display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding:14px 0;border-bottom:1px solid var(--color-border-subtle);text-decoration:none;color:inherit;transition:color .15s}.selected-item:last-child{border-bottom:none}.selected-item .title{font-size:1.0625rem;font-weight:500;color:var(--color-text-primary);text-wrap:balance}.selected-item .year{font-family:var(--font-mono);font-size:.8125rem;color:var(--color-text-muted);white-space:nowrap}.selected-item:hover .title{color:var(--color-text-bright)}.about-actions{display:flex;flex-wrap:wrap;gap:28px}.about-actions .inline-link{margin-top:20px}.prose-block p{font-size:1rem;line-height:1.6;color:var(--color-text-secondary);max-width:62ch}.prose-block p+p{margin-top:18px}.post-list{display:flex;flex-direction:column;gap:8px}.post-card{display:block;padding:20px;margin:0 -20px;border-radius:8px;text-decoration:none;color:inherit;transition:background .2s}.post-card:hover{background:var(--color-surface)}.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-family:var(--font-mono);font-size:.8125rem;color:var(--color-text-muted);margin-bottom:8px}.post-meta .dot{opacity:.5}.post-card h3{font-size:1.125rem;font-weight:600;color:var(--color-text-primary);margin-bottom:8px;display:flex;align-items:center;gap:8px;text-wrap:balance}.post-card p{font-size:1rem;color:var(--color-text-secondary);max-width:62ch}.post-card .tech-tags{margin-top:14px}.post-card.full{border-bottom:1px solid var(--color-border);border-radius:8px 8px 0 0}.post-list .post-card.full:last-child{border-bottom:none}.topic-cloud{display:flex;flex-wrap:wrap;gap:10px}.topic-chip{display:inline-flex;align-items:baseline;gap:8px;padding:6px 14px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);font-family:var(--font-mono);font-size:.8125rem;color:var(--color-text-secondary);text-decoration:none;transition:color .15s,border-color .15s}.topic-chip:hover{color:var(--color-text-primary);border-color:var(--color-border-hover)}.topic-chip .count{font-size:.6875rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.newsletter{border:1px solid var(--color-border);border-radius:8px;background:var(--color-panel);padding:28px}.newsletter h2,.newsletter .newsletter-title{font-size:1.125rem;font-weight:600;color:var(--color-text-primary);margin-bottom:8px;letter-spacing:normal;text-transform:none;font-family:var(--font-body)}.newsletter p{font-size:.9375rem;color:var(--color-text-secondary);max-width:58ch}.newsletter-form{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.newsletter-form input[type=email]{flex:1 1 240px;min-height:36px;padding:0 12px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-primary);font-family:var(--font-mono);font-size:.8125rem}.newsletter-form input[type=email]::placeholder{color:var(--color-text-muted)}.newsletter-form input[type=email]:focus{border-color:var(--color-border-hover);outline:none}.newsletter-form button{min-height:36px;padding:0 16px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-primary);font-family:var(--font-mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:border-color .15s,color .15s}.newsletter-form button:hover:not(:disabled){border-color:var(--color-border-hover);color:var(--color-text-bright)}.newsletter-form button:disabled{opacity:.6;cursor:default}.newsletter-form .trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.newsletter-note{margin-top:14px;font-size:.8125rem;color:var(--color-text-muted)}.newsletter-status{margin-top:14px;font-family:var(--font-mono);font-size:.8125rem;color:var(--color-text-primary)}.newsletter-status[data-state=error]{color:var(--color-text-emphasis)}.search-form{display:flex;gap:8px;margin-bottom:32px}.search-form input[type=search]{flex:1;min-height:44px;padding:0 14px;background:var(--color-panel);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-primary);font-family:var(--font-body);font-size:1rem}.search-form input[type=search]::placeholder{color:var(--color-text-muted)}.search-form input[type=search]:focus{border-color:var(--color-border-hover);outline:none}.search-count{font-family:var(--font-mono);font-size:.8125rem;color:var(--color-text-muted);margin-bottom:16px}.search-result mark{background:none;color:var(--color-text-primary);font-weight:600}.article-series{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}.article-series a{color:var(--color-text-primary);text-decoration:none}.translation-note{margin-top:24px;font-family:var(--font-mono);font-size:.8125rem}.translation-note a{color:var(--color-text-muted);text-decoration:none;border-bottom:1px dashed var(--color-border);padding-bottom:2px;transition:color .15s,border-color .15s}.translation-note a:hover{color:var(--color-text-primary);border-bottom-color:var(--color-text-muted)}.canonical-note{margin-top:16px;font-size:.8125rem;color:var(--color-text-muted)}.canonical-note a{color:var(--color-text-secondary)}.toc{margin-bottom:48px;padding:20px 24px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-panel)}.toc-label{font-family:var(--font-mono);font-size:.6875rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:14px}.toc ol{list-style:none;counter-reset:toc;display:flex;flex-direction:column;gap:8px}.toc li{counter-increment:toc;display:flex;gap:12px;font-size:.9375rem}.toc li:before{content:counter(toc,decimal-leading-zero);font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted);padding-top:3px}.toc a{color:var(--color-text-secondary);text-decoration:none;transition:color .15s}.toc a:hover{color:var(--color-text-primary)}.prose{font-size:1.0625rem;line-height:1.7;color:var(--color-text-secondary)}.prose>*+*{margin-top:24px}.prose h2{font-size:1.5rem;font-weight:650;letter-spacing:-.01em;color:var(--color-text-primary);margin-top:64px;padding-top:24px;border-top:1px solid var(--color-border);text-wrap:balance}.prose h3{font-size:1.1875rem;font-weight:600;color:var(--color-text-primary);margin-top:44px;text-wrap:balance}.prose h4{font-size:1rem;font-weight:600;color:var(--color-text-emphasis);margin-top:32px}.prose p{max-width:68ch}.prose strong{color:var(--color-text-strong);font-weight:600}.prose em{color:var(--color-text-secondary)}.prose a{color:var(--color-text-primary);text-decoration:none;border-bottom:1px solid var(--color-border);transition:border-color .15s}.prose a:hover{border-bottom-color:var(--color-text-primary)}.prose ul,.prose ol{padding-left:22px;max-width:68ch}.prose li+li{margin-top:8px}.prose li::marker{color:var(--color-text-muted)}.prose blockquote{border-left:2px solid var(--color-border);padding-left:20px;color:var(--color-text-muted);font-style:normal}.prose code{font-family:var(--font-mono);font-size:.875em;background:var(--color-surface);border:1px solid var(--color-border);padding:1px 5px;border-radius:4px;color:var(--color-text-emphasis)}.prose pre{background:var(--color-surface);border:1px solid var(--color-border);padding:18px 20px;border-radius:8px;overflow-x:auto;font-size:.875rem;line-height:1.6}.prose pre code{background:none;border:none;padding:0;font-size:inherit}.prose pre.astro-code{background-color:var(--color-surface)!important}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark, inherit)!important;font-style:var(--shiki-dark-font-style, inherit)!important;font-weight:var(--shiki-dark-font-weight, inherit)!important;text-decoration:var(--shiki-dark-text-decoration, inherit)!important}@media (prefers-color-scheme: dark){:root:not([data-theme]) .astro-code,:root:not([data-theme]) .astro-code span{color:var(--shiki-dark, inherit)!important;font-style:var(--shiki-dark-font-style, inherit)!important;font-weight:var(--shiki-dark-font-weight, inherit)!important;text-decoration:var(--shiki-dark-text-decoration, inherit)!important}}.prose hr{border:none;border-top:1px solid var(--color-border);margin:56px 0}.prose img{max-width:100%;height:auto;border-radius:8px}.prose figure{margin:40px 0}.prose figcaption{margin-top:12px;font-size:.8125rem;color:var(--color-text-muted)}.prose .table-wrap,.prose table{display:block;overflow-x:auto}.prose table{width:100%;border-collapse:collapse;font-size:.875rem;font-variant-numeric:tabular-nums;white-space:nowrap}.prose thead th{text-align:left;font-family:var(--font-mono);font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);padding:0 16px 10px 0;border-bottom:1px solid var(--color-border)}.prose tbody td{padding:9px 16px 9px 0;border-bottom:1px solid var(--color-border-subtle);color:var(--color-text-secondary)}.prose tbody tr:last-child td{border-bottom:none}.prose tbody td strong{color:var(--color-text-primary)}.prose h2>a,.prose h3>a,.prose h4>a{border-bottom:none}.prose .heading-anchor{margin-left:10px;color:var(--color-text-muted);opacity:0;font-weight:400;transition:opacity .15s}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor,.prose h4:hover .heading-anchor,.prose .heading-anchor:focus-visible{opacity:1}.prose .footnotes{margin-top:64px;padding-top:24px;border-top:1px solid var(--color-border);font-size:.9375rem;color:var(--color-text-muted)}.prose .footnotes h2{font-size:.75rem;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-muted);border-top:none;margin-top:0;padding-top:0}.prose .footnotes li{max-width:68ch}.prose .footnotes p{display:inline}.prose sup a{border-bottom:none;font-family:var(--font-mono);font-size:.75em;padding:0 2px}.code-block{position:relative}.copy-code{position:absolute;top:10px;right:10px;min-height:28px;padding:0 10px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-muted);font-family:var(--font-mono);font-size:.6875rem;cursor:pointer;opacity:0;transition:opacity .15s,color .15s,border-color .15s}.code-block:hover .copy-code,.copy-code:focus-visible{opacity:1}.copy-code:hover{color:var(--color-text-primary);border-color:var(--color-border-hover)}.article-footer{margin-top:72px;padding-top:32px;border-top:1px solid var(--color-border)}.article-block{margin-top:56px}.article-block>.section-label{margin-bottom:8px}.article-block .block-lede{font-size:.9375rem;color:var(--color-text-muted);margin-bottom:20px;max-width:58ch}.discussion-links{display:flex;flex-wrap:wrap;gap:10px}.discussion-link{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-secondary);font-family:var(--font-mono);font-size:.75rem;text-decoration:none;transition:color .15s,border-color .15s}.discussion-link:hover{color:var(--color-text-primary);border-color:var(--color-border-hover)}.changelog{display:flex;flex-direction:column;gap:10px}.changelog li{display:flex;gap:16px;list-style:none;font-size:.9375rem;color:var(--color-text-secondary)}.changelog time{font-family:var(--font-mono);font-size:.8125rem;color:var(--color-text-muted);white-space:nowrap;padding-top:2px}.share{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.share-label{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.share-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.share-btn{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 12px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-secondary);font-family:var(--font-mono);font-size:.75rem;text-decoration:none;cursor:pointer;transition:color .15s,border-color .15s,background .15s}.share-btn:hover{color:var(--color-text-primary);border-color:var(--color-border-hover)}.share-btn.icon-only{padding:0;width:36px;justify-content:center}.share-btn.done{color:var(--color-text-primary);border-color:var(--color-text-muted)}.lang-switch{display:flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:.75rem;letter-spacing:.08em}.lang-switch[data-align=end]{justify-content:flex-end}.lang-option{padding:4px 8px;border-radius:4px;color:var(--color-text-muted);text-decoration:none;border:1px solid transparent;transition:color .15s,border-color .15s,background .15s}.lang-option:hover{color:var(--color-text-primary)}.lang-option.current{color:var(--color-text-primary);border-color:var(--color-border);background:var(--color-surface)}.lang-option.disabled{opacity:.35;cursor:not-allowed}.site-footer{border-top:1px solid var(--color-border);margin-top:64px}.site-footer-inner{max-width:var(--measure);margin:0 auto;padding:32px 24px 48px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px}.site-footer nav{display:flex;flex-wrap:wrap;gap:16px}.site-footer nav a,.site-footer .colophon{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.06em;color:var(--color-text-muted);text-decoration:none;transition:color .15s}.site-footer nav a:hover{color:var(--color-text-primary)}.footer-meta{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.social{display:flex;gap:16px}.social a{color:var(--color-text-muted);transition:color .15s;display:inline-flex}.social a:hover{color:var(--color-text-primary)}.experience-list{display:flex;flex-direction:column;gap:40px}.experience-item{display:grid;grid-template-columns:140px 1fr;gap:24px;padding:20px;margin:0 -20px;border-radius:8px;transition:background .2s}.experience-item:hover{background:var(--color-surface)}.experience-item .date{font-family:var(--font-mono);font-size:.875rem;color:var(--color-text-muted);padding-top:4px}.experience-item h3{font-size:1.0625rem;font-weight:600;color:var(--color-text-primary);margin-bottom:8px}.experience-item p{font-size:1rem;line-height:1.6;color:var(--color-text-secondary);margin-bottom:16px}.project-list{display:flex;flex-direction:column;gap:20px}.project-status{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:10px}.flui-diagram{--flui-bg: var(--color-bg);--flui-bg-1: var(--color-panel);--flui-panel: var(--color-surface);--flui-panel-2: var(--color-bar-track);--flui-border: var(--color-border);--flui-border-2: var(--color-border-hover);--flui-fg: var(--color-text-primary);--flui-fg-2: var(--color-text-secondary);--flui-muted: var(--color-text-muted);--flui-accent: var(--color-text-bright);--flui-accent-soft: color-mix(in srgb, var(--color-text-bright) 7%, transparent)}.flui-diagram .scroll{overflow-x:auto}.flui-diagram svg{min-width:600px;width:100%;height:auto;display:block;font-family:var(--font-body)}.chart{margin:36px 0;border:1px solid var(--color-border);border-radius:8px;padding:24px;background:var(--color-panel)}.chart-title{font-size:.9375rem;font-weight:600;color:var(--color-text-primary);margin-bottom:4px}.chart-sub{font-size:.8125rem;color:var(--color-text-muted);margin-bottom:20px;max-width:60ch}.chart-rows{display:grid;grid-template-columns:minmax(0,max-content) 1fr minmax(0,max-content);align-items:center;gap:8px 14px}.chart-rows .k{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted);white-space:nowrap}.chart-rows .v{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-primary);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}.chart-rows .v small{color:var(--color-text-muted)}.bar-track{position:relative;height:14px;background:var(--color-bar-track);border-radius:3px;overflow:hidden;display:flex;gap:2px}.bar-fill{height:100%;background:var(--color-bar-hi);border-radius:0 3px 3px 0}.bar-fill.mid{background:var(--color-bar-mid)}.bar-fill.low{background:var(--color-bar-lo)}.chart-legend{display:flex;flex-wrap:wrap;gap:18px;margin-bottom:18px;font-size:.75rem;color:var(--color-text-muted)}.chart-legend span{display:inline-flex;align-items:center;gap:7px}.chart-legend i{width:10px;height:10px;border-radius:2px;background:var(--color-bar-hi);display:inline-block}.chart-legend i.mid{background:var(--color-bar-mid)}.chart-legend i.low{background:var(--color-bar-lo)}.chart-note{margin-top:18px;font-size:.8125rem;color:var(--color-text-muted);max-width:62ch}.bar-group{display:flex;flex-direction:column;gap:3px}.bar-group .bar-track{height:8px}.chart-scale{display:flex;justify-content:space-between;margin-top:10px;padding-top:6px;border-top:1px solid var(--color-border);font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;padding:12px 16px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-primary);font-family:var(--font-mono);font-size:.8125rem;text-decoration:none}.skip-link:focus{left:16px;top:16px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--color-text-primary);outline-offset:3px;border-radius:3px}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (max-width: 767px){.masthead-inner{flex-wrap:wrap;gap:12px 16px;padding:16px 20px}.masthead-nav{order:3;flex-basis:100%;flex-wrap:wrap;gap:14px}.page{padding:40px 20px 80px}.page-header h1{font-size:2rem}.page-header-top{margin-bottom:32px}.intro h1{font-size:2rem}.intro .editorial-line{font-size:1.125rem}.page-section{padding-top:48px}.card{padding:20px}.prose{font-size:1rem}.prose h2{font-size:1.3125rem;margin-top:48px}.selected-item{flex-direction:column;align-items:flex-start;gap:4px}.experience-item{grid-template-columns:1fr;gap:12px}.newsletter{padding:20px}.newsletter-form input[type=email]{flex-basis:100%}.newsletter-form button{width:100%}.chart{padding:18px 14px}.chart-rows{grid-template-columns:1fr;gap:4px}.chart-rows .v{text-align:left}.site-footer-inner{flex-direction:column;align-items:flex-start}}@media print{:root{--color-bg: #ffffff;--color-surface: #ffffff;--color-panel: #ffffff;--color-border: #cccccc;--color-border-subtle: #e5e5e5;--color-text-primary: #000000;--color-text-secondary: #1a1a1a;--color-text-muted: #555555;--color-text-emphasis: #000000;--color-text-strong: #000000;--color-bar-track: #eeeeee;--color-bar-hi: #333333;--color-bar-mid: #777777;--color-bar-lo: #bbbbbb}body{background:#fff;color:#000;font-size:11pt}.masthead,.site-footer,.share,.newsletter,.copy-code,.lang-switch,.theme-toggle,.skip-link,.back-link,.search-form,.article-block--related{display:none!important}.page{max-width:none;padding:0}.prose{font-size:11pt;line-height:1.5}.prose a{border-bottom:none;text-decoration:underline}.prose a[href^=http]:after{content:" (" attr(href) ")";font-size:9pt;color:#555;word-break:break-all}.prose h2,.prose h3,.prose h4{break-after:avoid}.prose pre,.prose figure,.prose table,.chart{break-inside:avoid}.toc{break-after:page}@page{margin:18mm 16mm}}
