:root {
  --bg: #070b12; --panel: #0e141f; --panel2: #121a28; --line: #1d2838;
  --text: #d7e2ee; --muted: #6b7c91; --accent: #38bdf8; --green: #2bd4a0;
  --amber: #f5b942; --red: #ff5a5f; --violet: #a78bfa;
  --font: ui-monospace, "Cascadia Code", "JetBrains Mono", Consolas, monospace;
}
* { box-sizing: border-box; }
html, body { margin: 0; background: var(--bg); color: var(--text); font-family: var(--font); }

.topbar {
  display: flex; align-items: center; gap: 22px; flex-wrap: wrap;
  padding: 14px 20px; background: linear-gradient(180deg, #0d1623, #0a111b);
  border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 10;
}
.brand { display: flex; align-items: center; gap: 12px; }
.logo { font-size: 24px; color: var(--accent); text-shadow: 0 0 14px rgba(56,189,248,.5); }
.brand h1 { font-size: 15px; margin: 0; }
.brand .sub { font-size: 11px; color: var(--muted); }
.metrics { display: flex; gap: 9px; margin-left: auto; }
.metric { background: var(--panel); border: 1px solid var(--line); border-radius: 9px; padding: 6px 14px; text-align: center; min-width: 78px; }
.metric .num { display: block; font-size: 19px; font-weight: 700; color: var(--accent); }
.metric .lbl { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: .5px; }
.user { display: flex; align-items: center; gap: 12px; }
.conn { display: flex; align-items: center; gap: 7px; font-size: 11.5px; color: var(--muted); }
.conn .led { width: 9px; height: 9px; border-radius: 50%; background: var(--amber); box-shadow: 0 0 8px currentColor; }
.conn.ok .led { background: var(--green); } .conn.off .led { background: var(--red); }
.who { font-size: 12px; color: var(--text); }

.btn { font-family: var(--font); font-size: 12px; cursor: pointer; padding: 7px 13px; border-radius: 7px;
  border: 1px solid var(--accent); background: rgba(56,189,248,.12); color: var(--accent); }
.btn:hover { background: rgba(56,189,248,.22); }
.btn.ghost { border-color: var(--line); background: transparent; color: var(--muted); }
.btn.ghost:hover { color: var(--text); border-color: var(--muted); }
.btn.active { color: var(--amber); border-color: var(--amber); }

.tabs { display: flex; align-items: center; gap: 6px; padding: 8px 20px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.01); }
.tab { background: transparent; border: 0; color: var(--muted); font-family: var(--font); font-size: 13px; padding: 8px 14px; border-radius: 7px; cursor: pointer; }
.tab:hover { color: var(--text); background: rgba(255,255,255,.04); }
.tab.active { color: var(--accent); background: rgba(56,189,248,.1); }
.spacer { flex: 1; }
.clock { font-size: 12px; color: var(--muted); }

.panel { display: none; padding: 14px 20px 50px; }
.panel.active { display: block; }

.toolbar { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.toolbar.wrap input { flex: 1; min-width: 120px; }
.toolbar input[type=search], .toolbar input[type=text], .toolbar input[type=number], .toolbar select {
  background: var(--panel); border: 1px solid var(--line); border-radius: 7px; color: var(--text);
  font-family: var(--font); font-size: 12.5px; padding: 7px 11px; }
.toolbar input[type=search] { min-width: 280px; }
.toolbar input:focus, .toolbar select:focus { outline: none; border-color: var(--accent); }
.chk { font-size: 12px; color: var(--muted); display: flex; align-items: center; gap: 6px; cursor: pointer; }
.count { font-size: 11px; color: var(--accent); background: rgba(56,189,248,.1); border: 1px solid var(--line); border-radius: 999px; padding: 2px 9px; }
.info { font-size: 12px; color: var(--muted); margin-bottom: 8px; }
.empty { color: var(--muted); text-align: center; padding: 40px; font-size: 13px; }

/* Wire / events list */
.wire-list { font-size: 11.5px; line-height: 1.5; max-height: calc(100vh - 220px); overflow: auto;
  border: 1px solid var(--line); border-radius: 9px; background: #060a10; }
.w { display: grid; grid-template-columns: 84px 70px 42px 1fr auto; gap: 9px; padding: 3px 12px; align-items: baseline;
  border-bottom: 1px solid rgba(29,40,56,.4); cursor: pointer; white-space: nowrap; }
.w:hover { background: rgba(255,255,255,.02); }
.w .wt { color: #46566a; }
.w .wsrc { color: var(--violet); overflow: hidden; text-overflow: ellipsis; }
.w .wc { font-size: 9.5px; text-align: center; border-radius: 4px; padding: 1px 0; border: 1px solid; }
.w .wc.http, .w .wc.nginx { color: var(--violet); border-color: var(--violet); }
.w .wc.ws { color: var(--accent); border-color: var(--accent); }
.w .wc.error, .w .wc.console { color: var(--red); border-color: var(--red); }
.w .wc.telemetry, .w .wc.log { color: var(--muted); border-color: var(--line); }
.w .wmain { overflow: hidden; text-overflow: ellipsis; }
.w .wmain .meth { color: var(--amber); }
.w .wmain .ip { color: var(--muted); }
.w .wstatus { color: var(--muted); font-size: 10.5px; }
.w .wstatus.s2 { color: var(--green); } .w .wstatus.s3 { color: var(--accent); }
.w .wstatus.s4, .w .wstatus.s5 { color: var(--red); }
.w.bad .wmain { color: var(--red); }
.w-detail { grid-column: 1/-1; white-space: pre-wrap; word-break: break-word; background: #0a111b;
  border: 1px solid var(--line); border-radius: 6px; margin: 4px 12px 6px; padding: 8px 10px; color: #9fb3c8; font-size: 11px; }
.w-detail.hidden { display: none; }

/* Sessions grid (réutilise le style de TheQuiz) */
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 14px; }
.card { background: linear-gradient(180deg, var(--panel), #0a111b); border: 1px solid var(--line); border-radius: 11px; overflow: hidden; animation: pop .25s ease; }
@keyframes pop { from { transform: translateY(8px); opacity: 0; } }
.card.offline { opacity: .55; }
.card.flash { box-shadow: 0 0 0 2px var(--accent); }
.card-head { display: flex; align-items: center; gap: 9px; padding: 11px 14px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.015); }
.badge { font-size: 9.5px; padding: 2px 8px; border-radius: 999px; border: 1px solid; text-transform: uppercase; flex: none; }
.badge.online { color: var(--green); border-color: var(--green); } .badge.offline { color: var(--red); border-color: var(--red); }
.badge.src { color: var(--violet); border-color: var(--violet); }
.card-head .who2 { font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.card-head .os { font-size: 10.5px; color: var(--muted); }
.card-head .id { margin-left: auto; font-size: 10px; color: var(--muted); }
.rows { padding: 6px 14px 10px; }
.row { display: grid; grid-template-columns: 110px 1fr; gap: 9px; padding: 4px 0; border-bottom: 1px dashed rgba(29,40,56,.55); font-size: 11.5px; }
.row:last-child { border-bottom: 0; } .row .k { color: var(--muted); } .row .v { word-break: break-word; } .row .v.mono { font-size: 11px; } .row .v.danger { color: var(--red); } .row .v.warn { color: var(--amber); }
.events { padding: 0 14px 8px; }
.events h4 { font-size: 10.5px; color: var(--muted); text-transform: uppercase; letter-spacing: .5px; margin: 6px 0 5px; }
.ev-list { max-height: 150px; overflow: auto; display: flex; flex-direction: column-reverse; gap: 2px; }
.ev { font-size: 11px; color: var(--muted); display: flex; gap: 8px; }
.ev .t { color: #46566a; flex: none; } .ev .n { color: var(--accent); }
.ev.ok .n { color: var(--green); } .ev.bad .n { color: var(--red); }
.card-foot { padding: 9px 14px; border-top: 1px solid var(--line); display: flex; align-items: center; gap: 10px; }
.card-foot .lat { margin-left: auto; font-size: 11px; color: var(--muted); }
.raw { padding: 0 14px 12px; } .raw.hidden { display: none; }
.raw pre { background: #060a10; border: 1px solid var(--line); border-radius: 7px; padding: 9px; font-size: 11px; max-height: 260px; overflow: auto; color: #9fb3c8; margin: 0; }

/* Erreurs */
.err-list { display: flex; flex-direction: column; gap: 8px; }
.eg { background: var(--panel); border: 1px solid var(--line); border-left: 3px solid var(--red); border-radius: 9px; padding: 11px 14px; }
.eg.resolved { border-left-color: var(--green); opacity: .7; } .eg.ignored { border-left-color: var(--muted); opacity: .55; }
.eg .eg-top { display: flex; align-items: baseline; gap: 10px; }
.eg .eg-title { font-size: 13px; color: var(--text); flex: 1; word-break: break-word; }
.eg .eg-count { font-size: 12px; color: var(--red); font-weight: 700; }
.eg .eg-meta { font-size: 11px; color: var(--muted); margin-top: 5px; display: flex; gap: 12px; flex-wrap: wrap; }
.eg .eg-actions { margin-top: 8px; display: flex; gap: 8px; }
.eg .eg-actions button { font-size: 11px; padding: 4px 9px; }
