/* 
  SwiftIOC Threat Intelligence Dashboard
  Complete stylesheet rewrite – dark, compact, dashboard-first
*/

:root {
  color-scheme: dark;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto,
    Helvetica, Arial, sans-serif;
  line-height: 1.6;

  --bg-color: #020617;
  --bg-gradient:
    radial-gradient(circle at 0% 0%, rgba(56, 189, 248, 0.18), transparent 55%),
    radial-gradient(circle at 100% 0%, rgba(168, 85, 247, 0.14), transparent 55%),
    linear-gradient(180deg, #020617, #020617 10%, #020617 50%, #020617 100%);

  --card-bg-soft: rgba(15, 23, 42, 0.90);
  --card-bg-strong: rgba(15, 23, 42, 0.98);

  --border-subtle: rgba(15, 23, 42, 1);
  --border-soft: rgba(148, 163, 184, 0.36);
  --border-strong: rgba(148, 163, 184, 0.85);

  --accent: #3b82f6;
  --accent-soft: #60a5fa;
  --accent-subtle: rgba(59, 130, 246, 0.18);

  --danger: #f97373;
  --danger-soft: #fb7185;
  --danger-subtle: rgba(248, 113, 113, 0.14);

  --warning: #fbbf24;
  --warning-soft: #facc15;
  --warning-subtle: rgba(250, 204, 21, 0.14);

  --success: #22c55e;
  --success-soft: #4ade80;
  --success-subtle: rgba(34, 197, 94, 0.16);

  --text-primary: #e5e7eb;
  --text-muted: #9ca3af;
  --text-soft: #94a3b8;
  --text-strong: #f9fafb;

  --shadow-soft: 0 18px 50px rgba(15, 23, 42, 0.96);
  --shadow-subtle: 0 18px 40px rgba(15, 23, 42, 0.9);

  --radius-card: 1rem;
  --radius-pill: 999px;

  --focus-ring: 0 0 0 1px rgba(15, 23, 42, 1), 0 0 0 2px rgba(129, 140, 248, 0.9);

  --transition-fast: 0.14s ease-out;
  --transition-med: 0.18s ease-out;
}

/* Base layout */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  /* Smooth in-page navigation; anchors clear the sticky nav. */
  scroll-behavior: smooth;
}

html,
body {
  margin: 0;
  padding: 0;
}

[id] {
  scroll-margin-top: 4.5rem;
}

/* Below-the-fold panels: let the browser skip layout/paint until they
   approach the viewport. contain-intrinsic-size reserves space so the
   scrollbar doesn't jump. */
.summary-tables .table-card,
#exports {
  content-visibility: auto;
  contain-intrinsic-size: auto 320px;
}

body {
  min-height: 100vh;
  background: var(--bg-gradient);
  color: var(--text-primary);
}

/* Typography */

body,
button,
input,
select {
  font-family: inherit;
}

h1,
h2,
h3,
h4 {
  color: var(--text-strong);
  line-height: 1.25;
  letter-spacing: -0.01em;
}

h1.section-title {
  font-size: clamp(1.6rem, 2.1vw, 1.9rem);
  font-weight: 650;
  margin: 0 0 0.15rem;
}

h2.panel-title {
  font-size: 1.05rem;
  font-weight: 600;
  margin: 0;
}

h3 {
  font-size: 0.9rem;
  font-weight: 600;
  margin: 0;
}

p {
  margin-block: 0.1rem 0.45rem;
}

.page-header-subtitle,
.panel-subtitle {
  font-size: 0.82rem;
  color: var(--text-soft);
}

/* Layout wrappers */

.page-wrapper {
  max-width: 1240px;
  margin: 0 auto;
  padding: 1.5rem 1.75rem 2.5rem;
  position: relative;
}

.page-header {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-bottom: 1rem;
}

/* Top nav */

.top-nav {
  position: sticky;
  top: 0.75rem;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.4rem 0.75rem;
  margin-bottom: 1rem;
  border-radius: 0.9rem;
  border: 1px solid rgba(148, 163, 184, 0.45);
  background:
    radial-gradient(circle at 0% 0%, rgba(37, 99, 235, 0.2), transparent 55%),
    radial-gradient(circle at 100% 0%, rgba(236, 72, 153, 0.16), transparent 55%),
    radial-gradient(circle at 0% 100%, rgba(34, 197, 94, 0.16), transparent 55%),
    rgba(15, 23, 42, 0.97);
  box-shadow: 0 18px 50px rgba(15, 23, 42, 0.96);
  backdrop-filter: blur(18px);
}

.brand {
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
  text-decoration: none;
}

.brand-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.16rem 0.6rem 0.18rem;
  border-radius: 999px;
  border: 1px solid rgba(96, 165, 250, 0.6);
  background:
    radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.35), transparent 55%),
    radial-gradient(circle at 100% 100%, rgba(59, 130, 246, 0.42), transparent 55%),
    rgba(15, 23, 42, 0.95);
  font-weight: 650;
  font-size: 0.86rem;
  color: #eff6ff;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

.brand-tagline {
  font-size: 0.78rem;
  color: var(--text-soft);
}

.nav-links {
  display: flex;
  gap: 0.45rem;
  align-items: center;
  flex-wrap: wrap;
  font-size: 0.8rem;
}

.nav-links a {
  color: var(--text-muted);
  text-decoration: none;
  padding: 0.14rem 0.55rem;
  border-radius: 999px;
  border: 1px solid transparent;
  transition: background var(--transition-fast), border-color var(--transition-fast),
    color var(--transition-fast), transform 0.12s ease-out;
}

.nav-links a:hover {
  color: var(--text-strong);
  border-color: rgba(148, 163, 184, 0.6);
  background: rgba(15, 23, 42, 0.8);
  transform: translateY(-0.5px);
}

.nav-links a:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

/* Status banner */

.status-banner {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.75rem 1.25rem;
  padding: 0.65rem 0.9rem;
  border-radius: 0.9rem;
  border: 1px solid rgba(37, 99, 235, 0.55);
  background:
    radial-gradient(circle at 0% 0%, rgba(37, 99, 235, 0.25), transparent 65%),
    radial-gradient(circle at 90% 20%, rgba(56, 189, 248, 0.15), transparent 60%),
    rgba(15, 23, 42, 0.97);
  box-shadow: 0 18px 40px rgba(15, 23, 42, 0.9);
}

.status-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
}

.status-dot {
  width: 0.6rem;
  height: 0.6rem;
  border-radius: 999px;
  background: var(--success);
  box-shadow: 0 0 0 6px rgba(34, 197, 94, 0.16);
}

.status-label {
  font-size: 0.82rem;
  font-weight: 500;
}

.status-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.9rem;
  align-items: center;
  font-size: 0.78rem;
  color: var(--text-soft);
}

.status-meta-label {
  color: var(--text-muted);
}

.status-meta-value {
  font-weight: 500;
  color: var(--text-primary);
}

/* Status visual variations based on data-state */

[data-site-status-root][data-state='live'] .status-dot {
  background: var(--success);
  box-shadow: 0 0 0 6px rgba(34, 197, 94, 0.2);
}

[data-site-status-root][data-state='cache'] .status-dot {
  background: #f97316;
  box-shadow: 0 0 0 6px rgba(249, 115, 22, 0.22);
}

[data-site-status-root][data-state='cache-stale'] .status-dot {
  background: var(--warning);
  box-shadow: 0 0 0 6px rgba(250, 204, 21, 0.22);
}

[data-site-status-root][data-state='error'] .status-dot {
  background: var(--danger);
  box-shadow: 0 0 0 6px rgba(248, 113, 113, 0.28);
}

/* Metrics strip */

.metrics-strip {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.8rem;
  margin-bottom: 1.1rem;
}

.delta-strip {
  display: grid;
  grid-template-columns: minmax(16rem, 1fr) auto auto;
  align-items: center;
  gap: 1.2rem;
  margin-bottom: 1rem;
  padding: 1rem 1.15rem;
  border: 1px solid rgba(34, 211, 238, 0.35);
  border-radius: var(--radius-card);
  background: linear-gradient(110deg, rgba(8, 47, 73, 0.42), rgba(15, 23, 42, 0.94));
  box-shadow: var(--shadow-subtle);
}

.delta-strip[hidden] { display: none; }
.delta-copy h2 { margin: 0.1rem 0 0.25rem; font-size: 1.15rem; }
.delta-copy p:last-child { color: var(--text-soft); font-size: 0.78rem; }
.delta-counts { display: flex; gap: 0.55rem; margin: 0; }
.delta-counts div { min-width: 4.7rem; padding: 0.55rem 0.7rem; border-radius: 0.65rem; background: rgba(15, 23, 42, 0.78); text-align: center; }
.delta-counts dt { color: var(--text-soft); font-size: 0.65rem; text-transform: uppercase; }
.delta-counts dd { margin: 0.1rem 0 0; color: #a5f3fc; font-size: 1.15rem; font-weight: 800; }
.delta-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0.45rem; }

@media (max-width: 820px) {
  .delta-strip { grid-template-columns: 1fr; }
  .delta-actions { justify-content: flex-start; }
}

.metric-card {
  border-radius: var(--radius-card);
  border: 1px solid var(--border-soft);
  background: radial-gradient(circle at 0 0, rgba(59, 130, 246, 0.12), transparent 55%),
    radial-gradient(circle at 100% 100%, rgba(37, 99, 235, 0.14), transparent 55%),
    var(--card-bg-soft);
  padding: 0.55rem 0.7rem 0.6rem;
  box-shadow: var(--shadow-subtle);
  display: flex;
  flex-direction: column;
  gap: 0.12rem;
}

.metric-label {
  font-size: 0.76rem;
  color: var(--text-muted);
}

.metric-value {
  font-size: 1.1rem;
  font-weight: 650;
  color: var(--text-strong);
}

.metric-caption {
  font-size: 0.72rem;
  color: var(--text-soft);
}

/* Panel */

.panel {
  border-radius: var(--radius-card);
  border: 1px solid var(--border-soft);
  background: linear-gradient(180deg, rgba(15, 23, 42, 0.99), rgba(15, 23, 42, 0.96));
  box-shadow: var(--shadow-soft);
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.panel-header {
  padding: 0.7rem 0.9rem 0.55rem;
  border-bottom: 1px solid rgba(30, 64, 175, 0.65);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
}

.panel-body {
  padding: 0.7rem 0.9rem 0.85rem;
}

/* Table card */

.table-card {
  border-radius: 0.8rem;
  border: 1px solid rgba(148, 163, 184, 0.4);
  background: radial-gradient(circle at 0 0, rgba(59, 130, 246, 0.14), transparent 55%),
    rgba(15, 23, 42, 0.98);
  box-shadow: var(--shadow-soft);
  padding: 0.55rem 0.65rem 0.6rem;
}

.table-card-header {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin-bottom: 0.35rem;
}

.table-card-header p {
  font-size: 0.74rem;
  color: var(--text-soft);
}

/* Tables */

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.78rem;
}

thead th {
  text-align: left;
  font-weight: 500;
  font-size: 0.72rem;
  color: var(--text-muted);
  padding: 0.35rem 0.45rem 0.32rem;
  border-bottom: 1px solid rgba(51, 65, 85, 0.9);
  background: radial-gradient(circle at 0 0, rgba(37, 99, 235, 0.18), transparent 55%),
    rgba(15, 23, 42, 1);
  position: sticky;
  top: 0;
  z-index: 1;
}

tbody td,
tbody th[scope='row'] {
  padding: 0.3rem 0.45rem;
  border-bottom: 1px dashed rgba(30, 64, 175, 0.42);
  color: var(--text-primary);
  font-weight: 500;
  text-align: left;
}

tbody tr:last-child td,
tbody tr:last-child th[scope='row'] {
  border-bottom-color: transparent;
}

tbody tr:nth-child(2n) td,
tbody tr:nth-child(2n) th[scope='row'] {
  background: rgba(15, 23, 42, 0.85);
}

tbody tr:hover td,
tbody tr:hover th[scope='row'] {
  background: rgba(30, 64, 175, 0.5);
}

td.numeric {
  text-align: right;
}

td[data-title]::before {
  content: attr(data-title);
  display: none;
  font-weight: 500;
  font-size: 0.7rem;
  color: var(--text-muted);
}

/* Buttons/links */

.button-link,
.panel-header-link {
  border-radius: 999px;
  border: 1px solid rgba(148, 163, 184, 0.6);
  background: radial-gradient(circle at 0 0, rgba(59, 130, 246, 0.3), transparent 55%),
    rgba(15, 23, 42, 0.98);
  color: #eff6ff;
  text-decoration: none;
  font-size: 0.78rem;
  padding: 0.3rem 0.8rem;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  cursor: pointer;
  box-shadow: 0 12px 28px rgba(15, 23, 42, 1);
  transition: transform 0.12s ease-out, box-shadow var(--transition-med),
    border-color var(--transition-fast), background var(--transition-fast);
}

.button-link:hover,
.panel-header-link:hover {
  transform: translateY(-1px);
  box-shadow: 0 18px 40px rgba(15, 23, 42, 1);
  border-color: rgba(96, 165, 250, 0.9);
}

.button-link:focus-visible,
.panel-header-link:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.button-link[disabled],
.panel-header-link[disabled] {
  opacity: 0.65;
  cursor: default;
}

/* Form controls */

select,
input[type='search'],
input[type='text'] {
  font-size: 0.78rem;
  border-radius: 999px;
  border: 1px solid rgba(148, 163, 184, 0.55);
  background: rgba(15, 23, 42, 0.98);
  color: var(--text-primary);
  padding: 0.2rem 0.6rem;
  min-height: 1.9rem;
  outline: none;
  box-shadow: 0 8px 22px rgba(15, 23, 42, 0.9);
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast),
    background var(--transition-fast);
}

select:focus-visible,
input[type='search']:focus-visible,
input[type='text']:focus-visible {
  border-color: rgba(96, 165, 250, 0.95);
  box-shadow: var(--focus-ring);
}

select:disabled,
input[type='search']:disabled,
input[type='text']:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Toolbar */

.toolbar-group {
  display: inline-flex;
  flex-direction: column;
  gap: 0.12rem;
  font-size: 0.74rem;
  color: var(--text-muted);
}

/* Misc */

.panel-footnote {
  font-size: 0.72rem;
  color: var(--text-soft);
  margin-top: 0.45rem;
}

code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
    "Courier New", monospace;
}

/* Accent metric card (the high-confidence differentiator) */

.metric-card-accent {
  border-color: rgba(239, 68, 68, 0.5);
  background: radial-gradient(circle at 0 0, rgba(239, 68, 68, 0.16), transparent 55%),
    radial-gradient(circle at 100% 100%, rgba(239, 68, 68, 0.12), transparent 55%),
    var(--card-bg-soft);
}

.metric-card-accent .metric-value {
  color: #fecaca;
}

/* Score distribution bar */

.score-distribution {
  margin-bottom: 1.1rem;
  padding: 0.6rem 0.85rem 0.7rem;
  border-radius: var(--radius-card);
  border: 1px solid var(--border-soft);
  background: var(--card-bg-soft);
  box-shadow: var(--shadow-subtle);
}

.score-distribution-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.35rem 0.75rem;
  margin-bottom: 0.4rem;
}

.score-distribution-title {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-primary);
}

.score-legend {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.75rem;
  font-size: 0.72rem;
  color: var(--text-soft);
}

.score-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
}

.score-swatch {
  width: 0.6rem;
  height: 0.6rem;
  border-radius: 3px;
  flex-shrink: 0;
}

.score-bar {
  display: flex;
  width: 100%;
  height: 0.7rem;
  border-radius: 999px;
  overflow: hidden;
  background: rgba(148, 163, 184, 0.14);
}

.score-seg {
  height: 100%;
  transition: width 0.4s ease;
}

.score-seg-critical {
  background: #ef4444;
}
.score-seg-high {
  background: #f97316;
}
.score-seg-medium {
  background: #eab308;
}
.score-seg-low {
  background: #64748b;
}

/* Proportion bars inside summary tables (Share column) */

td.has-bar {
  position: relative;
  overflow: hidden;
}

td.has-bar .cell-bar {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  height: 62%;
  border-radius: 4px;
  background: linear-gradient(90deg, rgba(59, 130, 246, 0.45), rgba(59, 130, 246, 0.18));
  z-index: 0;
}

td.has-bar .cell-bar-value {
  position: relative;
  z-index: 1;
  font-variant-numeric: tabular-nums;
}

/* Top threats showcase */

.top-threats {
  margin-bottom: 1.2rem;
}

.section-heading {
  margin-bottom: 0.7rem;
}

.section-heading .panel-subtitle {
  margin-top: 0.1rem;
}

.top-threats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(275px, 1fr));
  gap: 0.75rem;
}

.threat-card {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.7rem;
  padding: 0.7rem 0.8rem;
  border-radius: 0.85rem;
  border: 1px solid var(--border-soft);
  background:
    radial-gradient(circle at 0 0, rgba(239, 68, 68, 0.08), transparent 60%),
    var(--card-bg-strong);
  box-shadow: var(--shadow-subtle);
  overflow: hidden;
  transition: transform 0.16s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}

.threat-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: var(--threat-accent, var(--accent));
}

.threat-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-soft);
  border-color: rgba(148, 163, 184, 0.75);
}

.threat-score {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 3.1rem;
  padding: 0.35rem 0.2rem;
  border-radius: 0.7rem;
  background: color-mix(in srgb, var(--threat-accent, var(--accent)) 20%, transparent);
  border: 1px solid color-mix(in srgb, var(--threat-accent, var(--accent)) 45%, transparent);
}

.threat-score-num {
  font-size: 1.35rem;
  font-weight: 750;
  line-height: 1;
  color: var(--threat-accent, var(--text-strong));
  font-variant-numeric: tabular-nums;
}

.threat-score-label {
  font-size: 0.56rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-soft);
  margin-top: 0.15rem;
}

.threat-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.threat-indicator {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 0.82rem;
  color: var(--text-strong);
  word-break: break-all;
  line-height: 1.35;
  max-height: 2.7em;
  overflow: hidden;
}

.threat-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  align-items: center;
}

.threat-pill {
  font-size: 0.62rem;
  padding: 0.1rem 0.42rem;
  border-radius: 999px;
  border: 1px solid rgba(148, 163, 184, 0.28);
  background: rgba(148, 163, 184, 0.12);
  color: var(--text-soft);
  white-space: nowrap;
}

.threat-pill.type {
  background: rgba(59, 130, 246, 0.16);
  border-color: rgba(59, 130, 246, 0.4);
  color: #dbeafe;
}

.threat-pill.confirmed {
  background: rgba(239, 68, 68, 0.16);
  border-color: rgba(239, 68, 68, 0.45);
  color: #fecaca;
  font-weight: 600;
}

.threat-pill.time {
  background: transparent;
  border-color: transparent;
  color: var(--text-muted);
  padding-inline: 0;
}

.threat-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}

.threat-tags span {
  font-size: 0.6rem;
  padding: 0.04rem 0.34rem;
  border-radius: 999px;
  background: rgba(37, 99, 235, 0.14);
  color: var(--accent-soft);
}

/* Score-band accents (drive the card via --threat-accent) */
.threat-critical { --threat-accent: #ef4444; }
.threat-high { --threat-accent: #f97316; }
.threat-medium { --threat-accent: #eab308; }
.threat-low { --threat-accent: #64748b; }

@media (max-width: 540px) {
  .top-threats-grid {
    grid-template-columns: 1fr;
  }
}

/* Screen-reader-only utility */

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Trend sparkline (inline in the status banner) */

.trend-sparkline {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-left: auto;
}

.trend-svg {
  width: 7rem;
  height: 1.6rem;
  display: block;
}

.trend-line {
  fill: none;
  stroke: var(--accent-soft);
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.trend-dot {
  fill: var(--accent-soft);
}

.trend-label {
  font-size: 0.72rem;
  color: var(--text-soft);
  white-space: nowrap;
}

/* IOC lookup */

.ioc-lookup {
  margin-bottom: 1.1rem;
}

.lookup-form {
  display: flex;
  gap: 0.5rem;
  align-items: stretch;
}

/* input.lookup-input (not just .lookup-input): the base `input[type='search']`
   rule above is an attribute selector, which outranks a bare class selector
   on specificity regardless of source order — a class-only selector here
   silently lost every declaration to it, so the hero lookup box rendered as
   a cramped 12.48px toolbar-style pill instead of its intended prominent
   sizing. */
input.lookup-input {
  flex: 1;
  min-width: 0;
  font-size: 0.85rem;
  border-radius: 0.7rem;
  border: 1px solid var(--border-soft);
  background: var(--card-bg-strong);
  color: var(--text-primary);
  padding: 0.6rem 0.85rem;
  outline: none;
  box-shadow: var(--shadow-subtle);
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

input.lookup-input:focus-visible {
  border-color: rgba(96, 165, 250, 0.95);
  box-shadow: var(--focus-ring);
}

.lookup-form .button-link {
  border-radius: 0.7rem;
  white-space: nowrap;
}

.lookup-result {
  margin-top: 0.55rem;
  padding: 0.55rem 0.8rem;
  border-radius: 0.7rem;
  border: 1px solid var(--border-soft);
  background: var(--card-bg-soft);
  font-size: 0.8rem;
  color: var(--text-soft);
}

.lookup-result[data-state='found'] {
  border-color: rgba(239, 68, 68, 0.5);
  background: rgba(239, 68, 68, 0.08);
  color: var(--text-primary);
}

.lookup-result[data-state='not-found'] {
  border-color: rgba(34, 197, 94, 0.45);
  background: rgba(34, 197, 94, 0.08);
  color: var(--text-primary);
}

.lookup-hit {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.2rem;
}

.lookup-hit-badge {
  font-weight: 700;
  color: #fecaca;
}

.lookup-hit-score {
  font-size: 0.75rem;
  font-weight: 600;
  padding: 0.05rem 0.45rem;
  border-radius: 999px;
  background: rgba(148, 163, 184, 0.16);
}

.lookup-details {
  margin: 0;
  color: var(--text-soft);
}

@media (max-width: 640px) {
  .lookup-form {
    flex-direction: column;
  }

  .trend-sparkline {
    margin-left: 0;
    width: 100%;
  }
}

/* Confidence badge colors */

.confidence-high {
  color: var(--success-soft);
}

.confidence-medium {
  color: var(--warning-soft);
}

.confidence-low {
  color: var(--text-soft);
}

/* Mobile layout adjustments */

@media (max-width: 960px) {
  .metrics-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .top-nav {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.35rem;
  }

  .nav-links {
    width: 100%;
    justify-content: flex-start;
  }
}

@media (max-width: 720px) {
  .page-wrapper {
    padding: 1.1rem 1.1rem 2.1rem;
  }

  .status-banner {
    padding-inline: 0.75rem;
  }

  .summary-tables thead {
    display: none;
  }

  .summary-tables tbody td {
    display: block;
    padding: 0.3rem 0.4rem;
  }

  .summary-tables tbody tr {
    border-radius: 0.6rem;
    border: 1px solid rgba(51, 65, 85, 0.9);
    overflow: hidden;
    margin-bottom: 0.4rem;
  }

  .summary-tables tbody td[data-title]::before {
    display: block;
    margin-bottom: 0.05rem;
  }

  .summary-tables td.numeric {
    text-align: left;
  }
}

@media (max-width: 540px) {
  .metrics-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .panel {
    border-radius: 0.9rem;
  }
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ============================================================
 *  SwiftIOC v2 – Micro-interactions & loading polish
 *  (Safe overrides added at the end of the stylesheet)
 * ========================================================== */

/* Softer movement + depth on the main cards */
.metric-card,
.table-card,
.action-card {
  transition:
    transform 0.16s ease,
    box-shadow 0.18s ease,
    border-color 0.18s ease,
    background 0.18s ease;
}

.metric-card:hover,
.table-card:hover,
.action-card:hover {
  transform: translateY(-1px);
  box-shadow: 0 18px 40px rgba(15, 23, 42, 0.9);
  border-color: rgba(148, 163, 184, 0.9);
}

/* Slight pop on primary links/buttons */
.button-link {
  transition:
    transform 0.12s ease,
    box-shadow 0.16s ease,
    background 0.16s ease,
    border-color 0.16s ease;
}

.button-link:hover {
  transform: translateY(-0.5px);
  box-shadow: 0 16px 32px rgba(15, 23, 42, 0.9);
}

/* Make the top nav feel more “app-like” */
.top-nav {
  backdrop-filter: blur(20px);
}

/* Tighter, more “dashboardy” preview header */
.preview-panel {
  gap: 0.45rem;
}

/* Keep the live preview table tidy on wide screens */
.preview-table {
  table-layout: auto;
}

.preview-table th:nth-child(2),
.preview-table th:nth-child(3),
.preview-table th:nth-child(4),
.preview-table th:nth-child(5),
.preview-table td:nth-child(2),
.preview-table td:nth-child(3),
.preview-table td:nth-child(4),
.preview-table td:nth-child(5) {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.preview-table td:nth-child(2),
.preview-table td:nth-child(3),
.preview-table th:nth-child(2),
.preview-table th:nth-child(3) {
  max-width: 10.5rem;
  overflow: hidden;
  text-overflow: ellipsis;
}

.preview-indicator {
  justify-content: space-between;
  min-width: 0;
}

.preview-indicator-copy {
  flex-shrink: 0;
}

/* Scrollbar polish for the heavy IOC views */
.preview-table-wrapper,
.table-card {
  scrollbar-width: thin;
  scrollbar-color: rgba(148, 163, 184, 0.6) transparent;
}

.preview-table-wrapper::-webkit-scrollbar,
.table-card::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.preview-table-wrapper::-webkit-scrollbar-track,
.table-card::-webkit-scrollbar-track {
  background: transparent;
}

.preview-table-wrapper::-webkit-scrollbar-thumb,
.table-card::-webkit-scrollbar-thumb {
  background: rgba(148, 163, 184, 0.6);
  border-radius: 999px;
}

.preview-table-wrapper::-webkit-scrollbar-thumb:hover,
.table-card::-webkit-scrollbar-thumb:hover {
  background: rgba(248, 250, 252, 0.8);
}

/* ============================
 *  IOC preview loading state
 * ========================== */

/* When JS sets data-loading="true" on the preview container,
   we dim the table and overlay a subtle shimmer. */
[data-preview-container][data-loading='true'] .preview-table-wrapper {
  position: relative;
}

[data-preview-container][data-loading='true'] .preview-table-wrapper::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  background:
    linear-gradient(
      110deg,
      rgba(15, 23, 42, 0.92) 0%,
      rgba(37, 99, 235, 0.65) 35%,
      rgba(15, 23, 42, 0.92) 70%
    );
  background-size: 200% 100%;
  animation: preview-skeleton 1.2s ease-in-out infinite;
  opacity: 0.45;
}

@keyframes preview-skeleton {
  0% {
    background-position-x: -120%;
  }
  100% {
    background-position-x: 120%;
  }
}

[data-preview-container][data-loading='true'] .preview-table {
  opacity: 0.25;
  filter: blur(0.3px);
}

[data-preview-container][data-loading='true'] .preview-status {
  color: var(--text-soft);
  font-style: italic;
}

/* Make the status banner feel snappier across state changes */
.status-banner {
  transition:
    border-color 0.18s ease,
    background 0.18s ease,
    box-shadow 0.2s ease,
    transform 0.12s ease;
}

.status-banner:hover {
  transform: translateY(-0.5px);
  box-shadow: 0 20px 50px rgba(15, 23, 42, 0.95);
}

/* Page-specific dashboard layout (kept here so presentation is cacheable and
 * the HTML remains focused on structure and accessibility). */
/* Page-specific layout refinements for the main dashboard */

.page-wrapper {
  min-height: 100vh;
  padding: 1.25rem 1.5rem 2.25rem;
  max-width: 1320px;
}

.page-header {
  padding-inline: 0.1rem;
  margin-bottom: 0.75rem;
}

.page-header-main {
  gap: 0.75rem;
}

.page-header h1 {
  margin-bottom: 0.2rem;
}

.page-header-subtitle {
  max-width: 36rem;
}

.status-banner {
  margin-bottom: 0.9rem;
}

.metrics-strip {
  margin-bottom: 1rem;
}

.dashboard-main {
  display: grid;
  grid-template-columns: minmax(0, 1.75fr) minmax(0, 1.1fr);
  gap: 0.9rem;
  align-items: stretch;
}

.dashboard-main .panel {
  height: 100%;
}

.panel-body.preview-panel {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}

.preview-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  align-items: center;
  justify-content: space-between;
}

.preview-toolbar .toolbar-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  align-items: center;
}

.preview-toolbar .toolbar-group {
  min-width: 8.5rem;
}

.preview-toolbar .toolbar-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
}

.preview-toolbar input[type='search'] {
  min-width: 11.5rem;
}

.preview-table-wrapper {
  flex: 1;
  min-height: 0;
  border-radius: 0.7rem;
  border: 1px solid var(--border-soft);
  background: rgba(15, 23, 42, 0.96);
  overflow: auto;
  max-height: 60vh; /* scales with viewport height */
}

.preview-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.72rem;
  transition: background 0.15s ease;
}

.preview-table th,
.preview-table td {
  padding: 0.35rem 0.55rem;
}

.preview-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
}

.preview-indicator {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.preview-indicator-main {
  flex: 1;
  min-width: 0;
}

.preview-indicator-main code {
  font-size: 0.7rem;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  display: block;
  max-width: 100%;
}

.preview-indicator-meta {
  display: none;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
  margin-top: 0.1rem;
}

.preview-meta-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  font-size: 0.62rem;
  letter-spacing: 0.01em;
  padding: 0.12rem 0.38rem;
  border-radius: 999px;
  border: 1px solid rgba(148, 163, 184, 0.28);
  background: rgba(148, 163, 184, 0.12);
  color: var(--text-soft);
}

.preview-meta-pill.meta-type {
  background: rgba(59, 130, 246, 0.14);
  border-color: rgba(59, 130, 246, 0.35);
  color: #dbeafe;
}

.preview-meta-pill.meta-source {
  background: rgba(34, 197, 94, 0.12);
  border-color: rgba(34, 197, 94, 0.3);
  color: #dcfce7;
}

.preview-meta-pill.meta-confidence {
  background: rgba(234, 179, 8, 0.12);
  border-color: rgba(234, 179, 8, 0.3);
  color: #fef9c3;
}

.preview-meta-pill.meta-corroborated {
  background: rgba(239, 68, 68, 0.14);
  border-color: rgba(239, 68, 68, 0.4);
  color: #fecaca;
  font-weight: 600;
}

.preview-indicator-tags {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.2rem;
  margin-top: 0.1rem;
}

.preview-indicator-tags span {
  font-size: 0.6rem;
  padding: 0.04rem 0.3rem;
  border-radius: 999px;
  background: rgba(37, 99, 235, 0.12);
  color: var(--accent-soft);
}

.preview-indicator-copy {
  flex-shrink: 0;
}

.preview-indicator-copy button {
  font-size: 0.65rem;
  padding: 0.2rem 0.55rem;
}

.preview-summary {
  font-size: 0.7rem;
  color: var(--text-soft);
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.75rem;
  align-items: center;
  justify-content: space-between;
}

.preview-summary-main {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.75rem;
  align-items: baseline;
}

.preview-summary-figure {
  font-weight: 600;
  color: var(--text-strong);
}

.preview-summary-pill {
  padding: 0.1rem 0.38rem;
  border-radius: 999px;
  background: rgba(148, 163, 184, 0.14);
  border: 1px solid rgba(148, 163, 184, 0.24);
}

.preview-summary-high {
  color: var(--accent-soft);
}

.preview-summary-tag {
  color: var(--accent-soft);
}

.preview-status {
  font-size: 0.7rem;
  color: var(--text-soft);
  margin-top: 0.25rem;
}

.preview-status[data-status='error'] {
  color: var(--danger-soft);
}

.preview-status[data-status='empty'] {
  color: var(--warning-soft);
}

.preview-status[data-status='loading'] {
  color: var(--accent-soft);
}

.summary-tables {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.summary-tables .panel-body {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.summary-tables .table-card {
  max-height: 18.5rem;
  overflow: auto;
}

.table-card-actions {
  margin-top: 0.35rem;
  display: none;
  flex-direction: column;
  gap: 0.35rem;
}

.table-card-actions .button {
  width: 100%;
  justify-content: center;
}

.table-card-hint {
  margin: 0;
  font-size: 0.68rem;
  color: var(--text-soft);
}

.exports-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.exports-grid a.button-link {
  flex: 1 1 8rem;
  justify-content: center;
}

.exports-grid a.button-link.exports-highlight {
  flex-basis: 12rem;
  background: rgba(239, 68, 68, 0.14);
  border-color: rgba(239, 68, 68, 0.4);
  color: #fecaca;
  font-weight: 600;
}

.exports-grid a.button-link.exports-highlight:hover {
  background: rgba(239, 68, 68, 0.22);
}

.exports-grid a.button-link.detection-download {
  border-color: rgba(34, 211, 238, 0.58);
  background: linear-gradient(135deg, rgba(8, 145, 178, 0.16), rgba(109, 40, 217, 0.1));
  color: #cffafe;
}

@media (max-width: 1100px) {
  .dashboard-main {
    grid-template-columns: minmax(0, 1.5fr) minmax(0, 1.1fr);
  }
}

@media (max-width: 820px) {
  .top-nav {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.6rem;
    position: sticky;
    top: 0.6rem;
  }

  .nav-links {
    width: 100%;
    justify-content: flex-start;
    gap: 0.35rem;
    overflow-x: auto;
    padding-bottom: 0.2rem;
  }

  .nav-links a {
    padding: 0.3rem 0.6rem;
    border-radius: 999px;
    border: 1px solid rgba(148, 163, 184, 0.3);
  }
}

@media (max-width: 900px) {
  .dashboard-main {
    grid-template-columns: minmax(0, 1fr);
  }

  .summary-tables .table-card {
    max-height: none;
  }
}

@media (max-width: 760px) {
  .dashboard-main {
    gap: 0.75rem;
  }

  .preview-summary {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.4rem;
  }

  .preview-summary-meta {
    display: grid;
    width: 100%;
    gap: 0.35rem;
  }

  .preview-table-wrapper {
    max-height: none;
  }

  .preview-table {
    display: block;
  }

  .preview-table thead {
    display: none;
  }

  .preview-table tbody {
    display: grid;
    gap: 0.65rem;
  }

  .preview-table tr {
    display: grid;
    gap: 0.4rem;
    padding: 0.65rem 0.7rem;
    border-radius: 0.9rem;
    border: 1px solid var(--border-soft);
    box-shadow: 0 14px 30px rgba(15, 23, 42, 0.65);
    background: rgba(15, 23, 42, 0.98);
  }

  .preview-table tr:nth-child(2n) td,
  .preview-table tr:hover td {
    background: transparent;
  }

  .preview-indicator {
    align-items: flex-start;
    gap: 0.55rem;
  }

  .preview-indicator-meta {
    display: flex;
    width: 100%;
  }

  .preview-indicator-main code {
    white-space: normal;
    word-break: break-word;
  }

  .preview-indicator-copy button {
    width: 100%;
    justify-content: center;
  }

  .preview-table td {
    display: grid;
    grid-template-columns: minmax(5rem, 6rem) minmax(0, 1fr);
    align-items: baseline;
    gap: 0.35rem;
    padding: 0;
    border: none;
  }

  .preview-table td[data-title]::before {
    display: block;
    font-weight: 600;
    color: var(--text-soft);
    letter-spacing: 0.01em;
  }

  .preview-table td.numeric {
    text-align: left;
  }
}

@media (max-width: 640px) {
  .page-wrapper {
    padding-inline: 0.9rem;
  }

  .page-header {
    padding-inline: 0;
  }

  .page-header-main {
    flex-direction: column;
    align-items: flex-start;
  }

  .preview-toolbar {
    flex-direction: column;
    align-items: stretch;
    gap: 0.4rem;
  }

  .preview-toolbar .toolbar-controls {
    width: 100%;
  }

  .preview-toolbar .toolbar-group {
    flex: 1;
  }

  .preview-toolbar .toolbar-actions {
    width: 100%;
  }

  .preview-toolbar input[type='search'] {
    flex: 1;
    min-width: 0;
  }

  .preview-table-wrapper {
    max-height: 65vh;
  }
}

@media (max-width: 540px) {
  .metrics-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .metrics-strip .metric-card:nth-child(3),
  .metrics-strip .metric-card:nth-child(4) {
    grid-column: span 1;
  }

  .summary-tables .table-card {
    max-height: none;
  }
}

@media (max-width: 480px) {
  .page-wrapper {
    padding-inline: 0.75rem;
  }

  .metrics-strip {
    grid-template-columns: 1fr;
  }

  .panel-header {
    align-items: flex-start;
    gap: 0.6rem;
  }

  .panel-header-link {
    width: 100%;
    justify-content: center;
  }
}

/* ===========================================================================
 * Dashboard experience refresh
 * ======================================================================= */

:root {
  --border-control: #64748b;
  --surface: #0b1220;
  --surface-raised: #111b2e;
  --surface-muted: #172033;
  --focus-color: #7dd3fc;
}

body {
  background:
    radial-gradient(circle at 12% -10%, rgba(37, 99, 235, 0.17), transparent 34rem),
    radial-gradient(circle at 92% 4%, rgba(14, 165, 233, 0.08), transparent 30rem),
    #050914;
  overflow-x: clip;
}

main {
  display: block;
  min-width: 0;
}

.page-wrapper > *,
main > * {
  min-width: 0;
  max-width: 100%;
}

.skip-link {
  position: fixed;
  top: 0.75rem;
  left: 0.75rem;
  z-index: 100;
  padding: 0.7rem 1rem;
  border-radius: 0.6rem;
  background: #f8fafc;
  color: #0f172a;
  font-weight: 700;
  text-decoration: none;
  transform: translateY(-180%);
  transition: transform var(--transition-fast);
}

.skip-link:focus {
  transform: translateY(0);
}

.page-wrapper {
  max-width: 1380px;
  padding: 1rem 1.5rem 3rem;
}

.top-nav {
  padding: 0.55rem 0.7rem 0.55rem 1rem;
  border-color: rgba(100, 116, 139, 0.62);
  background: rgba(8, 15, 28, 0.92);
  box-shadow: 0 12px 32px rgba(2, 6, 23, 0.45);
}

.brand,
.nav-links a,
.button,
.button-link,
.panel-header-link,
.sort-button,
select,
input[type='search'],
input[type='text'] {
  min-height: 2.75rem;
}

.nav-links a {
  display: inline-flex;
  align-items: center;
  padding-inline: 0.7rem;
}

.brand:focus-visible,
.hero-download:focus-visible,
.status-details:focus-visible,
.nav-links a:focus-visible,
.button:focus-visible,
.button-link:focus-visible,
.panel-header-link:focus-visible,
.sort-button:focus-visible,
select:focus-visible,
input[type='search']:focus-visible,
input[type='text']:focus-visible,
summary:focus-visible {
  outline: 3px solid var(--focus-color);
  outline-offset: 3px;
  box-shadow: none;
}

.page-header {
  margin: 2.5rem 0 1.25rem;
}

.page-header-main {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 2rem;
}

.eyebrow {
  margin: 0 0 0.35rem;
  color: #7dd3fc;
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}

h1.section-title {
  max-width: 16ch;
  font-size: clamp(2rem, 5vw, 3.75rem);
  font-weight: 730;
  letter-spacing: -0.045em;
  line-height: 1.02;
}

.page-header-subtitle {
  max-width: 64ch;
  margin-top: 0.9rem;
  color: #cbd5e1;
  font-size: clamp(0.95rem, 1.5vw, 1.08rem);
  line-height: 1.65;
  overflow-wrap: anywhere;
}

.hero-download {
  display: grid;
  flex: 0 0 auto;
  min-width: 14.5rem;
  padding: 0.85rem 1rem;
  border: 1px solid rgba(56, 189, 248, 0.58);
  border-radius: 0.85rem;
  background: rgba(14, 116, 144, 0.16);
  color: #f0f9ff;
  text-decoration: none;
}

.hero-download span {
  font-weight: 700;
}

.hero-download small {
  color: #bae6fd;
}

.hero-download:hover {
  border-color: #7dd3fc;
  background: rgba(14, 116, 144, 0.28);
}

.ioc-lookup {
  margin-bottom: 0.85rem;
  padding: clamp(1rem, 2.5vw, 1.5rem);
  border: 1px solid rgba(56, 189, 248, 0.6);
  border-radius: 1rem;
  background:
    linear-gradient(120deg, rgba(14, 116, 144, 0.16), transparent 55%),
    rgba(8, 15, 28, 0.96);
  box-shadow: 0 20px 55px rgba(2, 6, 23, 0.42);
}

.lookup-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 0.8rem;
}

.lookup-heading h2 {
  margin: 0;
  font-size: clamp(1.2rem, 2vw, 1.55rem);
}

.lookup-heading > p {
  max-width: 34rem;
  color: #aebdd0;
  font-size: 0.82rem;
  text-align: right;
  overflow-wrap: anywhere;
}

.lookup-form {
  gap: 0.65rem;
}

input.lookup-input,
.lookup-form .button-link {
  min-height: 3.35rem;
}

input.lookup-input {
  padding-inline: 1rem;
  border-color: var(--border-control);
  border-radius: 0.75rem;
  background: rgba(2, 6, 23, 0.88);
  font-size: 1rem;
}

.lookup-form .button-link,
.button.primary,
.button-link.primary {
  justify-content: center;
  border-color: #38bdf8;
  border-radius: 0.7rem;
  background: #0ea5e9;
  color: #03131d;
  font-weight: 750;
  box-shadow: none;
}

.lookup-form .button-link:hover,
.button.primary:hover,
.button-link.primary:hover {
  background: #7dd3fc;
  border-color: #bae6fd;
}

.lookup-result {
  margin-top: 0.8rem;
  padding: 1rem;
  border-radius: 0.8rem;
}

.lookup-hit-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}

.lookup-indicator {
  display: block;
  margin: 0.7rem 0;
  overflow-wrap: anywhere;
  color: #f8fafc;
  font-size: 0.94rem;
}

.lookup-detail-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.6rem;
  margin: 0.8rem 0;
}

.lookup-detail-grid div {
  padding: 0.6rem;
  border-radius: 0.55rem;
  background: rgba(2, 6, 23, 0.42);
}

.lookup-detail-grid dt {
  color: #94a3b8;
  font-size: 0.7rem;
  text-transform: uppercase;
}

.lookup-detail-grid dd {
  margin: 0.15rem 0 0;
  color: #f1f5f9;
  overflow-wrap: anywhere;
}

.lookup-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.status-banner {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  gap: 1rem;
  margin-bottom: 1rem;
  padding: 0.8rem 1rem;
  border-color: rgba(100, 116, 139, 0.55);
  background: rgba(8, 15, 28, 0.82);
  box-shadow: none;
}

.status-banner:hover {
  transform: none;
  box-shadow: none;
}

.status-banner[data-state='loading'] .status-dot,
.status-banner[data-state='unknown'] .status-dot {
  background: #38bdf8;
  box-shadow: 0 0 0 4px rgba(56, 189, 248, 0.12);
}

.status-banner[data-state='degraded'] .status-dot,
.status-banner[data-state='cache-stale'] .status-dot {
  background: var(--warning);
  box-shadow: 0 0 0 4px var(--warning-subtle);
}

.status-banner[data-state='error'] .status-dot {
  background: var(--danger);
  box-shadow: 0 0 0 4px var(--danger-subtle);
}

.status-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(7.5rem, 1fr));
  gap: 0.7rem;
  margin: 0;
}

.status-meta div {
  min-width: 0;
}

.status-meta dt {
  color: #94a3b8;
  font-size: 0.68rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.status-meta dd {
  margin: 0.08rem 0 0;
  color: #e2e8f0;
  font-size: 0.78rem;
  overflow-wrap: anywhere;
}

.status-details {
  align-self: center;
  color: #7dd3fc;
  font-size: 0.78rem;
  white-space: nowrap;
}

.metrics-strip {
  gap: 0.75rem;
}

.metric-card,
.panel,
.table-card,
.top-threats,
.score-distribution {
  border-color: rgba(71, 85, 105, 0.68);
  background: rgba(10, 17, 30, 0.88);
  box-shadow: 0 16px 40px rgba(2, 6, 23, 0.28);
}

.metric-card:hover,
.table-card:hover {
  transform: none;
}

.metric-value {
  font-size: clamp(1.5rem, 3vw, 2.15rem);
}

.metric-card-accent {
  border-color: rgba(248, 113, 113, 0.55);
  background: rgba(69, 10, 10, 0.18);
}

.dashboard-main {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1rem;
}

.dashboard-main .panel {
  height: auto;
}

.summary-tables {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.summary-tables .table-card {
  max-height: 22rem;
}

.preview-panel {
  gap: 0.8rem;
}

.preview-toolbar {
  position: sticky;
  top: 4.6rem;
  z-index: 5;
  display: grid;
  gap: 0.7rem;
  margin: -0.15rem -0.15rem 0;
  padding: 0.75rem;
  border: 1px solid rgba(71, 85, 105, 0.72);
  border-radius: 0.8rem;
  background: rgba(8, 15, 28, 0.97);
  backdrop-filter: blur(14px);
}

.toolbar-search {
  display: grid;
  grid-template-columns: auto minmax(14rem, 1fr);
  align-items: center;
  gap: 0.8rem;
}

.toolbar-search label,
.toolbar-group > span {
  color: #cbd5e1;
  font-size: 0.73rem;
  font-weight: 650;
}

.toolbar-search input {
  width: 100%;
}

.preview-toolbar .toolbar-controls {
  display: grid;
  grid-template-columns: repeat(5, minmax(8rem, 1fr));
  align-items: end;
  gap: 0.5rem;
}

.mobile-sort {
  display: none;
}

.preview-toolbar .toolbar-group {
  min-width: 0;
}

.facet-menu {
  position: relative;
  min-width: 0;
}

.facet-menu summary {
  display: grid;
  min-height: 2.75rem;
  padding: 0.38rem 2rem 0.38rem 0.65rem;
  border: 1px solid var(--border-control);
  border-radius: 0.55rem;
  background: #0b1323;
  cursor: pointer;
  list-style: none;
}

.facet-menu summary::-webkit-details-marker {
  display: none;
}

.facet-menu summary::after {
  content: '⌄';
  position: absolute;
  top: 0.75rem;
  right: 0.7rem;
  color: #94a3b8;
}

.facet-menu[open] summary {
  border-color: #7dd3fc;
}

.facet-menu[open] summary::after {
  content: '⌃';
}

.facet-menu summary span {
  color: #94a3b8;
  font-size: 0.65rem;
  line-height: 1.05;
}

.facet-menu summary strong {
  overflow: hidden;
  color: #e2e8f0;
  font-size: 0.75rem;
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.facet-menu fieldset {
  position: absolute;
  top: calc(100% + 0.35rem);
  left: 0;
  z-index: 20;
  display: grid;
  width: max-content;
  min-width: 100%;
  max-width: min(22rem, calc(100vw - 2rem));
  max-height: 18rem;
  gap: 0.15rem;
  margin: 0;
  padding: 0.45rem;
  overflow: auto;
  border: 1px solid #64748b;
  border-radius: 0.65rem;
  background: #0b1323;
  box-shadow: 0 18px 40px rgba(2, 6, 23, 0.72);
}

.facet-menu[data-facet-menu='scoreBands'] fieldset,
.facet-menu[data-facet-menu='ageBands'] fieldset {
  right: 0;
  left: auto;
}

.facet-menu fieldset:disabled {
  opacity: 0.5;
  pointer-events: none;
}

.facet-menu fieldset label {
  display: flex;
  align-items: center;
  min-height: 2.25rem;
  gap: 0.55rem;
  padding: 0.35rem 0.45rem;
  border-radius: 0.4rem;
  color: #dbeafe;
  cursor: pointer;
  font-size: 0.75rem;
  white-space: nowrap;
}

.facet-menu fieldset label:hover {
  background: #1e293b;
}

.facet-menu input[type='checkbox'] {
  width: 1rem;
  height: 1rem;
  accent-color: #38bdf8;
}

.toolbar-group select,
.toolbar-search input {
  width: 100%;
  border-color: var(--border-control);
  border-radius: 0.55rem;
  background: #0b1323;
  box-shadow: none;
}

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: 0.55rem 0.8rem;
  border: 1px solid var(--border-control);
  border-radius: 0.6rem;
  background: #111b2e;
  color: #e2e8f0;
  cursor: pointer;
  font-size: 0.78rem;
  text-decoration: none;
}

.button.ghost {
  background: transparent;
}

.button:hover {
  border-color: #94a3b8;
  background: #1e293b;
}

.button:disabled,
.button-link:disabled {
  cursor: not-allowed;
  opacity: 0.48;
}

.clear-filters {
  white-space: nowrap;
}

.clear-filters span {
  display: inline-grid;
  min-width: 1.25rem;
  min-height: 1.25rem;
  place-items: center;
  border-radius: 999px;
  background: #334155;
  font-size: 0.68rem;
}

.toolbar-export-note {
  align-self: center;
  color: #94a3b8;
  font-size: 0.68rem;
  line-height: 1.35;
}

.preview-table-wrapper {
  position: relative;
  min-height: 18rem;
  max-height: 66vh;
  border-color: rgba(71, 85, 105, 0.7);
  background: #070d19;
}

.preview-table {
  font-size: 0.78rem;
}

.preview-table th,
.preview-table td {
  padding: 0.65rem 0.7rem;
}

.preview-table thead th {
  background: #10192a;
}

.preview-table th:nth-child(1) { width: 34%; }
.preview-table th:nth-child(2) { width: 8%; }
.preview-table th:nth-child(3) { width: 12%; }
.preview-table th:nth-child(4) { width: 14%; }
.preview-table th:nth-child(5) { width: 17%; }
.preview-table th:nth-child(6) { width: 15%; }

.sort-button {
  width: 100%;
  justify-content: space-between;
  padding: 0;
  border: 0;
  background: transparent;
  color: #cbd5e1;
  cursor: pointer;
  font: inherit;
  font-weight: 700;
  text-align: left;
}

.sort-button span {
  color: #7dd3fc;
}

.preview-indicator-main code {
  font-size: 0.78rem;
}

.preview-indicator-tags span,
.preview-meta-pill,
.threat-tags span,
.threat-score-label {
  font-size: 0.72rem;
}

.preview-row-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.35rem;
}

.row-actions-menu {
  position: relative;
}

.row-actions-menu > summary {
  display: inline-grid;
  min-width: 2.5rem;
  place-items: center;
  list-style: none;
  cursor: pointer;
  font-size: 1rem;
  letter-spacing: 0.08em;
}

.row-actions-menu > summary::-webkit-details-marker {
  display: none;
}

.row-actions-menu[open] > summary,
.queue-action[aria-pressed='true'] {
  border-color: #72dba5;
  background: rgba(27, 94, 65, 0.32);
  color: #d8ffea;
}

.row-actions-menu-items {
  position: absolute;
  z-index: 20;
  top: calc(100% + 0.35rem);
  right: 0;
  display: grid;
  min-width: 11rem;
  padding: 0.35rem;
  border: 1px solid #4b5f50;
  border-radius: 0.6rem;
  background: #171d18;
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.48);
}

.row-actions-menu-items .button {
  width: 100%;
  justify-content: flex-start;
  border-color: transparent;
  text-align: left;
  white-space: nowrap;
}

.row-actions-menu-items .button:hover,
.row-actions-menu-items .button:focus-visible {
  border-color: #4b5f50;
  background: #293229;
}

.row-action {
  min-height: 2.25rem;
  padding: 0.3rem 0.55rem;
  font-size: 0.72rem;
}

.score-display {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  white-space: nowrap;
}

.score-number {
  min-width: 2.15rem;
  padding: 0.15rem 0.38rem;
  border: 1px solid currentColor;
  border-radius: 0.35rem;
  text-align: center;
  font-weight: 800;
}

.score-band {
  color: #cbd5e1;
  font-size: 0.7rem;
}

.preview-detail-row td {
  padding: 0;
  background: #0b1323;
}

.preview-row-detail {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr 1.4fr;
  gap: 0.8rem;
  padding: 0.85rem 1rem;
  border-top: 1px solid rgba(71, 85, 105, 0.65);
}

.preview-row-detail dl {
  margin: 0;
}

.preview-row-detail dt {
  color: #94a3b8;
  font-size: 0.68rem;
  text-transform: uppercase;
}

.preview-row-detail dd {
  margin: 0.2rem 0 0;
  color: #e2e8f0;
  overflow-wrap: anywhere;
}

.score-explanation {
  color: #cbd5e1;
  font-size: 0.74rem;
  line-height: 1.45;
}

.preview-state {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 0.75rem;
  padding: 1.5rem;
  background: rgba(7, 13, 25, 0.97);
  color: #cbd5e1;
  text-align: center;
}

.preview-state[hidden] {
  display: none;
}

.preview-state-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem;
}

.preview-state-actions[hidden] {
  display: none;
}

.preview-skeleton {
  display: grid;
  width: min(36rem, 90%);
  gap: 0.55rem;
}

.preview-skeleton span {
  display: block;
  height: 0.8rem;
  border-radius: 999px;
  background: linear-gradient(90deg, #172033 25%, #24324a 50%, #172033 75%);
  background-size: 200% 100%;
  animation: preview-skeleton 1.2s ease-in-out infinite;
}

.preview-skeleton span:nth-child(2) { width: 78%; }
.preview-skeleton span:nth-child(3) { width: 92%; }
.preview-skeleton span:nth-child(4) { width: 66%; }

.preview-state:not([data-state='loading']) .preview-skeleton {
  display: none;
}

[data-preview-container][data-loading='true'] .preview-table-wrapper::after {
  display: none;
}

.preview-status {
  min-height: 1.4rem;
  margin: 0;
  font-size: 0.76rem;
}

.preview-summary {
  font-size: 0.74rem;
}

.top-threats,
#exports {
  margin-top: 1rem;
  padding: 1rem;
}

.toast {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 80;
  max-width: min(24rem, calc(100vw - 2rem));
  padding: 0.75rem 0.9rem;
  border: 1px solid #38bdf8;
  border-radius: 0.65rem;
  background: #0b1323;
  color: #e0f2fe;
  box-shadow: 0 16px 36px rgba(2, 6, 23, 0.6);
}

.toast[hidden] {
  display: none;
}

@media (max-width: 1100px) {
  .status-banner {
    grid-template-columns: auto minmax(0, 1fr) auto;
  }

  .status-meta {
    grid-template-columns: repeat(2, minmax(8rem, 1fr));
  }

  .trend-sparkline {
    display: none;
  }

  .preview-toolbar .toolbar-controls {
    grid-template-columns: repeat(4, minmax(8rem, 1fr));
  }
}

@media (max-width: 820px) {
  .top-nav {
    position: static;
    flex-direction: row;
    align-items: center;
  }

  .nav-links {
    width: auto;
  }

  .page-header-main,
  .lookup-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .lookup-heading > p {
    text-align: left;
  }

  .hero-download {
    width: 100%;
  }

  .summary-tables {
    grid-template-columns: 1fr;
  }

  .preview-toolbar {
    position: static;
  }

  .preview-row-detail {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .mobile-sort {
    display: inline-flex;
  }

  .preview-table-wrapper {
    max-height: none;
    overflow: visible;
    border: 0;
    background: transparent;
  }

  .preview-table tbody {
    gap: 0.75rem;
  }

  .preview-table tr:not(.preview-detail-row) {
    padding: 0.85rem;
    box-shadow: none;
    background: #0b1323;
  }

  .preview-table td {
    grid-template-columns: minmax(5.5rem, 7rem) minmax(0, 1fr);
  }

  .preview-table td:first-child,
  .preview-table td:nth-child(3),
  .preview-table td:last-child {
    grid-template-columns: 1fr;
  }

  .preview-table td:nth-child(4) {
    display: none;
  }

  .preview-table td:last-child::before {
    display: none;
  }

  .summary-tables tbody th[scope='row'] {
    display: block;
    padding: 0.3rem 0.4rem;
  }

  .preview-row-actions {
    justify-content: stretch;
  }

  .preview-row-actions .button {
    flex: 0 0 auto;
  }

  .preview-row-actions .queue-action { flex: 1; }

  .row-actions-menu-items {
    right: 0;
    min-width: min(13rem, calc(100vw - 3rem));
  }

  .preview-detail-row {
    margin-top: -0.9rem;
  }

  .preview-detail-row td {
    display: block;
  }

  .preview-row-detail {
    grid-template-columns: 1fr;
    border: 1px solid rgba(71, 85, 105, 0.65);
    border-top: 0;
    border-radius: 0 0 0.8rem 0.8rem;
  }
}

@media (max-width: 640px) {
  .page-wrapper {
    padding: 0.75rem 0.75rem 2rem;
  }

  .top-nav {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0.45rem;
    overflow: hidden;
  }

  .brand-tagline {
    display: none;
  }

  .nav-links {
    width: 100%;
    min-width: 0;
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 0.15rem;
    scrollbar-width: none;
  }

  .nav-links::-webkit-scrollbar {
    display: none;
  }

  .nav-links a {
    flex: 0 0 auto;
  }

  .page-header {
    margin-top: 1.6rem;
  }

  .lookup-form {
    grid-template-columns: 1fr;
  }

  .lookup-form .button-link {
    width: 100%;
  }

  .lookup-detail-grid,
  .status-meta {
    grid-template-columns: 1fr 1fr;
  }

  .status-banner {
    grid-template-columns: 1fr;
    align-items: start;
  }

  .status-details {
    justify-self: start;
  }

  .metrics-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .preview-toolbar .toolbar-controls {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .toolbar-search {
    grid-template-columns: 1fr;
    gap: 0.25rem;
  }

  .clear-filters {
    width: 100%;
  }
}

@media (max-width: 440px) {
  .metrics-strip,
  .preview-toolbar .toolbar-controls,
  .lookup-detail-grid,
  .status-meta {
    grid-template-columns: 1fr;
  }
}

/* Browser-local case building for repeated analyst triage. */
.investigation-workspace {
  margin-bottom: 1rem;
  padding: 1rem;
  border: 1px solid rgba(167, 139, 250, 0.62);
  border-radius: 1rem;
  background:
    linear-gradient(120deg, rgba(109, 40, 217, 0.15), transparent 54%),
    rgba(8, 15, 28, 0.96);
  box-shadow: 0 16px 40px rgba(2, 6, 23, 0.3);
}

.investigation-workspace[hidden] {
  display: none;
}

.investigation-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
}

.investigation-heading h2 {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0;
  font-size: clamp(1.15rem, 2vw, 1.45rem);
}

.investigation-heading p:last-child {
  color: #b8c5d8;
  font-size: 0.8rem;
}

.investigation-count {
  display: inline-grid;
  min-width: 1.6rem;
  min-height: 1.6rem;
  padding-inline: 0.35rem;
  place-items: center;
  border: 1px solid rgba(196, 181, 253, 0.48);
  border-radius: 999px;
  background: rgba(109, 40, 217, 0.25);
  color: #ede9fe;
  font-size: 0.75rem;
}

.investigation-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 0.45rem;
}

.button.danger {
  border-color: rgba(248, 113, 113, 0.62);
  color: #fecaca;
}

.button.detection-export {
  border-color: rgba(34, 211, 238, 0.58);
  background: linear-gradient(135deg, rgba(8, 145, 178, 0.16), rgba(109, 40, 217, 0.12));
  color: #cffafe;
}

.button.detection-export:hover {
  border-color: rgba(103, 232, 249, 0.9);
  box-shadow: 0 0 20px rgba(34, 211, 238, 0.14);
}

/* Relationship map for campaign-oriented analyst pivots. */
.campaign-graph-section {
  margin-bottom: 1rem;
  overflow: hidden;
  border-color: rgba(34, 211, 238, 0.48);
  background:
    radial-gradient(circle at 34% 45%, rgba(8, 145, 178, 0.11), transparent 38%),
    radial-gradient(circle at 82% 20%, rgba(109, 40, 217, 0.13), transparent 32%),
    rgba(8, 15, 28, 0.96);
}

.campaign-graph-header {
  align-items: flex-start;
  gap: 1.25rem;
  padding: 1rem 1.1rem;
}

.campaign-graph-header > div:first-child {
  max-width: 48rem;
}

.campaign-graph-header .panel-title {
  margin-top: 0.12rem;
  font-size: clamp(1.2rem, 2vw, 1.55rem);
}

.campaign-graph-header .panel-subtitle {
  margin-top: 0.3rem;
  line-height: 1.5;
}

.campaign-controls {
  display: grid;
  grid-template-columns: repeat(2, minmax(9rem, 1fr)) auto;
  align-items: end;
  gap: 0.35rem 0.5rem;
  min-width: min(100%, 32rem);
}

.campaign-control-field {
  display: grid;
  gap: 0.3rem;
  min-width: 0;
}

.campaign-control-field label {
  color: #94a3b8;
  font-size: 0.68rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.campaign-control-field select {
  width: 100%;
  min-height: 2.35rem;
  border-color: rgba(103, 232, 249, 0.45);
  background: #0b1323;
}

.campaign-graph-body {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(15rem, 1fr);
  min-height: 31rem;
  padding: 0;
}

.campaign-stage {
  position: relative;
  min-width: 0;
  min-height: 31rem;
  overflow: hidden;
  background-image:
    linear-gradient(rgba(56, 189, 248, 0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(56, 189, 248, 0.035) 1px, transparent 1px);
  background-size: 32px 32px;
}

.campaign-stage::after {
  content: '';
  position: absolute;
  inset: 10% 18%;
  pointer-events: none;
  border: 1px solid rgba(34, 211, 238, 0.08);
  border-radius: 50%;
  box-shadow: 0 0 80px rgba(34, 211, 238, 0.06);
}

[data-campaign-graph] {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 31rem;
}

.campaign-stage-stats {
  position: absolute;
  top: 0.7rem;
  left: 0.75rem;
  z-index: 3;
  display: grid;
  grid-template-columns: repeat(4, minmax(4.2rem, auto));
  gap: 0.35rem;
  margin: 0;
  padding: 0.38rem;
  border: 1px solid rgba(71, 85, 105, 0.56);
  border-radius: 0.75rem;
  background: rgba(2, 6, 23, 0.82);
  box-shadow: 0 12px 28px rgba(2, 6, 23, 0.28);
  backdrop-filter: blur(12px);
}

.campaign-stage-stats div {
  padding: 0.25rem 0.42rem;
  text-align: center;
}

.campaign-stage-stats dt {
  color: #7f91aa;
  font-size: 0.56rem;
  letter-spacing: 0.045em;
  text-transform: uppercase;
}

.campaign-stage-stats dd {
  margin: 0.1rem 0 0;
  color: #e0f2fe;
  font: 750 0.78rem/1 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

.campaign-edge {
  stroke-width: 1.15;
  stroke-dasharray: 3 5;
  opacity: 0.48;
  animation: campaign-edge-in 620ms ease both;
  animation-delay: var(--edge-delay, 0ms);
  transition: opacity 180ms ease, stroke-width 180ms ease;
}

.campaign-edge.tag { stroke: #a78bfa; }
.campaign-edge.source { stroke: #22d3ee; }
.campaign-edge.is-connected { stroke-width: 2.6; opacity: 1; }
.campaign-edge.is-dimmed { opacity: 0.06; }

.campaign-node {
  cursor: pointer;
  opacity: 1;
  animation: campaign-node-in 520ms cubic-bezier(0.22, 1, 0.36, 1) backwards;
  animation-delay: var(--node-delay, 0ms);
  transition: opacity 180ms ease;
}

.campaign-node .campaign-node-core {
  stroke-width: 2;
  transition: r 180ms ease, filter 180ms ease, stroke-width 180ms ease;
}

.campaign-node text {
  pointer-events: none;
  fill: #f8fafc;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 10px;
  font-weight: 750;
}

.campaign-node.pivot text { font-size: 10.5px; }
.campaign-node .campaign-node-subtitle {
  fill: #91a4bd;
  font-size: 7.5px;
  font-weight: 650;
  letter-spacing: 0.025em;
}
.campaign-node.pivot.tag .campaign-node-core { fill: #5b21b6; stroke: #c4b5fd; }
.campaign-node.pivot.source .campaign-node-core { fill: #0e7490; stroke: #a5f3fc; }
.campaign-node.indicator .campaign-node-core { fill: #0f172a; }
.campaign-node.indicator.critical .campaign-node-core { stroke: #fb7185; fill: #4c1024; }
.campaign-node.indicator.elevated .campaign-node-core { stroke: #fbbf24; fill: #3f2a0b; }
.campaign-node.indicator.moderate .campaign-node-core { stroke: #38bdf8; fill: #0c3045; }
.campaign-node.indicator.aging .campaign-node-core { stroke: #64748b; fill: #172033; }
.campaign-corroboration-ring {
  fill: none;
  stroke: rgba(103, 232, 249, 0.42);
  stroke-width: 1;
  stroke-dasharray: 2.4 2.4;
}
.campaign-node:hover .campaign-node-core,
.campaign-node:focus-visible .campaign-node-core,
.campaign-node.is-selected .campaign-node-core {
  stroke-width: 4;
  filter: drop-shadow(0 0 9px rgba(103, 232, 249, 0.8));
}
.campaign-node:focus-visible { outline: none; }
.campaign-node.is-connected { opacity: 1; }
.campaign-node.is-dimmed { opacity: 0.18; }

.campaign-inspector {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  min-width: 0;
  padding: 1.1rem;
  border-left: 1px solid rgba(71, 85, 105, 0.66);
  background: rgba(2, 6, 23, 0.42);
}

.campaign-inspector h3 {
  margin: 0;
  color: #f8fafc;
  font-size: 1.05rem;
  overflow-wrap: anywhere;
}

.campaign-inspector > p:not(.eyebrow) {
  color: #aebed3;
  font-size: 0.78rem;
  line-height: 1.55;
}

.campaign-node-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.4rem;
  margin: 0.15rem 0;
}

.campaign-detail-block {
  display: grid;
  gap: 0.4rem;
}

.campaign-detail-block h4 {
  margin: 0;
  color: #94a3b8;
  font-size: 0.64rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.campaign-tag-list,
.campaign-related-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}

.campaign-tag-list span,
.campaign-related-node {
  max-width: 100%;
  padding: 0.28rem 0.45rem;
  overflow: hidden;
  border: 1px solid rgba(129, 140, 248, 0.38);
  border-radius: 999px;
  background: rgba(76, 29, 149, 0.18);
  color: #ddd6fe;
  font-size: 0.66rem;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.campaign-related-node {
  cursor: pointer;
  border-color: rgba(34, 211, 238, 0.32);
  background: rgba(14, 116, 144, 0.13);
  color: #bae6fd;
}

.campaign-related-node:hover,
.campaign-related-node:focus-visible {
  border-color: #67e8f9;
  outline: none;
  background: rgba(14, 116, 144, 0.28);
}

.campaign-reference {
  align-self: flex-start;
  text-decoration: none;
}

.campaign-node-meta div {
  min-width: 0;
  padding: 0.55rem;
  border: 1px solid rgba(71, 85, 105, 0.56);
  border-radius: 0.55rem;
  background: rgba(15, 23, 42, 0.72);
}

.campaign-node-meta dt {
  color: #94a3b8;
  font-size: 0.6rem;
  text-transform: uppercase;
}

.campaign-node-meta dd {
  margin: 0.15rem 0 0;
  overflow: hidden;
  color: #e2e8f0;
  font-size: 0.75rem;
  text-overflow: ellipsis;
}

.campaign-summary {
  margin-top: auto;
  padding-top: 0.7rem;
  border-top: 1px solid rgba(71, 85, 105, 0.5);
}

.campaign-legend {
  position: absolute;
  bottom: 0.65rem;
  left: 0.75rem;
  z-index: 2;
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 0.8rem;
  padding: 0.38rem 0.5rem;
  border: 1px solid rgba(71, 85, 105, 0.48);
  border-radius: 999px;
  background: rgba(2, 6, 23, 0.78);
  color: #aebed3;
  font-size: 0.65rem;
}

.campaign-legend span { display: inline-flex; align-items: center; gap: 0.3rem; }
.legend-node { width: 0.55rem; height: 0.55rem; border-radius: 50%; }
.legend-node.tag { background: #a78bfa; }
.legend-node.source { background: #22d3ee; }
.legend-node.indicator { background: #f97316; }

.campaign-empty {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: grid;
  place-content: center;
  gap: 0.3rem;
  padding: 2rem;
  color: #e2e8f0;
  text-align: center;
}

.campaign-empty span { color: #94a3b8; font-size: 0.78rem; }

@media (max-width: 900px) {
  .campaign-graph-header { flex-direction: column; }
  .campaign-controls { width: 100%; }
  .campaign-graph-body { grid-template-columns: 1fr; }
  .campaign-inspector {
    border-top: 1px solid rgba(71, 85, 105, 0.66);
    border-left: 0;
  }
  .campaign-stage,
  [data-campaign-graph] { min-height: 25rem; height: 25rem; }
}

@media (max-width: 540px) {
  .campaign-graph-header { padding: 0.85rem; }
  .campaign-controls { grid-template-columns: 1fr; }
  .campaign-controls .button { width: 100%; }
  .campaign-stage,
  [data-campaign-graph] { min-height: 22rem; height: 22rem; }
  .campaign-stage-stats {
    right: 0.65rem;
    left: 0.65rem;
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .campaign-stage-stats div { padding-inline: 0.15rem; }
  .campaign-stage-stats dt { font-size: 0.5rem; }
  .campaign-node-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .campaign-legend { right: 0.75rem; border-radius: 0.65rem; }
}

.investigation-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
  margin: 0.85rem 0 0;
  padding: 0;
  list-style: none;
}

.investigation-list li {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 0.65rem;
  padding: 0.6rem 0.7rem;
  border: 1px solid rgba(100, 116, 139, 0.56);
  border-radius: 0.65rem;
  background: rgba(2, 6, 23, 0.48);
}

.investigation-identity {
  display: grid;
  min-width: 0;
}

.investigation-identity code {
  overflow: hidden;
  color: #f8fafc;
  font-size: 0.78rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.investigation-identity span {
  overflow: hidden;
  color: #94a3b8;
  font-size: 0.68rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.queue-action[aria-pressed='true'] {
  border-color: rgba(167, 139, 250, 0.75);
  background: rgba(109, 40, 217, 0.2);
  color: #ede9fe;
}

@media (max-width: 820px) {
  .investigation-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .investigation-actions {
    justify-content: flex-start;
  }

  .investigation-list {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 520px) {
  .investigation-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .investigation-actions .button {
    width: 100%;
  }
}

/* Always honor programmatic visibility, including inside disclosures. */
[hidden] { display: none !important; }

/* Discovery desk: readable evidence first, actions within reach. */
.discovery-desk {
  margin-block: 1.5rem;
  padding: clamp(1rem, 3vw, 2rem);
  border: 1px solid #33465d;
  border-radius: 1.2rem;
  background: radial-gradient(ellipse at 90% 0, #12354b80, transparent 55%), #0a1422;
}
.discovery-heading { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; }
.discovery-heading h2 { font-size: clamp(1.65rem, 3vw, 2.5rem); letter-spacing: -0.04em; margin: 0.25rem 0 0.65rem; }
.discovery-heading p:not(.eyebrow) { max-width: 44rem; color: #afc1d5; line-height: 1.6; }
.discovery-heading > a { flex-shrink: 0; text-decoration: none; }
.discovery-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin-top: 1.3rem; }
.discovery-lenses { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.discovery-lenses button { padding: 0.7rem 0.9rem; border: 1px solid #3a4a61; border-radius: 0.6rem; color: #b8cce1; background: #0b1728; cursor: pointer; transition: background 160ms ease, color 160ms ease; }
.discovery-lenses button[aria-pressed='true'] { background: #b2f4e4; border-color: #b2f4e4; color: #08352d; font-weight: 700; }
.discovery-lenses button:hover { border-color: #b2f4e4; }
.discovery-lenses button:focus-visible, .discovery-card summary:focus-visible { outline: 2px solid #b2f4e4; outline-offset: 4px; }
.discovery-status { margin-block: 1rem; color: #92abc4; font-size: 0.78rem; }
.discovery-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.85rem; align-items: stretch; }
.discovery-card { display: flex; flex-direction: column; min-width: 0; padding: 1.15rem; border: 1px solid #314359; border-radius: 0.8rem; background: #101d2d; transition: border-color 180ms ease, transform 180ms ease; }
.discovery-card:hover { border-color: #649f9a; transform: translateY(-2px); }
.discovery-card-top { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem; color: #91a8c0; font-size: 0.7rem; }
.discovery-score { margin-left: auto; color: #c8e9f0; }
.discovery-card h3 { margin-block: 1rem; font-family: ui-monospace, monospace; font-size: 0.92rem; line-height: 1.5; overflow-wrap: anywhere; }
.discovery-reason-label { color: #b2f4e4; font-size: 0.78rem; font-weight: 650; overflow-wrap: anywhere; }
.discovery-reason { color: #b7c6d8; line-height: 1.6; font-size: 0.78rem; overflow-wrap: anywhere; }
.discovery-card details { border-top: 1px solid #314359; margin-top: 0.8rem; padding-block: 0.8rem; color: #b7c6d8; font-size: 0.76rem; overflow-wrap: anywhere; }
.discovery-card details p { margin-top: 0.8rem; line-height: 1.6; }
.discovery-card summary { cursor: pointer; color: #d4e1ed; padding-block: 0.25rem; }
.discovery-card-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: auto; }
.discovery-card-actions button { min-height: 2.5rem; }
.discovery-empty { padding: 2rem 1rem; border: 1px dashed #4b657b; border-radius: 0.8rem; color: #b7c6d8; line-height: 1.6; }
.discovery-scope { margin: 1.25rem 0 0; max-width: 65rem; color: #91a8c0; font-size: 0.74rem; line-height: 1.6; }
@media (max-width: 1050px) { .discovery-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) {
  .discovery-heading { align-items: start; flex-direction: column; gap: 0.5rem; }
  .discovery-cards { grid-template-columns: minmax(0, 1fr); }
  .discovery-lenses { display: grid; width: 100%; grid-template-columns: minmax(0, 1fr); }
  .discovery-lenses button { text-align: left; }
  .discovery-toolbar > button { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .discovery-card, .discovery-lenses button, .campaign-node, .campaign-node-core { transition: none !important; }
  .discovery-card:hover { transform: none; }
}

/* Vulnerabilities are evidence records, separate from observable campaign pivots. */
.vulnerability-cards { align-items: start; }
.vulnerability-desk { scroll-margin-top: 6rem; border-color: #706149; background: radial-gradient(ellipse at 100% 0, #42351d55, transparent 60%), #0c1826; }
.vulnerability-toolbar { display: flex; flex-wrap: wrap; align-items: end; gap: 1rem; margin-block: 1.5rem; }
.vulnerability-toolbar label { display: grid; flex: 1 1 16rem; gap: 0.5rem; color: #b7c6d8; font-size: 0.8rem; min-width: 0; }
.vulnerability-toolbar input, .vulnerability-toolbar select { width: 100%; min-width: 0; box-sizing: border-box; min-height: 2.8rem; padding: 0.7rem; background: #111d2c; color: #eef3f8; border: 1px solid #64748b; border-radius: 0.5rem; font: inherit; }
.vulnerability-toolbar :focus-visible { outline: 2px solid #f5d195; outline-offset: 3px; }
.vulnerability-card[data-exploitation="known_exploited"] { border-top: 3px solid #f2b96b; }
.vulnerability-evidence { color: #cad7e6; font-size: 0.73rem; line-height: 1.5; margin: 0; }
.vulnerability-card[data-exploitation="known_exploited"] .vulnerability-evidence { color: #f5cd97; }
.vulnerability-title { color: #e4ecf5; font-size: 0.9rem; line-height: 1.5; margin-top: 0; overflow-wrap: anywhere; }
.vulnerability-meta { color: #aebfd2; font-size: 0.76rem; line-height: 1.6; overflow-wrap: anywhere; }
.vulnerability-card > button { margin-top: auto; align-self: start; }
.vulnerability-pagination { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 1rem; margin-block: 1.25rem; color: #b7c6d8; font-size: 0.8rem; }
@media (max-width: 650px) { .vulnerability-toolbar { flex-direction: column; align-items: stretch; } .vulnerability-toolbar label { flex-basis: auto; } }

.vulnerability-views { margin-top: 1.5rem; }
.vulnerability-views [data-group-linked-count]:not(:empty)::before { content: "· "; }
.vulnerability-group-tools { display: flex; flex-wrap: wrap; align-items: end; gap: .75rem; margin: .85rem 0 0; padding: .75rem 0; border-block: 1px solid var(--border-soft); background: transparent; }
.vulnerability-group-tools label { display: grid; gap: .35rem; color: var(--text-muted); font-size: .78rem; }
.vulnerability-group-tools select { min-height: 2.7rem; min-width: min(18rem, 100%); padding: .6rem; border: 1px solid var(--border-control); border-radius: .3rem; background: var(--bg-color); color: var(--text-primary); font: inherit; }
.vulnerability-group-tools .vulnerability-group-only { display: flex; align-items: center; gap: .55rem; min-height: 2.7rem; }
.vulnerability-group-tools p { flex: 1 1 24rem; margin: 0 0 .1rem; color: var(--text-muted); font-size: .73rem; line-height: 1.5; }
.vulnerability-group-evidence { margin: .45rem 0 0; padding: 0; border: 1px solid var(--border-soft); border-radius: .3rem; background: #252a25; }
.discovery-card .vulnerability-group-evidence { border-top: 1px solid var(--border-soft); padding: 0; }
.vulnerability-group-evidence > summary { padding: .65rem .75rem; color: var(--accent-soft); font-weight: 650; list-style-position: inside; }
.vulnerability-group-evidence[open] > summary { border-bottom: 1px solid var(--border-soft); }
.vulnerability-group-evidence-body { padding: .55rem .75rem .75rem; }
.vulnerability-group-evidence p { margin: .25rem 0; color: var(--text-muted); font-size: .76rem; line-height: 1.55; overflow-wrap: anywhere; }
.vulnerability-group-chips { display: flex; flex-wrap: wrap; gap: .35rem; margin: .5rem 0; }
.vulnerability-group-chips a { padding: .2rem .42rem; border: 1px solid var(--border-control); border-radius: .35rem; color: var(--accent-soft); font-size: .76rem; }
.vulnerability-signal-row { display: flex; flex-wrap: wrap; gap: .35rem; margin: .5rem 0; }
.vulnerability-signal { padding: .2rem .42rem; border: 1px solid var(--border-soft); border-radius: 999px; color: var(--text-muted); font-size: .7rem; }
@media (max-width: 650px) { .vulnerability-group-tools { align-items: stretch; } .vulnerability-group-tools > * { width: 100%; } .vulnerability-group-tools select { min-width: 0; width: 100%; } }
.vulnerability-dates { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .4rem .8rem; padding: 0.65rem 0.8rem; margin-top: 0.8rem; border-left: 2px solid #75b9d2; background: #132739; color: #c0d5e8; font-size: 0.72rem; line-height: 1.45; }
.vulnerability-dates p { margin: 0; }
.vulnerability-rejected-control { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8rem; color: #b7c6d8; }
.vulnerability-caution, .vulnerability-freshness { padding: 0.75rem; border: 1px solid #806739; border-radius: 0.5rem; background: #342a1955; color: #f1d6a6; font-size: 0.76rem; line-height: 1.6; }
.vulnerability-action { color: #d6e6ef; font-size: 0.8rem; line-height: 1.6; overflow-wrap: anywhere; }

/* Group-linked CVEs are analyst records: give them room to scan and defer receipts until requested. */
.vulnerability-desk[data-vulnerability-group-mode="true"] .vulnerability-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.vulnerability-desk[data-vulnerability-group-mode="true"] .vulnerability-card { padding: 1rem; }
.vulnerability-desk[data-vulnerability-group-mode="true"] .vulnerability-card h3 { margin: .65rem 0 .45rem; font-size: 1rem; }
.vulnerability-desk[data-vulnerability-group-mode="true"] .vulnerability-title { min-height: 2.7em; margin-bottom: .7rem; }
.vulnerability-desk[data-vulnerability-group-mode="true"] .vulnerability-signal-row { margin: .65rem 0 .35rem; }
.vulnerability-card-footer { display: flex; align-items: center; flex-wrap: wrap; gap: .6rem; margin-top: auto; padding-top: .8rem; }
.vulnerability-card-footer p { flex: 1 1 12rem; margin: 0; }
.vulnerability-card-footer .button { margin-left: auto; }
@media (max-width: 820px) {
  .vulnerability-desk[data-vulnerability-group-mode="true"] .vulnerability-cards { grid-template-columns: minmax(0, 1fr); }
  .vulnerability-dates { grid-template-columns: minmax(0, 1fr); }
}

/* Analyst desk: warm graphite, restrained olive accents, clear section hierarchy.
   Severity colors retain their meaning; decorative surfaces stay neutral. */
:root {
  --bg-color: #191c19;
  --bg-gradient: #191c19;
  --card-bg-soft: #202420;
  --card-bg-strong: #252a25;
  --border-subtle: #303730;
  --border-soft: #424b41;
  --border-strong: #7e8b78;
  --border-control: #65705f;
  --accent: #bfcc9b;
  --accent-soft: #d2deaf;
  --accent-subtle: #323c2d;
  --text-primary: #e4e6dc;
  --text-strong: #f2f1e8;
  --text-muted: #a9b0a3;
  --text-soft: #a9b0a3;
  --focus-color: #d2deaf;
  --focus-ring: 0 0 0 2px #d2deaf;
  --shadow-soft: none;
  --shadow-subtle: none;
  --radius-card: 0.45rem;
}
body { background: var(--bg-color); }
.page-wrapper { max-width: 1280px; padding: 0 2rem 2rem; }
.top-nav {
  top: 0; margin: 0; padding: 0.65rem 0;
  border: 0; border-bottom: 1px solid var(--border-soft); border-radius: 0;
  background: #191c19f5; box-shadow: none; backdrop-filter: blur(12px);
}
.brand { align-items: center; gap: 0.85rem; }
.brand-mark {
  padding: 0; border: 0; border-radius: 0; background: none;
  color: var(--text-strong); text-transform: none; font-size: 1.25rem;
  letter-spacing: -0.05em; font-weight: 750;
}
.brand-mark::before { content: ''; width: 0.5rem; height: 1.1rem; margin-right: 0.5rem; background: var(--accent); }
.brand-tagline { border-left: 1px solid var(--border-soft); padding-left: 0.85rem; font-size: 0.7rem; }
.nav-links { gap: 0.15rem; }
.nav-links a { border-radius: 0.25rem; border-color: transparent; }
.nav-links a:hover { background: #2c332a; border-color: transparent; transform: none; }
.page-header { margin: 2.75rem 0 1.75rem; padding: 0; min-height: 0; border: 0; background: none; box-shadow: none; }
.page-header-main { align-items: center; gap: 2rem; }
h1.section-title { max-width: none; font-family: Georgia, 'Times New Roman', serif; font-size: clamp(2rem, 3.7vw, 3rem); font-weight: 400; line-height: 1.15; letter-spacing: -0.035em; }
.page-header-subtitle { max-width: 65ch; font-size: 0.92rem; color: var(--text-muted); margin-top: 0.8rem; }
.eyebrow { color: var(--accent); font-size: 0.65rem; letter-spacing: 0.12em; font-weight: 600; margin-bottom: 0.7rem; }
.hero-download { min-width: 0; border: 1px solid var(--border-soft); border-radius: 0.35rem; background: #252b23; padding: 0.8rem 1rem; font-size: 0.8rem; color: var(--text-primary); }
.hero-download small { color: var(--text-muted); }
.hero-download:hover { background: #30392a; border-color: var(--accent); }
.ioc-lookup, .investigation-workspace, .status-banner, .panel, .table-card,
.top-threats, .score-distribution, .delta-strip {
  background: var(--card-bg-soft); border-color: var(--border-soft); border-radius: 0.45rem; box-shadow: none;
}
.ioc-lookup { padding: 1.2rem; }
.lookup-heading { margin-bottom: 0.8rem; align-items: center; }
.lookup-heading h2 { font-size: 1rem; font-weight: 600; }
.lookup-heading > p { font-size: 0.75rem; color: var(--text-muted); }
input.lookup-input { border-radius: 0.3rem; background: var(--bg-color); }
.button, .button-link, .panel-header-link, .hero-download, .export-card { transition: background 140ms ease, border-color 140ms ease; }
.button, .button-link, .button.ghost, .panel-header-link {
  background: #272e25; border-color: var(--border-soft); color: var(--text-primary); border-radius: 0.3rem; box-shadow: none;
}
.button:hover, .button-link:hover, .button.ghost:hover, .panel-header-link:hover { background: #343e2f; border-color: #7e8b78; color: var(--text-strong); transform: none; }
.lookup-form .button-link, .button.primary, .button-link.primary {
  background: var(--accent); border-color: var(--accent); color: #1c2516; border-radius: 0.3rem;
}
.lookup-form .button-link:hover, .button.primary:hover, .button-link.primary:hover { background: #d2deaf; }
.button:disabled, .button-link:disabled { opacity: 0.45; }
.status-banner { padding: 0.85rem 0; border: 0; border-bottom: 1px solid var(--border-soft); border-radius: 0; background: none; gap: 0.75rem; }
.status-meta dt, .status-meta dd { color: var(--text-muted); }
.status-details { color: var(--accent); }
.status-dot { box-shadow: none; }
.metrics-strip { gap: 0; border-bottom: 1px solid var(--border-soft); margin-block: 0 1rem; }
.metric-card, .metric-card-accent { background: none; border: 0; border-radius: 0; box-shadow: none; padding: 1.2rem; }
.metric-card + .metric-card { border-left: 1px solid var(--border-subtle); }
.metric-card:first-child { padding-left: 0; }
.metric-card:hover { background: none; box-shadow: none; transform: none; }
.metric-value, .metric-card-accent .metric-value { color: var(--text-strong); font-size: 1.8rem; font-weight: 500; font-variant-numeric: tabular-nums; }
.metric-label, .metric-caption { color: var(--text-muted); }
.score-distribution { padding: 0.8rem 0; background: none; border: 0; }
.delta-strip { padding: 1rem; }
.delta-copy h2 { font-size: 1rem; }
.delta-copy p:not(.eyebrow) { color: var(--text-muted); }
.discovery-desk { padding: 1.75rem 0; margin: 1.5rem 0; border: 0; border-top: 1px solid var(--border-soft); border-radius: 0; background: none; }
.discovery-heading h2 { font-size: 1.6rem; letter-spacing: -0.03em; font-weight: 550; margin: 0.2rem 0 0.5rem; }
.discovery-heading p:not(.eyebrow), .discovery-reason, .discovery-scope, .discovery-status,
.discovery-card-top, .vulnerability-toolbar label, .vulnerability-rejected-control,
.vulnerability-pagination, .vulnerability-meta { color: var(--text-muted); }
.discovery-lenses { gap: 0.3rem; }
.discovery-lenses button { padding: 0.65rem 0.8rem; min-height: 2.75rem; border-radius: 0.25rem; background: #222720; border-color: var(--border-soft); color: var(--text-muted); font: inherit; font-size: 0.78rem; }
.discovery-lenses button[aria-pressed='true'] { color: #1c2516; background: var(--accent); border-color: var(--accent); }
.discovery-lenses button:hover { border-color: var(--accent); }
.discovery-lenses button:focus-visible, .discovery-card summary:focus-visible, .vulnerability-toolbar :focus-visible { outline-color: var(--accent); }
.discovery-card { padding: 1.1rem; background: var(--card-bg-soft); border-color: var(--border-soft); border-radius: 0.4rem; transition: border-color 140ms ease; }
.discovery-card:hover { transform: none; border-color: #7e8b78; }
.discovery-reason-label, .discovery-score { color: var(--accent); }
.discovery-card details { color: var(--text-muted); border-color: var(--border-soft); }
.discovery-card summary, .vulnerability-title, .vulnerability-action, .vulnerability-evidence { color: var(--text-primary); }
.vulnerability-toolbar { margin-block: 1rem; gap: 0.8rem; }
.vulnerability-toolbar input, .vulnerability-toolbar select { background: var(--bg-color); border-color: var(--border-control); border-radius: 0.3rem; }
.vulnerability-dates { background: #282e25; border-color: var(--accent); color: #c8d0bb; }
.collection-notes { color: var(--text-muted); font-size: 0.78rem; margin-top: 0.75rem; }
.collection-notes summary { padding-block: 0.5rem; cursor: pointer; color: var(--accent); }
.collection-notes .discovery-scope { margin-top: 0.5rem; }
.tool-disclosure { border: 1px solid var(--border-soft); border-radius: 0.4rem; margin-block: 1rem; background: var(--card-bg-soft); }
.tool-disclosure > summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.2rem; cursor: pointer; list-style: none; }
.tool-disclosure > summary::-webkit-details-marker { display: none; }
.tool-disclosure > summary strong { display: block; font-size: 1rem; font-weight: 550; color: var(--text-strong); }
.tool-disclosure > summary small { display: block; color: var(--text-muted); margin-top: 0.25rem; font-size: 0.75rem; }
.tool-disclosure > summary:hover { background: #292f26; }
.disclosure-symbol { color: var(--accent); font-size: 1.5rem; transition: transform 140ms ease; }
.tool-disclosure[open] > summary { border-bottom: 1px solid var(--border-soft); }
.tool-disclosure[open] > summary .disclosure-symbol { transform: rotate(45deg); }
.tool-disclosure > .panel { margin: 0; border: 0; border-radius: 0; }
.panel-header, .table-card-header { background: none; border-color: var(--border-soft); }
.preview-toolbar { position: static; background: #252b23; border-color: var(--border-soft); border-radius: 0.35rem; backdrop-filter: none; }
.toolbar-search input, .toolbar-controls select, .facet-menu summary, .facet-options,
.campaign-controls select { background: var(--bg-color); color: var(--text-primary); border-color: var(--border-control); border-radius: 0.3rem; }
.preview-table thead th, .preview-table td, .preview-detail-row td, .table-card table th,
.table-card table td { border-color: var(--border-subtle); }
.preview-table thead, .preview-table thead th { background: #292f27; }
.preview-table tbody tr, .preview-detail-row td, .lookup-result, .export-card { background: #202420; }
.preview-table tbody tr:nth-child(even) { background: #242922; }
.preview-table tbody tr:hover { background: #2c3429; }
.preview-indicator, .preview-row-detail dd { color: var(--text-primary); }
.export-card, .threat-card { border-color: var(--border-soft); border-radius: 0.35rem; box-shadow: none; }
.export-card:hover { background: #2c3429; transform: none; border-color: var(--accent); }
.campaign-stage, .campaign-inspector { background: #1b211c; }
.investigation-list li, .campaign-node-meta div { background: #242a22; border-color: var(--border-soft); }
.site-footer { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem; margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid var(--border-soft); color: var(--text-muted); font-size: 0.72rem; }
.site-footer div { display: flex; flex-wrap: wrap; gap: 1.5rem; }
.site-footer a { color: var(--accent); }
@media (max-width: 820px) {
  .top-nav { position: static; align-items: start; flex-direction: column; gap: 0.2rem; }
  .nav-links { width: 100%; flex-wrap: wrap; }
  .nav-links a { padding-inline: 0.6rem; }
  .nav-links a:first-child { padding-left: 0; }
  .page-header-main { flex-direction: column; align-items: start; gap: 1.1rem; }
  .hero-download { width: auto; }
  [id] { scroll-margin-top: 1rem; }
}
@media (max-width: 640px) {
  .page-wrapper { padding-inline: 1rem; }
  .page-header { margin-block: 1.75rem; }
  .brand-tagline { display: inline; }
  .nav-links { font-size: 0.75rem; gap: 0; }
  .lookup-heading { align-items: start; gap: 0.4rem; }
  .lookup-heading > p { text-align: left; }
  .status-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .metrics-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .metrics-strip .metric-card:nth-child(n) { display: block; padding: 1rem 0.65rem; }
  .metric-card:nth-child(odd) { border-left: 0; padding-left: 0; }
  .metric-value { font-size: 1.6rem; }
  .discovery-desk { padding-block: 1.4rem; }
  .discovery-lenses { display: flex; flex-wrap: wrap; }
  .discovery-lenses button { flex: 1 1 auto; text-align: center; }
  .vulnerability-views { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vulnerability-views button { min-width: 0; }
  .preview-table tbody tr, .preview-row-detail { border-color: var(--border-soft); background: var(--card-bg-soft); }
  .tool-disclosure > summary { padding: 1rem; }
}
@media (prefers-reduced-motion: reduce) {
  .disclosure-symbol, .button, .button-link, .hero-download, .export-card { transition: none; }
}
.collection-overview .score-distribution { padding-inline: 1.2rem; }
.collection-overview .delta-strip { margin: 0; border: 0; border-top: 1px solid var(--border-subtle); }
.tool-disclosure > .top-threats { border: 0; margin: 0; }
.delta-counts div { background: #2b3227; border-radius: 0.3rem; }
.delta-counts dd { color: var(--accent); }
.status-meta { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.status-banner .status-dot { box-shadow: none; }
.preview-table tr:not(.preview-detail-row), .preview-table tr:not(.preview-detail-row) td { background: var(--card-bg-soft); }
.preview-table tr:not(.preview-detail-row):hover, .preview-table tr:not(.preview-detail-row):hover td { background: #2c3429; }
@media (max-width: 820px) { .status-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) {
  /* Long dates and unbroken feed labels must shrink inside the card grid. */
  .preview-table tbody, .preview-table tr, .preview-table td { min-width: 0; }
  .preview-table td { white-space: normal; overflow-wrap: anywhere; grid-template-columns: minmax(4.5rem, 5.5rem) minmax(0, 1fr); }
  .preview-table td > * { min-width: 0; }
}

/* Personal CVE briefing reuses the evidence cards rather than adding a wall of panels. */
.briefing-settings { border-block: 1px solid var(--border-soft); padding-block: 0.5rem; margin-top: 1.5rem; }
.briefing-settings > p { max-width: 75ch; font-size: 0.8rem; }
.briefing-form { display: flex; align-items: end; flex-wrap: wrap; gap: 0.75rem; margin: 1rem 0; }
.briefing-form label { flex: 1 1 14rem; display: grid; gap: 0.4rem; min-width: 0; }
.briefing-form input, .briefing-tools select, .briefing-triage-label select { min-height: 2.75rem; width: 100%; padding: 0.65rem; border: 1px solid var(--border-control); border-radius: 0.3rem; background: var(--bg-color); color: var(--text-primary); font: inherit; }
.briefing-form input:focus-visible, .briefing-tools select:focus-visible, .briefing-triage-label select:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.briefing-watches { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.briefing-watches li { display: flex; align-items: center; gap: 0.7rem; padding: 0.4rem 0.65rem; background: var(--card-bg-soft); border: 1px solid var(--border-soft); border-radius: 0.3rem; }
.briefing-watches li span { overflow-wrap: anywhere; }
.briefing-watches .button { font-size: 0.7rem; }
.briefing-note { color: var(--text-muted); font-size: 0.75rem; line-height: 1.6; margin-top: 0.75rem; }
.briefing-tools { display: flex; flex-wrap: wrap; align-items: end; gap: 0.8rem; margin: 1rem 0; }
.briefing-tools label, .briefing-triage-label { display: grid; gap: 0.4rem; color: var(--text-muted); font-size: 0.75rem; }
.briefing-match { color: var(--accent); font-size: 0.75rem; }
.briefing-triage-label { margin-block: 0.8rem; }
.campaign-feed-evidence { margin-block: 0.8rem; font-size: 0.75rem; color: var(--text-muted); }
.campaign-feed-evidence summary { cursor: pointer; color: var(--accent); min-height: 2rem; }
.campaign-feed-evidence p { white-space: pre-line; overflow-wrap: anywhere; }
@media (max-width: 640px) {
  .briefing-form, .briefing-tools { flex-direction: column; align-items: stretch; }
  .briefing-form label { flex-basis: auto; }
  .briefing-watches li { width: 100%; justify-content: space-between; }
  .briefing-watches .button { flex-shrink: 0; }
}
.vulnerability-views select { min-height: 2.75rem; min-width: 0; padding: 0.65rem; border: 1px solid var(--border-control); border-radius: 0.3rem; background: var(--bg-color); color: var(--text-primary); font: inherit; font-size: 0.78rem; }
.campaign-stage { min-height: 0; height: auto; align-self: start; overflow: auto; }
.campaign-stage::after { display: none; }
[data-campaign-graph] { height: auto; min-height: 0; min-width: 760px; }
.campaign-stage-stats { position: static; width: fit-content; max-width: calc(100% - 1.5rem); margin: 0.75rem; }
.campaign-legend { position: static; width: fit-content; max-width: calc(100% - 1.5rem); margin: 0.75rem; }
.campaign-node.pivot text { font-size: 13px; }
.campaign-node .campaign-node-subtitle { font-size: 9px; }
@media (max-width: 640px) { .vulnerability-views select { width: 100%; } }
.campaign-node.is-dimmed { opacity: 0.5; }
.campaign-node.is-selected .campaign-node-core { filter: none; }

/* Graph exploration stays separate from the scrollable diagram. */
.campaign-search-tools { padding: 1rem; border-bottom: 1px solid var(--border-control); }
.campaign-search-tools > label { display: block; margin-bottom: .4rem; font-weight: 600; }
.campaign-search-tools input { width: 100%; min-width: 0; padding: .65rem .75rem; border: 1px solid var(--border-control); border-radius: .3rem; background: var(--bg-color); color: var(--text-primary); }
.campaign-search-tools > p { font-size: .78rem; margin: .5rem 0; color: var(--text-secondary); }
.campaign-search-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.campaign-search-results { display: grid; gap: .35rem; max-height: 15rem; overflow: auto; margin: .75rem 0; }
.campaign-search-results[hidden] { display: none; }
.campaign-related-list { max-height: 18rem; overflow: auto; overscroll-behavior: contain; }
.campaign-search-results .campaign-related-node { overflow-wrap: anywhere; text-align: left; }

.inventory-actions { display: flex; flex-wrap: wrap; align-items: end; gap: .75rem; margin: 1rem 0; }
.inventory-actions label { display: grid; gap: .4rem; min-width: 0; max-width: 100%; }
.inventory-actions input { max-width: 100%; }
.inventory-results { display: grid; gap: .75rem; }
.inventory-results article { padding: 1rem; border: 1px solid var(--border-control); border-radius: .3rem; overflow-wrap: anywhere; }
.inventory-results h3 { margin-top: 0; font-size: 1rem; }
.inventory-results pre { max-height: 20rem; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; font-size: .75rem; }
.inventory-results summary { cursor: pointer; }

/* Quiet interaction feedback: content remains visible without animation support. */
.button, .button-link, .hero-download, .nav-links a,
.discovery-lenses button, .vulnerability-views button {
  transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease;
}
.vulnerability-card, .inventory-results article, .threat-card {
  transition: border-color 180ms ease, box-shadow 180ms ease;
}
.vulnerability-card:focus-within, .inventory-results article:focus-within,
.threat-card:focus-within {
  border-color: var(--accent);
  box-shadow: inset 3px 0 0 var(--accent);
}
.nav-links a { text-underline-offset: .4em; }
.nav-links a:hover, .nav-links a:focus-visible { text-decoration: underline; }

@media (prefers-reduced-motion: no-preference) {
  @keyframes desk-enter {
    from { opacity: .35; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
  }
  @keyframes desk-detail-enter {
    from { opacity: .55; transform: translateY(4px); }
    to { opacity: 1; transform: translateY(0); }
  }
  .page-header-main > div { animation: desk-enter 460ms cubic-bezier(.2,.7,.2,1) both; }
  .page-header .hero-download { animation: desk-enter 460ms 70ms cubic-bezier(.2,.7,.2,1) both; }
  .vulnerability-card, .inventory-results article, .threat-card {
    animation: desk-enter 280ms cubic-bezier(.2,.7,.2,1) both;
  }
  .vulnerability-card:nth-child(2), .inventory-results article:nth-child(2), .threat-card:nth-child(2) { animation-delay: 30ms; }
  .vulnerability-card:nth-child(3), .inventory-results article:nth-child(3), .threat-card:nth-child(3) { animation-delay: 60ms; }
  .vulnerability-card:nth-child(4), .inventory-results article:nth-child(4), .threat-card:nth-child(4) { animation-delay: 90ms; }
  .vulnerability-card:nth-child(n+13), .inventory-results article:nth-child(n+13), .threat-card:nth-child(n+13) { animation: none; }
  .collection-notes[open] > :not(summary), .campaign-feed-evidence[open] > :not(summary),
  .inventory-results details[open] > :not(summary), .vulnerability-card details[open] > :not(summary) {
    animation: desk-detail-enter 180ms ease-out both;
  }
  .button, .button-link, .hero-download {
    transition: transform 160ms ease, background-color 160ms ease, border-color 160ms ease, color 160ms ease;
  }
  .button:not(:disabled):active, .button-link:not(:disabled):not([aria-disabled="true"]):active { transform: translateY(1px); }
  @media (hover: hover) and (pointer: fine) {
    .button:not(:disabled):hover, .button-link:not(:disabled):not([aria-disabled="true"]):hover { transform: translateY(-2px); }
    .vulnerability-card:hover, .inventory-results article:hover, .threat-card:hover {
      border-color: var(--accent);
      box-shadow: 0 5px 16px rgb(0 0 0 / .12);
    }
  }
}

.investigation-spl { margin-top: 1.25rem; border-top: 1px solid var(--border-control); padding-top: 1rem; min-width: 0; }
.investigation-spl p { font-size: .8rem; overflow-wrap: anywhere; }
.investigation-spl pre { max-width: 100%; max-height: 22rem; overflow: auto; padding: 1rem; background: var(--bg-color); border: 1px solid var(--border-control); border-radius: .3rem; font-size: .78rem; }
@media (prefers-reduced-motion: no-preference) { .investigation-spl { animation: desk-detail-enter 180ms ease-out; } }

/* Instrument-panel detail, confined to navigation and the graph. */
.page-header { position: relative; isolation: isolate; overflow: hidden; padding-block: 1.5rem; border-block: 1px solid var(--border-control); }
.page-header::before {
  content: ''; position: absolute; z-index: -1; inset: 0 0 0 52%; pointer-events: none;
  background-image: linear-gradient(rgb(167 196 124 / .12) 1px, transparent 1px), linear-gradient(90deg, rgb(167 196 124 / .12) 1px, transparent 1px);
  background-size: 24px 24px;
  mask-image: linear-gradient(90deg, transparent, #000);
}
.campaign-inspector { border-top: 2px solid var(--accent); }
.campaign-node:is(.pivot, .indicator).is-selected .campaign-node-core { stroke: #dcf3b0; stroke-width: 3; }
.campaign-node:is(.pivot, .indicator).is-connected .campaign-node-core { stroke: #c5d5af; }
.hero-download { position: relative; overflow: hidden; }
@media (prefers-reduced-motion: no-preference) {
  @keyframes desk-grid-scan {
    from { transform: translateX(-160%); opacity: 0; }
    15%, 75% { opacity: .5; }
    to { transform: translateX(280%); opacity: 0; }
  }
  @keyframes desk-link-trace { from { stroke-dashoffset: 24; } to { stroke-dashoffset: 0; } }
  @keyframes desk-node-lock {
    from { stroke-width: 5; stroke-opacity: .45; }
    to { stroke-width: 3; stroke-opacity: 1; }
  }
  @keyframes desk-control-sheen {
    from { transform: translateX(-180%) skewX(-20deg); }
    to { transform: translateX(380%) skewX(-20deg); }
  }
  .page-header::after {
    content: ''; position: absolute; z-index: -1; inset: 0 0 0 65%; pointer-events: none;
    background: linear-gradient(90deg, transparent, rgb(167 196 124 / .14), transparent);
    animation: desk-grid-scan 2400ms ease-in-out 2 both;
  }
  .campaign-edge.is-connected { stroke-dasharray: 5 7; animation: desk-link-trace 1200ms linear 3; }
  .campaign-node.is-selected .campaign-node-core { animation: desk-node-lock 320ms ease-out; }
  .hero-download::after {
    content: ''; position: absolute; inset: 0; width: 35%; pointer-events: none;
    background: linear-gradient(90deg, transparent, rgb(220 243 176 / .2), transparent);
    transform: translateX(-180%) skewX(-20deg);
  }
  .hero-download:hover::after, .hero-download:focus-visible::after { animation: desk-control-sheen 600ms ease-out; }
}
@media (max-width: 640px) { .page-header::before { inset-inline-start: 72%; opacity: .5; } }

/* Keep the queue and its working query in view without expanding the whole page. */
.investigation-workbench { display: grid; grid-template-columns: minmax(230px, .8fr) minmax(0, 1.6fr); gap: 1.5rem; align-items: start; }
.investigation-workbench .investigation-list { grid-template-columns: minmax(0, 1fr); max-height: 38rem; overflow: auto; overscroll-behavior: contain; margin-top: 1rem; }
.investigation-workbench .investigation-spl { border-top: 0; border-left: 1px solid var(--border-control); padding: 1rem 0 0 1.5rem; margin-top: 0; }
.hunt-heading { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; justify-content: space-between; }
.hunt-heading h3 { margin: 0 0 .6rem; }
.hunt-heading .eyebrow { margin: 0 0 .3rem; }
.hunt-local { color: var(--text-muted); font-size: .7rem; }
.hunt-toolbar, .hunt-field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin: .75rem 0; }
.hunt-toolbar label, .hunt-field-grid label { display: grid; gap: .35rem; font-size: .78rem; }
.hunt-toolbar input, .hunt-toolbar select, .hunt-field-grid input { min-width: 0; width: 100%; min-height: 2.75rem; border: 1px solid var(--border-control); background: var(--bg-color); color: var(--text-primary); padding: .55rem .7rem; border-radius: .3rem; font: inherit; }
.hunt-mappings { padding: .65rem 0; border-block: 1px solid var(--border-control); }
.hunt-mappings > summary { cursor: pointer; font-size: .82rem; }
.hunt-error { color: #ffb3a7; }
@media (max-width: 900px) {
  .investigation-workbench { grid-template-columns: minmax(0, 1fr); }
  .investigation-workbench .investigation-list { grid-template-columns: minmax(0, 1fr); max-height: 16rem; }
  .investigation-workbench .investigation-spl { border-left: 0; border-top: 1px solid var(--border-control); padding-left: 0; }
}
@media (max-width: 480px) { .hunt-toolbar, .hunt-field-grid { grid-template-columns: minmax(0, 1fr); } }

/* The analyst queue stays one click away while browsing long feeds. */
.workspace-dock { position: fixed; bottom: max(1rem, env(safe-area-inset-bottom)); right: max(1rem, env(safe-area-inset-right)); z-index: 60; display: flex; gap: .4rem; padding: .4rem; border: 1px solid var(--border-control); border-radius: .5rem; background: var(--bg-color); box-shadow: 0 5px 24px #0006; }
.workspace-dock[hidden], .workspace-dock button[hidden] { display: none; }
.workspace-dock button { min-height: 44px; padding: .5rem .8rem; border: 0; border-radius: .3rem; background: var(--surface-color, #252b21); color: var(--text-primary); font: inherit; font-size: .85rem; cursor: pointer; }
.workspace-dock button:hover { background: #394232; }
.workspace-dock button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.workspace-dock span { margin-left: .4rem; font-variant-numeric: tabular-nums; color: var(--accent); }
body:has(.workspace-dock:not([hidden])) { padding-bottom: 5.5rem; }
body:has(.workspace-dock:not([hidden])) .toast { bottom: 6rem; }
@media print { .workspace-dock { display: none; } }

/* Preserve full observable identities and keep dock controls inside small viewports. */
.investigation-identity code { white-space: normal; overflow-wrap: anywhere; text-overflow: clip; }
.workspace-dock { max-width: calc(100vw - 2rem); flex-wrap: wrap; }
.workspace-dock button { flex: 1 1 auto; }
@media (max-width: 380px) { .workspace-dock button { padding-inline: .55rem; font-size: .78rem; } }
@media (prefers-reduced-motion: no-preference) {
  .workspace-dock button { transition: background-color 140ms ease, box-shadow 140ms ease; }
}

/* Keep a brief interaction cue on the workspace shortcut. */
@media (prefers-reduced-motion: no-preference) {
  @keyframes intel-workspace-signal {
    0%, 100% { box-shadow: 0 5px 24px #0006; }
    45% { box-shadow: 0 5px 24px #0006, 0 0 0 4px rgb(167 196 124 / .16); }
  }
  .workspace-dock:hover, .workspace-dock:focus-within {
    animation: intel-workspace-signal 900ms ease-out 1;
  }
}


/* Shared surface colors keep gradients quiet and text contrast predictable. */
:root {
  --surface-gradient: linear-gradient(135deg, #262e27 0%, #202620 55%, #1c211d 100%);
  --surface-raised-gradient: linear-gradient(135deg, #303a2d, #252d24);
  --surface-color: #252d24;
  --graph-source-fill: #18535b;
  --graph-tag-fill: #493758;
}
.investigation-workspace, .campaign-inspector, .vulnerability-desk {
  background: var(--surface-gradient);
}
.workspace-dock { background: var(--surface-raised-gradient); border-color: #7e8b78; }
.campaign-stage {
  background-color: #1b211c;
  background-image: linear-gradient(rgb(167 196 124 / .045) 1px, transparent 1px), linear-gradient(90deg, rgb(167 196 124 / .045) 1px, transparent 1px);
  background-size: 32px 32px;
}
.campaign-node.pivot.source .campaign-node-core { fill: var(--graph-source-fill); }
.campaign-node.pivot.tag .campaign-node-core { fill: var(--graph-tag-fill); }
.campaign-node.pivot .campaign-node-subtitle { fill: #e0e9df; }
.campaign-node.indicator .campaign-node-subtitle { fill: #bccbbb; }
.campaign-stage-stats dt { color: #b8c5b4; }
.investigation-identity span { color: #b8c5b4; }
.hunt-error { color: #ffc0b6; }
.button:disabled, .button-link:disabled, .button-link[aria-disabled="true"] {
  transform: none !important; cursor: not-allowed;
}

/* Inset content on the surfaced CVE panel, including narrow screens. */
.discovery-desk.vulnerability-desk {
  padding: clamp(1rem, 2.5vw, 1.75rem);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-card);
}
.vulnerability-views { gap: .5rem; }
.vulnerability-rejected-control { display: flex; align-items: flex-start; gap: .6rem; }
.vulnerability-rejected-control input[type="checkbox"] { flex: 0 0 auto; margin: .25em 0 0; }
.vulnerability-pagination { flex-wrap: wrap; gap: .75rem; }


/* Quiet relationship map: reserve emphasis for the selected evidence path. */
.campaign-edge { stroke-dasharray: none; stroke-width: 1; opacity: .3; animation: none; }
.campaign-edge.is-connected { stroke-dasharray: none; stroke-width: 2.2; opacity: .95; animation: none; }
.campaign-edge.is-dimmed { opacity: .07; }
.campaign-node .campaign-corroboration-ring { stroke-dasharray: none; opacity: .65; }
.campaign-node.is-selected .campaign-corroboration-ring { stroke-width: 2; opacity: 1; }
.campaign-node.indicator text {
  paint-order: stroke fill; stroke: #1b211c; stroke-width: 3px; stroke-linejoin: round;
}

.campaign-interaction-hint { grid-column: 1 / -1; margin: 0; padding: .65rem 1rem; color: var(--text-muted); font-size: .78rem; border-bottom: 1px solid var(--border-soft); }
@media (max-width: 480px) {
  body:has([data-workspace-undo]:not([hidden])) { padding-bottom: 9rem; }
  body:has([data-workspace-undo]:not([hidden])) .toast { bottom: 9rem; }
}

/* Short, optional paths distinguish observable hunts from vulnerability review. */
.analyst-guide { margin: 0 0 1.5rem; padding: 1rem; border: 1px solid var(--border-soft); border-radius: var(--radius-card); background: var(--card-bg-soft); }
.analyst-guide > summary { cursor: pointer; color: var(--accent); font-weight: 600; }
.analyst-guide-paths { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; padding-top: .5rem; }
.analyst-guide h3, .cve-next-steps h3 { margin-bottom: .5rem; }
.analyst-guide ol, .cve-next-steps ol { padding-left: 1.35rem; }
.analyst-guide li, .cve-next-steps li { margin-block: .5rem; }
.analyst-guide a, .cve-next-steps a { color: var(--accent-soft); text-decoration: underline; text-underline-offset: .18em; }
.cve-next-steps { padding: 1rem; margin-bottom: 1rem; border: 1px solid var(--border-control); border-left: 3px solid var(--warning); border-radius: .3rem; background: var(--card-bg-soft); }
[data-cve-next-steps][hidden], [data-investigation-spl-builder][hidden] { display: none; }
@media (max-width: 700px) { .analyst-guide-paths { grid-template-columns: minmax(0, 1fr); gap: .5rem; } }

.queue-row-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .4rem; flex: 0 0 auto; max-width: 100%; }
.investigation-list li:has(.queue-row-actions button + button) { flex-wrap: wrap; }

.investigation-import { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--border-soft); }
.investigation-import label { display: block; font-weight: 600; }
.investigation-import input { max-width: 100%; }
.investigation-import p { overflow-wrap: anywhere; }
.investigation-import input::file-selector-button { min-height: 44px; margin-right: .65rem; padding: .5rem .8rem; border: 1px solid var(--border-soft); border-radius: .5rem; background: var(--card-bg-soft); color: var(--accent); font: inherit; cursor: pointer; }
.investigation-import input:disabled::file-selector-button { opacity: .6; cursor: wait; }

/* Group evidence is a research layer, never a scoring or blocking signal. */
.group-intel-desk { padding: clamp(1rem, 2.5vw, 1.75rem); border: 1px solid var(--border-soft); border-radius: var(--radius-card); }
.group-intel-controls { display: flex; flex-wrap: wrap; align-items: end; gap: .75rem; margin: 1rem 0; }
.group-intel-controls label { display: grid; gap: .3rem; min-width: min(100%, 11rem); }
.group-intel-controls input, .group-intel-controls select { width: 100%; }
.group-intel-list { display: grid; gap: .5rem; margin: .75rem 0; }
.group-evidence-card { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .85rem; padding: .75rem; border: 1px solid var(--border-soft); border-radius: .5rem; background: var(--card-bg-soft); }
.group-evidence-value { overflow-wrap: anywhere; min-width: 0; }
.group-evidence-type, .group-evidence-match, .group-evidence-candidate { font-size: .78rem; color: var(--text-muted); }
.group-evidence-match { color: var(--accent); }
.group-evidence-groups { display: inline-flex; flex-wrap: wrap; gap: .4rem; }
.group-evidence-group { padding: .2rem .4rem; border: 1px solid var(--border-control); border-radius: .4rem; color: var(--accent-soft); font-size: .82rem; }
.group-evidence-attachment { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin: .75rem 0; padding: .65rem; border-left: 3px solid var(--accent); background: var(--card-bg-soft); }
.group-evidence-attachment small { flex-basis: 100%; color: var(--text-muted); }
.group-summary .discovery-heading { margin-bottom: 0; }
.group-summary p { margin: .45rem 0; }
.group-summary-actions { display: grid; gap: .5rem; flex-shrink: 0; font-size: .82rem; }
.group-summary-actions > a { color: var(--accent); }
.group-evidence-attachment.group-evidence-badge { display: inline-block; width: fit-content; padding: .3rem .55rem; border: 1px solid var(--border-soft); border-radius: .4rem; font-size: .78rem; color: var(--accent); }

/* CVE analyst workspace: dense comparison is optional; evidence stays progressively disclosed. */
.vulnerability-workspace-bar, .vulnerability-bulk-bar {
  display: flex; flex-wrap: wrap; align-items: end; gap: .55rem; padding: .7rem;
  border: 1px solid var(--border-soft); border-radius: .4rem; background: #1d211d;
}
.vulnerability-layout-toggle { display: flex; gap: .35rem; }
.vulnerability-layout-toggle .button[aria-pressed="true"] { color: #182016; border-color: var(--accent); background: var(--accent); }
.vulnerability-workspace-bar label { display: grid; gap: .25rem; color: var(--text-muted); font-size: .72rem; }
.vulnerability-workspace-bar select, .vulnerability-compare-controls select {
  min-height: 2.55rem; max-width: 14rem; padding: .5rem .65rem; border: 1px solid var(--border-control);
  border-radius: .3rem; background: var(--bg-color); color: var(--text-primary); font: inherit;
}
.vulnerability-saved-label { margin-left: auto; }
.vulnerability-filter-chips { display: flex; flex-wrap: wrap; gap: .4rem; margin: .7rem 0; }
.vulnerability-filter-chip { padding: .35rem .55rem; border: 1px solid var(--border-control); border-radius: 999px; background: transparent; color: var(--accent-soft); cursor: pointer; font: inherit; font-size: .72rem; }
.vulnerability-filter-chip::after { content: " ×"; color: var(--text-muted); }
.vulnerability-analyst-tools { margin-block: .7rem; }
.vulnerability-insights { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin: .8rem 0; }
.vulnerability-insight { padding: .7rem; border: 1px solid var(--border-soft); border-radius: .35rem; background: var(--card-bg-soft); }
.vulnerability-insight h4 { margin: 0 0 .5rem; font-size: .78rem; }
.vulnerability-insight-list { display: flex; flex-wrap: wrap; gap: .35rem; }
.vulnerability-insight-list button { padding: .3rem .45rem; border: 1px solid var(--border-soft); border-radius: 999px; background: transparent; color: var(--text-muted); cursor: pointer; font: inherit; font-size: .7rem; }
.vulnerability-compare-controls { display: flex; flex-wrap: wrap; align-items: end; gap: .65rem; padding-top: .75rem; border-top: 1px solid var(--border-soft); }
.vulnerability-compare-controls label { display: grid; gap: .3rem; color: var(--text-muted); font-size: .75rem; }
.vulnerability-compare-result { margin-top: .75rem; color: var(--text-muted); font-size: .76rem; line-height: 1.6; }
.vulnerability-compare-result strong { color: var(--text-primary); }
.vulnerability-compare-result .button { margin-top: .5rem; }
.vulnerability-bulk-bar { position: sticky; top: 4.2rem; z-index: 4; margin: .7rem 0; border-color: var(--accent); }
.vulnerability-bulk-bar strong { margin-right: auto; color: var(--accent-soft); }
.vulnerability-card-select { display: flex; align-items: center; gap: .4rem; float: right; color: var(--text-muted); font-size: .72rem; }
.vulnerability-card-select { align-self: flex-end; float: none; }
.vulnerability-card[data-reviewed="true"] { border-color: #596555; }
.vulnerability-card.is-keyboard-active { outline: 2px solid var(--accent); outline-offset: 3px; }
.vulnerability-priority { display: flex; align-items: center; gap: .5rem; margin: .5rem 0; }
.vulnerability-priority strong { padding: .25rem .5rem; border: 1px solid currentColor; border-radius: .3rem; font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; }
.vulnerability-priority p { margin: 0; color: var(--text-muted); font-size: .73rem; line-height: 1.45; }
.vulnerability-priority[data-tier="act"] strong { color: #ffbd8a; }
.vulnerability-priority[data-tier="investigate"] strong { color: #f3d59b; }
.vulnerability-priority[data-tier="monitor"] strong { color: #c9d7aa; }
.vulnerability-priority[data-tier="context"] strong { color: var(--text-muted); }
.vulnerability-new-badge { color: #d8eba7; border-color: #81945b; }
.vulnerability-card-footer .vulnerability-open { margin-left: 0; }
.vulnerability-table-wrap { width: 100%; overflow-x: auto; border: 1px solid var(--border-soft); border-radius: .4rem; }
.vulnerability-cards.is-table { display: block; }
.vulnerability-table { width: 100%; min-width: 920px; border-collapse: collapse; background: var(--card-bg-soft); font-size: .75rem; }
.vulnerability-table th { position: sticky; top: 0; z-index: 1; padding: .65rem; background: #202520; color: var(--text-muted); text-align: left; }
.vulnerability-table td { padding: .65rem; border-top: 1px solid var(--border-soft); vertical-align: top; color: var(--text-muted); }
.vulnerability-table tbody tr { cursor: pointer; }
.vulnerability-table tbody tr:hover, .vulnerability-table tbody tr.is-keyboard-active { background: #293026; }
.vulnerability-table a, .vulnerability-table strong { color: var(--text-primary); }
.vulnerability-table-title { display: block; max-width: 25rem; margin-top: .25rem; color: var(--text-muted); }
.vulnerability-table-groups { max-width: 13rem; overflow-wrap: anywhere; }
.vulnerability-table .vulnerability-priority { margin: 0; }
.vulnerability-table .vulnerability-priority p { display: none; }
.vulnerability-drawer { width: min(48rem, calc(100vw - 2rem)); max-height: calc(100vh - 2rem); padding: 0; border: 1px solid var(--border-strong); border-radius: .55rem; background: var(--bg-color); color: var(--text-primary); box-shadow: 0 1rem 4rem #000a; }
.vulnerability-drawer::backdrop { background: #080b08c7; backdrop-filter: blur(2px); }
.vulnerability-drawer > header, .vulnerability-drawer > footer { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .9rem 1rem; background: #202520; }
.vulnerability-drawer > header { position: sticky; top: 0; z-index: 2; border-bottom: 1px solid var(--border-soft); }
.vulnerability-drawer > header h3, .vulnerability-drawer > header p { margin: .15rem 0; }
.vulnerability-drawer > footer { position: sticky; bottom: 0; border-top: 1px solid var(--border-soft); color: var(--text-muted); font-size: .75rem; }
.vulnerability-drawer-body { padding: 1rem; overflow: auto; }
.vulnerability-drawer-body h4 { margin: 1.1rem 0 .45rem; }
.vulnerability-drawer-body p { color: var(--text-muted); line-height: 1.6; overflow-wrap: anywhere; }
.vulnerability-drawer-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .65rem; }
.vulnerability-drawer-fact { padding: .65rem; border: 1px solid var(--border-soft); border-radius: .35rem; }
.vulnerability-drawer-fact span { display: block; color: var(--text-muted); font-size: .68rem; text-transform: uppercase; }
.vulnerability-timeline { position: relative; margin: .5rem 0 0; padding-left: 1.2rem; list-style: none; }
.vulnerability-timeline::before { content: ""; position: absolute; left: .3rem; top: .45rem; bottom: .45rem; width: 1px; background: var(--border-control); }
.vulnerability-timeline li { position: relative; margin: .7rem 0; color: var(--text-muted); font-size: .76rem; }
.vulnerability-timeline li::before { content: ""; position: absolute; left: -1.08rem; top: .35rem; width: .4rem; height: .4rem; border-radius: 50%; background: var(--accent); }
.vulnerability-timeline time { display: block; color: var(--text-primary); font-weight: 600; }
@media (max-width: 760px) {
  .vulnerability-workspace-bar > *, .vulnerability-workspace-bar select { flex: 1 1 10rem; max-width: none; }
  .vulnerability-saved-label { margin-left: 0; }
  .vulnerability-insights, .vulnerability-drawer-grid { grid-template-columns: minmax(0, 1fr); }
  .vulnerability-drawer { width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; border-radius: 0; }
  .vulnerability-bulk-bar { top: .5rem; }
}

/* Keep results scannable; detailed evidence has one consistent destination. */
.vulnerability-desk .vulnerability-cards:not(.is-table) { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; }
.vulnerability-card > details, .vulnerability-card > .vulnerability-action { display: none; }
.vulnerability-card > .vulnerability-dates { display: flex; flex-wrap: wrap; margin: .4rem 0; padding: 0; border: 0; background: none; }
.vulnerability-card > .vulnerability-dates p { font-size: .72rem; color: var(--text-muted); }
.vulnerability-card h3 { margin: .2rem 0 .55rem; }
.vulnerability-desk .vulnerability-card { position: relative; }
.vulnerability-desk .vulnerability-card-select { position: absolute; top: 1rem; right: 1rem; }
.vulnerability-desk .vulnerability-card > .vulnerability-evidence { padding-right: 5rem; }
.vulnerability-desk[data-vulnerability-group-mode="true"] .vulnerability-title { min-height: 0; }
.vulnerability-card > .vulnerability-caution { padding: .5rem; }
.vulnerability-group-preview { margin: .35rem 0; color: var(--accent-soft); font-size: .78rem; line-height: 1.5; overflow-wrap: anywhere; }
.vulnerability-priority { align-items: flex-start; }
.vulnerability-priority strong { white-space: nowrap; flex-shrink: 0; }
.vulnerability-card-footer { border-top: 1px solid var(--border-soft); margin-top: auto; }
.vulnerability-card-footer > p { display: none; }
.vulnerability-workspace-bar { align-items: center; padding: .5rem 0; border: 0; background: none; }
.vulnerability-workspace-bar > .vulnerability-meta:empty { display: none; }
.vulnerability-workspace-bar > .vulnerability-meta { flex-basis: 100%; margin: 0; }
.vulnerability-tools-menu { margin-left: auto; }
.vulnerability-tools-menu > summary { padding: .7rem; color: var(--accent-soft); cursor: pointer; border: 1px solid var(--border-soft); border-radius: .3rem; font-size: .8rem; }
.vulnerability-tools-menu[open] { flex-basis: 100%; order: 3; }
.vulnerability-tools-content { display: flex; flex-wrap: wrap; align-items: end; gap: .7rem; padding: 1rem; border: 1px solid var(--border-soft); }
.vulnerability-tools-content input { width: 100%; max-width: 20rem; }
.vulnerability-tier-strip { display: flex; flex-wrap: wrap; gap: .4rem; padding: .75rem 0; }
.vulnerability-tier-strip [aria-pressed="true"] { background: var(--accent-subtle); color: var(--accent-soft); border-color: var(--accent); }
.vulnerability-drawer { margin: 0 0 0 auto; width: min(46rem, 94vw); height: 100dvh; max-height: 100dvh; border-radius: 0; }
.vulnerability-drawer[open] { display: flex; flex-direction: column; }
.vulnerability-drawer > header, .vulnerability-drawer > footer { flex: 0 0 auto; position: static; }
.vulnerability-drawer-body { flex: 1; min-height: 0; }
.vulnerability-drawer-body details { margin: .8rem 0; border-top: 1px solid var(--border-soft); padding: .65rem 0; }
.vulnerability-drawer-body summary { cursor: pointer; }
.vulnerability-drawer-actions { display: flex; gap: .5rem; padding-top: .75rem; }
.vulnerability-table tbody tr:nth-child(even) { background: #242924; }
.vulnerability-table tbody tr:hover, .vulnerability-table tbody tr:focus { background: #30382c; outline: 1px solid var(--accent); }
.vulnerability-table-wrap { max-width: 100%; }
.vulnerability-table .vulnerability-table-title { max-width: 20rem; }
.vulnerability-bulk-bar[hidden], .vulnerability-filter-chips[hidden] { display: none; }
@media (max-width: 820px) {
  .vulnerability-desk .vulnerability-cards:not(.is-table) { grid-template-columns: minmax(0, 1fr); }
  .vulnerability-workspace-bar > * { flex: 0 1 auto; }
  .vulnerability-tools-content > * { min-width: 0; max-width: 100%; }
  .vulnerability-drawer { width: 100vw; }
  .vulnerability-tier-strip .button { flex: 1 1 auto; }
}

/* Final pass: clearer navigation, calmer controls, and more legible evidence. */
.top-nav .nav-links a[aria-current="location"],
.top-nav .nav-links a[aria-current="page"] {
  color: var(--accent-soft);
  background: var(--accent-subtle);
  box-shadow: inset 0 -2px 0 var(--accent);
  text-decoration: none;
}
.top-nav .nav-links a[aria-current="location"]:hover,
.top-nav .nav-links a[aria-current="page"]:hover { background: #384432; }
.vulnerability-card .vulnerability-title { font-size: .91rem; }
.vulnerability-card .vulnerability-meta,
.vulnerability-card > .vulnerability-dates p,
.vulnerability-priority p,
.vulnerability-group-preview { font-size: .8rem; }
.vulnerability-table { font-size: .8rem; }
.vulnerability-table td, .vulnerability-table th { padding: .75rem; }
.vulnerability-card-footer .button { min-height: 2.75rem; font-size: .8rem; }
.vulnerability-desk .vulnerability-card:hover { border-color: var(--border-strong); }
.vulnerability-desk .vulnerability-card:focus-visible { outline: 3px solid var(--focus-color); outline-offset: 3px; }
@media (max-width: 820px) {
  .top-nav {
    position: sticky;
    top: 0;
    z-index: 50;
    flex-direction: column;
    align-items: stretch;
    gap: .25rem;
    padding: .45rem 0 .3rem;
  }
  .top-nav .nav-links {
    display: flex;
    flex-wrap: nowrap;
    width: 100%;
    max-width: 100%;
    gap: .2rem;
    overflow-x: auto;
    overflow-y: hidden;
    white-space: nowrap;
    scrollbar-width: thin;
    scrollbar-color: var(--border-strong) transparent;
  }
  .top-nav .nav-links a { flex: 0 0 auto; }
  [id] { scroll-margin-top: 6.5rem; }
  .page-header { margin: 1.25rem 0 .85rem; }
  .page-header-subtitle { margin-bottom: .5rem; }
}
@media (max-width: 480px) {
  .top-nav .nav-links a { padding-inline: .35rem; }
  .top-nav .nav-links a:first-child { padding-left: 0; }
}

/* The constellation is a bounded evidence map, not a force-directed claim of a campaign. */
.campaign-controls { grid-template-columns: repeat(3, minmax(8rem, 1fr)); min-width: min(100%, 31rem); }
.campaign-controls > .button { grid-column: 1 / -1; justify-self: start; min-height: 2.35rem; }
.campaign-search-actions { align-items: center; }
.campaign-zoom-controls { display: inline-flex; align-items: center; gap: .35rem; margin-left: auto; }
.campaign-zoom-controls .button { min-width: 2.4rem; min-height: 2.4rem; padding-inline: .5rem; }
.campaign-zoom-controls [data-campaign-fit] { min-width: 3.5rem; }
.campaign-zoom-controls span { min-width: 3.2rem; text-align: right; color: var(--text-muted); font: 650 .76rem ui-monospace, monospace; }
.campaign-stage [data-campaign-graph].is-zoomed { cursor: grab; }
.campaign-stage [data-campaign-graph].is-panning { cursor: grabbing; }
.campaign-orbit-guide { fill: none; stroke: var(--border-soft); stroke-width: 1; opacity: .7; pointer-events: none; }
.campaign-orbit-guide circle:first-child { stroke-dasharray: 2 8; }
.campaign-orbit-guide circle:last-child { stroke-dasharray: 1 10; opacity: .65; }
.campaign-node.pivot.source.aggregate .campaign-node-core { fill: #4b5248; stroke: #b8c4a6; stroke-dasharray: 4 3; }
.campaign-edge.source.aggregate { stroke: #9ca98c; }
.legend-node.aggregate { background: #b8c4a6; }
.campaign-graph-section[data-campaign-view="orbit"] .campaign-edge { opacity: .16; }
.campaign-graph-section[data-campaign-view="orbit"] .campaign-edge.is-connected { opacity: .95; stroke-width: 2.3; }
.campaign-graph-section[data-campaign-view="orbit"] .campaign-edge.is-dimmed { opacity: .025; }
.campaign-graph-section[data-campaign-view="orbit"] .campaign-node.pivot text { font-size: 11.5px; }
.campaign-graph-section[data-campaign-view="orbit"] .campaign-node.pivot .campaign-node-subtitle { font-size: 8.2px; }
.campaign-graph-section[data-campaign-view="orbit"] .campaign-node.indicator .campaign-node-subtitle {
  opacity: 0; transition: opacity 120ms ease; paint-order: stroke fill; stroke: var(--card-bg-soft); stroke-width: 3px;
}
.campaign-graph-section[data-campaign-view="orbit"] .campaign-node.indicator:is(:hover, :focus-visible, .is-selected, .is-previewed) .campaign-node-subtitle { opacity: 1; }
.campaign-node.is-previewed .campaign-node-core { stroke-width: 3; filter: drop-shadow(0 0 5px var(--accent)); }
.campaign-node.is-dimmed { opacity: .25; }
.campaign-node.is-connected { opacity: 1; }
@media (max-width: 1180px) { .campaign-graph-header { flex-direction: column; } .campaign-controls { width: 100%; } }
@media (max-width: 600px) {
  .campaign-controls { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .campaign-controls > .button { grid-column: 1 / -1; }
  .campaign-search-actions { align-items: stretch; }
  .campaign-zoom-controls { flex-basis: 100%; justify-content: flex-start; margin-left: 0; }
  .campaign-stage-stats { width: calc(100% - 1.5rem); max-width: none; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .campaign-stage-stats dt { font-size: .62rem; }
  .campaign-stage-stats dd { font-size: .92rem; }
}
@media (max-width: 390px) { .campaign-controls { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) {
  .campaign-node, .campaign-edge, .campaign-node .campaign-node-core,
  .campaign-graph-section[data-campaign-view="orbit"] .campaign-node.indicator .campaign-node-subtitle { animation: none; transition: none; }
}

/* Progressive graph exploration: keep evidence intact, reveal one neighborhood. */
.campaign-pivot-shortcuts { display: flex; align-items: center; gap: .65rem; flex-wrap: wrap; padding: .6rem 1rem; border-bottom: 1px solid var(--border-soft); }
.campaign-pivot-shortcuts > span { color: var(--text-muted); font-size: .72rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.campaign-pivot-shortcuts > div { display: flex; gap: .4rem; flex-wrap: wrap; }
.campaign-shortcut { border: 1px solid var(--border-control); border-radius: 999px; padding: .35rem .65rem; background: var(--card-bg-soft); color: var(--text-primary); font-size: .75rem; cursor: pointer; }
.campaign-shortcut:is(:hover, :focus-visible) { border-color: var(--accent); color: var(--accent); }
.campaign-view-status { margin: .2rem 1rem .8rem; color: var(--text-muted); font-size: .75rem; line-height: 1.4; }
.campaign-graph-section [data-campaign-focus][aria-pressed="true"] { border-color: var(--accent); color: var(--accent); }
.campaign-node.is-outside-focus, .campaign-edge.is-outside-focus { display: none; }
.campaign-graph-section[data-campaign-lens="focused"] .campaign-edge.is-connected { stroke-width: 2.6; opacity: 1; }
.campaign-edge { stroke-linecap: round; }
