.article{padding-block:clamp(28px,5vh,52px) 0}.article-head{max-width:720px;margin:0 auto 28px;display:flex;flex-direction:column;gap:12px}.article-head h1{font-family:var(--font-display);font-size:clamp(30px,4.4vw,46px);line-height:1.12;font-weight:500;letter-spacing:-.02em}.article-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:12.5px;color:var(--dim)}a.tag--type:hover{border-color:var(--accent)}.article-foot{max-width:720px;margin:40px auto 0;padding-top:24px;border-top:1px solid var(--border-soft)}.article-foot .pill{text-decoration:none}.prose{max-width:720px;margin:0 auto;font-size:16.5px;line-height:1.75;color:var(--text);overflow-wrap:break-word}.prose>*+*{margin-top:1.1em}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--text);font-family:var(--font-display);font-weight:600;letter-spacing:-.015em;line-height:1.22;margin-top:2em;scroll-margin-top:80px}.prose h1{font-size:1.85em}.prose h2{font-size:1.5em;padding-bottom:.3em;border-bottom:1px solid var(--border-soft)}.prose h3{font-size:1.22em}.prose h4{font-size:1.05em;color:var(--muted);text-transform:none}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;text-decoration-color:var(--accent-line)}.prose a:hover{text-decoration-color:var(--accent)}.prose strong{color:var(--text);font-weight:700}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--accent)}.prose blockquote{border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 10px 10px 0;padding:12px 18px;color:var(--text);font-style:italic}.prose blockquote>*+*{margin-top:.8em}.prose code{font-family:var(--font-mono);font-size:.87em;background:var(--bg-elev-2);border:1px solid var(--border-soft);border-radius:6px;padding:1px 6px}.prose pre{background:var(--bg-code)!important;border:1px solid var(--border-code);border-radius:12px;padding:16px 18px;overflow-x:auto;font-size:13.5px;line-height:1.6}.prose pre code{background:none;border:0;padding:0;font-size:inherit}.prose img{border-radius:12px;display:block;margin-inline:auto}.prose figure,.prose div[align=center]{text-align:center}.prose table{display:block;width:100%;overflow-x:auto;border-collapse:collapse;font-size:14px}.prose th,.prose td{border:1px solid var(--border);padding:8px 12px;text-align:left;vertical-align:top}.prose thead th{background:var(--bg-elev-2);color:var(--text);font-weight:700;white-space:nowrap}.prose tbody tr:nth-child(2n){background:var(--stripe)}.prose hr{border:0;border-top:1px solid var(--border);margin-block:2.2em}.prose kbd{font-family:var(--font-mono);font-size:.85em;background:var(--bg-elev-2);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;padding:1px 6px}.prose details{background:var(--bg-elev-1);border:1px solid var(--border);border-radius:10px;padding:12px 16px}.prose summary{cursor:pointer;font-weight:650;color:var(--text);min-height:44px;display:flex;align-items:center}.progress{position:fixed;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--accent),var(--gold));transform:scaleX(0);transform-origin:0 50%;z-index:20;will-change:transform}.crumbs{max-width:720px;margin:0 auto 18px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;color:var(--dim)}.crumbs a{color:var(--muted);padding-block:6px}.crumbs a:hover{color:var(--accent)}.article-foot{display:flex;flex-wrap:wrap;gap:10px}.article-head .tags a.tag:hover{border-color:var(--accent);color:var(--accent)}.to-top{position:fixed;right:clamp(14px,3vw,28px);bottom:clamp(14px,3vw,28px);width:46px;height:46px;border-radius:50%;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--accent);font-size:18px;cursor:pointer;z-index:15;box-shadow:var(--shadow);transition:transform .2s ease,border-color .2s ease}.to-top:hover{transform:translateY(-3px);border-color:var(--accent)}.code-block{position:relative}.copy-code{position:absolute;top:10px;right:10px;z-index:2;font:500 11px/1 var(--font-mono);letter-spacing:.04em;color:#aab3c8;background:#161c2ee0;border:1px solid var(--border-code);border-radius:7px;padding:7px 10px;cursor:pointer;opacity:0;transition:opacity .15s ease,color .15s ease,border-color .15s ease}.code-block:hover .copy-code,.copy-code:focus-visible,.copy-code.is-copied{opacity:1}.copy-code:hover,.copy-code.is-copied{color:#00e3a8;border-color:#00e3a844}@media(hover:none){.copy-code{opacity:1}}.prose img.is-zoomable{cursor:zoom-in}.lightbox{width:min(96vw,1400px);height:min(92vh,92dvh);padding:clamp(10px,2vw,18px);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text)}.lightbox[open]{display:flex;flex-direction:column;gap:12px}.lightbox::backdrop{background:light-dark(rgba(10,12,16,.82),rgba(4,6,10,.88));backdrop-filter:blur(2px)}.lightbox-bar{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center}.lightbox-zoom{font-size:12px;color:var(--dim);min-width:4ch;text-align:right}.lightbox-controls{display:inline-flex;flex-wrap:wrap;gap:6px}.lightbox-controls button,.lightbox-controls a{font:inherit;font-size:13px;color:var(--muted);background:var(--bg-elev-1);border:1px solid var(--border);border-radius:8px;min-width:36px;min-height:36px;padding:6px 11px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .15s ease,border-color .15s ease}.lightbox-controls button:hover,.lightbox-controls a:hover{color:var(--accent);border-color:var(--accent-line)}.lightbox-stage{flex:1;min-height:0;overflow:auto;border-radius:8px;background:var(--bg-elev-2)}.lightbox-stage img{display:block;margin-inline:auto;max-width:100%;max-height:100%;height:auto}@media(max-width:560px){.lightbox-controls button,.lightbox-controls a{min-height:40px;padding:8px 12px}}.prose pre.mermaid{background:var(--bg-elev-1)!important;text-align:center;padding:20px;overflow-x:auto}.prose pre.mermaid svg{max-width:100%;height:auto}.prose pre.mermaid[data-mermaid-failed]{text-align:left}.prose pre.mermaid[data-mermaid-failed]:before{content:"Diagram source (renderer unavailable)";display:block;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin-bottom:10px}
