:root{--bg:#fbfcfd;--surface:#fff;--surface-2:#eef2f5;--ink:#101a20;--ink-soft:#35474f;--muted:#5c6f78;--line:#d3dde3;--line-strong:#b2c1c9;--accent:#1b4d7a;--accent-soft:#e4edf5;--warn:#8a5b12;--warn-soft:#f8f0df;--ok:#1f5f45;--ok-soft:#e2efe9;--display:"Charter", "Bitstream Charter", "Iowan Old Style", "Palatino Linotype", Palatino, "Source Serif Pro", Georgia, serif;--body:-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "Cascadia Mono", "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--measure:40rem;--toc-w:15rem;--toc-gap:4rem}@media (prefers-color-scheme:dark){:root{--bg:#0d1418;--surface:#131e24;--surface-2:#18252c;--ink:#e6eef2;--ink-soft:#c0cfd7;--muted:#8fa3ad;--line:#253540;--line-strong:#3a4c58;--accent:#6fa8d6;--accent-soft:#12293b;--warn:#d2a054;--warn-soft:#2b2314;--ok:#6bbd97;--ok-soft:#142720}}:root[data-theme=dark]{--bg:#0d1418;--surface:#131e24;--surface-2:#18252c;--ink:#e6eef2;--ink-soft:#c0cfd7;--muted:#8fa3ad;--line:#253540;--line-strong:#3a4c58;--accent:#6fa8d6;--accent-soft:#12293b;--warn:#d2a054;--warn-soft:#2b2314;--ok:#6bbd97;--ok-soft:#142720}:root[data-theme=light]{--bg:#fbfcfd;--surface:#fff;--surface-2:#eef2f5;--ink:#101a20;--ink-soft:#35474f;--muted:#5c6f78;--line:#d3dde3;--line-strong:#b2c1c9;--accent:#1b4d7a;--accent-soft:#e4edf5;--warn:#8a5b12;--warn-soft:#f8f0df;--ok:#1f5f45;--ok-soft:#e2efe9}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:17px;line-height:1.72}a{color:var(--accent);text-underline-offset:2px}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.wrap{max-width:1180px;margin:0 auto;padding:0 26px}.site-header{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg) 92%, transparent);backdrop-filter:blur(8px);z-index:20;position:sticky;top:0}.site-header .wrap{justify-content:space-between;align-items:center;gap:18px;padding-top:14px;padding-bottom:14px;display:flex}.brand{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink);font-size:12.5px;font-weight:600;text-decoration:none}.brand span{color:var(--accent)}.nav{align-items:center;gap:18px;font-size:14px;display:flex}.nav a{color:var(--muted);text-decoration:none}.nav a:hover{color:var(--ink)}.theme-toggle{border:1px solid var(--line-strong);color:var(--muted);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:2px;padding:4px 9px;font-size:11px}.theme-toggle:hover{color:var(--ink);border-color:var(--ink-soft)}.site-footer{border-top:1px solid var(--line);color:var(--muted);margin-top:80px;padding:26px 0 60px;font-size:14px}h1,h2,h3{font-family:var(--display);letter-spacing:-.012em;text-wrap:balance;font-weight:600;line-height:1.18}.eyebrow{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--accent);font-size:11.5px}.index-head{border-bottom:2px solid var(--ink);margin-bottom:8px;padding:60px 0 40px}.index-head h1{margin:14px 0 18px;font-size:clamp(32px,5vw,50px)}.index-head p{max-width:62ch;color:var(--ink-soft);margin:0;font-size:17.5px}.entry{border-bottom:1px solid var(--line);color:inherit;grid-template-columns:92px minmax(0,1fr);gap:24px;padding:26px 0;text-decoration:none;display:grid}.entry:hover{background:var(--surface-2)}.entry:hover h2{color:var(--accent)}.entry-code{font-family:var(--mono);letter-spacing:.1em;color:var(--accent);border:1px solid var(--line-strong);text-align:center;border-radius:2px;height:fit-content;padding:3px 0;font-size:11.5px}.entry h2{margin:0 0 6px;font-size:21px}.entry p{color:var(--ink-soft);max-width:66ch;margin:0 0 10px;font-size:15.5px}.topics{flex-wrap:wrap;gap:7px;display:flex}.topic{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:2px;padding:2px 6px;font-size:10.5px}.wrap--post{max-width:calc(var(--measure) + var(--toc-gap) + var(--toc-w) + 52px)}.post-layout{grid-template-columns:minmax(0, var(--measure)) var(--toc-w);gap:var(--toc-gap);align-items:start;display:grid}.post-head{border-bottom:1px solid var(--line-strong);margin-bottom:34px;padding:54px 0 26px}.post-head h1{margin:12px 0 16px;font-size:clamp(28px,4.2vw,42px)}.post-head .lede{color:var(--ink-soft);max-width:var(--measure);margin:0 0 18px;font-size:18.5px}.prose{max-width:none}.prose h2{margin:52px 0 6px;padding-top:10px;font-size:clamp(21px,2.6vw,27px)}.prose h2:after{content:"";background:var(--accent);width:46px;height:2px;margin-top:12px;margin-bottom:18px;display:block}.prose h3{font-family:var(--body);margin:34px 0 8px;font-size:17.5px;font-weight:700}.prose p{margin:0 0 16px}.prose ul,.prose ol{margin:0 0 18px;padding-left:22px}.prose li{margin-bottom:8px}.prose li>ul,.prose li>ol{margin-top:8px}.prose strong{font-weight:650}.prose blockquote{border-left:3px solid var(--accent);color:var(--ink-soft);margin:0 0 20px;padding:2px 0 2px 20px}.prose blockquote p:last-child{margin-bottom:0}.prose code{font-family:var(--mono);background:var(--surface-2);word-break:break-word;border-radius:3px;padding:1px 5px;font-size:.87em}.prose pre{font-family:var(--mono);border:1px solid var(--line);border-radius:3px;margin:0 0 20px;padding:15px 17px;font-size:13.5px;line-height:1.6;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose table{border-collapse:collapse;width:100%;min-width:480px;margin:0;font-size:14.5px}.table-scroll{border:1px solid var(--line);border-radius:3px;margin:0 0 22px;overflow-x:auto}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:9px 14px}.prose th{font-family:var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--muted);background:var(--surface-2);font-size:11px;font-weight:600}.prose tbody tr:last-child td{border-bottom:none}.prose hr{border:none;border-top:1px solid var(--line);margin:44px 0}.toc{border-left:1px solid var(--line);max-height:calc(100vh - 120px);padding-left:18px;font-size:13.5px;position:sticky;top:82px;overflow-y:auto}.toc-title{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:12px;font-size:10.5px}.toc a{color:var(--muted);padding:4px 0;line-height:1.4;text-decoration:none;display:block}.toc a:hover,.toc a.active{color:var(--accent)}.post-nav{border-top:2px solid var(--ink);justify-content:space-between;gap:20px;margin-top:60px;padding-top:24px;font-size:15px;display:flex}.post-nav a{max-width:46%;text-decoration:none}.post-nav .dir{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:10.5px;display:block}@media (width<=940px){.post-layout{grid-template-columns:minmax(0,1fr);gap:0}.toc{display:none}.entry{grid-template-columns:66px minmax(0,1fr);gap:16px}}@media print{.site-header,.toc,.post-nav,.site-footer{display:none}.post-layout{display:block}body{color:#000;background:#fff;font-size:11pt}.prose h2{break-after:avoid}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}.lang-link{border-bottom:1px dotted var(--line-strong)}.diagram{margin:30px 0 26px}.diagram svg{width:100%;height:auto;color:var(--ink);display:block;overflow:visible}.diagram svg text{font-family:var(--body);fill:currentColor}.diagram svg text.lbl{font-family:var(--mono);letter-spacing:.08em}.diagram svg .box{fill:none;stroke:var(--line-strong);stroke-width:1.1px}.diagram svg .box-accent{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.2px}.diagram svg .flow{fill:none;stroke:var(--muted);stroke-width:1.2px}.diagram svg .dim{opacity:.62}.diagram svg .box-soft{fill:var(--surface-2);stroke:var(--line);stroke-width:1px}.diagram svg .box-warn{fill:var(--warn-soft);stroke:var(--warn);stroke-width:1.1px}.diagram svg .box-ok{fill:var(--ok-soft);stroke:var(--ok);stroke-width:1.1px}.diagram svg .axis{fill:none;stroke:var(--line-strong);stroke-width:1px}.diagram svg .grid{fill:none;stroke:var(--line);stroke-width:1px}.diagram svg .dashed{stroke-dasharray:4 3}.diagram svg .node{fill:currentColor;stroke:none}.diagram svg .node-open{fill:var(--bg);stroke:currentColor;stroke-width:1.1px}.diagram svg .node-accent{fill:var(--accent);stroke:none}.diagram svg .edge{fill:none;stroke:var(--line-strong);stroke-width:.9px}.diagram svg .curve{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.diagram svg .curve-accent{fill:none;stroke:var(--accent);stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram svg .curve-warn{fill:none;stroke:var(--warn);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.diagram svg .area{fill:var(--accent-soft);stroke:none}.diagram svg .area-warn{fill:var(--warn-soft);stroke:none}.diagram svg .area-ok{fill:var(--ok-soft);stroke:none}.diagram svg .cell{fill:none;stroke:var(--line);stroke-width:.9px}.diagram svg .cell-on{fill:var(--accent-soft);stroke:var(--accent);stroke-width:.9px}.diagram svg .cell-off{fill:var(--surface-2);stroke:var(--line);stroke-width:.9px}.diagram svg .bar{fill:var(--line-strong);stroke:none}.diagram svg .bar-accent{fill:var(--accent);stroke:none}.diagram svg text.num{font-family:var(--mono);opacity:.7;font-size:9px}.diagram+.diagram{margin-top:22px}.diagram figcaption{color:var(--muted);margin-top:12px;font-size:14px;line-height:1.55}
