@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/adb45196eddef626-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-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d0ba92e140f0dc-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:Instrument Sans Fallback;src:local("Arial");ascent-override:94.42%;descent-override:24.33%;line-gap-override:0.00%;size-adjust:102.74%}.__className_3f4a4b{font-family:Instrument Sans,Instrument Sans Fallback;font-style:normal}.__variable_3f4a4b{--font-sans:"Instrument Sans","Instrument Sans Fallback"}@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-20c4,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-20c4,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_9f0762{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.__variable_9f0762{--font-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:#0B1120;color:#FFFFFF;font-family:var(--font-sans);line-height:1.6;overflow-x:hidden}:root{--paper:#fbfbfa;--tint:#f1f1f2;--ink:#131317;--ink-2:#4a4a54;--ink-3:#8b8b95;--rule:#e2e2e6;--accent:#cf0059;--accent-soft:rgba(207,0,89,0.09);--gut:28px}@media (prefers-color-scheme:dark){:root{--paper:#0e0e11;--tint:#17171b;--ink:#ececef;--ink-2:#b4b4bd;--ink-3:#7b7b86;--rule:#27272d;--accent:#ff4b93;--accent-soft:rgba(255,75,147,0.13)}}body:has(.site){background:var(--paper)}.site{min-height:100vh;background:var(--paper);color:var(--ink);font:400 15px/1.55 var(--font-sans);color-scheme:light;overflow-x:clip}@media (prefers-color-scheme:dark){.site{color-scheme:dark}}.site [hidden]{display:none!important}.site a:focus-visible,.site button:focus-visible,.site input:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.site ::selection{background:var(--accent);color:var(--paper)}.site .sc{font:500 11px/1.4 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.dot-grid{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.site-wrap{position:relative;z-index:1;max-width:1320px;margin:0 auto;padding-left:max(var(--gut),env(safe-area-inset-left,0px));padding-right:max(var(--gut),env(safe-area-inset-right,0px))}.site-top{justify-content:space-between;gap:16px;padding-top:28px}.site-top,.site-top .brand{display:flex;align-items:center}.site-top .brand{gap:9px;font:600 16px var(--font-sans);letter-spacing:-.01em;color:var(--ink);text-decoration:none}.site-top .top-link{font:500 13px var(--font-sans);color:var(--ink-2);text-decoration:none}.site-top .top-link:hover,.site-top .top-link[aria-current=page]{color:var(--ink)}.clearing{background:var(--paper);box-shadow:0 0 48px 36px var(--paper)}.engine{position:relative;margin:0;padding-block:12px 64px}.engine .callout{margin:20px 0 4px;max-width:46ch;font:500 clamp(18px,1.5vw,20px)/1.45 var(--font-sans);letter-spacing:-.01em;color:var(--ink);text-wrap:pretty}.engine .callout:before{content:"";display:block;width:28px;height:2px;margin-bottom:14px;background:var(--accent)}@media (min-width:1100px){.engine .stage{display:grid;grid-template-columns:250px minmax(0,1fr);grid-column-gap:40px;column-gap:40px;align-items:start}.engine .callout{margin:0;max-width:none}}.engine figcaption{margin-top:14px;font:14px/1.55 var(--font-sans);color:var(--ink-2);max-width:82ch}.engine figcaption b{color:var(--ink);font-weight:600}.fig-ctrl{flex-wrap:wrap;gap:10px 20px;margin-top:12px;font:500 12px var(--font-mono);color:var(--ink-3)}.fig-ctrl,.fig-ctrl label{display:flex;align-items:center}.fig-ctrl label{gap:10px}.fig-ctrl input[type=range]{width:150px;accent-color:var(--accent)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chips button{font:500 12px var(--font-mono);color:var(--ink-2);background:none;border:1px solid var(--rule);border-radius:4px;padding:4px 9px;cursor:pointer}.chips button:hover{color:var(--ink);border-color:var(--ink-3)}.chips button[aria-pressed=true]{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.eng-wrap{overflow-x:auto}.eng{display:block;width:100%;min-width:660px;height:auto;max-height:max(480px,calc(100svh - 150px));font-family:var(--font-mono)}.eng .side-l{fill:var(--tint)}.eng .side-l,.eng .side-r{stroke:var(--ink);stroke-width:1}.eng .side-r{fill:color-mix(in srgb,var(--ink) 9%,var(--paper))}.eng .top{fill:var(--paper);stroke:var(--ink);stroke-width:1.2}.eng .cell{fill:var(--ink)}.eng .tile{fill:var(--paper);stroke:var(--ink);stroke-width:.9;transition:fill .25s,stroke .25s}.eng .tile.sys,.eng .tile.wld{cursor:pointer}.eng .tile.on{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.6}.eng .tname{font:600 13px var(--font-sans);fill:var(--ink);pointer-events:none;transition:fill .25s}.eng .tname.on{fill:var(--accent)}.eng .tsub{font:500 9px var(--font-mono);fill:var(--ink-3);letter-spacing:.06em;pointer-events:none}.eng .plab{font:500 10px var(--font-mono);letter-spacing:.08em;fill:var(--ink-3)}.eng .bar{fill:var(--ink)}.eng .bart{font:600 12px var(--font-sans);fill:var(--paper)}.eng .barm{font:500 10px var(--font-mono);fill:var(--paper);opacity:.75;letter-spacing:.04em}.eng .glyph{fill:var(--paper);stroke:var(--ink);stroke-width:1;transition:fill .2s,stroke .2s}.eng .glyph.a{fill:var(--ink)}.eng .glyph.on{fill:var(--accent);stroke:var(--accent)}.eng .wire{stroke:var(--ink-3);stroke-width:.6}.eng .dash{fill:var(--paper);stroke:var(--ink-3);stroke-dasharray:4 4}.eng .guide{stroke:var(--ink-3);stroke-width:.8;stroke-dasharray:3 4}.eng .leader{stroke:var(--ink-2);stroke-width:.8}.eng .anch{fill:var(--paper);stroke:var(--ink);stroke-width:1}.eng .ref{font:600 14px var(--font-sans);fill:var(--ink)}.eng .refn{font:500 11px var(--font-mono);fill:var(--accent)}.eng .refs{font:13px var(--font-sans);fill:var(--ink-2)}.eng .trace{stroke:var(--accent);stroke-width:1.3;stroke-dasharray:3 3;fill:none}.eng .pulse{fill:var(--accent)}.eng .pulse.data{fill:var(--ink)}.eng.compact{min-width:0}.eng.compact .anch,.eng.compact .leader,.eng.compact .ref,.eng.compact .refn,.eng.compact .refs{display:none}.eng.compact .tname{font-size:17px}.eng.compact .plab{font-size:12.5px}.eng.compact .tsub{font-size:11px}.eng.compact .bart{font-size:16px}.eng.compact .barm{font-size:11px}.eng-legend{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-gap:4px;gap:4px;font:13.5px/1.45 var(--font-sans);color:var(--ink-2)}.eng-legend b{font:500 12px var(--font-mono);color:var(--accent);margin-right:6px}.eng-legend strong{color:var(--ink);font-weight:600}.engine .tip{position:absolute;z-index:3;max-width:290px;padding:10px 12px;background:var(--ink);color:var(--paper);border-radius:4px;font:13px/1.45 var(--font-sans);pointer-events:none;opacity:0;transition:opacity .15s}.engine .tip b{display:block;font-weight:600}.engine .tip i{font:500 10px var(--font-mono);font-style:normal;letter-spacing:.06em;text-transform:uppercase;opacity:.7}.engine .tip.show{opacity:1}.engine .tip .stat{display:block;margin-top:10px;font:500 34px/1 var(--font-sans);letter-spacing:-.025em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.engine .tip .statl{display:block;margin-top:5px;font:500 10px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;opacity:.7}.engine .tip .d{display:block;margin-top:10px;padding-top:9px;border-top:1px solid color-mix(in srgb,var(--paper) 22%,transparent)}.log{margin-top:8px;border-top:1.5px solid var(--ink);font:12.5px/1.5 var(--font-mono)}.log,.log-h{border-bottom:1px solid var(--rule)}.log-h{display:flex;justify-content:space-between;gap:12px;padding:8px 0}.log ol{list-style:none;margin:0;padding:0;height:180px;overflow:hidden}.log li{display:grid;grid-template-columns:70px 78px minmax(0,1fr) 118px 62px;grid-gap:12px;gap:12px;align-items:baseline;height:30px;padding-top:6px;border-bottom:1px solid var(--rule);color:var(--ink-3);white-space:nowrap;animation:logIn .45s ease}.log li:first-child{color:var(--ink)}.log .call{overflow:hidden;text-overflow:ellipsis;color:var(--ink-2)}.log li:first-child .call{color:var(--ink)}.log .fn{color:var(--accent)}.log .ms{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.log .act:after{content:" →";color:var(--accent)}@keyframes logIn{0%{opacity:0;transform:translateY(-6px)}}.page{padding-block:56px 112px}.blog-index,.post article{max-width:980px;margin:0 auto}.page-head h1{font:500 clamp(36px,4.4vw,52px)/1.05 var(--font-sans);letter-spacing:-.035em;color:var(--ink)}.page-head p{margin-top:14px;max-width:60ch;font:18px/1.5 var(--font-sans);color:var(--ink-2)}.post-list{list-style:none;margin-top:40px;border-top:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink)}.post-list li+li{border-top:1px solid var(--rule)}.post-list a{display:grid;grid-template-columns:150px minmax(0,1fr);grid-gap:6px 32px;gap:6px 32px;padding:22px 0;color:inherit;text-decoration:none}.pl-meta{display:flex;flex-direction:column;gap:2px;padding-top:5px;font:500 12px/1.5 var(--font-mono);color:var(--ink-3)}.pl-title{display:block;font:500 22px/1.3 var(--font-sans);letter-spacing:-.015em;color:var(--ink);text-wrap:balance;transition:color .2s}.pl-excerpt{display:block;margin-top:6px;max-width:64ch;font:16px/1.55 var(--font-sans);color:var(--ink-2)}.post-list a:hover .pl-title{color:var(--accent)}.blog-index .empty{margin-top:40px;color:var(--ink-3)}.post-back{font:500 12px var(--font-mono);color:var(--ink-3);text-decoration:none}.post-back:hover{color:var(--ink)}.post-meta{margin-top:28px;font:500 12px/1.5 var(--font-mono);color:var(--ink-3)}.post-title{margin-top:10px;font:500 clamp(32px,4.2vw,48px)/1.08 var(--font-sans);letter-spacing:-.03em;color:var(--ink);text-wrap:balance}.post-lead{margin-top:18px;font:20px/1.5 var(--font-sans);text-wrap:pretty}.post-lead,.prose{color:var(--ink-2)}.prose{margin-top:40px;font:18px/1.7 var(--font-sans)}.prose>*+*{margin-top:1.1em}.prose h1,.prose h2{margin-top:56px;font:600 28px/1.25 var(--font-sans);letter-spacing:-.02em;color:var(--ink);text-wrap:balance}.prose h3{margin-top:36px;font:600 19px/1.3 var(--font-sans);letter-spacing:-.01em;color:var(--ink)}.prose h1+*,.prose h2+*,.prose h3+*{margin-top:12px}.prose iframe{max-width:min(100%,720px);color-scheme:light}.prose>iframe,.prose>img{margin-block:28px!important}.prose a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.prose a:hover{text-decoration-thickness:2px}.prose strong{color:var(--ink);font-weight:600}.prose ol,.prose ul{padding-left:1.3em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--ink-3)}.prose blockquote{padding-left:18px;border-left:2px solid var(--accent);color:var(--ink)}.prose code{font:.86em var(--font-mono);background:var(--tint);padding:1px 5px;border-radius:3px}.prose pre{padding:16px 18px;background:var(--tint);border-radius:4px;overflow-x:auto;font:13.5px/1.65 var(--font-mono);color:var(--ink)}.prose pre code{background:none;padding:0;font-size:inherit}.prose img,.prose video{display:block;max-width:100%;height:auto;margin:28px 0;border:1px solid var(--rule);border-radius:4px}.prose hr{margin:40px 0;border:0;border-top:1px solid var(--rule)}.prose table{width:100%;border-collapse:collapse;font-size:15px}.prose th{padding:10px 14px 8px 0;border-top:1.5px solid var(--ink);border-bottom:1px solid var(--ink);font:500 11px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);text-align:left}.prose td{padding:10px 14px 10px 0;border-bottom:1px solid var(--rule);vertical-align:top}.post-foot{margin-top:56px;padding-top:18px;border-top:1.5px solid var(--ink)}.post-foot a{font:500 12px var(--font-mono);color:var(--ink-3);text-decoration:none}.post-foot a:hover{color:var(--ink)}@media (max-width:640px){:root{--gut:16px}.site-top{padding-top:18px}.engine .callout{font-size:18px}.log li{grid-template-columns:60px minmax(0,1fr) 64px}.log .w,.log .who{display:none}.page{padding-block:36px 80px}.post-list a{grid-template-columns:minmax(0,1fr)}.pl-meta{flex-direction:row;gap:8px;padding-top:0}.pl-meta span:before{content:"·";margin-right:8px}.prose{font-size:17px}}@media (prefers-reduced-motion:reduce){.site *,.site :after,.site :before{transition:none!important;animation:none!important}}