.mermaid-figure{border:1px solid var(--rule);background:var(--paper);text-align:center;margin:1.6em 0;padding:20px;overflow-x:auto}.mermaid-figure svg{width:100%;max-width:720px;height:auto;margin:0 auto}.mermaid-figure:before{content:attr(data-scroll-hint);color:var(--muted);font:11px var(--mono);text-align:left;margin-bottom:12px;display:block;position:sticky;left:0}.mermaid-figure:focus-visible{outline:2px solid var(--annot);outline-offset:3px}.cs425-viz{border-top:1px solid var(--ink);border-bottom:1px solid var(--rule);width:100%;color:var(--ink);margin:2em 0;padding:0}.cs425-viz figcaption{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;gap:18px;min-height:58px;padding:10px 0;display:flex}.cs425-viz figcaption>strong{max-width:36ch;font-size:14px;line-height:1.35}.cs425-viz-controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.cs425-viz-controls button,.cs425-viz-controls select{border:1px solid var(--rule);min-height:34px;color:var(--muted);font:12px var(--mono);background:0 0;padding:0 10px}.cs425-viz-controls button:hover,.cs425-viz-controls button[aria-pressed=true]{border-color:var(--ink);color:var(--ink)}.cs425-viz-controls button[aria-pressed=true]{background:var(--paper-2)}.cs425-viz-controls label{min-height:34px;color:var(--muted);font:12px var(--mono);border:1px solid var(--rule);align-items:center;gap:7px;padding:0 9px;display:inline-flex}.cs425-viz-controls input[type=range]{width:72px;accent-color:var(--accent)}.cs425-viz-controls b{min-width:1ch;color:var(--ink);font-weight:500}.cs425-viz-stage{min-height:250px;overflow-x:auto}.cs425-viz-stage svg{min-width:620px}.cs425-viz-stage:focus-visible,.cs425-viz-controls :focus-visible{outline:2px solid var(--annot);outline-offset:3px}.cs425-viz-controls button:disabled{opacity:.4;cursor:default}.cs425-step-count{font:11px var(--mono);color:var(--muted);padding:0 5px}.cs425-state-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;padding:14px 0;display:grid}.cs425-state-grid>div{border:1px solid var(--rule);padding:12px;font-size:12px}.cs425-state-grid strong{font-size:12px}.cs425-state-grid p{font-size:13px;line-height:1.5;margin:8px 0 0!important}.cs425-state-grid code{overflow-wrap:anywhere;margin-top:6px;font-size:12px;display:inline-block}.cs425-viz-stage svg{width:100%;height:auto;display:block;overflow:visible}.cs425-viz .snapshot-cut-line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-dasharray:6 5}.cs425-viz-detail{border-top:1px solid var(--rule);min-height:44px;color:var(--muted);padding:12px 0 14px;font-size:13px;line-height:1.5;margin:0!important}.cs425-viz svg text{fill:var(--ink);font-family:var(--mono);font-size:14px}.cs425-viz svg .sub-label{fill:var(--muted);font-size:12px}.cs425-viz svg .result-label{fill:var(--accent-text);font-weight:500}.cs425-viz svg .lane,.cs425-viz svg .ring,.cs425-viz svg .edge,.cs425-viz svg .flow-edge{fill:none;stroke:var(--rule);stroke-width:1.4px}.cs425-viz svg .message,.cs425-viz svg .causal,.cs425-viz svg .order-message line,.cs425-viz svg .probe line,.cs425-viz svg .route,.cs425-viz svg .retry,.cs425-viz svg .repair{fill:none;stroke:var(--annot);stroke-width:2px}.cs425-viz svg .request{stroke-dasharray:8 5;animation:1.1s linear cs425-dash}.cs425-viz svg .reply{stroke:var(--accent);stroke-dasharray:620;stroke-dashoffset:620px;animation:cs425-draw var(--reply-duration,.9s) var(--ease-out) forwards}.cs425-viz svg .deadline{stroke:var(--accent);stroke-width:2px}.cs425-viz svg .loss{stroke:var(--accent);stroke-width:3px}.cs425-viz svg .crash{fill:var(--accent)}.cs425-viz svg .peer circle{fill:var(--paper);stroke:var(--rule);stroke-width:1.4px;transition:fill .3s ease, stroke .3s ease, transform .3s var(--ease-out);transform-box:fill-box;transform-origin:50%}.cs425-viz svg .peer.is-active circle{fill:color-mix(in srgb, var(--annot) 16%, var(--paper));stroke:var(--annot);transform:scale(1.12)}.cs425-viz svg .peer.is-suspect circle{fill:color-mix(in srgb, var(--accent) 18%, var(--paper));stroke:var(--accent)}.cs425-viz svg .peer.is-failed circle{fill:var(--ink);stroke:var(--ink)}.cs425-viz svg .peer.is-failed text{fill:var(--paper)}.cs425-viz svg .edge.is-active,.cs425-viz svg .flow-edge.is-active{stroke:var(--annot);stroke-width:2px}.cs425-viz svg .key rect{fill:var(--ink)}.cs425-viz svg .key text{fill:var(--paper)}.cs425-viz svg .route{stroke-dasharray:7 5}.cs425-viz svg .piece{fill:#0000;stroke:var(--rule)}.cs425-viz svg .piece.has-piece{fill:color-mix(in srgb, var(--annot) 16%, var(--paper));stroke:var(--annot)}.cs425-viz svg .gossip-link{stroke:var(--annot);stroke-width:1.5px;opacity:.8}.cs425-viz svg .gossip-link.is-dropped{stroke:var(--accent);stroke-dasharray:3 5}.cs425-viz svg .probe.is-muted line{stroke:var(--rule);stroke-dasharray:5 5}.cs425-viz svg .probe.is-return line{stroke:var(--accent)}.cs425-viz svg .probe text{fill:var(--muted);font-size:13px}.cs425-viz[data-type=clocks] .cs425-viz-stage{overflow-x:auto}.cs425-viz[data-type=clocks] svg{min-width:920px}.cs425-viz svg .clock-process,.cs425-viz svg .clock-message{fill:none;stroke:var(--ink);stroke-width:1.6px}.cs425-viz svg marker path,.cs425-viz svg .clock-dot{fill:var(--ink)}.cs425-viz svg .process-label{font-size:17px;font-weight:600}.cs425-viz svg .clock-stamp text{fill:var(--accent-text)}.cs425-viz svg .clock-stamp text.lamport{font-size:13px}.cs425-viz svg .clock-stamp text.vector{font-size:11px}.cs425-viz svg .clock-stamp.is-current text{animation:cs425-pop .32s var(--ease-out) both;font-weight:700}.cs425-viz svg .order-message text{fill:var(--annot);font-size:13px}.cs425-viz svg .order-message.is-pending line{stroke:var(--muted);stroke-dasharray:5 5;opacity:.45}.cs425-viz svg .order-message.is-pending text{fill:var(--muted)}.cs425-viz svg .flow-node rect{fill:var(--paper);stroke:var(--rule)}.cs425-viz svg .flow-node.is-done rect{fill:color-mix(in srgb, var(--annot) 10%, var(--paper));stroke:var(--annot)}.cs425-viz svg .flow-node.is-current rect{fill:var(--ink);stroke:var(--ink)}.cs425-viz svg .flow-node.is-current text{fill:var(--paper)}.cs425-viz svg .fault path:first-child,.cs425-viz svg .fault circle{fill:var(--accent)}.cs425-viz svg .fault text{fill:var(--accent-text);font-size:10px}.cs425-viz svg .replica-row .is-stale{fill:var(--accent-text)}.cs425-viz svg .quorum-node circle{fill:var(--paper);stroke:var(--rule)}.cs425-viz svg .quorum-node.is-write circle{fill:color-mix(in srgb, var(--accent) 17%, var(--paper));stroke:var(--accent)}.cs425-viz svg .quorum-node.is-read circle{fill:color-mix(in srgb, var(--annot) 17%, var(--paper));stroke:var(--annot)}.cs425-viz svg .quorum-node.is-overlap circle{fill:color-mix(in srgb, var(--annot) 20%, var(--accent) 20%);stroke:var(--ink);stroke-width:2px}.cs425-viz svg .write-label{fill:var(--accent-text)}.cs425-viz svg .read-label{fill:var(--annot)}.cs425-viz svg .overlap-label{fill:var(--ink)}@keyframes cs425-dash{to{stroke-dashoffset:-26px}}@keyframes cs425-draw{to{stroke-dashoffset:0}}@keyframes cs425-pop{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media (width<=767px){.cs425-viz figcaption{flex-direction:column;align-items:flex-start;padding:12px 0}.cs425-viz-controls{justify-content:flex-start}.cs425-viz-controls button,.cs425-viz-controls select,.cs425-viz-controls label{min-height:42px}.cs425-viz-stage{min-height:0;margin:0 -10px}.cs425-viz-detail{font-size:12px}}@media (prefers-reduced-motion:reduce){.cs425-viz *{transition:none!important;animation:none!important}.cs425-viz svg .reply{stroke-dashoffset:0}}.db-viz{border-block:1px solid var(--rule);color:var(--ink);margin:2rem 0}.db-viz figcaption{justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.db-viz figcaption strong{font-size:15px;line-height:1.4}.db-controls,.db-modes{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.db-modes{border-bottom:1px solid var(--rule);padding-bottom:14px}.db-viz button{color:var(--muted);border:1px solid var(--rule);min-height:40px;font:12px var(--mono);cursor:pointer;background:0 0;padding:8px 12px}.db-viz button:hover,.db-viz button[aria-pressed=true]{color:var(--ink);border-color:var(--ink);background:var(--paper-2)}.db-viz button:disabled{opacity:.35;cursor:default}.db-viz :focus-visible{outline:2px solid var(--annot);outline-offset:3px}.db-count{color:var(--muted);font:12px var(--mono);text-align:center;min-width:4em}.db-stage{padding:12px 0;overflow-x:auto}.db-stage svg{width:100%;min-width:680px;height:auto;display:block}.db-viz svg text{font:14px var(--mono);fill:var(--ink)}.db-viz svg .small{fill:var(--muted);font-size:12px}.db-viz svg .label{fill:var(--muted);font-size:13px}.db-viz svg rect,.db-viz svg circle{fill:var(--paper);stroke:var(--rule);stroke-width:1.5px}.db-viz svg .active rect,.db-viz svg .active circle{stroke:var(--annot);fill:color-mix(in srgb, var(--annot) 12%, var(--paper))}.db-viz svg .active{animation:.28s ease-out db-reveal}.db-viz svg .done rect{fill:var(--paper-2);stroke:var(--muted)}.db-viz svg .hit{fill:var(--accent-text);font-weight:600}.db-viz svg .edge{fill:none;stroke:var(--muted);stroke-width:1.5px}.db-viz svg .edge.active{stroke:var(--annot);stroke-width:2.5px}.db-viz svg .travel{stroke-dasharray:6 4;animation:.8s linear db-travel}.db-viz svg marker path{fill:var(--muted)}.db-viz svg .pending{opacity:.38}.db-viz svg .divider{stroke:var(--rule);stroke-dasharray:3 5}.db-stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:4px 0 14px;display:grid}.db-stats div{border-left:2px solid var(--rule);padding:6px 12px}.db-stats small{color:var(--muted);font-size:12px;display:block}.db-stats span{font:16px var(--mono);margin-top:6px;display:block}.db-detail{border-top:1px solid var(--rule);min-height:4.6em;padding:14px 0;font-size:14px;line-height:1.65;margin:0!important}.db-detail code{white-space:normal}@keyframes db-reveal{0%{opacity:.4}to{opacity:1}}@keyframes db-travel{to{stroke-dashoffset:-30px}}@media (width<=700px){.db-viz figcaption{flex-direction:column;align-items:flex-start}.db-viz button{min-height:44px}.db-stats{grid-template-columns:1fr 1fr}}@media (prefers-reduced-motion:reduce){.db-viz *{transition:none!important;animation:none!important}}.clean-viz{border-block:1px solid var(--rule);color:var(--ink);margin:2rem 0}.clean-viz figcaption{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px 0;display:flex}.clean-viz figcaption strong{font-size:15px}.clean-controls,.clean-modes{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.clean-controls span{font:12px var(--mono);color:var(--muted);text-align:center;min-width:4em}.clean-modes{border-bottom:1px solid var(--rule);padding-bottom:14px}.clean-viz button{border:1px solid var(--rule);color:var(--muted);min-height:44px;font:12px var(--mono);cursor:pointer;background:0 0;padding:8px 12px}.clean-viz button:hover,.clean-viz button[aria-pressed=true]{color:var(--ink);background:var(--paper-2);border-color:var(--ink)}.clean-viz button:disabled{opacity:.35;cursor:default}.clean-viz :focus-visible{outline:2px solid var(--annot);outline-offset:3px}.clean-stage{padding:14px 0;overflow-x:auto}.clean-stage svg{width:100%;min-width:700px;height:auto;display:block}.clean-viz svg text{font:14px var(--mono);fill:var(--ink)}.clean-viz svg .small{fill:var(--muted);font-size:12px}.clean-viz svg rect{fill:var(--paper);stroke:var(--rule);stroke-width:1.5px}.clean-viz svg .active rect{fill:color-mix(in srgb, var(--annot) 9%, var(--paper));stroke:var(--annot)}.clean-viz svg .active{animation:.24s ease-out clean-reveal}.clean-viz svg .pending{opacity:.4}.clean-viz svg .excluded{opacity:.35}.clean-viz svg .excluded text{text-decoration:line-through}.clean-viz svg .edge{fill:none;stroke:var(--muted);stroke-width:1.5px}.clean-viz svg .edge.active{stroke:var(--annot);stroke-width:2px}.clean-viz svg .edge-label{paint-order:stroke;stroke:var(--paper);stroke-width:5px;stroke-linejoin:round}.clean-viz svg marker path{fill:var(--muted)}.clean-viz svg .result{fill:var(--annot)}.clean-detail{border-top:1px solid var(--rule);min-height:5em;padding:16px 0;font-size:14px;line-height:1.7;margin:0!important}@keyframes clean-reveal{0%{opacity:.4}to{opacity:1}}@media (width<=700px){.clean-viz figcaption{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){.clean-viz *{transition:none!important;animation:none!important}}
