/* ============================================================
   app.css — Retirement Simulator Dashboard
   Design direction: dark, professional financial terminal
   Palette: deep navy base, electric blue accent, amber/green KPIs
   Font: Outfit (UI) + JetBrains Mono (numbers)
   ============================================================ */

/* ── CSS Variables ─────────────────────────────────────────── */
:root {
    color-scheme: dark;       /* tell browser to use dark-mode form controls */
    /* Base surfaces */
    --bg-base: #0B1C30;
    --bg-surface: #0F2540;
    --bg-card: #112B47;
    --bg-input: #0D2038;
    --bg-hover: #163352;
    --bg-active: #1A3D60;
    /* Borders */
    --border: rgba(30, 144, 255, 0.14);
    --border-strong: rgba(30, 144, 255, 0.28);
    /* Text */
    --text-primary: white; /*#F4F9FF;*/
    --text-secondary: white; /*#A8C8E8;*/
    --text-muted: #7A9EC0;
    --text-accent: #1E90FF;
    /* Accent colours */
    --blue: #1E90FF;
    --blue-dim: rgba(30, 144, 255, 0.18);
    --green: #2ECC71;
    --amber: #F39C12;
    --red: #E74C3C;
    --red-dim: rgba(231, 76, 60, 0.18);
    /* Category colours for scenario deltas */
    --cat-tax: #3498DB;
    --cat-income: #2ECC71;
    --cat-portfolio: #9B59B6;
    --cat-risk: #E67E22;
    /* Typography */
    --font-ui: 'Outfit', system-ui, sans-serif;
    --font-mono: 'JetBrains Mono', 'Courier New', monospace;
    /* Layout */
    --header-h: 56px;
    --input-panel-w: 340px;
    --radius: 10px;
    --radius-sm: 6px;
    --radius-lg: 14px;
    /* Transitions */
    --tr: 150ms ease;
}

/* ── Reset & base ──────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  height: 100%;
  font-family: var(--font-ui);
  background: var(--bg-base);
  color: var(--text-primary);
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

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

/* ── iOS safe area spacer (sits above dashboard-shell in index.html) ── */
.status-bar-safe-area {
  background: var(--bg-surface);
  height: env(safe-area-inset-top, 0px);
  flex-shrink: 0;
}

/* ── Shell layout ──────────────────────────────────────────── */
.dashboard-shell {
  display: flex;
  flex-direction: column;
  /* Subtract top safe area already consumed by .status-bar-safe-area */
  height: calc(100vh - env(safe-area-inset-top, 0px));
  overflow: hidden;
  /* Home-indicator clearance on iOS */
  padding-bottom: env(safe-area-inset-bottom, 0px);
}

.dash-main {
  flex: 1;
  min-height: 0;    /* prevents flex item from overflowing when content is large */
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* ── Header ────────────────────────────────────────────────── */
.dash-header {
  position: relative;          /* required: makes z-index effective AND anchors absolute children */
  height: var(--header-h);
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  padding: 0 20px;
  gap: 20px;
  flex-shrink: 0;
  z-index: 200;                /* raised above dash-main so dropdown sits on top */
  overflow: visible;           /* let dropdowns extend below the header bar */
}

a.dash-header__brand, .dash-header__brand {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  color: inherit;
  cursor: pointer;
}

.dash-header__icon {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  display: block;           /* remove baseline gap from <img> */
}

.dash-header__brand-text {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.dash-header__title {
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: var(--text-primary);
  line-height: 1.15;
}

.beta-badge {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 2px 6px;
  border-radius: 4px;
  background: rgba(245,158,11,0.2);
  color: #f59e0b;
  line-height: 1;
  flex-shrink: 0;
}

.dash-header__brand-label {
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: var(--text-primary);
  margin-right: 4px;
}

.dash-header__tagline {
  font-size: 9px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-muted);
  line-height: 1;
}

.dash-header__status {
  margin-left: auto;
}

/* ── Header: profile selector ───────────────────────────────── */
.dash-header__profile {
  position: relative;
  display: flex;
  align-items: center;
}

.header-profile-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text-primary);
  font-size: 13px;
  cursor: pointer;
  transition: background 0.15s;
  white-space: nowrap;
}
.header-profile-btn:hover { background: var(--blue-dim); }
.header-profile-btn__icon { font-size: 14px; }
.header-profile-btn__name {
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.header-profile-btn__caret { font-size: 10px; color: var(--text-muted); }

.header-profile-dropdown {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  min-width: 180px;
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  box-shadow: 0 8px 24px rgba(0,0,0,0.4);
  z-index: 9999;
  overflow: hidden;
}
.header-profile-dropdown__empty {
  padding: 10px 14px;
  font-size: 12px;
  color: var(--text-muted);
}
.header-profile-dropdown__item {
  display: block;
  width: 100%;
  padding: 9px 14px;
  text-align: left;
  background: transparent;
  border: none;
  color: var(--text-primary);
  font-size: 13px;
  cursor: pointer;
  transition: background 0.12s;
}
.header-profile-dropdown__item:hover { background: var(--blue-dim); }
.header-profile-dropdown__item--active {
  background: var(--blue-dim);
  color: var(--blue);
  font-weight: 600;
}
.header-profile-dropdown__row {
  display: flex;
  align-items: center;
}
.header-profile-dropdown__row .header-profile-dropdown__item {
  flex: 1;
}
.header-profile-dropdown__delete,
.header-profile-dropdown__delete-confirm,
.header-profile-dropdown__delete-cancel {
  flex-shrink: 0;
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 6px 8px;
  font-size: 13px;
  color: var(--text-muted);
  opacity: 0;
  transition: opacity 0.15s, color 0.12s;
}
.header-profile-dropdown__row:hover .header-profile-dropdown__delete { opacity: 1; }
.header-profile-dropdown__delete:hover { color: var(--danger, #e55); }
.header-profile-dropdown__delete-confirm { opacity: 1; color: var(--green, #3a3); }
.header-profile-dropdown__delete-confirm:hover { color: var(--green, #3a3); }
.header-profile-dropdown__delete-cancel { opacity: 1; color: var(--text-muted); }
.header-profile-dropdown__delete-cancel:hover { color: var(--danger, #e55); }
.header-profile-dropdown__add {
  display: block;
  width: 100%;
  padding: 8px 14px;
  text-align: left;
  background: transparent;
  border: none;
  border-top: 1px solid var(--border);
  color: var(--text-muted);
  font-size: 12px;
  cursor: pointer;
  transition: color 0.12s, background 0.12s;
}
.header-profile-dropdown__add:hover { color: var(--blue); background: var(--blue-dim); }

/* Security section inside the profile dropdown */
.header-profile-dropdown__divider {
  height: 1px;
  background: var(--border, #333);
  margin: 4px 0;
}
.header-profile-dropdown__security {
  padding: 8px 10px 6px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.header-profile-dropdown__security-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.header-profile-dropdown__security-label {
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
}
.header-profile-dropdown__security-select {
  font-size: 11px;
  background: var(--bg-hover);
  color: var(--text-primary);
  border: 1px solid var(--border, #333);
  border-radius: 4px;
  padding: 2px 4px;
  cursor: pointer;
}
.header-profile-dropdown__signout {
  width: 100%;
  text-align: left;
  font-size: 12px;
  color: var(--text-muted);
  background: none;
  border: none;
  padding: 4px 2px;
  cursor: pointer;
  border-radius: 4px;
  transition: color 0.12s, background 0.12s;
}
.header-profile-dropdown__signout:hover {
  color: var(--danger, #e55);
  background: var(--bg-hover);
}

/* Lock screen — sign out link */
.lock-screen__signout-link {
  background: none;
  border: none;
  font-size: 12px;
  color: var(--text-muted);
  cursor: pointer;
  text-decoration: underline;
  padding: 4px 8px;
}
.lock-screen__signout-link:hover { color: var(--danger, #e55); }

/* Inline profile-create form inside the dropdown */
.header-profile-create {
  padding: 8px 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  border-top: 1px solid var(--border);
}
.header-profile-create__input {
  width: 100%;
  padding: 6px 8px;
  background: var(--bg-input);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-size: 13px;
  font-family: var(--font-ui);
}
.header-profile-create__input:focus { outline: none; border-color: var(--blue); }
.header-profile-create__btn {
  padding: 5px 10px;
  background: var(--blue);
  border: none;
  border-radius: var(--radius-sm);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  align-self: flex-end;
}
.header-profile-create__btn:disabled { opacity: 0.5; cursor: not-allowed; }
.header-profile-create__error {
  font-size: 11px;
  color: var(--red);
}

/* ── Header: open-DB button ─────────────────────────────────── */
.header-db-btn {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 5px 9px;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text-muted);
  font-size: 12px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
  white-space: nowrap;
}
.header-db-btn:hover { background: var(--blue-dim); color: var(--text-primary); }

/* ── Dropdown click-outside backdrop ────────────────────────── */
.dropdown-backdrop {
  position: fixed;
  inset: 0;
  z-index: 199;          /* just below the header (200) so dropdowns stay on top */
  background: transparent;
}

/* ── Header: open-DB overlay ────────────────────────────────── */
.db-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
}
.db-modal {
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  padding: 24px 28px;
  width: 520px;
  max-width: 90vw;
  box-shadow: 0 12px 40px rgba(0,0,0,0.5);
}
.db-modal__title {
  font-size: 16px;
  font-weight: 600;
  color: var(--text-primary);
  margin: 0 0 16px;
}
.db-modal__label {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.07em;
  margin-bottom: 5px;
}
.db-modal__path {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--text-primary);
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 8px 10px;
  word-break: break-all;
  margin-bottom: 14px;
  min-height: 36px;
}
.db-modal__path--pending { color: var(--blue); }
.db-modal__actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 4px;
}
.db-modal__note {
  font-size: 11px;
  color: var(--text-muted);
  margin-top: 12px;
  line-height: 1.5;
}

/* ── DB modal tabs ───────────────────────────────────────────── */
.db-modal__tabs {
  display: flex;
  border-bottom: 1px solid var(--border-strong);
  margin: -4px 0 20px;
}
.db-modal__tab {
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  padding: 8px 18px;
  font-size: 13px;
  font-weight: 500;
  color: var(--text-muted);
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s;
  white-space: nowrap;
}
.db-modal__tab:hover {
  color: var(--text-primary);
}
.db-modal__tab--active {
  color: var(--blue);
  border-bottom-color: var(--blue);
}

/* ── DB modal text inputs ────────────────────────────────────── */
.db-modal__input {
  width: 100%;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-size: 13px;
  padding: 8px 10px;
  margin-bottom: 14px;
  box-sizing: border-box;
  transition: border-color 0.15s, background 0.15s;
}
.db-modal__input:focus {
  outline: none;
  border-color: var(--blue);
  background: var(--bg-active);
}
.db-modal__input--disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* ── DB modal error message ─────────────────────────────────── */
.db-modal__error {
  font-size: 12px;
  color: #e05c5c;
  margin-bottom: 12px;
  line-height: 1.4;
}

/* ── DB modal: Known Databases list ─────────────────────────── */
.db-modal__empty {
  font-size: 13px;
  color: var(--text-muted);
  line-height: 1.6;
  padding: 8px 0 16px;
  text-align: center;
}
.db-modal__known-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 16px;
  max-height: 260px;
  overflow-y: auto;
}
.db-modal__known-item {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 10px 14px;
  font-size: 13px;
  color: var(--text-primary);
  cursor: pointer;
  text-align: left;
  transition: background 0.15s, border-color 0.15s;
}
.db-modal__known-item:hover {
  background: var(--bg-active);
  border-color: var(--blue-dim);
}
.db-modal__known-item--active {
  border-color: var(--blue);
  background: var(--bg-active);
}
.db-modal__known-icon { font-size: 16px; flex-shrink: 0; }
.db-modal__known-name { flex: 1; font-weight: 500; }
.db-modal__known-check {
  font-size: 11px;
  color: var(--blue);
  font-weight: 600;
  flex-shrink: 0;
}

/* ── DB modal checkbox row ────────────────────────────────────── */
.db-modal__checkbox-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 10px 0;
  font-size: 13px;
  cursor: pointer;
}
.db-modal__checkbox-row input[type="checkbox"] { margin: 0; }

/* ── Known DB row: item + delete button side-by-side ─────────── */
.db-modal__known-row {
  display: flex;
  align-items: center;
  gap: 6px;
}
.db-modal__known-row .db-modal__known-item { flex: 1; min-width: 0; }
.db-modal__delete-btn {
  background: none;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-size: 18px;
  padding: 4px 8px;
  opacity: 1;
  color: var(--red, #e74c3c);
  transition: background .15s, border-color .15s;
  flex-shrink: 0;
}
.db-modal__delete-btn:hover {
  background: rgba(231, 76, 60, 0.1);
  border-color: var(--red, #e74c3c);
}
.db-modal__delete-confirm {
  background: var(--danger, #d32f2f);
  color: #fff;
  border: none;
  border-radius: var(--radius-sm);
  font-size: 11px;
  font-weight: 600;
  padding: 4px 10px;
  cursor: pointer;
  flex-shrink: 0;
}
.db-modal__delete-cancel {
  background: none;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  font-size: 11px;
  padding: 4px 6px;
  cursor: pointer;
  color: var(--text-muted);
  flex-shrink: 0;
}

.import-help-link {
  display: block;
  margin-top: 6px;
  font-size: 11px;
  color: var(--blue);
  cursor: pointer;
  text-decoration: underline;
}
.import-help-link:hover {
  color: var(--text-accent);
}

/* ── Import modal extras ─────────────────────────────────────── */
.import-format {
  margin: 12px 0 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  background: var(--bg-card);
}
.import-format__title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
  margin-bottom: 8px;
}
.import-format__body {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.55;
  margin-bottom: 10px;
}
.import-format__table {
  width: 100%;
  font-size: 11.5px;
  border-collapse: collapse;
  margin-bottom: 10px;
}
.import-format__table th {
  text-align: left;
  color: var(--text-muted);
  font-weight: 600;
  border-bottom: 1px solid var(--border-strong);
  padding: 3px 6px 5px;
}
.import-format__table td {
  padding: 4px 6px;
  border-bottom: 1px solid var(--border);
  color: var(--text-secondary);
  vertical-align: top;
}
.import-format__table td:first-child {
  font-weight: 600;
  white-space: nowrap;
  color: var(--text-accent);
}
.import-format__req {
  color: var(--amber) !important;
  font-weight: 600 !important;
  white-space: nowrap;
}
.import-format__example-label {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 5px;
}
.import-format__example {
  display: block;
  font-family: var(--font-mono);
  font-size: 10.5px;
  color: var(--text-secondary);
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 8px 10px;
  white-space: pre;
  overflow-x: auto;
  line-height: 1.6;
}

.import-running {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 16px 0;
  color: var(--text-muted);
  font-size: 13px;
}
.import-error {
  background: rgba(239, 68, 68, 0.12);
  color: #f87171;
  border-radius: 6px;
  padding: 10px 14px;
  font-size: 12px;
  margin: 8px 0;
  line-height: 1.5;
}
.import-success {
  background: rgba(34, 197, 94, 0.12);
  color: #4ade80;
  border-radius: 6px;
  padding: 10px 14px;
  font-size: 13px;
  margin: 8px 0;
}
.import-summary {
  margin: 12px 0 8px;
}
.import-summary__title {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 8px;
}
.import-summary__table {
  width: 100%;
  font-size: 13px;
  border-collapse: collapse;
}
.import-summary__table td {
  padding: 4px 0;
  border-bottom: 1px solid var(--border);
}
.import-summary__table td:first-child {
  color: var(--text-muted);
}
.import-summary__val {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}

/* ── Help modal ───────────────────────────────────────────────── */
.help-modal {
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  width: 680px;
  max-width: 92vw;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
  box-shadow: 0 12px 40px rgba(0,0,0,0.5);
}
.help-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 24px 14px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.help-modal__title {
  font-size: 16px;
  font-weight: 600;
  color: var(--text-primary);
  margin: 0;
}
.help-modal__close {
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: 18px;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 4px;
  line-height: 1;
}
.help-modal__close:hover {
  background: var(--blue-dim);
  color: var(--text-primary);
}
.help-modal__back {
  background: none;
  border: 1px solid var(--border);
  color: var(--text-muted);
  font-size: 12px;
  cursor: pointer;
  padding: 3px 8px;
  border-radius: 4px;
  line-height: 1;
  white-space: nowrap;
}
.help-modal__back:hover {
  background: var(--blue-dim);
  color: var(--text-primary);
  border-color: var(--blue);
}
.help-modal__body {
  overflow-y: auto;
  padding: 20px 24px 24px;
  color: var(--text-secondary);
  scrollbar-width: thin;
  scrollbar-color: var(--border-strong) transparent;
}
.help-modal__body::-webkit-scrollbar { width: 6px; }
.help-modal__body::-webkit-scrollbar-track { background: transparent; }
.help-modal__body::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 3px; }
.help-modal__search {
  flex: 1;
  min-width: 0;
  max-width: 200px;
  padding: 4px 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg-input, #1a1a2e);
  color: var(--text-primary);
  font-size: 13px;
}
.help-modal__search:focus {
  outline: none;
  border-color: var(--blue);
}
.wizard-guide-link {
  display: block;
  text-align: center;
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 12px;
  text-decoration: none;
}
.wizard-guide-link:hover { color: var(--blue); }
.insight-guide-link {
  font-size: 11px;
  color: var(--text-muted);
  margin-left: 6px;
  text-decoration: none;
  white-space: nowrap;
}
.insight-guide-link:hover { color: var(--blue); text-decoration: underline; }
/* Fix #312: anchor targets scroll below sticky header on mobile */
@media (max-width: 768px) {
  .help-modal__body h1, .help-modal__body h2,
  .help-modal__body h3, .help-modal__body h4 {
    scroll-margin-top: 70px;
  }
}

.help-section {
  margin-bottom: 20px;
}
.help-section:last-child {
  margin-bottom: 0;
}
.help-section__heading {
  font-size: 14px;
  font-weight: 600;
  color: var(--blue);
  margin: 0 0 8px;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--border);
}
.help-subsection {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-primary);
  margin: 14px 0 6px;
}
.help-section p {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.6;
  margin: 0 0 8px;
}
.help-list {
  margin: 0 0 8px;
  padding-left: 18px;
  list-style: disc;
}
.help-list li {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.6;
  margin-bottom: 4px;
}
.help-list li strong {
  color: var(--text-primary);
}
.help-dl {
  margin: 0 0 8px;
}
.help-dl dt {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-primary);
  margin-top: 8px;
}
.help-dl dd {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.6;
  margin: 2px 0 0 16px;
}
.help-table {
  width: 100%;
  border-collapse: collapse;
}
.help-table td {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.6;
  padding: 6px 8px;
  vertical-align: top;
  border-bottom: 1px solid var(--border);
}
.help-table__icon {
  width: 40px;
  text-align: center;
  font-size: 14px;
}
.help-table th {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 4px 8px 6px;
  text-align: left;
  border-bottom: 2px solid var(--border-strong);
}
.help-table td strong {
  color: var(--text-primary);
}
.help-table td code {
  font-family: var(--font-mono);
  font-size: 11px;
  background: var(--bg-input);
  padding: 1px 4px;
  border-radius: 3px;
}
.help-pre {
  display: block;
  font-family: var(--font-mono);
  font-size: 10.5px;
  color: var(--text-secondary);
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 8px 10px;
  margin: 4px 0 8px;
  white-space: pre;
  overflow-x: auto;
  line-height: 1.5;
}

/* ── Cash Flow Detail Modal ──────────────────────────────── */
.cf-modal {
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  width: 780px;
  max-width: 92vw;
  max-height: 80vh;
  display: flex;
  flex-direction: column;
  box-shadow: 0 12px 40px rgba(0,0,0,0.5);
}
.cf-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 24px 14px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.cf-modal__title {
  font-size: 16px;
  font-weight: 600;
  color: var(--text-primary);
  margin: 0;
}
.cf-modal__subtitle {
  font-size: 12px;
  color: var(--text-muted);
  font-weight: 400;
}
.cf-modal__title-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
.cf-nav-arrow {
  background: none;
  border: none;
  font-size: 22px;
  line-height: 1;
  color: var(--text-secondary);
  cursor: pointer;
  padding: 4px 8px;
  border-radius: var(--radius-sm);
  transition: background 0.15s, color 0.15s;
}
.cf-nav-arrow:hover:not(:disabled) {
  background: var(--bg-input);
  color: var(--text-primary);
}
.cf-nav-arrow--disabled, .cf-nav-arrow:disabled {
  opacity: 0.25;
  cursor: default;
}
.cf-sim-strip {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 24px;
  background: var(--bg-input);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
  font-size: 12px;
  color: var(--text-secondary);
}
.cf-sim-arrow {
  background: none;
  border: none;
  font-size: 16px;
  line-height: 1;
  color: var(--text-secondary);
  cursor: pointer;
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  transition: background 0.15s, color 0.15s;
}
.cf-sim-arrow:hover:not(:disabled) {
  background: var(--bg-card);
  color: var(--text-primary);
}
.cf-sim-arrow--disabled, .cf-sim-arrow:disabled {
  opacity: 0.25;
  cursor: default;
}
.cf-sim-label {
  font-family: var(--font-mono);
}
.cf-sim-badge {
  font-size: 11px;
  padding: 1px 8px;
  border-radius: 10px;
  font-weight: 500;
}
.cf-sim-badge--ok {
  background: rgba(34, 197, 94, 0.15);
  color: #22c55e;
}
.cf-sim-badge--depleted {
  background: rgba(239, 68, 68, 0.15);
  color: #ef4444;
}
.cf-rates {
  display: flex;
  gap: 10px;
  padding: 10px 24px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
  flex-wrap: wrap;
}
.cf-rate-badge {
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 3px 10px;
  font-size: 12px;
  font-family: var(--font-mono);
  color: var(--text-secondary);
}
.cf-modal__body {
  overflow-y: auto;
  padding: 20px 24px 24px;
  scrollbar-width: thin;
  scrollbar-color: var(--border-strong) transparent;
}
.cf-modal__body::-webkit-scrollbar { width: 6px; }
.cf-modal__body::-webkit-scrollbar-track { background: transparent; }
.cf-modal__body::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 3px; }

.cf-summary-bar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 16px;
  margin-bottom: 20px;
  background: var(--bg-input);
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  flex-wrap: wrap;
}
.cf-summary-item { text-align: center; }
.cf-summary-label {
  font-size: 11px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  display: block;
}
.cf-summary-value {
  font-size: 18px;
  font-family: var(--font-mono);
  font-weight: 600;
  color: var(--text-primary);
}
.cf-summary-value--pos { color: var(--green); }
.cf-summary-value--neg { color: var(--red); }
.cf-summary-arrow { color: var(--text-muted); font-size: 18px; }

.cf-columns {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-bottom: 20px;
}
.cf-section-title {
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin: 0 0 12px;
  padding-bottom: 6px;
  border-bottom: 2px solid var(--border);
  color: var(--text-primary);
}
.cf-section-title--in { color: var(--green); border-color: var(--green); }
.cf-section-title--out { color: var(--red); border-color: var(--red); }

/* Collapsible modal sections */
details.cf-section { margin-bottom: 20px; }
details.cf-section > summary.cf-section-title {
    cursor: pointer;
    user-select: none;
    list-style: none;
}
details.cf-section > summary.cf-section-title::marker,
details.cf-section > summary.cf-section-title::-webkit-details-marker { display: none; }
details.cf-section > summary.cf-section-title::before {
    content: '\25B8 ';
    font-size: 12px;
    margin-right: 4px;
}
details.cf-section[open] > summary.cf-section-title::before {
    content: '\25BE ';
}

.cf-subsection { margin-bottom: 14px; }
.cf-subsection-title {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 4px;
}
.cf-line {
  display: flex;
  justify-content: space-between;
  padding: 3px 0;
  font-size: 13px;
  color: var(--text-secondary);
}
.cf-line span:last-child { font-family: var(--font-mono); }
.cf-subtotal-row {
  display: flex;
  justify-content: space-between;
  padding: 5px 0 2px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-primary);
  border-top: 1px solid var(--border);
  margin-top: 4px;
}
.cf-subtotal-row span:last-child { font-family: var(--font-mono); }

.cf-print-btn {
  background: none;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 4px 8px;
  font-size: 20px;
  cursor: pointer;
  line-height: 1;
  opacity: 0.75;
  color: var(--text-primary);
}
.cf-print-btn:hover { background: var(--bg-input); opacity: 1; }

.cf-guidance {
  background: var(--surface-alt, rgba(59,130,246,0.06));
  border-radius: 6px;
  padding: 10px 12px;
  margin-top: 8px;
}
.cf-guidance-line {
  font-size: 12px;
  line-height: 1.5;
  color: var(--text-secondary);
  margin-bottom: 4px;
}

.cf-net-position {
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 14px 18px;
  margin-bottom: 20px;
}
.cf-net-line {
  display: flex;
  justify-content: space-between;
  padding: 3px 0;
  font-size: 14px;
  color: var(--text-secondary);
}
.cf-net-line span:last-child { font-family: var(--font-mono); }
.cf-net-total {
  display: flex;
  justify-content: space-between;
  padding: 6px 0 0;
  font-size: 15px;
  font-weight: 700;
  border-top: 2px solid var(--border-strong);
  margin-top: 6px;
  color: var(--text-primary);
}
.cf-net-total span:last-child { font-family: var(--font-mono); }
.cf-net-total--surplus span:last-child { color: var(--green); }
.cf-net-total--gap span:last-child { color: var(--red); }

/* ── Snapshot summary card (top of Cash Flow modal) ── */
.cf-snapshot {
  display: flex; flex-direction: column; gap: 2px;
  padding: 10px 18px; margin: 0 0 8px;
  background: var(--bg-input); border: 1px solid var(--border);
  border-radius: var(--radius-sm); font-size: 13px;
}
.cf-snapshot-line {
  display: flex; justify-content: space-between;
  color: var(--text-secondary);
}
.cf-snapshot-line span:last-child { font-family: var(--font-mono); }
.cf-snapshot-net { font-weight: 700; }
.cf-snapshot-net--surplus span:last-child { color: var(--green); }
.cf-snapshot-net--gap span:last-child { color: var(--red); }

/* ── Waterfall mini-chart ── */
.cf-waterfall-wrap { text-align: center; margin-bottom: 12px; }
.cf-waterfall-svg { width: 100%; max-width: 400px; height: auto; }

/* ── Inflation annotation ── */
.cf-inflation-note {
  font-size: 11px; color: var(--text-muted);
  font-style: italic; padding: 4px 0 8px;
}

/* ── Effective tax rate ── */
.cf-effective-rate {
  color: var(--text-muted); font-style: italic;
  font-size: 12px; margin-top: 2px;
}

.cf-section { margin-bottom: 20px; }
.cf-note-section {
  background: var(--bg-input);
  border-radius: var(--radius-sm);
  padding: 14px 18px;
  border: 1px solid var(--border);
}
.cf-note-line {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.6;
  margin-bottom: 2px;
}

/* ── Cash Flow: Additional utility classes ──────────────── */
.cf-net-subtotal {
  font-weight: 600;
  border-top: 1px solid var(--border);
  margin-top: 2px;
  padding-top: 4px;
}
.cf-subsection-desc {
  font-size: 11px;
  color: var(--text-muted);
  margin-bottom: 4px;
}
.cf-note-intro {
  font-size: 11px;
  color: #888;
  margin-bottom: 6px;
  font-style: italic;
}
.cf-line-indent {
  padding-left: 16px;
  font-size: 11px;
}
.cf-line-3col {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 12px;
  padding: 3px 0;
  font-size: 13px;
  color: var(--text-secondary);
}
.cf-line-3col span:nth-child(2),
.cf-line-3col span:nth-child(3) { font-family: var(--font-mono); text-align: right; min-width: 70px; }
.cf-line-3col.cf-subtotal-row span:nth-child(2) { border-top: none; }
.cf-section-total {
  display: flex;
  justify-content: space-between;
  padding: 8px 0 2px;
  font-size: 14px;
  font-weight: 700;
  color: var(--text-primary);
  border-top: 2px solid var(--border-strong);
  margin-top: 8px;
}
.cf-section-total span:last-child { font-family: var(--font-mono); }
.cf-match-indicator {
  display: inline-block;
  color: var(--green);
  font-size: 13px;
  font-weight: 700;
  margin-left: 4px;
  vertical-align: middle;
}
.cf-rate-sub {
  font-size: 9px;
  opacity: 0.7;
}
.cf-acct-note {
  font-size: 11px;
  color: var(--text-muted);
  padding: 6px 0 0;
  font-style: italic;
}
.cf-tax-detail {
  margin: 0 0 2px 0;
}
.cf-tax-detail > summary {
  cursor: pointer;
  list-style: none;
}
.cf-tax-detail > summary::-webkit-details-marker { display: none; }
.cf-tax-detail > summary::marker { display: none; content: ""; }
.cf-tax-detail > summary > span:first-child::before {
  content: "\25B6";
  font-size: 8px;
  margin-right: 4px;
  display: inline-block;
  transition: transform 0.15s;
}
.cf-tax-detail[open] > summary > span:first-child::before {
  transform: rotate(90deg);
}
.cf-tax-basis {
  padding: 1px 0 1px 20px;
  font-size: 11px;
  color: var(--text-muted);
}
.cf-tax-basis-total {
  font-weight: 600;
  border-top: 1px solid var(--border);
  margin-top: 2px;
  padding-top: 3px;
}

/* ── Cash Flow: Account Flows Table ──────────────────────── */
.cf-acct-wrap { overflow-x: auto; margin-bottom: 20px; }
.cf-acct-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.cf-acct-table th {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 4px 8px 6px;
  text-align: right;
  border-bottom: 2px solid var(--border-strong);
  white-space: nowrap;
}
.cf-acct-table td {
  padding: 5px 8px;
  border-bottom: 1px solid var(--border);
  color: var(--text-secondary);
}
.cf-acct-label { text-align: left !important; white-space: nowrap; }
.cf-acct-owner { text-align: center !important; font-size: 11px; color: var(--text-muted) !important; }
.cf-acct-num { text-align: right; font-family: var(--font-mono); white-space: nowrap; }
.cf-acct-num--pos { color: var(--green) !important; }
.cf-acct-num--neg { color: var(--red) !important; }
.cf-acct-total td {
  font-weight: 700;
  color: var(--text-primary) !important;
  border-top: 2px solid var(--border-strong);
  border-bottom: none;
}

/* ── What If mode ──────────────────────────────────────────── */
.cf-whatif-banner {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 16px;
  background: rgba(243, 156, 18, 0.14);
  border-bottom: 1px solid rgba(243, 156, 18, 0.30);
  font-size: 12px;
  color: var(--amber);
}
.cf-whatif-banner__icon {
  font-size: 14px;
}
.cf-whatif-banner__delta { font-size: 11px; font-weight: 600; margin-left: 8px; }
.cf-whatif-banner__delta--pos { color: var(--green); }
.cf-whatif-banner__delta--neg { color: var(--red); }
.cf-rate-badge--clickable {
  cursor: pointer;
  transition: border-color var(--tr), background var(--tr);
}
.cf-rate-badge--clickable:hover {
  border-color: var(--blue);
  background: var(--blue-dim);
}
.cf-rate-badge--modified {
  border-color: var(--amber) !important;
  color: var(--amber) !important;
}
.cf-rate-badge--editing {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--bg-input);
  border: 1px solid var(--blue);
  border-radius: var(--radius-sm);
  padding: 3px 8px;
  font-size: 12px;
  font-family: var(--font-mono);
  color: var(--text-secondary);
}
.cf-whatif-input {
  width: 60px;
  background: var(--bg-base);
  border: 1px solid var(--border-strong);
  border-radius: 3px;
  color: var(--text-primary);
  font-family: var(--font-mono);
  font-size: 12px;
  padding: 2px 4px;
  text-align: right;
}
.cf-whatif-input:focus {
  outline: none;
  border-color: var(--blue);
}
.cf-whatif-input--wide { width: 80px; }
.cf-whatif-row2 { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 4px; align-items: center; }
.cf-whatif-row3 { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 4px; align-items: center; }
.cf-whatif-select {
  background: var(--bg-input, var(--bg-base));
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-size: 12px;
  padding: 2px 4px;
  padding-right: 20px;
  margin-left: 4px;
  appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238AAEC8'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 4px center;
}
.cf-whatif-select:focus { outline: none; border-color: var(--blue); }
.cf-whatif-btn {
  border: none;
  border-radius: var(--radius-sm);
  padding: 3px 10px;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  transition: background var(--tr);
}
.cf-whatif-btn--apply {
  background: var(--blue);
  color: white;
}
.cf-whatif-btn--apply:hover { background: #3AA0FF; }
.cf-whatif-btn--cancel {
  background: var(--bg-hover);
  color: var(--text-secondary);
}
.cf-whatif-btn--cancel:hover { background: var(--bg-active); }
.cf-whatif-btn--reset {
  background: transparent;
  border: 1px solid var(--amber);
  color: var(--amber);
  margin-left: auto;
}
.cf-whatif-btn--reset:hover { background: rgba(243, 156, 18, 0.14); }
.cf-whatif-hint {
  font-size: 11px;
  color: var(--text-dim, #999);
  line-height: 1.3;
  padding: 2px 0 4px;
  width: 100%;
}

.yby-row--selected td { background: var(--blue-dim) !important; }
tr.yby-row { cursor: pointer; }

/* Mobile tabs (hidden on desktop) */
.mobile-tabs { display: none; }

/* ── Status badges ─────────────────────────────────────────── */
.status-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 500;
  padding: 4px 10px;
  border-radius: 20px;
}

.status-badge--running {
  background: var(--blue-dim);
  color: var(--blue);
  border: 1px solid rgba(30,144,255,0.3);
}

.status-badge--ready {
  background: rgba(46,204,113,0.12);
  color: var(--green);
  border: 1px solid rgba(46,204,113,0.25);
}

/* ── Dashboard body (2-column) ─────────────────────────────── */
.dashboard-body {
  display: grid;
  grid-template-columns: var(--input-panel-w) 1fr;
  grid-template-rows: 1fr;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

/* Stress panel spans full width below */
.panel--stress {
  grid-column: 1 / -1;
  border-top: 1px solid var(--border);
  overflow-y: auto;
  max-height: 260px;
}

/* ── Panel shared ──────────────────────────────────────────── */
.panel {
  overflow-y: auto;
  overflow-x: hidden;
  height: 100%;
}

.panel::-webkit-scrollbar { width: 8px; }
.panel::-webkit-scrollbar-track { background: transparent; }
.panel::-webkit-scrollbar-thumb { background: rgba(30,144,255,0.2); border-radius: 4px; }

/* ── Input panel ───────────────────────────────────────────── */
.panel--input {
  background: var(--bg-surface);
  border-right: 1px solid var(--border);
}

.config-panel {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* .config-panel__run-bar removed — run triggered directly from method buttons */

/* Sticky header: run-bar + tab strip stay locked while sections scroll */
.config-panel__sticky {
  position: sticky;
  top: 0;
  z-index: 10;
  background: var(--bg-surface);
  padding: 16px 16px 0;
  margin: -16px -16px 0;
  border-bottom: 1px solid var(--border);
  padding-bottom: 0;
}

.btn-run {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 11px 18px;
  background: var(--blue);
  color: #fff;
  border: none;
  border-radius: var(--radius);
  font-family: var(--font-ui);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: background var(--tr), transform var(--tr);
  letter-spacing: 0.02em;
}

.btn-run:hover:not(:disabled) { background: #1878d8; transform: translateY(-1px); }
.btn-run:active:not(:disabled) { transform: translateY(0); }
.btn-run:disabled { opacity: 0.75; cursor: not-allowed; }

.btn-run--busy { background: #1256A8; }
.btn-run__icon { font-size: 12px; }

.btn-cancel {
  padding: 8px 12px;
  background: var(--red-dim);
  color: var(--red);
  border: 1px solid rgba(231,76,60,0.3);
  border-radius: var(--radius-sm);
  font-size: 12px;
  cursor: pointer;
  transition: background var(--tr);
}
.btn-cancel:hover { background: rgba(231,76,60,0.3); }

/* ── Config sections ────────────────────────────────────────── */
.config-section {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  /* overflow must stay visible so custom dropdowns aren't clipped */
}

.config-section__header {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 11px 14px;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  color: var(--text-primary);
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 500;
  transition: background var(--tr);
}

.config-section__header:hover { background: var(--bg-hover); }

.config-section__icon { font-size: 14px; }
.config-section__title { flex: 1; }
.config-section__chevron { color: var(--text-muted); font-size: 18px; line-height: 1; }

.config-section__body {
  padding: 4px 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  border-top: 1px solid var(--border);
  overflow: hidden;
}

/* ── Config rows ────────────────────────────────────────────── */
.config-row,
.config-field-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.config-label {
  font-size: 12px;
  color: var(--text-secondary);
  flex: 1;
  line-height: 1.3;
}

.config-toggle-row { padding: 2px 0; display: flex; align-items: center; gap: 4px; flex-wrap: nowrap; }

.config-subsection {
  margin: 4px 0 4px 12px;
  padding-left: 10px;
  border-left: 2px solid var(--border);
}
.config-subsection__title {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-secondary);
  margin-bottom: 4px;
}

.config-total {
  font-size: 12px;
  color: var(--text-muted);
  text-align: right;
  padding-top: 2px;
}
.config-total strong { color: var(--blue); font-family: var(--font-mono); }

/* Cash reserve hint in Portfolio section */
.portfolio-cash-hint {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  margin-top: 4px;
  background: rgba(46,204,113,0.06);
  border: 1px solid rgba(46,204,113,0.15);
  border-radius: 6px;
  font-size: 0.78rem;
  color: var(--text-secondary);
  cursor: pointer;
  transition: background 0.15s;
}
.portfolio-cash-hint:hover { background: rgba(46,204,113,0.12); }
.portfolio-cash-hint__icon { font-size: 0.9rem; flex-shrink: 0; }
.portfolio-cash-hint__text { flex: 1; }
.portfolio-cash-hint__text strong { color: #2ECC71; font-family: var(--font-mono); }
.portfolio-cash-hint__link { color: var(--blue); font-size: 0.72rem; flex-shrink: 0; opacity: 0.7; }
.portfolio-cash-hint--readonly { cursor: default; }
.portfolio-cash-hint--readonly:hover { background: rgba(46,204,113,0.06); }

.config-note {
  font-size: 11px;
  color: var(--text-muted);
  line-height: 1.4;
  padding-top: 2px;
}
.config-hint {
  font-size: 11px;
  color: var(--text-muted);
  line-height: 1.4;
}
.config-hint--warn {
  color: #d4a34a;
}

/* ── Input fields ───────────────────────────────────────────── */
.input-field {
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-family: var(--font-mono);
  font-size: 13px;
  padding: 6px 10px;
  width: 120px;
  text-align: right;
  outline: none;
  transition: border-color var(--tr);
  -moz-appearance: textfield;
}

select.input-field {
  width: auto;
  min-width: 140px;
  font-family: var(--font-ui);
  text-align: left;
  appearance: none;
  padding-right: 28px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238AAEC8'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  cursor: pointer;
}

.input-field::-webkit-outer-spin-button,
.input-field::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.input-field:focus {
  border-color: var(--blue);
  background: var(--bg-active);
}

.input-wrapper {
  display: flex;
  align-items: center;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  transition: border-color var(--tr);
}
.input-wrapper:focus-within { border-color: var(--blue); background: var(--bg-active); }
.input-wrapper .input-field {
  border: none;
  background: transparent;
  flex: 1;
}

.input-wrapper--dollar .input-field { width: 140px; }

.input-prefix, .input-suffix {
  padding: 0 8px;
  font-size: 12px;
  color: var(--text-muted);
  font-family: var(--font-mono);
  user-select: none;
}

/* ── Input validation error state ───────────────────────────── */
.input-field.input-error {
  border-color: #e53e3e;
  box-shadow: 0 0 0 1px rgba(229, 62, 62, 0.3);
}
.input-wrapper.input-error {
  border-color: #e53e3e;
  box-shadow: 0 0 0 1px rgba(229, 62, 62, 0.3);
}
.input-error-message {
  color: #fc8181;
  font-size: 11px;
  margin-top: 2px;
  line-height: 1.3;
}

/* ── Toggle switch ──────────────────────────────────────────── */
.toggle {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  user-select: none;
}

.toggle__input { display: none; }

.toggle__track {
  position: relative;
  width: 36px;
  height: 20px;
  background: var(--bg-active);
  border: 1px solid var(--border);
  border-radius: 10px;
  transition: background var(--tr), border-color var(--tr);
  flex-shrink: 0;
}

.toggle__input:checked + .toggle__track {
  background: var(--blue);
  border-color: var(--blue);
}

.toggle__thumb {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 14px;
  height: 14px;
  background: #fff;
  border-radius: 50%;
  transition: transform var(--tr);
  box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

.toggle__input:checked ~ .toggle__track .toggle__thumb {
  transform: translateX(16px);
}

.toggle__label {
  font-size: 12px;
  color: var(--text-secondary);
  flex: 1;
}

/* Disabled toggle (Pro-gated features) */
.toggle--disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

.toggle__pro-badge {
  display: inline-block;
  font-size: 9px; font-weight: 700; font-style: normal;
  letter-spacing: .05em; text-transform: uppercase;
  padding: 1px 5px; border-radius: 3px;
  background: rgba(255,179,0,.15); color: #f0a500;
  margin-left: 6px; vertical-align: middle;
}

/* ── Results panel ──────────────────────────────────────────── */
.panel--results {
  background: var(--bg-base);
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0;
  overflow: hidden;              /* don't scroll the panel — let tab body scroll */
  min-height: 0;
}

/* ── KPI pre-tax / after-tax toggle ────────────────────────── */
.kpi-toggle-row {
  display: flex;
  gap: 12px;
  margin-bottom: 8px;
  flex-wrap: nowrap;
  padding-right: 44px;   /* reserve space for the absolute-positioned PDF button */
}
@media (max-width: 768px) {
  .kpi-toggle-row { padding-right: 0; gap: 6px; }
  .kpi-toggle__btn { padding: 4px 10px; font-size: 10px; }
}

.kpi-toggle {
  display: flex;
  gap: 0;
  width: fit-content;
}

.kpi-toggle__btn {
  padding: 4px 14px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  border: 1px solid var(--border);
  background: var(--bg-card);
  color: var(--text-muted);
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.kpi-toggle__btn:first-child { border-radius: var(--radius) 0 0 var(--radius); }
.kpi-toggle__btn:last-child  { border-radius: 0 var(--radius) var(--radius) 0; border-left: none; }

.kpi-toggle__btn--active {
  background: var(--blue);
  color: #fff;
  border-color: var(--blue);
}

.kpi-toggle__btn:not(.kpi-toggle__btn--active):hover {
  background: rgba(30,144,255,0.10);
  color: var(--text-primary);
}

.spinner--small {
  width: 12px;
  height: 12px;
  border-width: 1.5px;
}

/* ── KPI row ────────────────────────────────────────────────── */
.kpi-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(155px, 1fr));
  gap: 12px;
}

.kpi {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.kpi--primary {
  border-color: var(--border-strong);
  background: linear-gradient(135deg, var(--bg-card) 0%, rgba(30,144,255,0.06) 100%);
}
.kpi--clickable {
  cursor: pointer;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.kpi--clickable:hover {
  border-color: var(--blue);
  box-shadow: 0 0 0 1px var(--blue);
}

.kpi--floor {
  border-color: var(--border-strong);
  background: linear-gradient(135deg, var(--bg-card) 0%, rgba(30,144,255,0.06) 100%);
}

.kpi--legacy {
  border-color: var(--border-strong);
  background: linear-gradient(135deg, var(--bg-card) 0%, rgba(46,204,113,0.06) 100%);
}

/* When goal cards are present, allow up to 5 or 6 equal columns on wide screens. */
.kpi-row--five {
  grid-template-columns: repeat(5, 1fr);
}
.kpi-row--six {
  grid-template-columns: repeat(3, 1fr);
}

@media (max-width: 1100px) {
  .kpi-row--five,
  .kpi-row--six { grid-template-columns: repeat(auto-fit, minmax(155px, 1fr)); }
}

.kpi__value {
  font-family: var(--font-mono);
  font-size: 22px;
  font-weight: 500;
  color: var(--text-primary);
  line-height: 1.1;
}

.kpi__value--muted  { color: var(--text-secondary); }
.kpi__value--bright { color: var(--green); }

.kpi__label {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.07em;
}

.kpi__sub {
  font-size: 10px;
  color: var(--text-muted);
}

/* ── Guide link — small contextual link to Will Your Money Last guide ─── */
.kpi__guide-link {
  display: inline-block;
  margin-left: 4px;
  font-size: 10px;
  font-weight: 700;
  color: var(--accent, #1a73e8);
  text-decoration: none;
  background: transparent;
  border: 1px solid currentColor;
  border-radius: 50%;
  width: 14px;
  height: 14px;
  line-height: 12px;
  text-align: center;
  vertical-align: middle;
  opacity: 0.6;
  transition: opacity 0.15s;
}
.kpi__guide-link:hover { opacity: 1; text-decoration: none; }

/* ── Config section guide row — contextual guide link in section header ─ */
.config-section-guide-row {
  padding: 4px 0 6px;
  font-size: 11px;
}
.config-section-guide-row .kpi__guide-link {
  font-size: 11px;
  width: auto;
  height: auto;
  border-radius: 3px;
  padding: 1px 5px;
  line-height: 1.4;
  border: none;
  text-decoration: underline;
  opacity: 0.7;
}
.config-section-guide-row .kpi__guide-link:hover { opacity: 1; }

/* ── Success gauge ──────────────────────────────────────────── */
.gauge-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  margin: 0 auto;
  width: 180px;
}

.gauge { width: 100%; }

.gauge__pct {
  font-family: var(--font-mono);
  font-size: 24px;
  font-weight: 500;
}

.gauge__unit {
  font-family: var(--font-mono);
  font-size: 13px;
}

.gauge__labels {
  width: 100%;
  display: flex;
  justify-content: space-between;
  font-size: 10px;
  color: var(--text-muted);
}

/* ── Chart cards ────────────────────────────────────────────── */
.chart-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  flex: 1;               /* fill the overview-chart-slot */
}

.chart-card__header {
  padding: 14px 20px 10px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}

.chart-card__title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary);
  margin: 0;
}

.chart-card__subtitle {
  font-size: 11px;
  color: var(--text-muted);
}

.fan-chart-canvas {
  width: 100%;
  height: 320px;
}
@media (max-width: 600px) {
  .fan-chart-canvas {
    height: 200px;
  }
}

.chart-container {
  height: 300px;
  padding: 16px 16px 8px;
  flex: 1;               /* grow inside chart-card when card is in a flex slot */
  min-height: 220px;
}

.chart-container--sm {
  height: 200px;
}

.chart-placeholder {
  height: 300px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
}

.chart-placeholder--sm { height: 200px; }

/* ── Scenario delta panel ───────────────────────────────────── */
.delta-list {
  padding: 8px 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.delta-item {
  border-radius: var(--radius-sm);
  padding: 10px 12px 8px;
  background: var(--bg-input);
  border: 1px solid var(--border);
  position: relative;
  overflow: hidden;
}

.delta-item__left {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-bottom: 6px;
}

.delta-item__right {
  display: flex;
  gap: 12px;
  align-items: center;
}

.delta-item__cat {
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  opacity: 0.7;
}

.delta-item__label {
  font-size: 12px;
  color: var(--text-secondary);
}

.delta-item__wealth {
  font-family: var(--font-mono);
  font-size: 15px;
  font-weight: 500;
}

.delta-item__rate {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-muted);
}

.delta-item__wealth.pos, .delta-item__rate.pos { color: var(--green); }
.delta-item__wealth.neg, .delta-item__rate.neg { color: var(--red); }

/* Category accent colours */
.delta-item--tax     { border-left: 3px solid var(--cat-tax); }
.delta-item--income  { border-left: 3px solid var(--cat-income); }
.delta-item--portfolio { border-left: 3px solid var(--cat-portfolio); }
.delta-item--risk    { border-left: 3px solid var(--cat-risk); }

/* Horizontal bar */
.delta-item__bar {
  height: 3px;
  background: var(--border);
  border-radius: 2px;
  margin-top: 8px;
  overflow: hidden;
}

.delta-item__bar-fill {
  height: 100%;
  border-radius: 2px;
  transition: width 0.6s ease;
}
.delta-item__bar-fill.pos { background: var(--green); }
.delta-item__bar-fill.neg { background: var(--red); }

.delta-legend {
  display: flex;
  gap: 16px;
  padding: 8px 16px 14px;
  font-size: 10px;
  color: var(--text-muted);
  align-items: center;
}

.delta-legend__item { display: flex; align-items: center; gap: 6px; }

.dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}
.dot--pos { background: var(--green); }
.dot--neg { background: var(--red); }

/* ── Stress panel ───────────────────────────────────────────── */
.stress-panel {
  padding: 4px 10px;
}

.stress-panel__header {
  margin-bottom: 3px;
}

.stress-panel__header h3 {
  font-size: 14px;
  font-weight: 600;
  margin-bottom: 1px;
}

.stress-cards {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.stress-card {
  flex: 1;
  min-width: 220px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 6px 10px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  text-align: center;
}

.stress-card--survived { border-color: rgba(46,204,113,0.3); }
.stress-card--failed   { border-color: rgba(231,76,60,0.3); }

.stress-card__year {
  font-family: var(--font-mono);
  font-size: 28px;
  font-weight: 700;
  color: var(--text-muted);
  letter-spacing: -0.02em;
}

.stress-card__icon {
  font-size: 28px;
  line-height: 1;
}

.stress-card--survived .stress-card__icon { color: var(--green); }
.stress-card--failed   .stress-card__icon { color: var(--red); }

.stress-card__status {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.stress-card--survived .stress-card__status { color: var(--green); }
.stress-card--failed   .stress-card__status { color: var(--red); }

.stress-card__wealth {
  font-family: var(--font-mono);
  font-size: 20px;
  font-weight: 500;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.stress-card__wealth-label {
  font-family: var(--font-ui);
  font-size: 10px;
  color: var(--text-muted);
}

.stress-card__depleted {
  font-size: 14px;
  color: var(--red);
}

.stress-card__note {
  font-size: 11px;
  color: var(--text-muted);
  margin-top: 4px;
  line-height: 1.4;
}

/* ── Empty state ────────────────────────────────────────────── */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100%;
  text-align: center;
  padding: 40px;
  gap: 14px;
}

.empty-state__brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 4px;
  width: 100%;
  max-width: 360px;
}

.empty-state__brand-name {
  font-size: 26px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--text-accent);
}

.empty-state__brand-tagline {
  font-size: 13px;
  color: var(--text-secondary);
  font-weight: 500;
}

.empty-state__brand-sub {
  font-size: 12px;
  color: var(--text-muted);
  font-style: italic;
}

.empty-state__icon {
  width: 80px;
  height: 80px;
  opacity: 0.85;
}

.empty-state__title {
  font-size: 20px;
  font-weight: 600;
  color: var(--text-secondary);
}

.empty-state__body {
  font-size: 13px;
  color: var(--text-muted);
  max-width: 360px;
  line-height: 1.6;
}
.empty-state__mobile-only  { display: none; }
.empty-state__desktop-only { display: inline; }
@media (max-width: 768px) {
  .empty-state__mobile-only  { display: inline; }
  .empty-state__desktop-only { display: none; }
}

/* Compact empty-state on small iOS screens so the SuccessRate brand is visible */
@media (max-width: 768px) {
  .empty-state {
    padding: 16px;
    gap: 8px;
    justify-content: flex-start;
    padding-top: max(16px, calc(env(safe-area-inset-top, 0px) + 8px));
  }
  .empty-state__brand { padding-bottom: 10px; margin-bottom: 0; }
  .empty-state__icon  { width: 48px; height: 48px; }
  .empty-state__title { font-size: 16px; margin: 0; }
}

.empty-state__actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-top: 16px;
}

.empty-state__divider-text {
  font-size: 12px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.empty-state__action-row {
  display: flex;
  gap: 10px;
  justify-content: center;
}

.empty-state__action-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 24px;
  font-size: 14px;
  font-weight: 600;
  color: var(--text-secondary);
  background: var(--bg-active);
  border: 1px solid var(--border);
  border-radius: 6px;
  cursor: pointer;
  transition: background 0.15s, transform 0.1s;
}

.empty-state__action-btn--primary {
  color: #fff;
  background: var(--blue, #1e90ff);
  border-color: var(--blue, #1e90ff);
}

.empty-state__action-btn:hover:not(:disabled) {
  transform: translateY(-1px);
  filter: brightness(1.1);
}

.empty-state__action-btn--primary:hover:not(:disabled) {
  background: color-mix(in srgb, var(--blue, #1e90ff) 85%, #000);
}

.empty-state__action-btn:disabled {
  opacity: 0.7;
  cursor: wait;
}

.empty-state__sample-hint {
  font-size: 11px;
  color: var(--text-muted);
  text-align: center;
  max-width: 320px;
}
.empty-state__guide {
  margin-top: 16px;
  text-align: center;
}
.empty-state__guide-link {
  color: var(--accent);
  text-decoration: none;
  font-size: 13px;
  font-weight: 500;
}
.empty-state__guide-link:hover { text-decoration: underline; }

.empty-state__hints {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 10px;
  max-width: 320px;
  width: 100%;
}

.hint {
  display: flex;
  align-items: center;
  gap: 12px;
  background: transparent;
  border: none;
  padding: 6px 0;
  text-align: left;
  font-size: 12px;
  color: var(--text-secondary);
}

.hint__icon { font-size: 16px; flex-shrink: 0; }

/* ── Spinner ────────────────────────────────────────────────── */
.spinner {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(255,255,255,0.2);
  border-top-color: currentColor;
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
}

.spinner--large {
  width: 32px;
  height: 32px;
  border-width: 3px;
  color: var(--blue);
}

@keyframes spin { to { transform: rotate(360deg); } }

/* ── Alert ──────────────────────────────────────────────────── */
.alert-error {
  background: var(--red-dim);
  border: 1px solid rgba(231,76,60,0.35);
  border-radius: var(--radius);
  padding: 12px 16px;
  font-size: 13px;
  color: #F1948A;
}

/* ── Blazor loading splash ──────────────────────────────────── */
.blazor-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100vh;
  gap: 14px;
  background: var(--bg-base);
  color: var(--text-muted);
}

.blazor-loading__mark {
  font-size: 48px;
  color: rgba(30,144,255,0.4);
  animation: pulse 2s ease-in-out infinite;
}

@keyframes pulse {
  0%, 100% { opacity: 0.4; }
  50%       { opacity: 0.9; }
}

/* ── Blazor error UI ────────────────────────────────────────── */
/* Blazor WebView controls visibility of this div directly.
   Do not override display or add flex rules here. */
#blazor-error-ui {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: #8B0000;
  color: white;
  padding: 12px 20px;
  font-size: 13px;
  z-index: 9999;
}



/* ── Custom upward-opening select ───────────────────────────── */
.custom-select {
  position: relative;
  flex: 1;
  min-width: 0;
}

.custom-select__trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  background: var(--bg-input);
  color: var(--text-primary);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 6px 10px;
  font-size: 13px;
  font-family: var(--font-ui);
  cursor: pointer;
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
}

.custom-select__trigger span:first-child {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.custom-select__trigger:focus {
  border-color: var(--blue);
  outline: none;
}

.custom-select__arrow {
  font-size: 9px;
  opacity: 0.5;
  transition: transform 0.15s;
}

.custom-select--open .custom-select__arrow {
  transform: rotate(180deg);
}

.custom-select__backdrop {
  position: fixed;
  inset: 0;
  z-index: 999;
}

.custom-select__list {
  position: absolute;
  left: 0;
  right: 0;
  z-index: 1000;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: 6px;
  list-style: none;
  margin: 0;
  padding: 4px 0;
  box-shadow: 0 4px 16px rgba(0,0,0,0.4);
  max-height: 260px;
  overflow-y: auto;
}

/* Fixed-position list — escapes all overflow:hidden parents */
.custom-select__fixed {
  position: fixed !important;
  /* transform moves it up by its own height so it opens above the trigger */
  transform: translateY(-100%);
}

.custom-select__item {
  padding: 8px 12px;
  font-size: 13px;
  color: var(--text-primary);
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}

.custom-select__item:hover {
  background: var(--bg-hover);
}

.custom-select__item--active {
  color: var(--blue);
  background: var(--blue-dim);
}


/* ══════════════════════════════════════════════════════════════════════════════
   PRESCRIPTIVE PANEL — Current-Year Action Plan
   ══════════════════════════════════════════════════════════════════════════════ */

.presc-panel {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px;
  height: 100%;
  overflow-y: auto;
}

/* ── Toolbar ──────────────────────────────────────────────────────────────── */

.presc-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.presc-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 18px;
  background: var(--blue);
  color: #fff;
  border: none;
  border-radius: 6px;
  font-size: 13px;
  font-family: var(--font-ui);
  font-weight: 600;
  cursor: pointer;
  transition: opacity .15s;
  white-space: nowrap;
}
.presc-btn:hover   { opacity: .88; }
.presc-btn:disabled { opacity: .5; cursor: default; }
.presc-btn--loading { opacity: .7; }

.presc-spinner {
  width: 13px; height: 13px;
  border: 2px solid rgba(255,255,255,.3);
  border-top-color: #fff;
  border-radius: 50%;
  animation: presc-spin .7s linear infinite;
  flex-shrink: 0;
}
@keyframes presc-spin { to { transform: rotate(360deg); } }

.presc-options {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  font-size: 12px;
  color: var(--text-muted);
}

.presc-opt {
  display: flex;
  align-items: center;
  gap: 5px;
  cursor: pointer;
  user-select: none;
}
.presc-opt input[type=checkbox] { cursor: pointer; }

.presc-select {
  background: var(--bg-input);
  color: var(--text-primary);
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 3px 7px;
  padding-right: 24px;
  font-size: 12px;
  font-family: var(--font-ui);
  appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238AAEC8'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 6px center;
}

.presc-num {
  width: 48px;
  background: var(--bg-input);
  color: var(--text-primary);
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 2px 6px;
  font-size: 12px;
  text-align: center;
}

/* ── Alerts ───────────────────────────────────────────────────────────────── */

.presc-warning {
  background: rgba(243, 156, 18, .12);
  border: 1px solid rgba(243, 156, 18, .4);
  color: #f39c12;
  border-radius: 6px;
  padding: 8px 12px;
  font-size: 12px;
}

.presc-error {
  background: rgba(231, 76, 60, .12);
  border: 1px solid rgba(231, 76, 60, .4);
  color: #e74c3c;
  border-radius: 6px;
  padding: 8px 12px;
  font-size: 12px;
}

/* ── Empty state ──────────────────────────────────────────────────────────── */

.presc-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 60px 24px;
  text-align: center;
}
.presc-empty__icon  { font-size: 40px; opacity: .5; }
.presc-empty__title { font-size: 16px; font-weight: 600; color: var(--text-primary); }
.presc-empty__sub   { font-size: 13px; color: var(--text-muted); max-width: 420px; line-height: 1.6; }

/* ── Summary KPI bar ──────────────────────────────────────────────────────── */

.presc-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 2px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
}

.presc-kpi {
  flex: 1;
  min-width: 100px;
  padding: 10px 14px;
  border-right: 1px solid var(--border);
}
.presc-kpi:last-child { border-right: none; }

.presc-kpi__label { font-size: 10px; color: var(--text-muted); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 2px; }
.presc-kpi__value { font-size: 16px; font-weight: 700; color: var(--text-primary); }
.presc-kpi__sub   { font-size: 10px; color: var(--text-muted); margin-top: 1px; }

.presc-kpi__value--accent { color: var(--blue); }
.presc-kpi__value--warn   { color: #e74c3c; }
.presc-kpi__value--amber  { color: #f39c12; }
.presc-kpi__value--green  { color: var(--green); }
.presc-kpi__value--sm     { font-size: 12px; font-weight: 500; }

/* ── Meta / badges ────────────────────────────────────────────────────────── */

.presc-meta {
  font-size: 11px;
  color: var(--text-muted);
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.presc-badge {
  padding: 1px 7px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 600;
}
.presc-badge--red  { background: rgba(231,76,60,.15);  color: #e74c3c; }
.presc-badge--blue { background: rgba(52,152,219,.15); color: var(--blue); }
.presc-badge--grey { background: rgba(255,255,255,.07); color: var(--text-muted); }

/* ── Group headers ────────────────────────────────────────────────────────── */

.presc-group {
  font-size: 11px;
  font-weight: 700;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: .07em;
  padding: 4px 0 2px;
  border-bottom: 1px solid var(--border);
  margin-top: 4px;
}

/* ── Action cards ─────────────────────────────────────────────────────────── */

.action-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  border-left: 3px solid transparent;
  transition: border-color .15s;
}

.action-card--required { border-left-color: #e74c3c; }
.action-card--normal   { border-left-color: var(--blue); }
.action-card--optional { border-left-color: var(--border); opacity: .85; }

.action-card__header {
  display: flex;
  align-items: center;
  gap: 8px;
}

.action-card__icon    { font-size: 15px; flex-shrink: 0; }
.action-card__account {
  font-size: 11px;
  font-weight: 600;
  background: var(--bg-hover);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 1px 6px;
  color: var(--text-muted);
}
.action-card__amount {
  margin-left: auto;
  font-size: 15px;
  font-weight: 700;
  color: var(--text-primary);
}
.action-card__tag {
  font-size: 10px;
  background: rgba(255,255,255,.07);
  color: var(--text-muted);
  border-radius: 4px;
  padding: 1px 6px;
}

.action-card__title     { font-size: 13px; font-weight: 600; color: var(--text-primary); }
.action-card__rationale { font-size: 12px; color: var(--text-muted); line-height: 1.5; }
.action-card__tax {
  font-size: 11px;
  color: var(--text-muted);
  background: rgba(255,255,255,.04);
  border-radius: 4px;
  padding: 4px 8px;
  border-left: 2px solid rgba(255,255,255,.1);
}

/* ── Lot detail ───────────────────────────────────────────────────────────── */

.action-card__lots {
  margin-top: 4px;
}
.action-card__lots summary {
  font-size: 11px;
  color: var(--blue);
  cursor: pointer;
  user-select: none;
}

.lots-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 11px;
  margin-top: 6px;
}
.lots-table th {
  text-align: left;
  padding: 3px 8px;
  color: var(--text-muted);
  border-bottom: 1px solid var(--border);
  font-weight: 500;
}
.lots-table td {
  padding: 4px 8px;
  border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,.05));
  color: var(--text-primary);
}
.lots-table tr:last-child td { border-bottom: none; }
.lot-gain { color: var(--green); }
.lot-loss { color: #e74c3c; }


/* ── Market conditions section ────────────────────────────────────────────── */

.presc-market {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
}

.presc-market__toggle {
  cursor: pointer;
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-primary);
  display: flex;
  align-items: center;
  gap: 8px;
  user-select: none;
  list-style: none;
}
.presc-market__toggle::-webkit-details-marker { display: none; }

.presc-market__body {
  padding: 0 14px 14px;
  border-top: 1px solid var(--border);
}

.presc-market__section-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--text-muted);
  margin: 12px 0 6px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.presc-market__row {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.presc-field {
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-size: 11px;
  color: var(--text-muted);
}
.presc-field input { margin-top: 2px; }

.presc-num         { background: var(--bg-input); color: var(--text-primary); border: 1px solid var(--border); border-radius: 5px; padding: 4px 7px; font-size: 12px; font-family: var(--font-mono, monospace); }
.presc-num--sm     { width: 52px; }
.presc-num--md     { width: 80px; }
.presc-num--lg     { width: 120px; }

.presc-hint {
  font-size: 10px;
  color: var(--text-muted);
  font-weight: 400;
  font-style: italic;
}

/* CAPE spread pill */
.presc-cape-pill {
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 700;
  align-self: flex-end;
  margin-bottom: 2px;
}
.presc-cape-pill--very-exp { background: rgba(231,76,60,.2);  color: #e74c3c; }
.presc-cape-pill--exp      { background: rgba(230,126,34,.2); color: #e67e22; }
.presc-cape-pill--neutral  { background: rgba(149,165,166,.15);color: var(--text-muted); }
.presc-cape-pill--cheap    { background: rgba(39,174,96,.2);  color: #27ae60; }

/* YTD grid */
.presc-ytd-grid {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.presc-ytd-row {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
}
.presc-ytd-label { width: 110px; color: var(--text-muted); }
.presc-ytd-wt    { width: 32px; text-align: right; color: var(--text-muted); font-size: 11px; }
.presc-ytd-pct   { color: var(--text-muted); font-size: 11px; }

/* Signal preview (inside market conditions) */
.presc-signal-preview {
  margin-top: 14px;
  border-radius: 7px;
  padding: 10px 12px;
  border: 1px solid var(--border);
}
.presc-signal-preview__label  { font-size: 13px; font-weight: 600; display: block; margin-bottom: 4px; }
.presc-signal-preview__score  { font-size: 11px; color: var(--text-muted); }
.presc-signal-preview__bar    { height: 4px; background: var(--bg-hover); border-radius: 2px; margin: 6px 0; overflow: hidden; }
.presc-signal-preview__fill   { height: 100%; border-radius: 2px; transition: width .3s; }
.presc-signal-preview__detail { font-size: 10px; color: var(--text-muted); margin-top: 2px; }
.presc-signal-preview__flags  { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }

.presc-flag {
  font-size: 10px;
  padding: 1px 8px;
  border-radius: 10px;
  background: rgba(255,255,255,.07);
  color: var(--text-muted);
}
.presc-flag--warn { background: rgba(231,76,60,.12); color: #e74c3c; }
.presc-flag--good { background: rgba(39,174,96,.12); color: #27ae60; }

/* Signal regime colours */
.signal--very-exp  { background: rgba(231,76,60,.1);  border-color: rgba(231,76,60,.3); }
.signal--exp       { background: rgba(230,126,34,.1); border-color: rgba(230,126,34,.3); }
.signal--neutral   { background: var(--bg-card); }
.signal--cheap     { background: rgba(39,174,96,.07); border-color: rgba(39,174,96,.25); }
.signal--very-cheap{ background: rgba(39,174,96,.14); border-color: rgba(39,174,96,.4); }

/* Signal banner (shown after generation) */
.presc-signal-banner {
  border-radius: 7px;
  padding: 10px 14px;
  border: 1px solid var(--border);
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 10px;
}
.presc-signal-banner__label { font-size: 13px; font-weight: 600; }
.presc-signal-banner__score { font-size: 11px; color: var(--text-muted); }
.presc-signal-banner__detail {
  width: 100%;
  font-size: 11px;
  color: var(--text-muted);
}
.presc-signal-banner__detail summary {
  cursor: pointer;
  color: var(--blue);
  font-size: 11px;
  user-select: none;
}
.presc-signal-banner__detail p {
  margin: 6px 0 0;
  line-height: 1.6;
}

/* Signal note on action cards */
.action-card__signal {
  font-size: 11px;
  color: #e67e22;
  background: rgba(230,126,34,.08);
  border-radius: 4px;
  padding: 4px 8px;
  border-left: 2px solid rgba(230,126,34,.4);
}
/* ── Engine detail ────────────────────────────────────────────────────────── */

.presc-detail {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 12px;
}
.presc-detail summary {
  cursor: pointer;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  user-select: none;
}
.presc-detail__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px 16px;
  margin-top: 10px;
  font-size: 12px;
}
.presc-detail__grid span:nth-child(odd)  { color: var(--text-muted); }
.presc-detail__grid span:nth-child(even) { color: var(--text-primary); font-weight: 600; text-align: right; }
.presc-detail__note {
  margin-top: 8px;
  padding: 6px 10px;
  background: rgba(255,255,255,.04);
  border-radius: 5px;
  font-size: 11px;
  color: var(--text-muted);
  line-height: 1.5;
}

/* ── Utility ────────────────────────────────────────────────── */
.text-muted   { color: var(--text-muted); }
.text-accent  { color: var(--blue); }
.pos          { color: var(--green); }
.neg          { color: var(--red); }
.not-found    { padding: 40px; text-align: center; color: var(--text-muted); }

/* ── MOBILE RESPONSIVE (≤ 768px) ───────────────────────────── */
@media (max-width: 768px) {

  /* Tab bar sits below header in normal flow */
  :root { --header-h: 56px; }

  /* Single-row header */
  .dash-header {
    flex-wrap: nowrap;
    height: var(--header-h);
    padding: 0 12px;
    gap: 6px;
  }
  
  /* Hide "✓ ran in X.Xs" badge — irrelevant on small screen */
  .status-badge--ready { display: none; }

  /* Status div: undo desktop margin so running spinner stays compact */
  .dash-header__status { margin-left: 0; width: auto; }

  /* Hide zoom control */
  .zoom-control { display: none; }

  /* Import is always visible in the header */

  /* Top tab bar — in normal flow, sits below header */
  .mobile-tabs {
    display: flex;
    flex-shrink: 0;
    height: 40px;
    padding: 0;
    gap: 0;
    background: var(--bg-surface);
    border-bottom: 1px solid var(--border-strong);
  }

  .mobile-tab {
    flex: 1;
    padding: 0;
    min-height: 40px;
    background: transparent;
    border: none;
    border-left: 1px solid var(--border);
    border-radius: 0;
    color: var(--text-muted);
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    font-family: var(--font-ui);
    transition: background var(--tr), color var(--tr);
  }

  .mobile-tab:first-child { border-left: none; }

  .mobile-tab.active {
    background: var(--blue-dim);
    color: var(--blue);
  }

  .mobile-tab--run {
    background: #2e9e6e;
    color: #fff;
    font-size: 15px;
    flex: 0 0 46px;
  }
  .mobile-tab--run:active {
    background: #259a62;
  }
  .mobile-tab--busy {
    background: var(--blue-dim);
    color: var(--blue);
  }

  /* Stale indicator: hide the run-bar version; show dot-only in mobile-tabs */
  .stale-desktop-only { display: none; }

  .mobile-stale-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    border-left: 1px solid var(--border);
  }
  .mobile-stale-wrap .stale-indicator {
    margin: 0;
    padding: 0 8px;
    border: none;
    border-radius: 0;
    background: transparent;
    height: 40px;
  }
  .mobile-stale-wrap .stale-indicator__text { display: none; }

  /* Single-column layout on mobile: flex-column so active panel fills remaining height */
  .dashboard-body {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
  }

  /* All panels hidden by default; the active one is revealed by section--visible */
  .panel--input, .panel--results, .panel--stress {
    display: none;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  .section--hidden-mobile { display: none !important; }
  /* Two-class selector beats the global .panel--results { display:flex !important } */
  .panel--results.section--hidden-mobile { display: none !important; }
  .section--visible {
    display: flex !important;
    flex-direction: column;
    flex: 1 !important;
    min-height: 0;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  /* Hide result sub-tabs on mobile — promoted to the top tab bar */
  .result-tabs { display: none !important; }

  /* Panel styles on mobile */
  .panel--input   { border-right: none; }
  .panel--results { padding: 14px; }

  /* KPI grid: 2×2 on mobile */
  .kpi-row { grid-template-columns: 1fr 1fr; }

  /* Charts taller on mobile for readability */
  .chart-container    { height: 260px; }
  .chart-container--sm { height: 180px; }

  /* Input panel: narrower number fields on mobile */
  .input-field { width: 100px; font-size: 14px; }

  /* Selects in config rows: stack label above dropdown on narrow screens */
  .config-row:has(select),
  .config-field-row:has(select) {
    flex-wrap: wrap;
  }
  .config-row select,
  .config-field-row select {
    min-width: 0;
    width: 100%;
  }
  select.input-field { width: 100%; min-width: 0; font-size: 14px; }
  .config-select { font-size: 14px; }
  .rpo-select { font-size: 14px; min-width: 0; width: 100%; }
  .slvr-select { font-size: 14px; }

  /* Stress cards stack */
  .stress-cards { flex-direction: column; }

  /* Config section header text a bit larger */
  .config-section__header { font-size: 14px; }

  /* iOS HIG: minimum 44×44pt tap targets */
  .header-db-btn,
  .header-profile-btn { min-height: 44px; }

  /* Prevent iOS from auto-zooming inputs (requires font-size ≥ 16px) */
  input[type="text"],
  input[type="number"],
  input[type="email"],
  input[type="password"],
  select,
  textarea { font-size: 16px !important; }

  /* ── Import modal: hide format docs on mobile, compact the dialog ── */
  .import-format { display: none; }
  .import-modal { padding: 20px 16px; }
  .db-modal__label { margin-bottom: 12px; }

  /* ── Help modal: full-screen on mobile ── */
  .help-modal {
    width: 100vw;
    max-width: 100vw;
    max-height: 100vh;
    height: 100vh;
    border-radius: 0;
    border: none;
    /* No top padding here — header absorbs safe area so it appears flush */
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }
  .help-modal__header {
    /* Absorb the safe-area (notch/status bar) so header is flush with top */
    padding: max(14px, calc(env(safe-area-inset-top, 0px) + 8px)) 16px 12px;
    position: sticky;
    top: 0;
    background: var(--bg-card);
    z-index: 1;
  }
  .help-modal__close {
    /* Larger touch target on mobile */
    font-size: 22px;
    min-width: 44px;
    min-height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .help-modal__body {
    padding: 16px;
  }
  .help-section__heading {
    font-size: 13px;
  }
  .help-subsection {
    font-size: 12px;
  }

  /* ── Cash Flow modal: bottom-sheet, 2/3 height on mobile ── */
  .db-modal-backdrop { align-items: flex-end; }
  .cf-modal {
    width: 100vw;
    max-width: 100vw;
    max-height: 66dvh;
    max-height: 66vh; /* fallback for browsers without dvh */
    height: auto;
    box-sizing: border-box;
    border-radius: var(--radius) var(--radius) 0 0;
    border: none;
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }
  @supports (height: 100dvh) {
    .cf-modal {
      max-height: 66dvh;
    }
  }
  .cf-modal__header {
    padding: 14px 16px 12px;
    flex-shrink: 0;
    background: var(--bg-card);
    z-index: 1;
  }
  .cf-modal__body { padding: 16px; }
  .cf-sim-strip { padding: 6px 16px; flex-wrap: wrap; flex-shrink: 0; }
  .cf-columns { grid-template-columns: 1fr; }
  .cf-summary-value { font-size: 15px; }
}

/* ── iPHONE OVERRIDES (dashboard-shell--phone class set via DeviceInfo.Idiom) ── */

/* iPhone uses same bottom tab bar as narrow desktop — keep it visible */
.dashboard-shell--phone .section--visible {
  padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px));
}

/* ── NARROW PHONE (≤ 390px — iPhone 14/15 portrait and smaller) ── */
@media (max-width: 390px) {
  /* Result tabs: wrap to 2×N grid when too many to fit in one row */
  .result-tabs { flex-wrap: wrap; }
  .result-tab  { flex: 1 1 calc(50% - 4px); }

  /* Slightly smaller modal dialogs */
  .db-modal { max-width: 95vw; }

  /* Help modal: tighter padding on narrow phones */
  .help-modal__body { padding: 12px; }
  .help-list { padding-left: 14px; }
  .help-dl dd { margin-left: 10px; }
}

/* ── TABLET (769–1100px) ────────────────────────────────────── */
@media (min-width: 769px) and (max-width: 1100px) {
  :root { --input-panel-w: 290px; }
  .kpi-row { grid-template-columns: repeat(2, 1fr); }
}

/* ── DESKTOP LARGE (> 1400px) ──────────────────────────────── */
@media (min-width: 1400px) {
  :root { --input-panel-w: 360px; }
  .chart-container    { height: 340px; }
  .chart-container--sm { height: 230px; }
}

/* ── Blazorise chart override (dark theme) ──────────────────── */
canvas { display: block; }

/* ── Year-by-Year Table ─────────────────────────────────────────────────────── */

.yby-panel {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  margin-top: 20px;
  overflow: hidden;
}

.yby-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border);
  flex-wrap: wrap;
  gap: 8px;
}
@media (max-width: 480px) {
  .yby-header {
    flex-wrap: nowrap;
    padding: 10px 12px;
    gap: 6px;
  }
  .yby-header__left {
    min-width: 0;
  }
  .yby-title {
    font-size: 0.85rem;
  }
}

.yby-header__right {
  display: flex;
  gap: 8px;
}

.yby-title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--text-primary);
  display: block;
}
.yby-tooltip-wrap {
  position: relative;
  display: inline;
}
button.yby-info-icon {
  all: unset;
  font-size: 0.85em;
  color: var(--text-muted);
  cursor: pointer;
  margin-left: 4px;
  vertical-align: middle;
  -webkit-tap-highlight-color: transparent;
  display: inline-block;
  padding: 4px;
  line-height: 1;
  touch-action: manipulation;
  position: relative;
}
/* Expand tap target on mobile — use padding to keep area within button bounds */
@media (pointer: coarse) {
  button.yby-info-icon {
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 8px;
    position: relative;
    z-index: 1;
  }
}
.yby-tooltip-bubble {
  /* Use fixed positioning to escape overflow:auto on .yby-legend */
  position: fixed;
  z-index: 9999;
  background: var(--bg-card, #1e1e2e);
  color: var(--text-primary, #e0e0e0);
  border: 1px solid var(--border, #444);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 0.78rem;
  font-weight: 400;
  line-height: 1.45;
  white-space: normal;
  width: max-content;
  max-width: min(280px, 80vw);
  box-shadow: 0 4px 12px rgba(0,0,0,.35);
  pointer-events: auto;
  /* Positioned via JS (index.html positionYbyTooltip) */
}

.yby-subtitle {
  font-size: 0.75rem;
  color: var(--text-muted);
  display: block;
  margin-top: 2px;
}

.yby-toggle {
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: 5px;
  color: var(--text-secondary);
  font-size: 0.78rem;
  padding: 5px 12px;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}

.yby-toggle:hover, .yby-toggle.active {
  background: var(--blue-dim);
  border-color: var(--blue);
  color: var(--text-accent);
}

.yby-scroll {
  overflow-x: auto;
  overflow-y: auto;
  overscroll-behavior-x: contain;
  flex: 1;
  min-height: 0;      /* allow flex shrink so sticky footer works */
}

.yby-scroll::-webkit-scrollbar { width: 8px; }
.yby-scroll::-webkit-scrollbar-track { background: transparent; }
.yby-scroll::-webkit-scrollbar-thumb { background: rgba(30,144,255,0.2); border-radius: 4px; }

.yby-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.8rem;
  font-family: var(--font-mono);
  table-layout: fixed;
}

.yby-table thead {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--bg-card);
}

.yby-table th {
  padding: 9px 12px;
  text-align: right;
  color: var(--text-muted);
  font-weight: 500;
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border-bottom: 1px solid var(--border-strong);
  white-space: nowrap;
}

.yby-table th.col-pin {
  text-align: left;
  position: sticky;
  left: 0;
  background: var(--bg-card);
}
/* ── Sortable column headers ────────────────────────────────────── */
.yby-sortable { cursor: pointer; user-select: none; }
.yby-sortable:hover { color: var(--text-primary); }
.yby-sorted { color: var(--accent, #1E90FF); }
.yby-sort-arrow { font-size: 0.6rem; opacity: 0.35; margin-left: 2px; }
.yby-sort-arrow.yby-sort-active { opacity: 1; color: var(--accent, #1E90FF); }

.yby-row td {
  padding: 7px 12px;
  text-align: right;
  color: var(--text-secondary);
  border-bottom: 1px solid rgba(30,144,255,0.05);
  white-space: nowrap;
}

.yby-row:hover td {
  background: var(--bg-hover);
}

.yby-row td.col-pin {
  text-align: left;
  color: var(--text-primary);
  font-weight: 500;
  position: sticky;
  left: 0;
  background: var(--bg-surface);
}

.yby-row:hover td.col-pin {
  background: var(--bg-hover);
}

.col-num  { width: 90px;  min-width: 90px; }
.col-pct  { width: 62px;  min-width: 62px; }
.col-pin  { width: 52px;  min-width: 52px; }
.col-note { width: 140px; min-width: 140px; }

/* Withdrawal rate colouring */
.wr-safe    { color: #2ECC71 !important; }
.wr-caution { color: #F39C12 !important; }
.wr-danger  { color: #E74C3C !important; font-weight: 600; }

/* Solvency colouring */
.solv-hi  { color: #2ECC71 !important; }
.solv-mid { color: #F39C12 !important; }
.solv-lo  { color: #E74C3C !important; font-weight: 600; }

/* End balance */
.depleted { color: #E74C3C !important; }

/* Positive cash flows */
.pos { color: #2ECC71 !important; }

/* Danger rows (WR > 6) */
.row-danger td { background: rgba(231,76,60,0.04); }
.row-depleted td { background: rgba(231,76,60,0.10); color: var(--text-muted) !important; }

/* P5/P95 columns */
.col-p5  { color: rgba(30,144,255,0.6) !important; }
.col-p95 { color: rgba(46,204,113,0.7) !important; }

/* Footer totals row */
.yby-table tfoot {
  position: sticky;
  bottom: 0;
  z-index: 3;
  background-color: #0F2540;
}

.yby-footer-row td {
  padding: 8px 12px;
  text-align: right;
  color: var(--text-primary);
  font-weight: 600;
  border-top: 1px solid var(--border-strong);
  background-color: #0F2540;
  position: sticky;
  bottom: 0;
  z-index: 3;
}

.yby-footer-row td.col-pin {
  text-align: left;
  position: sticky;
  left: 0;
  bottom: 0;
  z-index: 5;
  background-color: #0F2540;
}

/* ── SimulationOverrideCards ─────────────────────────────────────────────── */
.override-section-title { font-size: 12px; font-weight: 600; color: var(--text-secondary); margin-bottom: 2px; }
.override-section-sub   { font-size: 11px; color: var(--text-muted); margin-bottom: 8px; }
.override-empty         { font-size: 11px; color: var(--text-muted); margin-bottom: 8px; }
.override-table         { width: 100%; border-collapse: collapse; font-size: 12px; margin-bottom: 8px; }
.override-table th      { text-align: left; padding: 3px 6px; color: var(--text-muted); font-weight: 500; border-bottom: 1px solid var(--border); }
.override-table td      { padding: 4px 6px; border-bottom: 1px solid var(--border); }
.override-add-row       { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding-top: 6px; }
.override-sep           { font-size: 11px; color: var(--text-muted); }
.override-input-sm      { width: 72px; background: var(--bg-input); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text-primary); padding: 3px 6px; font-size: 12px; }
.override-add-btn       { background: var(--blue-dim); color: var(--blue); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 3px 10px; font-size: 12px; cursor: pointer; }
.override-add-btn:hover { background: var(--blue); color: #fff; }
.override-del           { background: none; border: 1px solid rgba(231,76,60,0.3); border-radius: 4px; color: var(--red); cursor: pointer; font-size: 14px; padding: 2px 8px; opacity: 0.85; transition: background 0.15s, opacity 0.15s; }
.override-del:hover     { background: rgba(231,76,60,0.2); opacity: 1; }
.override-warning       { font-size: 11px; color: var(--amber); margin-top: 4px; }
.override-section--disabled { opacity: 0.5; }
.override-section--disabled .override-section-sub { font-style: italic; }
.val-pos { color: var(--green); }
.val-neg { color: var(--red); }
.val-warn { color: var(--amber); }

/* ── CAGR (moved to legend bar) ──────────────────────────────────────────── */
.yby-cagr-group {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

.yby-cagr-label {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  cursor: default;
}

.yby-cagr-strip {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
}

.yby-cagr-sep {
  color: var(--border-strong);
  user-select: none;
}

.yby-cagr-item {
  font-family: var(--font-mono);
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 4px;
}

.yby-cagr-item--p5  { color: var(--text-secondary); background: rgba(128,128,128,0.08); }
.yby-cagr-item--p50 { color: var(--blue);  background: var(--blue-dim); }
.yby-cagr-item--p95 { color: var(--green); background: rgba(46,204,113,0.09); }

/* Legend */
.yby-legend {
  display: flex;
  flex-wrap: nowrap;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: var(--border-strong) transparent;
  gap: 12px;
  padding: 10px 18px;
  border-top: 1px solid var(--border);
  font-size: 0.72rem;
  color: var(--text-muted);
  align-items: center;
}
.yby-legend::-webkit-scrollbar { height: 4px; }
.yby-legend::-webkit-scrollbar-track { background: transparent; }
.yby-legend::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 2px; }
.yby-legend .legend-sep { color: var(--border-strong); flex-shrink: 0; }
.yby-legend-group {
  display: flex;
  flex-wrap: nowrap;
  flex-shrink: 0;
  gap: 12px;
  align-items: center;
}
/* CAGR groups must not shrink or wrap inside the legend scroll */
.yby-cagr-group { flex-shrink: 0; white-space: nowrap; }

.yby-note {
  padding: 8px 18px 12px;
  font-size: 0.70rem;
  color: var(--text-muted);
  line-height: 1.5;
  border-top: 1px solid var(--border);
  opacity: 0.8;
}

/* ── Column group toggles ─────────────────────────────────────────────────── */
.yby-groups {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    scrollbar-color: var(--border-strong) transparent;
    gap: 6px;
    padding: 8px 16px;
    border-bottom: 1px solid var(--border);
    background: var(--bg-card);
}
.yby-groups::-webkit-scrollbar { height: 4px; }
.yby-groups::-webkit-scrollbar-track { background: transparent; }
.yby-groups::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 2px; }
.yby-group-label {
    font-size: 11px;
    color: var(--text-muted);
    margin-right: 4px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    flex-shrink: 0;
}
.yby-group-btn {
    font-size: 11px;
    padding: 3px 10px;
    border-radius: 12px;
    border: 1px solid var(--border-strong);
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
    transition: all 0.15s;
    white-space: nowrap;
    flex-shrink: 0;
}
.yby-group-btn:hover  { background: var(--bg-hover); color: var(--text-primary); }
.yby-group-btn.active { background: var(--blue-dim); color: var(--blue); border-color: var(--blue); }

/* ── Column group colour bands ────────────────────────────────────────────── */
.col-group-a { background: rgba(46,204,113,0.04) !important; }
.col-group-t { background: rgba(231,76,60,0.04)  !important; }
.col-group-b { background: rgba(52,152,219,0.04) !important; }
.col-group-l { background: rgba(155,89,182,0.04) !important; }
.col-group-n { background: rgba(241,196,15,0.04) !important; min-width: 120px; }

/* Hover must win over group tint — use same !important + higher specificity */
.yby-row:hover td.col-group-a,
.yby-row:hover td.col-group-t,
.yby-row:hover td.col-group-b,
.yby-row:hover td.col-group-l,
.yby-row:hover td.col-group-n,
.yby-row:hover td.col-group-inc,
.yby-row:hover td.col-group-exp { background: var(--bg-hover) !important; }

.yby-table thead th.col-group-a { border-top: 2px solid #2ECC71; }
.yby-table thead th.col-group-t { border-top: 2px solid #E74C3C; }
.yby-table thead th.col-group-b { border-top: 2px solid #3498DB; }
.yby-table thead th.col-group-l { border-top: 2px solid #9B59B6; }
.yby-table thead th.col-group-n { border-top: 2px solid #F1C40F; }

/* ── Note cells ───────────────────────────────────────────────────────────── */
.col-note {
    max-width: 180px;
    font-size: 10px;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.note-expander {
    cursor: help;
    border-bottom: 1px dashed var(--text-muted);
}
.note-empty { color: var(--border-strong); }

/* ── Strategy selector ────────────────────────────────────────────────────── */
.config-select {
    flex: 1;
    min-width: 0;
    background: var(--bg-input);
    color: var(--text-primary);
    border: 1px solid var(--border-strong);
    border-radius: 6px;
    padding: 6px 10px;
    padding-right: 28px;
    font-size: 13px;
    font-family: var(--font-ui);
    cursor: pointer;
    outline: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238AAEC8'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
}
.config-select:focus { border-color: var(--blue); }

/* ── SelectInput (pure-HTML dropdown) ──────────────────────────────────────── */
.sel-input {
  position: relative;
  flex: 1;
  min-width: 0;
}
.sel-input__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  background: var(--bg-input);
  color: var(--text-primary);
  border: 1px solid var(--border-strong);
  border-radius: 6px;
  padding: 6px 10px;
  font-size: 13px;
  font-family: var(--font-ui);
  cursor: pointer;
  outline: none;
  text-align: left;
}
.sel-input__trigger:focus,
.sel-input--open .sel-input__trigger {
  border-color: var(--blue);
}
.sel-input--disabled {
  opacity: 0.5;
  pointer-events: none;
}

.sel-input__text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
}
.sel-input__arrow {
  margin-left: 6px;
  font-size: 11px;
  color: var(--text-muted);
}
.sel-input__menu--hidden { display: none; }
.sel-input__menu {
  z-index: 9999;
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-radius: 6px;
  box-shadow: 0 6px 20px rgba(0,0,0,0.25);
  max-height: 280px;
  overflow-y: auto;
  padding: 4px 0;
}
.sel-input__item {
  display: block;
  width: 100%;
  padding: 6px 12px;
  font-size: 13px;
  font-family: var(--font-ui);
  color: var(--text-primary);
  background: transparent;
  border: none;
  text-align: left;
  cursor: pointer;
}
.sel-input__item:hover {
  background: var(--bg-hover);
}
.sel-input__item--active {
  color: var(--blue);
  font-weight: 600;
}

.sel-input__item--disabled {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 7px 12px;
  font-size: 13px;
  color: var(--text-muted);
  opacity: 0.55;
  cursor: default;
}

.sel-input__pro-badge {
  font-size: 9px; font-weight: 700;
  letter-spacing: .05em; text-transform: uppercase;
  padding: 1px 5px; border-radius: 3px;
  background: rgba(255,179,0,.15); color: #f0a500;
  margin-left: 6px;
}

.strategy-hint {
    font-size: 11px;
    color: var(--text-muted);
    padding: 2px 0 6px;
    line-height: 1.5;
    font-style: italic;
}

.dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 4px;
  vertical-align: middle;
}

.dot-wr-safe    { background: #2ECC71; }
.dot-wr-caution { background: #F39C12; }
.dot-wr-danger  { background: #E74C3C; }
.dot-solv-hi    { background: #2ECC71; }
.dot-solv-mid   { background: #F39C12; }
.dot-solv-lo    { background: #E74C3C; }

/* CSV modal */
.yby-csv-modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 999;
}

.yby-csv-modal__box {
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-radius: 10px;
  width: min(90vw, 700px);
  max-height: 80vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.yby-csv-modal__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  color: var(--text-primary);
  font-size: 0.85rem;
}

.yby-csv-modal__header button {
  background: none;
  border: none;
  color: var(--text-muted);
  cursor: pointer;
  font-size: 1rem;
}

.yby-csv-modal__text {
  flex: 1;
  background: var(--bg-input);
  color: var(--text-secondary);
  border: none;
  padding: 14px;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  resize: none;
  overflow: auto;
}

/* ── Plans Bar ──────────────────────────────────────────────────────────────── */

.plans-bar-wrapper {
  position: sticky;
  top: 0;
  z-index: 11;        /* above config-panel__sticky (z-index:10) */
}

.plans-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  background: var(--bg-card);
  border-bottom: 1px solid var(--border);
  gap: 8px;
  flex-wrap: wrap;
}

.plans-bar__label {
  font-size: 0.72rem;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-right: 4px;
}

.plans-bar__name {
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--text-primary);
}

.plans-bar__updated {
  font-size: 0.72rem;
  color: var(--text-muted);
  margin-left: 8px;
}

.plans-bar__left, .plans-bar__right {
  display: flex;
  align-items: center;
  gap: 6px;
}

.plan-btn {
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: 5px;
  color: var(--text-secondary);
  font-size: 0.78rem;
  padding: 5px 10px;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

.plan-btn:hover {
  background: var(--blue-dim);
  border-color: var(--blue);
  color: var(--text-accent);
}

.plans-dropdown {
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-top: none;
  border-radius: 0 0 8px 8px;
  display: flex;
  flex-direction: column;
  max-height: 50vh;
}
.plans-dropdown__list {
  overflow-y: auto;
  flex: 1;
  min-height: 0;
  scrollbar-width: thin;
  scrollbar-color: var(--border-strong) transparent;
}
.plans-dropdown__list::-webkit-scrollbar { width: 6px; }
.plans-dropdown__list::-webkit-scrollbar-track { background: transparent; }
.plans-dropdown__list::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 3px; }
.plans-dropdown__footer {
  border-top: 1px solid var(--border);
  flex-shrink: 0;
}

.plans-dropdown__empty {
  padding: 16px;
  color: var(--text-muted);
  font-size: 0.82rem;
  text-align: center;
}

.plan-row {
  display: flex;
  align-items: center;
  padding: 10px 14px;
  border-bottom: 1px solid var(--border);
  gap: 8px;
  transition: background 0.12s;
}

.plan-row:hover { background: var(--bg-hover); }
.plan-row--active { background: var(--blue-dim); }

.plan-row__info {
  flex: 1;
  cursor: pointer;
  min-width: 0;
}

.plan-row__name {
  display: block;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.plan-row__desc {
  display: block;
  font-size: 0.75rem;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.plan-row__date {
  display: block;
  font-size: 0.7rem;
  color: var(--text-muted);
}
.plan-row__info { position: relative; }
.plan-row__tooltip {
  display: none;
  position: absolute;
  left: 0;
  top: 100%;
  margin-top: 4px;
  width: max-content;
  max-width: calc(var(--input-panel-w) - 40px);
  padding: 10px 12px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 4px 16px rgba(0,0,0,0.35);
  font-size: 0.78rem;
  line-height: 1.6;
  color: var(--text-primary);
  white-space: pre-line;
  z-index: 1000;
  pointer-events: none;
}
.plan-row__info:hover .plan-row__tooltip { display: block; }

.plan-row__actions {
  display: flex;
  gap: 4px;
  flex-shrink: 0;
}

.plans-dropdown__new {
  display: block;
  width: 100%;
  padding: 10px 14px;
  background: none;
  border: none;
  color: var(--text-accent);
  font-size: 0.82rem;
  cursor: pointer;
  text-align: left;
  transition: background 0.12s;
}

.plans-dropdown__new:hover { background: var(--blue-dim); }

/* ── Base Spending (wizard values surfaced in Spending Events section) ──────── */

.base-spending {
  padding: 8px 10px;
  margin-bottom: 10px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
}

.base-spending__header {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 6px;
}

.base-spending__title {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-primary);
}

.base-spending__fields {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.base-spending__row {
  display: flex;
  align-items: center;
  gap: 8px;
}

.base-spending__row .config-label {
  flex: 0 0 auto;
  min-width: 140px;
  font-size: 0.78rem;
}

.base-spending__row .input-wrapper {
  flex: 1;
  min-width: 0;
  max-width: 200px;
}
.base-spending__row .input-wrapper .input-field {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

.base-spending--overridden {
  opacity: 0.5;
  border-style: dashed;
}

.base-spending--overridden .base-spending__title {
  text-decoration: line-through;
  color: var(--text-muted);
}

.base-spending__override-note {
  font-size: 0.72rem;
  color: var(--text-muted);
  font-style: italic;
  margin-top: 6px;
  padding: 4px 8px;
  background: rgba(243, 156, 18, 0.06);
  border-radius: 4px;
  border-left: 2px solid rgba(243, 156, 18, 0.3);
}

.base-spending__convert {
  display: inline-block;
  margin-top: 6px;
  padding: 4px 10px;
  font-size: 0.72rem;
  color: var(--blue);
  background: transparent;
  border: 1px solid var(--blue);
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.15s;
}

.base-spending__convert:hover {
  background: var(--blue-dim);
}

/* ── base-mode-summary: replaces disabled fields when in event mode ─────────── */
.base-mode-summary {
  background: var(--surface-2, #1e2635);
  border: 1px solid var(--border-subtle, #2d3748);
  border-radius: 6px;
  padding: 10px 12px 8px;
  margin-bottom: 6px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.base-mode-summary__row {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-size: 0.78rem;
}

.base-mode-summary__label {
  color: var(--text-muted);
  min-width: 90px;
  flex-shrink: 0;
}

.base-mode-summary__value {
  color: var(--text-primary, #e2e8f0);
  font-weight: 600;
}

.base-mode-summary__detail {
  color: var(--text-muted);
  font-size: 0.72rem;
}

.base-mode-summary__count {
  font-size: 0.72rem;
  color: var(--text-muted);
  margin-top: 2px;
}

.base-mode-summary__revert {
  align-self: flex-start;
  margin-top: 6px;
  padding: 3px 8px;
  font-size: 0.70rem;
  color: var(--text-muted);
  background: transparent;
  border: 1px solid var(--border-subtle, #2d3748);
  border-radius: 4px;
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s;
}

.base-mode-summary__revert:hover {
  color: var(--text-primary, #e2e8f0);
  border-color: var(--text-muted);
}

/* ── Confirmation modal ──────────────────────────────────────────────────────── */
.confirm-modal {
  background: var(--surface-1, #161d2b);
  border: 1px solid var(--border-subtle, #2d3748);
  border-radius: 10px;
  padding: 24px;
  max-width: 380px;
  width: 90%;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.5);
}

.confirm-modal__title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--text-primary, #e2e8f0);
}

.confirm-modal__body {
  font-size: 0.82rem;
  color: var(--text-muted);
  line-height: 1.55;
}

.confirm-modal__actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 4px;
}

.confirm-modal__cancel {
  padding: 6px 14px;
  font-size: 0.80rem;
  background: transparent;
  border: 1px solid var(--border-subtle, #2d3748);
  border-radius: 5px;
  color: var(--text-muted);
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}

.confirm-modal__cancel:hover {
  border-color: var(--text-muted);
  color: var(--text-primary, #e2e8f0);
}

.confirm-modal__confirm {
  padding: 6px 14px;
  font-size: 0.80rem;
  background: var(--blue, #3b82f6);
  border: none;
  border-radius: 5px;
  color: #fff;
  cursor: pointer;
  transition: background 0.15s;
}

.confirm-modal__confirm:hover {
  background: var(--blue-hover, #2563eb);
}

.input-wrapper--disabled {
  opacity: 0.5;
  pointer-events: none;
}

/* ── Events Panel ───────────────────────────────────────────────────────────── */

.events-empty {
  font-size: 0.78rem;
  color: var(--text-muted);
  padding: 4px 0 8px;
  line-height: 1.5;
}

.events-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 10px;
}

.event-chip {
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: 7px;
  padding: 8px 10px;
  border-left: 3px solid var(--border);
  transition: border-color 0.15s;
}

.event-chip--income  { border-left-color: #2ECC71; }
.event-chip--expense { border-left-color: #E74C3C; }

.event-chip__main {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 3px;
}

.event-chip__type   { font-size: 0.72rem; }
.event-chip__label  { font-size: 0.85rem; font-weight: 600; color: var(--text-primary); flex: 1; }
.event-chip__amount { font-size: 0.8rem; color: var(--text-accent); font-family: var(--font-mono); }

.event-chip__meta {
  font-size: 0.72rem;
  color: var(--text-muted);
  display: flex;
  gap: 6px;
  align-items: center;
}

.event-chip__tag {
  background: var(--blue-dim);
  border-radius: 3px;
  padding: 1px 5px;
  font-size: 0.68rem;
  color: var(--text-accent);
}

.event-chip__actions {
  display: flex;
  gap: 4px;
  margin-top: 6px;
  justify-content: flex-end;
}

/* ── SS claiming age change note ───────────────────────────────────────────── */

.ss-age-change-note {
  margin-top: 8px;
  padding: 8px 10px;
  background: rgba(30, 144, 255, 0.06);
  border: 1px solid rgba(30, 144, 255, 0.2);
  border-left: 3px solid var(--blue);
  border-radius: 6px;
  font-size: 0.78rem;
  color: var(--text-secondary);
  line-height: 1.5;
}

.ss-age-change-note__header {
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 4px;
  font-size: 0.82rem;
}

.ss-age-change-note p {
  margin: 4px 0;
}

.ss-age-change-note strong {
  color: var(--text-primary);
}

.ss-age-change-note__tip {
  font-size: 0.72rem;
  color: var(--text-muted);
  font-style: italic;
  margin-top: 6px !important;
}

.btn-add-event {
  width: 100%;
  padding: 7px;
  background: none;
  border: 1px dashed var(--border-strong);
  border-radius: 6px;
  color: var(--text-accent);
  font-size: 0.8rem;
  cursor: pointer;
  transition: all 0.15s;
}

.btn-add-event:hover {
  background: var(--blue-dim);
  border-style: solid;
}

/* ── Shared modal styles ────────────────────────────────────────────────────── */

.modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 500;
}

.modal-box {
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-radius: 10px;
  width: min(92vw, 440px);
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.modal-box--sm { width: min(92vw, 380px); }

.modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 13px 16px;
  border-bottom: 1px solid var(--border);
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--text-primary);
}

.modal-close {
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: 1rem;
  cursor: pointer;
  padding: 2px 6px;
  border-radius: 4px;
}

.modal-close:hover { background: var(--bg-hover); color: var(--text-primary); }

.modal-body {
  padding: 16px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.modal-field label {
  display: block;
  font-size: 0.74rem;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 5px;
}
.modal-field-label-row {
  display: flex;
  align-items: center;
  gap: 4px;
}
.modal-field-label-row label {
  margin-bottom: 0;
}

.modal-input {
  width: 100%;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: 6px;
  color: var(--text-primary);
  font-size: 0.88rem;
  padding: 7px 10px;
  box-sizing: border-box;
  transition: border-color 0.15s;
}

select.modal-input {
  appearance: none; cursor: pointer;
  padding-right: 28px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238AAEC8'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
}
.modal-input:focus {
  outline: none;
  border-color: var(--blue);
}

.modal-validation {
  margin-top: 6px;
  padding: 8px 10px;
  background: rgba(255,80,80,0.08);
  border: 1px solid rgba(255,80,80,0.25);
  border-radius: 6px;
}
.modal-validation__msg {
  font-size: 0.78rem;
  color: var(--red, #e05050);
  line-height: 1.5;
}

.modal-row-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.modal-toggles {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 2px 0;
}

.modal-hint {
  font-size: 0.78rem;
  color: var(--text-muted);
  background: var(--bg-input);
  border-radius: 6px;
  padding: 8px 10px;
}

.modal-footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 12px 16px;
  border-top: 1px solid var(--border);
}

.modal-btn {
  padding: 7px 18px;
  border-radius: 6px;
  font-size: 0.85rem;
  cursor: pointer;
  border: 1px solid transparent;
  transition: all 0.15s;
}

.modal-btn--cancel {
  background: var(--bg-input);
  border-color: var(--border);
  color: var(--text-secondary);
}

.modal-btn--cancel:hover { border-color: var(--border-strong); color: var(--text-primary); }

.modal-btn--save {
  background: var(--blue);
  color: #fff;
}

.modal-btn--save:hover:not(:disabled) { background: #3da1ff; }
.modal-btn--save:disabled { opacity: 0.4; cursor: default; }

/* ── Shared action buttons (edit/delete on chips/rows) ──────────────────────── */

.ev-btn {
  background: none;
  border: 1px solid var(--border);
  border-radius: 4px;
  color: var(--text-muted);
  font-size: 0.78rem;
  padding: 2px 7px;
  cursor: pointer;
  transition: all 0.12s;
}

.ev-btn:hover { background: var(--bg-hover); color: var(--text-primary); border-color: var(--border-strong); }
.ev-btn--del:hover  { background: rgba(231,76,60,0.15); color: #E74C3C; border-color: #E74C3C; }

/* ── Type toggle (Income / Expense) ─────────────────────────────────────────── */

.type-toggle {
  display: flex;
  gap: 6px;
}

.type-btn {
  flex: 1;
  padding: 6px;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: 6px;
  color: var(--text-muted);
  font-size: 0.82rem;
  cursor: pointer;
  transition: all 0.15s;
}

.type-btn.active {
  background: var(--blue-dim);
  border-color: var(--blue);
  color: var(--text-accent);
  font-weight: 600;
}

/* ── Config panel tab strip ─────────────────────────────────────────────────── */

/* ── Simple / Full mode toggle ────────────────────────────────────── */
.cfg-mode-row {
  display: flex;
  gap: 2px;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: 7px;
  padding: 3px;
  margin-bottom: 4px;
}
.cfg-mode-btn {
  flex: 1;
  padding: 4px 0;
  background: none;
  border: none;
  border-radius: 5px;
  color: var(--text-muted);
  font-size: 0.75rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
}
.cfg-mode-btn--active {
  background: var(--bg-card);
  color: var(--blue, #4da6ff);
  box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

.cfg-tabs {
  display: flex;
  gap: 2px;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: 7px;
  padding: 3px;
  margin-bottom: 4px;
}

.cfg-tab {
  flex: 1;
  padding: 6px 0;
  background: none;
  border: none;
  border-radius: 5px;
  color: var(--text-muted);
  font-size: 0.82rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.15s;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
}

.cfg-tab--active {
  background: var(--bg-card);
  color: var(--text-primary);
  box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

.cfg-tab__dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #F39C12;
  flex-shrink: 0;
}

/* ── Features tab ────────────────────────────────────────────────────── */
.features-section {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.features-category {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
}

.features-category__header {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 11px 14px;
  cursor: pointer;
  transition: background var(--tr);
}

.features-category__header:hover {
  background: var(--bg-hover);
}

.features-category__count {
  font-size: 0.72rem;
  font-weight: 400;
  color: var(--text-muted);
  opacity: 0.7;
}

.features-category__chevron {
  margin-left: auto;
  font-size: 0.7rem;
  transition: transform 0.15s;
}

.features-category__chevron--open {
  transform: rotate(90deg);
}

.features-search {
  position: relative;
  margin-bottom: 10px;
}
.features-search__input {
  width: 100% !important;
  text-align: left !important;
  font-family: var(--font-ui) !important;
  box-sizing: border-box;
}
.features-search__clear {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: 16px;
  cursor: pointer;
  padding: 2px 6px;
  line-height: 1;
}
.features-search__clear:hover { color: var(--text-primary); }

.features-flag-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 14px;
  border-top: 1px solid var(--border);
  transition: background var(--tr);
}
.features-flag-row--match {
  background: rgba(26, 115, 232, 0.06);
}

.features-flag-row:hover {
  background: var(--bg-hover);
}

.features-flag-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  flex: 1;
}

.features-flag-label {
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--text-primary);
}

.features-flag-desc {
  font-size: 0.72rem;
  color: var(--text-muted);
  line-height: 1.4;
}

/* Advanced tab note */
.cfg-adv-note {
  font-size: 0.75rem;
  color: var(--text-muted);
  background: rgba(30,144,255,0.06);
  border: 1px solid rgba(30,144,255,0.15);
  border-radius: 6px;
  padding: 8px 10px;
  line-height: 1.5;
  margin-bottom: 4px;
}

/* ── Config group labels & dividers ──────────────────────────────────── */
/* ── Wizard Config View ─────────────────────────────────────── */

/* Sub-mode toggle (Quick / Full Setup) */
.wiz-submode-row {
  display: flex;
  gap: 2px;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: 7px;
  padding: 3px;
  margin-bottom: 10px;
}
.wiz-submode-btn {
  flex: 1;
  padding: 5px 0;
  background: none;
  border: none;
  border-radius: 5px;
  color: var(--text-muted);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.wiz-submode-btn--active {
  background: var(--bg-card);
  color: var(--text-primary);
  box-shadow: 0 1px 3px rgba(0,0,0,0.12);
}

/* Step indicator bar */
.wiz-steps {
  display: flex;
  gap: 2px;
  padding: 0 0 10px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 10px;
}
.wiz-step {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  padding: 6px 2px;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  transition: border-color 0.2s, color 0.2s;
}
.wiz-step__num {
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--bg-active);
  color: var(--text-muted);
  font-size: 11px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  transition: background 0.2s, color 0.2s;
}
.wiz-step__label {
  font-size: 10px;
  font-weight: 500;
  color: var(--text-muted);
  white-space: nowrap;
  transition: color 0.2s;
}
.wiz-step--active { border-bottom-color: var(--blue); }
.wiz-step--active .wiz-step__num { background: var(--blue); color: #fff; }
.wiz-step--active .wiz-step__label { color: #fff; font-weight: 600; }
.wiz-step--done .wiz-step__num { background: rgba(77,166,255,0.15); color: var(--blue); }
.wiz-step--done .wiz-step__label { color: var(--text-secondary); }

/* Body — fixed min-height on desktop so nav buttons don't jump.
   Removed on mobile so buttons stay visible above the fold. */
.wiz-body {
  padding: 6px 0 10px;
  min-height: 420px;
}
@media (max-width: 768px) {
  .wiz-body { min-height: 0; }
}

.wiz-section-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 12px;
  letter-spacing: -0.01em;
}

/* Portfolio total bar */
.wiz-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 14px;
  background: var(--bg-active);
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 13px;
  color: var(--text-secondary);
  margin-top: 8px;
}
.wiz-total strong { color: var(--text-primary); font-size: 14px; }

/* Review summary */
.wiz-summary {
  padding: 6px 0;
  background: var(--bg-active);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
}
.wiz-summary__row {
  display: flex;
  justify-content: space-between;
  padding: 4px 0;
  font-size: 13px;
  color: var(--text-secondary);
}
.wiz-summary__row strong { color: var(--text-primary); }
.wiz-summary__row span:last-child { font-weight: 500; color: var(--text-primary); }
.wiz-summary__divider {
  height: 1px;
  background: var(--border);
  margin: 8px 0;
}

/* Navigation */
.wiz-nav {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 0 4px;
  border-top: 1px solid var(--border);
  margin-top: 4px;
}
.wiz-nav-btn {
  padding: 9px 24px;
  border-radius: 7px;
  border: none;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, filter 0.15s;
}
.wiz-nav-btn--back {
  background: var(--bg-active);
  color: var(--text-secondary);
  border: 1px solid var(--border);
}
.wiz-nav-btn--back:hover { background: var(--bg-hover); }
.wiz-nav-btn--next {
  background: var(--blue);
  color: #fff;
  margin-left: auto;
}
.wiz-nav-btn--next:hover { filter: brightness(1.1); }
.wiz-nav-btn--run {
  background: var(--green, #4caf50);
  color: #fff;
  margin-left: auto;
}
.wiz-nav-btn--run:hover { filter: brightness(1.1); }
.wiz-nav-btn--run:disabled { opacity: 0.5; cursor: not-allowed; }

.cfg-group-label {
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
  padding: 10px 10px 4px;
}
.cfg-group-divider {
  margin-top: 6px;
}
.cfg-group-toggle {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  background: rgba(30,144,255,0.06);
  border: 1px solid rgba(30,144,255,0.12);
  border-radius: 6px;
  padding: 8px 10px;
  cursor: pointer;
  text-align: left;
  color: var(--text-primary);
}
.cfg-group-toggle:hover {
  background: rgba(30,144,255,0.10);
}
.cfg-group-toggle .cfg-group-label {
  padding: 0;
  font-size: 0.7rem;
  color: var(--blue, #4da6ff);
  flex-shrink: 0;
}
.cfg-group-hint {
  font-size: 0.7rem;
  color: var(--text-muted);
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cfg-group-chevron {
  font-size: 0.75rem;
  color: var(--text-muted);
  transition: transform 0.2s;
  flex-shrink: 0;
}
.cfg-group-chevron--open {
  transform: rotate(90deg);
}

/* Allocation warning */
.alloc-note {
  display: flex;
  align-items: center;
  gap: 8px;
}

.alloc-warn {
  color: #F39C12;
  font-size: 0.75rem;
}

/* Spouse section sub-divider */
.config-section-divider {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
  padding: 6px 0 2px;
  border-top: 1px solid var(--border);
  margin-top: 4px;
}

/* ── Asset allocation UI ─────────────────────────────────────────────────────── */

.alloc-presets {
  display: flex;
  gap: 4px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.alloc-presets--inline {
  margin-bottom: 0;
  flex-wrap: nowrap;
}

.alloc-preset-btn {
  flex: 1;
  min-width: 80px;
  padding: 5px 8px;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: 5px;
  color: var(--text-muted);
  font-size: 0.78rem;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}

.alloc-preset-btn.active {
  background: var(--blue-dim);
  border-color: var(--blue);
  color: var(--text-accent);
  font-weight: 600;
}

.alloc-preset-btn:disabled {
  opacity: 0.5;
  cursor: default;
}

.alloc-grid {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 8px;
}

.alloc-row {
  display: grid;
  grid-template-columns: 100px 1fr 36px;
  align-items: center;
  gap: 8px;
}

.alloc-label {
  font-size: 0.75rem;
  color: var(--text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.alloc-slider {
  -webkit-appearance: none;
  appearance: none;
  height: 4px;
  border-radius: 2px;
  background: var(--border-strong);
  outline: none;
  cursor: pointer;
}

.alloc-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--blue);
  cursor: pointer;
  border: 2px solid var(--bg-card);
}

.alloc-pct {
  font-size: 0.75rem;
  color: var(--text-accent);
  font-family: var(--font-mono, monospace);
  text-align: right;
  min-width: 30px;
}

.alloc-total {
  font-size: 0.78rem;
  color: var(--text-muted);
  padding: 4px 0 2px;
  border-top: 1px solid var(--border);
  margin-top: 4px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.alloc-total--warn { color: #F39C12; }

/* ── Social Security event chip color ────────────────────────────────────────── */

.event-chip--ss { border-left-color: #3498DB; }

/* ── Roth conversion event chip color ───────────────────────────────────────── */

.event-chip--roth { border-left-color: #8E44AD; }
.event-chip--annuity { border-left-color: #D4A017; }

/* ── Sensitivity Analysis ────────────────────────────────────────────────────── */
.sensitivity-loading { display: flex; align-items: center; gap: 0.75rem; padding: 2rem; color: #8AAEC8; }
.sensitivity-empty { text-align: center; padding: 2rem 1rem; }
.sensitivity-empty__hint { color: #6A8FAF; font-size: 0.85rem; margin-top: 0.5rem; }
.btn-run-sensitivity {
    background: rgba(30,144,255,0.15); color: #1E90FF; border: 1px solid rgba(30,144,255,0.3);
    padding: 0.6rem 1.5rem; border-radius: 6px; cursor: pointer; font-weight: 500;
    transition: background 0.2s;
}
.btn-run-sensitivity:hover { background: rgba(30,144,255,0.25); }
.sensitivity-tabs { display: flex; gap: 0.5rem; margin-bottom: 0.75rem; }
.sensitivity-meta { color: #6A8FAF; font-size: 0.8rem; margin-top: 0.5rem; text-align: right; }
.btn-link { background: none; border: none; color: #1E90FF; cursor: pointer; font-size: 0.8rem; text-decoration: underline; }

/* ── Tornado summary rows ───────────────────────────────────────────────── */
.tornado-summary { display: flex; flex-direction: column; gap: 2px; margin-top: 8px; }
.tornado-row {
  display: flex; align-items: center; gap: 10px; padding: 6px 10px;
  border-radius: 6px; cursor: pointer; transition: background 0.15s;
  font-size: 0.8rem;
}
.tornado-row:hover { background: var(--bg-hover); }
.tornado-row__name { flex: 1; color: var(--text-primary); font-weight: 500; }
.tornado-row__range { color: var(--text-muted); font-size: 0.75rem; font-family: var(--font-mono); }
.tornado-row__delta { color: var(--text-muted); font-size: 0.75rem; min-width: 70px; text-align: right; }
.tornado-row__delta--high { color: #F39C12; font-weight: 600; }
.tornado-row__arrow { color: var(--text-muted); font-size: 0.7rem; opacity: 0.5; }

/* ── Plan Comparison ─────────────────────────────────────────────────────────── */
.comparison-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; flex-wrap: wrap; }
.comparison-label { font-weight: 600; color: #E0E8F0; font-size: 0.95rem; }
.comparison-vs { color: #6A8FAF; font-size: 0.85rem; }
.comparison-clear { margin-left: auto; }
.comparison-deltas { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0.75rem; }
.comparison-delta {
    background: rgba(30,144,255,0.06); border: 1px solid rgba(30,144,255,0.12);
    border-radius: 8px; padding: 0.75rem; display: flex; flex-direction: column; gap: 0.35rem;
}
.comparison-delta__label { color: #6A8FAF; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.05em; }
.comparison-delta__values { display: flex; align-items: center; gap: 0.4rem; color: #E0E8F0; font-size: 0.95rem; font-family: 'JetBrains Mono', monospace; }
.comparison-delta__arrow { color: #6A8FAF; }
.comparison-delta__badge {
    font-size: 0.85rem; font-weight: 600; font-family: 'JetBrains Mono', monospace;
    padding: 0.15rem 0.5rem; border-radius: 4px; width: fit-content;
    background: rgba(138,174,200,0.1); color: #8AAEC8;
}
.comparison-delta__badge--green { background: rgba(46,204,113,0.15); color: #2ECC71; }
.comparison-delta__badge--red { background: rgba(231,76,60,0.15); color: #E74C3C; }
.comparison-picker label { color: #8AAEC8; font-size: 0.9rem; margin-bottom: 0.5rem; display: block; }
.comparison-plan-list { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.comparison-plan-btn {
    background: rgba(30,144,255,0.1); color: #1E90FF; border: 1px solid rgba(30,144,255,0.25);
    padding: 0.4rem 1rem; border-radius: 6px; cursor: pointer; font-size: 0.85rem;
    transition: background 0.2s;
}
.comparison-plan-btn:hover { background: rgba(30,144,255,0.2); }
.comparison-plan-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* ── 3-button type toggle (fits SS label) ────────────────────────────────────── */

.type-btn--ss { font-size: 0.76rem; }


/* ════════════════════════════════════════════════════════════════
   RESULT TABS
   Tab bar pinned to the top of .panel--results.
   Each tab-body fills the rest of the height with its own scroll.
   ════════════════════════════════════════════════════════════════ */

/* Make results panel a flex column so tabs + body fill the height */
.panel--results {
  display: flex !important;
  flex-direction: column;
  padding: 0 !important;
  gap: 0 !important;
  overflow: hidden !important;   /* scroll lives in tab-body, not here */
}

/* ── Tab bar ──────────────────────────────────────────────────── */
.result-tabs {
  display: flex;
  align-items: stretch;
  gap: 0;
  background: var(--bg-surface);
  border-bottom: 2px solid var(--border);
  flex-shrink: 0;
  padding: 0 16px;
}

.result-tab {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 13px 18px;
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;          /* overlap the bar border */
  color: var(--text-secondary);
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  white-space: nowrap;
  transition: color var(--tr), border-color var(--tr), background var(--tr);
}

.result-tab:hover {
  color: var(--text-primary);
  background: var(--bg-hover);
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
}

.result-tab--active {
  color: var(--blue);
  border-bottom-color: var(--blue);
}

.result-tab__icon { font-size: 15px; line-height: 1; }

.result-tab__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  background: var(--bg-active);
  border-radius: 9px;
  font-size: 10px;
  font-weight: 600;
  color: var(--text-secondary);
  font-family: var(--font-mono);
}

.result-tab__badge--green {
  background: rgba(46, 204, 113, 0.2);
  color: var(--green);
}

/* ── Print / PDF tab button ──────────────────────────────────── */
.result-tab--print {
  margin-left: auto;
  opacity: 0.75;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 12px;
  padding: 4px 10px;
}
.result-tab--print:hover:not(:disabled) {
  opacity: 1;
  background: var(--bg-hover);
  color: var(--primary);
}
.result-tab--print:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}


/* ── PDF status bar ──────────────────────────────────────────── */
.pdf-status-bar {
  padding: 4px 12px;
  font-size: 12px;
  color: var(--text-muted);
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border);
}

/* ── Report FAB (mobile only) ────────────────────────────────── */
.report-fab {
  display: none;           /* hidden on desktop — result-tabs bar has the button */
  position: fixed;
  bottom: 72px;            /* above the mobile-tabs bar */
  right: 16px;
  z-index: 50;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: none;
  background: var(--primary, #3B82F6);
  color: #fff;
  font-size: 22px;
  line-height: 48px;
  text-align: center;
  cursor: pointer;
  box-shadow: 0 3px 8px rgba(0,0,0,0.35);
  transition: background 0.15s, transform 0.15s;
}
.report-fab:active { transform: scale(0.92); }

@media (max-width: 768px) {
  .report-fab { display: block; }
}

/* ── Tab body ─────────────────────────────────────────────────── */
.result-tab-body {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.result-tab-body--hidden {
  display: none !important;
}

.result-tab-body::-webkit-scrollbar { width: 8px; }
.result-tab-body::-webkit-scrollbar-track { background: transparent; }
.result-tab-body::-webkit-scrollbar-thumb { background: rgba(30,144,255,0.2); border-radius: 4px; }

/* ── Overview layout (charts side-by-side) ───────────────────── */
.overview-layout {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.overview-kpis { /* KpiRow handles its own grid */ }

.overview-charts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: auto;   /* each row sizes to its content — no cross-row inflation */
  gap: 14px;
  align-items: start;
}

.overview-chart-slot {
  min-width: 0;
  display: flex;
  flex-direction: column;
}

/* Charts inside slots must fill their slot */
.overview-chart-slot > * {
  flex: 1;
  min-height: 0;
}

/* Prevent Chart.js canvas containers from growing unbounded.
   position:relative lets Chart.js responsive mode size to this
   container instead of walking up to an unconstrained flex parent. */
.chart-card__body {
  position: relative;
  overflow: hidden;
  min-height: 0;
}

.overview-delta { /* ScenarioDeltaPanel handles its own layout */ }

/* ── Tab empty state ─────────────────────────────────────────── */
.tab-empty {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 60px 20px;
  color: var(--text-muted);
}

.tab-empty__icon { font-size: 40px; opacity: 0.5; }
.tab-empty__text { font-size: 14px; text-align: center; }

/* ── Cash Flow Advisor tab — flush with tab bar on mobile, no top padding */
@media (max-width: 768px) {
  .result-tab-body--cashflow {
    padding-top: 0;
  }
}

/* ── YearByYear tab — remove its own padding since tab-body provides it */
.result-tab-body > .yby-panel {
  margin: -20px;
  border-radius: 0;
  border-left: none;
  border-right: none;
  flex: 1;                /* fill remaining tab-body height */
  display: flex;
  flex-direction: column;
  min-height: 0;
}

/* The scroll wrapper inside yby-panel must also grow */
.result-tab-body > .yby-panel .yby-scroll {
  flex: 1;
  max-height: none;       /* override the 420px cap when inside tab body */
  min-height: 0;
}


/* ════════════════════════════════════════════════════════════════
   SOLVER PANEL  (.slvr-*)
   Two-column layout: config left | results right.
   ════════════════════════════════════════════════════════════════ */

.slvr {
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: 20px;
  align-items: start;
  /* tab-body provides the outer scroll; this doesn't need overflow */
}

/* ── Left column ─────────────────────────────────────────────── */
.slvr-config {
  display: flex;
  flex-direction: column;
  gap: 14px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 18px;
}

.slvr-config-header {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
}

.slvr-config-header__title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text-primary);
}

.slvr-config-header__sub {
  font-size: 11px;
  color: var(--text-muted);
}

.slvr-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.slvr-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
  display: flex;
  align-items: center;
  gap: 3px;
}

.slvr-select {
  width: 100%;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-family: var(--font-ui);
  font-size: 13px;
  padding: 8px 10px;
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238AAEC8'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  padding-right: 28px;
}

.slvr-select:focus {
  outline: none;
  border-color: var(--blue);
}

.slvr-hint {
  font-size: 11px;
  color: var(--text-muted);
  line-height: 1.5;
  padding: 6px 8px;
  background: var(--bg-input);
  border-left: 2px solid var(--border-strong);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}

/* Criterion pills */
.slvr-criterion-pills {
  display: flex;
  gap: 6px;
}

.slvr-pill {
  flex: 1;
  padding: 7px 0;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  text-align: center;
  transition: all var(--tr);
}

.slvr-pill:hover { border-color: var(--blue); color: var(--blue); }

.slvr-pill--active {
  background: var(--blue-dim);
  border-color: var(--blue);
  color: var(--blue);
}

/* Range row */
.slvr-range-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

.slvr-range-cell {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.slvr-range-cap {
  font-size: 10px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.slvr-range-arrow {
  font-size: 14px;
  color: var(--text-muted);
  margin-top: 14px;
  flex-shrink: 0;
}

.slvr-num {
  width: 100%;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-family: var(--font-mono);
  font-size: 13px;
  padding: 7px 9px;
}

/* Currency-formatted text inputs show $ prefix color */
.slvr-num--currency {
  color: var(--green);
  letter-spacing: 0.02em;
}
.slvr-num:focus { outline: none; border-color: var(--blue); }
.slvr-num--sm { width: 90px; }

/* Param row */
.slvr-param-row {
  display: flex;
  align-items: center;
  gap: 10px;
}

.slvr-param-pct {
  font-family: var(--font-mono);
  font-size: 15px;
  font-weight: 600;
  color: var(--blue);
  min-width: 44px;
}

.slvr-param-note {
  font-size: 11px;
  color: var(--text-muted);
}

/* Context note */
.slvr-context-note {
  font-size: 11px;
  color: var(--text-muted);
  background: var(--bg-input);
  border-radius: var(--radius-sm);
  padding: 8px 10px;
  line-height: 1.6;
}

.slvr-context-note strong { color: var(--text-secondary); }

/* Run button */
.slvr-run-btn {
  width: 100%;
  padding: 12px;
  background: var(--blue);
  border: none;
  border-radius: var(--radius-sm);
  color: #fff;
  font-family: var(--font-ui);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: background var(--tr), opacity var(--tr);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.slvr-run-btn:hover { background: #3fa0ff; }

.slvr-run-btn--busy {
  background: var(--bg-active);
  color: var(--text-secondary);
  cursor: pointer;  /* cancel action */
}

.slvr-run-btn--busy:hover {
  background: rgba(231,76,60,0.2);
  color: var(--red);
}

/* Spinner */
.slvr-spinner {
  width: 14px;
  height: 14px;
  border: 2px solid rgba(255,255,255,0.3);
  border-top-color: #fff;
  border-radius: 50%;
  animation: slvr-spin 0.7s linear infinite;
  display: inline-block;
}

@keyframes slvr-spin { to { transform: rotate(360deg); } }

.slvr-progress {
  font-size: 11px;
  color: var(--text-muted);
  font-family: var(--font-mono);
  text-align: center;
  animation: slvr-fade 0.5s ease;
}

@keyframes slvr-fade { from { opacity: 0; } to { opacity: 1; } }

.slvr-error {
  font-size: 12px;
  color: var(--red);
  background: var(--red-dim);
  border-radius: var(--radius-sm);
  padding: 8px 10px;
}

/* How it works */
.slvr-how {
  background: rgba(30,144,255,0.05);
  border: 1px solid rgba(30,144,255,0.15);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.slvr-how__title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--blue);
}

.slvr-how__body {
  font-size: 11px;
  color: var(--text-muted);
  line-height: 1.6;
}

.slvr-how__body strong { color: var(--text-secondary); }

.slvr-how__lift {
  font-size: 11px;
  color: var(--text-secondary);
  padding-top: 4px;
  border-top: 1px solid rgba(30,144,255,0.12);
}

.slvr-how__lift strong { color: var(--green); }

/* ── Right column — Results ──────────────────────────────────── */
.slvr-results {
  display: flex;
  flex-direction: column;
  gap: 16px;
  min-width: 0;
}

/* Empty / Running states */
.slvr-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 80px 20px;
  color: var(--text-muted);
  text-align: center;
}

.slvr-empty__glyph { font-size: 48px; opacity: 0.3; }
.slvr-empty__title { font-size: 16px; font-weight: 600; color: var(--text-secondary); }
.slvr-empty__sub   { font-size: 13px; }

/* Pulse ring for solving state */
.slvr-pulse-ring {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 3px solid var(--blue);
  animation: slvr-pulse 1.2s ease-in-out infinite;
}

@keyframes slvr-pulse {
  0%   { transform: scale(0.8); opacity: 1; }
  100% { transform: scale(1.4); opacity: 0; }
}

/* Hero card */
.slvr-hero {
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-top: 3px solid var(--blue);
  border-radius: var(--radius-lg);
  padding: 20px 24px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.slvr-hero--warn { border-top-color: var(--amber); }

.slvr-hero__eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  color: var(--text-muted);
  flex-wrap: wrap;
}

.slvr-hero__amount {
  font-family: var(--font-mono);
  font-size: 42px;
  font-weight: 700;
  color: var(--text-primary);
  line-height: 1;
}

.slvr-hero__row {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 4px;
}

.slvr-hero__monthly {
  font-family: var(--font-mono);
  font-size: 16px;
  color: var(--text-secondary);
}

.slvr-hero__rate {
  font-family: var(--font-mono);
  font-size: 14px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 12px;
  background: var(--bg-active);
}

.slvr-wr-val--safe { color: var(--green); }
.slvr-wr-val--mod  { color: var(--amber); }
.slvr-wr-val--elev { color: #E67E22; }
.slvr-wr-val--risk { color: var(--red); }

/* Convergence badges */
.slvr-badge {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 10px;
}

.slvr-badge--ok   { background: rgba(46,204,113,0.15); color: var(--green); }
.slvr-badge--warn { background: rgba(243,156,18,0.15);  color: var(--amber); }

/* 4-KPI grid */
.slvr-kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

.slvr-kpi {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  text-align: center;
}

.slvr-kpi--green { border-top: 2px solid var(--green); }
.slvr-kpi--amber { border-top: 2px solid var(--amber); }
.slvr-kpi--red   { border-top: 2px solid var(--red);   }
.slvr-kpi--muted .slvr-kpi__val { color: var(--text-secondary); }
.slvr-kpi--bright .slvr-kpi__val { color: var(--green); }

.slvr-kpi__val {
  font-family: var(--font-mono);
  font-size: 20px;
  font-weight: 600;
  color: var(--text-primary);
}

.slvr-kpi__lbl {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
}

/* WR gauge */
.slvr-wr-section {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.slvr-wr-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}

.slvr-wr-label { font-size: 12px; color: var(--text-muted); font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; }

.slvr-wr-value {
  font-family: var(--font-mono);
  font-size: 20px;
  font-weight: 700;
}

.slvr-wr-track {
  position: relative;
  height: 10px;
  background: var(--bg-input);
  border-radius: 5px;
  overflow: visible;
}

.slvr-wr-fill {
  height: 100%;
  border-radius: 5px;
  transition: width 0.8s ease;
}

.slvr-wr-fill--safe { background: var(--green); }
.slvr-wr-fill--mod  { background: var(--amber); }
.slvr-wr-fill--elev { background: #E67E22; }
.slvr-wr-fill--risk { background: var(--red); }

.slvr-wr-tick {
  position: absolute;
  top: -18px;
  transform: translateX(-50%);
  font-size: 9px;
  color: var(--text-muted);
  white-space: nowrap;
}

.slvr-wr-zones {
  display: flex;
  gap: 6px;
  font-size: 10px;
}

.slvr-wz {
  padding: 2px 7px;
  border-radius: 4px;
  font-weight: 600;
}

.slvr-wz--safe { background: rgba(46,204,113,0.15); color: var(--green); }
.slvr-wz--mod  { background: rgba(243,156,18,0.15);  color: var(--amber); }
.slvr-wz--elev { background: rgba(230,126,34,0.15);  color: #E67E22; }
.slvr-wz--risk { background: rgba(231,76,60,0.15);   color: var(--red); }

/* Guardrail stats */
.slvr-stats {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-left: 3px solid var(--amber);
  border-radius: var(--radius);
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.slvr-stats__title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-secondary);
}

.slvr-stats__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

.slvr-stat {
  display: flex;
  flex-direction: column;
  gap: 3px;
  text-align: center;
}

.slvr-stat__val {
  font-family: var(--font-mono);
  font-size: 18px;
  font-weight: 600;
  color: var(--text-primary);
}

.slvr-stat__lbl {
  font-size: 10px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.slvr-stat--cut  .slvr-stat__val { color: var(--red); }
.slvr-stat--raise .slvr-stat__val { color: var(--green); }

.slvr-stats__note {
  font-size: 11px;
  color: var(--text-muted);
  line-height: 1.6;
  padding-top: 8px;
  border-top: 1px solid var(--border);
}

/* Wealth milestones */
.slvr-milestones {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
}

.slvr-milestones__title {
  padding: 12px 16px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-secondary);
  border-bottom: 1px solid var(--border);
}

.slvr-milestones__table-wrap {
  overflow-x: auto;
}

.slvr-milestones__table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}

.slvr-milestones__table th {
  padding: 8px 14px;
  text-align: right;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
  background: var(--bg-input);
  font-weight: 600;
  white-space: nowrap;
}

.slvr-milestones__table th:first-child,
.slvr-milestones__table td:first-child { text-align: left; }

.slvr-milestones__table td {
  padding: 9px 14px;
  text-align: right;
  border-top: 1px solid var(--border);
  color: var(--text-primary);
}

.slvr-milestones__table tr:hover td { background: var(--bg-hover); }

.slvr-mono { font-family: var(--font-mono); }
.slvr-pos  { color: var(--green); }
.slvr-neg  { color: var(--red); }

.slvr-mini-bar {
  width: 80px;
  height: 6px;
  background: var(--bg-input);
  border-radius: 3px;
  overflow: hidden;
}

.slvr-mini-bar__fill {
  height: 100%;
  border-radius: 3px;
  transition: width 0.4s ease;
}

.slvr-mini-bar__fill--pos { background: var(--green); }
.slvr-mini-bar__fill--neg { background: var(--red); }


/* ── Per-class CAPE grid ──────────────────────────────────────────────────── */

.cape-section {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 14px;
}
.cape-section__toggle {
  cursor: pointer;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-primary);
  user-select: none;
  display: flex;
  align-items: center;
  gap: 10px;
}
.cape-section__hint  { font-size: 11px; color: var(--text-muted); font-weight: 400; }
.cape-section__spread { margin-left: auto; font-size: 11px; color: var(--text-muted); font-weight: 400; }

.cape-grid__header {
  display: grid;
  grid-template-columns: 140px 44px 90px 90px 60px 54px;
  gap: 4px 8px;
  font-size: 10px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: .04em;
  padding: 0 4px;
  margin-top: 10px;
}
.cape-grid__header > span {
  display: flex;
  align-items: center;
  gap: 2px;
}
/* Shrink tooltip icon in the compact header */
.cape-grid__header .info-tooltip__icon {
  width: 11px;
  height: 11px;
  font-size: 8px;
  line-height: 11px;
  flex-shrink: 0;
}

/* Rows-only scroll container — header stays above */
.cape-grid {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 240px;
  overflow-y: auto;
  overflow-x: hidden;
  padding-right: 2px; /* room for scrollbar */
}

.cape-grid__row {
  display: grid;
  grid-template-columns: 140px 44px 90px 90px 60px 54px;
  gap: 4px 8px;
  align-items: center;
  padding: 4px;
  border-radius: 5px;
  background: var(--bg-hover);
}
.cape-grid__row:hover { background: rgba(255,255,255,.06); }

.cape-ac-name { font-size: 12px; color: var(--text-primary); }
.cape-weight  { font-size: 11px; color: var(--text-muted); text-align: right; }

.cape-num {
  width: 80px;
  background: var(--bg-input);
  color: var(--text-primary);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 3px 6px;
  font-size: 12px;
  text-align: right;
}

.cape-spread { font-size: 12px; font-weight: 600; text-align: center; }
.cape-spread--very-expensive { color: #c0392b; }
.cape-spread--expensive      { color: #e74c3c; }
.cape-spread--neutral        { color: var(--text-muted); }
.cape-spread--cheap          { color: var(--green); }
.cape-spread--very-cheap     { color: #1e8449; }

.cape-score { font-size: 11px; text-align: right; }
.cape-score--good { color: var(--green); }
.cape-score--bad  { color: #e74c3c; }

/* ── Withdrawal strategy note ─────────────────────────────────────────────── */

.presc-strategy-note {
  font-size: 12px;
  padding: 7px 12px;
  border-radius: 6px;
  border: 1px solid var(--border);
}
.presc-strategy-note--ok    { background: rgba(39,174,96,.10); color: #27ae60; border-color: rgba(39,174,96,.3); }
.presc-strategy-note--nudge { background: rgba(52,152,219,.10); color: var(--blue); border-color: rgba(52,152,219,.3); }


/* ════════════════════════════════════════════════════════════════
   RESPONSIVE — Solver panel
   ════════════════════════════════════════════════════════════════ */
@media (max-width: 1100px) {
  .slvr { grid-template-columns: 1fr; }
  .slvr-kpis { grid-template-columns: repeat(2, 1fr); }
  .slvr-stats__grid { grid-template-columns: repeat(2, 1fr); }
  .overview-charts { grid-template-columns: 1fr; }
}

@media (max-width: 768px) {
  .result-tabs { padding: 0 8px; gap: 0; }
  .result-tab  { padding: 11px 12px; font-size: 12px; }
  .result-tab span:not(.result-tab__icon):not(.result-tab__badge) { display: none; }
  .result-tab-body { padding: 12px; gap: 12px; }
  .slvr { gap: 12px; }
  .slvr-hero__amount { font-size: 32px; }
  .slvr-kpis { grid-template-columns: repeat(2, 1fr); }
  .slvr-stats__grid { grid-template-columns: repeat(2, 1fr); }
  .slvr-criterion-pills { flex-wrap: wrap; }
}

/* ── Spending Events Summary (ConfigPanel) ─────────────────────────────── */
.spending-from-events {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.spending-event-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 5px 8px;
    background: var(--panel-bg, #0d1f35);
    border-radius: 6px;
    font-size: 13px;
}

.spending-event-row--net {
    border-top: 1px solid rgba(255,255,255,0.08);
    margin-top: 2px;
    padding-top: 7px;
    font-weight: 600;
}

.spending-event-label {
    color: var(--text-muted);
}

.spending-event-amount {
    font-family: var(--font-mono);
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
}

.spending-event-amount--expense { color: #e87070; }
.spending-event-amount--income  { color: #5dbf8a; }

.spending-events-note {
    margin-top: 6px;
    font-size: 11px;
    opacity: 0.65;
    line-height: 1.5;
}

.config-label--muted {
    opacity: 0.6;
    font-style: italic;
}

.config-value {
    font-family: var(--font-mono);
    font-size: 13px;
    color: var(--text-muted);
}

/* ── Market Conditions card ───────────────────────────────────────────────── */

.market-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 10px;
}

.market-card__header {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 10px 14px 8px;
  border-bottom: 1px solid var(--border);
}
.market-card__title { font-size: 13px; font-weight: 700; color: var(--text-primary); }
.market-card__sub   { font-size: 11px; color: var(--text-muted); }

/* Signal banner */
.signal-banner {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 14px;
  flex-wrap: wrap;
  border-bottom: 1px solid var(--border);
}
.signal-banner--very-expensive { background: rgba(192, 57, 43, .15); border-left: 3px solid #c0392b; }
.signal-banner--expensive       { background: rgba(231, 76, 60, .10); border-left: 3px solid #e74c3c; }
.signal-banner--neutral         { background: rgba(149,165,166,.10);  border-left: 3px solid #95a5a6; }
.signal-banner--cheap           { background: rgba(39,174,96,.10);    border-left: 3px solid #27ae60; }
.signal-banner--very-cheap      { background: rgba(39,174,96,.18);    border-left: 3px solid #1e8449; }

.signal-banner__label {
  font-size: 13px;
  font-weight: 700;
  color: var(--text-primary);
  flex: 1;
  min-width: 200px;
}
.signal-banner__score {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
}
.signal-banner__chip {
  font-size: 11px;
  background: rgba(255,255,255,.07);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 2px 9px;
  color: var(--text-muted);
  white-space: nowrap;
}
.signal-chip__score {
  color: var(--text-primary);
  font-weight: 600;
  margin-left: 4px;
}

.signal-explanation {
  padding: 8px 14px;
  font-size: 11px;
  color: var(--text-muted);
  line-height: 1.6;
  border-bottom: 1px solid var(--border);
  background: rgba(0,0,0,.1);
}

/* Market inputs row */
.market-inputs-section {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 10px 14px;
  border-top: 1px solid var(--border);
}

.market-inputs-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}
.market-inputs-row:last-child { border-bottom: none; }

.market-inputs-label {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  width: 100px;
  flex-shrink: 0;
  padding-top: 18px; /* align with input labels */
  display: flex;
  align-items: flex-start;
  gap: 3px;
}

.market-inputs-fields {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: flex-end;
}

/* keep old .market-inputs for any other uses */
.market-inputs {
  display: flex;
  flex-wrap: wrap;
  padding: 10px 14px;
  gap: 12px;
  align-items: flex-end;
}

.market-input-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.market-label {
  font-size: 11px;
  color: var(--text-muted);
  font-weight: 500;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
/* First text node + tooltip icon sit in a row */
.market-label .info-tooltip {
  display: inline-flex;
  vertical-align: middle;
  margin-left: 3px;
}
.market-hint {
  font-size: 10px;
  color: var(--text-muted);
  opacity: .7;
  font-weight: 400;
}

.market-num {
  width: 90px;
  background: var(--bg-input);
  color: var(--text-primary);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 5px 8px;
  font-size: 13px;
  font-family: var(--font-mono, monospace);
}
.market-num--wide { width: 130px; }
.market-num:focus { outline: none; border-color: var(--blue); }

/* YTD returns section */
.ytd-section {
  border-top: 1px solid var(--border);
}
.ytd-section__toggle {
  padding: 8px 14px;
  font-size: 11px;
  font-weight: 600;
  color: var(--blue);
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
  gap: 8px;
  background: rgba(52,152,219,.04);
}
.ytd-section__hint {
  font-size: 10px;
  color: var(--text-muted);
  font-weight: 400;
}

.ytd-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 2px;
  padding: 8px 14px;
}

.ytd-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 3px 0;
}
.ytd-label  { font-size: 11px; color: var(--text-muted); width: 90px; flex-shrink: 0; }
.ytd-input  {
  width: 62px;
  background: var(--bg-input);
  color: var(--text-primary);
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 3px 6px;
  font-size: 12px;
  text-align: right;
  font-family: var(--font-mono, monospace);
}
.ytd-input:focus  { outline: none; border-color: var(--blue); }
.ytd-unit   { font-size: 11px; color: var(--text-muted); }
.ytd-weight {
  font-size: 10px;
  background: rgba(255,255,255,.06);
  border-radius: 8px;
  padding: 1px 6px;
  color: var(--text-muted);
  margin-left: 4px;
}

.ytd-footer {
  padding: 8px 14px;
  font-size: 11px;
  color: var(--text-muted);
  border-top: 1px solid var(--border);
  background: rgba(0,0,0,.1);
}
.ytd-footer strong { color: var(--text-primary); }
.ytd-ahead { color: var(--green) !important; }
.ytd-behind { color: #e74c3c !important; }

/* Action card signal note */
.action-card__signal {
  font-size: 11px;
  color: #f39c12;
  background: rgba(243,156,18,.08);
  border-left: 2px solid #f39c12;
  border-radius: 0 4px 4px 0;
  padding: 4px 8px;
}

/* Tag variant */
.action-card__tag--red {
  background: rgba(231,76,60,.15);
  color: #e74c3c;
}

/* Empty state hints */
.presc-empty__hints {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 11px;
  color: var(--text-muted);
  background: rgba(255,255,255,.04);
  border-radius: 8px;
  padding: 10px 16px;
  margin-top: 6px;
  text-align: left;
  width: 100%;
  max-width: 360px;
}


/* ── Info-tooltip (ℹ hover) ─────────────────────────────────────────── */
.info-tooltip {
  position: relative;
  display: inline-flex;
  align-items: center;
  margin-left: 5px;
  cursor: default;
}
.info-tooltip__icon {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--text-muted);
  color: var(--bg-panel);
  font-size: 10px;
  font-weight: 700;
  line-height: 14px;
  text-align: center;
  display: inline-block;
  user-select: none;
  flex-shrink: 0;
  position: relative;
}
.info-tooltip__icon:focus {
  outline: 2px solid var(--blue, #4da6ff);
  outline-offset: 1px;
}
/* Expand the touch target on mobile — invisible 44×44 tap area around the 14px icon */
@media (pointer: coarse) {
  .info-tooltip__icon::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 44px;
    height: 44px;
    transform: translate(-50%, -50%);
    border-radius: 50%;
  }
}
.info-tooltip__box {
  visibility: hidden;
  opacity: 0;
  /* fixed escapes ALL overflow:hidden ancestors — no clipping */
  position: fixed;
  z-index: 9999;
  pointer-events: none;
  /* default: centred above the icon (repositioned via JS on hover/click) */
  top: var(--tt-top, -9999px);
  left: var(--tt-left, -9999px);
  transform: translateX(-50%) translateY(calc(-100% - 8px));
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 7px;
  padding: 8px 11px;
  font-size: 12px;
  line-height: 1.45;
  color: var(--text-primary);
  width: 240px;
  box-shadow: 0 4px 16px rgba(0,0,0,.5);
  transition: opacity 0.15s;
}
/* Tooltip box is shown via JS portal clone (index.html) — suppress the
   in-place hover to avoid a duplicate ghost tooltip. */
.info-tooltip:hover .info-tooltip__box {
  visibility: hidden;
  opacity: 0;
}

/* chart-card title row with tooltip */
.chart-card__title-row {
  display: flex;
  align-items: center;
  padding: 10px 14px 0;
}
.chart-card__title-row .chart-card__title {
  padding: 0;
}

/* CSV export status label */
.yby-export-status {
  font-size: 11px;
  color: var(--text-muted);
  margin-left: 8px;
  animation: fadeIn 0.2s ease;
}

/* ── Simulation method selector (ConfigPanel) ──────────────────────────────── */
.config-row--stacked {
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
}
.method-selector {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.method-btn {
  padding: 5px 12px;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
  color: var(--text-primary);
  font-size: 12px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
  display: flex;
  align-items: center;
  gap: 5px;
}
.method-btn:hover { background: var(--bg-hover); }
.method-btn.active {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
.method-btn--stub { opacity: 0.7; }
.method-btn--stub.active { opacity: 1; }
.method-badge {
  font-size: 9px;
  font-weight: 700;
  background: rgba(255,180,0,0.25);
  color: #b37700;
  padding: 1px 5px;
  border-radius: 4px;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}
.method-stub-note {
  font-size: 11px;
  color: #c97c00;
  background: rgba(255,180,0,0.08);
  border: 1px solid rgba(255,180,0,0.3);
  border-radius: 6px;
  padding: 6px 10px;
  margin-top: 4px;
}

/* ── Simulation method bar (sticky run area) ────────────────────────────────── */
.sim-cancel-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 10px;
  background: rgba(231,76,60,0.10);
  border: 1px solid rgba(231,76,60,0.30);
  border-radius: var(--radius-sm);
  margin-bottom: 4px;
}

.sim-cancel-bar__label {
  flex: 1;
  font-size: 12px;
  color: var(--red);
  font-weight: 500;
}

.sim-method-bar {
  display: flex;
  gap: 4px;
  padding: 6px 0px 8px;
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border);
  align-items: center;
}
/* Wrapper for sim-method button + tooltip icon */
.sim-meth-btn-wrap {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
}
.sim-meth-btn-wrap__tip {
  position: absolute;
  top: -10px;
  right: -4px;
  z-index: 2;
  margin-left: 0;
}
.sim-meth-btn-wrap__tip .info-tooltip__icon {
  width: 12px;
  height: 12px;
  font-size: 9px;
  line-height: 12px;
}
.sim-meth-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 5px;
  font-size: 11px;
  font-weight: 600;
  font-family: inherit;
  border: 1px solid #2e9e6e;
  border-radius: 6px;
  background: #e8f5ee;
  color: #1a7a4e;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.15s, border-color 0.15s, color 0.15s, opacity 0.15s;
}
.sim-meth-btn:hover:not(:disabled) {
  background: #c6ebd5;
  border-color: #1a7a4e;
  color: #14643f;
}
.sim-meth-btn--active {
  background: var(--blue-dim);
  border-color: var(--blue);
  color: var(--blue);
}
.sim-meth-btn--busy {
  background: var(--blue-dim);
  border-color: var(--blue);
  color: var(--blue);
}
.sim-meth-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
.sim-meth-btn--busy:disabled {
  opacity: 1;
}

/* ── Simulation method selector (Plan Settings) ─────────────────────────── */
.sim-method-select {
  display: flex;
  gap: 2px;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: 7px;
  padding: 3px;
}
.sim-method-opt {
  flex: 1;
  padding: 5px 4px;
  background: none;
  border: none;
  border-radius: 5px;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.15s;
}
.sim-method-opt:hover {
  color: var(--text-primary);
  background: var(--bg-hover);
}
.sim-method-opt--active {
  background: var(--bg-card);
  color: var(--text-primary);
  box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

/* ── Run button + cancel bar in results tab bar ─────────────────────────── */
.run-bar__btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 14px;
  margin: 4px 0;
  font-size: 12px;
  font-weight: 600;
  font-family: inherit;
  border: 1px solid #2e9e6e;
  border-radius: 6px;
  background: #2e9e6e;
  color: #fff;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.15s, border-color 0.15s;
}
.run-bar__btn:hover {
  background: #259a62;
  border-color: #1a7a4e;
}
.run-bar--busy {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 10px;
  margin: 4px 0;
  background: rgba(30,144,255,0.12);
  border: 1px solid rgba(30,144,255,0.35);
  border-radius: 6px;
  font-size: 12px;
  white-space: nowrap;
}
.run-bar__label {
  color: var(--blue);
  font-weight: 500;
}
.run-bar__cancel {
  background: none;
  border: none;
  color: var(--red);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  padding: 0 4px;
  line-height: 1;
  font-family: inherit;
}
.run-bar__cancel:hover {
  opacity: 0.7;
}
/* Desktop: visible normally. Mobile: hidden here; shown as dot-only in mobile-tabs. */
.stale-desktop-only { display: inline-flex; align-items: center; }

/* Mobile-tabs stale wrap: invisible on desktop */
.mobile-stale-wrap { display: none; }

.stale-indicator {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  margin: 4px 4px 4px 0;
  font-size: 11px;
  font-weight: 500;
  font-family: inherit;
  background: rgba(245,158,11,0.12);
  border: 1px solid rgba(245,158,11,0.45);
  border-radius: 6px;
  color: #d97706;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.15s, border-color 0.15s;
}
.stale-indicator:hover {
  background: rgba(245,158,11,0.22);
  border-color: rgba(245,158,11,0.7);
}
.stale-indicator__dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #f59e0b;
  flex-shrink: 0;
  animation: stale-pulse 1.8s ease-in-out infinite;
}
@keyframes stale-pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.35; }
}

/* ── Historical Cohort tools bar (YBY, scrollable) ─────────────────────────── */
/* ── Historical Cohort inline controls (same row as cohort badge) ──────────── */
.hc-inline-controls {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-left: 8px;
  white-space: nowrap;
}
.hc-start-year-label {
  font-size: 10px;
  font-weight: 600;
  color: var(--text-muted);
  white-space: nowrap;
}
.hc-start-year-input {
  width: 58px;
  padding: 2px 5px;
  font-size: 11px;
  font-family: 'JetBrains Mono', monospace;
  background: var(--bg-input);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  outline: none;
}
.hc-start-year-input:focus {
  border-color: var(--blue);
}
.hc-start-year-hint {
  font-size: 9px;
  color: var(--text-muted);
}
.hc-start-year-warning {
  font-size: 10px;
  color: #e67700;
  font-weight: 600;
}
.hc-jump-btn {
  padding: 2px 6px;
  font-size: 10px;
  font-weight: 600;
  background: var(--blue-dim);
  border: 1px solid var(--blue);
  border-radius: var(--radius-sm);
  color: var(--blue);
  cursor: pointer;
  white-space: nowrap;
}
.hc-jump-btn:hover { background: var(--bg-hover); }

@media (max-width: 768px) {
  .hc-start-year-input {
    font-size: 16px;         /* prevent iOS auto-zoom on focus */
    width: 54px;
    padding: 2px 4px;
  }
  .hc-inline-controls {
    gap: 3px;
    margin-left: 4px;
  }
}

/* ── Simulation method read-only display (inside config section) ─────────────── */
.sim-method-readonly {
  display: flex;
  align-items: center;
  gap: 8px;
}
.sim-method-pill {
  font-size: 11px;
  font-weight: 700;
  padding: 3px 9px;
  border-radius: 20px;
  letter-spacing: 0.02em;
}
.sim-method-pill--mc  { background: var(--blue-dim);           color: var(--blue); }
.sim-method-pill--hc  { background: rgba(46,204,113,0.12);     color: #1a9e5a; }
.sim-method-pill--bb  { background: rgba(156,100,240,0.12);    color: #7c3fe0; }
.sim-method-hint {
  font-size: 10px;
  color: var(--text-muted);
  font-style: italic;
}

/* ── Year-by-Year trial selector bar ───────────────────────────────────────── */
.yby-trial-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border);
  border-radius: 0;
}
.yby-trial-label {
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.yby-trial-btn {
  padding: 4px 10px;
  border-radius: 5px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
  color: var(--text-primary);
  font-size: 11px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.12s, border-color 0.12s;
}
.yby-trial-btn:hover   { background: var(--bg-hover); }
.yby-trial-btn.active  {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
  font-weight: 600;
}
.yby-trial-slider {
  flex: 1 1 120px;
  min-width: 80px;
  max-width: 240px;
  accent-color: var(--accent);
  cursor: pointer;
}
@media (max-width: 480px) {
  .yby-trial-slider {
    flex: 1 1 140px;
    min-width: 100px;
    max-width: 180px;
  }
}
.yby-trial-rank {
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
  margin-left: 4px;
}
.yby-cohort-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  font-size: 11px;
  font-weight: 600;
  background: rgba(30, 144, 255, 0.12);
  border: 1px solid var(--border-strong);
  border-radius: 10px;
  color: var(--blue);
  white-space: nowrap;
  margin-left: 6px;
}

/* ── Zoom control (header, top-right) ─────────────────────────────────────── */
.zoom-control {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-left: 16px;
  flex-shrink: 0;
}
.zoom-btn {
  width: 26px;
  height: 26px;
  border-radius: 5px;
  border: 1px solid var(--border);
  background: var(--bg-surface);
  color: var(--text-primary);
  font-size: 15px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.12s;
  padding: 0;
}
.zoom-btn:hover   { background: var(--bg-hover); }
.zoom-btn--reset  { font-size: 12px; }
.zoom-label {
  min-width: 38px;
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted);
  user-select: none;
}

/* ── YBY new always-visible column accent colours ─────────────────────────── */
/* Income columns — soft green tint */
th.col-group-inc, td.col-group-inc {
  background: rgba(34, 197, 94, 0.06);
}
/* Expense columns — reuse existing amber pattern */
th.col-group-exp, td.col-group-exp {
  background: rgba(251, 146, 60, 0.06);
}
/* pos = positive cash flow — green text */
.pos { color: var(--green, #22c55e); }

/* ══════════════════════════════════════════════════════════════════════════
   ANALYSIS PANEL  (.anl-*)
   ══════════════════════════════════════════════════════════════════════════ */

.anl {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 16px;
  min-height: 300px;
}

/* ── Header ──────────────────────────────────────────────────────────────── */
.anl-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.anl-header__left   { display: flex; flex-direction: column; gap: 2px; }
.anl-header__title  { font-size: 15px; font-weight: 700; color: var(--text-primary); }
.anl-header__sub    { font-size: 11px; color: var(--text-muted); }
.anl-header__right  { flex-shrink: 0; }

.anl-run-btn {
  padding: 8px 20px;
  background: var(--blue);
  color: #fff;
  border: none;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 6px;
  transition: background .15s;
}
.anl-run-btn:hover { background: #1878d8; }
.anl-run-btn--busy { background: var(--bg-hover); color: var(--text-secondary); cursor: default; }

/* ── Context note ────────────────────────────────────────────────────────── */
.anl-context {
  font-size: 11px;
  color: var(--text-muted);
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 6px 10px;
}
.anl-on  { color: var(--green); }
.anl-off { color: var(--text-muted); }

/* ── Empty / working states ──────────────────────────────────────────────── */
.anl-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 10px;
  padding: 48px 24px;
  color: var(--text-muted);
}
.anl-empty__glyph { font-size: 40px; }
.anl-empty__title { font-size: 16px; font-weight: 600; color: var(--text-secondary); }
.anl-empty__sub   { font-size: 13px; max-width: 420px; }
.anl-empty__note  { font-size: 11px; color: var(--text-muted); max-width: 380px; }

.anl-working {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 48px 24px;
  text-align: center;
}
.anl-working__title { font-size: 16px; font-weight: 600; color: var(--text-primary); }
.anl-working__sub   { font-size: 13px; color: var(--text-secondary); }
.anl-working__note  { font-size: 11px; color: var(--text-muted); }

/* ── Sub-tab bar ─────────────────────────────────────────────────────────── */
.anl-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 0;
}
.anl-tab {
  padding: 7px 16px;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  color: var(--text-muted);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: color .15s, border-color .15s;
  margin-bottom: -1px;
}
.anl-tab:hover { color: var(--text-primary); }
.anl-tab--active {
  color: var(--blue);
  border-bottom-color: var(--blue);
}

/* ── Shared table styles ─────────────────────────────────────────────────── */
.anl-tbl-wrap { overflow-x: auto; }

.anl-tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.anl-tbl th {
  text-align: right;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--text-muted);
  padding: 6px 10px;
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
}
.anl-tbl th:first-child { text-align: left; }
.anl-tbl td {
  padding: 7px 10px;
  text-align: right;
  color: var(--text-secondary);
  border-bottom: 1px solid rgba(30,144,255,.05);
  white-space: nowrap;
}
.anl-tbl td:first-child { text-align: left; }
.anl-tbl tr:hover td   { background: var(--bg-hover); }

.anl-row--baseline td  { color: var(--text-primary); font-weight: 500; }
.anl-baseline-badge {
  margin-left: 6px;
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--text-muted);
  background: var(--bg-hover);
  border-radius: 3px;
  padding: 1px 5px;
  letter-spacing: .04em;
}
.anl-strat-name { min-width: 160px; }
.anl-delta {
  display: inline-block;
  font-size: 10px;
  margin-left: 4px;
  font-weight: 600;
}

.anl-pos           { color: var(--green) !important; }
.anl-neg           { color: var(--red)   !important; }
.anl-success--hi   { color: var(--green) !important; font-weight: 600; }
.anl-success--mid  { color: #F39C12     !important; }
.anl-success--lo   { color: var(--red)  !important; font-weight: 600; }
.anl-survived      { color: var(--green); font-weight: 600; }
.anl-failed        { color: var(--red);   font-weight: 600; }

/* ── Tax Alpha sub-tab ───────────────────────────────────────────────────── */
.anl-alpha { display: flex; flex-direction: column; gap: 16px; }

.anl-alpha-hero {
  border-radius: 10px;
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  border: 1px solid var(--border);
}
.anl-alpha-hero--pos     { background: rgba(46,204,113,.08); border-color: rgba(46,204,113,.3); }
.anl-alpha-hero--neutral { background: var(--bg-card); }
.anl-alpha-hero--neg     { background: rgba(231,76,60,.08); border-color: rgba(231,76,60,.3); }

.anl-alpha-hero__eyebrow {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--text-muted);
}
.anl-alpha-hero__score {
  font-size: 36px;
  font-weight: 800;
  color: var(--text-primary);
  line-height: 1.1;
}
.anl-alpha-hero--pos .anl-alpha-hero__score { color: var(--green); }
.anl-alpha-hero--neg .anl-alpha-hero__score { color: var(--red);   }
.anl-alpha-hero__sub { font-size: 12px; color: var(--text-muted); }

.anl-alpha-kpis {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.anl-kpi {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.anl-kpi__val  { font-size: 18px; font-weight: 700; color: var(--text-primary); }
.anl-kpi__lbl  { font-size: 11px; color: var(--text-secondary); font-weight: 600; }
.anl-kpi__sub  { font-size: 10px; color: var(--text-muted); }

.anl-compare__title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
  margin-bottom: 6px;
}

/* ── Interpretation callout ──────────────────────────────────────────────── */
.anl-interp {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.5;
}
.anl-interp__icon { font-size: 18px; flex-shrink: 0; }
.anl-interp__text { flex: 1; }

/* ── Strategy Optimizer sub-tab ──────────────────────────────────────────── */
.anl-opt { display: flex; flex-direction: column; gap: 10px; }
.anl-opt__horizon {
  font-size: 11px;
  color: var(--text-muted);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.anl-opt__section-title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
}

/* ── Responsive ──────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
  .anl-alpha-kpis { grid-template-columns: repeat(2, 1fr); }
  .anl-header     { flex-direction: column; }
}
@media (max-width: 480px) {
  .anl-alpha-kpis { grid-template-columns: 1fr; }
}

/* ── Cash buffer / LOC solver ────────────────────────────────────────────── */
.anl-cash            { display: flex; flex-direction: column; gap: 10px; }
.anl-row-best td     { background: rgba(46,204,113,.08) !important; font-weight: 600; }
.anl-best-badge      {
  display: inline-block; margin-left: 6px; font-size: 10px; font-weight: 700;
  color: var(--green, #2ecc71); vertical-align: middle;
}
.anl-thorough-toggle {
  display: inline-flex; align-items: center; gap: 5px; cursor: pointer;
  font-size: 12px; color: var(--text-secondary); margin-right: 10px;
}
.anl-thorough-toggle input { accent-color: var(--accent, #3498db); }
.anl-thorough-label  { white-space: nowrap; }

/* ── Solver strategy params card (.slvr-params-*) ──────────────────────── */

.slvr-params-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 2px;
}
.slvr-params-card--info { background: rgba(30,144,255,.04); }

.slvr-params-title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
  border-bottom: 1px solid var(--border);
  padding-bottom: 6px;
}

.slvr-param-sub {
  font-size: 10px;
  color: var(--text-muted);
  margin-top: 2px;
  line-height: 1.4;
}

.slvr-params-note {
  font-size: 12px;
  color: var(--text-muted);
  line-height: 1.5;
}

.slvr-reset-btn {
  align-self: flex-start;
  background: none;
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 4px 10px;
  font-size: 11px;
  color: var(--text-muted);
  cursor: pointer;
  transition: border-color .15s, color .15s;
}
.slvr-reset-btn:hover {
  border-color: var(--blue);
  color: var(--blue);
}

/* ── Solver "Copy to Plan" row ──────────────────────────────────────────── */
.slvr-copy-row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.slvr-copy-btn {
  padding: 6px 14px;
  background: none;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 12px;
  color: var(--text-secondary);
  cursor: pointer;
  transition: border-color .15s, color .15s, background .15s;
}
.slvr-copy-btn:hover {
  border-color: var(--blue);
  color: var(--blue);
  background: rgba(30,144,255,.05);
}
.slvr-copy-flash {
  font-size: 12px;
  color: var(--green);
  font-weight: 600;
  animation: slvr-fade-out 2s ease forwards;
}
@keyframes slvr-fade-out {
  0%   { opacity: 1; }
  70%  { opacity: 1; }
  100% { opacity: 0; }
}

/* ══════════════════════════════════════════════════════════════════════════
   TOOLTIP SYSTEM  (.tip)
   Usage: <span class="tip" data-tip="Explanation text">ⓘ</span>
   Place inline after any label.  Tooltip appears above on hover/focus.
   ══════════════════════════════════════════════════════════════════════════ */

.tip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  font-size: 10px;
  font-style: normal;
  font-weight: 700;
  line-height: 1;
  color: var(--text-muted);
  border: 1px solid var(--border);
  cursor: default;
  position: relative;
  vertical-align: middle;
  margin-left: 4px;
  flex-shrink: 0;
  user-select: none;
}

.tip:hover,
.tip:focus { color: var(--blue); border-color: var(--blue); outline: none; }

/* Touch devices: expand tap target to 44×44 for accessibility */
@media (pointer: coarse) {
  .tip {
    width: 28px;
    height: 28px;
    font-size: 13px;
    cursor: pointer;
  }
}

/* Tooltip bubble */
.tip::after {
  content: attr(data-tip);
  position: absolute;
  bottom: calc(100% + 7px);
  left: 50%;
  transform: translateX(-50%);
  background: #1a1f2e;
  color: #e8ecf4;
  font-size: 11px;
  font-weight: 400;
  line-height: 1.45;
  white-space: normal;
  width: 220px;
  padding: 7px 10px;
  border-radius: 6px;
  box-shadow: 0 4px 16px rgba(0,0,0,.45);
  pointer-events: none;
  opacity: 0;
  transition: opacity .12s;
  z-index: 9999;
}

/* Arrow */
.tip::before {
  content: "";
  position: absolute;
  bottom: calc(100% + 1px);
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: #1a1f2e;
  pointer-events: none;
  opacity: 0;
  transition: opacity .12s;
  z-index: 9999;
}

.tip:hover::after,
.tip:hover::before,
.tip:focus::after,
.tip:focus::before { opacity: 1; }

/* Flip right when near left edge — add class .tip--right */
.tip--right::after { left: 0; transform: none; }
.tip--right::before { left: 8px; transform: none; }

/* Flip left when near right edge — add class .tip--left */
.tip--left::after  { left: auto; right: 0; transform: none; }
.tip--left::before { left: auto; right: 8px; transform: none; }

/* Show below instead of above — add class .tip--below */
.tip--below::after  { bottom: auto; top: calc(100% + 7px); }
.tip--below::before { bottom: auto; top: calc(100% + 1px); border-top-color: transparent; border-bottom-color: #1a1f2e; }

/* Inside a config-label the label text + tip sit together */
.config-label { display: flex; align-items: center; }

/* ── Solver "Optimize Parameters" toggle row ────────────────────────────── */
.slvr-opt-row {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 10px 12px;
  background: rgba(30,144,255,.04);
  border: 1px solid rgba(30,144,255,.18);
  border-radius: 7px;
}
.slvr-opt-label {
  display: flex;
  align-items: center;
  gap: 7px;
  cursor: pointer;
  user-select: none;
}
.slvr-opt-check {
  width: 14px;
  height: 14px;
  accent-color: var(--blue);
  flex-shrink: 0;
  cursor: pointer;
}
.slvr-opt-text {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-primary);
}
.slvr-opt-est {
  font-size: 11px;
  color: var(--orange, #f5a623);
  font-weight: 600;
}
.slvr-opt-note {
  font-size: 11px;
  color: var(--text-muted);
  line-height: 1.45;
}

/* ── Optimal Parameter Results (.slvr-optparams) ────────────────────────── */
.slvr-optparams {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
}
.slvr-optparams__header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: rgba(30,144,255,.06);
  border-bottom: 1px solid var(--border);
}
.slvr-optparams__title {
  font-size: 12px;
  font-weight: 700;
  color: var(--text-primary);
  flex: 1;
}
.slvr-optparams__apply {
  padding: 4px 12px;
  background: var(--blue);
  border: none;
  border-radius: 5px;
  font-size: 11px;
  font-weight: 600;
  color: #fff;
  cursor: pointer;
  transition: opacity .15s;
}
.slvr-optparams__apply:hover { opacity: .85; }

.slvr-optparams__winner {
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
}
.slvr-optparams__winner-label {
  font-size: 11px;
  color: var(--text-muted);
  margin-bottom: 4px;
}
.slvr-optparams__winner-amount {
  font-size: 24px;
  font-weight: 700;
  color: var(--green);
  letter-spacing: -.02em;
}
.slvr-optparams__lift {
  font-size: 12px;
  font-weight: 600;
  margin-top: 3px;
}
.slvr-optparams__winner-meta {
  font-size: 11px;
  color: var(--text-muted);
  margin-top: 4px;
}

.slvr-optparams__table-wrap {
  overflow-x: auto;
  padding: 0 0 8px;
}
.slvr-optparams__table {
  width: 100%;
  border-collapse: collapse;
  font-size: 11px;
}
.slvr-optparams__table th {
  padding: 6px 10px;
  text-align: left;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--text-muted);
  border-bottom: 1px solid var(--border);
}
.slvr-optparams__table td {
  padding: 5px 10px;
  border-bottom: 1px solid rgba(255,255,255,.04);
  color: var(--text-secondary);
}
.slvr-optparams__tr--best td {
  background: rgba(30,144,255,.06);
  color: var(--text-primary);
  font-weight: 600;
}
.slvr-optparams__more {
  font-size: 10px;
  color: var(--text-muted);
  text-align: center;
  padding: 6px;
}
.slvr-muted  { color: var(--text-muted) !important; }

/* ── Roth Prescription Panel (rpo-*) ─────────────────────────────────────── */
.rpo-shell {
  display: flex;
  flex-direction: column;
  gap: 20px;
  padding: 18px 20px;
}

/* Config header */
.rpo-config { display: flex; flex-direction: column; gap: 12px; }
.rpo-config-header { border-bottom: 1px solid var(--border); padding-bottom: 10px; }
.rpo-config-title { font-size: 1.05rem; font-weight: 700; color: var(--text-primary); }
.rpo-config-sub   { font-size: 11px; color: var(--text-muted); margin-left: 8px; }

.rpo-field { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.rpo-label { font-size: 12px; font-weight: 600; color: var(--text-secondary); white-space: nowrap; }
.rpo-depth-locked { font-size: 13px; color: var(--text-muted); }
.rpo-tier-badge { display: inline-block; font-size: 9px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; padding: 1px 5px; border-radius: 3px; background: rgba(255,179,0,.15); color: #f0a500; margin-left: 4px; vertical-align: middle; }
.rpo-select {
  width: fit-content; min-width: 180px; padding: 5px 10px;
  padding-right: 28px;
  background: var(--bg-input); color: var(--text-primary);
  border: 1px solid var(--border); border-radius: 5px; font-size: 13px;
  position: relative; z-index: 5;
  appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238AAEC8'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
}
.rpo-thorough {
  display: flex; align-items: center; gap: 8px;
  font-size: 12px; color: var(--text-secondary); cursor: pointer;
}
.rpo-hint { font-size: 11px; color: var(--text-muted); font-style: italic; }

.rpo-slider-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 4px;
}
.rpo-slider { flex: 1; accent-color: var(--accent); }
.rpo-slider-endlabel { font-size: 11px; color: var(--text-muted); white-space: nowrap; }
.rpo-slider-value {
    font-size: 12px;
    font-weight: 600;
    color: var(--accent);
    min-width: 32px;
    text-align: right;
}

/* Run button */
.rpo-run-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 20px; border-radius: 7px; border: none; cursor: pointer;
  font-size: 14px; font-weight: 600;
  background: var(--blue); color: #fff; transition: opacity .15s;
}
.rpo-run-btn:hover { opacity: .88; }
.rpo-run-btn--busy { background: var(--bg-card); color: var(--text-muted); cursor: default; }

.rpo-spinner {
  width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid var(--border); border-top-color: var(--blue);
  animation: spin .7s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

.rpo-progress { font-size: 12px; color: var(--text-muted); font-style: italic; margin-top: 4px; }
.rpo-error    { font-size: 12px; color: var(--red); background: rgba(255,80,80,.1);
  border: 1px solid rgba(255,80,80,.3); border-radius: 5px; padding: 8px 12px; margin-top: 4px; }

/* How it works */
.rpo-howit-link { color: var(--blue); cursor: pointer; text-decoration: none; }
.rpo-howit-link:hover { text-decoration: underline; }
.rpo-howit { font-size: 12px; color: var(--text-muted); display: flex; flex-direction: column; gap: 5px;
  background: var(--bg-surface); border-radius: 6px; padding: 10px 12px; }
.rpo-howit__title { font-weight: 700; color: var(--text-secondary); }
.rpo-howit__body  { line-height: 1.55; }
.rpo-howit__lift  {
  font-size: 11.5px; color: var(--blue);
  background: var(--blue-dim); border-radius: 5px; padding: 7px 10px;
}

/* Banner */
.rpo-banner {
  background: var(--bg-card); border: 1px solid var(--border);
  border-radius: 8px; padding: 14px 18px; display: flex; flex-direction: column; gap: 6px;
}
.rpo-banner__main {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  font-size: 14px; color: var(--text-primary);
}
.rpo-banner__main--warn { color: var(--yellow, #f1c40f); }
.rpo-banner__label { font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: var(--text-muted); }
.rpo-banner__val { color: var(--text-primary); }
.rpo-banner__sep { color: var(--border-strong); user-select: none; }
.rpo-banner__lift { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 12px; }
.rpo-lift         { font-weight: 600; }
.rpo-lift--pos    { color: var(--green); }
.rpo-lift--neg    { color: var(--red); }
.rpo-irmaa-clear  { font-size: 12px; color: var(--green); font-weight: 600; }
.rpo-irmaa-warn   { font-size: 12px; color: #f39c12; }

/* Inline insights in banner */
.rpo-banner__insights {
  display: flex; flex-direction: column; gap: 6px;
  margin-top: 8px; padding: 8px 10px;
  background: rgba(77,166,255,.06); border-radius: 6px;
  font-size: 12px; color: var(--text-secondary);
}
.rpo-banner__insight {
  display: flex; align-items: baseline; gap: 6px; line-height: 1.45;
}
.rpo-banner__insight-icon { flex-shrink: 0; }

/* Tax settings summary card (RUO) */
.rpo-tax-summary {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--bg-input, rgba(255,255,255,.04));
  border: 1px solid var(--border);
  border-radius: var(--radius-sm, 6px);
  padding: 8px 12px;
  margin-bottom: 10px;
}
.rpo-tax-summary__items {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  flex: 1;
}
.rpo-tax-summary__item {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
}
.rpo-tax-summary__label {
  color: var(--text-muted);
  font-weight: 400;
}
.rpo-tax-summary__value {
  color: var(--text-primary);
  font-weight: 600;
}
.rpo-tax-summary__link {
  font-size: 11px;
  color: var(--blue, #1E90FF);
  cursor: pointer;
  white-space: nowrap;
  text-decoration: underline;
  text-decoration-color: transparent;
  transition: text-decoration-color 0.15s;
}
.rpo-tax-summary__link:hover {
  text-decoration-color: var(--blue, #1E90FF);
}

/* Manual Roth conversion notice */
.rpo-manual-roth-notice {
  background: rgba(142, 68, 173, .12);
  border-left: 3px solid #8E44AD;
  color: var(--text-secondary, #bbb);
  padding: 8px 12px;
  border-radius: 4px;
  font-size: 12px;
  line-height: 1.4;
  margin-bottom: 10px;
}

/* Apply button */
.rpo-apply-row  { display: flex; align-items: center; gap: 10px; margin-top: 4px; }
.rpo-apply-btn  {
  padding: 6px 16px; border-radius: 6px; border: none; cursor: pointer;
  font-size: 13px; font-weight: 600;
  background: var(--green); color: #fff; transition: opacity .15s;
}
.rpo-apply-btn:hover { opacity: .88; }
.rpo-apply-btn--busy { background: var(--bg-card); color: var(--text-muted); cursor: default; }
.rpo-apply-hint { font-size: 11px; color: var(--text-muted); }
.rpo-apply-done { font-size: 12px; color: var(--green); font-weight: 600; }

/* Section titles */
.rpo-section-title {
  font-size: 13px; font-weight: 700; color: var(--text-primary);
  border-bottom: 1px solid var(--border); padding-bottom: 6px;
  display: flex; align-items: baseline; gap: 10px;
}
.rpo-section-title--presc { margin-top: 4px; }
.rpo-section-sub { font-size: 11px; color: var(--text-muted); font-weight: 400; }

/* Benefit headline */
.rpo-banner__headline { font-size: 15px; font-weight: 600; padding: 4px 0; }
.rpo-banner__benefit--pos { color: var(--green); }
.rpo-banner__benefit--neg { color: var(--red); }

/* Before / After comparison card */
.rpo-before-after {
  display: flex; align-items: stretch; gap: 0; margin: 8px 0;
  border: 1px solid var(--border); border-radius: 8px; overflow: hidden;
}
.rpo-ba-card {
  flex: 1; padding: 10px 14px; display: flex; flex-direction: column; gap: 3px;
  font-size: 12px; color: var(--text-secondary);
}
.rpo-ba-card--before { background: rgba(255,255,255,.02); }
.rpo-ba-card--after  { background: rgba(30,144,255,.06); }
.rpo-ba-card__label {
  font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: var(--text-muted); margin-bottom: 2px;
}
.rpo-ba-card__row { font-size: 12px; }
.rpo-ba-card__row--muted { font-size: 11px; color: var(--text-muted); font-style: italic; }
.rpo-ba-arrow {
  display: flex; align-items: center; padding: 0 10px;
  font-size: 20px; color: var(--text-muted); background: var(--bg-surface);
}

/* Column toggle button */
.rpo-toggle-cols {
  background: none; border: 1px solid var(--border); border-radius: 4px;
  padding: 2px 8px; font-size: 10px; color: var(--blue); cursor: pointer;
  margin-left: 8px;
}
.rpo-toggle-cols:hover { background: rgba(30,144,255,.08); }

/* Prescription summary */
.rpo-presc-summary {
  display: flex; flex-wrap: wrap; align-items: center; gap: 4px;
  font-size: 12px; color: var(--text-secondary);
  padding: 8px 0 6px; border-bottom: 1px solid var(--border); margin-bottom: 6px;
}
.rpo-presc-summary__sep { color: var(--border-strong); user-select: none; }
.rpo-presc-summary__warn { color: #f39c12; font-weight: 600; }

/* Prescription legend */
.rpo-presc-legend {
  display: flex; gap: 14px; flex-wrap: wrap;
  font-size: 11px; color: var(--text-muted); padding: 4px 0;
}
.rpo-presc-legend__item { display: flex; align-items: center; gap: 5px; }
.rpo-presc-legend__item::before {
  content: ""; width: 10px; height: 10px; border-radius: 2px; display: inline-block;
}
.rpo-presc-legend__item--conv::before  { background: rgba(30,144,255,.18); }
.rpo-presc-legend__item--irmaa::before { background: rgba(241,196,15,.22); }
.rpo-presc-legend__item--rmd::before   { background: rgba(46,204,113,.18); }

/* Table container */
.rpo-scroll { overflow-x: auto; border-radius: 7px; border: 1px solid var(--border); }
/* Year-by-year prescription table: cap height and enable vertical scroll */
.rpo-scroll:has(.rpo-table--presc) { max-height: 500px; overflow-y: auto; }
/* Match site-wide scrollbar style */
.rpo-scroll::-webkit-scrollbar { width: 8px; height: 8px; }
.rpo-scroll::-webkit-scrollbar-track { background: transparent; }
.rpo-scroll::-webkit-scrollbar-thumb { background: rgba(30,144,255,0.2); border-radius: 4px; }
.rpo-table--presc thead th {
  position: sticky; top: 0; background: var(--bg-surface); z-index: 1;
}
.rpo-table {
  width: 100%; border-collapse: collapse; font-size: 12px; white-space: nowrap;
}
.rpo-table th {
  padding: 7px 12px; text-align: right; font-size: 10px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted);
  background: var(--bg-surface); border-bottom: 1px solid var(--border);
}
.rpo-table td {
  padding: 6px 12px; text-align: right; color: var(--text-secondary);
  border-bottom: 1px solid rgba(255,255,255,.04);
}
.rpo-table tbody tr:hover td { background: var(--bg-card-hover, rgba(255,255,255,.03)); }

.rpo-num     { text-align: right; font-variant-numeric: tabular-nums; }
.rpo-col-pin { text-align: left !important; font-weight: 600; color: var(--text-primary) !important; 
  position: sticky; left: 0; background: var(--bg-surface); }
.rpo-col-age { text-align: left; font-weight: 700; color: var(--text-primary); }

/* Column accent colours */
.rpo-col-conv  { color: var(--blue) !important; }
.rpo-col-irmaa { color: var(--text-secondary); min-width: 160px; }
.rpo-col-tax   { color: var(--text-muted); }
.rpo-col-success { font-weight: 700; }
.rpo-col-p5    { color: var(--text-secondary); opacity: .85; }
.rpo-col-p95   { color: var(--green); opacity: .85; }
.rpo-col-warn  { color: #f39c12 !important; font-weight: 700; }

/* Row states */
.rpo-row--best     td { background: rgba(30,144,255,.06) !important; font-weight: 600; }
.rpo-row--baseline td { background: rgba(255,255,255,.025); font-style: italic; }
.rpo-row-conv  td { background: rgba(30,144,255,.04); }
.rpo-row-irmaa td { background: rgba(241,196,15,.06); }
.rpo-row-depleted td { color: var(--red) !important; opacity: .7; }

/* Cell colour helpers */
.rpo-pos         { color: var(--green) !important; }
.rpo-rmd         { color: #e67e22 !important; font-weight: 600; }
.rpo-conv-active { color: var(--blue) !important; font-weight: 700; }
.rpo-depleted    { color: var(--red) !important; }

/* Solvency colours */
.rpo-solv-hi  { color: var(--green) !important; }
.rpo-solv-mid { color: #f39c12 !important; }
.rpo-solv-lo  { color: var(--red) !important; }

/* IRMAA tier badges */
.rpo-irmaa-tier {
  display: inline-block; padding: 2px 6px; border-radius: 4px;
  font-size: 11px; font-weight: 600;
}
.rpo-irmaa-tier--1 { background: rgba(241,196,15,.2); color: #d4ac0d; }
.rpo-irmaa-tier--2 { background: rgba(243,156,18,.25); color: #d68910; }
.rpo-irmaa-tier--3,.rpo-irmaa-tier--4,.rpo-irmaa-tier--5 {
  background: rgba(255,80,80,.18); color: var(--red);
}
.rpo-irmaa-clear-dot { color: var(--green); font-size: 12px; }

/* Roth Opportunity Score column */
.rpo-col-score { min-width: 60px; text-align: center; }
.rpo-score {
  display: inline-block; padding: 2px 6px; border-radius: 4px;
  font-size: 11px; font-weight: 700; font-family: var(--font-mono);
}
.rpo-score--excellent { background: rgba(46,204,113,.18); color: var(--green); }
.rpo-score--good      { background: rgba(52,152,219,.15); color: var(--blue); }
.rpo-score--fair      { background: rgba(241,196,15,.18); color: #d4ac0d; }
.rpo-score--poor      { background: rgba(255,80,80,.15); color: var(--red); }

/* Footer totals row */
.rpo-footer-row td {
  padding: 7px 12px; font-weight: 700; color: var(--text-primary);
  border-top: 1px solid var(--border-strong); background: var(--bg-card);
  position: sticky; bottom: 0;
}
.rpo-footer-row .rpo-col-pin {
  text-align: left; position: sticky; left: 0; background: var(--bg-card);
}

/* Badge */
.rpo-badge {
  display: inline-block; padding: 1px 6px; border-radius: 4px;
  font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  background: var(--bg-surface); color: var(--text-muted); margin-left: 5px;
}
.rpo-badge--best { background: var(--blue-dim); color: var(--blue); }

/* Empty state */
.rpo-empty {
  text-align: center; padding: 40px 24px; color: var(--text-muted);
  display: flex; flex-direction: column; align-items: center; gap: 10px;
}
.rpo-empty__icon { font-size: 3rem; }
.rpo-empty__text { font-size: 14px; color: var(--text-secondary); }
.rpo-empty__sub  { font-size: 12px; max-width: 520px; line-height: 1.6; }

/* Strategy Insights card */
.rpo-insights {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 8px);
  padding: 14px 16px;
  margin: 8px 0 12px;
}
.rpo-insights__title {
  font-size: 13px;
  font-weight: 700;
  color: var(--text-primary);
  margin-bottom: 10px;
}
.rpo-insights__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.rpo-insight {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 8px 10px;
  border-radius: var(--radius-sm, 4px);
  background: var(--bg-input);
  border-left: 3px solid var(--border);
}
.rpo-insight--sstiming       { border-left-color: var(--blue); }
.rpo-insight--irmaaavoidance { border-left-color: #f39c12; }
.rpo-insight--rothwindow     { border-left-color: var(--green); }
.rpo-insight--rmdreduction   { border-left-color: #e67e22; }
.rpo-insight--successrate    { border-left-color: var(--green); }
.rpo-insight--wealthimpact   { border-left-color: var(--blue); }
.rpo-insight--taxefficiency  { border-left-color: #9b59b6; }
.rpo-insight__icon {
  font-size: 11px;
  font-weight: 700;
  color: var(--text-muted);
  min-width: 22px;
  text-align: center;
  padding-top: 1px;
}
.rpo-insight__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.rpo-insight__text strong {
  font-size: 12px;
  color: var(--text-primary);
}
.rpo-insight__detail {
  font-size: 11px;
  color: var(--text-secondary);
  line-height: 1.4;
}

/* ── Roth Quarterly Planner (rqp-*) ─────────────────────────────────────── */
.rqp-shell {
  display: flex; flex-direction: column; gap: 10px;
  padding: 0;
}
.rqp-header { display: none; /* title/sub handled by ConfigSection wrapper */ }

.rqp-strategy-row, .rqp-ytd-row {
  display: flex; align-items: center; gap: 10px;
}
.rqp-label { font-size: 12px; font-weight: 600; color: var(--text-secondary); min-width: 120px; }
.rqp-select {
  font-size: 13px; padding: 4px 8px; border-radius: 6px;
  border: 1px solid var(--border); background: var(--input-bg, transparent);
  color: var(--text-primary);
}
.rqp-input {
  font-size: 13px; padding: 4px 8px; border-radius: 6px; width: 140px;
  border: 1px solid var(--border); background: var(--input-bg, transparent);
  color: var(--text-primary);
}

.rqp-card {
  border: 1px solid var(--border); border-radius: 8px;
  overflow: hidden;
  background: transparent;
}
.rqp-card__header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 12px;
  background: var(--subtle-bg, rgba(255,255,255,0.03));
  border-bottom: 1px solid var(--border);
}
.rqp-card__quarter { font-weight: 700; font-size: 13px; color: var(--text-primary); }
.rqp-card__body    { padding: 10px 12px; display: flex; flex-direction: column; gap: 10px; }

.rqp-kpi { text-align: center; }
.rqp-kpi__label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-muted); }
.rqp-kpi__value { display: block; font-size: 1.3rem; font-weight: 800; color: var(--accent, #2563eb); }

.rqp-metrics { display: flex; gap: 16px; flex-wrap: wrap; }
.rqp-metric  { flex: 1; min-width: 120px; text-align: center; }
.rqp-metric__label { font-size: 11px; color: var(--text-muted); display: block; }
.rqp-metric__value { font-size: 15px; font-weight: 700; color: var(--text-primary); display: block; }
.rqp-metric__sub   { font-size: 10px; color: var(--text-muted); display: block; }

.rqp-progress { margin-top: 4px; }
.rqp-progress__label  { font-size: 11px; color: var(--text-secondary); margin-bottom: 4px; }
.rqp-progress__target { color: var(--text-muted); }
.rqp-progress__bar {
  height: 8px; border-radius: 4px;
  background: var(--progress-bg, #e5e7eb); position: relative; overflow: hidden;
}
.rqp-progress__fill { height: 100%; border-radius: 4px; position: absolute; top: 0; }
.rqp-progress__fill--ytd { background: var(--accent, #2563eb); left: 0; }
.rqp-progress__fill--rec { background: var(--accent-light, #93bbfd); }

.rqp-signal {
  display: flex; align-items: center; gap: 6px;
  font-size: 12px; color: var(--text-secondary);
  padding: 6px 10px; background: var(--subtle-bg, rgba(255,255,255,0.03)); border-radius: 6px;
}
.rqp-signal__icon { font-size: 14px; }

.rqp-irmaa-warn {
  font-size: 12px; color: var(--warning-text, #f59e0b); background: var(--warning-bg, rgba(245, 158, 11, 0.1));
  padding: 8px 10px; border-radius: 6px; border-left: 3px solid var(--warning-text, #f59e0b);
}
.rqp-strategy-note { font-size: 11px; color: var(--text-muted); font-style: italic; }
.rqp-warn { color: #dc2626 !important; }

.rqp-badge {
  font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 10px;
  text-transform: uppercase; letter-spacing: 0.3px;
}
.rqp-badge--excellent { background: #dcfce7; color: #166534; }
.rqp-badge--good      { background: #dbeafe; color: #1e40af; }
.rqp-badge--fair       { background: #fef9c3; color: #854d0e; }
.rqp-badge--poor       { background: #fee2e2; color: #991b1b; }

.rqp-lots { margin-top: 12px; border-top: 1px solid var(--border); padding-top: 10px; }
.rqp-lots__header { font-size: 12px; font-weight: 700; color: var(--text-primary); margin-bottom: 6px; }
.rqp-lots__table { width: 100%; border-collapse: collapse; font-size: 12px; }
.rqp-lots__table th { text-align: left; font-weight: 600; color: var(--text-muted); padding: 4px 8px 4px 0; border-bottom: 1px solid var(--border); }
.rqp-lots__table td { padding: 4px 8px 4px 0; border-bottom: 1px solid var(--border-light, #eee); }
.rqp-lots__ticker { font-weight: 600; font-family: monospace; }
.rqp-lots__right { text-align: right; }
.rqp-lots__rationale { font-size: 11px; color: var(--text-muted); font-style: italic; margin-top: 6px; }

/* ── Tax Regime Stress Panel ─────────────────────────────────────────────── */
.trs-shell { padding: 0 8px; }
.trs-config { margin-bottom: 12px; }
.trs-config-header { margin-bottom: 8px; }
.trs-config-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--text-primary);
}
.trs-config-sub {
  display: block;
  font-size: 12px;
  color: var(--text-secondary);
  margin-top: 2px;
}
.trs-context {
  font-size: 12px;
  color: var(--text-secondary);
  margin-bottom: 10px;
  line-height: 1.6;
}
.trs-stability {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  border-radius: var(--radius-sm, 4px);
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 4px;
}
.trs-stability--stable {
  background: rgba(46,204,113,.12);
  color: var(--green);
  border: 1px solid rgba(46,204,113,.25);
}
.trs-stability--sensitive {
  background: rgba(241,196,15,.12);
  color: #d4ac0d;
  border: 1px solid rgba(241,196,15,.3);
}
.trs-stability__icon { font-size: 15px; }
.trs-stability-note {
  font-size: 12px;
  color: var(--text-secondary);
  margin-bottom: 12px;
  line-height: 1.5;
}
.trs-insights {
  margin-top: 12px;
  padding: 12px 14px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 8px);
}
.trs-insights__title {
  font-size: 13px;
  font-weight: 700;
  color: var(--text-primary);
  margin-bottom: 8px;
}
.trs-insights__list {
  padding-left: 18px;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.trs-insights__item {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.5;
}

/* ── ConfigPanel: CAPE Valuation Model section ───────────────────────────── */
.cape-sub-section {
  margin-bottom: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,.07));
}
.cape-sub-section:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}

.cape-sub-header {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--text-muted);
  margin-bottom: 8px;
}

/* Level badge shown when Global CAPE table is open */
.cape-mode-badge {
  margin: 6px 0 10px;
}
.cape-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .02em;
}
.cape-badge--l3 {
  background: rgba(52,152,219,.18);
  color: #3498db;
  border: 1px solid rgba(52,152,219,.30);
}
.cape-badge--l2 {
  background: rgba(149,165,166,.14);
  color: var(--text-secondary, #aaa);
  border: 1px solid rgba(149,165,166,.24);
}

/* 3-column header + data rows */
.cape-table-header,
.cape-table-row {
  display: grid;
  grid-template-columns: 1fr 80px 70px;
  align-items: center;
  gap: 6px;
}
.cape-table-header {
  padding: 3px 0 5px;
  border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,.07));
  margin-bottom: 3px;
}
.cape-table-header span {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
}
.cape-table-header .cape-col-val { text-align: right; }

.cape-table-row {
  padding: 4px 0;
  border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,.04));
}
.cape-table-row:last-of-type { border-bottom: none; }
.cape-table-row:hover { background: rgba(255,255,255,.03); border-radius: 4px; }

.cape-col-asset {
  font-size: 12px;
  color: var(--text-primary);
}
.cape-col-val {
  text-align: right;
}
.cape-col-val .decimal-input,
.cape-col-val input {
  width: 64px;
  text-align: right;
}

.cape-table-footnote {
  margin-top: 8px;
  font-size: 11px;
  color: var(--text-muted);
  font-style: italic;
}

/* ═══════════════════════════════════════════════════════════════════════════════
   Estate-Aware Roth Optimization
   ═══════════════════════════════════════════════════════════════════════════════ */

.rpo-col-estate {
  color: #8e44ad;
  font-weight: 600;
}

.rpo-estate-summary {
  margin: 16px 0;
  padding: 14px 18px;
  background: rgba(142, 68, 173, 0.08);
  border: 1px solid rgba(142, 68, 173, 0.25);
  border-radius: 8px;
}

.rpo-estate-kpi {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 8px;
}
.rpo-estate-kpi__label {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #8e44ad;
}
.rpo-estate-kpi__value {
  font-size: 22px;
  font-weight: 800;
  color: var(--text-primary);
}

.rpo-estate-detail {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
  color: var(--text-secondary, #aaa);
  margin-bottom: 6px;
}
.rpo-estate-detail__note {
  font-style: italic;
  font-size: 11px;
  color: var(--text-muted);
}

.rpo-estate-formula {
  font-size: 11px;
  font-family: monospace;
  color: var(--text-muted);
  padding: 6px 8px;
  background: rgba(255,255,255,0.04);
  border-radius: 4px;
}

/* ═══════════════════════════════════════════════════════════════════════════════
   Behavioral Robustness Scorecard
   ═══════════════════════════════════════════════════════════════════════════════ */

.bsc-card {
  margin: 16px 0;
  padding: 14px 18px;
  background: var(--card-bg, rgba(255,255,255,0.04));
  border: 1px solid var(--border-subtle, rgba(255,255,255,0.10));
  border-radius: 8px;
}

.bsc-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 10px;
}
.bsc-title {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-secondary, #aaa);
}

.bsc-grade {
  font-size: 18px;
  font-weight: 800;
  padding: 2px 10px;
  border-radius: 6px;
}
.bsc-grade--excellent {
  background: rgba(46,204,113,0.15);
  color: #2ecc71;
}
.bsc-grade--good {
  background: rgba(52,152,219,0.15);
  color: #3498db;
}
.bsc-grade--fair {
  background: rgba(241,196,15,0.15);
  color: #f1c40f;
}
.bsc-grade--aggressive {
  background: rgba(231,76,60,0.15);
  color: #e74c3c;
}

.bsc-flag {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  margin-bottom: 10px;
  background: rgba(231,76,60,0.12);
  border: 1px solid rgba(231,76,60,0.35);
  border-radius: 6px;
  color: #e74c3c;
  font-size: 12px;
}
.bsc-flag__icon {
  font-weight: 900;
  font-size: 14px;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(231,76,60,0.25);
  border-radius: 50%;
}
.bsc-flag__text {
  font-weight: 700;
}
.bsc-flag__reason {
  width: 100%;
  font-weight: 400;
  color: var(--text-secondary, #aaa);
  font-size: 11px;
}

.bsc-metrics {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 16px;
  margin-bottom: 10px;
}
.bsc-metric {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 4px 0;
  border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.05));
}
.bsc-metric__label {
  font-size: 11px;
  color: var(--text-muted);
}
.bsc-metric__value {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-primary);
}

.bsc-insights {
  list-style: none;
  padding: 0;
  margin: 0;
}
.bsc-insight {
  padding: 5px 10px;
  margin: 3px 0;
  border-radius: 4px;
  font-size: 12px;
  line-height: 1.4;
}
.bsc-insight--danger {
  background: rgba(231,76,60,0.10);
  border-left: 3px solid #e74c3c;
  color: #e74c3c;
}
.bsc-insight--warn {
  background: rgba(241,196,15,0.10);
  border-left: 3px solid #f1c40f;
  color: #f1c40f;
}
.bsc-insight--info {
  background: rgba(52,152,219,0.10);
  border-left: 3px solid #3498db;
  color: #3498db;
}

/* ── Shared: year-by-year section used across all solver panels ──────── */
.slvr-yby-section {
  margin-top: 24px;
  border-top: 1px solid var(--border);
  padding-top: 16px;
}
/* Cap the YBY table inside RUO to same height as prescription tables */
.slvr-yby-section .yby-scroll {
  max-height: 500px;
  border: 1px solid var(--border);
  border-radius: 7px;
}
.slvr-yby-header {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
  font-size: 13px;
  font-weight: 700;
  color: var(--text-primary);
}
.slvr-yby-sub {
  font-size: 11px;
  font-weight: 400;
  color: var(--text-muted);
  flex: 1;
}
.slvr-yby-close {
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  padding: 2px 8px;
  font-size: 11px;
  cursor: pointer;
  margin-left: auto;
  transition: background 0.15s, color 0.15s;
}
.slvr-yby-close:hover { background: var(--blue-dim); color: var(--text-primary); }
.slvr-yby-placeholder {
  padding: 20px 24px;
  text-align: center;
  color: var(--text-muted);
  font-size: 13px;
  background: var(--bg-surface);
  border-radius: var(--radius);
  border: 1px solid var(--border);
}

/* ── Shared dialog action buttons (.btn --primary / --secondary) ──────── */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 7px 16px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  border: 1px solid transparent;
  line-height: 1;
  white-space: nowrap;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.btn--secondary {
  background: var(--bg-surface);
  border-color: var(--border-strong);
  color: var(--text-secondary);
}
.btn--secondary:hover {
  background: var(--bg-hover);
  border-color: var(--blue);
  color: var(--text-primary);
}
.btn--primary {
  background: var(--blue);
  border-color: var(--blue);
  color: #fff;
}
.btn--primary:hover {
  background: #3aa0ff;
  border-color: #3aa0ff;
}
.btn--danger {
  background: #dc2626;
  border-color: #dc2626;
  color: #fff;
}
.btn--danger:hover {
  background: #b91c1c;
  border-color: #b91c1c;
}

/* ── Login loading overlay ──────────────────────────────────────────────── */
.login-loading-overlay {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 16px; height: 60vh; color: var(--text-muted); font-size: 1rem;
}
.login-loading-text { font-size: 14px; color: var(--text-secondary); }

/* ── Login / Registration page ───────────────────────────────────────────── */
.login-backdrop {
  position: fixed;
  inset: 0;
  background: var(--bg-app, #0d1117);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9000;
}

.login-card {
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-radius: 14px;
  padding: 36px 40px 40px;
  width: min(90vw, 360px);
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.login-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 4px;
}

.login-brand-icon {
  width: 44px;
  height: 44px;
  flex-shrink: 0;
}

.login-brand-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.login-brand-name {
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--text-primary);
  letter-spacing: -0.01em;
  line-height: 1.15;
}

.login-brand-tagline {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-muted);
  line-height: 1;
}

.login-subtitle {
  font-size: 0.85rem;
  color: var(--text-muted);
  margin: 0;
}

.login-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.login-label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.login-input {
  background: var(--bg-input);
  border: 1px solid var(--border-strong);
  border-radius: 6px;
  color: var(--text-primary);
  font-size: 0.9rem;
  padding: 8px 12px;
  outline: none;
  transition: border-color 0.15s;
  width: 100%;
  box-sizing: border-box;
}

select.login-input {
  appearance: auto;
  cursor: pointer;
}

/* ── Custom dropdown (avoids native <select> popup offset in WebView2) ─── */
.login-select-wrap {
  position: relative;
}

.login-select-trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  text-align: left;
  cursor: pointer;
}

.login-select-arrow {
  font-size: 0.75rem;
  color: var(--text-muted);
  margin-left: 8px;
}

.login-select-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-radius: 6px;
  z-index: 100;
  max-height: 180px;
  overflow-y: auto;
  box-shadow: 0 6px 20px rgba(0,0,0,.4);
}

.login-select-option {
  display: block;
  width: 100%;
  padding: 8px 12px;
  border: none;
  background: transparent;
  color: var(--text-primary);
  font-size: 0.9rem;
  text-align: left;
  cursor: pointer;
}
.login-select-option:hover {
  background: var(--bg-hover);
}
.login-select-option--active {
  color: var(--blue);
  font-weight: 600;
}

.login-input:focus {
  border-color: var(--blue);
}

.login-error {
  font-size: 0.82rem;
  color: var(--red, #e74c3c);
  margin: 0;
}

.login-btn {
  padding: 10px 16px;
  border-radius: 7px;
  border: 1px solid transparent;
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
  margin-top: 4px;
}

.login-btn--primary {
  background: var(--blue);
  border-color: var(--blue);
  color: #fff;
}

.login-btn--primary:hover:not(:disabled) {
  background: #3aa0ff;
  border-color: #3aa0ff;
}

.login-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

/* Face ID / biometric button */
.login-btn--biometric {
  background: transparent;
  border-color: var(--border-strong);
  color: var(--text-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.login-btn--biometric:hover:not(:disabled) {
  background: var(--bg-hover);
  border-color: var(--blue);
}
.login-faceid-icon {
  font-size: 18px;
  line-height: 1;
}

/* "or" divider between Sign In and Face ID buttons */
.login-divider {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 6px 0;
  color: var(--text-muted);
  font-size: 12px;
}
.login-divider::before,
.login-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--border);
}

/* ── Legal disclaimer footer ─────────────────────────────── */
.legal-disclaimer {
  text-align: center;
  font-size: 11px;
  color: var(--text-muted);
  background: #0B1C30;
  padding: 12px 16px;
  line-height: 1.4;
  letter-spacing: 0.01em;
}
.legal-disclaimer__short { display: none; }
.legal-disclaimer__toggle {
  cursor: pointer;
  color: var(--accent, #4a90d9);
  text-decoration: underline;
  margin-left: 4px;
  position: relative;
  z-index: 1001;
}
@media (max-width: 768px) {
  .legal-disclaimer__short { display: inline; }
  .legal-disclaimer__full  { display: none; }
  .legal-disclaimer__full--visible { display: inline; }
}
.legal-disclaimer__version {
  display: block;
  margin-top: 4px;
  font-size: 10px;
  color: var(--text-muted);
  opacity: 0.5;
}

/* ============================================================
   Goal Insights Card
   ============================================================ */
.insight-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 18px;
  margin: 12px 0 0;
  border-left: 3px solid var(--green);
}
.insight-card.insight--green  { border-left-color: var(--green); }
.insight-card.insight--amber  { border-left-color: var(--amber); }
.insight-card.insight--red    { border-left-color: var(--red); }

.insight-card__header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.insight-card__icon {
  font-size: 14px;
  line-height: 1;
}
.insight--green .insight-card__icon { color: var(--green); }
.insight--amber .insight-card__icon { color: var(--amber); }
.insight--red   .insight-card__icon { color: var(--red); }
.insight-card__headline {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary);
}
.insight-card__solving {
  font-size: 11px;
  color: var(--text-muted);
  font-style: italic;
  margin-left: auto;
}
.insight-card__text {
  font-size: 12px;
  color: var(--text-muted);
  margin: 0 0 8px;
  line-height: 1.5;
}
.insight-card__suggestion {
  font-size: 12px;
  color: var(--text-primary);
  background: rgba(30, 144, 255, 0.06);
  border-radius: var(--radius-sm);
  padding: 8px 12px;
  margin-top: 6px;
  display: flex;
  align-items: flex-start;
  gap: 6px;
  line-height: 1.5;
}
.insight-card__suggestion--secondary {
  background: rgba(255, 255, 255, 0.03);
  color: var(--text-muted);
}
.insight-card__suggestion--goal {
  background: rgba(30, 144, 255, 0.06);
  border-left: 3px solid var(--blue);
  margin-top: 4px;
}
.insight-card__suggest-icon {
  color: var(--blue);
  flex-shrink: 0;
  font-size: 12px;
  margin-top: 1px;
}
.insight-card__apply-btn {
  margin-left: 8px;
  padding: 2px 10px;
  font-size: 11px;
  border: 1px solid var(--blue);
  border-radius: var(--radius);
  background: transparent;
  color: var(--blue);
  cursor: pointer;
  white-space: nowrap;
}
.insight-card__apply-btn:hover {
  background: var(--blue);
  color: #fff;
}
.insight-card__guide {
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid rgba(255,255,255,0.06);
  text-align: center;
}
.insight-card__guide-link {
  color: var(--accent);
  text-decoration: none;
  font-size: 11px;
  font-weight: 500;
}
.insight-card__guide-link:hover { text-decoration: underline; }
.insight-card__diff-summary {
  font-size: 11px;
  color: var(--text-muted);
  background: rgba(255, 255, 255, 0.04);
  border-radius: var(--radius-sm);
  padding: 5px 10px;
  margin-bottom: 6px;
  display: flex;
  align-items: center;
  gap: 6px;
  line-height: 1.4;
}
.insight-card__diff-icon {
  color: var(--blue);
  font-weight: 700;
  font-size: 12px;
  flex-shrink: 0;
}

/* ============================================================
   Simulation History Panel
   ============================================================ */
.sim-history-panel {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 18px;
  margin: 12px 0 0;
}
.sim-history-panel__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}
.sim-history-panel__title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary);
}
.sim-history-panel__count {
  font-size: 11px;
  color: var(--text-muted);
}

.sim-history-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.sim-history-table thead th {
  text-align: left;
  font-size: 11px;
  color: var(--text-muted);
  font-weight: 500;
  padding: 4px 8px;
  border-bottom: 1px solid var(--border);
}
.sim-history-row {
  cursor: pointer;
  transition: background 0.15s;
}
.sim-history-row:hover {
  background: rgba(255, 255, 255, 0.03);
}
.sim-history-row--current {
  font-weight: 500;
}
.sim-history-row td {
  padding: 6px 8px;
  border-bottom: 1px solid rgba(255,255,255,0.04);
  color: var(--text-primary);
}
.sim-history-row__expand {
  width: 20px;
  font-size: 10px;
  color: var(--text-muted);
}

.success--green { color: var(--green); }
.success--amber { color: var(--amber); }
.success--red   { color: var(--red); }

.sim-history-detail td {
  padding: 0;
  border-bottom: 1px solid var(--border);
}
.sim-history-detail__content {
  padding: 10px 12px 10px 28px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: rgba(255, 255, 255, 0.02);
}
.sim-history-detail__outcomes {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.sim-history-detail__metric {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
}
.sim-history-detail__label {
  font-size: 10px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.sim-history-detail__changes {
  font-size: 12px;
}
.sim-history-detail__changes-header {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  margin-bottom: 4px;
}
.sim-history-detail__change {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 2px 0;
}
.sim-history-detail__change-label {
  font-weight: 500;
  color: var(--text-primary);
  min-width: 120px;
}
.sim-history-detail__change-old {
  color: var(--text-muted);
  text-decoration: line-through;
}
.sim-history-detail__change-arrow {
  color: var(--text-muted);
  font-size: 10px;
}
.sim-history-detail__change-new {
  color: var(--blue);
  font-weight: 500;
}
.sim-history-detail__no-changes {
  font-size: 11px;
  color: var(--text-muted);
  font-style: italic;
}
.sim-history-detail__deltas {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  font-size: 12px;
}
.sim-history-detail__delta {
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  font-weight: 500;
}
.delta--positive {
  color: var(--green);
  background: rgba(76, 175, 80, 0.1);
}
.delta--negative {
  color: var(--red);
  background: rgba(244, 67, 54, 0.1);
}

.overview-history {
  grid-column: 1 / -1;
}

/* ============================================================
   Levers Card (5 Levers checklist)
   ============================================================ */
.levers-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin: 10px 0 0;
  overflow: hidden;
}
.levers-card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 16px;
  border-bottom: 1px solid var(--border);
}
.levers-card__title {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--text-muted);
}
.levers-card__title--link {
  text-decoration: none;
  cursor: pointer;
  transition: color 0.15s;
}
.levers-card__title--link:hover {
  color: var(--blue);
}
.levers-card__score {
  font-size: 12px;
  font-weight: 600;
  color: var(--green);
}
.levers-card__guide-link {
  color: var(--accent);
  text-decoration: none;
  font-size: 11px;
  font-weight: 500;
}
.levers-card__guide-link:hover { text-decoration: underline; }
/* Pro badge inside help modal */
.help-pro-badge {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  color: var(--blue);
  background: var(--blue-dim);
  border: 1px solid var(--blue);
  border-radius: 3px;
  padding: 1px 5px;
  vertical-align: middle;
  line-height: 1.4;
  letter-spacing: 0.02em;
  margin-left: 4px;
}

/* FAQ content inside help-modal */
.help-modal__body .faq-item {
  margin-bottom: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid color-mix(in srgb, var(--border) 50%, transparent);
}
.help-modal__body .faq-item:last-child {
  border-bottom: none;
}
.help-modal__body .category {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-muted);
  margin: 20px 0 10px;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--border);
}

/* Guide content inside help-modal */
.help-modal__body .card-note {
  background: color-mix(in srgb, var(--accent) 8%, transparent);
  border-left: 3px solid var(--accent);
  padding: 10px 14px;
  border-radius: 4px;
  margin: 12px 0;
  font-size: 13px;
  line-height: 1.5;
}
.help-modal__body .part-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--accent);
  margin: 20px 0 4px;
}
.help-modal__body .subtitle {
  font-size: 14px;
  color: var(--text-muted);
  margin: 0 0 16px;
  line-height: 1.5;
}
.help-modal__body .disclaimer {
  font-size: 11px;
  color: var(--text-muted);
  border-top: 1px solid var(--border);
  padding-top: 12px;
  margin-top: 20px;
  line-height: 1.5;
}
.help-modal__body h1 { font-size: 18px; margin: 0 0 8px; color: var(--text-primary); }
.help-modal__body h2 { font-size: 15px; margin: 20px 0 8px; color: var(--blue); }
.help-modal__body h3 { font-size: 13px; margin: 14px 0 6px; color: var(--text-primary); }
.help-modal__body p { font-size: 13px; line-height: 1.55; margin: 0 0 10px; }
.help-modal__body ol, .help-modal__body ul { font-size: 13px; line-height: 1.55; padding-left: 20px; margin: 0 0 10px; }
.help-modal__body table { width: 100%; border-collapse: collapse; font-size: 12px; margin: 10px 0; }
.help-modal__body th { text-align: left; padding: 6px 8px; background: var(--bg-hover); border-bottom: 1px solid var(--border); font-weight: 600; }
.help-modal__body td { padding: 6px 8px; border-bottom: 1px solid color-mix(in srgb, var(--border) 50%, transparent); }
.levers-card__body { padding: 6px 16px 10px; }
.lever-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 6px 0;
  border-bottom: 1px solid color-mix(in srgb, var(--border) 40%, transparent);
}
.lever-row:last-child { border-bottom: none; }
.lever-row__icon {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  font-size: 11px;
  font-weight: 700;
  margin-top: 1px;
  color: var(--text-muted);
  border: 1.5px solid var(--text-muted);
  opacity: 0.5;
}
.lever-row--active .lever-row__icon {
  color: var(--green);
  border-color: var(--green);
  opacity: 1;
}
.lever-row__content { flex: 1; min-width: 0; }
.lever-row__name {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-primary);
  display: block;
}
.lever-row--active .lever-row__name { color: var(--text-primary); }
.lever-row:not(.lever-row--active) .lever-row__name { color: var(--text-muted); }
.lever-row__detail {
  font-size: 11px;
  color: var(--green);
  display: block;
}
.lever-row__suggestion {
  font-size: 11px;
  color: var(--text-muted);
  font-style: italic;
  display: block;
}
.lever-row__pro-badge {
  display: inline-block;
  font-size: 9px; font-weight: 700; font-style: normal;
  letter-spacing: .05em; text-transform: uppercase;
  padding: 1px 5px; border-radius: 3px;
  background: rgba(255,179,0,.15); color: #f0a500;
  margin-left: 6px; vertical-align: middle;
}

/* ============================================================
   Assumptions Card (collapsible, below GoalInsights)
   ============================================================ */
.assumptions-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin: 10px 0 0;
  overflow: hidden;
}
.assumptions-card__toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  background: none;
  border: none;
  padding: 10px 16px;
  cursor: pointer;
  color: var(--text-muted);
  font-size: 12px;
}
.assumptions-card__toggle:hover { color: var(--text-primary); }
.assumptions-card__title { font-weight: 600; letter-spacing: 0.03em; text-transform: uppercase; }
.assumptions-card__arrow { font-size: 14px; }
.assumptions-card__body { padding: 0 16px 14px; }
.assumptions-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px 24px;
}
.assumptions-group-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
  margin-bottom: 6px;
  padding-bottom: 3px;
  border-bottom: 1px solid var(--border);
}
.assumptions-item {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  padding: 2px 0;
}
.assumptions-key { color: var(--text-muted); }
.assumptions-val { color: var(--text-primary); font-weight: 500; }
@media (max-width: 600px) {
  .assumptions-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   Onboarding Wizard
   ============================================================ */
@keyframes onboardIn {
  from { opacity: 0; transform: translateY(-10px) scale(0.985); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

.onboard-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.7);
  z-index: 10001;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.onboard-card {
  position: relative;
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  border-top: 3px solid var(--blue);
  border-radius: var(--radius-lg);
  width: 480px;
  max-width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,0.6);
  display: flex;
  flex-direction: column;
  padding: 28px 32px 24px;
  animation: onboardIn 0.22s ease-out both;
  max-height: 90dvh; /* iOS: tracks visible viewport, excludes browser chrome */
}

/* ── Brand header (wizard) ───────────────────────────── */
.onboard-brand {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-bottom: 16px;
}
.onboard-brand__logo { width: 22px; height: 22px; }
.onboard-brand__name {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--text-primary);
}

/* ── Progress dots ───────────────────────────────────── */
.onboard-progress {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  margin-bottom: 28px;
  position: relative;
}
.onboard-progress__step-count {
  position: absolute;
  right: 0;
  font-size: 11px;
  color: var(--text-muted);
  letter-spacing: 0.02em;
}
.onboard-progress__dot {
  width: 10px; height: 10px;
  border-radius: 50%;
  background: var(--border-strong);
  transition: background 0.3s, transform 0.3s;
  flex-shrink: 0;
}
.onboard-progress__dot--active {
  background: var(--blue);
  transform: scale(1.15);
}
.onboard-progress__dot--current {
  transform: scale(1.5);
  box-shadow: 0 0 0 3px rgba(30, 144, 255, 0.25);
}
.onboard-progress__line {
  width: 40px; height: 2px;
  background: var(--border-strong);
  transition: background 0.3s;
}
.onboard-progress__line--active { background: var(--blue); }

/* ── Content area ────────────────────────────────────── */
.onboard-body { flex: 1; min-height: 0; }
.onboard-title--center { text-align: center; }
.onboard-subtitle--center { text-align: center; }
.onboard-title {
  font-family: var(--font-ui);
  font-size: 20px;
  font-weight: 700;
  color: var(--text-primary);
  margin: 0 0 4px;
}
.onboard-subtitle {
  font-size: 13px;
  color: var(--text-muted);
  margin: 0 0 24px;
}

/* ── Form fields ─────────────────────────────────────── */
.onboard-field {
  margin-bottom: 16px;
}
.onboard-field--grow { flex: 1; min-width: 0; }
.onboard-field--small { width: 100px; flex-shrink: 0; }
.onboard-field--plan-name { margin-top: 12px; }
.onboard-label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 5px;
  letter-spacing: 0.02em;
}
.onboard-label-hint {
  font-weight: 400;
  color: var(--text-muted);
  font-size: 11px;
  margin-left: 4px;
}
.onboard-hint {
  display: block;
  font-size: 11px;
  color: var(--text-muted);
  margin-top: 4px;
}
.onboard-divider {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  border-top: 1px solid var(--border);
  padding-top: 14px;
  margin: 8px 0 14px;
}
.onboard-section-label {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted);
  margin-bottom: 10px;
}
.onboard-section-label--mt { margin-top: 16px; }
.onboard-row {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.onboard-row--mt { margin-top: 10px; }

/* Ensure inputs fill their field container */
.onboard-field .input-wrapper,
.onboard-field .input-field { width: 100%; box-sizing: border-box; }

/* ── Option cards (filing status / allocation) ───────── */
.onboard-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.onboard-cards--3 { grid-template-columns: 1fr 1fr 1fr; }
.onboard-option {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 14px 8px;
  background: var(--bg-input);
  border: 2px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s;
  color: var(--text-primary);
  font-family: var(--font-ui);
}
.onboard-option:hover { border-color: var(--blue); background: var(--bg-hover); }
.onboard-option--active {
  border-color: var(--blue);
  background: rgba(30, 144, 255, 0.12);
}
.onboard-option__icon { font-size: 22px; line-height: 1; }
.onboard-option__text { font-size: 13px; font-weight: 600; }
.onboard-option__desc {
  font-size: 10px;
  color: var(--text-muted);
  text-align: center;
  line-height: 1.3;
}

/* ── Portfolio total ─────────────────────────────────── */
.onboard-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 10px 14px;
  margin-bottom: 18px;
}
.onboard-total__label {
  font-size: 12px;
  font-weight: 500;
  color: var(--text-muted);
}
.onboard-total__value {
  font-family: var(--font-mono);
  font-size: 16px;
  font-weight: 700;
  color: var(--green);
}

/* ── Summary card (step 4) ───────────────────────────── */
.onboard-summary {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px 20px;
  margin-bottom: 16px;
}
.onboard-summary__row {
  display: flex;
  justify-content: space-between;
  padding: 6px 0;
}
.onboard-summary__label {
  font-size: 13px;
  color: var(--text-muted);
}
.onboard-summary__value {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-primary);
  font-family: var(--font-mono);
}
.onboard-summary__value--accent { color: var(--green); }
.onboard-summary__divider {
  height: 1px;
  background: var(--border);
  margin: 8px 0;
}
.onboard-note {
  font-size: 12px;
  color: var(--text-muted);
  text-align: center;
  margin: 0;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 8px 12px;
}

/* ── Navigation buttons ──────────────────────────────── */
.onboard-nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 24px;
  padding-top: 18px;
  border-top: 1px solid var(--border);
}
.onboard-btn {
  font-family: var(--font-ui);
  font-size: 14px;
  font-weight: 600;
  border: none;
  border-radius: var(--radius);
  padding: 10px 24px;
  cursor: pointer;
  transition: background 0.15s, transform 0.15s;
  letter-spacing: 0.02em;
}
.onboard-btn:active { transform: translateY(1px); }
.onboard-btn--back {
  background: transparent;
  color: var(--text-muted);
  border: 1px solid var(--border);
}
.onboard-btn--back:hover { background: var(--bg-hover); color: var(--text-primary); }
.onboard-btn--next {
  background: var(--blue);
  color: #fff;
}
.onboard-btn--next:hover { background: #1878d8; }
.onboard-btn--launch {
  background: var(--green);
  color: #fff;
  padding: 12px 32px;
  font-size: 15px;
}
.onboard-btn--launch:hover { background: #27ae60; }
.onboard-btn--launch:disabled {
  background: var(--bg-surface);
  color: var(--text-muted);
  cursor: not-allowed;
  opacity: 0.55;
}
.onboard-btn--launch:disabled:hover { background: var(--bg-surface); }
.onboard-btn--launch--full {
  margin: 20px auto 0;
  display: block;
  width: 100%;
}

/* ── Welcome / privacy step ─────────────────────────── */
.onboard-welcome {
  display: flex; flex-direction: column; align-items: center;
  justify-content: center; text-align: center; padding: 24px 16px;
}
.onboard-welcome__icon {
  font-size: 48px; margin-bottom: 8px;
  filter: drop-shadow(0 2px 8px rgba(46,204,113,.25));
}
.onboard-welcome__lead {
  font-size: 14px; color: var(--text-secondary); max-width: 360px;
  line-height: 1.5; margin: 8px 0 18px;
}
.onboard-welcome__bullets {
  text-align: left; display: inline-flex; flex-direction: column;
  gap: 8px; margin-bottom: 16px;
}
.onboard-welcome__bullet {
  font-size: 13px; color: var(--text-secondary); display: flex;
  align-items: baseline; gap: 8px;
}
.onboard-welcome__tagline {
  font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--text-muted); margin: 0;
}

/* ── Skip / cancel link ─────────────────────────────── */
.onboard-skip {
  position: absolute;
  top: 12px;
  right: 16px;
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: 12px;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: var(--radius);
  opacity: 0.7;
  transition: opacity 0.15s, color 0.15s;
}
.onboard-skip:hover {
  opacity: 1;
  color: var(--text-primary);
}

/* ── Quick Plan footer elements ─────────────────────── */
.onboard-link-row {
  text-align: center;
  margin-top: 16px;
}
.onboard-note--quick {
  margin-top: 14px;
}

/* ── Plan name text input (step 4) ─────────────────── */
.onboard-input {
  width: 100%;
  box-sizing: border-box;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-family: var(--font-ui);
  font-size: 14px;
  padding: 8px 10px;
  outline: none;
  transition: border-color 0.15s;
}
.onboard-input:focus { border-color: var(--blue); }
.onboard-input::placeholder { color: var(--text-muted); opacity: 0.7; }

/* ── Secondary outline button (full-setup CTA) ──────── */
.onboard-btn--secondary-outline {
  background: transparent;
  color: var(--text-secondary);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  padding: 8px 16px;
  font-size: 13px;
  font-family: var(--font-ui);
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}
.onboard-btn--secondary-outline:hover {
  border-color: var(--blue);
  color: var(--blue);
  background: rgba(30, 144, 255, 0.06);
}
.onboard-btn--full { width: 100%; }

/* ── "Want more control?" link ─────────────────────── */
.onboard-link {
  background: none;
  border: none;
  color: var(--blue);
  font-size: 13px;
  cursor: pointer;
  padding: 4px 0;
  font-family: var(--font-ui);
  text-decoration: none;
  opacity: 0.85;
  transition: opacity 0.15s;
}
.onboard-link:hover {
  opacity: 1;
  text-decoration: underline;
}

/* ── Mobile adjustments ──────────────────────────────── */
@media (max-width: 520px) {
  .onboard-card {
    padding: 14px 16px 14px;
    border-radius: var(--radius);
  }
  .onboard-title { font-size: 18px; }
  .onboard-subtitle { margin: 0 0 10px; }
  .onboard-progress { margin-bottom: 16px; }
  .onboard-field { margin-bottom: 10px; }
  .onboard-divider { padding-top: 8px; margin: 4px 0 8px; }
  .onboard-total { padding: 8px 12px; margin-bottom: 10px; }
  .onboard-nav { margin-top: 14px; padding-top: 12px; }
  .onboard-cards--3 { grid-template-columns: 1fr; }
  .onboard-cards { grid-template-columns: 1fr; }
  .onboard-option { flex-direction: row; gap: 10px; padding: 10px 12px; }
  .onboard-option__icon { font-size: 18px; }
  .onboard-row { flex-direction: column; gap: 0; }
  .onboard-field--small { width: 100%; }
  .onboard-progress__line { width: 24px; }
  .onboard-btn { padding: 8px 16px; font-size: 13px; }
  .onboard-btn--launch { padding: 10px 20px; font-size: 14px; }
  /* Quick Plan: tighten footer spacing to fit iOS viewport */
  .onboard-btn--launch--full { margin-top: 12px; }
  .onboard-brand { margin-bottom: 10px; }
  .onboard-progress__step-count { font-size: 10px; }
  .onboard-link-row { margin-top: 10px; }
  .onboard-note--quick { margin-top: 8px; padding: 6px 10px; }
}

/* ── Report Preview Modal ────────────────────────────────────── */
.rp-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.70);
  z-index: 10100;
  display: flex;
  align-items: stretch;
  justify-content: center;
  padding: 24px;
}
.rp-dialog {
  display: flex;
  flex-direction: column;
  background: #1e2a3a;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  box-shadow: 0 24px 64px rgba(0,0,0,0.6);
  width: 100%;
  max-width: 900px;
  overflow: hidden;
}
.rp-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: var(--bg-card);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.rp-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary);
}
.rp-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}
.rp-btn {
  border: none;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 500;
  padding: 6px 14px;
  cursor: pointer;
  transition: opacity 0.15s;
}
.rp-btn:hover { opacity: 0.85; }
.rp-btn--primary  { background: var(--blue); color: #fff; }
.rp-btn--secondary { background: var(--bg-surface); color: var(--text-primary); border: 1px solid var(--border); }
.rp-btn--close    { background: transparent; color: var(--text-muted); font-size: 16px; padding: 4px 10px; }
.rp-body {
  flex: 1;
  overflow: hidden;
  background: #fff;
}
.rp-iframe {
  width: 100%;
  height: 100%;
  border: none;
  display: block;
}
@media (max-width: 600px) {
  .rp-backdrop {
    padding: env(safe-area-inset-top, 0px) 0 env(safe-area-inset-bottom, 0px);
  }
  .rp-dialog {
    border-radius: 0;
    max-width: 100%;
  }
}
