:root {
  /* ---- Brand core (exact values from the CAS site) ---- */
  --xanadu: #2d362f;   /* deep green-slate — primary ink & dark surfaces */
  --honeydew: #edf8eb; /* pale green-white — default page surface */
  --seafoam: #c4edcb;  /* soft mint — accent / hairline highlight */

  /* ---- Neutral steps derived from the core greens ---- */
  --white: #ffffff;
  --ink-90: color-mix(in srgb, var(--xanadu) 90%, var(--honeydew));
  --ink-60: color-mix(in srgb, var(--xanadu) 60%, transparent); /* muted text */
  --ink-35: color-mix(in srgb, var(--xanadu) 35%, transparent); /* borders */
  --ink-55: color-mix(in srgb, var(--xanadu) 55%, transparent); /* button borders */
  --slate: #475569;    /* data-viz axis / caption gray */

  /* ---- Data-visualization scale (from the Scorecard scatter plots) ----
     Sequential red→green used for proxy-voting scores. */
  --score-neg: #c84b4b;   /* against / poor record */
  --score-mid: #8ab06c;   /* mixed */
  --score-pos: #2f9e6f;   /* supportive */
  --score-strong: #1f7a56;/* strongest positive */
  --score-neg-fill: rgba(200, 75, 75, 0.35);
  --score-mid-fill: rgba(138, 176, 108, 0.35);
  --score-pos-fill: rgba(47, 158, 111, 0.35);

  /* ---- Semantic aliases ---- */
  --surface-page: var(--honeydew);
  --surface-inverse: var(--xanadu);
  --surface-card: var(--honeydew);
  --text-body: var(--xanadu);
  --text-muted: var(--ink-60);
  --text-on-inverse: var(--honeydew);
  --border-hairline: var(--ink-35);
  --border-control: var(--ink-55);
  --accent: var(--seafoam);
  --focus-ring: var(--xanadu);
}
