/* ── Base palette ─────────────────────────────────────────────
   Warm neutrals (paper → ink) plus one blue accent. Neutrals are
   deliberately warm: every grey carries a touch of yellow/red so the
   page reads like paper, never like a screenshot of a dashboard. */
:root {
  /* Paper — warm light neutrals */
  --paper-50: #fdfbf7;
  --paper-100: #f8f3ec;
  --paper-200: #f1e9de;
  --paper-300: #e6dacb;
  --paper-400: #d5c5b1;

  /* Clay — warm mid neutrals */
  --clay-400: #b3a48f;
  --clay-500: #a1907c;
  --clay-600: #7d6f5f;

  /* Ink — warm dark neutrals */
  --ink-400: #8c8178;
  --ink-500: #6b625b;
  --ink-700: #3d3733;
  --ink-800: #2a2521;
  --ink-900: #1c1917;
  --ink-950: #14110e;

  /* Accent — the single interactive blue */
  --blue-300: #93c5fd;
  --blue-400: #60a5fa;
  --blue-500: #3b82f6;
  --blue-600: #2563eb;
  --blue-700: #1d4ed8;

  /* Semantic hues — warm-shifted, used only for status */
  --green-500: #2e8b6a;
  --green-100: #dcf0e7;
  --amber-500: #c7841f;
  --amber-100: #f7ecd5;
  --red-500: #c7453c;
  --red-100: #f8e2e0;
}

/* ── Semantic aliases: light (default) ───────────────────────── */
:root,
[data-theme="light"] {
  --bg: var(--paper-50);
  --bg-subtle: var(--paper-100);
  --bg-sunken: var(--paper-200);
  --surface: #ffffff;
  --surface-raised: #ffffff;
  --surface-inverse: var(--ink-900);

  --text: var(--ink-900);
  --text-secondary: var(--ink-700);
  --text-muted: var(--ink-500);
  --text-faint: var(--ink-400);
  --text-inverse: var(--paper-50);
  --text-on-accent: #ffffff;

  --border: var(--paper-300);
  --border-strong: var(--paper-400);
  --border-subtle: var(--paper-200);

  --accent: var(--blue-600);
  --accent-hover: var(--blue-700);
  --accent-soft: #e8effd;
  --accent-ring: var(--blue-400);
  --link: var(--blue-600);
  --link-hover: var(--blue-700);

  --success: var(--green-500);
  --success-soft: var(--green-100);
  --warning: var(--amber-500);
  --warning-soft: var(--amber-100);
  --danger: var(--red-500);
  --danger-soft: var(--red-100);

  --shadow-color: 28 25 23;
}

/* ── Semantic aliases: dark ─────────────────────────────────── */
[data-theme="dark"] {
  --bg: var(--ink-950);
  --bg-subtle: #191510;
  --bg-sunken: #100d0b;
  --surface: #201b17;
  --surface-raised: #27211c;
  --surface-inverse: var(--paper-100);

  --text: #f5efe6;
  --text-secondary: #d9cfc2;
  --text-muted: #a99c8e;
  --text-faint: #7d7267;
  --text-inverse: var(--ink-950);
  --text-on-accent: #ffffff;

  --border: #362e27;
  --border-strong: #4a4038;
  --border-subtle: #292420;

  --accent: var(--blue-400);
  --accent-hover: var(--blue-300);
  --accent-soft: #16233a;
  --accent-ring: var(--blue-400);
  --link: var(--blue-300);
  --link-hover: #bfdbfe;

  --success: #4fb894;
  --success-soft: #14312a;
  --warning: #e0a94a;
  --warning-soft: #3a2c14;
  --danger: #e8756c;
  --danger-soft: #3a1e1c;

  --shadow-color: 0 0 0;
}
