    html, body { height: 100%; }
    body {
      font-family: var(--font-ui);
      background: var(--bg);
      color: var(--text);
      display: flex;
      flex-direction: column;
      overflow: hidden;
      --earnings-pm: #8fb6d9;
      --earnings-mid: #b6a0f4;
    }

    html.light body {
      --earnings-pm: #2c5f8a;
      --earnings-mid: #6548b8;
    }


    .page-header {
      flex: 0 0 auto;
      display: flex;
      align-items: flex-end;
      justify-content: space-between;
      gap: var(--space-6);
      flex-wrap: wrap;
      padding: var(--space-6) max(var(--space-6), calc((100vw - 1440px) / 2));
      background: var(--bg-card);
    }
    .page-header h1 {
      white-space: nowrap;
      margin-top: var(--space-1);
      font-size: var(--fs-2xl);
      letter-spacing: -.035em;
    }
    .page-header-copy { max-width: 760px; }
    .eyebrow {
      color: var(--accent-strong);
      font-size: var(--fs-label);
      font-weight: 700;
      letter-spacing: .13em;
      text-transform: uppercase;
    }
    .page-header .subtitle {
      margin-top: var(--space-2);
      color: var(--muted);
      font-size: var(--fs-sm);
      line-height: 1.5;
    }
    .page-sub {
      padding: 6px 11px;
      border: 1px solid var(--border);
      border-radius: var(--radius-pill);
      background: var(--bg-panel);
      color: var(--muted);
      font-size: var(--fs-xs);
      letter-spacing: 0.03em;
      white-space: nowrap;
    }

    /* Jump-to-day pill nav — horizontally scrollable on narrow viewports */
    .day-jump {
      flex: 0 0 auto;
      display: flex;
      gap: 6px;
      padding: 10px max(var(--space-6), calc((100vw - 1440px) / 2));
      border-bottom: 1px solid var(--border);
      overflow-x: auto;
      scrollbar-width: none;
      background: var(--bg-panel);
    }
    .day-jump::-webkit-scrollbar { display: none; }
    .jump-pill {
      border: 1px solid var(--border);
      background: var(--bg-card);
      color: var(--muted);
      padding: 5px 10px;
      border-radius: 5px;
      font-size: 0.7rem;
      font-weight: 600;
      letter-spacing: 0.04em;
      cursor: pointer;
      white-space: nowrap;
      font-family: inherit;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 1px;
      min-width: 58px;
      transition: all 0.12s;
    }
    .jump-pill:hover { border-color: var(--accent); color: var(--accent); }
    .jump-pill.past { opacity: 0.55; }
    .jump-pill.today {
      border-color: var(--accent);
      color: var(--accent);
      background: var(--accent-soft);
    }
    .jump-pill .jump-day-name { font-size: 0.58rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
    .jump-pill.today .jump-day-name { color: var(--accent); }
    .jump-pill .jump-day-num { font-size: 0.8rem; font-weight: 700; color: inherit; }
    .jump-pill .jump-count { font-size: 0.58rem; color: var(--muted-dim); margin-top: 1px; font-variant-numeric: tabular-nums; }

    /* Scrollable body — holds all day sections stacked */
    .day-stack {
      flex: 1 1 0;
      min-height: 0;
      overflow-y: auto;
      padding: 4px 0 40px;
    }

    /* Per-day section */
    .day-section { border-bottom: 1px solid var(--border); }
    .day-section.past { opacity: 0.88; }

    .day-header {
      position: sticky;
      top: 0;
      z-index: 3;
      background: var(--bg-card);
      padding: 10px 18px 8px;
      display: flex;
      align-items: baseline;
      gap: 12px;
      border-bottom: 1px solid var(--border);
    }
    .day-header .day-name {
      font-size: 0.68rem;
      color: var(--muted);
      font-weight: 700;
      letter-spacing: 0.1em;
      text-transform: uppercase;
    }
    .day-header .day-full {
      font-size: 0.95rem;
      color: var(--text-strong);
      font-weight: 700;
      letter-spacing: 0.02em;
    }
    .day-header .day-count {
      font-size: 0.68rem;
      color: var(--muted);
      margin-left: auto;
      font-variant-numeric: tabular-nums;
    }
    .day-section.today .day-header {
      border-bottom-color: var(--accent);
    }
    .day-section.today .day-full { color: var(--accent); }
    .day-section.today .day-name { color: var(--accent); }

    .day-body { padding: 0 6px; }

    /* Table — clean, data-first. `table-layout: fixed` with per-column
       widths so every day's table renders identical column boundaries;
       without this, auto layout computed widths per day from that day's
       content and columns drifted across sections. */
    table.earnings-table {
      width: 100%;
      border-collapse: collapse;
      font-size: 0.78rem;
      table-layout: fixed;
    }
    table.earnings-table th.logo-cell,
    table.earnings-table td.logo-cell { width: 28px; }
    table.earnings-table th:nth-child(2),
    table.earnings-table td:nth-child(2) { width: 72px; }   /* Ticker */
    /* Company = nth-child(3) — left unsized so it absorbs remaining width */
    table.earnings-table th:nth-child(4),
    table.earnings-table td:nth-child(4) { width: 150px; }  /* Sector */
    table.earnings-table th:nth-child(5),
    table.earnings-table td:nth-child(5) { width: 64px; }   /* Time */
    table.earnings-table th:nth-child(6),
    table.earnings-table td:nth-child(6) { width: 96px; }   /* Mkt Cap */
    table.earnings-table th:nth-child(7),
    table.earnings-table td:nth-child(7) { width: 84px; }   /* EPS Est */
    table.earnings-table th:nth-child(8),
    table.earnings-table td:nth-child(8) { width: 96px; }   /* EPS Actual */
    table.earnings-table th:nth-child(9),
    table.earnings-table td:nth-child(9) { width: 88px; }   /* Surprise */
    table.earnings-table th:nth-child(10),
    table.earnings-table td:nth-child(10) { width: 96px; }  /* Post 1D Avg */
    table.earnings-table th:nth-child(11),
    table.earnings-table td:nth-child(11) { width: 96px; }  /* Post 3D Avg */
    table.earnings-table thead th {
      font-size: 0.62rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--muted);
      text-align: left;
      padding: 6px 10px;
      border-bottom: 1px solid var(--border);
      white-space: nowrap;
      background: var(--bg-panel);
    }
    table.earnings-table tbody td {
      padding: 7px 10px;
      vertical-align: middle;
      white-space: nowrap;
      color: var(--text-soft);
      border-bottom: 1px solid var(--border-soft);
    }
    table.earnings-table tbody tr { transition: background 0.1s; }
    table.earnings-table tbody tr.linkable { cursor: pointer; }
    table.earnings-table tbody tr.linkable:hover { background: var(--accent-soft); }
    table.earnings-table tbody tr.static td { color: var(--muted); }

    /* Column-specific alignment */
    th.num, td.num { text-align: right; font-variant-numeric: tabular-nums; }
    th.center, td.center { text-align: center; }

    /* Logo cell — leading icon, initials fallback if img fails/404s */
    .logo-cell {
      width: 32px;
      padding-right: 0 !important;
    }
    .logo-box {
      position: relative;
      width: 26px;
      height: 26px;
      border-radius: 4px;
      background: #f5f5f5;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 0.56rem;
      font-weight: 700;
      color: var(--muted);
      overflow: hidden;
    }
    /* `inset: 2px` keeps the logo from bleeding to the chip edges, matching
     * the pattern used on the earnings-live cards. */
    .logo-box img {
      position: absolute;
      inset: 2px;
      width: calc(100% - 4px);
      height: calc(100% - 4px);
      object-fit: contain;
    }
    .logo-box img.failed { display: none; }

    /* Ticker styling — mega/large/mid cap tier */
    .ticker-cell { font-weight: 700; color: var(--text-strong); letter-spacing: 0.02em; }
    tr.tier-mega .ticker-cell { color: var(--accent); }
    tr.tier-mid   .ticker-cell { color: var(--muted); }
    tr.tier-micro .ticker-cell { color: var(--muted-dim); }

    .company-cell {
      color: var(--muted);
      max-width: 280px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .sector-cell { color: var(--muted); font-size: 0.72rem; }

    /* AM / PM / — pill */
    .time-pill {
      display: inline-block;
      padding: 2px 7px;
      border-radius: 9px;
      font-size: 0.6rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      border: 1px solid;
    }
    .time-pill.am { color: var(--accent-strong); border-color: var(--accent-line); background: var(--accent-soft); }
    .time-pill.pm { color: var(--earnings-pm); border-color: var(--ice-line); background: var(--ice-soft); }
    .time-pill.mid { color: var(--earnings-mid); border-color: color-mix(in srgb, var(--earnings-mid) 38%, transparent); background: color-mix(in srgb, var(--earnings-mid) 10%, transparent); }
    .time-pill.na  { color: var(--muted-dim); border-color: var(--border); background: transparent; }

    /* Mkt cap numeric — bold for mega tier */
    .mcap-cell { color: var(--text-soft); }
    tr.tier-mega .mcap-cell { color: var(--text-strong); font-weight: 700; }

    /* Surprise % coloring */
    .surprise-pos { color: var(--up); font-weight: 650; }
    .surprise-neg { color: var(--down); font-weight: 650; }
    .surprise-flat { color: var(--muted); }

    /* Historical post-earnings move cells — same palette, subtly muted so they
       don't compete with the current-quarter surprise column */
    .move-pos { color: var(--up); }
    .move-neg { color: var(--down); }
    .move-flat { color: var(--muted); }
    .move-cell .move-n {
      font-size: 0.58rem;
      color: var(--muted-dim);
      margin-left: 4px;
      font-variant-numeric: tabular-nums;
    }

    .eps-muted { color: var(--muted-dim); }

    /* Expand-more footer */
    .day-more {
      text-align: center;
      padding: 8px;
      font-size: 0.7rem;
      color: var(--muted);
      cursor: pointer;
      border-top: 1px solid var(--border-soft);
    }
    .day-more:hover { color: var(--accent); }

    .empty-day {
      padding: 14px 18px;
      font-size: 0.72rem;
      color: var(--muted);
      font-style: italic;
    }
    .empty-state { padding: 40px 20px; text-align: center; color: var(--muted); font-size: 0.85rem; }

    /* Mobile: hide non-essential columns, keep Ticker/Time/Mkt Cap/Est */
    @media (max-width: 900px) {
      .page-header { align-items: flex-start; padding: var(--space-4); gap: var(--space-3); }
      .page-header h1 { font-size: var(--fs-xl); }
      .page-header .subtitle { display: none; }
      .page-sub { display: none; }

      .col-company, .col-sector { display: none; }
      .company-cell, .sector-cell { display: none; }
      .col-surprise, .surprise-cell { display: none; }
      .col-move3d, .move3d-cell { display: none; }
      table.earnings-table tbody td,
      table.earnings-table thead th { padding: 6px 7px; }
      .day-header { padding: 8px 12px 7px; gap: 8px; }
    }
    @media (max-width: 560px) {
      .col-actual, .eps-actual-cell { display: none; }
      .col-move1d, .move1d-cell { display: none; }
    }
  
