/* ============================================================
   Axorum — Color tokens (clean-slate direction, 2026-07)
   Two inks, two substrates, kept co-equal.
     • Book  — warm vellum page (light). The human-readable ledger.
     • Machine — deep graphite field (dark). Machine-speed money.
   Accent: prussian ledger-ink. Proof marks only: oxblood seal.
   No mint, no alarm-red. Verdict state is carried by text + shape;
   color only reinforces.

   Theme: :root defaults to BOOK. Add [data-theme="machine"] (or the
   class .ax-machine) on any container to flip that subtree to the
   MACHINE substrate. Semantic aliases below are what components read.
   ============================================================ */

:root {
  /* ---- Book substrate (light) ---- */
  --book-bg:    #F3EDE1;   /* vellum canvas */
  --book-sheet: #FAF6EC;   /* raised page / card */
  --book-sunk:  #EAE2D2;   /* sunken panel */
  --book-ink:   #1A1712;   /* primary text — warm archival near-black */
  --book-ink-2: #3A352C;   /* secondary text */
  --book-mute:  #6F675A;   /* muted / caption */
  --book-rule:  #D8CFBD;   /* hairline rule */
  --book-hair:  #E3DBCB;   /* faint hairline */

  /* ---- Machine substrate (dark) ---- */
  --mach-bg:    #14161B;   /* graphite field */
  --mach-panel: #1C1F26;   /* raised panel */
  --mach-sunk:  #0F1116;   /* sunken */
  --mach-bone:  #E9E4D8;   /* primary text — warm bone */
  --mach-bone-2:#C9C4B8;   /* secondary text */
  --mach-mute:  #8A8E99;   /* muted */
  --mach-rule:  #2E323C;   /* hairline rule */
  --mach-hair:  #23262E;   /* faint hairline */

  /* ---- Prussian ledger-ink (the accent) ---- */
  --prussian-900: #12293E;  /* pressed / deepest */
  --prussian-700: #1B3A57;  /* PRIMARY accent — structure, links, key rules */
  --prussian-500: #2E5678;  /* hover / mid */
  --prussian-300: #5E8BB4;  /* on dark / lift */
  --prussian-100: #E7EEF5;  /* soft surface (light) */
  --prussian-border: #9DB6CC;

  /* ---- Oxblood seal (proof marks ONLY — rare by design) ---- */
  --seal-700: #7C221D;
  --seal-500: #9E2B25;
  --seal-300: #D8A9A5;
  --seal-100: #F6E7E5;

  /* ---- Data colors (charts / secondary status only, never brand) ---- */
  --data-blue:   #2E5678;
  --data-amber:  #8A6310;
  --data-slate:  #55607A;
  --data-clay:   #9E5B36;

  /* ============================================================
     Semantic aliases — reference THESE in components. Book values.
     ============================================================ */
  --surface-canvas:      var(--book-bg);
  --surface-card:        var(--book-sheet);
  --surface-raised:      var(--book-sheet);
  --surface-sunken:      var(--book-sunk);
  --surface-inverse:     var(--mach-bg);
  --surface-accent:      var(--prussian-700);
  --surface-accent-soft: var(--prussian-100);

  --text-strong:    var(--book-ink);
  --text-body:      var(--book-ink-2);
  --text-muted:     var(--book-mute);
  --text-subtle:    var(--book-mute);
  --text-on-accent: #FBFAF5;
  --text-on-inverse:var(--mach-bone);
  --text-accent:    var(--prussian-700);
  --text-link:      var(--prussian-700);
  --text-link-hover:var(--prussian-900);

  --border-hairline: var(--book-rule);
  --border-hair-soft:var(--book-hair);
  --border-strong:   var(--book-ink);
  --border-accent:   var(--prussian-700);
  --border-on-dark:  rgba(233, 228, 216, 0.16);

  /* ---- Verdict / lifecycle state (text+shape carry it; color reinforces) ---- */
  --state-posted:        var(--prussian-700);   /* permitted · recorded · balanced · discharged */
  --state-posted-soft:   var(--prussian-100);
  --state-posted-border: var(--prussian-border);
  --state-refused:       var(--seal-500);        /* refused · breached */
  --state-refused-fg:    var(--seal-700);
  --state-refused-soft:  var(--seal-100);
  --state-refused-border:var(--seal-300);
  --state-open:          var(--book-mute);        /* open · pending · dormant */
  --state-open-soft:     var(--book-sunk);
  --state-open-border:   var(--book-rule);

  /* Proof mark */
  --seal: var(--seal-500);

  /* Focus ring */
  --focus-ring: var(--prussian-500);

  /* ============================================================
     Back-compat aliases — legacy --ax-* names remapped to the new
     palette so existing components render on the new direction.
     (green* → prussian; red → seal; paper/ink → book substrate.)
     ============================================================ */
  --ax-ink-900: var(--book-ink);
  --ax-ink-800: var(--book-ink-2);
  --ax-ink-700: #4A453B;
  --ax-ink-600: var(--book-mute);
  --ax-ink-500: #837B6E;
  --ax-neutral-500: var(--book-mute);
  --ax-neutral-400: #A9A092;
  --ax-neutral-300: var(--book-rule);
  --ax-neutral-200: var(--book-hair);
  --ax-neutral-100: var(--book-sunk);
  --ax-paper:      var(--book-bg);
  --ax-paper-pure: var(--book-sheet);
  --ax-white:      #FFFFFF;
  --ax-green-900: var(--prussian-900);
  --ax-green-800: #163049;
  --ax-green-700: var(--prussian-700);
  --ax-green-600: var(--prussian-500);
  --ax-green-500: var(--prussian-500);
  --ax-green-300: var(--prussian-300);
  --ax-green-200: var(--prussian-border);
  --ax-green-100: var(--prussian-100);
  --ax-blue:   var(--data-blue);
  --ax-amber:  var(--data-amber);
  --ax-red:    var(--seal-500);
  --ax-violet: var(--data-slate);

  --status-pass:    var(--state-posted);
  --status-pass-fg: var(--prussian-300);
  --status-block:   var(--state-refused);
  --status-pending: var(--data-amber);
  --status-info:    var(--data-blue);
}

/* ============================================================
   MACHINE substrate override — flips a subtree to the dark ink.
   ============================================================ */
[data-theme="machine"],
.ax-machine {
  color-scheme: dark;

  --surface-canvas:      var(--mach-bg);
  --surface-card:        var(--mach-panel);
  --surface-raised:      var(--mach-panel);
  --surface-sunken:      var(--mach-sunk);
  --surface-inverse:     var(--book-bg);
  --surface-accent:      var(--prussian-500);
  --surface-accent-soft: rgba(94, 139, 180, 0.14);

  --text-strong:    var(--mach-bone);
  --text-body:      var(--mach-bone-2);
  --text-muted:     var(--mach-mute);
  --text-subtle:    var(--mach-mute);
  --text-on-accent: var(--mach-bone);
  --text-on-inverse:var(--book-ink);
  --text-accent:    var(--prussian-300);
  --text-link:      var(--prussian-300);
  --text-link-hover:#8FB2D2;

  --border-hairline: var(--mach-rule);
  --border-hair-soft:var(--mach-hair);
  --border-strong:   var(--mach-bone);
  --border-accent:   var(--prussian-300);
  --border-on-dark:  rgba(233, 228, 216, 0.16);

  --state-posted:        var(--prussian-300);
  --state-posted-soft:   rgba(94, 139, 180, 0.14);
  --state-posted-border: rgba(94, 139, 180, 0.40);
  --state-refused:       #D98A85;
  --state-refused-fg:    #E7A9A4;
  --state-refused-soft:  rgba(158, 43, 37, 0.20);
  --state-refused-border:rgba(216, 169, 165, 0.42);
  --state-open:          var(--mach-mute);
  --state-open-soft:     var(--mach-sunk);
  --state-open-border:   var(--mach-rule);

  --focus-ring: var(--prussian-300);

  /* back-compat on machine */
  --ax-ink-900: var(--mach-bone);
  --ax-ink-800: var(--mach-bone-2);
  --ax-ink-700: var(--mach-bone-2);
  --ax-ink-600: var(--mach-mute);
  --ax-ink-500: var(--mach-mute);
  --ax-neutral-500: var(--mach-mute);
  --ax-neutral-400: var(--mach-mute);
  --ax-neutral-300: var(--mach-rule);
  --ax-neutral-200: var(--mach-rule);
  --ax-neutral-100: var(--mach-sunk);
  --ax-paper:      var(--mach-bg);
  --ax-paper-pure: var(--mach-panel);
  --ax-green-700: var(--prussian-500);
  --ax-green-600: var(--prussian-300);
  --ax-green-500: var(--prussian-300);
  --ax-green-100: rgba(94, 139, 180, 0.14);
  --ax-green-200: rgba(94, 139, 180, 0.30);
}
