/* Client-RX coverage styles (fork-only feature). Kept in a DEDICATED file —
   separate from node-reach.css — so upstream's periodic node-reach.css rewrites
   don't drop the coverage tier colours + leaderboard layout (as happened in the
   v3.9.0 merge). Consumed by rx-coverage.js (standalone Coverage dashboard) and,
   once re-grafted, the per-node Reach page coverage overlay. */

/* RX coverage hex layer (mobile client receptions) */
:root {
  --nq-cov-strong: #2ecc71; /* SF8: SNR ≥ −5 dB  (good margin) */
  --nq-cov-mid: #e67e22;    /* SF8: −9..−5 dB    (near the limit) */
  --nq-cov-weak: #e74c3c;   /* SF8: < −9 dB      (poor, packet loss likely) */
  --nq-cov-grey: #95a5a6;   /* heard, no SNR metric */
}
/* Dark-theme variants: the saturated mid-luminance defaults glare on dark
   basemaps. Mirrors the rest of the dashboard's theme-aware tokens (#polish). */
[data-theme="dark"] {
  --nq-cov-strong: #3fb950;
  --nq-cov-mid: #d29922;
  --nq-cov-weak: #f85149;
  --nq-cov-grey: #8b949e;
}
.nq-cov-legend { display:flex; gap:12px; align-items:center; font-size:11px; color:var(--text-muted, #57606a); margin:4px 0 10px; }
/* Toggled by node-reach.js applyCoverage via class, not inline style, so CSS
   (print rules, themes) can still override visibility (#19). */
.nq-cov-legend.is-hidden { display:none !important; }
.nq-cov-legend i { width:12px; height:12px; border-radius:2px; display:inline-block; margin-right:4px; vertical-align:middle; }

/* Mobile RX coverage hub — leaderboard */
.rxb { display:flex; flex-direction:column; gap:3px; }
.rxb-row { display:flex; align-items:center; gap:10px; padding:7px 10px; background:var(--section-bg, #f6f8fa); border:1px solid var(--border, #d0d7de); border-radius:6px; font-size:13px; cursor:pointer; }
.rxb-row.rxb-head { font-size:10px; text-transform:uppercase; color:var(--text-muted, #57606a); cursor:default; }
.rxb-row.sel { outline:2px solid var(--accent, #2ecc71); }
/* Visible keyboard focus for the now-focusable (#polish) leaderboard rows. */
.rxb-row[data-rx]:focus-visible { outline:2px solid var(--link, #0969da); outline-offset:1px; }
.rxb-rank { width:24px; text-align:right; color:var(--text-muted, #57606a); }
.rxb-name { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rxb-rec, .rxb-nodes, .rxb-cells, .rxb-score { width:56px; text-align:right; font-variant-numeric:tabular-nums; }
/* Sortable column headers in the leaderboard head row. */
.rxb-head .rxb-sort { cursor:pointer; user-select:none; }
.rxb-head .rxb-sort:hover { color:var(--link, #0969da); }
.rxb-head .rxb-sort:focus-visible { outline:2px solid var(--link, #0969da); outline-offset:1px; }
