/* ============================================================
 * PSA Internal Platform — main stylesheet
 * Extracted from InternalPlatform/static/index.html on 01 May 2026.
 * Loaded as <link rel="stylesheet"> in the <head>; identical cascade
 * order as the original inline <style> block.
 *
 * Section comments (/* ── X ── */) below match the structure that grew
 * organically in the original file. Two smaller scoped style blocks
 * remain inline in index.html: Universe (#tab-universe) and Finance
 * Ask-modal (.af-modal) — both are tab-scoped and small enough to
 * keep colocated with their tab markup.
 * ============================================================ */
/* ── Reset ─────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* ── Design Tokens ─────────────────────── */
:root {
  --navy: #0a1628;
  --header: #0f2440;
  --orange: #e8771a;
  --page-bg: #f7f4f0;
  --text: #2b2b2b;
  --cream: #f9f7f3;
  --border: #dedad3;
  --muted: #6b6b6b;
  --white: #ffffff;
  --red: #c0392b;
  --green: #27ae60;
  --font-title: 'Inter', -apple-system, sans-serif;
  --font-display: 'Inter', -apple-system, sans-serif;
  --font-body: 'Inter', -apple-system, sans-serif;
  --font-heading: 'Inter', -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
}
/* Reserve the vertical scrollbar gutter so the page never shifts sideways when
   content height changes (e.g. filtering a list shorter/longer toggles the
   scrollbar). Fixes the "page jumps sideways on filter change" report. */
html { scrollbar-gutter: stable; }
body { margin: 0; font-family: var(--font-body); background: var(--page-bg); color: var(--text); line-height: 1.5; }

/* ── Login Screen ──────────────────────── */
#login-screen {
  position: fixed; inset: 0; z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  background: var(--header);
  background-image: radial-gradient(ellipse at 20% 50%, rgba(232,119,26,0.06) 0%, transparent 60%),
                    radial-gradient(ellipse at 80% 20%, rgba(255,255,255,0.03) 0%, transparent 50%);
}
.login-card {
  background: var(--white); border-radius: 12px; padding: 48px 44px;
  width: 380px; max-width: 90vw; box-shadow: 0 24px 64px rgba(0,0,0,0.4);
  text-align: center;
}
.login-logo {
  font-family: var(--font-display);
  font-size: 1.35rem; font-weight: 800; letter-spacing: -0.02em; color: rgb(22,59,91); text-align: center;
  margin-bottom: 0.15rem; white-space: nowrap;
}
.login-logo span { color: rgb(255,131,0); }
.login-subtitle {
  font-family: var(--font-body); font-size: 11px; color: var(--muted);
  text-align: center; margin-bottom: 36px; letter-spacing: 0.12em;
  text-transform: uppercase; font-weight: 500;
}
.login-field { margin-bottom: 16px; }
.login-field label {
  display: block; font-size: 12px; font-weight: 600; color: var(--muted);
  margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px;
}
.login-field input {
  width: 100%; padding: 10px 14px; border: 1px solid var(--border);
  border-radius: 6px; font-family: var(--font-body); font-size: 14px;
  background: var(--cream); color: var(--text); transition: border-color 0.2s;
}
.login-field input:focus { outline: none; border-color: var(--navy); background: white; }
.login-btn {
  width: 100%; padding: 12px; border: none; border-radius: 6px;
  background: var(--orange); color: var(--white); font-family: var(--font-body);
  font-size: 13px; font-weight: 600; cursor: pointer; margin-top: 8px;
  letter-spacing: 0.04em; transition: background 0.2s;
}
.login-btn:hover { background: #d66c14; }
.login-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.login-error {
  color: var(--red); font-size: 13px; text-align: center;
  margin-top: 12px; min-height: 20px;
}
#login-checking {
  text-align: center; color: var(--muted); font-size: 14px; padding: 40px;
}
#login-form, #totp-step { display: none; }

/* ── App Shell ─────────────────────────── */
#app { display: none; flex-direction: column; min-height: 100vh; }

/* Two-row header matching KB/Ops design */
.app-header {
  position: sticky; top: 0; z-index: 100; background: var(--header);
}
.header-top {
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 2.5rem; height: 64px;
}
.header-left { display: flex; align-items: center; gap: 16px; }
.kb-btn {
  padding: 4px 12px; background: rgba(232,119,26,0.15); color: var(--orange);
  border-radius: 4px; font-family: var(--font-body); font-size: 12px; font-weight: 600;
  text-decoration: none; letter-spacing: 0.04em; transition: background 0.15s;
}
.kb-btn:hover { background: rgba(232,119,26,0.25); }
.header-center {
  position: absolute; left: 50%; transform: translateX(-50%); text-align: center;
}
.header-brand {
  font-family: var(--font-display);
  font-size: 1.4rem; font-weight: 800; color: rgba(255,255,255,0.95);
  letter-spacing: -0.02em; cursor: pointer;
}
.header-brand span { color: rgb(255,131,0); font-weight: 700; }
.header-subtitle {
  font-size: 0.5rem; text-transform: uppercase; letter-spacing: 3.5px;
  color: rgba(255,255,255,0.28); margin-top: 0.1rem; font-weight: 400;
}
.header-right { display: flex; align-items: center; gap: 1.15rem; }
.user-avatar {
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--orange); color: var(--white);
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700;
}
.signout-btn {
  border: none; background: transparent; color: rgba(255,255,255,0.4);
  font-family: var(--font-body); font-size: 11px; cursor: pointer;
  padding: 4px 8px; transition: color 0.15s;
}
.signout-btn:hover { color: rgba(255,255,255,0.8); }

/* Nav tabs row */
.header-nav {
  display: flex; justify-content: center; gap: 0; height: 40px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.nav-tab {
  padding: 0 1.5rem; height: 40px; display: flex; align-items: center;
  font-size: 0.82rem; font-weight: 400; color: rgba(255,255,255,0.5);
  cursor: pointer; border: none; background: none;
  font-family: var(--font-body); transition: color 0.2s;
  position: relative; letter-spacing: 0.2px;
}
.nav-tab:hover { color: rgba(255,255,255,0.75); }
.nav-tab.active { color: #fff; font-weight: 500; }
.nav-tab.active::after {
  content: ''; position: absolute; bottom: 0; left: 0.75rem; right: 0.75rem;
  height: 2px; background: var(--orange); border-radius: 1px;
}

/* Sub-nav bar */
.sub-nav {
  display: flex; justify-content: center; gap: 0;
  background: var(--white); border-bottom: 1px solid var(--border); height: 36px;
  position: relative;
}
.sub-nav-tab {
  padding: 0 1.2rem; height: 36px; display: flex; align-items: center;
  font-size: 0.78rem; font-weight: 400; color: var(--muted);
  cursor: pointer; border: none; background: none;
  font-family: var(--font-body); transition: color 0.15s;
  position: relative; letter-spacing: 0.2px;
}
.sub-nav-tab:hover { color: var(--navy); }
.sub-nav-tab.active { color: var(--navy); font-weight: 600; }
.sub-nav-tab.active::after {
  content: ''; position: absolute; bottom: 0; left: 0.5rem; right: 0.5rem;
  height: 2px; background: var(--orange); border-radius: 1px;
}
.sub-nav-tab .nav-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 16px; height: 16px; padding: 0 5px; margin-left: 6px;
  border-radius: 8px; background: var(--orange); color: #fff;
  font-family: var(--font-mono); font-size: 10px; font-weight: 600;
  line-height: 1; letter-spacing: 0;
}

/* Per-tab visibility chip — shown to admins/Fred next to hidden nav items so
   they can see which tabs are FREDDIE-only vs ADMIN-only (see app.js _levelChipEl). */
.nav-level-chip {
  display: inline-flex; align-items: center; margin-left: 6px;
  padding: 1px 5px; border-radius: 3px; vertical-align: middle;
  font-family: var(--font-mono); font-size: 8.5px; font-weight: 700;
  letter-spacing: 0.5px; line-height: 1.4; text-transform: uppercase;
}
.nav-level-chip.nav-level-freddie { background: var(--orange); color: #fff; }
.nav-level-chip.nav-level-admin { background: #e3dfd2; color: #6b6b6b; }

/* Earnings detail — Generate Brief block (Session 2) */
.earn-brief-block {
  margin: 14px 0 18px;
  padding: 12px 14px;
  background: var(--cream, #f9f7f3);
  border: 1px solid var(--border);
  border-left: 3px solid var(--orange);
  border-radius: 4px;
}
.earn-brief-block .earn-btn-secondary {
  background: transparent;
  color: var(--navy);
  border: 1px solid var(--navy);
  padding: 6px 14px;
  font-size: 12px;
  font-weight: 500;
  border-radius: 3px;
  cursor: pointer;
  font-family: var(--font-body);
  letter-spacing: 0.03em;
  text-transform: none;
  transition: background 0.15s, color 0.15s;
}
.earn-brief-block .earn-btn-secondary:hover:not(:disabled) {
  background: var(--navy);
  color: #fff;
}
.earn-brief-block .earn-btn-secondary:disabled {
  opacity: 0.55;
  cursor: wait;
}
.earn-brief-output {
  margin-top: 12px;
  padding: 12px 14px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 3px;
  font-family: var(--font-body);
  font-size: 13px;
  line-height: 1.55;
  color: var(--text, #2b2b2b);
  white-space: pre-wrap;
}

/* ═══════════════════════════════════════
   "More" dropdown — secondary tabs in header nav
   ═══════════════════════════════════════ */
.nav-more-wrap { position: relative; display: flex; align-items: stretch; }
.nav-more-btn { display: inline-flex; align-items: center; gap: 4px; }
.nav-more-caret { font-size: 9px; opacity: 0.7; transition: transform 0.15s; }
.nav-more-btn.open .nav-more-caret { transform: rotate(180deg); }
.nav-more-btn.open { color: #fff; }
.nav-more-dropdown {
  position: absolute; top: 100%; right: 0; min-width: 200px;
  background: var(--white); border: 1px solid var(--border);
  border-top: none;
  box-shadow: 0 8px 24px rgba(0,0,0,0.12);
  border-radius: 0 0 6px 6px;
  display: none; z-index: 100;
  padding: 6px 0;
}
.nav-more-dropdown.open { display: block; }
.nav-more-item {
  display: block; width: 100%; text-align: left;
  padding: 9px 16px; font-family: var(--font-body); font-size: 0.78rem;
  font-weight: 400; color: var(--text); background: none; border: none;
  cursor: pointer; transition: background 0.12s, color 0.12s;
  letter-spacing: 0.2px;
}
.nav-more-item:hover { background: var(--cream); color: var(--navy); font-weight: 500; }

/* ═══════════════════════════════════════
   Earnings tab — full redesign
   ═══════════════════════════════════════ */
#tab-earnings { padding-bottom: 40px; }

/* Section titles — orange accent bar, navy text */
.earn-section-title {
  font-family: var(--font-display); font-size: 1.5rem; font-weight: 600;
  color: var(--navy); margin: 0 0 4px;
  padding-left: 14px; border-left: 3px solid var(--orange);
  line-height: 1.2;
}
.earn-subtitle {
  color: var(--muted); font-size: 0.82rem; margin: 0 0 18px;
  padding-left: 17px; letter-spacing: 0.1px;
}
#earn-results-section, #earn-models-section { margin-top: 2.5rem; }

/* Empty state */
.earn-empty {
  padding: 30px 24px; text-align: center; color: var(--muted);
  background: var(--cream); border: 1px dashed var(--border); border-radius: 6px;
  font-size: 0.85rem; margin-left: 17px;
}

/* ── Pending Reviews — card layout ── */
.earn-cards {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));
  gap: 16px; margin-left: 17px;
}
.earn-card {
  background: var(--white); border: 1px solid var(--border);
  border-radius: 8px; padding: 18px 20px;
  display: flex; flex-direction: column; gap: 12px;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.earn-card:hover { border-color: var(--navy); box-shadow: 0 4px 18px rgba(10,22,40,0.08); }
.earn-card-header {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border);
}
.earn-card-header > div:first-child { flex: 1; min-width: 0; }
.earn-ticker {
  font-family: var(--font-mono); font-size: 0.75rem; font-weight: 600;
  color: var(--orange); letter-spacing: 0.04em; display: inline-block; margin-right: 8px;
}
.earn-company {
  font-family: var(--font-title); font-size: 1.15rem; font-weight: 600;
  color: var(--navy); display: inline; line-height: 1.2;
}
.earn-fl {
  display: inline-block; padding: 2px 7px; margin-left: 8px;
  background: rgba(232,119,26,0.12); color: var(--orange);
  font-family: var(--font-body); font-size: 0.6rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.6px; border-radius: 3px;
  vertical-align: middle;
}
.earn-card-meta {
  font-size: 0.72rem; color: var(--muted); font-family: var(--font-body);
  letter-spacing: 0.15px;
}

/* ── Verdict badges (Beat / Miss / In-line) ── */
.earn-badge {
  display: inline-block; padding: 4px 10px; border-radius: 3px;
  font-family: var(--font-body); font-size: 0.62rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.6px; white-space: nowrap;
}
.earn-beat-bg { background: rgba(46,125,50,0.12); color: #2e7d32; }
.earn-miss-bg { background: rgba(198,40,40,0.12); color: #c62828; }
.earn-inline-bg { background: rgba(245,124,0,0.12); color: #f57c00; }

/* ── Beat / Miss delta colors (in tables) ── */
.earn-beat { color: #2e7d32; font-weight: 600; }
.earn-miss { color: #c62828; font-weight: 600; }

/* ── Mini comparison table inside card ── */
.earn-comp-mini {
  width: 100%; border-collapse: collapse; font-family: var(--font-body);
  font-size: 0.78rem;
}
.earn-comp-mini th {
  text-align: right; padding: 6px 8px; color: var(--muted);
  font-weight: 500; font-size: 0.65rem; text-transform: uppercase;
  letter-spacing: 0.5px; border-bottom: 1px solid var(--border);
}
.earn-comp-mini th:first-child { text-align: left; }
.earn-comp-mini td {
  padding: 8px; border-bottom: 1px solid rgba(0,0,0,0.04);
  font-family: var(--font-mono); font-size: 0.78rem; text-align: right;
}
.earn-comp-mini td:first-child {
  text-align: left; color: var(--muted); font-family: var(--font-body);
  font-weight: 500;
}
.earn-comp-mini tr:last-child td { border-bottom: none; }

.earn-no-data {
  margin: 0; padding: 10px 12px; background: var(--cream);
  border-radius: 4px; font-size: 0.78rem; color: var(--muted);
  font-style: italic;
}

/* ── Buttons ── */
.earn-btn {
  display: inline-block; background: var(--navy); color: var(--white);
  border: none; padding: 9px 18px; font-family: var(--font-body);
  font-size: 0.78rem; font-weight: 500; letter-spacing: 0.3px;
  border-radius: 4px; cursor: pointer; transition: background 0.15s;
  align-self: flex-start;
}
.earn-btn:hover { background: var(--header); }

/* ── Tables (Recent TDnet Results, All Models) ── */
.earn-table-card {
  background: var(--white); border: 1px solid var(--border);
  border-radius: 8px; overflow: hidden; margin-left: 17px;
}
.earn-table { width: 100%; border-collapse: collapse; font-family: var(--font-body); }
.earn-table thead {
  background: var(--cream); border-bottom: 1px solid var(--border);
}
.earn-table th {
  padding: 11px 14px; text-align: left; font-size: 0.65rem;
  font-weight: 700; color: var(--muted); text-transform: uppercase;
  letter-spacing: 0.6px;
}
.earn-table th:nth-child(n+5) { text-align: right; }
.earn-table td {
  padding: 12px 14px; font-size: 0.83rem; color: var(--text);
  border-bottom: 1px solid rgba(0,0,0,0.04);
}
.earn-table tbody tr:last-child td { border-bottom: none; }
.earn-table .earn-clickable { cursor: pointer; transition: background 0.12s; }
.earn-table .earn-clickable:hover { background: var(--cream); }
.earn-num { font-family: var(--font-mono); font-size: 0.78rem; text-align: right; }

/* Status pills in results table */
.earn-status-none, .earn-status-pending, .earn-status-ok {
  display: inline-block; padding: 3px 9px; border-radius: 3px;
  font-size: 0.62rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.5px;
}
.earn-status-none { background: rgba(107,107,107,0.12); color: var(--muted); }
.earn-status-pending { background: rgba(232,119,26,0.12); color: var(--orange); }
.earn-status-ok { background: rgba(46,125,50,0.12); color: #2e7d32; }

/* ── Detail overlay (modal) ── */
.earn-overlay {
  position: fixed; inset: 0; background: rgba(10,22,40,0.55);
  z-index: 1000; align-items: flex-start; justify-content: center;
  padding: 40px 24px; overflow-y: auto;
}
.earn-detail-panel {
  background: var(--white); border-radius: 10px; max-width: 920px;
  width: 100%; padding: 32px 36px; position: relative;
  box-shadow: 0 24px 64px rgba(0,0,0,0.3);
}
.earn-close {
  position: absolute; top: 16px; right: 18px;
  background: none; border: none; font-size: 28px; line-height: 1;
  color: var(--muted); cursor: pointer; padding: 4px 10px;
  transition: color 0.15s;
}
.earn-close:hover { color: var(--navy); }

#earn-detail-content h2 {
  font-family: var(--font-display); font-size: 1.85rem; font-weight: 600;
  color: var(--navy); margin: 0 0 6px; padding-right: 40px;
}
.earn-ticker-lg {
  font-family: var(--font-mono); font-size: 0.85rem; font-weight: 600;
  color: var(--orange); letter-spacing: 0.04em; margin-left: 8px;
  vertical-align: middle;
}
.earn-detail-meta {
  font-size: 0.78rem; color: var(--muted); font-family: var(--font-body);
  margin-bottom: 12px; letter-spacing: 0.15px;
}

/* Detail P&L table (estimates + actuals) */
.earn-detail-table {
  width: 100%; border-collapse: collapse; margin-top: 18px;
  font-family: var(--font-body); font-size: 0.85rem;
}
.earn-detail-table thead { background: var(--cream); }
.earn-detail-table th {
  padding: 10px 14px; text-align: right; font-size: 0.7rem;
  font-weight: 700; color: var(--muted); text-transform: uppercase;
  letter-spacing: 0.5px; border-bottom: 1px solid var(--border);
}
.earn-detail-table th:first-child { text-align: left; }
.earn-detail-table th.earn-est-col { color: var(--orange); }
.earn-detail-table td {
  padding: 11px 14px; font-family: var(--font-mono); font-size: 0.82rem;
  text-align: right; border-bottom: 1px solid rgba(0,0,0,0.04);
}
.earn-detail-table td.earn-field-label {
  text-align: left; color: var(--muted); font-family: var(--font-body);
  font-weight: 500; font-size: 0.78rem;
}
.earn-detail-table tbody tr:last-child td { border-bottom: none; }

.earn-yoy {
  margin-top: 10px; padding: 10px 14px; background: var(--cream);
  border-radius: 4px; font-size: 0.78rem; color: var(--muted);
  font-family: var(--font-body); border-left: 3px solid var(--orange);
}

.earn-sub-title {
  font-family: var(--font-title); font-size: 1.15rem; font-weight: 600;
  color: var(--navy); margin: 28px 0 12px;
  padding-left: 12px; border-left: 3px solid var(--orange);
  line-height: 1.2;
}

/* TDnet vs PSA comparison block in detail view */
.earn-comp-block {
  background: var(--cream); border: 1px solid var(--border);
  border-radius: 6px; padding: 16px 18px; margin-bottom: 12px;
}
.earn-comp-header {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-bottom: 10px; font-family: var(--font-body); font-size: 0.82rem;
  font-weight: 500; color: var(--navy);
}
.earn-comp-date { color: var(--muted); font-size: 0.72rem; margin-left: auto; }
.earn-comp-block .earn-btn { margin-top: 12px; }

/* Company guidance */
.earn-guidance {
  padding: 8px 12px; background: var(--cream); border-radius: 4px;
  margin-bottom: 6px; font-family: var(--font-body); font-size: 0.82rem;
  color: var(--text); border-left: 3px solid var(--orange);
}
.earn-guidance-src {
  color: var(--muted); font-size: 0.7rem; margin-left: 8px; font-style: italic;
}

.app-main { flex: 1; padding: 20px 28px; max-width: 1680px; width: 100%; margin: 0 auto; }

/* ── Tab Content ───────────────────────── */
.tab-content { display: none; }
.tab-content.active { display: block; }
.tab-placeholder {
  text-align: center; padding: 80px 24px; color: var(--muted);
}
.tab-placeholder h2 {
  font-family: var(--font-display); font-size: 24px; font-weight: 600;
  color: var(--navy); margin-bottom: 8px;
}
.tab-placeholder p { font-size: 14px; }

/* ══════════════════════════════════════════
   FINANCE TABS (Revenue, Invoices, Commissions)
   ══════════════════════════════════════════ */
.fin-kpi-row {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; margin-bottom: 20px;
}
.fin-kpi-card {
  background: var(--white); border: 1px solid var(--border); border-radius: 10px;
  padding: 16px; text-align: center;
}
.fin-kpi-value {
  font-family: var(--font-mono); font-size: 22px; font-weight: 500;
  color: var(--navy); line-height: 1.2;
}
.fin-kpi-label {
  font-size: 11px; color: var(--muted); text-transform: uppercase;
  letter-spacing: 0.5px; margin-top: 2px;
}
.fin-kpi-sub { font-size: 11px; color: var(--muted); margin-top: 2px; }
.fin-kpi-card.accent-orange .fin-kpi-value { color: var(--orange); }
.fin-kpi-card.accent-green .fin-kpi-value { color: var(--green); }
.fin-kpi-card.accent-red .fin-kpi-value { color: var(--red); }

.fin-chart-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 20px; }
.fin-chart-card {
  background: var(--white); border: 1px solid var(--border); border-radius: 10px; padding: 16px;
}
.fin-chart-title {
  font-family: var(--font-title); font-size: 15px; font-weight: 600;
  color: var(--navy); margin-bottom: 10px;
}
.fin-chart-grid { align-items: stretch; }
.fin-chart-card { display: flex; flex-direction: column; }
.fin-chart-wrap { position: relative; flex: 1; min-height: 340px; }

.fin-toolbar { display: flex; gap: 10px; align-items: center; margin-bottom: 16px; flex-wrap: wrap; }
.fin-year-pills { display: flex; gap: 4px; flex-wrap: wrap; }
.fin-year-pill {
  padding: 4px 12px; border: 1px solid var(--border); border-radius: 16px;
  background: var(--white); font-family: var(--font-mono); font-size: 12px;
  cursor: pointer; transition: all 0.15s;
}
.fin-year-pill:hover { border-color: var(--navy); }
.fin-year-pill.active { background: var(--navy); color: var(--white); border-color: var(--navy); }

.fin-table-card {
  background: var(--white); border: 1px solid var(--border); border-radius: 10px; overflow: hidden;
}
.fin-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.fin-table th {
  padding: 10px 12px; text-align: left; font-size: 11px; font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted);
  background: var(--cream); border-bottom: 1px solid var(--border);
}
.fin-table td { padding: 8px 12px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.fin-table tr:hover { background: var(--cream); }
.fin-table-sticky thead th { position: sticky; top: 0; z-index: 1; background: var(--cream); }
.fin-table th.fin-num, .fin-table td.fin-num, .fin-num { text-align: right; font-family: var(--font-mono); font-size: 12px; }
.fin-mono { font-family: var(--font-mono); font-size: 12px; }
.cf-subtab { background: none; border: none; padding: 10px 20px; font-family: var(--font-body); font-size: 12px; font-weight: 600; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.2s; letter-spacing: 0.03em; }
.cf-subtab:hover { color: var(--text); }
.cf-subtab.active { color: var(--navy); border-bottom-color: var(--orange); }
.cf-panel, .rev-panel, .adm-panel { display: none; }
.cf-panel.active, .rev-panel.active, .adm-panel.active { display: block; }

.fin-badge {
  display: inline-block; padding: 2px 10px; border-radius: 10px;
  font-size: 11px; font-weight: 600; cursor: pointer; user-select: none;
}
.fin-badge-paid { background: #e8f5e9; color: #2e7d32; }
.fin-badge-unpaid { background: #fbe9e7; color: #c62828; }

.fin-btn-primary {
  padding: 7px 16px; border: none; border-radius: 6px;
  background: var(--navy); color: var(--white); font-size: 13px;
  font-weight: 500; cursor: pointer; transition: background 0.15s;
}
.fin-btn-primary:hover { background: var(--orange); }
.fin-btn-secondary {
  padding: 7px 16px; border: 1px solid var(--border); border-radius: 6px;
  background: var(--white); color: var(--text); font-size: 13px;
  cursor: pointer;
}
.fin-btn-sm {
  padding: 3px 10px; border: 1px solid var(--border); border-radius: 4px;
  background: var(--white); font-size: 11px; cursor: pointer;
}
.fin-btn-sm:hover { border-color: var(--navy); }
.fin-btn-danger { color: var(--red); border-color: var(--red); }
.fin-btn-danger:hover { background: var(--red); color: var(--white); }

.fin-input {
  width: 100%; padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; font-family: var(--font-body); background: var(--white);
}
.fin-input:focus { outline: none; border-color: var(--navy); }

.fin-pagination {
  display: flex; justify-content: center; align-items: center; gap: 16px;
  padding: 12px 16px; border-top: 1px solid var(--border);
}
.fin-page-nav {
  padding: 6px 14px; border: 1px solid var(--border); border-radius: 6px;
  background: var(--white); font-size: 13px; cursor: pointer; font-family: var(--font-body);
  transition: all 0.15s;
}
.fin-page-nav:hover:not([disabled]) { background: var(--navy); color: var(--white); border-color: var(--navy); }
.fin-page-nav[disabled] { opacity: 0.35; cursor: default; }
.fin-page-info { font-size: 13px; color: var(--muted); font-family: var(--font-mono); }

/* Modal */
.fin-modal {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(10,22,40,0.5); z-index: 1000;
  display: flex; align-items: center; justify-content: center;
}
.fin-modal-content {
  background: var(--white); border-radius: 12px; width: 600px; max-width: 95vw;
  max-height: 90vh; overflow-y: auto; box-shadow: 0 8px 32px rgba(0,0,0,0.2);
}
.fin-modal-header {
  display: flex; justify-content: space-between; align-items: center;
  padding: 16px 20px; border-bottom: 1px solid var(--border);
}
.fin-modal-header h3 { font-family: var(--font-title); font-size: 18px; font-weight: 600; color: var(--navy); }
.fin-modal-close {
  background: none; border: none; font-size: 24px; cursor: pointer; color: var(--muted);
}
.fin-modal-body { padding: 20px; }
.fin-modal-footer {
  display: flex; justify-content: flex-end; gap: 10px;
  padding: 14px 20px; border-top: 1px solid var(--border);
}
.fin-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.fin-form-grid label { font-size: 12px; font-weight: 500; color: var(--muted); }
.fin-form-grid label input, .fin-form-grid label select { margin-top: 4px; }
.fin-check-label { display: flex; align-items: center; gap: 8px; font-size: 13px; }

.fin-splits-section { border-top: 1px solid var(--border); padding-top: 14px; }
.fin-split-row { display: flex; gap: 8px; margin-bottom: 6px; align-items: center; }
.fin-split-sp { width: 100px; }
.fin-split-pct { width: 80px; }

#inv-client-search {
  padding: 6px 12px; border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; width: 180px;
}
#inv-year-filter, #inv-sp-filter, #inv-paid-filter, #comm-sp {
  padding: 6px 12px; border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; background: var(--white);
}

@media (max-width: 900px) {
  .fin-kpi-row { grid-template-columns: repeat(2, 1fr); }
  .fin-chart-grid { grid-template-columns: 1fr; }
  .fin-form-grid { grid-template-columns: 1fr; }
}

/* ══════════════════════════════════════════
   ANALYSTS TAB
   ══════════════════════════════════════════ */

/* Analyst tabs */
.an-tabs { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 16px; }
.an-tab {
  padding: 8px 16px; border: 1px solid var(--border); border-radius: 8px;
  background: var(--white); color: var(--text); font-family: var(--font-body);
  font-size: 13px; font-weight: 500; cursor: pointer; transition: all 0.2s;
}
.an-tab:hover { border-color: var(--orange); }
.an-tab.active { background: var(--navy); color: var(--white); border-color: var(--navy); }
.an-tab-count {
  font-family: var(--font-mono); font-size: 11px; font-weight: 400;
  opacity: 0.6; margin-left: 4px;
}
.an-tab.active .an-tab-count { opacity: 0.8; }

/* Info bar */
.an-info-bar {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  padding: 12px 16px; background: var(--white); border: 1px solid var(--border);
  border-radius: 10px; margin-bottom: 16px;
}
.an-info-name {
  font-family: var(--font-title); font-size: 20px; font-weight: 600; color: var(--navy);
}
.an-info-stat { font-size: 13px; color: var(--muted); }
.an-info-badge {
  font-family: var(--font-mono); font-size: 13px; font-weight: 600;
  padding: 3px 10px; border-radius: 6px;
}
.an-info-badge.up { background: rgba(39,174,96,0.1); color: var(--green); }
.an-info-badge.down { background: rgba(192,57,43,0.1); color: var(--red); }
.an-info-badge.flat { background: rgba(107,107,107,0.1); color: var(--muted); }

/* Performance table */
.an-table-card {
  background: var(--white); border: 1px solid var(--border); border-radius: 10px;
  overflow: hidden;
}
.an-table-header {
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 16px; border-bottom: 1px solid var(--border);
}
.an-table-title {
  font-family: var(--font-title); font-size: 16px; font-weight: 600; color: var(--navy);
}
#an-prices-updated { font-size: 11px; color: var(--muted); font-family: var(--font-mono); }

.an-table {
  width: 100%; border-collapse: collapse; font-size: 13px;
}
.an-table th {
  padding: 8px 10px; text-align: left; font-size: 11px; font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted);
  border-bottom: 1px solid var(--border); cursor: pointer; white-space: nowrap;
  user-select: none;
}
.an-table th:hover { color: var(--navy); }
.an-sort { font-size: 8px; opacity: 0.4; margin-left: 2px; }
th.sorted-asc .an-sort, th.sorted-desc .an-sort { opacity: 1; color: var(--orange); }

.an-table td { padding: 7px 10px; border-bottom: 1px solid rgba(222,218,211,0.5); white-space: nowrap; }
.an-table tr:hover { background: rgba(232,119,26,0.04); }
.an-table tr.an-fl-row td:first-child { font-weight: 600; }

.an-num { text-align: right; font-family: var(--font-mono); font-size: 12px; }
.an-up { color: var(--green); font-family: var(--font-mono); font-size: 12px; }
.an-down { color: var(--red); font-family: var(--font-mono); font-size: 12px; }
.an-flat { color: var(--muted); font-family: var(--font-mono); font-size: 12px; }

.an-stock-name { font-weight: 500; margin-right: 6px; }
.an-stock-ticker { font-family: var(--font-mono); font-size: 11px; color: var(--muted); }
.an-fl-dot {
  display: inline-block; width: 6px; height: 6px; background: var(--orange);
  border-radius: 50%; margin-right: 6px; vertical-align: middle;
}

/* 52W Range bar */
.an-range-lo, .an-range-hi {
  font-family: var(--font-mono); font-size: 10px; color: var(--muted);
}
.an-range-bar {
  display: inline-block; width: 40px; height: 4px; background: rgba(222,218,211,0.6);
  border-radius: 2px; position: relative; vertical-align: middle; margin: 0 3px;
}
.an-range-marker {
  position: absolute; top: -3px; width: 3px; height: 10px;
  background: var(--navy); border-radius: 1px;
}

/* Global Peers section */
.an-peers-wrap { margin-top: 20px; }
.an-peers-divider {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 16px; background: var(--cream); border: 1px solid var(--border);
  border-radius: 10px 10px 0 0; font-family: var(--font-title);
  font-size: 15px; font-weight: 600; color: var(--navy);
}
.an-peers-edit-btn {
  font-size: 11px; padding: 4px 10px; border: 1px solid var(--border);
  border-radius: 4px; background: var(--white); cursor: pointer;
  font-family: var(--font-body); color: var(--muted);
}
.an-peers-edit-btn:hover { border-color: var(--orange); color: var(--orange); }
.an-peers-wrap .an-table { border: 1px solid var(--border); border-top: none; border-radius: 0 0 10px 10px; }
.an-peer-row { background: rgba(249,247,243,0.5); }
.an-peer-badge {
  font-size: 9px; font-weight: 700; letter-spacing: 0.5px;
  padding: 2px 6px; border-radius: 3px; margin-left: 6px;
  background: rgba(107,107,107,0.1); color: var(--muted); vertical-align: middle;
}

/* Peer edit panel */
.an-peer-edit-panel {
  padding: 12px 16px; background: var(--cream); border: 1px solid var(--border);
  border-top: none;
}
.an-peer-list-item {
  display: flex; align-items: center; gap: 8px; padding: 6px 0;
  border-bottom: 1px solid rgba(222,218,211,0.4); font-size: 13px;
}
.an-peer-list-ticker { font-family: var(--font-mono); font-weight: 600; min-width: 70px; }
.an-peer-list-name { flex: 1; }
.an-peer-list-sector { color: var(--muted); font-size: 12px; }
.an-peer-list-rm {
  border: none; background: none; color: var(--red); cursor: pointer;
  font-size: 18px; line-height: 1; padding: 0 4px;
}
.an-peer-add-wrap { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
.an-peer-add-input {
  flex: 1; padding: 7px 12px; border: 1px solid var(--border); border-radius: 6px;
  font-family: var(--font-body); font-size: 13px;
}
.an-peer-add-status { font-size: 11px; }
.an-peer-save-bar { display: flex; gap: 8px; margin-top: 10px; }
.an-save-btn {
  padding: 7px 16px; border: none; border-radius: 6px; background: var(--navy);
  color: var(--white); font-family: var(--font-body); font-size: 13px;
  font-weight: 600; cursor: pointer;
}
.an-save-btn:hover { background: var(--header); }
.an-cancel-btn {
  padding: 7px 16px; border: 1px solid var(--border); border-radius: 6px;
  background: var(--white); color: var(--text); font-family: var(--font-body);
  font-size: 13px; cursor: pointer;
}

/* ── Toast ─────────────────────────────── */
#toast {
  position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);
  background: var(--navy); color: var(--white); padding: 10px 24px;
  border-radius: 8px; font-size: 13px; font-weight: 500;
  opacity: 0; transition: opacity 0.3s; pointer-events: none; z-index: 9999;
}
#toast.show { opacity: 1; }

/* ══════════════════════════════════════════
   HOMEPAGE — role-tailored dashboard
   ══════════════════════════════════════════ */

#home-screen { display: none; }

.home-welcome { margin-bottom: 24px; }
.home-greeting {
  font-family: var(--font-display); font-size: 28px; font-weight: 600;
  color: var(--navy); margin-bottom: 2px;
}
.home-date { font-size: 13px; color: var(--muted); }

/* Section groups */
.hp-section { margin-bottom: 28px; }
.hp-section-label {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: 1px; color: var(--muted); margin-bottom: 12px;
  padding-bottom: 6px; border-bottom: 1px solid var(--border);
}

/* Card grid */
.hp-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 16px;
}

/* Cards */
.hp-card {
  background: var(--cream); border: 1px solid var(--border); border-radius: 10px;
  padding: 18px 20px; transition: border-color 0.2s;
}
.hp-card:hover { border-color: #c4c0b9; }
.hp-card-wide { grid-column: 1 / -1; margin-top: 12px; }
.hp-card-title {
  font-family: var(--font-title); font-size: 16px; font-weight: 600;
  color: var(--navy); margin-bottom: 10px;
}

/* Percentage colors */
.pct-pos { color: var(--green); font-weight: 600; }
.pct-neg { color: var(--red); font-weight: 600; }
.pct-flat { color: var(--muted); }

/* Stock rows */
.hp-stock-summary {
  display: flex; gap: 12px; align-items: center; margin-bottom: 10px; flex-wrap: wrap;
}
.hp-stat-inline { font-family: var(--font-mono); font-size: 14px; }
.hp-stat-muted { font-size: 12px; color: var(--muted); }

.hp-stock-label {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px;
  color: var(--muted); margin: 8px 0 4px;
}
.hp-stock-rows { display: flex; flex-direction: column; gap: 2px; }
.hp-stock-row {
  display: flex; align-items: center; gap: 8px; padding: 3px 0;
  font-size: 13px; line-height: 1.4;
}
.hp-stock-ticker {
  font-family: var(--font-mono); font-weight: 500; min-width: 44px; color: var(--navy);
}
.hp-stock-name { flex: 1; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hp-stock-chg { font-family: var(--font-mono); font-size: 13px; white-space: nowrap; }
.hp-fl-dot {
  display: inline-block; width: 6px; height: 6px; border-radius: 50%;
  background: var(--orange); flex-shrink: 0;
}

/* Mini table (team snapshot) */
.hp-mini-table { width: 100%; font-size: 13px; border-collapse: collapse; }
.hp-mini-table td { padding: 4px 6px; }
.hp-team-name { font-weight: 600; color: var(--navy); }
.hp-team-count { color: var(--muted); font-size: 12px; }
.hp-team-avg { font-family: var(--font-mono); text-align: right; white-space: nowrap; }

/* Events */
.hp-event-summary { font-size: 13px; margin-bottom: 8px; }
.hp-event-count { font-family: var(--font-mono); font-size: 20px; font-weight: 600; color: var(--navy); }
.hp-event-list { display: flex; flex-direction: column; gap: 3px; }
.hp-event-row { display: flex; gap: 8px; font-size: 13px; padding: 3px 0; }
.hp-ev-high { border-left: 3px solid var(--orange); padding-left: 6px; }
.hp-ev-ticker { font-family: var(--font-mono); font-weight: 500; min-width: 44px; color: var(--navy); }
.hp-ev-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hp-ev-type { font-size: 11px; text-transform: uppercase; color: var(--muted); letter-spacing: 0.3px; }

/* Briefing */
.hp-briefing-pub { font-size: 13px; color: var(--green); font-weight: 500; }
.hp-briefing-count { font-size: 12px; color: var(--muted); margin-top: 4px; }
.hp-briefing-pending { font-size: 13px; color: var(--muted); font-style: italic; }

/* KPIs row */
.hp-kpi-row { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.hp-kpi { text-align: center; flex: 1; min-width: 60px; }
.hp-kpi-val { font-family: var(--font-mono); font-size: 20px; font-weight: 500; color: var(--navy); }
.hp-kpi-lbl { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.3px; }
.hp-kpi-warn .hp-kpi-val { color: var(--red); }
.hp-kpi-strong .hp-kpi-val { color: var(--navy); font-weight: 600; }
.hp-kpi-muted .hp-kpi-val { color: var(--muted); font-weight: 500; }
.hp-kpi-split { align-items: center; }
.hp-kpi-divider { width: 1px; align-self: stretch; background: var(--border); margin: 0 6px; }
.hp-stale-tag { font-size: 9px; padding: 1px 5px; background: var(--cream); border: 1px solid var(--border); border-radius: 8px; color: var(--muted); letter-spacing: 0.04em; text-transform: uppercase; }

/* Stale clients */
.hp-stale-label { font-size: 11px; font-weight: 600; color: var(--muted); text-transform: uppercase; margin-bottom: 4px; }
.hp-stale-list { display: flex; flex-direction: column; gap: 2px; }
.hp-stale-item { font-size: 13px; padding: 2px 0; }
.hp-stale-days { color: var(--red); font-family: var(--font-mono); font-size: 12px; margin-left: 4px; }

/* Activity counts */
.hp-activity-counts { font-size: 13px; color: var(--muted); margin-bottom: 8px; }
.hp-ix-row { display: flex; gap: 8px; font-size: 13px; padding: 4px 0; border-bottom: 1px solid var(--border); }
.hp-ix-row:last-child { border-bottom: none; }
.hp-ix-type { font-weight: 600; color: var(--navy); min-width: 90px; }
.hp-ix-client { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hp-ix-date { color: var(--muted); font-size: 12px; white-space: nowrap; }

/* Quick Log form */
.hp-ql-form { display: flex; flex-direction: column; gap: 10px; }
.hp-ql-row { display: flex; gap: 12px; flex-wrap: wrap; }
.hp-ql-field { display: flex; flex-direction: column; gap: 3px; }
.hp-ql-field label { font-size: 11px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.3px; }
.hp-ql-field input, .hp-ql-field select, .hp-ql-field textarea {
  padding: 8px 10px; border: 1px solid var(--border); border-radius: 6px;
  font-family: var(--font-body); font-size: 13px; background: var(--white);
  color: var(--text); min-height: 36px;
}
.hp-ql-field textarea { resize: vertical; }
.hp-ql-client-wrap { flex: 1; min-width: 200px; position: relative; }
.hp-ql-dropdown {
  display: none; position: absolute; top: 100%; left: 0; right: 0;
  background: var(--white); border: 1px solid var(--border); border-radius: 6px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 50; max-height: 200px; overflow-y: auto;
}
.hp-ql-dd-item {
  padding: 8px 10px; font-size: 13px; cursor: pointer; transition: background 0.1s;
}
.hp-ql-dd-item:hover { background: var(--cream); }
.cb-dd-item { padding: 6px 10px; cursor: pointer; transition: background 0.1s; display: flex; align-items: baseline; justify-content: space-between; }
.cb-dd-item:hover { background: var(--cream); }
.hp-ql-actions { display: flex; justify-content: flex-end; }
.hp-ql-save {
  padding: 8px 24px; background: var(--navy); color: var(--white);
  border: none; border-radius: 6px; font-family: var(--font-body);
  font-size: 13px; font-weight: 600; cursor: pointer; transition: background 0.2s;
}
.hp-ql-save:hover { background: var(--orange); }

/* Revenue */
.hp-rev-header { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.hp-rev-total { font-family: var(--font-mono); font-size: 24px; font-weight: 600; color: var(--navy); }
.hp-rev-prev { font-size: 12px; color: var(--muted); }
.hp-rev-sp { margin-top: 10px; }
.hp-rev-sp-row { display: flex; justify-content: space-between; font-size: 13px; padding: 3px 0; border-bottom: 1px solid var(--border); }
.hp-rev-sp-row:last-child { border-bottom: none; }
.hp-rev-sp-amt { font-family: var(--font-mono); font-weight: 500; }

/* Empty state */
.hp-empty { font-size: 13px; color: var(--muted); padding: 8px 0; }

/* ══════════════════════════════════════════
   CLIENTS
   ══════════════════════════════════════════ */

.cli-kpi-row {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px;
  margin-bottom: 24px;
}
.cli-kpi-card {
  background: var(--white); border: 1px solid var(--border); border-radius: 10px;
  padding: 16px; text-align: center;
}
.cli-kpi-value {
  font-family: var(--font-mono); font-size: 24px; font-weight: 500;
  color: var(--navy); line-height: 1.2;
}
.cli-kpi-label {
  font-size: 11px; color: var(--muted); text-transform: uppercase;
  letter-spacing: 0.5px; margin-top: 2px;
}

.cli-toolbar {
  display: flex; gap: 12px; align-items: center; margin-bottom: 16px; flex-wrap: wrap;
}
.cli-toolbar input, .cli-toolbar select {
  padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px;
  font-family: var(--font-body); font-size: 13px; background: var(--white);
  color: var(--text); min-height: 40px;
}
.cli-toolbar input { flex: 1; min-width: 200px; }
.cli-toolbar select { min-width: 140px; }
.cli-count {
  font-size: 13px; color: var(--muted); margin-left: auto; white-space: nowrap;
}

.cli-btn {
  padding: 8px 16px; border: none; border-radius: 6px;
  font-family: var(--font-body); font-size: 13px; font-weight: 600;
  cursor: pointer; transition: all 0.2s; min-height: 40px;
}
.cli-btn-primary {
  background: var(--navy); color: var(--white);
}
.cli-btn-primary:hover { background: var(--header); }
.cli-btn-secondary {
  background: var(--cream); color: var(--navy); border: 1px solid var(--border);
}
.cli-btn-secondary:hover { border-color: var(--orange); }

.cli-table-wrap {
  overflow-x: auto; -webkit-overflow-scrolling: touch;
}
.cli-table {
  width: 100%; border-collapse: collapse; background: var(--white);
  border: 1px solid var(--border); border-radius: 10px; overflow: hidden;
}
.cli-table th {
  padding: 10px 14px; text-align: left; font-size: 11px;
  text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted);
  background: var(--cream); border-bottom: 1px solid var(--border);
  white-space: nowrap;
}
.cli-table td {
  padding: 10px 14px; font-size: 13px; border-bottom: 1px solid var(--border);
  vertical-align: middle;
}
.cli-row { cursor: pointer; transition: background 0.15s; }
.cli-row:hover { background: var(--cream); }
.cli-cell-name { font-weight: 600; color: var(--navy); }

.cli-sort-btn {
  background: none; border: none; cursor: pointer; color: inherit;
  font: inherit; text-transform: inherit; letter-spacing: inherit;
}
.cli-sort-btn::after { content: ' \2195'; opacity: 0.3; }
.cli-sort-btn.active::after { opacity: 1; }
.cli-sort-btn[data-dir="asc"]::after { content: ' \2191'; }
.cli-sort-btn[data-dir="desc"]::after { content: ' \2193'; }

.cli-badge {
  display: inline-block; padding: 2px 10px; border-radius: 12px;
  font-size: 11px; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.3px;
}
.cli-tier-core { background: #e8f5e9; color: #2e7d32; }
.cli-tier-prospect { background: #fff3e0; color: #e65100; }
.cli-tier-occasional { background: #f5f5f5; color: #757575; }
.cli-badge-primary { background: #e3f2fd; color: #1565c0; font-size: 10px; margin-left: 6px; }

.cli-sector-tag {
  display: inline-block; padding: 1px 7px; border-radius: 10px;
  font-size: 10px; font-weight: 600; background: #f3e8ff; color: #7c3aed;
  margin: 1px 2px; vertical-align: middle;
}
.cli-sector-overflow { background: #f5f5f5; color: #757575; cursor: help; }
.cli-sectors-cell { max-width: 320px; overflow: hidden; }
.cli-sectors-cell .cli-sector-tag {
  white-space: nowrap; max-width: 220px; overflow: hidden;
  text-overflow: ellipsis;
}
.cli-contact-filter-bar {
  display: flex; gap: 8px; margin-bottom: 10px; align-items: center; flex-wrap: wrap;
}
.cli-contact-filter-bar select, .cli-contact-filter-bar input {
  padding: 5px 10px; border: 1px solid var(--border); border-radius: 6px;
  font-family: var(--font-body); font-size: 12px; min-height: 32px;
}
.cli-contact-filter-bar select { max-width: 180px; }

/* ── Client Detail / 360 ──────────────── */

#cli-detail-view { display: none; }

.cli-detail-header {
  display: flex; align-items: center; gap: 16px; margin-bottom: 24px; flex-wrap: wrap;
}
.cli-back-btn {
  background: none; border: none; cursor: pointer; font-size: 18px;
  color: var(--muted); padding: 8px; min-width: 44px; min-height: 44px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 6px; transition: color 0.2s;
}
.cli-back-btn:hover { color: var(--navy); }
.cli-detail-title {
  font-family: var(--font-display); font-size: 28px; font-weight: 600; color: var(--navy);
}

.cli-detail-grid {
  display: flex; flex-direction: column; gap: 20px;
}

.cli-detail-panel {
  background: var(--white); border: 1px solid var(--border); border-radius: 10px;
  padding: 20px;
}
.cli-panel-title {
  font-family: var(--font-title); font-size: 18px; font-weight: 600;
  color: var(--navy); margin-bottom: 12px;
  display: flex; align-items: center; justify-content: space-between;
}

.cli-meta-strip {
  display: flex; flex-wrap: wrap; align-items: center; gap: 0; padding: 6px 0;
  border-bottom: 1px solid var(--border);
}
.cli-meta-pill {
  display: inline-flex; align-items: baseline; gap: 5px; padding: 3px 14px;
  font-size: 12px; white-space: nowrap; border-right: 1px solid var(--border);
}
.cli-meta-pill:last-child { border-right: none; }
.cli-meta-pill-label { color: var(--muted); font-weight: 600; font-size: 10px; text-transform: uppercase; letter-spacing: 0.3px; }
.cli-meta-pill-val { color: var(--navy); font-weight: 500; }

.cli-contact-inactive { opacity: 0.5; }
.cli-contact-actions { white-space: nowrap; }
.cli-contact-row { cursor: pointer; }
.cli-contact-row:hover { background: var(--cream); }
.cli-contact-detail-row td { padding: 0 !important; border-top: none !important; }
.cli-contact-detail {
  padding: 14px 20px; background: var(--cream); border-bottom: 1px solid var(--border);
  font-size: 12px;
}
.cli-cd-grid { display: flex; flex-direction: column; gap: 8px; }
.cli-cd-section {
  display: flex; flex-wrap: wrap; gap: 6px 24px;
}
.cli-cd-item { display: flex; align-items: baseline; gap: 6px; }
.cli-cd-item .cd-label { white-space: nowrap; }
.cli-cd-notes { border-top: 1px solid var(--border); padding-top: 8px; margin-top: 4px; }
.cli-contact-detail .cd-label { color: var(--muted); font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.3px; }
.cli-contact-detail .cd-val { color: var(--text); word-break: break-word; }
.cli-action-btn {
  padding: 1px 6px; border: 1px solid var(--border); border-radius: 4px;
  background: var(--white); color: var(--text); font-size: 10px;
  cursor: pointer; transition: all 0.15s; min-height: 22px;
}
.cli-action-btn:hover { border-color: var(--orange); color: var(--orange); }
.cli-action-deactivate:hover { border-color: var(--red); color: var(--red); }
.cli-action-save { background: var(--navy); color: var(--white); border-color: var(--navy); }

.cli-inline-input {
  padding: 4px 8px; border: 1px solid var(--border); border-radius: 4px;
  font-family: var(--font-body); font-size: 13px; width: 100%;
  margin-bottom: 4px;
}
.cli-sp-select {
  padding: 3px 6px; border: 1px solid var(--border); border-radius: 4px;
  font-family: var(--font-body); font-size: 12px; background: var(--white);
  color: var(--text); max-width: 120px; cursor: pointer;
}
.cli-sp-select:focus { border-color: var(--orange); outline: none; }

/* ── Add forms ─────────────────────────── */

.cli-add-form {
  display: none; background: var(--white); border: 1px solid var(--border);
  border-radius: 10px; padding: 20px; margin-bottom: 16px;
}
.cli-add-form h3 {
  font-family: var(--font-title); font-size: 16px; font-weight: 600;
  color: var(--navy); margin-bottom: 12px;
}
.cli-form-row {
  display: flex; gap: 12px; margin-bottom: 10px; flex-wrap: wrap;
}
.cli-form-row input, .cli-form-row select, .cli-form-row textarea {
  padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px;
  font-family: var(--font-body); font-size: 13px; flex: 1; min-width: 150px;
  min-height: 40px;
}
.cli-form-row textarea { min-height: 60px; resize: vertical; }

/* ── Edit Meta Modal ──────────────────── */

.cli-modal {
  display: none; position: fixed; inset: 0; z-index: 500;
  background: rgba(0,0,0,0.4); align-items: center; justify-content: center;
}
.cli-modal-content {
  background: var(--white); border-radius: 12px; padding: 32px;
  width: 480px; max-width: 90vw; max-height: 80vh; overflow-y: auto;
  box-shadow: 0 8px 32px rgba(0,0,0,0.2);
}
.cli-modal-content h3 {
  font-family: var(--font-title); font-size: 20px; font-weight: 600;
  color: var(--navy); margin-bottom: 16px;
}
.cli-modal-field { margin-bottom: 12px; }
.cli-modal-field label {
  display: block; font-size: 12px; font-weight: 600; color: var(--muted);
  margin-bottom: 4px; text-transform: uppercase; letter-spacing: 0.5px;
}
.cli-modal-field input, .cli-modal-field select, .cli-modal-field textarea {
  width: 100%; padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px;
  font-family: var(--font-body); font-size: 13px;
}
.cli-modal-field textarea { min-height: 80px; resize: vertical; }
.cli-modal-actions { display: flex; gap: 12px; margin-top: 16px; }

/* ── Placeholder panels ───────────────── */
.cli-placeholder-panel {
  background: var(--cream); border: 1px dashed var(--border); border-radius: 10px;
  padding: 24px; text-align: center; color: var(--muted); font-size: 13px;
  margin-top: 16px;
}

/* ══════════════════════════════════════════
   INTERACTIONS
   ══════════════════════════════════════════ */

/* Sub-tabs */
.ix-subtabs { display: flex; gap: 0; border-bottom: 2px solid var(--border); margin-bottom: 20px; }
.ix-subtab { background: none; border: none; padding: 10px 20px; font-family: var(--font-body); font-size: 12px; font-weight: 600; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.2s; letter-spacing: 0.03em; }
.ix-subtab:hover { color: var(--text); }
.ix-subtab.active { color: var(--navy); border-bottom-color: var(--orange); }
.ix-panel { display: none; }
.ix-panel.active { display: block; }

/* Wizard step indicator */
.wiz-steps { display: flex; gap: 0; margin-bottom: 24px; background: var(--cream); border-radius: 10px; padding: 4px; }
.wiz-step { flex: 1; text-align: center; padding: 10px 8px; font-size: 12px; font-weight: 600; color: var(--muted); border-radius: 8px; transition: all 0.2s; cursor: default; }
.wiz-step.active { background: var(--navy); color: var(--white); }
.wiz-step.done { color: var(--navy); }
.wiz-step-num { display: inline-block; width: 20px; height: 20px; line-height: 20px; border-radius: 50%; background: var(--border); color: var(--muted); font-size: 11px; margin-right: 4px; text-align: center; }
.wiz-step.active .wiz-step-num { background: var(--orange); color: var(--white); }
.wiz-step.done .wiz-step-num { background: var(--green); color: var(--white); }

/* Hide unchecked toggle — when active, contact labels with data-checked="0" are hidden */
body.wiz-hide-unchecked .wiz-gen-contact-label[data-checked="0"] { display: none; }
#wiz-hide-toggle.wiz-hide-on { background: var(--orange); color: white; border-color: var(--orange); }

/* Persistent context banner — shown across all wizard steps once a month is loaded */
.wiz-context-banner { background: linear-gradient(180deg, #f4f0e8 0%, var(--cream) 100%); border: 1px solid var(--border); border-left: 4px solid var(--orange); border-radius: 8px; padding: 10px 14px; margin: -10px 0 18px; }
.wiz-context-row { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; font-size: 12px; color: var(--text); }
.wiz-context-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); font-weight: 700; }
.wiz-context-month { font-size: 14px; color: var(--navy); font-weight: 700; }
.wiz-context-sep { color: var(--border); }
.wiz-context-stat b { color: var(--navy); font-family: var(--font-mono, 'JetBrains Mono', monospace); font-weight: 700; }
.wiz-context-firms { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; align-items: center; font-size: 11px; }
.wiz-context-firms-label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; margin-right: 4px; }
.wiz-context-chip { display: inline-block; padding: 2px 8px; background: white; border: 1px solid var(--border); border-radius: 10px; font-size: 11px; color: var(--text); }
.wiz-context-firm-empty { color: var(--muted); font-style: italic; font-size: 11px; }

/* Step-4 institution dropdown — "Logging for {firm}" feedback right under the select */
.wiz-inst-info { margin-top: 6px; padding: 4px 10px; background: rgba(232,119,26,0.08); border-left: 3px solid var(--orange); border-radius: 4px; font-size: 11px; color: var(--text); }
.wiz-inst-info-eye { font-size: 9px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--orange); font-weight: 700; margin-right: 6px; }

/* Upload zone */
.wiz-upload-zone { border: 2px dashed var(--border); border-radius: 12px; padding: 40px 20px; text-align: center; transition: all 0.2s; cursor: pointer; }
.wiz-upload-zone.drag-over { border-color: var(--orange); background: #fff5eb; }

/* Report review */
.wiz-report-section { border: 1px solid var(--border); border-radius: 8px; margin-bottom: 8px; overflow: hidden; }
.wiz-report-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; background: var(--cream); cursor: pointer; font-size: 13px; font-weight: 600; color: var(--navy); }
.wiz-report-header .arrow { transition: transform 0.2s; font-size: 10px; }
.wiz-report-header.open .arrow { transform: rotate(90deg); }
.wiz-report-body { padding: 8px 14px; display: none; }
.wiz-report-header.open + .wiz-report-body { display: block; }
.wiz-report-row { display: flex; align-items: center; gap: 8px; padding: 4px 0; font-size: 12px; border-bottom: 1px solid #f0ede8; }
.wiz-report-row:last-child { border-bottom: none; }
.wiz-report-row input[type=checkbox] { width: 15px; height: 15px; }
.wiz-report-date { color: var(--muted); font-family: var(--font-mono); font-size: 11px; min-width: 80px; }
.wiz-report-title { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wiz-report-badge { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 10px; font-weight: 700; letter-spacing: 0.02em; }
.wiz-badge-daily { background: #e8f5e9; color: #2e7d32; }
.wiz-badge-weekly { background: #e3f2fd; color: #1565c0; }
.wiz-badge-company { background: #fff3e0; color: #e65100; }
.wiz-badge-strategy { background: #f3e5f5; color: #7b1fa2; }
.wiz-badge-other { background: #efebe9; color: #4e342e; }

/* Wizard interaction cards */
.wiz-ix-card { display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: var(--white); border: 1px solid var(--border); border-radius: 8px; margin-bottom: 6px; font-size: 12px; }
.wiz-ix-card .ix-type-badge { font-size: 10px; }
.wiz-ix-card-remove { background: none; border: none; color: var(--red); cursor: pointer; font-size: 16px; margin-left: auto; }

/* Gen firm checkboxes */
.wiz-firm-row { display: flex; align-items: center; gap: 8px; padding: 6px 0; font-size: 13px; }
.wiz-firm-row input[type=checkbox] { width: 16px; height: 16px; }

.ix-kpi-row {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px;
  margin-bottom: 24px;
}
.ix-kpi-card {
  background: var(--white); border: 1px solid var(--border); border-radius: 10px;
  padding: 16px; text-align: center;
}
.ix-kpi-value {
  font-family: var(--font-mono); font-size: 24px; font-weight: 500;
  color: var(--navy); line-height: 1.2;
}
.ix-kpi-label {
  font-size: 11px; color: var(--muted); text-transform: uppercase;
  letter-spacing: 0.5px; margin-top: 2px;
}

.ix-toolbar {
  display: flex; gap: 12px; align-items: center; margin-bottom: 16px; flex-wrap: wrap;
}
.ix-toolbar input, .ix-toolbar select {
  padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px;
  font-family: var(--font-body); font-size: 13px; background: var(--white);
  color: var(--text); min-height: 40px;
}
.ix-toolbar select { min-width: 140px; }
.ix-toolbar input[type="date"] { min-width: 130px; }
.ix-count {
  font-size: 13px; color: var(--muted); margin-left: auto; white-space: nowrap;
}

.ix-row { transition: background 0.15s; }
.ix-row:hover { background: var(--cream); }
.ix-cell-firm { font-weight: 600; color: var(--navy); white-space: nowrap; }
.ix-cell-desc { max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ix-actions { white-space: nowrap; }

.ix-type-badge {
  display: inline-block; padding: 2px 8px; border-radius: 10px;
  font-size: 11px; font-weight: 500; white-space: nowrap;
}
.ix-type-meeting { background: #e8f5e9; color: #2e7d32; }
.ix-type-call { background: #e3f2fd; color: #1565c0; }
.ix-type-written { background: #f3e5f5; color: #7b1fa2; }

.ix-sort-btn {
  background: none; border: none; cursor: pointer; color: inherit;
  font: inherit; text-transform: inherit; letter-spacing: inherit;
}
.ix-sort-btn::after { content: ' \2195'; opacity: 0.3; }
.ix-sort-btn.active::after { opacity: 1; }
.ix-sort-btn[data-dir="asc"]::after { content: ' \2191'; }
.ix-sort-btn[data-dir="desc"]::after { content: ' \2193'; }

/* ── Add / Edit forms ────────────────── */
.ix-add-form {
  display: none; background: var(--white); border: 1px solid var(--border);
  border-radius: 10px; padding: 20px; margin-bottom: 16px;
}
.ix-add-form h3 {
  font-family: var(--font-title); font-size: 16px; font-weight: 600;
  color: var(--navy); margin-bottom: 12px;
}
.ix-form-row {
  display: flex; gap: 12px; margin-bottom: 10px; flex-wrap: wrap;
}
.ix-form-row input, .ix-form-row select, .ix-form-row textarea {
  padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px;
  font-family: var(--font-body); font-size: 13px; flex: 1; min-width: 120px;
  min-height: 40px;
}
.ix-form-row textarea { min-height: 60px; resize: vertical; }
.ix-form-section {
  margin-bottom: 10px;
}
.ix-form-section-title {
  font-size: 12px; font-weight: 600; color: var(--muted);
  text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 6px;
}
.ix-checkbox {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 13px; margin-right: 12px; margin-bottom: 4px; cursor: pointer;
}
.ix-checkbox input { width: 16px; height: 16px; cursor: pointer; }

/* ── Edit modal ──────────────────────── */
.ix-modal {
  display: none; position: fixed; inset: 0; z-index: 500;
  background: rgba(0,0,0,0.4); align-items: center; justify-content: center;
}
.ix-modal-content {
  background: var(--white); border-radius: 12px; padding: 32px;
  width: 600px; max-width: 90vw; max-height: 80vh; overflow-y: auto;
  box-shadow: 0 8px 32px rgba(0,0,0,0.2);
}
.ix-modal-content h3 {
  font-family: var(--font-title); font-size: 20px; font-weight: 600;
  color: var(--navy); margin-bottom: 16px;
}

/* ── Export section ──────────────────── */
.ix-export-section {
  background: var(--white); border: 1px solid var(--border); border-radius: 10px;
  padding: 20px; margin-top: 24px;
}
.ix-export-section h3 {
  font-family: var(--font-title); font-size: 16px; font-weight: 600;
  color: var(--navy); margin-bottom: 12px;
}

/* ── Client 360 interactions panel ──── */
#cli-interactions-panel, #cli-holdings-panel {
  background: var(--white); border: 1px solid var(--border); border-radius: 10px;
  padding: 20px; margin-top: 16px;
}

/* KYC / Compliance Panel */
#cli-kyc-panel {
  background: var(--white); border: 1px solid var(--border); border-radius: 10px;
  padding: 20px; margin-top: 16px;
}
.kyc-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.kyc-header h3 { font-family: var(--font-title); font-size: 1.1rem; font-weight: 600; color: var(--navy); margin: 0; }
.kyc-risk-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
.kyc-risk-dot.low { background: #22c55e; }
.kyc-risk-dot.medium { background: #f59e0b; }
.kyc-risk-dot.high { background: #ef4444; }
.kyc-risk-dot.unreviewed { background: #9ca3af; }
.kyc-review-info { font-size: 12px; color: var(--muted); margin-bottom: 14px; }
.kyc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 24px; margin-bottom: 16px; }
.kyc-field-label { font-size: 11px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; }
.kyc-field-value { font-size: 13px; color: var(--text); word-break: break-word; }
.kyc-field-value a { color: var(--orange); text-decoration: none; }
.kyc-field-value a:hover { text-decoration: underline; }
.kyc-pep-warning { color: #ef4444; font-weight: 600; font-size: 13px; margin-bottom: 12px; }
.kyc-dd-list { margin-top: 16px; border-top: 1px solid var(--border); padding-top: 12px; }
.kyc-dd-item { display: flex; justify-content: space-between; align-items: center; padding: 6px 0; border-bottom: 1px solid #f0ede8; font-size: 13px; }
.kyc-dd-item:last-child { border-bottom: none; }

/* KYC Edit Modal */
#cli-kyc-modal .cli-modal-content { width: 640px; max-height: 85vh; overflow-y: auto; }
#cli-kyc-modal .kyc-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px; }
#cli-kyc-modal .kyc-form-grid .kyc-form-full { grid-column: 1 / -1; }
#cli-kyc-modal label { font-size: 12px; font-weight: 600; color: var(--muted); display: block; margin-bottom: 3px; }
#cli-kyc-modal input, #cli-kyc-modal select, #cli-kyc-modal textarea {
  width: 100%; padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; font-family: var(--font-body); box-sizing: border-box;
}
#cli-kyc-modal textarea { min-height: 60px; resize: vertical; }

@media (max-width: 768px) {
  .ix-kpi-row { grid-template-columns: repeat(2, 1fr); }
  .ix-toolbar { flex-direction: column; }
  .ix-toolbar select, .ix-toolbar input { width: 100%; min-width: unset; }
  .ix-count { margin-left: 0; }
}

/* ══════════════════════════════════════════
   RESPONSIVE
   ══════════════════════════════════════════ */

@media (max-width: 768px) {
  .app-header { padding: 0 12px; gap: 8px; }
  .header-nav { margin-left: 8px; }
  .nav-tab { padding: 8px 12px; font-size: 12px; }
  .app-main { padding: 16px; }

  /* Homepage */
  .hp-grid { grid-template-columns: 1fr; }
  .home-greeting { font-size: 22px; }
  .hp-ql-row { flex-direction: column; }
  .hp-kpi-row { flex-wrap: wrap; }
  .hp-rev-header { flex-direction: column; }

  /* Clients */
  .cli-kpi-row { grid-template-columns: repeat(2, 1fr); }
  .cli-toolbar { flex-direction: column; }
  .cli-toolbar input, .cli-toolbar select { width: 100%; min-width: unset; }
  .cli-count { margin-left: 0; }
  .cli-detail-title { font-size: 22px; }
  .cli-meta-strip { flex-direction: column; }
  .cli-meta-pill { border-right: none; border-bottom: 1px solid var(--border); padding: 3px 0; }
  .cli-meta-pill:last-child { border-bottom: none; }
  .cli-form-row { flex-direction: column; }
}

/* ══════════════════════════════════════════
   EVENTS TAB
   ══════════════════════════════════════════ */
.ev-subtab{padding:10px 22px;font-size:.85rem;font-weight:600;color:var(--muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;margin-bottom:-2px;transition:all .15s}
.ev-subtab:hover{color:var(--navy)}
.ev-subtab.active{color:var(--navy);border-bottom-color:var(--navy)}
.em-top-bar{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:16px}
.em-top-left h2{font-family:var(--font-display);font-size:1.65rem;font-weight:700;color:var(--navy);line-height:1.2;margin:0}
.em-top-left .em-subtitle{font-size:.82rem;color:var(--muted);margin-top:4px}
.em-stats-row{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:24px}
.em-stat-card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:16px 18px}
.em-stat-card .em-stat-label{font-size:.72rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}
.em-stat-card .em-stat-value{font-size:1.5rem;font-weight:700;color:var(--navy);line-height:1}
.em-stat-card .em-stat-detail{font-size:.72rem;color:var(--muted);margin-top:4px}
.em-type-row{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.em-type-btn{background:#fff;border:1px solid var(--border);color:var(--muted);font-family:var(--font-body);font-size:.78rem;font-weight:500;padding:6px 14px;border-radius:6px;cursor:pointer;transition:all .15s}
.em-type-btn:hover{border-color:var(--navy);color:var(--text)}
.em-type-btn.active{color:#fff;border-color:transparent}
.em-type-btn.active.em-type-all{background:var(--navy)}
.em-type-btn.active.em-type-earnings{background:#0a1628}
.em-type-btn.active.em-type-buyback{background:#7c3aed}
.em-type-btn.active.em-type-guidance{background:#2563eb}
.em-type-btn.active.em-type-dividend{background:#16a34a}
.em-type-btn.active.em-type-management{background:#0d9488}
.em-type-btn.active.em-type-stake{background:#e11d48}
.em-type-btn.active.em-type-other{background:#6b7280}
.em-filter-row{display:flex;gap:8px;align-items:center;margin-bottom:20px;flex-wrap:wrap}
.em-filter-btn{background:#fff;border:1px solid var(--border);color:var(--muted);font-family:var(--font-body);font-size:.78rem;font-weight:500;padding:6px 14px;border-radius:6px;cursor:pointer;transition:all .15s}
.em-filter-btn:hover{border-color:var(--navy);color:var(--text)}
.em-filter-btn.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.em-filter-count{font-size:.7rem;background:var(--orange);color:#fff;border-radius:10px;padding:1px 7px;margin-left:4px;font-weight:700}
.em-mat-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.em-mat-dot-high{background:#dc2626}.em-mat-dot-medium{background:#d97706}.em-mat-dot-low{background:#9ca3af}
.em-event-badge{display:inline-block;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:4px;color:#fff;letter-spacing:.03em;white-space:nowrap}
.em-badge-earnings{background:#0a1628}.em-badge-forecast_revision{background:#2563eb}.em-badge-dividend_revision{background:#16a34a}
.em-badge-buyback{background:#7c3aed}.em-badge-treasury_cancellation{background:#a78bfa}.em-badge-management_change{background:#0d9488}
.em-badge-stake_change{background:#e11d48}.em-badge-alliance{background:#6b7280}.em-badge-mbo{background:#dc2626}
.em-badge-delisting{background:#dc2626}.em-badge-share_issuance{background:#6b7280}.em-badge-poison_pill{background:#6b7280}
.em-badge-controlling_shareholder{background:#6b7280}.em-badge-upcoming_earnings{background:var(--orange)}
.em-signal{display:inline-block;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:4px;letter-spacing:.03em;white-space:nowrap}
.em-signal-beat{background:rgba(22,163,74,.12);color:#16a34a}.em-signal-miss{background:rgba(220,38,38,.1);color:#dc2626}
.em-signal-inline{background:rgba(217,119,6,.1);color:#d97706}.em-signal-positive{background:rgba(22,163,74,.12);color:#16a34a}
.em-signal-negative{background:rgba(220,38,38,.1);color:#dc2626}.em-signal-revised{background:rgba(37,99,235,.1);color:#2563eb}
.em-signal-material{background:rgba(124,58,237,.1);color:#7c3aed}
.em-detail-cell{display:flex;flex-direction:column;gap:1px}
.em-detail-primary{font-size:.82rem;color:var(--text)}.em-detail-secondary{font-size:.72rem;color:var(--muted)}
.em-mat-toggle{display:inline-flex;gap:0;border:1px solid var(--border);border-radius:6px;overflow:hidden;margin-left:12px}
.em-mat-toggle button{background:#fff;border:none;font-family:var(--font-body);font-size:.72rem;font-weight:600;padding:4px 10px;cursor:pointer;color:var(--muted);transition:all .15s;border-right:1px solid var(--border)}
.em-mat-toggle button:last-child{border-right:none}
.em-mat-toggle button.active{background:var(--navy);color:#fff}
.em-mat-toggle button:hover:not(.active){background:rgba(10,22,40,.04)}
.em-results{background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden}
.em-results-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-wrap:wrap;gap:12px}
.em-results-header h3{font-family:var(--font-body);font-size:.92rem;font-weight:700;color:var(--navy);margin:0}
.em-results-left{display:flex;align-items:center;gap:12px}
.em-date-nav{display:flex;align-items:center;gap:12px}
.em-date-nav button{background:none;border:1px solid var(--border);color:var(--muted);width:28px;height:28px;border-radius:6px;cursor:pointer;font-size:.85rem;display:flex;align-items:center;justify-content:center;transition:all .15s}
.em-date-nav button:hover{border-color:var(--navy);color:var(--navy)}
.em-date-label{font-size:.82rem;font-weight:600;color:var(--text);min-width:140px;text-align:center}
.em-table{width:100%;border-collapse:collapse}
.em-table thead th{font-size:.7rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);background:rgba(247,244,240,.5);white-space:nowrap}
.em-table thead th.num{text-align:right}
.em-table tbody tr{transition:background .1s}
.em-table tbody tr:hover{background:rgba(232,119,26,.04)}
.em-table tbody tr:not(:last-child) td{border-bottom:1px solid var(--border)}
.em-table td{padding:12px 14px;font-size:.82rem;vertical-align:middle}
.em-table td.num{text-align:right;font-variant-numeric:tabular-nums}
.em-stock-cell{display:flex;flex-direction:column;gap:1px}
.em-stock-name{font-weight:600;color:var(--navy);font-size:.82rem}
.em-stock-ticker{font-size:.72rem;color:var(--muted)}
.em-focus-dot{width:8px;height:8px;border-radius:50%;background:var(--orange);display:inline-block;margin-right:6px;flex-shrink:0}
.em-analyst-tag{font-size:.72rem;color:var(--muted);white-space:nowrap}
.em-period-badge{display:inline-block;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:4px;background:rgba(10,22,40,.08);color:var(--navy);letter-spacing:.03em}
.em-change-pos{color:var(--green);font-weight:600}.em-change-neg{color:#dc2626;font-weight:600}.em-change-flat{color:var(--muted)}
.em-detail-row td{padding:0 14px 14px;background:rgba(247,244,240,.4)}
.em-detail-panel{font-size:.8rem;line-height:1.65;color:var(--text);padding:16px 20px;background:#fff;border:1px solid var(--border);border-left:3px solid var(--orange);border-radius:0 8px 8px 0}
.em-detail-panel strong{color:var(--navy);font-weight:600}
.em-detail-title{font-size:.78rem;color:var(--muted);margin-bottom:10px;font-style:italic}
.em-detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px 20px;margin-bottom:10px}
.em-detail-item{display:flex;flex-direction:column;gap:1px}
.em-detail-item .em-dlabel{font-size:.68rem;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:600}
.em-detail-item .em-dvalue{font-size:.84rem;color:var(--navy);font-weight:500;font-family:'JetBrains Mono',monospace}
.em-detail-links{margin-top:10px;display:flex;gap:10px}
.em-detail-links a{font-size:.74rem;font-weight:600;color:var(--orange);text-decoration:none;padding:4px 10px;border:1px solid rgba(232,119,26,.3);border-radius:4px;transition:all .15s}
.em-detail-links a:hover{background:var(--orange);color:#fff}
.em-empty{padding:60px 20px;text-align:center}
.em-empty h3{font-family:var(--font-title);font-size:1.2rem;color:var(--navy);margin-bottom:6px}
.em-empty p{font-size:.82rem;color:var(--muted)}
.eu-layout{display:flex;gap:20px;align-items:flex-start}
.eu-layout-main{flex:1;min-width:0}
.eu-sidebar{width:280px;flex-shrink:0;background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden}
.eu-sidebar-header{padding:14px 16px 10px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.eu-sidebar-header h3{font-family:var(--font-body);font-size:.85rem;font-weight:700;color:var(--navy);margin:0}
.eu-sidebar-source{font-size:.65rem;color:var(--muted);background:rgba(107,107,107,.08);padding:2px 7px;border-radius:3px}
.eu-sidebar-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-bottom:1px solid var(--border)}
.eu-mini-stat{text-align:center;padding:10px 6px;border-right:1px solid var(--border)}
.eu-mini-stat:last-child{border-right:none}
.eu-mini-val{display:block;font-size:1.15rem;font-weight:700;color:var(--navy);font-family:'JetBrains Mono',monospace}
.eu-mini-label{font-size:.62rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}
.eu-sidebar-list{max-height:520px;overflow-y:auto;padding:6px 0}
.eu-date-group{padding:4px 16px 2px;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:6px}
.eu-date-group:first-child{margin-top:0}
.eu-date-today{color:var(--orange)}
.eu-item{display:flex;align-items:center;gap:8px;padding:7px 16px;cursor:pointer;transition:background .1s;font-size:.78rem}
.eu-item:hover{background:rgba(232,119,26,.04)}
.eu-item-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.eu-item-dot-fl{background:var(--orange)}
.eu-item-dot-normal{background:var(--border)}
.eu-item-name{flex:1;font-weight:500;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eu-item-analyst{font-size:.68rem;color:var(--muted);min-width:42px;text-align:right}
.eu-item-countdown{font-size:.68rem;font-weight:600;min-width:38px;text-align:right}
.eu-item-countdown-today{color:#dc2626}
.eu-item-countdown-soon{color:var(--orange)}
.eu-item-countdown-later{color:var(--muted)}
.eu-none{padding:20px 16px;text-align:center;color:var(--muted);font-size:.78rem}
.eu-refresh-btn{width:100%;padding:8px;border:none;border-top:1px solid var(--border);background:rgba(10,22,40,.02);font-family:var(--font-body);font-size:.72rem;font-weight:600;color:var(--navy);cursor:pointer;transition:background .15s}
.eu-refresh-btn:hover{background:rgba(10,22,40,.06)}
.eu-refresh-btn:disabled{opacity:.5;cursor:default}
@media(max-width:1100px){.em-stats-row{grid-template-columns:repeat(3,1fr)}.eu-layout{flex-direction:column}.eu-sidebar{width:100%;max-width:none}}
@media(max-width:900px){.em-stats-row{grid-template-columns:repeat(2,1fr)}.em-table td,.em-table thead th{padding:10px 8px}}
@media(max-width:600px){.em-stats-row{grid-template-columns:1fr}.em-top-bar{flex-direction:column}}

/* ── Earnings Briefs ────────────────── */
.eb-section{margin-top:28px}
.eb-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:12px}
.eb-header h2{font-family:var(--font-title);font-size:1.3rem;font-weight:700;color:var(--navy);margin:0}
.eb-header-sub{font-size:.82rem;color:var(--muted)}
.eb-filters{display:flex;gap:8px;align-items:center}
.eb-filters select{font-family:var(--font-body);font-size:.82rem;padding:5px 10px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--navy)}
.eb-grid{display:grid;grid-template-columns:1fr;gap:16px}
.eb-card{background:#fff;border:1px solid var(--border);border-radius:10px;overflow:hidden;transition:border-color .15s}
.eb-card:hover{border-color:var(--orange)}
.eb-card-top{display:flex;align-items:center;justify-content:space-between;padding:14px 18px 10px;border-bottom:1px solid rgba(222,218,211,.4)}
.eb-card-company{font-family:var(--font-body);font-size:.92rem;font-weight:700;color:var(--navy)}
.eb-card-ticker{font-family:var(--font-mono);font-size:.78rem;color:var(--muted);margin-left:8px}
.eb-card-meta{display:flex;align-items:center;gap:8px}
.eb-card-date{font-family:var(--font-mono);font-size:.75rem;color:var(--muted)}
.eb-card-period{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:4px;text-transform:uppercase;background:rgba(10,22,40,.06);color:var(--navy)}
.eb-badge{font-size:.7rem;font-weight:700;padding:3px 10px;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}
.eb-badge-beat{background:rgba(46,125,50,.1);color:#2e7d32}
.eb-badge-miss{background:rgba(198,40,40,.1);color:#c62828}
.eb-badge-inline{background:rgba(245,124,0,.1);color:#f57c00}
.eb-card-body{padding:14px 18px}
.eb-brief-text{font-family:var(--font-body);font-size:.88rem;line-height:1.55;color:var(--text)}
.eb-card-figures{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;padding:0 18px 14px}
.eb-fig{padding:8px 10px;background:rgba(247,244,240,.6);border-radius:6px}
.eb-fig-label{font-size:.68rem;text-transform:uppercase;font-weight:600;color:var(--muted);letter-spacing:.3px}
.eb-fig-val{font-family:var(--font-mono);font-size:.85rem;font-weight:600;color:var(--navy);margin-top:2px}
.eb-fig-yoy{font-size:.72rem;margin-top:1px}
.eb-fig-yoy.pos{color:#2e7d32}
.eb-fig-yoy.neg{color:#c62828}
.eb-card-footer{display:flex;align-items:center;justify-content:space-between;padding:8px 18px;background:rgba(247,244,240,.35);border-top:1px solid rgba(222,218,211,.3)}
.eb-analyst{font-size:.75rem;color:var(--muted)}
.eb-fl-tag{font-size:.65rem;font-weight:600;padding:2px 7px;border-radius:3px;background:rgba(232,119,26,.1);color:var(--orange)}
.eb-pdf-link{font-size:.75rem;color:var(--orange);text-decoration:none;font-weight:600}
.eb-pdf-link:hover{text-decoration:underline}
.eb-empty{text-align:center;padding:48px 20px;color:var(--muted)}
.eb-empty h3{font-family:var(--font-body);font-size:.95rem;font-weight:600;color:var(--navy);margin:0 0 6px}
.eb-empty p{font-size:.82rem;margin:0}

/* ── Reports ─────────────────────────── */
.rpt-kpi-row{display:flex;gap:16px;margin-bottom:20px}
.rpt-kpi-card{flex:1;background:var(--cream);border:1px solid var(--border);border-radius:8px;padding:16px;text-align:center}
.rpt-kpi-value{font-family:var(--font-mono);font-size:28px;font-weight:700;color:var(--navy)}
.rpt-kpi-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-top:4px}
.rpt-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.rpt-type-pills{display:flex;gap:6px;flex-wrap:wrap}
.rpt-pill{padding:5px 14px;border:1px solid var(--border);border-radius:20px;background:var(--white);font-size:12px;cursor:pointer;font-family:var(--font-body)}
.rpt-pill:hover{border-color:var(--navy)}
.rpt-pill.active{background:var(--navy);color:var(--white);border-color:var(--navy)}
.rpt-search-input{flex:1;min-width:200px;padding:7px 12px;border:1px solid var(--border);border-radius:6px;font-family:var(--font-body);font-size:13px}
.rpt-search-input:focus{border-color:var(--orange);outline:none}
.rpt-author-select{padding:7px 12px;border:1px solid var(--border);border-radius:6px;font-family:var(--font-body);font-size:12px;background:var(--white);min-width:140px}
.rpt-author-select:focus{border-color:var(--orange);outline:none}
.rpt-date-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.rpt-date-presets{display:flex;gap:6px}
.rpt-date-preset{padding:4px 12px;border:1px solid var(--border);border-radius:4px;background:var(--white);font-size:11px;cursor:pointer;font-family:var(--font-body);color:var(--muted)}
.rpt-date-preset:hover{border-color:var(--navy);color:var(--navy)}
.rpt-date-preset.active{background:var(--cream);border-color:var(--navy);color:var(--navy);font-weight:600}
.rpt-date-range{display:flex;align-items:center;gap:8px}
.rpt-date-range input{padding:5px 10px;border:1px solid var(--border);border-radius:4px;font-family:var(--font-mono);font-size:12px}
.rpt-date-range input:focus{border-color:var(--orange);outline:none}
.rpt-btn{padding:7px 16px;border:1px solid var(--border);border-radius:6px;font-size:12px;font-family:var(--font-body);cursor:pointer}
.rpt-btn-primary{background:var(--navy);color:var(--white);border-color:var(--navy)}
.rpt-btn-primary:hover{opacity:.85}
.rpt-btn-secondary{background:var(--white)}
.rpt-btn-icon{background:none;border:none;font-size:18px;color:var(--muted);cursor:pointer;padding:2px 6px;line-height:1}
.rpt-btn-icon:hover{color:#c0392b}
.rpt-table-wrap{overflow-x:auto}
.rpt-table{width:100%;border-collapse:collapse;font-size:13px}
.rpt-table thead th{background:var(--cream);padding:8px 10px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:2px solid var(--border)}
.rpt-sortable{cursor:pointer}
.rpt-sortable:hover{color:var(--navy)}
.rpt-table tbody td{padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}
.rpt-table tbody tr:hover{background:rgba(232,119,26,.04)}
.rpt-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;white-space:nowrap}
.rpt-badge-daily{background:#27ae60;color:white}
.rpt-badge-weekly{background:#2980b9;color:white}
.rpt-badge-company{background:var(--orange);color:white}
.rpt-badge-thoughts{background:#8e44ad;color:white}
.rpt-badge-ftd{background:#16a085;color:white}
.rpt-badge-recap{background:#7f8c8d;color:white}
.rpt-pagination{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:16px;padding:12px 0}
.rpt-page-btn{padding:4px 12px;border:1px solid var(--border);border-radius:4px;font-size:12px;cursor:pointer;background:var(--white)}
.rpt-page-btn:hover{border-color:var(--navy)}
.rpt-page-btn.active{background:var(--navy);color:var(--white);border-color:var(--navy)}
.rpt-page-info{font-size:12px;color:var(--muted)}
.rpt-modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:200;display:flex;align-items:center;justify-content:center}
.rpt-modal{background:var(--white);border-radius:12px;width:560px;max-width:90vw;max-height:85vh;overflow-y:auto;box-shadow:0 16px 48px rgba(0,0,0,.2)}
.rpt-modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 12px;border-bottom:1px solid var(--border)}
.rpt-modal-header h3{margin:0;font-family:var(--font-title);font-size:1.2rem;color:var(--navy)}
.rpt-modal-body{padding:16px 24px}
.rpt-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:12px 24px 20px;border-top:1px solid var(--border)}
.rpt-modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:var(--muted)}
.rpt-field{margin-bottom:14px}
.rpt-field label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}
.rpt-field input,.rpt-field select,.rpt-field textarea{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-family:var(--font-body);font-size:13px;box-sizing:border-box}
.rpt-field input:focus,.rpt-field select:focus,.rpt-field textarea:focus{border-color:var(--orange);outline:none}
.rpt-empty{text-align:center;padding:60px 20px;color:var(--muted)}
.rpt-empty h3{font-family:var(--font-title);font-size:1.3rem;margin-bottom:8px}

/* ── Holdings ────────────────────────── */
.hi-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.25rem;flex-wrap:wrap;gap:1rem}
.hi-subtitle{font-size:.85rem;color:var(--muted);margin-top:.25rem}
.hi-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:1.5rem}
.hi-card{background:#fff;border-radius:8px;padding:16px 18px;box-shadow:0 2px 8px rgba(0,0,0,0.06);border-top:3px solid var(--navy)}
.hi-card .hi-card-label{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);margin-bottom:4px;font-weight:600}
.hi-card .hi-card-value{font-family:var(--font-display);font-size:28px;font-weight:700;color:var(--navy)}
.hi-card .hi-card-detail{font-size:11px;color:var(--muted);margin-top:3px}
.hi-card .hi-card-change{font-size:11px;margin-top:2px;font-weight:600}
.hi-card .hi-card-change.up{color:#2e7d32}.hi-card .hi-card-change.down{color:#c62828}
.hi-sub-tabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:1rem}
.hi-sub-tab{font-family:var(--font-body);font-size:13px;font-weight:600;padding:10px 20px;background:none;border:none;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;transition:color .2s,border-color .2s}
.hi-sub-tab:hover{color:var(--text)}
.hi-sub-tab.active{color:var(--navy);border-bottom-color:var(--orange)}
.hi-sub-tab .hi-tab-count{background:var(--border);color:var(--text);font-size:11px;padding:1px 8px;border-radius:10px;margin-left:6px}
.hi-sub-tab.active .hi-tab-count{background:var(--orange);color:#fff}
.hi-sub-tab.hi-hot-tab .hi-tab-count{background:var(--orange);color:#fff}
.hi-panel{display:none}.hi-panel.active{display:block}
.hi-filters{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.hi-filter-group{display:flex;align-items:center;gap:6px}
.hi-filter-group label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.hi-search{font-family:var(--font-body);padding:7px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;width:220px;background:#fff}
.hi-search:focus{outline:none;border-color:var(--orange)}
.hi-select{font-family:var(--font-body);padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff;cursor:pointer}
.hi-select:focus{outline:none;border-color:var(--orange)}
.hi-toggle{font-family:var(--font-body);padding:6px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff;cursor:pointer;transition:all .2s}
.hi-toggle.active{background:var(--orange);color:#fff;border-color:var(--orange)}
.hi-toggle-green.active{background:#2e7d32;color:#fff;border-color:#2e7d32}
.hi-export{font-family:var(--font-body);padding:7px 14px;border:none;border-radius:6px;font-size:13px;font-weight:600;background:var(--navy);color:#fff;cursor:pointer;margin-left:auto;transition:opacity .2s}
.hi-export:hover{opacity:.85}
.hi-range{display:flex;align-items:center;gap:8px}
.hi-range input[type="range"]{width:110px;accent-color:var(--orange)}
.hi-range-val{font-size:13px;font-weight:600;color:var(--navy);min-width:24px;text-align:center}
.hi-table-wrap{background:#fff;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,0.06);overflow:hidden}
.hi-table-scroll{max-height:70vh;overflow-y:auto}
.hi-table{width:100%;border-collapse:collapse}
.hi-table thead th{background:var(--navy);color:#fff;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:9px 11px;text-align:left;cursor:pointer;user-select:none;white-space:nowrap;position:sticky;top:0;z-index:2}
.hi-table thead th:hover{background:#1a3a5c}
.hi-table thead th .hi-sort{display:inline-block;margin-left:3px;opacity:.4;font-size:9px}
.hi-table thead th.sorted-asc .hi-sort,.hi-table thead th.sorted-desc .hi-sort{opacity:1}
.hi-table tbody tr{border-bottom:1px solid var(--border);transition:background .15s;cursor:pointer}
.hi-table tbody tr:hover{background:rgba(10,22,40,.02)}
.hi-table tbody tr.hi-client-row{background:rgba(46,125,50,.06)}
.hi-table tbody tr.hi-client-row:hover{background:rgba(46,125,50,.1)}
.hi-table tbody td{padding:8px 11px;font-size:13px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hi-table td.hi-num{text-align:right;font-variant-numeric:tabular-nums}
.hi-badge{display:inline-block;font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.5px}
.hi-badge-focus{background:var(--orange);color:#fff}
.hi-badge-client{background:#2e7d32;color:#fff}
.hi-client-link{cursor:pointer;transition:background .15s}.hi-client-link:hover{background:#1b5e20}
.hi-badge-Active{background:rgba(10,22,40,.1);color:var(--navy)}
.hi-badge-Passive{background:rgba(150,150,150,.1);color:#666}
.hi-badge-Unknown{background:rgba(150,150,150,.05);color:#aaa}
.hi-badge-cov-Primary{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;background:rgba(10,22,40,.1);color:var(--navy)}
.hi-badge-cov-Secondary{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;background:rgba(232,119,26,.1);color:#c46500}
.hi-badge-cov-Tertiary{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;background:rgba(150,150,150,.1);color:#666}
.hi-trend{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-weight:700;white-space:nowrap}
.hi-trend-increasing{color:#2e7d32}.hi-trend-decreasing{color:#c62828}.hi-trend-stable{color:var(--muted)}.hi-trend-new{color:var(--orange)}
.hi-trend-pct{font-size:10px;font-weight:600;opacity:.85}
.hi-spark{display:inline-flex;align-items:flex-end;gap:1px;height:16px;vertical-align:middle;margin-left:4px}
.hi-spark-bar{width:4px;background:var(--navy);border-radius:1px;opacity:.3;min-height:1px}
.hi-spark-bar:last-child{opacity:.8}
.hi-expanded-row td{padding:0;background:#f9f7f5}
.hi-expanded{padding:14px 20px}
.hi-expanded h4{font-size:15px;margin-bottom:10px;color:var(--navy)}
.hi-exp-table{width:100%;border-collapse:collapse;font-size:12px}
.hi-exp-table th{background:var(--border);color:var(--text);padding:7px 10px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.5px;cursor:default;position:static}
.hi-exp-table td{padding:5px 10px;border-bottom:1px solid var(--border);white-space:normal;max-width:none}
.hi-exp-table tr:last-child td{border-bottom:none}
.hi-tag-btn{font-family:var(--font-body);font-size:11px;padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer;transition:all .2s}
.hi-tag-btn:hover{border-color:#2e7d32;color:#2e7d32}
.hi-tag-btn.is-client{background:#2e7d32;color:#fff;border-color:#2e7d32}
.hi-results{font-size:12px;color:var(--muted);margin-bottom:6px}
.hi-pagination{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;font-size:13px;color:var(--muted);border-top:1px solid var(--border)}
.hi-pagination button{font-family:var(--font-body);padding:5px 12px;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer;font-size:13px}
.hi-pagination button:hover{border-color:var(--navy)}
.hi-pagination button:disabled{opacity:.4;cursor:not-allowed}
.hi-page-btns{display:flex;gap:4px}
.hi-prospect-card{background:#fff;border-radius:8px;padding:16px 20px;box-shadow:0 2px 8px rgba(0,0,0,0.06);border-left:4px solid var(--orange);margin-bottom:10px;cursor:pointer;transition:box-shadow .2s}
.hi-prospect-card:hover{box-shadow:0 4px 16px rgba(0,0,0,0.12)}
.hi-prospect-card.hi-is-client{border-left-color:#2e7d32;opacity:.6}
.hi-prospect-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:6px}
.hi-prospect-name{font-family:var(--font-title);font-size:18px;font-weight:700;color:var(--navy)}
.hi-prospect-score{font-size:22px;font-weight:700;color:var(--orange);font-family:var(--font-display)}
.hi-prospect-meta{display:flex;gap:14px;font-size:12px;color:var(--muted);margin-bottom:4px;flex-wrap:wrap}
.hi-prospect-meta span{display:flex;align-items:center;gap:4px}
.hi-prospect-reasons{font-size:13px;color:var(--text);margin-top:4px}
.hi-reason-tag{display:inline-block;font-size:11px;padding:3px 10px;border-radius:12px;background:rgba(232,119,26,.1);color:#c46500;margin:2px 4px 2px 0;font-weight:600}
.hi-prospect-expanded{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
.hi-loading{text-align:center;padding:3rem;color:var(--muted)}
.hi-loading .hi-spin{display:inline-block;width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--orange);border-radius:50%;animation:hi-spin .7s linear infinite;margin-bottom:10px}
@keyframes hi-spin{to{transform:rotate(360deg)}}
.hi-quarter-pills{display:flex;gap:4px;flex-wrap:wrap}
.hi-quarter-pill{font-size:10px;padding:2px 8px;border-radius:10px;background:rgba(10,22,40,.06);color:var(--muted);font-family:var(--font-body)}
.hi-quarter-pill.latest{background:var(--orange);color:#fff;font-weight:600}
@media(max-width:900px){.hi-cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.hi-cards{grid-template-columns:1fr}}

/* ── Morning Call ───────────────────── */
.mc-top-bar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}
.mc-top-left h2{margin:0;font-family:var(--font-display);font-size:26px;color:var(--navy)}
.mc-subtitle{color:var(--muted);font-size:13px;margin-top:4px}
.mc-top-right{display:flex;gap:10px;align-items:center}
.mc-search-input{padding:8px 14px;border:1px solid var(--border);border-radius:6px;font-size:13px;width:220px;font-family:var(--font-body)}
.mc-search-input:focus{outline:none;border-color:var(--orange)}
.mc-upload-btn{background:var(--orange);color:#fff;border:none;padding:8px 16px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font-body)}
.mc-upload-btn:hover{background:#d06a15}
.mc-stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.mc-stat-card{background:var(--cream);border:1px solid var(--border);border-radius:8px;padding:14px;text-align:center}
.mc-stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:4px}
.mc-stat-value{font-family:var(--font-mono);font-size:22px;font-weight:600;color:var(--navy)}
.mc-table{width:100%;border-collapse:collapse}
.mc-table thead th{padding:10px 12px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:2px solid var(--border);text-align:left;font-family:var(--font-body)}
.mc-table tbody tr{border-bottom:1px solid var(--border);transition:background .15s}
.mc-table tbody tr:hover{background:rgba(232,119,26,.04)}
.mc-table td{padding:10px 12px;font-size:13px;vertical-align:middle}
.mc-num{text-align:center;font-family:var(--font-mono);font-weight:500}
.mc-summary-cell{color:var(--text);max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mc-theme-tag{display:inline-block;background:var(--navy);color:#fff;font-size:10px;padding:2px 8px;border-radius:10px;margin:1px 2px;font-family:var(--font-body)}
.mc-empty{text-align:center;color:var(--muted);padding:40px 0;font-size:14px}
.mc-pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:16px}
.mc-page-btn{background:var(--cream);border:1px solid var(--border);padding:6px 14px;border-radius:6px;font-size:12px;cursor:pointer;font-family:var(--font-body)}
.mc-page-btn:hover:not([disabled]){border-color:var(--orange)}
.mc-page-btn[disabled]{opacity:.4;cursor:default}
.mc-page-info{font-size:12px;color:var(--muted)}
.mc-back-btn{background:none;border:1px solid var(--border);padding:6px 14px;border-radius:6px;font-size:12px;cursor:pointer;margin-bottom:16px;color:var(--muted);font-family:var(--font-body)}
.mc-back-btn:hover{border-color:var(--orange);color:var(--orange)}
.mc-detail-header{margin-bottom:16px}
.mc-detail-header h2{margin:0;font-family:var(--font-display);font-size:24px;color:var(--navy)}
.mc-detail-meta{color:var(--muted);font-size:13px;margin-top:4px;display:flex;align-items:center;gap:12px}
.mc-delete-btn{background:none;border:1px solid #c00;color:#c00;padding:4px 12px;border-radius:4px;font-size:11px;cursor:pointer}
.mc-delete-btn:hover{background:#c00;color:#fff}
/* Hero header */
.mc-hero{background:var(--navy);border-radius:10px;padding:20px 24px;margin-bottom:20px;color:#fff}
.mc-hero-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}
.mc-hero-date{font-family:var(--font-display);font-size:24px;font-weight:600}
.mc-hero-title{font-size:15px;color:rgba(255,255,255,.7);margin-top:4px}
.mc-hero-actions{display:flex;align-items:center;gap:10px}
.mc-hero-stats{display:flex;gap:0;border-top:1px solid rgba(255,255,255,.15);padding-top:14px}
.mc-hero-stat{flex:1;text-align:center;border-right:1px solid rgba(255,255,255,.1);padding:0 12px}
.mc-hero-stat:last-child{border-right:none}
.mc-hero-stat-val{display:block;font-family:var(--font-mono);font-size:20px;font-weight:600}
.mc-hero-stat-lbl{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:rgba(255,255,255,.5);margin-top:2px}
.mc-sent-pos-text{color:#4caf50}
.mc-sent-neg-text{color:#ef5350}
/* Executive summary */
.mc-exec-summary{background:var(--cream);border-left:4px solid var(--orange);padding:16px 20px;margin-bottom:20px;font-size:14px;line-height:1.7;border-radius:0 8px 8px 0;color:var(--text)}
/* Two-column layout */
.mc-two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}
.mc-col{background:#fff;border:1px solid var(--border);border-radius:8px;padding:16px 20px}
.mc-col-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--orange);margin-bottom:10px}
.mc-col-body{font-size:13px;line-height:1.65;color:var(--text)}
.mc-themes-wrap{margin-bottom:8px}
/* Action row */
.mc-action-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px}
.mc-action-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:16px 20px;border-top:3px solid var(--orange)}
.mc-action-card-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--orange);margin-bottom:10px}
.mc-action-item{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}
.mc-action-item:last-child{border-bottom:none}
.mc-action-who{font-weight:600;color:var(--navy);white-space:nowrap;min-width:100px}
.mc-action-what{color:var(--text);flex:1}
.mc-catalyst-item{padding:8px 0;border-bottom:1px solid var(--border)}
.mc-catalyst-item:last-child{border-bottom:none}
.mc-catalyst-event{font-size:13px;font-weight:500;color:var(--navy)}
.mc-catalyst-meta{font-size:11px;color:var(--muted);margin-top:2px}
/* Section headings */
.mc-section-head{font-family:var(--font-title);font-size:18px;color:var(--navy);margin:0 0 14px 0;padding-bottom:8px;border-bottom:2px solid var(--border)}
.mc-section-head--toggle{cursor:pointer;font-family:var(--font-title);font-size:18px;color:var(--navy);padding-bottom:8px;border-bottom:2px solid var(--border)}
.mc-section-head--toggle:hover{color:var(--orange)}
.mc-transcript-details{margin-top:4px}
/* Legacy compat */
.mc-detail-summary{background:var(--cream);border-left:3px solid var(--orange);padding:12px 16px;margin-bottom:16px;font-size:14px;line-height:1.6;border-radius:0 6px 6px 0}
.mc-detail-themes{margin-bottom:20px}
.mc-section{margin-bottom:24px}
.mc-section h3{font-family:var(--font-title);font-size:18px;color:var(--navy);margin:0 0 12px 0;padding-bottom:6px;border-bottom:1px solid var(--border)}
.mc-mentions-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.mc-mention-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:12px;transition:box-shadow .15s}
.mc-mention-card:hover{box-shadow:0 2px 8px rgba(0,0,0,.08)}
.mc-mention-cov{border-left:3px solid var(--orange)}
.mc-mention-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.mc-mention-ticker{font-family:var(--font-mono);font-size:12px;font-weight:600;background:var(--navy);color:#fff;padding:2px 6px;border-radius:4px}
.mc-mention-name{font-weight:600;font-size:13px;color:var(--navy)}
.mc-sent-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.mc-sent-pos{background:#27ae60}
.mc-sent-neg{background:#e74c3c}
.mc-sent-mix{background:#f39c12}
.mc-sent-neu{background:#bbb}
.mc-mention-context{font-size:12px;color:var(--text);line-height:1.5}
.mc-mention-analyst{font-size:11px;color:var(--muted);margin-top:4px}
.mc-action-table{font-size:13px}
.mc-action-table th{font-size:11px;text-transform:uppercase;color:var(--muted);padding:8px 12px;border-bottom:2px solid var(--border)}
.mc-action-table td{padding:8px 12px;border-bottom:1px solid var(--border)}
.mc-feedback-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:12px;margin-bottom:8px}
.mc-feedback-head{font-weight:600;font-size:13px;color:var(--navy);margin-bottom:4px}
.mc-feedback-content{font-size:13px;line-height:1.5;color:var(--text)}
.mc-feedback-tickers{font-size:11px;color:var(--muted);margin-top:4px}
.mc-speakers-list{display:flex;flex-direction:column;gap:0}
.mc-speaker-seg{padding:12px 16px;border-bottom:1px solid var(--border)}
.mc-speaker-seg:nth-child(odd){background:rgba(249,247,243,.6)}
.mc-speaker-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.mc-speaker-name{font-weight:600;font-size:13px;color:var(--navy)}
.mc-speaker-time{font-family:var(--font-mono);font-size:11px;color:var(--muted)}
.mc-speaker-content{font-size:13px;line-height:1.6;color:var(--text)}
.mc-raw-details{margin-top:8px}
.mc-raw-details summary{cursor:pointer;font-size:13px;color:var(--muted);font-weight:500}
.mc-raw-details summary:hover{color:var(--orange)}
.mc-raw-text{font-size:12px;line-height:1.5;white-space:pre-wrap;max-height:500px;overflow-y:auto;background:var(--cream);padding:16px;border-radius:6px;border:1px solid var(--border);font-family:var(--font-body)}
.mc-modal{display:none;position:fixed;inset:0;background:rgba(10,22,40,.5);z-index:1000;justify-content:center;align-items:center}
.mc-modal-content{background:#fff;border-radius:12px;width:90%;max-width:700px;max-height:85vh;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.2)}
.mc-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}
.mc-modal-header h3{margin:0;font-family:var(--font-title);font-size:20px;color:var(--navy)}
.mc-modal-close{background:none;border:none;font-size:22px;cursor:pointer;color:var(--muted);padding:0 4px}
.mc-modal-close:hover{color:var(--navy)}
.mc-modal-body{padding:20px}
.mc-modal-body label{display:block;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:6px;margin-top:14px}
.mc-modal-body label:first-child{margin-top:0}
.mc-modal-body input[type="date"],.mc-modal-body textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:var(--font-body);box-sizing:border-box}
.mc-modal-body textarea{resize:vertical;min-height:180px}
.mc-modal-body input:focus,.mc-modal-body textarea:focus{outline:none;border-color:var(--orange)}
.mc-upload-hint{font-size:11px;color:var(--muted);margin-top:6px}
.mc-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border)}
.mc-btn-secondary{background:var(--cream);border:1px solid var(--border);padding:8px 18px;border-radius:6px;font-size:13px;cursor:pointer;font-family:var(--font-body)}
.mc-btn-primary{background:var(--orange);color:#fff;border:none;padding:8px 18px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font-body)}
.mc-btn-primary:hover{background:#d06a15}
.mc-btn-primary:disabled{opacity:.5;cursor:default}
.mc-upload-error{color:#c00;font-size:13px;padding:0 20px 12px}
.mc-upload-progress{color:var(--muted);font-size:13px;padding:0 20px 12px;font-style:italic}
.mc-type-filters{display:flex;gap:0;margin-bottom:16px;border-bottom:2px solid var(--border)}
.mc-type-filter{background:none;border:none;padding:8px 18px;font-size:13px;color:var(--muted);cursor:pointer;font-family:var(--font-body);border-bottom:2px solid transparent;margin-bottom:-2px}
.mc-type-filter:hover{color:var(--navy)}
.mc-type-filter.active{color:var(--orange);border-bottom-color:var(--orange);font-weight:600}
.mc-type-badge{display:inline-block;font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600;font-family:var(--font-body)}
.mc-type-morning{background:rgba(39,174,96,.1);color:#27ae60}
.mc-type-client{background:rgba(232,119,26,.1);color:var(--orange)}
.mc-detail-title{font-size:16px;color:var(--text);margin-top:4px;font-weight:500}
.mc-market-overview{background:var(--cream);padding:14px 16px;border-radius:6px;font-size:13px;line-height:1.6;color:var(--text);border:1px solid var(--border)}
.mc-quotes-list{display:flex;flex-direction:column;gap:10px}
.mc-quote-card{background:#fff;border-left:3px solid var(--orange);padding:10px 16px;border-radius:0 6px 6px 0}
.mc-quote-text{font-size:14px;font-style:italic;line-height:1.5;color:var(--text)}
.mc-quote-attr{font-size:12px;color:var(--muted);margin-top:4px}
.mc-topic-group{margin-bottom:16px}
.mc-topic-group-label{font-size:13px;font-weight:600;color:var(--orange);margin-bottom:8px;padding-bottom:4px;border-bottom:1px dashed var(--border)}
.mc-mention-passing{opacity:.75}
.mc-mention-headline{font-size:13px;font-weight:600;color:var(--navy);margin-bottom:4px;line-height:1.4}
.mc-mention-footer{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;font-size:11px;color:var(--muted)}
.mc-mention-speaker{color:var(--navy)}
.mc-mention-sector{background:rgba(10,22,40,.05);padding:1px 6px;border-radius:8px}
.mc-fl-badge{background:var(--orange);color:#fff;font-size:9px;font-weight:700;padding:1px 5px;border-radius:3px;margin-left:4px;vertical-align:middle}
.mc-pos-label{font-size:10px;font-weight:600;padding:1px 6px;border-radius:8px;margin-left:auto}
.mc-pos-bull{background:rgba(39,174,96,.1);color:#27ae60}
.mc-pos-bear{background:rgba(231,76,60,.1);color:#e74c3c}
.mc-upload-type-row{display:flex;gap:12px;align-items:center;margin-bottom:8px}
.mc-upload-type-row label{margin:0!important}
.mc-upload-type-row select{padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:var(--font-body)}

/* ── CALL PREP ── */
.cp-briefing-card{background:#faf8f5;border:1px solid var(--border);border-left:3px solid var(--orange);border-radius:var(--radius);padding:20px 24px;margin-bottom:24px}
.cp-briefing-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.cp-briefing-title{font-family:var(--font-heading);font-size:1.1rem;font-weight:700;color:var(--navy);text-transform:uppercase;letter-spacing:0.05em}
.cp-briefing-meta{display:flex;align-items:center;gap:12px}
.cp-briefing-time{font-size:11px;color:var(--muted)}
.cp-refresh-btn{padding:4px 12px;font-size:11px;font-weight:600;background:#fff;border:1px solid var(--border);border-radius:4px;cursor:pointer;font-family:var(--font-body);color:var(--navy);transition:all .15s}
.cp-refresh-btn:hover{border-color:var(--orange);color:var(--orange)}
.cp-refresh-btn:disabled{opacity:.5;cursor:not-allowed}
.cp-talking-point{border-bottom:1px solid var(--border);padding:0}
.cp-talking-point:last-child{border-bottom:none}
.cp-talking-point[open]{background:rgba(232,119,26,0.03)}
.cp-tp-headline{padding:10px 0;cursor:pointer;font-size:13px;color:var(--text);line-height:1.5;list-style:none;display:flex;align-items:baseline;gap:8px}
.cp-tp-headline::-webkit-details-marker{display:none}
.cp-tp-headline::before{content:'\25B8';color:var(--muted);font-size:11px;flex-shrink:0}
.cp-talking-point[open] .cp-tp-headline::before{content:'\25BE'}
.cp-tp-detail{padding:0 0 14px 20px;font-size:12.5px;color:var(--text);line-height:1.6}
.cp-tp-detail p{margin:0 0 8px}
.cp-tp-sources{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.cp-source-pill{display:inline-block;font-size:10px;padding:2px 8px;border-radius:10px;background:var(--bg);border:1px solid var(--border);color:var(--muted);font-weight:500}
.cp-tp-badge{display:inline-block;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:3px;flex-shrink:0}
.cp-cat-earnings{background:#e8f5ee;color:#2a7d4f}
.cp-cat-research{background:#e3ecf7;color:#1e4d75}
.cp-cat-morning_call{background:#f0e6f6;color:#6b3fa0}
.cp-cat-macro{background:#e3e8ef;color:var(--navy)}
.cp-cat-theme{background:rgba(232,119,26,0.1);color:var(--orange)}
.cp-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}
.cp-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.cp-card-header{padding:12px 16px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
.cp-card-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--navy)}
.cp-card-subtitle{font-size:10px;color:var(--muted);font-weight:400}
.cp-card-body{padding:12px 16px;max-height:320px;overflow-y:auto}
.cp-mc-day{margin-bottom:12px}.cp-mc-day:last-child{margin-bottom:0}
.cp-mc-date{font-size:11px;font-weight:700;color:var(--navy);margin-bottom:4px}
.cp-today-badge{display:inline-block;font-size:9px;background:var(--orange);color:#fff;padding:1px 6px;border-radius:3px;font-weight:700;vertical-align:middle}
.cp-mc-mention{font-size:12px;color:var(--text);padding:2px 0;display:flex;align-items:baseline;gap:4px}
.cp-mc-ctx{color:var(--muted);font-size:11px}
.cp-sent-up{color:var(--green);font-size:9px}.cp-sent-down{color:var(--red);font-size:9px}.cp-sent-neutral{color:var(--muted);font-size:9px}
.cp-ue-row{display:flex;gap:10px;align-items:center;padding:4px 0;font-size:12px;border-bottom:1px solid rgba(0,0,0,0.04)}.cp-ue-row:last-child{border-bottom:none}
.cp-ue-date{width:70px;flex-shrink:0;color:var(--muted);font-size:11px}
.cp-ue-ticker{width:60px;flex-shrink:0;font-weight:600;color:var(--navy)}
.cp-ue-company{flex:1;color:var(--text)}
.cp-fl-badge{display:inline-block;font-size:8px;font-weight:700;background:var(--orange);color:#fff;padding:1px 5px;border-radius:3px;vertical-align:middle;margin-left:4px}
.cp-result-badge{display:inline-block;font-size:8px;font-weight:600;background:rgba(39,174,96,.08);color:#27ae60;padding:1px 5px;border-radius:3px;vertical-align:middle;margin-left:4px}
.cp-rr-report{border-bottom:1px solid rgba(0,0,0,0.04);padding:0}.cp-rr-report:last-child{border-bottom:none}
.cp-rr-summary{padding:6px 0;cursor:pointer;font-size:12px;color:var(--text);list-style:none;display:flex;align-items:center;gap:6px}
.cp-rr-summary::-webkit-details-marker{display:none}
.cp-rr-summary::before{content:'\25B8';color:var(--muted);font-size:10px;flex-shrink:0}
.cp-rr-report[open] .cp-rr-summary::before{content:'\25BE'}
.cp-rr-date{font-size:10px;color:var(--muted);margin-left:auto;flex-shrink:0}
.cp-rr-detail{padding:4px 0 10px 16px;font-size:12px}
.cp-rr-headline{font-weight:600;color:var(--navy);margin-bottom:6px}
.cp-rr-points{margin:4px 0 8px 16px;padding:0;color:var(--text);line-height:1.5}.cp-rr-points li{margin-bottom:2px}
.cp-rr-section{margin-bottom:6px}
.cp-rr-sec-title{font-weight:600;color:var(--navy);font-size:11px}
.cp-rr-sec-text{color:var(--muted);font-size:11px;margin-top:2px}
.cp-rr-companies{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.cp-company-pill{display:inline-block;font-size:9px;padding:1px 6px;border-radius:8px;background:var(--bg);border:1px solid var(--border);color:var(--text);font-weight:500}
.cp-rtype-badge{display:inline-block;font-size:9px;font-weight:700;padding:2px 6px;border-radius:3px;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0}
.cp-rtype-daily-report{background:#e8f5ee;color:#2a7d4f}
.cp-rtype-weekly-report{background:#e3ecf7;color:#1e4d75}
.cp-rtype-company-report{background:rgba(232,119,26,0.1);color:var(--orange)}
.cp-rtype-strategy{background:#e3e8ef;color:var(--navy)}
.cp-ctx-section{margin-bottom:12px}.cp-ctx-section:last-child{margin-bottom:0}
.cp-ctx-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--orange);margin-bottom:4px}
.cp-ctx-text{font-size:12px;color:var(--text);line-height:1.5}
.cp-ev-filters{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.cp-ev-filter{padding:3px 10px;font-size:10px;font-weight:600;border:1px solid var(--border);border-radius:3px;background:#fff;cursor:pointer;font-family:var(--font-body);color:var(--muted);transition:all .15s}
.cp-ev-filter:hover{border-color:var(--navy);color:var(--navy)}
.cp-ev-filter.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.cp-ev-row{display:flex;gap:10px;align-items:center;padding:5px 0;font-size:12px;border-bottom:1px solid rgba(0,0,0,0.04)}.cp-ev-row:last-child{border-bottom:none}
.cp-ev-date{width:70px;flex-shrink:0;color:var(--muted);font-size:11px}
.cp-ev-ticker{width:55px;flex-shrink:0;font-weight:600;color:var(--navy)}
.cp-ev-type-badge{display:inline-block;font-size:9px;font-weight:600;padding:1px 6px;border-radius:3px;flex-shrink:0;background:var(--bg);color:var(--muted);border:1px solid var(--border)}
.cp-evtype-earnings_result,.cp-evtype-kessan_tanshin{background:#e8f5ee;color:#2a7d4f;border-color:#e8f5ee}
.cp-evtype-dividend{background:#f0e6f6;color:#6b3fa0;border-color:#f0e6f6}
.cp-evtype-guidance{background:#e3ecf7;color:#1e4d75;border-color:#e3ecf7}
.cp-evtype-buyback{background:rgba(232,119,26,0.1);color:var(--orange);border-color:rgba(232,119,26,0.1)}
.cp-ev-brief{flex:1;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-skeleton{padding:8px 0}
.cp-skeleton-line{height:14px;background:linear-gradient(90deg,var(--border) 25%,#eae7e2 50%,var(--border) 75%);background-size:200% 100%;animation:cp-shimmer 1.5s infinite;border-radius:4px;margin-bottom:10px}
.cp-skeleton-line.short{width:65%}
@keyframes cp-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.cp-empty{font-size:12px;color:var(--muted);padding:16px 0;text-align:center}
.cp-empty a{color:var(--orange);text-decoration:none;font-weight:600}

/* ── My Day header ── */
.cp-myday-card{background:var(--white);border:1px solid var(--border);border-left:3px solid var(--navy);border-radius:var(--radius);padding:16px 20px;margin-bottom:20px}
.cp-myday-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:var(--muted);margin-bottom:10px}
.cp-myday-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.cp-myday-col h4{font-size:11px;font-weight:700;color:var(--navy);margin:0 0 6px 0;text-transform:uppercase;letter-spacing:0.04em}
.cp-myday-col ul{margin:0;padding-left:14px}
.cp-myday-col li{font-size:12px;color:var(--text);line-height:1.4;margin-bottom:4px}
.cp-myday-col li .cp-muted{color:var(--muted);font-size:11px}
@media(max-width:900px){.cp-myday-grid{grid-template-columns:1fr 1fr}}

/* ── Send-Topic nuggets ── */
.cp-nugget{background:var(--white);border:1px solid var(--border);border-radius:6px;padding:12px 14px;margin-bottom:10px;position:relative}
.cp-nugget-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:6px}
.cp-nugget-headline{font-size:14px;font-weight:600;color:var(--navy);line-height:1.35}
.cp-nugget-body{font-size:13px;color:var(--text);line-height:1.5;margin-bottom:8px}
.cp-nugget-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:11px;color:var(--muted)}
.cp-source-chip{background:var(--cream);border:1px solid var(--border);border-radius:10px;padding:1px 8px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.04em}
.cp-source-chip.research{color:#1e6091}
.cp-source-chip.morning_call{color:#2d7a3a}
.cp-source-chip.earnings{color:#8b4513}
.cp-source-chip.event{color:#703a8e}
.cp-copy-btn{flex-shrink:0;font-size:11px;font-weight:600;padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:var(--white);color:var(--navy);cursor:pointer;transition:all 0.12s}
.cp-copy-btn:hover{border-color:var(--orange);background:rgba(232,119,26,0.06)}
.cp-copy-btn.copied{background:#2d7a3a;color:#fff;border-color:#2d7a3a}

/* ── Ask-the-Analyst ── */
.cp-ask-item{background:var(--white);border:1px solid var(--border);border-radius:6px;padding:10px 14px;margin-bottom:8px;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.cp-ask-body{flex:1}
.cp-ask-q{font-size:13px;font-weight:600;color:var(--navy);line-height:1.4;margin-bottom:4px}
.cp-ask-ctx{font-size:11px;color:var(--muted)}
.cp-ask-analyst{font-size:11px;color:var(--orange);font-weight:600}
.cp-ask-trigger{display:inline-block;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;padding:1px 6px;border-radius:3px;background:var(--cream);color:var(--muted);margin-right:6px}
.cp-ask-actions{display:flex;gap:4px;flex-shrink:0}
.cp-ask-actions button{font-size:10px;padding:2px 6px;border:1px solid var(--border);border-radius:3px;background:var(--white);color:var(--muted);cursor:pointer}
.cp-ask-actions button:hover{border-color:var(--orange);color:var(--navy)}

/* ── Research card upgrade ── */
.cp-rr-cover{background:rgba(232,119,26,0.05);border-left:2px solid var(--orange);padding:8px 10px;margin:8px 0;font-size:13px;line-height:1.5;color:var(--text);position:relative}
.cp-rr-cover-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:var(--orange);margin-bottom:2px;display:block}
.cp-rr-para{background:var(--cream);padding:6px 10px;margin-bottom:4px;border-radius:4px;font-size:12px;display:flex;align-items:flex-start;gap:8px}
.cp-rr-para-text{flex:1}
.cp-rr-frame-tag{font-size:9px;font-weight:700;text-transform:uppercase;padding:1px 5px;border-radius:3px;flex-shrink:0}
.cp-rr-frame-tag.bull{background:#d4edda;color:#155724}
.cp-rr-frame-tag.bear{background:#f8d7da;color:#721c24}
.cp-rr-frame-tag.surprise{background:#fff3cd;color:#856404}
.cp-rr-frame-tag.thesis{background:#d1ecf1;color:#0c5460}
.cp-rr-frame-tag.risk{background:#fde2e4;color:#721c24}
.cp-rr-frame-tag.datapoint{background:#e2e3e5;color:#383d41}

/* ── Dormant strip ── */
.cp-dormant{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.cp-dormant-pill{font-size:11px;padding:3px 8px;border:1px solid var(--border);border-radius:10px;background:var(--white);color:var(--text)}
.cp-dormant-pill .cp-muted{color:var(--muted);font-size:10px;margin-left:4px}

/* ── Toast ── */
.cp-toast{position:fixed;bottom:24px;right:24px;background:var(--navy);color:#fff;padding:10px 16px;border-radius:6px;font-size:12px;z-index:9999;box-shadow:0 4px 12px rgba(0,0,0,0.2);opacity:0;transform:translateY(10px);transition:all 0.2s}
.cp-toast.show{opacity:1;transform:translateY(0)}

@media(max-width:900px){.cp-grid{grid-template-columns:1fr}}

/* ── Market Data: Fundamentals ────────── */
/* ── Top bar (ticker search + filters) ── */
.md-top-bar{display:flex;align-items:center;gap:12px;padding:12px 24px;border-bottom:1px solid var(--border);background:var(--white);flex-wrap:wrap}
.md-search-wrap{position:relative;flex:0 0 280px}
.md-search-box{width:100%;padding:7px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:var(--font-body);outline:none}
.md-search-box:focus{border-color:var(--orange);box-shadow:0 0 0 2px rgba(232,119,26,0.12)}
.md-search-dropdown{display:none;position:absolute;top:100%;left:0;right:0;background:var(--white);border:1px solid var(--border);border-top:none;border-radius:0 0 6px 6px;max-height:360px;overflow-y:auto;z-index:100;box-shadow:0 8px 24px rgba(0,0,0,0.12)}
.md-search-dropdown.open{display:block}
.md-dd-header{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:var(--muted);padding:8px 12px 3px;background:var(--cream);position:sticky;top:0}
.md-dd-item{display:flex;align-items:center;gap:8px;padding:6px 12px;cursor:pointer;font-size:12px;transition:background 0.1s}
.md-dd-item:hover,.md-dd-item.highlighted{background:rgba(232,119,26,0.06)}
.md-dd-code{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--navy);min-width:42px}
.md-dd-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-dd-analyst{font-size:10px;color:var(--muted)}
.md-fl-badge{font-size:9px;font-weight:700;background:var(--orange);color:var(--white);padding:1px 5px;border-radius:3px}
.md-filter-bar-inline{display:flex;align-items:center;gap:6px;flex:1}
.md-filter-pills{display:flex;gap:4px}
.md-pill{font-size:11px;font-family:var(--font-body);padding:3px 8px;border:1px solid var(--border);border-radius:4px;background:var(--white);cursor:pointer;color:var(--muted);transition:all 0.15s}
.md-pill:hover{border-color:var(--orange);color:var(--navy)}
.md-pill.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.md-pill-count{font-family:var(--font-mono);font-size:10px;opacity:0.7;margin-left:2px}
.md-filter-selects{display:flex;gap:4px}
.md-filter-selects select{font-size:11px;font-family:var(--font-body);padding:4px 6px;border:1px solid var(--border);border-radius:4px;background:var(--white);color:var(--text);outline:none;cursor:pointer}
.md-filter-selects select:focus{border-color:var(--orange)}
.md-top-actions{flex-shrink:0}
.md-main-full{overflow-y:auto;padding:24px 32px;height:calc(100vh - 200px)}

/* ── Two-column sections ── */
.md-two-col{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:24px}
.md-two-col-wide{display:grid;grid-template-columns:3fr 2fr;gap:24px;margin-bottom:24px}
.md-detail-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px}
.md-detail-header h3{font-family:var(--font-display);font-size:22px;font-weight:600}
.md-tk-code-lg{font-family:var(--font-mono);font-size:14px;color:var(--muted);font-weight:400;margin-left:8px}
.md-detail-meta{font-size:13px;color:var(--muted);margin-top:2px}
.md-section{margin-bottom:28px}
.md-section h4{font-family:var(--font-title);font-size:16px;font-weight:600;margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid var(--border)}

/* Ratio cards */
.md-ratios-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.md-ratio-card{background:var(--white);border:1px solid var(--border);border-radius:8px;padding:12px;text-align:center}
.md-ratio-label{font-size:11px;color:var(--muted);margin-bottom:4px}
.md-ratio-value{font-family:var(--font-mono);font-size:16px;font-weight:600;color:var(--navy)}

/* Consensus */
.md-cons-targets{display:flex;flex-direction:column;gap:6px}
.md-cons-row{display:flex;justify-content:space-between;font-size:13px;padding:4px 0;border-bottom:1px solid var(--border)}
.md-cons-val{font-family:var(--font-mono);font-weight:600}
.md-cons-recs{display:flex;flex-direction:column;justify-content:center}
.md-rec-bar{display:flex;height:32px;border-radius:6px;overflow:hidden;font-size:11px;font-weight:600;margin-bottom:6px}
.md-rec-buy{background:#27ae60;color:#fff;display:flex;align-items:center;justify-content:center;min-width:40px}
.md-rec-hold{background:#f39c12;color:#fff;display:flex;align-items:center;justify-content:center;min-width:40px}
.md-rec-sell{background:#c0392b;color:#fff;display:flex;align-items:center;justify-content:center;min-width:40px}
.md-rec-count{font-size:12px;color:var(--muted);text-align:center}

/* Financial statements */
.md-stmt-section{overflow:hidden}
.md-stmt-scroll{overflow-x:auto;max-height:400px;overflow-y:auto}
.md-stmt-table th.num,.md-stmt-table td.num{text-align:right;font-family:var(--font-mono);font-size:12px;white-space:nowrap}
.md-line-item{font-size:12px;white-space:nowrap;max-width:250px;overflow:hidden;text-overflow:ellipsis}

/* Dividends table */
.md-div-table{max-height:300px;overflow-y:auto}

/* Empty states */
.md-empty{padding:40px 20px;text-align:center;color:var(--muted);font-size:14px}
.md-empty-hero{display:flex;flex-direction:column;align-items:center;justify-content:center;height:60vh;gap:12px}
.md-empty-icon{color:var(--border);margin-bottom:8px}
.md-empty-hero h3{font-family:var(--font-display);font-size:22px;font-weight:600;color:var(--navy)}
.md-empty-hero p{max-width:400px;font-size:14px;color:var(--muted)}
.md-ss-grid{display:flex;gap:20px;align-items:flex-start}
.md-ss-main{flex:1}
.md-ss-ratio{font-family:var(--font-mono);font-size:28px;font-weight:700;color:var(--navy)}
.md-ss-label{font-size:12px;color:var(--muted);margin-top:2px}
.md-ss-meta{font-size:11px;color:var(--muted);margin-top:6px}
.md-ss-stats{display:flex;flex-direction:column;gap:6px;min-width:120px}
.md-ss-stat{display:flex;justify-content:space-between;font-size:12px;padding:3px 0;border-bottom:1px solid var(--border)}
.md-ss-stat-label{color:var(--muted)}
.md-ss-stat-val{font-family:var(--font-mono);font-weight:600}
.md-ss-spark{display:flex;align-items:flex-end;gap:1px;height:40px;margin-top:12px}
.md-ss-spark-bar{flex:1;background:linear-gradient(to top,rgba(192,57,43,0.15),rgba(192,57,43,0.4));border-radius:1px 1px 0 0;min-width:2px}
.md-loading{padding:60px;text-align:center;color:var(--muted);font-size:14px}

/* ── Fundamentals Redesign ── */
/* KPI Strip */
.md-kpi-strip{display:flex;gap:0;background:var(--navy);border-radius:8px;padding:0;margin-bottom:24px;overflow:hidden}
.md-kpi-item{flex:1;padding:12px 16px;border-right:1px solid rgba(255,255,255,0.08)}
.md-kpi-item:last-child{border-right:none}
.md-kpi-lbl{font-size:10px;text-transform:uppercase;letter-spacing:0.06em;color:rgba(255,255,255,0.5);margin-bottom:3px}
.md-kpi-val{font-family:var(--font-mono);font-size:16px;font-weight:700;color:#fff}
.md-kpi-sub{font-size:10px;color:rgba(255,255,255,0.35);margin-top:2px}
.md-upside{color:#2ecc71;font-size:12px;font-weight:600;margin-left:4px}
.md-downside{color:#e74c3c;font-size:12px;font-weight:600;margin-left:4px}

/* Valuation table */
.md-val-table{}
.md-val-table table{width:100%;border-collapse:collapse}
.md-val-table td{padding:6px 0;font-size:13px;border-bottom:1px solid rgba(0,0,0,0.04)}
.md-val-table td:first-child{color:var(--muted)}
.md-val-table td:last-child{text-align:right;font-family:var(--font-mono);font-weight:600;color:var(--navy)}
.md-val-group{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;color:var(--muted);padding:10px 0 4px;border-bottom:none!important}

/* Financial charts */
.md-fin-chart{background:var(--white);border:1px solid var(--border);border-radius:10px;padding:20px 24px;margin-bottom:16px}
.md-fin-chart-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.md-fin-chart-header span{font-family:var(--font-title);font-size:15px;font-weight:600}
.md-fin-canvas{height:250px}

/* Financial summary */
.md-fin-summary{margin-bottom:12px}
.md-fin-summary table{width:100%;border-collapse:collapse;font-size:13px}
.md-fin-summary thead th{padding:6px 8px;text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:0.05em;color:var(--muted);font-weight:600;border-bottom:2px solid var(--border)}
.md-fin-summary thead th.num{text-align:right}
.md-fin-summary td{padding:6px 8px;border-bottom:1px solid rgba(0,0,0,0.04);font-size:13px}
.md-fin-summary td.num{text-align:right;font-family:var(--font-mono)}
.md-fin-summary td:first-child{font-weight:500}

/* Full statement toggle */
.md-fin-toggle{margin-bottom:20px}
.md-fin-toggle summary{cursor:pointer;font-size:12px;font-weight:600;color:var(--muted);padding:8px 0;user-select:none;list-style:none}
.md-fin-toggle summary::-webkit-details-marker{display:none}
.md-fin-toggle summary::before{content:'\25B6';display:inline-block;margin-right:6px;font-size:9px;transition:transform 0.15s}
.md-fin-toggle[open] summary::before{transform:rotate(90deg)}

/* Dividend chart + highlight */
.md-div-chart{background:var(--white);border:1px solid var(--border);border-radius:10px;padding:20px 24px;margin-bottom:12px}
.md-div-canvas{height:180px}
.md-div-highlight{display:flex;gap:24px;margin-bottom:8px}
.md-div-hl-item{display:flex;flex-direction:column;gap:2px}
.md-div-hl-label{font-size:10px;text-transform:uppercase;letter-spacing:0.06em;color:var(--muted)}
.md-div-hl-val{font-family:var(--font-mono);font-size:18px;font-weight:700;color:var(--navy)}

/* Short selling compact */
.md-ss-compact{display:flex;align-items:center;gap:20px}
.md-ss-compact .md-ss-ratio{font-size:24px}
.md-ss-stats-row{display:flex;gap:16px;margin-top:8px}
.md-ss-stats-row .md-ss-stat{border-bottom:none;padding:0;gap:6px;display:flex;align-items:baseline;font-size:11px}
.md-ss-stats-row .md-ss-stat-label{color:var(--muted);margin-right:3px}
.md-ss-stats-row .md-ss-stat-val{font-family:var(--font-mono);font-weight:600;font-size:12px}

/* ── Market Data: Macro (Bloomberg-style) ── */
.md-macro-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}
.md-macro-header h2{font-family:var(--font-display);font-size:22px;font-weight:600}
.md-macro-grid{}

/* KPI Strip */
.mm-kpi-strip{display:flex;gap:0;background:var(--navy);border-radius:8px;padding:0;margin-bottom:20px;overflow:hidden}
.mm-kpi-item{flex:1;padding:12px 16px;cursor:pointer;border-right:1px solid rgba(255,255,255,0.08);transition:background 0.15s}
.mm-kpi-item:last-child{border-right:none}
.mm-kpi-item:hover{background:rgba(255,255,255,0.06)}
.mm-kpi-label{font-size:10px;text-transform:uppercase;letter-spacing:0.06em;color:rgba(255,255,255,0.5);margin-bottom:3px}
.mm-kpi-val{font-family:var(--font-mono);font-size:16px;font-weight:700;color:#fff}
.mm-chg-up{color:#2ecc71;font-size:11px;font-weight:600;margin-left:4px}
.mm-chg-down{color:#e74c3c;font-size:11px;font-weight:600;margin-left:4px}
.mm-chg-flat{color:rgba(255,255,255,0.4);font-size:11px;margin-left:4px}

/* Yield Curve */
.mm-yield-section{background:var(--white);border:1px solid var(--border);border-radius:10px;padding:20px 24px;margin-bottom:20px}
.mm-yield-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.mm-yield-header span:first-child{font-family:var(--font-title);font-size:16px;font-weight:600}
.mm-yield-date{font-size:11px;color:var(--muted)}
.mm-yield-chart{height:200px}

/* Data Table */
.mm-table{width:100%;border-collapse:collapse;font-size:13px;background:var(--white);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.mm-table thead th{padding:8px 12px;text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:0.06em;color:var(--muted);font-weight:600;border-bottom:2px solid var(--border);background:var(--cream)}
.mm-table thead th.num{text-align:right}
.mm-cat-row td{padding:10px 12px 4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:var(--muted);border-top:1px solid var(--border);background:var(--cream)}
.mm-cat-accent{display:inline-block;width:3px;height:12px;background:var(--orange);border-radius:2px;margin-right:8px;vertical-align:-1px}
.mm-data-row{cursor:pointer;transition:background 0.1s}
.mm-data-row:hover{background:rgba(232,119,26,0.04)}
.mm-data-row td{padding:8px 12px;border-bottom:1px solid rgba(0,0,0,0.04);vertical-align:middle}
.mm-data-row td.num{text-align:right;font-family:var(--font-mono);font-size:13px}
.mm-indicator{font-weight:600;font-size:13.5px;color:var(--navy)}
.mm-val{font-weight:500;color:var(--text)}
.mm-stale{color:var(--orange);font-weight:600}
.mm-src{font-size:9px;font-weight:600;padding:1px 5px;border-radius:3px;display:inline-block}
.mm-src-fred{background:rgba(0,0,0,0.04);color:var(--muted)}
.mm-src-boj{background:rgba(232,119,26,0.08);color:var(--orange)}
.mm-src-mof{background:rgba(39,174,96,0.08);color:var(--green)}

/* Sparkline (inline) */
.mm-spark{display:inline-flex;align-items:flex-end;gap:1px;height:20px;vertical-align:middle}
.mm-spark-bar{width:4px;background:linear-gradient(to top,rgba(26,39,68,0.12),rgba(26,39,68,0.3));border-radius:1px 1px 0 0}

/* Detail modal (unchanged) */
.md-macro-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--border)}
.md-macro-detail-header h3{font-family:var(--font-title);font-size:20px;font-weight:600}
.md-macro-chart-area{height:300px;margin-bottom:24px}
#md-macro-modal .fin-modal-content{padding:28px 32px;border-radius:12px}

@media(max-width:800px){.mm-kpi-strip{flex-wrap:wrap}.mm-kpi-item{min-width:120px}}

@media(max-width:900px){.md-two-col,.md-two-col-wide{grid-template-columns:1fr}.md-consensus-grid{grid-template-columns:1fr}.md-kpi-strip{flex-wrap:wrap}.md-kpi-item{min-width:100px}.md-top-bar{flex-direction:column;align-items:stretch}.md-search-wrap{flex:1}}

/* ══════════════════════════════════════════════════════════════════
   CONTACTS v2 — CRM redesign (cross-institution view)
   Slide-out panel, entitlement pill, research-prefs accent block.
   ══════════════════════════════════════════════════════════════════ */

/* CSS variables must live at :root, not #tab-contacts — the slide-out
   panel is rendered as a sibling of the tabs (outside #tab-contacts),
   so var(--ct-navy) on .ct-panel-firmbar would fall back to transparent
   when scoped to the tab. That's why the firm name was invisible: white
   text on a transparent-over-white panel background. */
:root {
  --ct-navy: var(--navy);
  --ct-navy-60: #4a5568;
  --ct-navy-40: #718096;
  --ct-navy-20: #a0aec0;
  --ct-navy-10: #cbd5e0;
  --ct-navy-05: #e2e8f0;
  --ct-orange: var(--orange);
  --ct-orange-bg: #fff8ee;
  --ct-cream: #f7f4f0;
  --ct-ok: #2f855a;
  --ct-warn: #c05621;
  --ct-warn-bg: #fef3e7;
  --ct-muted: #a0aec0;
  --ct-ent-b:  #0f9d58;
  --ct-ent-f:  #1a73e8;
  --ct-ent-l:  #e8771a;
  --ct-ent-va: #7b3fbf;
  --ct-ent-empty: #e2e8f0;
}
#tab-contacts {
  font-size: 13px; color: var(--text);
}
.ct-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 0 16px; border-bottom: 1px solid var(--ct-navy-05); }
.ct-audience-tabs { display: flex; gap: 0; border-bottom: 2px solid var(--ct-navy-10); margin: 12px 0 8px; }
.ct-audience-tab { background: none; border: none; padding: 10px 18px; font-size: 14px; font-weight: 500; color: var(--ct-navy); cursor: pointer; border-bottom: 3px solid transparent; margin-bottom: -2px; transition: all 0.12s; font-family: inherit; }
.ct-audience-tab:hover { background: var(--ct-cream); }
.ct-audience-tab.active { border-bottom-color: var(--ct-orange); color: var(--ct-orange); font-weight: 600; }
.ct-audience-count { display: inline-block; margin-left: 6px; padding: 1px 8px; border-radius: 10px; background: var(--ct-navy-10); color: var(--ct-navy); font-family: var(--font-mono, 'JetBrains Mono', monospace); font-size: 11px; font-weight: 600; }
.ct-audience-tab.active .ct-audience-count { background: var(--ct-orange); color: #fff; }

/* ── Citywire prospecting view ── */
.cw-pills { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 8px; }
.cw-pill { padding: 6px 12px; border-radius: 999px; font-size: 12px; font-weight: 500; cursor: pointer; border: 1px solid var(--ct-navy-10); background: transparent; color: var(--ct-navy); transition: all 0.12s; }
.cw-pill:hover { background: var(--ct-cream); }
.cw-pill.active { background: var(--ct-navy); color: #fff; border-color: var(--ct-navy); }
.cw-pill-count { display: inline-block; margin-left: 4px; padding: 0 6px; background: rgba(255,255,255,0.18); border-radius: 8px; font-family: var(--font-mono, 'JetBrains Mono', monospace); font-size: 10px; }
.cw-pill:not(.active) .cw-pill-count { background: var(--ct-navy-10); color: var(--ct-navy); }
.cw-toolbar { display: flex; align-items: center; justify-content: space-between; padding: 6px 0 10px; }
.cw-toggle { font-size: 12px; color: var(--ct-navy); cursor: pointer; user-select: none; display: flex; align-items: center; gap: 6px; }
.cw-count { font-size: 12px; color: var(--ct-muted); font-family: var(--font-mono, 'JetBrains Mono', monospace); }
.cw-table-wrap { border: 1px solid var(--ct-navy-10); border-radius: 6px; overflow: auto; max-height: calc(100vh - 320px); }
.cw-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.cw-table th { text-align: left; background: var(--ct-cream); padding: 8px 10px; font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--ct-muted); border-bottom: 1px solid var(--ct-navy-10); position: sticky; top: 0; z-index: 1; }
.cw-table td { padding: 7px 10px; border-bottom: 1px solid var(--ct-cream); vertical-align: top; }
.cw-table tr:hover td { background: rgba(232,119,26,0.04); }
.cw-row-client { background: rgba(45,138,86,0.06); }
.cw-row-client:hover td { background: rgba(45,138,86,0.10) !important; }
.cw-th-rank, .cw-rank { width: 70px; font-family: var(--font-mono, 'JetBrains Mono', monospace); color: var(--ct-muted); font-size: 11px; }
.cw-th-num, .cw-num { text-align: right; width: 80px; font-family: var(--font-mono, 'JetBrains Mono', monospace); }
.cw-fund { font-weight: 500; color: var(--ct-navy); }
.cw-muted { color: var(--ct-muted); }
.cw-muted-pill { display: inline-block; padding: 1px 6px; background: var(--ct-cream); border-radius: 8px; font-size: 10px; color: var(--ct-muted); margin-left: 4px; }
.cw-badge { display: inline-block; padding: 2px 7px; border-radius: 10px; font-size: 11px; font-weight: 500; }
.cw-client { background: #2d8a56; color: #fff; }
.cw-prospect { background: var(--ct-cream); color: var(--ct-navy); border: 1px solid var(--ct-navy-10); }
.cw-ipreo { background: #1e6fa8; color: #fff; }
.cw-status { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }
.cw-status-client { background: #2d8a56; color: #fff; }
.cw-status-flag { background: var(--ct-orange); color: #fff; }
.cw-status-emailed { background: #6b6b6b; color: #fff; }
.cw-status-promoted { background: #1e6fa8; color: #fff; }
.cw-help { font-size: 11px; color: var(--ct-muted); margin-bottom: 6px; padding: 4px 8px; background: var(--ct-cream); border-radius: 4px; }
.cw-th-edit { width: 110px; }
.cw-th-act { width: 100px; }
.cw-edit { background: rgba(232,119,26,0.025); cursor: text; min-width: 80px; }
.cw-edit-wide { min-width: 200px; }
.cw-edit:hover { background: rgba(232,119,26,0.08); }
.cw-edit:focus { outline: 2px solid var(--ct-orange); outline-offset: -2px; background: #fff; }
.cw-saving { background: rgba(255, 196, 0, 0.15) !important; }
.cw-saved { background: rgba(45, 138, 86, 0.15) !important; transition: background 0.4s; }
.cw-save-err { background: rgba(192, 57, 43, 0.15) !important; }
.cw-row-promoted { background: rgba(30, 111, 168, 0.04); }
.cw-act { text-align: center; }
.cw-btn { padding: 4px 10px; border-radius: 4px; border: 1px solid var(--ct-navy-10); background: #fff; cursor: pointer; font-size: 11px; font-family: var(--font-body); }
.cw-btn:hover { background: var(--ct-cream); }
.cw-btn-promote { background: var(--ct-orange); color: #fff; border-color: var(--ct-orange); font-weight: 600; }
.cw-btn-promote:hover { background: #d36915; }
.cw-btn-primary { background: var(--ct-navy); color: #fff; border-color: var(--ct-navy); font-weight: 600; padding: 7px 16px; font-size: 12px; }
.cw-btn-primary:hover { background: #0d2540; }
.cw-btn-ghost { background: transparent; padding: 7px 14px; font-size: 12px; }

/* Promote modal */
.cw-modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); display: flex; align-items: center; justify-content: center; z-index: 10000; }
.cw-modal { background: #fff; border-radius: 8px; width: 500px; max-width: 92vw; max-height: 90vh; overflow: auto; box-shadow: 0 10px 40px rgba(0,0,0,0.18); }
.cw-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid var(--ct-navy-10); }
.cw-modal-head h3 { margin: 0; font-family: var(--font-display); font-size: 16px; color: var(--ct-navy); font-weight: 600; }
.cw-modal-close { background: none; border: none; font-size: 22px; color: var(--ct-muted); cursor: pointer; line-height: 1; }
.cw-modal-body { padding: 16px 18px; display: flex; flex-direction: column; gap: 12px; }
.cw-modal-row { display: flex; flex-direction: column; gap: 4px; }
.cw-modal-row.two { flex-direction: row; gap: 10px; }
.cw-modal-row.two > div { flex: 1; }
.cw-modal-row label { font-size: 11px; color: var(--ct-muted); text-transform: uppercase; letter-spacing: 0.3px; }
.cw-modal-row input, .cw-modal-row select, .cw-modal-row textarea { padding: 7px 10px; border: 1px solid var(--ct-navy-10); border-radius: 4px; font-size: 13px; font-family: inherit; background: var(--ct-cream); }
.cw-modal-row input:focus, .cw-modal-row select:focus, .cw-modal-row textarea:focus { outline: none; border-color: var(--ct-orange); background: #fff; }
.cw-modal-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 18px; border-top: 1px solid var(--ct-navy-10); background: var(--ct-cream); }
.ct-header h2 { font-family: var(--font-display); font-size: 20px; font-weight: 600; color: var(--ct-navy); padding-left: 14px; border-left: 3px solid var(--ct-orange); }
.ct-btn { padding: 7px 14px; font-size: 13px; font-family: var(--font-body); border-radius: 4px; cursor: pointer; border: 1px solid transparent; transition: all 0.12s; }
.ct-btn-primary { background: var(--ct-navy); color: #fff; }
.ct-btn-primary:hover { background: #1e2a3d; }
.ct-btn-ghost { background: transparent; color: var(--ct-navy); border-color: var(--ct-navy-10); }
.ct-btn-ghost:hover { background: var(--ct-cream); }
.ct-btn-danger { background: transparent; color: var(--ct-warn); border-color: var(--ct-warn); }
.ct-btn-danger:hover { background: var(--ct-warn-bg); }

/* New-contact firm-picker overlay (popup before handing off to the Firm Modal) */
.ct-nc-overlay { position: fixed; inset: 0; background: rgba(10,22,40,0.45); z-index: 10020; display: flex; align-items: flex-start; justify-content: center; padding-top: 12vh; }
.ct-nc-form { background: #fff; border-radius: 6px; box-shadow: 0 12px 40px rgba(0,0,0,0.25); width: 480px; max-width: 92vw; padding: 18px 20px 14px; }
.ct-nc-title { font-size: 14px; font-weight: 600; color: var(--ct-navy); margin-bottom: 12px; }
.ct-nc-title .ct-muted { font-weight: 400; color: var(--ct-navy-40); }
.ct-nc-search { width: 100%; padding: 8px 12px; border: 1px solid var(--ct-navy-10); border-radius: 4px; font-size: 14px; font-family: inherit; box-sizing: border-box; }
.ct-nc-search:focus { outline: none; border-color: var(--ct-orange); box-shadow: 0 0 0 2px rgba(232,119,26,0.18); }
.ct-nc-list { margin-top: 10px; max-height: 320px; overflow-y: auto; border: 1px solid var(--ct-navy-05); border-radius: 4px; }
.ct-nc-item { display: flex; align-items: center; gap: 10px; padding: 8px 12px; cursor: pointer; border-bottom: 1px solid var(--ct-navy-05); font-size: 13px; color: var(--ct-navy); }
.ct-nc-item:last-child { border-bottom: none; }
.ct-nc-item:hover, .ct-nc-item.active { background: var(--ct-cream); }
.ct-nc-name { flex: 1; }
.ct-nc-tier { font-size: 11px; color: var(--ct-navy-40); text-transform: uppercase; letter-spacing: 0.04em; }
.ct-nc-loc { font-size: 11px; color: var(--ct-navy-40); }
.ct-nc-empty { padding: 14px 12px; font-size: 13px; color: var(--ct-navy-40); }
.ct-nc-empty a { color: var(--ct-orange); }
.ct-nc-foot { display: flex; justify-content: flex-end; margin-top: 10px; }
.ct-nc-cancel { background: transparent; border: 1px solid var(--ct-navy-10); color: var(--ct-navy); padding: 6px 14px; font-size: 12px; border-radius: 3px; cursor: pointer; font-family: inherit; }
.ct-nc-cancel:hover { background: var(--ct-cream); }

/* New firm modal — reuses the .ct-nc-overlay backdrop */
.ct-nf-form { background: #fff; border-radius: 6px; box-shadow: 0 12px 40px rgba(0,0,0,0.25); width: 540px; max-width: 92vw; max-height: 88vh; overflow-y: auto; padding: 22px 24px; }
.ct-nf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; margin: 14px 0 12px; }
.ct-nf-grid label { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: var(--ct-navy-40); font-weight: 500; text-transform: uppercase; letter-spacing: 0.04em; }
.ct-nf-grid input, .ct-nf-grid select, .ct-nf-grid textarea { padding: 6px 10px; border: 1px solid var(--ct-navy-10); border-radius: 3px; font-size: 13px; font-family: inherit; background: #fff; color: var(--ct-navy); text-transform: none; letter-spacing: normal; font-weight: 400; }
.ct-nf-grid input:focus, .ct-nf-grid select:focus, .ct-nf-grid textarea:focus { outline: none; border-color: var(--ct-orange); box-shadow: 0 0 0 2px rgba(232,119,26,0.18); }
.ct-nf-wide { grid-column: span 2; }
.ct-nf-err { color: #c5391a; font-size: 12px; min-height: 16px; margin-bottom: 10px; }
.ct-nf-actions { display: flex; gap: 8px; justify-content: flex-end; }
.ct-header-actions { display: flex; align-items: center; gap: 8px; }
.ct-search-row { padding: 12px 0 0; }
.ct-controls { display: flex; align-items: center; gap: 12px; padding: 10px 0 12px; flex-wrap: wrap; }
.ct-search-wrap { position: relative; width: 100%; max-width: 520px; }
.ct-search-input { width: 100%; padding: 8px 12px 8px 32px; font-family: var(--font-body); font-size: 13px; background: #fff; color: var(--ct-navy); border: 1px solid var(--ct-navy-10); border-radius: 4px; transition: border-color 0.12s; }
.ct-search-input:focus { outline: none; border-color: var(--ct-orange); }
.ct-search-wrap::before { content: "⌕"; position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--ct-navy-40); font-size: 14px; pointer-events: none; }
.ct-typeahead { position: absolute; top: calc(100% + 4px); left: 0; right: 0; background: #fff; border: 1px solid var(--ct-navy-10); border-radius: 4px; box-shadow: 0 4px 12px rgba(10,22,40,0.08); z-index: 200; max-height: 360px; overflow-y: auto; display: none; }
.ct-typeahead.open { display: block; }
.ct-typeahead-section { font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ct-navy-40); padding: 8px 12px 4px; font-weight: 600; }
.ct-typeahead-item { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; cursor: pointer; gap: 8px; }
.ct-typeahead-item:hover, .ct-typeahead-item.active { background: var(--ct-orange-bg); }
.ct-typeahead-name { font-weight: 500; color: var(--ct-navy); }
.ct-typeahead-meta { color: var(--ct-navy-40); font-size: 12px; }
.ct-typeahead mark { background: var(--ct-orange-bg); color: var(--ct-navy); font-weight: 600; padding: 0; }
.ct-pills { display: flex; gap: 6px; flex-wrap: wrap; }
.ct-mode-toggle { display: inline-flex; border: 1px solid var(--ct-navy-10); border-radius: 4px; overflow: hidden; background: #fff; }
.ct-mode-btn { padding: 6px 14px; font-family: var(--font-body); font-size: 12px; font-weight: 500; background: transparent; color: var(--ct-navy-60); border: none; cursor: pointer; transition: all 0.12s; }
.ct-mode-btn:hover { background: var(--ct-cream); }
.ct-mode-btn.active { background: var(--ct-navy); color: #fff; }
.ct-mode-btn + .ct-mode-btn { border-left: 1px solid var(--ct-navy-10); }
.ct-sp-select { padding: 6px 10px; font-family: var(--font-body); font-size: 12px; border: 1px solid var(--ct-navy-10); border-radius: 4px; background: #fff; color: var(--ct-navy); cursor: pointer; }
.ct-sp-select:focus { outline: none; border-color: var(--ct-orange); }
.ct-pill { padding: 5px 11px; border-radius: 999px; font-size: 12px; font-weight: 500; cursor: pointer; border: 1px solid var(--ct-navy-10); background: transparent; color: var(--ct-navy); transition: all 0.12s; }
.ct-pill:hover { background: var(--ct-cream); }
.ct-pill.active { background: var(--ct-navy); color: #fff; border-color: var(--ct-navy); }
.ct-inactive-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--ct-navy-60); cursor: pointer; user-select: none; }
.ct-inactive-toggle input { accent-color: var(--ct-orange); }
.ct-count { color: var(--ct-navy-40); font-size: 12px; margin-left: auto; }
.ct-list-wrap { border: 1px solid var(--ct-navy-05); border-radius: 6px; background: #fff; max-height: calc(100vh - 215px); overflow-y: auto; overflow-x: auto; scrollbar-gutter: stable; }
.ct-table { width: 100%; border-collapse: collapse; font-size: 13px; table-layout: fixed; min-width: 1240px; }
.ct-table col.c-name    { width: 18%; }
.ct-table col.c-firm    { width: 22%; }
.ct-table col.c-sp      { width: 120px; }
.ct-table col.c-access  { width: 78px; }
.ct-table col.c-voter   { width: 58px; }
.ct-table col.c-paying  { width: 72px; }
.ct-table col.c-receives{ width: 240px; }
.ct-table col.c-lastseen{ width: 80px; }
.ct-table td.ct-lastseen-cell { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; color: var(--ct-navy-60); white-space: nowrap; }
.ct-table td.ct-lastseen-cell.ct-stale { color: #b87117; }
.ct-table td.ct-lastseen-cell.ct-cold { color: #b33a3a; }
.ct-table td .ct-name, .ct-table td .ct-title, .ct-table td .ct-firm-name,
.ct-table td .ct-sp, .ct-table td .ct-firm-meta {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block;
}
.ct-firm-cell { display: flex; flex-direction: column; gap: 2px; }
.ct-firm-name { font-weight: 500; color: var(--ct-navy); cursor: pointer; }
.ct-firm-name:hover { border-bottom: 1px dashed var(--ct-orange); }
.ct-firm-meta { font-size: 11px; color: var(--ct-navy-40); display: flex; align-items: center; gap: 6px; }
.ct-firm-meta .ct-tier { width: 16px; height: 16px; font-size: 9px; }
.ct-voter-chip { padding: 2px 8px; font-size: 10px; font-weight: 600; letter-spacing: 0.06em; border-radius: 3px; background: #fff8ee; color: var(--ct-orange); border: 1px solid var(--ct-orange); text-transform: uppercase; }
.ct-receives-chips { display: flex; flex-wrap: wrap; gap: 3px; }
.ct-receives-chip { padding: 2px 7px; font-size: 11px; border-radius: 3px; background: #f3e8ff; color: #6b4c8c; font-weight: 500; }
.ct-table thead th { text-align: left; padding: 9px 12px; font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; font-weight: 600; color: var(--ct-navy-40); background: #fafafa; border-bottom: 1px solid var(--ct-navy-05); position: sticky; top: 0; z-index: 2; cursor: pointer; user-select: none; white-space: nowrap; }
.ct-table thead th.nosort { cursor: default; }
.ct-table thead th .sort-ind { margin-left: 4px; color: var(--ct-orange); }
.ct-table tbody tr { border-bottom: 1px solid var(--ct-navy-05); transition: background 0.08s; }
.ct-table tbody tr:hover { background: var(--ct-cream); cursor: pointer; }
.ct-table tbody tr.selected { background: var(--ct-orange-bg); box-shadow: inset 3px 0 0 var(--ct-orange); }
.ct-table tbody tr.inactive { opacity: 0.5; font-style: italic; }
.ct-table td { padding: 8px 12px; vertical-align: middle; }
.ct-name { font-weight: 600; color: var(--ct-navy); }
.ct-title { color: var(--ct-navy-40); font-size: 12px; }
.ct-firm { font-weight: 500; color: var(--ct-navy); cursor: pointer; }
.ct-firm:hover { border-bottom: 1px dashed var(--ct-orange); }
.ct-firm-city { color: var(--ct-navy-40); font-size: 12px; margin-left: 4px; }
.ct-role-chip { display: inline-block; padding: 2px 8px; border-radius: 3px; background: var(--ct-navy-05); color: var(--ct-navy-60); font-size: 11px; font-weight: 500; }
.ct-updated { font-family: var(--font-mono); font-size: 12px; color: var(--ct-navy-60); }
.ct-ent { display: inline-flex; gap: 1px; padding: 2px; background: var(--ct-navy-05); border-radius: 3px; font: 600 9px / 1 var(--font-mono); }
.ct-ent-slot { width: 14px; height: 14px; display: inline-flex; align-items: center; justify-content: center; background: var(--ct-ent-empty); color: var(--ct-navy-20); border-radius: 2px; }
.ct-ent-slot.on { color: #fff; }
.ct-ent-slot.b.on { background: var(--ct-ent-b); }
.ct-ent-slot.f.on { background: var(--ct-ent-f); }
.ct-ent-slot.l.on { background: var(--ct-ent-l); }
.ct-ent-slot.v.on { background: var(--ct-ent-va); }
.ct-pay { font-family: var(--font-mono); font-size: 13px; display: inline-flex; align-items: center; gap: 4px; }
.ct-pay-glyph { font-size: 11px; line-height: 1; }
.ct-pay.active { color: var(--ct-ok); }
.ct-pay.expired { color: var(--ct-warn); }
.ct-pay.none { color: var(--ct-muted); }
.ct-pay.trial { color: var(--ct-navy-60); }
.ct-tier { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; font-size: 10px; font-weight: 700; font-family: var(--font-mono); }
.ct-tier.a { background: var(--ct-navy); color: #fff; }
.ct-tier.b { border: 1px solid var(--ct-navy); color: var(--ct-navy); background: #fff; }
.ct-tier.c { border: 1px solid var(--ct-navy-40); color: var(--ct-navy-40); background: #fff; }
.ct-voter { color: var(--ct-ok); font-weight: 700; }
.ct-empty { text-align: center; padding: 48px 20px; color: var(--ct-navy-40); }
.ct-empty button { margin-top: 12px; }
.ct-panel-overlay { position: fixed; inset: 0; background: rgba(10,22,40,0.15); z-index: 1049; display: none; animation: ct-fade 0.18s ease-out; }
.ct-panel-overlay.open { display: block; }
@keyframes ct-fade { from { opacity: 0 } to { opacity: 1 } }
.ct-panel { position: fixed; top: 0; right: 0; height: 100vh; width: 440px; background: #fff; z-index: 1050; box-shadow: -12px 0 32px rgba(10,22,40,0.08); transform: translateX(100%); transition: transform 0.2s cubic-bezier(0.2,0.8,0.2,1); display: flex; flex-direction: column; font-size: 13px; border-left: 1px solid var(--ct-navy-05); }
.ct-panel.open { transform: translateX(0); }

/* Firm context strip — navy */
.ct-panel-firmbar { background: var(--ct-navy); color: #fff; padding: 14px 18px 12px; }
.ct-panel-firmbar-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.ct-panel-firmbar-left { flex: 1; min-width: 0; }
.ct-panel-firmbar-meta { font-size: 10px; color: rgba(255,255,255,0.55); letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 3px; }
.ct-panel-firmbar .firm-name { font-size: 15px; font-weight: 600; letter-spacing: 0.01em; cursor: pointer; border-bottom: 1px dashed rgba(255,255,255,0.3); display: inline-block; line-height: 1.2; }
.ct-panel-firmbar .firm-name:hover { border-bottom-color: var(--ct-orange); color: #fddba7; }
.ct-panel-firmbar-right { display: flex; gap: 6px; align-items: center; flex-shrink: 0; }
.ct-panel-firmbar .pay-chip { padding: 2px 8px; border-radius: 3px; font-size: 9.5px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; }
.ct-panel-firmbar .pay-chip.yes { background: rgba(39,174,96,0.25); color: #6fe397; }
.ct-panel-firmbar .pay-chip.no  { background: rgba(192,57,43,0.25); color: #ff9e93; }
.ct-panel-firmbar .pay-chip.ex  { background: rgba(232,119,26,0.25); color: #ffc98a; }
.ct-panel-firmbar .voter-pill { padding: 2px 8px; border-radius: 3px; background: rgba(232,119,26,0.25); color: #ffc98a; font-size: 9.5px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; }
.ct-panel-firmbar .close-x { background: transparent; border: none; color: rgba(255,255,255,0.6); cursor: pointer; font-size: 18px; padding: 0 4px; line-height: 1; }
.ct-panel-firmbar .close-x:hover { color: var(--ct-orange); }
/* Firm-mode firmbar: firm name is the dominant element */
.ct-panel-firmbar.ct-firm-mode { padding: 18px 20px 16px; }
.ct-panel-firmbar.ct-firm-mode .ct-firm-title { color: #fff; font-size: 20px; font-weight: 700; letter-spacing: 0.01em; line-height: 1.2; margin-top: 2px; word-wrap: break-word; }

/* Identity strip — cream */
.ct-panel-identity { padding: 14px 18px 12px; border-bottom: 1px solid var(--ct-navy-05); background: var(--cream); display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.ct-panel-identity-left { flex: 1; min-width: 0; }
.ct-panel-name { font-size: 20px; font-weight: 600; color: var(--ct-navy); line-height: 1.15; }
.ct-panel-sub { color: var(--ct-navy-60); font-size: 12px; margin-top: 2px; }
.ct-panel-meta-row { display: flex; align-items: center; gap: 8px; margin-top: 6px; font-size: 11.5px; flex-wrap: wrap; }
.ct-panel-meta-row a { color: var(--ct-navy); text-decoration: none; border-bottom: 1px dashed transparent; cursor: pointer; }
.ct-panel-meta-row a:hover { border-bottom-color: var(--ct-orange); }
.ct-panel-meta-row .sep { color: var(--ct-navy-10); }
.ct-panel-meta-row .loc { color: var(--ct-navy-60); font-family: var(--font-mono); font-size: 10.5px; }
.ct-panel-identity-right { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
.ct-panel-edit-btn { background: #fff; border: 1px solid var(--ct-navy-10); border-radius: 4px; padding: 5px 12px; font-size: 11.5px; font-weight: 500; color: var(--ct-navy); cursor: pointer; font-family: var(--font-body); }
.ct-panel-edit-btn:hover { border-color: var(--ct-orange); color: var(--ct-orange); }

.ct-panel-close { position: absolute; top: 10px; right: 12px; background: transparent; border: none; cursor: pointer; font-size: 18px; color: var(--ct-navy-40); padding: 4px 8px; }
.ct-panel-close:hover { color: var(--ct-navy); }

/* Body */
.ct-panel-body { flex: 1; overflow-y: auto; padding: 16px 18px 40px; }

/* Section label */
.ct-section-label { font-size: 10.5px; font-weight: 700; color: var(--ct-navy-40); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 8px; margin-top: 2px; display: flex; align-items: center; justify-content: space-between; }
.ct-section-label.accent { color: var(--ct-orange); padding-left: 8px; border-left: 2px solid var(--ct-orange); }

/* Access & Entitlements card */
.ct-ent-card { border: 1px solid var(--ct-navy-05); border-radius: 6px; padding: 12px 14px; margin-bottom: 18px; background: #fff; }
.ct-ent-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px; }
.ct-ent-row { display: flex; align-items: center; gap: 8px; }
.ct-ent-sq { width: 20px; height: 20px; border-radius: 3px; display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-size: 9px; font-weight: 700; color: #fff; flex-shrink: 0; }
.ct-ent-sq.off { background: #f3efe8; color: #c2bbad; }
.ct-ent-sq.b   { background: var(--ct-ent-b); }
.ct-ent-sq.f   { background: var(--ct-ent-f); }
.ct-ent-sq.l   { background: var(--ct-ent-l); }
.ct-ent-sq.v   { background: var(--ct-ent-va); }
.ct-ent-row-label { flex: 1; font-size: 11.5px; color: var(--ct-navy); font-weight: 500; }
.ct-ent-row-status { font-size: 10px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--ct-navy-40); }
.ct-ent-row-status.on { color: #27ae60; }

/* Firm panel — stats strip + contacts list */
.ct-stats-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; border: 1px solid var(--ct-navy-05); border-radius: 6px; margin-bottom: 18px; background: #fff; overflow: hidden; }
.ct-stat-cell { padding: 10px 8px; text-align: center; border-right: 1px solid var(--ct-navy-05); }
.ct-stat-cell:last-child { border-right: none; }
.ct-stat-val { font-family: var(--font-mono); font-size: 18px; font-weight: 600; color: var(--ct-navy); line-height: 1; }
.ct-stat-val.zero { color: var(--ct-navy-20); font-weight: 400; }
.ct-stat-lbl { font-size: 9.5px; font-weight: 600; color: var(--ct-navy-40); text-transform: uppercase; letter-spacing: 0.06em; margin-top: 4px; }
.ct-contact-row { display: flex; align-items: center; gap: 10px; padding: 9px 10px; border: 1px solid var(--ct-navy-05); border-radius: 4px; margin-bottom: 5px; background: #fff; cursor: pointer; transition: background 0.08s, border-color 0.08s; }
.ct-contact-row:hover { background: var(--ct-orange-bg); border-color: var(--ct-orange); }
.ct-contact-row.inactive { opacity: 0.55; }
.ct-contact-row-main { flex: 1; min-width: 0; }
.ct-contact-row-name { font-size: 13px; font-weight: 600; color: var(--ct-navy); display: flex; align-items: center; gap: 6px; }
.ct-contact-row-name .primary-dot { font-size: 10px; color: var(--ct-orange); }
.ct-contact-row-meta { font-size: 11px; color: var(--ct-navy-60); margin-top: 2px; display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.ct-contact-row-meta .dot { color: var(--ct-navy-10); }
.ct-contact-row-right { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.ct-contact-row-voter { font-size: 9px; font-weight: 700; letter-spacing: 0.06em; padding: 2px 6px; background: var(--ct-orange); color: #fff; border-radius: 3px; }
.ct-firm-kv { display: grid; grid-template-columns: auto 1fr; gap: 3px 10px; font-size: 12px; margin-top: 6px; }
.ct-firm-kv-k { color: var(--ct-navy-40); font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.05em; font-weight: 600; padding-top: 2px; }
.ct-firm-kv-v { color: var(--ct-navy); font-weight: 500; }
.ct-firm-kv-v.mono { font-family: var(--font-mono); font-weight: 400; }
.ct-firm-aliases { font-size: 11px; color: var(--ct-navy-60); margin-top: 8px; font-style: italic; }
.ct-back-link { display: inline-block; font-size: 11px; color: var(--ct-orange); cursor: pointer; margin-bottom: 8px; border-bottom: 1px dashed transparent; }
.ct-back-link:hover { border-bottom-color: var(--ct-orange); }

/* Revenue card */
.ct-rev-card { border: 1px solid var(--ct-navy-05); border-radius: 6px; padding: 12px 14px; margin-bottom: 18px; background: #fff; }
.ct-rev-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ct-rev-cell { display: flex; flex-direction: column; gap: 3px; }
.ct-rev-cell-label { font-size: 10px; font-weight: 700; color: var(--ct-navy-40); text-transform: uppercase; letter-spacing: 0.06em; }
.ct-rev-cell-val { font-family: var(--font-mono); font-size: 18px; font-weight: 600; color: var(--ct-navy); line-height: 1.1; }
.ct-rev-cell-val.zero { color: var(--ct-navy-20); font-weight: 400; }
.ct-rev-cell.highlight .ct-rev-cell-val { color: #27ae60; }
.ct-rev-cell.highlight .ct-rev-cell-val.zero { color: var(--ct-navy-20); }
.ct-rev-foot { margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--ct-navy-05); font-size: 10.5px; color: var(--ct-navy-60); font-family: var(--font-mono); }

/* Research preferences card */
.ct-prefs-card { border: 2px solid var(--ct-navy-05); border-radius: 6px; padding: 14px 14px 12px; margin-bottom: 18px; background: #fff; }
.ct-prefs-card.editing { border-color: var(--ct-orange); background: #fffaf3; }

.ct-pref-block { margin-bottom: 12px; }
.ct-pref-block:last-child { margin-bottom: 0; }
.ct-pref-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 5px; }
.ct-pref-title { font-size: 11px; font-weight: 700; color: var(--ct-navy); text-transform: uppercase; letter-spacing: 0.06em; }
.ct-pref-sub { font-size: 10.5px; color: var(--ct-navy-60); margin-left: 8px; font-weight: 400; text-transform: none; letter-spacing: 0; }
.ct-pref-count { font-size: 10px; color: var(--ct-navy-40); font-family: var(--font-mono); }
.ct-pref-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.ct-pref-empty { font-size: 11.5px; color: var(--ct-navy-20); font-style: italic; }

/* Stocks tray */
.ct-stocks-tray { display: flex; flex-wrap: wrap; gap: 4px; padding: 6px 8px; background: var(--cream); border-radius: 4px; font-family: var(--font-mono); font-size: 11.5px; }
.ct-stocks-tray .stock-tag { padding: 2px 6px; background: #fff; border: 1px solid var(--ct-navy-05); border-radius: 3px; color: var(--ct-navy); font-weight: 500; }

/* Chips */
.ct-chip-group { display: flex; flex-wrap: wrap; gap: 4px; }
.ct-chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 9px; border-radius: 12px; background: #eef2f7; color: var(--ct-navy); font-size: 11px; font-weight: 500; border: 1px solid #d7dde5; white-space: nowrap; }
.ct-chip.mono { font-family: var(--font-mono); font-size: 11px; }
.ct-chip.removable { cursor: pointer; padding-right: 20px; position: relative; }
.ct-chip.removable::after { content: "×"; position: absolute; right: 6px; top: 50%; transform: translateY(-50%); color: var(--ct-navy-40); font-size: 10px; }
.ct-chip.removable:hover { background: var(--ct-warn-bg); }
.ct-chip.removable:hover::after { color: var(--ct-warn); }

/* Type chips (coloured by research type) */
.ct-type-chip { display: inline-flex; align-items: center; padding: 3px 9px; border-radius: 12px; font-size: 11px; font-weight: 600; letter-spacing: 0.02em; border: 1px solid transparent; }
.ct-type-chip.daily    { background: #e8f5e9; color: #2e7d32; border-color: #e8f5e9; }
.ct-type-chip.weekly   { background: #e3f2fd; color: #1565c0; border-color: #e3f2fd; }
.ct-type-chip.stock    { background: #fff3e0; color: #e65100; border-color: #fff3e0; }
.ct-type-chip.sector   { background: #fff3e0; color: #e65100; border-color: #fff3e0; }
.ct-type-chip.strategy { background: #f3e8ff; color: #7c3aed; border-color: #f3e8ff; }
.ct-type-chip.macro    { background: #f3e8ff; color: #7c3aed; border-color: #f3e8ff; }

/* Collapsible */
.ct-collapse { border-top: 1px solid var(--ct-navy-05); padding-top: 10px; margin-top: 10px; }
.ct-collapse-head { display: flex; justify-content: space-between; align-items: center; cursor: pointer; user-select: none; }
.ct-collapse-head .title { font-size: 11px; font-weight: 700; color: var(--ct-navy); text-transform: uppercase; letter-spacing: 0.06em; }
.ct-collapse-head .chev { font-size: 12px; color: var(--ct-navy-40); transition: transform 0.12s; }
.ct-collapse.open .ct-collapse-head .chev { transform: rotate(90deg); }
.ct-collapse-body { margin-top: 10px; display: none; }
.ct-collapse.open .ct-collapse-body { display: block; }

/* 2-col KV grid (used in collapsibles) */
.ct-kv-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; }
.ct-kv-label { font-size: 9.5px; font-weight: 700; color: var(--ct-navy-40); text-transform: uppercase; letter-spacing: 0.07em; margin-bottom: 2px; }
.ct-kv-val { font-size: 12px; color: var(--ct-navy); font-weight: 500; }
.ct-kv-val.mono { font-family: var(--font-mono); font-weight: 400; }
.ct-kv-val.empty { color: var(--ct-navy-20); font-weight: 400; font-style: italic; }
.ct-kv-wide { grid-column: 1 / -1; }

/* Notes */
.ct-notes-wrap { margin-top: 18px; }
.ct-notes { font-family: var(--font-body); line-height: 1.5; color: var(--ct-navy); white-space: pre-wrap; word-break: break-word; font-size: 12px; padding: 10px 12px; background: var(--cream); border-radius: 4px; border: 1px solid var(--ct-navy-05); }
.ct-notes.empty { color: var(--ct-navy-20); font-style: italic; }

/* Audit footer */
.ct-panel-audit { margin-top: 14px; padding-top: 10px; border-top: 1px solid var(--ct-navy-05); font-size: 10.5px; color: var(--ct-navy-40); font-family: var(--font-mono); display: flex; justify-content: space-between; }
.ct-panel-audit a { color: var(--ct-navy-40); cursor: pointer; }
.ct-panel-audit a:hover { color: var(--ct-orange); }

/* Legacy edit-mode classes — still used by renderPanelEdit */
.ct-panel-header { padding: 16px 20px 14px; border-bottom: 1px solid var(--ct-navy-05); background: #fff; position: relative; }
.ct-panel-email { font-family: var(--font-mono); font-size: 12px; color: var(--ct-navy-60); margin-top: 4px; word-break: break-all; }
.ct-panel-loc { color: var(--ct-navy-40); font-size: 12px; margin-top: 2px; }
.ct-panel-stats { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
.ct-section { padding: 16px 20px; border-bottom: 1px solid var(--ct-navy-05); }
.ct-section.prefs { border-left: 3px solid var(--ct-orange); padding-left: 17px; background: linear-gradient(to right, rgba(232,119,26,0.02), transparent 40%); }
.ct-prefs-row { display: grid; grid-template-columns: 88px 1fr; gap: 10px; padding: 6px 0; }
.ct-prefs-key { font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; font-weight: 500; color: var(--ct-navy-40); padding-top: 4px; }
.ct-prefs-val { color: var(--ct-navy); }
.ct-prefs-val.empty { color: var(--ct-navy-20); }
.ct-panel input[type="text"], .ct-panel input[type="email"], .ct-panel input[type="tel"], .ct-panel select, .ct-panel textarea { width: 100%; padding: 6px 10px; font-family: var(--font-body); font-size: 13px; border: 1px solid var(--ct-navy-10); border-radius: 3px; background: #fff; color: var(--ct-navy); }
.ct-panel input:focus, .ct-panel select:focus, .ct-panel textarea:focus { outline: none; border-color: var(--ct-orange); }
.ct-panel textarea { min-height: 80px; resize: vertical; }
.ct-toggle-row { display: flex; justify-content: space-between; align-items: center; padding: 5px 0; font-size: 13px; }
.ct-toggle-row label { color: var(--ct-navy-60); cursor: pointer; }
.ct-multiselect { border: 1px solid var(--ct-navy-10); border-radius: 3px; padding: 6px; min-height: 36px; display: flex; flex-wrap: wrap; gap: 4px; align-items: flex-start; cursor: text; background: #fff; position: relative; }
.ct-multiselect input { border: none; outline: none; flex: 1; min-width: 80px; padding: 2px 4px; font-size: 13px; }
.ct-ms-dropdown { position: absolute; top: 100%; left: 0; right: 0; background: #fff; border: 1px solid var(--ct-navy-10); border-radius: 3px; box-shadow: 0 4px 12px rgba(10,22,40,0.1); max-height: 200px; overflow-y: auto; z-index: 1051; margin-top: 2px; }
.ct-ms-option { padding: 6px 10px; cursor: pointer; font-size: 13px; }
.ct-ms-option:hover, .ct-ms-option.active { background: var(--ct-orange-bg); }
.ct-warn-banner { padding: 10px 14px; margin: 12px 20px 0; background: var(--ct-warn-bg); color: var(--ct-warn); border-radius: 3px; font-size: 12px; line-height: 1.4; }
.ct-panel-footer { padding: 12px 20px; border-top: 1px solid var(--ct-navy-05); display: flex; justify-content: space-between; align-items: center; gap: 8px; background: #fafafa; }
.ct-panel-footer .ct-btn { font-size: 13px; padding: 7px 14px; }
.ct-footer-right { display: flex; gap: 8px; }
.ct-panel-loading { padding: 32px 20px; text-align: center; color: var(--ct-navy-40); }
.ct-panel-error { padding: 12px 20px; color: var(--ct-warn); font-size: 12px; background: var(--ct-warn-bg); }

/* ══════════════════════════════════════════════════════════
   FIRM MODAL — standalone centered popup, opened from anywhere
   ══════════════════════════════════════════════════════════ */
.fm-backdrop {
  position: fixed; inset: 0; background: rgba(10, 22, 40, 0.52);
  opacity: 0; pointer-events: none; transition: opacity 180ms ease-out;
  z-index: 9000;
}
.fm-backdrop.open { opacity: 1; pointer-events: auto; }
.fm-modal {
  /* Centre via inset:0 + margin:auto so the scrollbar can never skew it.
     Width measured from 100% (ICB — excludes scrollbar), NOT 100vw: the old
     left:50% / 100vw combo drifted off-centre when body.fm-open hid the page
     scrollbar. transform is animation-only now (scale), never positioning. */
  position: fixed; inset: 0; margin: auto;
  width: min(1000px, calc(100% - 48px));
  height: min(85vh, 960px);
  background: #fff; border-radius: 10px;
  box-shadow: 0 30px 80px rgba(0,0,0,0.35), 0 2px 4px rgba(0,0,0,0.08);
  display: flex; flex-direction: column; overflow: hidden;
  opacity: 0; pointer-events: none; transform: scale(0.97);
  transition: opacity 180ms ease-out, transform 180ms ease-out;
  z-index: 9001; font-family: var(--font-body);
}
.fm-modal.open { opacity: 1; pointer-events: auto; transform: scale(1); }
body.fm-open { overflow: hidden; }

/* ══════════════════════════════════════════════════════════
   ASK FINANCE — lowkey button in sub-nav, opens centered modal
   ══════════════════════════════════════════════════════════ */
.af-trigger {
  position: absolute; right: 16px; top: 50%; transform: translateY(-50%);
  padding: 5px 12px; font-family: var(--font-body);
  font-size: 11px; font-weight: 600; color: var(--muted); background: transparent;
  border: 1px solid var(--border); border-radius: 999px; cursor: pointer;
  display: inline-flex; align-items: center; gap: 5px; transition: all 0.15s;
  letter-spacing: 0.02em;
}
.af-trigger:hover { color: var(--orange); border-color: var(--orange); background: #fff; }
.af-trigger-kbd { font-family: var(--font-mono); font-size: 9px; opacity: 0.55; padding-left: 3px; }
.af-modal {
  position: fixed; top: 50%; left: 50%; transform: translate(-50%, -48%) scale(0.97);
  width: min(640px, calc(100vw - 48px));
  max-height: min(75vh, 720px);
  background: #fff; border-radius: 10px;
  box-shadow: 0 30px 80px rgba(0,0,0,0.35), 0 2px 4px rgba(0,0,0,0.08);
  display: flex; flex-direction: column; overflow: hidden;
  opacity: 0; pointer-events: none; transition: opacity 180ms ease-out, transform 180ms ease-out;
  z-index: 9001; font-family: var(--font-body);
}
.af-modal.open { opacity: 1; pointer-events: auto; transform: translate(-50%, -50%) scale(1); }
.af-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid var(--border); background: var(--navy); color: #fff; }
.af-head-title { font-size: 13px; font-weight: 600; letter-spacing: 0.02em; }
.af-head-meta { font-size: 11px; color: rgba(255,255,255,0.55); }
.af-close { background: transparent; border: none; color: rgba(255,255,255,0.7); font-size: 18px; cursor: pointer; padding: 4px 8px; border-radius: 4px; }
.af-close:hover { background: rgba(255,255,255,0.1); color: #fff; }
.af-body { padding: 14px 18px; display: flex; flex-direction: column; gap: 10px; overflow: hidden; }
.af-input-row { display: flex; gap: 8px; align-items: center; }
.af-input { flex: 1; padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; font-family: inherit; background: #fff; }
.af-input:focus { outline: none; border-color: var(--orange); }
.af-suggestions { display: flex; flex-wrap: wrap; gap: 6px; }
.af-suggest-btn { font-size: 11px; padding: 4px 10px; background: var(--cream); border: 1px solid var(--border); border-radius: 999px; cursor: pointer; color: var(--text); font-family: inherit; }
.af-suggest-btn:hover { background: #fff; border-color: var(--orange); }
.af-transcript { font-size: 13px; line-height: 1.55; overflow-y: auto; flex: 1 1 auto; min-height: 0; padding-right: 4px; }

.fm-hero { background: #0a1628; color: #fff; padding: 18px 22px 14px; flex: 0 0 auto; }
.fm-hero-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.fm-hero-left { display: flex; align-items: center; gap: 12px; min-width: 0; flex-wrap: wrap; }
.fm-hero-name { font-size: 20px; font-weight: 600; letter-spacing: -0.01em; }
.fm-hero-meta { font-size: 12px; color: rgba(255,255,255,0.65); padding-left: 10px; border-left: 1px solid rgba(255,255,255,0.15); }
.fm-hero-right { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; }
.fm-close { background: transparent; border: none; color: rgba(255,255,255,0.7); font-size: 18px; cursor: pointer; padding: 4px 8px; border-radius: 4px; }
.fm-close:hover { background: rgba(255,255,255,0.1); color: #fff; }

.fm-hero-meta-row { display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px; margin-top: 14px; padding-top: 12px; border-top: 1px solid rgba(255,255,255,0.08); }
.fm-hero-meta-cell { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fm-meta-k { font-size: 10px; color: rgba(255,255,255,0.5); text-transform: uppercase; letter-spacing: 0.06em; }
.fm-meta-v { font-size: 13px; color: #fff; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fm-muted { color: rgba(255,255,255,0.5); }

.fm-tier { display: inline-block; font-size: 10px; font-weight: 700; padding: 3px 8px; border-radius: 3px; letter-spacing: 0.06em; background: rgba(255,255,255,0.15); color: #fff; }
.fm-tier-core { background: #e8771a; }
.fm-tier-prospect { background: #3d7fa8; }
.fm-tier-occasional { background: rgba(255,255,255,0.2); }

.fm-tabs { display: flex; gap: 0; padding: 0 22px; background: #fafafa; border-bottom: 1px solid #e5e3de; flex: 0 0 auto; }
.fm-tab { background: transparent; border: none; padding: 12px 18px; font-size: 13px; font-weight: 500; color: #6b6b6b; cursor: pointer; border-bottom: 2px solid transparent; transition: color 120ms, border-color 120ms; font-family: inherit; }
.fm-tab:hover { color: #2b2b2b; }
.fm-tab.active { color: #0a1628; border-bottom-color: #e8771a; }

.fm-tab-body { flex: 1 1 auto; overflow-y: auto; padding: 20px 22px; background: #f9f7f3; }
.fm-tab-body > :first-child { margin-top: 0; }

.fm-kpi-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
.fm-cs-wrap { overflow-x: auto; }
.fm-cs-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.fm-cs-table th { text-align: right; padding: 6px 8px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; font-size: 10px; border-bottom: 1px solid var(--border); }
.fm-cs-table td { text-align: right; padding: 6px 8px; font-family: var(--font-mono); color: var(--text); border-bottom: 1px solid var(--cream); }
.fm-cs-table tr:last-child td { border-bottom: none; }
.fm-cs-table th.fm-cs-month, .fm-cs-table td.fm-cs-month { text-align: left; font-family: var(--font-body); color: var(--navy); font-weight: 500; }
.fm-cs-table th.fm-cs-total, .fm-cs-table td.fm-cs-total { color: var(--navy); font-weight: 600; }
.fm-kpi { background: #fff; border: 1px solid #e5e3de; border-radius: 6px; padding: 12px 14px; }
.fm-kpi-val { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 18px; font-weight: 600; color: #0a1628; line-height: 1.1; }
.fm-kpi-val.pos { color: #2a7d2e; }
.fm-kpi-val.mid { color: #b87117; }
.fm-kpi-val.neg { color: #b33a3a; }
.fm-kpi-lbl { font-size: 10px; color: #6b6b6b; text-transform: uppercase; letter-spacing: 0.06em; margin-top: 4px; }

.fm-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.fm-section { background: #fff; border: 1px solid #e5e3de; border-radius: 6px; padding: 14px 16px; }
.fm-section-title { font-size: 12px; font-weight: 600; color: #0a1628; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 10px; }
.fm-section-note { font-size: 12px; color: #6b6b6b; padding: 8px 0; }
.fm-chart-wrap { position: relative; height: 200px; width: 100%; }
.fm-pad { padding: 10px 0; }
.fm-muted { color: #9a9590; }

.fm-list-row { display: flex; align-items: center; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #f2efe9; gap: 10px; }
.fm-list-row:last-child { border-bottom: none; }
.fm-list-main { min-width: 0; flex: 1 1 auto; }
.fm-list-name { font-size: 13px; color: #2b2b2b; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fm-list-sub { font-size: 11px; color: #6b6b6b; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fm-list-right { font-size: 11px; color: #6b6b6b; font-family: 'JetBrains Mono', monospace; flex: 0 0 auto; }

.fm-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.fm-table th { text-align: left; padding: 8px 10px; font-weight: 600; font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em; color: #6b6b6b; border-bottom: 1px solid #e5e3de; background: #fafafa; position: sticky; top: 0; }
.fm-table td { padding: 10px; border-bottom: 1px solid #f2efe9; vertical-align: middle; }
.fm-table tr:hover td { background: #fcfaf5; }
.fm-row-inactive td { opacity: 0.55; }

.fm-c-name { display: inline-flex; align-items: center; gap: 6px; color: #2b2b2b; font-weight: 500; }
.fm-primary-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: #e8771a; }
.fm-voter { display: inline-block; font-size: 9px; font-weight: 700; padding: 1px 5px; border-radius: 2px; background: #b33a3a; color: #fff; letter-spacing: 0.05em; }
.fm-c-loc { font-size: 11px; color: #6b6b6b; font-weight: 400; padding-left: 4px; }
.fm-c-sub { font-size: 11px; color: #6b6b6b; margin-top: 2px; line-height: 1.4; max-width: 520px; }
.fm-entity-pill { display: inline-block; font-size: 9px; font-weight: 700; padding: 1px 6px; border-radius: 3px; letter-spacing: 0.05em; color: #fff; vertical-align: middle; }
.fm-ent-cwi           { background: #2c5e7d; }   /* slate blue — Capital World Investors */
.fm-ent-cii           { background: #5a7a3d; }   /* forest green — Capital International Investors */
.fm-ent-crgi          { background: #7a4a8c; }   /* muted purple — Capital Research Global Investors */
.fm-ent-capital-group { background: #6b6b6b; }   /* grey — umbrella entity (HQ liaison/admin) */

.fm-chip { display: inline-block; font-size: 10px; padding: 2px 6px; border-radius: 3px; background: #eef3f7; color: #3d7fa8; margin-right: 4px; margin-bottom: 2px; }

.fm-ent { display: inline-flex; gap: 3px; }
.fm-ent-slot { display: inline-block; width: 18px; height: 18px; line-height: 18px; text-align: center; font-size: 9px; font-weight: 700; border-radius: 3px; background: #e5e3de; color: #a8a59f; }
.fm-ent-slot.on.bl { background: #2a7d2e; color: #fff; }
.fm-ent-slot.on.fs { background: #3d7fa8; color: #fff; }
.fm-ent-slot.on.ls { background: #e8771a; color: #fff; }
.fm-ent-slot.on.va { background: #7f4fc4; color: #fff; }

.fm-skeleton { background: linear-gradient(90deg, #eeece5 0%, #f7f4f0 50%, #eeece5 100%); background-size: 200% 100%; animation: fm-sk 1.2s ease-in-out infinite; border-radius: 4px; }
@keyframes fm-sk { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

.fm-err { padding: 20px; text-align: center; color: #b33a3a; font-size: 13px; }
.fm-coming { padding: 40px 20px; text-align: center; color: #9a9590; font-size: 13px; font-style: italic; }

/* Phase 3 — additional tab + edit-mode styles */
.fm-hero-btn { background: rgba(255,255,255,0.12); border: 1px solid rgba(255,255,255,0.18); color: #fff; padding: 5px 12px; border-radius: 4px; font-size: 12px; cursor: pointer; font-family: inherit; }
.fm-hero-btn:hover { background: rgba(255,255,255,0.22); }

.fm-num { text-align: right; font-family: 'JetBrains Mono', ui-monospace, monospace; }
.fm-mono { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; }

.fm-fl { display: inline-block; font-size: 9px; font-weight: 700; padding: 1px 4px; border-radius: 2px; background: #e8771a; color: #fff; margin-left: 4px; letter-spacing: 0.05em; }

.fm-pill { display: inline-block; font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 10px; letter-spacing: 0.03em; }
.fm-pill-paid    { background: #d8efd8; color: #1f5f23; }
.fm-pill-unpaid  { background: #f5e3d6; color: #a65b15; }
.fm-pill-pos     { background: #d8efd8; color: #1f5f23; }
.fm-pill-mid     { background: #f5e3d6; color: #a65b15; }
.fm-pill-neg     { background: #f5d6d6; color: #8a2828; }

/* Interactions tab rows */
.fm-filter-row { display: flex; gap: 10px; align-items: center; padding: 8px 0 12px; flex-wrap: wrap; }
.fm-filter-lbl { font-size: 11px; color: #6b6b6b; text-transform: uppercase; letter-spacing: 0.05em; }
.fm-select { padding: 5px 10px; border: 1px solid #d4d0c8; border-radius: 4px; font-size: 12px; background: #fff; font-family: inherit; min-width: 120px; }
.fm-ix-row { padding: 10px 0; border-bottom: 1px solid #f2efe9; }
.fm-ix-row:last-child { border-bottom: none; }
.fm-ix-meta { display: flex; gap: 10px; align-items: center; margin-bottom: 4px; }
.fm-ix-date { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: #6b6b6b; }
.fm-ix-type { display: inline-block; font-size: 10px; font-weight: 600; padding: 2px 7px; border-radius: 3px; background: #eef3f7; color: #3d7fa8; text-transform: uppercase; letter-spacing: 0.05em; }
.fm-ix-tickers { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: #0a1628; background: #f2efe9; padding: 2px 6px; border-radius: 3px; }
.fm-ix-desc { font-size: 13px; color: #2b2b2b; margin: 4px 0; }
.fm-ix-people { font-size: 11px; color: #6b6b6b; display: flex; gap: 14px; flex-wrap: wrap; }

/* KYC key-value grid */
.fm-kv-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px 24px; padding: 8px 0; }
.fm-kv { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.fm-kv .fm-meta-k { font-size: 10px; color: #6b6b6b; text-transform: uppercase; letter-spacing: 0.05em; }
.fm-kv .fm-meta-v { font-size: 13px; color: #2b2b2b; word-break: break-word; }
.fm-notes-block { margin-top: 10px; padding-top: 10px; border-top: 1px solid #f2efe9; }
.fm-notes-body { font-size: 12px; color: #2b2b2b; padding-top: 4px; white-space: pre-wrap; }
.fm-link { color: #e8771a; text-decoration: none; font-size: 12px; }
.fm-link:hover { text-decoration: underline; }

/* Edit form */
.fm-edit-form { background: #fff8e8; border-bottom: 2px solid #e8771a; padding: 14px 22px; }
.fm-edit-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px 14px; margin-bottom: 10px; }
.fm-edit-grid label { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: #6b6b6b; font-weight: 500; text-transform: uppercase; letter-spacing: 0.04em; }
.fm-edit-grid input, .fm-edit-grid select, .fm-edit-grid textarea { padding: 6px 10px; border: 1px solid #d4d0c8; border-radius: 3px; font-size: 13px; font-family: inherit; background: #fff; color: #2b2b2b; text-transform: none; letter-spacing: normal; font-weight: 400; }
.fm-edit-grid input:focus, .fm-edit-grid select:focus, .fm-edit-grid textarea:focus { outline: none; border-color: #e8771a; box-shadow: 0 0 0 2px rgba(232,119,26,0.18); }
.fm-edit-wide { grid-column: span 3; }
.fm-edit-actions { display: flex; gap: 8px; }
.fm-btn { background: #fff; border: 1px solid #d4d0c8; padding: 6px 16px; font-size: 12px; border-radius: 3px; cursor: pointer; font-family: inherit; color: #2b2b2b; }
.fm-btn:hover { background: #f7f4f0; }
.fm-btn-primary { background: #0a1628; border-color: #0a1628; color: #fff; }
.fm-btn-primary:hover { background: #1a2a44; }
.fm-btn-primary:disabled { opacity: 0.6; cursor: wait; }
.fm-section-action { float: right; padding: 4px 12px; font-size: 11px; text-transform: none; letter-spacing: normal; font-weight: 500; }

/* Add-Contact popup form (layered over the modal body) */
.fm-add-overlay { position: fixed; inset: 0; background: rgba(10, 22, 40, 0.45); z-index: 10010; display: flex; align-items: center; justify-content: center; }
.fm-add-form { background: #fff; border-radius: 6px; box-shadow: 0 12px 40px rgba(0,0,0,0.25); width: 540px; max-width: 92vw; max-height: 88vh; overflow-y: auto; padding: 22px 24px; }
.fm-add-title { font-size: 14px; font-weight: 600; color: #0a1628; margin-bottom: 16px; }
.fm-add-title .fm-muted { font-weight: 400; }
.fm-add-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; margin-bottom: 14px; }
.fm-add-grid label { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: #6b6b6b; font-weight: 500; text-transform: uppercase; letter-spacing: 0.04em; }
.fm-add-grid input, .fm-add-grid textarea { padding: 6px 10px; border: 1px solid #d4d0c8; border-radius: 3px; font-size: 13px; font-family: inherit; background: #fff; color: #2b2b2b; text-transform: none; letter-spacing: normal; font-weight: 400; }
.fm-add-grid input:focus, .fm-add-grid textarea:focus { outline: none; border-color: #e8771a; box-shadow: 0 0 0 2px rgba(232,119,26,0.18); }
.fm-add-wide { grid-column: span 2; }
.fm-add-checks { grid-column: span 2; flex-direction: row; gap: 18px; text-transform: none; letter-spacing: normal; font-size: 12px; color: #2b2b2b; font-weight: 400; }
.fm-add-checks span { display: inline-flex; align-items: center; gap: 6px; }
.fm-add-err { color: #c5391a; font-size: 12px; min-height: 16px; margin-bottom: 10px; }
.fm-add-actions { display: flex; gap: 8px; justify-content: flex-end; }

/* Firm Modal — small "Edit" link in contact row */
.fm-c-actions { text-align: right; }
.fm-btn-link { background: none; border: none; color: var(--orange); font-size: 12px; cursor: pointer; padding: 2px 6px; border-radius: 3px; font-family: var(--font-body); }
.fm-btn-link:hover { background: rgba(232,119,26,0.08); text-decoration: underline; }
.fm-btn-danger { background: #fbe9e9; color: #b03030; border: 1px solid #f3c5c5; }
.fm-btn-danger:hover { background: #f5d6d6; }

/* Reporting tab — generation config */
.fm-reporting-on { background: #e8f5ec; border-left: 3px solid #2d8a56; padding: 10px 14px; margin-bottom: 14px; border-radius: 3px; font-size: 13px; color: #1d5e35; }
.fm-reporting-off { background: var(--cream); border-left: 3px solid var(--border); padding: 10px 14px; margin-bottom: 14px; border-radius: 3px; font-size: 12px; color: var(--muted); }
.fm-reporting-form { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; max-width: 720px; }
.fm-reporting-field { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }
.fm-reporting-field > span { font-size: 11px; }
.fm-reporting-field input, .fm-reporting-field select { padding: 7px 9px; border: 1px solid var(--border); border-radius: 4px; background: var(--cream); font-family: var(--font-body); color: var(--text); font-size: 13px; font-weight: 400; text-transform: none; letter-spacing: 0; }
.fm-reporting-field input:focus, .fm-reporting-field select:focus { outline: none; border-color: var(--navy); background: white; }
.fm-reporting-actions { grid-column: span 2; display: flex; gap: 8px; align-items: center; margin-top: 4px; }

@media (max-width: 900px) {
  .fm-grid-2 { grid-template-columns: 1fr; }
  .fm-hero-meta-row { grid-template-columns: repeat(2, 1fr); }
  .fm-kpi-strip { grid-template-columns: repeat(2, 1fr); }
  .fm-edit-grid { grid-template-columns: 1fr; }
  .fm-edit-wide { grid-column: span 1; }
  .fm-kv-grid { grid-template-columns: 1fr; }
}

/* ═══ Trading Idea ═══ */
.ti-shell { padding: 0 8px 60px; max-width: 1400px; margin: 0 auto; }
.ti-page-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 0 8px; border-bottom: 1px solid var(--border); margin-bottom: 10px; }
.ti-h1 { font-size: 18px; color: var(--navy); margin: 0; }
.ti-sub { color: var(--muted); margin: 2px 0 0; font-size: 12px; }
.ti-head-actions { display: flex; gap: 8px; }
.ti-btn { padding: 8px 16px; background: white; border: 1px solid var(--border); border-radius: 4px; font-size: 13px; cursor: pointer; transition: all 0.15s; font-family: var(--font-body); }
.ti-btn:hover { border-color: var(--navy); }
.ti-btn-primary { background: var(--orange); color: white; border-color: var(--orange); font-weight: 600; }
.ti-btn-primary:hover { background: #d36915; border-color: #d36915; }
.ti-btn:disabled { opacity: 0.55; cursor: not-allowed; }

.ti-card { background: white; border: 1px solid var(--border); border-radius: 6px; padding: 10px 14px; margin-bottom: 10px; }
.ti-card-title { font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); margin: 0 0 6px; font-weight: 600; }
.ti-form-grid { display: grid; grid-template-columns: 1.1fr 2fr 1fr 1fr 1fr; gap: 10px; }
.ti-field { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--muted); }
.ti-field span { font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; font-size: 10px; }
.ti-field input, .ti-field select { padding: 6px 8px; border: 1px solid var(--border); border-radius: 4px; background: var(--cream); font-family: var(--font-body); color: var(--text); font-size: 13px; }
.ti-field input:focus, .ti-field select:focus { outline: none; border-color: var(--navy); background: white; }
.ti-hint { margin-top: 6px; font-size: 11px; color: var(--muted); }

/* Ticker combobox — typeahead with ticker-or-company match */
.ti-combo { position: relative; }
.ti-combo-input { width: 100%; padding: 6px 8px; border: 1px solid var(--border); border-radius: 4px; background: var(--cream); font-family: var(--font-body); color: var(--text); font-size: 13px; box-sizing: border-box; }
.ti-combo-input:focus { outline: none; border-color: var(--navy); background: white; }
.ti-combo-results { position: absolute; left: 0; right: 0; top: 100%; margin-top: 4px; max-height: 320px; overflow-y: auto; background: white; border: 1px solid var(--border); border-radius: 4px; box-shadow: 0 4px 16px rgba(10,22,40,0.12); z-index: 50; }
.ti-combo-row { display: grid; grid-template-columns: 70px 1fr auto; gap: 10px; align-items: center; padding: 7px 12px; cursor: pointer; font-size: 13px; border-bottom: 1px solid var(--cream); }
.ti-combo-row:last-child { border-bottom: none; }
.ti-combo-row:hover, .ti-combo-row-on { background: var(--cream); }
.ti-combo-ticker { font-family: var(--font-mono, 'JetBrains Mono', monospace); font-weight: 700; color: var(--navy); font-size: 12px; }
.ti-combo-name { color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ti-combo-fl { font-size: 9px; padding: 1px 6px; background: var(--orange); color: white; border-radius: 2px; font-weight: 700; letter-spacing: 0.05em; }
.ti-combo-empty { padding: 10px 12px; color: var(--muted); font-size: 12px; font-style: italic; }

/* Recent ideas chips — quick re-entry into already-cached tickers */
.ti-recent { display: flex; align-items: center; gap: 10px; padding: 6px 14px; margin-bottom: 10px; background: white; border: 1px solid var(--border); border-radius: 6px; flex-wrap: wrap; }
.ti-recent-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); font-weight: 600; flex-shrink: 0; }
.ti-recent-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.ti-recent-chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 8px; background: var(--cream); border: 1px solid var(--border); border-radius: 12px; cursor: pointer; font-family: var(--font-body); font-size: 11px; color: var(--text); transition: all 0.15s; }
.ti-recent-chip:hover { border-color: var(--navy); background: white; }
.ti-recent-chip b { font-family: var(--font-mono, 'JetBrains Mono', monospace); font-weight: 700; color: var(--navy); }
.ti-recent-dir { font-size: 9px; padding: 1px 5px; border-radius: 2px; font-weight: 700; letter-spacing: 0.04em; }
.ti-recent-dir-up { background: #e8f5ec; color: #2d7a3e; }
.ti-recent-dir-down { background: #fbe9e9; color: #b03030; }
.ti-recent-ago { color: var(--muted); font-size: 10px; }

@media (max-width: 880px) {
  .ti-form-grid { grid-template-columns: 1fr 1fr; }
}

/* ═══ Two-page report ═══ */
.ti-report { background: var(--cream); padding: 10px 0; border-top: 1px solid var(--border); margin-top: 10px; }
.ti-page {
  background: white; border: 1px solid var(--border); border-radius: 4px;
  padding: 22px 28px; margin: 0 0 14px;
  position: relative;
  box-shadow: 0 2px 8px rgba(10,22,40,0.06);
}

/* On-screen: data tables side-by-side to fill width. */
.ti-data-cols { display: grid; grid-template-columns: 1.05fr 1fr; gap: 24px; align-items: start; }
.ti-data-cols > div { min-width: 0; }
@media (max-width: 1000px) { .ti-data-cols { grid-template-columns: 1fr; gap: 12px; } }

/* PDF render mode (applied to the off-screen clone in _generatePDF). The
   clone is sized to A4 portrait, so collapse the on-screen 2-col data grid
   back to single-column and strip all on-screen card chrome. */
.ti-pdf-render .ti-data-cols { grid-template-columns: 1fr; gap: 0; }
.ti-pdf-render .ti-page {
  box-shadow: none; border: none; padding: 12mm 14mm; margin: 0;
  page-break-after: always; page-break-inside: avoid;
}
.ti-pdf-render .ti-page:last-child { page-break-after: auto; }
/* html2canvas doesn't trigger @media print, so .no-print elements are still
   captured by default. Force-hide them inside the PDF clone. */
.ti-pdf-render .no-print { display: none !important; }
/* Tighten typography for print so a full report fits on one A4 page each. */
.ti-pdf-render .ti-report-title { font-size: 18px; margin-bottom: 12px; }
.ti-pdf-render .ti-hero-row { gap: 10px; margin-bottom: 12px; }
.ti-pdf-render .ti-hero-cell { padding: 10px 14px; }
.ti-pdf-render .ti-strip { gap: 6px; margin-bottom: 16px; }
.ti-pdf-render .ti-strip > div { padding: 8px 6px; }
.ti-pdf-render .ti-section-h { margin: 12px 0 6px; font-size: 10px; }
.ti-pdf-render .ti-tbl { font-size: 11px; margin-bottom: 8px; }
.ti-pdf-render .ti-tbl th, .ti-pdf-render .ti-tbl td { padding: 4px 6px; }
.ti-pdf-render .ti-bullets-list li { margin-bottom: 8px; font-size: 11.5px; line-height: 1.45; }
.ti-pdf-render .ti-bullets-list { padding-left: 20px; }
.ti-pdf-render .ti-rationale-stock { font-size: 12px; margin-bottom: 6px; }
.ti-pdf-render .ti-bullets-head { margin: 12px 0 6px; }
.ti-pdf-render .ti-footer { margin-top: 16px; padding-top: 8px; font-size: 10px; }
.ti-page-corner { position: absolute; top: 14px; right: 24px; font-size: 11px; color: var(--muted); letter-spacing: 0.06em; }
.ti-report-title { font-size: 22px; color: var(--navy); letter-spacing: 0.12em; margin: 0 0 18px; font-weight: 700; }

.ti-hero-row { display: grid; grid-template-columns: 2fr 1fr; gap: 14px; margin-bottom: 16px; }
.ti-hero-cell { background: var(--navy); color: white; padding: 12px 16px; border-radius: 3px; }
.ti-hero-label { font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; opacity: 0.75; margin-bottom: 4px; }
.ti-hero-value { font-size: 16px; font-weight: 600; font-family: var(--font-body); }
.ti-hero-stock .ti-hero-value { font-size: 18px; }

.ti-strip { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; margin: 0 0 22px; }
.ti-strip > div { background: var(--cream); border: 1px solid var(--border); padding: 10px 8px; border-radius: 3px; text-align: center; }
.ti-strip span { display: block; font-size: 9px; text-transform: uppercase; color: var(--muted); margin-bottom: 4px; letter-spacing: 0.04em; }
.ti-strip b { display: block; font-size: 14px; color: var(--navy); font-family: var(--font-mono, 'JetBrains Mono', monospace); font-weight: 600; }

.ti-section-h { font-size: 11px; color: var(--orange); letter-spacing: 0.14em; text-transform: uppercase; margin: 18px 0 8px; font-weight: 700; }

.ti-tbl { width: 100%; border-collapse: collapse; font-size: 12px; margin-bottom: 10px; table-layout: fixed; }
.ti-tbl th, .ti-tbl td { padding: 5px 6px; border-bottom: 1px solid var(--border); text-align: right; }
.ti-tbl th:first-child, .ti-tbl td:first-child { padding-left: 4px; }
.ti-tbl-trade { table-layout: auto; }
.ti-tbl thead th { color: var(--muted); font-weight: 600; font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; border-bottom: 2px solid var(--navy); }
.ti-tbl thead th:first-child { text-align: left; }
.ti-tbl tbody td { font-family: var(--font-mono, 'JetBrains Mono', monospace); }
.ti-tbl .ti-row-label { text-align: left; color: var(--text); font-family: var(--font-body); font-weight: 500; }
.ti-tbl .ti-empty { text-align: center; color: var(--muted); padding: 24px 0; }

.ti-footer { margin-top: 28px; padding-top: 12px; border-top: 1px solid var(--border); display: flex; justify-content: space-between; font-size: 11px; color: var(--muted); }

.ti-rationale-stock { font-size: 14px; color: var(--navy); margin-bottom: 8px; font-weight: 600; }
.ti-bullets-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 18px 0 8px; }
.ti-bullets-head .ti-section-h { margin: 0; }
.ti-bullets-btn { padding: 6px 14px; font-size: 12px; }
.ti-bullets { padding: 8px 0; }

/* Trade Levels — form */
.ti-card-sub { font-size: 11px; color: var(--muted); font-weight: 400; text-transform: none; letter-spacing: 0; margin-left: 6px; }
.ti-trade-grid { display: grid; gap: 4px; }
.ti-trade-head, .ti-trade-row { display: grid; grid-template-columns: 90px 90px 90px 1fr; gap: 8px; align-items: center; }
.ti-trade-head { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; padding: 0 2px 3px; border-bottom: 1px solid var(--border); }
.ti-trade-label { font-size: 12px; color: var(--text); font-weight: 600; padding-left: 2px; }
.ti-trade-row input { padding: 4px 8px; border: 1px solid var(--border); border-radius: 3px; background: var(--cream); font-family: var(--font-body); color: var(--text); font-size: 12px; }
.ti-trade-row input:focus { outline: none; border-color: var(--navy); background: white; }
.ti-trade-row input[type="number"] { font-family: var(--font-mono, 'JetBrains Mono', monospace); text-align: right; }
.ti-trade-na { color: var(--border); text-align: center; font-size: 13px; }

/* Trade Levels — report */
.ti-tbl-trade tbody td { padding: 5px 10px; }
.ti-tbl-trade .ti-trade-r-label { text-align: left; font-weight: 600; color: var(--text); width: 110px; font-family: var(--font-body); }
.ti-tbl-trade .ti-trade-r-price { text-align: left; font-family: var(--font-mono, 'JetBrains Mono', monospace); color: var(--navy); width: 170px; font-weight: 500; }
.ti-tbl-trade .ti-trade-r-note { text-align: left; color: var(--muted); font-size: 11px; font-style: italic; }

@media (max-width: 700px) {
  .ti-trade-head, .ti-trade-row { grid-template-columns: 100px 80px 80px 1fr; gap: 6px; }
}
.ti-bullets-empty, .ti-bullets-status { color: var(--muted); font-style: italic; font-size: 13px; }
.ti-bullets-cached-note { font-size: 11px; color: var(--muted); margin-bottom: 8px; padding: 4px 8px; background: var(--cream); border-left: 2px solid var(--orange); border-radius: 2px; }
.ti-bullets-edit-hint { font-size: 10px; color: var(--muted); margin-bottom: 6px; font-style: italic; }
.ti-bullet-edit { cursor: text; padding: 2px 4px; border-radius: 3px; transition: background 0.15s; }
.ti-bullet-edit:hover { background: rgba(232,119,26,0.06); }
.ti-bullet-edit:focus { outline: 2px solid var(--orange); outline-offset: 1px; background: white; }
.ti-bullets-list { padding-left: 22px; margin: 0; }
.ti-bullets-list li { margin-bottom: 12px; line-height: 1.55; font-size: 13px; color: var(--text); }
.ti-bullets-actions { display: flex; justify-content: flex-end; margin-bottom: 6px; }
.ti-btn-link { background: none; border: none; color: var(--orange); font-size: 12px; cursor: pointer; padding: 2px 6px; font-family: var(--font-body); }
.ti-btn-link:hover { text-decoration: underline; }
.ti-bullets-edit-bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.ti-bullets-edit-bar .ti-btn { padding: 5px 12px; font-size: 12px; }
.ti-bullets-textarea { width: 100%; min-height: 180px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 4px; font-family: var(--font-body); font-size: 13px; line-height: 1.55; color: var(--text); background: var(--cream); resize: vertical; box-sizing: border-box; }
.ti-bullets-textarea:focus { outline: none; border-color: var(--orange); background: white; }
.ti-muted-small { font-size: 11px; color: var(--muted); font-style: italic; }

@media print {
  .no-print { display: none !important; }
  body { background: white; }
  .ti-shell { padding: 0; max-width: none; }
  .ti-report { background: white; padding: 0; border-top: none; margin-top: 0; }
  .ti-page { box-shadow: none; border: none; margin: 0; max-width: none; padding: 18mm 16mm; min-height: 0; page-break-after: always; }
  .ti-page:last-child { page-break-after: auto; }
  .nav, .top-bar, .sub-nav, header.top-bar, .toast-area { display: none !important; }
}

