/* css/09-detection-stream.css — detection stream list.
   Split from the index.html <style> block (REFACTOR-PLAN Phase 2). Load order = cascade order; do not reorder. */
/* ---------- detection stream (left zone, under the card) ---------- */
.streamp{min-height:0}
/* the "DETECTIONS · n" header is gone with wave12: the filter chips already
   name the list and carry the counts. #streamH / #nTotal stay in the DOM,
   a11y-only, because the tablist is aria-labelledby them. */
@keyframes blink{50%{opacity:.25}}
.tabs{display:flex;gap:8px;flex:0 0 auto}
/* wave12: the filter chips are 44 px — the project's own touch floor, and one
   size the whole cockpit shares. (The redesign brief asked for 40 px; 40 is
   below the >=44 px hit target the brief and the harness both hold every other
   control to, so the chips keep 44.) The ACTIVE chip is an accent outline with
   accent text, not a grey fill, so the current filter reads at a glance. */
.tab{flex:1;height:48px;border-radius:12px;background:rgba(255,255,255,.04);border:1px solid var(--hair);
  font-size:var(--fz-body);font-weight:600;color:var(--tx2);display:flex;align-items:center;justify-content:center;gap:6px;
  min-width:0;white-space:nowrap;overflow:hidden;
  transition:background .15s,color .15s,border-color .15s}
.tab b{font-weight:700;color:var(--tx);font-family:var(--mono);font-variant-numeric:tabular-nums}
.tab.on{background:var(--acc-dim);color:var(--acc);border-color:rgba(34,200,130,.55)}
.tab.on b{color:var(--acc)}
.tab.on.pend b,.tab.on.draft b,.tab.on.done b{color:var(--acc)}
.tab.alarm{border-color:rgba(255,159,67,.55);background:rgba(255,159,67,.12);color:#FFC078}
.tab.alarm b{color:#FFC078}
.pileup{flex:0 0 auto;height:44px;border-radius:12px;background:rgba(255,159,67,.14);border:1px solid rgba(255,159,67,.45);color:#FFC078;font-size:var(--fz-body);font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px;backdrop-filter:var(--blur)}
.pileup:active{transform:scale(.99)}
.pileup svg{width:18px;height:18px}
/* wave12: the list no longer scrolls on its own — .dp-body is the panel's one
   scroller, so the expanded card, the Project Officer card and the rows share
   one scroll position and one 12 px rhythm. */
.list{flex:0 0 auto;min-height:0;display:flex;flex-direction:column;gap:12px}
/* wave15: #cardSlot + #list are ONE continuous 12 px feed, so an empty tail
   must not contribute a second gap under the last card */
.list:empty{display:none}
/* revamp 5: THE EMPTY STATE IS GONE -- all of it, including the scanning
   radar box that used to fill this column for the first seven seconds of the
   drive. The client's direction (13 Sep) is that while the vehicle patrols,
   the left side of the screen shows nothing at all: the panel itself goes
   transparent (.dpanel.ghost, css/06) and the map runs edge to edge until a
   detection card arrives. renderList() no longer builds an .empty node, so
   the ~55 lines of scanbox styling that lived here went with it. */

