:root {
  --bg: #071019;
  --bg-soft: #0d1520;
  --surface: #0c1520;
  --surface-strong: #131f2d;
  --surface-raised: #172436;
  --surface-tint: rgba(255, 255, 255, 0.02);
  --text: #f3efe8;
  --muted: #93a0b3;
  --muted-strong: #c8d3e2;
  --line: rgba(148, 177, 214, 0.16);
  --line-strong: rgba(175, 202, 234, 0.26);
  --accent: #5ea7ff;
  --accent-soft: rgba(94, 167, 255, 0.16);
  --accent-strong: #d7ebff;
  --positive: #6ed39b;
  --positive-soft: rgba(110, 211, 155, 0.16);
  --negative: #e57b69;
  --negative-soft: rgba(229, 123, 105, 0.16);
  --gold: #ddb06e;
  --gold-soft: rgba(221, 176, 110, 0.14);
  --radius-xl: 24px;
  --radius-lg: 18px;
  --radius-md: 14px;
  --shadow: 0 24px 60px rgba(0, 0, 0, 0.38);
  --font-ui: "Manrope", "Avenir Next", "Inter", "Segoe UI", sans-serif;
  --font-display: "Cormorant Garamond", Georgia, serif;
  --mono: "SFMono-Regular", "SF Mono", ui-monospace, "Roboto Mono", "Cascadia Code", monospace;
}

* {
  box-sizing: border-box;
}

[hidden] {
  display: none !important;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  min-height: 100vh;
  color: var(--text);
  font-family: var(--font-ui);
  background:
    radial-gradient(circle at top left, rgba(94, 167, 255, 0.12), transparent 24%),
    radial-gradient(circle at 80% 0%, rgba(221, 176, 110, 0.06), transparent 28%),
    linear-gradient(180deg, #050c13 0%, var(--bg) 100%);
}

body.soft-mode {
  /* ── Indigo Nebula — blue-purple blend, muted saturation ── */
  --bg: #050812;
  --bg-soft: #080c1a;
  --surface: #0b1226;
  --surface-strong: #111a36;
  --surface-raised: #172042;
  --surface-tint: rgba(180, 175, 255, 0.04);
  --text: #eef0ff;                              /* barely-violet moonlit white */
  --muted: #8490b8;                             /* periwinkle-slate */
  --muted-strong: #b0bcd8;
  --line: rgba(120, 130, 210, 0.22);            /* indigo lines */
  --line-strong: rgba(150, 165, 230, 0.36);
  --accent: #8c9eff;                            /* periwinkle — blue + purple equally */
  --accent-soft: rgba(140, 158, 255, 0.16);
  --accent-strong: #dde4ff;
  --positive: #74dfff;                          /* sky-blue for gains */
  --positive-soft: rgba(116, 223, 255, 0.15);
  --negative: #ff9dbb;                          /* soft rose for losses */
  --negative-soft: rgba(255, 157, 187, 0.15);
  --gold: #ffe566;                              /* moonbeam gold */
  --gold-soft: rgba(255, 229, 102, 0.15);
  background:
    radial-gradient(ellipse at 22% 0%,  rgba(220, 100, 255, 0.18),  transparent 36%),
    radial-gradient(ellipse at 80% 6%,  rgba(255, 218, 88, 0.16),   transparent 26%),
    radial-gradient(ellipse at 50% 98%, rgba(80, 160, 255, 0.12),   transparent 30%),
    radial-gradient(ellipse at 4%  68%, rgba(120, 100, 240, 0.12),  transparent 26%),
    radial-gradient(ellipse at 94% 55%, rgba(80, 150, 230, 0.09),   transparent 22%),
    radial-gradient(ellipse at 50% 44%, rgba(100, 80, 200, 0.06),   transparent 42%),
    linear-gradient(165deg, #03050e 0%, #060a16 55%, #040812 100%);
}

/* Twinkling starfield ────────────────────────────────────────────────────── */
body.soft-mode::before {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background-image:
    radial-gradient(circle, rgba(255, 255, 255, 0.95) 1px,   transparent 1px),
    radial-gradient(circle, rgba(200, 195, 255, 0.70) 1px,   transparent 1px),
    radial-gradient(circle, rgba(200, 220, 255, 0.65) 1px,   transparent 1px),
    radial-gradient(circle, rgba(255, 248, 200, 0.55) 1px,   transparent 1px),
    radial-gradient(circle, rgba(180, 185, 255, 0.58) 1.5px, transparent 1.5px),
    radial-gradient(circle, rgba(255, 255, 255, 0.35) 0.8px, transparent 0.8px);
  background-size: 320px 240px, 210px 190px, 170px 230px, 130px 150px, 280px 210px, 90px 110px;
  background-position: 0 0, 110px 80px, 60px 150px, 180px 40px, 220px 160px, 45px 60px;
  opacity: 0.36;
  animation: sm-stars-twinkle 7s ease-in-out infinite alternate;
}

@keyframes sm-stars-twinkle {
  0%   { opacity: 0.30; }
  30%  { opacity: 0.46; }
  65%  { opacity: 0.34; }
  100% { opacity: 0.42; }
}

/* Luna 🌙 — floating crescent in the corner ─────────────────────────────── */
body.soft-mode::after {
  content: '🌙';
  position: fixed;
  bottom: 22px;
  right: 26px;
  font-size: 28px;
  pointer-events: none;
  z-index: 99998;
  opacity: 0.88;
  filter: drop-shadow(0 0 12px rgba(255, 229, 102, 0.85))
          drop-shadow(0 0 26px rgba(255, 130, 240, 0.42));
  animation: sm-luna-float 5s ease-in-out infinite;
}

@keyframes sm-luna-float {
  0%,  100% { transform: translateY(0)   rotate(-8deg); }
  40%        { transform: translateY(-7px) rotate(4deg);  }
  70%        { transform: translateY(-3px) rotate(-3deg); }
}


body.has-company-focus {
  overflow: hidden;
}


.app-shell {
  max-width: 1680px;
  margin: 0 auto;
  padding: 12px 18px 34px;
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 72px;
  padding: 12px 18px;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), transparent 100%),
    linear-gradient(135deg, rgba(8, 18, 30, 0.94), rgba(12, 23, 36, 0.9));
  box-shadow: var(--shadow);
}

.metric-label,
.field-label,
.selection-kicker {
  margin: 0;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
}

.brand-lockup {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.brand-copy {
  display: grid;
  gap: 4px;
}

.brand-mark {
  width: 18px;
  height: 18px;
  border-radius: 4px;
  background:
    linear-gradient(90deg, transparent 0 24%, var(--gold) 24% 34%, transparent 34% 66%, var(--gold) 66% 76%, transparent 76%),
    linear-gradient(0deg, transparent 0 24%, var(--gold) 24% 34%, transparent 34% 66%, var(--gold) 66% 76%, transparent 76%);
  box-shadow: 0 0 0 5px rgba(221, 176, 110, 0.12);
}

.brand-lockup h1 {
  margin: 0;
  font-size: 1.08rem;
  line-height: 1;
  letter-spacing: 0.01em;
  text-transform: uppercase;
  font-weight: 700;
}

.brand-subtitle {
  margin: 0;
  color: var(--muted);
  font-size: 0.8rem;
  line-height: 1.3;
}

.topbar-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  flex: 1;
  justify-content: flex-end;
}

.topbar-mode-shell {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.03);
}

.topbar-mode-copy {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.topbar-mode-note {
  margin: 0;
  max-width: 210px;
  color: var(--muted-strong);
  font-size: 0.73rem;
  line-height: 1.35;
}

.topbar-mode-toggle {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}

.topbar-mode-toggle .segment-toggle {
  min-width: 0;
  padding: 0.62rem 0.82rem;
  font-size: 0.76rem;
  white-space: nowrap;
}

.topbar-search-shell {
  position: relative;
  flex: 1;
  min-width: 260px;
  max-width: 560px;
}

.topbar-search-icon {
  position: absolute;
  top: 50%;
  left: 15px;
  width: 18px;
  height: 18px;
  transform: translateY(-50%);
  color: rgba(215, 235, 255, 0.68);
  pointer-events: none;
}

.topbar-search-icon svg {
  width: 100%;
  height: 100%;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.settings-field {
  width: 100%;
  display: grid;
  gap: 8px;
}

.topbar-search,
.settings-field input,
.settings-field select {
  width: 100%;
  padding: 0.84rem 0.95rem;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.025);
  color: var(--text);
  font: inherit;
}

.topbar-search {
  max-width: none;
  padding-left: 2.8rem;
}

.topbar-search::placeholder,
.settings-field input::placeholder {
  color: rgba(255, 255, 255, 0.32);
}

.action-button {
  width: fit-content;
  padding: 0.76rem 1.02rem;
  border: 1px solid transparent;
  border-radius: 14px;
  background: var(--accent);
  color: white;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
  transition: transform 180ms ease, opacity 180ms ease, background 180ms ease;
}

.action-button:hover,
.table-row:hover,
.watchlist-button:hover,
.overview-card:hover,
.map-chip:hover,
.watchlist-toggle:hover {
  transform: translateY(-1px);
}

.action-button-secondary {
  background: rgba(255, 255, 255, 0.05);
  border-color: var(--line-strong);
  color: var(--text);
}

.action-button:disabled,
.text-button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

.text-button {
  padding: 0;
  border: none;
  background: none;
  color: var(--accent-strong);
  font: inherit;
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: rgba(215, 231, 255, 0.28);
}

.status-banner {
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.04);
  color: var(--muted-strong);
  line-height: 1.5;
}

.status-banner-copy {
  flex: 1;
}

.status-banner-close {
  padding: 0;
  border: none;
  background: none;
  color: var(--muted-strong);
  font: inherit;
  font-size: 1.05rem;
  cursor: pointer;
}

.status-banner.is-error {
  border-color: rgba(219, 107, 99, 0.28);
  background: var(--negative-soft);
  color: #ffd6d3;
}

.summary-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
  margin: 12px 0 18px;
}

body.soft-mode .summary-strip {
  display: none;
}

.metric {
  padding: 16px 18px;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.03);
}

.metric strong {
  display: block;
  margin-top: 10px;
  font-size: 1.75rem;
  letter-spacing: -0.04em;
}

.metric[data-tooltip] {
  position: relative;
  cursor: default;
}

.metric[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  top: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  width: 220px;
  padding: 9px 13px;
  background: var(--surface-raised);
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-md);
  color: var(--muted-strong);
  font-size: 0.78rem;
  line-height: 1.5;
  text-align: left;
  white-space: normal;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s ease;
  z-index: 100;
  box-shadow: var(--shadow);
}

.metric[data-tooltip]:hover::after {
  opacity: 1;
}

.workspace {
  display: grid;
  grid-template-columns: 254px minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

.workspace--sidebar-collapsed {
  grid-template-columns: 72px minmax(0, 1fr);
}

.workspace--no-sidebar {
  grid-template-columns: minmax(0, 1fr);
}

.workspace--no-sidebar .sidebar {
  display: none;
}

.sidebar {
  display: grid;
  gap: 14px;
  position: sticky;
  top: 16px;
  align-self: start;
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  padding-right: 6px;
}

.sidebar-rail {
  display: flex;
  justify-content: flex-end;
}

.sidebar-toggle {
  width: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 0.82rem 0.95rem;
  border: 1px solid var(--line);
  border-radius: 18px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), transparent 100%),
    var(--surface);
  color: var(--muted-strong);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
  box-shadow: var(--shadow);
  transition: border-color 180ms ease, background 180ms ease, transform 180ms ease;
}

.sidebar-toggle:hover {
  border-color: rgba(255, 255, 255, 0.16);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.05), transparent 100%),
    var(--surface-raised);
  transform: translateY(-1px);
}

.sidebar-toggle-icon {
  display: inline-block;
  font-size: 1rem;
  line-height: 1;
  transition: transform 180ms ease;
}

.workspace--sidebar-collapsed .sidebar {
  gap: 12px;
  padding-right: 0;
}

.workspace--sidebar-collapsed .sidebar-panel {
  display: none;
}

.workspace--sidebar-collapsed .sidebar-toggle {
  min-height: 54px;
  padding-inline: 0.7rem;
}

.workspace--sidebar-collapsed .sidebar-toggle-text {
  display: none;
}

.workspace--sidebar-collapsed .sidebar-toggle-icon {
  transform: rotate(180deg);
}

.sidebar-panel,
.surface {
  border: 1px solid var(--line);
  border-radius: var(--radius-xl);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), transparent 100%),
    var(--surface);
  box-shadow: var(--shadow);
}

.panel-heading,
.surface-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 18px 22px 0;
}

.panel-heading-stack {
  align-items: flex-start;
}

.panel-heading-stack > div {
  display: grid;
  gap: 6px;
}

.panel-eyebrow {
  margin: 0;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.72rem;
}

.panel-heading h2 {
  margin: 0;
  font-size: 0.98rem;
  line-height: 1.1;
  letter-spacing: -0.02em;
  color: var(--text);
  font-weight: 700;
}

.surface-heading h2,
.surface-heading h3 {
  margin: 0;
  font-size: 1.12rem;
  line-height: 1.1;
  letter-spacing: -0.03em;
}

.surface-heading-row {
  align-items: center;
}

.dc-filters-panel {
  padding-bottom: 0;
}

.dc-filters-summary {
  cursor: pointer;
  list-style: none;
  padding-bottom: 18px;
}

.dc-filters-summary::-webkit-details-marker {
  display: none;
}

.dc-filters-caret {
  font-size: 1rem;
  color: var(--muted);
  transition: transform 200ms ease;
  display: inline-block;
}

.dc-filters-panel[open] .dc-filters-caret {
  transform: rotate(90deg);
}

.dc-filters-last {
  padding-bottom: 22px;
}

.filter-group,
.settings-button-row {
  padding: 18px 22px 0;
}

.settings-button-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.settings-button-row-compact {
  padding-top: 10px;
}

.settings-status {
  margin: 18px 22px 22px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.025);
  color: var(--muted-strong);
  line-height: 1.55;
}

.settings-status.is-success {
  border-color: rgba(121, 192, 114, 0.22);
  background: var(--positive-soft);
  color: #d7f3d3;
}

.settings-status.is-error {
  border-color: rgba(219, 107, 99, 0.28);
  background: var(--negative-soft);
  color: #ffd6d3;
}

.chip-row,
.watchlist-list,
.principles-list,
.active-filters,
.chip-cluster,
.research-tracks,
.relationship-list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.chip-row {
  margin-top: 10px;
}

.watchlist-list,
.principles-list {
  flex-direction: column;
  padding: 18px 22px 22px;
}

.theme-focus-list {
  display: grid;
  gap: 8px;
  padding: 12px 18px 18px;
}

.theme-focus-button {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px 12px;
  align-items: center;
  padding: 13px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.01));
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: transform 180ms ease, border-color 180ms ease, background 180ms ease;
}

.theme-focus-button:hover {
  transform: translateY(-1px);
  border-color: rgba(94, 167, 255, 0.3);
}

.theme-focus-button.is-active {
  border-color: rgba(94, 167, 255, 0.42);
  background:
    linear-gradient(180deg, rgba(94, 167, 255, 0.16), rgba(255, 255, 255, 0.02));
}

.theme-focus-copy {
  display: grid;
  gap: 5px;
  min-width: 0;
}

.theme-focus-copy strong {
  font-size: 0.95rem;
  letter-spacing: -0.02em;
}

.theme-focus-copy span {
  color: var(--muted);
  font-size: 0.78rem;
  line-height: 1.4;
}

.theme-focus-count {
  min-width: 2.25rem;
  padding: 0.16rem 0.56rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  color: var(--muted-strong);
  font-family: var(--mono);
  font-size: 0.8rem;
  text-align: center;
}

.watchlist-panel {
  display: flex;
  flex-direction: column;
}

.watchlist-panel .watchlist-list {
  padding-right: 22px;
}

.watchlist-panel .watchlist-button {
  min-width: 0;
}

.watchlist-panel .watchlist-name,
.watchlist-panel .watchlist-description {
  min-width: 0;
  overflow-wrap: anywhere;
}

.chip,
.filter-pill,
.segment-toggle,
.map-chip,
.watchlist-toggle,
.meta-chip,
.ticker-chip,
.segment-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0.58rem 0.84rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  font: inherit;
  line-height: 1;
}

.chip,
.filter-pill,
.segment-toggle,
.map-chip,
.watchlist-toggle {
  cursor: pointer;
}

.chip.is-active,
.segment-toggle.is-active {
  border-color: rgba(78, 133, 216, 0.34);
  background: var(--accent-soft);
  color: var(--accent-strong);
}

.segmented-control {
  display: inline-flex;
  gap: 6px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.03);
}

#view-toggle.segmented-control {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  max-width: 100%;
  gap: 18px;
  padding: 0;
  border: none;
  border-radius: 0;
  background: none;
}

#view-toggle .segment-toggle {
  padding: 0 2px 14px;
  border: none;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  background: transparent;
  color: var(--muted-strong);
  font-size: 0.98rem;
  font-weight: 600;
}

#view-toggle .segment-toggle.is-active {
  border-color: var(--accent);
  background: none;
  color: var(--text);
}

.segment-toggle {
  padding: 0.62rem 0.95rem;
  background: transparent;
}

.watchlist-button {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px 12px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.02);
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.watchlist-button.is-active {
  border-color: color-mix(in srgb, var(--watchlist-color, var(--accent)) 45%, white 8%);
  background: color-mix(in srgb, var(--watchlist-color, var(--accent)) 12%, rgba(255, 255, 255, 0.04));
}

.watchlist-name {
  font-weight: 700;
}

.watchlist-count {
  min-width: 2rem;
  padding: 0.1rem 0.5rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  text-align: center;
  font-family: var(--mono);
  font-size: 0.84rem;
}

.watchlist-description,
.principle p {
  color: var(--muted);
  line-height: 1.55;
}

.principle {
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.principle:first-child {
  padding-top: 0;
  border-top: none;
}

.main-stage {
  display: grid;
  gap: 18px;
}

.toolbar-surface {
  padding-bottom: 16px;
}

.toolbar-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 18px 22px 0;
}

.filter-pill {
  padding-right: 0.68rem;
  background: var(--accent-soft);
  border-color: rgba(78, 133, 216, 0.26);
  color: var(--accent-strong);
}

.filter-pill-clear {
  font-size: 1rem;
  opacity: 0.72;
}

.empty-inline {
  color: var(--muted);
  line-height: 1.5;
}

.results-meta {
  color: var(--muted-strong);
  font-size: 0.96rem;
}

.view-surface {
  overflow: hidden;
}

#premarket-view.view-surface {
  overflow: visible;
}

/* ── Pre-Market and Open-Market full-page mode ──────────────────────────── */

/* Hide the summary strip (Names Tracked, Coverage, etc.) */
.premarket-active .summary-strip,
.openmarket-active .summary-strip {
  display: none;
}

/* Left-align content at a comfortable reading width */
.premarket-active .prompt-meta-grid,
.premarket-active .prompt-grid,
.premarket-active .prompt-feedback,
.premarket-active .premarket-analysis-stack,
.openmarket-active .prompt-meta-grid,
.openmarket-active .prompt-grid,
.openmarket-active .prompt-feedback,
.openmarket-active .premarket-analysis-stack {
  max-width: 1040px;
  width: calc(100% - 44px);
  margin-left: 22px;
  margin-right: auto;
}

/* Context cards: 3 columns → expand to use space */
.premarket-active .prompt-context-stack,
.openmarket-active .prompt-context-stack {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* Idea / signal / sector card grids: wider minimum so fewer, bigger cards */
.premarket-active .premarket-card-grid,
.openmarket-active .premarket-card-grid {
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
}

.premarket-active .premarket-signal-grid,
.premarket-active .premarket-source-list,
.premarket-active .premarket-sector-grid,
.openmarket-active .premarket-signal-grid,
.openmarket-active .premarket-source-list,
.openmarket-active .premarket-sector-grid {
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
}

/* Split panels (callouts, side-by-side sections) fill width */
.premarket-active .premarket-split-callouts,
.premarket-active .premarket-split-panels,
.openmarket-active .premarket-split-callouts,
.openmarket-active .premarket-split-panels {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  gap: 12px;
}

.early-signals-note {
  margin: 0 22px;
  padding: 14px 16px;
  border: 1px solid rgba(203, 166, 90, 0.26);
  border-radius: var(--radius-md);
  background: rgba(203, 166, 90, 0.08);
  color: #f2dfb1;
  line-height: 1.6;
}

.early-signals-note + .early-signals-note {
  margin-top: 12px;
}

.early-signals-note-secondary {
  border-color: rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.035);
  color: var(--muted-strong);
}

.company-table-wrap {
  padding: 14px 18px 18px;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
}

.comparison-table {
  width: max-content;
  min-width: 100%;
  border-collapse: collapse;
  overflow: hidden;
  table-layout: auto;
  font-size: 0.84rem;
}

.comparison-table thead {
  background: rgba(255, 255, 255, 0.03);
}

.comparison-table th,
.comparison-table td {
  padding: 14px 9px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
}

.comparison-table th:first-child,
.comparison-table td:first-child {
  padding-left: 12px;
}

.comparison-table th:last-child,
.comparison-table td:last-child {
  padding-right: 12px;
}

.comparison-table tbody tr:last-child td {
  border-bottom: none;
}

.table-sort {
  width: auto;
  display: inline-flex;
  justify-content: flex-start;
  align-items: center;
  gap: 6px;
  padding: 0;
  border: none;
  background: none;
  color: var(--muted);
  font: inherit;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.72rem;
  cursor: pointer;
}

.comparison-table th.align-right .table-sort {
  margin-left: auto;
  justify-content: flex-end;
}

.sort-indicator {
  opacity: 0.7;
}

.table-row {
  background: transparent;
  cursor: pointer;
  transition: background 180ms ease;
}

.table-row.is-selected {
  background:
    linear-gradient(90deg, rgba(78, 133, 216, 0.28), rgba(78, 133, 216, 0.14));
}

.table-company {
  display: grid;
  gap: 4px;
  min-width: 176px;
}

.table-company strong {
  font-size: 0.96rem;
}

.table-company span,
.overview-card p,
.overview-card-foot,
.track p,
.selection-copy,
.selection-section p,
.relationship-card p,
.relationship-summary-text {
  color: var(--muted);
  line-height: 1.55;
}

.ticker-chip,
.segment-badge {
  font-family: var(--mono);
  font-size: 0.82rem;
}

.segment-badge {
  background: rgba(255, 255, 255, 0.04);
}

.num-cell {
  text-align: right;
  font-family: var(--mono);
  white-space: nowrap;
}

.align-right {
  text-align: right;
}

.table-ticker-stack {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
}

.table-name {
  font-size: 0.95rem;
}

.table-company-stack {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}

.table-company-sub {
  color: var(--muted);
  font-size: 0.82rem;
  line-height: 1.35;
}

.table-company-meta {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.table-entry-view {
  cursor: help;
  text-decoration: underline;
  text-decoration-style: dotted;
  text-decoration-color: rgba(255, 255, 255, 0.18);
  text-underline-offset: 0.16em;
}

.table-anthropic-chip {
  padding: 0.22rem 0.5rem;
  border: 1px solid rgba(90, 123, 212, 0.28);
  border-radius: 999px;
  background: rgba(90, 123, 212, 0.14);
  color: #cfdcff;
  cursor: help;
  font-size: 0.74rem;
  line-height: 1.1;
}

.table-company-rating {
  color: var(--muted-strong);
  font-size: 0.78rem;
  line-height: 1.2;
}

.table-rating-value {
  color: var(--muted-strong);
  font-size: 0.82rem;
  white-space: nowrap;
}

.table-sort-stack {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
}

.table-sort-stack-left {
  align-items: flex-start;
}

.table-sort-sub {
  font-size: 0.66rem;
  opacity: 0.65;
}

.table-sort-static {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.12em;
}

.table-sort[data-tooltip] {
  position: relative;
}

.table-sort[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  width: 240px;
  padding: 9px 13px;
  background: var(--surface-raised);
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-md);
  color: var(--muted-strong);
  font-size: 0.78rem;
  font-family: "Avenir Next", "Inter", "Segoe UI", sans-serif;
  font-weight: 400;
  letter-spacing: normal;
  text-transform: none;
  line-height: 1.5;
  text-align: left;
  white-space: normal;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s ease;
  z-index: 100;
  box-shadow: var(--shadow);
}

.table-sort[data-tooltip]:hover::after {
  opacity: 1;
}

.table-entry-view[data-tooltip],
.table-anthropic-chip[data-tooltip],
.chip[data-tooltip],
.early-stat-label[data-tooltip],
.filter-pill[data-tooltip],
.selection-entry-view[data-tooltip],
.sec-update-form[data-tooltip],
.earnings-signal-action[data-tooltip],
.earnings-risk-badge[data-tooltip],
.earnings-article-badge[data-tooltip],
.news-importance-badge[data-tooltip] {
  position: relative;
}

.table-entry-view[data-tooltip]::after,
.table-anthropic-chip[data-tooltip]::after,
.chip[data-tooltip]::after,
.early-stat-label[data-tooltip]::after,
.filter-pill[data-tooltip]::after,
.selection-entry-view[data-tooltip]::after,
.sec-update-form[data-tooltip]::after,
.earnings-signal-action[data-tooltip]::after,
.earnings-risk-badge[data-tooltip]::after,
.earnings-article-badge[data-tooltip]::after,
.news-importance-badge[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  left: 0;
  bottom: calc(100% + 10px);
  width: 240px;
  padding: 9px 13px;
  background: var(--surface-raised);
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-md);
  color: var(--muted-strong);
  font-size: 0.78rem;
  font-family: "Avenir Next", "Inter", "Segoe UI", sans-serif;
  font-weight: 400;
  letter-spacing: normal;
  text-transform: none;
  line-height: 1.5;
  text-align: left;
  white-space: normal;
  pointer-events: none;
  opacity: 0;
  transform: translateY(4px);
  transition: opacity 0.15s ease, transform 0.15s ease;
  z-index: 120;
  box-shadow: var(--shadow);
}

.table-entry-view[data-tooltip]:hover::after,
.table-entry-view[data-tooltip]:focus-visible::after,
.table-anthropic-chip[data-tooltip]:hover::after,
.table-anthropic-chip[data-tooltip]:focus-visible::after,
.chip[data-tooltip]:hover::after,
.chip[data-tooltip]:focus-visible::after,
.early-stat-label[data-tooltip]:hover::after,
.early-stat-label[data-tooltip]:focus-visible::after,
.filter-pill[data-tooltip]:hover::after,
.filter-pill[data-tooltip]:focus-visible::after,
.selection-entry-view[data-tooltip]:hover::after,
.selection-entry-view[data-tooltip]:focus-visible::after,
.sec-update-form[data-tooltip]:hover::after,
.sec-update-form[data-tooltip]:focus-visible::after,
.earnings-signal-action[data-tooltip]:hover::after,
.earnings-signal-action[data-tooltip]:focus-visible::after,
.earnings-risk-badge[data-tooltip]:hover::after,
.earnings-risk-badge[data-tooltip]:focus-visible::after,
.earnings-article-badge[data-tooltip]:hover::after,
.earnings-article-badge[data-tooltip]:focus-visible::after,
.news-importance-badge[data-tooltip]:hover::after,
.news-importance-badge[data-tooltip]:focus-visible::after {
  opacity: 1;
  transform: translateY(0);
}

.meta-chip[data-tooltip],
.new-ideas-glossary [data-tooltip] {
  cursor: help;
}

.table-stack {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 3px;
}

.table-stack-left {
  align-items: flex-start;
}
.table-stack-sub {
  font-size: 0.82rem;
  color: var(--muted);
}

.table-stack .table-evidence {
  align-self: flex-end;
}

.table-score-cell {
  display: inline-flex;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
  min-width: 102px;
}

.table-evidence,
.evidence-badge,
.score-badge,
.magnitude-badge {
  padding: 0.34rem 0.6rem;
  border-radius: 999px;
  font-size: 0.74rem;
  font-weight: 700;
  line-height: 1;
}

.score-badge {
  background: var(--accent-soft);
  color: var(--accent-strong);
}

.anthropic-badge {
  padding: 0.34rem 0.6rem;
  border-radius: 999px;
  background: rgba(90, 123, 212, 0.16);
  color: #d5e2ff;
  font-size: 0.74rem;
  font-weight: 700;
  line-height: 1;
}

.table-evidence.high,
.evidence-badge.high {
  background: var(--positive-soft);
  color: #d5f0d0;
}

.table-evidence.medium,
.evidence-badge.medium {
  background: var(--gold-soft);
  color: #ffe4a9;
}

.table-evidence.low,
.evidence-badge.low {
  background: rgba(255, 255, 255, 0.08);
  color: #ded7ca;
}

.evidence-badge.pending,
.map-chip.is-pending-related {
  border-color: rgba(203, 166, 90, 0.34);
  background: var(--gold-soft);
  color: #ffe4a9;
}

.magnitude-badge.anchor {
  background: rgba(121, 192, 114, 0.18);
  color: #d7f3d3;
}

.magnitude-badge.major {
  background: var(--accent-soft);
  color: var(--accent-strong);
}

.magnitude-badge.disclosed {
  background: rgba(255, 255, 255, 0.08);
  color: #ded7ca;
}

.magnitude-badge.reference {
  background: rgba(203, 166, 90, 0.16);
  color: #ffe4a9;
}

.positive {
  color: var(--positive);
}

.negative {
  color: var(--negative);
}

.neutral {
  color: var(--muted-strong);
}

.map-context,
.buildout-map,
.peer-comparison {
  padding: 0 22px 22px;
}

.map-context {
  padding-top: 18px;
}

.context-card {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  border: 1px solid rgba(78, 133, 216, 0.24);
  border-radius: var(--radius-md);
  background: rgba(78, 133, 216, 0.12);
}

.context-card-hint {
  align-items: flex-start;
}

.context-card-hint strong {
  width: 100%;
}

.map-context-actions {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
}

.map-context-helper {
  color: var(--muted-strong);
  font-size: 0.92rem;
}

.context-chip {
  padding: 0.38rem 0.66rem;
  border-radius: 999px;
  background: rgba(9, 13, 20, 0.36);
  color: var(--accent-strong);
  font-family: var(--mono);
}

.context-divider {
  color: rgba(255, 255, 255, 0.3);
}

.context-clear {
  padding: 0.42rem 0.72rem;
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  color: var(--muted-strong);
  font: inherit;
  cursor: pointer;
}

.context-clear:hover {
  background: rgba(255, 255, 255, 0.1);
  color: var(--text);
}

.buildout-map {
  display: grid;
  gap: 10px;
}

.map-layer {
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  overflow: hidden;
  background: rgba(255, 255, 255, 0.02);
}

.map-layer-header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  background: rgba(255, 255, 255, 0.035);
  color: var(--muted);
  font-size: 0.92rem;
}

.map-layer-header div:first-child {
  color: var(--text);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.map-layer-body {
  display: grid;
  gap: 14px;
  padding: 14px;
}

.map-group {
  display: grid;
  gap: 10px;
}

.map-group-label {
  color: var(--muted);
  font-size: 0.92rem;
}

.map-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.map-chip {
  min-width: 0;
  padding: 0.52rem 0.72rem;
  font-family: var(--mono);
  font-size: 0.82rem;
}

.map-chip.is-selected {
  border-color: rgba(78, 133, 216, 0.36);
  background: var(--accent-soft);
  color: var(--accent-strong);
}

.map-chip.is-related {
  border-color: rgba(127, 184, 118, 0.32);
  background: var(--positive-soft);
  color: #d8f4d3;
}

.map-chip.is-peer {
  border-color: rgba(255, 255, 255, 0.16);
  background: rgba(255, 255, 255, 0.08);
  color: var(--muted-strong);
}

.map-chip.is-dim {
  opacity: 0.48;
}

.peer-panel {
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.02);
  padding: 14px;
}

.peer-header {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.78rem;
  margin-bottom: 14px;
}

.peer-bars {
  display: grid;
  gap: 10px;
}

.peer-row {
  display: grid;
  grid-template-columns: 68px minmax(0, 1fr) 32px;
  gap: 10px;
  align-items: center;
}

.peer-label,
.peer-value {
  font-family: var(--mono);
}

.peer-bar-track {
  height: 8px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  overflow: hidden;
}

.peer-bar {
  height: 100%;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.3);
}

.peer-row.is-selected .peer-label {
  color: var(--accent-strong);
}

.peer-bar.is-selected {
  background: var(--accent);
}

.selection-summary,
.segment-overview,
.research-tracks {
  padding: 18px 22px 22px;
}

.company-focus-overlay {
  position: fixed;
  inset: 0;
  z-index: 80;
  pointer-events: none;
}

.company-focus-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.2);
  opacity: 0;
  transition: opacity 200ms ease-out;
}

.company-focus-panel {
  position: absolute;
  top: 0;
  right: 0;
  display: flex;
  flex-direction: column;
  width: min(560px, 100vw);
  height: 100vh;
  border-left: 1px solid var(--line-strong);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), transparent 100%),
    var(--surface-strong);
  box-shadow: -24px 0 60px rgba(0, 0, 0, 0.34);
  transform: translateX(100%);
  transition: transform 200ms ease-out;
  overflow: hidden;
}

.company-focus-overlay.is-open {
  pointer-events: auto;
}

.company-focus-overlay.is-open .company-focus-backdrop {
  opacity: 1;
}

.company-focus-overlay.is-open .company-focus-panel {
  transform: translateX(0);
}

.company-focus-header {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 16px;
  padding: 20px 22px 18px;
  border-bottom: 1px solid var(--line);
  background: linear-gradient(180deg, rgba(29, 32, 36, 0.98), rgba(29, 32, 36, 0.94));
}

.company-focus-heading {
  display: flex;
  align-items: start;
  gap: 14px;
  min-width: 0;
}

.company-focus-heading h3 {
  margin: 6px 0 0;
  font-size: 1.55rem;
  line-height: 1.1;
}

.company-focus-ticker {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 68px;
  padding: 0.5rem 0.72rem;
  border-radius: 999px;
  border: 1px solid rgba(78, 133, 216, 0.3);
  background: rgba(78, 133, 216, 0.12);
  color: var(--accent-strong);
  font-family: var(--mono);
  font-size: 1rem;
  font-weight: 700;
}

.company-focus-header-actions {
  display: flex;
  align-items: start;
  gap: 12px;
}

.company-focus-close {
  width: 40px;
  height: 40px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
  font: inherit;
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
}

.company-focus-close:hover {
  background: rgba(255, 255, 255, 0.08);
}

.company-focus-panel .selection-summary {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.early-signals-list {
  display: grid;
  gap: 14px;
  padding: 18px 22px 22px;
}

.scenario-controls,
.scenario-context,
.scenario-phases {
  padding: 18px 22px 0;
}

.scenario-controls {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.scenario-warning {
  margin: 18px 22px 0;
  padding: 14px 16px;
  border: 1px solid rgba(203, 166, 90, 0.28);
  border-radius: var(--radius-md);
  background: rgba(203, 166, 90, 0.08);
  color: #f2dfb1;
  line-height: 1.6;
}

.scenario-review-banner {
  margin: 18px 22px 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border: 1px solid rgba(78, 133, 216, 0.24);
  border-radius: var(--radius-md);
  background: rgba(78, 133, 216, 0.08);
  color: var(--accent-strong);
  line-height: 1.6;
}

.scenario-review-link {
  white-space: nowrap;
}

.scenario-context {
  padding-bottom: 0;
}

.scenario-context-card {
  border-color: rgba(78, 133, 216, 0.2);
}

.scenario-phases {
  display: grid;
  gap: 16px;
  padding-bottom: 22px;
}

.scenario-phase {
  display: grid;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.02);
}

.scenario-phase-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.scenario-phase-header strong {
  font-size: 0.98rem;
  letter-spacing: -0.02em;
}

.scenario-card-list {
  display: grid;
  gap: 12px;
}

.scenario-card {
  display: grid;
  gap: 14px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.025);
  cursor: pointer;
}

.scenario-card-pending {
  border-color: rgba(203, 166, 90, 0.28);
  background: rgba(203, 166, 90, 0.06);
}

.scenario-card-top {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: start;
}

.scenario-card-heading {
  display: flex;
  gap: 14px;
  align-items: start;
}

.scenario-card-heading h4 {
  margin: 0;
  font-size: 1.08rem;
}

.scenario-card-heading p {
  margin: 8px 0 0;
  color: var(--muted);
  line-height: 1.55;
}

.scenario-status {
  padding: 0.34rem 0.6rem;
  border-radius: 999px;
  font-size: 0.74rem;
  font-weight: 700;
  line-height: 1;
}

.scenario-status.confirmed {
  background: rgba(255, 255, 255, 0.08);
  color: #ded7ca;
}

.scenario-status.pending {
  border: 1px solid rgba(203, 166, 90, 0.34);
  background: var(--gold-soft);
  color: #ffe4a9;
}

.scenario-stats {
  grid-template-columns: 1.4fr repeat(3, minmax(0, 1fr));
}

.scenario-open-detail {
  width: fit-content;
}

.scenario-empty-phase {
  padding: 14px 16px;
  border: 1px dashed var(--line-strong);
  border-radius: var(--radius-md);
  color: var(--muted);
  line-height: 1.6;
}

.early-card {
  display: grid;
  gap: 14px;
  padding: 18px;
  border: 1px solid var(--line);
  border-left: 3px solid var(--line);
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.025);
  cursor: pointer;
  transition: background 0.1s, border-color 0.1s;
}

.early-card:hover {
  background: rgba(255, 255, 255, 0.04);
}

.early-card[data-profile-id="upstream"]   { border-left-color: #4e85d8; }
.early-card[data-profile-id="near-cycle"] { border-left-color: #22c5a5; }
.early-card[data-profile-id="demand"]     { border-left-color: #a78bfa; }
.early-card[data-profile-id="theme"]      { border-left-color: #f97316; }

.early-card:hover[data-profile-id="upstream"]   { border-left-color: #4e85d8; }
.early-card:hover[data-profile-id="near-cycle"] { border-left-color: #22c5a5; }
.early-card:hover[data-profile-id="demand"]     { border-left-color: #a78bfa; }
.early-card:hover[data-profile-id="theme"]      { border-left-color: #f97316; }

.early-fit-label {
  display: inline-flex;
  font-size: 0.72rem;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 999px;
  vertical-align: middle;
  margin-left: 4px;
}

.early-fit-strong { background: rgba(34, 197, 94, 0.15);  color: #86efac; }
.early-fit-good   { background: rgba(78, 133, 216, 0.15); color: #93c5fd; }
.early-fit-fair   { background: rgba(251, 191, 36, 0.12); color: #fcd34d; }
.early-fit-weak   { background: rgba(148, 163, 184, 0.1); color: var(--text-secondary); }

.early-card-top {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: start;
}

.early-card-heading {
  display: flex;
  gap: 14px;
  align-items: start;
}

.early-card-heading h4 {
  margin: 0;
  font-size: 1.15rem;
}

.early-ticker {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 64px;
  padding: 0.48rem 0.68rem;
  border-radius: 999px;
  border: 1px solid rgba(78, 133, 216, 0.3);
  background: rgba(78, 133, 216, 0.12);
  color: var(--accent-strong);
  font-family: var(--mono);
  font-size: 1rem;
  font-weight: 700;
}

.early-phase-badge {
  display: inline-flex;
  padding: 0.42rem 0.72rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  color: var(--muted-strong);
  font-size: 0.84rem;
}

.early-signal-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
  align-items: center;
}

.early-secondary-badge {
  display: inline-flex;
  padding: 0.42rem 0.72rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--muted);
  font-size: 0.82rem;
}

.early-explainer {
  margin: 0;
  color: var(--muted-strong);
  line-height: 1.65;
}

.early-stats {
  display: grid;
  grid-template-columns: 1.1fr 1.1fr repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.early-stat {
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.025);
}

.early-stat strong {
  display: block;
  margin-top: 8px;
  font-size: 0.98rem;
}

.early-exposure-row {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  margin-top: 8px;
}

.early-exposure-track {
  height: 8px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  overflow: hidden;
}

.early-exposure-bar {
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--accent), #78a4eb);
}

.early-signal-fit-bar {
  background: linear-gradient(90deg, #8dcf8b, #4e85d8);
}

.watchlist-menu {
  position: relative;
}

.watchlist-menu summary {
  list-style: none;
  padding: 0.58rem 0.84rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
  cursor: pointer;
}

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

.watchlist-menu-list {
  position: absolute;
  right: 0;
  z-index: 5;
  display: grid;
  gap: 8px;
  min-width: 220px;
  margin-top: 10px;
  padding: 12px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-md);
  background: var(--surface-strong);
  box-shadow: var(--shadow);
}

.watchlist-menu-item {
  width: 100%;
  padding: 0.7rem 0.9rem;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.03);
  color: var(--text);
  text-align: left;
  font: inherit;
  cursor: pointer;
}

.watchlist-menu-item.is-active {
  border-color: rgba(78, 133, 216, 0.28);
  background: rgba(78, 133, 216, 0.1);
}

.selection-card {
  display: grid;
  gap: 16px;
}

.selection-topline {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: start;
}

.selection-topline h4 {
  margin: 6px 0 0;
  font-size: 1.55rem;
  line-height: 1.1;
}

.selection-score {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: end;
}

.selection-meta-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.selection-metric {
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.025);
}

.selection-metric strong {
  display: block;
  margin-top: 8px;
  font-size: 0.98rem;
}

.selection-section {
  display: grid;
  gap: 10px;
}

.selection-helper-text {
  margin: -2px 0 0;
  color: var(--muted);
  font-size: 0.84rem;
}

.selection-subcopy {
  margin: 0;
  color: var(--muted);
  font-size: 0.88rem;
  line-height: 1.6;
}

.selection-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.sec-update-status {
  margin: -2px 0 0;
  color: var(--muted);
  font-size: 0.84rem;
}

.sec-update-list {
  display: grid;
  gap: 10px;
}

.sec-update-card {
  display: grid;
  gap: 8px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.025);
}

.sec-update-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}

.sec-update-date,
.sec-update-meta {
  color: var(--muted);
  font-size: 0.84rem;
}

.sec-update-meta {
  margin: 0;
}

.sec-update-source,
.sec-update-link {
  width: fit-content;
}

.relationship-list {
  display: grid;
  gap: 12px;
}

.meta-chip {
  padding: 0.46rem 0.68rem;
  background: rgba(255, 255, 255, 0.05);
  color: var(--muted-strong);
  font-size: 0.82rem;
}

.watchlist-chip {
  border-color: color-mix(in srgb, var(--watchlist-color, var(--accent)) 40%, rgba(255, 255, 255, 0.06));
  background: color-mix(in srgb, var(--watchlist-color, var(--accent)) 14%, rgba(255, 255, 255, 0.03));
}

.watchlist-toggle {
  padding: 0.56rem 0.8rem;
}

.watchlist-toggle.is-active {
  border-color: color-mix(in srgb, var(--watchlist-color, var(--accent)) 45%, rgba(255, 255, 255, 0.06));
  background: color-mix(in srgb, var(--watchlist-color, var(--accent)) 14%, rgba(255, 255, 255, 0.03));
}

.selection-footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
}

.selection-note {
  color: var(--muted);
}

.source-link {
  color: var(--accent-strong);
  font-weight: 700;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.16em;
}

.relationship-card {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.025);
}

.relationship-card-top,
.overview-card-top {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
}

.relationship-summary-text {
  font-size: 0.95rem;
}

.relationship-proposed-evidence {
  padding: 10px 12px;
  border-left: 2px solid rgba(203, 166, 90, 0.38);
  background: rgba(203, 166, 90, 0.08);
  color: #f2dfb1;
  line-height: 1.5;
}

.relationship-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}

.review-button {
  padding: 0.54rem 0.8rem;
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
  font: inherit;
  cursor: pointer;
}

.review-button.confirm {
  border-color: rgba(121, 192, 114, 0.28);
  background: rgba(121, 192, 114, 0.1);
}

.review-button.reject {
  border-color: rgba(219, 107, 99, 0.28);
  background: rgba(219, 107, 99, 0.08);
}

.segment-overview {
  display: grid;
  gap: 10px;
}

.overview-card {
  width: 100%;
  display: grid;
  gap: 10px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.025);
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.overview-card strong {
  font-size: 1rem;
}

.overview-card span {
  color: var(--muted-strong);
}

.research-tracks {
  display: grid;
  gap: 12px;
}

.track {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.025);
}

.about-tracker {
  margin-top: 18px;
  border: 1px solid var(--line);
  border-radius: var(--radius-xl);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), transparent 100%),
    var(--surface);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.about-tracker summary {
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 22px;
  cursor: pointer;
  font-size: 1.02rem;
  font-weight: 700;
}

.about-tracker summary::-webkit-details-marker {
  display: none;
}

.about-tracker summary::after {
  content: "+";
  color: var(--muted-strong);
  font-size: 1.2rem;
}

.about-tracker[open] summary::after {
  content: "−";
}

.about-tracker-body {
  display: grid;
  gap: 18px;
  padding: 0 22px 22px;
}

.about-section {
  display: grid;
  gap: 12px;
}

.about-section h2 {
  margin: 0;
  font-size: 1rem;
  letter-spacing: -0.02em;
}

.empty-state {
  padding: 18px;
  border: 1px dashed var(--line-strong);
  border-radius: var(--radius-md);
  color: var(--muted);
  line-height: 1.6;
}

.noscript-banner {
  margin: 18px 28px 28px;
  padding: 14px 18px;
  border-radius: 16px;
  background: rgba(203, 166, 90, 0.14);
  color: #ffe4a9;
}

@media (max-width: 1360px) {
  .summary-strip {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ── Earnings view ─────────────────────────────────────────────── */

.earnings-calendar {
  padding: 8px 0 24px;
}

.earnings-disclaimer {
  margin: 14px 22px 4px;
  font-size: 0.76rem;
  color: var(--text-secondary);
  line-height: 1.6;
  opacity: 0.75;
}

.earnings-bucket {
  margin-bottom: 4px;
}

.earnings-bucket-label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--text-secondary);
  padding: 14px 22px 8px;
  margin: 0;
  cursor: default;
}

.earnings-bucket-past > .earnings-bucket-label,
.earnings-bucket-unknown > .earnings-bucket-label {
  cursor: pointer;
  list-style: none;
}

.earnings-bucket-past > .earnings-bucket-label::-webkit-details-marker,
.earnings-bucket-unknown > .earnings-bucket-label::-webkit-details-marker {
  display: none;
}

.earnings-bucket-count {
  background: var(--surface-card);
  border: 1px solid var(--border-subtle);
  border-radius: 10px;
  padding: 1px 7px;
  font-size: 0.72rem;
  color: var(--text-secondary);
  font-weight: 500;
  letter-spacing: 0;
}

.earnings-bucket-rows {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.earnings-row-group {
  display: flex;
  flex-direction: column;
}

.earnings-row {
  display: grid;
  grid-template-columns: 150px 1fr auto auto;
  align-items: center;
  gap: 16px;
  padding: 11px 22px;
  border-bottom: 1px solid var(--border-subtle);
  cursor: pointer;
  transition: background 0.1s;
}

.earnings-row-group:first-child > .earnings-row {
  border-top: 1px solid var(--border-subtle);
}

.earnings-row:hover {
  background: var(--surface-hover, rgba(255,255,255,0.04));
}

.earnings-row-date {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.earnings-date-label {
  font-size: 0.84rem;
  color: var(--text-primary);
  font-weight: 500;
}

.earnings-days-badge {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 10px;
  width: fit-content;
}

.earnings-badge-imminent {
  background: rgba(239, 68, 68, 0.15);
  color: #f87171;
  border: 1px solid rgba(239, 68, 68, 0.25);
}

.earnings-badge-soon {
  background: rgba(203, 166, 90, 0.15);
  color: #e0c070;
  border: 1px solid rgba(203, 166, 90, 0.25);
}

.earnings-badge-future {
  background: rgba(99, 179, 136, 0.12);
  color: #6ec995;
  border: 1px solid rgba(99, 179, 136, 0.2);
}

.earnings-badge-past {
  background: var(--surface-card);
  color: var(--text-secondary);
  border: 1px solid var(--border-subtle);
}

.earnings-row-main {
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 0;
}

.earnings-row-identity {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.earnings-row-name {
  font-size: 0.87rem;
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.earnings-row-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.earnings-row-stats {
  display: flex;
  gap: 20px;
  align-items: center;
}

.earnings-stat {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
}

.earnings-stat .field-label {
  font-size: 0.7rem;
}

.earnings-stat strong {
  font-size: 0.84rem;
}

.earnings-signal {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 5px;
  min-width: 110px;
}

.earnings-article-toggle {
  font-size: 0.72rem;
  color: var(--text-secondary);
}

.earnings-article-toggle.is-active {
  color: var(--accent-soft);
}

.earnings-signal-action[data-tooltip]::after,
.earnings-risk-badge[data-tooltip]::after,
.earnings-article-badge[data-tooltip]::after,
.news-importance-badge[data-tooltip]::after {
  left: auto;
  right: 0;
  width: 260px;
}

.earnings-signal-action {
  font-size: 0.78rem;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 12px;
  white-space: nowrap;
}

/* action colors */
.signal-buy                { background: rgba(34,197,94,0.15);  color: #4ade80; border: 1px solid rgba(34,197,94,0.25); }
.signal-consider-calls     { background: rgba(99,102,241,0.15); color: #a5b4fc; border: 1px solid rgba(99,102,241,0.25); }
.signal-lean-buy           { background: rgba(34,197,94,0.08);  color: #86efac; border: 1px solid rgba(34,197,94,0.15); }
.signal-hold---watch       { background: rgba(203,166,90,0.12); color: #e0c070; border: 1px solid rgba(203,166,90,0.2); }
.signal-cautious           { background: rgba(249,115,22,0.12); color: #fb923c; border: 1px solid rgba(249,115,22,0.2); }
.signal-short-watch        { background: rgba(239,68,68,0.15);  color: #f87171; border: 1px solid rgba(239,68,68,0.25); }
.signal-avoid              { background: rgba(239,68,68,0.10);  color: #fca5a5; border: 1px solid rgba(239,68,68,0.18); }

.earnings-signal-risk {
  display: flex;
  align-items: center;
  gap: 5px;
}

.earnings-risk-badge {
  font-size: 0.7rem;
  font-weight: 600;
  padding: 1px 7px;
  border-radius: 8px;
}

.risk-low       { background: rgba(34,197,94,0.1);   color: #86efac; border: 1px solid rgba(34,197,94,0.2); }
.risk-medium    { background: rgba(203,166,90,0.1);  color: #e0c070; border: 1px solid rgba(203,166,90,0.2); }
.risk-high      { background: rgba(249,115,22,0.1);  color: #fb923c; border: 1px solid rgba(249,115,22,0.2); }
.risk-very-high { background: rgba(239,68,68,0.1);   color: #f87171; border: 1px solid rgba(239,68,68,0.2); }

.anthropic-chip {
  background: rgba(99, 102, 241, 0.12);
  color: #a5b4fc;
  border-color: rgba(99, 102, 241, 0.2);
}

/* Earnings soon chip ──────────────────────────────────────────────────────── */
.earnings-soon-chip {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 8px;
  white-space: nowrap;
  cursor: default;
  background: rgba(148, 163, 184, 0.1);
  color: #94a3b8;
  border: 1px solid rgba(148, 163, 184, 0.2);
}
.earnings-soon-chip.earnings-soon-soon    { background: rgba(148,163,184,0.1);  color: #94a3b8; border-color: rgba(148,163,184,0.2); }
.earnings-soon-chip.earnings-soon-warn    { background: rgba(251,191,36,0.12);  color: #fbbf24; border-color: rgba(251,191,36,0.3); }
.earnings-soon-chip.earnings-soon-hot     { background: rgba(249,115,22,0.12);  color: #fb923c; border-color: rgba(249,115,22,0.3); }
.earnings-soon-chip.earnings-soon-imminent{ background: rgba(239,68,68,0.15);   color: #f87171; border-color: rgba(239,68,68,0.35); }
.earnings-soon-chip.earnings-soon-today   { background: rgba(239,68,68,0.2);    color: #fca5a5; border-color: rgba(239,68,68,0.5); animation: earnings-pulse 1.5s ease-in-out infinite; }

@keyframes earnings-pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.6; }
}

.earnings-article-panel {
  margin: 0 22px 12px;
  padding: 14px 16px 16px;
  border: 1px solid var(--border-subtle);
  border-top: none;
  border-radius: 0 0 14px 14px;
  background: rgba(10, 18, 34, 0.45);
}

.earnings-article-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.earnings-article-panel-title {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.earnings-article-note,
.earnings-article-status {
  margin: 8px 0 0;
  font-size: 0.75rem;
  color: var(--text-secondary);
  line-height: 1.55;
}

.earnings-article-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
  margin-top: 12px;
}

.earnings-article-card {
  padding: 12px;
  border-radius: 12px;
  border: 1px solid var(--border-subtle);
  background: rgba(255, 255, 255, 0.03);
}

.earnings-article-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
}

.earnings-article-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 600;
  border: 1px solid transparent;
}

.earnings-article-date,
.earnings-article-meta {
  font-size: 0.72rem;
  color: var(--text-secondary);
}

.earnings-article-meta {
  margin: 6px 0 0;
}

.earnings-article-reason {
  margin: 8px 0 10px;
  font-size: 0.77rem;
  line-height: 1.55;
  color: var(--text-primary);
}

.article-tone-positive {
  background: rgba(34, 197, 94, 0.14);
  color: #86efac;
  border-color: rgba(34, 197, 94, 0.24);
}

.article-tone-watch {
  background: rgba(203, 166, 90, 0.12);
  color: #e0c070;
  border-color: rgba(203, 166, 90, 0.2);
}

.article-tone-negative {
  background: rgba(239, 68, 68, 0.14);
  color: #fca5a5;
  border-color: rgba(239, 68, 68, 0.24);
}

.article-tone-mixed {
  background: rgba(99, 102, 241, 0.13);
  color: #c7d2fe;
  border-color: rgba(99, 102, 241, 0.22);
}

.article-tone-quiet {
  background: rgba(148, 163, 184, 0.12);
  color: #cbd5e1;
  border-color: rgba(148, 163, 184, 0.2);
}

.news-feed {
  padding: 8px 0 24px;
}

.news-disclaimer {
  margin-bottom: 8px;
}

.news-feed-status {
  margin: 0 22px 14px;
  font-size: 0.75rem;
  line-height: 1.6;
  color: var(--text-secondary);
}

.news-feed-status.is-error {
  color: #fca5a5;
}

.news-feed-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 0 22px;
}

.news-feed-item {
  display: block;
  padding: 14px 16px;
  border: 1px solid var(--border-subtle);
  border-left: 3px solid var(--border-subtle);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.02);
  cursor: pointer;
  transition: background 0.1s, border-color 0.1s;
}

.news-feed-item[data-importance="high"] {
  border-left-color: #f87171;
}

.news-feed-item[data-importance="medium"] {
  border-left-color: #fcd34d;
}

.news-feed-item:hover {
  background: var(--surface-hover, rgba(255,255,255,0.04));
  border-color: var(--line-strong);
}

.news-feed-item[data-importance="high"]:hover {
  border-left-color: #f87171;
}

.news-feed-item[data-importance="medium"]:hover {
  border-left-color: #fcd34d;
}

.news-feed-main {
  min-width: 0;
}

.news-feed-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.news-feed-company {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}

.news-feed-headline {
  display: inline-block;
  margin-top: 8px;
  color: var(--text-primary);
  font-size: 0.95rem;
  font-weight: 600;
  line-height: 1.45;
  text-decoration: none;
}

.news-feed-headline:hover {
  text-decoration: underline;
}

.news-feed-empty {
  margin: 0 22px;
}

.news-article-meta {
  margin: 6px 0 0;
  font-size: 0.75rem;
  color: var(--text-secondary);
}

.news-filter-bar {
  padding: 10px 0 4px;
  gap: 6px;
}

.prompt-toolbar {
  padding: 0;
}

.prompt-meta-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  padding: 10px 22px 0;
  max-width: 1180px;
  width: calc(100% - 44px);
  margin: 0 auto;
}

.prompt-stat-card,
.prompt-context-card,
.prompt-output-shell,
.premarket-panel,
.premarket-sector-card,
.premarket-idea-card,
.premarket-signal-card,
.premarket-source-card {
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.025);
}

.prompt-stat-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 16px;
}

.prompt-stat-card strong {
  font-size: 1.1rem;
  color: var(--text);
}

.prompt-stat-card span:last-child {
  font-size: 0.78rem;
  line-height: 1.5;
  color: var(--muted);
}

.prompt-feedback {
  min-height: 18px;
  margin: 10px auto 0;
  font-size: 0.78rem;
  color: #8de1b5;
  opacity: 0;
  transition: opacity 0.12s ease;
  max-width: 1180px;
  width: calc(100% - 44px);
}

.prompt-feedback.is-visible {
  opacity: 1;
}

.prompt-feedback.is-error {
  color: #fca5a5;
}

.premarket-top-grid {
  display: none; /* legacy panels moved into My Positions tab */
}

.premarket-top-slot {
  min-width: 0;
}

.prompt-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
  padding: 4px 22px 24px;
  max-width: 1180px;
  width: calc(100% - 44px);
  margin: 0 auto;
}

.prompt-context-stack {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  align-content: start;
}

.prompt-context-card {
  padding: 16px 18px;
}

.prompt-context-card h4 {
  margin: 4px 0 10px;
  font-size: 0.95rem;
  color: var(--text);
}

.prompt-context-card p {
  margin: 0;
  font-size: 0.83rem;
  line-height: 1.65;
  color: var(--muted-strong);
}

.prompt-context-card p + p {
  margin-top: 10px;
}

.prompt-context-subtle {
  color: var(--muted);
}

/* ── Pre-Market inner tab nav ───────────────────────────────────────────── */

.pm-tab-nav {
  display: flex;
  gap: 10px;
  padding: 0;
  margin-bottom: 18px;
  flex-wrap: wrap;
}

.pm-tab {
  padding: 9px 16px;
  border-radius: 14px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: rgba(255, 255, 255, 0.03);
  color: var(--muted-strong);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: transform 0.16s ease, background 0.16s ease, color 0.16s ease, border-color 0.16s ease;
}

.pm-tab:hover {
  transform: translateY(-1px);
  background: rgba(255, 255, 255, 0.06);
  color: var(--text);
  border-color: rgba(86, 137, 255, 0.22);
}

.pm-tab.is-active {
  background: linear-gradient(180deg, rgba(86, 137, 255, 0.18), rgba(86, 137, 255, 0.08));
  border-color: rgba(86, 137, 255, 0.45);
  color: #d6e4ff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

.pm-tab-content {
  display: grid;
  gap: 16px;
}

.desk-overview-shell {
  display: grid;
  gap: 16px;
}

.desk-overview-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.92fr);
  gap: 18px;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.028), rgba(255, 255, 255, 0.012)),
    linear-gradient(135deg, rgba(6, 12, 20, 0.98), rgba(11, 19, 30, 0.95));
  box-shadow: var(--shadow);
}

.desk-overview-hero-copy {
  display: grid;
  align-content: start;
  gap: 14px;
  padding: 4px 2px 2px;
}

.desk-overview-hero-copy h4 {
  margin: 0;
  max-width: 12ch;
  color: #f7f2eb;
  font-family: var(--font-display);
  font-size: clamp(2.5rem, 4vw, 3.6rem);
  line-height: 0.94;
  letter-spacing: -0.045em;
}

.desk-overview-hero-copy p {
  margin: 0;
  max-width: 54ch;
  color: #dbc49a;
  font-size: 0.98rem;
  line-height: 1.64;
}

.desk-overview-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.desk-overview-hero-side {
  display: grid;
  gap: 12px;
}

.desk-overview-status-card {
  display: grid;
  gap: 10px;
  min-height: 180px;
  padding: 18px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 18px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.015)),
    rgba(8, 15, 23, 0.82);
}

.desk-overview-status-top {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  color: var(--muted-strong);
  font-size: 0.78rem;
}

.desk-overview-status-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0.4rem 0.72rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: rgba(8, 13, 19, 0.68);
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.desk-overview-status-card strong {
  font-size: 1.28rem;
  line-height: 1.15;
  letter-spacing: -0.03em;
}

.desk-overview-status-card p {
  margin: 0;
  color: var(--muted-strong);
  line-height: 1.55;
}

.desk-overview-status-foot {
  color: var(--muted);
  font-size: 0.8rem;
}

.desk-overview-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.desk-overview-metric {
  display: grid;
  gap: 6px;
  padding: 14px 15px;
  border-radius: 16px;
  border: 1px solid rgba(255, 255, 255, 0.06);
  background: rgba(255, 255, 255, 0.03);
}

.desk-overview-metric strong {
  font-size: 1.3rem;
  letter-spacing: -0.03em;
}

.desk-overview-metric span:last-child {
  color: var(--muted);
  line-height: 1.45;
  font-size: 0.8rem;
}

.desk-overview-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(300px, 0.88fr);
  gap: 16px;
}

.desk-overview-main,
.desk-overview-side {
  display: grid;
  gap: 16px;
  align-content: start;
}

.desk-surface-panel {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.012)),
    rgba(8, 15, 23, 0.52);
}

.desk-panel-story {
  display: grid;
  gap: 10px;
  margin-bottom: 14px;
}

.desk-panel-story p {
  margin: 0;
  color: var(--muted-strong);
  line-height: 1.65;
}

.desk-callout-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 14px;
}

.desk-pulse-panel {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.028), rgba(255, 255, 255, 0.012)),
    rgba(9, 16, 25, 0.6);
}

.desk-pulse-status {
  margin: 0 0 12px;
  color: var(--accent-strong);
  font-weight: 700;
  line-height: 1.5;
}

.desk-pulse-list {
  display: grid;
  gap: 10px;
}

.desk-pulse-row {
  display: grid;
  gap: 8px;
  padding: 13px 14px;
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.025);
}

.desk-pulse-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
}

.desk-pulse-title {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
}

.desk-pulse-title strong {
  font-size: 0.92rem;
  line-height: 1.3;
}

.desk-pulse-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  justify-content: flex-end;
}

.desk-pulse-note {
  margin: 0;
  color: var(--muted-strong);
  font-size: 0.84rem;
  line-height: 1.58;
}

.desk-pulse-meta {
  color: var(--muted);
  font-size: 0.76rem;
  line-height: 1.45;
}

.desk-pulse-quotes {
  margin: 0;
}

.desk-pulse-quotes .quote-pill {
  font-size: 10px;
  padding: 2px 7px;
}

.desk-inline-link {
  padding: 0;
  border: none;
  background: none;
  color: var(--accent);
  font: inherit;
  font-weight: 700;
  text-align: left;
  cursor: pointer;
}

@media (max-width: 1320px) {
  #premarket-view .surface-heading-row,
  #openmarket-view .surface-heading-row {
    align-items: flex-start;
    flex-direction: column;
  }

  #premarket-view .surface-heading-row .prompt-toolbar,
  #openmarket-view .surface-heading-row .prompt-toolbar {
    width: 100%;
    justify-content: flex-start;
    padding-top: 0;
  }

  #premarket-view .analysis-generated-label,
  #openmarket-view .analysis-generated-label {
    white-space: normal;
  }

  .premarket-active .premarket-data-grid,
  .openmarket-active .premarket-data-grid {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  }

  .premarket-active .desk-overview-status-top,
  .openmarket-active .desk-overview-status-top {
    flex-direction: column;
    align-items: flex-start;
  }

  #view-toggle.segmented-control {
    gap: 14px;
  }

  #view-toggle .segment-toggle {
    font-size: 0.92rem;
  }
}

.premarket-top-panel .prompt-feedback {
  width: auto;
  max-width: none;
  min-height: 0;
  margin: 0;
}

.prompt-output-shell {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  overflow: hidden;
}

.prompt-output-head {
  padding: 16px 18px 0;
}

.prompt-output-head p {
  margin: 6px 0 0;
  font-size: 0.8rem;
  line-height: 1.6;
  color: var(--muted-strong);
}

.prompt-output {
  width: calc(100% - 36px);
  min-height: 360px;
  margin: 16px 18px 18px;
  padding: 18px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 14px;
  background: rgba(10, 14, 22, 0.76);
  color: var(--text);
  font: 0.84rem/1.65 "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
  resize: vertical;
}

.prompt-output:focus {
  outline: 1px solid rgba(86, 137, 255, 0.5);
  outline-offset: 0;
}

.premarket-analysis-stack {
  display: grid;
  gap: 14px;
  align-content: start;
  width: calc(100% - 44px);
  max-width: 1180px;
  padding: 4px 0 24px;
  margin: 0 auto;
}

.premarket-panel {
  padding: 16px 18px 18px;
}

/* ── Treasury Check panel ───────────────────────────────────────────────────── */
.treasury-check-panel {
  border-left: 3px solid var(--accent, #4e85d8);
  background: var(--surface-raised, rgba(255,255,255,0.015));
}
.treasury-bias-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.72rem;
  font-weight: 700;
  padding: 0.25rem 0.65rem;
  border-radius: 6px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  white-space: nowrap;
  flex-shrink: 0;
}
.treasury-bias-headwind {
  background: rgba(239, 68, 68, 0.15);
  color: #f87171;
  border: 1px solid rgba(239, 68, 68, 0.25);
}
.treasury-bias-tailwind {
  background: rgba(34, 197, 94, 0.12);
  color: #4ade80;
  border: 1px solid rgba(34, 197, 94, 0.2);
}
.treasury-bias-neutral {
  background: rgba(234, 179, 8, 0.1);
  color: #eab308;
  border: 1px solid rgba(234, 179, 8, 0.2);
}
.treasury-key-level {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  margin: 0.5rem 0 0;
  font-size: 0.82rem;
}
.treasury-note {
  margin-top: 0.6rem;
  padding: 0.55rem 0.75rem;
  background: var(--surface-strong, rgba(255,255,255,0.05));
  border-radius: 6px;
  font-size: 0.84rem;
  line-height: 1.5;
  color: var(--fg);
}
.treasury-note p { margin: 0; }

.premarket-panel-sub {
  padding-top: 0;
}

.premarket-panel-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 14px;
}

.premarket-panel-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}

.premarket-panel-head h4,
.premarket-detail-group summary,
.premarket-subheading {
  margin: 4px 0 0;
  font-size: 1rem;
  color: var(--text);
}

.premarket-subheading {
  margin-bottom: 10px;
}

.premarket-copy-block {
  display: grid;
  gap: 10px;
  margin-bottom: 14px;
}

.new-ideas-refresh-note {
  padding: 12px 14px;
  border: 1px solid rgba(96, 165, 250, 0.22);
  border-radius: 12px;
  background: rgba(59, 130, 246, 0.08);
}

.new-ideas-refresh-meta {
  color: var(--muted);
  font-size: 0.8rem;
}

.premarket-copy-block p,
.premarket-callout p,
.premarket-idea-title p,
.premarket-sector-card p,
.premarket-source-card p {
  margin: 0;
  color: var(--muted-strong);
  line-height: 1.6;
}

.premarket-data-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
}

.premarket-data-item {
  padding: 12px 13px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.02);
}

.premarket-data-item strong {
  display: block;
  margin-top: 6px;
  color: var(--text);
  line-height: 1.5;
}

.premarket-callout {
  padding: 13px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.02);
}

.premarket-callout-risk {
  border-color: rgba(249, 115, 22, 0.28);
  background: rgba(249, 115, 22, 0.08);
}

.premarket-split-callouts,
.premarket-split-panels {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 14px;
}

.premarket-bullet-list {
  margin: 10px 0 0;
  padding-left: 18px;
  color: var(--muted-strong);
  line-height: 1.6;
}

.premarket-empty-copy {
  margin: 10px 0 0;
  color: var(--muted);
  line-height: 1.6;
}

.premarket-card-grid,
.premarket-signal-grid,
.premarket-sector-grid,
.premarket-source-list {
  display: grid;
  gap: 12px;
}

.premarket-card-grid {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.premarket-signal-grid,
.premarket-source-list {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.premarket-sector-grid {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.premarket-idea-card,
.premarket-signal-card,
.premarket-source-card,
.premarket-sector-card {
  padding: 14px 15px;
}

.premarket-idea-head,
.premarket-sector-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
}

.premarket-idea-title,
.premarket-idea-side {
  display: grid;
  gap: 6px;
}

.premarket-idea-title h4,
.premarket-sector-card strong,
.premarket-signal-card strong {
  margin: 0;
  color: var(--text);
}

.premarket-idea-side {
  min-width: 88px;
  justify-items: end;
  text-align: right;
}

.premarket-idea-side strong {
  color: var(--text);
}

.premarket-chip-cluster {
  margin: 12px 0;
}

.premarket-ticker-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.premarket-direction {
  font-weight: 700;
  text-transform: capitalize;
}

.premarket-idea-card .premarket-callout,
.premarket-idea-card .premarket-split-callouts {
  margin-top: 12px;
}

.premarket-signal-meta,
.premarket-sector-meta {
  display: grid;
  gap: 6px;
  margin-top: 12px;
  color: var(--muted);
  font-size: 0.82rem;
  line-height: 1.5;
}

.premarket-sector-meta strong {
  color: var(--muted-strong);
}

.premarket-table-wrap {
  padding: 0;
}

.premarket-table th,
.premarket-table td {
  vertical-align: top;
  white-space: normal;
}

.premarket-table-why {
  min-width: 240px;
  color: var(--muted-strong);
  line-height: 1.55;
}

.premarket-data-item.is-positive strong {
  color: #8de1b5;
}

.premarket-data-item.is-negative strong {
  color: #fca5a5;
}

/* ── Premarket idea card-rows (replaces scrolling table) ─────────────────── */

.pm-idea-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 4px;
}

.pm-idea-row {
  display: flex;
  gap: 14px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-left-width: 3px;
  border-left-color: transparent;
  border-radius: 12px;
  background: rgba(255,255,255,0.02);
  align-items: flex-start;
  transition: background 0.12s;
}

/* Conviction left-border */
.pm-idea-row.pm-conviction-high   { border-left-color: rgba(52,199,89,0.55); }
.pm-idea-row.pm-conviction-medium { border-left-color: rgba(245,166,35,0.55); }
.pm-idea-row.pm-conviction-low    { border-left-color: rgba(150,150,150,0.3); }

/* Held-position row highlight */
.pm-idea-row.pm-idea-holding { background: rgba(52,199,89,0.04); }
.pm-idea-row-clickable.pm-idea-holding:hover { background: rgba(52,199,89,0.09); }

/* Rank column with conviction bar */
.pm-idea-rank-col {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  width: 22px;
  padding-top: 3px;
}
.pm-idea-rank-num {
  font-size: 0.75rem;
  color: var(--muted);
  text-align: center;
  line-height: 1;
}
.pm-idea-conv-bar {
  width: 4px;
  border-radius: 2px;
  flex: 1;
  min-height: 18px;
}
.pm-idea-conv-bar.pm-conviction-high   { background: var(--positive); }
.pm-idea-conv-bar.pm-conviction-medium { background: #f5a623; opacity: 0.85; }
.pm-idea-conv-bar.pm-conviction-low    { background: var(--muted);   opacity: 0.5; }

/* "You hold" badge */
.pm-idea-holding-badge {
  display: inline-flex;
  align-items: center;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  background: rgba(52,199,89,0.13);
  color: var(--positive);
  border: 1px solid rgba(52,199,89,0.3);
  border-radius: 20px;
  padding: 2px 8px;
  white-space: nowrap;
}

/* Confidence chip in the top idea row */
.pm-confidence-chip {
  font-size: 0.72rem;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 20px;
  white-space: nowrap;
}
.pm-confidence-chip.high   { background: rgba(52,199,89,0.14);  color: var(--positive); }
.pm-confidence-chip.medium { background: rgba(245,166,35,0.15); color: #f5a623; }
.pm-confidence-chip.low    { background: rgba(150,150,150,0.12); color: var(--muted); }

/* Legacy compat — keep rank for anything that still uses it */
.pm-idea-rank {
  flex-shrink: 0;
  width: 22px;
  padding-top: 2px;
  font-size: 0.75rem;
  color: var(--muted);
  text-align: center;
}

.pm-idea-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.pm-idea-top {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.pm-idea-desc {
  font-size: 0.88rem;
  color: var(--text);
  flex: 1;
  min-width: 120px;
}

.pm-idea-dir {
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: capitalize;
}

.pm-idea-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 18px;
  font-size: 0.78rem;
  color: var(--muted);
}

.pm-idea-meta strong {
  color: var(--muted-strong);
  font-weight: 500;
}

.pm-idea-detail {
  font-size: 0.8rem;
  color: var(--muted);
  line-height: 1.5;
}

.pm-idea-detail strong {
  color: var(--muted-strong);
  font-weight: 500;
}

.pm-idea-why {
  font-size: 0.8rem;
  color: var(--muted);
  line-height: 1.55;
  padding-top: 2px;
  border-top: 1px solid rgba(255,255,255,0.06);
  margin-top: 2px;
}

/* Position recommendation cards ─────────────────────────────────────────── */

.pos-rec-list {
  display: grid;
  gap: 12px;
  margin-top: 14px;
}

.pos-rec-card {
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.025);
  padding: 14px 16px 15px;
}

.pos-rec-top {
  margin-bottom: 10px;
}

.pos-action-badge {
  display: inline-block;
  padding: 2px 9px;
  border-radius: 20px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.pos-action-hold   { background: rgba(100, 160, 255, 0.18); color: #7fbbff; }
.pos-action-add    { background: rgba(80, 210, 120, 0.18);  color: #6fdb96; }
.pos-action-trim   { background: rgba(255, 190, 80, 0.18);  color: #ffd070; }
.pos-action-exit   { background: rgba(255, 90, 80, 0.18);   color: #ff8080; }
.pos-action-hedge  { background: rgba(180, 120, 255, 0.18); color: #c79fff; }
.pos-action-watch  { background: rgba(140, 150, 170, 0.18); color: #aab0bf; }

.pos-rec-reason {
  margin: 0 0 10px;
  color: var(--text);
  font-size: 0.87rem;
  line-height: 1.6;
}

.pos-rec-meta {
  margin-top: 8px;
}

.pos-rec-add {
  margin-top: 10px;
  padding: 8px 12px;
  border-radius: 8px;
  background: rgba(80, 210, 120, 0.08);
  color: #a8e6be;
  font-size: 0.82rem;
  line-height: 1.55;
}

.pos-rec-risk {
  margin-top: 8px;
  padding: 8px 12px;
  border-radius: 8px;
  background: rgba(255, 150, 80, 0.08);
  color: #ffbe8f;
  font-size: 0.82rem;
  line-height: 1.55;
}

.pos-rec-uncovered {
  margin-top: 12px;
  padding: 10px 14px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.04);
  color: var(--muted);
  font-size: 0.81rem;
  line-height: 1.55;
}
.pos-rec-topup-loading {
  background: rgba(99, 102, 241, 0.08);
  color: var(--accent);
  font-style: italic;
  animation: earnings-pulse 1.6s ease-in-out infinite;
}

/* Position recommendation filter chips ───────────────────────────────────── */

/* Position recommendations collapsible header ───────────────────────────── */

.pos-rec-collapse > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  margin-bottom: 16px;
  border-radius: 8px;
  border: 1px solid var(--line-strong);
  background: var(--surface-raised);
  user-select: none;
  transition: background 0.15s, border-color 0.15s;
}
.pos-rec-collapse > summary:hover {
  background: var(--surface-strong);
  border-color: rgba(255,255,255,0.18);
}
.pos-rec-collapse > summary::-webkit-details-marker { display: none; }

.pos-rec-collapse-left {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.pos-rec-collapse-title {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--fg);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.pos-rec-collapse-sub {
  font-size: 0.74rem;
  color: var(--muted);
}

.pos-rec-collapse-right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.pos-rec-summary-chip {
  font-size: 0.72rem;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 10px;
  white-space: nowrap;
}
.pos-rec-summary-add   { background: rgba(34,197,94,0.15);  color: #4ade80; border: 1px solid rgba(34,197,94,0.25); }
.pos-rec-summary-trim  { background: rgba(251,146,60,0.15); color: #fb923c; border: 1px solid rgba(251,146,60,0.25); }
.pos-rec-summary-hold  { background: rgba(148,163,184,0.12); color: #94a3b8; border: 1px solid rgba(148,163,184,0.2); }
.pos-rec-summary-watch { background: rgba(129,140,248,0.12); color: #818cf8; border: 1px solid rgba(129,140,248,0.2); }

.pos-rec-collapse[open] > summary .pos-list-toggle-chevron { transform: rotate(0deg); }
.pos-rec-collapse:not([open]) > summary .pos-list-toggle-chevron { transform: rotate(-90deg); }

.pos-rec-snap-row {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 12px;
}

/* ─────────────────────────────────────────────────────────────────────────── */

.pos-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 16px;
}

.pos-filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0.44rem 0.78rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.05);
  color: var(--muted-strong);
  font: inherit;
  font-size: 0.82rem;
  line-height: 1;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
}

.pos-filter-chip:hover {
  border-color: var(--line-strong);
  background: rgba(255, 255, 255, 0.09);
  color: var(--text);
}

.pos-filter-chip.is-active {
  border-color: rgba(78, 133, 216, 0.34);
  background: var(--accent-soft);
  color: var(--accent-strong);
}

.pos-filter-count {
  opacity: 0.65;
  font-size: 0.85em;
}

/* Spotlight tab ───────────────────────────────────────────────────────────── */

.spotlight-panel {
  border: 1px solid var(--line-strong);
}

.spotlight-desc {
  color: var(--muted-strong);
  font-size: 0.87rem;
  line-height: 1.6;
  margin: 0 0 14px;
}

.spotlight-input-row {
  display: flex;
  gap: 8px;
  align-items: center;
}

.spotlight-ticker-input {
  flex: 1;
  padding: 0.58rem 0.84rem;
  border-radius: 10px;
  border: 1px solid var(--line-strong);
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  font: inherit;
  font-size: 0.95rem;
  outline: none;
  transition: border-color 0.15s;
}

.spotlight-ticker-input:focus {
  border-color: var(--accent);
}

.spotlight-ticker-input::placeholder {
  color: var(--muted);
}

.spotlight-run-btn {
  padding: 0.56rem 1.1rem;
  border-radius: 10px;
  border: 1px solid rgba(78, 133, 216, 0.5);
  background: var(--accent-soft);
  color: var(--accent-strong);
  font: inherit;
  font-size: 0.88rem;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color 0.15s, background 0.15s;
}

.spotlight-run-btn:hover:not(:disabled) {
  border-color: var(--accent);
  background: rgba(78, 133, 216, 0.24);
}

.spotlight-run-btn:disabled {
  opacity: 0.55;
  cursor: default;
}

.spotlight-history {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin: 14px 0 0;
}

.spotlight-history-btn {
  display: inline-flex;
  align-items: center;
  padding: 0.28rem 0.64rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.04);
  color: var(--muted-strong);
  font: inherit;
  font-size: 0.8rem;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}

.spotlight-history-btn:hover {
  border-color: var(--line-strong);
  background: rgba(255, 255, 255, 0.08);
  color: var(--text);
}

.spotlight-result-panel {
  margin-top: 12px;
}

.spotlight-price-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0 0 14px;
  font-size: 0.97rem;
}

.spotlight-delta {
  color: var(--muted-strong);
  font-size: 0.9rem;
}

.spotlight-meta-chip {
  padding: 0.2rem 0.56rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.04);
  color: var(--muted-strong);
  font-size: 0.78rem;
}

.spotlight-sources {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.spotlight-source-link {
  color: var(--accent);
  font-size: 0.81rem;
  text-decoration: none;
  padding: 0.18rem 0.52rem;
  border-radius: 999px;
  border: 1px solid rgba(78, 133, 216, 0.3);
  transition: background 0.15s;
}

.spotlight-source-link:hover {
  background: var(--accent-soft);
}

.spotlight-source-label {
  color: var(--muted);
  font-size: 0.81rem;
}

/* Spotlight v2 — simplified, digestible layout ──────────────────────────── */

.spotlight-hero-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}

.spotlight-hero-title h4 {
  margin: 0;
  font-size: 1.4rem;
  letter-spacing: 0.02em;
}

.spotlight-hero-company {
  display: block;
  color: var(--muted);
  font-size: 0.85rem;
  margin-top: 2px;
}

.spotlight-hero-badge {
  flex-shrink: 0;
  font-size: 0.85rem;
  padding: 0.4rem 0.8rem;
}

.spotlight-hero-price-row {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin: 4px 0 12px;
}

.spotlight-hero-price {
  font-size: 1.6rem;
  font-weight: 600;
  color: var(--text);
}

.spotlight-hero-delta {
  font-size: 0.95rem;
  color: var(--muted-strong);
}

.spotlight-tldr {
  font-size: 0.98rem;
  line-height: 1.5;
  margin: 0 0 14px;
  color: var(--text);
}

.spotlight-rationale {
  background: rgba(78, 133, 216, 0.06);
  border-left: 3px solid var(--accent);
  border-radius: 6px;
  padding: 10px 14px;
  margin: 0 0 16px;
}

.spotlight-rationale-label {
  display: block;
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--accent);
  margin-bottom: 4px;
  font-weight: 600;
}

.spotlight-rationale p {
  margin: 0;
  font-size: 0.93rem;
  line-height: 1.5;
  color: var(--text);
}

.spotlight-trade-box {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 8px;
  margin: 0 0 12px;
}

.spotlight-trade-tile {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 10px 12px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid var(--line);
}

.spotlight-trade-tile.is-entry {
  border-color: rgba(78, 133, 216, 0.35);
  background: rgba(78, 133, 216, 0.08);
}

.spotlight-trade-tile.is-stop {
  border-color: rgba(231, 99, 99, 0.35);
  background: rgba(231, 99, 99, 0.08);
}

.spotlight-trade-tile.is-target {
  border-color: rgba(99, 200, 138, 0.35);
  background: rgba(99, 200, 138, 0.08);
}

.spotlight-trade-label {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
  font-weight: 600;
}

.spotlight-trade-value {
  font-size: 1rem;
  font-weight: 600;
  color: var(--text);
}

.spotlight-rec-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 14px;
}

.spotlight-rec-chip {
  font-size: 0.78rem;
  padding: 0.25rem 0.6rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--line);
  color: var(--muted-strong);
}

.spotlight-options-note {
  font-size: 0.85rem;
  color: var(--muted-strong);
  padding: 8px 12px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px dashed var(--line);
  margin: 0 0 14px;
}

.spotlight-details-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 12px;
  border-top: 1px solid var(--line);
  padding-top: 10px;
}

.spotlight-details {
  border-radius: 6px;
  background: transparent;
  transition: background 0.15s;
}

.spotlight-details[open] {
  background: rgba(255, 255, 255, 0.02);
}

.spotlight-details-summary {
  cursor: pointer;
  padding: 8px 10px;
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--muted-strong);
  list-style: none;
  position: relative;
  user-select: none;
  border-radius: 6px;
}

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

.spotlight-details-summary::before {
  content: "▸";
  display: inline-block;
  width: 14px;
  font-size: 0.7rem;
  color: var(--muted);
  transition: transform 0.15s;
}

.spotlight-details[open] > .spotlight-details-summary::before {
  transform: rotate(90deg);
}

.spotlight-details-summary:hover {
  color: var(--text);
  background: rgba(255, 255, 255, 0.04);
}

.spotlight-details-body {
  padding: 4px 14px 12px 24px;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--text);
}

.spotlight-details-body p {
  margin: 0 0 8px;
}

.spotlight-details-body p:last-child {
  margin-bottom: 0;
}

.spotlight-kv-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 8px;
}

.spotlight-kv {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 10px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid var(--line);
}

.spotlight-kv-label {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  font-weight: 600;
}

.spotlight-sources-inline {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

/* Long-term investing — position cards and Best Moves section ──────────── */

.pos-rec-longterm {
  margin-top: 12px;
  padding: 10px 12px;
  border-radius: 8px;
  background: rgba(99, 200, 138, 0.05);
  border-left: 3px solid rgba(99, 200, 138, 0.5);
}

details.pos-rec-longterm > summary {
  list-style: none;
  cursor: pointer;
}

details.pos-rec-longterm > summary::-webkit-details-marker {
  display: none;
}

.pos-rec-longterm-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

details.pos-rec-longterm[open] > summary.pos-rec-longterm-head {
  margin-bottom: 6px;
}

/* Action groups on My Positions "all" view ────────────────────────────── */

.pos-action-group {
  margin-bottom: 4px;
}

.pos-action-group-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 2px;
  cursor: pointer;
  list-style: none;
  border-bottom: 1px solid var(--line);
  margin-bottom: 10px;
  user-select: none;
}

.pos-action-group-head::-webkit-details-marker {
  display: none;
}

.pos-action-group-label {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted-strong);
}

.pos-action-group-count {
  font-size: 0.72rem;
  color: var(--muted);
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 1px 7px;
}

.pos-action-group-chevron {
  margin-left: auto;
  color: var(--muted);
  font-size: 0.75rem;
  transition: transform 0.15s;
  display: inline-block;
}

details.pos-action-group[open] .pos-action-group-chevron {
  transform: rotate(180deg);
}

.pos-rec-list--grouped {
  padding-bottom: 8px;
}

.pos-rec-longterm-label {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(99, 200, 138, 0.95);
  font-weight: 600;
}

.lt-action-chip {
  font-size: 0.74rem;
  padding: 0.18rem 0.5rem;
  border-radius: 999px;
  background: rgba(99, 200, 138, 0.12);
  border: 1px solid rgba(99, 200, 138, 0.35);
  color: var(--text);
  text-transform: capitalize;
}

.lt-horizon-chip {
  font-size: 0.74rem;
  padding: 0.18rem 0.5rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--line);
  color: var(--muted-strong);
}

.pos-rec-longterm-thesis {
  margin: 4px 0;
  font-size: 0.88rem;
  line-height: 1.45;
  color: var(--text);
  font-style: italic;
}

.pos-rec-longterm-view {
  margin: 4px 0 0;
  font-size: 0.88rem;
  line-height: 1.45;
  color: var(--muted-strong);
}

/* Long-term ideas panel in Best Moves */
.lt-ideas-panel {
  margin-top: 18px;
}

.lt-ideas-desc {
  color: var(--muted);
  font-size: 0.85rem;
  margin: 0 0 14px;
  line-height: 1.5;
}

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

.lt-idea-card {
  padding: 14px 16px;
  border-radius: 10px;
  background: rgba(99, 200, 138, 0.04);
  border: 1px solid rgba(99, 200, 138, 0.18);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.lt-idea-card.pm-idea-holding {
  background: rgba(99, 200, 138, 0.08);
  border-color: rgba(99, 200, 138, 0.45);
}

.lt-idea-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.lt-idea-whyown {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.4;
  color: var(--text);
  font-weight: 500;
}

.lt-idea-thesis {
  margin: 0;
  font-size: 0.88rem;
  line-height: 1.5;
  color: var(--muted-strong);
}

.lt-idea-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 8px;
  margin-top: 4px;
}

.lt-idea-kv {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 10px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid var(--line);
  font-size: 0.85rem;
  line-height: 1.4;
}

.lt-idea-kv-label {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  font-weight: 600;
}

.lt-idea-risk {
  font-size: 0.82rem;
  color: var(--muted-strong);
  padding-top: 8px;
  border-top: 1px dashed var(--line);
}

.lt-idea-risk strong {
  color: var(--text);
}

.empty-state.is-error {
  color: var(--negative);
}

.pm-tab-content-inner {
  padding: 4px 0;
}

/* Legacy upload/active lists ─────────────────────────────────────────────── */

.pm-active-list,
.pm-upload-list,
.premarket-position-list {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.pm-active-card,
.pm-upload-card,
.premarket-position-row {
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.02);
  padding: 13px 14px;
}

.pm-active-top,
.premarket-position-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
}

.premarket-position-row-collapsible {
  display: block;
}

.pm-active-rank {
  color: var(--muted);
  font-size: 0.76rem;
  white-space: nowrap;
}

.pm-active-title {
  display: block;
  margin-top: 10px;
  color: var(--text);
}

.pm-active-action {
  margin: 6px 0 0;
  color: #d9e5ff;
  font-size: 0.82rem;
}

.pm-active-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  margin-top: 10px;
  color: var(--muted);
  font-size: 0.79rem;
  line-height: 1.5;
}

.pm-active-meta strong {
  color: var(--muted-strong);
}

.pm-active-why {
  margin: 10px 0 0;
  color: var(--muted-strong);
  font-size: 0.8rem;
  line-height: 1.55;
}

.pm-upload-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
}

.pm-upload-title {
  min-width: 0;
  flex: 1;
}

.pm-upload-title h4 {
  margin: 10px 0 0;
  color: var(--text);
}

.pm-upload-side {
  min-width: 0;
  text-align: right;
}

.pm-upload-side strong {
  display: block;
  margin-top: 4px;
  color: var(--text);
}

.pm-upload-status {
  margin: 7px 0 0;
  font-size: 0.82rem;
  line-height: 1.5;
}

.pm-upload-status.positive {
  color: #d9e5ff;
}

.pm-upload-status.negative {
  color: #fecaca;
}

.pm-upload-status.neutral {
  color: var(--muted-strong);
}

.pm-upload-extra {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.premarket-position-help {
  margin-top: 14px;
  margin-bottom: 14px;
}

.premarket-position-list-shell {
  display: grid;
  gap: 12px;
  border-top: 1px solid var(--line);
  margin-top: 12px;
  padding-top: 4px;
}

.premarket-position-list-shell > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-radius: 8px;
  border: 1px solid var(--line-strong);
  background: var(--surface-raised);
  user-select: none;
  transition: background 0.15s, border-color 0.15s;
}
.premarket-position-list-shell > summary:hover {
  background: var(--surface-strong);
  border-color: rgba(255,255,255,0.18);
}
.premarket-position-list-shell > summary::-webkit-details-marker { display: none; }

.pos-list-toggle-label {
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--fg);
  flex: 1;
}

.pos-list-toggle-chevron {
  font-size: 0.8rem;
  color: var(--muted);
  transition: transform 0.2s;
}

.premarket-position-list-shell[open] > summary .pos-list-toggle-chevron {
  transform: rotate(0deg);
}
.premarket-position-list-shell:not([open]) > summary .pos-list-toggle-chevron {
  transform: rotate(-90deg);
}

.premarket-position-list-toolbar {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.premarket-position-list-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.portfolio-balance-panel {
  margin-top: 14px;
  margin-bottom: 14px;
  padding: 14px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.025);
}

.portfolio-balance-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 12px;
}

.portfolio-balance-header h4 {
  margin: 6px 0 0;
  color: var(--text);
}

.portfolio-balance-note {
  margin: 0;
  color: var(--muted);
  font-size: 0.78rem;
  line-height: 1.45;
  text-align: right;
}

.portfolio-balance-section {
  margin-top: 12px;
}

.portfolio-breakdown-row,
.portfolio-top-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
}

.portfolio-breakdown-chip,
.portfolio-top-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0.35rem 0.6rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.03);
  color: var(--muted-strong);
  font-size: 0.76rem;
}

.portfolio-breakdown-chip strong,
.portfolio-top-chip strong {
  color: var(--text);
}

.portfolio-breakdown-chip em,
.portfolio-top-chip em {
  color: var(--muted);
  font-style: normal;
}

.portfolio-role-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 8px;
}

.portfolio-role-card {
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: rgba(255, 255, 255, 0.025);
  padding: 12px;
}

.portfolio-role-card strong {
  display: block;
  color: var(--text);
}

.portfolio-role-card p {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 0.78rem;
  line-height: 1.5;
}

.portfolio-capital-map {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 14px;
}

.portfolio-capital-card {
  border-radius: 12px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.025);
  padding: 12px;
}

.portfolio-capital-card strong {
  display: block;
  margin-top: 6px;
  color: var(--text);
}

.portfolio-capital-card p {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 0.79rem;
  line-height: 1.5;
}

.portfolio-capital-card.tone-ok {
  border-color: rgba(52, 199, 89, 0.2);
  background: rgba(52, 199, 89, 0.05);
}

.portfolio-capital-card.tone-warn {
  border-color: rgba(255, 170, 50, 0.28);
  background: rgba(255, 170, 50, 0.06);
}

.portfolio-capital-card.tone-bad {
  border-color: rgba(255, 69, 58, 0.28);
  background: rgba(255, 69, 58, 0.05);
}

.portfolio-sleeve-chip {
  border-radius: 999px;
  padding: 0.14rem 0.48rem;
  font-size: 0.72rem;
  font-weight: 600;
  border: 1px solid rgba(255, 255, 255, 0.12);
  background: rgba(255, 255, 255, 0.04);
  color: var(--muted-strong);
}

.portfolio-sleeve-chip.sleeve-core {
  border-color: rgba(52, 199, 89, 0.25);
  background: rgba(52, 199, 89, 0.08);
  color: #54d18a;
}

.portfolio-sleeve-chip.sleeve-satellite {
  border-color: rgba(78, 133, 216, 0.25);
  background: rgba(78, 133, 216, 0.08);
  color: #8db5ff;
}

.portfolio-sleeve-chip.sleeve-tactical,
.portfolio-sleeve-chip.sleeve-options {
  border-color: rgba(255, 159, 10, 0.25);
  background: rgba(255, 159, 10, 0.08);
  color: #ffb14d;
}

.portfolio-sleeve-chip.sleeve-hedge {
  border-color: rgba(255, 69, 58, 0.25);
  background: rgba(255, 69, 58, 0.08);
  color: #ff8b84;
}

.premarket-position-controls {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}

.premarket-upload-field {
  flex: 1;
  min-width: 220px;
}

.premarket-upload-field input[type="file"] {
  width: 100%;
  border: 1px dashed rgba(255, 255, 255, 0.14);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.025);
  color: var(--muted-strong);
  padding: 10px 12px;
}

.premarket-position-main {
  min-width: 0;
  flex: 1;
}

.premarket-position-card {
  min-width: 0;
}

.premarket-position-summary {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 14px;
}

.premarket-position-summary-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  color: var(--accent);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  white-space: nowrap;
  margin-top: 2px;
  border: none;
  background: none;
  padding: 0;
  cursor: pointer;
}

.premarket-position-summary-toggle::before {
  content: "";
  width: 8px;
  height: 8px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg);
  margin-top: -3px;
  transition: transform 0.18s ease;
}

.premarket-position-summary-toggle[aria-expanded="true"]::before {
  transform: rotate(225deg);
  margin-top: 1px;
}

.premarket-position-details {
  display: grid;
  gap: 12px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.premarket-position-details[hidden] {
  display: none !important;
}

.premarket-position-details > .position-guardrail-grid:first-child,
.premarket-position-details > .portfolio-sleeve-editor:first-child {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}

.premarket-position-actions {
  display: flex;
  justify-content: flex-end;
}

.portfolio-sleeve-editor {
  display: grid;
  gap: 6px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.position-guardrail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.position-guardrail-field {
  align-content: start;
}

.position-guardrail-input-row {
  display: flex;
  align-items: center;
  gap: 6px;
}

.position-guardrail-input {
  min-width: 0;
}

.position-guardrail-note,
.position-guardrail-helper {
  color: var(--muted);
  font-size: 0.77rem;
  line-height: 1.45;
}

.position-guardrail-helper {
  margin-top: 2px;
}

.portfolio-sleeve-field {
  max-width: 240px;
}

.portfolio-sleeve-field select {
  padding-top: 0.68rem;
  padding-bottom: 0.68rem;
}

.portfolio-sleeve-hint {
  margin: 0;
  color: var(--muted);
  font-size: 0.77rem;
  line-height: 1.5;
}

.remove-position-button {
  align-self: flex-start;
}

@media (max-width: 860px) {
  .portfolio-capital-map {
    grid-template-columns: 1fr;
  }

  .portfolio-role-grid {
    grid-template-columns: 1fr;
  }

  .portfolio-balance-header {
    flex-direction: column;
  }

  .portfolio-balance-note {
    text-align: left;
  }

  .premarket-position-summary {
    flex-direction: column;
  }

  .premarket-position-summary-toggle {
    align-self: flex-start;
  }
}

.premarket-detail-group {
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.02);
  padding: 14px 16px 16px;
}

.premarket-detail-group summary {
  cursor: pointer;
  list-style: none;
}

.premarket-detail-group summary::-webkit-details-marker {
  display: none;
}

.premarket-detail-group[open] summary {
  margin-bottom: 14px;
}

.premarket-warning-note {
  margin: 0;
}

.premarket-empty-state {
  margin: 0;
}

.premarket-prompt-details {
  margin: 0 auto 24px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.02);
  overflow: hidden;
  max-width: 1180px;
  width: calc(100% - 44px);
}

.premarket-prompt-details summary {
  cursor: pointer;
  list-style: none;
  padding: 16px 18px;
  color: var(--text);
  font-weight: 600;
}

.premarket-prompt-details summary::-webkit-details-marker {
  display: none;
}

.premarket-prompt-details[open] summary {
  border-bottom: 1px solid var(--line);
}

/* Source badges */
.source-badge {
  display: inline-flex;
  align-items: center;
  padding: 1px 7px;
  border-radius: 4px;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  white-space: nowrap;
}

.source-badge-sec     { background: rgba(239, 68, 68, 0.15); color: #fca5a5; border: 1px solid rgba(239, 68, 68, 0.3); }
.source-badge-ir      { background: rgba(99, 102, 241, 0.15); color: #a5b4fc; border: 1px solid rgba(99, 102, 241, 0.3); }
.source-badge-pr      { background: rgba(168, 85, 247, 0.15); color: #d8b4fe; border: 1px solid rgba(168, 85, 247, 0.3); }
.source-badge-api     { background: rgba(20, 184, 166, 0.15); color: #5eead4; border: 1px solid rgba(20, 184, 166, 0.3); }
.source-badge-yahoo   { background: rgba(234, 179, 8, 0.12); color: #fde68a; border: 1px solid rgba(234, 179, 8, 0.25); }
.source-badge-google  { background: rgba(59, 130, 246, 0.12); color: #93c5fd; border: 1px solid rgba(59, 130, 246, 0.25); }
.source-badge-cnbc    { background: rgba(34, 197, 94, 0.14); color: #86efac; border: 1px solid rgba(34, 197, 94, 0.28); }

/* Event type chips */
.event-type-chip {
  display: inline-flex;
  align-items: center;
  padding: 1px 7px;
  border-radius: 4px;
  font-size: 0.68rem;
  font-weight: 600;
  white-space: nowrap;
  background: rgba(148, 163, 184, 0.1);
  color: var(--text-secondary);
  border: 1px solid rgba(148, 163, 184, 0.2);
}

.event-type-earnings, .event-type-guidance         { background: rgba(251, 191, 36, 0.12); color: #fcd34d; border-color: rgba(251, 191, 36, 0.25); }
.event-type-sec-filing, .event-type-insider-activity { background: rgba(239, 68, 68, 0.12); color: #fca5a5; border-color: rgba(239, 68, 68, 0.25); }
.event-type-data-center-expansion, .event-type-ai-infrastructure { background: rgba(99, 102, 241, 0.12); color: #a5b4fc; border-color: rgba(99, 102, 241, 0.25); }
.event-type-analyst-rating                         { background: rgba(20, 184, 166, 0.12); color: #5eead4; border-color: rgba(20, 184, 166, 0.25); }
.event-type-contract, .event-type-partnership      { background: rgba(34, 197, 94, 0.12); color: #86efac; border-color: rgba(34, 197, 94, 0.25); }
.event-type-power-energy, .event-type-cooling      { background: rgba(249, 115, 22, 0.12); color: #fdba74; border-color: rgba(249, 115, 22, 0.25); }

.news-article-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.news-article-reason {
  margin: 8px 0 10px;
  font-size: 0.77rem;
  line-height: 1.55;
  color: var(--text-primary);
}

.news-importance-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 700;
  border: 1px solid transparent;
  white-space: nowrap;
}

.article-importance-high {
  background: rgba(239, 68, 68, 0.12);
  color: #fecaca;
  border-color: rgba(239, 68, 68, 0.22);
}

.article-importance-medium {
  background: rgba(245, 158, 11, 0.12);
  color: #fcd34d;
  border-color: rgba(245, 158, 11, 0.2);
}

.article-importance-low {
  background: rgba(148, 163, 184, 0.12);
  color: #cbd5e1;
  border-color: rgba(148, 163, 184, 0.2);
}

@media (max-width: 1180px) {
  .earnings-row {
    grid-template-columns: 150px 1fr;
    gap: 14px;
  }

  .earnings-row-stats,
  .earnings-signal {
    grid-column: 2;
  }

  .earnings-row-stats {
    flex-wrap: wrap;
    gap: 14px;
  }

  .earnings-signal {
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    flex-wrap: wrap;
    min-width: 0;
  }

  .news-feed-top {
    flex-direction: column;
    align-items: flex-start;
  }
}

@media (max-width: 760px) {
  .earnings-row {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .earnings-row-date,
  .earnings-row-stats,
  .earnings-signal {
    grid-column: 1;
  }

  .earnings-stat {
    align-items: flex-start;
  }

  .earnings-article-panel {
    margin: 0 14px 12px;
  }

  .earnings-article-panel-head {
    align-items: flex-start;
    flex-direction: column;
  }

  .news-feed-status,
  .news-feed-empty {
    margin-left: 14px;
    margin-right: 14px;
  }

  .news-feed-list {
    padding: 0 14px;
  }

  .news-feed-item {
    padding: 12px 14px;
  }
}

/* ── Allocate view ─────────────────────────────────────────────── */

.allocate-controls {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr auto;
  gap: 12px;
  align-items: flex-end;
  padding: 18px 22px 0;
}

.allocate-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  padding: 18px 22px 0;
  border-bottom: 1px solid var(--border-subtle);
  padding-bottom: 18px;
  margin-bottom: 4px;
}

.allocate-summary-stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.allocate-summary-stat strong {
  font-size: 1.05rem;
  color: var(--text-primary);
}

.allocate-bucket {
  padding: 18px 22px 0;
}

.allocate-bucket-label {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-secondary);
  margin: 0 0 12px;
}

.allocate-card {
  background: var(--surface-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  padding: 14px 16px;
  margin-bottom: 8px;
}

.allocate-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}

.allocate-card-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.allocate-amount {
  font-size: 1rem;
  color: var(--text-primary);
  white-space: nowrap;
}

.allocate-why summary {
  font-size: 0.8rem;
  color: var(--text-secondary);
  cursor: pointer;
  padding: 2px 0;
}

.allocate-why p {
  margin: 8px 0 6px;
  font-size: 0.84rem;
  line-height: 1.6;
  color: var(--text-secondary);
}

.allocate-metrics {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  font-size: 0.8rem;
  color: var(--text-secondary);
}

.allocate-metrics .field-label {
  font-size: 0.75rem;
}

.allocate-disclaimer {
  padding: 18px 22px;
  font-size: 0.78rem;
  color: var(--text-muted, var(--text-secondary));
  line-height: 1.6;
  opacity: 0.7;
}

#allocate-results .empty-state {
  margin: 18px 22px;
}

.allocate-custom-section {
  border-top: 1px solid var(--border-subtle);
  margin-top: 8px;
  padding-top: 18px;
}

.allocate-custom-desc {
  font-size: 0.8rem;
  color: var(--text-secondary);
  margin: 0 0 14px;
  padding: 0 22px;
  line-height: 1.5;
}

.allocate-custom-heading {
  padding: 0 22px;
}

.allocate-custom-heading .allocate-bucket-label {
  margin-bottom: 4px;
}

.allocate-custom-controls {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 0 22px 14px;
  flex-wrap: wrap;
}

.allocate-custom-select {
  flex: 1;
  min-width: 180px;
  height: 36px;
  padding: 0 10px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm, 6px);
  background: var(--surface-input, var(--surface-card));
  color: var(--text-primary);
  font-size: 0.85rem;
}

.allocate-custom-amount {
  width: 130px;
  height: 36px;
  padding: 0 10px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm, 6px);
  background: var(--surface-input, var(--surface-card));
  color: var(--text-primary);
  font-size: 0.85rem;
}

.my-pick-badge {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  color: var(--accent, #7c6ef2);
  background: color-mix(in srgb, var(--accent, #7c6ef2) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--accent, #7c6ef2) 30%, transparent);
  border-radius: 4px;
  padding: 1px 6px;
  white-space: nowrap;
}

.allocate-card-custom {
  margin: 0 22px 8px;
  border-color: var(--accent-subtle, var(--border-subtle));
}

.allocate-card-right {
  display: flex;
  align-items: center;
  gap: 10px;
  white-space: nowrap;
}

.remove-custom-pick {
  background: none;
  border: none;
  color: var(--text-secondary);
  cursor: pointer;
  font-size: 0.8rem;
  padding: 2px 4px;
  line-height: 1;
  opacity: 0.6;
  transition: opacity 0.15s;
}

.remove-custom-pick:hover {
  opacity: 1;
  color: var(--text-primary);
}

@media (max-width: 1160px) {
  .workspace {
    grid-template-columns: 1fr;
  }

  .workspace--sidebar-collapsed {
    grid-template-columns: 1fr;
  }

  .sidebar {
    position: static;
    max-height: none;
    overflow: visible;
    padding-right: 0;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .watchlist-panel .watchlist-list {
    padding-right: 22px;
  }

  .workspace--sidebar-collapsed .sidebar {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 900px) {
  .app-shell {
    padding: 18px 18px 40px;
  }

  .topbar {
    flex-direction: column;
    align-items: stretch;
  }

  .topbar-mode-shell {
    justify-content: space-between;
  }

  .summary-strip,
  .sidebar {
    grid-template-columns: 1fr;
  }

  .company-focus-header,
  .company-focus-header-actions,
  .company-focus-heading,
  .panel-heading,
  .surface-heading,
  .toolbar-row {
    flex-direction: column;
    align-items: start;
  }

  .selection-score {
    justify-content: start;
  }

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

  .early-card-top,
  .early-card-heading,
  .scenario-card-top,
  .scenario-card-heading {
    flex-direction: column;
    align-items: start;
  }

  .early-stats,
  .scenario-controls {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .peer-row {
    grid-template-columns: 56px minmax(0, 1fr) 28px;
  }
}

@media (max-width: 620px) {
  .summary-strip,
  .selection-meta-grid,
  .early-stats,
  .scenario-controls {
    grid-template-columns: 1fr;
  }

  .company-table-wrap,
  .selection-summary,
  .segment-overview,
  .research-tracks,
  .early-signals-list,
  .scenario-controls,
  .scenario-context,
  .scenario-phases,
  .map-context,
  .buildout-map,
  .peer-comparison {
    padding-left: 16px;
    padding-right: 16px;
  }

  .topbar {
    padding: 12px 14px;
  }

  .company-table-wrap {
    padding-left: 12px;
    padding-right: 12px;
  }

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

  .comparison-table th,
  .comparison-table td {
    padding: 12px 8px;
  }

  .table-company {
    min-width: 152px;
  }

  .table-score-cell {
    min-width: 92px;
  }

  .company-focus-header,
  .company-focus-panel .selection-summary {
    padding-left: 16px;
    padding-right: 16px;
  }

  .surface-heading,
  .panel-heading {
    padding-left: 16px;
    padding-right: 16px;
  }

  .watchlist-list,
  .principles-list,
  .filter-group,
  .settings-button-row,
  .about-tracker-body {
    padding-left: 16px;
    padding-right: 16px;
  }

  .watchlist-panel .watchlist-list {
    padding-right: 16px;
  }

  .settings-status {
    margin-left: 16px;
    margin-right: 16px;
  }

  .early-signals-note {
    margin-left: 16px;
    margin-right: 16px;
  }

  .scenario-warning {
    margin-left: 16px;
    margin-right: 16px;
  }

  .scenario-review-banner {
    margin-left: 16px;
    margin-right: 16px;
  }

  .allocate-controls {
    grid-template-columns: 1fr 1fr;
    padding-left: 16px;
    padding-right: 16px;
  }

  .prompt-meta-grid,
  .prompt-grid,
  .prompt-feedback {
    padding-left: 16px;
    padding-right: 16px;
  }

  .allocate-bucket,
  .allocate-summary,
  .allocate-disclaimer {
    padding-left: 16px;
    padding-right: 16px;
  }

  .topbar-actions {
    width: 100%;
    justify-content: stretch;
  }

  .topbar-search {
    min-width: 0;
  }

  .premarket-prompt-details {
    margin-left: 16px;
    margin-right: 16px;
  }
}

@media (max-width: 1040px) {
  .prompt-meta-grid,
  .prompt-context-stack {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .prompt-output {
    min-height: 320px;
  }

  .premarket-split-callouts,
  .premarket-split-panels {
    grid-template-columns: 1fr;
  }

  .premarket-position-controls {
    flex-direction: column;
    align-items: stretch;
  }

  .premarket-idea-head,
  .pm-upload-head,
  .premarket-sector-head {
    flex-direction: column;
    align-items: flex-start;
  }

  .premarket-idea-side,
  .pm-upload-side {
    justify-items: start;
    text-align: left;
  }
}

@media (max-width: 720px) {
  .prompt-meta-grid,
  .prompt-context-stack {
    grid-template-columns: 1fr;
  }
}

/* ── Breakout Watch ──────────────────────────────────────────────────────── */

.bw-feed-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 0 20px 24px;
}

.bw-card {
  display: flex;
  gap: 16px;
  background: var(--surface-2, #1a1a2e);
  border: 1px solid var(--border, rgba(255,255,255,0.08));
  border-left: 4px solid var(--border, rgba(255,255,255,0.12));
  border-radius: 8px;
  padding: 14px 16px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}

.bw-card:hover {
  background: var(--surface-3, #22223a);
}

.bw-card.bw-score-strong { border-left-color: #22c55e; }
.bw-card.bw-score-watch  { border-left-color: #3b82f6; }
.bw-card.bw-score-weak   { border-left-color: #f59e0b; }
.bw-card.bw-score-low    { border-left-color: rgba(255,255,255,0.15); }

.bw-card-left {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  min-width: 56px;
  padding-top: 2px;
}

.bw-score {
  font-size: 28px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.5px;
}

.bw-score.bw-score-strong { color: #22c55e; }
.bw-score.bw-score-watch  { color: #60a5fa; }
.bw-score.bw-score-weak   { color: #f59e0b; }
.bw-score.bw-score-low    { color: var(--text-muted, rgba(255,255,255,0.4)); }

.bw-score-label {
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--text-muted, rgba(255,255,255,0.4));
  margin-top: 3px;
  text-align: center;
}

.bw-card-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.bw-card-header {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.quote-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 2px 0 4px;
}

.quote-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  background: rgba(255, 255, 255, 0.05);
  color: rgba(255, 255, 255, 0.72);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.01em;
}

.quote-pill.quote-pill-primary {
  background: rgba(69, 171, 255, 0.14);
  border-color: rgba(69, 171, 255, 0.28);
  color: #d8ecff;
}

.quote-pill.quote-pill-muted {
  color: rgba(255, 255, 255, 0.55);
}

.quote-pill.positive {
  background: rgba(34, 197, 94, 0.12);
  border-color: rgba(34, 197, 94, 0.28);
  color: #86efac;
}

.quote-pill.negative {
  background: rgba(248, 113, 113, 0.12);
  border-color: rgba(248, 113, 113, 0.28);
  color: #fca5a5;
}

.quote-pill.neutral {
  color: rgba(255, 255, 255, 0.68);
}

.bw-company-name {
  font-size: 14px;
  font-weight: 600;
}

.bw-categories {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.bw-category-badge {
  font-size: 10px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 10px;
  border: 1px solid;
  letter-spacing: 0.2px;
}

.bw-cat-guidance  { background: rgba(34,197,94,0.12);  border-color: rgba(34,197,94,0.3);  color: #86efac; }
.bw-cat-earnings  { background: rgba(34,197,94,0.08);  border-color: rgba(34,197,94,0.2);  color: #4ade80; }
.bw-cat-revenue   { background: rgba(16,185,129,0.1);  border-color: rgba(16,185,129,0.3); color: #6ee7b7; }
.bw-cat-contract  { background: rgba(59,130,246,0.1);  border-color: rgba(59,130,246,0.3); color: #93c5fd; }
.bw-cat-backlog   { background: rgba(99,102,241,0.1);  border-color: rgba(99,102,241,0.3); color: #a5b4fc; }
.bw-cat-ai        { background: rgba(139,92,246,0.12); border-color: rgba(139,92,246,0.4); color: #c4b5fd; }
.bw-cat-semi      { background: rgba(236,72,153,0.1);  border-color: rgba(236,72,153,0.3); color: #f9a8d4; }
.bw-cat-power     { background: rgba(245,158,11,0.1);  border-color: rgba(245,158,11,0.3); color: #fcd34d; }
.bw-cat-cooling   { background: rgba(6,182,212,0.1);   border-color: rgba(6,182,212,0.3);  color: #67e8f9; }
.bw-cat-analyst   { background: rgba(251,191,36,0.1);  border-color: rgba(251,191,36,0.3); color: #fde68a; }
.bw-cat-filing    { background: rgba(107,114,128,0.15);border-color: rgba(107,114,128,0.3);color: #d1d5db; }
.bw-cat-insider   { background: rgba(249,115,22,0.1);  border-color: rgba(249,115,22,0.3); color: #fdba74; }
.bw-cat-default   { background: rgba(255,255,255,0.06);border-color: rgba(255,255,255,0.15);color: rgba(255,255,255,0.7); }

.bw-explanation {
  font-size: 12px;
  color: var(--text-muted, rgba(255,255,255,0.55));
  margin: 0;
  line-height: 1.45;
}

.bw-top-article {
  font-size: 12px;
  color: var(--accent, #818cf8);
  text-decoration: none;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.bw-top-article:hover {
  text-decoration: underline;
}

.bw-meta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 2px;
}

.bw-keywords,
.bw-customers,
.bw-article-count {
  font-size: 11px;
  color: var(--text-muted, rgba(255,255,255,0.4));
}

.bw-risk-flag {
  font-size: 10px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 10px;
  background: rgba(239,68,68,0.12);
  border: 1px solid rgba(239,68,68,0.3);
  color: #fca5a5;
}

.bw-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 0 20px 12px;
}

/* ── Reddit Signals ──────────────────────────────────────────────────────── */

.rs-card.bw-score-high    { border-left-color: #f97316; }  /* orange — hype */
.rs-card.bw-score-rising  { border-left-color: #3b82f6; }
.rs-card.bw-score-low     { border-left-color: #f59e0b; }
.rs-card.bw-score-minimal { border-left-color: rgba(255,255,255,0.15); }

.rs-score.rs-score-high    { color: #f97316; }
.rs-score.rs-score-rising  { color: #60a5fa; }
.rs-score.rs-score-low     { color: #f59e0b; }
.rs-score.rs-score-minimal { color: var(--text-muted, rgba(255,255,255,0.4)); }

.rs-flags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.rs-flag {
  font-size: 10px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 10px;
  border: 1px solid;
}

.rs-flag-spike    { background: rgba(249,115,22,0.12); border-color: rgba(249,115,22,0.35); color: #fdba74; }
.rs-flag-momentum { background: rgba(59,130,246,0.12); border-color: rgba(59,130,246,0.35); color: #93c5fd; }
.rs-flag-risk     { background: rgba(239,68,68,0.12);  border-color: rgba(239,68,68,0.35);  color: #fca5a5; }
.rs-flag-pump     { background: rgba(239,68,68,0.18);  border-color: rgba(239,68,68,0.5);   color: #ef4444; }
.rs-flag-overlap  { background: rgba(139,92,246,0.12); border-color: rgba(139,92,246,0.35); color: #c4b5fd; }
.rs-flag-default  { background: rgba(255,255,255,0.06);border-color: rgba(255,255,255,0.15);color: rgba(255,255,255,0.6); }

.rs-metrics {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 12px;
  color: var(--text-secondary, rgba(255,255,255,0.7));
}

.rs-metric strong { color: var(--text-primary, #fff); }

.rs-change-up   { color: #4ade80; }
.rs-change-up strong { color: #4ade80; }
.rs-change-down { color: #f87171; }
.rs-change-down strong { color: #f87171; }

.rs-sentiment-bull { color: #4ade80; }
.rs-sentiment-bull strong { color: #4ade80; }
.rs-sentiment-bear { color: #f87171; }
.rs-sentiment-bear strong { color: #f87171; }

.rs-subreddits {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.rs-subreddit {
  font-size: 10px;
  padding: 1px 6px;
  border-radius: 8px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  color: rgba(255,255,255,0.5);
}

.rs-price {
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,0.7);
}

.rs-pricing-strip {
  margin-top: 0;
}

.rs-disclaimer {
  font-size: 10px;
  color: var(--text-muted, rgba(255,255,255,0.3));
  margin: 0;
  font-style: italic;
}

.rs-tracked-chip {
  background: rgba(99, 102, 241, 0.15);
  color: #a5b4fc;
  border: 1px solid rgba(99, 102, 241, 0.3);
}

.rs-new-chip {
  background: rgba(16, 185, 129, 0.12);
  color: #6ee7b7;
  border: 1px solid rgba(16, 185, 129, 0.25);
}

/* ── StockTwits card ─────────────────────────────────────────────────────── */

.st-card {
  border-left-color: rgba(255, 120, 0, 0.4);
}

.st-flags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 6px;
}

.st-flag {
  font-size: 10px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 10px;
  letter-spacing: 0.02em;
  white-space: nowrap;
}

.st-flag-trending  { background: rgba(251,191,36,0.15); color: #fbbf24; border: 1px solid rgba(251,191,36,0.3); }
.st-flag-catalyst  { background: rgba(99,102,241,0.15);  color: #a5b4fc; border: 1px solid rgba(99,102,241,0.3); }
.st-flag-breakout  { background: rgba(16,185,129,0.12);  color: #6ee7b7; border: 1px solid rgba(16,185,129,0.25); }
.st-flag-squeeze   { background: rgba(236,72,153,0.12);  color: #f9a8d4; border: 1px solid rgba(236,72,153,0.25); }
.st-flag-risk      { background: rgba(239,68,68,0.12);   color: #fca5a5; border: 1px solid rgba(239,68,68,0.25); }
.st-flag-default   { background: rgba(255,255,255,0.06); color: rgba(255,255,255,0.55); border: 1px solid rgba(255,255,255,0.12); }

.st-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
  font-size: 11px;
}

.st-watchlist {
  color: var(--text-muted, rgba(255,255,255,0.5));
}

.st-rank-badge {
  background: rgba(251,191,36,0.12);
  color: #fbbf24;
  border: 1px solid rgba(251,191,36,0.25);
  padding: 1px 6px;
  border-radius: 8px;
  font-size: 10px;
  font-weight: 600;
}

.st-sector {
  color: var(--text-muted, rgba(255,255,255,0.4));
}

.st-summary {
  font-size: 12px;
  line-height: 1.55;
  color: rgba(255,255,255,0.7);
  margin: 0 0 10px;
}

.st-footer {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.rs-add-btn {
  margin-left: auto;
  font-size: 11px;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 6px;
  border: 1px solid rgba(129, 140, 248, 0.4);
  background: rgba(129, 140, 248, 0.1);
  color: rgba(129, 140, 248, 0.95);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
  white-space: nowrap;
}

.rs-add-btn:hover {
  background: rgba(129, 140, 248, 0.2);
  border-color: rgba(129, 140, 248, 0.65);
}

.rs-add-btn--done {
  background: rgba(99, 200, 138, 0.1);
  border-color: rgba(99, 200, 138, 0.4);
  color: rgba(99, 200, 138, 0.9);
  cursor: default;
}

.rs-add-btn--inline {
  margin-left: 6px;
  font-size: 10px;
  padding: 2px 8px;
}

.bm-add-row {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--line);
}

.st-link {
  font-size: 11px;
  color: var(--accent, #818cf8);
  text-decoration: none;
}

.st-link:hover { text-decoration: underline; }

.st-source-badge {
  font-size: 10px;
  font-weight: 600;
  padding: 1px 6px;
  border-radius: 8px;
  background: rgba(255,120,0,0.12);
  color: rgba(255,140,0,0.9);
  border: 1px solid rgba(255,120,0,0.25);
  letter-spacing: 0.03em;
}

.rs-setup-message {
  padding: 24px 20px;
  text-align: center;
  line-height: 1.6;
  font-size: 13px;
}

.rs-setup-message a {
  color: var(--accent, #818cf8);
}

/* Add Stock — toggle button ────────────────────────────────────────────────── */

.add-stock-toggle-btn {
  display: inline-flex;
  align-items: center;
  padding: 0.38rem 0.82rem;
  border-radius: 999px;
  border: 1px solid var(--line-strong);
  background: rgba(255, 255, 255, 0.05);
  color: var(--muted-strong);
  font: inherit;
  font-size: 0.82rem;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
  margin-left: auto;
}

.add-stock-toggle-btn:hover,
.add-stock-toggle-btn.is-active {
  border-color: rgba(78, 133, 216, 0.45);
  background: var(--accent-soft);
  color: var(--accent-strong);
}

/* Add Stock — inline form ──────────────────────────────────────────────────── */

.add-stock-form {
  padding: 16px 20px 20px;
  margin: 0 0 4px;
  background: var(--surface-strong);
  border-radius: 14px;
  border: 1px solid var(--line-strong);
  animation: add-stock-slide-in 0.15s ease;
}

@keyframes add-stock-slide-in {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

.add-stock-form-grid {
  display: grid;
  grid-template-columns: 120px 1fr 160px;
  gap: 10px 12px;
  align-items: end;
}

.add-stock-label-wide {
  grid-column: 1 / -1;
}

.add-stock-label {
  display: flex;
  flex-direction: column;
  gap: 5px;
  font-size: 0.78rem;
  color: var(--muted-strong);
  font-weight: 500;
  letter-spacing: 0.02em;
}

.add-stock-required {
  color: var(--negative);
}

.add-stock-input {
  padding: 0.46rem 0.72rem;
  border-radius: 9px;
  border: 1px solid var(--line-strong);
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  font: inherit;
  font-size: 0.88rem;
  outline: none;
  width: 100%;
  transition: border-color 0.15s;
}

.add-stock-input:focus {
  border-color: var(--accent);
}

.add-stock-input::placeholder {
  color: var(--muted);
}

.add-stock-select {
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%239d9789' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  padding-right: 28px;
}

.add-stock-select option {
  background: var(--surface-strong);
  color: var(--text);
}

.add-stock-error {
  margin: 10px 0 0;
  padding: 8px 12px;
  border-radius: 8px;
  background: var(--negative-soft);
  color: var(--negative);
  font-size: 0.82rem;
}

.add-stock-actions {
  margin-top: 14px;
  display: flex;
  gap: 8px;
}

.add-stock-submit {
  padding: 0.5rem 1.1rem;
  border-radius: 10px;
  border: 1px solid rgba(78, 133, 216, 0.5);
  background: var(--accent-soft);
  color: var(--accent-strong);
  font: inherit;
  font-size: 0.88rem;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}

.add-stock-submit:hover {
  border-color: var(--accent);
  background: rgba(78, 133, 216, 0.24);
}

/* Add Stock — user-added row markers ─────────────────────────────────────── */

.user-added-badge {
  display: inline-flex;
  align-items: center;
  padding: 0.14rem 0.46rem;
  border-radius: 999px;
  background: rgba(78, 133, 216, 0.12);
  border: 1px solid rgba(78, 133, 216, 0.25);
  color: var(--accent);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.user-company-remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--muted);
  font-size: 0.75rem;
  line-height: 1;
  cursor: pointer;
  margin-left: 4px;
  vertical-align: middle;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
}

.user-company-remove:hover {
  border-color: var(--negative);
  background: var(--negative-soft);
  color: var(--negative);
}

.table-row.is-user-added {
  border-left: 2px solid rgba(78, 133, 216, 0.35);
}

/* Best Moves — "N matches your portfolio" header note */
.pm-action-held-note {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--positive);
  background: rgba(52,199,89,0.1);
  border: 1px solid rgba(52,199,89,0.25);
  border-radius: 20px;
  padding: 3px 10px;
  white-space: nowrap;
  align-self: center;
}

/* Best Moves row — clickable + "View setup →" hint ─────────────────────────── */

.pm-idea-row-clickable {
  cursor: pointer;
  transition: background 0.13s;
}

.pm-idea-row-clickable:hover {
  background: var(--hover);
}

.pm-idea-view-setup {
  font-size: 0.72rem;
  color: var(--accent);
  font-weight: 600;
  opacity: 0;
  margin-left: 2px;
  white-space: nowrap;
  transition: opacity 0.13s;
  pointer-events: none;
}

.pm-idea-row-clickable:hover .pm-idea-view-setup {
  opacity: 1;
}

/* Idea detail overlay ──────────────────────────────────────────────────────── */

.idea-detail-overlay {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.idea-detail-back-bar {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.6rem 0 0.85rem;
  flex-wrap: wrap;
}

.idea-detail-back-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.35rem 0.75rem;
  border-radius: 7px;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--accent);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.13s, border-color 0.13s;
  flex-shrink: 0;
}

.idea-detail-back-btn:hover {
  background: rgba(78, 133, 216, 0.1);
  border-color: var(--accent);
}

.idea-detail-back-title {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  flex-wrap: wrap;
  min-width: 0;
}

.idea-detail-trade-idea {
  font-size: 0.83rem;
  color: var(--fg);
  font-weight: 500;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 420px;
}

.idea-detail-body {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.idea-detail-no-card-note {
  padding: 0.6rem 0;
  font-size: 0.78rem;
  color: var(--muted);
  font-style: italic;
}

/* Stale positions warning banner ───────────────────────────────────────────── */

.positions-stale-banner {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  padding: 0.65rem 0.9rem;
  margin-bottom: 0.85rem;
  border-radius: 8px;
  background: rgba(255, 170, 50, 0.1);
  border: 1px solid rgba(255, 170, 50, 0.35);
  color: var(--fg);
  font-size: 0.83rem;
  line-height: 1.5;
}

.positions-stale-banner strong {
  font-weight: 700;
}

/* Last-refreshed label next to Refresh button ──────────────────────────────── */

.analysis-generated-label {
  font-size: 0.73rem;
  color: var(--muted);
  white-space: nowrap;
  align-self: center;
  opacity: 0.85;
}

.analysis-stale-badge {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  border-radius: 10px;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  background: rgba(239, 68, 68, 0.15);
  color: #f87171;
  border: 1px solid rgba(239, 68, 68, 0.3);
  vertical-align: middle;
}

/* Plan This button — inline variant for Best Moves rows ─────────────────────── */

.plan-this-inline {
  margin-top: 0;
  margin-left: auto;
  padding: 0.2rem 0.5rem;
  font-size: 0.7rem;
  flex-shrink: 0;
}

/* Options Play block — inside idea cards ──────────────────────────────────── */

.options-play-block {
  margin-top: 0.75rem;
  padding: 0.75rem;
  border-radius: 8px;
  background: rgba(99, 179, 130, 0.07);
  border: 1px solid rgba(99, 179, 130, 0.2);
}

.options-play-header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.5rem;
}

.options-play-quality {
  display: inline-flex;
  align-items: center;
  padding: 0.12rem 0.5rem;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  border: 1px solid transparent;
}

.options-play-quality.quality-good {
  background: rgba(72, 199, 116, 0.15);
  border-color: rgba(72, 199, 116, 0.35);
  color: #3ab97b;
}

.options-play-quality.quality-fair {
  background: rgba(255, 196, 60, 0.13);
  border-color: rgba(255, 196, 60, 0.35);
  color: #c9920a;
}

.options-play-quality.quality-expensive {
  background: rgba(255, 140, 50, 0.12);
  border-color: rgba(255, 140, 50, 0.35);
  color: #c96a10;
}

.options-play-quality.quality-avoid {
  background: rgba(231, 76, 76, 0.1);
  border-color: rgba(231, 76, 76, 0.3);
  color: #c94040;
}

.options-play-notes {
  margin: 0.4rem 0 0;
  font-size: 0.82rem;
  color: var(--muted);
  font-style: italic;
  line-height: 1.45;
}

/* Plan This button — on idea cards ─────────────────────────────────────────── */

.plan-this-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin-top: 0.5rem;
  padding: 0.3rem 0.65rem;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--accent);
  font-size: 0.75rem;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.14s, border-color 0.14s;
}

.plan-this-btn:hover {
  background: rgba(78, 133, 216, 0.1);
  border-color: var(--accent);
}

/* Trade Plan cards ──────────────────────────────────────────────────────────── */

.trade-plans-list {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.trade-plan-card {
  border-radius: 10px;
  border: 1px solid var(--line);
  padding: 0.85rem 1rem;
  background: var(--surface);
  border-left: 3px solid var(--line);
  transition: border-color 0.15s;
}

.trade-plan-card.is-watching  { border-left-color: rgba(78, 133, 216, 0.6); }
.trade-plan-card.is-entered   { border-left-color: rgba(72, 199, 116, 0.7); }
.trade-plan-card.is-closed    { border-left-color: rgba(140, 200, 140, 0.5); opacity: 0.8; }
.trade-plan-card.is-expired   { border-left-color: rgba(180, 100, 100, 0.45); opacity: 0.7; }

.trade-plan-header {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  flex-wrap: wrap;
  margin-bottom: 0.6rem;
}

.trade-plan-direction {
  font-size: 0.78rem;
  font-weight: 600;
  padding: 0.15rem 0.5rem;
  border-radius: 6px;
  border: 1px solid var(--line);
  text-transform: capitalize;
}

.trade-plan-direction.direction-bullish {
  background: rgba(72, 199, 116, 0.1);
  border-color: rgba(72, 199, 116, 0.3);
  color: #3ab97b;
}

.trade-plan-direction.direction-bearish {
  background: rgba(231, 76, 76, 0.08);
  border-color: rgba(231, 76, 76, 0.25);
  color: #c94040;
}

.trade-plan-status-badge {
  font-size: 0.7rem;
  font-weight: 700;
  padding: 0.12rem 0.5rem;
  border-radius: 999px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin-left: auto;
}

.trade-plan-status-badge.is-watching { background: rgba(78, 133, 216, 0.12); color: var(--accent); border: 1px solid rgba(78, 133, 216, 0.25); }
.trade-plan-status-badge.is-entered  { background: rgba(72, 199, 116, 0.12); color: #3ab97b; border: 1px solid rgba(72, 199, 116, 0.3); }
.trade-plan-status-badge.is-closed   { background: rgba(100, 200, 100, 0.1);  color: #5a9e6f; border: 1px solid rgba(100, 200, 100, 0.25); }
.trade-plan-status-badge.is-expired  { background: rgba(180, 100, 100, 0.1);  color: #a05050; border: 1px solid rgba(180, 100, 100, 0.25); }

.trade-plan-status-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.65rem;
  padding-top: 0.5rem;
  border-top: 1px solid var(--line);
}

.trade-plan-status-btn {
  padding: 0.25rem 0.6rem;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--muted);
  font-size: 0.73rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.13s, border-color 0.13s, color 0.13s;
}

.trade-plan-status-btn:hover {
  background: var(--hover);
  color: var(--fg);
}

.trade-plan-status-btn.is-active {
  background: rgba(78, 133, 216, 0.12);
  border-color: rgba(78, 133, 216, 0.35);
  color: var(--accent);
}

.trade-plan-footer {
  margin-top: 0.45rem;
  font-size: 0.72rem;
  color: var(--muted);
}

/* Live price on plan card */
.plan-live-price {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--fg);
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.plan-live-price em {
  font-style: normal;
  font-size: 0.74rem;
  font-weight: 400;
  color: var(--muted);
}

/* P&L badge */
.plan-pnl-badge {
  font-size: 0.78rem;
  font-weight: 700;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
}
.plan-pnl-win  { background: rgba(72, 199, 116, 0.15); color: #48c774; }
.plan-pnl-loss { background: rgba(220, 80, 80, 0.13);  color: #e05555; }

/* Win/loss summary bar */
.plan-summary-bar {
  display: flex;
  gap: 1.2rem;
  padding: 0.55rem 0.1rem 0.75rem;
  font-size: 0.82rem;
  font-weight: 600;
}
.plan-summary-item { opacity: 0.9; }

/* Inline price capture prompt */
.plan-price-prompt {
  background: rgba(78, 133, 216, 0.07);
  border: 1px solid rgba(78, 133, 216, 0.2);
  border-radius: 8px;
  padding: 0.65rem 0.8rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.plan-price-prompt-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.plan-price-prompt-row .budget-bar-input {
  width: 7rem;
  flex: none;
}
.plan-price-skip {
  background: none;
  border: none;
  color: var(--muted);
  font-size: 0.78rem;
  cursor: pointer;
  padding: 0.3rem 0.5rem;
  text-decoration: underline;
}
.plan-price-skip:hover { color: var(--fg); }

/* Trade plan form grid — reuses add-stock patterns ──────────────────────────── */

.trade-plan-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.6rem 1rem;
  padding: 0.75rem 0;
}

@media (max-width: 520px) {
  .trade-plan-form-grid { grid-template-columns: 1fr; }
}

/* ── Trade Journal ──────────────────────────────────────────────────────── */
.tj-upload-area {
  display: flex;
  align-items: center;
  gap: 0.6rem;
}
.tj-upload-label {
  cursor: pointer;
  font-size: 0.82rem;
}

.trade-journal-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.75rem;
  margin-bottom: 1rem;
}
.tj-stat {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 0.65rem 0.8rem;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.tj-stat strong { font-size: 1.05rem; }
.tj-stat em { font-style: normal; font-size: 0.75rem; color: var(--muted); }

.tj-ticker-section {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-bottom: 1rem;
}
.tj-ticker-group { display: flex; flex-direction: column; gap: 0.4rem; }
.tj-ticker-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.83rem;
}
.tj-ticker-pnl { font-weight: 700; margin-left: auto; }
.tj-ticker-count { color: var(--muted); font-size: 0.75rem; }

.tj-table-wrap {
  overflow-x: auto;
  margin-top: 0.5rem;
  border-radius: 8px;
  border: 1px solid var(--border);
}
.tj-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.81rem;
}
.tj-table th {
  text-align: left;
  padding: 0.5rem 0.75rem;
  border-bottom: 1px solid var(--border);
  color: var(--muted);
  font-weight: 600;
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  background: var(--surface);
}
.tj-table td {
  padding: 0.45rem 0.75rem;
  border-bottom: 1px solid var(--border);
  color: var(--fg);
  white-space: nowrap;
}
.tj-table td em { font-style: normal; color: var(--muted); font-size: 0.76rem; }
.tj-table tr:last-child td { border-bottom: none; }
.tj-row-close { background: rgba(255,255,255,0.015); }
.tj-close-tag {
  font-size: 0.7rem;
  background: rgba(78,133,216,0.1);
  color: var(--accent);
  padding: 1px 5px;
  border-radius: 4px;
}

/* Budget / Buying Power bar — thinkorswim-style ──────────────────────────────── */

.budget-bar {
  padding: 0.75rem 1rem;
  margin-bottom: 0.75rem;
  background: rgba(78, 133, 216, 0.06);
  border: 1px solid rgba(78, 133, 216, 0.18);
  border-radius: 10px;
}

.budget-bar-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 0.65rem;
}

.budget-bar-label {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--fg);
}

.budget-bar-source {
  font-size: 0.72rem;
  font-weight: 400;
  color: var(--muted);
  margin-left: 0.4rem;
}

.budget-bar-hint {
  font-size: 0.75rem;
  color: var(--muted);
}

.budget-bar-fields {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.6rem;
}

@media (max-width: 680px) {
  .budget-bar-fields { grid-template-columns: 1fr 1fr; }
}

.bp-field {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  cursor: text;
}

.bp-field-label {
  font-size: 0.72rem;
  color: var(--muted);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.bp-depleted-tag {
  display: inline-block;
  background: rgba(255, 69, 58, 0.15);
  color: #ff453a;
  border-radius: 3px;
  padding: 0 0.3em;
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  margin-left: 0.2em;
  vertical-align: middle;
}

.bp-field.bp-depleted .budget-bar-input-wrap {
  border-color: rgba(255, 69, 58, 0.35);
}

.budget-bar-input-wrap {
  display: flex;
  align-items: center;
  gap: 0.2rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 0.25rem 0.5rem;
  transition: border-color 0.15s;
}

.budget-bar-input-wrap:focus-within {
  border-color: rgba(78, 133, 216, 0.5);
}

.budget-bar-prefix {
  font-size: 0.82rem;
  color: var(--muted);
  font-weight: 500;
  flex-shrink: 0;
}

.budget-bar-input {
  background: transparent;
  border: none;
  outline: none;
  color: var(--fg);
  font-size: 0.88rem;
  font-weight: 600;
  width: 100%;
  min-width: 0;
  -moz-appearance: textfield;
}
.budget-bar-input::-webkit-outer-spin-button,
.budget-bar-input::-webkit-inner-spin-button { -webkit-appearance: none; }

/* Budget allocation badges — distinct colors for shares vs options ──────────── */

.budget-alloc-badge {
  display: inline-flex;
  align-items: center;
  padding: 0.15rem 0.45rem;
  border-radius: 4px;
  font-size: 0.75rem;
  font-weight: 700;
  white-space: nowrap;
  /* default / generic */
  background: rgba(52, 199, 89, 0.12);
  border: 1px solid rgba(52, 199, 89, 0.3);
  color: #34c759;
}

/* Shares — blue-green */
.budget-alloc-badge.budget-alloc-shares {
  background: rgba(10, 132, 255, 0.12);
  border-color: rgba(10, 132, 255, 0.3);
  color: #4da6ff;
}

/* Options — orange */
.budget-alloc-badge.budget-alloc-options {
  background: rgba(255, 159, 10, 0.12);
  border-color: rgba(255, 159, 10, 0.3);
  color: #ff9f0a;
}

/* ADD badge in My Positions */
.budget-alloc-badge.budget-alloc-add {
  background: rgba(52, 199, 89, 0.12);
  border-color: rgba(52, 199, 89, 0.3);
  color: #34c759;
}

/* Warning — options budget likely too small for a real contract */
.budget-alloc-badge.budget-alloc-warn {
  background: rgba(255, 69, 58, 0.1);
  border-color: rgba(255, 69, 58, 0.3);
  color: #ff453a;
}

.budget-alloc-badge em {
  font-style: normal;
  opacity: 0.75;
  font-weight: 400;
  margin-left: 0.2em;
}

/* Budget summary line in My Positions ──────────────────────────────────────── */

.budget-positions-summary {
  font-size: 0.82rem;
  color: var(--muted);
  padding: 0.45rem 0.6rem;
  background: rgba(52, 199, 89, 0.06);
  border: 1px solid rgba(52, 199, 89, 0.15);
  border-radius: 6px;
  margin-bottom: 0.75rem;
}
.budget-positions-summary strong {
  color: #34c759;
}

.budget-positions-note {
  opacity: 0.6;
  font-style: italic;
}

/* Standalone BP panel (My Positions — always visible) ──────────────────────── */

.bp-panel-standalone {
  padding: 0;          /* budget-bar already has its own padding */
  border: none;
  background: transparent;
}

.bp-panel-standalone .budget-bar {
  margin-bottom: 0;
}

/* New position idea cards ───────────────────────────────────────────────────── */

.new-ideas-list {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin-top: 0.5rem;
}

.new-idea-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 0.85rem 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.new-idea-top {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.new-idea-name {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--fg);
  flex: 1;
  min-width: 0;
}

.new-idea-trade-type {
  background: rgba(78, 133, 216, 0.12);
  border: 1px solid rgba(78, 133, 216, 0.25);
  color: var(--accent);
}

.new-idea-why-now {
  font-size: 0.82rem;
  color: #ffd60a;
  margin: 0;
  font-weight: 500;
}

.new-idea-reason {
  font-size: 0.83rem;
  color: var(--muted);
  margin: 0;
}

.new-idea-meta {
  margin-top: 0.2rem;
}

.bm-price-moved-warning {
  margin: 6px 0 4px;
  padding: 5px 10px;
  border-radius: 6px;
  background: rgba(251, 146, 60, 0.12);
  border-left: 3px solid rgba(251, 146, 60, 0.7);
  font-size: 0.8rem;
  color: rgba(251, 146, 60, 0.95);
  font-weight: 500;
}

.bm-price-stale-warning {
  margin: 6px 0 4px;
  padding: 5px 10px;
  border-radius: 6px;
  background: rgba(239, 68, 68, 0.1);
  border-left: 3px solid rgba(239, 68, 68, 0.65);
  font-size: 0.8rem;
  color: rgba(239, 68, 68, 0.9);
  font-weight: 500;
}

.new-idea-size {
  margin-top: 0.1rem;
  border-top: 1px solid var(--border);
  padding-top: 0.35rem;
  font-size: 0.8rem;
}

/* Global JS tooltip — appended to <body> so it escapes overflow:hidden */
#app-tooltip {
  position: absolute;
  top: 0;
  left: 0;
  width: 240px;
  padding: 9px 13px;
  background: var(--surface-raised);
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-md);
  color: var(--muted-strong);
  font-size: 0.78rem;
  font-family: "Avenir Next", "Inter", "Segoe UI", sans-serif;
  font-weight: 400;
  line-height: 1.5;
  text-align: left;
  white-space: normal;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.12s ease;
  z-index: 9999;
  box-shadow: var(--shadow);
}
#app-tooltip.is-visible {
  opacity: 1;
}

/* Rank badge on new idea cards */
.new-idea-rank {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.35rem;
  height: 1.35rem;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-size: 0.72rem;
  font-weight: 700;
  flex-shrink: 0;
}

/* Glossary row above new idea cards */
.new-ideas-glossary {
  font-size: 0.78rem;
  color: var(--muted);
  margin-bottom: 0.5rem;
  line-height: 1.6;
}

.new-ideas-glossary u {
  text-decoration-style: dotted;
  cursor: help;
}

/* Best Moves card layout — categories + held-position tint */
.bm-category-blocks {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  margin-top: 0.25rem;
}

.bm-category-block {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.bm-category-label {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 0.5rem 0;
  padding-bottom: 0.35rem;
  border-bottom: 1px solid var(--line);
}

.new-idea-card.pm-idea-holding {
  background: rgba(52, 199, 89, 0.05);
  border-color: rgba(52, 199, 89, 0.28);
}

/* Cards with detail overlay are clickable */
.new-idea-card[data-open-idea-detail] {
  cursor: pointer;
  transition: background 0.12s;
}
.new-idea-card[data-open-idea-detail]:hover {
  background: var(--hover);
}
.new-idea-card.pm-idea-holding[data-open-idea-detail]:hover {
  background: rgba(52, 199, 89, 0.09);
}

/* Portfolio overlap note above cards */
.pm-bm-held-note {
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--positive);
  background: rgba(52, 199, 89, 0.08);
  border: 1px solid rgba(52, 199, 89, 0.2);
  border-radius: 8px;
  padding: 6px 12px;
  margin-bottom: 0.75rem;
}

/* ── Holdings Monitor ──────────────────────────────────────────────────── */
.holdings-monitor-list {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

/* ── Card shell ──────────────────────────────────────────────────────── */
.holding-monitor-row {
  display: flex;
  flex-direction: column;
  padding: 0.75rem 0.9rem 0.65rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
}

/* ── Header: ticker / badges on the left, price / P&L on the right ── */
.holding-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.35rem 0.5rem;
  margin-bottom: 0.55rem;
}

.holding-card-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.35rem 0.45rem;
}

.holding-card-price {
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
  margin-left: auto;
}

.holding-shares {
  font-size: 0.82rem;
  color: var(--fg);
  font-weight: 500;
}

.holding-cost {
  font-size: 0.78rem;
  color: var(--muted);
}

.holding-live-price {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--fg);
}

.holding-pnl {
  font-size: 0.8rem;
  font-weight: 600;
}

/* ── Timeframe badge ─────────────────────────────────────────────────── */
.holding-timeframe-badge {
  font-size: 0.7rem;
  font-weight: 600;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  background: rgba(255,255,255,0.06);
  color: var(--muted-strong);
  text-transform: lowercase;
  letter-spacing: 0.02em;
}

/* ── Progress bar ────────────────────────────────────────────────────── */
.holding-progress-wrap {
  margin-bottom: 0.5rem;
}

.holding-progress-track {
  position: relative;
  height: 38px;          /* bar at ~9px from top, labels below */
  margin: 0 6px;
}

.holding-progress-bar {
  position: absolute;
  top: 9px;
  left: 0;
  right: 0;
  height: 5px;
  background: rgba(255,255,255,0.07);
  border-radius: 3px;
  overflow: hidden;
}

.holding-progress-fill {
  position: absolute;
  top: 0;
  height: 100%;
  border-radius: 3px;
}

.holding-progress-fill-win  { background: rgba(72, 199, 116, 0.55); }
.holding-progress-fill-loss { background: rgba(220, 80, 80, 0.55); }

.holding-progress-marker {
  position: absolute;
  top: 4px;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  pointer-events: none;
}

.holding-marker-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--muted);
  border: 2px solid var(--surface-raised);
  flex-shrink: 0;
  position: relative;
  z-index: 1;
}

.holding-marker-label {
  font-size: 0.65rem;
  color: var(--muted);
  white-space: nowrap;
  margin-top: 4px;
  line-height: 1;
}

.holding-marker-live .holding-marker-dot   { background: var(--accent); border-color: var(--surface-raised); }
.holding-marker-live .holding-marker-label { color: var(--accent); font-weight: 700; }
.holding-marker-cost .holding-marker-dot   { background: var(--muted); }
.holding-marker-target .holding-marker-dot   { background: #48c774; border-color: var(--surface-raised); }
.holding-marker-target .holding-marker-label { color: #48c774; font-weight: 600; }
.holding-marker-stop .holding-marker-dot   { background: #e05555; border-color: var(--surface-raised); }
.holding-marker-stop .holding-marker-label { color: #e05555; font-weight: 600; }

/* ── AI one-line reason ──────────────────────────────────────────────── */
.holding-ai-reason {
  font-size: 0.79rem;
  color: var(--muted-strong);
  line-height: 1.45;
  padding: 0.35rem 0;
  border-top: 1px solid var(--border);
}

/* ── Key level + stop row ────────────────────────────────────────────── */
.holding-levels-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  padding: 0.35rem 0;
  border-top: 1px solid var(--border);
}

.holding-level-chip {
  font-size: 0.75rem;
  font-weight: 600;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  background: rgba(78, 133, 216, 0.1);
  color: var(--accent);
  white-space: nowrap;
}

.holding-stop-chip {
  background: rgba(220, 80, 80, 0.1);
  color: #e05555;
}

/* ── Footer: close-at input + AI target chip ─────────────────────────── */
.holding-footer {
  display: grid;
  gap: 0.55rem;
  padding-top: 0.4rem;
  border-top: 1px solid var(--border);
}

.holding-stop-target-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem 0.75rem;
}

.holding-close-target {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.35rem;
}

.holding-target-input {
  width: 6.5rem;
  flex: none;
}

.holding-dist {
  font-size: 0.78rem;
  font-weight: 600;
  white-space: nowrap;
}

/* ── AI target chip ──────────────────────────────────────────────────── */
.holding-ai-target {
  font-size: 0.78rem;
  color: var(--muted-strong);
  display: flex;
  align-items: center;
  gap: 0.4rem;
  margin-left: auto;
}

.holding-ai-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.75rem;
  align-items: center;
}

.holding-ai-stop {
  margin-left: 0;
}

.holding-use-ai {
  font-size: 0.72rem;
  padding: 0.15rem 0.5rem;
  border-radius: 999px;
  border: 1px solid rgba(78, 133, 216, 0.35);
  background: rgba(78, 133, 216, 0.1);
  color: var(--accent);
  cursor: pointer;
  font-weight: 600;
}
.holding-use-ai:hover {
  background: rgba(78, 133, 216, 0.2);
}

/* Empty / no-AI-data states */
.holding-ai-reason.holding-ai-empty {
  color: var(--muted);
  font-style: italic;
  opacity: 0.7;
}

.holding-level-chip.holding-level-empty {
  opacity: 0.45;
  font-weight: 400;
  background: transparent;
  border: 1px dashed var(--border);
  color: var(--muted);
}

.holding-stop-chip.holding-level-empty {
  background: transparent;
  color: var(--muted);
}

.holding-ai-target.holding-ai-empty {
  opacity: 0.45;
  font-style: italic;
  color: var(--muted);
}

/* ── AI action badge ─────────────────────────────────────────────────── */
.holding-action-badge {
  font-size: 0.72rem;
  font-weight: 700;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.holding-action-hold  { background: rgba(255,255,255,0.07); color: var(--muted-strong); }
.holding-action-add   { background: rgba(72, 199, 116, 0.15); color: #48c774; }
.holding-action-trim  { background: rgba(255, 190, 60, 0.15);  color: #ffbe3c; }
.holding-action-exit  { background: rgba(220, 80, 80, 0.15);   color: #e05555; }
.holding-action-hedge { background: rgba(170, 100, 220, 0.15); color: #aa64dc; }
.holding-action-watch { background: rgba(78, 133, 216, 0.12);  color: var(--accent); }

/* Close-at editor on plan cards */
.plan-close-target {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.45rem 0;
  border-top: 1px solid var(--border);
  margin-top: 0.25rem;
}

.plan-close-input {
  width: 7rem;
  flex: none;
}

.plan-close-dist {
  font-size: 0.78rem;
  font-weight: 600;
}

/* ── Public Portfolio Watch ───────────────────────────────────────────────── */

.ppw-disclaimer-banner {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  background: color-mix(in srgb, var(--warning, #f59e0b) 12%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--warning, #f59e0b) 35%, transparent);
  border-radius: 6px;
  padding: 0.75rem 1rem;
  font-size: 0.82rem;
  color: var(--fg-muted);
  line-height: 1.5;
  margin-bottom: 1rem;
}
.ppw-disclaimer-icon {
  font-size: 1rem;
  color: var(--warning, #f59e0b);
  flex-shrink: 0;
  margin-top: 0.05rem;
}

/* Filters */
.ppw-filters {
  margin-bottom: 1rem;
}
.ppw-tab-nav {
  margin-bottom: 0.75rem;
}
.ppw-filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  align-items: center;
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--border, #2a2d33);
  margin-bottom: 0.75rem;
}
.ppw-filter-label {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.8rem;
  color: var(--fg-muted);
  font-weight: 500;
  white-space: nowrap;
}
.ppw-filter-select {
  background: var(--surface-strong);
  border: 1px solid var(--border, #2a2d33);
  border-radius: 4px;
  color: var(--fg);
  font-size: 0.8rem;
  padding: 0.25rem 0.5rem;
  cursor: pointer;
}
.ppw-filter-check {
  gap: 0.35rem;
}

/* Section notes */
.ppw-section-note {
  font-size: 0.81rem;
  color: var(--fg-muted);
  line-height: 1.5;
  margin-bottom: 0.75rem;
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--border, #2a2d33);
}

/* Cards grid */
.ppw-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  gap: 0.75rem;
}

.ppw-card {
  background: var(--surface);
  border: 1px solid var(--border, #2a2d33);
  border-radius: 8px;
  padding: 0.85rem 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  transition: border-color 0.15s;
}
.ppw-card:hover {
  border-color: var(--accent, #3b82f6);
}
.ppw-card-in-watchlist {
  border-color: color-mix(in srgb, var(--accent, #3b82f6) 50%, var(--border, #2a2d33));
}

.ppw-card-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.5rem;
}
.ppw-card-left {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.ppw-ticker {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--fg);
  letter-spacing: 0.02em;
}
.ppw-company {
  font-size: 0.78rem;
  color: var(--fg-muted);
  line-height: 1.3;
}
.ppw-card-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  justify-content: flex-end;
}

.ppw-card-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem 0.6rem;
  font-size: 0.77rem;
  color: var(--fg-muted);
}
.ppw-meta-item {
  white-space: nowrap;
}
.ppw-meta-weight {
  color: var(--fg);
  font-weight: 600;
}
.ppw-meta-pct {
  font-weight: 600;
}
.ppw-meta-date {
  opacity: 0.7;
}
.ppw-meta-delay {
  color: var(--warning, #f59e0b);
}

.ppw-card-themes {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}

.ppw-why {
  font-size: 0.8rem;
  color: var(--fg);
  line-height: 1.45;
  margin: 0;
}
.ppw-risk {
  font-size: 0.78rem;
  color: var(--warning, #f59e0b);
  line-height: 1.4;
  margin: 0;
  display: flex;
  gap: 0.3rem;
  align-items: flex-start;
}
.ppw-risk-icon {
  flex-shrink: 0;
  margin-top: 0.05rem;
}

.ppw-card-footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.6rem;
  margin-top: 0.2rem;
  padding-top: 0.4rem;
  border-top: 1px solid var(--border, #2a2d33);
}
.ppw-score {
  font-size: 0.82rem;
  font-weight: 700;
  border-radius: 4px;
  padding: 0.15rem 0.4rem;
}
.ppw-score-high { background: color-mix(in srgb, #22c55e 20%, transparent); color: #4ade80; }
.ppw-score-mid  { background: color-mix(in srgb, #f59e0b 20%, transparent); color: #fbbf24; }
.ppw-score-low  { background: color-mix(in srgb, #ef4444 20%, transparent); color: #f87171; }

.ppw-action-tag {
  font-size: 0.75rem;
  font-weight: 600;
  border-radius: 4px;
  padding: 0.15rem 0.45rem;
}
.ppw-action-strong  { background: color-mix(in srgb, #22c55e 18%, transparent); color: #4ade80; }
.ppw-action-watch   { background: color-mix(in srgb, #3b82f6 18%, transparent); color: #60a5fa; }
.ppw-action-research { background: color-mix(in srgb, #f59e0b 14%, transparent); color: #fbbf24; }
.ppw-action-avoid   { background: color-mix(in srgb, #ef4444 14%, transparent); color: #f87171; }

.ppw-thesis {
  font-size: 0.74rem;
  color: var(--fg-muted);
  flex: 1 1 100%;
  line-height: 1.35;
}
.ppw-source-link {
  font-size: 0.74rem;
  color: var(--accent, #3b82f6);
  text-decoration: none;
  margin-left: auto;
}
.ppw-source-link:hover { text-decoration: underline; }

/* Badges */
.ppw-badge {
  display: inline-flex;
  align-items: center;
  font-size: 0.68rem;
  font-weight: 600;
  border-radius: 3px;
  padding: 0.1rem 0.35rem;
  white-space: nowrap;
  letter-spacing: 0.01em;
}
.ppw-badge-new       { background: color-mix(in srgb, #22c55e 22%, transparent); color: #4ade80; }
.ppw-badge-added     { background: color-mix(in srgb, #3b82f6 22%, transparent); color: #60a5fa; }
.ppw-badge-trimmed   { background: color-mix(in srgb, #f59e0b 22%, transparent); color: #fbbf24; }
.ppw-badge-sold      { background: color-mix(in srgb, #ef4444 22%, transparent); color: #f87171; }
.ppw-badge-held      { background: var(--surface-strong); color: var(--fg-muted); }
.ppw-badge-call      { background: color-mix(in srgb, #22c55e 18%, transparent); color: #4ade80; }
.ppw-badge-put       { background: color-mix(in srgb, #ef4444 18%, transparent); color: #f87171; }
.ppw-badge-etf       { background: color-mix(in srgb, #8b5cf6 18%, transparent); color: #a78bfa; }
.ppw-badge-watchlist { background: color-mix(in srgb, #3b82f6 22%, transparent); color: #60a5fa; }
.ppw-badge-theme     { background: color-mix(in srgb, #6366f1 15%, transparent); color: #a5b4fc; }

/* Profiles grid */
.ppw-profiles-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 0.75rem;
}
.ppw-profile-card {
  background: var(--surface);
  border: 1px solid var(--border, #2a2d33);
  border-radius: 8px;
  padding: 0.85rem 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.ppw-profile-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.5rem;
}
.ppw-profile-name {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--fg);
}
.ppw-profile-entity {
  font-size: 0.78rem;
  color: var(--fg-muted);
}
.ppw-profile-meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.25rem;
}
.ppw-reliability {
  font-size: 0.72rem;
  color: var(--fg-muted);
}
.ppw-profile-notes {
  font-size: 0.8rem;
  color: var(--fg-muted);
  line-height: 1.45;
  margin: 0;
}
.ppw-profile-footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.6rem;
  padding-top: 0.4rem;
  border-top: 1px solid var(--border, #2a2d33);
  font-size: 0.77rem;
  color: var(--fg-muted);
}
.ppw-sync-one-btn {
  font-size: 0.75rem;
  padding: 0.2rem 0.6rem;
  margin-left: auto;
}

/* Consensus table */
.ppw-table-wrap {
  overflow-x: auto;
}
.ppw-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.82rem;
}
.ppw-table th {
  text-align: left;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0.4rem 0.75rem;
  border-bottom: 1px solid var(--border, #2a2d33);
}
.ppw-table td {
  padding: 0.5rem 0.75rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  vertical-align: middle;
}
.ppw-consensus-row:hover td { background: var(--surface-strong); }
.ppw-in-watchlist td { border-left: 2px solid var(--accent, #3b82f6); }
.ppw-tc-ticker { font-weight: 700; }
.ppw-tc-count  { color: var(--fg-muted); white-space: nowrap; }
.ppw-tc-names  { color: var(--fg-muted); max-width: 220px; }

/* Body wrapper */
.ppw-body {
  min-height: 200px;
}

/* ══════════════════════════════════════════════════════════════════════
   Trade P&L Analyzer
   ══════════════════════════════════════════════════════════════════════ */

.tpnl-body { min-height: 200px; }

/* Filter row */
.tpnl-filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 0.75rem 1rem 0.5rem;
  align-items: center;
  border-bottom: 1px solid var(--border, #2a2d33);
}
.tpnl-filter-count {
  margin-left: auto;
  font-size: 0.78rem;
  color: var(--fg-muted);
}

/* Sub-tabs (reuse ppw-tab-btn) */
.tpnl-tabs {
  display: flex;
  gap: 0.25rem;
  padding: 0.75rem 1rem 0;
  border-bottom: 1px solid var(--border, #2a2d33);
  flex-wrap: wrap;
}
/* Disabled tabs (data tabs when no CSV loaded) */
.tpnl-tabs .ppw-tab-btn.is-disabled {
  opacity: 0.35;
  cursor: not-allowed;
  pointer-events: none;
}

/* Empty state */
.tpnl-empty {
  text-align: center;
  padding: 3rem 2rem;
  color: var(--fg-muted);
}
.tpnl-empty-icon { font-size: 2.5rem; margin-bottom: 0.75rem; }
.tpnl-empty-title { font-size: 1.05rem; font-weight: 600; color: var(--fg); margin: 0 0 0.5rem; }
.tpnl-empty-sub { font-size: 0.85rem; line-height: 1.6; margin: 0; }

/* Summary grid */
.tpnl-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 1rem;
  padding: 1rem;
}
.tpnl-stat-card {
  background: var(--surface-strong, #1e2027);
  border: 1px solid var(--border, #2a2d33);
  border-radius: 8px;
  padding: 1rem 1.1rem;
}
.tpnl-stat-main {
  grid-column: span 2;
  border-width: 2px;
}
.tpnl-stat-pos { border-color: var(--green, #22c55e); }
.tpnl-stat-neg { border-color: var(--red, #ef4444); }
.tpnl-stat-label {
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--fg-muted);
  margin-bottom: 0.35rem;
}
.tpnl-stat-value {
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: 0.25rem;
}
.tpnl-stat-main .tpnl-stat-value { font-size: 1.85rem; }
.tpnl-stat-sub { font-size: 0.78rem; color: var(--fg-muted); }

/* Color helpers */
.tpnl-pos { color: var(--green, #22c55e); }
.tpnl-neg { color: var(--red, #ef4444); }
.tpnl-muted { color: var(--fg-muted); font-size: 0.78rem; }

/* Current holdings panel in Summary tab */
.tpnl-holdings-section {
  margin: 0 1rem 1.25rem;
  border: 1px solid var(--border, #2a2d33);
  border-radius: 8px;
  overflow: hidden;
}
.tpnl-holdings-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  padding: 0.65rem 1rem;
  background: var(--surface-strong, #1e2027);
  border-bottom: 1px solid var(--border, #2a2d33);
  font-size: 0.82rem;
}
.tpnl-holdings-header strong { font-size: 0.88rem; }
.tpnl-holdings-total { font-weight: 700; font-size: 0.9rem; }
.tpnl-holdings-empty {
  margin: 0 1rem 1rem;
  padding: 0.75rem 1rem;
  border: 1px dashed var(--border, #2a2d33);
  border-radius: 8px;
  font-size: 0.8rem;
}
.tpnl-holdings-table td, .tpnl-holdings-table th { font-size: 0.8rem; }

/* ── Portfolio Focus Tab ─────────────────────────────────────────────────── */
.focus-tab-wrap { padding: 0 0 2rem; }

.focus-header {
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap;
  gap: .5rem; padding: .75rem 1rem; border-bottom: 1px solid var(--border);
  margin-bottom: .25rem;
}
.focus-header-left { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; font-size: .82rem; }
.focus-title { font-weight: 700; font-size: .95rem; }
.focus-margin-warn { color: #e5a000; font-weight: 600; font-size: .78rem; }

.focus-ai-summary {
  margin: .5rem 1rem .25rem; padding: .65rem .9rem;
  background: color-mix(in srgb, var(--accent, #4a9eff) 8%, var(--surface-strong));
  border: 1px solid color-mix(in srgb, var(--accent, #4a9eff) 25%, transparent);
  border-radius: 8px; font-size: .82rem; line-height: 1.5;
}

.focus-section { margin: .75rem 0 0; }
.focus-section-header {
  display: flex; align-items: center; gap: .6rem; flex-wrap: wrap;
  padding: .45rem 1rem; font-size: .78rem; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border);
  background: var(--surface-strong);
}
.focus-section-label { font-weight: 700; font-size: .82rem; }
.focus-section-desc  { color: var(--text-muted); }

.focus-section-core   { border-left: 3px solid #4caf74; }
.focus-section-spec   { border-left: 3px solid #4a9eff; }
.focus-section-cut    { border-left: 3px solid #e05a5a; }
.focus-section-signal { border-left: 3px solid #e5a000; }

.focus-cards {
  display: flex; flex-wrap: wrap; gap: .5rem;
  padding: .65rem 1rem;
}
.focus-empty { font-size: .8rem; padding: .25rem 0; }

.focus-card {
  border: 1px solid var(--border); border-radius: 8px;
  padding: .55rem .75rem; min-width: 140px; max-width: 220px;
  background: var(--surface-strong); font-size: .8rem; flex: 0 0 auto;
}
.focus-card-core   { border-top: 2px solid #4caf74; }
.focus-card-spec   { border-top: 2px solid #4a9eff; }
.focus-card-cut    { border-top: 2px solid #e05a5a; opacity: .75; }

.focus-card-header {
  display: flex; align-items: center; gap: .4rem; flex-wrap: wrap;
  margin-bottom: .2rem;
}
.focus-card-header strong { font-size: .88rem; }
.focus-card-pct  { margin-left: auto; font-size: .72rem; }
.focus-card-name { font-size: .72rem; margin-bottom: .25rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 180px; }
.focus-card-stats { display: flex; gap: .5rem; align-items: center; font-size: .78rem; flex-wrap: wrap; }
.focus-card-mv   { font-weight: 600; }

.focus-signal-badge {
  font-size: .68rem; padding: .1rem .35rem;
  background: color-mix(in srgb, #e5a000 15%, transparent);
  border: 1px solid color-mix(in srgb, #e5a000 35%, transparent);
  border-radius: 4px; color: #e5a000; white-space: nowrap;
}

.focus-ai-rec {
  margin-top: .35rem; padding: .3rem .45rem; border-radius: 5px;
  font-size: .75rem; border: 1px solid transparent;
}
.focus-ai-rec-hold  { background: color-mix(in srgb, #4a9eff 10%, transparent); border-color: color-mix(in srgb, #4a9eff 25%, transparent); }
.focus-ai-rec-add   { background: color-mix(in srgb, #4caf74 10%, transparent); border-color: color-mix(in srgb, #4caf74 25%, transparent); }
.focus-ai-rec-trim  { background: color-mix(in srgb, #e5a000 10%, transparent); border-color: color-mix(in srgb, #e5a000 25%, transparent); }
.focus-ai-rec-cut   { background: color-mix(in srgb, #e05a5a 10%, transparent); border-color: color-mix(in srgb, #e05a5a 25%, transparent); }
.focus-ai-rec-watch { background: color-mix(in srgb, #9b6dff 10%, transparent); border-color: color-mix(in srgb, #9b6dff 25%, transparent); }

.focus-ai-action {
  font-weight: 700; font-size: .72rem; letter-spacing: .03em;
  text-transform: uppercase; margin-right: .35rem;
}
.focus-ai-rec-hold  .focus-ai-action { color: #4a9eff; }
.focus-ai-rec-add   .focus-ai-action { color: #4caf74; }
.focus-ai-rec-trim  .focus-ai-action { color: #e5a000; }
.focus-ai-rec-cut   .focus-ai-action { color: #e05a5a; }
.focus-ai-rec-watch .focus-ai-action { color: #9b6dff; }

.focus-ai-rationale { line-height: 1.4; }
.focus-ai-target    { display: block; margin-top: .2rem; font-size: .7rem; opacity: .8; }

.focus-signal-list { padding: .5rem 1rem; display: flex; flex-direction: column; gap: .35rem; }
.focus-signal-row  {
  display: flex; align-items: center; gap: .5rem; font-size: .8rem;
  padding: .3rem .5rem; background: var(--surface-strong);
  border: 1px solid var(--border); border-radius: 6px; flex-wrap: wrap;
}
.focus-signal-score { margin-left: auto; font-size: .72rem; color: #e5a000; font-weight: 600; }

/* By-symbol & overlap tables */
.tpnl-sym-table { width: 100%; border-collapse: collapse; font-size: 0.83rem; }
.tpnl-sym-table th {
  text-align: left;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0.5rem 0.75rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  white-space: nowrap;
}
.tpnl-sym-table td {
  padding: 0.55rem 0.75rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  vertical-align: middle;
}
.tpnl-in-tracker td { border-left: 2px solid var(--accent, #3b82f6); }
.tpnl-in-tracker td:first-child { padding-left: 0.5rem; }
.tpnl-sym-name { font-weight: 700; }
.tpnl-exp-score {
  display: inline-block;
  background: var(--accent-faint, rgba(59,130,246,0.15));
  color: var(--accent, #3b82f6);
  border-radius: 4px;
  padding: 0.1rem 0.4rem;
  font-size: 0.78rem;
  font-weight: 600;
}

/* All Trades table */
.tpnl-trades-scroll { overflow-x: auto; }
.tpnl-trades-table { width: 100%; border-collapse: collapse; font-size: 0.8rem; min-width: 680px; }
.tpnl-trades-table th {
  text-align: left;
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0.45rem 0.6rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  white-space: nowrap;
}
.tpnl-trades-table td {
  padding: 0.45rem 0.6rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  vertical-align: middle;
}
.tpnl-row-win td:first-child { border-left: 2px solid var(--green, #22c55e); }
.tpnl-row-loss td:first-child { border-left: 2px solid var(--red, #ef4444); }
.tpnl-option-label { font-size: 0.68rem; color: var(--fg-muted); line-height: 1.2; }

/* Overlap */
.tpnl-overlap-intro {
  padding: 0.75rem 1rem;
  font-size: 0.85rem;
  color: var(--fg-muted);
  border-bottom: 1px solid var(--border, #2a2d33);
}
.tpnl-overlap-extra {
  padding: 0.75rem 1rem;
  font-size: 0.8rem;
  color: var(--fg-muted);
  border-top: 1px solid var(--border, #2a2d33);
  line-height: 1.6;
}

/* ── Save Snapshot toolbar ───────────────────────────────────────────────── */
.tpnl-snap-toolbar {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.6rem 0;
  margin-bottom: 0.25rem;
}
.tpnl-snap-toolbar-hint {
  font-size: 0.78rem;
  color: var(--fg-muted);
}

/* ── Snapshots list ──────────────────────────────────────────────────────── */
.tpnl-snapshots-wrap {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.tpnl-snapshots-header {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0.6rem 1rem;
  font-size: 0.82rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  background: var(--surface-raised, rgba(255,255,255,0.02));
}

/* ── Snapshot card (details/summary) ────────────────────────────────────── */
.tpnl-snapshot-card {
  border-bottom: 1px solid var(--border, #2a2d33);
}
.tpnl-snapshot-card + .tpnl-snapshot-card { border-top: none; }
.tpnl-snapshot-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.7rem 1rem;
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.tpnl-snapshot-summary::-webkit-details-marker { display: none; }
.tpnl-snapshot-card[open] .tpnl-snapshot-summary {
  border-bottom: 1px solid var(--border, #2a2d33);
  background: var(--surface-raised, rgba(255,255,255,0.025));
}
.tpnl-snap-left {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.tpnl-snap-right {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-shrink: 0;
}
.tpnl-snap-date {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--fg);
}
.tpnl-snap-stat {
  font-size: 0.78rem;
  color: var(--fg-muted);
}
.tpnl-snap-tone {
  font-size: 0.72rem;
  font-weight: 600;
  padding: 0.1rem 0.45rem;
  border-radius: 4px;
  background: var(--surface-raised, rgba(255,255,255,0.05));
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.tpnl-snap-posture {
  padding: 0.45rem 1rem 0;
  font-size: 0.8rem;
  color: var(--fg-muted);
}
.tpnl-snap-delete {
  background: none;
  border: 1px solid transparent;
  color: var(--fg-muted);
  font-size: 0.8rem;
  padding: 0.2rem 0.4rem;
  border-radius: 4px;
  cursor: pointer;
  line-height: 1;
  transition: color 0.15s, border-color 0.15s;
}
.tpnl-snap-delete:hover {
  color: var(--red, #ef4444);
  border-color: var(--red, #ef4444);
}

/* Badge variants for pre/open market */
.tpnl-snap-badge-pre {
  background: rgba(168, 85, 247, 0.15);
  color: #c084fc;
}
.tpnl-snap-badge-open {
  background: rgba(34, 197, 94, 0.12);
  color: #4ade80;
}
.tpnl-snap-auto-badge {
  display: inline-flex;
  align-items: center;
  padding: 0 6px;
  height: 18px;
  border-radius: 4px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  background: rgba(99, 102, 241, 0.15);
  color: #818cf8;
}

/* ── Snapshot results table ──────────────────────────────────────────────── */
.tpnl-snap-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.8rem;
  min-width: 700px;
}
.tpnl-snap-table th {
  text-align: left;
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0.4rem 0.65rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  white-space: nowrap;
}
.tpnl-snap-table td {
  padding: 0.45rem 0.65rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  vertical-align: middle;
}
.tpnl-snap-idea-cell {
  max-width: 260px;
  white-space: normal;
  line-height: 1.35;
  font-size: 0.78rem;
  color: var(--fg-muted);
}
.tpnl-snap-bucket {
  font-size: 0.7rem;
  color: var(--fg-muted);
  white-space: nowrap;
}
.tpnl-num {
  text-align: right;
  white-space: nowrap;
}
.tpnl-snap-outcome {
  font-weight: 600;
  white-space: nowrap;
}

/* ── Retail snapshot matching ────────────────────────────────────────────── */
.retail-match-panel {
  display: grid;
  gap: 1rem;
}

.retail-match-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.85rem;
}

.retail-match-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.65rem;
}

.retail-match-upload-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.75rem;
  padding: 0.75rem;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 8px;
  background: rgba(255,255,255,0.025);
}

.retail-match-upload-btn {
  flex-shrink: 0;
}

.retail-match-paste-label {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--fg-muted);
}

.retail-match-paste {
  width: 100%;
  min-height: 150px;
  resize: vertical;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 0.85rem;
  background: rgba(8, 6, 22, 0.82);
  color: var(--fg);
  font: 0.78rem/1.5 var(--mono);
}

.retail-match-paste:focus {
  outline: none;
  border-color: rgba(244, 114, 182, 0.72);
  box-shadow: 0 0 0 3px rgba(244, 114, 182, 0.14);
}

.retail-match-table {
  min-width: 1020px;
}

.retail-match-row-hit td:first-child {
  border-left: 2px solid var(--green, #22c55e);
}

.retail-match-row-miss td:first-child {
  border-left: 2px solid var(--red, #ef4444);
}

.retail-match-empty {
  border: 1px dashed rgba(255,255,255,0.18);
  border-radius: 8px;
}

@media (max-width: 760px) {
  .retail-match-summary-grid {
    grid-template-columns: 1fr;
  }
}

/* ── Snap analysis section subtitle ─────────────────────────────────────── */
.snap-analysis-section-sub {
  margin: 0.1rem 0 0.6rem;
  font-size: 0.78rem;
  color: var(--text-muted);
}

/* ── Snap AI config panel (idle state) ───────────────────────────────────── */
.snap-ai-config {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 0.85rem 1rem;
  margin: 0 auto 1rem;
  max-width: 480px;
  text-align: left;
}
.snap-ai-config-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.snap-ai-config-label {
  font-size: 0.82rem;
  font-weight: 500;
  white-space: nowrap;
}
.snap-ai-config-hint {
  font-size: 0.78rem;
  color: var(--text-muted);
}
.snap-ai-config-tip {
  font-size: 0.76rem;
  color: var(--text-muted);
  margin: 0.2rem 0 0;
}
.snap-ai-date-input {
  font-size: 0.8rem;
  padding: 0.2rem 0.4rem;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--bg-hover, #1e1e1e);
  color: var(--text-primary);
  cursor: pointer;
}
.snap-ai-date-input:focus {
  outline: none;
  border-color: var(--accent, #4a9eff);
}

/* ── Snap AI done-state header controls ──────────────────────────────────── */
.snap-ai-header-controls {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
}
.snap-ai-header-date-label {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.78rem;
  color: var(--text-muted);
  cursor: pointer;
}
.snap-ai-date-input-inline {
  font-size: 0.76rem;
  padding: 0.15rem 0.3rem;
}

/* ── Partner ticker chip manager ─────────────────────────────────────────── */
.snap-ai-config-row-wrap {
  align-items: flex-start;
  flex-wrap: wrap;
}
.snap-partner-manager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
}
.snap-partner-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.15rem 0.5rem;
  background: rgba(99, 179, 237, 0.12);
  border: 1px solid rgba(99, 179, 237, 0.35);
  border-radius: 20px;
  font-size: 0.75rem;
  color: #63b3ed;
  font-weight: 500;
}
.snap-partner-chip-remove {
  background: none;
  border: none;
  cursor: pointer;
  color: #63b3ed;
  font-size: 0.7rem;
  padding: 0;
  line-height: 1;
  opacity: 0.7;
}
.snap-partner-chip-remove:hover { opacity: 1; }
.snap-partner-input {
  width: 80px;
}
.snap-partner-add-btn {
  font-size: 0.75rem;
  padding: 0.2rem 0.5rem;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--bg-card);
  color: var(--text-primary);
  cursor: pointer;
}
.snap-partner-add-btn:hover {
  border-color: var(--accent, #4a9eff);
}

/* ── Partner attribution toggle button ───────────────────────────────────── */
.snap-partner-btn {
  font-size: 0.72rem;
  padding: 0.15rem 0.45rem;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.snap-partner-btn:hover {
  border-color: var(--accent, #4a9eff);
  color: var(--text-primary);
}
.snap-partner-active {
  background: rgba(99, 179, 237, 0.12);
  border-color: rgba(99, 179, 237, 0.4);
  color: #63b3ed;
}

/* ── Snapshot tracked-setup pin ─────────────────────────────────────────── */
.snap-tracked-pin {
  font-size: 0.75rem;
  vertical-align: middle;
  margin-left: 0.2rem;
  cursor: default;
  opacity: 0.85;
}

/* ── Snapshot refresh button ─────────────────────────────────────────────── */
.snap-refresh-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.3rem 0.75rem;
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--text-primary);
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 6px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
  white-space: nowrap;
}
.snap-refresh-btn:hover:not(:disabled) {
  background: var(--bg-hover, #2a2a2a);
  border-color: var(--accent, #4a9eff);
}
.snap-refresh-btn:disabled {
  opacity: 0.6;
  cursor: default;
}
.snap-refresh-btn-loading {
  opacity: 0.7;
}
.snap-refresh-spin {
  display: inline-block;
  animation: snap-spin 0.9s linear infinite;
}
@keyframes snap-spin {
  to { transform: rotate(360deg); }
}
.snap-refresh-ts {
  color: var(--text-muted);
  font-weight: 400;
}

/* ── Snapshot AI Analysis tab ────────────────────────────────────────────── */
.snap-analysis-wrap {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding: 0 0 0.5rem;
}
.snap-analysis-header {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.1rem;
  font-size: 0.84rem;
  border: 1px solid var(--border, #2a2d33);
  border-radius: 18px;
  background:
    linear-gradient(135deg, rgba(244, 114, 182, 0.08), rgba(59, 130, 246, 0.04) 48%, rgba(255,255,255,0.02));
}
.snap-analysis-header-copy {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  min-width: min(100%, 280px);
}
.snap-analysis-header-kicker {
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--fg-muted);
}
.snap-ai-header-controls {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.75rem;
  flex-wrap: wrap;
}
.snap-analysis-run-btn {
  font-size: 0.85rem;
  padding: 0.45rem 1rem;
}
.snap-analysis-rerun-btn {
  font-size: 0.78rem;
  padding: 0.3rem 0.75rem;
}
.snap-analysis-hero {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.15rem 1.15rem 1.05rem;
  border: 1px solid rgba(244, 114, 182, 0.18);
  border-radius: 22px;
  background:
    linear-gradient(135deg, rgba(244, 114, 182, 0.12), rgba(251, 191, 36, 0.05) 42%, rgba(56, 189, 248, 0.08) 100%);
}
.snap-analysis-hero.is-soft {
  background:
    linear-gradient(135deg, rgba(244, 114, 182, 0.16), rgba(251, 191, 36, 0.08) 42%, rgba(103, 232, 249, 0.1) 100%);
}
.snap-analysis-hero-copy {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  max-width: 720px;
}
.snap-analysis-hero-kicker {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--fg-muted);
}
.snap-analysis-hero-title {
  margin: 0;
  font-size: 1.45rem;
  line-height: 1.1;
  font-weight: 800;
  color: var(--fg);
}
.snap-analysis-hero-text {
  margin: 0;
  font-size: 1rem;
  line-height: 1.7;
  color: var(--fg);
  max-width: 64ch;
}
.snap-analysis-hero-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-self: flex-end;
}
.snap-analysis-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.42rem 0.7rem;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(15, 23, 42, 0.42);
  color: var(--fg);
  font-size: 0.74rem;
  font-weight: 700;
}
.snap-analysis-insight-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 0.8rem;
}
.snap-analysis-insight-card,
.snap-analysis-preview-card {
  display: flex;
  flex-direction: column;
  gap: 0.42rem;
  padding: 1rem;
  border: 1px solid var(--border, #2a2d33);
  border-radius: 18px;
  background: rgba(255,255,255,0.025);
}
.snap-analysis-insight-card.is-good {
  border-color: rgba(74, 222, 128, 0.24);
}
.snap-analysis-insight-card.is-warn {
  border-color: rgba(251, 191, 36, 0.28);
}
.snap-analysis-insight-card.is-accent {
  border-color: rgba(244, 114, 182, 0.24);
}
.snap-analysis-insight-kicker,
.snap-analysis-preview-kicker {
  font-size: 0.67rem;
  font-weight: 700;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  color: var(--fg-muted);
}
.snap-analysis-insight-title,
.snap-analysis-preview-title {
  margin: 0;
  font-size: 0.98rem;
  line-height: 1.3;
  color: var(--fg);
}
.snap-analysis-insight-body {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.65;
  color: var(--fg);
}
.snap-analysis-preview-more {
  margin: 0.1rem 0 0;
  font-size: 0.76rem;
  color: var(--fg-muted);
}
.snap-analysis-scorecard {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 0.8rem;
}
.snap-analysis-tile {
  min-width: 0;
  padding: 1rem 0.9rem;
  text-align: left;
  border: 1px solid var(--border, #2a2d33);
  border-radius: 16px;
  background: rgba(255,255,255,0.025);
}
.snap-analysis-tile-val {
  font-size: 1.45rem;
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: 0.3rem;
  color: var(--fg);
}
.snap-analysis-tile-label {
  font-size: 0.68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--fg-muted);
}
.snap-analysis-section {
  border: 1px solid var(--border, #2a2d33);
  border-radius: 16px;
  padding: 0.95rem 1rem;
  background: rgba(255,255,255,0.02);
}
.snap-analysis-section-title {
  font-size: 0.74rem;
  font-weight: 700;
  color: var(--fg);
  margin: 0 0 0.6rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
}
.snap-analysis-summary-box {
  background: linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.02));
}
.snap-analysis-summary-text {
  font-size: 0.95rem;
  line-height: 1.7;
  color: var(--fg);
  margin: 0;
}
.snap-analysis-breakdown-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.8rem;
}
.snap-analysis-breakdown-table th {
  text-align: left;
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 0.3rem 0.5rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  white-space: nowrap;
}
.snap-analysis-breakdown-table td {
  padding: 0.4rem 0.5rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  vertical-align: middle;
}
.snap-analysis-breakdown-table tr:last-child td { border-bottom: none; }
.snap-analysis-list {
  margin: 0;
  padding-left: 1.4rem;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}
.snap-analysis-list li {
  font-size: 0.88rem;
  line-height: 1.6;
  color: var(--fg);
}
.snap-analysis-warn {
  padding: 0.7rem 1rem;
  font-size: 0.8rem;
  color: var(--yellow, #eab308);
  background: rgba(234, 179, 8, 0.06);
  border: 1px solid rgba(234, 179, 8, 0.15);
  border-radius: 14px;
}
.snap-analysis-error {
  color: var(--red, #ef4444);
}
.snap-analysis-footer {
  padding: 0.25rem 0 0;
  display: flex;
  justify-content: flex-start;
}
/* ── Execution section ───────────────────────────────────────────────────── */
.snap-analysis-exec-header {
  background: transparent;
  padding: 0;
  border: none;
}
.snap-analysis-exec-scorecard {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(145px, 1fr));
  gap: 0.8rem;
  background: none;
}
.snap-analysis-exec-tile {
  min-width: 0;
  padding: 0.9rem;
  text-align: left;
  border: 1px solid var(--border, #2a2d33);
  border-radius: 16px;
  background: rgba(255,255,255,0.02);
}
.snap-analysis-disclosure {
  border: 1px solid var(--border, #2a2d33);
  border-radius: 18px;
  background: rgba(255,255,255,0.02);
  overflow: hidden;
}
.snap-analysis-disclosure[open] {
  background: rgba(255,255,255,0.03);
}
.snap-analysis-disclosure-summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.05rem;
}
.snap-analysis-disclosure-summary::-webkit-details-marker {
  display: none;
}
.snap-analysis-disclosure-summary::after {
  content: "+";
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--fg-muted);
  flex-shrink: 0;
}
.snap-analysis-disclosure[open] .snap-analysis-disclosure-summary::after {
  content: "−";
}
.snap-analysis-disclosure[open] .snap-analysis-disclosure-summary {
  border-bottom: 1px solid var(--border, #2a2d33);
}
.snap-analysis-disclosure-copy {
  display: flex;
  flex-direction: column;
  gap: 0.28rem;
}
.snap-analysis-disclosure-eyebrow {
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg-muted);
}
.snap-analysis-disclosure-title {
  font-size: 0.95rem;
  line-height: 1.3;
  font-weight: 700;
  color: var(--fg);
}
.snap-analysis-disclosure-meta {
  display: inline-flex;
  align-items: center;
  padding: 0.24rem 0.55rem;
  border-radius: 999px;
  background: rgba(255,255,255,0.05);
  color: var(--fg-muted);
  font-size: 0.72rem;
  font-weight: 700;
  white-space: nowrap;
}
.snap-analysis-disclosure-body {
  padding: 0 1.05rem 1.05rem;
  display: flex;
  flex-direction: column;
  gap: 0.8rem;
}
.snap-analysis-disclosure-body .snap-analysis-section {
  margin: 0;
}
/* Plan status badges */
.exec-badge {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 700;
  padding: 0.1rem 0.4rem;
  border-radius: 4px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: var(--surface-strong, rgba(255,255,255,0.08));
  color: var(--fg-muted);
}
.exec-badge-watch   { background: rgba(234,179,8,0.12); color: #eab308; }
.exec-badge-entered { background: rgba(59,130,246,0.15); color: #60a5fa; }
.exec-badge-closed  { background: rgba(34,197,94,0.12);  color: #4ade80; }
.exec-badge-cancel  { background: rgba(156,163,175,0.1); color: #9ca3af; }

.snap-dir-bull {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--green, #4ade80);
  white-space: nowrap;
}
.snap-dir-bear {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--red, #ef4444);
  white-space: nowrap;
}
@keyframes snap-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
.snap-analysis-spin {
  display: inline-block;
  animation: snap-spin 1.5s linear infinite;
}
@media (max-width: 760px) {
  .snap-analysis-header,
  .snap-analysis-hero,
  .snap-analysis-disclosure-summary {
    padding: 0.95rem;
  }
  .snap-analysis-hero-title {
    font-size: 1.2rem;
  }
  .snap-analysis-hero-text,
  .snap-analysis-summary-text,
  .snap-analysis-list li,
  .snap-analysis-insight-body {
    font-size: 0.9rem;
  }
  .snap-analysis-hero-chips {
    align-self: stretch;
  }
  .snap-analysis-disclosure-meta {
    display: none;
  }
}

/* ── Toolbar quick-filter dropdowns ─────────────────────────────────────── */
.toolbar-quick-filters {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}
.toolbar-filter-select {
  background: var(--surface-strong);
  border: 1px solid var(--border, #2a2d33);
  border-radius: 6px;
  color: var(--fg);
  font-size: 0.8rem;
  padding: 0.3rem 0.6rem;
  cursor: pointer;
  height: 30px;
}
.toolbar-filter-select:focus {
  outline: none;
  border-color: var(--accent, #4e85d8);
}

/* ── Confidence badges (table + focus panel) ─────────────────────────────── */
.conf-badge {
  display: inline-block;
  font-size: 0.62rem;
  font-weight: 700;
  padding: 0.1rem 0.42rem;
  border-radius: 4px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  line-height: 1.6;
  white-space: nowrap;
}
.conf-high   { background: #1a3329; color: #52b788; border: 1px solid #2d6a4f; }
.conf-medium { background: #2b2200; color: #f4a261; border: 1px solid #7d5a00; }
.conf-low    { background: #271414; color: #e76f51; border: 1px solid #6b2020; }

/* ── Data Coverage View ──────────────────────────────────────────────────── */
.coverage-body {
  padding: 1.25rem 1.5rem 2rem;
  overflow-x: auto;
}
.coverage-empty {
  color: var(--fg-muted);
  padding: 2rem;
  text-align: center;
}

/* Summary cards row */
.coverage-summary-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-bottom: 1.25rem;
}
.coverage-summary-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 72px;
  padding: 0.55rem 0.7rem 0.45rem;
  border-radius: 8px;
  border: 1px solid var(--border, #2a2d33);
  background: var(--surface2, #1c1f26);
}
.coverage-summary-good  { border-color: #2d6a4f; background: #1a3329; }
.coverage-summary-warn  { border-color: #7d5a00; background: #2b2200; }
.coverage-summary-bad   { border-color: #6b2020; background: #271414; }
.coverage-summary-label {
  font-size: 0.65rem;
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  margin-bottom: 0.2rem;
}
.coverage-summary-pct {
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1;
}
.coverage-summary-good  .coverage-summary-pct { color: #52b788; }
.coverage-summary-warn  .coverage-summary-pct { color: #f4a261; }
.coverage-summary-bad   .coverage-summary-pct { color: #e76f51; }
.coverage-summary-sub {
  font-size: 0.6rem;
  color: var(--fg-muted);
  margin-top: 0.2rem;
}

/* Company count */
.coverage-count-label {
  font-size: 0.75rem;
  color: var(--fg-muted);
  margin-bottom: 0.6rem;
}

/* Table */
.coverage-table-wrap {
  overflow-x: auto;
  border-radius: 8px;
  border: 1px solid var(--border, #2a2d33);
}
.coverage-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.78rem;
  background: var(--surface2, #1c1f26);
  min-width: 700px;
}
.coverage-table thead tr {
  background: var(--surface3, #22252d);
}
.coverage-table th {
  padding: 0.55rem 0.6rem;
  text-align: center;
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--fg-muted);
  border-bottom: 1px solid var(--border, #2a2d33);
  white-space: nowrap;
}
.cov-th-ticker { text-align: left; width: 56px; }
.cov-th-name   { text-align: left; }
.cov-th-seg    { text-align: left; width: 130px; }
.cov-th-score  { width: 40px; }

.coverage-table td {
  padding: 0.4rem 0.6rem;
  border-bottom: 1px solid var(--border, #2a2d33);
  vertical-align: middle;
}
.coverage-table tbody tr:last-child td { border-bottom: none; }
.coverage-table tbody tr:hover { background: rgba(255,255,255,0.025); }

.cov-row-complete { opacity: 0.55; }
.cov-row-bad td.cov-td-ticker { color: #e76f51; font-weight: 600; }

.cov-td-ticker { font-weight: 600; font-size: 0.8rem; white-space: nowrap; }
.cov-td-name   { color: var(--fg-muted); max-width: 180px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cov-td-seg    { color: var(--fg-muted); font-size: 0.72rem; }
.cov-td-dot    { text-align: center; }

/* Coverage dots */
.cov-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
}
.cov-dot-ok      { background: #52b788; }
.cov-dot-stale   { background: #f4a261; }
.cov-dot-missing { background: #3d3d3d; border: 1px solid #555; }

/* Gap badges */
.cov-td-score  { text-align: center; }
.cov-gap-badge {
  display: inline-block;
  min-width: 20px;
  padding: 0 5px;
  border-radius: 10px;
  font-size: 0.68rem;
  font-weight: 700;
  text-align: center;
  line-height: 1.6;
}
.cov-gap-high  { background: #6b2020; color: #f4a261; }
.cov-gap-mid   { background: #3d2800; color: #f4a261; }
.cov-gap-low   { background: #2a2d33; color: var(--fg-muted); }
.cov-gap-ok    { color: #52b788; font-weight: 600; }

/* ============================================================
   Early Signals — new API-backed view
   ============================================================ */

/* Meta row (count + timestamp) */
.es-meta-row {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 0.78rem;
  color: var(--fg-muted);
}
.es-meta-count { font-weight: 600; color: var(--fg); }
.es-meta-ts {
  display: inline-block;
  padding: 1px 7px;
  border-radius: 10px;
  font-size: 0.72rem;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.1);
  opacity: 0.75;
}
.es-meta-ts--stale {
  background: rgba(251, 191, 36, 0.12);
  border-color: rgba(251, 191, 36, 0.3);
  color: #fbbf24;
  opacity: 1;
}
.es-meta-hosted-note { opacity: 0.55; font-size: 0.75rem; }

/* Filter bar */
.es-filter-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 10px 14px;
  padding: 10px 0 14px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 14px;
}
.es-filter-group {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.es-filter-label {
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--fg-muted);
}
.es-filter-select {
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 5px;
  color: var(--fg);
  font-size: 0.8rem;
  padding: 4px 8px;
  cursor: pointer;
}
.es-filter-select:focus { outline: 1px solid var(--accent); }
.es-filter-group--check { justify-content: flex-end; }
.es-filter-check-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.8rem;
  color: var(--fg);
  cursor: pointer;
}
.es-refresh-btn { align-self: flex-end; }

/* Loading */
.es-loading-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 48px 20px;
  color: var(--fg-muted);
  text-align: center;
}
.es-loading-note { font-size: 0.78rem; }

/* Card list */
.es-card-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* Card */
.es-card {
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
  transition: border-color 0.15s;
}
.es-card:hover { border-color: var(--border-hover, #3a3e47); }
.es-card--expanded { border-color: var(--accent); }

/* Card main (always visible) */
.es-card-main {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 16px;
  cursor: pointer;
  user-select: none;
}

/* Score ring */
.es-score-ring {
  flex-shrink: 0;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  border: 3px solid currentColor;
  display: flex;
  align-items: center;
  justify-content: center;
}
.es-score-num {
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1;
}
.es-score-high { color: #4ade80; border-color: #4ade80; }
.es-score-mid  { color: #facc15; border-color: #facc15; }
.es-score-low  { color: #f97316; border-color: #f97316; }
.es-score-none { color: var(--fg-muted); border-color: var(--border); }

/* Card body */
.es-card-body { flex: 1; min-width: 0; }
.es-card-top-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.es-card-title-group {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}

.es-pricing-strip {
  margin: 2px 0 8px;
}

.es-ticker {
  font-size: 1rem;
  font-weight: 700;
  color: var(--fg);
  font-family: var(--font-mono, monospace);
}
.es-company-name {
  font-size: 0.85rem;
  color: var(--fg-muted);
}
.es-card-badges {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  flex-wrap: wrap;
}

/* Action badge */
.es-action-badge {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  padding: 2px 7px;
  border-radius: 4px;
  text-transform: uppercase;
}
.es-action-hot      { background: rgba(74,222,128,0.15); color: #4ade80; }
.es-action-watch    { background: rgba(250,204,21,0.15); color: #facc15; }
.es-action-improving{ background: rgba(96,165,250,0.15); color: #60a5fa; }
.es-action-late     { background: rgba(239,68,68,0.15); color: #ef4444; }
.es-action-spec     { background: rgba(249,115,22,0.15); color: #f97316; }
.es-action-neutral  { background: var(--surface-3, #2a2d33); color: var(--fg-muted); }

/* Confidence badge */
.es-conf-badge {
  font-size: 0.68rem;
  font-weight: 600;
  padding: 2px 6px;
  border-radius: 4px;
  text-transform: uppercase;
}
.es-conf-high { background: rgba(74,222,128,0.12); color: #4ade80; }
.es-conf-med  { background: rgba(250,204,21,0.12); color: #facc15; }
.es-conf-low  { background: rgba(156,163,175,0.12); color: #9ca3af; }

/* Flags row */
.es-flags-row {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.es-flag {
  font-size: 0.67rem;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 4px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  cursor: default;
}
.es-flag-late  { background: rgba(239,68,68,0.12); color: #ef4444; }
.es-flag-early { background: rgba(52,211,153,0.15); color: #34d399; }
.es-flag-new   { background: rgba(139,92,246,0.15); color: #a78bfa; }

/* Label chips */
.es-label-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-bottom: 6px;
}
.es-label-chip {
  font-size: 0.68rem;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 99px;
  background: rgba(96,165,250,0.12);
  color: #93c5fd;
  border: 1px solid rgba(96,165,250,0.2);
}
.es-theme-chip {
  font-size: 0.65rem;
  font-weight: 500;
  padding: 2px 7px;
  border-radius: 99px;
  background: rgba(168,85,247,0.1);
  color: #c4b5fd;
  border: 1px solid rgba(168,85,247,0.2);
  text-transform: capitalize;
}
.es-timing-chip {
  font-size: 0.65rem;
  font-weight: 500;
  padding: 2px 8px;
  border-radius: 99px;
  background: rgba(251,191,36,0.1);
  color: #fbbf24;
  border: 1px solid rgba(251,191,36,0.2);
  cursor: default;
}

/* Summary text */
.es-card-summary {
  font-size: 0.82rem;
  color: var(--fg-muted);
  line-height: 1.5;
  margin: 0 0 8px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Score bar row */
.es-card-score-bar-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.es-score-track {
  flex: 1;
  height: 4px;
  background: var(--surface-3, #1e2026);
  border-radius: 2px;
  overflow: hidden;
}
.es-score-fill {
  height: 100%;
  border-radius: 2px;
  transition: width 0.3s ease;
}
.es-score-fill.es-score-high { background: #4ade80; }
.es-score-fill.es-score-mid  { background: #facc15; }
.es-score-fill.es-score-low  { background: #f97316; }
.es-score-fill.es-score-none { background: var(--border); }
.es-score-label {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--fg-muted);
  white-space: nowrap;
}
.es-open-focus {
  font-size: 0.75rem;
  white-space: nowrap;
  padding: 0;
  color: var(--accent);
}

/* Expanded detail */
.es-card-detail {
  border-top: 1px solid var(--border);
  padding: 16px;
  background: var(--surface-1, var(--surface));
}
.es-detail-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
@media (max-width: 900px) {
  .es-detail-cols { grid-template-columns: 1fr; }
}
.es-detail-heading {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--fg-muted);
  margin: 0 0 8px;
}
.es-detail-heading--mt { margin-top: 16px; }
.es-detail-text {
  font-size: 0.82rem;
  color: var(--fg-muted);
  line-height: 1.55;
  margin: 0;
}

/* Score breakdown */
.es-breakdown-grid {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.es-breakdown-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.es-breakdown-label {
  font-size: 0.72rem;
  color: var(--fg-muted);
  width: 130px;
  flex-shrink: 0;
}
.es-breakdown-track {
  flex: 1;
  height: 5px;
  background: var(--surface-3, #1e2026);
  border-radius: 3px;
  overflow: hidden;
}
.es-breakdown-fill {
  height: 100%;
  background: var(--accent);
  border-radius: 3px;
  transition: width 0.3s;
}
.es-breakdown-val {
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--fg-muted);
  width: 38px;
  text-align: right;
  flex-shrink: 0;
}

/* Evidence list */
.es-evidence-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.es-evidence-item {
  padding: 8px 10px;
  background: var(--surface-2);
  border-radius: 6px;
  border-left: 3px solid var(--accent);
}
.es-evidence-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 4px;
}
.es-evidence-signal {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--fg);
}
.es-ev-conf-badge {
  font-size: 0.63rem;
  font-weight: 700;
  padding: 1px 5px;
  border-radius: 3px;
  text-transform: uppercase;
}
.es-ev-badge-high { background: rgba(74,222,128,0.15); color: #4ade80; }
.es-ev-badge-med  { background: rgba(250,204,21,0.15); color: #facc15; }
.es-ev-badge-low  { background: rgba(156,163,175,0.12); color: #9ca3af; }
.es-evidence-detail {
  font-size: 0.78rem;
  color: var(--fg);
  line-height: 1.45;
  margin: 0 0 4px;
}
.es-evidence-link, .es-evidence-source {
  font-size: 0.7rem;
  color: var(--fg-muted);
  opacity: 0.75;
}
.es-evidence-link:hover { color: var(--accent); opacity: 1; }

/* Risk and watch-next lists */
.es-risk-list, .es-watch-list {
  margin: 0;
  padding: 0 0 0 16px;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.es-risk-list li, .es-watch-list li {
  font-size: 0.78rem;
  color: var(--fg-muted);
  line-height: 1.45;
}

/* Flag boxes */
.es-flag-box {
  margin-top: 12px;
  padding: 8px 10px;
  border-radius: 6px;
  font-size: 0.78rem;
  line-height: 1.45;
}
.es-flag-box--late  { background: rgba(239,68,68,0.08); border: 1px solid rgba(239,68,68,0.25); color: #ef4444; }
.es-flag-box--early { background: rgba(52,211,153,0.08); border: 1px solid rgba(52,211,153,0.25); color: #34d399; }

/* ── Today View ─────────────────────────────────────────────────────────── */

.today-active .summary-strip {
  display: none;
}

.today-body {
  display: grid;
  gap: 18px;
  padding: 0 22px 24px;
}

.today-hero-shell,
.today-board-shell {
  border: 1px solid var(--line);
  border-radius: var(--radius-xl);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.028), rgba(255, 255, 255, 0.01)),
    linear-gradient(180deg, rgba(5, 10, 16, 0.9), rgba(10, 16, 24, 0.92));
  box-shadow: var(--shadow);
}

.today-hero-shell {
  padding: 20px;
}

.today-board-shell {
  padding: 18px 20px 20px;
}

.today-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(360px, 0.95fr);
  gap: 20px;
}

.today-hero-copy {
  padding: 6px 8px 0;
}

.today-hero-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  color: var(--muted-strong);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.74rem;
}

.today-hero-dot {
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--positive);
  box-shadow: 0 0 0 6px rgba(110, 211, 155, 0.1);
}

.today-hero-copy h4 {
  margin: 18px 0 16px;
  max-width: 10ch;
  color: #f7f2eb;
  font-family: var(--font-display);
  font-size: clamp(3.3rem, 5.3vw, 4.65rem);
  line-height: 0.92;
  letter-spacing: -0.045em;
}

.today-hero-copy p {
  margin: 0;
  max-width: 25ch;
  color: #e3bc84;
  font-size: 1.05rem;
  line-height: 1.46;
}

.today-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 26px;
}

.today-hero-actions .action-button {
  padding: 0.84rem 1.05rem;
}

.today-hero-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.today-hero-visual {
  position: relative;
  overflow: hidden;
  display: grid;
  align-content: space-between;
  gap: 20px;
  min-height: 380px;
  padding: 20px;
  border: 1px solid rgba(169, 198, 232, 0.14);
  border-radius: 22px;
  background:
    linear-gradient(90deg, rgba(3, 9, 15, 0.88) 0%, rgba(8, 16, 25, 0.28) 36%, rgba(8, 16, 25, 0) 48%),
    radial-gradient(circle at 50% 8%, rgba(110, 188, 255, 0.2), transparent 20%),
    linear-gradient(135deg, rgba(5, 11, 18, 0.98), rgba(9, 17, 27, 0.95) 45%, rgba(6, 12, 19, 0.96));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

.today-hero-visual::before,
.today-hero-visual::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.today-hero-visual::before {
  background:
    linear-gradient(90deg,
      rgba(0, 0, 0, 0.5) 0 7%,
      rgba(58, 88, 120, 0.55) 7% 9%,
      rgba(0, 0, 0, 0.5) 9% 18%,
      rgba(58, 88, 120, 0.55) 18% 20%,
      rgba(0, 0, 0, 0.42) 20% 30%,
      rgba(58, 88, 120, 0.45) 30% 31.5%,
      rgba(0, 0, 0, 0.3) 31.5% 68.5%,
      rgba(58, 88, 120, 0.45) 68.5% 70%,
      rgba(0, 0, 0, 0.42) 70% 80%,
      rgba(58, 88, 120, 0.55) 80% 82%,
      rgba(0, 0, 0, 0.5) 82% 91%,
      rgba(58, 88, 120, 0.55) 91% 93%,
      rgba(0, 0, 0, 0.5) 93% 100%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.22) 0 1px, transparent 1px 100%);
  opacity: 0.78;
}

.today-hero-visual::after {
  background:
    radial-gradient(circle at 50% 18%, rgba(178, 216, 255, 0.42), transparent 12%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.08), transparent 14% 88%, rgba(0, 0, 0, 0.22) 100%);
}

.today-hero-visual-top,
.today-hero-visual-copy,
.today-hero-stats {
  position: relative;
  z-index: 1;
}

.today-hero-visual-top {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  color: var(--muted-strong);
  font-size: 0.82rem;
}

.today-hero-status {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0.42rem 0.76rem;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 999px;
  background: rgba(8, 13, 19, 0.68);
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.today-hero-visual-copy {
  max-width: 21rem;
  display: grid;
  gap: 10px;
  margin-top: auto;
}

.today-hero-visual-copy strong {
  font-size: 1.55rem;
  line-height: 1.04;
  letter-spacing: -0.04em;
}

.today-hero-visual-copy p {
  margin: 0;
  color: var(--muted-strong);
  line-height: 1.55;
}

.today-stat-card,
.today-module-card,
.today-card,
.today-link-tile,
.today-action-row {
  border: 1px solid var(--line);
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.012));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.025);
}

.today-stat-card {
  display: grid;
  gap: 8px;
  align-content: start;
  padding: 17px;
  border-radius: 18px;
  background: rgba(8, 16, 24, 0.72);
}

.today-stat-card strong {
  font-size: 1.52rem;
  letter-spacing: -0.04em;
}

.today-stat-card span:last-child {
  color: var(--muted);
  line-height: 1.45;
}

.today-module-grid,
.today-decision-grid {
  display: grid;
  gap: 16px;
}

.today-module-grid {
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  margin-top: 18px;
}

.today-decision-grid {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.today-module-card,
.today-card {
  display: grid;
  gap: 12px;
  padding: 20px;
  border-radius: 18px;
}

.today-module-head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}

.today-module-icon {
  width: 54px;
  height: 54px;
  display: grid;
  place-items: center;
  border-radius: 18px;
  background: rgba(94, 167, 255, 0.12);
  color: var(--accent);
}

.today-module-icon svg {
  width: 28px;
  height: 28px;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.today-module-heading {
  display: grid;
  gap: 6px;
}

.today-module-card h5,
.today-card h5,
.today-board-heading h5 {
  margin: 0;
  font-size: 1.08rem;
  letter-spacing: -0.02em;
}

.today-module-status {
  margin: 0;
  color: var(--accent-strong);
  font-weight: 700;
  line-height: 1.45;
}

.today-module-copy,
.today-card-copy,
.today-card-subtle,
.today-tone-row p,
.today-link-tile span,
.today-action-copy span {
  margin: 0;
  color: var(--muted);
  line-height: 1.58;
}

.today-module-meta,
.today-mini-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 10px;
}

.today-module-meta span {
  color: var(--muted);
  font-size: 0.83rem;
}

.today-module-link {
  padding: 0;
  border: none;
  background: none;
  color: var(--accent);
  font: inherit;
  font-weight: 700;
  text-align: left;
  cursor: pointer;
}

.today-board-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  margin-bottom: 16px;
}

.today-board-caption {
  color: var(--muted);
  font-size: 0.82rem;
  text-align: right;
}

.today-tone-row {
  display: grid;
  gap: 8px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.today-tone-row:first-of-type {
  padding-top: 0;
  border-top: none;
}

.today-tone-label {
  display: inline-block;
  margin-bottom: 4px;
  color: var(--muted);
  font-size: 0.74rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.today-action-list {
  display: grid;
  gap: 10px;
}

.today-action-row {
  width: 100%;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 12px;
  padding: 14px 15px;
  border-radius: 16px;
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: transform 180ms ease, border-color 180ms ease, background 180ms ease;
}

.today-action-copy {
  display: grid;
  gap: 6px;
}

.today-action-index {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--muted-strong);
  font-family: var(--mono);
  font-size: 0.82rem;
}

.today-action-row:hover,
.today-link-tile:hover {
  transform: translateY(-1px);
  border-color: rgba(94, 167, 255, 0.34);
  background: linear-gradient(180deg, rgba(94, 167, 255, 0.14), rgba(255, 255, 255, 0.02));
}

.today-link-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.today-link-tile strong,
.today-action-copy strong {
  font-size: 0.96rem;
  letter-spacing: -0.02em;
}

.today-link-tile {
  width: 100%;
  display: grid;
  gap: 6px;
  padding: 14px 15px;
  border-radius: var(--radius-md);
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: transform 180ms ease, border-color 180ms ease, background 180ms ease;
}

.today-mini-metrics > div {
  display: grid;
  gap: 4px;
  padding: 12px 13px;
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.04);
}

.today-mini-metrics strong {
  font-size: 1.15rem;
  letter-spacing: -0.03em;
}

.today-mini-metrics span {
  color: var(--muted);
  font-size: 0.82rem;
  line-height: 1.45;
}

.today-list {
  margin: 0;
  padding-left: 18px;
  color: var(--muted-strong);
  display: grid;
  gap: 8px;
  line-height: 1.5;
}

.today-soft-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.soft-checklist {
  margin: 12px 0 0;
  padding-left: 0;
  color: var(--muted-strong);
  display: grid;
  gap: 8px;
  line-height: 1.55;
  list-style: none;
}

.soft-checklist li {
  position: relative;
  padding-left: 1.35rem;
}

.soft-checklist li::before {
  content: "✦";
  position: absolute;
  left: 0;
  top: 0;
  color: #ffb4d8;
}

.soft-decision-stack {
  display: grid;
  gap: 10px;
}

.today-card-soft,
.today-module-card-soft,
.desk-surface-panel,
.desk-pulse-panel {
  position: relative;
  overflow: hidden;
}

.today-card-soft::before,
.today-module-card-soft::before,
.desk-surface-panel::before,
.desk-pulse-panel::before {
  content: "";
  position: absolute;
  inset: auto -40px -48px auto;
  width: 128px;
  height: 128px;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(255, 179, 214, 0.16), rgba(255, 179, 214, 0));
  pointer-events: none;
}

.today-action-row-soft {
  align-items: start;
}

.desk-overview-shell-soft {
  gap: 18px;
}

.desk-overview-hero-soft .desk-overview-hero-copy h4 {
  max-width: 11ch;
}

body.soft-mode .topbar,
body.soft-mode .sidebar-panel,
body.soft-mode .today-hero-shell,
body.soft-mode .today-board-shell,
body.soft-mode .today-stat-card,
body.soft-mode .today-module-card,
body.soft-mode .today-card,
body.soft-mode .today-link-tile,
body.soft-mode .today-action-row,
body.soft-mode .desk-overview-hero,
body.soft-mode .desk-overview-status-card,
body.soft-mode .desk-overview-metric,
body.soft-mode .premarket-panel,
body.soft-mode .desk-pulse-row,
body.soft-mode .premarket-data-item,
body.soft-mode .premarket-callout,
body.soft-mode .market-tape-item {
  border-color: rgba(130, 130, 220, 0.20);
  background:
    linear-gradient(180deg, rgba(160, 155, 255, 0.04), rgba(140, 140, 240, 0.012)),
    linear-gradient(180deg, rgba(10, 10, 28, 0.97), rgba(6, 8, 22, 0.98));
  box-shadow: 0 20px 52px rgba(2, 4, 16, 0.52),
              0 0 0 1px rgba(140, 130, 240, 0.09) inset;
}

body.soft-mode .topbar-mode-shell,
body.soft-mode .today-mini-metrics > div,
body.soft-mode .today-stat-card,
body.soft-mode .desk-overview-metric,
body.soft-mode .desk-pulse-row {
  background: rgba(120, 100, 200, 0.07);
}

body.soft-mode .today-hero.is-soft,
body.soft-mode .desk-overview-hero-soft {
  background:
    linear-gradient(135deg, rgba(10, 10, 30, 0.97), rgba(8, 8, 24, 0.95)),
    radial-gradient(circle at 16% 0%, rgba(120, 100, 220, 0.18), transparent 24%);
}

body.soft-mode .today-hero-shell-soft,
body.soft-mode .desk-overview-shell-soft {
  background:
    radial-gradient(circle at top left,  rgba(120, 100, 220, 0.16), transparent 24%),
    radial-gradient(circle at 88% 22%,   rgba(255, 229, 100, 0.13), transparent 20%),
    radial-gradient(circle at 50% 100%,  rgba(80, 160, 255, 0.10),  transparent 30%),
    linear-gradient(180deg, rgba(160, 155, 255, 0.04), rgba(140, 140, 240, 0.012)),
    linear-gradient(180deg, rgba(10, 10, 28, 0.97), rgba(6, 8, 22, 0.98));
}

body.soft-mode .today-hero-copy p,
body.soft-mode .desk-overview-hero-copy p,
body.soft-mode .portfolio-hero-copy p {
  color: #d8dcff;
}

body.soft-mode .today-module-icon {
  background: rgba(120, 100, 220, 0.14);
  color: #b0b8ff;
}

body.soft-mode .today-hero-visual {
  border-color: rgba(140, 130, 230, 0.18);
  background:
    linear-gradient(90deg, rgba(6, 6, 20, 0.9) 0%, rgba(12, 12, 32, 0.38) 36%, rgba(12, 12, 32, 0) 52%),
    radial-gradient(circle at 50% 10%, rgba(120, 100, 220, 0.18), transparent 18%),
    linear-gradient(135deg, rgba(10, 10, 28, 0.98), rgba(8, 8, 24, 0.95) 48%, rgba(6, 6, 22, 0.96));
}

body.soft-mode .today-hero-visual::before {
  background:
    radial-gradient(ellipse at 85% 10%,  rgba(220, 100, 255, 0.22), transparent 40%),
    radial-gradient(ellipse at 15% 90%,  rgba(80,  130, 255, 0.18), transparent 44%),
    radial-gradient(ellipse at 50% 48%,  rgba(140, 100, 240, 0.10), transparent 56%),
    radial-gradient(ellipse at 90% 78%,  rgba(255, 120, 200, 0.10), transparent 30%),
    radial-gradient(ellipse at 10% 30%,  rgba(100, 120, 255, 0.08), transparent 36%);
  opacity: 1;
}

body.soft-mode .today-hero-visual::after {
  background:
    radial-gradient(circle at 50% 14%, rgba(180, 100, 255, 0.20), transparent 22%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.06), transparent 14% 88%, rgba(0, 0, 0, 0.18) 100%);
}

/* Buttons — pink-to-indigo-to-sky transformation gradient */
body.soft-mode .action-button {
  background: linear-gradient(135deg, #ff88e8, #a870ff, #70a0ff);
  box-shadow: 0 4px 20px rgba(255, 120, 230, 0.50),
              0 0 0 1px rgba(255, 200, 255, 0.18) inset;
}

body.soft-mode .action-button:hover {
  background: linear-gradient(135deg, #ffaaf2, #cc98ff, #90beff);
  box-shadow: 0 6px 28px rgba(255, 140, 240, 0.62),
              0 0 0 1px rgba(255, 220, 255, 0.24) inset;
}

body.soft-mode .action-button-secondary,
body.soft-mode .pm-tab {
  background: rgba(120, 100, 220, 0.08);
  border-color: rgba(130, 130, 220, 0.26);
}

body.soft-mode .today-card-soft .field-label,
body.soft-mode .today-board-caption,
body.soft-mode .desk-pulse-status,
body.soft-mode .snap-analysis-section-sub {
  color: #d0d4ff;
}

body.soft-mode .snap-analysis-hero,
body.soft-mode .snap-analysis-insight-card,
body.soft-mode .snap-analysis-preview-card,
body.soft-mode .snap-analysis-disclosure,
body.soft-mode .snap-analysis-section,
body.soft-mode .snap-analysis-tile,
body.soft-mode .snap-analysis-exec-tile,
body.soft-mode .snap-analysis-header {
  border-color: rgba(130, 120, 220, 0.20);
  box-shadow: 0 18px 42px rgba(120, 110, 220, 0.08);
}

body.soft-mode .snap-analysis-chip,
body.soft-mode .snap-analysis-disclosure-meta {
  background: rgba(120, 110, 220, 0.10);
  color: #d0d4ff;
}

body.soft-mode .snap-analysis-hero-text,
body.soft-mode .snap-analysis-insight-body,
body.soft-mode .snap-analysis-summary-text,
body.soft-mode .snap-analysis-list li {
  color: #d0d4ff;
}

body.soft-mode .snap-analysis-hero-title,
body.soft-mode .snap-analysis-insight-title,
body.soft-mode .snap-analysis-preview-title,
body.soft-mode .snap-analysis-disclosure-title {
  color: #eeeeff;
}

body.soft-mode .today-card-soft h5,
body.soft-mode .desk-overview-hero-soft h4,
body.soft-mode .desk-pulse-panel h4 {
  color: #eeeeff;
}

body.soft-mode .pm-tab.is-active {
  background: linear-gradient(180deg, rgba(210, 100, 255, 0.18), rgba(100, 120, 255, 0.10));
  border-color: rgba(200, 160, 255, 0.40);
  color: #f8eeff;
}

body.soft-mode .today-action-row:hover,
body.soft-mode .today-link-tile:hover,
body.soft-mode .pm-tab:hover {
  border-color: rgba(140, 135, 230, 0.40);
  background: linear-gradient(180deg, rgba(120, 110, 220, 0.14), rgba(180, 180, 255, 0.04));
}

body.soft-mode .today-module-link,
body.soft-mode .desk-inline-link,
body.soft-mode .text-button {
  color: #a0a8ff;
}

body.soft-mode .today-action-index {
  background: rgba(120, 110, 220, 0.12);
  color: #d0d4ff;
}

body.soft-mode .desk-pulse-row {
  background:
    radial-gradient(circle at top right, rgba(120, 100, 220, 0.09), transparent 20%),
    rgba(110, 100, 200, 0.06);
}

/* Sparkle on card hover ✨ */
body.soft-mode .today-card:hover,
body.soft-mode .today-link-tile:hover,
body.soft-mode .today-action-row:hover {
  box-shadow: 0 0 0 1px rgba(140, 130, 240, 0.24) inset,
              0 8px 36px rgba(120, 110, 220, 0.16);
}

/* Nav active tab — pink-violet glow */
body.soft-mode .view-nav-btn.is-active,
body.soft-mode [data-view].is-active {
  color: #ffb8f8;
  text-shadow: 0 0 14px rgba(255, 130, 240, 0.65), 0 0 28px rgba(160, 100, 255, 0.30);
}

/* Dreamy heading glow — pink-violet on indigo */
body.soft-mode h1,
body.soft-mode h2,
body.soft-mode h3,
body.soft-mode h4,
body.soft-mode h5 {
  text-shadow: 0 0 22px rgba(220, 100, 255, 0.24), 0 0 50px rgba(100, 90, 220, 0.12);
}

/* Brand mark — pink + blue shimmer in soft mode */
body.soft-mode .brand-mark {
  background:
    linear-gradient(90deg, transparent 0 24%, #ff90ea 24% 34%, transparent 34% 66%, #7080ff 66% 76%, transparent 76%),
    linear-gradient(0deg,  transparent 0 24%, #ff90ea 24% 34%, transparent 34% 66%, #7080ff 66% 76%, transparent 76%);
  box-shadow: 0 0 0 5px rgba(255, 130, 235, 0.16);
}

/* Snap / analysis cards — indigo borders */
body.soft-mode .snap-analysis-hero,
body.soft-mode .snap-analysis-insight-card,
body.soft-mode .snap-analysis-preview-card,
body.soft-mode .snap-analysis-disclosure,
body.soft-mode .snap-analysis-section,
body.soft-mode .snap-analysis-tile,
body.soft-mode .snap-analysis-exec-tile,
body.soft-mode .snap-analysis-header {
  border-color: rgba(130, 120, 220, 0.22);
  box-shadow: 0 18px 42px rgba(110, 100, 210, 0.10);
}

body.soft-mode .snap-analysis-chip,
body.soft-mode .snap-analysis-disclosure-meta {
  background: rgba(120, 110, 220, 0.11);
  color: #d0d4ff;
}

/* ── Gradient text on hero headings — pink-to-indigo shimmer ────────────────── */
body.soft-mode .today-hero-copy h4,
body.soft-mode .desk-overview-hero-copy h4,
body.soft-mode .portfolio-hero-copy h4 {
  background: linear-gradient(135deg, #ffe8fc 0%, #e890ff 32%, #9090ff 65%, #90b8ff 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 20px rgba(220, 100, 255, 0.30)) drop-shadow(0 2px 6px rgba(0,0,0,0.4));
}

/* Live/Ideas hero — scale up to match Today heading size */
body.soft-mode .desk-overview-hero-copy h4 {
  font-size: clamp(3.0rem, 4.8vw, 4.2rem);
  max-width: 10ch;
}

/* Primary button — soft shimmer pulse ✨ */
body.soft-mode .action-button {
  animation: sm-btn-pulse 3.2s ease-in-out infinite;
}

@keyframes sm-btn-pulse {
  0%,  100% { box-shadow: 0 4px 20px rgba(255, 120, 230, 0.50), 0 0 0 1px rgba(255, 200, 255, 0.18) inset; }
  50%        { box-shadow: 0 6px 32px rgba(255, 145, 240, 0.68), 0 0 0 1px rgba(255, 225, 255, 0.28) inset; }
}

/* Ticker chips — periwinkle in soft mode */
body.soft-mode .ticker-chip {
  background: rgba(120, 110, 220, 0.14);
  border-color: rgba(140, 140, 230, 0.32);
  color: #d0d4ff;
}

/* Segment badge — softer */
body.soft-mode .segment-badge {
  background: rgba(120, 110, 220, 0.12);
  border-color: rgba(155, 160, 230, 0.24);
  color: #c8ccf0;
}

/* Stale / age badges */
body.soft-mode .analysis-stale-badge {
  background: rgba(130, 120, 220, 0.18);
  color: #a0a8ff;
  border-color: rgba(130, 120, 220, 0.30);
}

/* Summary strip bar — indigo accent */
body.soft-mode .summary-strip {
  background: linear-gradient(90deg, rgba(120, 100, 220, 0.12), rgba(100, 120, 240, 0.08), rgba(80, 160, 255, 0.06));
  border-color: rgba(130, 130, 220, 0.18);
}

.caution {
  color: var(--gold);
}

.portfolio-active .summary-strip {
  display: none;
}

.portfolio-body {
  display: grid;
  gap: 18px;
  padding: 0 22px 24px;
}

.portfolio-hero-shell,
.portfolio-manager-shell,
.portfolio-panel,
.market-tape-item {
  border: 1px solid var(--line);
  border-radius: var(--radius-xl);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.01)),
    linear-gradient(180deg, rgba(5, 10, 16, 0.92), rgba(9, 15, 23, 0.95));
  box-shadow: var(--shadow);
}

.portfolio-hero-shell {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(340px, 0.85fr);
  gap: 18px;
  padding: 18px;
}

.portfolio-hero-copy {
  padding: 14px 18px 18px;
}

.portfolio-hero-copy h4 {
  margin: 10px 0 14px;
  max-width: 11ch;
  color: #f7f2eb;
  font-family: var(--font-display);
  font-size: clamp(3rem, 4.8vw, 4.35rem);
  line-height: 0.94;
  letter-spacing: -0.045em;
}

.portfolio-hero-copy p {
  max-width: 33rem;
  margin: 0;
  color: #e3bc84;
  font-size: 1.02rem;
  line-height: 1.5;
}

.portfolio-hero-note {
  margin-top: 18px !important;
  color: var(--muted-strong) !important;
  font-size: 0.95rem !important;
}

.portfolio-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 24px;
}

.portfolio-card-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 14px;
}

.portfolio-card-head > div {
  display: grid;
  gap: 6px;
}

.portfolio-card-head h5 {
  margin: 0;
  font-size: 1.08rem;
  letter-spacing: -0.02em;
}

.portfolio-panel-caption {
  color: var(--muted);
  font-size: 0.8rem;
  text-align: right;
}

.portfolio-exposure-card {
  display: grid;
  gap: 18px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.032), rgba(255, 255, 255, 0.01)),
    linear-gradient(180deg, rgba(7, 13, 20, 0.96), rgba(10, 16, 24, 0.94));
}

.portfolio-exposure-layout {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 20px;
  align-items: center;
}

.portfolio-donut {
  width: 220px;
  height: 220px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  padding: 18px;
}

.portfolio-donut-center {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  gap: 4px;
  border-radius: 50%;
  background: rgba(9, 15, 23, 0.96);
  text-align: center;
}

.portfolio-donut-center strong {
  font-family: var(--font-display);
  font-size: 2rem;
  line-height: 1;
  letter-spacing: -0.04em;
}

.portfolio-donut-center span {
  color: var(--muted);
  font-size: 0.9rem;
}

.portfolio-exposure-list {
  display: grid;
  gap: 10px;
}

.portfolio-exposure-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.portfolio-exposure-row:last-child {
  padding-bottom: 0;
  border-bottom: none;
}

.portfolio-exposure-label {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--muted-strong);
}

.portfolio-exposure-label i {
  width: 10px;
  height: 10px;
  display: inline-block;
  border-radius: 999px;
}

.portfolio-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 16px;
}

.portfolio-panel {
  grid-column: span 4;
  display: grid;
  gap: 16px;
  padding: 18px;
}

.portfolio-panel-compact {
  align-self: start;
  height: fit-content;
  gap: 12px;
}

.portfolio-panel-wide {
  grid-column: span 8;
}

.portfolio-snapshot-grid,
.portfolio-buying-power-grid,
.portfolio-mini-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
}

.portfolio-snapshot-stat,
.portfolio-buying-power-card,
.portfolio-mini-grid > div {
  display: grid;
  gap: 6px;
  padding: 14px 15px;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.05);
}

.portfolio-snapshot-stat strong,
.portfolio-buying-power-card strong,
.portfolio-mini-grid strong {
  font-size: 1.55rem;
  letter-spacing: -0.04em;
}

.portfolio-snapshot-stat span:last-child,
.portfolio-buying-power-card span:last-child,
.portfolio-manager-meta,
.portfolio-holding-sub,
.portfolio-risk-shell p,
.portfolio-catalyst-row span {
  color: var(--muted);
  line-height: 1.48;
}

.portfolio-catalyst-list,
.portfolio-holdings-list,
.portfolio-sleeve-list {
  display: grid;
  gap: 10px;
}

.portfolio-catalyst-row,
.portfolio-holding-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  padding: 12px 13px;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.04);
}

.portfolio-catalyst-row > div,
.portfolio-holding-copy {
  display: grid;
  gap: 4px;
}

.portfolio-holding-main {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.portfolio-sleeve-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(110px, 1fr) auto;
  gap: 12px;
  align-items: center;
}

.portfolio-sleeve-panel .portfolio-sleeve-list {
  gap: 8px;
}

.portfolio-sleeve-panel .portfolio-sleeve-row {
  grid-template-columns: minmax(0, 112px) minmax(0, 1fr) auto;
  gap: 10px;
}

.portfolio-sleeve-copy {
  display: grid;
  gap: 4px;
}

.portfolio-sleeve-panel .portfolio-sleeve-copy {
  gap: 2px;
}

.portfolio-sleeve-copy span {
  color: var(--muted);
  font-size: 0.82rem;
}

.portfolio-sleeve-panel .portfolio-sleeve-copy span {
  font-size: 0.78rem;
}

.portfolio-sleeve-bar {
  height: 9px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  overflow: hidden;
}

.portfolio-sleeve-panel .portfolio-sleeve-bar {
  height: 8px;
}

.portfolio-sleeve-bar span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--accent), #79c693);
}

.portfolio-risk-shell {
  display: grid;
  gap: 12px;
}

.portfolio-risk-shell strong {
  font-size: 1.2rem;
}

.portfolio-budget-shell .budget-bar {
  margin-bottom: 0;
}

.portfolio-manager-shell {
  display: grid;
  gap: 16px;
  padding: 18px;
}

.portfolio-manager-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: flex-end;
}

.portfolio-upload-field {
  min-width: min(320px, 100%);
}

.portfolio-manager-list-shell {
  display: grid;
  gap: 12px;
}

.portfolio-manager-list-toolbar {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
}

.portfolio-manager-list-summary {
  margin: 0;
  color: var(--muted);
  font-size: 0.86rem;
}

.portfolio-manager-list-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.portfolio-manager-list {
  display: grid;
  gap: 12px;
}

.portfolio-manager-row {
  display: grid;
  gap: 12px;
  align-items: start;
  padding: 14px;
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.04);
}

.portfolio-manager-summary {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 14px;
}

.portfolio-manager-main,
.portfolio-manager-actions,
.portfolio-manager-head {
  display: grid;
  gap: 8px;
}

.portfolio-manager-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}

.portfolio-manager-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.portfolio-manager-summary-toggle {
  margin-top: 2px;
}

.portfolio-manager-details {
  display: grid;
  gap: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.portfolio-manager-details[hidden] {
  display: none !important;
}

.portfolio-manager-actions {
  display: grid;
  gap: 12px;
}

.portfolio-manager-guardrail-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.portfolio-guardrail-field {
  min-width: 0;
}

.portfolio-guardrail-input-row {
  display: flex;
  align-items: center;
  gap: 6px;
}

.portfolio-guardrail-input {
  min-width: 0;
}

.portfolio-guardrail-note {
  color: var(--muted);
  font-size: 0.76rem;
  line-height: 1.45;
}

.portfolio-remove-button {
  justify-self: flex-start;
}

.market-tape {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 10px;
  margin-top: 16px;
}

.market-tape-item {
  display: grid;
  gap: 6px;
  padding: 14px 16px;
  border-radius: 18px;
}

.market-tape-label {
  color: var(--muted-strong);
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.market-tape-item strong {
  font-size: 1.6rem;
  letter-spacing: -0.04em;
}

.market-tape-delta {
  color: var(--muted);
  font-size: 0.84rem;
}

.market-tape-item.tone-positive strong,
.market-tape-item.tone-positive .market-tape-delta {
  color: var(--positive);
}

.market-tape-item.tone-negative strong,
.market-tape-item.tone-negative .market-tape-delta {
  color: var(--negative);
}

@media (max-width: 1180px) {
  .today-hero {
    grid-template-columns: 1fr;
  }

  .today-hero-copy p {
    max-width: 46ch;
  }

  .desk-overview-hero,
  .desk-overview-grid {
    grid-template-columns: 1fr;
  }

  .portfolio-hero-shell {
    grid-template-columns: 1fr;
  }

  .portfolio-panel,
  .portfolio-panel-wide {
    grid-column: span 12;
  }

  .portfolio-manager-summary {
    flex-direction: column;
  }

  .market-tape {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .today-soft-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 860px) {
  .surface-heading-row {
    align-items: flex-start;
    flex-direction: column;
  }

  .surface-heading-row .prompt-toolbar {
    width: 100%;
    display: grid;
    grid-template-columns: 1fr;
    justify-content: flex-start;
  }

  .analysis-generated-label {
    grid-column: 1 / -1;
    white-space: normal;
  }

  .surface-heading-row .prompt-toolbar .action-button {
    width: 100%;
  }

  .today-body {
    padding: 0 18px 22px;
  }

  .today-hero-shell,
  .today-board-shell {
    padding-left: 16px;
    padding-right: 16px;
  }

  .today-hero-copy h4 {
    font-size: clamp(2.6rem, 12vw, 3.4rem);
  }

  .today-hero-stats,
  .today-link-grid {
    grid-template-columns: 1fr;
  }

  .topbar-mode-shell {
    align-items: flex-start;
    flex-direction: column;
  }

  .topbar-mode-note {
    max-width: none;
  }

  .desk-overview-metrics,
  .desk-callout-grid {
    grid-template-columns: 1fr;
  }

  .today-board-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .today-hero-visual {
    min-height: 420px;
  }

  .desk-overview-hero {
    padding: 16px;
  }

  .desk-overview-hero-copy h4 {
    max-width: 14ch;
    font-size: clamp(2.25rem, 11vw, 3rem);
  }

  .portfolio-body {
    padding: 0 18px 22px;
  }

  .portfolio-hero-shell,
  .portfolio-manager-shell,
  .portfolio-panel {
    padding-left: 16px;
    padding-right: 16px;
  }

  .portfolio-hero-copy h4 {
    font-size: clamp(2.4rem, 11vw, 3.3rem);
  }

  .portfolio-exposure-layout {
    grid-template-columns: 1fr;
  }

  .portfolio-donut {
    margin: 0 auto;
  }

  .portfolio-manager-row {
    grid-template-columns: 1fr;
  }

  .portfolio-manager-actions {
    min-width: 0;
  }

  .position-guardrail-grid,
  .holding-stop-target-grid,
  .portfolio-manager-guardrail-row {
    grid-template-columns: 1fr;
  }

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

@media (max-width: 560px) {
  .market-tape,
  .portfolio-snapshot-grid,
  .portfolio-buying-power-grid,
  .portfolio-mini-grid {
    grid-template-columns: 1fr;
  }

  .topbar-mode-toggle {
    width: 100%;
  }

  .topbar-mode-toggle .segment-toggle {
    flex: 1;
  }

  .surface-heading-row .prompt-toolbar .action-button {
    grid-column: 1 / -1;
  }

  .desk-pulse-top {
    flex-direction: column;
    align-items: flex-start;
  }

  .desk-pulse-badges {
    justify-content: flex-start;
  }
}

/* ── Discovery view (8-K Feed + Volume Scanner) ─────────────────────────── */

.discovery-tab-bar {
  display: flex;
  gap: 4px;
  padding: 12px 0 8px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 12px;
}

.discovery-tab-btn {
  padding: 6px 16px;
  font-size: 13px;
  font-weight: 500;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.discovery-tab-btn:hover {
  background: var(--surface-hover);
  color: var(--text);
}

.discovery-tab-btn--active {
  background: var(--accent-subtle);
  border-color: var(--accent);
  color: var(--accent);
}

.edgar-card-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 12px;
}

.edgar-card {
  background: var(--surface-secondary);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
}

.edgar-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 6px;
}

.edgar-card-title {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.edgar-ticker {
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  background: var(--surface-tertiary);
  border-radius: 4px;
  padding: 1px 6px;
}

.edgar-company-name {
  font-size: 13px;
  color: var(--text);
}

.edgar-card-score {
  font-size: 14px;
  font-weight: 700;
  flex-shrink: 0;
  padding: 2px 8px;
  border-radius: 6px;
  border: 1px solid currentColor;
}

.edgar-card-body {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  font-size: 12px;
}

.edgar-signal-label {
  color: var(--text-secondary);
  font-weight: 500;
}

.edgar-date {
  color: var(--text-tertiary);
}

.edgar-filing-link {
  color: var(--accent);
  text-decoration: none;
  font-size: 12px;
}

.edgar-filing-link:hover {
  text-decoration: underline;
}

.rv-label {
  color: var(--text-secondary);
  font-size: 11px;
}

/* Relative volume score colours */
.rv-extreme { color: #f87171; border-color: #f87171; }
.rv-high    { color: #fb923c; border-color: #fb923c; }
.rv-elevated{ color: #facc15; border-color: #facc15; }

/* RSI timing colours */
.rsi-extended { color: #f87171; border-color: #f87171; }
.rsi-momentum { color: #4ade80; border-color: #4ade80; }
.rsi-pullback { color: #60a5fa; border-color: #60a5fa; }
.rsi-oversold { color: #facc15; border-color: #facc15; }
.rsi-neutral  { color: var(--text-tertiary); border-color: var(--border); }

/* ── Top Picks view ─────────────────────────────────────────────────────── */

.tp-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 0 10px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 14px;
}

.tp-sources {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.tp-src-pill {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 10px;
  border: 1px solid;
}
.tp-src-ok      { color: #4ade80; border-color: #4ade80; background: rgba(74,222,128,.08); }
.tp-src-loading { color: var(--text-tertiary); border-color: var(--border); }
.tp-src-err     { color: #f87171; border-color: #f87171; }

.tp-card-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.tp-card {
  background: var(--surface-secondary);
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow: hidden;
  transition: border-color 0.15s;
}

.tp-card--expanded {
  border-color: var(--accent);
}

.tp-card-main {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 12px 12px 10px;
}

.tp-rank {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--surface-tertiary);
  color: var(--text-secondary);
  font-size: 11px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 2px;
}

.tp-card-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.tp-card-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
}

.tp-card-title {
  display: flex;
  align-items: baseline;
  gap: 7px;
  flex-wrap: wrap;
  min-width: 0;
}

.tp-ticker {
  font-size: 14px;
  font-weight: 800;
  color: var(--text);
  letter-spacing: 0.02em;
}

.tp-name {
  font-size: 12px;
  color: var(--text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 220px;
}

.tp-card-badges {
  display: flex;
  align-items: center;
  gap: 5px;
  flex-shrink: 0;
}

.tp-score {
  font-size: 13px;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 6px;
  border: 1px solid currentColor;
}

.tp-conv {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 10px;
  border: 1px solid currentColor;
}
.tp-conv-high { color: #4ade80; border-color: #4ade80; background: rgba(74,222,128,.08); }
.tp-conv-mid  { color: #facc15; border-color: #facc15; background: rgba(250,204,21,.07); }
.tp-conv-low  { color: var(--text-tertiary); border-color: var(--border); }

.tp-price-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--text);
  font-weight: 600;
}
.tp-perf-pos { color: #4ade80; font-size: 12px; font-weight: 500; }
.tp-perf-neg { color: #f87171; font-size: 12px; font-weight: 500; }

.tp-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.tp-chip {
  font-size: 11px;
  font-weight: 500;
  padding: 2px 8px;
  border-radius: 8px;
  border: 1px solid var(--border);
  color: var(--text-secondary);
  white-space: nowrap;
}
.tp-chip-strong  { color: #4ade80; border-color: rgba(74,222,128,.5); background: rgba(74,222,128,.07); }
.tp-chip-normal  { color: #93c5fd; border-color: rgba(147,197,253,.5); background: rgba(147,197,253,.07); }
.tp-chip-edgar   { color: #c4b5fd; border-color: rgba(196,181,253,.5); background: rgba(196,181,253,.07); }
.tp-chip-vol-hot { color: #fb923c; border-color: rgba(251,146,60,.5);  background: rgba(251,146,60,.07);  }
.tp-chip-vol     { color: #facc15; border-color: rgba(250,204,21,.5);  background: rgba(250,204,21,.07);  }
.tp-chip-retail  { color: #f472b6; border-color: rgba(244,114,182,.5); background: rgba(244,114,182,.07); }
.tp-chip-rsi     { color: #60a5fa; border-color: rgba(96,165,250,.5);  background: rgba(96,165,250,.07);  }
.tp-chip-rsi-hot { color: #f87171; border-color: rgba(248,113,113,.5); background: rgba(248,113,113,.07); }

.tp-hold-preview {
  display: flex;
  align-items: center;
}

.tp-hold-time {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-tertiary);
  background: var(--surface-tertiary);
  padding: 1px 7px;
  border-radius: 6px;
}

.tp-card-toggle {
  flex-shrink: 0;
  background: none;
  border: none;
  color: var(--text-tertiary);
  font-size: 11px;
  cursor: pointer;
  padding: 4px 2px;
  margin-top: 2px;
  line-height: 1;
}
.tp-card-toggle:hover { color: var(--text-secondary); }

/* Expanded detail panel */
.tp-detail {
  border-top: 1px solid var(--border);
  padding: 12px 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.tp-detail-labels {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.tp-detail-row {
  font-size: 12px;
}

.tp-detail-section {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.tp-detail-heading {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-tertiary);
}

.tp-hold-text {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.5;
}

.tp-risk-list {
  margin: 0;
  padding-left: 16px;
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.6;
}
