/* ==========================================================================
   ETS GANA OUSMANE SARL — TOKENS
   Design system variables. Change values here to re-skin the whole site.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. FONTS  (self-hosted, latin subset, French coverage)
   -------------------------------------------------------------------------- */

@font-face {
  font-family: 'Archivo';
  src: url('../fonts/archivo-latin.woff2') format('woff2');
  font-weight: 400 800;
  font-stretch: 100% 125%;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Inter';
  src: url('../fonts/inter-latin.woff2') format('woff2');
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'JetBrains Mono';
  src: url('../fonts/jetbrains-mono-latin.woff2') format('woff2');
  font-weight: 400 500;
  font-style: normal;
  font-display: swap;
}

:root {
  --ff-display: 'Archivo', 'Helvetica Neue', Arial, sans-serif;
  --ff-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --ff-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  /* ------------------------------------------------------------------------
     2. COLOUR — brand values sampled directly from the company logo
     ------------------------------------------------------------------------ */

  --ego-green-900: #04321a; /* deepest — immersive backgrounds            */
  --ego-green-800: #043d1f; /* deep forest — existing brand dark           */
  --ego-green-700: #086634; /* logo green — primary                        */
  --ego-green-600: #0b7c40;
  --ego-green-500: #10974f;
  --ego-lime: #93c124;      /* logo lime — accent                          */
  --ego-lime-bright: #a9dc2c;
  --ego-lime-dim: #7ba31c;

  --laterite: #b4532a;      /* sampled from the red soil in site photography */
  --laterite-bright: #cf6633;

  /* Warm neutral ramp — tinted to sit with the greens, never pure grey */
  --n-0: #ffffff;
  --n-50: #f7f6f2;
  --n-100: #efede7;
  --n-200: #e0ddd4;
  --n-300: #c7c3b7;
  --n-400: #9c988b;
  --n-500: #726e63;
  --n-600: #54514a;
  --n-700: #3a3833;
  --n-800: #22211e;
  --n-900: #111110;
  --noir: #0a0f0c;

  --white-a06: rgba(255, 255, 255, 0.06);
  --white-a12: rgba(255, 255, 255, 0.12);
  --white-a20: rgba(255, 255, 255, 0.2);
  --white-a60: rgba(255, 255, 255, 0.6);
  --white-a75: rgba(255, 255, 255, 0.75);

  /* --- Semantic (light surfaces, the site default) --- */
  --bg: var(--n-50);
  --bg-alt: var(--n-100);
  --surface: var(--n-0);
  --text: var(--n-900);
  --text-soft: var(--n-600);
  --text-muted: var(--n-500);
  --border: var(--n-200);
  --border-strong: var(--n-300);
  --accent: var(--ego-green-700);
  --accent-ink: var(--n-0);

  /* ------------------------------------------------------------------------
     3. TYPE SCALE — fluid, clamp-based, no breakpoint jumps
     ------------------------------------------------------------------------ */

  --fs-3xs: 0.6875rem;
  --fs-2xs: 0.75rem;
  --fs-xs: 0.8125rem;
  --fs-sm: 0.9375rem;
  --fs-base: clamp(1rem, 0.97rem + 0.14vw, 1.0625rem);
  --fs-lg: clamp(1.0625rem, 1rem + 0.3vw, 1.25rem);
  --fs-xl: clamp(1.25rem, 1.12rem + 0.6vw, 1.625rem);
  --fs-2xl: clamp(1.5rem, 1.28rem + 1.1vw, 2.375rem);
  --fs-3xl: clamp(1.75rem, 1.42rem + 1.65vw, 3.25rem);
  --fs-4xl: clamp(2rem, 1.55rem + 2.25vw, 4rem);
  --fs-5xl: clamp(2.125rem, 1.5rem + 3.15vw, 5.25rem);

  --lh-tight: 0.98;
  --lh-snug: 1.12;
  --lh-heading: 1.18;
  --lh-body: 1.65;
  --lh-loose: 1.75;

  --ls-tight: -0.03em;
  --ls-snug: -0.015em;
  --ls-wide: 0.06em;
  --ls-label: 0.14em;

  /* ------------------------------------------------------------------------
     4. SPACE & LAYOUT
     ------------------------------------------------------------------------ */

  --sp-1: 0.25rem;
  --sp-2: 0.5rem;
  --sp-3: 0.75rem;
  --sp-4: 1rem;
  --sp-5: 1.5rem;
  --sp-6: 2rem;
  --sp-7: 2.5rem;
  --sp-8: 3rem;
  --sp-9: 4rem;
  --sp-10: 5rem;
  --sp-11: 6.5rem;
  --sp-12: 8rem;

  --gutter: clamp(1.25rem, 0.85rem + 2vw, 3rem);
  --section-y: clamp(4.5rem, 3.1rem + 6.4vw, 9rem);
  --maxw: 1440px;
  --maxw-narrow: 980px;
  --maxw-text: 66ch;

  --header-h: 76px;

  /* ------------------------------------------------------------------------
     5. ISOMETRIC SYSTEM — every angle on this site derives from the logo cube
     ------------------------------------------------------------------------ */

  --iso-angle: 30deg;
  --iso-skew: -30deg;
  --iso-tan: 0.5774; /* tan(30°) — used to compute clip-path offsets */
  --iso-cut: 4.2vw;  /* horizontal run of a 30° diagonal section edge */

  /* ------------------------------------------------------------------------
     6. MOTION
     ------------------------------------------------------------------------ */

  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --ease-spring: cubic-bezier(0.34, 1.4, 0.64, 1);

  --dur-1: 180ms;
  --dur-2: 380ms;
  --dur-3: 650ms;
  --dur-4: 1000ms;

  /* ------------------------------------------------------------------------
     7. BORDERS, SHADOW, DEPTH
     Sharp corners throughout — the identity is engineered, not soft.
     ------------------------------------------------------------------------ */

  --radius: 0px;
  --radius-sm: 2px;
  --hairline: 1px solid var(--border);

  --shadow-sm: 0 1px 2px rgba(17, 17, 16, 0.06), 0 2px 8px rgba(17, 17, 16, 0.04);
  --shadow-md: 0 4px 12px rgba(17, 17, 16, 0.07), 0 12px 32px rgba(17, 17, 16, 0.07);
  --shadow-lg: 0 12px 28px rgba(17, 17, 16, 0.1), 0 32px 72px rgba(17, 17, 16, 0.12);

  --z-flow: 1;
  --z-sticky: 20;
  --z-header: 60;
  --z-drawer: 70;
  --z-lightbox: 90;
  --z-consent: 95;
}

/* --------------------------------------------------------------------------
   8. DARK CONTEXT
   Opt-in via .u-dark on any section. Not a colour-scheme toggle — these are
   the deliberately immersive bands of the page.
   -------------------------------------------------------------------------- */

.u-dark {
  --bg: var(--noir);
  --bg-alt: var(--ego-green-900);
  --surface: #131a15;
  --text: var(--n-50);
  --text-soft: rgba(247, 246, 242, 0.72);
  --text-muted: rgba(247, 246, 242, 0.55);
  --border: rgba(255, 255, 255, 0.12);
  --border-strong: rgba(255, 255, 255, 0.24);
  --accent: var(--ego-lime);
  --accent-ink: var(--noir);

  background-color: var(--bg);
  color: var(--text);
}

.u-green {
  --bg: var(--ego-green-800);
  --bg-alt: var(--ego-green-900);
  --surface: var(--ego-green-700);
  --text: var(--n-50);
  --text-soft: rgba(247, 246, 242, 0.76);
  --text-muted: rgba(247, 246, 242, 0.58);
  --border: rgba(255, 255, 255, 0.14);
  --border-strong: rgba(255, 255, 255, 0.26);
  --accent: var(--ego-lime);
  --accent-ink: var(--ego-green-900);

  background-color: var(--bg);
  color: var(--text);
}

/* --------------------------------------------------------------------------
   9. REDUCED MOTION
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  :root {
    --dur-1: 1ms;
    --dur-2: 1ms;
    --dur-3: 1ms;
    --dur-4: 1ms;
  }
}
