:root{--g-replication:#94600a;--g-consensus:#8b3d8f;--g-scale:#0b7285}:root[data-theme=dark]{--g-replication:#e3a94b;--g-consensus:#d391d6;--g-scale:#4fc3d3}[data-group=replication]{--accent:var(--g-replication)}[data-group=consensus]{--accent:var(--g-consensus)}[data-group=scale]{--accent:var(--g-scale)}:root{--node-0:#d9480f;--node-1:#1c62b9;--node-2:#2b8a3e;--node-3:#ae3ec9;--node-4:#e67700;--node-5:#0c8599;--node-6:#c2255c;--node-7:#5f3dc4}:root[data-theme=dark]{--node-0:#ff8a4c;--node-1:#6aa8ff;--node-2:#69db7c;--node-3:#e599f7;--node-4:#ffc078;--node-5:#66d9e8;--node-6:#faa2c1;--node-7:#b197fc}.grid-2.plane-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.grid-2.wide-left{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}.slider{flex-direction:column;gap:4px;display:flex}.slider .label{font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);justify-content:space-between;display:flex}.slider .label strong{font:600 13px var(--mono);color:var(--ink);letter-spacing:0}.btn-row{flex-wrap:wrap;gap:8px;display:flex}.chart .ball{fill:var(--accent);stroke:var(--sheet);stroke-width:2px}.chart .ball.bad{fill:var(--bad)}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font:13px var(--sans);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule);cursor:pointer;padding:5px 10px}.chip:hover{border-color:var(--accent)}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}@media (width<=1100px){.grid-2.wide-left,.grid-2.plane-grid{grid-template-columns:minmax(0,1fr)}}.check{font:12px var(--mono);color:var(--ink-2);cursor:pointer;align-items:center;gap:6px;display:inline-flex}.check input{width:auto;accent-color:var(--accent)}svg .tick{fill:var(--ink-3);font:11px var(--mono)}svg .tick.end{text-anchor:end}svg .tick.mid{text-anchor:middle}svg .tick.strong{fill:var(--ink);font-weight:600}svg .val{fill:var(--ink);font:600 15px var(--mono)}svg .val.mid{text-anchor:middle}svg .val.small{font-size:12px;font-weight:500}svg .bad-text,.bad-text{fill:var(--bad);color:var(--bad)}.toggle{align-items:flex-start;font-size:13px;line-height:1.35}.toggle input{flex:none;width:16px;height:16px;margin-top:2px}.btn.danger{color:var(--bad);border-color:var(--bad)}.btn:disabled{opacity:.45;cursor:not-allowed}.notice{margin:-8px 0 20px}.verdict{color:var(--ink-2);background:var(--paper);border-left:3px solid var(--rule);margin:0;padding:10px 14px;font-size:14px;line-height:1.45}.verdict.set{color:var(--ink);border-left-color:var(--accent);background:var(--accent-tint)}.verdict.bad{border-left-color:var(--bad);background:var(--bad-tint)}.chart .limit{stroke:var(--bad);stroke-width:1.5px;stroke-dasharray:5 4}.racks{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;display:grid}.rack{font:11px var(--mono);color:var(--ink-2);background:var(--paper);border:1px solid var(--rule-strong);flex-direction:column;gap:4px;padding:8px 10px;display:flex;position:relative}.rack i{background:var(--accent);height:6px;transition:width .2s;display:block}.rack i.hot{background:var(--bad)}.rack.dead{opacity:.55;border-style:dashed}.rack small{color:var(--bad);text-transform:uppercase;letter-spacing:.08em}.glossary.price{margin-top:16px}.seq .lane{stroke:var(--rule-strong);stroke-width:1.5px}.seq .lane-label{fill:var(--ink-2);font:600 11px var(--mono)}.seq .msg line{stroke:var(--accent);stroke-width:1.5px}.seq .msg circle{fill:var(--accent)}.seq .on-dot,svg .on-dot{fill:var(--on-accent);font:600 10px var(--mono);text-anchor:middle}.seq .msg.copy line{stroke-dasharray:4 3}.seq .msg.ignored{opacity:.3}.seq .msg.lost line{stroke:var(--bad);stroke-dasharray:3 3}.seq .cross{fill:var(--bad);font-size:14px;font-weight:700}.arrivals .chip{cursor:default;font-family:var(--mono);text-align:center;min-width:32px}.arrivals .chip.warn{border-color:var(--accent);color:var(--accent)}.arrivals .chip.bad{border-color:var(--bad);color:var(--bad);background:var(--bad-tint)}.fallacies{counter-reset:f;border-top:1px solid var(--rule-strong);border-left:1px solid var(--rule);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0;margin:16px 0 0;padding:0;list-style:none;display:grid}.fallacies li{counter-increment:f;font:400 18px/1.3 var(--serif);border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);background:var(--sheet);padding:14px 16px}.fallacies li:before{content:counter(f, decimal-leading-zero);font:600 11px var(--mono);color:var(--accent);margin-bottom:4px;display:block}.spacetime .arrow-line{stroke:var(--ink-2);stroke-width:1.5px}.spacetime .arrow-head{fill:var(--ink-2)}.spacetime .ev{cursor:pointer;outline:none}.spacetime .ev .hit{fill:#0000}.spacetime .ev circle:not(.hit){fill:var(--sheet);stroke:var(--accent);stroke-width:2.5px}.spacetime .ev.send circle:not(.hit),.spacetime .ev.recv circle:not(.hit){fill:var(--accent-tint)}.spacetime .ev.sel circle:not(.hit){fill:var(--accent)}.spacetime .ev:hover circle:not(.hit),.spacetime .ev:focus-visible circle:not(.hit){stroke-width:4px}.spacetime .stamp{fill:var(--ink);font-weight:600}.msg-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.seq .band.pause{fill:var(--mark);opacity:.5}.seq .band.dead{fill:var(--rule);opacity:.6}.seq .band.suspect{fill:var(--bad);opacity:.75}.seq .hb{stroke:var(--ink-3);stroke-width:1px}.seq .hb-dot{fill:var(--accent)}.topo .wire{stroke:var(--ink-3);stroke-width:2px}.topo .wire.cut{stroke:var(--bad);stroke-dasharray:6 5}.topo .box rect{fill:var(--sheet);stroke:var(--rule-strong);stroke-width:1.5px}.topo .box.lead rect{fill:var(--accent-tint);stroke:var(--accent);stroke-width:2.5px}.topo .box.down rect{fill:var(--bad-tint);stroke:var(--bad);stroke-dasharray:5 4}.topo .box.client.busy rect{stroke:var(--accent);stroke-dasharray:4 3}.topo .packet circle{fill:var(--accent)}.topo .link-btn-svg{cursor:pointer;outline:none}.topo .link-btn-svg .hit{fill:#0000}.topo .link-btn-svg .wire{stroke-width:6px;stroke:var(--accent)}.topo .link-btn-svg:hover .wire,.topo .link-btn-svg:focus-visible .wire{stroke-width:9px}.topo .link-btn-svg.cut .wire{stroke:var(--bad);stroke-dasharray:10 8;stroke-width:4px}.topo .cross{fill:var(--bad);font-size:26px}.swatch{stroke:var(--rule-strong);stroke-width:1.5px}.swatch.off{fill:var(--paper);stroke-dasharray:4 3}.sw-blue{fill:#1c62b9}.sw-red{fill:#d6336c}.sw-green{fill:#2b8a3e}.sw-orange{fill:#e8590c}.sw-purple{fill:#7048e8}.sw-teal{fill:#0c8599}.topo .msg-label{fill:var(--accent);font-weight:600}.topo .msg-label.start{text-anchor:start}.topo .part.pickable{cursor:pointer}.topo .part.pickable:hover rect{stroke:var(--accent)}.topo .part.prepared rect,.topo .part.doubt rect{fill:var(--mark)}.topo .part.committed rect{stroke:var(--ok);stroke-width:2.5px}.topo .part.aborted rect,.topo .part.voteNo rect{stroke:var(--bad);stroke-width:2.5px}.topo .part.doubt rect{stroke:var(--bad);stroke-dasharray:5 4}.topo .state{fill:var(--ink-2)}.topo .qnode{cursor:pointer;outline:none}.topo .qnode circle{fill:var(--sheet);stroke:var(--rule-strong);stroke-width:1.5px}.topo .qnode.fresh circle{fill:var(--accent);stroke:var(--accent)}.topo .qnode.fresh .val{fill:var(--on-accent)}.topo .qnode.asked circle{stroke:var(--ink);stroke-width:4px}.topo .qnode.down circle{fill:var(--bad-tint);stroke:var(--bad);stroke-dasharray:5 4}.topo .qnode:hover circle,.topo .qnode:focus-visible circle{stroke-width:4px}.replicas{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.replica{background:var(--paper);border:1px solid var(--rule);flex-direction:column;gap:6px;padding:10px;display:flex}.replica.hit{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.replica strong{font:400 24px var(--serif)}.replica .bar{width:100%;margin:0}.feed{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.feed li{background:var(--paper);border-left:3px solid var(--rule);flex-wrap:wrap;justify-content:space-between;gap:4px 12px;padding:7px 10px;font-size:13px;display:flex}.feed li.ok{border-left-color:var(--ok)}.feed li.bad{border-left-color:var(--bad);background:var(--bad-tint)}.feed.events li{display:block}.raft .mesh{stroke:var(--rule);stroke-width:1px}.raft .mesh.cut{stroke:none}.raft .wall{stroke:var(--bad);stroke-width:3px;stroke-dasharray:10 7}.raft .rmsg.vote{fill:var(--accent)}.raft .rmsg.append{fill:var(--ink-2)}.raft .rmsg.big{fill:var(--ink);stroke:var(--sheet);stroke-width:2px}.raft .rnode{cursor:pointer;outline:none}.raft .rnode .timer-track{fill:none;stroke:var(--rule);stroke-width:5px}.raft .rnode .timer{fill:none;stroke:var(--accent);stroke-width:5px;opacity:.8}.raft .rnode .body{fill:var(--sheet);stroke:var(--rule-strong);stroke-width:2px}.raft .rnode.candidate .body{fill:var(--accent-tint);stroke:var(--accent);stroke-dasharray:5 3}.raft .rnode.leader .body{fill:var(--accent);stroke:var(--accent)}.raft .rnode.leader .val,.raft .rnode.leader .tick{fill:var(--on-accent)}.raft .rnode.leader .timer-track{stroke:var(--accent);stroke-width:3px}.raft .rnode.dead .body{fill:var(--bad-tint);stroke:var(--bad);stroke-dasharray:5 4}.raft .rnode.dead .val{fill:var(--bad)}.raft .rnode.sel .timer-track{stroke:var(--ink);stroke-width:3px}.raft .rnode:hover .body,.raft .rnode:focus-visible .body{stroke-width:4px}.inspect{border-top:1px solid var(--rule);flex-direction:column;gap:12px;padding-top:12px;display:flex}.raft-bottom{margin-top:24px}.raft-log{border-collapse:collapse;font:11px var(--mono)}.raft-log th{color:var(--ink-3);text-align:center;padding:3px 6px;font-weight:500}.raft-log td{min-width:40px;height:30px;padding:2px}.raft-log tr.dead{opacity:.45}.entry{text-align:center;border:1.5px dashed var(--rule-strong);background:var(--paper);white-space:nowrap;padding:4px 3px;display:block}.entry.committed{border-style:solid}.entry.t0{background:color-mix(in srgb, var(--node-0) 22%, var(--paper))}.entry.t1{background:color-mix(in srgb, var(--node-1) 22%, var(--paper))}.entry.t2{background:color-mix(in srgb, var(--node-2) 22%, var(--paper))}.entry.t3{background:color-mix(in srgb, var(--node-3) 22%, var(--paper))}.entry.t4{background:color-mix(in srgb, var(--node-4) 22%, var(--paper))}.lanes{flex-direction:column;gap:6px;display:flex}.lanes-head,.lane-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.lanes-head span{font:600 10px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);text-align:center;border-bottom:2px solid var(--rule-strong);padding-bottom:4px}.lane-row .who{font:600 10px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);grid-column:1/-1}.lane-row p{background:var(--accent-tint);border-left:3px solid var(--accent);margin:0;padding:8px 10px;font-size:13px;line-height:1.4;animation:.25s ease-out rise}.lane-row.bad p{background:var(--bad-tint);border-left-color:var(--bad)}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.lane-row p{animation:none}}.stored{background:var(--paper);border:1px solid var(--rule);align-items:baseline;gap:14px;padding:12px 14px;display:flex}.stored strong{font:400 36px/1 var(--serif);color:var(--accent)}.generals{max-width:760px}.hashring{max-width:420px;margin:0 auto}.hashring .ring-line{fill:none;stroke:var(--rule-strong);stroke-width:1.5px}.hashring .vnode{stroke-width:3px}.hashring .vnode.thin{stroke-width:1px}.hashring .key{stroke:none}.hashring .key.moved{stroke:var(--ink);stroke-width:1.5px}.n0{fill:var(--node-0);stroke:var(--node-0);background:var(--node-0)}.n1{fill:var(--node-1);stroke:var(--node-1);background:var(--node-1)}.n2{fill:var(--node-2);stroke:var(--node-2);background:var(--node-2)}.n3{fill:var(--node-3);stroke:var(--node-3);background:var(--node-3)}.n4{fill:var(--node-4);stroke:var(--node-4);background:var(--node-4)}.n5{fill:var(--node-5);stroke:var(--node-5);background:var(--node-5)}.n6{fill:var(--node-6);stroke:var(--node-6);background:var(--node-6)}.n7{fill:var(--node-7);stroke:var(--node-7);background:var(--node-7)}.hashring .key.moved{stroke:var(--ink)}.loadbars{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.loadbars li{grid-template-columns:24px minmax(0,1fr) 36px;align-items:center;gap:10px;font-size:13px;display:grid}.loadbars .bar{width:100%;height:12px;margin:0}.swatch-key{width:24px;height:24px;font:600 12px var(--mono);color:#fff;place-items:center;display:grid}.gossip-grid{grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;max-width:380px;margin:0 auto;display:grid}.gossip-grid span{aspect-ratio:1;background:var(--paper);border:1.5px solid var(--rule-strong);border-radius:50%;transition:background .25s}.gossip-grid span.on{background:var(--accent);border-color:var(--accent)}.gossip-grid span.new{box-shadow:0 0 0 3px var(--accent-tint), 0 0 0 5px var(--accent)}svg.mini{width:100%;height:auto;display:block}svg.mini .series{fill:none;stroke:var(--accent);stroke-width:2px}svg.mini .ball{fill:var(--accent);stroke:var(--sheet);stroke-width:2px}svg.mini .grid-line{stroke:var(--rule);stroke-dasharray:3 3}.online-bar{background:var(--sheet);border:1px solid var(--rule-strong);border-left:4px solid var(--accent);flex-wrap:wrap;align-items:center;gap:12px 24px;padding:14px 18px;display:flex}.online-bar .toggle{font:600 14px var(--sans)}.grid-2.devices{grid-template-columns:repeat(2,minmax(0,1fr))}.big-num{font:400 30px/1 var(--serif)!important}.shop{font:400 18px/1.5 var(--serif);margin:0;padding-left:20px}.devices+.note{margin-top:16px}.pay-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.pay-grid li{background:var(--paper);border:1px solid var(--rule);border-top:3px solid var(--ok);flex-direction:column;gap:2px;padding:8px 10px;display:flex}.pay-grid li.bad{border-top-color:var(--bad);background:var(--bad-tint)}.pay-grid .attempts{color:var(--ink-2);font-size:12px}@media (width<=720px){.grid-2.devices,.replicas{grid-template-columns:minmax(0,1fr)}.lanes-head{display:none}.lane-row{flex-direction:column;gap:2px;display:flex}}.item-grid{flex-direction:column;gap:6px;display:flex}@media (width<=720px){.topo .tick,.seq .tick,.seq .lane-label{font-size:15px}.topo .val{font-size:19px}.topo .val.small{font-size:15px}.raft .tick{font-size:13px}.raft .val{font-size:18px}}.stored .label,.replica .label,.pay-grid .label,.card>.label,.inspect .label{font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
