:root{--bg:#02040a;--bg-raise:#070b16;--code-bg:#0a1020;--ink:#dbe7ff;--ink-body:#c9d4ea;--ink-dim:#8796b8;--accent:#ffb454;--accent-dim:#c98a3c;--bolt:#eef3ff;--line:#dbe7ff29;--mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--on-accent:#02040a;--link-hover:#ffd08f;--icode:#ffd08f;--icode-bg:#ffb45414;--code-ink:#e3ebff;--c-com:#8a99bd;--c-key:#9ec3ff;--c-str:#b5e3a1;--asc-w:#6f86b8;--asc-f:#9fe6dc;--good:#b5e3a1;--hatch:#dbe7ff06;--plate:#02040a;--plate-edge:var(--line);--sel:#ffb4544d;--measure:68ch;--col:44rem;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=halloween]{--bg:#07040b;--bg-raise:#100818;--code-bg:#0e0816;--ink:#f2ecd8;--ink-body:#dcd5c4;--ink-dim:#a99bc0;--accent:#ff8a1f;--accent-dim:#c96a14;--line:#a078d247;--on-accent:#07040b;--link-hover:#ffc07a;--icode:#ffc07a;--icode-bg:#ff8a1f1a;--code-ink:#efe8d6;--c-key:#c9a8ff;--c-str:#7dff8a;--asc-w:#8a6fb8;--asc-f:#7dff8a;--good:#7dff8a;--plate:#07040b;--sel:#7dff8a47}:root[data-tone=light]{--bg:#f4ecd8;--bg-raise:#fbf6ea;--code-bg:#fbf6ea;--ink:#1a2138;--ink-body:#2b3148;--ink-dim:#4d5163;--accent:#a8420f;--accent-dim:#8a3608;--bolt:#1a2138;--on-accent:#fbf6ea;--line:#1a21384d;--link-hover:#6e2a05;--icode:#7a2e08;--icode-bg:#a8420f1a;--code-ink:#1a2138;--c-com:#5a5f70;--c-key:#1f4a9c;--c-str:#2d6a1f;--asc-w:#3f5a92;--asc-f:#1c6b61;--good:#2d6a1f;--hatch:#1a21380d;--plate:#02040a;--plate-edge:#1a2138;--sel:#c8531c40;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}::selection{background:var(--sel);color:inherit}body,.toc,pre.code,figure.fig,figure.fig figcaption{transition:background-color .6s,color .6s,border-color .6s}@media (prefers-reduced-motion:reduce){body,.toc,pre.code,figure.fig,figure.fig figcaption{transition:none}}*{box-sizing:border-box}html,body{margin:0}html{-webkit-text-size-adjust:100%;scroll-padding-top:24px}body{background:var(--bg);color:var(--ink-body);font:400 18px/1.7 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;padding:0 20px;padding-bottom:calc(80px + env(safe-area-inset-bottom))}a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:var(--link-hover)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skip{background:var(--accent);color:var(--on-accent);font:500 14px var(--mono);z-index:5;padding:6px 10px;position:absolute;top:-40px;left:8px}.skip:focus{top:8px}.bar{max-width:72rem;padding:calc(16px + env(safe-area-inset-top)) 0 0;font:400 14px/1.4 var(--mono);justify-content:space-between;align-items:center;gap:16px;margin:0 auto;display:flex}.bar a{color:var(--ink-dim);text-decoration:none}.bar a:hover,.bar .back:first-letter{color:var(--accent)}.bar nav a:before{content:"[";color:var(--line)}.bar nav a:after{content:"]";color:var(--line)}.mast{max-width:var(--col);margin:40px auto 0}.ascii{font:400 clamp(9.5px, 2.6vw, 13px)/1.15 var(--mono);color:var(--ink-dim);white-space:pre;-webkit-user-select:none;user-select:none;margin:0 0 28px;overflow:hidden}.ascii .b{color:var(--bolt);font-weight:500}.ascii .a{color:var(--accent)}.ascii .w{color:var(--asc-w)}.ascii .f{color:var(--asc-f)}h1{font:500 clamp(30px, 6vw, 44px)/1.12 var(--mono);letter-spacing:-.02em;color:var(--ink);text-wrap:balance;margin:0 0 14px}.dek{color:var(--ink);max-width:var(--measure);text-wrap:pretty;margin:0 0 18px;font-size:20px;line-height:1.55}.meta{font:400 13px/1.5 var(--mono);color:var(--ink-dim);margin:0}.meta span+span:before{content:" · ";color:var(--line)}.layout{max-width:var(--col);margin:36px auto 0}.toc{font:400 14px/1.5 var(--mono);border:1px solid var(--line);background:var(--bg-raise);margin:0 0 40px;padding:16px 18px;position:relative}.toc:before,.toc:after{content:"+";color:var(--accent);line-height:1;position:absolute}.toc:before{top:-8px;left:-5px}.toc:after{bottom:-8px;right:-5px}.toc h2{font:500 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);margin:0 0 10px}.toc ol{counter-reset:toc;margin:0;padding:0;list-style:none}.toc li{counter-increment:toc;margin:0}.toc a{color:var(--ink-dim);padding:3px 0;text-decoration:none;display:block}.toc a:before{content:counter(toc, decimal-leading-zero) " ";color:var(--line)}.toc a:hover,.toc a[aria-current]{color:var(--accent)}.toc a[aria-current]:before{color:var(--accent-dim)}@media (width>=1360px){.layout{grid-template-columns:minmax(0, 1fr) var(--col) minmax(0, 1fr);align-items:start;column-gap:48px;max-width:none;display:grid}.toc{background:0 0;border:0;grid-area:1/1;justify-self:end;width:15rem;margin:0;padding:0;position:sticky;top:24px}.toc:before,.toc:after{content:none}article{grid-area:1/2}}article>*{max-width:var(--measure)}article>figure,article>pre,article>.wide{max-width:none}article p{text-wrap:pretty;margin:0 0 1.15em}article h2{font:500 24px/1.3 var(--mono);color:var(--ink);letter-spacing:-.01em;margin:2.4em 0 .8em}article h2 .n{color:var(--accent);margin-right:.5ch}article h2 a.anchor{color:inherit;text-decoration:none}article h2 a.anchor:hover .n:after{content:" #";color:var(--ink-dim)}article h3{font:500 18px/1.4 var(--mono);color:var(--ink);margin:1.8em 0 .6em}article strong{color:var(--ink);font-weight:600}article em{color:var(--ink)}article ul,article ol{margin:0 0 1.15em;padding-left:1.3em}article li{margin:.3em 0}article li::marker{color:var(--ink-dim)}article hr{text-align:center;color:var(--ink-dim);font:14px var(--mono);border:0;margin:3em 0}article hr:before{content:"~ ~ ~";letter-spacing:.6em}code,kbd,.g{font-family:var(--mono);font-size:.86em}:not(pre)>code{color:var(--icode);background:var(--icode-bg);overflow-wrap:anywhere;border-radius:3px;padding:.08em .32em}.g{text-align:center;min-width:1.5em;color:var(--bolt);border:1px solid var(--line);border-radius:3px;padding:0 .2em;line-height:1.4;display:inline-block}pre.code{background:var(--code-bg);border:1px solid var(--line);border-left:2px solid var(--accent-dim);font:400 14px/1.6 var(--mono);color:var(--code-ink);tab-size:2;-webkit-overflow-scrolling:touch;margin:1.4em 0 1.6em;padding:16px 18px;overflow-x:auto}pre.code code{font-size:inherit;color:inherit;background:0 0;padding:0}pre.code .c{color:var(--c-com);font-style:italic}pre.code .k{color:var(--c-key)}pre.code .s{color:var(--c-str)}pre.code .h{color:var(--accent)}pre.code[data-lang]:before{content:attr(data-lang);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:8px;font-size:11px;display:block}pre.diagram{font:400 14px/1.35 var(--mono);color:var(--ink-dim);margin:1.4em 0 1.6em;overflow-x:auto}pre.diagram b{color:var(--ink);font-weight:500}pre.diagram i{color:var(--accent);font-style:normal}.table-wrap{margin:1.4em 0 1.6em;overflow-x:auto}table{border-collapse:collapse;font:400 15px/1.5 var(--mono);min-width:100%}th,td{text-align:left;border-bottom:1px dashed var(--line);vertical-align:top;padding:7px 14px 7px 0}th{color:var(--ink-dim);font-size:13px;font-weight:400}td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}th.num{text-align:right}td .up{color:var(--good)}.note{border-left:2px solid var(--line);color:var(--ink-dim);margin:1.4em 0;padding:2px 0 2px 16px;font-size:16px}.note strong{color:var(--ink-body)}figure.fig{border:1px solid var(--line);background:var(--bg-raise);margin:2em 0 2.2em;position:relative}figure.fig:before{content:"+";color:var(--accent);z-index:1;line-height:1;position:absolute;top:-8px;left:-5px}.fig-mount{min-height:300px;position:relative}:root[data-tone=light] figure.fig{box-shadow:3px 3px 0 var(--ink);padding:8px 8px 0}:root[data-tone=light] .fig-mount{background:var(--plate);border:1px solid var(--plate-edge)}:root[data-tone=light] .fig-mount:empty{--hatch:#dbe7ff0a}:root[data-tone=light] .fig-mount:empty:before{color:#aab6d4}:root[data-tone=light] figure.fig figcaption{margin:8px -8px 0}figure.fig[data-fig=pipeline] .fig-mount{min-height:420px}figure.fig[data-fig=hysteresis] .fig-mount{min-height:320px}figure.fig[data-fig=shape-vector] .fig-mount{min-height:360px}.fig-mount:empty{background:repeating-linear-gradient(135deg, transparent 0 11px, var(--hatch) 11px 12px);place-items:center;display:grid}.fig-mount:empty:before{content:"[ interactive figure: " attr(data-label) " ]";font:400 13px var(--mono);color:var(--ink-dim);opacity:.75;text-align:center;padding:0 16px}figure.fig-failed .fig-mount:empty:before{content:"[ figure unavailable ]"}figure.fig figcaption{border-top:1px dashed var(--line);color:var(--ink-dim);padding:12px 16px 14px;font-size:15px;line-height:1.55}figure.fig figcaption b{font:500 12px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-right:.6ch}.end{max-width:var(--col);border-top:1px dashed var(--line);font:400 14px/1.6 var(--mono);color:var(--ink-dim);flex-wrap:wrap;justify-content:space-between;gap:12px;margin:72px auto 0;padding-top:20px;display:flex}.end a{color:var(--ink-dim)}.end a:hover{color:var(--accent)}.posts{max-width:var(--col);margin:0;padding:0;list-style:none}.posts li{border-top:1px dashed var(--line);grid-template-columns:1fr auto;align-items:baseline;column-gap:16px;padding:22px 0;display:grid}.posts li:last-child{border-bottom:1px dashed var(--line)}.posts a{font:500 20px/1.35 var(--mono);color:var(--ink);text-decoration:none}.posts a:hover{color:var(--accent)}.posts a:before{content:"> ";color:var(--accent)}.posts time{font:400 13px var(--mono);color:var(--ink-dim)}.posts p{color:var(--ink-dim);grid-column:1/-1;margin:6px 0 0;font-size:17px}@media (width<=520px){body{padding:0 16px;font-size:17px}.dek{font-size:18px}.mast{margin-top:28px}article h2{font-size:21px}pre.code{border-left-width:2px;border-right:0;margin-left:-16px;margin-right:-16px;padding:14px;font-size:12.5px}figure.fig{border-left:0;border-right:0;margin-left:-16px;margin-right:-16px}figure.fig:before{left:4px}:root[data-tone=light] figure.fig{box-shadow:none;padding:8px 0 0}:root[data-tone=light] .fig-mount{border-left:0;border-right:0}:root[data-tone=light] figure.fig figcaption{margin:8px 0 0}.posts li{grid-template-columns:1fr}.posts time{margin-top:4px}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
