/* ea-shared.css — the one place the workspace look lives. (Mark, 2026-08-30)
 *
 * WHY THIS EXISTS: 59 of 61 pages carried their own <style> block — ~4,500
 * lines, mostly the same slate system copy-pasted and drifting (22 different
 * `table` rules, 30 different `body` rules). This file codifies the values
 * most pages already agreed on, measured across every page before writing:
 * a page on the consensus changes by nothing; a straggler converges to it.
 *
 * HOW IT IS LOADED: linked at the END of <head>, AFTER each page's inline
 * styles, so these rules win equal-specificity conflicts. That is deliberate
 * — it is what converges the drift without editing 59 style blocks. It also
 * means anything added here overrides every page: keep this file to
 * consensus values and readability floors, never one page's special case.
 *
 * NOT LINKED from dark-background pages (login, ugc-login) — these values
 * assume a light ground. Check the background before adding a link.
 *
 * DELIBERATELY ABSENT, each a decision not an oversight:
 *   .btn background/color — some pages use a colored .btn as their primary
 *     action; flattening to the white mode would break them. Radius and
 *     type size only.
 *   h1 size — report pages run 22px, tool pages 18px; unifying blind
 *     reflows 26 pages nobody has looked at.
 *   font-family — 13 pages chose DM Sans on purpose. A font decision (see
 *     "Outfit", the Copper face) is its own project.
 *   .pill / .badge colors — semantic; green means something.
 */

:root {
  --ink: #0f172a;          /* body text — the 20-page mode                    */
  --text: #1e293b;         /* secondary text                                  */
  --muted: #64748b;        /* THE muted grey. 4.76:1 on white — the readable  */
                           /* one. #94a3b8 was purged 2026-08-30 (2.56:1);    */
                           /* never reintroduce it for text.                  */
  --muted-strong: #475569; /* muted text ON a grey chip (#e2e8f0 etc.), where */
                           /* --muted itself drops below the 4.5 floor        */
  --line: #e2e8f0;
  --line-soft: #f1f5f9;    /* row separators                                  */
  --bg: #f8fafc;           /* page ground — matches the rail                  */
  --surface: #ffffff;
  --accent: #2563eb;       /* workspace blue, as the rail uses               */
  --accent-soft: #eff6ff;
}

body { background: var(--bg); color: var(--ink); }

/* ── Tables, buttons, cards — DEFAULTS, not overrides ────────────────────
   Wrapped in :where(), which zeroes their specificity: a page that styles
   its own th/td/.btn keeps every one of its choices, whatever the load
   order; a page that styles nothing gets the consensus look. This is
   deliberate — a flat `td { padding: 9px 12px }` loaded last inflated
   my-leads' dense table and pushed its last column off-screen (seen in a
   render, 2026-08-30). Dense tools keep their density.
   Values are the measured plurality across all pages, not taste. */
:where(table) { border-collapse: collapse; }
:where(table th) { padding: 9px 12px; font-size: 11px; color: var(--muted); }
:where(table td) { padding: 9px 12px; font-size: 13px;
                   border-bottom: 1px solid var(--line-soft); }
:where(.btn) { border-radius: 8px; font-size: 13px; }
:where(.card) { background: var(--surface); border-radius: 10px; }

/* Numbers line up in columns everywhere. A real rule, not a default —
   no page sets this property, and money should never wiggle. */
td { font-variant-numeric: tabular-nums; }

/* ── True overrides — the short list that converges every page ──────────── */
.muted { color: var(--muted); }           /* was already unanimous, 17/17    */

/* ── Readability floors ─────────────────────────────────────────────────
   Keyboard users get a visible focus ring on every control; half the pages
   never styled one. */
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--accent); outline-offset: 1px;
}
