/* Hallmark · macrostructure: 01 Bento Grid · H2 Split Diptych hero
 * theme: custom · vibe: "technical precision, phosphor fintech, premium intelligence"
 * paper: oklch(98% 0.005 155) light · oklch(12% 0.008 155) dark
 * accent: oklch(48% 0.18 155) light · oklch(75% 0.20 155) dark
 * display: Space Grotesk · body: IBM Plex Sans · outlier: JetBrains Mono
 * axes: light / geometric-sans / chromatic-phosphor
 * nav: N9 Edge-aligned minimal · footer: Ft1 Mast-headed
 * genre: modern-minimal
 * pre-emit critique: P5 H5 E5 S5 R5 V5
 * contrast: pass (46–50) · mobile: pass (36, 59, 61–65) · honest: pass (56) · chrome: pass (57) · tokens: pass (58)
 * ============================================================
 * AfriTerminal · Landing Page Tokens · v2.0.0 · 2026-06-02
 * ============================================================ */

:root,
:root[data-theme="light"] {

  /* ── Colour · OKLCH · anchor hue 155 (phosphor green) ── */
  --color-paper:        oklch(98% 0.005 155);
  --color-paper-2:      oklch(95% 0.008 155);
  --color-paper-3:      oklch(91% 0.008 155);
  --color-rule:         oklch(85% 0.008 155);
  --color-rule-subtle:  oklch(90% 0.005 155);
  --color-ink:          oklch(15% 0.010 155);
  --color-ink-2:        oklch(38% 0.010 155);
  --color-muted:        oklch(48% 0.008 155);
  --color-disabled:     oklch(62% 0.005 155);

  /* ── Accent · phosphor green ── */
  --color-accent:       oklch(48% 0.18 155);
  --color-accent-ink:   oklch(98% 0.005 155);
  --color-accent-dim:   oklch(48% 0.18 155 / 0.08);
  --color-accent-wash:  oklch(48% 0.18 155 / 0.04);
  --color-focus:        oklch(52% 0.22 155);

  /* ── Negative / status ── */
  --color-red:          oklch(55% 0.20 25);
  --color-red-dim:      oklch(55% 0.20 25 / 0.10);
  --color-up:           oklch(55% 0.20 155);
  --color-down:         oklch(55% 0.20 25);
  --color-stale:        oklch(68% 0.16 75);

  /* ── Terminal surfaces (hero, data cards) ── */
  --color-terminal:     oklch(13% 0.010 155);
  --color-terminal-2:   oklch(17% 0.012 155);
  --color-terminal-3:   oklch(22% 0.012 155);
  --color-terminal-ink: oklch(92% 0.006 155);
  --color-terminal-dim: oklch(58% 0.008 155);
  --color-terminal-rule:oklch(26% 0.008 155);

  /* ── Shadows ── */
  --color-shadow-1:     oklch(0% 0 0 / 0.06);
  --color-shadow-2:     oklch(0% 0 0 / 0.14);

  /* ── Typography · 2+1 · Space Grotesk (display) + Plex Sans (body) + JetBrains (outlier) ── */
  --font-display:       "Space Grotesk", system-ui, sans-serif;
  --font-body:          "IBM Plex Sans", system-ui, sans-serif;
  --font-mono:          "JetBrains Mono", ui-monospace, monospace;

  /* ── Type scale · major third (1.25) from 16px ── */
  --text-2xs:           0.6875rem;  /* 11px */
  --text-xs:            0.8125rem;  /* 13px */
  --text-sm:            0.9375rem;  /* 15px */
  --text-base:          1rem;       /* 16px */
  --text-md:            1.125rem;   /* 18px */
  --text-lg:            1.25rem;    /* 20px */
  --text-xl:            1.5rem;     /* 24px */
  --text-2xl:           1.875rem;   /* 30px */
  --text-3xl:           2.25rem;    /* 36px */
  --text-4xl:           3rem;       /* 48px */
  --text-display:       clamp(2.5rem, 4vw + 1rem, 4rem);
  --text-display-s:     clamp(1.75rem, 3vw + 0.5rem, 2.5rem);
  --text-eyebrow:       0.75rem;    /* 12px */

  /* ── Spacing · 4pt base ── */
  --space-3xs:          0.125rem;   /*  2px */
  --space-2xs:          0.25rem;    /*  4px */
  --space-xs:           0.5rem;     /*  8px */
  --space-sm:           0.75rem;    /* 12px */
  --space-md:           1rem;       /* 16px */
  --space-lg:           1.5rem;     /* 24px */
  --space-xl:           2.5rem;     /* 40px */
  --space-2xl:          4rem;       /* 64px */
  --space-3xl:          6rem;       /* 96px */
  --space-4xl:          9rem;       /* 144px */

  /* ── Page rhythm ── */
  --page-gutter:        clamp(1.25rem, 4vw, 3rem);
  --page-max:           1200px;
  --page-measure:       65ch;

  /* ── Radius ── */
  --radius-sm:          4px;
  --radius-md:          8px;
  --radius-lg:          12px;
  --radius-pill:        999px;

  /* ── Rules ── */
  --rule-hair:          1px;
  --rule-body:          2px;

  /* ── Motion ── */
  --ease-out:           cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in:            cubic-bezier(0.7, 0, 0.84, 0);
  --ease-in-out:        cubic-bezier(0.65, 0, 0.35, 1);
  --dur-micro:          120ms;
  --dur-short:          220ms;
  --dur-long:           420ms;

  /* ── Z-index ── */
  --z-base:             1;
  --z-raised:           10;
  --z-dropdown:         100;
  --z-sticky:           200;
  --z-sticky-nav:       300;
  --z-modal:            400;
  --z-toast:            500;
  --z-tooltip:          600;
}

/* ── DARK MODE ─────────────────────────────────────── */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --color-paper:        oklch(12% 0.008 155);
    --color-paper-2:      oklch(16% 0.010 155);
    --color-paper-3:      oklch(22% 0.010 155);
    --color-rule:         oklch(26% 0.006 155);
    --color-rule-subtle:  oklch(20% 0.005 155);
    --color-ink:          oklch(94% 0.005 155);
    --color-ink-2:        oklch(70% 0.006 155);
    --color-muted:        oklch(58% 0.006 155);
    --color-disabled:     oklch(42% 0.004 155);

    --color-accent:       oklch(75% 0.20 155);
    --color-accent-ink:   oklch(12% 0.008 155);
    --color-accent-dim:   oklch(75% 0.20 155 / 0.10);
    --color-accent-wash:  oklch(75% 0.20 155 / 0.05);
    --color-focus:        oklch(78% 0.22 155);

    --color-up:           oklch(75% 0.22 155);
    --color-down:         oklch(65% 0.22 25);
    --color-red:          oklch(65% 0.22 25);
    --color-red-dim:      oklch(65% 0.22 25 / 0.10);
    --color-stale:        oklch(72% 0.18 75);

    --color-terminal:     oklch(10% 0.008 155);
    --color-terminal-2:   oklch(14% 0.010 155);
    --color-terminal-3:   oklch(20% 0.010 155);

    --color-shadow-1:     oklch(0% 0 0 / 0.25);
    --color-shadow-2:     oklch(0% 0 0 / 0.40);
  }
}

:root[data-theme="dark"] {
  --color-paper:        oklch(12% 0.008 155);
  --color-paper-2:      oklch(16% 0.010 155);
  --color-paper-3:      oklch(22% 0.010 155);
  --color-rule:         oklch(26% 0.006 155);
  --color-rule-subtle:  oklch(20% 0.005 155);
  --color-ink:          oklch(94% 0.005 155);
  --color-ink-2:        oklch(70% 0.006 155);
  --color-muted:        oklch(58% 0.006 155);
  --color-disabled:     oklch(42% 0.004 155);

  --color-accent:       oklch(75% 0.20 155);
  --color-accent-ink:   oklch(12% 0.008 155);
  --color-accent-dim:   oklch(75% 0.20 155 / 0.10);
  --color-accent-wash:  oklch(75% 0.20 155 / 0.05);
  --color-focus:        oklch(78% 0.22 155);

  --color-up:           oklch(75% 0.22 155);
  --color-down:         oklch(65% 0.22 25);
  --color-red:          oklch(65% 0.22 25);
  --color-red-dim:      oklch(65% 0.22 25 / 0.10);
  --color-stale:        oklch(72% 0.18 75);

  --color-terminal:     oklch(10% 0.008 155);
  --color-terminal-2:   oklch(14% 0.010 155);
  --color-terminal-3:   oklch(20% 0.010 155);

  --color-shadow-1:     oklch(0% 0 0 / 0.25);
  --color-shadow-2:     oklch(0% 0 0 / 0.40);
}
