:root{--bg:#0f1218;--panel:#181d26;--panel-border:#2a3140;--text:#d7dde8;--text-dim:#8a93a5;--alive:#43d17a;--suspect:#f5b942;--dead:#5b6372;--unknown:#8a93a5;--ping:#4f9cf9;--ack:#43d17a;--ping-req:#a78bfa;--leave:#9ca3af;--danger:#ef5350}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:14px/1.45 system-ui,sans-serif}button{color:var(--text);border:1px solid var(--panel-border);cursor:pointer;font:inherit;background:#232a38;border-radius:4px;padding:4px 12px;font-size:12px}button:hover:not(:disabled){background:#2c3547}button:disabled{opacity:.45;cursor:default}button.danger{color:var(--danger);background:#3b1d1d;border-color:#5a2a2a}button.danger:hover:not(:disabled){background:#4a2424}.ring-guide{fill:none;stroke:var(--panel-border);stroke-dasharray:3 6}.node{cursor:pointer;transition:transform .6s}.node .node-body{stroke-width:2px}.node.alive .node-body{fill:var(--alive);stroke:#2a7d4d}.node.suspect .node-body{fill:var(--suspect);stroke:#a1782a}.node.dead .node-body{fill:var(--danger);stroke:#8c3230}.node.unknown .node-body{fill:var(--unknown);stroke:#5b6372}.node.selected .node-body{stroke:#fff;stroke-width:3px}.node-label{fill:#0f1218;text-anchor:middle;font-size:12px;font-weight:700}.skull{text-anchor:middle;fill:var(--text);font-size:14px}.failure-ring{fill:none;stroke:var(--danger);stroke-dasharray:4 4}.opinion-seg{fill:none;stroke-width:4px}.opinion-seg.alive{stroke:var(--alive)}.opinion-seg.suspect{stroke:var(--suspect)}.opinion-seg.dead{stroke:var(--danger)}.opinion-seg.unknown{stroke:var(--unknown)}.packet.ping{fill:var(--ping)}.packet.ack{fill:var(--ack)}.packet.ping-req{fill:var(--ping-req)}.packet.ping-req-ping{fill:var(--ping-req);opacity:.75}.packet.ping-req-ack{fill:var(--ack);opacity:.75}.packet.leave{fill:var(--leave)}.packet-glyph{fill:#0f1218;text-anchor:middle;pointer-events:none;font-size:7px;font-weight:700}.inspector{background:var(--panel);border-left:1px solid var(--panel-border);padding:12px 16px;overflow-y:auto}.inspector header{justify-content:space-between;align-items:center;display:flex}.inspector header button{padding:2px 8px}.inspector h2{margin:0;font-size:16px}.inspector h3{text-transform:uppercase;color:var(--text-dim);margin:14px 0 6px;font-size:12px}.inspector table{border-collapse:collapse;width:100%;font-size:12px}.inspector th,.inspector td{text-align:left;border-bottom:1px solid var(--panel-border);padding:2px 6px}.inspector tr.mismatch td{color:var(--danger)}.inspector tr.dissent-suspect td{color:var(--suspect)}.inspector tr.dissent-dead td{color:var(--danger)}.inspector tr.dissent-unknown td{color:var(--unknown)}.badge{border-radius:8px;margin-left:6px;padding:1px 6px;font-size:11px}.badge.running{color:var(--alive);background:#1d3b2a}.badge.killed{color:var(--danger);background:#3b1d1d}.facts{grid-template-columns:repeat(3,auto 1fr);gap:2px 10px;font-size:12px;display:grid}.facts span{display:contents}.facts dt{color:var(--text-dim)}.facts dd{margin:0}.row{gap:8px;margin:6px 0;display:flex}.row>label{flex:1}.dim{color:var(--text-dim)}.inspector label{margin:4px 0;font-size:12px;display:block}.inspector input[type=range]{width:100%}.global-stats{background:var(--panel);border-bottom:1px solid var(--panel-border);align-items:center;gap:18px;padding:8px 16px;display:flex}.stat{flex-direction:column;display:flex}.stat-label{text-transform:uppercase;color:var(--text-dim);font-size:10px}.stat-value{font-variant-numeric:tabular-nums;font-size:15px}.sparkline polyline{stroke:var(--alive)}.app{grid-template-rows:auto 1fr auto;grid-template-columns:1fr;height:100vh;display:grid}.app.with-inspector{grid-template-columns:1fr 460px}.app.with-inspector .global-stats,.app.with-inspector .controls{grid-column:1/-1}.app.with-inspector .inspector{grid-area:2/2}main{grid-area:2/1;justify-content:center;min-height:0;display:flex;position:relative}.legend{background:var(--panel);border:1px solid var(--panel-border);opacity:.94;border-radius:6px;max-width:240px;max-height:calc(100% - 24px);padding:6px 12px;font-size:12px;position:absolute;top:12px;left:12px;overflow-y:auto}.legend summary{cursor:pointer;font-weight:600}.legend h4{text-transform:uppercase;color:var(--text-dim);margin:10px 0 4px;font-size:10px;font-weight:600}.legend ul{margin:0;padding:0;list-style:none}.legend li{align-items:center;gap:8px;margin:2px 0;display:flex}.legend p{margin:8px 0 4px;font-size:11px}.legend-swatch{flex:none;overflow:visible}.legend .node{cursor:default}.legend .skull{font-size:20px}.ring-svg{max-width:100%;height:100%}.controls{background:var(--panel);border-top:1px solid var(--panel-border);flex-wrap:wrap;align-items:center;gap:16px;padding:8px 16px;font-size:12px;display:flex}.controls label{align-items:center;gap:6px;display:flex}.controls .readout{text-align:right;font-variant-numeric:tabular-nums;width:4.5ch;display:inline-block}.controls input[type=number]{width:64px;color:var(--text);border:1px solid var(--panel-border);background:#232a38}.controls details{position:relative}.controls details>div{gap:10px;padding:6px 0;display:flex}
