/* BONO FOOD — design tokens.

   Colour is SAMPLED from the client's logo, then DERIVED where a sampled
   value fails contrast. Every ratio in the comments is measured by
   tests/check_contrast.py, which fails the build if a token drifts away
   from the number recorded here.

   Two of these exist because measurement overturned a guess:
   --leaf, because the sampled --grass is 3.29:1 on white and cannot be
   text; and --canopy as the solid-button fill, because white on --grass
   fails AA and the approved mockup got that wrong. */
:root {
  /* --- grounds --- */
  --forest:    #0B2E14;  /* hero, stats, CTA, footer.  white on it = 14.84:1 */
  --canopy:    #14512A;  /* solid buttons on light.    white on it =  9.37:1 */
  --paper:     #FFFFFF;  /* content ground */
  --stone:     #F1F4EC;  /* alternate surface — a green-biased neutral, not grey */

  /* --- ink --- */
  --ink:       #10221A;  /* body and display text     16.59:1 on paper */
  --ink-soft:  #4A5B4E;  /* secondary text, ledes      7.25:1 on paper */
  --line:      #DEE5D6;  /* hairlines, table rules */

  /* --- accents --- */
  --leaf:      #496C0E;  /* DERIVED at --grass's hue (82.3 vs 82.2 deg).
                            6.11:1 on paper, 5.50:1 on stone. The ONLY green
                            legal as text on a light ground. */
  --grass:     #6A9C15;  /* sampled from the logo's field band. 3.29:1 on
                            white — NEVER text. Fills, rules, hovers only. */
  --zest:      #C9D648;  /* highlight. 9.32:1 on --forest, 1.59:1 on white —
                            dark grounds ONLY, and never text on light. */

  /* --- PENDING flags ---
     Carried over from the first build unchanged, and deliberately so. The
     trio is self-contained (amber ink on amber ground), so it is unaffected
     by the new palette around it, and --amber-ink is already a DERIVED value:
     the original #8A6D1F measured 4.576:1 and cleared AA by 0.076, which is
     no margin at all for the most-rendered text on the site at launch.
     Nearly every content field still ships as PENDING. */
  --amber-bg:   #FDF7E6;
  --amber-line: #C8A94E;
  --amber-ink:  #6E5615;   /* 6.53:1 on --amber-bg */

  /* --- type --- */
  --face-display: 'Bricolage Grotesque', system-ui, sans-serif;
  --face-body:    'Figtree', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --face-mono:    'DM Mono', ui-monospace, 'SFMono-Regular', monospace;
  --track-display: -0.035em;
  --track-label:    0.16em;

  /* --- layout --- */
  --wrap:     1280px;
  --pad:      clamp(20px, 5vw, 72px);
  --header-h: 78px;

  /* --- direction: 1 in LTR, -1 in RTL. Multiply any value that flips. --- */
  --dir: 1;

  /* --- motion --- */
  --ease:        cubic-bezier(.22, 1, .36, 1);
  --reveal-dur:  850ms;
  --slide-hold:  7000ms;
  --slide-fade:  1150ms;
  --kenburns:    9s;
}

[dir="rtl"] {
  --dir: -1;
  --face-display: 'IBM Plex Sans Arabic', system-ui, sans-serif;
  --face-body:    'IBM Plex Sans Arabic', system-ui, sans-serif;
  --track-display: 0;   /* Arabic does not take negative tracking */
}
