/* DO NOT EDIT — GENERATED FILE.
   Generated from design-engine/tokens.json by scripts/brand/emit_tokens.py
   source-digest: e26282b84790f5f6

   Hand-editing this file WILL be caught: `emit_tokens.py --check` re-emits and
   byte-compares. Change design-engine/tokens.json and re-run the emitter instead.

   NOTE: display type SIZES are deliberately NOT emitted. The engine's sizes are
   absolute px on a 1080x1080 canvas; this surface needs its own scale. Only the
   primitives (colour, family, spacing, weight, tracking) are shared. */

:root {
  /* ---- colour: the only eight. Nothing outside this set. ---- */
  --c-primary-navy: #0a0f1e;
  --c-secondary-navy: #111827;
  --c-deep-slate: #1a2332;
  --c-luxury-gold: #c9a84c;  /* hairlines, ONE tracked label, ONE accent. NEVER a fill. */
  --c-soft-gold: #e0c068;
  --c-white: #ffffff;
  --c-light-grey: #f8f5ef;
  --c-graph-grey: #9f9fa1;  /* DERIVED: lightGrey @ 0.625 over primaryNavy — muted text is the cream at an alpha, one system not two */

  /* ---- the same eight as RGB TRIPLETS, so alpha variants route through the tokens too.
     Without these you cannot write rgba(gold, .3) against a token, and the literals
     (rgba(201,168,76,…) x34 on the site) have nowhere to resolve to. Use as:
         rgba(var(--c-luxury-gold-rgb), 0.3)                                    ---- */
  --c-primary-navy-rgb: 10, 15, 30;
  --c-secondary-navy-rgb: 17, 24, 39;
  --c-deep-slate-rgb: 26, 35, 50;
  --c-luxury-gold-rgb: 201, 168, 76;
  --c-soft-gold-rgb: 224, 192, 104;
  --c-white-rgb: 255, 255, 255;
  --c-light-grey-rgb: 248, 245, 239;
  --c-graph-grey-rgb: 159, 159, 161;

  /* ---- FUNCTIONAL UI STATE — NOT part of the eight-colour brand palette.
     A form-validation error genuinely IS an error and the reader must see it.
     Ruling 6 governs DATA (a falling rate is not 'bad'), not functional UI.
     Never use this on a brand surface — cards have no error states.       ---- */
  --ui-error: #e08a8a;
  --ui-error-rgb: 224, 138, 138;

  /* ---- type families (sizes are NOT emitted — see the header) ---- */
  --font-serif: 'Cormorant Garamond', Georgia, serif;   /* hero: headline, stat value */
  --font-caps:  'Cinzel', Georgia, serif;    /* small-caps display: label, wordmark */
  --font-ui:    'Jost', system-ui, -apple-system, sans-serif;      /* labels, source, captions, body */

  /* ---- weights ---- */
  --w-body: 400;
  --w-statvalue: 600;
  --w-label: 600;
  --w-source: 500;
  --w-micro: 500;

  /* ---- tracking (letter-spacing) ---- */
  --track-label: 2.6px;
  --track-source: 2.2px;
  --track-micro: 1.2px;

  /* ---- spacing (8pt base) ---- */
  --s-xs: 8px;
  --s-sm: 12px;
  --s-md: 16px;
  --s-lg: 24px;
  --s-xl: 32px;
  --s-2xl: 48px;
  --s-3xl: 64px;
  --s-4xl: 80px;
  --s-5xl: 104px;
  --s-6xl: 128px;

  /* ---- radius: effectively square. Nothing on this brand is rounded. ---- */
  --r-sm: 2px;
  --r-md: 4px;
  --r-frame: 6px;

  /* ---- hairline ----
     TWO tokens, because they are two different things and CSS will not let you conflate them:

       --hairline-fade  a BACKGROUND gradient for a 1px element. This is the engine's
                        dissolving rule — the detail that does more brand work than the
                        palette does. It is NOT valid in `border-color`.
       --hairline-solid a flat faint gold, for `border: 1px solid var(…)` call sites.
                        A gradient there is invalid CSS and renders NOTHING — which is
                        exactly the bug we are fixing, so do not reintroduce it.       ---- */
  --hairline-width: 1px;
  --hairline-fade: linear-gradient(90deg, rgba(var(--c-luxury-gold-rgb), 0.6), rgba(var(--c-luxury-gold-rgb), 0));
  --hairline-solid: rgba(var(--c-luxury-gold-rgb), 0.18);
}

/* THE NUMERAL FIX — load-bearing, not decoration.
   Cormorant Garamond defaults to OLD-STYLE (text) figures: the decimal sits mid-height and
   "3.75%" reads as "3·75%" — an interpunct. On a mortgage rate. Apply to every element
   that renders a figure in the serif. */
.lining-nums, [data-figure] {
  font-variant-numeric: lining-nums tabular-nums;
  font-feature-settings: 'lnum' 1, 'tnum' 1;
}
