:root {
  /* ---- Primary, locked ---- */
  --violet: #2A0058;          /* Violet Serendipity Deep — primary signature */
  --cream: #EFE4D0;           /* Cream Sable — page ground */
  --rust: #A85432;            /* Rust Terre Cuite — accent signature */

  /* ---- Violet scale ---- */
  --violet-extreme: #0A0020;
  --violet-darker: #170035;
  --violet-lighter: #461A80;

  /* ---- Dark UI surfaces (from the shipped landing) ---- */
  --violet-bg: #1B0C3E;       /* dark page ground */
  --violet-panel: #1F0344;    /* dark card / panel */
  --violet-panel-2: #26064F;  /* raised panel */
  --violet-deep: #0D0020;     /* ultra-deep base */

  /* ---- Cream scale ---- */
  --cream-50: #FBF7EF;
  --cream-100: #F7EFE0;
  --cream-soft: #F5EDDC;
  --cream-deep: #E5D8BF;

  /* ---- Rust scale ---- */
  --rust-200: #DDB498;
  --rust-light: #C47550;
  --rust-deep: #843E22;

  /* ---- Warm semantics (never Tailwind defaults) ---- */
  --success: #5A7D3A;         /* olive */
  --warning: #B8782C;         /* ochre */
  --error: #A8342B;           /* brick */
  --info: #3A4FA0;            /* indigo night */
  --error-heading: #7E2620;

  /* ---- Extended reserve ---- */
  --aubergine: #4A2540;
  --magenta: #B4395F;
  --terracotta: #A55A3E;
  --indigo-night: #293774;

  /* ---- Product / data-viz only (app surfaces, never public brand) ---- */
  --positive: #34B27B;
  --positive-soft: #6BC79A;
  --ochre-viz: #D2A24E;

  /* ---- Text ---- */
  --ink: #2A0058;
  --ink-soft: #4A3068;
  --ink-mute: #6B5285;
  --warm-gray: #5C544B;

  /* ---- Rules ---- */
  --rule: rgba(42, 0, 88, 0.18);
  --rule-soft: rgba(42, 0, 88, 0.10);
  --rule-on-dark: rgba(239, 228, 208, 0.12);
  --rule-on-dark-soft: rgba(239, 228, 208, 0.08);

  /* ---- Glow ---- */
  --glow-rust: rgba(168, 84, 50, 0.30);
  --glow-violet: rgba(46, 26, 80, 0.35);

  /* ================= SEMANTIC ALIASES ================= */
  /* Light (default) surfaces */
  --surface-page: var(--cream);
  --surface-card: var(--cream-deep);
  --surface-raised: var(--cream-soft);
  --surface-modal: var(--cream-50);
  --text-body: var(--ink-soft);
  --text-strong: var(--ink);
  --text-mute: var(--ink-mute);
  --text-accent: var(--rust);
  --border-default: var(--rule-soft);
  --border-strong: var(--rule);

  /* Dark surfaces */
  --surface-page-dark: var(--violet-bg);
  --surface-card-dark: var(--violet-panel);
  --surface-raised-dark: var(--violet-panel-2);
  --text-body-dark: rgba(239, 228, 208, 0.78);
  --text-strong-dark: var(--cream);
  --text-mute-dark: rgba(239, 228, 208, 0.55);
  --text-accent-dark: var(--rust-light);

  /* Interactive */
  --action-primary-bg: var(--rust);
  --action-primary-fg: var(--cream);
  --action-primary-bg-hover: var(--rust-deep);
  --action-secondary-bg: var(--violet);
  --action-secondary-fg: var(--cream);
  --focus-ring: var(--rust);
}

/* Dark scope — apply to any container to flip surface + text semantics. */
.fy-dark {
  --surface-page: var(--violet-bg);
  --surface-card: var(--violet-panel);
  --surface-raised: var(--violet-panel-2);
  --surface-modal: var(--violet-panel-2);
  --text-body: rgba(239, 228, 208, 0.78);
  --text-strong: var(--cream);
  --text-mute: rgba(239, 228, 208, 0.55);
  --text-accent: var(--rust-light);
  --border-default: var(--rule-on-dark-soft);
  --border-strong: var(--rule-on-dark);
}
