.post{--post-gold:#9a6c22;--post-teal:#37624a;--post-code-bg:#232019;--post-code-bar:#1a1813;--post-code-edge:#35302a;--post-viz-bg:var(--panel);--post-viz-line:var(--rule)}:root[data-theme=dark] .post{--post-gold:#fdba74;--post-teal:#7dd3c7;--post-code-bg:#1e1e1e;--post-code-bar:#252526;--post-code-edge:#3c3c3c;--post-viz-bg:#f6f0e6;--post-viz-line:#d8cfbe}
.post-head{max-width:48rem;margin:0 auto 3.2rem}.post-head__kicker{font:700 .72rem/1 var(--mono);letter-spacing:.26em;text-transform:uppercase;color:var(--accent);margin:0 0 1rem}.post-head h1{max-width:20ch;font-family:var(--serif);letter-spacing:-.022em;margin:0;font-size:clamp(2.1rem,6vw,3.4rem);font-weight:700;line-height:1.04}.post-head__lede{max-width:62ch;color:var(--ink-soft);margin:1.1rem 0 0;font-size:1.04rem;line-height:1.7}.post-head__meta{flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:1.6rem;display:flex}.post-head__meta .tags{margin:0}.post-head__away{border:1px solid var(--rule);border-radius:var(--radius);background:var(--panel);color:var(--ink-soft);font:400 .66rem/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:.42rem;margin-left:auto;padding:.5rem .72rem;text-decoration:none;transition:color .15s,border-color .15s;display:inline-flex}.post-head__away svg{flex-shrink:0}.post-head__away:hover{border-color:var(--accent);color:var(--ink)}.post-head__away:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.post-head__out{transition:transform .2s;display:inline-block}.post-head__away:hover .post-head__out{transform:translate(1px,-1px)}.listen{border:1px solid var(--rule);background:var(--panel);border-radius:12px;align-items:center;gap:.75rem;max-width:48rem;margin-top:1.6rem;padding:.45rem .7rem .45rem .45rem;display:flex}.listen__play{border:1px solid var(--rule);background:var(--paper);width:2.6rem;height:2.6rem;color:var(--ink);cursor:pointer;border-radius:9px;flex:none;place-items:center;padding:0;transition:border-color .15s,color .15s;display:grid}.listen__play:hover,.listen.is-playing .listen__play{border-color:var(--accent);color:var(--accent)}.listen__play:focus-visible,.listen__wave:focus-visible,.listen__icon:focus-visible,.listen__level:focus-visible,.listen__speed:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.listen__wave{cursor:pointer;touch-action:none;border-radius:4px;flex:1;justify-content:space-between;align-items:center;min-width:0;height:2.4rem;display:flex}.listen__wave span{width:2px;height:var(--h);background:color-mix(in oklab, var(--ink) 26%, transparent);border-radius:1px;flex:none;min-height:2px;transition:background-color .12s}.listen__wave span.is-played{background:var(--ink)}.listen__wave:hover span:not(.is-played){background:color-mix(in oklab, var(--ink) 38%, transparent)}.listen__time{font:400 .72rem/1 var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--faint);flex:none}.listen__volume{flex:none;align-items:center;gap:.3rem;display:flex}.listen__icon{width:1.9rem;height:1.9rem;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;padding:0;display:grid}.listen__icon:hover{background:color-mix(in oklab, var(--ink) 7%, transparent);color:var(--ink)}.listen__level{background:linear-gradient(to right, var(--ink-soft) var(--pct,100%), var(--rule) var(--pct,100%));cursor:pointer;appearance:none;border-radius:2px;width:4.5rem;height:4px;margin:0}.listen__level::-webkit-slider-thumb{background:var(--ink);appearance:none;border:0;border-radius:50%;width:11px;height:11px}.listen__level::-moz-range-thumb{background:var(--ink);border:0;border-radius:50%;width:11px;height:11px}.listen__speed{border:1px solid var(--rule);min-width:2.7rem;color:var(--ink-soft);font:700 .7rem/1 var(--mono);cursor:pointer;background:0 0;border-radius:6px;flex:none;padding:.35rem .45rem}.listen__speed:hover{border-color:var(--accent);color:var(--accent)}@media (max-width:560px){.listen{gap:.5rem}.listen__level,.listen__time{display:none}}.post-head__rule{background:var(--accent);width:7.5rem;height:3px;margin-top:2.2rem}
.post-body{font-size:1.005rem;line-height:1.72}.post-body p{max-width:var(--reading);margin:0 0 .95rem}.post-body strong{color:var(--ink);font-weight:650}.post-body em{font-style:italic}.post-body ul,.post-body ol{max-width:var(--reading);margin:0 0 1.05rem;padding-left:1.35rem}.post-body li{margin:0 0 .5rem}.post-body li::marker{color:var(--accent);font-weight:700}.post-body code:not(pre code){background:var(--tape);border:1px solid var(--rule);border-radius:var(--radius);font:400 .85em var(--mono);color:var(--ink);white-space:nowrap;padding:.12em .42em}.post-body .part-label{border-bottom:1px dashed var(--rule);font:700 .72rem/1 var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin:4rem 0 .5rem;padding-bottom:.4rem}.post-body .part-label:first-child{margin-top:0}.post-body section{scroll-margin-top:calc(var(--post-topbar-h) + 1rem);margin-bottom:4.5rem}.post-body .sec-head{border-bottom:1px solid var(--rule);align-items:flex-start;gap:1.1rem;margin-bottom:1.5rem;padding-bottom:1rem;display:flex}.post-body .sec-num{background:var(--accent);font:700 .82rem/1 var(--mono);color:var(--paper);border-radius:6px;flex:none;margin-top:.4rem;padding:.44rem .68rem}.post-body h2{font-family:var(--serif);letter-spacing:-.015em;margin:0;font-size:clamp(1.6rem,3.6vw,2.25rem);font-weight:600;line-height:1.08}.post-body h3{font-family:var(--serif);letter-spacing:-.01em;margin:2.1rem 0 .7rem;font-size:1.3rem;font-weight:600}.post-body h4{letter-spacing:.05em;text-transform:uppercase;color:var(--accent);margin:1.5rem 0 .55rem;font-size:.82rem;font-weight:700}.post-body .box{border:1px solid var(--rule);background:var(--panel);border-radius:10px;margin:1.4rem 0;padding:1.1rem 1.35rem}.post-body .box .tag{font:700 .68rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;margin-bottom:.45rem;display:block}.post-body .box p:last-child{margin-bottom:0}.post-body .box.key{border-color:color-mix(in oklab, var(--post-gold) 45%, transparent);background:color-mix(in oklab, var(--post-gold) 9%, var(--panel))}.post-body .box.key .tag{color:var(--post-gold)}.post-body .box.gotcha{border-color:color-mix(in oklab, var(--accent) 45%, transparent);background:color-mix(in oklab, var(--accent) 9%, var(--panel))}.post-body .box.gotcha .tag{color:var(--accent)}.post-body .box.note{border-color:color-mix(in oklab, var(--post-teal) 45%, transparent);background:color-mix(in oklab, var(--post-teal) 9%, var(--panel))}.post-body .box.note .tag{color:var(--post-teal)}.post-body .analogy{border-left:3px solid var(--post-gold);font-family:var(--serif);color:var(--ink-soft);margin:1.3rem 0;padding:.4rem 0 .4rem 1.35rem;font-size:1.06rem;font-style:italic;line-height:1.6}.post-body .tbl-wrap{border:1px solid var(--rule);background:var(--panel);box-shadow:0 1px 2px color-mix(in oklab, var(--ink) 6%, transparent), 0 6px 18px -10px color-mix(in oklab, var(--ink) 18%, transparent);border-radius:12px;margin:1.6rem 0;overflow-x:auto}.post-body table{border-collapse:collapse;width:100%;font-size:.86rem}.post-body th,.post-body td{text-align:left;vertical-align:top;border-bottom:1px solid var(--rule);padding:.72rem 1rem}.post-body th{background:color-mix(in oklab, var(--accent) 9%, var(--panel));border-bottom:2px solid color-mix(in oklab, var(--accent) 35%, var(--rule));font:700 .7rem/1.4 var(--sans);letter-spacing:.05em;text-transform:uppercase;color:var(--accent)}.post-body tbody tr:nth-child(2n) td{background:color-mix(in oklab, var(--ink) 3%, var(--panel))}.post-body tbody tr{transition:background-color .15s}.post-body tbody tr:hover td{background:color-mix(in oklab, var(--accent) 7%, var(--panel))}.post-body tr:last-child td{border-bottom:0}.post-body .mono-cell{font:700 .8rem var(--mono);color:var(--accent)}.post-body .yes{color:var(--post-teal);font-weight:700}.post-body .no{color:#c0533f;font-weight:700}.post-body .cond{color:var(--post-gold);font-weight:700}.post-body .sc{font:700 .8rem var(--mono);white-space:nowrap;background:var(--tape);color:var(--ink);border-radius:5px;padding:.12rem .5rem;display:inline-block}.post-body .sc.s1,.post-body .sc.s2{background:color-mix(in oklab, var(--post-teal) 20%, var(--panel));color:var(--post-teal)}.post-body .sc.s3{background:color-mix(in oklab, var(--post-gold) 20%, var(--panel));color:var(--post-gold)}.post-body .sc.s4,.post-body .sc.s5{background:color-mix(in oklab, #c0533f 18%, var(--panel));color:#c0533f}
.post-body .codeblock{border:1px solid var(--post-code-edge);background:var(--post-code-bg);border-radius:10px;margin:1.3rem 0;overflow:hidden}.post-body .code-bar{background:var(--post-code-bar);border-bottom:1px solid var(--post-code-edge);align-items:center;padding:0 .9rem;display:flex}.post-body .code-bar .dots{gap:.44rem;margin-right:.9rem;display:flex}.post-body .code-bar .dots i{border-radius:50%;width:11px;height:11px;display:block}.post-body .dots i:first-child{background:#d05a47}.post-body .dots i:nth-child(2){background:#cf9f4b}.post-body .dots i:nth-child(3){background:#5a9a5f}.post-body .code-tabs{display:flex}.post-body .code-tabs button{font:600 .78rem var(--mono);color:#9c948a;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:.8rem 1.1rem;transition:color .15s}.post-body .code-tabs button:hover{color:#e9e2d3}.post-body .code-tabs button.on{color:#fff;border-bottom-color:var(--accent)}.post-body .lang-go{color:#7fb0c9}.post-body .lang-py{color:#d8b66a}.post-body .codeblock .filename{font:400 .78rem var(--mono);color:#9c948a;padding:.8rem .25rem}.post-body .code-panel{display:none}.post-body .code-panel.on{display:block}.post-body pre{margin:0}.post-body pre code{background:var(--post-code-bg);font:400 .8rem/1.6 var(--mono);color:#d6cfc2;white-space:pre;padding:1.1rem 1.2rem;display:block;overflow-x:auto}.post-body pre code .hljs-keyword,.post-body pre code .hljs-selector-tag,.post-body pre code .hljs-section{color:#e2886b}.post-body pre code .hljs-built_in,.post-body pre code .hljs-title.function_,.post-body pre code .hljs-title,.post-body pre code .hljs-name{color:#7fb0c9}.post-body pre code .hljs-type,.post-body pre code .hljs-title.class_,.post-body pre code .hljs-class .hljs-title{color:#d8b66a}.post-body pre code .hljs-string,.post-body pre code .hljs-regexp,.post-body pre code .hljs-symbol,.post-body pre code .hljs-addition{color:#a8c08d}.post-body pre code .hljs-number,.post-body pre code .hljs-literal{color:#d3a76a}.post-body pre code .hljs-comment,.post-body pre code .hljs-quote{color:#958b7a;font-style:italic}.post-body pre code .hljs-meta,.post-body pre code .hljs-meta .hljs-keyword{color:#b3a0c4}.post-body pre code .hljs-params,.post-body pre code .hljs-variable,.post-body pre code .hljs-attr,.post-body pre code .hljs-property,.post-body pre code .hljs-attribute,.post-body pre code .hljs-template-variable{color:#cfc4b4}.post-body pre code .hljs-operator,.post-body pre code .hljs-punctuation{color:#a49a8a}.post-body pre code .hljs-deletion{color:#d2705c}.post-body pre code .hljs-emphasis{font-style:italic}.post-body pre code .hljs-strong{font-weight:700}.post-body pre code.hljs{background:0 0}.post-body .code-cap{font-family:var(--serif);color:var(--ink-soft);margin:-.5rem .15rem 1.4rem;font-size:.84rem;font-style:italic}
.codeblock.editor{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ed-bg:#fff;--ed-bar:#f8f8f8;--ed-edge:#e5e5e5;--ed-text:#1f1f1f;--ed-soft:#5f6368;--ed-hover:#0000000f;--ed-ring:#22a05a;--ed-num:#237893;--ed-guide:#d6d6d6;--ed-shadow:0 1px 2px #0000000a, 0 4px 14px #00000012;--ed-keyword:#00f;--ed-string:#a31515;--ed-comment:green;--ed-number:#098658;--ed-type:#267f99;--ed-meta:#795e26;--ed-regexp:#811f3f;border:1px solid var(--ed-edge);background:var(--ed-bg);box-shadow:var(--ed-shadow);color:var(--ed-text);border-radius:12px;margin:1.4rem 0;overflow:visible}:root[data-theme=dark] .codeblock.editor:not([data-ed-theme=light]),.codeblock.editor[data-ed-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ed-bg:#1e1e1e;--ed-bar:#252526;--ed-edge:#3c3c3c;--ed-text:#d4d4d4;--ed-soft:#a0a0a0;--ed-hover:#ffffff0f;--ed-ring:#007acc;--ed-num:#858585;--ed-guide:#404040;--ed-shadow:0 1px 2px #0000004d, 0 6px 18px #00000040;--ed-keyword:#569cd6;--ed-string:#ce9178;--ed-comment:#6a9955;--ed-number:#b5cea8;--ed-type:#4ec9b0;--ed-meta:#dcdcaa;--ed-regexp:#d16969;--ed-function:#dcdcaa}.codeblock.editor .ed-bar{border-bottom:1px solid var(--ed-edge);background:var(--ed-bar);border-radius:11px 11px 0 0;justify-content:space-between;align-items:center;gap:.75rem;min-height:3.1rem;padding:.45rem .6rem .45rem .55rem;display:flex}.codeblock.editor.is-collapsed .ed-bar{border-bottom:0;border-radius:11px}.codeblock.editor.is-collapsed .ed-body,.codeblock.editor.is-live .ed-bar>.ed-lang{display:none}.codeblock.editor .ed-lang,.codeblock.editor .ed-lang-btn{border:1.5px solid var(--ed-edge);background:var(--ed-bg);font:600 .86rem/1 var(--sans);color:var(--ed-text);border-radius:9px;align-items:center;gap:.5rem;padding:.42rem .65rem .42rem .6rem;display:inline-flex}.codeblock.editor .ed-lang-btn{cursor:pointer;transition:border-color .15s}.codeblock.editor .ed-lang-btn:hover,.codeblock.editor .ed-lang-btn:focus-visible,.codeblock.editor .ed-lang-btn[aria-expanded=true]{border-color:var(--ed-ring);outline:none}.codeblock.editor .ed-caret{color:var(--ed-soft);margin-left:.1rem;transition:transform .15s}.codeblock.editor [aria-expanded=true]>.ed-caret{transform:rotate(180deg)}.codeblock.editor .ed-pick{position:relative}.codeblock.editor .ed-menu{z-index:5;border:1px solid var(--ed-edge);background:var(--ed-bg);border-radius:10px;width:max-content;min-width:13.5rem;max-width:min(24rem,80vw);padding:.3rem;position:absolute;top:calc(100% + .4rem);left:0;box-shadow:0 10px 28px #00000024}.codeblock.editor .ed-menu__file{border-bottom:1px solid var(--ed-edge);font:400 .74rem/1.3 var(--mono);color:var(--ed-soft);overflow-wrap:anywhere;margin:0 0 .25rem;padding:.45rem .6rem .55rem}.codeblock.editor .ed-menu button{width:100%;font:500 .82rem/1 var(--sans);color:var(--ed-text);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:.55rem;padding:.55rem .6rem;display:flex}.codeblock.editor .ed-menu button:hover,.codeblock.editor .ed-menu button:focus-visible{background:var(--ed-hover);outline:none}.codeblock.editor .ed-tools{align-items:center;gap:.15rem;display:flex}.codeblock.editor .ed-tool,.code-viewer__tool{width:2rem;height:2rem;color:var(--ed-soft,var(--ink-soft));cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;padding:0;transition:background-color .15s,color .15s;display:grid}.codeblock.editor .ed-tool:hover,.code-viewer__tool:hover{background:var(--ed-hover,color-mix(in oklab, var(--ink) 7%, transparent));color:var(--ed-text,var(--ink))}.codeblock.editor .ed-tool:focus-visible,.code-viewer__tool:focus-visible{outline:2px solid var(--ed-ring,var(--accent));outline-offset:1px}.codeblock.editor .ed-tool.is-done,.code-viewer__tool.is-done{color:var(--ed-ring,#22a05a)}.codeblock.editor .ed-tool[aria-pressed=false]{opacity:.55}.codeblock.editor .ed-divider{background:var(--ed-edge);width:1px;height:1.1rem;margin:0 .3rem}.codeblock.editor .ed-fold{transition:transform .2s}.codeblock.editor.is-collapsed .ed-fold{transform:rotate(180deg)}.ed-sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.codeblock.editor .ed-body{background:var(--ed-bg);font:400 calc(.8rem * var(--ed-zoom,1)) / 1.65 var(--mono);font-variant-ligatures:none;border-radius:0 0 11px 11px;display:flex;overflow-x:auto}.codeblock.editor .ed-gutter{z-index:1;background:var(--ed-bg);min-width:3.4em;color:var(--ed-num);font-variant-numeric:tabular-nums;text-align:right;-webkit-user-select:none;user-select:none;flex-direction:column;flex:none;padding:1.05em 1.2em 1.05em 1em;display:flex;position:sticky;left:0}.codeblock.editor.no-numbers .ed-gutter{display:none}.codeblock.editor .ed-code{font:inherit;flex:1 0 auto;margin:0}.codeblock.editor .ed-code code{font:inherit;color:var(--ed-text);white-space:pre;tab-size:4;background:0 0;padding:1.05em 1.75em 1.05em .3em;display:block;overflow:visible}.codeblock.editor.no-numbers .ed-code code{padding-left:1.5em}.codeblock.editor>.ed-code{font:400 .8rem/1.65 var(--mono);border-radius:0 0 11px 11px;overflow-x:auto}.codeblock.editor>.ed-code code{padding-left:1.5em}.codeblock.editor .ed-line{background:repeating-linear-gradient(to right, var(--ed-guide) 0 1px, transparent 1px calc(var(--unit,4) * 1ch)) 0 0 / calc(var(--depth,0) * var(--unit,4) * 1ch) 100% no-repeat;min-height:1lh;display:block}.codeblock.editor .ed-code [class^=hljs-]{color:inherit;font-style:normal}.codeblock.editor .ed-code .hljs-keyword,.codeblock.editor .ed-code .hljs-literal,.codeblock.editor .ed-code .hljs-selector-tag,.codeblock.editor .ed-code .hljs-section,.codeblock.editor .ed-code .hljs-name{color:var(--ed-keyword)}.codeblock.editor .ed-code .hljs-string,.codeblock.editor .ed-code .hljs-addition,.codeblock.editor .ed-code .hljs-symbol{color:var(--ed-string)}.codeblock.editor .ed-code .hljs-regexp,.codeblock.editor .ed-code .hljs-deletion{color:var(--ed-regexp)}.codeblock.editor .ed-code .hljs-comment,.codeblock.editor .ed-code .hljs-quote{color:var(--ed-comment)}.codeblock.editor .ed-code .hljs-number{color:var(--ed-number)}.codeblock.editor .ed-code .hljs-built_in,.codeblock.editor .ed-code .hljs-type{color:var(--ed-type)}.codeblock.editor .ed-code .hljs-title.function_{color:var(--ed-function,inherit)}.codeblock.editor .ed-code .hljs-meta{color:var(--ed-meta)}.codeblock.editor .ed-code .hljs-subst{color:var(--ed-text)}.codeblock.editor .ed-code .hljs-emphasis{font-style:italic}.codeblock.editor .ed-code .hljs-strong{font-weight:700}.code-viewer__title{min-width:0;font:500 .84rem/1 var(--mono);color:var(--ink-soft);align-items:center;gap:.55rem;display:flex}.code-viewer__title span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.code-viewer__actions{flex:none;align-items:center;gap:.4rem;display:flex}.code-viewer__body{flex:1;min-height:0;padding:1rem;display:flex}.code-viewer .codeblock.editor{flex-direction:column;flex:1;min-width:0;min-height:0;margin:0;display:flex}.code-viewer .codeblock.editor .ed-body{overscroll-behavior:contain;border-radius:11px;flex:1;min-height:0;overflow:auto}@media (max-width:560px){.codeblock.editor .ed-bar{padding:.4rem .4rem .4rem .45rem}.codeblock.editor .ed-tool{width:1.85rem;height:1.85rem}.codeblock.editor .ed-divider{margin:0 .15rem}.codeblock.editor .ed-body,.codeblock.editor>.ed-code{font-size:calc(.74rem * var(--ed-zoom,1))}.code-viewer__body{padding:.5rem}}
.post-body .flow{border:1px solid var(--rule);background:var(--panel);border-radius:10px;margin:1.4rem 0;padding:1.4rem 1.35rem}.post-body .flow .step{align-items:flex-start;gap:.95rem;padding:.55rem 0;display:flex}.post-body .flow .step .b{background:var(--ink);min-width:30px;height:30px;color:var(--paper);font:700 .72rem var(--mono);border-radius:7px;flex:none;justify-content:center;align-items:center;display:flex}.post-body .flow .step.srv .b{background:var(--post-teal)}.post-body .flow .step.cli .b{background:var(--accent)}.post-body .flow .step .t{padding-top:.2rem;font-size:.9rem}.post-body .flow .arrow{color:var(--rule);text-align:center;margin-left:.85rem;line-height:.4}.post-body .method{border:1px solid var(--rule);background:var(--panel);border-radius:12px;margin:1.6rem 0;overflow:hidden}.post-body .method-top{border-bottom:1px solid var(--rule);flex-wrap:wrap;align-items:center;gap:.85rem;padding:1.1rem 1.35rem;display:flex}.post-body .method-top .verb{background:var(--ink);color:var(--paper);font:700 1.05rem var(--mono);border-radius:7px;padding:.35rem .85rem}.post-body .method-body{padding:.4rem 1.35rem 1.25rem}.post-body .method-body .gloss{font-family:var(--serif);color:var(--ink-soft);margin:.85rem 0;font-size:1.02rem;font-style:italic}.post-body .viz{border:1px solid var(--post-viz-line);background:var(--post-viz-bg);border-radius:12px;margin:1.9rem 0;padding:1.5rem 1.35rem 1.1rem}.post-body .viz-cap{font:700 .68rem/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:#b8402e;align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.post-body .viz-cap:before{content:"";background:#b8402e;width:18px;height:2px;display:inline-block}.post-body .viz-title{font-family:var(--serif);letter-spacing:-.01em;color:#211e1a;margin-bottom:1rem;font-size:1.1rem;font-weight:600}.post-body .viz svg{width:100%;height:auto;display:block;overflow:visible}.post-body .viz svg text{font-family:var(--sans)}.post-body .viz svg .mono{font-family:var(--mono)}.post-body .viz svg .serif{font-family:var(--serif)}.post-body .viz:has(.mermaid){border-color:var(--rule);background:var(--panel)}.post-body .viz:has(.mermaid) .viz-title{color:var(--ink)}.post-body .viz:has(.mermaid) .viz-note{border-top-color:var(--rule);color:var(--ink-soft)}.post-body .viz{position:relative}.post-body .viz-expand{width:1.9rem;height:1.9rem;color:var(--faint);cursor:zoom-in;background:0 0;border:0;border-radius:7px;place-items:center;padding:0;transition:background-color .15s,color .15s;display:grid;position:absolute;top:.6rem;right:.6rem}.post-body .viz-expand:hover,.post-body .viz-expand:focus-visible{background:color-mix(in oklab, var(--ink) 7%, transparent);color:var(--ink)}.post-body .viz-expand:focus-visible{outline:2px solid var(--accent);outline-offset:1px}:is(.post-body .viz:has(.viz-expand) .viz-cap,.post-body .viz:has(.viz-expand) .viz-title){padding-right:2.5rem}.diagram-viewer{border:1px solid var(--rule);background:var(--panel);width:min(96vw,1440px);max-width:none;height:92vh;max-height:none;color:var(--ink);border-radius:12px;padding:0;overflow:hidden}.diagram-viewer:focus{outline:none}.diagram-viewer[open]{flex-direction:column;display:flex}.diagram-viewer::backdrop{background:#0000008c}.diagram-viewer__bar{border-bottom:1px solid var(--rule);background:color-mix(in oklab, var(--ink) 2.5%, var(--panel));flex:none;justify-content:space-between;align-items:center;padding:.45rem .7rem .45rem .6rem;display:flex}.diagram-viewer__zoom{border:1px solid var(--rule);background:var(--panel);border-radius:9px;align-items:center;gap:.1rem;padding:.2rem;display:flex}.diagram-viewer__zoom button,.diagram-viewer__close{width:2rem;height:2rem;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;padding:0;transition:background-color .15s,color .15s;display:grid}.diagram-viewer__zoom button:hover:not(:disabled),.diagram-viewer__close:hover{background:color-mix(in oklab, var(--ink) 7%, transparent);color:var(--ink)}.diagram-viewer__zoom button:disabled{color:var(--rule);cursor:default}.diagram-viewer__zoom button:focus-visible,.diagram-viewer__close:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.diagram-viewer__level{min-width:3.4rem;font:500 .82rem/1 var(--sans);font-variant-numeric:tabular-nums;text-align:center;color:var(--ink-soft)}.diagram-viewer__divider{background:var(--rule);width:1px;height:1.2rem;margin:0 .3rem}.diagram-viewer__body{overscroll-behavior:contain;flex:1;min-height:0;padding:1.25rem;display:flex;overflow:auto}.diagram-viewer__body.is-pannable{cursor:grab}.diagram-viewer__body.is-pannable:active{cursor:grabbing}.diagram-viewer__canvas{flex-direction:column;flex:none;gap:1rem;margin:auto;display:flex}.diagram-viewer__canvas svg{-webkit-user-select:none;user-select:none;flex:1;height:100%;min-height:0;width:100%!important;max-width:none!important}.post-body .mermaid{font:400 .75rem/1.5 var(--mono);color:var(--faint);white-space:pre;margin:0;overflow-x:auto}.post-body .mermaid.is-drawn{font:inherit;text-align:center;white-space:normal;overflow-x:auto}.post-body .mermaid.is-drawn svg{width:round(100%,1px);min-width:var(--floor,0);max-width:100%;height:auto;margin:0 auto;display:block}:root:not([data-theme=dark]) .post-body .mermaid svg[data-variant=dark],:root[data-theme=dark] .post-body .mermaid svg[data-variant=light]{display:none}.post-body .viz-note{border-top:1px dashed var(--post-viz-line);font-family:var(--serif);color:#5b5347;margin-top:.9rem;padding-top:.75rem;font-size:.82rem;font-style:italic}.post-body .post-figure{margin:1.9rem 0}.post-body .post-figure a{display:block}.post-body .post-figure img{border:1px solid var(--rule);background:#fff;border-radius:12px;width:100%;height:auto;display:block}.post-body .post-figure figcaption{text-align:center;color:var(--ink-soft);margin-top:.6rem;font-size:.82rem}.post-body .post-figure{position:relative}.post-body .post-figure .viz-expand{color:#333;background:#ffffffeb;border:1px solid #d4d4d4}.post-body .post-figure .viz-expand:hover,.post-body .post-figure .viz-expand:focus-visible{color:#000;background:#fff;border-color:#999}.diagram-viewer__canvas img{object-fit:contain;pointer-events:none;flex:1;width:100%;height:100%;min-height:0}
:root{--post-measure:92rem;--post-topbar-h:3.9rem}.shell--wide{--measure:var(--post-measure)}.post-topbar{z-index:45;background:var(--paper);position:sticky;inset-block-start:0}.post-topbar__inner{width:min(100% - 2.5rem, var(--measure));margin-inline:auto;padding-block:.85rem}.post-topbar .masthead{margin-bottom:0}.post-progress{background:color-mix(in oklab, var(--rule) 60%, transparent);height:3px}.post-progress__bar{background:var(--accent);height:100%}.post-layout{--post-gap:clamp(2.75rem, 4.5vw, 5.5rem);gap:var(--post-gap);grid-template-columns:15rem minmax(0,1fr) 15rem;align-items:start;display:grid}:root:has(.post-toc){scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){:root:has(.post-toc){scroll-behavior:auto}}.post-toc{flex-direction:column;min-height:0;max-height:calc(100vh - 3.2rem);display:flex;position:sticky;inset-block-start:calc(var(--post-topbar-h) + 1.1rem)}.reading-meter{margin-bottom:1.1rem}.reading-meter__head{font:700 .7rem/1 var(--mono);letter-spacing:.1em;justify-content:space-between;align-items:baseline;gap:.6rem;margin:0 0 .45rem;display:flex}.reading-meter__label{text-transform:uppercase;color:var(--ink)}.reading-meter__value{font-variant-numeric:tabular-nums;color:var(--accent);font-size:.78rem}.reading-meter__track{border:1px solid color-mix(in oklab, var(--ink) 12%, transparent);background:color-mix(in oklab, var(--ink) 7%, transparent);border-radius:999px;height:9px;overflow:hidden}.reading-meter__fill{border-radius:inherit;background:linear-gradient(90deg, color-mix(in oklab, var(--accent) 78%, var(--paper)), var(--accent));height:100%}.post-toc__back{border:1px solid color-mix(in oklab, var(--accent) 45%, transparent);background:color-mix(in oklab, var(--accent) 10%, var(--paper));font:700 .88rem/1 var(--mono);letter-spacing:.02em;color:var(--accent);border-radius:8px;align-items:center;gap:.45rem;margin-bottom:1.4rem;padding:.55rem .9rem .55rem .75rem;text-decoration:none;transition:color .15s,background-color .15s,border-color .15s;display:inline-flex}.post-toc__back svg{transition:translate .15s}.post-toc__back:hover{border-color:var(--accent);background:var(--accent);color:var(--paper)}.post-toc__back:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.post-toc__back:hover svg{translate:-.18rem}.post-toc__toggle{display:none}.post-toc__nav{scrollbar-width:thin;border-inline-start:1px solid var(--rule);flex-direction:column;gap:.1rem;padding-inline-end:.4rem;display:flex;overflow-y:auto}.post-toc__nav a{color:var(--ink-soft);border-inline-start:2px solid #0000;gap:.7rem;margin-inline-start:-1px;padding:.42rem .7rem;font-size:.82rem;line-height:1.4;text-decoration:none;transition:color .15s,background .15s;display:flex}.post-toc__nav a:hover{color:var(--ink);background:color-mix(in oklab, var(--accent) 7%, transparent)}.post-toc__nav a.is-current{color:var(--accent);border-inline-start-color:var(--accent);background:color-mix(in oklab, var(--accent) 10%, transparent)}.post-toc__num{font:400 .7rem/1.55 var(--mono);color:var(--faint);flex:none}.post-toc__nav a.is-current .post-toc__num{color:var(--accent)}@media (max-width:76rem){.post-layout{grid-template-columns:15rem minmax(0,1fr)}.post-body{max-width:48rem}.post-switcher{grid-area:2/2;position:static}}@media (max-width:60rem){.post-layout{grid-template-columns:minmax(0,1fr);gap:1.6rem}.post-switcher{grid-area:auto/1}.post-toc{background:0 0;border:0;max-height:none;position:static}.post-toc__back{margin-bottom:1rem}.post-toc__toggle,.post-toc__nav{border:1px solid var(--rule);background:var(--panel)}.post-toc__toggle{border-radius:10px}.post-toc.is-open .post-toc__toggle{border-bottom:0;border-radius:10px 10px 0 0}.post-toc.is-open .post-toc__nav{border-radius:0 0 10px 10px}.post-toc__toggle{width:100%;font:700 .72rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink);cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;padding:.85rem 1rem;display:flex}.post-toc__chevron{border-right:1.5px solid var(--faint);border-bottom:1.5px solid var(--faint);width:.5rem;height:.5rem;transition:rotate .2s;rotate:45deg}.post-toc.is-open .post-toc__chevron{rotate:-135deg}.post-toc__nav{border-inline-start:0;max-height:60vh;padding:0 .6rem .7rem;display:none}.post-toc.is-open .post-toc__nav{display:flex}}
.post-switcher{z-index:30;border:1px solid color-mix(in oklab, var(--accent) 22%, var(--rule));background:var(--panel);box-shadow:0 16px 34px -24px color-mix(in oklab, var(--ink) 50%, transparent);border-radius:10px;position:sticky;inset-block-start:calc(var(--post-topbar-h) + 1.1rem);overflow:hidden}.post-switcher__head{background:color-mix(in oklab, var(--accent) 8%, var(--panel));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:.6rem;padding:.72rem .9rem;list-style:none;transition:background-color .15s;display:flex}.post-switcher__head::-webkit-details-marker{display:none}.post-switcher__head:hover{background:color-mix(in oklab, var(--accent) 13%, var(--panel))}.post-switcher__head:focus-visible{outline-offset:-3px}.post-switcher__details[open]>.post-switcher__head{border-bottom:1px solid color-mix(in oklab, var(--accent) 18%, var(--rule))}.post-switcher__meta{align-items:center;gap:.6rem;display:flex}.post-switcher__chevron{border-right:1.5px solid var(--accent);border-bottom:1.5px solid var(--accent);width:.42rem;height:.42rem;transition:rotate .2s,translate .2s;translate:0 -.12rem;rotate:45deg}.post-switcher__details[open] .post-switcher__chevron{translate:0 .1rem;rotate:-135deg}.post-switcher__title{font:700 .66rem/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);align-items:center;gap:.5rem;display:flex}.post-switcher__title:before{content:"";background:currentColor;border-radius:50%;width:.4rem;height:.4rem}.post-switcher__count{background:var(--accent);min-width:1.35rem;font:700 .6rem/1 var(--mono);font-variant-numeric:tabular-nums;text-align:center;color:var(--paper);border-radius:999px;padding:.22rem .4rem}.post-switcher__list{--link-pad:.7rem;--row:calc(.62rem + .32rem + 2 * 1.35 * .86rem + 2 * var(--link-pad));max-height:calc(.35rem + 2 * var(--row) + 1px + 1.1rem);overscroll-behavior:contain;scrollbar-width:thin;scroll-snap-type:y proximity;margin:0;padding:.35rem;scroll-padding-block:.35rem;list-style:none;overflow-y:auto}.post-switcher__list li{scroll-snap-align:start}.post-switcher__list li+li{border-top:1px dashed var(--rule)}.post-switcher__link{padding:var(--link-pad) .6rem;border-radius:6px;gap:.32rem;text-decoration:none;transition:background-color .15s;display:grid}.post-switcher__link:hover{background:color-mix(in oklab, var(--accent) 7%, transparent)}.post-switcher__date{font:400 .62rem/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.post-switcher__name{-webkit-line-clamp:2;min-height:2.7em;font:600 .86rem/1.35 var(--serif);color:var(--ink);-webkit-box-orient:vertical;transition:color .15s,translate .2s;display:-webkit-box;overflow:hidden}.post-switcher__link:hover .post-switcher__name{color:var(--link-hover);translate:2px}.post-switcher__ext{vertical-align:-.1em;color:var(--faint);margin-inline-start:.3rem;display:inline}.post-switcher__now{border-top:1px solid color-mix(in oklab, var(--accent) 18%, var(--rule));box-shadow:inset 3px 0 0 var(--accent);gap:.32rem;padding:.75rem .9rem .8rem;display:grid}.post-switcher__now-label{font:700 .6rem/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}.post-switcher__now-title{-webkit-line-clamp:3;font:600 .86rem/1.35 var(--serif);color:var(--ink);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.post-switcher__all{border-top:1px solid var(--rule);font:700 .64rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);justify-content:space-between;align-items:center;padding:.7rem .9rem;text-decoration:none;transition:color .15s;display:flex}.post-switcher__all svg{transition:translate .2s}.post-switcher__all:hover{color:var(--link-hover)}.post-switcher__all:hover svg{translate:3px}
@media (max-width:44rem){:root{--post-topbar-h:3.3rem}.post-topbar__inner{padding-block:.6rem}.post-head{margin-bottom:2.2rem}.post-head h1{max-width:none;font-size:clamp(1.85rem,8vw,2.4rem)}.post-head__lede{font-size:.98rem}.post-head__rule{margin-top:1.5rem}.post-body{font-size:.97rem}.post-body section{margin-bottom:3rem}.post-body .part-label{margin-top:2.6rem}.post-body .sec-head{gap:.7rem;margin-bottom:1.1rem;padding-bottom:.75rem}.post-body .sec-num{margin-top:.25rem;padding:.34rem .5rem;font-size:.72rem}.post-body h2{font-size:clamp(1.35rem,6vw,1.7rem)}.post-body .box,.post-body .flow,.post-body .method-top,.post-body .method-body{padding-inline:1rem}.post-body .analogy{padding-left:1rem;font-size:1rem}.post-body .flow .step{gap:.7rem}.post-body .flow .step .b{min-width:26px;height:26px;font-size:.68rem}.post-body pre code{padding:.9rem 1rem;font-size:.78rem}.post-body code:not(pre code){white-space:normal;overflow-wrap:anywhere}.post-body .viz{overscroll-behavior-x:contain;scrollbar-width:thin;padding-inline:1rem;overflow-x:auto}.post-body .viz svg{min-width:40rem}.post-body .mermaid.is-drawn svg{min-width:max(40rem, var(--floor,0px))}.post-body .viz-cap,.post-body .viz-title,.post-body .viz-note{max-width:calc(100vw - 5rem);position:sticky;inset-inline-start:0}.post-body .viz:after{content:"scroll to see the full diagram";font:400 .68rem/1 var(--mono);color:#9a9182;margin-top:.6rem;display:block;position:sticky;inset-inline-start:0}.post-body th,.post-body td{padding:.55rem .7rem}}@media (pointer:coarse){.post-toc__nav a{padding-block:.62rem}.post-switcher__list{--link-pad:.8rem}.post-toc__back{padding-block:.62rem}}
.post-body sup.fn{font:400 .68em/0 var(--mono);margin-left:.1em}.post-body sup.fn a{text-decoration:none}.post-body sup.fn+sup.fn{margin-left:.45em}.post-body .references{overflow-wrap:anywhere;font-size:.86rem}.post-body .references li{scroll-margin-top:calc(var(--post-topbar-h) + 1rem)}.post-body .references li:target{background:color-mix(in oklab, var(--accent) 14%, transparent)}.post-body details{border:1px solid var(--rule);border-radius:.6rem;margin:.8rem 0}.post-body details summary{cursor:pointer;padding:.75rem 1rem;font-weight:600}.post-body details>:not(summary){margin-inline:1rem}.post-body details[open] summary{border-bottom:1px solid var(--rule);margin-bottom:.8rem}

