/* Architecture section: sidebar, prose, tables, code and diagrams on the tokens of final.css */
:root{--doc-accent:var(--gold);--doc-code:var(--deep);--doc-soft:var(--surface);--doc-rule:#43434a;--d-fill:var(--ink)}
:root[data-theme="light"]{--doc-accent:#8a5c16;--doc-code:#f4f4f5;--doc-soft:#f3f3f4;--doc-rule:#d5d5d9;--d-fill:#fff}
.doc-main{background:var(--ink)}:root[data-theme="light"] .doc-main{background:#fff}
.doc-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:64px;align-items:start;padding:56px 0 100px}
.doc-sidebar{position:sticky;top:24px;font-size:13px}.doc-toc summary{display:none}.doc-toc-title{margin:0 0 16px;color:var(--doc-accent);font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;line-height:1.5}
.doc-toc ol{list-style:none;margin:0;padding:0;border-left:1px solid var(--doc-rule);counter-reset:doc}.doc-toc li{counter-increment:doc}.doc-toc a{display:block;padding:9px 0 9px 16px;margin-left:-1px;border-left:2px solid transparent;color:var(--muted);font-weight:700;line-height:1.4}.doc-toc a::before{content:counter(doc,decimal-leading-zero) "  ";color:var(--doc-accent);font-size:11px}.doc-toc a:hover{color:var(--text);text-decoration:underline;text-underline-offset:4px}.doc-toc a[aria-current="page"]{color:var(--text);border-left-color:var(--doc-accent)}
.doc-article{min-width:0;max-width:780px;color:var(--text)}
.doc-article>.eyebrow{margin-bottom:18px;color:var(--doc-accent)}
.doc-article h1{font-size:clamp(38px,4.4vw,58px);margin:0 0 24px;max-width:18ch}
.doc-article h2{font-size:clamp(26px,2.6vw,34px);margin:64px 0 18px;padding-top:28px;border-top:1px solid var(--doc-rule)}
.doc-article h3{font-size:20px;letter-spacing:-.02em;margin:36px 0 12px}
.doc-article p,.doc-article li,.doc-article dd{font-size:16px;line-height:1.65;color:var(--muted)}
.doc-article p{margin:0 0 18px}.doc-article strong{color:var(--text)}
.doc-article .doc-lead{font-size:19px;line-height:1.6;color:var(--text);max-width:62ch}
.doc-article ul,.doc-article ol{margin:0 0 22px;padding-left:22px}.doc-article li{margin:6px 0}.doc-article li::marker{color:var(--doc-accent)}
.doc-article a:not(.doc-pager a){color:var(--text);text-decoration:underline;text-decoration-color:var(--doc-accent);text-underline-offset:4px}.doc-article a:not(.doc-pager a):hover{color:var(--doc-accent)}
.doc-article dl{margin:0 0 24px;border-top:1px solid var(--doc-rule)}.doc-article dt{margin:0;padding-top:16px;font-weight:800;color:var(--text)}.doc-article dd{margin:6px 0 0;padding-bottom:16px;border-bottom:1px solid var(--doc-rule)}
.doc-article code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;font-size:.88em;padding:.12em .38em;border-radius:4px;background:var(--doc-soft);border:1px solid var(--doc-rule);color:var(--text);overflow-wrap:anywhere}
.doc-article pre{margin:0 0 24px;padding:18px 20px;overflow-x:auto;background:var(--doc-code);border:1px solid var(--doc-rule);border-radius:6px;line-height:1.55;font-size:13.5px;-webkit-overflow-scrolling:touch}.doc-article pre code{padding:0;border:0;background:none;font-size:inherit;overflow-wrap:normal;white-space:pre}
.doc-note{margin:0 0 24px;padding:16px 20px;border-left:3px solid var(--doc-accent);background:var(--doc-soft)}.doc-note p{margin:0;font-size:15px}.doc-note p+p{margin-top:10px}
.doc-table{margin:0 0 26px;overflow-x:auto;border:1px solid var(--doc-rule);border-radius:6px;-webkit-overflow-scrolling:touch}.doc-table table{width:100%;border-collapse:collapse;font-size:14px;line-height:1.5}.doc-table caption{padding:12px 16px;text-align:left;font-size:12px;font-weight:800;letter-spacing:.04em;color:var(--text);background:var(--doc-soft)}.doc-table th,.doc-table td{padding:11px 16px;border-top:1px solid var(--doc-rule);text-align:left;vertical-align:top;color:var(--muted)}.doc-table thead th{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text);background:var(--doc-soft)}.doc-table tbody th{color:var(--text);font-weight:800}.doc-table td:first-child{white-space:nowrap}.doc-table.doc-wrap td:first-child{white-space:normal}.doc-table td:first-child code{white-space:nowrap;overflow-wrap:normal}
.doc-figure{margin:8px 0 30px}.doc-figure .doc-diagram{overflow-x:auto;padding:18px;background:var(--doc-soft);border:1px solid var(--doc-rule);border-radius:6px;-webkit-overflow-scrolling:touch}.doc-figure svg{display:block;width:100%;height:auto;min-width:620px;color:var(--text);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.doc-figure figcaption{margin-top:10px;font-size:13px;line-height:1.55;color:var(--muted)}
.doc-figure .d-box{fill:var(--ink);stroke:var(--line);stroke-width:1.2}:root[data-theme="light"] .doc-figure .d-box{fill:#fff}.doc-figure .d-hot{stroke:var(--doc-accent);stroke-width:1.8}.doc-figure .d-dash{stroke-dasharray:5 4}.doc-figure .d-edge{fill:none;stroke:var(--muted);stroke-width:1.3}.doc-figure .d-edge-accent{fill:none;stroke:var(--doc-accent);stroke-width:1.5}.doc-figure .d-head{fill:var(--muted)}.doc-figure .d-head-accent{fill:var(--doc-accent)}.doc-figure text{fill:currentColor;font-size:13px}.doc-figure .d-small{font-size:11px;fill:var(--muted)}.doc-figure .d-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.doc-figure .d-label{font-size:11px;font-weight:800;letter-spacing:.1em;fill:var(--doc-accent)}
.doc-sources{margin-top:56px}.doc-sources ul{padding-left:20px}.doc-sources li{font-size:14px}
.doc-pager{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:64px;padding-top:28px;border-top:1px solid var(--doc-rule)}.doc-pager a{display:grid;gap:6px;padding:16px 18px;border:1px solid var(--doc-rule);border-radius:6px;color:var(--text)}.doc-pager a:hover{border-color:var(--doc-accent)}.doc-pager small{color:var(--doc-accent);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.doc-pager span{font-weight:800;line-height:1.35}.doc-pager-next{grid-column:2;text-align:right}
@media(max-width:900px){.doc-layout{grid-template-columns:minmax(0,1fr);gap:28px;padding-top:28px}.doc-sidebar{position:static}.doc-toc{border:1px solid var(--doc-rule);border-radius:6px;padding:0 16px}.doc-toc summary{display:block;padding:14px 0;font-weight:800;cursor:pointer}.doc-toc[open] summary{border-bottom:1px solid var(--doc-rule);margin-bottom:14px}.doc-toc[open] ol{margin-bottom:14px}.doc-toc-title{display:none}}
@media(max-width:600px){.doc-layout{padding-bottom:70px}.doc-article p,.doc-article li,.doc-article dd{font-size:15.5px}.doc-article .doc-lead{font-size:17px}.doc-article h2{margin-top:48px}.doc-pager{grid-template-columns:1fr}.doc-pager-next{grid-column:1}.doc-table td:first-child{white-space:normal}}
/* Mermaid diagrams, pre-rendered by scripts/diagrams.mjs without colours: every fill and stroke is a token here */
.doc-diagram-mermaid{display:flex}.doc-figure svg.doc-mermaid{width:var(--w);max-width:100%;min-width:calc(var(--w) * .72);margin:auto;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}
.doc-mermaid text{fill:var(--text);font-size:14px}.doc-mermaid .node .label text{text-anchor:middle}.doc-mermaid .cluster-label tspan,.doc-mermaid .labelText tspan,.doc-mermaid .loopText tspan{font-weight:800}.doc-mermaid rect,.doc-mermaid path,.doc-mermaid polygon,.doc-mermaid circle,.doc-mermaid line{fill:none;stroke:none}
.doc-mermaid .node .label-container,.doc-mermaid rect.actor{fill:var(--d-fill);stroke:var(--line);stroke-width:1.2}
.doc-mermaid .node polygon.label-container{fill:var(--doc-soft);stroke:var(--doc-accent)}
.doc-mermaid .cluster rect{fill:none;stroke:var(--line);stroke-dasharray:5 4;stroke-width:1.2}.doc-mermaid .cluster-label text{fill:var(--doc-accent);font-weight:800}
.doc-mermaid .flowchart-link{stroke:var(--muted);stroke-width:1.3}.doc-mermaid .edge-pattern-dotted{stroke-dasharray:3 4}
.doc-mermaid marker path,.doc-mermaid .arrowMarkerPath{fill:var(--muted);stroke:none}
.doc-mermaid .edgeLabel text{fill:var(--muted)}
.doc-mermaid .actor-line{stroke:var(--line);stroke-width:1;stroke-dasharray:3 3}.doc-mermaid .actor-man line,.doc-mermaid .actor-man circle{stroke:var(--text);stroke-width:1.4}
.doc-mermaid .messageLine0,.doc-mermaid .messageLine1{stroke:var(--muted);stroke-width:1.3}.doc-mermaid .messageLine1{stroke-dasharray:4 3}.doc-mermaid .messageText{fill:var(--text)}
.doc-mermaid .loopLine{stroke:var(--doc-accent);stroke-width:1.2;stroke-dasharray:4 3}.doc-mermaid .labelBox{fill:var(--doc-soft);stroke:var(--doc-accent)}.doc-mermaid .labelText,.doc-mermaid .loopText{fill:var(--doc-accent);font-weight:800}
.doc-mermaid .note{fill:var(--doc-soft);stroke:var(--doc-accent)}.doc-mermaid .noteText{fill:var(--text)}
.doc-mermaid .edgeLabel rect,.doc-mermaid .edgeLabel .background{fill:var(--doc-soft);stroke:none}.doc-mermaid text.actor,.doc-mermaid text.actor tspan{fill:var(--text);font-weight:800}
/* Measure, anchors, focus, scroll frames and narrow tables */
.doc-article>p,.doc-article>ul,.doc-article>ol,.doc-article>dl,.doc-article .doc-note,.doc-sources ul,.doc-figure figcaption{max-width:70ch}
.doc-article h2,.doc-article h3{scroll-margin-top:24px}.doc-anchor{margin-left:.35em;padding:0 .15em;color:var(--doc-accent);font-weight:400;text-decoration:none!important;opacity:0}.doc-article h2:hover .doc-anchor,.doc-article h3:hover .doc-anchor,.doc-anchor:focus-visible{opacity:1}
@media(hover:none){.doc-anchor{opacity:.55}}
:root[data-theme="light"] .doc-body :focus-visible{outline-color:#8a5c16}
.doc-diagram:focus-visible,.doc-table:focus-visible,.doc-article pre:focus-visible{outline-offset:2px}
.doc-table code{overflow-wrap:normal;white-space:nowrap}
.doc-table tbody tr:hover{background:color-mix(in srgb,var(--doc-soft) 55%,transparent)}
@media(max-width:600px){
.doc-figure svg.doc-mermaid{min-width:calc(var(--w) * .8)}
.doc-figure .doc-diagram{padding:12px}
.doc-stack{border:0;border-radius:0;overflow:visible}.doc-stack table,.doc-stack tbody,.doc-stack tr,.doc-stack td,.doc-stack tbody th{display:block;width:auto}.doc-stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.doc-stack caption{display:block;padding:0 0 10px;background:none}
.doc-stack tr{margin:0 0 12px;padding:4px 14px;border:1px solid var(--doc-rule);border-radius:6px}.doc-stack tr:hover{background:none}
.doc-stack td,.doc-stack tbody th{padding:8px 0;border-top:1px solid var(--doc-rule);white-space:normal}.doc-stack tr>:first-child{border-top:0}
.doc-stack td[data-label]::before,.doc-stack tbody th[data-label]::before{content:attr(data-label);display:block;margin-bottom:3px;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--doc-accent)}
.doc-stack tr>:first-child::before{display:none!important}.doc-stack tr>:first-child{color:var(--text);font-weight:800}
.doc-stack code,.doc-stack td:first-child code{white-space:normal;overflow-wrap:anywhere}
}
