/* ============================================================
   GRAM · COLOR
   Graphite + Signal Green. Warm neutrals, one confident accent.
   "Regulation handled calmly in the background."
   ============================================================ */

:root {
  /* --- Paper & pure --- */
  --white: #ffffff;
  --paper: #fafaf7;          /* warm off-white — the default canvas */
  --paper-sunken: #f4f4f0;   /* slightly recessed sections */

  /* --- Warm graphite neutrals (very slightly green-tinted) --- */
  --neutral-0:   #ffffff;
  --neutral-50:  #f6f6f3;
  --neutral-100: #eeeee9;
  --neutral-200: #e2e2dc;
  --neutral-300: #d0d1c9;
  --neutral-400: #a9aaa1;
  --neutral-500: #7e8077;    /* mid — placeholder text */
  --neutral-600: #5d6058;
  --neutral-700: #43463f;
  --neutral-800: #2b2d28;
  --neutral-900: #1b1d18;
  --ink:         #171913;    /* near-black warm — primary text */

  /* --- Signal Green (primary accent) --- */
  --green-50:  #edf6f0;
  --green-100: #d7ebdf;
  --green-200: #aed8c1;
  --green-300: #7fbf9f;
  --green-400: #4ea47c;
  --green-500: #2a8560;   /* base brand green */
  --green-600: #1e6e4e;   /* primary action */
  --green-700: #175a40;   /* hover / links */
  --green-800: #124834;
  --green-900: #0e3a2a;   /* deep, for on-green display type */

  /* --- Semantic hues (used sparingly, always calm) --- */
  --amber-100: #fbf1de;   /* attention / upcoming deadline */
  --amber-500: #b57814;
  --amber-700: #8a5a0e;
  --red-100:   #f9eae6;   /* overdue / error */
  --red-500:   #b4402f;
  --red-700:   #8c3123;
  --blue-100:  #e8f0f7;   /* neutral info */
  --blue-500:  #2a6597;
  --blue-700:  #1f4d75;

  /* ============================================================
     SEMANTIC ALIASES — reach for these in product, not raw ramps
     ============================================================ */

  /* Text */
  --text-strong:   var(--ink);            /* headlines, key numbers */
  --text-body:     var(--neutral-800);    /* default reading text */
  --text-muted:    var(--neutral-600);    /* secondary, captions */
  --text-subtle:   var(--neutral-500); /* meta, placeholders */
  --text-on-accent: #ffffff;
  --text-link:     var(--green-700);

  /* Surfaces */
  --surface-page:    var(--paper);
  --surface-sunken:  var(--paper-sunken);
  --surface-card:    var(--white);
  --surface-raised:  var(--white);
  --surface-inset:   var(--neutral-50);
  --surface-accent-soft: var(--green-50);

  /* Borders / lines */
  --border-subtle:  var(--neutral-200);   /* hairlines, dividers */
  --border-default: var(--neutral-300);   /* inputs, cards at rest */
  --border-strong:  var(--neutral-400);
  --border-accent:  var(--green-500);

  /* Interactive (accent) */
  --accent:          var(--green-600);
  --accent-hover:    var(--green-700);
  --accent-active:   var(--green-800);
  --accent-soft:     var(--green-50);
  --accent-soft-hover: var(--green-100);
  --accent-fg:       #ffffff;

  /* Focus ring */
  --ring: 0 0 0 3px rgba(42, 133, 96, 0.20);
  --ring-offset: 0 0 0 2px var(--surface-card), 0 0 0 4px rgba(42, 133, 96, 0.45);

  /* Status */
  --status-ok-fg:   var(--green-700);
  --status-ok-bg:   var(--green-50);
  --status-warn-fg: var(--amber-700);
  --status-warn-bg: var(--amber-100);
  --status-error-fg: var(--red-700);
  --status-error-bg: var(--red-100);
  --status-info-fg:  var(--blue-700);
  --status-info-bg:  var(--blue-100);

  /* Selection */
  --selection-bg: var(--green-100);
}

::selection { background: var(--selection-bg); }
