/* ── base palette ───────────────────────────────────────────────────────────
   Six named values. Cool grey, not cream; the neutral carries a faint green-blue
   cast so the accents read as pigment rather than UI states.
   Contrast ratios are stated against --paper unless noted.                     */
:root {
  --paper: #F1F2F0;      /* page ground                                        */
  --paper-hi: #F8F9F7;   /* raised surface: table head, inline panel, input     */
  --panel: #E4E6E3;      /* inset / recessed block, 1.12:1 on paper            */
  --rule: #C9CDC8;       /* hairline. structure lives here, not in shadow      */
  --ink-500: #5A6169;    /* secondary text            5.58:1                  */
  --ink-900: #14171A;    /* primary text and dark surface  16.02:1            */

  /* on the ink surface */
  --ink-dim: #8C9298;    /* secondary text on ink     5.72:1                   */
  --ink-rule: #2C3237;   /* hairline on ink                                    */

  /* ── product accents ──────────────────────────────────────────────────────
     One variable per product. A product owns its accent and inherits every
     other token unchanged. -lift variants are for the ink surface only.      */
  --accent-heyfitt: #AE2846;       /* 5.86:1 on paper  */
  --accent-heyfitt-lift: #F2758C;  /* 6.60:1 on ink    */
  --accent-paraneural: #1F4E8C;    /* 7.40:1 on paper  */
  --accent-paraneural-lift: #8FB6E8; /* 8.59:1 on ink  */
  --accent-polyfuture: #0F6E63;    /* 5.45:1 on paper  */
  --accent-polyfuture-lift: #4FBFAE; /* 8.05:1 on ink  */
  --accent-open: #6B3FA0;          /* 6.58:1 — reserved slot for the next vertical */
  --accent-open-lift: #B893E0;     /* 7.10:1 on ink    */

  /* ── semantic aliases ─────────────────────────────────────────────────── */
  --text-primary: var(--ink-900);
  --text-secondary: var(--ink-500);
  --text-on-ink: var(--paper);
  --text-on-ink-dim: var(--ink-dim);
  --text-accent: var(--accent);

  --surface-page: var(--paper);
  --surface-raised: var(--paper-hi);
  --surface-inset: var(--panel);
  --surface-ink: var(--ink-900);

  --border-hairline: var(--rule);
  --border-strong: var(--ink-900);
  --border-on-ink: var(--ink-rule);

  /* --accent is the single product variable. Unscoped it resolves to ink, so
     parent-level surfaces are accent-free by default.                        */
  --accent: var(--ink-900);
  --accent-lift: var(--paper);

  --status-shipped: var(--ink-900);
  --status-planned: var(--ink-500);

  --focus-ring: #14171A;
  --focus-ring-on-ink: #F1F2F0;
}

/* Product scopes. Apply to any subtree: [data-product="paraneural"]. */
[data-product="heyfitt"] { --accent: var(--accent-heyfitt); --accent-lift: var(--accent-heyfitt-lift); }
[data-product="paraneural"] { --accent: var(--accent-paraneural); --accent-lift: var(--accent-paraneural-lift); }
[data-product="polyfuture"] { --accent: var(--accent-polyfuture); --accent-lift: var(--accent-polyfuture-lift); }
[data-product="open"] { --accent: var(--accent-open); --accent-lift: var(--accent-open-lift); }

/* On an ink surface the accent swaps to its lifted value automatically. */
[data-surface="ink"] { --accent: var(--accent-lift); --focus-ring: var(--focus-ring-on-ink); }
