/* 605_Neches_Land_CRM — Bitter slab serif + Redwood/terracotta/copper/sepia
   palette per Landmen LLC brand system. */

/* Global: respect the HTML hidden attribute regardless of class display rules. */
[hidden] { display: none !important; }

:root {
  /* Palette — earth tones */
  --redwood: #6b3a25;
  --redwood-dim: #8a4d33;
  --terracotta: #c66e3f;
  --terracotta-dim: #d68b66;
  --copper: #b87333;
  --sepia: #704214;
  --sand: #e8d9c2;
  --sand-dim: #f0e6d4;
  --parchment: #faf6ee;
  --ink: #2a1f15;
  --ink-soft: #5a4a3a;
  --ink-faint: #8a7a6a;

  /* Semantic */
  --bg: var(--parchment);
  --bg-surface: #ffffff;
  --bg-sunken: var(--sand-dim);
  --bg-soft: var(--sand-dim);
  --text: var(--ink);
  --text-soft: var(--ink-soft);
  --text-faint: var(--ink-faint);
  --accent: var(--redwood);
  --accent-soft: var(--terracotta);
  --border: rgba(112, 66, 20, 0.18);
  --border-strong: rgba(112, 66, 20, 0.32);

  /* Tier colors */
  --tier-priority: #b53d24;
  --tier-high: var(--terracotta);
  --tier-medium: var(--copper);
  --tier-low: var(--ink-faint);

  /* State colors */
  --state-cold: var(--ink-faint);
  --state-active: var(--terracotta);
  --state-warm: #d68b66;
  --state-hot: var(--tier-priority);
  --state-won: #4a7c3a;
  --state-lost: #8a6a5a;

  /* Spacing + radius */
  --r-sm: 4px;
  --r-md: 8px;
  --r-lg: 12px;
  --r-xl: 18px;

  /* Shadows */
  --shadow-sm: 0 1px 2px rgba(42, 31, 21, 0.06);
  --shadow-md: 0 4px 14px rgba(42, 31, 21, 0.08);
  --shadow-lg: 0 12px 36px rgba(42, 31, 21, 0.12);
}

* { box-sizing: border-box; }

html, body {
  margin: 0; padding: 0;
  font-family: 'Bitter', Georgia, serif;
  font-size: 15px; line-height: 1.5;
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }

/* ── Login screen ── */
.login-screen {
  min-height: 100vh;
  display: flex; align-items: center; justify-content: center;
  background: radial-gradient(ellipse at top, var(--sand-dim), var(--parchment) 60%);
  padding: 24px;
}
.login-card {
  max-width: 420px; width: 100%;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-xl);
  padding: 40px 32px 32px;
  text-align: center;
  box-shadow: var(--shadow-lg);
}
.login-logo {
  width: 64px; height: 64px;
  margin: 0 auto 18px;
  background: var(--redwood); color: var(--parchment);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 32px; font-weight: 700;
  font-family: 'Bitter', Georgia, serif;
}
.login-card h1 {
  margin: 0 0 6px;
  font-size: 26px; font-weight: 700; color: var(--text);
}
.login-subtitle { margin: 0 0 28px; color: var(--text-soft); font-size: 14px; }
.login-error {
  margin-top: 16px;
  padding: 10px 14px;
  background: rgba(181, 61, 36, 0.08);
  border: 1px solid rgba(181, 61, 36, 0.3);
  color: var(--tier-priority);
  border-radius: var(--r-md);
  font-size: 13px;
}
.login-footer { margin: 24px 0 0; font-size: 12px; color: var(--text-faint); }

/* ── Buttons ── */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 10px 20px;
  font-family: inherit; font-size: 14px; font-weight: 600;
  border-radius: var(--r-md);
  border: 1px solid transparent;
  cursor: pointer;
  transition: all 120ms ease;
  white-space: nowrap;
}
.btn-primary {
  background: var(--redwood); color: var(--parchment);
}
.btn-primary:hover { background: var(--sepia); }
.btn-ghost {
  background: transparent; color: var(--text-soft);
  border-color: var(--border);
}
.btn-ghost:hover { background: var(--bg-sunken); color: var(--text); }
.btn-small { padding: 6px 12px; font-size: 13px; }

/* ── App shell ── */
.app-shell {
  display: grid;
  grid-template-columns: 240px 1fr;
  min-height: 100vh;
}
.sidebar {
  background: var(--bg-surface);
  border-right: 1px solid var(--border);
  padding: 16px 12px;
  display: flex; flex-direction: column;
  position: sticky; top: 0; height: 100vh;
}
.sidebar-brand {
  display: flex; align-items: center; gap: 12px;
  padding: 8px 8px 18px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 12px;
  cursor: pointer;
}
.sidebar-brand-logo {
  width: 40px; height: 40px;
  background: var(--redwood); color: var(--parchment);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px; font-weight: 700;
}
.sidebar-brand-text h1 {
  margin: 0; font-size: 17px; font-weight: 700; color: var(--text);
  line-height: 1.2;
}
.sidebar-brand-text p {
  margin: 2px 0 0; font-size: 11px; color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
}
.sidebar-nav { flex: 1; overflow-y: auto; padding: 4px 0; }
.nav-section {
  padding: 14px 10px 6px;
  font-size: 11px; font-weight: 600; color: var(--text-faint);
  text-transform: uppercase; letter-spacing: 0.06em;
}
.nav-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px;
  color: var(--text-soft);
  font-size: 14px;
  border-radius: var(--r-md);
  cursor: pointer;
  text-decoration: none;
  position: relative;
}
.nav-item::before {
  content: attr(data-icon);
  font-size: 14px;
}
.nav-item:hover {
  background: var(--bg-sunken);
  color: var(--text);
  text-decoration: none;
}
.nav-item.active {
  background: var(--redwood);
  color: var(--parchment);
}
.sidebar-foot {
  margin-top: auto; padding-top: 12px;
  border-top: 1px solid var(--border);
  display: flex; flex-direction: column; gap: 8px;
}
.user-chip {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 8px;
}
.user-avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--terracotta); color: var(--parchment);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 13px;
  flex-shrink: 0;
  background-size: cover;
}
.user-text { min-width: 0; flex: 1; }
.user-name { font-size: 13px; font-weight: 600; color: var(--text); }
.user-email {
  font-size: 11px; color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ── Main column ── */
.main {
  display: flex; flex-direction: column;
  min-width: 0;
}
.topbar {
  height: 56px;
  border-bottom: 1px solid var(--border);
  background: var(--bg-surface);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 24px;
  position: sticky; top: 0; z-index: 10;
}
.topbar-breadcrumb {
  font-size: 15px; font-weight: 600; color: var(--text);
}
.topbar-actions {
  display: flex; align-items: center; gap: 12px;
}
.topbar-search {
  width: 320px;
  padding: 7px 12px;
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  font-family: inherit; font-size: 13px;
  color: var(--text);
}
.topbar-search:focus {
  outline: none; border-color: var(--terracotta);
  background: var(--bg-surface);
}
.env-badge {
  padding: 4px 10px;
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  color: var(--text-soft);
  border-radius: 999px;
  font-size: 11px;
  font-family: 'JetBrains Mono', monospace;
}
.content {
  flex: 1;
  padding: 24px;
}

/* ── Page header ── */
.page-header {
  display: flex; align-items: baseline; justify-content: space-between;
  margin-bottom: 18px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
}
.page-header h2 {
  margin: 0; font-size: 22px; font-weight: 700;
}
.page-header .page-meta {
  font-size: 13px; color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
}

/* ── Tables ── */
.table {
  width: 100%;
  border-collapse: collapse;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  overflow: hidden;
  font-size: 14px;
}
.table th, .table td {
  padding: 10px 14px;
  text-align: left;
  border-bottom: 1px solid var(--border);
}
.table th {
  background: var(--bg-sunken);
  font-weight: 600;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-soft);
}
.table tbody tr {
  cursor: pointer;
  transition: background 80ms;
}
.table tbody tr:hover {
  background: var(--bg-sunken);
}
.table tbody tr:last-child td { border-bottom: none; }

/* ── Tier badges ── */
.tier-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: var(--r-sm);
  font-size: 11px; font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-family: 'JetBrains Mono', monospace;
}
.tier-badge.tier-priority { background: var(--tier-priority); color: var(--parchment); }
.tier-badge.tier-high { background: var(--tier-high); color: var(--parchment); }
.tier-badge.tier-medium { background: var(--tier-medium); color: var(--parchment); }
.tier-badge.tier-low { background: var(--tier-low); color: var(--parchment); }

/* ── State pills ── */
.state-pill {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px; font-weight: 600;
  font-family: 'JetBrains Mono', monospace;
  background: var(--bg-sunken);
  color: var(--text-soft);
  border: 1px solid var(--border);
}
.state-pill.state-engaged,
.state-pill.state-contacted { background: rgba(214, 139, 102, 0.18); color: var(--terracotta); border-color: var(--terracotta); }
.state-pill.state-qualified,
.state-pill.state-title_review,
.state-pill.state-negotiating,
.state-pill.state-pending_issuance { background: rgba(181, 61, 36, 0.12); color: var(--tier-priority); border-color: var(--tier-priority); }
.state-pill.state-issued,
.state-pill.state-recorded,
.state-pill.state-closed_won { background: rgba(74, 124, 58, 0.14); color: var(--state-won); border-color: var(--state-won); }
.state-pill.state-closed_lost,
.state-pill.state-dead { color: var(--text-faint); }

/* ── Ref code chip ── */
.ref-code {
  font-family: 'JetBrains Mono', monospace;
  font-weight: 600;
  font-size: 13px;
  background: var(--sand);
  color: var(--sepia);
  padding: 2px 7px;
  border-radius: var(--r-sm);
  letter-spacing: 0.05em;
}

/* ── Lead 360° ── */
.entity-360 {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 24px;
}
.entity-360-main { min-width: 0; }
.entity-360-side { min-width: 0; }
.entity-header {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 20px 22px;
  margin-bottom: 18px;
}
.entity-header-top {
  display: flex; align-items: center; gap: 8px;
  flex-wrap: wrap; row-gap: 6px;
  margin-bottom: 8px;
}
.lead-crm-badge-link { text-decoration: none; cursor: pointer; white-space: nowrap; }
.lead-crm-badge-link:hover { filter: brightness(0.95); }
.entity-header h2 {
  margin: 0; font-size: 22px; font-weight: 700;
}
.entity-header-sub {
  color: var(--text-soft); font-size: 14px;
}
.entity-actions {
  margin-top: 16px;
  display: flex; flex-wrap: wrap; gap: 8px;
}

/* ── Tabs ── */
.tabs {
  display: flex; gap: 2px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 16px;
}
.tab {
  padding: 10px 16px;
  font-size: 13px; font-weight: 600;
  color: var(--text-soft);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}
.tab:hover { color: var(--text); }
.tab.active {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

/* ── Touch ledger ── */
.touch-list {
  display: flex; flex-direction: column;
  gap: 10px;
}
.touch-item {
  display: grid;
  grid-template-columns: 36px 1fr auto;
  gap: 12px;
  align-items: start;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 12px 14px;
}
.touch-icon {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--bg-sunken);
  display: flex; align-items: center; justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
}
.touch-item.touch-inbound .touch-icon { background: rgba(214, 139, 102, 0.2); }
.touch-item.touch-outbound .touch-icon { background: var(--bg-sunken); }
.touch-body { min-width: 0; }
.touch-type {
  font-size: 13px; font-weight: 600; color: var(--text);
}
.touch-meta {
  font-size: 12px; color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
  margin-top: 2px;
}
.touch-time {
  font-size: 12px; color: var(--text-faint);
  white-space: nowrap;
}

/* ── Side panel cards ── */
.side-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 16px;
  margin-bottom: 14px;
}
.side-card h4 {
  margin: 0 0 12px;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-faint);
}
.kv {
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: 4px 12px;
  font-size: 13px;
}
.kv-label { color: var(--text-faint); }
.kv-value { color: var(--text); font-weight: 500; }

/* ── Empty / error / loading ── */
.empty-state {
  padding: 48px 24px;
  text-align: center;
  color: var(--text-faint);
}
.empty-state-icon { font-size: 36px; opacity: 0.6; margin-bottom: 8px; }
.empty-state-text { font-size: 14px; }

/* ── Stat tiles ── */
.stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 12px;
  margin-bottom: 20px;
}
.stat-tile {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 14px 16px;
}
.stat-tile-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-faint);
}
.stat-tile-value {
  margin-top: 4px;
  font-size: 22px;
  font-weight: 700;
  color: var(--text);
}
.stat-tile-sub {
  margin-top: 2px;
  font-size: 12px;
  color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
}

/* ── Session call mode ── */
.session-shell {
  max-width: 540px;
  margin: 0 auto;
  padding: 0 8px;
}
.session-progress {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 4px;
  font-size: 13px; color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
}
.session-progress-bar {
  flex: 1;
  height: 4px;
  margin: 0 12px;
  background: var(--bg-sunken);
  border-radius: 2px;
  overflow: hidden;
  position: relative;
}
.session-progress-bar-fill {
  position: absolute; left: 0; top: 0; bottom: 0;
  background: var(--terracotta);
  border-radius: 2px;
  transition: width 200ms ease;
}
.session-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-xl);
  padding: 22px;
  box-shadow: var(--shadow-md);
  margin-bottom: 14px;
}
.session-card-header {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 8px;
}
.session-card h2 {
  margin: 6px 0 0;
  font-size: 24px; font-weight: 700;
}
.session-card-sub {
  color: var(--text-soft);
  font-size: 14px;
  margin-top: 4px;
}
.session-narrative {
  margin: 14px 0 0;
  padding: 12px 14px;
  background: var(--sand-dim);
  border-left: 3px solid var(--terracotta);
  font-size: 14px;
  color: var(--text);
  border-radius: var(--r-sm);
  font-style: italic;
}
.session-quick-ref {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 16px;
  margin-top: 14px;
  padding: 12px 14px;
  background: var(--bg-sunken);
  border-radius: var(--r-md);
  font-size: 13px;
}
.session-quick-ref div { display: flex; flex-direction: column; gap: 2px; }
.session-quick-ref .label {
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--text-faint);
}
.session-quick-ref .value { font-weight: 600; color: var(--text); }
.session-tts-btn, .session-dial-btn {
  display: flex; align-items: center; justify-content: center;
  width: 100%;
  padding: 14px;
  margin: 8px 0;
  font-family: inherit; font-size: 15px; font-weight: 600;
  border-radius: var(--r-md);
  border: 1px solid var(--border);
  background: var(--bg-surface);
  color: var(--text);
  cursor: pointer;
  transition: all 120ms;
}
.session-tts-btn:hover { background: var(--bg-sunken); }
.session-dial-btn {
  background: var(--redwood); color: var(--parchment);
  border-color: var(--redwood);
  font-size: 17px;
  padding: 16px;
  text-decoration: none;
}
.session-dial-btn:hover {
  background: var(--sepia);
  text-decoration: none;
}
.session-mini-history {
  margin-top: 14px;
  padding: 10px 14px;
  background: var(--bg-sunken);
  border-radius: var(--r-md);
  font-size: 12px;
}
.session-mini-history h5 {
  margin: 0 0 6px;
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--text-faint);
  font-weight: 600;
}
.session-mini-history-item {
  padding: 4px 0;
  color: var(--text-soft);
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  border-top: 1px solid var(--border);
}
.session-mini-history-item:first-of-type { border-top: 0; }

.dispo-section {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-xl);
  padding: 18px;
  box-shadow: var(--shadow-sm);
}
.dispo-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
  margin-bottom: 12px;
}
.dispo-btn {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  padding: 14px 12px;
  font-family: inherit; font-size: 14px; font-weight: 600;
  border-radius: var(--r-md);
  border: 2px solid var(--border);
  background: var(--bg-surface);
  color: var(--text);
  cursor: pointer;
  transition: all 100ms;
}
.dispo-btn:hover { border-color: var(--terracotta); }
.dispo-btn.selected {
  background: var(--terracotta);
  color: var(--parchment);
  border-color: var(--terracotta);
}
.dispo-notes {
  width: 100%;
  min-height: 70px;
  padding: 10px 12px;
  margin: 8px 0;
  font-family: inherit; font-size: 14px;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  background: var(--bg-surface);
  color: var(--text);
  resize: vertical;
}
.dispo-notes:focus { outline: none; border-color: var(--terracotta); }
.session-actions {
  display: flex; gap: 8px;
}
.session-actions .btn { flex: 1; padding: 12px; font-size: 15px; }

.session-empty {
  text-align: center;
  padding: 60px 24px;
  color: var(--text-faint);
}
.session-empty-icon { font-size: 48px; margin-bottom: 12px; opacity: 0.5; }

/* ── Modal ── */
.modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(42, 31, 21, 0.42);
  display: flex; align-items: center; justify-content: center;
  z-index: 100;
  padding: 20px;
  backdrop-filter: blur(4px);
}
.modal {
  background: var(--bg-surface);
  border-radius: var(--r-xl);
  max-width: 540px; width: 100%;
  max-height: 90vh; overflow-y: auto;
  box-shadow: var(--shadow-lg);
  border: 1px solid var(--border);
}
.modal-header {
  padding: 20px 24px 12px;
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
}
.modal-header h3 {
  margin: 0; font-size: 18px; font-weight: 700;
}
.modal-close {
  background: transparent; border: none; cursor: pointer;
  font-size: 22px; color: var(--text-faint);
  line-height: 1; padding: 0 4px;
}
.modal-body { padding: 18px 24px; }
.modal-footer {
  padding: 14px 24px 20px;
  display: flex; gap: 8px; justify-content: flex-end;
  border-top: 1px solid var(--border);
}
.modal-footer .btn { padding: 10px 18px; }

.field-row { margin-bottom: 14px; }
.field-row label {
  display: block;
  font-size: 12px; font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.04em;
  color: var(--text-faint);
  margin-bottom: 6px;
}
.field-row input, .field-row select, .field-row textarea {
  width: 100%;
  padding: 9px 12px;
  font-family: inherit; font-size: 14px;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  background: var(--bg-surface);
  color: var(--text);
}
.field-row input:focus, .field-row select:focus, .field-row textarea:focus {
  outline: none; border-color: var(--terracotta);
}
.variant-card {
  padding: 12px 14px;
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  margin-top: 10px;
}
.variant-card-title {
  font-size: 13px; font-weight: 600; color: var(--text);
  display: flex; align-items: center; justify-content: space-between;
}
.variant-card-body {
  margin-top: 6px; font-size: 13px; color: var(--text-soft);
  font-style: italic;
}
.variant-card-meta {
  margin-top: 8px;
  font-size: 11px; color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
}

/* ── Sequence step timeline ── */
.seq-timeline {
  margin: 18px 0;
  padding: 0;
  position: relative;
}
.seq-step {
  position: relative;
  padding: 12px 12px 12px 48px;
  margin-bottom: 8px;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
}
.seq-step::before {
  content: '';
  position: absolute;
  left: 22px; top: 26px; bottom: -8px;
  width: 2px;
  background: var(--border);
}
.seq-step:last-child::before { display: none; }
.seq-step-num {
  position: absolute;
  left: 12px; top: 12px;
  width: 24px; height: 24px;
  background: var(--bg-sunken);
  color: var(--text-soft);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700;
  font-family: 'JetBrains Mono', monospace;
  border: 2px solid var(--border);
  z-index: 1;
}
.seq-step.fired .seq-step-num {
  background: var(--state-won);
  color: var(--parchment);
  border-color: var(--state-won);
}
.seq-step.queued .seq-step-num {
  background: var(--terracotta);
  color: var(--parchment);
  border-color: var(--terracotta);
}
.seq-step.due .seq-step-num {
  background: var(--tier-priority);
  color: var(--parchment);
  border-color: var(--tier-priority);
  animation: seq-pulse 2s ease-in-out infinite;
}
@keyframes seq-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(181, 61, 36, 0.4); }
  50% { box-shadow: 0 0 0 6px rgba(181, 61, 36, 0); }
}
.seq-step-title {
  font-size: 14px; font-weight: 600;
  display: flex; align-items: center; gap: 8px;
}
.seq-step-meta {
  margin-top: 4px;
  font-size: 12px; color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
}
.seq-step-channel {
  display: inline-block;
  padding: 1px 6px;
  background: var(--bg-sunken);
  border-radius: var(--r-sm);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-soft);
}
.seq-step.requires-human .seq-step-channel {
  background: var(--terracotta);
  color: var(--parchment);
}

.enrollment-card {
  padding: 12px 14px;
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  margin-bottom: 8px;
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
}
.enrollment-card-info { flex: 1; min-width: 0; }
.enrollment-card-status {
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--text-faint);
  margin-bottom: 4px;
}
.enrollment-card-step { font-size: 13px; font-weight: 600; color: var(--text); }
.enrollment-card-due {
  font-size: 11px; color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
  margin-top: 2px;
}
.enrollment-card-actions {
  display: flex; gap: 4px;
}

/* ── Message thread modal ── */
.msg-agent-bar {
  margin-bottom: 12px;
}
.msg-agent-pill {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  border: 1px solid var(--border);
  background: var(--bg-sunken);
}
.msg-agent-online { color: #1b6c2c; border-color: #b6dec0; background: #ecf6ee; }
.msg-agent-offline { color: #8a3a1f; border-color: #e6c5b6; background: #fbeee6; }
.msg-agent-unknown { color: var(--text-faint); }

.msg-thread {
  margin: 12px 0;
  padding: 10px;
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  max-height: 340px;
  min-height: 120px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.msg-thread-empty {
  color: var(--text-faint);
  font-size: 13px;
  text-align: center;
  padding: 24px 8px;
  font-style: italic;
}

.msg-row {
  display: flex;
  width: 100%;
}
.msg-row-out { justify-content: flex-end; }
.msg-row-in { justify-content: flex-start; }

.msg-bubble {
  max-width: 78%;
  padding: 8px 12px;
  border-radius: 16px;
  border: 1px solid var(--border);
  font-size: 13px;
  line-height: 1.42;
  word-break: break-word;
}
.msg-bubble-out {
  background: #d6e8ff;       /* iMessage blue tint */
  border-color: #b9d3f2;
  color: #102542;
  border-bottom-right-radius: 4px;
}
.msg-bubble-out.msg-bubble-sms {
  background: #d8f1d6;       /* SMS green tint */
  border-color: #b6dab2;
  color: #143a13;
}
.msg-bubble-in {
  background: var(--parchment);
  border-color: var(--border);
  color: var(--text);
  border-bottom-left-radius: 4px;
}
.msg-body { white-space: pre-wrap; }
.msg-meta {
  margin-top: 4px;
  font-size: 10px;
  color: var(--text-faint);
  letter-spacing: 0.02em;
}
.msg-bubble-err {
  margin-top: 6px;
  padding: 4px 8px;
  background: #fbeee6;
  color: #8a3a1f;
  border-radius: var(--r-sm);
  font-size: 11px;
}

#msg-body {
  width: 100%;
  font-family: inherit;
  font-size: 13px;
  padding: 8px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  resize: vertical;
}

/* ── Title review surface ── */
.tr-status-pill {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  border: 1px solid var(--border);
  background: var(--bg-sunken);
  color: var(--text-soft);
}
.tr-status-clear   { background: #ecf6ee; border-color: #b6dec0; color: #1b6c2c; }
.tr-status-active  { background: #fff3d6; border-color: #e7d6a3; color: #7a5a16; }
.tr-status-defects { background: #fbeee6; border-color: #e6c5b6; color: #8a3a1f; }
.tr-status-pending { background: var(--bg-sunken); color: var(--text-faint); }

.tr-list { display: flex; flex-direction: column; gap: 12px; }

.tr-card {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 12px 14px;
  background: var(--parchment);
}
.tr-card-head {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 6px;
}
.tr-card-age {
  margin-left: auto;
  font-size: 11px;
  color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
}
.tr-card-meta {
  font-size: 12px;
  color: var(--text-soft);
  margin-bottom: 6px;
}
.tr-card-link { margin-top: 8px; font-size: 12px; }

.tr-defects { margin-top: 8px; }
.tr-defects-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--tier-priority);
  margin-bottom: 4px;
}
.tr-defects-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.tr-defect {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 6px 10px;
  background: var(--bg-sunken);
  border-radius: var(--r-sm);
  font-size: 12px;
}
.tr-defect-major { border-left: 3px solid var(--tier-priority); }
.tr-defect-minor { border-left: 3px solid var(--copper); }
.tr-defect-sev {
  text-transform: uppercase;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  flex-shrink: 0;
  padding-top: 2px;
  width: 40px;
}
.tr-defect-major .tr-defect-sev { color: var(--tier-priority); }
.tr-defect-minor .tr-defect-sev { color: var(--copper); }
.tr-defect-desc { flex: 1; }
.tr-defect-resolved {
  flex-shrink: 0;
  font-size: 11px;
  color: #1b6c2c;
}

/* ── Flagged instruments panel (LAKE §K, recall-only) ────────────────────── */
.fi-panel { margin-bottom: 12px; }
.fi-preview-badge {
  display: inline-block; margin-left: 8px;
  padding: 2px 8px; font-size: 10px; font-weight: 700; letter-spacing: 0.05em;
  background: #f3e6c8; color: #7a5e1c; border: 1px solid #e0cf9b;
  border-radius: 3px; cursor: help;
}
.fi-type-chip {
  display: inline-block; padding: 1px 8px; border-radius: 999px;
  background: var(--bg-sunken); border: 1px solid var(--border);
  font-size: 11px; color: var(--text-soft); margin-right: 4px;
}
.fi-list { display: flex; flex-direction: column; gap: 10px; }
.fi-card {
  border: 1px solid var(--border); border-radius: var(--r-md);
  padding: 12px 14px; background: var(--panel);
  border-left: 4px solid var(--border);
}
.fi-tone-high { border-left-color: var(--tier-priority); }
.fi-tone-mid  { border-left-color: var(--copper); }
.fi-tone-low  { border-left-color: var(--text-faint); }

.fi-head {
  display: flex; align-items: center; gap: 10px;
  flex-wrap: wrap; margin-bottom: 8px;
}
.fi-type-badge {
  font-weight: 600; font-size: 13px; color: var(--text);
}
.fi-date { font-size: 12px; color: var(--text-soft); font-family: 'JetBrains Mono', monospace; }
.fi-volpg { margin-left: auto; }

.fi-status-pill {
  display: inline-block; padding: 2px 10px; border-radius: 999px;
  font-size: 11px; font-weight: 600; letter-spacing: 0.02em;
  border: 1px solid var(--border);
}
.fi-status-pill.fi-unreviewed { background: var(--bg-sunken); color: var(--text-faint); }
.fi-status-pill.fi-ok         { background: #d8e5cc; color: var(--good); border-color: #b9d3a6; }
.fi-status-pill.fi-concern    { background: #f3d9c8; color: var(--terracotta); border-color: #e9b896; }
.fi-status-pill.fi-pulled     { background: #d4dde8; color: #2d4a6f; border-color: #b6c4d6; }

.fi-body { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }
.fi-row { display: flex; gap: 10px; font-size: 13px; }
.fi-label { flex: 0 0 64px; color: var(--text-faint); font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; padding-top: 2px; }
.fi-val { flex: 1; }

.fi-match-chip {
  display: inline-block; padding: 1px 8px; border-radius: 4px;
  background: var(--bg-sunken); border: 1px solid var(--border);
  font-size: 11px; color: var(--text-soft);
}
.fi-surname-only {
  display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 4px;
  background: #f3e6c8; color: #7a5e1c; font-size: 10px;
  border: 1px solid #e0cf9b; cursor: help;
}

.fi-actions {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding-top: 8px; border-top: 1px dashed var(--border);
}
.fi-status-select { font-size: 12px; padding: 4px 6px; }
.fi-notes-input {
  flex: 1; min-width: 180px; font-size: 12px; padding: 4px 8px;
  border: 1px solid var(--border); border-radius: var(--r-sm); background: var(--panel);
}

/* ── Approval gate banner + history ── */
.gate-banner {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  border-radius: var(--r-md);
  margin-bottom: 18px;
  border: 1px solid;
}
.gate-banner-pending {
  background: #fff8e1;
  border-color: #e7d6a3;
  color: #4a3a13;
}
.gate-banner-satisfied {
  background: #ecf6ee;
  border-color: #b6dec0;
  color: #1b6c2c;
}
.gate-banner-icon {
  font-size: 24px;
  flex-shrink: 0;
}
.gate-banner-body { flex: 1; min-width: 0; }
.gate-banner-title {
  font-weight: 700;
  font-size: 15px;
  margin-bottom: 2px;
}
.gate-banner-sub {
  font-size: 12px;
  color: var(--text-soft);
}
.gate-banner-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}

.gate-confirm-row code {
  background: var(--bg-sunken);
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 12px;
}
.gate-confirm-row input {
  font-family: 'JetBrains Mono', monospace;
  letter-spacing: 0.05em;
}

.gate-history-row {
  padding: 8px 0;
  border-bottom: 1px solid var(--border);
}
.gate-history-row:last-child { border-bottom: 0; }
.gate-history-head {
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 4px;
}
.gate-history-icon { font-size: 14px; }
.gate-history-type { font-size: 13px; font-weight: 600; flex: 1; }
.gate-decision-pill {
  text-transform: uppercase;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
  padding: 1px 8px;
  border-radius: 999px;
  border: 1px solid var(--border);
}
.gate-decision-approve { background: #ecf6ee; border-color: #b6dec0; color: #1b6c2c; }
.gate-decision-reject  { background: #fbeee6; border-color: #e6c5b6; color: #8a3a1f; }
.gate-decision-hold    { background: #fff8e1; border-color: #e7d6a3; color: #7a5a16; }
.gate-history-meta {
  font-size: 11px;
  color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
}
.gate-history-rationale {
  margin-top: 4px;
  font-size: 12px;
  color: var(--text-soft);
  font-style: italic;
}

/* ── Audit timeline ── */
.audit-day { margin-bottom: 18px; }
.audit-day-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
  margin-bottom: 6px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 3px;
}
.audit-day-count {
  display: inline-block;
  margin-left: 6px;
  padding: 0 6px;
  background: var(--bg-sunken);
  border-radius: 999px;
  color: var(--text-soft);
  font-size: 10px;
}
.audit-rows { display: flex; flex-direction: column; gap: 4px; }

.audit-row {
  display: flex;
  gap: 10px;
  padding: 8px 10px;
  border-radius: var(--r-sm);
  background: transparent;
  border-left: 3px solid transparent;
}
.audit-row:hover { background: var(--bg-sunken); }
.audit-create { border-left-color: #b6dec0; }
.audit-update { border-left-color: var(--copper); }
.audit-delete { border-left-color: var(--tier-priority); }

.audit-icon {
  font-size: 16px;
  flex-shrink: 0;
  width: 22px;
  text-align: center;
}
.audit-body { flex: 1; min-width: 0; }
.audit-head {
  display: flex;
  gap: 8px;
  align-items: baseline;
  flex-wrap: wrap;
}
.audit-change {
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
}
.audit-create .audit-change { color: #1b6c2c; }
.audit-update .audit-change { color: #7a5a16; }
.audit-delete .audit-change { color: #8a3a1f; }
.audit-entity {
  font-size: 11px;
  color: var(--text-soft);
  background: var(--bg-sunken);
  padding: 1px 6px;
  border-radius: 3px;
}
.audit-time {
  margin-left: auto;
  font-size: 11px;
  color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
}
.audit-meta {
  margin-top: 2px;
  font-size: 11px;
  color: var(--text-faint);
}
.audit-actor {
  display: inline-block;
  padding: 0 6px;
  border-radius: 3px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
}
.audit-actor-human  { background: #e9eef4; color: #2d4a6b; }
.audit-actor-system { background: #f4ede0; color: #6a4a16; }
.audit-actor-agent  { background: #ecf6ee; color: #1b6c2c; }
.audit-actor-unknown { background: var(--bg-sunken); color: var(--text-faint); }

.audit-fields {
  margin-top: 4px;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.audit-field {
  font-size: 11px;
  background: var(--parchment);
  border: 1px solid var(--border);
  padding: 1px 6px;
  border-radius: 3px;
  color: var(--text-soft);
}
.audit-overflow {
  font-size: 11px;
  color: var(--text-faint);
  font-style: italic;
  align-self: center;
}

/* ── Source pill + NPRI card (v0.7-npri) ── */
.source-pill {
  display: inline-block;
  padding: 1px 8px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 600;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: var(--bg-sunken);
  color: var(--text-soft);
  margin-left: 6px;
  vertical-align: middle;
}
.src-stale { background: #f4ede0; border-color: #e7d6a3; color: #6a4a16; }
.src-npri  { background: #ecf0f9; border-color: #c4cee0; color: #2d4a6b; }
.src-both  { background: #f0e8f2; border-color: #d4bfd9; color: #553a5f; }

.npri-card .npri-flag {
  display: inline-block;
  margin-left: 4px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  padding: 1px 6px;
  border-radius: 3px;
  letter-spacing: 0.04em;
  vertical-align: middle;
}
.npri-flag-vd    { background: #fff3d6; color: #7a5a16; border: 1px solid #e7d6a3; }
.npri-flag-float { background: #ecf6ee; color: #1b6c2c; border: 1px solid #b6dec0; }

/* ── Chain of title (v0.7-chain) ── */
.chain-status-pill {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  border: 1px solid var(--border);
  background: var(--bg-sunken);
  color: var(--text-soft);
}
.chain-status-clear   { background: #ecf6ee; border-color: #b6dec0; color: #1b6c2c; }
.chain-status-active  { background: #fff3d6; border-color: #e7d6a3; color: #7a5a16; }
.chain-status-defects { background: #fbeee6; border-color: #e6c5b6; color: #8a3a1f; }
.chain-status-pending { background: var(--bg-sunken); color: var(--text-faint); }

.chain-section { margin-top: 12px; }

.chain-banner {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px; margin-bottom: 14px;
  border: 1px solid; border-radius: var(--r-md);
}
.chain-banner-unbroken    { background: #ecf6ee; border-color: #b6dec0; color: #1b6c2c; }
.chain-banner-in_progress { background: #fff8e1; border-color: #e7d6a3; color: #4a3a13; }
.chain-banner-broken      { background: #fbeee6; border-color: #e6c5b6; color: #8a3a1f; }
.chain-banner-not_started { background: var(--bg-sunken); border-color: var(--border); color: var(--text-soft); }
.chain-banner-icon { font-size: 20px; flex-shrink: 0; }
.chain-banner-body { flex: 1; min-width: 0; }
.chain-banner-title { font-weight: 700; font-size: 14px; }
.chain-banner-sub { font-size: 12px; color: var(--text-soft); margin-top: 2px; }
.chain-banner-actions { flex-shrink: 0; }

/* Vertical timeline with seq markers + connector line */
.chain-timeline {
  display: flex; flex-direction: column;
  position: relative;
}
.chain-link {
  display: flex;
  gap: 14px;
  padding: 14px 0;
  border-bottom: 1px solid var(--border);
}
.chain-link:last-child { border-bottom: 0; }
.chain-link-marker {
  flex-shrink: 0;
  width: 56px;
  display: flex; flex-direction: column; align-items: center; gap: 4px;
}
.chain-link-seq {
  width: 28px; height: 28px;
  border-radius: 50%;
  background: var(--redwood); color: var(--parchment);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 12px;
  font-family: 'JetBrains Mono', monospace;
}
.chain-link-icon { font-size: 18px; }
.chain-link-body { flex: 1; min-width: 0; }
.chain-link-head {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 4px;
}
.chain-link-type {
  font-weight: 700;
  font-size: 13px;
  text-transform: capitalize;
}
.chain-link-year {
  font-family: 'JetBrains Mono', monospace;
  color: var(--text-soft);
  font-size: 12px;
}
.chain-verified {
  margin-left: auto;
  font-size: 11px;
  background: #ecf6ee; color: #1b6c2c;
  border: 1px solid #b6dec0;
  padding: 1px 8px; border-radius: 999px;
}
.chain-link-parties {
  font-size: 13px;
  margin-bottom: 4px;
  line-height: 1.4;
}
.chain-link-grantor { color: var(--text-soft); }
.chain-link-grantee { font-weight: 600; }
.chain-link-arrow { color: var(--text-faint); margin: 0 6px; }
.chain-link-meta {
  font-size: 11px;
  color: var(--text-faint);
  font-family: 'JetBrains Mono', monospace;
}
.chain-link-docs {
  margin-top: 6px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 11px;
}
.chain-link-doc {
  background: var(--bg-sunken);
  padding: 2px 8px;
  border-radius: 3px;
  color: var(--accent);
}
.chain-link-attach {
  background: var(--bg-sunken);
  padding: 2px 8px;
  border-radius: 3px;
  color: var(--text-soft);
}
.chain-link-notes {
  margin-top: 6px;
  font-size: 12px;
  color: var(--text-soft);
  font-style: italic;
}

.chain-gap {
  margin: 8px 0;
  padding: 10px 14px;
  background: #fbeee6;
  border-left: 4px solid var(--tier-priority);
  border-radius: var(--r-sm);
}
.chain-gap-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--tier-priority);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.chain-gap-desc {
  margin-top: 4px;
  font-size: 12px;
  color: var(--text);
  line-height: 1.4;
}

.chain-side-card {
  border-left: 3px solid var(--copper);
}

/* ── Mobile ── */
@media (max-width: 768px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar { display: none; }
  .entity-360 { grid-template-columns: 1fr; }
  .topbar-search { width: 160px; }
  .session-shell { padding: 0; }
  .session-card, .dispo-section { border-radius: 0; border-left: 0; border-right: 0; }
  .session-quick-ref { grid-template-columns: 1fr; }
}


/* --- Triage CSS ported from 606 --- */
/* Neches Land — Leads Triage. Light mode in Landmen LLC redwood palette. */
@import url("https://fonts.googleapis.com/css2?family=Bitter:wght@400;500;600;700&display=swap");

:root {
  /* Earth-tone redwood palette (matches 605 CRM brand system) */
  --redwood: #6b3a25;
  --redwood-dim: #8a4d33;
  --terracotta: #c66e3f;
  --terracotta-dim: #d68b66;
  --copper: #b87333;
  --sepia: #704214;
  --parchment: #f7f1e6;
  --sand: #ebe2cf;
  --sand-dim: #e1d5bd;

  /* Semantic */
  --bg: var(--parchment);
  --panel: #ffffff;
  --panel-2: var(--sand);
  --border: #d8cdb4;
  --text: #2a1f17;
  --muted: #7a6651;
  --accent: var(--redwood);
  --accent-soft: rgba(107, 58, 37, 0.08);
  --good: #5e7c3d;
  --warn: var(--copper);
  --bad: #a04030;
  --high: var(--terracotta);
  --med: #5b7a8f;
  --low: #9a8a72;
}
* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
body {
  font: 14px/1.55 "Bitter", Georgia, "Times New Roman", serif;
  background: var(--bg);
  color: var(--text);
}
.muted { color: var(--muted); }
.error { color: var(--bad); white-space: pre-wrap; }

/* Global: HTML hidden attribute always wins over class display rules. */
[hidden] { display: none !important; }

/* Auth gate */
#auth-gate {
  position: fixed; inset: 0;
  display: grid; place-items: center;
  background: var(--bg);
}
.auth-card {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 12px; padding: 32px 40px; max-width: 420px; width: 90%;
  text-align: center;
}
.auth-card h1 { margin: 0 0 8px; font-size: 22px; }
.auth-card p  { margin: 12px 0; color: var(--muted); }
button#signin-btn {
  background: var(--accent); color: #fff; border: 0;
  padding: 10px 18px; border-radius: 6px; font-size: 14px; cursor: pointer;
  font-family: inherit;
}
button#signin-btn:hover { background: var(--redwood-dim); }

/* App bar */
header#appbar {
  position: sticky; top: 0; z-index: 5;
  display: grid; grid-template-columns: auto 1fr auto;
  align-items: center; gap: 24px; padding: 10px 16px;
  background: var(--panel); border-bottom: 1px solid var(--border);
}
.brand { font-weight: 600; }
.appbar-stats { color: var(--muted); font-size: 13px; }
.appbar-stats span:not(.muted) { color: var(--text); }
.appbar-user { display: flex; align-items: center; gap: 12px; font-size: 13px; }
button.ghost {
  background: transparent; color: var(--text);
  border: 1px solid var(--border); border-radius: 4px;
  padding: 4px 10px; cursor: pointer; font-size: 12px;
  font-family: inherit;
}
button.ghost:hover { background: var(--panel-2); }
button.primary {
  background: var(--accent); color: #fff; border: 0;
  padding: 8px 16px; border-radius: 6px; cursor: pointer; font-weight: 600;
  font-family: inherit;
}
button.primary:hover { background: var(--redwood-dim); }

/* App layout — wider detail panel for the subtab content (instrument/chain/map) */
main#app {
  display: grid;
  grid-template-columns: 280px 1fr 720px;
  height: calc(100vh - 49px);
}
@media (max-width: 1400px) {
  main#app { grid-template-columns: 260px 1fr 600px; }
}
@media (max-width: 1100px) {
  main#app { grid-template-columns: 240px 1fr; }
  #lead-detail { position: fixed; right: 0; top: 49px; bottom: 0; width: 720px; max-width: 95vw; box-shadow: -4px 0 24px rgba(107, 58, 37, 0.18); }
}

/* Filters */
#filters {
  background: var(--panel); border-right: 1px solid var(--border);
  padding: 16px; overflow-y: auto;
}
.filter-group { margin-bottom: 18px; }
.filter-group > label {
  display: block; font-size: 11px; text-transform: uppercase;
  letter-spacing: 0.06em; color: var(--muted); margin-bottom: 6px;
}
.filter-group input[type="search"],
.filter-group input[type="number"],
.filter-group select {
  width: 100%; background: var(--bg); color: var(--text);
  border: 1px solid var(--border); border-radius: 4px;
  padding: 6px 8px; font: inherit;
}
.filter-group label input[type="checkbox"] { margin-right: 6px; }
.filter-group label:not(:first-child) { margin-top: 6px; display: block; font-size: 13px; text-transform: none; letter-spacing: 0; color: var(--text); }
.chips { display: flex; flex-wrap: wrap; gap: 4px; }
.chip {
  background: var(--bg); color: var(--muted);
  border: 1px solid var(--border); border-radius: 999px;
  padding: 3px 10px; font-size: 12px; cursor: pointer;
}
.chip.on { background: var(--accent); color: #fff; border-color: var(--accent); }
button#reset-filters { width: 100%; }

/* Lead list */
#lead-list { overflow-y: auto; background: var(--bg); }
table#leads-table { width: 100%; border-collapse: collapse; }
table#leads-table th {
  position: sticky; top: 0; background: var(--panel);
  text-align: left; padding: 8px 12px; font-size: 11px;
  text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted);
  border-bottom: 1px solid var(--border);
}
table#leads-table td {
  padding: 8px 12px; border-bottom: 1px solid var(--border);
  font-size: 13px;
}
table#leads-table tr { cursor: pointer; }
table#leads-table tr:hover { background: var(--panel-2); }
table#leads-table tr.selected { background: var(--accent-soft); }
.num { text-align: right; font-variant-numeric: tabular-nums; }
.ref { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 12px; color: var(--accent); }

.empty, .loading { padding: 32px; text-align: center; color: var(--muted); }

/* Pills */
.pill {
  display: inline-block; padding: 2px 8px; border-radius: 999px;
  font-size: 11px; font-weight: 600; letter-spacing: 0.04em;
}
.tier-HIGH   { background: #f3d6c1; color: var(--redwood); }
.tier-MEDIUM { background: #dde3ea; color: #46647a; }
.tier-LOW    { background: var(--sand); color: var(--muted); }

/* Triage pills */
.triage-pill {
  display: inline-block; padding: 2px 8px; border-radius: 4px;
  font-size: 11px;
}
.triage-new            { background: var(--panel); color: var(--muted); border: 1px solid var(--border); }
.triage-reviewing      { background: var(--accent-soft); color: var(--redwood); }
.triage-confirmed      { background: #d8e5cc; color: var(--good); }
.triage-rejected       { background: #f0d4cf; color: var(--bad); }
.triage-needs_research { background: #f3e3c8; color: var(--warn); }
.triage-escalate       { background: #f3cfd1; color: #8f3540; }

/* Flag badges */
.flag {
  display: inline-block; padding: 1px 5px; margin-right: 3px;
  border-radius: 3px; font-size: 10px; font-weight: 600;
  font-family: ui-monospace, "SF Mono", monospace;
}
.flag.vd { background: #e8d8f0; color: #6b3a78; }
.flag.fl { background: #d4ead8; color: #2f6a3e; }
.flag.ls { background: #d8e2f0; color: #355478; }

/* Detail panel */
#lead-detail {
  background: var(--panel); border-left: 1px solid var(--border);
  padding: 0 20px 24px; overflow-y: auto;
}
.detail-header {
  display: flex; align-items: center; gap: 10px;
  position: sticky; top: 0; background: var(--panel);
  padding: 12px 0; border-bottom: 1px solid var(--border);
  margin-bottom: 16px;
}
.detail-header .ref-code {
  font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 16px; color: var(--accent);
}
.detail-header .score {
  margin-left: auto; color: var(--muted); font-size: 13px;
}
#detail-close {
  font-size: 18px; padding: 0 8px; line-height: 1;
}
#lead-detail h2 { font-size: 18px; margin: 0 0 12px; }
#lead-detail h3 {
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--muted); margin: 16px 0 6px;
}
.narrative {
  background: var(--panel-2); padding: 10px 12px; border-radius: 6px;
  font-size: 13px; line-height: 1.55;
}
.detail-section { margin-bottom: 16px; }
table.kv { width: 100%; border-collapse: collapse; font-size: 13px; }
table.kv th {
  text-align: left; padding: 4px 8px 4px 0; color: var(--muted);
  font-weight: normal; vertical-align: top; width: 130px;
}
table.kv td { padding: 4px 0; word-break: break-word; vertical-align: top; }
table.kv code {
  font-size: 11px; background: var(--bg); padding: 1px 5px; border-radius: 3px;
}
ul.bulleted { padding-left: 18px; margin: 4px 0; font-size: 13px; }

/* Triage section */
.triage label {
  display: block; margin: 10px 0 4px; font-size: 11px;
  text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted);
}
.triage select, .triage textarea {
  width: 100%; background: var(--bg); color: var(--text);
  border: 1px solid var(--border); border-radius: 4px;
  padding: 6px 8px; font: inherit;
}
.triage textarea { resize: vertical; min-height: 60px; }
.triage label input[type="checkbox"] { margin-right: 6px; }
.triage label:has(input[type="checkbox"]) { text-transform: none; letter-spacing: 0; color: var(--text); font-size: 13px; }
.triage-meta { font-size: 12px; margin: 8px 0; }
.saved-indicator { margin-left: 10px; color: var(--good); font-size: 12px; }

/* Strategy pills + new flag badges (added 2026-05-04 for stale_lessor support) */
.strategy-pill {
  display: inline-block; padding: 2px 7px; border-radius: 10px;
  font-size: 10px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase;
  border: 1px solid transparent;
}
.strategy-stale_lessor { background: var(--sand); color: var(--sepia); border-color: var(--border); }
.strategy-npri_holder  { background: #f3d6c1; color: var(--redwood); border-color: var(--terracotta-dim); }
.strategy-unknown      { background: var(--panel-2); color: var(--muted); }

.flag.dc   { background: #f0d4cf; color: var(--bad); }
.flag.oo   { background: #f3e3c8; color: var(--copper); }
.flag.nv   { background: #d8e5cc; color: var(--good); }
.flag.ph   { background: var(--sand); color: var(--text); }
.flag.inst { background: var(--accent-soft); color: var(--redwood); border: 1px solid var(--terracotta-dim); }
.flag.fi   { background: #f3d9c8; color: var(--terracotta); border: 1px solid #e9b896; cursor: help; }

.filter-group label.muted.small { font-size: 10px; opacity: 0.7; margin-bottom: 2px; }
.filter-group .muted.small { display: block; font-size: 10px; opacity: 0.7; margin-top: 2px; }

/* Landman-friendly hero name in table cells */
.holder-cell { display: flex; flex-direction: column; gap: 2px; }
.holder-name { font-weight: 600; font-size: 14px; color: var(--text); letter-spacing: -0.01em; }
.holder-sub { font-size: 11px; line-height: 1.3; }
.ref-code.muted.small { opacity: 0.55; font-size: 11px; margin-left: auto; font-family: ui-monospace, monospace; }

/* ── Subtabs ─────────────────────────────────────────────────────────────── */
.subtabs {
  display: flex; gap: 2px; margin: 4px 0 14px;
  border-bottom: 1px solid var(--border);
}
.subtab {
  background: transparent; color: var(--muted); border: 0;
  padding: 8px 14px; cursor: pointer; font: inherit; font-size: 13px;
  border-bottom: 2px solid transparent; margin-bottom: -1px;
  font-weight: 500;
}
.subtab:hover { color: var(--text); background: var(--accent-soft); }
.subtab.active { color: var(--redwood); border-bottom-color: var(--redwood); font-weight: 600; }

/* Skip-trace inline cell on the table row */
.trace-badge {
  display: inline-block; padding: 2px 7px; border-radius: 10px;
  font-size: 11px; font-weight: 500;
}
.trace-pending { background: var(--sand); color: var(--muted); border: 1px dashed var(--border); }
.trace-miss    { background: var(--panel-2); color: var(--muted); }
.trace-chip {
  display: inline-block; padding: 1px 5px; margin-right: 2px;
  background: var(--accent-soft); color: var(--redwood);
  border-radius: 3px; font-size: 11px; font-weight: 500;
}
.trace-chip.oos { background: #f3e3c8; color: var(--copper); }

/* Chain tab list */
.chain-list { display: flex; flex-direction: column; gap: 4px; }
.chain-row {
  padding: 8px 12px; border: 1px solid var(--border); border-radius: 5px;
  background: var(--panel); cursor: pointer;
  transition: background 0.12s, border-color 0.12s;
}
.chain-row:hover { background: var(--accent-soft); border-color: var(--terracotta-dim); }
.chain-row-name { font-weight: 600; font-size: 13px; color: var(--text); }
.chain-row-meta { margin-top: 2px; }

/* Phone / email chips inside the Contact section */
.phone-chip {
  display: inline-block; padding: 2px 6px; margin: 2px 2px 2px 0;
  background: var(--accent-soft); color: var(--redwood);
  border-radius: 3px; font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 12px;
  /* Keep each chip on one line — otherwise the parent <td>'s word-break breaks
     mid-number into a column of single characters at narrow viewports. */
  white-space: nowrap;
}
.trace-chip { display: inline-block; padding: 2px 6px; border-radius: 3px; font-size: 12px; background: var(--accent-soft); color: var(--redwood); white-space: nowrap; }
.trace-chip.oos { background: rgba(120, 90, 180, 0.12); color: #5a3d8a; }

/* Lead 360° header abstract chips — show up to 3 abstract ids next to tier */
.abs-tag {
  display: inline-flex; align-items: center;
  padding: 1px 7px; margin: 0 2px;
  font-size: 11px; font-weight: 600; letter-spacing: 0.3px;
  border-radius: 8px; border: 1px solid rgba(112, 66, 20, 0.35);
  background: rgba(184, 115, 51, 0.10); color: var(--redwood, #704214);
  font-family: var(--mono, ui-monospace, SFMono-Regular, monospace);
  white-space: nowrap;
}
.abs-tag-more {
  background: rgba(0, 0, 0, 0.04); color: var(--text-soft, #666);
  border-color: rgba(0, 0, 0, 0.15);
}
/* The kv table inside Lead 360° triage tabs should let chips flow as words,
   not break inside them. break-word is safe for prose but breaks atomic chips. */
table.kv td { overflow-wrap: anywhere; word-break: normal; }
table.kv td .phone-chip,
table.kv td .trace-chip { word-break: keep-all; }

/* Map tab — native Leaflet mini-map (zoomed) + embedded full heatmap below */
.map-section { margin-bottom: 18px; }
.map-section h3 { margin-top: 8px; }
.map-caption { margin: 0 0 8px; }
.leaflet-mini {
  width: 100%; height: 360px;
  border: 1px solid var(--border); border-radius: 6px;
  background: var(--panel-2);
}
.map-frame-wrap {
  width: 100%; height: 50vh; min-height: 380px;
  border: 1px solid var(--border); border-radius: 6px; overflow: hidden;
  background: var(--panel-2);
}
.map-frame-wrap iframe { width: 100%; height: 100%; border: 0; }

/* OCR placeholder */
.ocr-pending {
  padding: 14px 16px; background: var(--accent-soft);
  border: 1px dashed var(--terracotta-dim); border-radius: 6px;
  font-size: 13px; line-height: 1.5;
}
.ocr-pending strong { color: var(--redwood); }
.ocr-pending code { background: var(--panel); padding: 1px 5px; border-radius: 3px; font-size: 11px; }

/* ── Narrow holder column + 3-abstract chips on the row ───────────────────── */
table#leads-table td.holder-col { max-width: 220px; }
.holder-cell { max-width: 220px; }
.holder-name { display: block; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.holder-sub  { display: block; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.row-abstracts { display: flex; gap: 3px; margin-top: 3px; }
.abstract-chip {
  display: inline-block; padding: 1px 6px; font-size: 10px; font-weight: 500;
  background: var(--sand); color: var(--sepia);
  border: 1px solid var(--border); border-radius: 3px;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
}

/* ── Single full-size Leaflet map (replaces the dual-map structure) ──────── */
.leaflet-full {
  width: 100%; height: 65vh; min-height: 480px;
  border: 1px solid var(--border); border-radius: 6px;
  background: var(--panel-2);
}
.lead-map-legend {
  background: rgba(255,255,255,0.94);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 8px 10px;
  font-size: 12px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.1);
  line-height: 1.5;
}
.lead-map-legend .lml-head { font-weight: 600; margin-bottom: 4px; }
.lead-map-legend .lml-row { display: flex; align-items: center; gap: 6px; }
.lead-map-legend .lml-row strong { margin-left: auto; }
.lead-map-legend .lml-sw {
  display: inline-block; width: 10px; height: 10px;
  border: 1px solid rgba(0,0,0,0.3);
}
.lead-map-legend .lml-subject { margin-top: 4px; padding-top: 4px; border-top: 1px dotted var(--border); font-weight: 600; color: #b53d24; }

/* Lead-map feature popup — dense detail card opened on bubble click */
.lead-map-popup { font-size: 12px; line-height: 1.42; min-width: 220px; }
.lead-map-popup .lp-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 6px; padding-bottom: 4px; border-bottom: 1px solid rgba(0,0,0,0.1); }
.lead-map-popup .lp-type { font-weight: 700; font-size: 12.5px; color: var(--ink, #222); }
.lead-map-popup .lp-date { font-family: var(--mono, ui-monospace, monospace); font-size: 11.5px; color: var(--text-soft, #666); }
.lead-map-popup .lp-row { display: flex; gap: 8px; padding: 1.5px 0; }
.lead-map-popup .lp-k { color: var(--text-soft, #666); font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.3px; min-width: 64px; padding-top: 1.5px; }
.lead-map-popup .lp-v { flex: 1; min-width: 0; word-break: break-word; }
.lead-map-popup .lp-mono { font-family: var(--mono, ui-monospace, monospace); }
.lead-map-popup .lp-foot { margin-top: 6px; padding-top: 4px; border-top: 1px dotted rgba(0,0,0,0.1); font-size: 10.5px; color: var(--text-soft, #666); text-align: right; font-family: var(--mono, ui-monospace, monospace); }
.lead-map-popup .lp-list { list-style: none; margin: 4px 0 0; padding: 0; font-size: 11.5px; }
.lead-map-popup .lp-list li { display: flex; justify-content: space-between; gap: 8px; padding: 1px 0; border-top: 1px dotted rgba(0,0,0,0.06); }
.lead-map-popup .lp-name { color: var(--ink, #222); }
.lead-map-popup .lp-num { color: var(--text-soft, #666); font-family: var(--mono, ui-monospace, monospace); }


/* ── Title timeline (Lead 360° → Title tab) ──────────────────────────── */
.title-timeline { margin: 0 0 18px; }

/* Ruled-out grid: dense chronological table of surname-only instruments
   we considered and dropped from the title chain. Visually subordinate
   to the timeline above so the eye reads the chain first, then scans
   the disqualified set as supporting evidence. */
.title-ruledout { margin: 12px 0 18px; padding: 12px 14px; background: var(--bg-sunken, #f4ece0); border: 1px solid var(--border, #d8c8b0); border-radius: 6px; }
.title-ruledout .ro-head { margin-bottom: 8px; }
.title-ruledout .ro-head h4 { font-size: 13px; font-weight: 600; color: var(--ink-soft, #5a4a3a); }
.title-ruledout .ro-grid { display: flex; flex-direction: column; gap: 1px; background: var(--border, #d8c8b0); border-radius: 4px; overflow: hidden; }
.title-ruledout .ro-row {
  display: grid;
  grid-template-columns: 88px 110px minmax(140px, 1.5fr) minmax(140px, 1.5fr) 70px 22px;
  gap: 10px;
  align-items: center;
  padding: 4px 8px;
  background: var(--bg-surface, #fcf7ee);
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  line-height: 1.4;
  color: var(--ink-soft, #5a4a3a);
}
.title-ruledout .ro-row:hover { background: var(--sand-dim, #ece0c8); }
.title-ruledout .ro-head-row {
  background: transparent;
  color: var(--text-faint, #9b8970);
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: .8px;
  font-weight: 600;
}
.title-ruledout .ro-head-row:hover { background: transparent; }
.title-ruledout .ro-date { color: var(--redwood-dim, #8b6a4a); }
.title-ruledout .ro-type { font-weight: 600; font-size: 10px; text-transform: uppercase; letter-spacing: .4px; }
.title-ruledout .ro-grantor,
.title-ruledout .ro-grantee { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ink, #2a1f15); font-family: inherit; }
.title-ruledout .ro-vp { color: var(--text-faint, #9b8970); }
.title-ruledout .ro-doc { color: var(--redwood, #b53d24); text-decoration: none; font-size: 13px; }
.title-ruledout .ro-doc:hover { text-decoration: underline; }

.title-timeline .tt-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.tt-list { list-style: none; margin: 0; padding: 0; position: relative; }
.tt-list::before {
  content: ''; position: absolute; left: 14px; top: 0; bottom: 0;
  width: 2px; background: var(--border);
}
.tt-node { position: relative; padding: 0 0 14px 40px; min-height: 32px; }
.tt-dot {
  position: absolute; left: 2px; top: 0;
  width: 26px; height: 26px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg, #fff); border: 2px solid var(--border);
  font-size: 13px; font-weight: 700;
}
.tt-dot-anchor { background: rgba(181, 61, 36, 0.15); border-color: #b53d24; color: #b53d24; }
.tt-dot-lease  { background: rgba(184, 115, 51, 0.15); border-color: #b87333; }
.tt-dot-conv   { background: rgba(112, 66, 20, 0.12); border-color: #704214; }
.tt-card {
  background: var(--bg, #fff); border: 1px solid var(--border);
  border-radius: 6px; padding: 8px 12px;
}
.tt-kind-anchor .tt-card { border-color: #b53d24; box-shadow: 0 0 0 2px rgba(181, 61, 36, 0.08); }
.tt-head-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 4px; }
.tt-date { font-family: var(--mono, ui-monospace, monospace); font-size: 12px; font-weight: 600; color: var(--text-soft); }
.tt-type { font-weight: 600; font-size: 13px; }
.tt-type-anchor { color: #b53d24; }
.tt-volpg { font-family: var(--mono, ui-monospace, monospace); }
.tt-row { display: flex; gap: 8px; font-size: 12.5px; padding: 1px 0; }
.tt-k { color: var(--text-soft); min-width: 64px; font-size: 11px; text-transform: uppercase; letter-spacing: 0.3px; padding-top: 2px; }
.tt-v { flex: 1; min-width: 0; word-break: break-word; }
.tt-foot { margin-top: 4px; font-style: italic; }
.tt-match { display: inline-block; padding: 1px 6px; border-radius: 8px; font-size: 10.5px; font-weight: 600; letter-spacing: 0.2px; }
.tt-match-lessor   { background: rgba(181, 61, 36, 0.14); color: #b53d24; }
.tt-match-alias    { background: rgba(184, 115, 51, 0.14); color: #8a5a18; }
.tt-match-relative { background: rgba(58, 122, 106, 0.14); color: #2f5a4a; }

/* Leases-within-1mi table under the lead map */
.lead-leases-near { margin-top: 14px; }
.lead-leases-near .lln-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 6px; }
.lead-leases-near .lln-empty { font-size: 12px; color: var(--text-soft); font-style: italic; padding: 8px 0; }
.lead-leases-near .lln-tbl {
  width: 100%; border-collapse: collapse;
  font-size: 12px;
}
.lead-leases-near .lln-tbl th, .lead-leases-near .lln-tbl td {
  border-bottom: 1px solid var(--border);
  padding: 5px 8px; text-align: left;
}
.lead-leases-near .lln-tbl th { font-weight: 600; color: var(--text-soft); }
.lead-leases-near .lln-tbl td.num, .lead-leases-near .lln-tbl th.num { text-align: right; font-family: var(--mono, ui-monospace, monospace); }
.lead-leases-near .lln-tbl tbody tr:hover { background: rgba(181, 61, 36, 0.04); }
.map-controls { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }

/* ── Chain-tab "pending lakehouse query" notes ────────────────────────────── */
.chain-q-help { margin: 4px 0 8px; }
.chain-pending { margin-top: 8px; padding: 8px 10px; background: var(--accent-soft); border-left: 2px solid var(--terracotta-dim); border-radius: 4px; }
.chain-pending p { margin: 0; }

/* ── Notes timeline (multi-author speech bubbles) ─────────────────────────── */
.triage-head { display: flex; align-items: end; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.triage-head label { flex: 0 1 auto; min-width: 140px; }
.triage-head label.flag-line { display: flex; align-items: center; min-width: 0; text-transform: none; letter-spacing: 0; color: var(--text); font-size: 13px; }
.notes-timeline { display: flex; flex-direction: column; gap: 10px; margin: 8px 0 18px; max-height: 360px; overflow-y: auto; padding: 4px; }
.note-bubble { display: flex; gap: 10px; align-items: flex-start; }
.note-avatar {
  flex: 0 0 32px; width: 32px; height: 32px; border-radius: 50%;
  background: var(--accent); color: #fff; display: grid; place-items: center;
  font-weight: 700; font-size: 13px;
}
.note-body { flex: 1; background: var(--panel); border: 1px solid var(--border); border-radius: 8px; padding: 8px 12px; }
.note-meta { display: flex; gap: 8px; align-items: baseline; margin-bottom: 4px; }
.note-author { font-weight: 600; font-size: 12px; color: var(--redwood); }
.note-when, .note-legacy { font-size: 11px; }
.note-text { font-size: 13px; line-height: 1.5; white-space: pre-wrap; }

/* ── Mic button on the new-note input ─────────────────────────────────────── */
.notes-wrap { position: relative; }
.notes-wrap textarea { padding-right: 44px; }
.mic-btn {
  position: absolute; bottom: 8px; right: 8px;
  width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--border);
  background: var(--panel); cursor: pointer; font-size: 16px; line-height: 1;
  display: grid; place-items: center;
}
.mic-btn:hover { background: var(--accent-soft); border-color: var(--terracotta-dim); }
.mic-btn.recording {
  background: var(--bad); color: #fff; border-color: var(--bad);
  animation: mic-pulse 1.2s ease-in-out infinite;
}
@keyframes mic-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(160,64,48,0.6); }
  50%      { box-shadow: 0 0 0 8px rgba(160,64,48,0); }
}
.notes-actions { display: flex; gap: 12px; align-items: center; margin-top: 10px; }

/* ── Section hints + KV inline help ──────────────────────────────────────── */
.section-hint { margin: -4px 0 10px; line-height: 1.45; }
.kv td.kv-hint { font-style: italic; padding-left: 12px; max-width: 320px; line-height: 1.35; }
.yes-pill {
  display: inline-block; padding: 1px 8px; border-radius: 999px;
  background: #d8e5cc; color: var(--good);
  font-size: 12px; font-weight: 600; letter-spacing: 0.02em;
}

/* ── Score deltas ────────────────────────────────────────────────────────── */
.score-delta {
  display: inline-block; min-width: 40px; text-align: right;
  font-variant-numeric: tabular-nums; font-weight: 600;
}
.score-good { color: var(--good); }
.score-bad  { color: var(--bad); }

/* ── Signal tags (replaces the old quality_flags table) ──────────────────── */
.flag-tags {
  display: flex; flex-direction: column; gap: 8px;
}
.flag-tag {
  display: grid; grid-template-columns: minmax(160px, max-content) 1fr; gap: 12px; align-items: baseline;
  padding: 8px 12px; border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--panel-2);
}
.flag-tag .flag-label {
  font-weight: 600; font-size: 13px; letter-spacing: 0.01em;
  padding: 2px 8px; border-radius: 999px;
  background: var(--panel); border: 1px solid var(--border);
}
.flag-tag .flag-hint {
  font-size: 12px; color: var(--muted); line-height: 1.4;
}
.flag-tag.flag-good { background: #eef3e3; border-color: #c5d3a8; }
.flag-tag.flag-good .flag-label { background: #d8e5cc; color: var(--good); border-color: #b8cc94; }
.flag-tag.flag-warn { background: #f7ecd6; border-color: #e2cf9d; }
.flag-tag.flag-warn .flag-label { background: #f3e3c8; color: var(--warn); border-color: #d6b87e; }
.flag-tag.flag-bad  { background: #f4dcd4; border-color: #e0b6a8; }
.flag-tag.flag-bad  .flag-label { background: #f0d4cf; color: var(--bad); border-color: #d6a193; }
.flag-tag.flag-info { background: var(--panel-2); }
.flag-tag.flag-info .flag-label { background: var(--panel); color: var(--muted); }

/* ── Provenance fold ─────────────────────────────────────────────────────── */
.provenance-fold > summary {
  cursor: pointer; font-size: 12px; color: var(--muted);
  text-transform: uppercase; letter-spacing: 0.06em;
  padding: 8px 0; border-top: 1px dashed var(--border); margin-top: 12px;
  list-style: none;
}
.provenance-fold > summary::-webkit-details-marker { display: none; }
.provenance-fold > summary::before { content: "▸ "; }
.provenance-fold[open] > summary::before { content: "▾ "; }
.provenance-fold > summary:hover { color: var(--redwood); }

/* ── Map popup: top operators per abstract ───────────────────────────────── */
.abstract-popup { font-size: 13px; line-height: 1.45; min-width: 220px; }
.popup-ops { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--border); }
.popup-ops-h { text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 4px; }
.popup-op-row {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 12px; padding: 2px 0;
}
.popup-op-name { font-weight: 600; color: var(--redwood); }
.popup-op-counts { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* ── Instrument tab: V13 document cards ──────────────────────────────────── */
.doc-list { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.doc-card {
  border: 1px solid var(--border); border-radius: 8px;
  background: var(--panel); overflow: hidden;
}
.doc-card > summary {
  list-style: none; cursor: pointer; padding: 10px 12px;
  display: flex; flex-wrap: wrap; gap: 10px; align-items: baseline;
  font-size: 13px;
}
.doc-card > summary::-webkit-details-marker { display: none; }
.doc-card > summary::before { content: "▸ "; color: var(--muted); }
.doc-card[open] > summary::before { content: "▾ "; color: var(--redwood); }
.doc-card > summary:hover { background: var(--accent-soft); }
.doc-type {
  font-weight: 700; color: var(--redwood);
  background: var(--accent-soft); padding: 2px 8px; border-radius: 4px;
}
.doc-vol { font-variant-numeric: tabular-nums; color: var(--text); }
.doc-score { margin-left: auto; }
.doc-body { padding: 0 12px 12px; border-top: 1px dashed var(--border); }
.doc-row {
  display: grid; grid-template-columns: 100px 1fr; gap: 12px;
  padding: 4px 0; font-size: 13px; align-items: baseline;
}
.doc-label { color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; font-size: 11px; }
.doc-actions { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.doc-btn {
  padding: 6px 10px; border-radius: 6px; border: 1px solid var(--border);
  background: var(--bg); color: var(--text); cursor: pointer; font-size: 12px;
  text-decoration: none; display: inline-block;
}
.doc-btn:hover { background: var(--accent-soft); border-color: var(--terracotta-dim); }
.doc-btn.ghost { color: var(--muted); }
.match-toks { display: inline-flex; flex-wrap: wrap; gap: 4px; }
.match-tok {
  font-size: 11px; padding: 1px 6px; border-radius: 3px;
  background: var(--accent-soft); color: var(--redwood);
  font-family: ui-monospace, monospace;
}
.doc-ocr-text {
  margin-top: 10px; padding: 10px; background: var(--bg);
  border: 1px dashed var(--border); border-radius: 6px;
  font-size: 12px; line-height: 1.5; max-height: 320px; overflow-y: auto;
  white-space: pre-wrap; font-family: ui-monospace, monospace;
}

/* ── NPRI source-document callout (upstream-stamped) ─────────────────────── */
.source-doc-card {
  margin: 8px 0 12px; padding: 12px 14px;
  background: var(--accent-soft); border: 1px solid var(--terracotta-dim); border-radius: 8px;
}
.source-doc-h {
  font-weight: 700; color: var(--redwood); margin-bottom: 8px;
  text-transform: uppercase; letter-spacing: 0.04em; font-size: 12px;
}
.source-doc-card .kv {
  display: flex; flex-wrap: wrap; gap: 16px; padding: 0; margin: 0;
}
.source-doc-card .kv > div { font-size: 13px; }
.source-doc-card blockquote.legal-desc {
  margin: 10px 0 0; padding: 8px 12px; border-left: 3px solid var(--terracotta);
  background: var(--panel); font-style: italic; font-size: 13px; line-height: 1.5;
  border-radius: 0 4px 4px 0;
}

/* role chips on doc cards (grantor / grantee / both) */
.match-tok.role-grantor { background: #f0d4cf; color: var(--bad); }
.match-tok.role-grantee { background: #d8e5cc; color: var(--good); }
.match-tok.role-both    { background: var(--accent-soft); color: var(--redwood); }

/* ─── Triage dash header ─────────────────────────────────────────────── */
.triage-dash {
  background: var(--bg-surface, #fdfaf5);
  border: 1px solid var(--border, rgba(122,82,58,0.25));
  border-radius: 8px;
  padding: 12px 16px;
  margin-bottom: 12px;
  font-family: 'Bitter', serif;
}
.dash-row {
  display: grid;
  grid-template-columns: 200px 1fr 1fr 1.5fr;
  gap: 18px;
  align-items: center;
  padding: 6px 0;
}
.dash-row-aoi {
  border-top: 1px dashed var(--border, rgba(122,82,58,0.3));
  margin-top: 6px;
  padding-top: 10px;
}
.dash-cell { min-width: 0; }
.dash-cell-wide { grid-column-end: span 1; }
.dash-headline {
  display: flex; flex-direction: column;
  align-items: flex-start; justify-content: center;
}
.dash-headline-aoi { color: var(--redwood, #7a3d2a); }
.dash-num {
  font-size: 28px; font-weight: 700; line-height: 1;
  color: var(--ink, #1a1410);
  font-family: 'Bitter', serif;
}
.dash-frac {
  font-size: 16px; font-weight: 500; color: var(--muted, #7a7065);
}
.dash-lbl {
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--muted, #7a7065); margin-top: 2px;
}
.dash-sub {
  font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--muted, #7a7065); margin-bottom: 4px;
}
.dash-pills {
  display: flex; flex-wrap: wrap; gap: 6px;
}
.dash-pill {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--panel, #f4ebe0);
  color: var(--ink, #1a1410);
  border: 1px solid var(--border, rgba(122,82,58,0.18));
  border-radius: 999px;
  font-size: 12px; padding: 3px 9px;
  font-family: 'Bitter', serif; font-weight: 500;
}
.dash-pill b { font-weight: 700; }
.dash-pill.tier-HIGH    { background: #e7d4c4; color: #6b3a1f; }
.dash-pill.tier-MEDIUM  { background: #efe1c9; color: #7a572a; }
.dash-pill.tier-LOW     { background: #ece5d6; color: #7a7065; }
.dash-pill.strategy-stale_lessor { background: #efdcca; color: #6b3a1f; }
.dash-pill.strategy-npri_holder  { background: #d9d4ec; color: #4a3a7a; }
.dash-pill.strategy-fast_mover   { background: #f3d7c7; color: #8f3540; }
.dash-pill.strategy-play_aoi     { background: #d8e5cc; color: #355e3b; }
.dash-pill.aoi-have      { background: #d8e5cc; color: #355e3b; border-color: #b9cda6; }
.dash-pill.aoi-pending   { background: #f3e3c8; color: #7a5a16; border-color: #d9c283; }
.dash-pill.aoi-deceased  { background: #ece1d4; color: #5a3d2a; border-color: #c8a98a; }
.dash-status { font-size: 13px; line-height: 1.4; color: var(--ink, #1a1410); }
.dash-warn { color: #8f6017; font-weight: 500; }
.dash-ok   { color: #355e3b; font-weight: 600; }
@media (max-width: 1100px) {
  .dash-row { grid-template-columns: 1fr 1fr; gap: 12px; }
  .dash-cell-wide { grid-column: 1 / -1; }
}
.dash-row-live {
  border-top: 1px dashed var(--border, rgba(122,82,58,0.3));
  margin-top: 6px;
  padding-top: 10px;
}
.dash-headline-live { color: #8f3540; }
.dash-headline-live .dash-num.live-pulse {
  color: #c44a3d; font-size: 22px;
  animation: live-pulse 1.6s ease-in-out infinite;
}
@keyframes live-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.35; }
}
.dash-pill.live-spud  { background: #f3e3c8; color: #6b3a1f; border-color: #d9c283; }
.dash-pill.live-warn  { background: #f0d4cf; color: #8f3540; border-color: #d9a4a0; font-weight: 600; }

/* Active operators row */
.dash-row-operators {
  border-top: 1px dashed var(--border, rgba(122,82,58,0.3));
  margin-top: 6px;
  padding-top: 10px;
}
.dash-headline-ops { color: #5a3d2a; }
.dash-pill.op-dom    { background: #e9c977; color: #3d2a1d; border-color: #b8861f; font-weight: 700; }
.dash-pill.op-major  { background: #f3e3c8; color: #5a3d2a; border-color: #d9c283; }
.dash-pill.op-minor  { background: #ece5d6; color: #5a4a35; }
.dash-pill.op-new    { background: #d9d4ec; color: #4a3a7a; border-color: #b6acd5; font-weight: 600; }
.dash-pill.op-legacy { background: #ece1d4; color: #7a7065; border: 1px dashed #c8a98a; }
.op-counties { color: var(--muted, #7a7065); font-size: 11px; margin-left: 4px; }

/* ─── Abstract chips, heat-tinted ────────────────────────────────────── */
/* Default abstract-chip styling lives elsewhere. These are heat overlays. */
.abstract-chip-core-aoi {
  background: #f0d4cf !important; color: #8f3540 !important;
  border: 1px solid #d9a4a0 !important; font-weight: 700;
}
.abstract-chip-hot {
  background: #f3d7c7 !important; color: #6b3a1f !important;
  border: 1px solid #d9b89e !important; font-weight: 600;
}
.abstract-chip-warm {
  background: #f3e3c8 !important; color: #7a5a16 !important;
  border: 1px solid #d9c283 !important;
}
.abstract-chip-cool {
  background: #ece5d6 !important; color: #5a4a35 !important;
}
.abstract-chip-pending {
  background: repeating-linear-gradient(45deg, #f3e3c8, #f3e3c8 4px, #ece5d6 4px, #ece5d6 8px) !important;
  color: #7a5a16 !important; border: 1px dashed #c8a98a !important;
}

/* Row-level heat indicator (lives in holder cell, prepended to grantor name) */
.row-heat-badge { font-size: 13px; margin-right: 2px; vertical-align: -1px; }
.row-heat-badge.core-aoi { color: #c44a3d; }
.row-heat-badge.hot      { color: #c66e3f; }
.row-heat-badge.pending  { color: #b8861f; opacity: 0.7; }

/* Subtle row-tint by heat */
tr.row-core-aoi td { background: linear-gradient(90deg, rgba(196,74,61,0.06) 0%, transparent 40%); }
tr.row-hot td      { background: linear-gradient(90deg, rgba(198,110,63,0.05) 0%, transparent 40%); }
tr.row-pending td  { background: linear-gradient(90deg, rgba(184,134,31,0.04) 0%, transparent 40%); }

/* ─── Buyer-fit cell ────────────────────────────────────────────────── */
.buyer-fit-cell { padding: 4px 8px; min-width: 80px; }
.bf-stack { display: flex; flex-direction: column; gap: 2px; align-items: stretch; }
.bf-num {
  font-family: 'Bitter', serif; font-weight: 700; font-size: 16px;
  text-align: center; line-height: 1; padding: 1px 0;
  border-radius: 4px;
}
.bf-num.fit-high { background: #d8e5cc; color: #355e3b; }
.bf-num.fit-mid  { background: #f3e3c8; color: #7a572a; }
.bf-num.fit-low  { background: #ece5d6; color: #5a4a35; }
.bf-num.fit-bad  { background: #f0d4cf; color: #8f3540; }

.bf-bars { display: flex; gap: 2px; height: 5px; }
.bf-seg {
  flex: 1; background: #ece5d6; border-radius: 2px; position: relative; overflow: hidden;
}
.bf-seg::after {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0;
  width: var(--seg-pct, 0%);
  background: var(--seg-color, #7a522a);
}
.bf-seller::after { background: #c66e3f; }   /* terracotta — seller readiness */
.bf-geo::after    { background: #b8861f; }   /* gold — geo heat */
.bf-clean::after  { background: #355e3b; }   /* green — clean to transact */

/* ── Flag review queue (LAKE §K disposition surface) ────────────────── */
.fr-stats { display: flex; gap: 14px; margin: 0 0 16px; flex-wrap: wrap; }
.fr-stat {
  flex: 1; min-width: 140px; padding: 14px 18px;
  background: var(--panel); border: 1px solid var(--border); border-radius: var(--r-md);
}
.fr-stat-num { font-family: 'Bitter', serif; font-weight: 700; font-size: 26px; line-height: 1.1; color: var(--text); }
.fr-stat-lbl { font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-faint); margin-top: 4px; }
.fr-stat-pending { border-left: 4px solid var(--terracotta); }
.fr-stat-done    { border-left: 4px solid #355e3b; }

.fr-filters {
  display: flex; gap: 12px; align-items: end; flex-wrap: wrap;
  padding: 12px 14px; margin-bottom: 12px;
  background: var(--bg-sunken); border: 1px solid var(--border); border-radius: var(--r-md);
}
.fr-filters label { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.04em; }
.fr-filters select, .fr-filters input { font-size: 13px; padding: 4px 8px; min-width: 150px; }

.fr-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.fr-table th { text-align: left; font-weight: 600; padding: 8px 10px; background: var(--bg-sunken); border-bottom: 1px solid var(--border); white-space: nowrap; }
.fr-table td { padding: 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.fr-table tr:hover { background: var(--accent-soft); }

.fr-status-pill { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 10px; font-weight: 600; letter-spacing: 0.02em; }
.fr-status-pending { background: var(--bg-sunken); color: var(--text-faint); }
.fr-status-ok      { background: #d8e5cc; color: #355e3b; }
.fr-status-concern { background: #f3d9c8; color: var(--terracotta); }
.fr-status-pulled  { background: #d4dde8; color: #2d4a6f; }

.fr-lessor { font-weight: 600; }
.fr-type  { display: inline-block; padding: 2px 6px; border-radius: 4px; font-size: 10px; font-weight: 600; background: var(--bg-sunken); color: var(--text-soft); border: 1px solid var(--border); }
.fr-type-MINERAL_DEED  { background: #f3d9c8; color: var(--terracotta); border-color: #e9b896; }
.fr-type-ROYALTY_DEED  { background: #f3e6c8; color: #7a572a; border-color: #e0cf9b; }
.fr-type-AFFIDAVIT_OF_HEIRSHIP { background: #d8e5cc; color: #355e3b; border-color: #b9d3a6; }
.fr-type-WILL { background: #d4dde8; color: #2d4a6f; border-color: #b6c4d6; }

.fr-basis { display: inline-block; padding: 1px 6px; border-radius: 3px; font-size: 10px; font-weight: 600; }
.fr-basis-exact_name            { background: #355e3b; color: #fff; }
.fr-basis-compound_name_subpart { background: #7a572a; color: #fff; }
.fr-basis-surname_county_window { background: var(--bg-sunken); color: var(--text-soft); }

.fr-surname { display: inline-block; margin-left: 6px; padding: 1px 5px; border-radius: 3px; font-size: 9px; background: #f3e6c8; color: #7a5e1c; border: 1px solid #e0cf9b; cursor: help; }

.fr-status-select { font-size: 11px; padding: 3px 6px; }
.fr-notes-input { font-size: 11px; padding: 3px 6px; max-width: 140px; }

/* Selection / bulk action bar */
.fr-check-col { width: 32px; text-align: center; }
.fr-row-selected { background: var(--accent-soft) !important; }
.fr-bulk-bar {
  display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
  padding: 10px 14px; margin-bottom: 12px;
  background: var(--terracotta); color: #fff;
  border-radius: var(--r-md);
  position: sticky; top: 0; z-index: 20;
  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.fr-bulk-bar label { color: #fff; display: flex; align-items: center; gap: 6px; font-size: 12px; }
.fr-bulk-bar select, .fr-bulk-bar input { font-size: 13px; padding: 4px 8px; }
.fr-bulk-count { font-weight: 600; font-size: 13px; }
.fr-bulk-bar .btn { white-space: nowrap; }

/* Grade letter (offline buyer-fit JSONL only) */
.bf-numline { display: flex; gap: 4px; align-items: center; justify-content: center; }
.bf-grade {
  display: inline-grid; place-items: center;
  width: 18px; height: 18px; border-radius: 4px;
  font-family: 'Bitter', serif; font-weight: 700; font-size: 11px;
  cursor: help; flex-shrink: 0;
}
.bf-grade-A { background: #355e3b; color: #fff; }
.bf-grade-B { background: #7a572a; color: #fff; }
.bf-grade-C { background: #ece5d6; color: #5a4a35; border: 1px solid var(--border); }
.bf-grade-D { background: #f0d4cf; color: #8f3540; border: 1px solid #e8b8b3; }

/* "Why this lead?" panel on the Triage tab */
.bf-breakdown { display: flex; flex-direction: column; gap: 14px; }
.bf-breakdown-head { display: flex; gap: 16px; align-items: center; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.bf-breakdown-num { display: flex; gap: 8px; align-items: center; }
.bf-num-large { font-size: 28px; min-width: 56px; padding: 4px 10px; }
.bf-breakdown-num .bf-grade { width: 24px; height: 24px; font-size: 14px; }
.bf-breakdown-summary { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.bf-action-line { font-size: 14px; }
.bf-band-row { display: grid; grid-template-columns: 1fr; gap: 6px; padding: 6px 0; }
.bf-band-head { display: flex; gap: 12px; align-items: baseline; }
.bf-band-label { font-weight: 600; font-size: 13px; min-width: 140px; }
.bf-band-weight { font-size: 11px; }
.bf-band-score { font-family: 'Bitter', serif; font-weight: 700; font-size: 16px; margin-left: auto; }
.bf-band-bar { height: 6px; border-radius: 3px; background: #ece5d6; position: relative; overflow: hidden; }
.bf-band-bar .bf-seg { display: block; height: 100%; border-radius: 3px; flex: none; }
.bf-band-reasons { margin: 4px 0 0; padding-left: 18px; font-size: 12px; line-height: 1.55; color: var(--text); }
.bf-band-reasons li { margin: 1px 0; }

/* ── Triage toolbar + cycle picker (replaces filter sidebar) ────────────── */
.triage-toolbar {
  display: flex; gap: 10px; align-items: center; flex-wrap: wrap;
  padding: 10px 12px; margin-bottom: 10px;
  background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--r-md);
}
.triage-toolbar .toolbar-search { flex: 1; min-width: 220px; padding: 6px 10px; font-size: 13px; }
.triage-toolbar .check-inline { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-soft); }
.triage-toolbar .chips-tight { display: flex; gap: 4px; flex-wrap: wrap; }
.triage-toolbar .chip { padding: 3px 9px; font-size: 12px; }
.triage-list { background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--r-md); overflow: auto; }
.triage-list .empty { padding: 32px; text-align: center; color: var(--text-faint); }

.cycle-picker {
  display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
  padding: 8px 12px; margin-bottom: 12px;
  background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--r-md);
}
.cyc-dir { display: inline-flex; border: 1px solid var(--border); border-radius: 999px; padding: 2px; }
.cyc-dir-btn {
  background: transparent; border: 0; color: var(--text-soft);
  padding: 4px 12px; font-size: 12px; border-radius: 999px; cursor: pointer;
}
.cyc-dir-btn.on { background: var(--terracotta); color: #fff; }
.cyc-btns { display: inline-flex; gap: 4px; flex-wrap: wrap; }
.cyc-btn {
  background: var(--bg-soft); border: 1px solid var(--border); color: var(--text);
  padding: 4px 10px; font-size: 12px; border-radius: 6px; cursor: pointer;
  display: inline-flex; align-items: baseline; gap: 6px;
}
.cyc-btn.on { background: var(--accent); color: #fff; border-color: var(--accent); }
.cyc-btn em { font-style: normal; opacity: 0.7; font-size: 11px; }
.cyc-btn.on em { opacity: 0.85; }

/* ── Chill / Drill density toggle ───────────────────────────────────────── */
.mode-toggle {
  display: inline-flex; border: 1px solid var(--border); border-radius: 999px; padding: 2px;
  background: var(--bg-surface);
}
.mode-btn {
  background: transparent; border: 0; color: var(--text-soft);
  padding: 4px 12px; font-size: 12px; font-weight: 500;
  border-radius: 999px; cursor: pointer; letter-spacing: 0.04em;
}
.mode-btn.on { background: var(--accent); color: #fff; }

/* Two modes: Drill (default desktop) and Mobile (compact, single column).
   Drill = everything visible. Mobile hides .drill-only and forces stacked layout. */
body.mode-mobile .drill-only { display: none !important; }
body.mode-mobile .triage-list table th.drill-col,
body.mode-mobile .triage-list table td.drill-col { display: none; }

/* Mobile: collapse sidebar + side panels into a single column. */
body.mode-mobile .app-shell { grid-template-columns: 1fr; }
body.mode-mobile .sidebar {
  position: static; height: auto; width: 100%;
  border-right: 0; border-bottom: 1px solid var(--border);
  flex-direction: row; flex-wrap: wrap; align-items: center;
  padding: 8px;
}
body.mode-mobile .sidebar-brand { padding: 4px 8px; flex: 0 0 auto; }
body.mode-mobile .sidebar-nav {
  flex: 1 1 100%; display: flex; flex-wrap: wrap; gap: 4px;
  padding: 0; overflow-x: auto;
}
body.mode-mobile .sidebar-nav .nav-section { display: none; }
body.mode-mobile .sidebar-nav .nav-item {
  flex: 0 0 auto; padding: 6px 10px; font-size: 12px; border-radius: 999px;
}
body.mode-mobile .sidebar-foot { display: none; }
body.mode-mobile .topbar { flex-wrap: wrap; gap: 6px; }
body.mode-mobile .topbar-search { flex: 1 1 100%; order: 99; }

/* Mobile: stack the lead 360° split and action bar. */
body.mode-mobile .entity-360,
body.mode-mobile .entity-360-grid { grid-template-columns: 1fr !important; }
body.mode-mobile .entity-actions { flex-direction: column; align-items: stretch; }
body.mode-mobile .entity-actions .btn { width: 100%; min-height: 40px; }

/* Mobile: bigger tap targets + readable text. */
body.mode-mobile { font-size: 15px; }
body.mode-mobile input, body.mode-mobile select, body.mode-mobile button { font-size: 14px; }

/* ── Global density tighten ────────────────────────────────────────────────
 * 8px card padding, 4px table cells.
 */
.detail-section,
.dashlet-card,
.dashlet,
.dash-cell,
.fr-stat,
.fr-bulk-bar,
.fr-filters,
.triage-toolbar,
.cycle-picker,
.empty-state,
.modal,
.page-header,
.holder-cell,
.bf-breakdown,
.bf-band-row,
.side-card,
.stat-tile,
.touch-item,
.audit-row { padding: 8px !important; }

.sidebar { padding: 8px 6px !important; }
.sidebar-brand { padding: 4px 4px 8px !important; }
.sidebar-foot { padding-top: 8px !important; }
.topbar { padding: 6px 10px !important; }
.entity-header { padding: 8px 10px !important; }

table th, table td { padding: 4px 7px !important; }
.fr-table th, .fr-table td { padding: 4px 5px !important; }
.fr-table .fr-status-select,
.fr-table .fr-notes-input { padding: 2px 4px !important; }

.btn { padding: 5px 10px !important; }
.btn-small { padding: 2px 7px !important; }

.touch-row, .touch-card { padding: 5px 8px !important; }
.notes-timeline > * { padding: 5px 8px !important; }

.tabs { padding: 0 8px !important; gap: 4px !important; }
.tab { padding: 6px 10px !important; }

.entity-360 { gap: 12px !important; }
.entity-360-main { gap: 12px !important; }
.entity-360-side { gap: 8px !important; }
.stat-grid { gap: 8px !important; }
.kv { row-gap: 4px !important; column-gap: 8px !important; }
.page-header { margin-bottom: 8px !important; }
.dash-row { gap: 6px !important; margin-bottom: 6px !important; }
.dash-pill { padding: 2px 7px !important; }

/* Outer canvas + inter-region gaps */
.content { padding: 10px !important; }
.triage-dash, .dash-row, .dash-cell { margin: 0 0 6px !important; }
.triage-dash { padding: 4px 6px !important; border-radius: 6px !important; }
.dash-cell { padding: 4px 6px !important; }
.triage-toolbar { padding: 6px 8px !important; margin-bottom: 6px !important; }
.cycle-picker { padding: 4px 6px !important; margin-bottom: 6px !important; gap: 8px !important; }
.cyc-btn { padding: 3px 8px !important; }
.cyc-dir-btn { padding: 3px 10px !important; }

/* List/section spacing */
.triage-list { margin-bottom: 6px; }
section.content > * + * { margin-top: 6px; }

/* Lead 360 + entity layouts: reduce outer aside gap */
.entity-360 { gap: 8px !important; }
.entity-header { margin-bottom: 6px !important; }
.tabs { margin-bottom: 6px !important; }

/* ── Landing / login screen ────────────────────────────────────────────── */
.login-screen {
  display: grid;
  grid-template-columns: 240px 1fr;   /* same width as sidebar */
  min-height: 100vh;
  background: var(--bg);
}
.login-aside {
  background: var(--bg-surface);
  border-right: 1px solid var(--border);
  padding: 16px 12px;
  display: flex; flex-direction: column;
  position: sticky; top: 0; height: 100vh;
}
.login-aside-inner { display: flex; flex-direction: column; gap: 16px; height: 100%; }
.login-brand { display: flex; align-items: center; gap: 10px; padding: 4px 4px 10px; }
.login-brand-logo {
  width: 38px; height: 38px; border-radius: 50%;
  background: var(--redwood); color: #fff;
  display: grid; place-items: center;
  font-family: 'Bitter', serif; font-weight: 700; font-size: 14px;
  letter-spacing: 0.04em;
}
.login-brand-text h1 { margin: 0; font-family: 'Bitter', serif; font-size: 16px; }
.login-brand-text p { margin: 0; font-size: 11px; color: var(--text-faint); font-family: 'JetBrains Mono', monospace; }
.login-headline { margin: 8px 0 2px; font-family: 'Bitter', serif; font-size: 22px; }
.login-sub { margin: 0; font-size: 12px; color: var(--text-soft); }
.login-google-btn {
  margin-top: 8px;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  width: 100%;
  background: var(--accent); color: #fff;
  font-size: 13px; font-weight: 500;
}
.login-google-btn .g-mark {
  display: inline-grid; place-items: center;
  width: 20px; height: 20px; border-radius: 50%;
  background: #fff; color: var(--accent);
  font-family: 'Bitter', serif; font-weight: 700; font-size: 13px;
}
.login-error {
  margin-top: 6px; padding: 8px 10px;
  background: #f0d4cf; color: #8f3540;
  border-radius: 6px; font-size: 12px;
}
.login-foot { margin-top: auto; padding-top: 12px; border-top: 1px solid var(--border); }
.login-foot-line { margin: 0 0 4px; font-size: 11px; color: var(--text-faint); }

.login-main {
  padding: 36px 48px;
  overflow-y: auto;
  max-width: 980px;
}
.pitch-eyebrow {
  font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--terracotta); font-weight: 500;
  margin-bottom: 8px;
}
.pitch-h {
  font-family: 'Bitter', serif; font-weight: 700;
  font-size: 36px; line-height: 1.15; margin: 0 0 14px;
  color: var(--text);
}
.pitch-lede {
  font-size: 16px; line-height: 1.55; color: var(--text-soft);
  max-width: 720px; margin: 0 0 32px;
}
.pitch-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
  margin-bottom: 36px;
}
.pitch-card {
  background: var(--bg-surface); border: 1px solid var(--border);
  border-radius: 10px; padding: 14px 16px;
}
.pitch-card-num {
  font-family: 'Bitter', serif; font-weight: 700; font-size: 26px;
  color: var(--accent);
}
.pitch-card-lbl {
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--text-faint); margin-bottom: 8px;
}
.pitch-card p { margin: 0; font-size: 13px; line-height: 1.5; color: var(--text-soft); }

.pitch-who { margin-bottom: 32px; }
.pitch-who h3,
.pitch-latest h3 {
  font-family: 'Bitter', serif; font-size: 16px; margin: 0 0 10px;
  text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--text-soft);
}
.who-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.who-grid > div {
  border-left: 2px solid var(--terracotta); padding: 4px 0 4px 12px;
}
.who-grid b { font-size: 13px; color: var(--text); }
.who-grid p { margin: 4px 0 0; font-size: 12px; line-height: 1.45; color: var(--text-soft); }

.pitch-latest ul { margin: 0; padding: 0; list-style: none; }
.pitch-latest li {
  padding: 6px 0; font-size: 13px; color: var(--text-soft);
  border-bottom: 1px dashed var(--border);
}
.pitch-latest li:last-child { border-bottom: 0; }
.pitch-latest li b { color: var(--text); margin-right: 8px; }

@media (max-width: 880px) {
  .login-screen { grid-template-columns: 1fr; }
  .login-aside { position: static; height: auto; border-right: 0; border-bottom: 1px solid var(--border); }
  .login-main { padding: 24px 20px; }
  .pitch-grid, .who-grid { grid-template-columns: 1fr; }
  .pitch-h { font-size: 28px; }
}

/* humanizeKV() output */
.kv-flat { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--text-soft); }
.kv-flat-pair { white-space: nowrap; }
.kv-flat-pair b { font-weight: 600; color: var(--text); margin-right: 3px; }

.page-subhead {
  margin: 18px 0 8px;
  font-size: 13px; text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--text-faint);
}

/* Flag review action column — compact inline status+save, notes drill-only */
.fr-action-cell { min-width: 170px; }
.fr-action-row { display: flex; gap: 4px; align-items: center; }
.fr-action-row .fr-status-select { flex: 1; min-width: 0; }
.fr-action-row .fr-save-btn { flex: 0 0 auto; }
.fr-action-cell .fr-notes-input { display: block; width: 100%; margin-top: 4px; }

/* Flag review lessor cell — keep meta on one line */
.fr-lessor { font-weight: 500; line-height: 1.2; }
.fr-lessor .flag.dc { margin-left: 4px; vertical-align: baseline; font-size: 10px; }
.fr-table .muted.small { white-space: nowrap; }

/* Soften inline empty-state-icon spans (legacy "—" placeholders).
   Keep them visible for grep/scan but visually neutralized. */
.empty-state-icon { color: var(--text-faint) !important; font-size: 14px !important; opacity: 0.5 !important; margin-bottom: 4px !important; }
.empty-state { padding: 16px !important; text-align: center; }
.empty-state-text { color: var(--text-soft); font-size: 13px; line-height: 1.5; }

/* Flag review match-basis pill — make exact / compound / surname uniform */
.fr-basis {
  display: inline-block; padding: 1px 7px;
  font-size: 10px; font-family: 'JetBrains Mono', monospace;
  font-weight: 500; letter-spacing: 0.04em; text-transform: lowercase;
  border-radius: 3px;
  background: var(--bg-soft); color: var(--text-soft);
  border: 1px solid var(--border);
}
.fr-basis-exact_name           { background: #d8e5cc; color: #355e3b; border-color: #b9d3a6; }
.fr-basis-compound_name_subpart{ background: #f3e3c8; color: #7a572a; border-color: #e0cf9b; }
.fr-basis-surname_county_window{ background: var(--bg-soft); color: var(--text-soft); }

/* Tighten dash-pill so the orange/colored noise reduces to just numbers */
.dash-pill {
  display: inline-flex; align-items: baseline; gap: 4px;
  padding: 2px 7px; border-radius: 999px;
  background: var(--bg-soft); color: var(--text-soft);
  border: 1px solid var(--border);
  font-size: 12px; white-space: nowrap;
}
.dash-pill b { color: var(--text); font-weight: 600; }
.dash-pills { display: flex; flex-wrap: wrap; gap: 4px; }

/* ── Page intro block — short "what this page is for" paragraph ──────────── */
.page-intro {
  background: var(--bg-soft);
  border-left: 3px solid var(--terracotta);
  padding: 8px 10px !important;
  margin: 0 0 8px;
  font-size: 12px; line-height: 1.45;
  color: var(--text-soft);
  border-radius: 0 6px 6px 0;
}
.page-intro p { margin: 0; }
.page-intro p + p { margin-top: 3px; }
.page-intro b { color: var(--text); font-weight: 600; margin-right: 3px; }

/* Heat map iframe — fill the available content area */
.heatmap-frame-wrap {
  width: 100%; height: calc(100vh - 130px);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--bg-soft);
}
.heatmap-frame-wrap iframe {
  width: 100%; height: 100%; border: 0; display: block;
}

/* ── System overview / flow page ───────────────────────────────────────── */
.overview { display: flex; flex-direction: column; gap: 14px; margin-bottom: 14px; }
.ov-stage {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 10px 12px !important;
  position: relative;
}
.ov-stage:not(:last-child)::after {
  content: '↓';
  position: absolute; left: 32px; bottom: -16px;
  font-size: 14px; color: var(--text-faint);
  background: var(--bg); padding: 0 6px;
}
.ov-stage-head { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 8px; }
.ov-stage-num {
  flex: 0 0 auto; width: 28px; height: 28px;
  display: grid; place-items: center;
  background: var(--accent); color: #fff;
  font-family: 'Bitter', serif; font-weight: 700; font-size: 13px;
  border-radius: 50%;
}
.ov-stage-head h3 { margin: 0; font-size: 14px; font-family: 'Bitter', serif; font-weight: 700; }
.ov-stage-head p { margin: 2px 0 0; font-size: 12px; color: var(--text-soft); line-height: 1.4; }

.ov-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; }
.ov-card {
  display: block; padding: 8px 10px;
  background: var(--bg-soft);
  border: 1px solid var(--border);
  border-radius: 6px;
  text-decoration: none; color: inherit;
  transition: border-color 0.15s, transform 0.05s;
  position: relative;
}
.ov-card:hover { border-color: var(--terracotta); }
.ov-card:active { transform: translateY(1px); }
.ov-card-title { font-weight: 600; font-size: 13px; color: var(--text); margin-bottom: 2px; }
.ov-card-metric {
  position: absolute; top: 8px; right: 10px;
  font-family: 'Bitter', serif; font-weight: 700; font-size: 14px;
  color: var(--accent);
}
.ov-card-body { font-size: 11.5px; color: var(--text-soft); line-height: 1.4; margin-bottom: 4px; }
.ov-card-cta { font-size: 10px; color: var(--terracotta); letter-spacing: 0.04em; text-transform: uppercase; }

body.mode-mobile .ov-cards { grid-template-columns: 1fr; }
body.mode-mobile .ov-stage:not(:last-child)::after { left: 16px; }

/* Lead 360° Location tab — sections stack vertically with light gap */
.loc-tab { display: flex; flex-direction: column; gap: 12px; }
.loc-section { background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--r-md); padding: 8px 10px; }
.loc-h { margin: 0 0 6px; font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-faint); }

/* Mobile: collapse side-cards to accordions so they don't push the lead 360
 * tab content past the fold. Each .side-card becomes a tap-to-expand block.
 * On desktop (Drill mode), normal flow.
 */
body.mode-mobile .side-card {
  cursor: pointer;
  position: relative;
}
body.mode-mobile .side-card h4 {
  margin: 0 !important;
  padding-right: 18px;
}
body.mode-mobile .side-card h4::after {
  content: '▾';
  position: absolute; right: 10px; top: 8px;
  font-size: 11px; color: var(--text-faint);
  transition: transform 0.15s;
}
body.mode-mobile .side-card.collapsed h4::after { transform: rotate(-90deg); }
body.mode-mobile .side-card.collapsed > *:not(h4) { display: none; }
body.mode-mobile .side-card.collapsed { padding: 6px 8px !important; }

/* Mobile: pin the Lead 360 action bar to the bottom of the viewport.
 * Fixed (not sticky) so it stays visible regardless of scroll context.
 * Uses safe-area-inset-bottom for iOS home-bar clearance.
 */
body.mode-mobile .entity-actions {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  background: var(--bg-surface);
  border-top: 1px solid var(--border);
  padding: 6px !important;
  padding-bottom: calc(6px + env(safe-area-inset-bottom, 0px)) !important;
  z-index: 50;
  box-shadow: 0 -2px 8px rgba(0,0,0,0.08);
  display: flex; gap: 4px;
}
/* Reserve space at the bottom of the lead so the fixed bar doesn't cover content */
body.mode-mobile .entity-360 { padding-bottom: 64px; }

/* Flag review keyboard focus indicator */
.fr-row-focus { outline: 2px solid var(--terracotta); outline-offset: -2px; background: rgba(198,110,63,0.04) !important; }
.fr-keys-hint {
  font-family: 'JetBrains Mono', monospace; font-size: 10px;
  color: var(--text-faint);
  border-left: 2px solid var(--border-strong);
  padding: 0 0 0 6px;
  margin-left: 6px;
}
.fr-keys-hint kbd {
  background: var(--bg-soft); border: 1px solid var(--border);
  border-radius: 3px; padding: 0 3px; margin: 0 1px;
  font-family: inherit; font-size: 9px;
}

/* Overview: paused-stage variant — muted colors, no flow arrow */
.ov-stage-paused { opacity: 0.6; border-style: dashed; }
.ov-stage-paused .ov-stage-num { background: var(--text-faint); }
.ov-stage-paused::after { display: none !important; }

/* ── Sidebar collapse toggle ────────────────────────────────────────────── */
.sidebar-brand-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 4px; padding: 0;
}
.sidebar-brand-row .sidebar-brand { flex: 1; min-width: 0; }
.sidebar-toggle {
  flex: 0 0 auto;
  background: transparent; border: 1px solid var(--border);
  color: var(--text-soft);
  width: 22px; height: 22px;
  border-radius: 4px;
  font-size: 12px; line-height: 1;
  display: grid; place-items: center;
  cursor: pointer;
  transition: transform 0.15s, background 0.15s;
}
.sidebar-toggle:hover { background: var(--bg-sunken); color: var(--text); }

/* Collapsed state: 48px sidebar, icons only, no text */
body.sidebar-collapsed .app-shell { grid-template-columns: 48px 1fr; }
body.sidebar-collapsed .sidebar { padding: 8px 4px !important; }
body.sidebar-collapsed .sidebar-brand-text,
body.sidebar-collapsed .nav-section,
body.sidebar-collapsed .user-text,
body.sidebar-collapsed #logout-btn { display: none !important; }
body.sidebar-collapsed .sidebar-brand { gap: 0; padding: 4px !important; }
body.sidebar-collapsed .sidebar-brand-logo {
  width: 30px; height: 30px; font-size: 11px;
}
body.sidebar-collapsed .sidebar-brand-row { justify-content: center; }
body.sidebar-collapsed .sidebar-toggle { width: 22px; height: 22px; }
/* Icons only — set font-size: 0 to hide text, reset on ::before */
body.sidebar-collapsed .nav-item {
  font-size: 0;
  justify-content: center;
  padding: 8px 4px !important;
  gap: 0;
}
body.sidebar-collapsed .nav-item::before { font-size: 16px; }
body.sidebar-collapsed .user-chip { justify-content: center; padding: 4px !important; }
body.sidebar-collapsed .user-avatar { margin: 0; }

/* Mobile mode wins over collapsed (mobile lays sidebar horizontally) */
body.mode-mobile.sidebar-collapsed .app-shell { grid-template-columns: 1fr; }
body.mode-mobile.sidebar-collapsed .sidebar-brand-text,
body.mode-mobile.sidebar-collapsed .nav-section { display: revert !important; }

/* Help toggle in topbar — flips body.help-off to hide all .page-intro blocks */
.help-toggle {
  background: transparent; border: 1px solid var(--border);
  color: var(--text-soft);
  width: 26px; height: 26px;
  border-radius: 50%;
  font-size: 13px; font-weight: 600;
  cursor: pointer;
  display: grid; place-items: center;
  transition: background 0.15s, color 0.15s;
}
.help-toggle:hover { background: var(--bg-sunken); color: var(--text); }
.help-toggle.on { background: var(--accent); color: #fff; border-color: var(--accent); }

body.help-off .page-intro,
body.help-off .fr-keys-hint { display: none !important; }

/* Entity-header narrative: claim_narrative shown under the sub-line so the
 * lead's story is on the page even when person/decedent are sparse. */
.entity-header-narr {
  margin-top: 4px;
  font-size: 12.5px; line-height: 1.45;
  color: var(--text-soft);
  font-style: italic;
}

/* ════════════════════════════════════════════════════════════════════════
 * Waves — working batches of ~100 leads with skip-trace gate + 4 channels.
 * Hot list — activity-driven respondents queue.
 * Lead-table multi-select bar.
 * ════════════════════════════════════════════════════════════════════════ */

/* Lead table multi-select (checkboxes + sticky bottom bar) */
.table-leads .col-select { width: 28px; padding: 4px 6px; text-align: center; }
.table-leads .col-select input[type="checkbox"] { cursor: pointer; }
.leads-multiselect-bar {
  position: sticky; bottom: 0; z-index: 30;
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 12px; margin-top: 8px;
  background: var(--bg-elevated); border: 1px solid var(--border);
  border-radius: 6px;
  box-shadow: 0 -2px 8px rgba(0,0,0,0.06);
}
.leads-multiselect-actions { display: flex; gap: 6px; }

/* Waves list grid */
.waves-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 10px;
  margin-top: 8px;
}
.wave-card {
  display: block; padding: 10px;
  background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 6px;
  text-decoration: none; color: var(--text);
  transition: border-color 0.15s, transform 0.05s;
}
.wave-card:hover { border-color: var(--accent); }
.wave-card-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 4px; }
.wave-card-head h3 { margin: 0; font-size: 14px; }
.wave-card-stat { font-size: 18px; margin: 4px 0; }
.wave-card-stat strong { font-size: 22px; }
.wave-card-skip,
.wave-card-camps { display: flex; flex-direction: column; gap: 2px; margin-top: 6px; }
.wave-card-camp { display: flex; align-items: center; gap: 6px; font-size: 12px; }
.wave-card-camp-stage { color: var(--text-soft); margin-left: auto; font-variant: small-caps; }
.wave-card-notes { margin-top: 6px; font-size: 12px; color: var(--text-soft); border-top: 1px dashed var(--border); padding-top: 4px; }

.wave-dot { display: inline-block; width: 14px; text-align: center; }
.dot-idle    { color: var(--text-soft); }
.dot-active  { color: #c66e3f; }
.dot-sent    { color: #d4a017; }
.dot-closed  { color: #4a8f4a; }

/* Wave 360: skip-trace banner */
.wave-skip-banner {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 10px; margin: 8px 0;
  background: var(--bg-sunken); border: 1px solid var(--border); border-radius: 6px;
  border-left: 3px solid #c66e3f;
}
.wave-skip-banner.complete { border-left-color: #4a8f4a; }
.wave-skip-banner-left { display: flex; align-items: center; gap: 10px; }
.wave-skip-banner-left h4 { margin: 0; font-size: 13px; }
.wave-skip-icon { font-size: 18px; }
.wave-skip-banner.complete .wave-skip-icon { color: #4a8f4a; }
.wave-skip-banner-actions select { padding: 4px 6px; }

/* Wave 360: campaign tile row */
.wave-camp-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 8px;
  margin-bottom: 12px;
}
.camp-row-disabled .wave-camp-tile { opacity: 0.55; }
.wave-camp-tile {
  background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 6px;
  padding: 8px;
  display: flex; flex-direction: column; gap: 6px;
}
.wave-camp-tile.camp-locked { background: var(--bg-sunken); }
.wave-camp-tile-head { display: flex; align-items: center; gap: 6px; }
.wave-camp-tile-head h4 { margin: 0; font-size: 13px; flex: 1; }
.wave-camp-icon { font-size: 14px; color: var(--text-soft); }
.wave-camp-stage {
  font-size: 10px; padding: 1px 6px; border-radius: 3px;
  background: var(--bg-sunken); color: var(--text-soft);
  font-variant: small-caps; letter-spacing: 0.5px;
}
.wave-camp-stage.stage-sent     { background: #d4a01730; color: #8a6a0e; }
.wave-camp-stage.stage-replying { background: #c66e3f30; color: #8a4220; }
.wave-camp-stage.stage-closed   { background: #4a8f4a30; color: #2f5a2f; }
.wave-camp-tile-actions { display: flex; gap: 4px; align-items: center; }
.wave-camp-tile-actions select { flex: 1; padding: 3px 4px; }

.wave-foot { margin-top: 16px; padding-top: 8px; border-top: 1px solid var(--border); }

/* Hot list (respondents queue) */
.table-hot .hot-actions { white-space: nowrap; display: flex; gap: 3px; }
.table-hot .hot-actions .btn { padding: 2px 6px; font-size: 11px; }
.act-chip {
  display: inline-block;
  padding: 1px 5px; margin-right: 3px; margin-bottom: 2px;
  font-size: 11px; border-radius: 3px;
  background: var(--bg-sunken); color: var(--text-soft);
  border: 1px solid var(--border);
}
/* Tint act-chip's left border by which brand drove the activity */
.act-chip.brand-neches_land    { border-left: 3px solid #c66e3f; }
.act-chip.brand-mineral_locker { border-left: 3px solid #3550a8; }
.act-chip.brand-royalty_partner{ border-left: 3px solid #6e4ca8; }
.act-chip.brand-landman_ai     { border-left: 3px solid #2f5a2f; }
.act-chip.brand-our_landmen    { border-left: 3px solid #555; }
.disp-chip {
  display: inline-block; padding: 1px 6px;
  font-size: 11px; border-radius: 3px;
  background: var(--bg-sunken); color: var(--text-soft);
  font-variant: small-caps; letter-spacing: 0.3px;
}
.disp-chip.disp-qualified    { background: #4a8f4a30; color: #2f5a2f; }
.disp-chip.disp-not_interested { background: #c66e3f30; color: #8a4220; }
.disp-chip.disp-callback_req { background: #d4a01730; color: #8a6a0e; }
.disp-chip.disp-deceased,
.disp-chip.disp-wrong_number { background: #888a; color: #fff; }

/* Wave card progress strip */
.wave-progress {
  position: relative;
  height: 6px;
  background: var(--bg-sunken);
  border-radius: 3px;
  margin: 6px 0;
  overflow: hidden;
}
.wave-progress-bar {
  height: 100%;
  background: linear-gradient(90deg, #c66e3f, #d4a017 60%, #4a8f4a);
  transition: width 0.3s ease;
}
.wave-progress-pct {
  position: absolute;
  right: 4px; top: -1px;
  font-size: 10px; color: var(--text-soft);
  background: var(--bg-elevated); padding: 0 3px;
  line-height: 8px;
}

/* Modal sections + divider (used by pull-into-wave + record-activity) */
.modal-section { padding: 8px 0; }
.modal-section h4 { margin: 0 0 6px; font-size: 13px; }
.modal-divider {
  text-align: center;
  color: var(--text-faint);
  font-size: 11px;
  font-variant: small-caps;
  letter-spacing: 1px;
  margin: 4px 0;
  position: relative;
}
.modal-divider::before,
.modal-divider::after {
  content: '';
  position: absolute; top: 50%;
  width: 40%; height: 1px;
  background: var(--border);
}
.modal-divider::before { left: 0; }
.modal-divider::after  { right: 0; }
.modal-divider span { background: var(--bg-elevated); padding: 0 6px; }

/* Disposition button grid */
.dispo-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 6px;
}
.dispo-btn {
  padding: 8px 10px;
  font-size: 13px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 4px;
  text-align: left;
  cursor: pointer;
  transition: border-color 0.1s, background 0.1s;
}
.dispo-btn:hover { border-color: var(--accent); background: var(--bg-sunken); }
.dispo-btn.on { border-color: var(--accent); background: var(--bg-sunken); font-weight: 600; }
.dispo-btn[data-key="qualified"] {
  border-color: #4a8f4a;
  background: #4a8f4a18;
  font-weight: 600;
}
.dispo-btn[data-key="qualified"]:hover { background: #4a8f4a30; }

/* Hot list filter row — cycle picker + brand filter side by side */
.hot-filter-row {
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
  margin: 6px 0 8px;
}
.hot-cycle-row { margin: 0; }
.hot-brand-filter {
  display: flex; align-items: center; gap: 6px;
}
.hot-brand-filter select { padding: 3px 6px; font-size: 12px; }

.wave-bulk-row {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 0;
  margin-bottom: 12px;
}

/* Tranche-suggestion meta banner shown atop pull-into-wave modal */
.tranche-meta {
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: 4px;
  padding: 8px 10px;
  margin-bottom: 10px;
  font-size: 12.5px;
}
.tranche-meta-head { font-size: 13px; margin-bottom: 4px; }
.tranche-meta-row { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; padding: 2px 0; }
.tranche-meta-row .muted.small { min-width: 110px; }
.tranche-pill {
  display: inline-block;
  padding: 1px 6px;
  font-size: 11px;
  border-radius: 3px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
}
.tranche-pill.tranche-tier-high { background: #4a8f4a30; border-color: #4a8f4a; color: #2f5a2f; font-weight: 600; }
.tranche-pill.tranche-tier-med  { background: #d4a01730; border-color: #d4a017; color: #8a6a0e; }
.tranche-pill.tranche-tier-low  { background: #88888830; color: #555; }
.tranche-pill.tranche-contact   { background: #4a8f4a30; color: #2f5a2f; }
.tranche-pill.tranche-trace     { background: #c66e3f30; color: #8a4220; }

/* Tranche size selector on /leads page header */
.tranche-bar {
  display: flex; align-items: center; gap: 8px;
}
.tranche-size-toggle {
  display: inline-flex;
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  border-radius: 4px;
  overflow: hidden;
}
.tranche-size-btn {
  padding: 3px 8px;
  font-size: 11px;
  font-weight: 600;
  background: transparent;
  border: 0;
  border-right: 1px solid var(--border);
  cursor: pointer;
  color: var(--text-soft);
  font-family: 'JetBrains Mono', monospace;
  transition: background 0.1s, color 0.1s;
}
.tranche-size-btn:last-child { border-right: 0; }
.tranche-size-btn:hover { background: var(--bg-elevated); color: var(--text); }
.tranche-size-btn.on { background: var(--accent); color: #fff; }

/* Wave list aggregate summary header */
.waves-summary {
  margin: 8px 0 14px;
  padding: 10px 12px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 6px;
}
.waves-summary-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 10px;
}
.waves-summary-tile {
  display: block;
  padding: 8px 10px;
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  border-radius: 4px;
  text-decoration: none;
  color: var(--text);
}
.waves-summary-tile.drainable {
  border-left: 3px solid var(--accent);
  cursor: pointer;
  transition: transform 0.05s, border-left-color 0.15s;
}
.waves-summary-tile.drainable:hover { transform: translateY(-1px); border-left-color: #4a8f4a; }
.waves-summary-label {
  font-size: 11px;
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.waves-summary-value {
  font-size: 22px;
  font-weight: 600;
  margin: 2px 0;
}
.waves-summary-sub {
  font-size: 10px;
  color: var(--text-faint);
  font-style: italic;
}
.waves-summary-stages {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px dashed var(--border);
}
.waves-stage-pill {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 3px;
  background: var(--bg-sunken);
  color: var(--text-soft);
  font-variant: small-caps;
  letter-spacing: 0.4px;
}
.waves-stage-pill.stage-sent     { background: #d4a01730; color: #8a6a0e; }
.waves-stage-pill.stage-replying { background: #c66e3f30; color: #8a4220; }
.waves-stage-pill.stage-closed   { background: #4a8f4a30; color: #2f5a2f; }

/* Wave 360 status breakdown — drainage view, leads by CRM state */
.wave-status-breakdown {
  margin: 4px 0 12px;
}
.wave-status-bar {
  display: flex;
  height: 18px;
  border-radius: 4px;
  overflow: hidden;
  background: var(--bg-sunken);
  border: 1px solid var(--border);
}
.wave-status-seg {
  display: grid; place-items: center;
  font-size: 10px;
  font-weight: 600;
  color: #fff;
  letter-spacing: 0.4px;
  min-width: 22px;
  border-right: 1px solid rgba(255,255,255,0.25);
  transition: filter 0.1s;
  cursor: default;
}
.wave-status-seg:last-child { border-right: 0; }
.wave-status-seg:hover { filter: brightness(1.1); }
.wave-status-seg.st-qualified     { background: #4a8f4a; }
.wave-status-seg.st-respondent    { background: #c66e3f; }
.wave-status-seg.st-callback      { background: #d4a017; color: #4a3500; }
.wave-status-seg.st-outreach      { background: #6e88d4; }
.wave-status-seg.st-in-wave       { background: #a08c70; }
.wave-status-seg.st-disposed,
.wave-status-seg.st-not-interested,
.wave-status-seg.st-wrong,
.wave-status-seg.st-deceased      { background: #888; }
.wave-status-legend {
  display: flex; flex-wrap: wrap; gap: 12px;
  margin-top: 4px;
  font-size: 11px;
  color: var(--text-soft);
}
.wave-status-legend-item { display: flex; align-items: center; gap: 4px; }
.wave-status-legend-swatch {
  width: 10px; height: 10px;
  border-radius: 2px;
  display: inline-block;
}
.wave-status-legend-swatch.st-qualified     { background: #4a8f4a; }
.wave-status-legend-swatch.st-respondent    { background: #c66e3f; }
.wave-status-legend-swatch.st-callback      { background: #d4a017; }
.wave-status-legend-swatch.st-outreach      { background: #6e88d4; }
.wave-status-legend-swatch.st-in-wave       { background: #a08c70; }
.wave-status-legend-swatch.st-disposed,
.wave-status-legend-swatch.st-not-interested,
.wave-status-legend-swatch.st-wrong,
.wave-status-legend-swatch.st-deceased      { background: #888; }

/* Title column on leads table — compact source-lease index card line */
.col-title { white-space: nowrap; }
.title-cell-btn {
  background: transparent;
  border: 0;
  padding: 2px 4px;
  text-align: left;
  cursor: pointer;
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  border-radius: 3px;
  transition: background 0.1s, color 0.1s;
  color: var(--text);
}
.title-cell-btn:hover { background: var(--bg-sunken); color: var(--accent); }
.title-cell-btn .title-vol { font-weight: 600; }

/* Right-side instrument drawer (Winkler pattern) */
.inst-drawer-root {
  position: fixed; inset: 0;
  z-index: 1000;
  pointer-events: none;
}
.inst-drawer-backdrop {
  position: absolute; inset: 0;
  background: rgba(20, 14, 8, 0.4);
  pointer-events: auto;
  animation: inst-fade 0.15s ease;
}
@keyframes inst-fade { from { opacity: 0; } to { opacity: 1; } }
.inst-drawer {
  position: absolute; right: 0; top: 0;
  width: 480px; max-width: 92vw;
  height: 100vh;
  background: var(--bg-elevated);
  border-left: 1px solid var(--border);
  box-shadow: -8px 0 24px rgba(0,0,0,0.18);
  pointer-events: auto;
  overflow-y: auto;
  display: flex; flex-direction: column;
  animation: inst-slide 0.18s ease;
}
@keyframes inst-slide { from { transform: translateX(100%); } to { transform: translateX(0); } }
.inst-drawer-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
  position: sticky; top: 0;
  background: var(--bg-elevated);
  z-index: 1;
}
.inst-drawer-head h3 { margin: 2px 0 0; font-size: 16px; }
.inst-drawer-close {
  background: transparent; border: 0;
  font-size: 20px; line-height: 1;
  cursor: pointer; padding: 4px 8px;
  color: var(--text-soft);
  border-radius: 3px;
}
.inst-drawer-close:hover { background: var(--bg-sunken); color: var(--text); }
.inst-drawer-section {
  padding: 10px 14px;
  border-bottom: 1px dashed var(--border);
}
.inst-drawer-section h4 { margin: 0 0 6px; font-size: 13px; }
.inst-drawer-foot {
  display: flex; gap: 8px;
  padding: 10px 14px;
  border-top: 1px solid var(--border);
  background: var(--bg-sunken);
  margin-top: auto;
}
.inst-card { font-size: 12.5px; }
.inst-pdf-host {
  min-height: 240px;
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  border-radius: 4px;
  display: flex; flex-direction: column;
}
.inst-pdf-toolbar {
  display: flex; justify-content: space-between; align-items: center;
  padding: 6px 8px;
  background: var(--bg-elevated);
  border-bottom: 1px solid var(--border);
  border-radius: 4px 4px 0 0;
}
.inst-pdf-iframe {
  width: 100%; height: 360px;
  border: 0;
  flex: 1;
}
.inst-pdf-empty {
  padding: 12px;
  font-size: 12px;
}
.inst-mini-table {
  width: 100%;
  font-size: 12px;
  border-collapse: collapse;
}
.inst-mini-table th, .inst-mini-table td {
  padding: 3px 5px;
  border-bottom: 1px solid var(--border);
  text-align: left;
}
.inst-mini-table th { font-weight: 600; color: var(--text-soft); font-size: 10px; text-transform: uppercase; letter-spacing: 0.4px; }
.inst-mini-table tr.chain-grantor-match {
  background: #c66e3f15;
  border-left: 3px solid #c66e3f;
}
.chain-row {
  padding: 4px 0;
  border-bottom: 1px dotted var(--border);
}
.chain-row:last-child { border-bottom: 0; }
.chain-row-head { display: flex; justify-content: space-between; align-items: baseline; }
.chain-type {
  font-size: 12px;
  font-weight: 600;
  font-variant: small-caps;
  letter-spacing: 0.4px;
  color: var(--accent);
}

/* Skip-trace side card */
.skip-trace-card .st-section { margin-top: 8px; }
.skip-trace-card .st-section:first-of-type { margin-top: 0; }
.skip-trace-card .st-label {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: 0.4px;
  margin-bottom: 4px;
}
.st-list, .st-rel-list { display: flex; flex-direction: column; gap: 3px; }
.st-list { flex-direction: row; flex-wrap: wrap; gap: 4px; }
.st-chip {
  display: inline-block;
  padding: 1px 6px;
  font-size: 11px;
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  border-radius: 3px;
  color: var(--text);
}
.st-clickable {
  cursor: pointer;
  transition: background 0.1s, color 0.1s, border-color 0.1s;
}
.st-clickable:hover { background: var(--accent); color: #fff; border-color: var(--accent); }
.st-clickable.on { background: var(--accent); color: #fff; border-color: var(--accent); }
.st-rel-row {
  display: flex; gap: 6px; align-items: baseline;
  padding: 2px 0;
}
.st-rel-name {
  background: transparent; border: 0;
  padding: 0;
  cursor: pointer;
  font: inherit;
  color: var(--text);
  text-decoration: underline dashed;
  text-decoration-color: var(--text-faint);
  text-underline-offset: 2px;
}
.st-rel-name:hover, .st-rel-name.on { color: var(--accent); text-decoration-color: var(--accent); }
.st-results {
  margin-top: 6px;
  padding-left: 8px;
  border-left: 2px solid var(--border);
}
.st-result-row {
  display: flex; gap: 6px; align-items: baseline;
  padding: 2px 0;
  font-size: 11.5px;
}
.st-result-type { font-weight: 600; font-variant: small-caps; letter-spacing: 0.3px; }
.st-result-flag {
  padding: 0 5px;
  border-radius: 3px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.4px;
}
.st-result-flag.flag-leased { background: #c66e3f; color: #fff; }
.st-result-flag.flag-sold   { background: #8a4a8a; color: #fff; }

/* "$$$" deceased-target badge — heir-of-decedent or deceased-lessor leads.
 * The user's mantra is "dead people are worth dollars" — the badge reads
 * positive, not somber. Green-on-cream nods to mineral-deal money. */
.dc-target {
  display: inline-block;
  padding: 0 5px;
  margin-left: 4px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.5px;
  background: #4a8f4a;
  color: #fff;
  border-radius: 3px;
  vertical-align: middle;
  font-family: 'JetBrains Mono', monospace;
}

.hot-wave-link {
  font-size: 12px;
  color: var(--text-soft);
  text-decoration: none;
  border-bottom: 1px dashed var(--border);
}
.hot-wave-link:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* ════════════════════════════════════════════════════════════════════════
 * Springboard — top-level app launcher + topbar app-switcher.
 * ════════════════════════════════════════════════════════════════════════ */

.topbar-app-switcher {
  display: flex; align-items: center; gap: 12px;
}
.apps-btn {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  color: var(--text-soft);
  padding: 4px 10px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.5px;
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.1s, color 0.1s, border-color 0.1s;
}
.apps-btn:hover { background: var(--accent); color: #fff; border-color: var(--accent); }

.nav-apps-link {
  background: var(--bg-sunken);
  border: 1px solid var(--border);
  border-radius: 4px;
  margin-bottom: 6px;
}
.nav-apps-link.active { background: var(--accent); color: #fff; }

/* Per-app sidebar swap. Each app's nav lives in its own .app-nav-<key>
 * block; body.app-mode-<key> reveals the matching block and hides the others.
 * Launcher (no app context) shows CRM nav as the default landing surface. */
.app-nav { display: none; }
body.app-mode-crm      .app-nav-crm,
body.app-mode-launcher .app-nav-crm     { display: block; }
body.app-mode-packets  .app-nav-packets { display: block; }
body.app-mode-closing  .app-nav-closing { display: block; }

/* Tint the sidebar brand row by app context so you know where you are. */
body.app-mode-packets .sidebar-brand-logo { background: #3550a8; }
body.app-mode-closing .sidebar-brand-logo { background: #4a8f4a; }
body.app-mode-launcher .sidebar-nav { opacity: 0.7; }

.launcher-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
  margin-top: 8px;
}
.launcher-card {
  display: flex; flex-direction: column;
  padding: 14px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
  border-top: 4px solid var(--accent);
  transition: transform 0.05s, box-shadow 0.15s, border-top-color 0.15s;
}
.launcher-card:hover { transform: translateY(-2px); box-shadow: 0 4px 14px rgba(0,0,0,0.08); }
.launcher-card.placeholder { opacity: 0.55; cursor: default; }
.launcher-card.placeholder:hover { transform: none; box-shadow: none; }
.launcher-card.app-crm     { border-top-color: #c66e3f; }
.launcher-card.app-packets { border-top-color: #3550a8; }
.launcher-card.app-closing { border-top-color: #4a8f4a; }

.launcher-card-head {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 8px;
}
.launcher-card-head h3 { margin: 0; font-size: 16px; }
.launcher-icon {
  width: 38px; height: 38px;
  display: grid; place-items: center;
  font-size: 14px; font-weight: 600;
  background: var(--bg-sunken);
  border-radius: 6px;
  letter-spacing: 0.5px;
}
.app-crm     .launcher-icon { background: #c66e3f; color: #fff; }
.app-packets .launcher-icon { background: #3550a8; color: #fff; }
.app-closing .launcher-icon { background: #4a8f4a; color: #fff; }

.launcher-desc {
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--text-soft);
  margin: 0 0 8px;
}
.launcher-note {
  font-size: 11px;
  color: var(--text-faint);
  font-style: italic;
  margin-bottom: 8px;
  padding: 4px 6px;
  background: var(--bg-sunken);
  border-left: 2px solid var(--border);
  border-radius: 2px;
}
.launcher-queues {
  display: flex; flex-direction: column; gap: 2px;
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px dashed var(--border);
}
.launcher-queue {
  display: flex; justify-content: space-between; align-items: center;
  padding: 3px 0;
  font-size: 12px;
  color: var(--text);
  text-decoration: none;
}
.launcher-queue:hover { color: var(--accent); }
.launcher-queue-count {
  min-width: 20px;
  padding: 0 6px;
  background: var(--accent);
  color: #fff;
  font-size: 10px;
  font-weight: 600;
  border-radius: 9px;
  text-align: center;
  line-height: 16px;
}
.launcher-cta {
  margin-top: 8px;
  font-size: 12px;
  font-weight: 600;
  color: var(--accent);
}

/* Brand chips — color-coded per outreach brand (NechesLand / Mineral Locker / etc.) */
.brand-chip {
  display: inline-block;
  padding: 1px 8px;
  font-size: 11px;
  border-radius: 3px;
  font-weight: 600;
  letter-spacing: 0.3px;
  border: 1px solid transparent;
}
.brand-chip.small { font-size: 10px; padding: 0 5px; }
.brand-chip.brand-neches_land    { background: #c66e3f; color: #fff; }
.brand-chip.brand-mineral_locker { background: #3550a8; color: #fff; }
.brand-chip.brand-royalty_partner{ background: #6e4ca8; color: #fff; }
.brand-chip.brand-landman_ai     { background: #2f5a2f; color: #fff; }
.brand-chip.brand-our_landmen    { background: #555; color: #fff; }

.wave-brand-row {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 8px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 4px;
  margin: 6px 0 10px;
}
.wave-brand-row select { padding: 3px 6px; font-size: 12px; }

.wave-card-brand {
  display: flex; align-items: center; gap: 6px;
  margin: 4px 0;
}

.camp-brand-line {
  font-size: 11px;
  color: var(--text-soft);
  margin-bottom: 4px;
}
.camp-brand-line.overridden {
  border-left: 2px solid var(--accent);
  padding-left: 4px;
}
.camp-brand-override {
  margin-top: 4px;
  font-size: 11px;
}
.camp-brand-override summary { cursor: pointer; padding: 2px 0; }
.camp-brand-override select { padding: 2px 4px; font-size: 11px; flex: 1; }

/* Lead 360 Activity tab */
.activity-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  padding-bottom: 6px;
  margin-bottom: 8px;
  border-bottom: 1px solid var(--border);
}
.activity-disp {
  padding: 6px 8px;
  background: var(--bg-sunken);
  border-radius: 4px;
  margin-bottom: 8px;
  font-size: 12px;
}
.activity-list {
  display: flex; flex-direction: column;
  border-left: 2px solid var(--border);
  padding-left: 10px;
  margin-left: 6px;
}
.activity-row {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 8px 0;
  border-bottom: 1px dashed var(--border);
}
.activity-row:last-child { border-bottom: 0; }
.activity-icon {
  width: 22px; height: 22px;
  flex-shrink: 0;
  display: grid; place-items: center;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 50%;
  font-size: 12px;
  margin-left: -22px;
}
.activity-body { flex: 1; min-width: 0; }
.activity-line { display: flex; gap: 8px; align-items: baseline; }
.activity-line strong { font-size: 13px; }
.activity-rel { margin-left: auto; }
.activity-note {
  font-size: 12px; color: var(--text-soft);
  margin-top: 3px;
  font-style: italic;
}

/* CRM-state badge — derived status shown on Lead 360 header + leads table */
.lead-crm-badge {
  display: inline-block;
  padding: 1px 6px;
  font-size: 11px;
  border-radius: 3px;
  font-variant: small-caps;
  letter-spacing: 0.4px;
  background: var(--bg-sunken);
  color: var(--text-soft);
  border: 1px solid var(--border);
}
.lead-crm-badge.st-qualified     { background: #4a8f4a; color: #fff; border-color: #4a8f4a; }
.lead-crm-badge.st-respondent    { background: #c66e3f; color: #fff; border-color: #c66e3f; }
.lead-crm-badge.st-callback      { background: #d4a017; color: #4a3500; border-color: #d4a017; }
.lead-crm-badge.st-not-interested{ background: #88888830; color: #555; }
.lead-crm-badge.st-wrong,
.lead-crm-badge.st-deceased      { background: #88888830; color: #777; text-decoration: line-through; }
.lead-crm-badge.st-disposed      { background: #88888830; color: #555; }
.lead-crm-badge.st-outreach      { background: #6e88d420; color: #3550a8; border-color: #6e88d460; }
.lead-crm-badge.st-in-wave       { background: var(--bg-sunken); color: var(--text-soft); }
.lead-wave-link {
  font-size: 11px;
  color: var(--text-soft);
  text-decoration: none;
  padding: 0 4px;
}
.lead-wave-link:hover { color: var(--accent); }

/* Qualified inbox */
.table-qualified .qual-actions {
  display: flex; gap: 4px; white-space: nowrap;
}

/* Drainable stat tiles (clickable on Overview page) */
.stat-tile.drainable {
  display: block; text-decoration: none; color: var(--text);
  border-left: 3px solid var(--accent);
  transition: border-left-color 0.15s, transform 0.05s;
}
.stat-tile.drainable:hover { border-left-color: #4a8f4a; transform: translateY(-1px); }

/* Sidebar nav-item drainable-count badges */
.nav-item { position: relative; display: flex; align-items: center; }
.nav-badge {
  margin-left: auto;
  min-width: 18px; height: 17px;
  padding: 0 5px;
  font-size: 10px; font-weight: 600; line-height: 17px;
  text-align: center;
  background: var(--accent);
  color: #fff;
  border-radius: 9px;
  letter-spacing: 0.3px;
}
.nav-item[data-route="/qualified"] .nav-badge { background: #4a8f4a; }
.nav-item[data-route="/hot"] .nav-badge { background: #c66e3f; }
body.sidebar-collapsed .nav-badge {
  position: absolute;
  right: 4px; top: 4px;
  margin-left: 0;
  min-width: 14px; height: 14px;
  font-size: 9px; line-height: 14px;
  padding: 0 3px;
}
.entity-header-sub strong { color: var(--text); }

/* Source coverage table — Pipeline status page */
.cov-meta { margin: 6px 0 8px; }
.cov-table { table-layout: fixed; }
.cov-table th, .cov-table td { vertical-align: top; padding: 8px 10px; }
.cov-table th:first-child, .cov-table td:first-child { width: 110px; }
.cov-cell { line-height: 1.35; }
.cov-headline {
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 4px; flex-wrap: wrap;
}
.cov-primary { font-weight: 600; color: var(--text); font-size: 12.5px; }
.cov-pill {
  display: inline-block; padding: 1px 6px;
  font-size: 10px; font-weight: 600; letter-spacing: 0.3px;
  text-transform: uppercase;
  border-radius: 8px; border: 1px solid transparent;
}
.cov-pill.cov-fresh    { background: rgba(74,124,58,0.14);  color: var(--state-won);    border-color: rgba(74,124,58,0.4); }
.cov-pill.cov-building { background: rgba(214,139,102,0.18); color: var(--terracotta);  border-color: var(--terracotta); }
.cov-pill.cov-stale    { background: rgba(181,140,40,0.16); color: #8a6a1f;             border-color: rgba(181,140,40,0.5); }
.cov-pill.cov-missing  { background: rgba(120,120,120,0.10); color: var(--text-faint);  border-color: rgba(120,120,120,0.35); }
.cov-bar {
  height: 4px; background: rgba(0,0,0,0.06);
  border-radius: 2px; overflow: hidden; margin: 2px 0 4px;
}
.cov-bar-fill { height: 100%; transition: width 0.3s ease; }
.cov-bar-fill.cov-fresh    { background: var(--state-won); }
.cov-bar-fill.cov-building { background: var(--terracotta); }
.cov-bar-fill.cov-stale    { background: #b88c28; }
.cov-bar-fill.cov-missing  { background: rgba(120,120,120,0.3); }
.cov-cell-missing { background: rgba(0,0,0,0.015); }
.cov-detail { font-size: 11px; }
.cov-ts { margin-left: 4px; }

/* Skip-trace tab — always-on cards per alias/relative, auto-fired grantor search */
.skip-trace-tab { padding: 4px 0; }
.skip-trace-tab .st-header { display:flex; align-items:baseline; gap: 12px; flex-wrap: wrap; }
.skip-trace-tab .st-section { margin-bottom: 22px; }
.skip-trace-tab .st-label { font-weight: 600; margin-bottom: 8px; font-size: 14px; }
.skip-trace-tab .st-contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.skip-trace-tab .st-addr-list { margin: 0; padding-left: 18px; font-size: 13px; }
.skip-trace-tab .st-empty-block { padding: 6px 0; }

.skip-trace-tab .st-card {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 14px;
  margin-bottom: 8px;
  background: var(--bg, #fff);
}
.skip-trace-tab .st-rel-card { border-left: 3px solid var(--state-won, #4a7c3a); }
.skip-trace-tab .st-alias-card { border-left: 3px solid #5a3d8a; }
.skip-trace-tab .st-card-head {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  margin-bottom: 6px;
}
.skip-trace-tab .st-name { font-size: 14px; font-weight: 500; }
.skip-trace-tab .st-pass2 {
  padding: 8px 10px; margin: 6px 0;
  background: rgba(74, 124, 58, 0.06);
  border-radius: 6px;
  font-size: 12px;
}
.skip-trace-tab .st-pass2-label { font-weight: 600; }
.skip-trace-tab .st-pass2-pending {
  background: rgba(0,0,0,0.025);
  color: var(--text-soft);
  font-style: italic;
}
.skip-trace-tab .st-pass2-card { display: block; }
.skip-trace-tab .st-pass2-head {
  display: flex; align-items: baseline; gap: 10px;
  margin-bottom: 4px;
  border-bottom: 1px dashed rgba(74, 124, 58, 0.2);
  padding-bottom: 4px;
}
.skip-trace-tab .st-pass2-age {
  color: var(--state-won, #2f5a23);
  font-weight: 500;
}
.skip-trace-tab .st-pass2-link {
  margin-left: auto;
  font-size: 11px;
  color: var(--terracotta);
  text-decoration: none;
}
.skip-trace-tab .st-pass2-link:hover { text-decoration: underline; }
.skip-trace-tab .st-pass2-row {
  display: grid; grid-template-columns: 95px 1fr;
  gap: 8px; padding: 2px 0;
}
.skip-trace-tab .st-pass2-k {
  color: var(--text-soft);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  padding-top: 2px;
}
.skip-trace-tab .st-pass2-v { display: inline-flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.skip-trace-tab .st-pass2-pill {
  display: inline-block;
  padding: 1px 6px;
  background: #fff;
  border: 1px solid rgba(74, 124, 58, 0.25);
  border-radius: 9px;
  font-family: var(--mono, ui-monospace, SFMono-Regular, monospace);
  font-size: 11px;
  text-decoration: none;
  color: inherit;
  white-space: nowrap;
}
.skip-trace-tab .st-pass2-pill-tel,
.skip-trace-tab .st-pass2-pill-email { color: var(--terracotta, #b53d24); cursor: pointer; }
.skip-trace-tab .st-pass2-pill-tel:hover,
.skip-trace-tab .st-pass2-pill-email:hover { background: rgba(181,61,36,0.08); border-color: var(--terracotta, #b53d24); }
.skip-trace-tab .st-pass2-reach {
  display: inline-block; padding: 1px 7px; border-radius: 9px;
  font-size: 10.5px; font-weight: 600; letter-spacing: 0.2px;
}
.skip-trace-tab .st-pass2-reach-ok { background: rgba(74, 124, 58, 0.18); color: #2f5a23; border: 1px solid rgba(74, 124, 58, 0.4); }
.skip-trace-tab .st-pass2-reach-warn { background: rgba(214, 139, 102, 0.18); color: #8a5a18; border: 1px solid rgba(214, 139, 102, 0.4); }
.skip-trace-tab .st-pass2-reach-min { background: rgba(0,0,0,0.06); color: #666; border: 1px solid rgba(0,0,0,0.15); }
.skip-trace-tab .st-pass2-reach-pending { background: rgba(214, 139, 102, 0.12); color: #b53d24; border: 1px solid rgba(214, 139, 102, 0.3); }
.skip-trace-tab .st-pass2-trail { margin: 2px 0 6px; }

/* Right rail tightening — denser kv rows, narrower label column */
.entity-360-side .side-card {
  padding: 10px 12px;
  margin-bottom: 8px;
}
.entity-360-side .side-card h4 {
  font-size: 11px; letter-spacing: 0.6px;
  text-transform: uppercase;
  margin: 0 0 6px;
  color: var(--text-soft);
}
.entity-360-side .kv {
  display: grid; grid-template-columns: 80px 1fr;
  gap: 4px 8px;
  font-size: 12px;
}
.entity-360-side .kv-label {
  color: var(--text-soft);
  font-size: 11px;
}
.entity-360-side .kv-value {
  color: var(--text);
  font-weight: 500;
  word-break: break-word;
}
.entity-360-side .kv-legal {
  display: block;
  font-weight: 400;
  font-size: 11px;
  line-height: 1.35;
  color: var(--text-soft);
}
.skip-trace-tab .st-card-search {
  margin-top: 6px; padding: 6px 8px;
  background: rgba(0,0,0,0.02);
  border-radius: 5px;
  font-size: 12px;
}
.skip-trace-tab .st-search-loading,
.skip-trace-tab .st-search-empty,
.skip-trace-tab .st-search-summary { padding: 2px 0; }
.skip-trace-tab .st-search-summary { font-weight: 600; margin-bottom: 4px; }
.skip-trace-tab .st-result-row {
  display: flex; align-items: center; gap: 8px; padding: 2px 0;
  font-size: 12px;
}
.skip-trace-tab .st-result-type { font-weight: 500; }
.skip-trace-tab .st-result-flag {
  display: inline-block; padding: 0 6px;
  font-size: 10px; font-weight: 700; letter-spacing: 0.4px;
  border-radius: 5px;
}
.skip-trace-tab .st-result-flag.flag-leased { background: rgba(214,139,102,0.18); color: #8a4d28; }
.skip-trace-tab .st-result-flag.flag-sold   { background: rgba(120,90,180,0.16);  color: #5a3d8a; }

/* Title tab — always-on O&G lease section */
.title-og-section { margin-bottom: 22px; padding-bottom: 18px; border-bottom: 1px solid var(--border); }

/* Cohort-wide enrichment summary banner */
.enrichment-banner {
  background: var(--bg-soft, #f6f1e7);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 14px;
  margin-bottom: 10px;
  font-size: 12px;
}
.eb-headline { display: flex; align-items: baseline; gap: 12px; margin-bottom: 6px; }
.eb-bars {
  display: flex; height: 8px; gap: 0;
  border-radius: 4px; overflow: hidden;
  background: rgba(0,0,0,0.04);
  margin-bottom: 6px;
}
.eb-seg { transition: flex 0.3s; }
.eb-seg.eb-rich     { background: var(--state-won, #4a7c3a); }
.eb-seg.eb-shallow  { background: rgba(74, 124, 58, 0.5); }
.eb-seg.eb-no-match { background: rgba(120, 120, 120, 0.4); }
.eb-seg.eb-entity   { background: #5a3d8a; }
.eb-stats {
  display: flex; gap: 12px; flex-wrap: wrap; align-items: center;
  font-size: 11px;
}
.eb-dot {
  display: inline-block; width: 8px; height: 8px;
  border-radius: 50%; margin-right: 4px;
  vertical-align: middle;
}
.eb-dot.eb-rich     { background: var(--state-won, #4a7c3a); }
.eb-dot.eb-shallow  { background: rgba(74, 124, 58, 0.5); }
.eb-dot.eb-no-match { background: rgba(120, 120, 120, 0.4); }
.eb-dot.eb-entity   { background: #5a3d8a; }

/* Skip-trace filter strip — quick segmentation of the lead universe by enrichment status */
.st-filter-bar {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  margin: 8px 0 12px;
}
.st-filter-label {
  font-size: 11px; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.5px; color: var(--text-soft); margin-right: 4px;
}
.st-filter-btn {
  background: var(--bg-soft, #f6f1e7); color: var(--text-soft);
  border: 1px solid var(--border); border-radius: 14px;
  padding: 3px 10px; font-size: 12px; cursor: pointer;
  display: inline-flex; align-items: center; gap: 5px;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.st-filter-btn:hover { background: rgba(0,0,0,0.04); }
.st-filter-btn.on    { background: var(--terracotta, #b53d24); color: #fff; border-color: var(--terracotta, #b53d24); }
.st-filter-btn.st-rich-btn.on { background: #4a7c3a; border-color: #4a7c3a; }
.st-count {
  font-size: 10px; font-weight: 700;
  padding: 1px 5px; border-radius: 8px;
  background: rgba(0,0,0,0.06); color: inherit;
  font-family: var(--mono, ui-monospace, SFMono-Regular, monospace);
}
.st-filter-btn.on .st-count { background: rgba(255,255,255,0.22); }

/* DECEASED tag — serious, attention-grabbing pill in the header chip row.
   Distinct visual weight from tier/state pills so it reads as a status fact
   ("this person is deceased") not just another classification. */
.deceased-tag {
  display: inline-block; padding: 2px 8px;
  font-size: 10px; font-weight: 700; letter-spacing: 0.5px;
  text-transform: uppercase;
  color: #4b1d12;
  background: rgba(120, 40, 20, 0.10);
  border: 1px solid rgba(120, 40, 20, 0.35);
  border-radius: 8px;
  vertical-align: middle;
}
.deceased-tag-confirmed {
  background: #b53d24;
  color: #fff;
  border-color: #b53d24;
}
.kv-value .deceased-tag { font-size: 11px; padding: 3px 10px; }
/* Heuristic-flagged deceased that the skip-trace explicitly contradicts —
   muted background + line-through so the landman doesn't trust it, but the
   audit trail is preserved for data review. */
.deceased-tag-contradicted {
  background: rgba(120, 100, 80, 0.10);
  color: #6b5340;
  border-color: rgba(120, 100, 80, 0.30);
  text-decoration: line-through;
  text-decoration-thickness: 1px;
  text-decoration-color: rgba(120, 100, 80, 0.55);
}
.deceased-tag-contradicted .dt-warn {
  display: inline-block;
  margin-left: 4px;
  color: #8b6a4a;
  font-weight: 600;
  text-decoration: none;
}

/* Lead 360° header score chips — always shows all 3 scores side-by-side, distinctly labeled */
.score-chip-row { display: inline-flex; gap: 4px; margin-left: 8px; vertical-align: middle; }
.score-chip {
  display: inline-block; padding: 1px 7px;
  font-size: 11px; font-weight: 600; letter-spacing: 0.3px;
  border-radius: 8px; border: 1px solid transparent;
  font-family: var(--mono, ui-monospace, SFMono-Regular, monospace);
}
.score-chip.score-priority   { background: rgba(181, 61, 36, 0.12); color: var(--tier-priority, #b53d24); border-color: rgba(181, 61, 36, 0.4); }
.score-chip.score-buyerfit   { background: rgba(74, 124, 58, 0.14); color: var(--state-won, #4a7c3a); border-color: rgba(74, 124, 58, 0.4); }
.score-chip.score-engagement { background: rgba(214, 139, 102, 0.16); color: var(--terracotta, #d68b66); border-color: rgba(214, 139, 102, 0.4); }

/* Score-chip click-to-expand flyout */
.score-chip-wrap { position: relative; display: inline-block; }
.score-chip-clickable { cursor: pointer; font: inherit; }
.score-chip-clickable:hover { filter: brightness(0.95); }
.score-flyout {
  position: absolute; top: calc(100% + 4px); left: 0; z-index: 50;
  min-width: 220px; max-width: 320px;
  background: var(--surface, #fff); color: var(--text, #222);
  border: 1px solid var(--border, rgba(0,0,0,0.15)); border-radius: 6px;
  box-shadow: 0 4px 14px rgba(0,0,0,0.12);
  padding: 8px 10px; font-size: 12px; line-height: 1.4;
}
.score-flyout[hidden] { display: none; }
.score-flyout-head { font-weight: 600; margin-bottom: 6px; padding-bottom: 4px; border-bottom: 1px solid var(--border, rgba(0,0,0,0.08)); }
.score-flyout-empty { color: var(--text-soft, #666); font-style: italic; }
.score-flyout .sf-row { display: flex; justify-content: space-between; gap: 12px; padding: 2px 0; font-family: var(--mono, ui-monospace, monospace); }
.score-flyout .sf-row.sf-base { color: var(--text-soft, #666); }
.score-flyout .sf-row.sf-total { margin-top: 4px; padding-top: 4px; border-top: 1px solid var(--border, rgba(0,0,0,0.08)); font-weight: 600; }
.score-flyout .sf-name { cursor: help; }
.score-flyout .sf-val { white-space: nowrap; }
.score-flyout .sf-foot { margin-top: 6px; padding-top: 4px; border-top: 1px dotted var(--border, rgba(0,0,0,0.08)); font-size: 11px; color: var(--text-soft, #666); }

/* View-mode toggle (Grid vs Cards) — same look as tranche-size-toggle */
.view-mode-toggle {
  display: inline-flex; gap: 0; border-radius: 7px;
  overflow: hidden; border: 1px solid var(--border);
}
.view-mode-btn {
  background: var(--bg-soft, #f6f1e7); color: var(--text-soft);
  border: 0; padding: 4px 10px; font-size: 12px; font-weight: 500;
  cursor: pointer; transition: background 0.15s;
}
.view-mode-btn:not(.on):hover { background: rgba(0,0,0,0.04); }
.view-mode-btn.on { background: var(--terracotta, #b53d24); color: #fff; }
.view-mode-btn + .view-mode-btn { border-left: 1px solid var(--border); }

/* Card view — horizontal row layout, full-width, multi-zone.
   `min-width: 0` is critical at every flex level so ellipsis triggers instead
   of pushing the card wider than the viewport (causes horizontal scroll). */
.leads-cards-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);  /* explicit 0 min — prevents grid blowout */
  gap: 6px;
  margin-top: 12px;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}
.lead-card {
  background: var(--bg, #fff);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 14px;
  cursor: pointer;
  transition: border-color 0.12s, box-shadow 0.12s;
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;  /* hard guard if any inner child still overflows */
}
.lead-card:hover { border-color: var(--terracotta, #b53d24); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
.lead-card:focus-visible { outline: 2px solid var(--terracotta, #b53d24); outline-offset: 2px; }
.lead-card-zone { display: flex; align-items: center; gap: 6px; min-width: 0; }

.lead-card-left {
  flex: 0 0 auto;
  flex-wrap: wrap;
  /* No fixed min-width — let it shrink on narrow viewports */
}
.lead-card-mid {
  flex: 1 1 0;            /* shrink-permissive */
  min-width: 0;
  max-width: 100%;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  overflow: hidden;
}
.lead-card-name {
  font-size: 15px; font-weight: 600; line-height: 1.25;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 100%;
}
.lead-card-sub {
  line-height: 1.35;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 100%;
}
.lead-card-scores {
  flex: 0 0 auto;
  justify-content: flex-end;
  flex-wrap: wrap;
}
.lead-card-touch {
  flex: 0 0 auto;
  justify-content: flex-end;
  text-align: right;
  white-space: nowrap;
}
.lead-card-skip {
  flex: 0 0 auto;
  justify-content: flex-end;
}

/* Narrow-viewport / sidebar-open mode: at <1100px effective card width the
   default 5-zone row stops looking like a row — the name truncates to 3 chars
   and the right-side zones get spaced out across dead space. Drop a couple
   zones to a second line and let the name breathe. */
@media (max-width: 1200px) {
  .lead-card {
    flex-wrap: wrap;
    row-gap: 6px;
    column-gap: 10px;
  }
  .lead-card-left { flex-wrap: nowrap; }
  .lead-card-mid { flex: 1 1 60%; }
  .lead-card-scores,
  .lead-card-touch,
  .lead-card-skip {
    /* push to a second row, evenly spaced */
    flex: 0 1 auto;
  }
  .lead-card-touch { font-size: 11px; opacity: 0.8; }
}

/* Skip-trace status badge — labeled, color-coded, always-visible. */
.sp-badge {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 2px 8px;
  font-size: 11px; font-weight: 600; letter-spacing: 0.2px;
  border-radius: 10px; border: 1px solid transparent;
  white-space: nowrap;
}
.sp-glyph.nf {
  font-family: "SymbolsNerdFontMono", ui-monospace, monospace;
  font-size: 14px; line-height: 1; font-weight: 400;
}
.sp-badge.sp-rich     { background: rgba(74, 124, 58, 0.15);  color: #2f5a23; border-color: rgba(74, 124, 58, 0.45); }
.sp-badge.sp-shallow  { background: rgba(74, 124, 58, 0.08);  color: #4a7c3a; border-color: rgba(74, 124, 58, 0.25); }
.sp-badge.sp-no-match { background: rgba(0, 0, 0, 0.04);      color: var(--text-soft); border-color: rgba(0, 0, 0, 0.12); }
.sp-badge.sp-entity   { background: rgba(120, 90, 180, 0.10); color: #5a3d8a; border-color: rgba(120, 90, 180, 0.30); }
.sp-badge.sp-pending  { background: rgba(214, 139, 102, 0.10); color: var(--terracotta, #b53d24); border-color: rgba(214, 139, 102, 0.30); }
.sp-badge.sp-heuristic{ background: rgba(180, 140, 60, 0.12);  color: #8a5a18; border-color: rgba(180, 140, 60, 0.35); }

/* Nerd Font icon class — used by skip-trace status icons */
.sp-icon.nf {
  font-family: "SymbolsNerdFontMono", ui-monospace, monospace;
  font-size: 16px; line-height: 1;
  font-weight: 400;
  width: 20px; height: 20px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 4px;
  background: transparent;  /* override the circular bg from non-nf rules */
}

/* Spokeo column on lead universe — single-icon indicator per row.
   ● rich  ○ shallow  · no-match  ⊘ entity  ? pending */
.col-spokeo { text-align: center; white-space: nowrap; width: 60px; }
.sp-icon {
  display: inline-block; width: 18px; height: 18px;
  line-height: 18px; text-align: center;
  font-size: 14px; font-weight: 700;
  border-radius: 50%;
}
.sp-icon.sp-rich     { color: var(--state-won, #4a7c3a); background: rgba(74, 124, 58, 0.12); }
.sp-icon.sp-shallow  { color: var(--text-soft); background: rgba(0,0,0,0.04); }
.sp-icon.sp-no-match { color: var(--text-faint); background: transparent; font-weight: 400; }
.sp-icon.sp-entity   { color: var(--text-faint); background: transparent; font-size: 13px; }
.sp-icon.sp-pending  { color: var(--text-faint); background: transparent; font-weight: 400; }

/* Keep the $$$ badge inline with the lead name so it doesn't wrap to a new line */
.dc-target { display: inline-block; vertical-align: baseline; white-space: nowrap; }
.table-leads td:nth-child(3) { white-space: normal; }  /* Lead column — allow normal wrap */

.heir-density-badge {
  display: inline-block; margin-left: 8px; padding: 2px 8px;
  font-size: 12px; font-weight: 500; vertical-align: middle;
  background: rgba(74, 124, 58, 0.10); color: var(--state-won);
  border: 1px solid rgba(74, 124, 58, 0.4); border-radius: 8px;
}
.heir-density-badge span { margin-right: 4px; }

/* Correspondence tab — iMessage-style thread */
.corr-composer {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 10px 12px; margin-bottom: 14px;
  background: rgba(0,0,0,0.025); border-radius: 8px;
}
.corr-thread { display: flex; flex-direction: column; gap: 10px; }
.corr-bubble {
  max-width: 78%; padding: 10px 12px; border-radius: 12px;
  border: 1px solid var(--border);
}
.corr-bubble.corr-out { align-self: flex-end; background: #eaf2ff; border-color: #cfe0fa; }
.corr-bubble.corr-in  { align-self: flex-start; background: #f3f3f3; }
.corr-bubble.corr-sys { align-self: center; background: rgba(0,0,0,0.02); font-size: 12px; color: var(--text-soft); max-width: 92%; }
.corr-meta { font-size: 11px; color: var(--text-soft); margin-bottom: 4px; }
.corr-channel { text-transform: uppercase; letter-spacing: 0.4px; font-weight: 600; }
.corr-body { font-size: 13px; white-space: pre-wrap; }
