@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/58f386aa6b1a2a92-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/011e180705008d6f-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/7ba5fb2a8c88521c-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/92eeb95d069020cc-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/d3ebbfd689654d3a-s.p.woff2) format("woff2");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-weight:500;font-display:swap;src:url(/_next/static/media/ef4d5661765d0e49-s.woff2) format("woff2");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-weight:500;font-display:swap;src:url(/_next/static/media/d29838c109ef09b4-s.woff2) format("woff2");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-weight:500;font-display:swap;src:url(/_next/static/media/e40af3453d7c920a-s.woff2) format("woff2");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-weight:500;font-display:swap;src:url(/_next/static/media/99dcf268bda04fe5-s.woff2) format("woff2");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-weight:500;font-display:swap;src:url(/_next/static/media/98e207f02528a563-s.p.woff2) format("woff2");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 Fallback;src:local("Arial");ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.00%;size-adjust:134.59%}.__className_46fe82{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.__variable_46fe82{--font-ibm-plex-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");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-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");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-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");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-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");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-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");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-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");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-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");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-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");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-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");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-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");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-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");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-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");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-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");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-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");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-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");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-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");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-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");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-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");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 Fallback;src:local("Arial");ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.00%;size-adjust:101.17%}.__className_74b868{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.__variable_74b868{--font-ibm-plex-sans:"IBM Plex Sans","IBM Plex Sans Fallback"}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");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;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");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;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");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;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");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;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");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;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");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;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");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;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");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;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");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:JetBrains Mono Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_6d24ac{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.__variable_6d24ac{--font-jetbrains-mono:"JetBrains Mono","JetBrains Mono Fallback"}:root{--ink:#1a1a18;--ink-muted:#6b6b66;--ink-faint:#a8a8a3;--page:#ffffff;--accent:#2563ae;--nav-logo:#d4d4d4;--nav-link:#888888;--nav-link-hover:#cccccc;--accent-hover:#1e4f8f;--accent-code:#16a34a;--border:#e4e4e0;--border-dark:#c8c8c2;--ad-bg:#f5f5f2;--code-inline-bg:#f0f0ec;--code-btn-border:#444;--nav-divider:#333;--code-bg:#1e1e1e;--code-text:#d4d4d4;--code-comment:#6a9955;--code-key:#569cd6;--code-str:#ce9178;--code-fn:#dcdcaa;--code-type:#4ec9b0;--code-num:#b5cea8;--φ-xs:0.382rem;--φ-sm:0.618rem;--φ-md:1rem;--φ-lg:1.618rem;--φ-xl:2.618rem;--φ-2xl:4.236rem;--φ-3xl:6.854rem}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:18px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:var(--page);color:var(--ink);font-family:var(--font-ibm-plex-sans),"IBM Plex Sans",sans-serif;font-weight:400;line-height:1.7;min-height:100vh;display:flex;flex-direction:column}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.vb-nav{background:var(--ink);padding:var(--φ-md) var(--φ-xl);justify-content:space-between;position:relative}.vb-logo,.vb-nav{display:flex;align-items:center}.vb-logo{gap:10px;text-decoration:none;color:inherit}.vb-logo-mark{font-weight:500;color:var(--accent-code);font-size:1.1rem;line-height:1}.vb-logo-mark,.vb-logo-text{font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace}.vb-logo-text{color:var(--nav-logo);font-size:.889rem;letter-spacing:-.01em}.vb-nav-links{display:flex;gap:var(--φ-xl);list-style:none}.vb-nav-links a{text-decoration:none;color:var(--nav-link);font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;font-size:.778rem;letter-spacing:.02em}@media (prefers-reduced-motion:no-preference){.vb-nav-links a{transition:color .15s ease}}.vb-nav-links a:hover{color:var(--nav-link-hover)}.vb-nav-links a:focus-visible{outline:2px solid var(--accent-code);outline-offset:3px;border-radius:2px}.vb-lang-switcher{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;font-size:.778rem;color:var(--ink-muted);margin-bottom:var(--φ-lg)}.vb-lang-switcher a{color:var(--ink-muted);text-decoration:none}.vb-lang-switcher a[aria-current=page]{color:var(--accent-code)}.vb-lang-switcher a:hover{color:var(--accent)}.vb-nav-lang{margin-bottom:0;margin-left:var(--φ-lg)}.vb-nav-lang,.vb-nav-lang a{color:var(--nav-link)}.vb-nav-lang a[aria-current=page]{color:var(--accent-code)}.vb-article-topbar{display:flex;justify-content:space-between;gap:var(--φ-md);align-items:center;margin-bottom:var(--φ-xl)}.vb-article-topbar .vb-back-link,.vb-article-topbar .vb-lang-switcher{margin-bottom:0}.vb-hamburger{display:none;background:none;border:none;cursor:pointer;color:var(--nav-link);padding:11px;line-height:1}.vb-hamburger:hover{color:var(--nav-link-hover)}.vb-hamburger:focus-visible{outline:2px solid var(--accent-code);outline-offset:3px;border-radius:2px}.vb-mobile-nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--ink);padding:var(--φ-md) var(--φ-xl);border-top:1px solid var(--nav-divider);z-index:100}.vb-mobile-nav.open{display:block}.vb-mobile-nav ul{list-style:none;display:flex;flex-direction:column;gap:var(--φ-md)}.vb-mobile-nav a{color:var(--nav-link);font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;font-size:.889rem;letter-spacing:.02em}.vb-mobile-nav a:hover{color:var(--nav-link-hover)}@media (max-width:640px){.vb-nav-lang,.vb-nav-links{display:none}.vb-hamburger{display:block}}.vb-footer{border-top:1px solid var(--border);padding:var(--φ-xl) 0;text-align:center;background:var(--page);font-size:.778rem;margin-top:auto}.tag,.vb-footer{color:var(--ink-muted)}.tag{display:inline-block;background:var(--ad-bg);border:1px solid var(--border);border-radius:3px;padding:2px 8px;font-size:.722rem;letter-spacing:.02em;text-decoration:none;font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace}.vb-tags{display:flex;gap:var(--φ-xs);flex-wrap:wrap}.ad-slot{background:var(--ad-bg);border:1px dashed var(--border-dark);border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--ink-faint);font-size:.722rem;letter-spacing:.08em;text-transform:uppercase;font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace}.vb-toc-ad{height:250px;margin-top:var(--φ-xl)}.vb-ad-inline{height:90px;margin:var(--φ-2xl) 0}.vb-ad-mobile{display:none;width:300px;min-height:250px;margin:var(--φ-2xl) auto}.vb-list-page{max-width:900px;margin:0 auto;padding:var(--φ-2xl) var(--φ-xl);flex:1 1}.vb-prompt-line{font-size:.778rem;color:var(--accent-code);margin-bottom:var(--φ-sm);letter-spacing:.01em}.vb-page-title,.vb-prompt-line{font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace}.vb-page-title{font-size:1.618rem;font-weight:500;color:var(--ink);margin-bottom:var(--φ-2xl);letter-spacing:-.03em}.vb-article-list{list-style:none}.vb-article-item{display:grid;grid-template-columns:100px 1fr;grid-gap:var(--φ-xl);gap:var(--φ-xl);padding:var(--φ-lg) 0;border-bottom:1px solid var(--border);align-items:start}.vb-article-item:first-child{border-top:1px solid var(--border)}.vb-article-date-col{font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;font-size:.722rem;color:var(--ink-muted);padding-top:3px}.vb-article-content-col a{text-decoration:none;color:var(--ink);display:block}.vb-article-content-col a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}@media (prefers-reduced-motion:no-preference){.vb-article-content-col a{transition:transform .2s ease}.vb-article-content-col a:hover{transform:translateY(-2px)}.vb-article-title{transition:color .25s ease}}.vb-article-content-col a:hover .vb-article-title{color:var(--accent)}.vb-article-title{font-family:"IBM Plex Sans",var(--font-ibm-plex-sans),sans-serif;font-size:1.111rem;font-weight:500;line-height:1.35;margin-bottom:var(--φ-xs);color:var(--ink)}.vb-article-desc{font-size:.889rem;color:var(--ink-muted);line-height:1.6;margin-bottom:var(--φ-sm)}.vb-empty{color:var(--ink-muted);font-size:.944rem;padding:var(--φ-xl) 0;font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace}.vb-article-layout{max-width:1100px;margin:0 auto;padding:var(--φ-2xl) var(--φ-xl);display:grid;grid-template-columns:1fr 220px;grid-gap:var(--φ-3xl);gap:var(--φ-3xl);align-items:start}.vb-article-main{min-width:0}@media (max-width:1024px){.vb-article-layout{grid-template-columns:1fr}.vb-article-sidebar{display:none}.vb-ad-mobile{display:flex}}.vb-article-h1{font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;font-size:2rem;font-weight:500;line-height:1.2;margin-bottom:var(--φ-lg);letter-spacing:-.03em;color:var(--ink)}.vb-article-byline{display:flex;gap:var(--φ-lg);align-items:center;flex-wrap:wrap;margin-bottom:var(--φ-2xl);padding-bottom:var(--φ-lg);border-bottom:1px solid var(--border)}.vb-byline-date{font-size:.722rem}.vb-back-link,.vb-byline-date{font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;color:var(--ink-muted)}.vb-back-link{display:inline-block;font-size:.778rem;margin-bottom:var(--φ-xl);letter-spacing:.01em}.vb-back-link:hover{color:var(--accent)}.vb-prose{color:var(--ink);font-family:var(--font-ibm-plex-sans),"IBM Plex Sans",sans-serif;font-size:1rem;line-height:1.75}.vb-prose h2{font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;font-size:1.272rem;margin-top:var(--φ-2xl);margin-bottom:var(--φ-lg);letter-spacing:-.02em;padding-left:var(--φ-md);border-left:3px solid var(--accent-code)}.vb-prose h2,.vb-prose h3{font-weight:500;color:var(--ink)}.vb-prose h3{font-size:1.111rem;margin-top:var(--φ-xl);margin-bottom:var(--φ-md)}.vb-prose h3,.vb-prose h4,.vb-prose h5,.vb-prose h6{font-family:var(--font-ibm-plex-sans),"IBM Plex Sans",sans-serif}.vb-prose h4,.vb-prose h5,.vb-prose h6{font-size:1rem;font-weight:500;margin-top:var(--φ-lg);margin-bottom:var(--φ-sm);color:var(--ink)}.vb-prose p{margin-bottom:var(--φ-lg);font-size:1rem;line-height:1.75;max-width:68ch}.vb-prose a{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:transparent;text-decoration-color:transparent;text-underline-offset:3px}@media (prefers-reduced-motion:no-preference){.vb-prose a{transition:-webkit-text-decoration-color .15s ease;transition:text-decoration-color .15s ease;transition:text-decoration-color .15s ease,-webkit-text-decoration-color .15s ease}}.vb-prose a:hover{color:var(--accent-hover);-webkit-text-decoration-color:var(--accent-hover);text-decoration-color:var(--accent-hover)}.vb-prose ol,.vb-prose ul{padding-left:var(--φ-lg);margin-bottom:var(--φ-lg);max-width:68ch}.vb-prose li{margin-bottom:var(--φ-xs);line-height:1.75}.vb-prose blockquote{border-left:3px solid var(--border-dark);padding-left:var(--φ-md);color:var(--ink-muted);margin:var(--φ-xl) 0;font-style:italic}.vb-prose code{font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;font-size:.833rem;background:var(--code-inline-bg);padding:2px 6px;border-radius:3px;color:var(--accent-code)}.vb-prose pre{background:var(--code-bg);border-radius:6px;overflow-x:auto;margin:var(--φ-xl) 0;padding:var(--φ-lg);line-height:1.7;position:relative}.code-copy-btn{position:absolute;top:var(--φ-sm);right:var(--φ-sm);background:transparent;border:1px solid var(--code-btn-border);border-radius:3px;color:var(--ink-faint);font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;font-size:.667rem;letter-spacing:.04em;padding:2px 8px;cursor:pointer;line-height:1.6;z-index:1;opacity:0}@media (prefers-reduced-motion:no-preference){.code-copy-btn{transition:opacity .15s ease,color .15s ease,border-color .15s ease}}.code-copy-btn:focus-visible,.vb-prose pre:hover .code-copy-btn{opacity:1}.code-copy-btn:hover{color:var(--accent-code);border-color:var(--accent-code)}.code-copy-btn:focus-visible{outline:2px solid var(--accent-code);outline-offset:2px}.code-copy-btn--copied{color:var(--accent-code);border-color:var(--accent-code);opacity:1}.vb-prose pre code{font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:.833rem;background:none;padding:0;border-radius:0;color:var(--code-text);white-space:pre}.vb-prose .ck{color:var(--code-key)}.vb-prose .cs{color:var(--code-str)}.vb-prose .cf{color:var(--code-fn)}.vb-prose .ct{color:var(--code-type)}.vb-prose .cc{color:var(--code-comment)}.vb-prose .cn{color:var(--code-num)}.vb-prose hr{border:none;border-top:1px solid var(--border);margin:var(--φ-2xl) 0}.vb-prose img{max-width:100%;height:auto;border-radius:4px;margin:var(--φ-lg) 0}.vb-prose table{width:100%;border-collapse:collapse;margin:var(--φ-xl) 0;font-size:.889rem}.vb-prose td,.vb-prose th{border:1px solid var(--border);padding:var(--φ-sm) var(--φ-md);text-align:left}.vb-prose th{background:var(--ad-bg);font-weight:500;font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;font-size:.778rem;letter-spacing:.02em}@media (prefers-reduced-motion:no-preference){.vb-prose h2:target{animation:anchor-flash 1s ease forwards}@keyframes anchor-flash{0%{background:rgba(37,99,174,.1)}to{background:transparent}}}.vb-toc{position:-webkit-sticky;position:sticky;top:var(--φ-xl)}.vb-toc-heading{font-family:var(--font-ibm-plex-mono),"IBM Plex Mono",monospace;font-size:.667rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:var(--φ-md)}.vb-toc-list{list-style:none}.vb-toc-item{margin-bottom:var(--φ-sm)}.vb-toc-link{text-decoration:none;color:var(--ink-muted);font-size:.833rem;line-height:1.4;display:block;padding-left:var(--φ-md);border-left:2px solid transparent;font-family:var(--font-ibm-plex-sans),"IBM Plex Sans",sans-serif}@media (prefers-reduced-motion:no-preference){.vb-toc-link{transition:color .15s ease,border-left-color .15s ease}}.vb-toc-link.active,.vb-toc-link:hover{color:var(--accent);border-left-color:var(--accent)}.vb-toc-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}@media (max-width:640px){.vb-article-item{grid-template-columns:1fr;gap:var(--φ-xs)}.vb-article-layout,.vb-list-page{padding:var(--φ-xl) var(--φ-md)}.vb-nav{padding:var(--φ-md)}.vb-article-h1{font-size:1.5rem}}