@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/atkinson-hyperlegible-latin-ext-400-normal.DRk46D-x.woff2) format("woff2"),url(/_astro/atkinson-hyperlegible-latin-ext-400-normal.Bbz-b3yf.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:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/atkinson-hyperlegible-latin-400-normal.BrHNak5F.woff2) format("woff2"),url(/_astro/atkinson-hyperlegible-latin-400-normal.BbWidj28.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}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/atkinson-hyperlegible-latin-ext-700-normal.BoVPHkS0.woff2) format("woff2"),url(/_astro/atkinson-hyperlegible-latin-ext-700-normal.CKkU2Dpt.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:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/atkinson-hyperlegible-latin-700-normal.GZI4o3u0.woff2) format("woff2"),url(/_astro/atkinson-hyperlegible-latin-700-normal.BK6Glc0m.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}@font-face{font-family:Atkinson Hyperlegible;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/atkinson-hyperlegible-latin-ext-400-italic.3fJ3SmOv.woff2) format("woff2"),url(/_astro/atkinson-hyperlegible-latin-ext-400-italic.B-Yabllp.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:Atkinson Hyperlegible;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/atkinson-hyperlegible-latin-400-italic.D-qjh7ci.woff2) format("woff2"),url(/_astro/atkinson-hyperlegible-latin-400-italic.OoEIrRJc.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}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.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(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.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(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.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(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.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(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.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}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.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:600;src:url(/_astro/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.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:600;src:url(/_astro/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.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:600;src:url(/_astro/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.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:600;src:url(/_astro/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-600-normal.DWFSQ4vo.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}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:600 800;font-stretch:72% 100%;src:url(/_astro/archivo-latin-sub.BeCjBu-I.woff2) format("woff2-variations"),url(/_astro/archivo-latin-sub.BeCjBu-I.woff2) format("woff2");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: #f2f4f3;--bg-2: #e9edec;--surface: #ffffff;--panel: #e3e9e8;--ink: #0f2a33;--ink-2: #44585f;--ink-3: #5f7379;--line: #cdd6d5;--line-2: #b5c2c1;--accent: #b93c0a;--accent-soft: #fbe3d6;--accent-ink: #ffffff;--run: #2b8a3e;--run-text: #1b6a2c;--night: #3b5bdb;--early: #e08e00;--bar-base: #0f2a33;--bar-toeslag: #d9480f;--pipe: #7b8f94;--shadow: 0 1px 0 rgba(15, 42, 51, .05), 0 10px 28px -16px rgba(15, 42, 51, .28);--shadow-lg: 0 1px 0 rgba(15, 42, 51, .05), 0 24px 48px -24px rgba(15, 42, 51, .35);--f-display: "Archivo Variable", "Archivo", "Arial Narrow", ui-sans-serif, system-ui, sans-serif;--f-body: "Atkinson Hyperlegible", ui-sans-serif, system-ui, sans-serif;--f-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--fs-xs: .75rem;--fs-sm: .875rem;--fs-base: 1.0625rem;--fs-md: 1.1875rem;--fs-h3: 1.2rem;--fs-h2: clamp(1.55rem, 1.15rem + 1.7vw, 2.35rem);--fs-h1: clamp(2.1rem, 1.35rem + 3.3vw, 3.6rem);--fs-display: clamp(2.5rem, 1.4rem + 4.8vw, 4.6rem);--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-5: 1.5rem;--s-6: 2rem;--s-7: 3rem;--s-8: 4.5rem;--s-9: 6rem;--r: 10px;--r-lg: 14px;--head-h: 60px;--gutter: max(16px, env(safe-area-inset-left, 0px));color-scheme:light}@media(min-width:720px){:root{--gutter: 24px;--head-h: 64px}}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0b1418;--bg-2: #0f1b20;--surface: #111e23;--panel: #172930;--ink: #e3ebe9;--ink-2: #a3b5b9;--ink-3: #8a9ea3;--line: #24373e;--line-2: #33494f;--accent: #f2a541;--accent-soft: #3a2a14;--accent-ink: #1a1206;--run: #69db7c;--run-text: #69db7c;--night: #91a7ff;--early: #ffd43b;--bar-base: #7e9aa2;--bar-toeslag: #f2a541;--pipe: #5d757b;--shadow: 0 1px 0 rgba(0, 0, 0, .3), 0 12px 30px -16px rgba(0, 0, 0, .8);--shadow-lg: 0 1px 0 rgba(0, 0, 0, .3), 0 24px 48px -20px rgba(0, 0, 0, .85);color-scheme:dark}}:root[data-theme=dark]{--bg: #0b1418;--bg-2: #0f1b20;--surface: #111e23;--panel: #172930;--ink: #e3ebe9;--ink-2: #a3b5b9;--ink-3: #8a9ea3;--line: #24373e;--line-2: #33494f;--accent: #f2a541;--accent-soft: #3a2a14;--accent-ink: #1a1206;--run: #69db7c;--run-text: #69db7c;--night: #91a7ff;--early: #ffd43b;--bar-base: #7e9aa2;--bar-toeslag: #f2a541;--pipe: #5d757b;--shadow: 0 1px 0 rgba(0, 0, 0, .3), 0 12px 30px -16px rgba(0, 0, 0, .8);--shadow-lg: 0 1px 0 rgba(0, 0, 0, .3), 0 24px 48px -20px rgba(0, 0, 0, .85);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--head-h) + 16px)}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:var(--fs-base);line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}main{flex:1 0 auto}img,svg{max-width:100%}img{height:auto}a{color:inherit;text-underline-offset:3px}button{font:inherit;color:inherit}[hidden]{display:none!important}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:4px}::selection{background:var(--accent);color:var(--accent-ink)}.skip{position:absolute;left:var(--gutter);top:-100px;z-index:100;background:var(--ink);color:var(--bg);padding:.65rem 1rem;border-radius:6px;font-weight:700;text-decoration:none}.skip:focus{top:8px}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.wrap{width:100%;max-width:1200px;margin:0 auto;padding-left:var(--gutter);padding-right:max(var(--gutter),env(safe-area-inset-right,0px))}.wrap-narrow{max-width:860px}h1,h2,h3,h4{font-family:var(--f-display);text-wrap:balance;margin:0;letter-spacing:-.008em;word-spacing:.05em;color:var(--ink)}h1{font-size:var(--fs-h1);font-weight:800;font-stretch:76%;line-height:1;text-transform:uppercase}h2{font-size:var(--fs-h2);font-weight:760;font-stretch:80%;line-height:1.05;text-transform:uppercase}h3{font-size:var(--fs-h3);font-weight:700;font-stretch:92%;line-height:1.25}p{margin:0;text-wrap:pretty}.display{font-size:var(--fs-display);line-height:.96;letter-spacing:-.02em;font-stretch:72%}.display em{font-style:normal;color:var(--accent)}.eyebrow{font-family:var(--f-mono);font-size:var(--fs-xs);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}.note{font-size:.82rem;color:var(--ink-2);line-height:1.5}.lead{font-size:var(--fs-md);line-height:1.5;color:var(--ink-2)}.tagcode{display:inline-block;font-family:var(--f-mono);font-size:.68rem;font-weight:600;letter-spacing:.08em;padding:.1rem .4rem;border:1.5px solid currentColor;border-radius:3px;line-height:1.3;vertical-align:.1em}.more{display:inline-flex;align-items:center;gap:.4rem;font-weight:700;text-decoration:none;border-bottom:2px solid var(--accent);padding-bottom:1px;white-space:nowrap}.more svg{transition:transform .15s}.more:hover svg{transform:translate(3px)}.site-head{position:sticky;top:0;z-index:50;height:var(--head-h);background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:saturate(1.2) blur(10px);backdrop-filter:saturate(1.2) blur(10px);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top,0px)}.head-row{height:100%;display:flex;align-items:center;gap:var(--s-3)}.logo{display:inline-flex;align-items:center;gap:.55rem;text-decoration:none;font-family:var(--f-display);font-weight:800;font-stretch:85%;font-size:1.12rem;letter-spacing:-.01em;flex:none}.logo svg{flex:none}.logo .tld{color:var(--ink-2);font-weight:600}.iconbtn{border:1px solid var(--line);background:var(--surface);border-radius:999px;height:40px;min-width:40px;display:inline-grid;grid-auto-flow:column;place-items:center;gap:.35rem;cursor:pointer;flex:none;padding:0 .6rem}.iconbtn:hover{border-color:var(--ink-2)}.themebtn{padding:0}.themebtn .i-sun{display:none}.themebtn[aria-pressed=true] .i-sun{display:block}.themebtn[aria-pressed=true] .i-moon,.menubtn .i-close{display:none}.menubtn[aria-expanded=true] .i-close{display:block}.menubtn[aria-expanded=true] .i-menu{display:none}.menubtn-lbl{font-size:.9rem;font-weight:700}.shiftclock{display:none;align-items:center;gap:.5rem;font-family:var(--f-mono);font-size:.76rem;color:var(--ink-2);border:1px solid var(--line);border-radius:999px;padding:.32rem .75rem;white-space:nowrap;margin-left:auto}.shiftclock [data-shiftnow]{display:inline-block;min-width:12ch;color:var(--ink)}.dot{width:8px;height:8px;border-radius:50%;background:var(--run);box-shadow:0 0 0 3px color-mix(in srgb,var(--run) 25%,transparent);flex:none}.themebtn{margin-left:auto}@media(min-width:560px){.shiftclock{display:inline-flex}.themebtn{margin-left:0}}.mainnav{display:none;position:fixed;left:0;right:0;top:var(--head-h);bottom:0;z-index:49;background:var(--bg);overflow-y:auto;overscroll-behavior:contain;padding:var(--s-3) var(--gutter) var(--s-8)}.mainnav.is-open{display:block}body.menu-open{overflow:hidden}body.menu-open .site-head{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--bg)}.ng-list,.mega-cols,.mega-sub,.nav-meta{list-style:none;margin:0;padding:0}.ng{border-bottom:1px solid var(--line)}.ng-btn{width:100%;display:flex;justify-content:space-between;align-items:center;gap:var(--s-3);background:none;border:0;padding:var(--s-4) 0;cursor:pointer;font-family:var(--f-display);font-weight:760;font-stretch:85%;font-size:1.3rem;text-transform:uppercase;text-align:left}.ng-chev{transition:transform .2s;color:var(--accent);flex:none}.ng-btn[aria-expanded=true] .ng-chev{transform:rotate(180deg)}.ng-btn.is-current:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);order:2;margin-right:auto;margin-left:-.4rem}.mega{display:none;padding-bottom:var(--s-4)}.ng-btn[aria-expanded=true]+.mega{display:block}.mega .wrap{padding:0}.mega-intro{display:none}.mega-cols{display:grid;gap:var(--s-3)}.mega-pillar{display:flex;gap:var(--s-3);align-items:flex-start;text-decoration:none;padding:var(--s-2) 0}.mega-pillar b{display:block;font-size:1.02rem}.mega-pillar small{display:block;color:var(--ink-2);font-size:.85rem;line-height:1.35;margin-top:.1rem}.mega-ico{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--line-2);display:grid;place-items:center;flex:none;color:var(--ink)}.mega-pillar:hover .mega-ico{border-color:var(--accent);color:var(--accent)}.mega-sub{padding-left:calc(36px + var(--s-3));display:grid;gap:.1rem}.mega-sub a{display:block;text-decoration:none;color:var(--ink-2);padding:.3rem 0;font-size:.95rem}.mega-sub a:hover,.mega a[aria-current=page]{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent)}.nav-meta{display:grid;gap:.25rem;padding-top:var(--s-5)}.nav-meta a{text-decoration:none;color:var(--ink-2);font-size:.95rem;padding:.3rem 0;display:block}@media(min-width:1080px){.menubtn{display:none}.mainnav{display:block;position:static;background:none;padding:0;overflow:visible;margin-left:var(--s-5)}.ng-list{display:flex;gap:var(--s-1)}.ng{border:0}.ng-btn{width:auto;padding:.45rem .7rem;border-radius:8px;font-family:var(--f-body);font-weight:700;font-stretch:normal;text-transform:none;font-size:.95rem;color:var(--ink-2);gap:.3rem}.ng-btn:hover,.ng-btn[aria-expanded=true]{color:var(--ink);background:var(--panel)}.ng-btn.is-current{color:var(--ink)}.ng-btn.is-current:before{display:none}.ng-btn.is-current{box-shadow:inset 0 -2px 0 var(--accent);border-radius:8px 8px 0 0}.mega{position:absolute;left:0;right:0;top:100%;padding:var(--s-6) 0 var(--s-7);background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow-lg)}.mega .wrap{padding-left:var(--gutter);padding-right:var(--gutter)}.mega-inner{display:grid;grid-template-columns:260px 1fr;gap:var(--s-7)}.mega-intro{display:block;border-right:1px solid var(--line);padding-right:var(--s-6)}.mega-intro .tagcode{color:var(--accent)}.mega-title{font-family:var(--f-display);font-weight:800;font-stretch:78%;text-transform:uppercase;font-size:1.9rem;line-height:1;margin-top:var(--s-3)}.mega-blurb{color:var(--ink-2);margin-top:var(--s-3);font-size:.95rem}.mega-cols{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-5) var(--s-6)}.nav-meta{display:none}}.piperule{position:relative;height:40px;overflow:hidden}.piperule:before{content:"";position:absolute;left:0;right:0;top:27px;border-top:2px solid var(--line-2)}.piperule svg{position:relative;display:block;overflow:visible}.pr-line{stroke:var(--line-2);stroke-width:2;fill:none}.pr-valve{fill:var(--bg);stroke:var(--pipe);stroke-width:1.75;stroke-linejoin:round}.pr-stem{stroke:var(--pipe);stroke-width:1.5;fill:none}.pr-flow{stroke:var(--accent);stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}.pr-bubble{fill:var(--bg);stroke:var(--pipe);stroke-width:1.5}.pr-t{font-family:var(--f-mono);font-size:7.5px;font-weight:600;text-anchor:middle;fill:var(--ink-2)}.procline{overflow:hidden;color:var(--pipe)}.procline svg{display:block;max-width:none;width:max(100%,760px);height:auto;margin-left:50%;transform:translate(-50%)}.pl-pipe,.pl-eq,.pl-sig,.pl-inst{fill:none;stroke:var(--pipe);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.pl-eq{fill:var(--bg)}.pl-thin{stroke-width:1.25}.pl-level{stroke:var(--accent);stroke-dasharray:5 4}.pl-sig{stroke-width:1.25;stroke-dasharray:2 4}.pl-inst circle{fill:var(--bg);stroke-width:1.5}.pl-inst path{stroke-width:1.25}.pl-inst text,.pl-tags text{font-family:var(--f-mono);font-size:11px;font-weight:600;text-anchor:middle;fill:var(--ink-2);stroke:none}.pl-tags text{font-size:12px;font-weight:500;fill:var(--ink-3)}.pl-fill{fill:var(--accent)}.pl-flowline path{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:10 14}@media(prefers-reduced-motion:no-preference){.pl-flowline path{animation:flow 1.6s linear infinite}@keyframes flow{to{stroke-dashoffset:-24}}}.piddecor{width:100%;height:auto;display:block}.pd-eq,.pd-pipe,.pd-thin,.pd-sig{fill:none;stroke:var(--pipe);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.pd-eq{fill:var(--surface)}.pd-thin{stroke-width:1.25}.pd-sig{stroke-width:1.25;stroke-dasharray:2 4}.pd-flow{fill:none;stroke:var(--accent);stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round}.pd-level{stroke:var(--accent);stroke-dasharray:5 4}.pd-t,.pd-tag{font-family:var(--f-mono);font-size:10px;font-weight:600;text-anchor:middle;fill:var(--ink-2)}.pd-tag{font-size:10.5px;font-weight:500;fill:var(--ink-3);letter-spacing:.06em}.card{position:relative;display:grid;gap:var(--s-2);align-content:start;min-width:0;padding:var(--s-5);border:1px solid var(--line);border-radius:var(--r);background:var(--surface);text-decoration:none;transition:border-color .15s,transform .15s,box-shadow .15s}a.card:hover{border-color:var(--ink-2);transform:translateY(-2px);box-shadow:var(--shadow)}.card h2,.card h3{font-family:var(--f-display);font-size:1.15rem;font-weight:700;font-stretch:92%;line-height:1.25;text-transform:none;letter-spacing:-.008em}.card p{color:var(--ink-2);font-size:.95rem;line-height:1.5}.card .card-ico{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line-2);display:grid;place-items:center;margin-bottom:var(--s-2);color:var(--ink)}a.card:hover .card-ico{border-color:var(--accent);color:var(--accent)}.card .card-go{margin-top:var(--s-2);display:inline-flex;align-items:center;gap:.35rem;font-weight:700;font-size:.9rem;color:var(--ink)}.card .card-go svg{color:var(--accent);transition:transform .15s}a.card:hover .card-go svg{transform:translate(3px)}.card .card-num{font-size:.72rem;color:var(--accent);letter-spacing:.06em;padding-bottom:var(--s-2);border-bottom:1px solid var(--line);margin-bottom:var(--s-1)}.cards{display:grid;gap:var(--s-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}.cards-compact{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}.cards-compact .card{padding:var(--s-4);gap:.3rem}.cards-compact .card p{font-size:.9rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cards-compact .card-go{display:none}.cards-compact .card h3{padding-right:1.5rem}.cards-compact .card:after{content:"";position:absolute;right:var(--s-4);top:calc(var(--s-4) + .35rem);width:8px;height:8px;border-top:2px solid var(--accent);border-right:2px solid var(--accent);transform:rotate(45deg)}@media(max-width:719px){.cards .card{padding:var(--s-4)}.cards .card .card-ico{display:none}}@media(min-width:720px){.cards{gap:var(--s-4)}}@media(prefers-reduced-motion:reduce){.card,.more svg,.card-go svg{transition:none!important}a.card:hover{transform:none}}.band{padding-block:var(--s-7)}@media(min-width:720px){.band{padding-block:var(--s-8)}}.band+.band{border-top:1px solid var(--line)}.band.alt{background:var(--bg-2)}.band-head{display:flex;justify-content:space-between;align-items:end;gap:var(--s-4) var(--s-6);flex-wrap:wrap;margin-bottom:var(--s-6)}.band-head>div{max-width:62ch}.band-head .eyebrow{display:flex;align-items:center;gap:.5rem;margin-bottom:var(--s-3)}.band-head .eyebrow:before{content:"";width:18px;height:2px;background:var(--accent)}.band-head p{color:var(--ink-2);margin-top:var(--s-3);font-size:1.02rem}.facts-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden}.facts-strip>div{padding:var(--s-4);min-width:0;border-top:1px solid var(--line);border-left:1px solid var(--line)}.facts-strip>div:nth-child(-n+2){border-top:0}.facts-strip>div:nth-child(odd){border-left:0}.facts-strip>div:last-child:nth-child(odd){grid-column:1 / -1}.facts-strip .k{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2);display:flex;align-items:center;gap:.4rem}.facts-strip .k:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none}.facts-strip .v{font-family:var(--f-mono);font-weight:600;font-size:clamp(1.02rem,.95rem + .35vw,1.18rem);font-variant-numeric:tabular-nums;margin-top:.3rem;line-height:1.25;overflow-wrap:break-word}@media(max-width:479px){.facts-strip{grid-template-columns:1fr}.facts-strip>div{border-left:0!important;border-top:1px solid var(--line)!important;grid-column:auto!important;display:grid;grid-template-columns:minmax(0,9.5rem) minmax(0,1fr);gap:var(--s-3);align-items:baseline;padding:var(--s-3) var(--s-4)}.facts-strip>div:first-child{border-top:0!important}.facts-strip .v{margin-top:0;font-family:var(--f-body);font-weight:700;font-size:1.02rem;line-height:1.35}}@media(min-width:720px){.facts-strip{grid-template-columns:repeat(auto-fit,minmax(0,1fr));grid-auto-flow:column}.facts-strip>div{border-top:0!important;border-left:1px solid var(--line)!important;grid-column:auto!important}.facts-strip>div:first-child{border-left:0!important}}.crumbs{font-family:var(--f-mono);font-size:.74rem;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:.35rem .45rem;list-style:none;padding:0;margin:0}.crumbs a{text-decoration:none}.crumbs a:hover{text-decoration:underline;text-decoration-color:var(--accent)}.crumbs li+li:before{content:"/";margin-right:.45rem;color:var(--line-2)}.crumbs [aria-current]{color:var(--ink)}.page-head{position:relative;padding-block:var(--s-5) var(--s-6);border-bottom:1px solid var(--line);overflow:hidden}@media(min-width:720px){.page-head{padding-block:var(--s-6) var(--s-7)}}.page-head-grid{display:grid;gap:var(--s-6);align-items:end}.page-head .eyebrow{display:inline-flex;align-items:center;gap:.55rem;margin-top:var(--s-5);color:var(--accent)}.page-head h1{margin-top:var(--s-3);max-width:22ch}.page-head .lead{margin-top:var(--s-4);max-width:60ch;font-size:clamp(1.1rem,1rem + .4vw,1.3rem);color:var(--ink)}.page-head .head-art{display:none}@media(min-width:900px){.page-head-grid{grid-template-columns:minmax(0,1fr) 260px}.page-head .head-art{display:block;opacity:.95}}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-4);margin-top:var(--s-5);font-family:var(--f-mono);font-size:.76rem;color:var(--ink-2)}.meta span{display:inline-flex;align-items:center;gap:.4rem}.meta svg{color:var(--ink-3)}.article{padding-block:var(--s-5) var(--s-8)}@media(min-width:720px){.article{padding-block:var(--s-6) var(--s-8)}.article-main{gap:var(--s-7)}}.article-grid{display:grid;gap:var(--s-6)}.article-aside{display:none}@media(min-width:1080px){.article-grid{grid-template-columns:minmax(0,1fr) 260px;gap:var(--s-8)}.article-aside{display:block;grid-column:2;grid-row:1 / span 20}}.article-main{min-width:0;display:grid;gap:var(--s-6);align-content:start}.article-main>*{min-width:0}.toc{border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.toc-title{padding:0 var(--s-4) var(--s-3);font-family:var(--f-mono);font-size:.76rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2)}.toc-desktop{display:none}.toc summary{list-style:none;cursor:pointer;padding:var(--s-3) var(--s-4);display:flex;justify-content:space-between;align-items:center;font-family:var(--f-mono);font-size:.76rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2)}.toc summary::-webkit-details-marker{display:none}.toc summary svg{color:var(--accent);transition:transform .2s}.toc[open] summary svg{transform:rotate(180deg)}.toc ol{list-style:none;margin:0;padding:0 var(--s-4) var(--s-4);display:grid;gap:.1rem;counter-reset:toc}.toc li{counter-increment:toc}.toc a{display:grid;grid-template-columns:2.1ch 1fr;gap:.5rem;padding:.35rem 0;text-decoration:none;color:var(--ink-2);font-size:.93rem;line-height:1.35;border-left:2px solid transparent}.toc a:before{content:counter(toc,decimal-leading-zero);font-family:var(--f-mono);font-size:.72rem;color:var(--ink-3);padding-top:.15rem}.toc a:hover{color:var(--ink)}.toc a.is-active{color:var(--ink);font-weight:700}.toc a.is-active:before{color:var(--accent)}.toc li.sub a{padding-left:2.6ch;font-size:.88rem}.toc li.sub{counter-increment:none}.toc li.sub a:before{content:""}@media(min-width:1080px){.toc-mobile{display:none}.toc-desktop{display:block}.toc-wrap{position:sticky;top:calc(var(--head-h) + var(--s-5));max-height:calc(100vh - var(--head-h) - var(--s-7));overflow-y:auto}.toc{border:0;background:none;border-left:1px solid var(--line);border-radius:0}.toc summary{pointer-events:none;padding-top:0}.toc summary svg{display:none}.toc a{margin-left:-1px;padding-left:var(--s-3);border-left-color:transparent;grid-template-columns:2.1ch 1fr}.toc a.is-active{border-left-color:var(--accent)}}.aside-card{margin-top:var(--s-5);padding:var(--s-4);border-radius:var(--r);background:var(--panel);font-size:.88rem;color:var(--ink-2);display:none}.aside-card b{color:var(--ink);display:block;margin-bottom:.25rem}.aside-card a{font-weight:700;color:var(--ink)}@media(min-width:1080px){.aside-card{display:block}}.prose{max-width:70ch;font-size:var(--fs-base);line-height:1.68}@media(min-width:720px){.prose{font-size:1.125rem}}.prose>*+*{margin-top:1.05em}.prose h2{font-size:clamp(1.4rem,1.15rem + 1.1vw,1.95rem);margin-top:2.4em;padding-top:var(--s-5);border-top:1px solid var(--line);text-transform:none;font-stretch:86%;letter-spacing:-.005em;word-spacing:.06em;line-height:1.12}.prose>h2:first-child{margin-top:0;padding-top:0;border-top:0}.prose h3{font-size:clamp(1.12rem,1.05rem + .3vw,1.3rem);margin-top:1.8em}.prose h2+*,.prose h3+*{margin-top:.6em}.prose ul,.prose ol{padding-left:1.3rem}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--accent)}.prose ol li::marker{font-family:var(--f-mono);font-size:.9em}.prose a{text-decoration-color:var(--accent);text-decoration-thickness:2px}.prose a:hover{color:var(--accent)}.prose strong{font-weight:700}.prose blockquote{margin-inline:0;padding:var(--s-4) var(--s-5);border-left:3px solid var(--accent);background:var(--surface);border-radius:0 var(--r) var(--r) 0;color:var(--ink)}.prose blockquote>*+*{margin-top:.6em}.prose hr{border:0;border-top:1px solid var(--line);margin-block:2em}.prose code{font-family:var(--f-mono);font-size:.9em;background:var(--panel);padding:.1em .35em;border-radius:4px}.prose img{border-radius:var(--r)}.table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);max-width:100%}.table-scroll.is-scrollable{background:linear-gradient(to right,var(--surface) 30%,transparent) left / 32px 100% no-repeat local,linear-gradient(to left,var(--surface) 30%,transparent) right / 32px 100% no-repeat local,radial-gradient(farthest-side at 0 50%,rgb(0 0 0 / .16),transparent) left / 12px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,rgb(0 0 0 / .16),transparent) right / 12px 100% no-repeat scroll,var(--surface)}.table-scroll:focus-visible{outline-offset:0}.prose .table-scroll{font-size:.95rem}table{border-collapse:collapse;width:100%;font-size:.95rem;line-height:1.45}th,td{text-align:left;padding:.65rem .85rem;border-bottom:1px solid var(--line);vertical-align:top}th{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2);font-weight:600;background:var(--panel);white-space:nowrap}tr:last-child td{border-bottom:0}td:first-child{font-weight:700}thead td{background:var(--panel);border-bottom:1px solid var(--line)}td.num,.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.callout{border-left:3px solid var(--accent);background:var(--surface);padding:var(--s-4);border-radius:0 var(--r) var(--r) 0}.block-head{display:flex;align-items:center;gap:var(--s-3);margin-bottom:var(--s-4)}.block-head h2{font-size:clamp(1.3rem,1.1rem + .9vw,1.7rem)}.block-head .tagcode{color:var(--accent)}.faq-list{border-top:1px solid var(--line)}.faq-item{border-bottom:1px solid var(--line)}.faq-item summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s-4);padding:var(--s-4) 0;font-weight:700;font-size:1.04rem;line-height:1.4}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:hover{color:var(--accent)}.faq-item .pm{flex:none;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--line-2);position:relative;margin-top:-.05rem}.faq-item .pm:before,.faq-item .pm:after{content:"";position:absolute;left:50%;top:50%;width:11px;height:2px;background:var(--accent);transform:translate(-50%,-50%);transition:transform .2s}.faq-item .pm:after{transform:translate(-50%,-50%) rotate(90deg)}.faq-item[open] .pm:after{transform:translate(-50%,-50%) rotate(0)}.faq-item .faq-a{padding:0 0 var(--s-4);color:var(--ink-2);max-width:64ch}.faq-item .faq-a a{color:var(--ink);font-weight:700;text-decoration-color:var(--accent)}.faq-cols{display:grid;gap:0 var(--s-7)}@media(min-width:860px){.faq-cols{grid-template-columns:1fr 1fr}.faq-cols .faq-list+.faq-list{border-top-color:var(--line)}}@media(prefers-reduced-motion:reduce){.faq-item .pm:before,.faq-item .pm:after,.ng-chev,.toc summary svg{transition:none}}.sources-quiet{margin-top:var(--s-6);padding-top:var(--s-4);border-top:1px solid var(--line);font-size:.85rem;color:var(--ink-3)}.sources-quiet a{color:var(--ink-2);text-decoration-color:var(--line-2);text-underline-offset:2px}.sources-quiet a:hover{color:var(--ink);text-decoration-color:var(--accent)}.sources-line{margin:0}.sources-details{margin-top:var(--s-2)}.sources-details summary{cursor:pointer;color:var(--ink-2);width:fit-content}.sources-details summary:hover{color:var(--ink)}.sources-details ol{margin:var(--s-3) 0 0;padding-left:1.2rem;display:grid;gap:.35rem}.sources-details a{overflow-wrap:anywhere}.sources-details .host{font-family:var(--f-mono);font-size:.72rem;color:var(--ink-3)}.sources-details p{margin-top:var(--s-3)}.updated-stamp{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--f-mono);font-size:.76rem;color:var(--ink-2)}.tool-slot{margin-top:var(--s-6)}.tool-slot:empty{display:none}.site-foot{margin-top:auto;background:var(--bg-2);color:var(--ink-2);font-size:.92rem;border-top:1px solid var(--line)}.site-foot .piperule{margin-top:-1px}.foot-top{display:grid;gap:var(--s-7);padding-block:var(--s-6) var(--s-7)}.foot-brand{display:grid;gap:var(--s-3);align-content:start;max-width:36ch}.foot-brand .logo{color:var(--ink)}.foot-upd{font-size:.76rem}.foot-map{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-6) var(--s-5)}.foot-map ul{list-style:none;margin:0;padding:0;display:grid;gap:.1rem}.foot-map ul ul{margin:.1rem 0 .55rem;padding-left:.8rem;border-left:1px solid var(--line)}.foot-map a{text-decoration:none;display:inline-block;padding:.2rem 0}.foot-map a:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent)}.foot-map .foot-pillar{color:var(--ink);font-weight:700}.foot-map ul ul a{font-size:.87rem}.foot-h{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink);margin-bottom:var(--s-3);display:flex;gap:.5rem;align-items:center}.foot-h .tagcode{color:var(--accent)}.foot-h2{margin-top:var(--s-5)}.foot-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s-2) var(--s-5);padding-block:var(--s-4) calc(var(--s-5) + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);font-size:.82rem}@media(max-width:719px){.foot-map ul ul{display:none}.foot-map .foot-pillar{font-weight:600;padding:.3rem 0}}@media(min-width:720px){.foot-map{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1080px){.foot-top{grid-template-columns:240px 1fr;gap:var(--s-7)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:.6rem 1.1rem;border-radius:8px;border:1.5px solid var(--ink);background:var(--ink);color:var(--bg);font-weight:700;text-decoration:none;cursor:pointer;font-size:.95rem}.btn:hover{background:color-mix(in srgb,var(--ink) 88%,var(--accent))}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line-2)}.btn.ghost:hover{border-color:var(--ink)}.btn.accent{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}@media print{.site-head,.site-foot,.toc-wrap,.tool-slot,.piperule,.head-art{display:none!important}body{background:#fff;color:#000}}.areamap{width:100%;height:auto;display:block}.am-dot{fill:var(--pipe);opacity:.55}.am-outline{fill:none;stroke:var(--pipe);stroke-width:1.25;stroke-linejoin:round}.am-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:2 4;fill:none}.am-lbl{font-family:var(--f-mono);font-size:8px;fill:var(--ink-3)}.am-halo{fill:var(--bg-2)}.am-pt{fill:var(--accent)}.am-n{font-family:var(--f-mono);font-size:9.5px;font-weight:600;fill:var(--accent-ink);text-anchor:middle}
