:root {
  --bg:#0f172a; --card:#1e293b; --card2:#0b1424;
  --text:#e2e8f0; --muted:#94a3b8; --border:#334155;
  --accent:#38bdf8; --pass:#22c55e; --fail:#ef4444;
  --block:#f59e0b; --na:#a78bfa; --open:#64748b;
}
* { box-sizing:border-box; }
html,body { margin:0; background:var(--bg); color:var(--text);
  font:15px/1.45 -apple-system,"Segoe UI",Roboto,sans-serif; }
a { color:var(--accent); text-decoration:none; }
a:hover { text-decoration:underline; }
.wrap { max-width:1320px; margin:0 auto; padding:24px; }
header { display:flex; align-items:baseline; justify-content:space-between; gap:16px;
  margin-bottom:20px; flex-wrap:wrap; }
h1 { font-size:24px; margin:0; }
h1 .release { color:var(--accent); }
.meta-row { display:flex; align-items:center; gap:14px; color:var(--muted); font-size:13px; }
.meta .dot { display:inline-block; width:8px; height:8px; border-radius:50%;
  background:var(--pass); margin-right:6px; vertical-align:middle; }
.meta.stale .dot { background:var(--block); }
.meta.error .dot { background:var(--fail); }
button.btn { background:var(--card); color:var(--text); border:1px solid var(--border);
  border-radius:6px; padding:6px 12px; cursor:pointer; font-size:13px;
  display:inline-flex; align-items:center; gap:6px; }
button.btn:hover { background:var(--card2); border-color:var(--accent); }
button.btn:disabled { opacity:.5; cursor:wait; }
.cards { display:grid; grid-template-columns:1fr; gap:20px; }
@media (min-width:980px) { .cards { grid-template-columns:2fr 1fr; } }
.card { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:20px; }
.card h2 { font-size:15px; text-transform:uppercase; letter-spacing:.05em;
  color:var(--muted); margin:0 0 14px 0; font-weight:600; }
.card h2 .count { color:var(--text); margin-left:8px; }
.pbar { background:var(--card2); border-radius:8px; overflow:hidden; height:28px; position:relative; }
.pbar .seg { height:100%; float:left; transition:width .4s; }
.pbar .seg.pass { background:var(--pass); }
.pbar .seg.fail { background:var(--fail); }
.pbar .seg.block { background:var(--block); }
.pbar .seg.na { background:var(--na); }
.pbar .label { position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-weight:600; text-shadow:0 1px 2px rgba(0,0,0,.5); font-size:14px; }
.legend { display:flex; gap:14px; flex-wrap:wrap; font-size:13px; color:var(--muted); margin-top:10px; }
.legend .key { display:inline-block; width:10px; height:10px; border-radius:2px;
  margin-right:4px; vertical-align:middle; }
.pct { font-size:42px; font-weight:700; line-height:1; }
.pct small { font-size:16px; color:var(--muted); font-weight:400; margin-left:8px; }
.pass-row { display:flex; align-items:center; gap:16px; margin-top:18px; flex-wrap:wrap; }
.pass-row .pctpass { min-width:160px; }
.pass-row .pbar { flex:1; min-width:200px; height:22px; }
summary.section-head { cursor:pointer; list-style:none; margin-top:18px;
  border-top:1px solid var(--border); padding-top:14px; font-weight:600; color:var(--accent); }
summary.section-head::-webkit-details-marker { display:none; }
summary.section-head::before { content:'▸ '; }
details[open] > summary.section-head::before { content:'▾ '; }
details.tester { border:1px solid var(--border); border-radius:8px;
  background:var(--card2); margin-top:8px; }
details.tester > summary { list-style:none; padding:8px 12px; cursor:pointer;
  display:grid; grid-template-columns:minmax(130px,1fr) 3fr auto auto auto; gap:10px; align-items:center; }
details.tester > summary::-webkit-details-marker { display:none; }
details.tester .name { font-weight:600; }
details.tester .caret { color:var(--muted); font-size:12px; }
details.tester[open] .caret { color:var(--accent); }
details.tester .counts { font-size:13px; color:var(--muted); white-space:nowrap; }
details.tester .pbar { height:18px; }
details.tester .pbar .label { font-size:12px; }
.open-items { padding:4px 12px 12px 12px; border-top:1px solid var(--border); }
.open-items .empty { color:var(--muted); font-style:italic; font-size:13px; padding:8px 0; }
.open-items ul { list-style:none; padding:0; margin:0; }
.open-items li { padding:6px 0; border-bottom:1px dashed var(--border);
  display:flex; gap:10px; align-items:flex-start; flex-wrap:wrap; }
.open-items li:last-child { border-bottom:none; }
.open-items .tc { flex:1; min-width:0; }
.open-items .tc-name { font-weight:500; }
.open-items .tc-suite { color:var(--muted); font-size:12px; }
.open-items .bugs { margin-top:4px; display:flex; gap:5px; flex-wrap:wrap; }
.status-badge { font-size:11px; text-transform:uppercase; letter-spacing:.05em;
  padding:2px 8px; border-radius:4px; font-weight:600; white-space:nowrap; }
.status-badge.failed { background:var(--fail); color:white; }
.status-badge.blocked { background:var(--block); color:#0b1424; }
.status-badge.na { background:var(--na); color:white; }
.status-badge.open { background:var(--open); color:white; }
.suite-grid { display:grid; grid-template-columns:1fr; gap:6px; margin-top:10px; }
@media (min-width:700px) { .suite-grid { grid-template-columns:1fr 1fr; } }
.suite-row { display:grid; grid-template-columns:minmax(160px,2fr) 3fr auto;
  gap:10px; align-items:center; padding:4px 0; }
.suite-row .name { font-size:14px; }
.suite-row .counts { color:var(--muted); font-size:12px; white-space:nowrap; }
.suite-row .pbar { height:14px; }
.suite-row .pbar .label { font-size:10px; }
.failed { list-style:none; padding:0; margin:0; }
.failed li { border:1px solid var(--border); border-left:3px solid var(--fail);
  border-radius:8px; padding:10px 12px; margin-bottom:8px; background:var(--card2); }
.failed li.no-bug { border-left-color:var(--block); border-left-width:4px; }
.failed .tc-title { font-weight:600; }
.failed .meta-line { color:var(--muted); font-size:13px; margin-top:2px; }
.failed .bugs { margin-top:6px; display:flex; flex-wrap:wrap; gap:6px; }
.bug-chip { background:var(--bg); border:1px solid var(--border); border-radius:6px;
  padding:3px 8px; font-size:12px; display:inline-flex; align-items:center; gap:6px; }
.state-badge { font-size:11px; text-transform:uppercase; letter-spacing:.05em;
  padding:1px 6px; border-radius:4px; background:var(--open); color:white; font-weight:600; }
.state-badge.active,.state-badge.new,.state-badge.ready,.state-badge.design { background:var(--accent); color:#0b1424; }
.state-badge.resolved,.state-badge.done { background:var(--pass); }
.state-badge.closed { background:var(--open); }
.empty { color:var(--muted); font-style:italic; padding:10px 0; }
.no-bug-warning { display:inline-flex; align-items:center; gap:6px;
  background:#7c2d12; color:#fde68a; padding:3px 10px; border-radius:6px;
  font-size:12px; font-weight:600; margin-top:6px; }
table.bugs { width:100%; border-collapse:collapse; font-size:14px; }
table.bugs th,table.bugs td { text-align:left; padding:6px 8px;
  border-bottom:1px solid var(--border); vertical-align:top; }
table.bugs th { color:var(--muted); font-weight:600; font-size:12px;
  text-transform:uppercase; letter-spacing:.05em; white-space:nowrap; }
table.bugs td.id { white-space:nowrap; font-family:ui-monospace,monospace; }
table.bugs td.title a { font-weight:600; }
table.bugs td.area { color:var(--muted); font-size:13px; white-space:nowrap; }
table.bugs td.assignee { white-space:nowrap; }
.err-banner { background:#7f1d1d; color:white; padding:10px 14px; border-radius:8px;
  margin-bottom:16px; font-size:14px; }
.activity { font-size:11px; padding:3px 9px; border-radius:12px;
  white-space:nowrap; font-weight:600; letter-spacing:.02em; }
.activity-hot { background:rgba(34,197,94,.18); color:#22c55e; border:1px solid rgba(34,197,94,.35); }
.activity-warm { background:rgba(245,158,11,.18); color:#f59e0b; border:1px solid rgba(245,158,11,.35); }
.activity-cold { background:rgba(239,68,68,.18); color:#ef4444; border:1px solid rgba(239,68,68,.35); }
.activity-none { background:rgba(148,163,184,.12); color:#94a3b8; border:1px solid rgba(148,163,184,.25); }
