.architecture-model{--architecture-page:#f7f5ee;--architecture-surface:#fffdf6;--architecture-alt:#e7f0e8;--architecture-ink:#17231b;--architecture-muted:#536158;--architecture-line:#93a79e;position:relative;display:grid;width:100%;gap:18px;margin:0;padding:20px;border:1px solid var(--architecture-line);border-radius:10px;background:var(--architecture-page);color:var(--architecture-ink)}
.architecture-model-head{min-height:180px;padding-right:318px}.architecture-model-head h2{margin:0;font-size:20px}.architecture-model-head>p{max-width:760px;margin:3px 0 0;color:var(--architecture-muted)}
.architecture-model-stage{min-width:0}.architecture-model-canvas{display:grid;min-width:0;gap:8px}/* The detail aside floats above the drawing and stays there: lifting the drawing on hover hid the very panel the hovered node fills. The scroll lane keeps a right margin the width of the aside so every part of the drawing can be scrolled out from under it. */.architecture-model-scroll{padding-right:320px}@media(max-width:780px){.architecture-model-scroll{padding-right:0}}.architecture-model-scroll{overflow-x:auto;border:1px solid var(--architecture-line);border-radius:9px;background:var(--architecture-page)}.architecture-model-svg{display:block;min-width:0}.architecture-model-svg svg{display:block;max-width:none}.architecture-model-svg-dark{display:none}.architecture-model-svg svg text{user-select:text}.architecture-model-svg [data-node-id]{cursor:pointer}.architecture-model-svg [data-node-id]:is(:hover,:focus-visible){outline:2px solid var(--architecture-ink);outline-offset:2px}.architecture-model-failure{margin:0;padding:8px 10px;border:1px solid #b42318;border-radius:7px;background:var(--architecture-surface);color:#b42318;font-size:12px}.architecture-model-detail{position:absolute;z-index:3;top:20px;right:20px;display:grid;width:300px;height:180px;gap:6px;overflow:auto;padding:10px;border:1px solid var(--architecture-line);border-radius:9px;background:var(--architecture-surface);box-shadow:0 6px 18px rgba(23,55,47,.12)}.architecture-model-detail h3{display:flex;align-items:center;gap:8px;margin:0;font:800 13px/1.25 ui-monospace,monospace}.architecture-model-detail p{margin:0;color:var(--architecture-muted);font-size:12px;line-height:1.4}.architecture-model-detail-empty{font-style:italic}.architecture-model-detail-state{padding:1px 6px;border-radius:999px;font:700 9px/1.4 ui-monospace,monospace;text-transform:uppercase;background:var(--architecture-alt)}.architecture-model-detail-drilldown{justify-self:start;padding:5px 9px;border:1px solid var(--architecture-line);border-radius:6px;background:var(--architecture-alt);color:var(--architecture-ink);font:700 11px/1.2 ui-monospace,monospace;cursor:pointer}
.session-store-inspector,.session-store-inspector-loading,.session-store-inspector-error{--architecture-page:#f7f5ee;--architecture-surface:#fffdf6;--architecture-alt:#e7f0e8;--architecture-ink:#17231b;--architecture-muted:#536158;--architecture-line:#93a79e;background:var(--architecture-page);color:var(--architecture-ink)}.session-store-inspector{display:grid;width:min(1120px,calc(100vw - 48px));max-height:82vh;gap:12px;overflow:auto;padding:20px;border:1px solid var(--architecture-line);border-radius:10px}.session-store-inspector-head{display:flex;align-items:start;gap:14px}.session-store-inspector-head button,.session-store-inspector-error button{padding:7px 10px;border:1px solid var(--architecture-line);border-radius:6px;background:var(--architecture-surface);color:var(--architecture-ink);font-weight:700}.session-store-inspector-head h2{margin:0}.session-store-inspector-head p,.session-store-inspector-notice{margin:3px 0 0;color:var(--architecture-muted)}.session-store-inspector-notice{font-size:12px}.session-store-tables{display:grid;gap:8px}.session-store-table{border:1px solid var(--architecture-line);border-radius:7px;background:var(--architecture-surface)}.session-store-table summary{display:flex;justify-content:space-between;gap:12px;padding:10px;cursor:pointer}.session-store-table summary span{color:var(--architecture-muted);font-size:12px}.session-store-schema{display:flex;flex-wrap:wrap;gap:5px;margin:0;padding:0 10px 10px}.session-store-schema code{padding:3px 5px;border-radius:4px;background:var(--architecture-alt);font-size:10px}.session-store-schema code.is-redacted{text-decoration:line-through;opacity:.65}.session-store-grid{max-height:310px;overflow:auto;border-top:1px solid var(--architecture-line)}.session-store-grid table{width:max-content;min-width:100%;border-collapse:collapse;font:11px/1.35 ui-monospace,monospace}.session-store-grid th,.session-store-grid td{max-width:280px;padding:6px 8px;border-right:1px solid var(--architecture-line);border-bottom:1px solid var(--architecture-line);overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.session-store-grid th{position:sticky;top:0;background:var(--architecture-alt)}.session-store-empty,.session-store-inspector-loading,.session-store-inspector-error{padding:16px;color:var(--architecture-muted)}
.architecture-model-mount{--architecture-page:#f7f5ee;--architecture-surface:#fffdf6;--architecture-alt:#e7f0e8;--architecture-ink:#17231b;--architecture-muted:#536158;--architecture-line:#93a79e;display:grid;gap:0}.architecture-view-switcher{position:sticky;z-index:2;top:0;display:grid;width:min(1240px,calc(100vw - 32px));gap:6px;margin:0 auto;padding:12px;border:1px solid var(--architecture-line);border-radius:10px 10px 0 0;background:var(--architecture-page);color:var(--architecture-ink)}.architecture-view-tabs{display:flex;flex-wrap:wrap;gap:6px}.architecture-view-tabs button{padding:7px 10px;border:1px solid var(--architecture-line);border-radius:999px;background:var(--architecture-surface);color:var(--architecture-ink);font-weight:700}.architecture-view-tabs button[aria-pressed="true"]{background:var(--architecture-ink);color:var(--architecture-surface)}.architecture-view-description{margin:0;color:var(--architecture-muted);font-size:12px}.architecture-view-switcher+.architecture-model-compact{border-top:0;border-radius:0 0 10px 10px}
.architecture-model-compact{width:min(1240px,calc(100vw - 32px));max-height:86vh;overflow:auto;box-shadow:0 18px 54px rgba(16,47,59,.28)}.architecture-model-compact .architecture-model-head p{font-size:12px}
@media(max-width:780px){.architecture-model{padding:14px}.architecture-model-head{min-height:0;padding-right:0}.architecture-model-detail{position:static;width:auto;height:180px;margin-top:10px;box-shadow:none}}
.session-store-grid th strong,.session-store-grid th small{display:block}.session-store-grid th small{margin-top:2px;color:var(--architecture-muted);font-size:9px;font-weight:500}.session-store-grid th.is-redacted,.session-store-grid td.is-redacted{background:var(--architecture-alt);color:var(--architecture-muted)}.session-store-grid td.is-redacted{font-style:italic}
@media(prefers-color-scheme:dark){.architecture-model-mount,.architecture-model,.session-store-inspector,.session-store-inspector-loading,.session-store-inspector-error{--architecture-page:#0e1511;--architecture-surface:#17201a;--architecture-alt:#20382b;--architecture-ink:#edf4ee;--architecture-muted:#a9b7ad;--architecture-line:#536158}.architecture-model-svg-light{display:none}.architecture-model-svg-dark{display:block}}
.architecture-model{--architecture-added:#1f7a4d;--architecture-added-fill:#dff3e6;--architecture-changed:#a6690b;--architecture-changed-fill:#fbefd2}.architecture-model-svg [data-node-id][data-diff="added"]>rect{fill:var(--architecture-added-fill);stroke:var(--architecture-added);stroke-width:3}.architecture-model-svg [data-node-id][data-diff="changed"]>rect{fill:var(--architecture-changed-fill);stroke:var(--architecture-changed);stroke-width:3}.architecture-model-svg [data-node-id][data-diff="unchanged"]{opacity:.62}.architecture-model-svg g[data-edge-source][data-diff="added"]>path{stroke:var(--architecture-added);stroke-width:3}.architecture-model-svg g[data-edge-source][data-diff="changed"]>path{stroke:var(--architecture-changed);stroke-width:3}.architecture-model-svg g[data-edge-source][data-diff="added"]>rect{fill:var(--architecture-added-fill)}.architecture-model-svg g[data-edge-source][data-diff="changed"]>rect{fill:var(--architecture-changed-fill)}.architecture-model-svg g[data-edge-source][data-diff="unchanged"]{opacity:.62}.architecture-model-svg [data-container-id][data-diff="changed"]>text{fill:var(--architecture-changed)}
@media(prefers-color-scheme:dark){.architecture-model{--architecture-added:#7fd6a5;--architecture-added-fill:#1d4630;--architecture-changed:#f0c26b;--architecture-changed-fill:#4a3a12}}
.architecture-model-detail-owner{color:var(--architecture-muted);font:700 10px/1.3 ui-monospace,monospace}.architecture-model-detail-failure{display:grid;gap:3px;margin-top:3px;padding-top:7px;border-top:1px solid var(--architecture-line)}.architecture-model-detail-failure b{font-size:11px}.architecture-model-detail-failure small{color:var(--architecture-muted);font-size:10px}
/* An edge is path + label + invisible hit lane; hovering any part heats all of them. */.architecture-model-edge{cursor:pointer}.architecture-model-edge-hit{outline:none}path.architecture-model-edge:not(.architecture-model-edge-hit).is-hot,path.architecture-model-edge:not(.architecture-model-edge-hit)[aria-pressed="true"]{stroke-width:4}path.architecture-model-edge:not(.architecture-model-edge-hit)[aria-pressed="true"]{stroke:#0b7a5a}g.architecture-model-edge.is-hot text,g.architecture-model-edge[aria-pressed="true"] text{font-weight:700}g.architecture-model-edge.is-hot rect{stroke:#0b7a5a;stroke-width:1.5}.architecture-model-detail-endpoints{color:var(--architecture-muted);font:600 10px/1.3 ui-monospace,monospace;letter-spacing:.02em;text-transform:uppercase}.architecture-model-detail-description{margin-top:4px;color:var(--architecture-ink);font-size:13px;line-height:1.45}.architecture-model-detail-members{margin-top:6px;color:var(--architecture-muted);font-size:11px;line-height:1.4}.architecture-model-boundary{cursor:pointer;outline:none}.architecture-model-boundary:is(:hover,:focus-visible)>rect,.architecture-model-boundary[aria-pressed="true"]>rect{stroke-width:3}.architecture-model-boundary[aria-pressed="true"]>rect{stroke:#0b7a5a}

/* Pinning controls expansion; hover only selects the compact preview. */
.architecture-model-detail{transition:width 200ms ease,height 200ms ease;align-content:start}
.architecture-model-detail.is-pinned{width:min(360px,calc(100% - 40px));height:min(var(--architecture-detail-height,180px),70vh)}
.architecture-model-detail:focus-visible{outline:2px solid var(--architecture-ink);outline-offset:2px}
@media(max-width:780px){.architecture-model-detail.is-pinned{width:auto;height:min(var(--architecture-detail-height,180px),60vh)}}
@media(prefers-reduced-motion:reduce){.architecture-model-detail{transition:none}}

.architecture-model-detail[hidden]{display:none}
.architecture-model-svg [data-node-id][aria-pressed="true"]>rect{stroke:var(--architecture-ink);stroke-width:3}
/* Mouse focus must not look pinned after aria-pressed is cleared. Keep keyboard focus visible. */
.architecture-model-svg [aria-pressed]:focus:not(:focus-visible){outline:none}
