/* ==========================================================================
   HUNGRY JAZZ — TOKENS
   Source de vérité : /CLAUDE.md · Arbitrages : /docs/DECISIONS.md
   Aucun hex en dur dans les composants : tout passe par ces variables.
   ========================================================================== */

:root {

  /* ---- PALETTE BRUTE (brief §3.2) — ne jamais utiliser directement ------- */
  --p-black:        #000000;
  --p-white:        #FFFFFF;

  --p-blue:         #4080C0;   /* primaire */
  --p-orange:       #EA5326;   /* primaire */
  --p-pink-light:   #F1BFCB;   /* primaire */

  --p-lavender:     #A090C1;   /* secondaire */
  --p-pink:         #EFA9CB;   /* secondaire */
  --p-yellow:       #ECECB0;   /* secondaire */
  --p-violet-blue:  #656EB3;   /* secondaire */
  --p-green:        #4DBB94;   /* secondaire */
  --p-blue-light:   #BADFF1;   /* secondaire */

  /* ---- RÔLES SÉMANTIQUES ------------------------------------------------ */
  --c-ink:          var(--p-black);    /* texte et aplats structurants */
  --c-paper:        var(--p-white);    /* fond dominant */

  /* Identité des univers de cours (brief §3.2) */
  --c-solo-jazz:      var(--p-blue);
  --c-afro:           var(--p-orange);
  --c-stardust:       var(--p-pink-light);
  --c-stardust-alt:   var(--p-lavender);

  /* D-09 : contraste mesuré — le noir passe sur TOUS les aplats de la palette,
     seule exception #656EB3 qui demande du blanc. */
  --c-on-color:     var(--p-black);

  /* Filets et séparateurs */
  --c-rule:            var(--p-black);
  --c-rule-invert:     var(--p-white);
  --c-rule-soft:       rgba(0, 0, 0, .18);
  --c-rule-soft-inv:   rgba(255, 255, 255, .22);

  /* Surfaces sombres (planning, hero) */
  --c-ink-surface:  var(--p-black);
  --c-on-ink:       var(--p-white);
  --c-on-ink-muted: rgba(255, 255, 255, .62);
  --c-on-paper-muted: rgba(0, 0, 0, .58);

  /* ---- TYPOGRAPHIE (brief §3.3) ----------------------------------------- */
  --f-display: "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --f-cond:    "Barlow Semi Condensed", "Archivo", "Arial Narrow", Arial, sans-serif;

  --fw-regular: 400;
  --fw-medium:  500;
  --fw-bold:    700;
  --fw-black:   900;

  /* Échelle fluide — bornes basses = mobile 375px, hautes = brief §3.3 */
  --fs-hero:   clamp(2.75rem,  10.5vw, 8.75rem);  /*  44 →  140 px */
  --fs-h1:     clamp(2.25rem,   6.2vw, 6rem);     /*  36 →   96 px */
  --fs-h2:     clamp(1.875rem,  4.6vw, 4.5rem);   /*  30 →   72 px */
  --fs-h3:     clamp(1.375rem,  2.3vw, 2.5rem);   /*  22 →   40 px */
  --fs-body:   clamp(1.0625rem, 0.9vw, 1.25rem);  /*  17 →   20 px */
  --fs-lead:   clamp(1.25rem,   1.7vw, 1.75rem);  /*  20 →   28 px */
  --fs-label:  clamp(0.875rem,  0.8vw, 1.125rem); /*  14 →   18 px */
  --fs-micro:  0.75rem;                           /*  12 px, labels condensés */

  --lh-display: 0.88;
  --lh-tight:   1.04;
  --lh-title:   1.1;
  --lh-body:    1.6;
  --lh-label:   1.25;

  --ls-display: -0.02em;
  --ls-label:    0.14em;   /* interlettrage des micro-labels condensés */
  --ls-nav:      0.06em;

  /* ---- ESPACEMENT — échelle généreuse (brief §3.4) ---------------------- */
  --sp-4xs: 0.25rem;   /*  4 */
  --sp-3xs: 0.5rem;    /*  8 */
  --sp-2xs: 0.75rem;   /* 12 */
  --sp-xs:  1rem;      /* 16 */
  --sp-s:   1.5rem;    /* 24 */
  --sp-m:   2.5rem;    /* 40 */
  --sp-l:   4rem;      /* 64 */
  --sp-xl:  6rem;      /* 96 */

  /* Respiration entre chapitres éditoriaux : 80 → 180px (brief : 120–180 desktop) */
  --sp-chapter: clamp(5rem, 9.5vw, 11.25rem);

  /* ---- GRILLE ET CONTENEURS (brief §3.4) -------------------------------- */
  --container:      1320px;
  --container-text: 62ch;                        /* longueur de ligne lisible */
  --gutter:         clamp(1.25rem, 3.6vw, 4rem);
  --grid-cols:      12;
  --grid-gap:       clamp(1rem, 1.8vw, 2rem);

  /* ---- HEADER ET LOGO --------------------------------------------------- */
  --header-h:        clamp(4.5rem, 8.6vw, 8rem);    /*  72 → 128 px */
  --header-h-compact: clamp(4.25rem, 6.6vw, 6.5rem); /*  68 → 104 px */
  --logo-h:          clamp(3rem, 6.5vw, 6.25rem);   /*  48 → 100 px */
  --logo-h-compact:  clamp(2.75rem, 4.9vw, 4.75rem); /*  44 →  76 px */
  /* Le lockup est diagonal : son centre de masse n'est pas son centre de boîte.
     Correction optique réglée à l'œil, une seule fois. */
  --logo-optical-x:  -0.5%;

  /* ---- FORMES (brief §3.5) ---------------------------------------------- */
  --radius:    0;          /* angles vifs partout, sans exception */
  --bd-hair:   1px;
  --bd-rule:   2px;
  --bd-block:  4px;

  /* ---- MOUVEMENT (brief §3.7) ------------------------------------------- */
  --t-fast:   140ms;
  --t-base:   240ms;
  --t-slow:   420ms;
  --t-reveal: 760ms;   /* révélation par masque : 400–700 ms recommandé, étiré
                          un peu car les blocs typographiques sont très grands */

  --ease:       cubic-bezier(.22, .61, .36, 1);
  --ease-out:   cubic-bezier(.16, 1, .3, 1);
  /* équivalents CSS des courbes expo.out / power2.out */
  --ease-expo:  cubic-bezier(.16, 1, .3, 1);
  --ease-power: cubic-bezier(.22, 1, .36, 1);

  --stagger:       90ms;   /* décalage entre les lignes d’un titre */
  --stagger-list:  70ms;   /* décalage entre items d’une liste (max ~8) */

  /* ---- Z-INDEX (brief §31) ---------------------------------------------- */
  --z-base:    0;
  --z-raised:  10;
  --z-overlay: 50;
  --z-header:  100;
  --z-drawer:  200;
  --z-skip:    300;

  /* ---- CIBLES TACTILES -------------------------------------------------- */
  --tap-min: 44px;
}

/* Univers : la couleur d'accent est passée en variable locale par les blocs,
   ce qui évite de dupliquer les règles par discipline. */
[data-universe="solo-jazz"] { --c-accent: var(--c-solo-jazz); }
[data-universe="afro"]      { --c-accent: var(--c-afro); }
[data-universe="stardust"]  { --c-accent: var(--c-stardust); }
