.article-col{max-width:70ch;margin-inline:auto}.article-header{padding-block:var(--spacing-xl) 0}.crumb{font-family:var(--mono-font-family);font-size:var(--body-sm);letter-spacing:var(--tracking-meta);color:var(--color-static);margin-bottom:var(--spacing-sm);padding:8px 0;display:inline-block}.crumb:hover{color:var(--color-carrier)}.kicker{font-family:var(--mono-font-family);font-size:var(--body-sm);letter-spacing:var(--tracking-meta);font-variant-numeric:tabular-nums slashed-zero;color:var(--color-carrier);margin-bottom:var(--spacing-md)}.article-header h1{font-size:var(--heading-xl);font-weight:var(--weight-heading);line-height:var(--line-height-title);letter-spacing:var(--tracking-title)}.article-body{padding-block:var(--spacing-lg) var(--section-padding);border-top:none}.article-body .article-col{font-size:var(--body-lg);line-height:1.7}.article-col>*+*{margin-top:1.15em}.article-col h2{letter-spacing:var(--tracking-card);margin-top:2.1em;margin-bottom:.55em;font-size:clamp(1.5rem,1.1vw + 1.15rem,1.875rem)}.article-col p{max-width:none}.article-col>p:first-of-type,.article-col .lede{color:var(--color-fg);font-size:1.3125rem;line-height:1.55}.article-col a{text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--color-fold-line)}.article-col a:hover{text-decoration-color:var(--color-carrier)}.article-col code{font-family:var(--mono-font-family);letter-spacing:0;background:var(--color-rack);border:1px solid var(--color-trace);border-radius:var(--radius-sm);color:var(--color-carrier);overflow-wrap:anywhere;padding:.12em .26em;font-size:.85em}.article-col ul{padding-left:1.25rem}.article-col li{margin-top:.6em}.article-col li::marker{color:var(--color-fold-line)}.article-col .src{font-size:var(--body-sm);color:var(--color-static);margin-top:.6em}.code-panel{margin-top:var(--spacing-md)}.code-panel code{color:inherit;font-size:inherit;overflow-wrap:normal;background:0 0;border:none;border-radius:0;padding:0}.diagram-figure{margin-top:var(--spacing-lg)}.diagram-figure svg{width:100%;height:auto;display:block}@media (width<=640px){.diagram-figure{overflow-x:auto}.diagram-figure svg{min-width:520px}}.fold-dash{stroke:var(--color-fold-line);stroke-width:1.5px;stroke-dasharray:5 5;fill:none}.fold-active{stroke:var(--color-accent);stroke-width:2px;fill:none}.fold-node{fill:var(--color-rack);stroke:var(--color-trace)}.fold-node-mark{fill:var(--color-fg)}.fold-node-label{font-family:var(--mono-font-family);fill:var(--color-fg);letter-spacing:.02em;font-size:16px}.fold-anno{font-family:var(--mono-font-family);fill:var(--color-static);letter-spacing:.03em;font-size:13px}.fold-arrow{fill:var(--color-accent)}@media (prefers-reduced-motion:no-preference){.fold-active.draw{stroke-dasharray:720;stroke-dashoffset:720px;animation:1.6s cubic-bezier(.22,1,.36,1) .3s forwards fold-draw}@keyframes fold-draw{to{stroke-dashoffset:0}}}.route-rail{border-bottom:1px solid var(--color-trace);justify-content:space-between;align-items:flex-end;padding-bottom:8px;display:flex;position:relative}.post-rail{max-width:70ch;margin:var(--spacing-2xl) auto 0}.route-rail .chip{padding:8px 14px}@media (width<=640px){.closing .btn{justify-content:center;width:100%}}.back-link:before{content:"←";color:var(--color-accent);margin-right:8px}.h-anchor{opacity:0;color:var(--color-static);margin-left:10px;font-weight:400;transition:opacity .15s}h2:hover .h-anchor,.h-anchor:focus-visible{opacity:1}.share-row{gap:var(--spacing-md);margin-top:var(--spacing-xl);padding-top:var(--spacing-lg);border-top:1px solid var(--color-trace);font-size:var(--body-sm);align-items:center;display:flex}.share-row span{color:var(--color-static)}.copy-link{color:var(--color-carrier);font:inherit;font-size:var(--body-sm);cursor:pointer;background:0 0;border:0;padding:4px 0}.copy-link:hover{color:var(--color-fg)}.article-col ul{max-width:70ch;color:var(--color-static);gap:var(--spacing-sm);margin:var(--spacing-md) 0 var(--spacing-lg);padding-left:1.15rem;display:grid}.article-col ul li{line-height:1.6}.article-col ul strong,.article-col p strong{color:var(--color-fg);font-weight:var(--weight-heading)}
