/* ==========================================================================
   ZEROA DRAFT — TOKENS
   Every colour carries its measured WCAG contrast against the surface it is
   licensed for. Components reference the SURFACE-PAIRED ALIASES at the bottom
   of this file, never the raw ramp — that way the pairing rule is enforced by
   the token name instead of by memory.
   ========================================================================== */

:root {

  /* --- BRAND ------------------------------------------------------------ */
  --teal-900: #06393B;  /* deep ground / dark-surface fills                  */
  --teal-700: #0F6469;  /* TEXT on cream            6.01 : --paper-2         */
  --teal-600: #138085;  /* brand teal, unchanged.   4.71 : --paper           */
                        /* 4.11 on --paper-2 → FAILS as text on cream        */
                        /* 3.77 on --ink-900 → NEVER as text on dark         */
  --teal-400: #2AA9A5;  /* dark surfaces only       6.20 : --ink-900         */
                        /* 2.50 on --paper-2 → NEVER on light                */
  --teal-100: #D8ECEC;  /* washes                  14.51 : --ink-900         */

  /* --- INK / NEUTRAL  (teal-biased — never pure grey) -------------------- */
  --ink-900:  #0B1A1E;  /* near-black ground for dark bands                  */
  --ink-700:  #1C2C31;  /* headings on light       12.59 : --paper-2         */
  --ink-500:  #47585E;  /* secondary text on LIGHT  6.48 : --paper-2         */
                        /* 2.39 on --ink-900 → NEVER on dark                 */
  --ink-400:  #54666C;  /* labels/eyebrows on LIGHT 5.24 : --paper-2         */
  --ink-300:  #8FA1A7;  /* labels/eyebrows on DARK  6.63 : --ink-900         */
                        /* 2.34 on --paper-2 → NEVER on light                */
  --ink-200:  #A9B8BD;  /* secondary text on DARK   8.70 : --ink-900         */
  --ink-100:  #DCE4E5;  /* rules — non-text                                  */
  --paper:    #FFFFFF;
  --paper-2:  #F2EFE9;  /* warm cream, from the existing #E7E3DC, lightened  */

  /* --- SEMANTIC  (data only — never decoration) -------------------------- */
  --up:        #0E7248; /* 5.97 : --paper · 5.20 : --paper-2                 */
  --down:      #C0392B; /* 5.44 : --paper · 4.74 : --paper-2                 */
  --warn:      #8A5A00; /* 5.93 : --paper · 5.16 : --paper-2                 */
  --up-400:    #3FBF86; /* 7.63 : --ink-900                                  */
  --down-400:  #F0776A; /* 6.40 : --ink-900                                  */
  --warn-400:  #E0A33A; /* 8.02 : --ink-900                                  */

  /* --- SURFACE-PAIRED ALIASES  — components use these -------------------- */
  --label-on-light:  var(--ink-400);
  --label-on-dark:   var(--ink-300);
  --body-on-light:   var(--ink-500);
  --body-on-dark:    var(--ink-200);
  --head-on-light:   var(--ink-700);
  --head-on-dark:    var(--paper);
  --accent-on-light: var(--teal-700);   /* text  */
  --accent-fill:     var(--teal-600);   /* fills */
  --accent-on-dark:  var(--teal-400);
  --rule-on-light:   var(--ink-100);
  --rule-on-dark:    #23343A;

  /* --- TYPE ------------------------------------------------------------- */
  --display: "Instrument Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --body:    "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --mono:    "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;

  /* 1.25 scale from 16px. 13 and 14 are hand-set below the ratio for labels
     and captions — 16 / 1.25 = 12.8, so the small end is deliberately off it.
     76 and 95 extend the ratio upward for the display register on wide
     screens: 61 × 1.25 = 76, 76 × 1.25 = 95. */
  --t-13: 0.8125rem;
  --t-14: 0.875rem;
  --t-16: 1rem;
  --t-17: 1.0625rem;
  --t-20: 1.25rem;
  --t-25: 1.5625rem;
  --t-31: 1.9375rem;
  --t-39: 2.4375rem;
  --t-49: 3.0625rem;
  --t-61: 3.8125rem;
  --t-76: 4.75rem;
  --t-95: 5.9375rem;

  --track-display: -0.028em;
  --track-mono:     0.12em;

  /* --- LAYOUT -------------------------------------------------------------
     Two measures, deliberately. Text bands hold 1560 so prose keeps a sane
     line length; showcase bands — hero, product proof, exchange hero — run to
     1840 so the interface and the map have room to be the point of the page.
     Below 1560 both collapse to the same fluid width. Prose is protected
     independently by the 68ch cap on `p`, so widening the shell cannot make a
     paragraph unreadable — it only gives the figures more room. */
  --grid-max:  1560px;
  --grid-wide: 1840px;
  --gutter:    24px;
  --band-y:    clamp(64px, 7.5vw, 148px);
  --nav-h:     84px;

  /* --- MOTION ----------------------------------------------------------- */
  --ease: cubic-bezier(0.25, 0.46, 0.45, 0.94);  /* power2.out              */
  --dur-reveal: 400ms;
}

@media (prefers-reduced-motion: reduce) {
  :root { --dur-reveal: 0ms; }
}
