/* ============================================================
   CYRBER GUI v5 · ZAGROŻENIA (Sprint 2)
   List (30%) + detail with 5 tabs (70%)
   Inherits tokens + nav/statusbar/agent-bar from base-v5.css
   and reuses .missions-filter / .mf-* for the filter bar.
   ============================================================ */

/* Respect [hidden] even on flex/grid containers — otherwise a display: flex
   declaration wins over the browser's default [hidden]{display:none}. */
[hidden] { display: none !important; }

/* ── Page shell ─────────────────────────────────────────────── */

.threats-main {
  max-width: var(--page-max);
  width: 100%;
  margin: 0 auto;
  padding: clamp(16px, 2vh, 28px) var(--page-pad-x) clamp(88px, 10vh, 140px);
  animation: v5-fade-in 240ms ease both;
}

/* ── Header title + counter + filter bar ───────────────────── */

.threats-header { margin-bottom: 16px; }

.threats-title-row {
  display: flex;
  align-items: baseline;
  gap: 18px;
  margin-bottom: 14px;
}
.threats-title {
  font-family: 'Unbounded', sans-serif;
  font-weight: 500;
  font-size: clamp(20px, 1.8vw, 28px);
  letter-spacing: var(--ls-heading);
  text-transform: uppercase;
  margin: 0;
}
.threats-counter {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-body-small);
  color: var(--fg-secondary);
  letter-spacing: 0.06em;
}
.threats-counter strong {
  color: var(--fg-primary);
  font-weight: 500;
  font-family: 'Unbounded', sans-serif;
}

/* Filter bar — reuses .missions-filter from missions-v5.css but we
   provide a copy so threats.html doesn't depend on loading that file. */
.missions-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 10px;
  align-items: center;
}
.mf-group {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 30px;
  padding: 0 8px;
  border-radius: 4px;
  background: transparent;
  box-shadow: inset 0 0 0 1px var(--border-subtle);
  transition: box-shadow 120ms ease, background 120ms ease;
}
.mf-group:hover {
  background: var(--bg-elevated);
  box-shadow: inset 0 0 0 1px var(--border-default);
}
.mf-group-wide { min-width: 240px; flex: 1 1 240px; }
.mf-label {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg-tertiary);
  white-space: nowrap;
}
.mf-select,
.mf-input {
  font-family: 'Inter', sans-serif;
  font-size: var(--font-body-small);
  color: var(--fg-primary);
  background: transparent;
  min-width: 80px;
  outline: 0;
  appearance: none;
  -webkit-appearance: none;
}
.mf-select { padding-right: 14px; cursor: pointer; }
.mf-input { min-width: 140px; width: 100%; }
.mf-input::placeholder { color: var(--fg-tertiary); }

/* #4114: pole w grupie filtra bez własnego pierścienia. Globalna reguła a11y
   z base-v5.css (input:not([type="hidden"]):focus-visible) rysowała drugą,
   białą kapsułę wewnątrz ramki. Fokus pokazuje cała grupa (:focus-within),
   więc z klawiatury dalej go widać. Ten sam wzór co #2961 (pole agenta). */
.mf-group .mf-input:not([type="hidden"]):focus,
.mf-group .mf-input:not([type="hidden"]):focus-visible {
  outline: none;
  box-shadow: none;
}
.mf-group:focus-within {
  background: var(--bg-elevated);
  box-shadow:
    inset 0 0 0 1px var(--border-strong),
    0 0 0 3px color-mix(in oklab, var(--accent-signal, #e4e8e9) 14%, transparent);
}
.mf-reset {
  margin-left: auto;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-body-small);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--fg-tertiary);
  padding: 6px 10px;
  border-radius: 4px;
  box-shadow: inset 0 0 0 1px var(--border-subtle);
  transition: color 120ms ease, box-shadow 120ms ease;
}
.mf-reset:hover {
  color: var(--fg-primary);
  box-shadow: inset 0 0 0 1px var(--border-strong);
}
.mf-export { display: inline-flex; gap: 6px; }
.mf-export .mf-reset { margin-left: 0; }

/* ── AURUM context bar (slide-in) ─────────────────────────── */

.aurum-bar {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  background: var(--bg-elevated);
  box-shadow: inset 0 -1px 0 var(--border-subtle);
  transition: max-height 200ms ease-out, opacity 200ms ease-out, margin 200ms ease-out;
  margin-bottom: 0;
}
.aurum-bar:not([hidden]) {
  max-height: 48px;
  opacity: 1;
  margin-bottom: 12px;
}
.aurum-bar-inner {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 14px;
  padding: 12px 14px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-body-small);
  color: var(--fg-secondary);
  letter-spacing: 0.04em;
}
.ab-kpi strong { color: var(--fg-primary); font-weight: 500; }
.ab-sep { color: var(--fg-tertiary); }
.ab-eur { color: var(--fg-primary); }
.ab-head { padding: 0 2px; }
.ab-head.ab-ratio  { color: var(--accent-ratio); }
.ab-head.ab-animus { color: var(--accent-animus); }
.ab-head.ab-fatum  { color: var(--accent-fatum); }
.ab-daily { color: var(--accent-fatum); }

/* MEDICUS telemetry strip (#1471 fix) — panel G-P3, nie surowy debug-wiersz */
.medicus-bar {
  margin: 0 0 12px;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg, 12px);
  background: var(--bg-panel);
}
.medicus-bar .ab-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 18px;
  padding: 12px 16px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-body-small);
  letter-spacing: 0.04em;
  color: var(--fg-secondary);
}
.medicus-bar .mb-tag {
  font-family: 'Unbounded', sans-serif;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: var(--ls-heading, 0.16em);
  text-transform: uppercase;
  color: var(--accent-signal);
  padding: 3px 9px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--accent-signal) 10%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent-signal) 30%, transparent);
}
.medicus-bar .ab-kpi { white-space: nowrap; }
.medicus-bar .ab-kpi.muted { color: var(--fg-tertiary); }
/* #3080 PR-C1: brama MEDICUS blocker-first. Gdy aktywna naprawa jest wyłączona
   (LEX) lub brak klucza SSH (vault), operator widzi to na pasku, nie dopiero w
   karcie. Ton ostrzegawczy, nie krytyczny: to stan konfiguracji, nie awaria. */
.medicus-bar .mb-gate {
  font-size: 12px;
  color: var(--accent-warning);
  padding: 3px 10px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--accent-warning) 12%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent-warning) 32%, transparent);
}

/* #1406: szczegóły ops chowane pod toggle — pierwszy rząd zostaje czytelny */
.mb-toggle {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border: 1px solid var(--border-default);
  border-radius: 999px;
  background: transparent;
  color: var(--fg-tertiary);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-microlabel);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  cursor: pointer;
  transition: color 150ms ease, border-color 150ms ease;
}
.mb-toggle:hover { color: var(--fg-primary); border-color: var(--border-strong); }
.mb-toggle-arrow { color: var(--fg-tertiary); }
.mb-details {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px 28px;
  padding: 14px 16px 16px;
  border-top: 1px solid var(--border-subtle);
}
.mb-details[hidden] { display: none; }
.mb-detail-title {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-microlabel);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  color: var(--fg-tertiary);
  margin-bottom: 8px;
}
.mb-path {
  display: grid;
  grid-template-columns: 3ch 1fr 64px;
  align-items: center;
  gap: 10px;
  padding: 3px 0;
  font-size: var(--font-body-small);
  color: var(--fg-secondary);
}
.mb-path-n {
  font-family: 'Inter', system-ui, sans-serif;
  color: var(--fg-primary);
  text-align: right;
}
.mb-path-meter {
  height: 3px;
  border-radius: 2px;
  background: var(--border-subtle);
  overflow: hidden;
}
.mb-path-fill {
  display: block;
  height: 100%;
  background: var(--fg-dimmed);
  transition: width 520ms cubic-bezier(.22, .61, .36, 1);
}
.mb-path--ok .mb-path-fill    { background: var(--sev-ok, #5fa07f); }
.mb-path--warn .mb-path-fill  { background: var(--sev-high); }
.mb-path--muted .mb-path-lbl  { color: var(--fg-tertiary); }
.mb-window { display: flex; flex-wrap: wrap; gap: 6px 20px; }
.mb-win-item {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  font-size: var(--font-body-small);
  color: var(--fg-tertiary);
}
.mb-win-item strong {
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 500;
  color: var(--fg-primary);
}
@media (prefers-reduced-motion: reduce) { .mb-path-fill { transition: none; } }

/* ── Split 30/70 ──────────────────────────────────────────── */

.threats-split {
  display: grid;
  grid-template-columns: minmax(320px, 30%) 1fr;
  gap: 14px;
  min-height: clamp(480px, 62vh, 820px);
}

/* ── LEFT — list ──────────────────────────────────────────── */

.threats-list {
  background: var(--bg-panel);
  border-radius: var(--radius-md);
  box-shadow: inset 0 0 0 1px var(--border-subtle);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.tl-empty {
  padding: 24px;
  text-align: center;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-body-small);
  color: var(--fg-tertiary);
}
.tl-scroll {
  overflow-y: auto;
  flex: 1 1 auto;
  max-height: clamp(480px, 62vh, 820px);
}
.tl-card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: clamp(10px, 1vw, 14px);
  box-shadow: inset 0 -1px 0 var(--border-subtle), inset 3px 0 0 var(--fg-dimmed);
  cursor: pointer;
  transition: background 120ms ease, box-shadow 120ms ease;
}
.tl-card:hover { background: var(--bg-elevated); }
.tl-card--critical { box-shadow: inset 0 -1px 0 var(--border-subtle), inset 3px 0 0 var(--accent-critical); }
.tl-card--high     { box-shadow: inset 0 -1px 0 var(--border-subtle), inset 3px 0 0 var(--accent-high); }
.tl-card--medium   { box-shadow: inset 0 -1px 0 var(--border-subtle), inset 3px 0 0 var(--accent-warning); }
.tl-card--low      { box-shadow: inset 0 -1px 0 var(--border-subtle), inset 3px 0 0 var(--fg-secondary); }
.tl-card--info     { box-shadow: inset 0 -1px 0 var(--border-subtle), inset 3px 0 0 var(--fg-dimmed); }
.tl-card--active {
  /* G-P3: teal = żywy sygnał (zaznaczenie), blue→teal flip */
  background: color-mix(in srgb, var(--accent-signal) 5%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent-signal) 30%, transparent),
              0 0 12px color-mix(in srgb, var(--accent-signal) 10%, transparent),
              inset 3px 0 0 currentColor;
}
.tl-card-row1 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
/* #1771 chip trafności affects_you - ruch przez trafność, nie dekorację */
.tl-relev {
  margin-left: auto;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: 0.06em;
  padding: 1px 6px;
  border-radius: 3px;
  white-space: nowrap;
}
.tl-relev[data-relev="active"]   { color: var(--accent-critical); border: 1px solid color-mix(in srgb, var(--accent-critical) 40%, transparent); }
.tl-relev[data-relev="probable"] { color: var(--accent-signal);   border: 1px solid color-mix(in srgb, var(--accent-signal) 40%, transparent); }
.tl-relev.degraded { color: var(--fg-tertiary); border: 1px solid transparent; opacity: 0.7; }
/* #1776 sparkline przepustowości MEDICUS (ruch nad kolejką) */
.mb-spark {
  --vital-color: var(--accent-signal);
  display: inline-flex; gap: 3px; align-items: flex-end;
  height: 18px; margin-left: 4px;
}
.mb-spark .spark-bar {
  width: 4px; background: rgba(var(--ink-rgb, 255, 255, 255), 0.15); border-radius: 1px;
  transition: height 420ms cubic-bezier(.22, .61, .36, 1), background 200ms ease;
}
.mb-spark .spark-bar.today {
  background: var(--vital-color);
  animation: mbSparkPulse 2.8s ease-in-out infinite;
}
@keyframes mbSparkPulse {
  0%, 100% { box-shadow: none; opacity: 0.82; }
  50%      { box-shadow: 0 0 6px -1px var(--vital-color); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) { .mb-spark .spark-bar.today { animation: none; } }
.tl-cve {
  font-family: 'JetBrains Mono', monospace;
  font-size: var(--font-body-small);
  color: var(--fg-primary);
  letter-spacing: 0.04em;
}
.tl-name {
  font-family: 'Inter', sans-serif;
  font-size: var(--font-body);
  color: var(--fg-secondary);
  line-height: 1.3;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.tl-meta {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  color: var(--fg-tertiary);
  letter-spacing: 0.04em;
}

/* Badges — reused by list + detail header */
.badge {
  display: inline-flex;
  align-items: center;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 2px 6px;
  border-radius: 2px;
  background: rgba(var(--ink-rgb, 255, 255, 255), 0.04);
}
.badge-sev-critical { background: rgba(239, 68, 68, 0.14);  color: var(--accent-critical); }
.badge-sev-high     { background: rgba(249, 115, 22, 0.14); color: var(--accent-high); }
.badge-sev-medium   { background: rgba(240, 180, 41, 0.14); color: var(--accent-warning); }
.badge-sev-low      { background: rgba(var(--ink-rgb, 255, 255, 255), 0.06); color: var(--fg-secondary); }
.badge-sev-info     { background: rgba(var(--ink-rgb, 255, 255, 255), 0.03); color: var(--fg-tertiary); }
.badge-head-ratio   { background: color-mix(in srgb, var(--accent-ratio) 14%, transparent); color: var(--accent-ratio); }
.badge-head-animus  { background: rgba(255, 99, 99, 0.10);  color: var(--accent-animus); }
.badge-head-fatum   { background: rgba(188, 140, 255, 0.10); color: var(--accent-fatum); }
.badge-status-open           { background: rgba(var(--ink-rgb, 255, 255, 255), 0.04); color: var(--fg-secondary); }
.badge-status-assigned       { background: rgba(240, 180, 41, 0.14); color: var(--accent-warning); }
.badge-status-accepted       { background: rgba(249, 115, 22, 0.14); color: var(--accent-high); }
.badge-status-false_positive { background: rgba(var(--ink-rgb, 255, 255, 255), 0.04); color: var(--fg-tertiary); text-decoration: line-through; }
.badge-status-remediated     { background: rgba(95, 160, 127, 0.14);  color: var(--sev-ok, #5fa07f); }

/* ── RIGHT — detail ───────────────────────────────────────── */

.threat-detail {
  background: var(--bg-panel);
  border-radius: var(--radius-md);
  box-shadow: inset 0 0 0 1px var(--border-subtle);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.td-placeholder {
  padding: 80px 24px;
  text-align: center;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-body-small);
  color: var(--fg-tertiary);
  letter-spacing: 0.06em;
}

.td-header {
  padding: 14px 20px;
  box-shadow: inset 0 -1px 0 var(--border-subtle);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.td-head-row-1 { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.td-title {
  margin: 0;
  font-family: 'Unbounded', sans-serif;
  font-weight: 500;
  font-size: clamp(14px, 1.2vw, 18px);
  letter-spacing: 0.08em;
  color: var(--fg-primary);
}
.td-cve {
  color: var(--fg-secondary);
  font-size: var(--font-body-small);
  letter-spacing: 0.04em;
}
.td-head-row-2 {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.td-badge { font-size: 11px; letter-spacing: 0.1em; padding: 3px 7px; border-radius: 2px; text-transform: uppercase; font-family: 'Inter', system-ui, sans-serif; }
.td-meta {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-body-small);
  color: var(--fg-tertiary);
  letter-spacing: 0.04em;
}

/* Tabs */
.td-tabs {
  display: flex;
  gap: 2px;
  padding: 0 16px;
  box-shadow: inset 0 -1px 0 var(--border-subtle);
  overflow-x: auto;
}
.td-tab {
  position: relative;
  padding: 12px 14px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-body-small);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg-tertiary);
  transition: color 140ms ease;
  white-space: nowrap;
}
.td-tab:hover { color: var(--fg-secondary); }
.td-tab.active { color: var(--fg-primary); }
.td-tab.active::after {
  content: '';
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: -1px;
  height: 2px;
  background: var(--accent-animus);
}

/* Panels */
.td-body { flex: 1 1 auto; overflow-y: auto; }
.td-panel { display: none; padding: 20px; animation: v5-fade-in 200ms ease; }
.td-panel--active { display: block; }

/* Overview panel grids */
.td-grid-3 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin: 14px 0;
}
.td-stat {
  background: var(--bg-elevated);
  border-radius: var(--radius-sm);
  padding: 12px;
  box-shadow: inset 0 0 0 1px var(--border-subtle);
}
.td-stat-label {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg-tertiary);
  margin-bottom: 4px;
}
.td-stat-value {
  font-family: 'Unbounded', sans-serif;
  font-size: var(--font-number); font-variant-numeric: tabular-nums;
  color: var(--fg-primary);
  line-height: 1.1;
}
.td-stat-sub {
  margin-top: 2px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  color: var(--fg-secondary);
}
.td-section-label {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg-tertiary);
  margin: 20px 0 8px;
}
.td-desc {
  font-family: 'Inter', sans-serif;
  font-size: var(--font-body);
  color: var(--fg-secondary);
  line-height: 1.55;
  white-space: pre-wrap;
}
.td-host-list { display: flex; flex-direction: column; gap: 6px; }
.td-host-item {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-body-small);
  padding: 6px 10px;
  background: var(--bg-elevated);
  border-radius: var(--radius-xs);
  box-shadow: inset 0 0 0 1px var(--border-subtle);
}

/* Remediation tab — 4 action buttons */
.td-actions {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px;
  margin-bottom: 18px;
}
.td-action-btn {
  padding: 14px;
  text-align: left;
  background: var(--bg-elevated);
  border-radius: var(--radius-sm);
  box-shadow: inset 0 0 0 1px var(--border-subtle);
  transition: background 140ms ease, box-shadow 140ms ease;
  font-family: 'Inter', sans-serif;
  color: var(--fg-primary);
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.td-action-btn:hover:not(:disabled) {
  background: var(--bg-interactive);
  box-shadow: inset 0 0 0 1px var(--border-strong);
}
.td-action-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.td-action-btn-primary {
  background: rgba(188, 140, 255, 0.10);
  box-shadow: inset 0 0 0 1px rgba(188, 140, 255, 0.3);
}
.td-action-btn-primary:hover:not(:disabled) {
  background: rgba(188, 140, 255, 0.16);
  box-shadow: inset 0 0 0 1px rgba(188, 140, 255, 0.5);
}
/* #1776: brak gotowej receptury → MEDICUS ją wymyśli. Bursztynowy akcent RYZYKA
   (klikalny, nie wygaszony) - jawnie sygnalizuje "wygeneruje + wymaga zgody". */
.td-action-btn.risk {
  background: rgba(249, 115, 22, 0.08);
  box-shadow: inset 0 0 0 1px rgba(249, 115, 22, 0.35);
}
.td-action-btn.risk:hover:not(:disabled) {
  background: rgba(249, 115, 22, 0.14);
  box-shadow: inset 0 0 0 1px rgba(249, 115, 22, 0.55);
}
.td-action-btn.risk .td-action-label { color: var(--accent-high); }
.td-action-label {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg-tertiary);
}
.td-action-title {
  font-family: 'Unbounded', sans-serif;
  font-size: var(--font-body-plus);
  letter-spacing: 0.06em;
}
.td-action-desc {
  font-size: var(--font-body-small);
  color: var(--fg-secondary);
  line-height: 1.35;
}

/* Evidence + History timelines */
.td-timeline { display: flex; flex-direction: column; gap: 10px; }
.td-event {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 12px;
  padding: 10px 12px;
  background: var(--bg-elevated);
  border-radius: var(--radius-sm);
  box-shadow: inset 0 0 0 1px var(--border-subtle);
}
.td-event-ts {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--fg-tertiary);
}
.td-event-body {}
.td-event-kind {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg-primary);
  margin-right: 8px;
}
.td-event-actor { font-size: var(--font-body-small); color: var(--fg-secondary); }
.td-event-summary { font-size: var(--font-body-small); color: var(--fg-secondary); margin-top: 3px; }

/* Evidence tab — scan diagnostics block */
.td-raw-block {
  background: var(--bg-elevated);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 10px 12px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  line-height: 1.6;
  color: var(--fg-secondary);
  white-space: pre-wrap;
  word-break: break-word;
  margin: 4px 0 12px 0;
  max-height: 280px;
  overflow-y: auto;
}

/* Compliance tab */
.td-framework {
  background: var(--bg-elevated);
  border-radius: var(--radius-sm);
  box-shadow: inset 0 0 0 1px var(--border-subtle);
  margin-bottom: 10px;
}
.td-framework-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 12px 14px;
  cursor: pointer;
}
.td-framework-name {
  font-family: 'Unbounded', sans-serif;
  letter-spacing: 0.08em;
  font-size: var(--font-body-plus);
  color: var(--fg-primary);
}
.td-framework-meta { font-size: var(--font-body-small); color: var(--fg-tertiary); font-family: 'Inter', system-ui, sans-serif; }
.td-framework-body {
  padding: 0 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.td-framework.collapsed .td-framework-body { display: none; }
.td-control {
  padding: 8px 10px;
  background: var(--bg-panel);
  border-radius: var(--radius-xs);
  font-size: var(--font-body-small);
  color: var(--fg-secondary);
}
.td-control-ref {
  font-family: 'Inter', system-ui, sans-serif;
  color: var(--fg-primary);
  letter-spacing: 0.04em;
  margin-right: 6px;
}

/* ── Modals ───────────────────────────────────────────────── */

.th-scrim {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  z-index: 90;
  animation: v5-fade-in 160ms ease both;
}
.th-modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(520px, calc(100vw - 32px));
  max-height: calc(100vh - 80px);
  overflow-y: auto;
  background: var(--bg-panel);
  border-radius: var(--radius-md);
  box-shadow: 0 12px 40px rgba(var(--shade-rgb, 0, 0, 0), 0.6), inset 0 0 0 1px var(--border-default);
  z-index: 100;
  display: none;
  flex-direction: column;
  animation: v5-fade-in 200ms ease;
}
.th-modal[aria-hidden="false"] { display: flex; }
.thm-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  box-shadow: inset 0 -1px 0 var(--border-subtle);
}
.thm-title {
  font-family: 'Unbounded', sans-serif;
  font-size: var(--font-body-plus);
  letter-spacing: 0.08em;
  margin: 0;
  color: var(--fg-primary);
}
.thm-close { font-family: 'Inter', system-ui, sans-serif; color: var(--fg-tertiary); padding: 4px 8px; border-radius: 4px; transition: color 120ms ease; }
.thm-close:hover { color: var(--fg-primary); }
.thm-body { padding: 16px 18px; display: flex; flex-direction: column; gap: 12px; }
.thm-field { display: flex; flex-direction: column; gap: 4px; }
.thm-field-label {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg-tertiary);
}
.thm-field-input,
.thm-field-select,
.thm-field-textarea {
  font-family: 'Inter', sans-serif;
  font-size: var(--font-body);
  color: var(--fg-primary);
  padding: 8px 10px;
  background: var(--bg-elevated);
  border-radius: var(--radius-xs);
  box-shadow: inset 0 0 0 1px var(--border-subtle);
  outline: 0;
  resize: vertical;
}
.thm-field-textarea { min-height: 96px; }
.thm-field-hint {
  font-size: 11px;
  color: var(--fg-tertiary);
  font-family: 'Inter', system-ui, sans-serif;
}
.thm-field-error {
  font-size: 11px;
  color: var(--accent-animus);
  font-family: 'Inter', system-ui, sans-serif;
}
.thm-foot {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 12px 18px;
  box-shadow: inset 0 1px 0 var(--border-subtle);
}
.thm-btn {
  padding: 8px 14px;
  border-radius: var(--radius-xs);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: var(--font-body-small);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  transition: background 120ms ease, box-shadow 120ms ease;
}
.thm-btn-ghost {
  color: var(--fg-secondary);
  box-shadow: inset 0 0 0 1px var(--border-subtle);
}
.thm-btn-ghost:hover { color: var(--fg-primary); box-shadow: inset 0 0 0 1px var(--border-strong); }
.thm-btn-primary {
  /* G-P3: teal-puls = akcja żywa, blue→teal flip */
  background: color-mix(in srgb, var(--accent-signal) 14%, transparent);
  color: var(--accent-signal);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent-signal) 42%, transparent);
}
.thm-btn-primary:hover { background: color-mix(in srgb, var(--accent-signal) 22%, transparent); }
.thm-btn-danger {
  background: rgba(239, 68, 68, 0.12);
  color: var(--accent-critical);
  box-shadow: inset 0 0 0 1px rgba(239, 68, 68, 0.4);
}
.thm-btn-danger:hover { background: rgba(239, 68, 68, 0.20); }

/* ── Responsive fallback (narrow viewports) ──────────────── */

@media (max-width: 900px) {
  .threats-split { grid-template-columns: 1fr; }
  .threats-list { max-height: 320px; }
  .threats-list .tl-scroll { max-height: 280px; }
  .mf-group-wide { min-width: 100%; flex-basis: 100%; }
}

/* FORUM-gated remediation approval (#724) */
.td-appr-box { margin: 12px 0; padding: 12px 14px; border-radius: 8px; border: 1px solid var(--border-strong); background: rgba(var(--ink-rgb, 255, 255, 255), .02); }
.td-appr-pending { border-color: rgba(210,153,34,.4); background: rgba(210,153,34,.06); }
.td-appr-approved { border-color: rgba(95, 160, 127,.35); background: rgba(95, 160, 127,.06); }
.td-appr-rejected { border-color: rgba(248,81,73,.35); background: rgba(248,81,73,.06); }
.td-appr-badge { font-size: 12px; font-weight: 700; letter-spacing: .04em; }
.td-appr-pending .td-appr-badge { color: var(--accent-gold, #c9a23f); }
.td-appr-approved .td-appr-badge { color: var(--accent-live); }
.td-appr-rejected .td-appr-badge { color: var(--accent-animus); }
.td-appr-note { font-size: 12px; color: var(--fg-tertiary); margin-top: 6px; }
.td-appr-link { display: inline-block; margin-top: 8px; font-size: 12px; color: var(--accent-signal); text-decoration: underline dotted; }
.td-appr-btnbar { display: flex; gap: 8px; margin-top: 12px; }
.td-appr-btnbar .td-action-btn { flex: 0 0 auto; padding: 8px 16px; }

/* Retest-driven auto-rollback (#732 PR-2): rolled_back = organism self-corrected
   (neutral/info), failed = host may be stuck (alert). */
/* G-P3: rolled_back = organizm sam się poprawił → teal-puls (żywy sygnał) */
.td-rb-rolled_back { border-color: color-mix(in srgb, var(--accent-signal) 35%, transparent); background: color-mix(in srgb, var(--accent-signal) 8%, transparent); }
.td-rb-failed { border-color: rgba(248,81,73,.4); background: rgba(248,81,73,.08); }
.td-rb-rolled_back .td-appr-badge { color: var(--accent-signal); }
.td-rb-failed .td-appr-badge { color: var(--accent-animus); }

/* MEDICUS failure: clear info, not raw exception dump */
.td-rem-help {
  margin-top: 8px;
  padding: 14px 16px;
  border-radius: 8px;
  border: 1px solid rgba(210, 153, 34, 0.35);
  background: rgba(210, 153, 34, 0.06);
}
.td-rem-help-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--accent-gold, #c9a23f);
  margin-bottom: 8px;
}
.td-rem-help-body {
  font-size: 13px;
  line-height: 1.45;
  color: var(--fg-primary);
  margin-bottom: 10px;
}
.td-rem-help-tech {
  font-size: 11px;
  color: var(--fg-tertiary);
  margin-bottom: 10px;
  font-family: var(--mono, ui-monospace, monospace);
}
.td-rem-help-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.td-rem-help-actions .td-action-btn {
  flex: 0 0 auto;
  padding: 8px 14px;
  font-size: 12px;
}

/* ══════════════════════════════════════════════════════════════
   ŻYWE (#1471 slice 1) — ruch/trafność, NIE kolor.
   Wzorzec-referencja: kokpit (_countUpText/kk-bump). Teal = żywy sygnał.
   ══════════════════════════════════════════════════════════════ */

/* count-up land: mikro-puls licznika/€ gdy wartość „doleci" */
@keyframes th-bump {
  0%   { transform: scale(1); }
  30%  { transform: scale(1.13); color: var(--accent-signal); }
  100% { transform: scale(1); }
}
/* inline-block: scale() jest ignorowany na czystym display:inline */
.th-bump { display: inline-block; animation: th-bump .42s cubic-bezier(.2,.7,.3,1); }

/* lista findings: slide-in ze staggerem (--d ustawia JS per index) */
@keyframes th-card-enter {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.tl-card.th-enter {
  opacity: 0;
  animation: th-card-enter .34s ease both;
  animation-delay: var(--d, 0ms);
}

/* LIVE heartbeat w headerze — organizm oddycha */
.th-live {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: 12px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: 0.1em;
  color: var(--accent-signal);
  vertical-align: middle;
}
.th-live-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent-signal);
  box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent-signal) 55%, transparent);
  animation: th-heartbeat 2.4s ease-in-out infinite;
}
@keyframes th-heartbeat {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent-signal) 50%, transparent); opacity: .95; }
  14%      { box-shadow: 0 0 0 5px color-mix(in srgb, var(--accent-signal) 0%, transparent); opacity: 1; }
  28%      { opacity: .7; }
  42%      { box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent-signal) 0%, transparent); opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .th-bump, .tl-card.th-enter, .th-live-dot { animation: none; }
  .tl-card.th-enter { opacity: 1; }
}

/* ══════════════════════════════════════════════════════════════
   AGENTOWE (#1471 slice 2) — akcja → agent → rozmowa.
   Każdy finding: [Ogranicz][Potwierdź][Napraw][Zapytaj MENS].
   ══════════════════════════════════════════════════════════════ */
.td-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border-subtle);
}
.td-act-btn {
  flex: 0 0 auto;
  padding: 7px 14px;
  border-radius: var(--radius-sm);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  cursor: pointer;
  color: var(--fg-secondary);
  background: var(--bg-interactive);
  box-shadow: inset 0 0 0 1px var(--border-subtle);
  transition: color .15s, background .15s, box-shadow .15s, transform .08s;
}
.td-act-btn:hover {
  color: var(--fg-primary);
  box-shadow: inset 0 0 0 1px var(--border-strong);
}
.td-act-btn:active { transform: translateY(1px); }
/* #3650: "Wiecej" z akcjami drugiego planu, link do zadania w kolejce */
.td-act-more { position: relative; display: inline-flex; }
.td-act-menu { position: absolute; left: 0; top: calc(100% + 6px); z-index: 40; display: flex; flex-direction: column; gap: 4px; padding: 6px; min-width: 220px; background: var(--bg-panel); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); box-shadow: 0 12px 32px -8px rgba(0,0,0,.6); }
.td-act-menu[hidden] { display: none; }
.td-act-menu .td-act-btn { width: 100%; text-align: left; }
.td-act-task { margin-left: auto; align-self: center; font-size: 12px; color: var(--fg-secondary); text-decoration: none; border-bottom: 1px solid var(--border-default); }
.td-act-task:hover { color: var(--fg-primary); border-bottom-color: var(--fg-secondary); }
@media (max-width: 720px) {
  .td-act-task { margin-left: 0; flex-basis: 100%; }
  /* Cele dotyku na telefonie: link do zadania mial 19 px, przyciski filtrow 29 px. */
  .td-act-task { display: inline-flex; align-items: center; min-height: 32px; border-bottom: 0; text-decoration: underline; text-underline-offset: 3px; }
  .mf-reset { min-height: 32px; }
  .td-act-menu { left: auto; right: 0; max-width: calc(100vw - 32px); }
}
/* primary „Napraw" = teal-puls (akcja żywa z realną capability) */
.td-act-btn.primary {
  color: var(--accent-signal);
  background: color-mix(in srgb, var(--accent-signal) 12%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent-signal) 40%, transparent);
}
.td-act-btn.primary:hover {
  background: color-mix(in srgb, var(--accent-signal) 20%, transparent);
}
/* #1767: akcja bez capability (Ogranicz teraz) — stonowana, kropka; klik prowadzi
   do uczciwej rozmowy (agent wyjaśnia brak + kolejkuje przez FORUM), nie do udawania. */
.td-act-btn.degraded {
  color: var(--fg-tertiary);
  background: transparent;
  box-shadow: inset 0 0 0 1px var(--border-subtle);
}
.td-act-btn.degraded::before {
  content: '\25CB';
  margin-right: 5px;
  font-size: 11px;
  vertical-align: 1px;
}
.td-act-btn.degraded:hover {
  color: var(--fg-secondary);
  box-shadow: inset 0 0 0 1px var(--border-strong);
}

/* empty-state: klikalne przykłady poleceń → agent */
.td-ph-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  margin-top: 18px;
}
.td-ph-chip {
  padding: 6px 12px;
  border-radius: 999px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  letter-spacing: .02em;
  cursor: pointer;
  color: var(--accent-signal);
  background: color-mix(in srgb, var(--accent-signal) 8%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent-signal) 28%, transparent);
  transition: background .15s, transform .08s;
}
.td-ph-chip:hover { background: color-mix(in srgb, var(--accent-signal) 16%, transparent); }
.td-ph-chip:active { transform: translateY(1px); }

/* #3228: STAN NAPRAWY w zakladce NAPRAWA - zadania znaleziska per host */
.td-rem-state { margin: 0 0 18px; }
.td-rem-readiness { font-size: 13px; color: var(--fg-secondary); margin: 4px 0 10px; line-height: 1.5; }
.td-rem-list { display: flex; flex-direction: column; gap: 6px; }
.td-rem-empty { font-size: 13px; color: var(--fg-tertiary); }
.td-rem-row {
  display: grid; grid-template-columns: minmax(140px, 1fr) minmax(180px, 1.4fr) minmax(0, 1.6fr) auto;
  align-items: center; gap: 12px;
  padding: 8px 12px; border: 1px solid var(--border-subtle); border-radius: var(--radius-sm);
  font-size: 13px;
}
.td-rem-host { font-family: var(--font-code, 'JetBrains Mono', monospace); color: var(--fg-primary); overflow-wrap: anywhere; }
.td-rem-status { color: var(--fg-primary); }
.td-rem-meta { color: var(--fg-tertiary); font-size: 12px; overflow-wrap: anywhere; }
.td-rem-row--verified .td-rem-status { color: var(--sev-ok); }
.td-rem-row--ineffective .td-rem-status { color: var(--sev-high); }
.td-rem-retest {
  padding: 4px 10px; font-size: 12px; border: 1px solid var(--border-default);
  border-radius: var(--radius-sm); background: transparent; color: var(--fg-primary); cursor: pointer;
}
.td-rem-retest:hover { border-color: var(--fg-secondary); }
.td-rem-retest:disabled { opacity: .6; cursor: default; }
@media (max-width: 720px) {
  .td-rem-row { grid-template-columns: 1fr; gap: 4px; }
}

/* #3228: /remediation - kolejka napraw organizacji */
.td-queue { text-align: left; max-width: none; width: 100%; padding: 8px 4px; }
.td-queue-title { font-family: var(--font-brand); font-size: 14px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--fg-primary); margin-bottom: 4px; }
.td-queue-sub { font-size: 13px; color: var(--fg-tertiary); margin-bottom: 12px; }
.td-queue-row .td-queue-name { color: var(--fg-primary); overflow-wrap: anywhere; }
/* #3606 PR5: zadania i ekspozycja floty Wazuh */
.td-fleet-tag { margin-left: 8px; padding: 1px 6px; font-size: 11px; letter-spacing: 0.04em; color: var(--fg-secondary); border: 1px solid var(--border-default); border-radius: var(--radius-sm); white-space: nowrap; }
.td-fleet-details { margin: 0 0 10px; padding: 10px 12px; border-left: 2px solid var(--border-strong); background: var(--bg-subtle, transparent); }
.td-fleet-line { display: grid; grid-template-columns: 150px 1fr; gap: 8px; font-size: 13px; padding: 2px 0; }
.td-fleet-label { color: var(--fg-tertiary); }
.td-fleet-value { color: var(--fg-primary); overflow-wrap: anywhere; }
.td-fleet-note { font-size: 12px; color: var(--fg-tertiary); margin: 6px 0 8px; text-wrap: pretty; }
.td-fleet-expo { margin: 0 0 12px; padding: 8px 12px; border: 1px solid var(--border-default); border-radius: var(--radius-sm); }
.td-fleet-expo-head { font-size: 13px; color: var(--fg-primary); }
@media (max-width: 720px) { .td-fleet-line { grid-template-columns: 1fr; gap: 2px; } }

/* #3228: panel MEDICUS zwijany do tytulu (kolejka i lista widoczne bez przewijania) */
.kk-learned-toggle { display: block; width: 100%; text-align: left; background: none; border: 0; padding: 0; cursor: pointer; }
.kk-learned.is-collapsed { padding-top: 12px; padding-bottom: 12px; }
.kk-learned.is-collapsed > :not(.kk-learned-toggle) { display: none; }
.kk-learned.is-collapsed .kk-learned-toggle { margin-bottom: 0; }
.td-queue-overdue { color: var(--accent-critical); font-weight: 600; white-space: nowrap; }
.td-queue-due { white-space: nowrap; }
/* #3519: kubelek "czeka na zgode" nad kolejka */
.td-queue-bucket { border: 1px solid var(--border-default); border-radius: 8px; padding: 10px 12px; margin-bottom: 14px; }
.td-queue-bucket-title { font-family: var(--font-brand); font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent-warning); margin-bottom: 4px; }
.td-queue-bucket-note { font-size: 12px; color: var(--fg-tertiary); margin-bottom: 8px; }
.td-queue-actions { display: inline-flex; gap: 6px; white-space: nowrap; }
/* #3642: filtr kolejki, numer zadania, link ?task= */
.td-queue-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 0 0 12px; }
.td-queue-filter .td-out-switch { margin: 0; }
.td-queue-search {
  flex: 1 1 260px; min-width: 0; height: 32px; padding: 0 12px;
  font: inherit; font-size: 13px; color: var(--fg-primary);
  background: transparent; border: 1px solid var(--border-default); border-radius: var(--radius-sm);
}
.td-queue-search::placeholder { color: var(--fg-tertiary); }
.td-queue-search:focus { outline: none; border-color: var(--fg-secondary); }
.td-queue-shown { font-size: 12px; color: var(--fg-tertiary); font-variant-numeric: tabular-nums; }
.td-queue-id { margin-right: 8px; font-family: var(--font-code, 'JetBrains Mono', monospace); font-size: 12px; color: var(--fg-tertiary); font-variant-numeric: tabular-nums; }
.td-queue-fix { border-color: var(--fg-secondary); }
.td-queue-row--focus { border-color: var(--fg-secondary); box-shadow: var(--fg-secondary) 2px 0 0 inset; }
/* #3644: widok Naprawy na pelna szerokosc; lista i filtry znalezisk znikaja,
   pasek MEDICUS i "Czego nauczyl sie MEDICUS" zostaja tylko tutaj. */
.threats-main.threats--remediation #threatsFilter,
.threats-main.threats--remediation #threatsList,
.threats-main.threats--remediation #aurumBar,
.threats-main.threats--remediation #threatsCounter { display: none !important; }
.threats-main.threats--remediation .threats-split { grid-template-columns: minmax(0, 1fr); min-height: 0; }
/* Kolejka napraw nie dzieli ekranu z lista znalezisk: panel konczy sie z trescia,
   zamiast ciagnac pusta karte do dolu ekranu przy zwinietej grupie. */
.threats-main.threats--remediation #threatDetail { min-height: 0; height: auto; }
.threats-main:not(.threats--remediation) #medicusBar,
.threats-main:not(.threats--remediation) #learnedPanel { display: none !important; }
.threats--remediation .td-placeholder--queue { max-width: none; }
.td-queue-group { margin: 18px 0 0; }
.td-queue-group-head { display: flex; align-items: center; gap: 12px; }
.td-queue-group-title { margin: 0; font-family: var(--font-brand); font-size: 12px; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; color: var(--fg-primary); }
.td-queue-group-note { margin: 4px 0 10px; font-size: 13px; color: var(--fg-tertiary); }
.td-queue-group-more { margin-top: 10px; }
.td-queue-group--decide .td-queue-group-title { color: var(--fg-secondary); }
/* #3839: status (termin, „po terminie”) i host mieszczą się w jednej linii; reszta dla nazwy. Pomiar prod 1280: status 362 px, host 216 px. */
.threats--remediation .td-rem-row { grid-template-columns: minmax(240px, 1fr) minmax(150px, 220px) minmax(300px, 370px) auto; }
@media (max-width: 720px) {
  .threats--remediation .td-rem-row { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .td-queue-search { flex-basis: 100%; height: 40px; font-size: 16px; }
  .td-queue-filter .td-out-switch-btn { min-height: 36px; }
  .td-queue-actions { flex-wrap: wrap; }
  /* #3839: "Otwórz", "Napraw", "Szczegóły" i przełącznik Kolejka/Przebieg miały 28 px */
  .td-queue .td-rem-retest,
  .td-queue .td-out-switch-btn { min-height: 36px; }
  /* #3839: "Szczegóły" w pasku MEDICUS miał 27 px, nagłówek "Czego nauczył się MEDICUS" 20 px */
  .mb-toggle { min-height: 36px; }
  .kk-learned-toggle { padding: 8px 0; }
}
.td-queue-wait { font-size: 12px; color: var(--fg-tertiary); white-space: nowrap; }
.td-placeholder--queue { padding: 16px 20px; text-align: left; letter-spacing: normal; }

/* #3289: stany znacznika LIVE przy liczniku zagrożeń */
.th-live[data-state="wait"] { color: var(--fg-tertiary); }
.th-live[data-state="wait"] .th-live-dot { background: var(--fg-tertiary); animation: none; opacity: .5; }
.th-live[data-state="down"] { color: var(--accent-critical); }
.th-live[data-state="down"] .th-live-dot { background: var(--accent-critical); animation: none; }

/* #3512: przebieg napraw per host (lejek i etap kazdego zadania) */
.td-out-switch { display: inline-flex; gap: 0; margin: 4px 0 12px; border: 1px solid var(--border-default); border-radius: var(--radius-sm); overflow: hidden; }
.td-out-switch-btn { padding: 5px 14px; font-size: 12px; background: transparent; color: var(--fg-secondary); border: 0; cursor: pointer; }
.td-out-switch-btn + .td-out-switch-btn { border-left: 1px solid var(--border-default); }
.td-out-switch-btn[aria-pressed="true"] { background: var(--bg-elevated, rgba(255,255,255,.06)); color: var(--fg-primary); }
.td-out-controls { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.td-out-group { flex: 0 1 auto; }
.td-out-select { min-width: 200px; }
.td-out-funnel { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; margin-bottom: 14px; }
.td-out-cell { padding: 8px 12px; border: 1px solid var(--border-subtle); border-radius: var(--radius-sm); }
.td-out-val { font-size: 20px; color: var(--fg-primary); font-variant-numeric: tabular-nums; }
.td-out-label { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--fg-tertiary); }
.td-out-cell--verified.is-hit .td-out-val { color: var(--sev-ok); }
.td-out-cell--reopened.is-hit .td-out-val, .td-out-cell--rolled_back.is-hit .td-out-val { color: var(--sev-high); }
.td-out-stage-col { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.td-out-row--verified .td-out-stage { color: var(--sev-ok); }
.td-out-row--reopened .td-out-stage, .td-out-row--rolled_back .td-out-stage,
.td-out-row--rejected .td-out-stage { color: var(--sev-high); }
.td-out-row--no_plan .td-out-stage, .td-out-row--skipped .td-out-stage { color: var(--fg-tertiary); }

/* #3519: przyciski wiersza zadania i liscie TESTIMONIUM naprawy */
.td-rem-actions { display: inline-flex; gap: 6px; justify-self: end; }
.td-rem-proof {
  margin: -2px 0 4px; padding: 8px 12px; border: 1px solid var(--border-subtle);
  border-top: 0; border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  display: flex; flex-direction: column; gap: 4px;
}
.td-rem-proof-empty { font-size: 12px; color: var(--fg-tertiary); }
.td-rem-leaf {
  display: grid; grid-template-columns: 96px minmax(0, 1.6fr) 130px 150px auto;
  align-items: center; gap: 12px; font-size: 12px; color: var(--fg-secondary);
}
.td-rem-leaf-kind { color: var(--fg-primary); }
.td-rem-leaf--bad .td-rem-leaf-outcome { color: var(--sev-high); }
.td-rem-leaf-hash { font-family: var(--font-code, 'JetBrains Mono', monospace); color: var(--fg-tertiary); }
.td-rem-leaf-sig--ok { color: var(--sev-ok); }
.td-rem-leaf-sig--bad { color: var(--sev-high); }
@media (max-width: 720px) {
  .td-rem-leaf { grid-template-columns: 1fr 1fr; gap: 2px 8px; }
}

/* #3648: pasek filtrow znalezisk. Jeden rzad na wierzchu, reszta pod
   "Wiecej filtrow"; ukryta lista krytycznosci steruje logika filtrow. */
.th-filter { flex-direction: column; align-items: stretch; gap: 10px; }
.th-filter-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; }
.th-filter-row .mf-group-wide { flex: 1 1 280px; }
.th-sev-native { display: none !important; }
.th-sev { display: inline-flex; flex-wrap: wrap; border: 1px solid var(--border-default); border-radius: var(--radius-sm); overflow: hidden; }
.th-sev-btn { display: inline-flex; align-items: baseline; gap: 6px; padding: 6px 12px; font-size: 12px; background: transparent; color: var(--fg-secondary); border: 0; cursor: pointer; }
.th-sev-btn + .th-sev-btn { border-left: 1px solid var(--border-default); }
.th-sev-btn:hover { color: var(--fg-primary); }
.th-sev-btn[aria-pressed="true"] { background: var(--bg-elevated, rgba(255,255,255,.06)); color: var(--fg-primary); }
.th-sev-n { font-variant-numeric: tabular-nums; color: var(--fg-tertiary); }
.th-sev-btn--critical .th-sev-n { color: var(--sev-critical); }
.th-sev-btn--high .th-sev-n { color: var(--sev-high); }
.th-more-count { color: var(--fg-primary); }
.th-export { position: relative; margin-left: auto; }
.th-export-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 40; display: flex; flex-direction: column; gap: 4px; padding: 6px; min-width: 160px; background: var(--bg-panel); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); box-shadow: 0 12px 32px -8px rgba(0,0,0,.6); }
.th-export-menu[hidden] { display: none; }
.th-export-menu .mf-reset { width: 100%; text-align: left; }
.th-filter-more { padding-top: 10px; border-top: 1px solid var(--border-subtle); }
.th-filter-more[hidden] { display: none; }
@media (max-width: 720px) {
  .th-filter-row .mf-group-wide { flex-basis: 100%; }
  .th-sev { width: 100%; }
  .th-sev-btn { flex: 1 1 auto; justify-content: center; min-height: 36px; }
  .th-export { margin-left: 0; }
}
/* #3652: karta naprawy w szczegolach zadania floty */
.td-fleet-card { margin-top: 12px; }
/* #3663: na kogo czeka zadanie */
.td-wait--you { color: var(--fg-primary); }
.td-wait--other, .td-wait--confirm { color: var(--fg-secondary); }
.td-wait--blocked { color: var(--accent-warning, #d9a441); }
.td-wait--decide { color: var(--fg-tertiary); }

/* Pole wyboru w grupie filtra (#3839): grupa ma juz ramke i 30 px, a cy-select
   dokladal druga ramke, tlo i 38 px, wiec pole wystawalo poza grupe. */
.mf-group .cy-select-host { width: auto; }
.mf-group .cy-select-trigger {
  min-height: 0;
  height: 100%;
  padding: 0 2px 0 4px;
  border: 0;
  background: transparent;
  gap: 8px;
}

@media (max-width: 720px) {
  .mf-group { height: 32px; }
}

/* #4134 G7: aktywny filtr KEV albo EPSS jako plakietka ze zdejmowaniem. */
.th-intel-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.th-intel-filters[hidden] { display: none; }
.th-intel-pill { display: inline-flex; align-items: center; gap: 6px; padding: 3px 4px 3px 10px; border: 1px solid var(--border-default); border-radius: var(--radius-xs); font-family: 'Inter', system-ui, sans-serif; font-size: 12px; color: var(--fg-primary); background: var(--bg-interactive); }
.th-intel-pill-x { min-width: 24px; min-height: 24px; border: 0; background: transparent; color: var(--fg-secondary); cursor: pointer; font-size: 15px; line-height: 1; border-radius: 3px; }
.th-intel-pill-x:hover, .th-intel-pill-x:focus-visible { color: var(--fg-primary); background: color-mix(in oklab, var(--fg-primary) 8%, transparent); }
@media (hover: none) { .th-intel-pill-x { min-width: 32px; min-height: 32px; } }
