:root{
  /* --- Primaries (brand sheet) --- */
  --cp-green:#00bf63;
  --cp-navy:#110639;

  /* --- Tints --- */
  --cp-green-tint:#e6f9f0;
  --cp-violet-tint:#d0cdd7;

  /* --- Neutrals (brand sheet, light -> dark) --- */
  --cp-white:#ffffff;
  --cp-offwhite:#e8e5f1;
  --cp-slate:#4a4e69;
  --cp-ink:#1b1c2d;

  /* --- Derived green ramp (hover / press / borders only) --- */
  --cp-green-700:#009a4f;
  --cp-green-800:#00773d;
  --cp-green-100:#c4efd8;
  --cp-green-050:var(--cp-green-tint);

  /* --- Derived navy ramp --- */
  --cp-navy-800:#1d1150;
  --cp-navy-600:#332764;
  --cp-navy-200:#b6b1c6;

  /* --- Derived neutral ramp --- */
  --cp-grey-100:#f4f2f9;
  --cp-grey-200:var(--cp-offwhite);
  --cp-grey-300:var(--cp-violet-tint);
  --cp-grey-500:#8d90a6;
  --cp-grey-700:var(--cp-slate);
  --cp-grey-900:var(--cp-ink);

  /* --- Semantic: text --- */
  --text-heading:var(--cp-navy);
  --text-body:var(--cp-ink);
  --text-muted:var(--cp-slate);
  --text-subtle:var(--cp-grey-500);
  --text-accent:var(--cp-green);
  --text-on-dark:var(--cp-white);
  --text-on-dark-muted:#b6b1c6;
  --text-on-accent:var(--cp-white);
  --text-link:var(--cp-green-700);
  --text-link-hover:var(--cp-navy);

  /* --- Semantic: surfaces --- */
  --surface-page:var(--cp-white);
  --surface-subtle:var(--cp-grey-100);
  --surface-muted:var(--cp-offwhite);
  --surface-card:var(--cp-white);
  --surface-inverse:var(--cp-navy);
  --surface-inverse-raised:var(--cp-navy-800);
  --surface-accent:var(--cp-green);
  --surface-accent-subtle:var(--cp-green-tint);
  --surface-overlay:rgba(17,6,57,.62);

  /* --- Semantic: borders --- */
  --border-subtle:var(--cp-offwhite);
  --border-default:var(--cp-violet-tint);
  --border-strong:var(--cp-slate);
  --border-accent:var(--cp-green);
  --border-inverse:rgba(255,255,255,.16);

  /* --- Semantic: interaction --- */
  --accent-hover:var(--cp-green-700);
  --accent-press:var(--cp-green-800);
  --navy-hover:var(--cp-navy-800);
  --navy-press:#0b0326;
  --focus-ring:var(--cp-green);

  /* --- Status --- */
  --status-success:var(--cp-green);
  --status-success-surface:var(--cp-green-tint);
  --status-warning:#e8a33d;
  --status-warning-surface:#fdf3e3;
  --status-danger:#d94f4f;
  --status-danger-surface:#fbecec;
  --status-info:var(--cp-navy);
  --status-info-surface:var(--cp-offwhite);

  /* --- Data viz (deck charts) --- */
  --chart-1:var(--cp-navy);
  --chart-2:var(--cp-green);
  --chart-3:#3a8ddb;
  --chart-4:var(--cp-violet-tint);
  --chart-5:var(--cp-slate);
}
