@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/source-serif-4-latin.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}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/source-serif-4-latin-ext.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:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/source-serif-4-latin.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}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/source-serif-4-latin-ext.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(/fonts/ibm-plex-mono-400-latin.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}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latin-ext.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:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600-latin.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}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600-latin-ext.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}:root{--paper:#F7F7F4;--surface:#FFFFFF;--ink:#15171B;--ink-soft:#565B63;--rule:#D5D3CC;--accent:#8C1D18;--accent-soft:#F4E9E7;--ok:#1F5D3A;--warn:#8A4B12;--f-text:"Source Serif 4",Georgia,"Times New Roman",serif;--f-mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;--measure:64ch;--rail:280px;--gutter:clamp(16px,4vw,52px);--radius:2px;--text:var(--ink);--muted:var(--ink-soft);--ink-deep:var(--ink);--gold:var(--accent);--gold-text:var(--accent);--gold-soft:var(--accent-soft);--f-body:var(--f-text);--f-display:var(--f-text)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.62 var(--f-text)}a{color:var(--ink);text-decoration-color:var(--accent);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}h1,h2,h3,h4{font-family:var(--f-text);color:var(--ink);line-height:1.14;margin:0 0 .4em;font-weight:600;letter-spacing:-.012em}h1{font-size:clamp(31px,4.4vw,46px)}h2{font-size:clamp(23px,2.7vw,29px);margin-top:2.4em}h3{font-size:20px;margin-top:1.9em}p,li{max-width:var(--measure)}code,.mono{font-family:var(--f-mono);font-size:.9em}.table-scroll{overflow-x:auto;margin:1em 0}.table-scroll table{margin:0}table{border-collapse:collapse;width:100%;font-size:.94em;margin:1em 0}th,td{border-bottom:1px solid var(--rule);padding:.55em .7em;text-align:left;vertical-align:top}th{font-family:var(--f-mono);font-size:.82em;letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--ink-soft);border-top:1px solid var(--ink);border-bottom-color:var(--ink)}blockquote{margin:1.3em 0;padding:0 0 0 1.1em;border-left:2px solid var(--accent);color:var(--ink-soft)}hr{border:0;border-top:1px solid var(--rule);margin:2.4em 0}.wrap{max-width:1180px;margin:0 auto;padding:0 var(--gutter)}.eyebrow{font-family:var(--f-mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.eyebrow b{color:var(--accent);font-weight:600}.site-head{background:var(--paper);border-bottom:1px solid var(--ink)}.site-head .wrap{display:flex;align-items:baseline;gap:28px;padding-top:18px;padding-bottom:14px;flex-wrap:wrap}.brand{font-family:var(--f-text);font-size:25px;font-weight:600;color:var(--ink);text-decoration:none;letter-spacing:-.02em}.brand span{color:var(--accent)}.nav{display:flex;gap:20px;margin-left:auto;flex-wrap:wrap}.nav a{color:var(--ink-soft);text-decoration:none;font-size:14px;font-family:var(--f-mono);letter-spacing:.02em;padding-bottom:2px}.nav a:hover{color:var(--ink)}.nav a[aria-current]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--accent)}.page{display:grid;grid-template-columns:minmax(0,1fr) var(--rail);gap:var(--gutter);padding:34px 0 72px}.page>article{min-width:0}@media(max-width:900px){.page{grid-template-columns:1fr}.rail{position:static}}.crumbs{font-family:var(--f-mono);font-size:12px;color:var(--ink-soft);margin:22px 0 6px}.crumbs a{color:var(--ink-soft)}.crumbs span{margin:0 .45em}.rail{position:sticky;top:20px;align-self:start;font-size:14px}.rail section{border-top:1px solid var(--ink);padding:12px 0 4px;margin-bottom:22px}.rail h2{font-family:var(--f-mono);font-size:11px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 10px;font-weight:600}.rail ul{list-style:none;margin:0;padding:0}.rail li{padding:6px 0;border-top:1px solid var(--rule)}.rail li:first-child{border-top:0}.cite{font-family:var(--f-mono);font-size:12.5px;color:var(--ink)}.cite small{display:block;font-family:var(--f-text);color:var(--ink-soft);font-size:13px}.stamp{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}.stamp .yr{font-family:var(--f-mono);font-size:29px;font-weight:600;color:var(--ink);line-height:1;letter-spacing:-.02em}.stamp .ok{color:var(--ok);font-weight:600}.stamp .draft{color:var(--warn);font-weight:600}.stamp small{color:var(--ink-soft)}.callout{border-left:2px solid var(--accent);padding:2px 0 2px 1.1em;margin:1.6em 0}.callout.trap{border-left-color:var(--warn)}.callout h4,.callout-label{margin:0 0 6px;font-family:var(--f-mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;max-width:none}.figure{font-family:var(--f-mono);font-size:.93em;background:var(--accent-soft);padding:0 .3em;border-radius:var(--radius);-webkit-box-decoration-break:clone;box-decoration-break:clone}.figure sup{font-size:.7em;color:var(--ink-soft);white-space:nowrap}button.figure{border:0;font-size:.93em;line-height:inherit;color:inherit;cursor:pointer;text-align:left;margin:0;font-family:var(--f-mono);text-decoration:underline dotted var(--accent);text-underline-offset:3px}button.figure:hover{background:var(--accent);color:var(--surface)}button.figure:hover sup{color:var(--accent-soft)}.figure-missing{background:#f8d0d0}.figure-src[popover]{max-width:min(46ch,calc(100vw - 32px));padding:12px 14px;border:1px solid var(--ink);border-radius:var(--radius);background:var(--surface);color:var(--ink);font:14px/1.5 var(--f-text);box-shadow:0 2px 0 var(--rule)}.figure-src[popover]::backdrop{background:#15171b29}.figure-src-head{display:block;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--accent);font-weight:600;margin-bottom:5px}.figure-src-body{display:block}.figure-src a{color:var(--ink);text-decoration-color:var(--accent);overflow-wrap:anywhere}@supports not selector(:popover-open){.figure-src{display:inline;font-size:.82em;color:var(--ink-soft)}.figure-src-head{display:inline;margin:0 .3em 0 .4em}.figure-src-body{display:inline}}.scenario{counter-increment:scn;border-top:1px solid var(--rule);padding:14px 0 2px;margin:1.8em 0}.scenario h3:before{content:"Scenario " counter(scn);display:block;font-family:var(--f-mono);font-size:11.5px;letter-spacing:.1em;color:var(--accent);text-transform:uppercase;margin-bottom:2px}.scenario h3{margin-top:0}article{counter-reset:scn}.changelog{font-size:.95em}.changelog time{font-family:var(--f-mono);color:var(--ink-soft);margin-right:.8em}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:0 var(--gutter);margin:24px 0}.card{border-top:1px solid var(--ink);padding:14px 0 22px;text-decoration:none;color:inherit;display:block}.card h3,.card h2{margin:.25em 0 .3em;font-size:19px}.card p{color:var(--ink-soft);font-size:15px;margin:0}.card .eyebrow{margin-bottom:4px}.card:hover h3,.card:hover h2{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}.toc{list-style:none;padding:0;margin:0}.toc li{padding:9px 0;border-bottom:1px solid var(--rule);display:flex;gap:14px;align-items:baseline;max-width:none}.toc .code{font-family:var(--f-mono);font-size:12px;color:var(--ink-soft);min-width:5.5em}.badge{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;padding:2px 7px;border:1px solid var(--rule);color:var(--ink-soft);margin-left:auto;white-space:nowrap}.badge.published{border-color:var(--ok);color:var(--ok)}.hero{padding:64px 0 44px;border-bottom:1px solid var(--ink)}.hero h1{font-size:clamp(34px,5.4vw,62px);max-width:19ch;font-weight:600;letter-spacing:-.022em}.hero p.eyebrow{font-size:11.5px;max-width:none}.hero p:not(.eyebrow){font-size:19px;color:var(--ink-soft);max-width:58ch}.hero .lede-rule{width:52px;height:2px;background:var(--accent);margin:24px 0}@media(max-width:700px){.hero{padding:40px 0 32px}.hero h1{font-size:clamp(29px,8vw,38px)}}.site-foot{border-top:1px solid var(--ink);margin-top:56px;padding:28px 0 44px;font-size:14px;color:var(--ink-soft)}.site-foot p{max-width:68ch}.digest{border-top:1px solid var(--ink);padding:24px 0 0;margin:52px 0 0}.digest h2{margin:0 0 .35em;font-size:22px}.digest p{color:var(--ink-soft);font-size:15px;max-width:60ch}.digest-form label{display:block;font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin:16px 0 6px}.digest-row{display:flex;gap:10px;flex-wrap:wrap;max-width:34em}.digest-row input{flex:1 1 16em;min-width:0;font:16px/1.4 var(--f-text);color:var(--ink);background:var(--surface);border:1px solid var(--rule);padding:10px 12px;border-radius:var(--radius)}.digest-row input:focus-visible{border-color:var(--accent)}.digest-row button{font:600 15px/1.4 var(--f-mono);color:var(--surface);background:var(--ink);border:1px solid var(--ink);padding:10px 22px;cursor:pointer;border-radius:var(--radius)}.digest-row button:hover{background:var(--accent);border-color:var(--accent)}.digest .digest-note{font-size:13px;margin:10px 0 0}@media(prefers-reduced-motion:no-preference){.digest-row button{transition:background-color .15s,border-color .15s}}.stamp-band{display:none}@media(max-width:900px){.stamp-band{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;border-top:1px solid var(--ink);border-bottom:1px solid var(--rule);padding:10px 0;margin:0 0 1.6em}.stamp-band .eyebrow{flex:1 0 100%;margin:0}.stamp-band .yr{font-family:var(--f-mono);font-size:26px;font-weight:600;color:var(--ink);line-height:1}.stamp-band .ok{color:var(--ok);font-weight:600}.stamp-band .draft{color:var(--warn);font-weight:600}.stamp-band small{color:var(--ink-soft)}.rail-stamp{display:none}}.section-mark{font-family:var(--f-mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;margin:0 0 18px;padding-top:14px;border-top:1px solid var(--ink)}.titlepage{padding:76px 0 52px}.titlepage h1{font-size:clamp(36px,6.2vw,72px);max-width:17ch;font-weight:600;letter-spacing:-.026em;line-height:1.04}.titlepage .lede-rule{width:52px;height:2px;background:var(--accent);margin:26px 0}.titlepage .lede{font-size:19px;color:var(--ink-soft);max-width:56ch}.titlepage .release{font-family:var(--f-mono);font-size:12px;color:var(--ink-soft);margin-top:34px;max-width:none}@media(max-width:700px){.titlepage{padding:44px 0 34px}.titlepage h1{font-size:clamp(30px,8.4vw,40px)}}.outline{padding:26px 0 44px}.measures{display:flex;flex-wrap:wrap;gap:0 52px;margin:0 0 26px}.measures div{padding:0}.measures dt{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.measures dd{margin:2px 0 0;font-family:var(--f-mono);font-size:30px;font-weight:600;color:var(--ink);letter-spacing:-.02em}.outline .toc a{text-decoration:none}.outline .toc a:hover{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}.proof{padding:52px 0 60px;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);margin:26px 0}.proof-lede{font-size:17px;color:var(--ink-soft);max-width:52ch}.proof-line{font-size:clamp(23px,3.4vw,38px);line-height:1.34;max-width:22ch;margin:34px 0 26px;letter-spacing:-.014em}.proof-line button.figure{font-size:.86em;padding:.06em .3em}.proof-note{font-family:var(--f-mono);font-size:12.5px;color:var(--ink-soft);max-width:56ch}@media(max-width:700px){.proof{padding:36px 0 40px}.proof-line{max-width:none;margin:24px 0 20px}}.entry{padding:14px 0 40px}.colophon{padding:14px 0 8px}.colophon p{max-width:68ch;color:var(--ink-soft);font-size:16px}.colophon p:first-of-type{color:var(--ink)}.proof>.section-mark{border-top:0;padding-top:0}.titlepage+.outline>.section-mark{border-top:1px solid var(--ink)}
