@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-cyrillic-ext-400-normal.fe77cf74.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-cyrillic-ext-400-normal.c53594e1.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-cyrillic-400-normal.03c3c250.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-cyrillic-400-normal.f9650ffc.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-greek-400-normal.5f160bba.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-greek-400-normal.bedb8549.woff) format("woff");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-vietnamese-400-normal.7f721ef5.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-vietnamese-400-normal.072f5433.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-latin-ext-400-normal.20dd57fa.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-latin-ext-400-normal.40b9fc05.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-latin-400-normal.13a15bcd.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-latin-400-normal.48b78688.woff) format("woff");unicode-range:u+00??,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 Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-cyrillic-ext-400-italic.11f59629.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-cyrillic-ext-400-italic.5a5278b1.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 Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-cyrillic-400-italic.95352d1a.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-cyrillic-400-italic.44680986.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-greek-400-italic.5ee4f4a4.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-greek-400-italic.a0f1bde5.woff) format("woff");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-vietnamese-400-italic.123c2373.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-vietnamese-400-italic.a7b8630a.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 Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-latin-ext-400-italic.ab1e94f3.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-latin-ext-400-italic.a64bb0f1.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 Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-sans-latin-400-italic.7c7f8877.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-latin-400-italic.fdd57a3a.woff) format("woff");unicode-range:u+00??,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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-sans-cyrillic-ext-500-normal.926ddd5b.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-cyrillic-ext-500-normal.cfe07773.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-sans-cyrillic-500-normal.8f83abe5.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-cyrillic-500-normal.b36047ca.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-sans-greek-500-normal.e5c8b350.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-greek-500-normal.0f811c39.woff) format("woff");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-sans-vietnamese-500-normal.4e93e369.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-vietnamese-500-normal.7649f465.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-sans-latin-ext-500-normal.91b576dd.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-latin-ext-500-normal.e617d40b.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-sans-latin-500-normal.4cdcd386.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-latin-500-normal.f8dd458c.woff) format("woff");unicode-range:u+00??,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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-sans-cyrillic-ext-600-normal.399ec1c9.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-cyrillic-ext-600-normal.a53cdf56.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-sans-cyrillic-600-normal.015f312d.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-cyrillic-600-normal.fdcd15f2.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-sans-greek-600-normal.6cd27d8b.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-greek-600-normal.30fba19a.woff) format("woff");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-sans-vietnamese-600-normal.4aa57cdf.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-vietnamese-600-normal.ea0cd549.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-sans-latin-ext-600-normal.cb6ca6c6.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-latin-ext-600-normal.73c474de.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-sans-latin-600-normal.1cdb9a2c.woff2) format("woff2"),url(/_next/static/media/ibm-plex-sans-latin-600-normal.0eddcd6d.woff) format("woff");unicode-range:u+00??,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(/_next/static/media/ibm-plex-mono-cyrillic-ext-400-normal.66a2e865.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-cyrillic-ext-400-normal.88f8fd5b.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(/_next/static/media/ibm-plex-mono-cyrillic-400-normal.651bc97e.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-cyrillic-400-normal.9533b520.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(/_next/static/media/ibm-plex-mono-vietnamese-400-normal.110e2a76.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-vietnamese-400-normal.7d495472.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(/_next/static/media/ibm-plex-mono-latin-ext-400-normal.9faee8e8.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-latin-ext-400-normal.f14ffb91.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(/_next/static/media/ibm-plex-mono-latin-400-normal.06ac09dc.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-latin-400-normal.e32cf7a4.woff) format("woff");unicode-range:u+00??,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{--canvas:#f8fafc;--surface:#ffffff;--surface-subtle:#f1f4f7;--text:#172033;--text-muted:#5b6472;--border:#dbe1e8;--border-strong:#bcc5d0;--accent:#145f82;--accent-hover:#0b4968;--focus:#187ba5;--code:#111827;--code-text:#f3f4f6;--selection:#c7e9f7;--shell:min(1120px,calc(100vw - 48px));--measure:70ch;--radius:6px;--font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Consolas,monospace}:root[data-theme=dark]{--canvas:#0f141b;--surface:#151c25;--surface-subtle:#1b2430;--text:#e8edf3;--text-muted:#a5afbd;--border:#2a3441;--border-strong:#435064;--accent:#78c4e5;--accent-hover:#a0d9ef;--focus:#78c4e5;--code:#090d12;--code-text:#f3f4f6;--selection:#244e63}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5rem}body{margin:0;background:var(--canvas);color:var(--text);font-family:IBM Plex Sans,ui-sans-serif,system-ui,sans-serif;font-size:1rem;line-height:1.65;text-rendering:optimizeLegibility}b,h1,h2,h3,h4,h5,h6,strong{font-weight:600}::selection{background:var(--selection)}*{scrollbar-color:var(--border-strong) var(--canvas);scrollbar-width:thin}a{color:var(--accent);text-decoration-color:color-mix(in srgb,currentColor 45%,transparent);text-decoration-thickness:1px;text-underline-offset:.2em}a:hover{color:var(--accent-hover);text-decoration-color:currentColor}button,input{font:inherit}a,button{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}img{max-width:100%}.shell{width:var(--shell);margin-inline:auto}.skip-link{position:fixed;z-index:100;top:.75rem;left:.75rem;padding:.55rem .8rem;border-radius:var(--radius);background:var(--text);color:var(--canvas);transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.site-header{position:relative;z-index:20;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--canvas) 94%,transparent)}.header-inner{display:flex;min-height:4rem;align-items:stretch;justify-content:space-between}.site-mark{display:flex;align-items:center;text-decoration:none}.site-mark,.site-mark:hover{color:var(--text)}.site-mark strong{font-size:1.05rem;letter-spacing:-.015em}.primary-nav{display:flex;align-items:stretch;gap:.25rem}.primary-nav>a,.primary-nav>button{display:flex;align-items:center;justify-content:center;padding-inline:.75rem;border:0;background:transparent;color:var(--text-muted);font-size:.875rem;font-weight:500;text-decoration:none}.primary-nav>a:hover,.primary-nav>button:hover{color:var(--text)}.search-link{gap:.4rem}.primary-nav>.theme-toggle{width:2.5rem;height:auto;align-self:stretch}.icon-button{display:inline-grid;width:2.5rem;height:2.5rem;cursor:pointer;place-items:center;border:0;border-radius:var(--radius);background:transparent;color:var(--text-muted)}.icon-button:hover{background:var(--surface-subtle);color:var(--text)}.menu-button{display:none;align-self:center}.home-shell{max-width:54rem;padding-block:clamp(3.5rem,7vw,5.5rem)}.home-intro{margin-bottom:clamp(3rem,6vw,4.5rem)}.home-intro h1{margin:0;font-size:clamp(2.25rem,5vw,3.5rem);letter-spacing:-.04em;line-height:1.05}.home-intro p{max-width:46ch;margin:.75rem 0 0;color:var(--text-muted);font-size:1.0625rem}.home-posts .post-list{border-top:1px solid var(--border-strong)}.home-archive-link{display:inline-block;margin-top:1.5rem;font-size:.9375rem;font-weight:600}.primary-action{display:inline-flex;min-height:2.75rem;align-items:center;padding:.6rem .9rem;border:1px solid var(--text);border-radius:var(--radius);background:var(--text);color:var(--canvas);font-weight:600;text-decoration:none}.primary-action:hover{border-color:var(--accent);background:var(--accent);color:var(--surface)}.post-list{margin:0;padding:0;list-style:none}.post-list>li{border-bottom:1px solid var(--border)}.post-row{display:grid;grid-template-columns:minmax(0,1fr) 9rem;gap:2rem;align-items:start;padding:1.5rem 0;color:var(--text);text-decoration:none}.post-row-meta{display:flex;grid-column:2;grid-row:1;flex-direction:column;align-items:flex-end;color:var(--text-muted);font-family:var(--font-mono);font-size:.8125rem;line-height:1.45}.post-row-main{grid-column:1;grid-row:1}.post-row h2,.post-row h3{margin:0;font-size:1.3rem;letter-spacing:-.018em;line-height:1.25}.post-row:hover h2,.post-row:hover h3{color:var(--accent-hover)}.post-row p{max-width:64ch;margin:.45rem 0 0;color:var(--text-muted);font-size:.9375rem}.post-list-compact .post-row{padding-block:1rem}.post-list-compact .post-row h2,.post-list-compact .post-row h3{font-size:1.0625rem}.text-action{align-self:end;color:var(--accent);font-size:.9375rem;font-weight:600}.page-shell{min-height:60vh;padding-block:clamp(3.5rem,7vw,6rem)}.page-heading{margin-bottom:3.5rem}.page-heading h1{margin:0;font-size:clamp(2.25rem,5vw,3.75rem);letter-spacing:-.04em;line-height:1.05;text-wrap:balance}.page-heading p{margin:1rem 0 0;color:var(--text-muted);font-size:1.0625rem}.breadcrumbs{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:2rem;color:var(--text-muted);font-family:var(--font-mono);font-size:.8125rem}.breadcrumbs a{color:inherit}.series-directory,.topic-directory{border-top:1px solid var(--border-strong)}.directory-entry{padding:1.5rem 0;border-bottom:1px solid var(--border)}.directory-entry h2{margin:0;font-size:1.35rem;letter-spacing:-.02em}.directory-entry h2 a{color:var(--text);text-decoration:none}.directory-entry h2 a:hover{color:var(--accent-hover)}.directory-entry p{max-width:60ch;margin:.4rem 0;color:var(--text-muted)}.directory-entry small{color:var(--text-muted);font-family:var(--font-mono);font-size:.8125rem}.topic-heading p{font-size:1.125rem}.topic-stats{display:flex;gap:2.5rem;margin:1.25rem 0 0}.topic-stats div{display:grid;gap:.1rem}.article-register dt,.topic-stats dt{color:var(--text-muted);font-family:var(--font-mono);font-size:.8125rem}.article-register dd,.topic-stats dd{margin:0}.archive-year{display:grid;grid-template-columns:6rem minmax(0,1fr);gap:2rem;padding-block:2rem;border-top:1px solid var(--border-strong)}.archive-year h2{margin:0;color:var(--text-muted);font-size:1.125rem}.article-shell{padding-block:2.5rem 7rem}.article-header{margin-bottom:3rem;padding-block:1rem 2.5rem;border-bottom:1px solid var(--border)}.article-header h1{margin:0;font-size:clamp(2.35rem,5vw,4.25rem);letter-spacing:-.045em;line-height:1.02;text-wrap:balance}.article-description{margin:1.25rem 0 0;color:var(--text-muted);font-size:1.125rem}.article-register{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin:1.5rem 0 0}.article-register>div{display:flex;gap:.35rem}.article-register dt:after{content:":"}.article-register dd{font-family:var(--font-mono);font-size:.8125rem}.article-register a{text-decoration-thickness:1px;text-underline-offset:.18em}.featured-image{margin:0 0 3rem}.featured-image img{display:block;width:100%;max-height:42rem;object-fit:contain}.article-grid{display:grid;grid-template-columns:minmax(10rem,.3fr) minmax(0,1fr);gap:clamp(2.5rem,6vw,5rem);align-items:start}.article-grid-no-toc{grid-template-columns:minmax(0,1fr)}.article-grid-no-toc .prose{width:100%;margin-inline:auto}.article-rail{position:sticky;top:2rem}.table-of-contents{padding-top:.75rem;border-top:1px solid var(--border-strong)}.table-of-contents strong{display:block;font-size:.8125rem}.table-of-contents ol{margin:0;padding:.75rem 0 0;list-style:none}.table-of-contents ol ol{padding:.45rem 0 0 .75rem}.table-of-contents li+li{margin-top:.5rem}.table-of-contents a{display:block;color:var(--text-muted);font-size:.8125rem;line-height:1.35;text-decoration:none}.table-of-contents a:hover{color:var(--accent-hover)}.prose{max-width:var(--measure);min-width:0;font-size:1.0625rem;line-height:1.75}.prose>:first-child{margin-top:0}.prose h2,.prose h3,.prose h4{color:var(--text);letter-spacing:-.025em;line-height:1.2;text-wrap:balance}.prose h2{margin:3.75rem 0 1rem;font-size:clamp(1.75rem,3vw,2.25rem)}.prose h3{margin:2.75rem 0 .75rem;font-size:1.5rem}.prose h4{margin:2rem 0 .65rem;font-size:1.2rem}.heading-anchor{color:inherit;text-decoration:none}.prose blockquote,.prose figure,.prose ol,.prose p,.prose pre,.prose table,.prose ul{margin-block:1.25rem}.prose ol,.prose ul{padding-left:1.4rem}.prose li+li{margin-top:.4rem}.prose blockquote{margin-inline:0;padding-left:1.25rem;border-left:3px solid var(--border-strong);color:var(--text-muted)}.prose blockquote>:first-child{margin-top:0}.prose blockquote>:last-child{margin-bottom:0}.prose code:not(pre code){padding:.1rem .3rem;border-radius:3px;background:var(--surface-subtle);font-family:var(--font-mono);font-size:.86em}.prose pre{overflow-x:auto;padding:1.1rem 1.25rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--code);color:var(--code-text);font-family:var(--font-mono);font-size:.875rem;line-height:1.6;tab-size:2}.prose pre code{display:grid;min-width:max-content}.code-block{position:relative}.code-copy-button{position:absolute;z-index:2;top:.75rem;right:.75rem;min-height:1.75rem;padding:.2rem .5rem;border:1px solid #465367;border-radius:4px;background:var(--code);color:var(--code-text);cursor:pointer;font-family:var(--font-mono);font-size:.75rem}.code-copy-button:hover{border-color:var(--focus)}.prose table{display:block;width:100%;overflow-x:auto;border-collapse:collapse;font-size:.9375rem}.prose td,.prose th{padding:.6rem .75rem;border:1px solid var(--border);text-align:left}.prose th{background:var(--surface-subtle)}.prose img{display:block;height:auto;margin-block:2rem}.prose hr{margin-block:3rem;border:0;border-top:1px solid var(--border)}.video-embed{position:relative;aspect-ratio:16/9;overflow:hidden;margin-block:2rem;border-radius:var(--radius);background:var(--code)}.video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.article-video{margin-bottom:3rem}.comments,.related-notes,.series-register,.tag-register{margin-top:4.5rem;padding-top:1.5rem;border-top:1px solid var(--border-strong)}.comments h2,.related-notes h2,.series-register h2{margin:0 0 .5rem;font-size:1.5rem;letter-spacing:-.02em}.series-register>p{margin:0 0 1.25rem;color:var(--text-muted)}.tag-register{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem}.tag-register>strong{font-size:.875rem}.tag-cloud,.tag-register>div{display:flex;flex-wrap:wrap;gap:.5rem 1rem}.tag-cloud a,.tag-register a{font-size:.875rem}.tag-cloud a{display:inline-flex;gap:.35rem;align-items:baseline}.tag-cloud span{color:var(--text-muted);font-family:var(--font-mono);font-size:.75rem}.series-directory a{display:flex;justify-content:space-between;gap:2rem;padding:1.25rem 0;border-bottom:1px solid var(--border);color:var(--text);text-decoration:none}.series-directory a:hover strong{color:var(--accent-hover)}.series-directory span{color:var(--text-muted);font-family:var(--font-mono);font-size:.8125rem}.search-tool{max-width:50rem}.search-tool>label{display:block;margin-bottom:.5rem;font-size:.875rem;font-weight:600}.search-input{display:flex;min-height:3.5rem;align-items:center;gap:.75rem;padding-inline:1rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface)}.search-input:focus-within{border-color:var(--focus);outline:3px solid color-mix(in srgb,var(--focus) 25%,transparent)}.search-input input{width:100%;border:0;outline:0;background:transparent;color:var(--text);font-size:1rem}.search-input input::placeholder{color:var(--text-muted);opacity:1}.search-status{min-height:1.5rem;color:var(--text-muted);font-family:var(--font-mono);font-size:.8125rem}.search-results{margin:2rem 0 0;padding:0;border-top:1px solid var(--border-strong);list-style:none}.search-results li{border-bottom:1px solid var(--border)}.search-results a{display:block;padding:1.25rem 0;color:var(--text);text-decoration:none}.search-results a:hover strong{color:var(--accent-hover)}.search-results strong{font-size:1.125rem}.search-results p{margin:.35rem 0 0;color:var(--text-muted)}.search-results mark{background:var(--selection);color:var(--text)}.about-grid{display:grid;grid-template-columns:minmax(0,1fr) 16rem;gap:clamp(3rem,7vw,6rem)}.about-register{align-self:start;padding-top:1rem;border-top:1px solid var(--border-strong)}.about-register strong{display:block;font-size:.875rem}.about-register ul{margin:.65rem 0 0;padding-left:1.2rem;color:var(--text-muted)}.compatibility-page{max-width:55rem}.error-code{color:var(--text-muted);font-size:1rem;font-weight:600}.not-found h1{max-width:14ch;margin:1rem 0;font-size:clamp(2.5rem,6vw,4rem);letter-spacing:-.04em;line-height:1}.not-found-actions{display:flex;gap:1.5rem;align-items:center;margin-top:2rem}.empty-state{padding:2rem 0;color:var(--text-muted)}.site-footer{border-top:1px solid var(--border)}.consent-banner{display:grid;width:var(--shell);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;margin:.75rem auto 0;padding:.65rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.consent-banner p{margin:0;color:var(--text-muted);font-size:.8125rem}.consent-banner>div{display:flex;gap:.5rem;justify-content:flex-end}.consent-banner button{min-height:2rem;padding-inline:.65rem;cursor:pointer;border:1px solid var(--border-strong);border-radius:var(--radius);background:transparent;color:var(--text);font-size:.8125rem}.consent-banner button:last-child{border-color:var(--text);background:var(--text);color:var(--canvas)}.footer-grid{display:flex;min-height:7rem;align-items:center;justify-content:space-between;gap:2rem}.footer-grid nav{display:flex;flex-wrap:wrap;gap:1rem}.footer-grid nav a{color:var(--text-muted);font-size:.875rem}.copyright{margin:0;color:var(--text-muted);font-family:var(--font-mono);font-size:.75rem}@media (max-width:900px){:root{--shell:min(100% - 36px,760px)}.about-grid,.article-grid{grid-template-columns:1fr}.article-rail{position:static}.table-of-contents{margin-bottom:1.5rem}}@media (max-width:720px){:root{--shell:calc(100% - 36px)}.header-inner{min-height:3.75rem}.menu-button{display:grid}.primary-nav{position:absolute;top:3.75rem;right:0;left:0;display:none;flex-direction:column;gap:0;padding:.35rem 18px;border-bottom:1px solid var(--border);background:var(--canvas)}.primary-nav.is-open{display:flex}.primary-nav>a,.primary-nav>button{width:100%;min-height:3rem;justify-content:flex-start;padding-inline:0;border-bottom:1px solid var(--border)}.primary-nav>:last-child{border-bottom:0}.primary-nav>.theme-toggle{width:100%;height:3rem}.post-list-compact .post-row,.post-row{grid-template-columns:1fr;gap:.5rem}.post-row-meta{grid-column:1;grid-row:1;flex-direction:row;align-items:center;gap:.75rem}.post-row-main{grid-row:2}.archive-year{grid-template-columns:1fr;gap:.5rem}.article-shell{padding-top:1.5rem}.article-header{padding-top:0}.article-register{gap:.35rem 1rem}.prose{font-size:1rem}.prose pre{margin-inline:-18px;border-right:0;border-left:0;border-radius:0}.tag-register{display:block}.tag-register>div{margin-top:.5rem}.not-found-actions{align-items:flex-start;flex-direction:column}.consent-banner{grid-template-columns:1fr}.consent-banner>div{justify-content:flex-start}.footer-grid{align-items:flex-start;flex-direction:column;gap:1rem;padding-block:2.5rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{transition-duration:.01ms!important}}