    :root {
      --color-midnight:   #0A0F1E;
      --color-signal-50:  #E1F5EE;
      --color-signal-100: #9FE1CB;
      --color-signal-200: #5DCAA5;
      --color-signal-400: #1D9E75;
      --color-signal-600: #0F6E56;
      --color-yield-50:   #FAEEDA;
      --color-yield-200:  #D4A03C;
      --color-yield-400:  #BA7517;
      --color-steel-100:  #E2E0D8;
      --color-steel-200:  #B4B2A9;
      --color-steel-400:  #888780;
      --color-steel-600:  #5F5E5A;
      --color-red-400:    #D94545;
      --color-blue-400:   #4A90D9;
      --bg-primary:   #FFFFFF;
      --bg-secondary: #F5F4F0;
      --bg-surface:   #F1EFE8;
      --text-primary:   #0A0F1E;
      --text-secondary: #5F5E5A;
      --text-muted:     #888780;
      --border-subtle:  #E2E0D8;
      --font-display: 'Syne', sans-serif;
      --font-body:    'Syne', system-ui, sans-serif;
      --font-mono:    'DM Mono', monospace;
      --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --radius-pill: 9999px;
      --shadow-sm: 0 1px 3px rgba(10,15,30,0.06);
      --shadow-md: 0 4px 16px rgba(10,15,30,0.08);
      --sidebar-w-collapsed: 48px;
      --sidebar-w-expanded: 200px;
    }

    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    body { font-family: var(--font-body); font-size: 13px; color: var(--text-primary); background: var(--bg-primary); }

    /* -- Layout shell ----------------------------------------- */
    .shell { display: flex; min-height: 100vh; }

    /* -- Sidebar ---------------------------------------------- */
    .sidebar {
      width: var(--sidebar-w-collapsed); background: var(--color-midnight);
      display: flex; flex-direction: column;
      transition: width 0.2s ease; overflow: hidden;
      flex-shrink: 0; position: relative; z-index: 10;
    }
    .sidebar.expanded, .sidebar:hover { width: var(--sidebar-w-expanded); }
    .sb-logo {
      height: 48px; display: flex; align-items: center; justify-content: center;
      border-bottom: 1px solid rgba(255,255,255,0.06);
      overflow: hidden; flex-shrink: 0; padding: 0 12px;
    }
    .sb-logo img { display: block; }
    .sb-logo-short { height: 26px; width: 26px; display: block; }
    .sb-logo-full  { height: 22px; width: auto; display: none; }
    .sidebar.expanded .sb-logo-short, .sidebar:hover .sb-logo-short { display: none; }
    .sidebar.expanded .sb-logo-full,  .sidebar:hover .sb-logo-full  { display: block; }
    .sidebar-toggle {
      width: 100%; height: 40px; background: none; border: none;
      color: var(--text-muted); cursor: pointer;
      display: none; align-items: center; justify-content: center;
      border-bottom: 1px solid rgba(255,255,255,0.06); transition: color 0.15s;
    }
    .sidebar.expanded .sidebar-toggle,
    .sidebar:hover .sidebar-toggle { display: flex; }
    .sidebar-toggle:hover { color: #fff; }
    .sidebar-toggle svg { flex-shrink: 0; transition: transform 0.2s; }
    .sidebar.expanded .sidebar-toggle svg, .sidebar:hover .sidebar-toggle svg { transform: rotate(180deg); }
    .sb-section { padding: 8px 0; }
    .sb-section + .sb-section { border-top: 1px solid rgba(255,255,255,0.06); }
    .sb-item {
      display: flex; align-items: center; gap: 10px;
      height: 36px; padding: 0 14px;
      color: rgba(255,255,255,0.45); font-size: 12px;
      cursor: pointer; transition: background 0.12s, color 0.12s;
      white-space: nowrap; text-decoration: none; position: relative;
    }
    .sb-item:hover { background: rgba(255,255,255,0.06); color: rgba(255,255,255,0.8); }
    .sb-item.active { color: var(--color-signal-400); background: rgba(29,158,117,0.08); }
    .sb-item .sb-icon { width: 20px; text-align: center; flex-shrink: 0; font-size: 14px; }
    .sb-item .sb-label { opacity: 0; transition: opacity 0.15s; }
    .sidebar.expanded .sb-item .sb-label, .sidebar:hover .sb-item .sb-label { opacity: 1; }
    .sb-item::after {
      content: attr(data-tip); position: absolute; left: 52px; top: 50%; transform: translateY(-50%);
      background: var(--color-midnight); color: #fff;
      font-family: var(--font-mono); font-size: 10px;
      padding: 4px 8px; border-radius: var(--radius-sm);
      white-space: nowrap; pointer-events: none;
      opacity: 0; transition: opacity 0.15s; box-shadow: 0 2px 8px rgba(0,0,0,0.3);
    }
    .sidebar:not(.expanded):not(:hover) .sb-item:hover::after { opacity: 1; }
    .sb-sub { padding-left: 44px; display: none; }
    .sb-sub .sb-item { height: 30px; font-size: 11px; padding-left: 0; }
    .sidebar.expanded .sb-sub, .sidebar:hover .sb-sub { display: block; }
    .sb-spacer { flex: 1; }
    .sb-profile {
      display: flex; align-items: center; gap: 10px;
      padding: 10px 14px; border-top: 1px solid rgba(255,255,255,0.06);
    }
    .sb-avatar {
      width: 28px; height: 28px; border-radius: 50%;
      background: var(--color-signal-600); color: #fff;
      font-family: var(--font-mono); font-size: 10px;
      display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    }
    .sb-profile-text { opacity: 0; transition: opacity 0.15s; white-space: nowrap; }
    .sidebar.expanded .sb-profile-text, .sidebar:hover .sb-profile-text { opacity: 1; }
    .sb-profile-name { font-size: 11px; color: rgba(255,255,255,0.8); font-weight: 500; }
    .sb-profile-role { font-family: var(--font-mono); font-size: 9px; color: rgba(255,255,255,0.35); letter-spacing: 0.06em; }

    /* -- Main area --------------------------------------------- */
    .main-wrap { flex: 1; display: flex; flex-direction: column; min-width: 0; }

    /* -- Top bar ---------------------------------------------- */
    .topbar {
      display: flex; align-items: center; justify-content: space-between;
      padding: 0 24px; height: 48px;
      background: var(--bg-primary); border-bottom: 1px solid var(--border-subtle); flex-shrink: 0;
    }
    .topbar-left { display: flex; align-items: center; gap: 28px; }
    .logo { display: flex; align-items: center; line-height: 1; }
    .logo img { height: 22px; width: auto; display: block; }
    .logo-accent { color: var(--color-signal-400); }
    .logo-dot { color: var(--text-muted); font-weight: 400; font-size: 18px; }

    /* Live clock */
    .topbar-clock {
      display: flex; flex-direction: column; align-items: flex-end; line-height: 1.1;
      padding-right: 4px; border-right: 1px solid var(--border-subtle); margin-right: 4px;
    }
    .topbar-clock .tc-time {
      font-family: var(--font-mono); font-size: 13px; font-weight: 500;
      color: var(--text-primary); letter-spacing: 0.02em;
      font-variant-numeric: tabular-nums;
    }
    .topbar-clock .tc-meta {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.1em;
      color: var(--text-muted); text-transform: uppercase; margin-top: 2px;
    }
    .tab-row { display: flex; gap: 2px; }
    .tab {
      padding: 6px 14px; border-radius: var(--radius-md);
      font-size: 13px; font-family: var(--font-body);
      color: var(--text-muted); cursor: pointer;
      border: none; background: none; text-decoration: none;
      transition: background 0.15s, color 0.15s;
      display: inline-flex; align-items: center; gap: 6px;
    }
    .tab.active { background: var(--bg-surface); color: var(--text-primary); font-weight: 500; }
    .tab:hover:not(.active) { color: var(--text-secondary); }
    .tab .tab-caret { font-size: 9px; color: var(--text-muted); transform: translateY(1px); }
    /* Tab with dropdown */
    .tab-group { position: relative; }
    .tab-dropdown {
      position: absolute; top: calc(100% + 6px); left: 0;
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md); box-shadow: var(--shadow-md);
      min-width: 240px; padding: 6px; z-index: 50;
      opacity: 0; visibility: hidden; transform: translateY(-4px);
      transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;
    }
    /* Invisible bridge across the 6px gap keeps hover continuous */
    .tab-dropdown::before {
      content: ""; position: absolute;
      top: -6px; left: 0; right: 0; height: 6px;
    }
    .tab-group:hover .tab-dropdown,
    .tab-group.open .tab-dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
    .tab-dd-eyebrow {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.1em;
      text-transform: uppercase; color: var(--text-muted);
      padding: 8px 10px 4px;
    }
    .tab-dd-item {
      display: flex; flex-direction: column; gap: 2px;
      padding: 8px 10px; border-radius: var(--radius-sm);
      cursor: pointer; text-decoration: none; color: var(--text-primary);
      transition: background 0.12s;
    }
    .tab-dd-item:hover { background: var(--bg-secondary); }
    .tab-dd-item.active { background: var(--color-signal-50); }
    .tab-dd-item .dd-title { font-family: var(--font-body); font-size: 13px; line-height: 1.2; }
    .tab-dd-item .dd-desc { font-family: var(--font-mono); font-size: 10px; color: var(--text-muted); line-height: 1.3; }
    .tab-dd-item.active .dd-title { color: var(--color-signal-600); font-weight: 500; }
    .topbar-right { display: flex; align-items: center; gap: 16px; }
    .notif-bell {
      width: 32px; height: 32px; border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      cursor: pointer; border: 1px solid var(--border-subtle); background: none;
      transition: background 0.15s; position: relative;
    }
    .notif-bell:hover { background: var(--bg-secondary); }
    .notif-dot {
      position: absolute; top: 6px; right: 7px; width: 6px; height: 6px;
      border-radius: 50%; background: var(--color-red-400); border: 1.5px solid var(--bg-primary);
    }
    .avatar {
      width: 28px; height: 28px; border-radius: 50%;
      background: var(--color-midnight); color: #fff;
      font-family: var(--font-mono); font-size: 10px;
      display: flex; align-items: center; justify-content: center; font-weight: 500;
    }

    /* -- Screens ---------------------------------------------- */
    .screen { display: none; flex: 1; flex-direction: column; min-height: 0; overflow: hidden; }
    .screen.active { display: flex; }

    /* -- Breadcrumb ------------------------------------------- */
    .breadcrumb-bar {
      padding: 8px 24px; background: var(--bg-secondary); border-bottom: 1px solid var(--border-subtle);
      font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); flex-shrink: 0;
    }
    .breadcrumb-bar a { color: var(--color-signal-400); text-decoration: none; cursor: pointer; }
    .breadcrumb-bar a:hover { text-decoration: underline; }

    /* ===== SCREEN 2: SCORECARD ============================== */
    .scorecard-content { flex: 1; overflow-y: auto; padding: 24px 28px; }
    .scorecard-header { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 20px; }
    .scorecard-title { font-family: var(--font-display); font-size: 22px; font-weight: 700; letter-spacing: -0.03em; }
    .scorecard-sub {
      font-family: var(--font-mono); font-size: 10px; color: var(--text-muted);
      letter-spacing: 0.06em; text-transform: uppercase; margin-top: 6px;
      display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    }
    .scorecard-sub .sc-sub-sep { color: var(--border-default); }
    .today-chip {
      display: inline-flex; align-items: center; gap: 6px;
      padding: 3px 9px; border-radius: var(--radius-pill);
      background: var(--color-signal-50);
      border: 1px solid var(--color-signal-200);
      color: var(--color-signal-600);
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.08em;
      text-transform: uppercase; font-weight: 500;
    }
    .today-chip .today-dot {
      width: 6px; height: 6px; border-radius: 50%;
      background: var(--color-signal-400);
      box-shadow: 0 0 0 3px rgba(29,158,117,0.18);
      animation: today-pulse 2.4s ease-in-out infinite;
    }
    @keyframes today-pulse {
      0%, 100% { box-shadow: 0 0 0 3px rgba(29,158,117,0.18); }
      50%      { box-shadow: 0 0 0 5px rgba(29,158,117,0.05); }
    }

    /* KPI strip */
    .kpi-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 20px; }
    .kpi-tile {
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); padding: 14px 18px;
    }
    .kpi-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); margin-bottom: 6px; }
    .kpi-value { font-family: var(--font-mono); font-size: 22px; font-weight: 500; color: var(--text-primary); line-height: 1; }
    .kpi-value.signal { color: var(--color-signal-400); }
    .kpi-value.yield { color: var(--color-yield-400); }
    .kpi-sub { font-family: var(--font-mono); font-size: 9px; color: var(--text-muted); margin-top: 4px; letter-spacing: 0.04em; }

    /* Filter bar */
    .filter-bar { display: flex; gap: 6px; margin-bottom: 16px; flex-wrap: wrap; }
    .filter-chip {
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
      text-transform: uppercase; padding: 4px 12px; border-radius: var(--radius-pill);
      border: 1px solid var(--border-subtle); background: none;
      color: var(--text-muted); cursor: pointer; transition: all 0.12s;
    }
    .filter-chip:hover { background: var(--color-signal-50); color: var(--color-signal-600); }
    .filter-chip.active { background: var(--color-signal-50); border-color: var(--color-signal-400); color: var(--color-signal-600); }

    /* Filter bar v2 — search + dropdown filters */
    .filter-bar-v2 {
      gap: 8px; align-items: center;
      padding: 10px 12px; border-radius: var(--radius-md);
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
    }
    .fb-search-wrap {
      display: flex; align-items: center; gap: 6px; flex: 1;
      min-width: 220px; max-width: 320px;
      background: var(--bg-primary); border: 1px solid var(--color-steel-200);
      border-radius: var(--radius-pill); padding: 5px 12px;
      transition: border-color 0.12s ease, box-shadow 0.12s ease;
    }
    .fb-search-wrap:focus-within {
      border-color: var(--color-signal-400);
      box-shadow: 0 0 0 3px rgba(29,158,117,0.12);
    }
    .fb-search-wrap svg { color: var(--text-muted); flex-shrink: 0; }
    .fb-search {
      border: none; outline: none; background: transparent;
      font-family: var(--font-body); font-size: 12px;
      color: var(--text-primary); flex: 1; min-width: 0;
      padding: 3px 0;
    }
    .fb-search::placeholder { color: var(--text-muted); }
    .fb-select {
      font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.04em;
      padding: 6px 10px; border-radius: var(--radius-pill);
      border: 1px solid var(--color-steel-200);
      background: var(--bg-primary); color: var(--text-primary);
      cursor: pointer; outline: none;
      transition: border-color 0.12s ease;
    }
    .fb-select:hover { border-color: var(--color-steel-400); }
    .fb-select:focus { border-color: var(--color-signal-400); }
    .fb-select:not([data-empty]) { border-color: var(--color-signal-400); background: var(--color-signal-50); color: var(--color-signal-600); }
    .filter-reset {
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
      text-transform: uppercase;
      padding: 5px 12px; border-radius: var(--radius-pill);
      border: 1px solid var(--border-subtle); background: none;
      color: var(--text-muted); cursor: pointer;
      transition: all 0.12s ease; margin-left: auto;
    }
    .filter-reset:hover { color: var(--text-primary); border-color: var(--color-steel-400); }

    /* Data table */
    .data-table { width: 100%; border-collapse: collapse; }
    .data-table th {
      font-family: var(--font-mono); font-size: 9px; color: var(--text-muted); font-weight: 400;
      text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--border-subtle);
      letter-spacing: 0.06em; text-transform: uppercase; white-space: nowrap;
    }
    .data-table th.sortable { cursor: pointer; user-select: none; transition: color 0.12s ease; position: relative; padding-right: 14px; }
    .data-table th.sortable:hover { color: var(--text-secondary); }
    .data-table th.sortable .sort-ind {
      display: inline-block; margin-left: 4px; font-size: 8px;
      color: var(--border-default); letter-spacing: 0;
      transform: translateY(-1px);
    }
    .data-table th.sortable.sort-asc .sort-ind,
    .data-table th.sortable.sort-desc .sort-ind { color: var(--color-signal-400); }
    .data-table th.r.sortable { padding-right: 14px; }

    /* Borrower-type chip in scorecard */
    .bt-chip {
      display: inline-block; font-family: var(--font-mono); font-size: 9px;
      padding: 2px 7px; border-radius: var(--radius-pill);
      letter-spacing: 0.08em; text-transform: uppercase;
      border: 1px solid var(--border-subtle); background: var(--bg-secondary); color: var(--text-secondary);
    }
    .bt-chip.bt-corp { background: #EFEAE0; border-color: #D9D2BC; color: #6B5E3E; }
    .bt-chip.bt-fin  { background: var(--color-signal-50); border-color: var(--color-signal-100); color: var(--color-signal-600); }
    .bt-chip.bt-agy  { background: #E7EEF7; border-color: #C3D3E8; color: #2F5A8E; }
    .bt-chip.bt-sov  { background: #F2E6E6; border-color: #E2C7C7; color: #8A3A3A; }
    .bt-chip.bt-supra{ background: #EDE6F2; border-color: #D6C3E5; color: #5F3A8A; }
    .bt-chip.bt-muni { background: #E6F0EC; border-color: #C2DCCE; color: #3F6B54; }
    .bt-chip.bt-soe  { background: #F3ECE2; border-color: #DEC9A7; color: #8A5A1A; }

    /* Currency mono cell */
    .ccy-cell { font-weight: 500; color: var(--text-primary); letter-spacing: 0.04em; }

    /* Updated cell freshness dot */
    .upd-cell { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
    .upd-cell .upd-dot {
      width: 6px; height: 6px; border-radius: 50%; background: var(--color-steel-200);
    }
    .upd-cell.fresh .upd-dot { background: var(--color-signal-400); box-shadow: 0 0 0 3px rgba(29,158,117,0.14); }
    .upd-cell.stale { color: var(--text-muted); }
    .data-table th.r { text-align: right; }
    .data-table td {
      font-family: var(--font-mono); font-size: 11px; color: var(--text-secondary);
      padding: 8px 8px; border-bottom: 1px solid var(--border-subtle); vertical-align: middle;
    }
    .data-table td.r { text-align: right; }
    .data-table td.strong { color: var(--text-primary); font-weight: 500; }
    .data-table td.pos { color: var(--color-signal-400); }
    .data-table td.neg { color: var(--color-red-400); }
    .data-table td.muted { color: var(--text-muted); }
    .data-table tr:last-child td { border-bottom: none; }
    .data-table tbody tr.has-analysis { cursor: pointer; }
    .data-table tbody tr.has-analysis:hover { background: rgba(29,158,117,0.04); }
    .data-table tbody tr.no-analysis { opacity: 0.6; }

    /* NIP cells — High (green), Medium (brown), Low (grey) */
    .nip-cell { font-weight: 500; display: inline-flex; align-items: center; gap: 6px; }
    .nip-cell .nip-tier {
      font-family: var(--font-mono); font-size: 8px; letter-spacing: 0.1em;
      text-transform: uppercase; padding: 1px 6px; border-radius: var(--radius-pill);
      font-weight: 500;
    }
    .nip-high { color: var(--color-signal-400); font-weight: 700; }
    .nip-high .nip-tier { background: var(--color-signal-50); color: var(--color-signal-600); }
    .nip-med  { color: var(--color-yield-400); font-weight: 500; }
    .nip-med  .nip-tier { background: var(--color-yield-50); color: var(--color-yield-400); }
    .nip-low  { color: var(--color-steel-400); font-weight: 500; }
    .nip-low  .nip-tier { background: var(--bg-surface); color: var(--text-muted); }
    .nip-awaiting { color: var(--text-muted); font-style: italic; font-weight: 400; }

    /* Stage badges */
    .state-tag {
      display: inline-block; font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      padding: 2px 8px; border-radius: var(--radius-pill); font-weight: 500;
    }
    .state-mandate  { background: var(--bg-surface); color: var(--text-muted); }
    .state-ipt      { background: var(--color-signal-50); color: var(--color-signal-600); }
    .state-guidance { background: rgba(29,158,117,0.15); color: var(--color-signal-400); }
    .state-priced   { background: var(--color-yield-50); color: var(--color-yield-400); }

    /* Eligibility icons */
    .elig-icon { font-weight: 700; font-size: 14px; }
    .elig-pass { color: var(--color-signal-400); }
    .elig-warn { color: var(--color-yield-400); }
    .elig-fail { color: var(--color-red-400); }

    /* Portfolio chips */
    .port-chips { display: flex; flex-wrap: wrap; gap: 3px; }
    .port-chip {
      font-family: var(--font-mono); font-size: 8px; letter-spacing: 0.06em;
      text-transform: uppercase; padding: 2px 6px; border-radius: var(--radius-pill);
      white-space: nowrap;
    }
    .port-chip.eligible { background: var(--color-signal-50); color: var(--color-signal-600); border: 1px solid rgba(29,158,117,0.3); }
    .port-chip.warn { background: var(--color-yield-50); color: var(--color-yield-400); border: 1px solid rgba(186,117,23,0.3); }

    /* Confidence dots */
    .conf-dots { display: inline-flex; gap: 3px; align-items: center; }
    .conf-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--border-subtle); }
    .conf-dot.filled.high { background: var(--color-signal-400); box-shadow: 0 0 4px rgba(29,158,117,0.4); }
    .conf-dot.filled.med  { background: var(--color-yield-400); box-shadow: 0 0 4px rgba(186,117,23,0.4); }
    .conf-dot.filled.low  { background: var(--color-steel-400); }

    /* Has analysis tag */
    .has-tag {
      font-family: var(--font-mono); font-size: 8px; letter-spacing: 0.1em;
      text-transform: uppercase; color: var(--color-signal-400);
      background: rgba(29,158,117,0.08); padding: 1px 5px;
      border-radius: var(--radius-pill); margin-left: 6px;
      position: relative; cursor: pointer;
    }
    .has-tag::after {
      content: "View Analysis";
      position: absolute;
      bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%);
      background: var(--color-midnight); color: #fff;
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.04em; text-transform: none;
      padding: 5px 10px; border-radius: var(--radius-sm);
      white-space: nowrap; pointer-events: none;
      opacity: 0; z-index: 10;
      transition: opacity 0.15s ease;
      box-shadow: 0 2px 8px rgba(10,15,30,0.3);
    }
    .has-tag:hover::after { opacity: 1; }

    /* ===== SCREEN 3: DEAL DETAIL ============================ */
    .detail-layout { display: flex; flex: 1; min-height: 0; }

    /* Left sidebar nav */
    .detail-sidebar {
      width: 160px; background: var(--bg-primary); border-right: 1px solid var(--border-subtle);
      padding: 14px 0; flex-shrink: 0; overflow-y: auto;
    }
    .sidebar-item {
      display: flex; align-items: center; gap: 8px;
      padding: 8px 16px; font-size: 12px; color: var(--text-muted);
      cursor: pointer; transition: background 0.12s, color 0.12s;
      border-left: 2px solid transparent;
    }
    .sidebar-item:hover { background: var(--bg-secondary); color: var(--text-secondary); }
    .sidebar-item.active { color: var(--text-primary); font-weight: 500; border-left-color: var(--color-signal-400); background: var(--color-signal-50); }

    /* Detail main */
    .detail-main { flex: 1; display: flex; flex-direction: column; min-width: 0; }
    .detail-scroll { flex: 1; overflow-y: auto; padding: 22px 26px; display: flex; flex-direction: column; gap: 22px; }

    /* Deal header */
    .deal-header { display: flex; justify-content: space-between; align-items: flex-start; }
    .deal-header-left { display: flex; flex-direction: column; gap: 5px; }
    .deal-hero-name { font-family: var(--font-display); font-size: 20px; font-weight: 700; letter-spacing: -0.03em; }
    .deal-meta-line { display: flex; align-items: center; gap: 8px; font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); flex-wrap: wrap; }
    .meta-tag { padding: 2px 8px; border-radius: var(--radius-sm); background: var(--bg-surface); color: var(--text-secondary); font-size: 10px; font-family: var(--font-mono); }
    .analyst-line { font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); }
    .analyst-line a { color: var(--color-signal-400); text-decoration: none; }
    .deal-header-actions { display: flex; gap: 8px; flex-shrink: 0; }
    .btn {
      font-family: var(--font-body); font-size: 12px; padding: 7px 16px;
      border-radius: var(--radius-md); border: 1px solid var(--border-subtle);
      background: var(--bg-primary); color: var(--text-secondary); cursor: pointer;
      transition: border-color 0.15s, color 0.15s, background 0.15s;
    }
    .btn:hover { border-color: var(--color-steel-200); color: var(--text-primary); background: var(--bg-secondary); }
    .btn-primary { background: var(--color-midnight); color: #fff; border-color: var(--color-midnight); font-weight: 500; }
    .btn-primary:hover { background: #1E2438; border-color: #1E2438; color: #fff; }

    /* Summary cards */
    .summary-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
    .summary-card {
      background: var(--bg-secondary); border-radius: var(--radius-md); padding: 14px;
      border: 1px solid transparent; cursor: pointer;
      transition: border-color 0.15s, box-shadow 0.12s;
    }
    .summary-card:hover { border-color: var(--border-subtle); }
    .summary-card.active-card { border-color: var(--color-signal-400); box-shadow: 0 0 0 1px var(--color-signal-400); }
    .sc-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
    .sc-title { font-family: var(--font-mono); font-size: 9px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.06em; }
    .sc-link { font-family: var(--font-mono); font-size: 9px; color: var(--color-signal-400); cursor: pointer; }
    .sc-big-val { font-family: var(--font-mono); font-size: 20px; font-weight: 500; letter-spacing: -0.02em; line-height: 1; margin-bottom: 6px; }
    .sc-big-val.pos { color: var(--color-signal-400); }
    .sc-big-val.neu { color: var(--text-primary); }
    .sc-sub-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 3px; }
    .sc-sub-label { font-family: var(--font-mono); font-size: 10px; color: var(--text-muted); }
    .sc-sub-val { font-family: var(--font-mono); font-size: 11px; color: var(--text-secondary); font-weight: 500; }
    .sc-sub-val.pos { color: var(--color-signal-400); }
    .sc-dropdown { font-family: var(--font-mono); font-size: 9px; padding: 1px 6px; border-radius: var(--radius-sm); border: 1px solid var(--border-subtle); background: var(--bg-primary); color: var(--text-secondary); cursor: pointer; }

    /* Eligibility mini table */
    .elig-table { width: 100%; border-collapse: collapse; }
    .elig-table td { font-family: var(--font-mono); font-size: 10px; padding: 2px 0; color: var(--text-secondary); vertical-align: top; }
    .elig-table td:first-child { font-weight: 500; color: var(--text-primary); width: 36px; }
    .elig-table td:nth-child(2) { width: 16px; text-align: center; }
    .elig-ok { color: var(--color-signal-400); }
    .elig-no { color: var(--color-red-400); }

    /* Order sizing card */
    .order-headline { font-family: var(--font-mono); font-size: 13px; font-weight: 500; margin-bottom: 6px; }
    .order-dots { display: flex; gap: 10px; margin-bottom: 8px; }
    .order-dot { display: flex; align-items: center; gap: 4px; font-family: var(--font-mono); font-size: 10px; }
    .dot-ind { width: 6px; height: 6px; border-radius: 50%; }
    .dot-g { background: var(--color-signal-400); }
    .range-bar { height: 4px; background: var(--border-subtle); border-radius: 2px; position: relative; margin: 4px 0; }
    .range-fill { height: 100%; background: var(--color-signal-400); border-radius: 2px; }
    .range-thumb { position: absolute; top: -4px; width: 12px; height: 12px; border-radius: 50%; background: var(--color-signal-400); border: 2px solid var(--bg-primary); box-shadow: var(--shadow-sm); }
    .order-note { font-family: var(--font-mono); font-size: 9px; color: var(--text-muted); margin-top: 3px; }

    /* Funding card table */
    .fund-table { width: 100%; border-collapse: collapse; }
    .fund-table td { font-family: var(--font-mono); font-size: 10px; padding: 2px 0; color: var(--text-secondary); border-bottom: 1px solid var(--border-subtle); }
    .fund-table td:last-child { text-align: right; }
    .fund-table tr:last-child td { border-bottom: none; }
    .fund-table td.strong { color: var(--text-primary); font-weight: 500; }

    /* Detail panels */
    .detail-panel { background: var(--bg-primary); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); overflow: hidden; position: relative; }
    .detail-panel.collapsed .dp-body { display: none; }
    .dp-header {
      display: flex; align-items: center; justify-content: space-between;
      padding: 12px 16px; cursor: pointer; background: var(--bg-secondary); transition: background 0.12s;
    }
    .dp-header:hover { background: var(--bg-surface); }
    .dp-title { font-family: var(--font-display); font-size: 14px; font-weight: 600; }
    .dp-chevron { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); transition: transform 0.2s; }
    .detail-panel.collapsed .dp-chevron { transform: rotate(-90deg); }
    .dp-body { padding: 18px; display: flex; flex-direction: column; gap: 14px; }

    /* AI insight */
    .ai-insight { background: var(--color-signal-50); border-radius: var(--radius-md); padding: 12px 14px; border-left: 2px solid var(--color-signal-400); }
    .ai-label { display: flex; align-items: center; gap: 6px; font-family: var(--font-mono); font-size: 9px; color: var(--color-signal-600); margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.08em; }
    .ai-body { font-size: 12px; line-height: 1.6; color: var(--text-secondary); }
    .ai-body strong { color: var(--text-primary); font-weight: 500; }

    /* RV prose */
    .rv-prose { font-size: 12px; line-height: 1.7; color: var(--text-secondary); }
    .rv-prose strong { color: var(--text-primary); font-weight: 500; }
    .rv-prose .step { margin: 6px 0 3px; font-family: var(--font-mono); font-size: 11px; color: var(--text-primary); font-weight: 500; }

    /* Recommendation callout */
    .rec-callout { background: var(--bg-secondary); border-left: 3px solid var(--color-signal-400); border-radius: 0 var(--radius-md) var(--radius-md) 0; padding: 10px 14px; font-size: 12px; color: var(--text-secondary); line-height: 1.5; }

    /* Source footer */
    .source-footer { font-family: var(--font-mono); font-size: 10px; color: var(--text-muted); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
    .conf-badge { padding: 2px 8px; border-radius: var(--radius-pill); font-weight: 500; background: var(--color-signal-50); color: var(--color-signal-600); }

    /* Edit logic */
    .edit-logic-btn {
      position: absolute; right: 0; top: 50%; transform: translateY(-50%);
      writing-mode: vertical-rl; text-orientation: mixed;
      font-family: var(--font-mono); font-size: 10px; color: var(--color-signal-400);
      padding: 10px 5px; background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      border-right: none; border-radius: var(--radius-md) 0 0 var(--radius-md);
      cursor: pointer; letter-spacing: 0.04em;
    }

    /* Order prep CTA */
    .order-prep-cta {
      padding: 12px 16px; background: var(--bg-surface); border: 1px dashed var(--border-subtle);
      border-radius: var(--radius-md); display: flex; align-items: center; justify-content: space-between;
    }
    .order-prep-text { font-size: 12px; color: var(--text-secondary); }
    .order-prep-text strong { color: var(--text-primary); }

    /* Detail table (reused in panels) */
    .section-label { font-family: var(--font-mono); font-size: 10px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 8px; }

    /* Detail chat */
    .detail-chat { padding: 10px 26px; border-top: 1px solid var(--border-subtle); background: var(--bg-primary); flex-shrink: 0; }
    .detail-chat-row { display: flex; gap: 10px; align-items: center; }
    .chat-input {
      flex: 1; padding: 9px 14px; border: 1px solid var(--border-subtle);
      border-radius: var(--radius-pill); font-family: var(--font-body); font-size: 12px;
      background: var(--bg-secondary); color: var(--text-primary); outline: none;
      transition: border-color 0.15s, background 0.15s;
    }
    .chat-input::placeholder { color: var(--text-muted); }
    .chat-input:focus { border-color: var(--color-signal-400); background: var(--bg-primary); }
    .send-btn {
      width: 34px; height: 34px; border-radius: 50%; background: var(--color-midnight);
      border: none; cursor: pointer; display: flex; align-items: center; justify-content: center;
      flex-shrink: 0; transition: background 0.15s;
    }
    .send-btn:hover { background: #1E2438; }

    /* ===== SETTINGS SCREEN ============================== */
    .settings-content { flex: 1; overflow-y: auto; padding: 24px 28px 40px; }
    .settings-shell { max-width: 960px; margin: 0 auto; }
    .settings-header { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 6px; }
    .settings-title { font-family: var(--font-display); font-size: 22px; font-weight: 700; letter-spacing: -0.03em; }
    .settings-sub { font-family: var(--font-mono); font-size: 10px; color: var(--text-muted); letter-spacing: 0.06em; text-transform: uppercase; margin-top: 4px; }

    .settings-intro {
      font-family: var(--font-serif); font-style: italic;
      font-size: 15px; line-height: 1.6; color: var(--text-secondary);
      max-width: 680px; margin: 14px 0 22px;
    }
    .settings-intro .hl { color: var(--color-signal-600); font-family: var(--font-mono); font-style: normal; font-size: 12px; letter-spacing: 0.04em; }

    /* Active-filters summary strip (top of settings + top of scorecard) */
    .filter-summary {
      display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
      padding: 12px 16px; background: var(--bg-secondary);
      border: 1px solid var(--border-subtle); border-radius: var(--radius-md);
      margin-bottom: 22px;
    }
    .filter-summary-label {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.1em;
      text-transform: uppercase; color: var(--text-muted); flex-shrink: 0;
    }
    .filter-summary-group { display: flex; align-items: baseline; gap: 6px; }
    .filter-summary-group .sg-name {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.08em;
      text-transform: uppercase; color: var(--text-muted);
    }
    .filter-summary-group .sg-val {
      font-family: var(--font-mono); font-size: 11px; color: var(--text-primary); font-weight: 500;
    }
    .filter-summary-group .sg-val.all { color: var(--text-muted); font-weight: 400; font-style: italic; }
    .filter-summary-sep { width: 1px; align-self: stretch; background: var(--border-subtle); }
    .filter-summary-right { margin-left: auto; display: flex; gap: 8px; align-items: center; }
    .filter-summary-edit {
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
      text-transform: uppercase; color: var(--color-signal-400);
      background: none; border: none; cursor: pointer;
      text-decoration: none;
    }
    .filter-summary-edit:hover { text-decoration: underline; }

    /* Settings group cards */
    .settings-group {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); padding: 20px 22px; margin-bottom: 14px;
    }
    .sg-header {
      display: flex; align-items: baseline; justify-content: space-between;
      margin-bottom: 4px; gap: 16px;
    }
    .sg-title {
      font-family: var(--font-display); font-size: 15px; font-weight: 600;
      letter-spacing: -0.01em;
    }
    .sg-count {
      font-family: var(--font-mono); font-size: 10px; color: var(--text-muted);
      letter-spacing: 0.06em; text-transform: uppercase;
    }
    .sg-count .n { color: var(--color-signal-400); font-weight: 500; }
    .sg-description {
      font-family: var(--font-body); font-size: 12px; color: var(--text-secondary);
      margin-bottom: 14px; line-height: 1.5;
    }
    .sg-actions {
      display: flex; gap: 14px; align-items: center;
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
      text-transform: uppercase; margin-bottom: 12px;
    }
    .sg-action {
      background: none; border: none; cursor: pointer;
      color: var(--color-signal-400); padding: 0;
    }
    .sg-action:hover { text-decoration: underline; }
    .sg-action.dim { color: var(--text-muted); }

    /* Multi-select chip grid */
    .chip-grid { display: flex; flex-wrap: wrap; gap: 8px; }
    .sel-chip {
      display: inline-flex; align-items: center; gap: 8px;
      font-family: var(--font-body); font-size: 12px;
      padding: 7px 14px; border-radius: var(--radius-pill);
      border: 1px solid var(--border-subtle); background: var(--bg-primary);
      color: var(--text-secondary); cursor: pointer;
      transition: all 0.15s ease; user-select: none;
    }
    .sel-chip:hover {
      border-color: var(--color-signal-200);
      background: var(--color-signal-50);
      color: var(--color-signal-600);
    }
    .sel-chip.selected {
      background: var(--color-signal-50);
      border-color: var(--color-signal-400);
      color: var(--color-signal-600);
      font-weight: 500;
    }
    .sel-chip .chip-check {
      width: 14px; height: 14px; border-radius: 3px;
      border: 1px solid var(--color-steel-200);
      display: inline-flex; align-items: center; justify-content: center;
      background: var(--bg-primary); flex-shrink: 0;
      transition: all 0.15s;
    }
    .sel-chip.selected .chip-check {
      background: var(--color-signal-400); border-color: var(--color-signal-400);
    }
    .sel-chip .chip-check svg { opacity: 0; transition: opacity 0.12s; }
    .sel-chip.selected .chip-check svg { opacity: 1; }
    .sel-chip .chip-code {
      font-family: var(--font-mono); font-size: 10px; color: var(--text-muted);
      letter-spacing: 0.06em;
    }
    .sel-chip.selected .chip-code { color: var(--color-signal-600); }

    /* Bottom sticky action bar */
    .settings-actionbar {
      position: sticky; bottom: 0;
      margin: 22px -28px -24px; padding: 14px 28px;
      background: var(--bg-primary); border-top: 1px solid var(--border-subtle);
      display: flex; align-items: center; gap: 12px;
      box-shadow: 0 -4px 16px rgba(10,15,30,0.04);
    }
    .settings-actionbar-status {
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
      color: var(--text-muted); text-transform: uppercase;
    }
    .settings-actionbar-status.dirty { color: var(--color-yield-400); }
    .settings-actionbar-status.saved { color: var(--color-signal-400); }
    .settings-actionbar-right { margin-left: auto; display: flex; gap: 8px; }

    /* Scorecard filter indicator */
    .applied-filter-strip {
      display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
      padding: 8px 14px; margin-bottom: 14px;
      background: var(--color-signal-50); border: 1px solid rgba(29,158,117,0.25);
      border-radius: var(--radius-md);
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
    }
    .applied-filter-strip .afs-label {
      color: var(--color-signal-600); text-transform: uppercase; font-weight: 500;
    }
    .afs-tag {
      display: inline-flex; align-items: center; gap: 6px;
      padding: 2px 8px; border-radius: var(--radius-pill);
      background: var(--bg-primary); color: var(--text-secondary);
      border: 1px solid rgba(29,158,117,0.2); font-size: 10px;
    }
    .afs-tag .afs-k {
      color: var(--text-muted); font-size: 9px;
    }
    .afs-tag.empty { color: var(--text-muted); font-style: italic; background: transparent; border-style: dashed; }
    .afs-right { margin-left: auto; }
    .afs-edit {
      color: var(--color-signal-600); text-decoration: none; cursor: pointer;
      text-transform: uppercase; font-weight: 500;
    }
    .afs-edit:hover { text-decoration: underline; }

    /* ===== FILTER MODAL ================================= */
    .modal-backdrop {
      position: fixed; inset: 0; z-index: 200;
      background: rgba(10,15,30,0.45);
      backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px);
      opacity: 0; pointer-events: none;
      transition: opacity 0.2s ease;
      display: flex; align-items: center; justify-content: center;
      padding: 24px;
    }
    .modal-backdrop.open { opacity: 1; pointer-events: auto; }
    .modal {
      width: 100%; max-width: 680px; max-height: calc(100vh - 48px);
      background: var(--bg-primary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg);
      box-shadow: 0 24px 64px rgba(10,15,30,0.28), 0 2px 6px rgba(10,15,30,0.10);
      display: flex; flex-direction: column; min-height: 0;
      transform: translateY(8px) scale(0.98); opacity: 0;
      transition: transform 0.22s cubic-bezier(.2,.8,.2,1), opacity 0.22s ease;
      overflow: hidden;
    }
    .modal-backdrop.open .modal { transform: translateY(0) scale(1); opacity: 1; }

    .modal-header {
      display: flex; align-items: flex-start; justify-content: space-between;
      gap: 16px; padding: 20px 24px 14px;
      border-bottom: 1px solid var(--border-subtle);
      flex-shrink: 0;
    }
    .modal-eyebrow {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.12em;
      text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px;
    }
    .modal-title {
      font-family: var(--font-display); font-size: 18px; font-weight: 700;
      letter-spacing: -0.02em; line-height: 1.2;
    }
    .modal-subtitle {
      font-family: var(--font-body); font-size: 12px; color: var(--text-secondary);
      margin-top: 4px; line-height: 1.4; max-width: 460px;
    }
    .modal-close {
      width: 28px; height: 28px; border-radius: 50%;
      border: 1px solid var(--border-subtle); background: var(--bg-primary);
      color: var(--text-muted); cursor: pointer; flex-shrink: 0;
      display: flex; align-items: center; justify-content: center;
      transition: all 0.12s ease;
    }
    .modal-close:hover { background: var(--bg-secondary); color: var(--text-primary); }

    .modal-body {
      flex: 1; overflow-y: auto; padding: 18px 24px 8px;
      display: flex; flex-direction: column; gap: 18px;
    }
    .modal-group {
      display: flex; flex-direction: column; gap: 8px;
    }
    .modal-group-head {
      display: flex; align-items: baseline; justify-content: space-between;
      gap: 12px;
    }
    .modal-group-title {
      font-family: var(--font-display); font-size: 13px; font-weight: 600;
      letter-spacing: -0.01em;
    }
    .modal-group-meta {
      display: flex; align-items: baseline; gap: 12px;
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
      color: var(--text-muted);
    }
    .modal-group-meta .n { color: var(--color-signal-400); font-weight: 500; }
    .modal-group-meta .sg-action {
      background: none; border: none; cursor: pointer; padding: 0;
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
      text-transform: uppercase; color: var(--color-signal-400);
    }
    .modal-group-meta .sg-action.dim { color: var(--text-muted); }
    .modal-group-meta .sg-action:hover { text-decoration: underline; }
    .modal-group-desc {
      font-family: var(--font-body); font-size: 11px; color: var(--text-muted);
      line-height: 1.5;
    }

    .modal-footer {
      display: flex; align-items: center; gap: 12px;
      padding: 14px 24px; border-top: 1px solid var(--border-subtle);
      background: var(--bg-secondary); flex-shrink: 0;
    }
    .modal-footer-status {
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
      color: var(--text-muted); text-transform: uppercase;
    }
    .modal-footer-status.dirty { color: var(--color-yield-400); }
    .modal-footer-right { margin-left: auto; display: flex; gap: 8px; }

    /* Filters button on scorecard */
    .scorecard-actions { display: flex; align-items: center; gap: 8px; }
    .btn-filter {
      display: inline-flex; align-items: center; gap: 8px;
      font-family: var(--font-body); font-size: 12px; font-weight: 500;
      padding: 7px 14px; border-radius: var(--radius-md);
      border: 1px solid var(--border-subtle);
      background: var(--bg-primary); color: var(--text-primary); cursor: pointer;
      transition: all 0.12s ease;
    }
    .btn-filter:hover { border-color: var(--color-signal-400); background: var(--color-signal-50); color: var(--color-signal-600); }
    .btn-filter .bf-count {
      font-family: var(--font-mono); font-size: 10px;
      padding: 1px 7px; border-radius: var(--radius-pill);
      background: var(--color-signal-50); color: var(--color-signal-600);
      letter-spacing: 0.04em;
    }
    .btn-filter:hover .bf-count { background: var(--bg-primary); }

    /* Methodology review button (in-row) */
    .btn-review {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.06em;
      text-transform: uppercase; padding: 3px 9px;
      border-radius: var(--radius-pill); border: 1px solid var(--border-subtle);
      background: var(--bg-primary); color: var(--text-secondary); cursor: pointer;
      transition: all 0.12s ease; white-space: nowrap;
    }
    .btn-review:hover { border-color: var(--color-signal-400); color: var(--color-signal-600); background: var(--color-signal-50); }
    .btn-review svg { vertical-align: -1px; margin-right: 3px; opacity: 0.7; }

    /* ===== METHODOLOGY SCREEN ========================== */
    .meth-content { flex: 1; overflow-y: auto; padding: 0; }
    .meth-layout {
      display: grid; grid-template-columns: 216px 1fr; min-height: 100%;
    }
    .meth-nav {
      position: sticky; top: 0; align-self: start;
      padding: 26px 12px 26px 18px;
      border-right: 1px solid var(--border-subtle);
      background: var(--bg-secondary);
      height: 100%;
    }
    .meth-nav-eyebrow {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.12em;
      text-transform: uppercase; color: var(--text-muted);
      padding: 0 10px; margin-bottom: 10px;
    }
    .meth-nav-item {
      display: flex; align-items: center; gap: 10px;
      padding: 7px 10px; border-radius: var(--radius-md);
      font-family: var(--font-body); font-size: 12px; color: var(--text-secondary);
      cursor: pointer; user-select: none; transition: all 0.12s ease;
      border-left: 2px solid transparent;
    }
    .meth-nav-item:hover { background: var(--bg-primary); color: var(--text-primary); }
    .meth-nav-item.active {
      background: var(--bg-primary); color: var(--text-primary);
      border-left-color: var(--color-signal-400); font-weight: 500;
    }
    .meth-nav-item .mn-num {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.06em;
      color: var(--text-muted); width: 14px;
    }
    .meth-nav-item.active .mn-num { color: var(--color-signal-400); }
    .meth-nav-divider {
      border-top: 1px dashed var(--border-subtle);
      margin: 12px 0;
    }
    .meth-main { padding: 24px 28px 40px; }
    .meth-shell { max-width: 960px; margin: 0 auto; display: flex; flex-direction: column; gap: 20px; }
    .meth-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
    .meth-header-actions { display: flex; gap: 8px; flex-wrap: wrap; }

    /* Generate Report button */
    .btn-report {
      display: inline-flex; align-items: center; gap: 6px;
      font-family: var(--font-body); font-size: 12px; font-weight: 500;
      padding: 8px 14px; border-radius: var(--radius-md);
      background: var(--color-midnight); color: #fff; border: 1px solid var(--color-midnight);
      cursor: pointer; transition: all 0.12s ease;
    }
    .btn-report:hover { background: var(--color-signal-600); border-color: var(--color-signal-600); color: #fff; }
    .btn-report svg { flex-shrink: 0; }

    /* Edit Methodology button (inline on Method card) */
    .method-edit-btn {
      margin-top: 12px;
      display: inline-flex; align-items: center; gap: 6px;
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
      text-transform: uppercase; padding: 5px 11px;
      border-radius: var(--radius-pill); border: 1px solid var(--border-subtle);
      background: var(--bg-primary); color: var(--text-secondary); cursor: pointer;
      transition: all 0.12s ease;
    }
    .method-edit-btn:hover {
      border-color: var(--color-signal-400); color: var(--color-signal-600); background: var(--color-signal-50);
    }
    .meth-title { font-family: var(--font-display); font-size: 22px; font-weight: 700; letter-spacing: -0.03em; }
    .meth-sub { font-family: var(--font-mono); font-size: 10px; color: var(--text-muted); letter-spacing: 0.06em; text-transform: uppercase; margin-top: 4px; }
    .meth-subject {
      display: inline-flex; align-items: baseline; gap: 8px;
      font-family: var(--font-mono); font-size: 11px; color: var(--text-secondary);
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      padding: 6px 12px; border-radius: var(--radius-pill); margin-top: 8px;
    }
    .meth-subject .ms-k { color: var(--text-muted); font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase; }
    .meth-subject .ms-v { color: var(--text-primary); font-weight: 500; }

    /* ===== DETAIL TOP: RV + Methodology ========================= */
    .rv-top {
      display: grid;
      grid-template-columns: 1.1fr 1fr;
      gap: 12px;
    }
    .rv-card {
      background: var(--bg-primary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg);
      padding: 16px 18px;
      display: flex; flex-direction: column; gap: 10px;
      min-width: 0;
    }
    .rv-card.accent {
      border-left: 3px solid var(--color-signal-400);
      background: linear-gradient(135deg, var(--bg-primary) 0%, var(--color-signal-50) 100%);
    }
    .rv-card-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .rv-value-row {
      display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
    }
    .rv-value {
      font-family: var(--font-mono); font-size: 34px; font-weight: 500;
      letter-spacing: -0.02em; line-height: 1; color: var(--color-signal-400);
    }
    .rv-value-tier {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--color-signal-600); font-weight: 500;
      padding: 3px 9px; border-radius: var(--radius-pill);
      background: var(--color-signal-50); border: 1px solid var(--color-signal-200);
    }
    .rv-sub-compact {
      font-family: var(--font-mono); font-size: 11px;
      color: var(--text-secondary); line-height: 1.45;
    }
    .rv-sub-compact strong { color: var(--text-primary); font-weight: 500; }

    /* Spread basis toggle (Mid-swaps / Z-spread / Bund) */
    .basis-toggle {
      display: inline-flex; gap: 2px;
      background: var(--bg-secondary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-pill);
      padding: 3px;
      align-self: flex-start;
    }
    .basis-toggle button {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; text-transform: uppercase;
      padding: 5px 12px; border-radius: var(--radius-pill);
      border: none; background: transparent;
      color: var(--text-secondary); cursor: pointer;
      transition: all 0.12s ease;
    }
    .basis-toggle button:hover { color: var(--text-primary); }
    .basis-toggle button.active {
      background: var(--color-midnight); color: #fff;
      box-shadow: 0 1px 3px rgba(10,15,30,0.15);
    }
    .basis-toggle.pulse {
      animation: methPulse 1.2s ease 1;
      border-color: var(--color-signal-400);
    }

    /* Prominent metrics in RV card */
    .rv-metrics {
      display: grid; grid-template-columns: repeat(3, 1fr);
      gap: 10px; margin-top: 6px;
      padding-top: 12px;
      border-top: 1px solid var(--border-subtle);
    }
    .rv-metric {
      display: flex; flex-direction: column; gap: 2px;
      min-width: 0;
    }
    .rv-metric-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .rv-metric-value {
      font-family: var(--font-mono); font-size: 22px; font-weight: 500;
      letter-spacing: -0.02em; color: var(--text-primary);
      line-height: 1.1;
    }
    .rv-metric-value.pos { color: var(--color-signal-600); }
    .rv-metric-value.neg { color: var(--color-red-400); }

    .rv-method-title {
      font-family: var(--font-body); font-size: 14px; font-weight: 500;
      color: var(--text-primary); line-height: 1.35;
    }
    .rv-method-meta {
      display: flex; flex-wrap: wrap; gap: 6px;
    }
    .rv-method-chip {
      font-family: var(--font-mono); font-size: 10px;
      padding: 3px 8px; border-radius: var(--radius-pill);
      background: var(--bg-surface); border: 1px solid var(--border-subtle);
      color: var(--text-secondary);
    }
    .rv-method-edit {
      align-self: flex-start; margin-top: auto;
      display: inline-flex; align-items: center; gap: 6px;
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.04em;
      padding: 6px 11px; border-radius: var(--radius-pill);
      border: 1px solid var(--border-subtle); background: var(--bg-primary);
      color: var(--text-secondary); cursor: pointer;
      transition: all 0.12s ease; text-decoration: none;
    }
    .rv-method-edit:hover {
      border-color: var(--color-signal-400);
      color: var(--color-signal-600);
      background: var(--color-signal-50);
    }

    /* Chat card */
    .rv-card.chat {
      background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--color-signal-50) 140%);
      border: 1px solid var(--color-steel-200);
    }
    .rv-card.chat.primary {
      background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--color-signal-50) 140%);
      border: 1.5px solid var(--color-steel-200);
      padding: 20px 22px;
      box-shadow: 0 2px 14px rgba(10,15,30,0.05);
    }
    .rv-card.chat.primary .rv-card-label {
      font-size: 10px; color: var(--color-signal-600);
      font-weight: 500;
    }
    .rv-chat-input-row {
      display: flex; gap: 8px; align-items: center;
      background: var(--bg-primary);
      border: 1.5px solid var(--color-steel-200);
      border-radius: 14px;
      padding: 8px 10px 8px 14px;
      transition: border-color 0.15s ease, box-shadow 0.15s ease;
    }
    .rv-chat-input-row:focus-within {
      border-color: var(--color-signal-400);
      box-shadow: 0 0 0 3px rgba(29,158,117,0.10);
    }
    /* Primary chat: bigger input */
    .rv-card.chat.primary .rv-chat-input-row {
      border-width: 2px; border-radius: 16px;
      padding: 12px 12px 12px 18px;
    }
    .rv-chat-input {
      flex: 1; border: none; outline: none; background: transparent;
      font-family: var(--font-body); font-size: 13px;
      color: var(--text-primary); padding: 4px 0;
    }
    .rv-chat-input::placeholder { color: var(--text-muted); }
    .rv-card.chat.primary .rv-chat-input {
      font-size: 15px; padding: 6px 0;
    }
    .rv-chat-send {
      width: 30px; height: 30px; border-radius: 50%;
      border: none; cursor: pointer; flex-shrink: 0;
      background: var(--color-midnight); color: #fff;
      display: inline-flex; align-items: center; justify-content: center;
      transition: background 0.12s ease;
    }
    .rv-chat-send:hover { background: var(--color-signal-600); }
    .rv-card.chat.primary .rv-chat-send {
      width: 38px; height: 38px;
    }

    /* Import documents row beneath the chat */
    .rv-import-row {
      margin-top: 4px;
      display: flex; flex-direction: column; gap: 8px;
    }
    .rv-import-btn {
      display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap;
      padding: 10px 14px;
      border-radius: var(--radius-pill);
      border: 1.5px dashed var(--color-steel-200);
      background: var(--bg-primary);
      color: var(--text-primary);
      cursor: pointer; transition: all 0.15s ease;
      align-self: flex-start;
      font-family: var(--font-body); font-size: 12px; font-weight: 500;
    }
    .rv-import-btn:hover, .rv-import-btn.drag {
      border-color: var(--color-signal-400);
      background: var(--color-signal-50);
      color: var(--color-signal-600);
      border-style: solid;
    }
    .rv-import-btn svg { color: var(--color-signal-400); flex-shrink: 0; }
    .rv-import-sub {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.06em; color: var(--text-muted);
      font-weight: 400;
    }
    .rv-import-btn:hover .rv-import-sub { color: var(--color-signal-600); }
    .rv-import-files {
      display: flex; flex-direction: column; gap: 5px;
    }
    .rv-import-file {
      display: inline-flex; align-items: center; gap: 8px;
      padding: 6px 12px; border-radius: var(--radius-pill);
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      font-family: var(--font-mono); font-size: 11px;
      color: var(--text-primary); align-self: flex-start;
    }
    .rv-import-file svg { color: var(--color-steel-400); flex-shrink: 0; }
    .rv-import-name { font-weight: 500; }
    .rv-import-size { color: var(--text-muted); font-size: 10px; }
    .rv-import-remove {
      width: 16px; height: 16px; border-radius: 50%;
      border: none; background: transparent;
      color: var(--text-muted); cursor: pointer;
      font-size: 13px; line-height: 1; padding: 0;
      display: inline-flex; align-items: center; justify-content: center;
    }
    .rv-import-remove:hover { background: var(--color-red-400); color: #fff; }

    .rv-quick-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted);
      margin-top: 2px;
    }
    .rv-chat-chips {
      display: flex; flex-wrap: wrap; gap: 6px;
    }
    .rv-chip {
      display: inline-flex; align-items: center; gap: 6px;
      font-family: var(--font-body); font-size: 11px; font-weight: 500;
      padding: 6px 11px; border-radius: var(--radius-pill);
      background: var(--bg-primary); border: 1px solid var(--color-steel-200);
      color: var(--text-primary); cursor: pointer;
      transition: all 0.12s ease;
    }
    .rv-chip:hover {
      border-color: var(--color-signal-400);
      color: var(--color-signal-600);
      background: var(--color-signal-50);
    }
    .rv-chip svg { flex-shrink: 0; opacity: 0.7; }
    .rv-chip:hover svg { opacity: 1; }

    /* ===== Future Issuance: issuer detail drawer ============ */
    .fi-drawer-backdrop {
      position: fixed; inset: 0;
      background: rgba(10,15,30,0.28);
      opacity: 0; pointer-events: none;
      transition: opacity 0.2s ease; z-index: 200;
    }
    .fi-drawer-backdrop.open { opacity: 1; pointer-events: auto; }
    .fi-drawer {
      position: fixed; top: 0; right: 0; bottom: 0;
      width: 680px; max-width: 94vw;
      background: var(--bg-primary);
      border-left: 1px solid var(--border-subtle);
      box-shadow: -8px 0 28px rgba(10,15,30,0.15);
      transform: translateX(100%);
      transition: transform 0.28s ease;
      z-index: 201;
      display: flex; flex-direction: column;
    }
    .fi-drawer.open { transform: translateX(0); }
    .fi-drawer-head {
      display: flex; align-items: flex-start; justify-content: space-between;
      gap: 12px;
      padding: 18px 22px 14px;
      border-bottom: 1px solid var(--border-subtle);
      background: var(--bg-secondary);
    }
    .fid-eyebrow {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--color-signal-400);
    }
    .fid-title {
      font-family: var(--font-display); font-size: 20px; font-weight: 700;
      letter-spacing: -0.02em; margin-top: 3px;
    }
    .fid-meta {
      display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
      margin-top: 8px;
      font-family: var(--font-mono); font-size: 11px;
      color: var(--text-secondary);
    }
    .fi-drawer-body {
      flex: 1; overflow-y: auto; padding: 20px 22px;
      display: flex; flex-direction: column; gap: 20px;
    }

    .fid-ranges {
      display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
    }
    .fid-range {
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md); padding: 10px 12px;
    }
    .fid-range-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .fid-range-value {
      font-family: var(--font-mono); font-size: 15px; font-weight: 500;
      color: var(--text-primary); margin-top: 4px;
    }

    .fid-section {
      display: flex; flex-direction: column; gap: 8px;
    }
    .fid-section-title {
      font-family: var(--font-display); font-size: 13px; font-weight: 600;
      letter-spacing: -0.01em;
      color: var(--text-primary);
    }
    .fid-section-sub {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.04em; color: var(--text-muted);
    }
    .fid-rationale, .fid-logic {
      font-size: 13px; line-height: 1.55;
      color: var(--text-secondary);
    }
    .fid-rationale p { margin-bottom: 8px; }
    .fid-signals {
      list-style: none; padding: 0; margin: 0;
      display: flex; flex-direction: column; gap: 6px;
    }
    .fid-signals li {
      padding-left: 18px; position: relative;
      font-size: 12px; color: var(--text-secondary); line-height: 1.5;
    }
    .fid-signals li::before {
      content: ""; position: absolute; left: 2px; top: 7px;
      width: 5px; height: 5px; border-radius: 50%;
      background: var(--color-signal-400);
    }

    /* Tenor distribution bar chart */
    .fid-tenor-bars {
      display: flex; align-items: flex-end; gap: 6px;
      height: 120px;
      padding: 8px 10px 6px;
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md);
    }
    .fid-tb-col {
      flex: 1; display: flex; flex-direction: column; align-items: center;
      justify-content: flex-end; gap: 4px; min-width: 0;
    }
    .fid-tb-fill {
      width: 100%; background: var(--color-steel-200);
      border-radius: 2px 2px 0 0; transition: background 0.15s ease;
    }
    .fid-tb-col.hot .fid-tb-fill { background: var(--color-signal-400); }
    .fid-tb-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.04em; color: var(--text-muted);
    }
    .fid-tb-col.hot .fid-tb-label { color: var(--color-signal-600); font-weight: 500; }

    /* Past issuance table */
    .fid-past-table { width: 100%; border-collapse: collapse; }
    .fid-past-table th {
      font-family: var(--font-mono); font-size: 9px; font-weight: 400;
      color: var(--text-muted); letter-spacing: 0.08em; text-transform: uppercase;
      text-align: left; padding: 6px 10px;
      border-bottom: 1px solid var(--border-subtle);
    }
    .fid-past-table th.r { text-align: right; }
    .fid-past-table td {
      font-family: var(--font-mono); font-size: 11px;
      color: var(--text-secondary);
      padding: 7px 10px; border-bottom: 1px solid var(--border-subtle);
    }
    .fid-past-table td.r { text-align: right; }
    .fid-past-table td.strong { color: var(--text-primary); font-weight: 500; }
    .fid-past-table tr:last-child td { border-bottom: none; }

    .fid-actions {
      display: flex; gap: 8px; flex-wrap: wrap;
    }

    .fid-chat {
      padding: 14px 16px;
      background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--color-signal-50) 140%);
      border: 1px solid var(--color-steel-200);
      border-radius: var(--radius-md);
      display: flex; flex-direction: column; gap: 12px;
    }

    /* Clickable issuer row in future-table */
    .fi-row-clickable { cursor: pointer; transition: background 0.12s ease; }
    .fi-row-clickable:hover { background: var(--bg-surface); }
    .fi-row-clickable td:first-child {
      border-left: 2px solid transparent;
      transition: border-color 0.12s ease;
    }
    .fi-row-clickable:hover td:first-child {
      border-left-color: var(--color-signal-400);
    }

    /* Range pill used in table */
    .fi-range-pill {
      font-family: var(--font-mono); font-size: 11px; font-weight: 500;
      color: var(--text-primary);
      white-space: nowrap;
    }
    .fi-range-pill .sub {
      font-size: 9px; color: var(--text-muted); letter-spacing: 0.04em;
      display: block; margin-top: 1px; font-weight: 400;
    }

    /* Issuer type filter chips */
    .fi-type-filter {
      display: flex; gap: 6px; flex-wrap: wrap;
      padding: 12px 16px;
      background: var(--bg-secondary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md);
      margin: 12px 0;
    }
    .fi-type-chip {
      display: inline-flex; align-items: center; gap: 4px;
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.04em;
      padding: 4px 10px; border-radius: var(--radius-pill);
      border: 1px solid var(--border-subtle);
      background: var(--bg-primary); color: var(--text-secondary);
      cursor: pointer; transition: all 0.12s ease;
    }
    .fi-type-chip:hover {
      border-color: var(--color-steel-400); color: var(--text-primary);
    }
    .fi-type-chip.active {
      background: var(--color-signal-50);
      border-color: var(--color-signal-400);
      color: var(--color-signal-600);
      font-weight: 500;
    }

    /* ===== Workspace tabs (browser-style) =================== */
    .tab-strip {
      display: flex; align-items: stretch;
      background: var(--bg-surface);
      border-bottom: 1px solid var(--border-subtle);
      padding: 6px 20px 0;
      gap: 3px;
      flex-shrink: 0;
      overflow-x: auto;
      min-height: 34px;
    }
    .tab-strip::-webkit-scrollbar { height: 3px; }
    .tab-strip::-webkit-scrollbar-thumb { background: var(--color-steel-200); border-radius: 2px; }

    .ws-tab {
      display: inline-flex; align-items: center; gap: 8px;
      padding: 6px 11px 7px;
      border: 1px solid transparent; border-bottom: none;
      border-radius: 6px 6px 0 0;
      font-family: var(--font-body); font-size: 12px;
      color: var(--text-secondary); cursor: pointer;
      background: transparent;
      text-decoration: none;
      white-space: nowrap;
      transition: background 0.12s ease, color 0.12s ease;
      position: relative; top: 1px;
      max-width: 220px;
    }
    .ws-tab:hover {
      background: rgba(255,255,255,0.6);
      color: var(--text-primary);
    }
    .ws-tab.active {
      background: var(--bg-primary);
      color: var(--text-primary);
      font-weight: 500;
      border-color: var(--border-subtle);
      z-index: 2;
    }
    .ws-tab-icon {
      color: var(--color-signal-400);
      font-size: 11px; flex-shrink: 0;
    }
    .ws-tab-label {
      overflow: hidden; text-overflow: ellipsis;
      white-space: nowrap; max-width: 150px;
    }
    .ws-tab-close {
      width: 16px; height: 16px; border-radius: 50%;
      border: none; background: transparent;
      color: var(--text-muted); cursor: pointer;
      display: inline-flex; align-items: center; justify-content: center;
      font-size: 14px; line-height: 1; padding: 0;
      flex-shrink: 0;
      transition: all 0.12s ease;
    }
    .ws-tab-close:hover {
      background: var(--color-red-400);
      color: #fff;
    }
    .ws-tab:not(.active):not(:hover) .ws-tab-close { opacity: 0; }
    .ws-tab-live {
      width: 6px; height: 6px; border-radius: 50%;
      background: var(--color-signal-400);
      box-shadow: 0 0 5px rgba(29,158,117,0.7);
      flex-shrink: 0;
      animation: wsPulse 2s ease-in-out infinite;
    }
    .ws-tab.active .ws-tab-live { display: none; }
    @keyframes wsPulse {
      0%, 100% { opacity: 1; transform: scale(1); }
      50% { opacity: 0.4; transform: scale(0.85); }
    }

    /* ===== My Portfolios: Overview (3 cards) ================ */
    .port-overview-content {
      flex: 1; overflow-y: auto;
      padding: 28px 36px 40px;
    }
    .port-overview-header {
      max-width: 1200px; margin: 0 auto 24px;
    }
    .port-overview-title {
      font-family: var(--font-display); font-size: 26px; font-weight: 700;
      letter-spacing: -0.025em; margin-bottom: 4px;
    }
    .port-overview-sub {
      font-family: var(--font-mono); font-size: 11px;
      letter-spacing: 0.04em; color: var(--text-muted);
    }
    .port-overview-grid {
      max-width: 1200px; margin: 0 auto;
      display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;
    }
    .port-big {
      display: flex; flex-direction: column; gap: 14px;
      padding: 22px 24px 18px;
      background: var(--bg-primary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg);
      cursor: pointer;
      text-decoration: none; color: inherit;
      transition: all 0.15s ease;
      position: relative; overflow: hidden;
    }
    .port-big::before {
      content: ""; position: absolute;
      left: 0; top: 0; bottom: 0; width: 3px;
      background: var(--color-signal-400);
    }
    .port-big:hover {
      border-color: var(--color-signal-400);
      transform: translateY(-2px);
      box-shadow: 0 8px 28px rgba(10,15,30,0.08);
    }
    .port-big-head {
      display: flex; align-items: center; justify-content: space-between;
      gap: 8px;
    }
    .port-big-ticker {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.1em; font-weight: 600;
      padding: 3px 9px; border-radius: var(--radius-pill);
      background: var(--color-signal-50); color: var(--color-signal-600);
      border: 1px solid var(--color-signal-200);
    }
    .port-big-ccy {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.08em; color: var(--text-muted);
      text-transform: uppercase;
    }
    .port-big-name {
      font-family: var(--font-display); font-size: 19px; font-weight: 700;
      letter-spacing: -0.02em; color: var(--text-primary);
      line-height: 1.2;
    }
    .port-big-aum {
      font-family: var(--font-mono); font-size: 13px; color: var(--text-muted);
      letter-spacing: 0.04em;
      padding-top: 6px;
      border-top: 1px solid var(--border-subtle);
    }
    .port-big-ccy-inline {
      font-size: 11px; letter-spacing: 0.06em; color: var(--text-muted);
    }
    .port-big-aum-val {
      font-family: var(--font-display); font-size: 30px; font-weight: 600;
      letter-spacing: -0.025em; color: var(--text-primary);
      margin-left: 2px;
    }
    .port-big-metrics {
      display: grid; grid-template-columns: repeat(3, 1fr);
      gap: 6px;
      padding: 10px 12px;
      background: var(--bg-secondary);
      border-radius: var(--radius-md);
    }
    .port-big-metric {
      display: flex; flex-direction: column; gap: 2px;
    }
    .pbm-k {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .pbm-v {
      font-family: var(--font-mono); font-size: 13px; font-weight: 500;
      color: var(--text-primary);
    }
    .port-big-foot {
      display: flex; align-items: center; justify-content: space-between;
      gap: 8px;
      font-family: var(--font-mono); font-size: 10px;
      color: var(--text-muted); letter-spacing: 0.04em;
      padding-top: 4px;
    }
    .port-big-cta {
      color: var(--color-signal-400); font-weight: 500;
    }
    .port-big:hover .port-big-cta { color: var(--color-signal-600); }

    @media (max-width: 1100px) {
      .port-overview-grid { grid-template-columns: repeat(2, 1fr); }
    }
    @media (max-width: 720px) {
      .port-overview-grid { grid-template-columns: 1fr; }
    }

    /* ===== Portfolio Detail ================================== */
    .pd-content { flex: 1; overflow-y: auto; padding: 0; display: flex; flex-direction: column; }
    .pd-layout {
      display: grid; grid-template-columns: 1fr 340px;
      min-height: 100%;
    }
    .pd-main {
      padding: 22px 28px 32px;
      min-width: 0;
      display: flex; flex-direction: column; gap: 20px;
    }

    /* Portfolio header */
    .pd-header {
      display: flex; align-items: flex-start; justify-content: space-between;
      gap: 20px; flex-wrap: wrap;
    }
    .pd-header-left { display: flex; flex-direction: column; gap: 6px; }
    .pd-ticker-row {
      display: inline-flex; align-items: center; gap: 10px;
    }
    .pd-ticker {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.12em; font-weight: 600;
      padding: 3px 10px; border-radius: var(--radius-pill);
      background: var(--color-signal-50); color: var(--color-signal-600);
      border: 1px solid var(--color-signal-200);
    }
    .pd-style {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; color: var(--text-muted);
    }
    .pd-name {
      font-family: var(--font-display); font-size: 24px; font-weight: 700;
      letter-spacing: -0.025em;
    }
    .pd-metrics-row {
      display: inline-flex; align-items: center; gap: 18px;
      padding: 10px 16px;
      background: var(--bg-secondary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md);
    }
    .pd-metric {
      display: flex; flex-direction: column; gap: 2px;
    }
    .pd-metric-k {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .pd-metric-v {
      font-family: var(--font-mono); font-size: 16px; font-weight: 500;
      color: var(--text-primary); line-height: 1.1;
    }
    .pd-metric-v.big { font-family: var(--font-display); font-size: 22px; font-weight: 700; letter-spacing: -0.02em; }

    .pd-section-head {
      display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
    }
    .pd-section-title {
      font-family: var(--font-display); font-size: 16px; font-weight: 600;
      letter-spacing: -0.01em;
    }
    .pd-section-sub {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; color: var(--text-muted);
    }

    /* Holdings table */
    .pd-holdings {
      background: var(--bg-primary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md);
      overflow: hidden;
    }
    .pd-holdings-table {
      width: 100%; border-collapse: collapse;
    }
    .pd-holdings-table th {
      font-family: var(--font-mono); font-size: 9px; font-weight: 400;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--text-muted);
      text-align: left; padding: 10px 14px;
      background: var(--bg-secondary);
      border-bottom: 1px solid var(--border-subtle);
    }
    .pd-holdings-table th.r { text-align: right; }
    .pd-holdings-table td {
      font-family: var(--font-body); font-size: 12px;
      padding: 10px 14px; border-bottom: 1px solid var(--border-subtle);
      color: var(--text-secondary);
    }
    .pd-holdings-table td.r { text-align: right; font-family: var(--font-mono); }
    .pd-holdings-table td.muted { color: var(--text-muted); font-family: var(--font-mono); font-size: 11px; }
    .pd-holdings-table td.strong { color: var(--text-primary); font-weight: 500; }
    .pd-holdings-table tr:last-child td { border-bottom: none; }
    .pd-holdings-table tr:hover td { background: var(--bg-surface); }
    .ph-type {
      font-family: var(--font-mono); font-size: 9px; font-weight: 500;
      letter-spacing: 0.06em;
      padding: 2px 8px; border-radius: var(--radius-pill);
      border: 1px solid transparent;
    }
    .ph-type.type-ssa {
      background: var(--color-signal-50); color: var(--color-signal-600);
      border-color: var(--color-signal-200);
    }
    .ph-type.type-covered {
      background: rgba(74,144,217,0.12); color: var(--color-blue-400);
      border-color: rgba(74,144,217,0.25);
    }

    /* Docs side pane */
    .pd-docs {
      border-left: 1px solid var(--border-subtle);
      background: var(--bg-secondary);
      display: flex; flex-direction: column;
      min-width: 0;
    }
    .pd-docs-head {
      padding: 18px 20px 14px;
      border-bottom: 1px solid var(--border-subtle);
      display: flex; align-items: flex-start; justify-content: space-between; gap: 10px;
      background: var(--bg-primary);
    }
    .pd-docs-title {
      font-family: var(--font-display); font-size: 14px; font-weight: 600;
      letter-spacing: -0.01em;
    }
    .pd-docs-sub {
      font-family: var(--font-mono); font-size: 10px;
      color: var(--text-muted); letter-spacing: 0.04em;
      margin-top: 3px;
    }
    .pd-docs-scoped {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      padding: 2px 8px; border-radius: var(--radius-pill);
      background: var(--color-signal-50); color: var(--color-signal-600);
      border: 1px solid var(--color-signal-200);
      white-space: nowrap; flex-shrink: 0;
    }

    .pd-upload {
      padding: 14px 16px;
      background: var(--bg-primary);
      border-bottom: 1px solid var(--border-subtle);
    }
    .pd-upload-drop {
      display: flex; align-items: center; gap: 10px;
      padding: 12px 14px; border-radius: var(--radius-md);
      border: 1.5px dashed var(--color-signal-400);
      background: var(--color-signal-50);
      cursor: pointer;
      transition: all 0.12s ease;
    }
    .pd-upload-drop:hover, .pd-upload-drop.drag {
      background: var(--color-signal-100);
      border-style: solid;
    }
    .pd-upload-drop svg { color: var(--color-signal-600); flex-shrink: 0; }
    .pd-upload-text {
      font-family: var(--font-body); font-size: 12px; font-weight: 500;
      color: var(--color-signal-600);
    }
    .pd-upload-sub {
      font-family: var(--font-mono); font-size: 9px;
      color: var(--text-secondary); letter-spacing: 0.04em;
      margin-top: 2px;
    }

    .pd-docs-list {
      flex: 1; overflow-y: auto; padding: 12px 14px 16px;
      display: flex; flex-direction: column; gap: 6px;
    }

    /* Portfolio chat */
    .pd-chat {
      padding: 20px 22px;
      background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--color-signal-50) 140%);
      border: 1.5px solid var(--color-steel-200);
      border-radius: var(--radius-lg);
      display: flex; flex-direction: column; gap: 14px;
      box-shadow: 0 2px 14px rgba(10,15,30,0.05);
    }
    .pd-chat-label {
      display: flex; align-items: center; gap: 8px;
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--color-signal-600); font-weight: 500;
    }
    .pd-chat-scoped-tag {
      padding: 2px 8px; border-radius: var(--radius-pill);
      background: var(--color-signal-50); color: var(--color-signal-600);
      border: 1px solid var(--color-signal-200);
      font-size: 9px; letter-spacing: 0.06em; font-weight: 500;
    }

    @media (max-width: 1100px) {
      .pd-layout { grid-template-columns: 1fr; }
      .pd-docs { border-left: none; border-top: 1px solid var(--border-subtle); }
    }

    /* ===== Portfolios & Context Workspace ==================== */
    .ctx-content { flex: 1; overflow-y: auto; padding: 0; display: flex; flex-direction: column; }
    .ctx-layout {
      display: grid; grid-template-columns: 320px 1fr;
      min-height: 100%;
    }

    /* Left rail: document library */
    .ctx-library {
      border-right: 1px solid var(--border-subtle);
      background: var(--bg-primary);
      display: flex; flex-direction: column;
      min-width: 0;
    }
    .ctx-library-head {
      padding: 18px 20px 12px;
      border-bottom: 1px solid var(--border-subtle);
    }
    .ctx-library-title {
      font-family: var(--font-display); font-size: 15px; font-weight: 600;
      letter-spacing: -0.01em;
    }
    .ctx-library-sub {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; color: var(--text-muted);
      margin-top: 3px;
    }
    .ctx-add-btn {
      margin: 12px 16px;
      padding: 10px 14px;
      border: 1.5px dashed var(--color-steel-200);
      border-radius: var(--radius-md);
      background: var(--bg-secondary);
      font-family: var(--font-body); font-size: 12px; font-weight: 500;
      color: var(--text-secondary); text-align: center;
      cursor: pointer; display: block;
      transition: all 0.12s ease;
    }
    .ctx-add-btn:hover {
      border-color: var(--color-signal-400);
      color: var(--color-signal-600);
      background: var(--color-signal-50);
      border-style: solid;
    }
    .ctx-doc-list {
      flex: 1; overflow-y: auto; padding: 8px 12px 20px;
      display: flex; flex-direction: column; gap: 6px;
    }
    .ctx-doc {
      display: flex; align-items: flex-start; gap: 10px;
      padding: 10px 12px;
      background: var(--bg-secondary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md);
      cursor: pointer;
      transition: all 0.12s ease;
    }
    .ctx-doc:hover {
      border-color: var(--color-signal-400);
      background: var(--bg-primary);
    }
    .ctx-doc.active {
      border-color: var(--color-signal-400);
      background: var(--color-signal-50);
    }
    .ctx-doc-icon {
      width: 26px; height: 32px; flex-shrink: 0;
      background: var(--bg-primary); border-radius: 3px;
      border: 1px solid var(--color-steel-200);
      display: inline-flex; align-items: center; justify-content: center;
      font-family: var(--font-mono); font-size: 7px; font-weight: 700;
      letter-spacing: 0.04em; color: var(--text-muted);
      position: relative;
    }
    .ctx-doc-icon::before {
      content: ""; position: absolute;
      top: -1px; right: -1px;
      width: 7px; height: 7px;
      background: var(--bg-primary);
      border-left: 1px solid var(--color-steel-200);
      border-bottom: 1px solid var(--color-steel-200);
    }
    .ctx-doc-icon.pdf { background: #FBEAE4; color: #B84A2A; border-color: #E6C9BD; }
    .ctx-doc-icon.xlsx { background: #E4F3E6; color: #2D6E3B; border-color: #BDD9C3; }
    .ctx-doc-icon.docx { background: #E4EDF6; color: #2D5A8E; border-color: #BDCDE0; }
    .ctx-doc-icon.csv  { background: #F1EEE0; color: #7A6324; border-color: #D6CFAF; }
    .ctx-doc-body {
      flex: 1; min-width: 0;
      display: flex; flex-direction: column; gap: 4px;
    }
    .ctx-doc-name {
      font-family: var(--font-body); font-size: 12px; font-weight: 500;
      color: var(--text-primary);
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .ctx-doc-meta {
      display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.04em; color: var(--text-muted);
    }
    .ctx-doc-type {
      padding: 1px 7px; border-radius: var(--radius-pill);
      background: var(--color-signal-50); color: var(--color-signal-600);
      font-weight: 500; border: 1px solid var(--color-signal-200);
      text-transform: uppercase; letter-spacing: 0.06em;
    }
    .ctx-doc-type.holdings   { background: var(--color-signal-50); color: var(--color-signal-600); border-color: var(--color-signal-200); }
    .ctx-doc-type.ima        { background: rgba(74,144,217,0.12); color: var(--color-blue-400); border-color: rgba(74,144,217,0.25); }
    .ctx-doc-type.research   { background: var(--color-yield-50); color: var(--color-yield-400); border-color: #E2C79B; }
    .ctx-doc-type.view       { background: rgba(186,117,23,0.12); color: var(--color-yield-400); border-color: rgba(186,117,23,0.25); }
    .ctx-doc-type.factsheet  { background: var(--bg-surface); color: var(--text-secondary); border-color: var(--border-subtle); }

    .ctx-doc-status {
      display: inline-flex; align-items: center; gap: 4px;
      color: var(--color-signal-400);
    }
    .ctx-doc-status .dot {
      width: 5px; height: 5px; border-radius: 50%;
      background: var(--color-signal-400);
      box-shadow: 0 0 4px rgba(29,158,117,0.6);
    }
    .ctx-doc-status.parsing .dot {
      background: var(--color-yield-400);
      box-shadow: 0 0 4px rgba(186,117,23,0.6);
      animation: wsPulse 1.2s ease-in-out infinite;
    }
    .ctx-doc-status.parsing { color: var(--color-yield-400); }

    /* Main column */
    .ctx-main {
      padding: 22px 28px 40px;
      display: flex; flex-direction: column; gap: 22px;
      min-width: 0;
    }

    .ctx-hero {
      display: flex; flex-direction: column; gap: 10px;
      padding: 22px 26px;
      background: linear-gradient(135deg, var(--bg-primary) 0%, var(--color-signal-50) 120%);
      border: 1px solid var(--color-signal-200);
      border-radius: var(--radius-lg);
    }
    .ctx-hero-title {
      font-family: var(--font-display); font-size: 20px; font-weight: 700;
      letter-spacing: -0.02em; color: var(--text-primary);
    }
    .ctx-hero-sub {
      font-size: 13px; color: var(--text-secondary); line-height: 1.55;
      max-width: 680px;
    }
    .ctx-drop {
      display: flex; align-items: center; gap: 12px;
      padding: 14px 18px; margin-top: 6px;
      border: 1.5px dashed var(--color-signal-400);
      border-radius: var(--radius-md);
      background: var(--bg-primary);
      cursor: pointer;
      transition: all 0.15s ease;
    }
    .ctx-drop:hover, .ctx-drop.drag {
      background: var(--color-signal-50);
      border-style: solid;
    }
    .ctx-drop svg { color: var(--color-signal-400); flex-shrink: 0; }
    .ctx-drop-text {
      font-family: var(--font-body); font-size: 13px; font-weight: 500;
      color: var(--text-primary);
    }
    .ctx-drop-sub {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; color: var(--text-muted);
      margin-top: 2px;
    }

    /* Parsed summary */
    .ctx-summary {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg);
      padding: 20px 22px;
      display: flex; flex-direction: column; gap: 16px;
    }
    .ctx-summary-head {
      display: flex; align-items: flex-start; justify-content: space-between; gap: 14px;
    }
    .ctx-summary-eyebrow {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--color-signal-400); font-weight: 500;
    }
    .ctx-summary-title {
      font-family: var(--font-display); font-size: 15px; font-weight: 600;
      letter-spacing: -0.01em; margin-top: 3px;
    }
    .ctx-refresh-btn {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; padding: 5px 12px;
      border: 1px solid var(--border-subtle); border-radius: var(--radius-pill);
      background: var(--bg-primary); color: var(--text-secondary);
      cursor: pointer;
    }
    .ctx-refresh-btn:hover {
      border-color: var(--color-signal-400); color: var(--color-signal-600);
    }

    .ctx-summary-grid {
      display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
    }
    .ctx-sum-tile {
      padding: 12px 14px;
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      border-left: 3px solid var(--color-signal-400);
      border-radius: var(--radius-md);
    }
    .ctx-sum-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .ctx-sum-value {
      font-family: var(--font-display); font-size: 22px; font-weight: 600;
      letter-spacing: -0.02em; color: var(--text-primary);
      margin-top: 2px; line-height: 1.1;
    }
    .ctx-sum-sub {
      font-family: var(--font-mono); font-size: 10px;
      color: var(--text-secondary); margin-top: 3px;
    }

    .ctx-entities {
      padding-top: 12px; border-top: 1px solid var(--border-subtle);
      display: flex; flex-direction: column; gap: 8px;
    }
    .ctx-entities-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .ctx-entity-chips {
      display: flex; flex-wrap: wrap; gap: 5px;
    }
    .ctx-chip {
      font-family: var(--font-mono); font-size: 10px;
      padding: 3px 9px; border-radius: var(--radius-pill);
      background: var(--bg-surface); color: var(--text-secondary);
      border: 1px solid var(--border-subtle);
    }
    .ctx-chip.ctx-chip-issuer {
      background: var(--color-signal-50); color: var(--color-signal-600);
      border-color: var(--color-signal-200);
    }
    .ctx-chip.ctx-chip-constraint {
      background: rgba(74,144,217,0.1); color: var(--color-blue-400);
      border-color: rgba(74,144,217,0.25);
    }
    .ctx-chip.ctx-chip-theme {
      background: var(--color-yield-50); color: var(--color-yield-400);
      border-color: #E2C79B;
    }

    /* Suggested actions */
    .ctx-section-head {
      display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
      margin-bottom: 10px;
    }
    .ctx-section-title {
      font-family: var(--font-display); font-size: 16px; font-weight: 600;
      letter-spacing: -0.01em;
    }
    .ctx-section-sub {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; color: var(--text-muted);
    }

    .ctx-action-grid {
      display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px;
    }
    .ctx-action {
      display: grid; grid-template-columns: 32px 1fr auto; gap: 12px;
      align-items: center;
      padding: 14px 16px;
      background: var(--bg-primary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md);
      cursor: pointer;
      text-decoration: none; color: inherit;
      transition: all 0.15s ease;
    }
    .ctx-action:hover {
      border-color: var(--color-signal-400);
      transform: translateY(-1px);
      box-shadow: 0 4px 14px rgba(10,15,30,0.05);
    }
    .ctx-action-icon {
      width: 32px; height: 32px; border-radius: 50%;
      background: var(--color-signal-50);
      display: inline-flex; align-items: center; justify-content: center;
      color: var(--color-signal-400); flex-shrink: 0;
    }
    .ctx-action-body { min-width: 0; }
    .ctx-action-title {
      font-family: var(--font-body); font-size: 13px; font-weight: 500;
      color: var(--text-primary); line-height: 1.3;
    }
    .ctx-action-sub {
      font-size: 12px; color: var(--text-secondary);
      margin-top: 3px; line-height: 1.45;
    }
    .ctx-action-cta {
      font-family: var(--font-mono); font-size: 10px; font-weight: 500;
      letter-spacing: 0.06em;
      color: var(--color-signal-400); white-space: nowrap;
    }
    .ctx-action:hover .ctx-action-cta {
      color: var(--color-signal-600);
    }

    @media (max-width: 1100px) {
      .ctx-summary-grid { grid-template-columns: repeat(2, 1fr); }
      .ctx-action-grid { grid-template-columns: 1fr; }
    }
    @media (max-width: 900px) {
      .ctx-layout { grid-template-columns: 1fr; }
      .ctx-library { border-right: none; border-bottom: 1px solid var(--border-subtle); }
    }

    /* ===== Copy artifact button (corner icon on cards) ===== */
    .rv-card { position: relative; }
    .card-copy {
      position: absolute; top: 10px; right: 10px;
      width: 24px; height: 24px; border-radius: 50%;
      border: 1px solid var(--border-subtle); background: var(--bg-primary);
      color: var(--text-muted); cursor: pointer;
      display: inline-flex; align-items: center; justify-content: center;
      transition: all 0.12s ease; opacity: 0.7;
    }
    .rv-card:hover .card-copy { opacity: 1; }
    .card-copy:hover {
      border-color: var(--color-signal-400);
      color: var(--color-signal-600);
      background: var(--color-signal-50);
      opacity: 1;
    }
    .card-copy::after {
      content: attr(data-label);
      position: absolute;
      bottom: calc(100% + 5px); right: 0;
      background: var(--color-midnight); color: #fff;
      font-family: var(--font-mono); font-size: 10px;
      padding: 4px 9px; border-radius: var(--radius-sm);
      white-space: nowrap; pointer-events: none;
      opacity: 0; transition: opacity 0.12s;
      box-shadow: 0 2px 8px rgba(0,0,0,0.25);
    }
    .card-copy:hover::after { opacity: 1; }

    /* ===== Share / Export modal ============================== */
    .share-backdrop {
      position: fixed; inset: 0;
      background: rgba(10,15,30,0.38);
      opacity: 0; pointer-events: none;
      transition: opacity 0.2s ease; z-index: 200;
    }
    .share-backdrop.open { opacity: 1; pointer-events: auto; }
    .share-modal {
      position: fixed; top: 50%; left: 50%;
      transform: translate(-50%, -48%);
      width: min(960px, 94vw);
      max-height: 88vh;
      background: var(--bg-primary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg);
      box-shadow: 0 20px 60px rgba(10,15,30,0.25);
      display: flex; flex-direction: column;
      z-index: 201;
      opacity: 0; pointer-events: none;
      transition: opacity 0.2s ease, transform 0.2s ease;
    }
    .share-modal.open {
      opacity: 1; pointer-events: auto;
      transform: translate(-50%, -50%);
    }
    .share-head {
      display: flex; align-items: flex-start; justify-content: space-between;
      padding: 18px 22px 14px; border-bottom: 1px solid var(--border-subtle);
    }
    .share-eyebrow {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--color-signal-400);
    }
    .share-title {
      font-family: var(--font-display); font-size: 18px; font-weight: 600;
      letter-spacing: -0.02em; margin-top: 3px;
    }
    .share-close {
      width: 28px; height: 28px; border-radius: 50%;
      border: 1px solid var(--border-subtle); background: var(--bg-primary);
      color: var(--text-muted); cursor: pointer; font-size: 18px; line-height: 1;
    }
    .share-close:hover { color: var(--text-primary); background: var(--bg-secondary); }

    .share-tabs {
      display: flex; gap: 2px; padding: 10px 14px 0;
      border-bottom: 1px solid var(--border-subtle);
      background: var(--bg-secondary);
    }
    .share-tab {
      display: inline-flex; align-items: center; gap: 7px;
      font-family: var(--font-body); font-size: 12px; font-weight: 500;
      padding: 10px 14px; border: none; background: none;
      color: var(--text-muted); cursor: pointer;
      border-bottom: 2px solid transparent;
      transition: color 0.12s ease, border-color 0.12s ease;
    }
    .share-tab:hover { color: var(--text-secondary); }
    .share-tab.active {
      color: var(--color-signal-600);
      border-bottom-color: var(--color-signal-400);
    }

    .share-body {
      flex: 1; overflow-y: auto; padding: 18px 22px;
      display: grid; grid-template-columns: 1fr 280px; gap: 20px;
    }
    .share-pane { display: none; grid-column: 1 / -1; grid-template-columns: 1fr 280px; gap: 20px; }
    .share-pane.active { display: grid; }
    .share-pane-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted); margin-bottom: 8px;
    }

    .share-preview-wrap { min-width: 0; }

    /* Spreadsheet preview */
    .share-sheet-preview {
      border: 1px solid var(--color-steel-200);
      border-radius: var(--radius-md);
      overflow: hidden;
      background: var(--bg-primary);
    }
    .share-sheet-preview table {
      width: 100%; border-collapse: collapse;
      font-family: var(--font-mono); font-size: 11px;
    }
    .share-sheet-preview th {
      background: #2E7D5B; color: #fff; font-weight: 500;
      padding: 6px 10px; text-align: left;
      letter-spacing: 0.04em;
      border-right: 1px solid rgba(255,255,255,0.15);
    }
    .share-sheet-preview th:last-child { border-right: none; }
    .share-sheet-preview td {
      padding: 6px 10px; border-bottom: 1px solid var(--border-subtle);
      border-right: 1px solid var(--border-subtle);
      color: var(--text-primary); background: var(--bg-primary);
    }
    .share-sheet-preview td:last-child { border-right: none; }
    .share-sheet-preview tr:nth-child(even) td { background: var(--bg-surface); }
    .share-sheet-preview td.total {
      background: var(--color-signal-50);
      color: var(--color-signal-600); font-weight: 600;
    }

    /* Document preview */
    .share-doc-preview {
      border: 1px solid var(--color-steel-200);
      border-radius: var(--radius-md);
      background: var(--bg-primary);
      padding: 28px 32px; max-height: 420px; overflow-y: auto;
      font-family: 'DM Serif Display', 'Syne', serif;
    }
    .doc-title {
      font-family: var(--font-display); font-size: 20px; font-weight: 700;
      letter-spacing: -0.02em; color: var(--text-primary);
    }
    .doc-sub {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; color: var(--text-muted);
      margin-top: 3px; padding-bottom: 12px;
      border-bottom: 1px solid var(--border-subtle);
    }
    .doc-section { margin-top: 16px; }
    .doc-section h4 {
      font-family: var(--font-display); font-size: 13px; font-weight: 600;
      text-transform: uppercase; letter-spacing: 0.08em;
      color: var(--color-signal-600); margin-bottom: 6px;
    }
    .doc-section p {
      font-family: var(--font-body); font-size: 13px;
      color: var(--text-primary); line-height: 1.55;
    }
    .doc-section p b, .doc-section p strong { font-weight: 600; }
    .doc-chart {
      width: 100%; height: 120px; display: block; margin-top: 8px;
    }

    /* Customize sidebar in modal */
    .share-customize {
      background: var(--bg-secondary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md);
      padding: 14px 16px;
      display: flex; flex-direction: column; gap: 14px;
      align-self: flex-start;
    }
    .share-customize-group {
      display: flex; flex-direction: column; gap: 6px;
    }
    .share-customize-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .share-customize input[type="text"],
    .share-customize textarea {
      font-family: var(--font-body); font-size: 12px;
      padding: 7px 10px; border-radius: var(--radius-md);
      border: 1px solid var(--color-steel-200);
      background: var(--bg-primary); color: var(--text-primary);
      outline: none; resize: vertical;
    }
    .share-customize input:focus, .share-customize textarea:focus {
      border-color: var(--color-signal-400);
      box-shadow: 0 0 0 3px rgba(29,158,117,0.12);
    }
    .share-check-row {
      display: flex; align-items: center; gap: 7px;
      font-size: 12px; color: var(--text-secondary); cursor: pointer;
    }
    .share-check-row input { accent-color: var(--color-signal-400); }

    /* Copy artifact list */
    .share-artifact-list {
      grid-column: 1 / -1;
      display: flex; flex-direction: column; gap: 8px;
    }
    .share-artifact {
      display: flex; align-items: center; justify-content: space-between;
      gap: 14px;
      padding: 12px 16px; border-radius: var(--radius-md);
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
    }
    .share-artifact:hover { border-color: var(--color-steel-200); }
    .sa-left { display: flex; align-items: center; gap: 10px; }
    .sa-icon {
      width: 28px; height: 28px; border-radius: var(--radius-sm);
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      display: inline-flex; align-items: center; justify-content: center;
      color: var(--color-signal-400); flex-shrink: 0;
    }
    .sa-name {
      font-family: var(--font-body); font-size: 13px; font-weight: 500;
      color: var(--text-primary);
    }
    .sa-desc {
      font-family: var(--font-mono); font-size: 10px;
      color: var(--text-muted); margin-top: 2px;
    }
    .sa-actions { display: flex; gap: 6px; flex-shrink: 0; }
    .sa-copy {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.04em;
      padding: 5px 11px; border-radius: var(--radius-pill);
      border: 1px solid var(--color-steel-200);
      background: var(--bg-primary); color: var(--text-secondary);
      cursor: pointer; transition: all 0.12s ease;
    }
    .sa-copy:hover {
      border-color: var(--color-signal-400);
      color: var(--color-signal-600);
      background: var(--color-signal-50);
    }

    .share-foot {
      display: flex; align-items: center; justify-content: space-between;
      padding: 12px 20px;
      background: var(--bg-secondary);
      border-top: 1px solid var(--border-subtle);
      border-bottom-left-radius: var(--radius-lg);
      border-bottom-right-radius: var(--radius-lg);
    }
    .share-status {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; color: var(--text-muted);
    }
    .share-foot-right { display: flex; gap: 8px; }

    /* ===== Toast ============================================== */
    .toast {
      position: fixed; bottom: 32px; left: 50%; transform: translateX(-50%) translateY(16px);
      padding: 10px 18px;
      background: var(--color-midnight); color: #fff;
      border-radius: var(--radius-pill);
      font-family: var(--font-body); font-size: 12px; font-weight: 500;
      display: inline-flex; align-items: center; gap: 8px;
      box-shadow: 0 8px 24px rgba(10,15,30,0.25);
      opacity: 0; pointer-events: none;
      transition: opacity 0.2s ease, transform 0.2s ease;
      z-index: 300;
    }
    .toast.show {
      opacity: 1; transform: translateX(-50%) translateY(0);
    }
    .toast svg { color: var(--color-signal-200); }

    /* Accordion-exclusive back bar */
    .accordion-back-bar {
      display: flex; align-items: center; margin-bottom: 2px;
    }
    .accordion-back-btn {
      display: inline-flex; align-items: center; gap: 6px;
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; text-transform: uppercase;
      padding: 6px 12px; border-radius: var(--radius-pill);
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      color: var(--text-secondary); cursor: pointer;
      transition: all 0.12s ease;
    }
    .accordion-back-btn:hover {
      border-color: var(--color-signal-400);
      color: var(--color-signal-600);
      background: var(--color-signal-50);
    }

    /* Inputs panel grid */
    .inputs-grid {
      display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
      margin-bottom: 12px;
    }
    .input-tile {
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md); padding: 10px 12px;
    }
    .input-tile-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .input-tile-value {
      font-family: var(--font-mono); font-size: 14px; font-weight: 500;
      color: var(--text-primary); margin-top: 4px;
    }
    .input-tile-sub {
      font-family: var(--font-mono); font-size: 10px;
      color: var(--text-secondary); margin-top: 2px;
    }

    .meth-hero {
      display: grid; grid-template-columns: 1.2fr 1fr; gap: 14px;
    }
    .meth-hero-card {
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); padding: 18px 20px;
    }
    .meth-hero-card.accent {
      border-left: 3px solid var(--color-signal-400);
      background: linear-gradient(135deg, var(--bg-primary) 0%, var(--color-signal-50) 100%);
    }
    .meth-hero-label {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.1em;
      text-transform: uppercase; color: var(--text-muted); margin-bottom: 8px;
    }
    .meth-hero-value {
      font-family: var(--font-mono); font-size: 28px; font-weight: 500;
      letter-spacing: -0.02em; line-height: 1;
    }
    .meth-hero-value.signal { color: var(--color-signal-400); }
    .meth-hero-sub { font-family: var(--font-mono); font-size: 11px; color: var(--text-secondary); margin-top: 8px; line-height: 1.5; }

    .meth-section {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); padding: 20px 22px;
    }
    .meth-section-title {
      font-family: var(--font-display); font-size: 15px; font-weight: 600;
      margin-bottom: 4px; letter-spacing: -0.01em;
    }
    .meth-section-eyebrow {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.1em;
      text-transform: uppercase; color: var(--color-signal-400); margin-bottom: 4px;
    }
    .meth-section-desc {
      font-family: var(--font-body); font-size: 12px; color: var(--text-secondary);
      line-height: 1.6; margin-bottom: 14px;
    }

    .meth-steps { display: flex; flex-direction: column; gap: 10px; }
    .meth-step {
      display: grid; grid-template-columns: 28px 1fr auto; gap: 14px;
      align-items: start;
      padding: 14px 16px; background: var(--bg-secondary);
      border: 1px solid var(--border-subtle); border-radius: var(--radius-md);
    }
    .meth-step-num {
      font-family: var(--font-mono); font-size: 11px; font-weight: 500;
      color: var(--color-signal-400);
      background: var(--bg-primary); border: 1px solid var(--color-signal-200);
      border-radius: 50%; width: 24px; height: 24px;
      display: flex; align-items: center; justify-content: center;
    }
    .meth-step-body { min-width: 0; }
    .meth-step-title {
      font-family: var(--font-body); font-size: 13px; font-weight: 500;
      color: var(--text-primary); margin-bottom: 4px;
    }
    .meth-step-detail {
      font-family: var(--font-body); font-size: 12px; color: var(--text-secondary);
      line-height: 1.5;
    }
    .meth-step-detail code {
      font-family: var(--font-mono); font-size: 11px;
      background: var(--bg-primary); padding: 1px 5px; border-radius: 3px;
      color: var(--text-primary); border: 1px solid var(--border-subtle);
    }
    .meth-step-result {
      font-family: var(--font-mono); font-size: 11px; font-weight: 500;
      color: var(--text-primary); white-space: nowrap;
      background: var(--bg-primary); padding: 4px 10px;
      border-radius: var(--radius-pill); border: 1px solid var(--border-subtle);
    }
    .meth-step-result.pos { color: var(--color-signal-600); border-color: var(--color-signal-200); background: var(--color-signal-50); }

    /* Comparables table (methodology) */
    .comp-table-full { width: 100%; border-collapse: collapse; margin-top: 6px; }
    .comp-table-full th {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.08em;
      text-transform: uppercase; color: var(--text-muted); font-weight: 400;
      text-align: left; padding: 8px 10px;
      border-bottom: 1px solid var(--border-subtle);
    }
    .comp-table-full th.r { text-align: right; }
    .comp-table-full td {
      font-family: var(--font-mono); font-size: 11px; color: var(--text-secondary);
      padding: 8px 10px; border-bottom: 1px solid var(--border-subtle);
    }
    .comp-table-full td.r { text-align: right; }
    .comp-table-full td.strong { color: var(--text-primary); font-weight: 500; }
    .comp-table-full tr:last-child td { border-bottom: none; }

    .meth-sources {
      display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
      padding: 12px 16px;
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md);
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.04em;
      color: var(--text-muted);
    }
    .meth-sources .conf-badge { background: var(--color-signal-50); color: var(--color-signal-600); padding: 3px 10px; border-radius: var(--radius-pill); font-weight: 500; }
    .meth-sources .src-item { display: flex; align-items: center; gap: 5px; }

    /* Clickable step affordance */
    .meth-step { cursor: pointer; transition: background 0.12s ease, border-color 0.12s ease; }
    .meth-step:hover { background: var(--bg-primary); border-color: var(--color-signal-200); }
    .meth-step:hover .meth-step-num { border-color: var(--color-signal-400); background: var(--color-signal-50); }
    .meth-step-chev {
      color: var(--text-muted); font-family: var(--font-mono); font-size: 11px;
      opacity: 0.5; transition: opacity 0.12s, transform 0.12s;
    }
    .meth-step:hover .meth-step-chev { opacity: 1; transform: translateX(2px); color: var(--color-signal-400); }

    /* ===== SIDE DRAWER ================================== */
    .drawer-backdrop {
      position: fixed; inset: 0; background: rgba(10, 15, 30, 0.28);
      opacity: 0; pointer-events: none; transition: opacity 0.2s ease; z-index: 200;
    }
    .drawer-backdrop.open { opacity: 1; pointer-events: auto; }
    .drawer {
      position: fixed; top: 0; right: 0; bottom: 0; width: 720px; max-width: 92vw;
      background: var(--bg-primary); border-left: 1px solid var(--border-subtle);
      box-shadow: -24px 0 60px rgba(10,15,30,0.12);
      transform: translateX(100%); transition: transform 0.28s cubic-bezier(0.2, 0.8, 0.2, 1);
      z-index: 201; display: flex; flex-direction: column;
    }
    .drawer.open { transform: translateX(0); }
    .drawer-head {
      display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
      padding: 22px 26px 16px; border-bottom: 1px solid var(--border-subtle);
    }
    .drawer-eyebrow {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.12em;
      text-transform: uppercase; color: var(--color-signal-400); margin-bottom: 6px;
    }
    .drawer-title { font-family: var(--font-display); font-size: 20px; font-weight: 700; letter-spacing: -0.02em; }
    .drawer-sub { font-family: var(--font-body); font-size: 12px; color: var(--text-secondary); margin-top: 4px; line-height: 1.5; }
    .drawer-close {
      width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--border-subtle);
      background: var(--bg-primary); color: var(--text-secondary);
      display: flex; align-items: center; justify-content: center; cursor: pointer;
      font-size: 14px; flex-shrink: 0;
    }
    .drawer-close:hover { background: var(--bg-secondary); color: var(--text-primary); }
    .drawer-body { flex: 1; overflow-y: auto; padding: 20px 26px 28px; }

    /* View toggle */
    .view-toggle {
      display: inline-flex; background: var(--bg-secondary);
      border: 1px solid var(--border-subtle); border-radius: var(--radius-pill);
      padding: 3px; margin-bottom: 16px;
    }
    .view-toggle button {
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.08em;
      text-transform: uppercase; padding: 5px 14px; border-radius: var(--radius-pill);
      border: none; background: transparent; cursor: pointer; color: var(--text-secondary);
      transition: all 0.12s ease;
    }
    .view-toggle button.active {
      background: var(--bg-primary); color: var(--text-primary);
      box-shadow: 0 1px 2px rgba(10,15,30,0.08);
    }
    .view-toggle button:hover:not(.active) { color: var(--text-primary); }

    .view-pane { display: none; }
    .view-pane.active { display: block; }

    /* FV Curve chart */
    .curve-chart {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); padding: 20px;
    }
    .curve-chart svg { width: 100%; height: auto; display: block; }
    .curve-legend {
      display: flex; gap: 18px; flex-wrap: wrap; margin-top: 14px;
      font-family: var(--font-mono); font-size: 10px; color: var(--text-secondary);
      padding-top: 12px; border-top: 1px solid var(--border-subtle);
    }
    .curve-legend .lg { display: inline-flex; align-items: center; gap: 6px; }
    .curve-legend .lg-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
    .curve-legend .lg-dot.peer { background: var(--color-steel-400); }
    .curve-legend .lg-dot.new { background: var(--color-signal-400); border: 2px solid var(--color-signal-400); box-shadow: 0 0 0 2px var(--color-signal-50); }
    .curve-legend .lg-line { width: 18px; height: 2px; background: var(--color-signal-400); display: inline-block; border-radius: 1px; }

    /* Spreadsheet (Excel-style) */
    .xl-frame {
      background: var(--bg-primary); border: 1px solid var(--border-default);
      border-radius: var(--radius-md); overflow: hidden;
    }
    .xl-tabs {
      display: flex; align-items: center; gap: 0;
      background: linear-gradient(180deg, #F7F6F1 0%, #EDEBE3 100%);
      border-bottom: 1px solid var(--border-default);
      padding: 0 10px;
    }
    .xl-tab {
      font-family: var(--font-mono); font-size: 10px; padding: 7px 14px;
      color: var(--text-secondary); border-right: 1px solid var(--border-default);
      cursor: default;
    }
    .xl-tab.active {
      background: var(--bg-primary); color: var(--text-primary);
      border-top: 2px solid var(--color-signal-400);
      padding-top: 5px; font-weight: 500;
    }
    .xl-addr {
      display: flex; align-items: center; gap: 8px;
      background: var(--bg-secondary); padding: 5px 12px;
      border-bottom: 1px solid var(--border-subtle);
      font-family: var(--font-mono); font-size: 10px; color: var(--text-muted);
    }
    .xl-addr .xl-cell-ref {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      padding: 2px 8px; border-radius: 2px; min-width: 60px; text-align: center;
      color: var(--text-primary);
    }
    .xl-addr .xl-formula { flex: 1; color: var(--text-primary); }
    .xl-addr .xl-fx { font-style: italic; color: var(--text-muted); margin-right: 4px; }

    .xl-grid { width: 100%; border-collapse: collapse; table-layout: fixed; }
    .xl-grid th, .xl-grid td {
      font-family: var(--font-mono); font-size: 11px;
      padding: 5px 8px; border-right: 1px solid #E8E6DF; border-bottom: 1px solid #E8E6DF;
      text-align: right;
    }
    .xl-grid th {
      background: linear-gradient(180deg, #F3F1EA 0%, #E8E6DF 100%);
      color: var(--text-secondary); font-weight: 400; text-align: center;
      font-size: 10px; letter-spacing: 0.04em;
    }
    .xl-grid th:first-child, .xl-grid td.xl-rh {
      background: linear-gradient(180deg, #F3F1EA 0%, #E8E6DF 100%);
      color: var(--text-secondary); text-align: center; width: 36px; font-weight: 400;
    }
    .xl-grid td.xl-text { text-align: left; color: var(--text-primary); }
    .xl-grid td.xl-highlight { background: var(--color-signal-50); font-weight: 500; }
    .xl-grid td.xl-bold { font-weight: 500; color: var(--text-primary); }
    .xl-grid td.xl-formula-cell { background: #FCF8EC; font-style: italic; color: var(--color-yield-400); }

    /* Math / computation blocks */
    .calc-block {
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md); padding: 18px 20px;
      font-family: var(--font-mono); font-size: 13px;
      display: flex; flex-direction: column; gap: 10px;
    }
    .calc-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
    .calc-row .cr-k { color: var(--text-secondary); }
    .calc-row .cr-v { color: var(--text-primary); font-weight: 500; }
    .calc-row.total {
      padding-top: 10px; border-top: 1px dashed var(--border-default);
      font-size: 15px;
    }
    .calc-row.total .cr-v { color: var(--color-signal-600); font-weight: 700; }

    .drawer-subtitle {
      font-family: var(--font-display); font-size: 13px; font-weight: 600;
      margin: 20px 0 8px; color: var(--text-primary);
    }
    .drawer-p {
      font-family: var(--font-body); font-size: 12px; color: var(--text-secondary);
      line-height: 1.6; margin-bottom: 10px;
    }
    .drawer-p code {
      font-family: var(--font-mono); font-size: 11px;
      background: var(--bg-secondary); padding: 1px 5px; border-radius: 3px;
      color: var(--text-primary); border: 1px solid var(--border-subtle);
    }

    /* ===== Drawer Chat (Calculation steps) ============== */
    .drawer-chat {
      margin-top: 24px;
      border-top: 1px solid var(--border-subtle);
      padding-top: 18px;
    }
    .drawer-chat-label {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.12em;
      text-transform: uppercase; color: var(--color-signal-400);
      margin-bottom: 6px;
    }
    .drawer-chat-title {
      font-family: var(--font-display); font-size: 13px; font-weight: 600;
      margin-bottom: 4px;
    }
    .drawer-chat-sub {
      font-family: var(--font-body); font-size: 12px;
      color: var(--text-secondary); line-height: 1.5; margin-bottom: 12px;
    }
    .drawer-chat-quick-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted); margin-top: 4px; margin-bottom: 6px;
    }
    .drawer-chat-suggest {
      display: flex; flex-wrap: wrap; gap: 6px;
      margin-bottom: 10px;
    }
    .sug-chip {
      font-family: var(--font-body); font-size: 11px;
      padding: 5px 10px; border-radius: var(--radius-pill);
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      color: var(--text-secondary); cursor: pointer;
      transition: border-color 0.12s ease, background 0.12s ease, color 0.12s ease;
    }
    .sug-chip:hover {
      border-color: var(--color-signal-400);
      background: var(--color-signal-50);
      color: var(--color-signal-600);
    }
    .drawer-chat-input {
      display: flex; gap: 8px; align-items: center;
    }
    .drawer-chat-input input[type="text"] {
      flex: 1; font-family: var(--font-body); font-size: 12px;
      padding: 9px 12px; border-radius: var(--radius-md);
      border: 1.5px solid var(--color-steel-200); background: var(--bg-primary);
      color: var(--text-primary); outline: none;
      box-shadow: inset 0 1px 2px rgba(10,15,30,0.04);
      transition: border-color 0.12s ease, box-shadow 0.12s ease;
    }
    .drawer-chat-input input[type="text"]::placeholder { color: var(--text-muted); }
    .drawer-chat-input input[type="text"]:hover { border-color: var(--color-steel-400); }
    .drawer-chat-input input[type="text"]:focus {
      border-color: var(--color-signal-400);
      box-shadow: inset 0 1px 2px rgba(10,15,30,0.04), 0 0 0 3px rgba(29,158,117,0.15);
    }
    .dc-msgs {
      display: flex; flex-direction: column; gap: 8px;
      margin-bottom: 10px;
    }
    .dc-msg {
      font-family: var(--font-body); font-size: 12px; line-height: 1.5;
      padding: 10px 13px; border-radius: var(--radius-md);
      max-width: 88%;
    }
    .dc-msg.user {
      align-self: flex-end;
      background: var(--color-signal-50); color: var(--text-primary);
      border: 1px solid var(--color-signal-200);
    }
    .dc-msg.bot {
      align-self: flex-start;
      background: var(--bg-secondary); color: var(--text-primary);
      border: 1px solid var(--border-subtle);
    }
    .dc-msg .dc-from {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.08em;
      text-transform: uppercase; color: var(--text-muted); display: block; margin-bottom: 3px;
    }
    .dc-msg .dc-diff {
      display: inline-block;
      font-family: var(--font-mono); font-size: 10px;
      padding: 3px 8px; border-radius: 3px; margin-top: 6px;
      background: #fff; border: 1px solid var(--border-subtle);
    }
    .dc-chips {
      display: flex; flex-wrap: wrap; gap: 6px;
      margin-bottom: 10px;
    }
    .dc-chip {
      font-family: var(--font-body); font-size: 11px;
      padding: 4px 10px; border-radius: var(--radius-pill);
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      color: var(--text-secondary); cursor: pointer;
      transition: all 0.12s ease;
    }
    .dc-chip:hover { border-color: var(--color-signal-400); background: var(--color-signal-50); color: var(--color-signal-600); }
    .dc-input-row {
      display: flex; gap: 8px; align-items: center;
    }
    .dc-input {
      flex: 1;
      font-family: var(--font-body); font-size: 12px;
      padding: 10px 13px; border-radius: var(--radius-md);
      border: 1.5px solid var(--color-steel-200); background: var(--bg-primary);
      outline: none;
      box-shadow: inset 0 1px 2px rgba(10,15,30,0.04);
      transition: border-color 0.12s ease, box-shadow 0.12s ease;
    }
    .dc-input::placeholder { color: var(--text-muted); }
    .dc-input:hover { border-color: var(--color-steel-400); }
    .dc-input:focus {
      border-color: var(--color-signal-400);
      box-shadow: inset 0 1px 2px rgba(10,15,30,0.04), 0 0 0 3px rgba(29,158,117,0.15);
    }
    .dc-send {
      width: 32px; height: 32px; border-radius: var(--radius-md);
      background: var(--color-midnight); color: #fff; border: none;
      cursor: pointer; display: flex; align-items: center; justify-content: center;
    }
    .dc-send:hover { background: var(--color-signal-600); }

    /* ===== Edit Methodology Screen ====================== */
    .edit-content { flex: 1; overflow-y: auto; padding: 24px 28px 40px; }
    .edit-shell { max-width: 860px; margin: 0 auto; display: flex; flex-direction: column; gap: 20px; }

    /* Two-column edit layout (main + saved-methodologies rail) */
    .edit-layout {
      display: grid;
      grid-template-columns: minmax(0, 1fr) 300px;
      gap: 24px;
      max-width: 1200px;
      margin: 0 auto;
      align-items: flex-start;
    }
    .edit-layout .edit-shell {
      max-width: none; margin: 0;
    }

    /* Saved methodologies rail */
    .meth-saved {
      position: sticky; top: 20px;
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); padding: 16px;
      display: flex; flex-direction: column; gap: 12px;
      max-height: calc(100vh - 110px); overflow-y: auto;
    }
    .meth-saved-title {
      font-family: var(--font-display); font-size: 14px; font-weight: 600;
      letter-spacing: -0.01em;
    }
    .meth-saved-sub {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; color: var(--text-muted);
      margin-top: 2px;
    }
    .meth-saved-list {
      display: flex; flex-direction: column; gap: 8px;
    }
    .msi {
      display: flex; flex-direction: column; gap: 5px;
      padding: 10px 12px; border-radius: var(--radius-md);
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      transition: all 0.12s ease; cursor: pointer;
    }
    .msi:hover {
      border-color: var(--color-signal-400);
      background: var(--bg-primary);
    }
    .msi.current {
      border-color: var(--color-signal-400);
      background: var(--color-signal-50);
      cursor: default;
    }
    .msi-row {
      display: flex; align-items: center; justify-content: space-between; gap: 6px;
    }
    .msi-name {
      font-family: var(--font-body); font-size: 12px; font-weight: 500;
      color: var(--text-primary); line-height: 1.3;
    }
    .msi-tag {
      font-family: var(--font-mono); font-size: 8px; font-weight: 500;
      letter-spacing: 0.08em; text-transform: uppercase;
      padding: 2px 7px; border-radius: var(--radius-pill);
      background: var(--color-signal-400); color: #fff;
      flex-shrink: 0;
    }
    .msi-meta {
      font-family: var(--font-mono); font-size: 10px; color: var(--text-muted);
      line-height: 1.4;
    }
    .msi-foot {
      display: flex; align-items: center; justify-content: space-between; margin-top: 3px;
    }
    .msi-rv {
      font-family: var(--font-mono); font-size: 10px; font-weight: 500;
      color: var(--text-secondary);
      padding: 2px 8px; border-radius: var(--radius-pill);
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
    }
    .msi.current .msi-rv { color: var(--color-signal-600); background: #fff; border-color: var(--color-signal-200); }
    .msi-load {
      font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.08em;
      text-transform: uppercase;
      padding: 4px 10px; border-radius: var(--radius-pill);
      border: 1px solid var(--color-steel-200); background: var(--bg-primary);
      color: var(--text-secondary); cursor: pointer;
      transition: all 0.12s ease;
    }
    .msi-load:hover {
      border-color: var(--color-signal-400); color: var(--color-signal-600);
      background: var(--color-signal-50);
    }
    .meth-saved-save {
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em;
      padding: 8px 12px; border-radius: var(--radius-md);
      border: 1px dashed var(--color-steel-200); background: none;
      color: var(--text-secondary); cursor: pointer;
      transition: all 0.12s ease;
    }
    .meth-saved-save:hover {
      border-color: var(--color-signal-400); color: var(--color-signal-600);
      background: var(--color-signal-50); border-style: solid;
    }

    /* Issue scope pill */
    .meth-scope-pill {
      display: inline-flex; align-items: center; gap: 5px;
      padding: 2px 10px; border-radius: var(--radius-pill);
      background: var(--color-signal-50); color: var(--color-signal-600);
      border: 1px solid var(--color-signal-200);
      font-weight: 500;
    }

    /* Collapsible edit cards */
    .edit-card-head {
      display: flex; align-items: center; justify-content: space-between;
      gap: 10px; cursor: pointer; user-select: none;
    }
    .edit-card.collapsible .edit-card-title { margin-bottom: 0; }
    .ec-chevron {
      font-family: var(--font-mono); font-size: 11px; color: var(--text-muted);
      transition: transform 0.2s ease; flex-shrink: 0;
    }
    .edit-card.collapsed .ec-chevron { transform: rotate(-90deg); }
    .edit-card.collapsed .edit-card-body { display: none; }
    .edit-card-body { display: flex; flex-direction: column; gap: 0; margin-top: 4px; }
    .edit-card.collapsed { padding-bottom: 18px; }
    .edit-header {
      display: flex; align-items: flex-end; justify-content: space-between; gap: 20px;
    }
    .edit-title { font-family: var(--font-display); font-size: 22px; font-weight: 700; letter-spacing: -0.03em; }
    .edit-sub { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); margin-top: 4px; }
    .edit-warning {
      display: flex; align-items: flex-start; gap: 10px;
      padding: 12px 16px; border-radius: var(--radius-md);
      background: var(--color-yield-50);
      border: 1px solid var(--color-yield-200);
      font-family: var(--font-body); font-size: 12px; color: var(--color-yield-400); line-height: 1.5;
    }
    .edit-warning .ew-icon { flex-shrink: 0; font-weight: 700; font-size: 14px; }
    .edit-card {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); padding: 20px 22px;
    }
    .edit-card-title {
      font-family: var(--font-display); font-size: 15px; font-weight: 600; letter-spacing: -0.01em;
      margin-bottom: 4px;
    }
    .edit-card-desc {
      font-family: var(--font-body); font-size: 12px; color: var(--text-secondary);
      line-height: 1.5; margin-bottom: 14px;
    }
    .edit-field {
      display: grid; grid-template-columns: 180px 1fr; gap: 14px;
      padding: 10px 0;
      border-top: 1px solid var(--border-subtle);
      align-items: center;
    }
    .edit-field:first-of-type { border-top: none; padding-top: 2px; }
    .edit-field-label {
      font-family: var(--font-body); font-size: 12px; color: var(--text-secondary);
    }
    .edit-field-label .efl-key {
      display: block; font-family: var(--font-mono); font-size: 9px; color: var(--text-muted);
      letter-spacing: 0.06em; margin-top: 2px;
    }
    .edit-card input[type="text"], .edit-card input[type="number"], .edit-card select, .edit-card textarea {
      font-family: var(--font-mono); font-size: 12px;
      padding: 7px 10px; border-radius: var(--radius-md);
      border: 1px solid var(--color-steel-200);
      background: var(--bg-surface);
      color: var(--text-primary);
      outline: none;
      transition: border-color 0.12s ease, background 0.12s ease, box-shadow 0.12s ease;
      width: 100%;
    }
    .edit-card input:hover, .edit-card select:hover, .edit-card textarea:hover {
      border-color: var(--color-steel-400);
      background: var(--bg-primary);
    }
    .edit-card input:focus, .edit-card select:focus, .edit-card textarea:focus {
      border-color: var(--color-signal-400);
      background: var(--bg-primary);
      box-shadow: 0 0 0 3px rgba(29,158,117,0.12);
    }
    .edit-field .field-suffix {
      font-family: var(--font-mono); font-size: 11px; color: var(--text-muted);
    }
    .edit-field-row { display: flex; gap: 8px; align-items: center; }
    .edit-toggle {
      display: inline-flex; background: var(--bg-secondary);
      border: 1px solid var(--border-subtle); border-radius: var(--radius-pill); padding: 3px;
    }
    .edit-toggle button {
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase;
      padding: 4px 12px; border-radius: var(--radius-pill);
      border: none; background: transparent; cursor: pointer; color: var(--text-secondary);
    }
    .edit-toggle button.active { background: var(--bg-primary); color: var(--text-primary); box-shadow: 0 1px 2px rgba(10,15,30,0.08); }
    .edit-actionbar {
      position: sticky; bottom: 0; display: flex; justify-content: space-between; align-items: center;
      padding: 14px 18px;
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg);
      box-shadow: 0 -6px 16px rgba(10,15,30,0.04);
    }
    .edit-actionbar .eab-status {
      font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em; color: var(--text-muted);
    }
    .edit-actionbar .eab-status.dirty {
      color: var(--color-yield-400);
    }
    .edit-actionbar-right { display: flex; gap: 8px; }

    /* Methodology editor: intent banner, chat, snapshot, diff */
    .meth-intent {
      padding: 14px 18px; border-radius: var(--radius-lg);
      background: var(--color-signal-50); border: 1px solid var(--color-signal-200);
      font-size: 13px; color: var(--text-primary); line-height: 1.55;
    }
    .meth-intent strong { color: var(--color-signal-600); font-weight: 600; }

    .meth-version-row {
      display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; color: var(--text-muted); margin-top: 6px;
    }
    .meth-version-pill {
      padding: 2px 8px; border-radius: var(--radius-pill);
      background: var(--bg-surface); color: var(--text-secondary);
      border: 1px solid var(--border-subtle);
    }

    .meth-chat {
      padding: 16px 18px;
      background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--color-signal-50) 140%);
      border: 1px solid var(--color-steel-200);
      border-radius: var(--radius-lg);
      display: flex; flex-direction: column; gap: 12px;
    }
    .meth-chat-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted);
    }

    .meth-snapshot {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); padding: 18px 20px;
      display: flex; flex-direction: column; gap: 14px;
    }
    .snapshot-top {
      display: flex; align-items: flex-start; justify-content: space-between;
      gap: 16px; flex-wrap: wrap;
    }
    .snapshot-eyebrow {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted);
    }
    .snapshot-title {
      font-family: var(--font-display); font-size: 16px; font-weight: 600;
      letter-spacing: -0.01em; margin-top: 3px;
    }
    .snapshot-rv {
      display: inline-flex; align-items: baseline; gap: 8px;
      padding: 8px 14px; border-radius: var(--radius-md);
      background: var(--color-signal-50);
      border: 1px solid var(--color-signal-200);
    }
    .snapshot-rv-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--color-signal-600);
    }
    .snapshot-rv-value {
      font-family: var(--font-mono); font-size: 16px; font-weight: 500;
      color: var(--color-signal-400);
    }

    .snapshot-grid {
      display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px;
    }
    .snapshot-row {
      display: flex; flex-direction: column; gap: 3px;
      padding: 10px 12px; border-radius: var(--radius-md);
      background: var(--bg-secondary); border: 1px solid var(--border-subtle);
      cursor: pointer; transition: all 0.12s ease;
      text-decoration: none; color: inherit;
    }
    .snapshot-row:hover {
      border-color: var(--color-signal-400);
      background: var(--bg-primary);
      transform: translateY(-1px);
    }
    .snapshot-k {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .snapshot-v {
      font-family: var(--font-body); font-size: 13px; font-weight: 500;
      color: var(--text-primary); line-height: 1.35;
    }
    .snapshot-row-caret {
      font-family: var(--font-mono); font-size: 10px;
      color: var(--color-signal-400); margin-top: 2px; opacity: 0;
      transition: opacity 0.12s ease;
    }
    .snapshot-row:hover .snapshot-row-caret { opacity: 1; }

    /* Pending changes / confirmation bar */
    .meth-diff {
      padding: 12px 16px; border-radius: var(--radius-md);
      background: var(--color-yield-50);
      border: 1px solid var(--color-yield-200);
      border-left: 3px solid var(--color-yield-400);
      display: flex; flex-direction: column; gap: 8px;
    }
    .meth-diff-head {
      display: flex; align-items: center; justify-content: space-between;
      gap: 8px;
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--color-yield-400); font-weight: 500;
    }
    .meth-diff-head-left {
      display: flex; align-items: center; gap: 8px;
    }
    .meth-diff-discard {
      display: inline-flex; align-items: center; gap: 5px;
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      padding: 4px 10px; border-radius: var(--radius-pill);
      border: 1px solid var(--color-yield-200);
      background: var(--bg-primary); color: var(--color-yield-400);
      cursor: pointer; font-weight: 500;
      transition: all 0.12s ease;
    }
    .meth-diff-discard:hover {
      background: var(--color-yield-400); color: #fff;
      border-color: var(--color-yield-400);
    }
    .meth-diff-item {
      display: flex; justify-content: space-between; align-items: baseline;
      gap: 12px; font-size: 12px; color: var(--text-secondary);
      padding: 6px 0; border-top: 1px solid var(--color-yield-200);
    }
    .meth-diff-item:first-of-type { border-top: none; padding-top: 0; }
    .meth-diff-k { font-family: var(--font-mono); font-size: 11px; color: var(--text-primary); }
    .meth-diff-k b { color: var(--color-yield-400); font-weight: 500; }
    .meth-diff-impact {
      font-family: var(--font-mono); font-size: 11px;
      color: var(--color-signal-600); font-weight: 500;
      white-space: nowrap;
    }

    /* Pulse highlight when routed to a card from chat/snapshot */
    @keyframes methPulse {
      0%   { box-shadow: 0 0 0 0 rgba(29,158,117,0.35); border-color: var(--color-signal-400); }
      70%  { box-shadow: 0 0 0 8px rgba(29,158,117,0); border-color: var(--color-signal-400); }
      100% { box-shadow: 0 0 0 0 rgba(29,158,117,0); border-color: var(--border-subtle); }
    }
    .edit-card.pulse { animation: methPulse 1.2s ease 1; }

    /* ===== SCREEN: Future Issuance ===== */
    .future-content { flex: 1; overflow-y: auto; padding: 0; display: flex; flex-direction: column; }
    .future-layout {
      display: block;
      min-height: 100%;
    }
    .future-main { padding: 24px 28px 40px; min-width: 0; }
    .future-header {
      display: flex; justify-content: space-between; align-items: flex-start;
      gap: 24px; margin-bottom: 20px; flex-wrap: wrap;
    }
    .future-header-actions {
      display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
    }
    .seg-toggle {
      display: inline-flex; background: var(--bg-secondary);
      border: 1px solid var(--border-subtle); border-radius: var(--radius-md);
      padding: 3px;
    }
    .seg-btn {
      padding: 6px 14px; font-family: var(--font-body); font-size: 12px;
      color: var(--text-muted); background: none; border: none;
      border-radius: calc(var(--radius-md) - 3px); cursor: pointer;
      transition: background 0.12s, color 0.12s;
    }
    .seg-btn:hover { color: var(--text-primary); }
    .seg-btn.active { background: var(--bg-primary); color: var(--text-primary); font-weight: 500; box-shadow: var(--shadow-xs); }

    .fi-filter-group { display: inline-flex; gap: 8px; }
    .fi-select {
      font-family: var(--font-body); font-size: 12px;
      padding: 7px 28px 7px 10px; border: 1px solid var(--border-subtle);
      border-radius: var(--radius-md); background: var(--bg-primary);
      color: var(--text-primary); cursor: pointer;
      appearance: none;
      background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%237C859A' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E");
      background-repeat: no-repeat; background-position: right 10px center;
    }
    .fi-select:hover { border-color: var(--color-steel-200); }
    .fi-select:focus { outline: none; border-color: var(--color-signal-400); box-shadow: 0 0 0 3px rgba(29,158,117,0.1); }

    .fi-summary {
      display: grid; grid-template-columns: repeat(4, 1fr);
      gap: 12px; margin-bottom: 20px;
    }
    .fi-stat {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); padding: 14px 16px;
    }
    .fi-stat-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--text-muted); margin-bottom: 6px;
    }
    .fi-stat-value {
      font-family: var(--font-display); font-size: 22px; line-height: 1.1;
      color: var(--text-primary); font-weight: 500;
    }
    .fi-stat-value.green { color: var(--color-signal-600); }
    .fi-stat-sub {
      font-family: var(--font-mono); font-size: 10px;
      color: var(--text-muted); margin-top: 4px;
    }

    .fi-chart-wrap {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); padding: 18px 20px 12px;
      margin-bottom: 20px;
    }
    .fi-chart-header {
      display: flex; justify-content: space-between; align-items: flex-start;
      gap: 16px; margin-bottom: 16px;
    }
    .fi-chart-title {
      font-family: var(--font-display); font-size: 15px; color: var(--text-primary);
      font-weight: 500;
    }
    .fi-chart-sub {
      font-family: var(--font-mono); font-size: 10px; color: var(--text-muted);
      margin-top: 2px;
    }
    .fi-legend { display: flex; gap: 14px; flex-wrap: wrap; }
    .fi-legend-item {
      display: inline-flex; align-items: center; gap: 6px;
      font-family: var(--font-mono); font-size: 10px;
      color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.06em;
    }
    .fi-legend-swatch { width: 10px; height: 10px; border-radius: 2px; }

    .fi-chart {
      position: relative; height: 240px;
      display: flex; align-items: flex-end; justify-content: center;
      gap: 6px; padding: 0 4px;
      border-bottom: 1px solid var(--color-steel-200);
    }
    .fi-bar-group {
      flex: 1; min-width: 0;
      display: flex; flex-direction: column;
      align-items: center;
      cursor: pointer; position: relative;
      transition: transform 0.15s;
    }
    .fi-bar-group:hover { transform: translateY(-2px); }
    .fi-bar-stack {
      width: 100%; display: flex; flex-direction: column-reverse;
      border-radius: 3px 3px 0 0; overflow: hidden;
      box-shadow: 0 1px 0 rgba(0,0,0,0.04);
      transition: filter 0.15s, opacity 0.15s;
      opacity: 0.85;
    }
    .fi-bar-group:hover .fi-bar-stack { opacity: 1; }
    .fi-bar-group.selected .fi-bar-stack {
      opacity: 1; box-shadow: 0 0 0 2px var(--color-midnight), 0 2px 8px rgba(10,15,30,0.15);
    }
    .fi-chart-labels {
      display: flex; justify-content: center;
      gap: 6px; padding: 8px 4px 0;
    }
    .fi-bar-label.selected {
      color: var(--text-primary);
    }
    .fi-bar-label.selected .fi-bar-dates { font-weight: 600; color: var(--text-primary); }
    .fi-bar-seg { width: 100%; transition: background 0.12s, filter 0.12s; cursor: pointer; }
    .fi-bar-seg:hover { filter: brightness(1.08); }

    /* Hover tooltip for stacked segments (type · amount · deals) */
    .fi-seg-tooltip {
      position: fixed; z-index: 900;
      background: var(--color-midnight); color: #fff;
      border-radius: var(--radius-md);
      padding: 10px 12px; min-width: 140px;
      font-family: var(--font-body); font-size: 12px;
      box-shadow: 0 8px 24px rgba(10,15,30,0.28);
      opacity: 0; pointer-events: none;
      transform: translateY(4px);
      transition: opacity 0.12s ease, transform 0.12s ease;
    }
    .fi-seg-tooltip.open { opacity: 1; transform: translateY(0); }
    .fi-tt-head {
      display: flex; align-items: center; gap: 7px;
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: rgba(255,255,255,0.75);
      padding-bottom: 7px; margin-bottom: 6px;
      border-bottom: 1px solid rgba(255,255,255,0.15);
    }
    .fi-tt-swatch { width: 10px; height: 10px; border-radius: 2px; flex-shrink: 0; }
    .fi-tt-type { color: #fff; font-weight: 500; }
    .fi-tt-row {
      display: flex; justify-content: space-between; gap: 14px;
      padding: 2px 0;
      font-family: var(--font-mono); font-size: 11px;
      color: rgba(255,255,255,0.65);
    }
    .fi-tt-row b { color: #fff; font-weight: 500; }
    .fi-bar-seg.sec-corp  { background: #EFEAE0; }
    .fi-bar-seg.sec-fin   { background: var(--color-signal-200); }
    .fi-bar-seg.sec-agy   { background: #C3D3E8; }
    .fi-bar-seg.sec-sov   { background: #E2C7C7; }
    .fi-bar-seg.sec-supra { background: #D6C3E5; }
    .fi-bar-seg.sec-muni  { background: #C2DCCE; }
    .fi-bar-group.low-conf .fi-bar-stack {
      background-image: repeating-linear-gradient(
        45deg, transparent, transparent 4px,
        rgba(255,255,255,0.4) 4px, rgba(255,255,255,0.4) 6px
      );
    }
    .fi-bar-label {
      flex: 1; min-width: 0;
      font-family: var(--font-mono); font-size: 10px;
      color: var(--text-muted);
      text-align: center;
      display: flex; flex-direction: column; gap: 2px;
      line-height: 1.2;
    }
    .fi-bar-dates {
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
      color: var(--text-secondary);
    }
    .fi-bar-weeknum {
      font-size: 8px; letter-spacing: 0.06em;
      text-transform: uppercase; color: var(--text-muted);
    }
    .fi-bar-value {
      font-family: var(--font-mono); font-size: 10px;
      color: var(--text-secondary); font-weight: 500;
      opacity: 0; transition: opacity 0.15s;
      pointer-events: none; white-space: nowrap;
      margin-bottom: 4px;
    }
    .fi-bar-group:hover .fi-bar-value,
    .fi-bar-group.selected .fi-bar-value { opacity: 1; color: var(--text-primary); }
    .fi-chart-axis {
      display: flex; justify-content: flex-start; padding: 6px 4px 0;
    }
    .fi-yaxis-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--text-muted);
    }

    /* Detail table */
    .fi-detail {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      border-radius: var(--radius-lg); overflow: hidden;
    }
    .fi-detail-header {
      padding: 16px 20px; display: flex;
      justify-content: space-between; align-items: center; gap: 16px;
      border-bottom: 1px solid var(--border-subtle);
    }
    .fi-detail-eyebrow {
      font-family: var(--font-mono); font-size: 10px; color: var(--text-muted);
      letter-spacing: 0.08em; text-transform: uppercase;
    }
    .fi-detail-title {
      font-family: var(--font-display); font-size: 15px;
      color: var(--text-primary); font-weight: 500; margin-top: 3px;
    }
    .fi-detail-actions { display: flex; gap: 8px; }
    .fi-table { font-size: 12px; }
    .fi-table th { padding: 10px 12px !important; }
    .fi-table td { padding: 10px 12px; vertical-align: middle; }
    .fi-table tbody tr { transition: background 0.1s; }
    .fi-table tbody tr:hover { background: var(--bg-secondary); cursor: pointer; }
    .fi-issuer { font-weight: 500; }
    .fi-driver-chips {
      display: inline-flex; gap: 4px; flex-wrap: wrap;
    }
    .fi-driver {
      font-family: var(--font-mono); font-size: 9px;
      padding: 2px 6px; border-radius: 3px;
      background: var(--bg-secondary); color: var(--text-secondary);
      border: 1px solid var(--border-subtle);
    }
    .fi-gap-pos { color: var(--color-signal-600); font-weight: 500; }
    .fi-gap-neg { color: var(--color-danger-400, #c4504a); font-weight: 500; }
    .fi-gap-flat { color: var(--text-muted); }
    .fi-table-footer {
      padding: 10px 20px; display: flex;
      justify-content: space-between; align-items: center;
      font-family: var(--font-mono); font-size: 10px;
      border-top: 1px solid var(--border-subtle);
      background: var(--bg-secondary);
    }
    .fi-link {
      color: var(--color-signal-600); text-decoration: none; cursor: pointer;
      font-family: var(--font-body); font-size: 12px;
    }
    .fi-link:hover { text-decoration: underline; }

    /* Right tray (Prediction Model) */
    .fi-rail-backdrop {
      position: fixed; inset: 0;
      background: rgba(10,15,30,0.28);
      opacity: 0; pointer-events: none;
      transition: opacity 0.2s ease;
      z-index: 200;
    }
    .fi-rail-backdrop.open { opacity: 1; pointer-events: auto; }

    .fi-rail {
      position: fixed; top: 0; right: 0; bottom: 0;
      width: 420px; max-width: 94vw;
      border-left: 1px solid var(--border-subtle);
      background: var(--bg-secondary);
      box-shadow: -8px 0 28px rgba(10,15,30,0.15);
      transform: translateX(100%);
      transition: transform 0.28s ease;
      z-index: 201;
      display: flex; flex-direction: column;
      min-width: 0;
    }
    .fi-rail.open { transform: translateX(0); }

    .fi-rail-close {
      width: 28px; height: 28px; border-radius: 50%;
      border: 1px solid var(--border-subtle); background: var(--bg-primary);
      color: var(--text-muted); cursor: pointer;
      font-size: 18px; line-height: 1; flex-shrink: 0;
      display: inline-flex; align-items: center; justify-content: center;
      transition: all 0.12s ease;
    }
    .fi-rail-close:hover {
      color: var(--text-primary); background: var(--bg-secondary);
    }

    /* Toggle button in header */
    .fi-rail-toggle {
      display: inline-flex; align-items: center; gap: 6px;
    }

    /* Upload section */
    .fi-rail-upload {
      padding: 14px 20px; border-bottom: 1px solid var(--border-subtle);
      background: var(--bg-primary);
      display: flex; flex-direction: column; gap: 10px;
    }
    .fi-upload-label {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.1em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .fi-upload-drop {
      display: flex; flex-direction: column; align-items: center; justify-content: center;
      gap: 6px;
      padding: 18px 16px;
      border: 1.5px dashed var(--color-steel-200);
      border-radius: var(--radius-md);
      background: var(--bg-secondary);
      cursor: pointer;
      transition: all 0.15s ease;
      text-align: center;
    }
    .fi-upload-drop:hover {
      border-color: var(--color-signal-400);
      background: var(--color-signal-50);
    }
    .fi-upload-drop.drag {
      border-color: var(--color-signal-400); border-style: solid;
      background: var(--color-signal-50);
    }
    .fi-upload-drop svg { color: var(--color-signal-400); }
    .fi-upload-text {
      font-family: var(--font-body); font-size: 12px; color: var(--text-primary);
      font-weight: 500;
    }
    .fi-upload-sub {
      font-family: var(--font-mono); font-size: 10px; color: var(--text-muted);
      letter-spacing: 0.04em;
    }
    .fi-upload-files {
      display: flex; flex-direction: column; gap: 5px;
    }
    .fi-upload-file {
      display: flex; align-items: center; gap: 8px;
      padding: 6px 10px;
      background: var(--bg-secondary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-sm);
      font-family: var(--font-mono); font-size: 11px;
    }
    .fi-upload-file svg { color: var(--color-steel-400); flex-shrink: 0; }
    .fi-upload-name {
      flex: 1; color: var(--text-primary);
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .fi-upload-size { color: var(--text-muted); font-size: 10px; flex-shrink: 0; }
    .fi-upload-remove {
      width: 16px; height: 16px; border-radius: 50%;
      border: none; background: transparent;
      color: var(--text-muted); cursor: pointer;
      display: inline-flex; align-items: center; justify-content: center;
      font-size: 13px; line-height: 1; padding: 0; flex-shrink: 0;
    }
    .fi-upload-remove:hover {
      background: var(--color-red-400); color: #fff;
    }
    .fi-rail-header {
      padding: 18px 20px 16px; border-bottom: 1px solid var(--border-subtle);
      display: flex; justify-content: space-between; align-items: flex-start; gap: 12px;
      background: var(--bg-primary);
    }
    .fi-rail-eyebrow {
      font-family: var(--font-mono); font-size: 9px; color: var(--text-muted);
      letter-spacing: 0.08em; text-transform: uppercase;
    }
    .fi-rail-title {
      font-family: var(--font-display); font-size: 15px; color: var(--text-primary);
      font-weight: 500; margin-top: 3px;
    }
    .fi-rail-meta {
      padding: 14px 20px; border-bottom: 1px solid var(--border-subtle);
      background: var(--bg-primary);
    }
    .fi-meta-row {
      display: flex; justify-content: space-between; gap: 12px;
      font-family: var(--font-mono); font-size: 11px;
      padding: 4px 0; color: var(--text-secondary);
    }
    .fi-meta-row span { color: var(--text-muted); }
    .fi-meta-row b { color: var(--text-primary); font-weight: 500; text-align: right; }
    .fi-rail-chat {
      padding: 16px 20px; flex: 1;
      display: flex; flex-direction: column; gap: 10px;
      overflow: hidden;
      background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--color-signal-50) 140%);
    }
    .fi-chat-stream {
      flex: 1; min-height: 180px; overflow-y: auto;
      display: flex; flex-direction: column; gap: 10px;
      padding-right: 4px;
    }
    .fi-chat-msg {
      padding: 10px 12px; border-radius: var(--radius-md);
      font-family: var(--font-body); font-size: 12px;
      line-height: 1.45; max-width: 100%;
    }
    .fi-chat-model {
      background: var(--bg-primary); border: 1px solid var(--border-subtle);
      color: var(--text-primary);
    }
    .fi-chat-user {
      background: var(--color-midnight); color: #fff;
      margin-left: 20px;
    }
    .fi-chat-user .fi-chat-who { color: rgba(255,255,255,0.6); }
    .fi-chat-who {
      font-family: var(--font-mono); font-size: 9px;
      letter-spacing: 0.08em; text-transform: uppercase;
      color: var(--text-muted); margin-bottom: 4px;
    }
    .fi-chat-body { color: inherit; }

    @media (max-width: 1280px) {
      .fi-summary { grid-template-columns: repeat(2, 1fr); }
    }

    /* =====================================================
       Detail enhancements: issuer drawer, tightening, curve, min size
       ===================================================== */

    /* Issuer name as a clickable link in deal header */
    .issuer-link {
      color: inherit; cursor: pointer;
      border-bottom: 1px dashed transparent;
      transition: border-color 0.15s ease;
    }
    .issuer-link:hover { border-bottom-color: var(--color-signal-400); }

    /* Tightening cell colors */
    .tightening-pos { color: var(--color-signal-500, var(--color-signal-400)) !important; }
    .tightening-neg { color: var(--color-red-400, #c64646) !important; }

    /* Min size controls */
    .min-size-row {
      display: flex; align-items: center; justify-content: space-between;
      gap: 14px; flex-wrap: wrap;
      padding: 10px 12px;
      background: var(--bg-secondary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-sm);
      margin: 8px 0 10px;
    }
    .min-size-control { display: inline-flex; align-items: center; gap: 8px; }
    .min-size-label {
      font-family: var(--font-mono); font-size: 10px;
      letter-spacing: 0.06em; text-transform: uppercase;
      color: var(--text-muted);
    }
    .min-size-select {
      font-family: var(--font-mono); font-size: 11px;
      padding: 5px 22px 5px 10px;
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-sm);
      background: var(--bg-primary);
      color: var(--text-primary);
      cursor: pointer;
      appearance: none;
      background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
      background-position: calc(100% - 12px) 50%, calc(100% - 8px) 50%;
      background-size: 4px 4px, 4px 4px;
      background-repeat: no-repeat;
    }
    .min-size-status {
      font-family: var(--font-mono); font-size: 10.5px;
      color: var(--text-muted);
    }

    .tightening-summary {
      font-family: var(--font-body); font-size: 12px;
      color: var(--text-secondary);
      padding: 6px 2px 10px;
    }

    /* Excluded peer rows */
    .peers-table tbody tr.excluded td {
      opacity: 0.45;
      text-decoration: line-through;
      text-decoration-color: rgba(120,120,140,0.5);
    }
    .peers-table tbody tr.excluded td.muted { text-decoration: none; }

    /* Curve panel */
    .curve-head {
      display: flex; justify-content: space-between; align-items: flex-start;
      gap: 14px; flex-wrap: wrap;
      margin-bottom: 12px;
    }
    .curve-title {
      font-family: var(--font-display); font-size: 14px; font-weight: 500;
      color: var(--text-primary);
    }
    .curve-sub {
      font-family: var(--font-mono); font-size: 10.5px;
      color: var(--text-muted); margin-top: 2px;
    }
    .curve-basis-toggle button {
      font-size: 10.5px;
    }
    .curve-svg-wrap {
      width: 100%;
      background: var(--bg-secondary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-sm);
      padding: 6px 6px 4px;
    }
    .curve-svg {
      width: 100%; height: 280px; display: block;
    }
    .curve-legend {
      display: flex; gap: 18px; flex-wrap: wrap;
      padding: 10px 4px 4px;
      font-family: var(--font-mono); font-size: 10.5px;
      color: var(--text-secondary);
    }
    .curve-lg-item { display: inline-flex; align-items: center; gap: 6px; }
    .curve-lg-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
    .curve-lg-dot.peer { background: var(--color-signal-400); }
    .curve-lg-dot.fitted { background: transparent; border: 1.6px solid var(--color-signal-400); }
    .curve-lg-dot.bunds { background: rgba(180,140,40,0.7); border-radius: 0; height: 2px; align-self: center; width: 14px; }
    .curve-lg-dot.newissue { background: var(--color-yield-400); border: 2px solid #fff; box-shadow: 0 0 0 1px var(--color-yield-400); }
    .curve-caption {
      font-family: var(--font-body); font-size: 12px;
      color: var(--text-secondary);
      margin-top: 8px; padding: 8px 10px;
      background: var(--bg-secondary);
      border-radius: var(--radius-sm);
      border-left: 2px solid var(--color-signal-400);
    }

    /* =====================================================
       Issuer history drawer (re-uses .fi-rail visual tokens)
       ===================================================== */
    .issuer-rail-backdrop {
      position: fixed; inset: 0;
      background: rgba(10,15,30,0.32);
      opacity: 0; pointer-events: none;
      transition: opacity 0.2s ease;
      z-index: 220;
    }
    .issuer-rail-backdrop.open { opacity: 1; pointer-events: auto; }

    .issuer-rail {
      position: fixed; top: 0; right: 0; bottom: 0;
      width: 480px; max-width: 96vw;
      border-left: 1px solid var(--border-subtle);
      background: var(--bg-secondary);
      box-shadow: -8px 0 28px rgba(10,15,30,0.18);
      transform: translateX(100%);
      transition: transform 0.28s ease;
      z-index: 221;
      display: flex; flex-direction: column;
      min-width: 0;
    }
    .issuer-rail.open { transform: translateX(0); }

    .issuer-rail-head {
      padding: 18px 20px 14px; border-bottom: 1px solid var(--border-subtle);
      display: flex; justify-content: space-between; align-items: flex-start; gap: 12px;
      background: var(--bg-primary);
    }
    .issuer-rail-eyebrow {
      font-family: var(--font-mono); font-size: 9px; color: var(--text-muted);
      letter-spacing: 0.08em; text-transform: uppercase;
    }
    .issuer-rail-title {
      font-family: var(--font-display); font-size: 16px; color: var(--text-primary);
      font-weight: 500; margin-top: 3px;
    }
    .issuer-rail-sub {
      font-family: var(--font-mono); font-size: 10.5px; color: var(--text-muted);
      margin-top: 4px;
    }
    .issuer-rail-close {
      width: 28px; height: 28px; border-radius: 50%;
      border: 1px solid var(--border-subtle); background: var(--bg-primary);
      color: var(--text-muted); cursor: pointer;
      font-size: 18px; line-height: 1; flex-shrink: 0;
      display: inline-flex; align-items: center; justify-content: center;
    }
    .issuer-rail-close:hover { color: var(--text-primary); background: var(--bg-secondary); }

    .issuer-rail-body {
      flex: 1; overflow-y: auto;
      padding: 16px 20px 28px;
      display: flex; flex-direction: column; gap: 22px;
    }

    .ih-section {
      background: var(--bg-primary);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-sm);
      padding: 14px 14px 12px;
    }
    .ih-section-head {
      display: flex; justify-content: space-between; align-items: baseline;
      gap: 10px; margin-bottom: 10px;
    }
    .ih-section-title {
      font-family: var(--font-display); font-size: 13.5px; color: var(--text-primary);
      font-weight: 500;
    }
    .ih-section-sub {
      font-family: var(--font-mono); font-size: 10px; color: var(--text-muted);
      letter-spacing: 0.04em;
    }

    /* 12mo bar chart */
    .ih-12mo-chart {
      display: grid;
      grid-template-columns: repeat(12, 1fr);
      gap: 4px;
      height: 90px;
      align-items: end;
      padding: 2px 0;
    }
    .ih-bar-col {
      position: relative;
      display: flex; flex-direction: column; justify-content: flex-end; align-items: center;
      height: 100%;
    }
    .ih-bar-fill {
      width: 100%;
      background: linear-gradient(180deg, var(--color-signal-400), var(--color-signal-500, var(--color-signal-400)));
      border-radius: 2px 2px 0 0;
      min-height: 4px;
      position: relative;
    }
    .ih-bar-val {
      position: absolute; top: -14px; left: 50%; transform: translateX(-50%);
      font-family: var(--font-mono); font-size: 9px; color: var(--text-muted);
      white-space: nowrap;
    }
    .ih-bar-deals {
      font-family: var(--font-mono); font-size: 9px; color: var(--text-muted);
      margin-top: 2px;
    }
    .ih-12mo-axis {
      display: grid;
      grid-template-columns: repeat(12, 1fr);
      gap: 4px;
      margin-top: 4px;
    }
    .ih-12mo-axis span {
      font-family: var(--font-mono); font-size: 8.5px; color: var(--text-muted);
      text-align: center;
      letter-spacing: 0;
    }

    /* Funding plan rows */
    .ih-plan-grid { display: flex; flex-direction: column; gap: 10px; }
    .ih-plan-row {
      display: grid;
      grid-template-columns: 110px 1fr auto;
      align-items: center;
      gap: 12px;
    }
    .ih-plan-label {
      font-family: var(--font-mono); font-size: 10.5px; color: var(--text-secondary);
    }
    .ih-plan-bar {
      height: 10px; background: var(--bg-secondary);
      border: 1px solid var(--border-subtle);
      border-radius: 5px; overflow: hidden;
    }
    .ih-plan-fill {
      height: 100%;
      background: var(--color-signal-400);
      border-radius: 5px;
    }
    .ih-plan-fill.ly { background: var(--color-steel-200); }
    .ih-plan-meta {
      font-family: var(--font-mono); font-size: 11px;
      color: var(--text-primary);
      white-space: nowrap;
    }
    .ih-plan-meta .muted { color: var(--text-muted); }
    .ih-plan-caption {
      margin-top: 10px; padding: 8px 10px;
      background: var(--bg-secondary);
      border-left: 2px solid var(--color-signal-400);
      border-radius: 4px;
      font-family: var(--font-body); font-size: 11.5px; color: var(--text-secondary);
    }

    /* Currency mix */
    .ih-ccy-grid {
      display: grid; grid-template-columns: 1fr 1fr; gap: 14px;
    }
    .ih-ccy-block-label {
      font-family: var(--font-mono); font-size: 10px; color: var(--text-muted);
      letter-spacing: 0.06em; text-transform: uppercase;
      margin-bottom: 6px;
    }
    .ih-ccy-bar {
      display: flex; height: 14px; width: 100%;
      border-radius: 4px; overflow: hidden;
      background: var(--bg-secondary);
      border: 1px solid var(--border-subtle);
    }
    .ih-ccy-seg { height: 100%; }
    .ih-ccy-legend {
      display: flex; flex-wrap: wrap; gap: 8px 12px;
      margin-top: 8px;
      font-family: var(--font-mono); font-size: 10.5px;
      color: var(--text-secondary);
    }
    .ih-ccy-lg { display: inline-flex; align-items: center; gap: 5px; }
    .ih-ccy-lg-dot { width: 8px; height: 8px; border-radius: 2px; display: inline-block; }

    /* Maturities table */
    .ih-mat-table { font-size: 11.5px; }
    .ih-mat-table th { font-size: 9.5px; }

    /* =====================================================
       Saved CTAs on home chat
       ===================================================== */
    .saved-cta-row {
      display: flex; flex-wrap: wrap; gap: 8px;
      margin: 6px 0 14px;
      min-height: 8px;
    }
    .saved-cta-empty {
      font-family: var(--font-mono); font-size: 10.5px; color: var(--text-muted);
      padding: 6px 2px;
    }
    .saved-cta-empty b { color: var(--text-secondary); font-weight: 500; }
    .saved-cta-chip {
      display: inline-flex; align-items: center; gap: 8px;
      padding: 7px 8px 7px 12px;
      background: var(--bg-secondary);
      border: 1px solid var(--color-signal-200, var(--border-subtle));
      border-radius: 999px;
      font-family: var(--font-body); font-size: 12px;
      color: var(--text-primary);
      cursor: pointer;
      transition: all 0.12s ease;
    }
    .saved-cta-chip:hover {
      background: var(--color-signal-50);
      border-color: var(--color-signal-400);
    }
    .saved-cta-chip svg { color: var(--color-signal-400); flex-shrink: 0; }
    .saved-cta-text {
      max-width: 280px;
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .saved-cta-remove {
      width: 18px; height: 18px;
      border-radius: 50%;
      display: inline-flex; align-items: center; justify-content: center;
      color: var(--text-muted);
      font-size: 14px; line-height: 1;
      flex-shrink: 0;
      transition: all 0.12s ease;
    }
    .saved-cta-remove:hover {
      background: var(--color-red-400, #c64646);
      color: #fff;
    }
    .home-chat-save {
      display: inline-flex; align-items: center; gap: 5px;
      padding: 6px 10px;
      border: 1px solid var(--color-signal-400);
      background: var(--color-signal-50);
      color: var(--color-signal-600, var(--color-signal-400));
      border-radius: var(--radius-sm);
      font-family: var(--font-mono); font-size: 10.5px;
      letter-spacing: 0.04em;
      cursor: pointer;
      transition: all 0.12s ease;
    }
    .home-chat-save:hover {
      background: var(--color-signal-400);
      color: #fff;
    }
    .home-chat-save svg { color: inherit; }

    /* =====================================================
       Primary Markets: Live / Upcoming view toggle
    ===================================================== */
    .primary-view-toggle {
      margin-bottom: 20px;
    }

    /* Upcoming view header */
    .upcoming-header {
      display: flex; justify-content: space-between; align-items: flex-start;
      gap: 16px; margin-bottom: 16px; flex-wrap: wrap;
    }
    .scorecard-subtitle {
      font-family: var(--font-mono); font-size: 11px;
      color: var(--text-muted); letter-spacing: 0.04em; margin-top: 4px;
    }

    /* Absolute window date pill in upcoming table */
    .fi-window-date {
      font-family: var(--font-mono); font-size: 11px;
      color: var(--text-primary); font-weight: 500;
      white-space: nowrap;
    }

    /* "View Details" hint on hover — uses td pseudo since tr::after has limited support */
    #upcoming-tbody .upcoming-row { position: relative; }
    #upcoming-tbody .upcoming-row td.upcoming-action-cell { position: relative; }
    #upcoming-tbody .upcoming-row:hover .view-details-hint { opacity: 1; }

    /* Inject via JS-created element approach: style the row cursor */
    #upcoming-tbody .upcoming-row { cursor: pointer; }
    #upcoming-tbody .upcoming-row:hover td.fi-issuer::after {
      content: 'View Details \2192';
      display: block;
      font-family: var(--font-mono); font-size: 9px;
      color: var(--color-signal-400); letter-spacing: 0.06em;
      margin-top: 2px;
    }

    /* Watchlist button */
    .watchlist-btn {
      display: inline-flex; align-items: center; justify-content: center;
      width: 28px; height: 28px;
      background: none; border: 1px solid var(--border-subtle);
      border-radius: var(--radius-sm); padding: 0;
      cursor: pointer; color: var(--text-muted);
      transition: color 0.15s, border-color 0.15s, background 0.15s;
      flex-shrink: 0;
    }
    .watchlist-btn:hover {
      color: var(--color-signal-400);
      border-color: var(--color-signal-200);
      background: var(--color-signal-50);
    }
    .watchlist-btn.watched {
      color: var(--color-signal-400);
      border-color: var(--color-signal-400);
      background: var(--color-signal-50);
    }
    .watchlist-btn svg { display: block; }

    /* Upcoming action cell - right-align and prevent row click confusion */
    .upcoming-action-cell {
      text-align: right; width: 44px; padding-right: 12px !important;
    }

    /* Watchlist filter chip with eye icon */
    .fi-type-chip.watchlist-chip {
      display: inline-flex; align-items: center; gap: 5px;
    }
    .fi-type-chip.watchlist-chip.active {
      background: var(--color-signal-50);
      border-color: var(--color-signal-400);
      color: var(--color-signal-600);
    }

    /* Confidence pill (used in future/upcoming issuance tables) */
    .conf-pill {
      display: inline-flex; align-items: center; gap: 5px;
      font-family: var(--font-mono); font-size: 10px;
      padding: 3px 8px; border-radius: var(--radius-pill);
      background: var(--bg-secondary); color: var(--text-secondary);
      border: 1px solid var(--border-subtle);
      white-space: nowrap;
    }
    .conf-pill.high {
      background: var(--color-signal-50); color: var(--color-signal-600);
      border-color: var(--color-signal-200);
    }
    .conf-pill.med {
      background: var(--color-yield-50, #fdf3e3); color: var(--color-yield-400);
      border-color: rgba(186,117,23,0.2);
    }
    .conf-pill.low {
      background: var(--bg-secondary); color: var(--text-muted);
      border-color: var(--border-subtle);
    }
    .cp-bar {
      width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0;
      background: var(--color-steel-400);
    }
    .conf-pill.high .cp-bar { background: var(--color-signal-400); }
    .conf-pill.med  .cp-bar { background: var(--color-yield-400); }
    .conf-pill.low  .cp-bar { background: var(--color-steel-400); }
