/* ============================================================
   SWORN — Color Tokens
   Warm, restrained, institutional. Anchored on:
     Primary Dark  #3C332E   Primary Light  #E0DBCF
   Two layers: raw scale values (--ink-*, --clay-*, …) and
   semantic aliases (--surface-*, --text-*, --status-*).
   Consume the semantic aliases, never the raw scale.
   ============================================================ */

:root {
  /* ---- Warm neutral ink scale (the spine of the system) ---- */
  --ink-975: #211B17;   /* deepest espresso — dark-mode base    */
  --ink-950: #2A231E;
  --ink-900: #3C332E;   /* PRIMARY DARK — primary text, dark UI */
  --ink-800: #4A403A;
  --ink-700: #5C514A;
  --ink-600: #736658;   /* secondary text                       */
  --ink-500: #8B7E6F;   /* muted text                           */
  --ink-400: #A79A89;   /* disabled text, faint captions        */
  --ink-300: #C3B9A9;   /* strong borders                       */
  --ink-250: #CFC6B7;
  --ink-200: #D8CFC0;   /* borders                              */
  --ink-150: #E0DBCF;   /* PRIMARY LIGHT — dividers, hairlines  */
  --ink-100: #E9E4D9;   /* subtle fills, hover on cream         */
  --ink-75:  #F1EDE4;   /* elevated surface / sunken            */
  --ink-50:  #F6F3EC;   /* app background                       */
  --ink-25:  #FBFAF5;   /* card / raised surface                */
  --paper:   #FEFDFA;   /* pure warm white                      */

  /* ---- Brand clay (SWORN's signature warm accent) ---------- */
  --clay-700: #6E4029;
  --clay-600: #8A5335;
  --clay-500: #A5623F;   /* BRAND ACCENT — links, emphasis      */
  --clay-400: #BC7B58;
  --clay-300: #D3A183;
  --clay-100: #EFDDD0;   /* accent tint fill                    */
  --clay-50:  #F7ECE3;

  /* ---- Bond bronze (economic / staking cues) --------------- */
  --bronze-600: #6F5427;
  --bronze-500: #8C6A34;
  --bronze-400: #A9853F;
  --bronze-100: #EDE0C6;

  /* ---- Status: pine (TRUE / settled / success / winner) ---- */
  --pine-600: #3C5A43;
  --pine-500: #4F7355;   /* success                             */
  --pine-400: #6E9070;
  --pine-100: #DEE9DE;
  --pine-50:  #EDF3EC;

  /* ---- Status: brick (FALSE / slashed / error / loser) ----- */
  --brick-600: #82362B;
  --brick-500: #A2473B;  /* error                               */
  --brick-400: #BE6C60;
  --brick-100: #F0DEDA;
  --brick-50:  #F8ECE9;

  /* ---- Status: ochre (challenge window / warning / at risk)  */
  --ochre-600: #8C6222;
  --ochre-500: #B07D33;  /* warning                             */
  --ochre-400: #C99C57;
  --ochre-100: #F1E4C8;
  --ochre-50:  #F8F0DE;

  /* ---- Status: slate (informational / pending consensus) --- */
  --slate-600: #3A536B;
  --slate-500: #4A6785;  /* info                                */
  --slate-400: #7089A2;
  --slate-100: #DDE5EC;
  --slate-50:  #EBF0F4;

  /* ---- Chart categorical (warm-led, restrained) ------------ */
  --chart-1: #8C6A34;   /* bronze  */
  --chart-2: #4F7355;   /* pine    */
  --chart-3: #4A6785;   /* slate   */
  --chart-4: #A5623F;   /* clay    */
  --chart-5: #B07D33;   /* ochre   */
  --chart-6: #6E5773;   /* plum    */

  /* ==========================================================
     SEMANTIC ALIASES — consume these
     ========================================================== */

  /* Surfaces */
  --surface-base:      var(--ink-50);   /* app canvas            */
  --surface-sunken:    var(--ink-75);   /* wells, insets         */
  --surface-card:      var(--ink-25);   /* cards, panels         */
  --surface-raised:    var(--paper);    /* menus, dialogs, pop+  */
  --surface-inverse:   var(--ink-900);  /* dark sections         */
  --surface-hover:     var(--ink-100);  /* row/ghost hover       */
  --surface-active:    var(--ink-150);  /* pressed fill          */
  --surface-accent:    var(--clay-50);  /* accent-tinted panel   */

  /* Text */
  --text-primary:      var(--ink-900);
  --text-secondary:    var(--ink-600);
  --text-muted:        var(--ink-500);
  --text-faint:        var(--ink-400);
  --text-inverse:      var(--ink-150);  /* on dark surfaces      */
  --text-on-accent:    var(--paper);    /* on filled clay/dark   */
  --text-link:         var(--clay-500);
  --text-link-hover:   var(--clay-600);

  /* Borders & dividers */
  --border-strong:     var(--ink-300);
  --border-default:    var(--ink-200);
  --border-subtle:     var(--ink-150);
  --divider:           var(--ink-150);
  --border-inverse:    var(--ink-800);

  /* Interactive — primary (dark ink) */
  --action-primary:        var(--ink-900);
  --action-primary-hover:  var(--ink-800);
  --action-primary-active: var(--ink-950);
  --action-primary-text:   var(--paper);

  /* Interactive — accent (clay) */
  --action-accent:         var(--clay-500);
  --action-accent-hover:   var(--clay-600);
  --action-accent-active:  var(--clay-700);
  --action-accent-text:    var(--paper);

  /* Status — semantic */
  --status-success:        var(--pine-500);
  --status-success-fg:     var(--pine-600);
  --status-success-bg:     var(--pine-50);
  --status-success-border: var(--pine-100);

  --status-error:          var(--brick-500);
  --status-error-fg:       var(--brick-600);
  --status-error-bg:       var(--brick-50);
  --status-error-border:   var(--brick-100);

  --status-warning:        var(--ochre-500);
  --status-warning-fg:     var(--ochre-600);
  --status-warning-bg:     var(--ochre-50);
  --status-warning-border: var(--ochre-100);

  --status-info:           var(--slate-500);
  --status-info-fg:        var(--slate-600);
  --status-info-bg:        var(--slate-50);
  --status-info-border:    var(--slate-100);

  --status-neutral:        var(--ink-500);
  --status-neutral-fg:     var(--ink-700);
  --status-neutral-bg:     var(--ink-100);
  --status-neutral-border: var(--ink-200);

  /* Protocol truth labels (semantic mapping) */
  --truth-true:            var(--pine-500);
  --truth-false:           var(--brick-500);
  --truth-unresolvable:    var(--ink-500);
  --truth-pending:         var(--slate-500);
  --truth-challenged:      var(--ochre-500);

  /* Bond / economic accent */
  --bond:                  var(--bronze-500);
  --bond-fg:               var(--bronze-600);
  --bond-bg:               var(--bronze-100);

  /* Focus */
  --focus-ring:            var(--slate-500);
  --focus-ring-offset:     var(--surface-base);

  /* Disabled */
  --disabled-bg:           var(--ink-100);
  --disabled-text:         var(--ink-400);
  --disabled-border:       var(--ink-200);
}

/* ============================================================
   Dark scope — warm, not black. Apply .theme-dark to any
   container (or :root) to invert onto espresso surfaces.
   ============================================================ */
.theme-dark {
  --surface-base:      var(--ink-975);
  --surface-sunken:    #1B1512;
  --surface-card:      var(--ink-950);
  --surface-raised:    var(--ink-900);
  --surface-inverse:   var(--ink-75);
  --surface-hover:     var(--ink-900);
  --surface-active:    var(--ink-800);
  --surface-accent:    #2E241D;

  --text-primary:      var(--ink-100);
  --text-secondary:    var(--ink-300);
  --text-muted:        var(--ink-400);
  --text-faint:        var(--ink-500);
  --text-inverse:      var(--ink-900);
  --text-link:         var(--clay-300);
  --text-link-hover:   var(--clay-100);

  --border-strong:     var(--ink-700);
  --border-default:    var(--ink-800);
  --border-subtle:     var(--ink-850, #362E28);
  --divider:           #362E28;

  --action-primary:        var(--ink-100);
  --action-primary-hover:  var(--paper);
  --action-primary-active: var(--ink-300);
  --action-primary-text:   var(--ink-900);

  --status-success-bg:     #1E2A20;
  --status-error-bg:       #2C1D1A;
  --status-warning-bg:     #2A2213;
  --status-info-bg:        #17222C;
  --status-neutral-bg:     var(--ink-900);

  --focus-ring:            var(--slate-400);
  --focus-ring-offset:     var(--surface-base);

  --disabled-bg:           var(--ink-900);
  --disabled-text:         var(--ink-600);
  --disabled-border:       var(--ink-800);
}
