/* Wildfire pulse — identity tokens on a standalone bundle. */
:root {
  --obsidian: #131211; --raised: #1e1d1b; --hairline: #2e2c29;
  --ash: #94908a; --smoke: #b5b1a8; --text: #eceae5;
  --mirror-300: #5cd6c2; --mirror-500: #00bfa5;
  --ember-400: #e0632b; --ember-600: #bc3a2a; --ochre: #b98a2e;
  --sans: 'IBM Plex Sans', system-ui, sans-serif;
  --mono: 'IBM Plex Mono', ui-monospace, monospace;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--obsidian); color: var(--text);
  font-family: var(--sans); font-size: 14px; }
.app { display: flex; height: 100vh; }
.sidebar { flex: 0 0 300px; overflow-y: auto; padding: 16px;
  border-right: 1px solid var(--hairline);
  display: flex; flex-direction: column; gap: 14px; }
.main { flex: 1; overflow-y: auto; display: flex; flex-direction: column; }
#map { flex: 0 0 52vh; min-height: 320px; background: var(--obsidian); }
.block { padding: 16px 20px; border-top: 1px solid var(--hairline); }
.kicker { font-size: 11px; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase; color: var(--mirror-300); margin: 0 0 6px; }
h1 { font-size: 17px; font-weight: 600; margin: 0 0 8px; }
h2 { font-size: 11px; font-weight: 600; letter-spacing: .1em;
  text-transform: uppercase; color: var(--ash); margin: 0 0 10px; }
.freshness { font-size: 12px; color: var(--smoke); margin: 0; line-height: 1.5; }
.banner { font-size: 12px; font-weight: 600; color: var(--ember-400);
  border: 1px solid var(--ember-600); border-radius: 4px; padding: 8px 10px;
  margin: 10px 0 0; line-height: 1.45; }
.panel { background: var(--raised); border: 1px solid var(--hairline);
  border-radius: 6px; padding: 12px; }
.panel label { display: block; font-size: 12px; color: var(--smoke); margin-bottom: 8px; }
.panel select { display: block; width: 100%; margin-top: 4px; font: inherit;
  background: var(--obsidian); color: var(--text);
  border: 1px solid var(--hairline); border-radius: 4px; padding: 6px 8px; }
.cards { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.card { background: var(--raised); border: 1px solid var(--hairline);
  border-radius: 6px; padding: 10px 12px; }
.card .num { font-family: var(--mono); font-size: 19px; font-weight: 500; margin: 0; }
.card .label { font-size: 11px; color: var(--ash); margin: 4px 0 0; }
.alerts { list-style: none; margin: 0; padding: 0; font-size: 12px;
  color: var(--smoke); }
.alerts li { border-left: 3px solid var(--ember-600); padding: 4px 8px;
  margin-bottom: 6px; background: rgba(188,58,42,.08); }
.legend-row { display: flex; align-items: center; gap: 8px; font-size: 12px;
  color: var(--smoke); margin: 0 0 6px; }
.dot { width: 10px; height: 10px; border-radius: 50%; }
.conf-h { background: var(--ember-600); } .conf-n { background: var(--ember-400); }
.conf-l { background: var(--ochre); }
.ring { width: 10px; height: 10px; border-radius: 50%;
  border: 2px solid var(--mirror-500); }
.chorobox { width: 14px; height: 10px; background: rgba(0,191,165,.35);
  border: 1px solid var(--mirror-500); border-radius: 2px; }
.legend-note { font-size: 11px; color: var(--ash); margin: 8px 0 0; }
.limitations summary { cursor: pointer; font-size: 12px; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase; color: var(--ember-400); }
.limitations ul { margin: 8px 0 0; padding-left: 18px; font-size: 12px;
  line-height: 1.55; color: var(--smoke); }
.limitations li { margin-bottom: 6px; }
.downloads a { display: inline-block; margin: 0 8px 4px 0; padding: 6px 10px;
  color: var(--mirror-300); font-size: 12px; font-weight: 500;
  border: 1px solid var(--mirror-300); border-radius: 4px; text-decoration: none; }
.downloads a:hover { color: var(--mirror-500); border-color: var(--mirror-500); }
.impact-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 10px; }
.impact-card { background: var(--raised); border: 1px solid var(--hairline);
  border-radius: 6px; padding: 12px; }
.impact-card.vuln { border-color: var(--ember-600); }
.impact-card h3 { font-size: 14px; font-weight: 600; margin: 0 0 6px; }
.impact-card p { font-size: 12px; color: var(--smoke); margin: 0 0 4px;
  font-family: var(--mono); }
.badge { display: inline-block; font-size: 11px; font-weight: 500;
  padding: 1px 7px; border-radius: 4px; background: rgba(185,138,46,.2);
  color: var(--ochre); margin-left: 6px; }
.badge.vuln { background: rgba(188,58,42,.15); color: var(--ember-400); }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
th { font-size: 11px; font-weight: 600; letter-spacing: .08em;
  text-transform: uppercase; color: var(--smoke); text-align: left;
  padding: 8px; border-bottom: 1px solid var(--hairline); cursor: pointer;
  user-select: none; white-space: nowrap; }
th:hover { color: var(--mirror-300); }
td { padding: 8px; border-bottom: 1px solid var(--hairline); }
td.num, th.num { text-align: right; font-family: var(--mono);
  font-variant-numeric: tabular-nums; }
.charts { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 14px; }
.charts > div { background: var(--raised); border: 1px solid var(--hairline);
  border-radius: 6px; min-height: 240px; }
.leaflet-popup-content-wrapper, .leaflet-popup-tip { background: var(--raised);
  color: var(--text); border: 1px solid var(--hairline); }
.popup-title { font-weight: 600; margin: 0 0 4px; }
.popup-meta { font-family: var(--mono); font-size: 11px; color: var(--ash); margin: 0; }
@media (max-width: 820px) {
  .app { flex-direction: column; height: auto; }
  .sidebar { flex: none; border-right: none;
    border-bottom: 1px solid var(--hairline); }
  #map { height: 50vh; }
}

/* ---- cyber-intelligence legend + table additions ---- */
.dot.crit { background: #bc3a2a; } .dot.high { background: #e0632b; }
.dot.kev { background: #b98a2e; }
.bubble { width: 12px; height: 12px; border-radius: 50%;
  background: rgba(0,191,165,.35); border: 1px solid var(--mirror-500); }
.rows { list-style: none; margin: 0; padding: 0; font-size: 12px; }
.rows li { display: flex; justify-content: space-between; padding: 4px 0;
  border-bottom: 1px solid var(--hairline); color: var(--smoke); }
.rows .count { font-family: var(--mono); color: var(--text); }
.sub { font-weight: 400; text-transform: none; letter-spacing: 0;
  color: var(--ash); font-size: 11px; }
.tag-rw { color: var(--ember-400); font-weight: 500; }
td.desc { color: var(--smoke); font-size: 12px; }
