/* ─────────────────────────────────────────────────────────────────────────
 * design-systems/wise/tokens.css
 *
 * Structured token bindings for "Design System Inspired by Wise".
 * Money without borders: bright spring-green CTAs on warm-neutral canvas,
 * billboard Wise Sans at weight 900 with 0.85 line-height, pill buttons,
 * ring-only shadows, and "calt" everywhere.
 *
 * Key brand decisions encoded here:
 *   - Wise Green (#9fe870) as the only accent; Dark Green (#163300) as
 *     --accent-on — green-on-green CTA is THE Wise signature, not white.
 *   - Pastel Green (#cdffad) for hover — lighter, contrast-up, not darker.
 *   - Near-Black with warm green undertone (#0e0f0c), never pure #000.
 *   - Inter weight 600 as body default — confident, not light. Wise Sans
 *     weight 900 for display, line-height 0.85, letter-spacing normal.
 *   - Ring-only elevation: rgba(14,15,12,0.12) 1px ring; no traditional
 *     drop shadows anywhere. Depth comes from green-on-neutral contrast.
 *   - Pill buttons (9999px); cards span 16px → 30px → 40px radius tiers.
 *   - 18px body baseline (not 16px) — Wise reads bigger than typical UI.
 * ─────────────────────────────────────────────────────────────────── */

:root {
  /* ─── Surface ─────────────────────────────────────────────────────
   * White canvas with a barely-tinted green-gray surface tier. The
   * background is pure white because the green accent must read as
   * the only colored element on the page. */
  --bg: #ffffff;                  /* Pure white canvas — green pops as the sole accent */
  --surface: #e8ebe6;             /* Light Surface — subtle green-tinted neutral */
  --surface-warm: var(--surface); /* alias — no warm tier; Wise is cool-green, not warm */

  /* ─── Foreground ──────────────────────────────────────────────────
   * Near-black with a warm green undertone (#0e0f0c) — never #000.
   * The faint green in the black ties text to the brand accent. */
  --fg: #0e0f0c;             /* Near Black — primary text, headlines */
  --fg-2: var(--fg);         /* alias — single confident text color */
  --muted: #868685;          /* Gray — captions, tertiary text */
  --meta: var(--muted);      /* alias — same gray for metadata */

  /* ─── Border ──────────────────────────────────────────────────────
   * Matches the ring-shadow color from DESIGN.md §6 — borders and
   * ring elevation share the same hairline so cards read as one
   * unified material. */
  --border: rgba(14, 15, 12, 0.12); /* Ring hairline — also used by --elev-ring */
  --border-soft: var(--border);     /* alias — no inner separator distinction */

  /* ─── Accent ──────────────────────────────────────────────────────
   * Wise Green — the brand's most recognizable element. Reserved for
   * primary CTAs and brand moments; never used as a large surface.
   * Hover lightens to Pastel Green (Wise's contrast-up convention),
   * active darkens via color-mix. */
  --accent: #9fe870;         /* Wise Green — primary CTA, brand signal */
  --accent-on: #163300;      /* Dark Green text on Wise Green — THE signature */
  --accent-hover: #cdffad;   /* Pastel Green — lighter on hover, not darker */
  --accent-active: color-mix(in oklab, var(--accent), black 12%);

  /* ─── Semantic ────────────────────────────────────────────────────
   * Pulled from Wise's semantic palette in DESIGN.md §2. Positive
   * is deep green (#054d28) to stay in the brand family rather than
   * jumping to a generic emerald. */
  --success: #054d28;        /* Positive Green — success state, in-brand */
  --warn: #ffd11a;           /* Warning Yellow — Wise's hover-warn yellow */
  --danger: #d03238;         /* Danger Red — destructive / error */

  /* ─── Typography ──────────────────────────────────────────────────
   * Wise Sans for display (weight 900 in components), Inter for body
   * (weight 600 as default). Both stacks enable "calt" at the
   * component layer. Helvetica/Arial fall back to keep the system
   * usable when proprietary Wise Sans is unavailable. */
  --font-display: "Wise Sans", Inter, ui-sans-serif, system-ui, sans-serif;
  --font-body: Inter, Helvetica, Arial, ui-sans-serif, sans-serif;
  --font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;

  /* Type scale — DESIGN.md §3. 18px body baseline, 96px hero display.
   * Wise reads bigger than typical UI; --text-base = 18px is intentional. */
  --text-xs: 12px;           /* Small */
  --text-sm: 14px;           /* Caption */
  --text-base: 18px;         /* Body — confident, larger than typical UI */
  --text-lg: 22px;           /* Feature Title */
  --text-xl: 26px;           /* Card Title */
  --text-2xl: 40px;          /* Sub-heading */
  --text-3xl: 64px;          /* Section Heading */
  --text-4xl: 96px;          /* Display Hero — billboard Wise Sans 900 */

  --leading-body: 1.44;      /* Inter body rhythm per DESIGN.md */
  --leading-tight: 0.85;     /* Wise Sans display — letters overlap vertically */
  --tracking-display: normal; /* DESIGN.md: normal tracking on all Wise Sans display sizes */

  /* ─── Spacing ─────────────────────────────────────────────────────
   * 8px base unit. Section vertical spacing 80px desktop. */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;

  --section-y-desktop: 80px;
  --section-y-tablet: 48px;
  --section-y-phone: 32px;

  /* ─── Radius ──────────────────────────────────────────────────────
   * Wise's radius vocabulary spans pill buttons to deeply-rounded
   * cards. Per DESIGN.md §5: 16px (small cards), 30px (medium
   * features), 40px (large containers/tables), 9999px (all buttons). */
  --radius-sm: 16px;         /* Small cards, inputs — Wise's "card" tier */
  --radius-md: 30px;         /* Medium feature cards */
  --radius-lg: 40px;         /* Large containers, tables — Wise's signature deep round */
  --radius-pill: 9999px;     /* All buttons, badges */

  /* ─── Elevation ───────────────────────────────────────────────────
   * Ring-only philosophy per DESIGN.md §6. No drop shadows; depth
   * lives in the green-on-neutral contrast. --elev-raised is kept
   * extremely subtle (1px ring + whisper of lift) for components
   * that genuinely need to read as elevated. */
  --elev-flat: none;
  --elev-ring: 0 0 0 1px var(--border);
  --elev-raised: 0 0 0 1px var(--border), 0 2px 8px rgba(14, 15, 12, 0.04);

  /* ─── Focus ring ──────────────────────────────────────────────────
   * Green-tinted focus ring — keeps the accent visible without
   * introducing a competing color. */
  --focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 60%);

  /* ─── Motion ──────────────────────────────────────────────────────
   * Standard 150/200ms. Note: the scale(1.05) hover and scale(0.95)
   * active that DESIGN.md §4 calls out live in component CSS — they
   * are interaction grammar, not token grammar. */
  --motion-fast: 150ms;
  --motion-base: 200ms;
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);

  /* ─── Layout ──────────────────────────────────────────────────────
   * 1280px container — generous for billboard typography while still
   * comfortable on standard laptop displays. */
  --container-max: 1280px;
  --container-gutter-desktop: 24px;
  --container-gutter-tablet: 16px;
  --container-gutter-phone: 12px;
}
