/* tokens.css — SOURCE UNIQUE DE VÉRITÉ des tokens (contrat + vocab legacy réconcilié).
   Chargé EN PREMIER (avant matiere.css et app.css). Défaut = JOUR ; html.night = nuit.
   Le CONTRAT (ETAT.md) est ici, à l'identique. Les tokens legacy consommés par app.css/legacy.js
   sont redéfinis ici pour que le fichier reste la seule autorité. */

:root{
  /* ===== TYPO — 7 pas fixes en rem. font-size en em INTERDIT. Plancher 11px. ===== */
  --fs-1: 0.6875rem;  /* 11px — micro-labels, mono, chips (plancher absolu) */
  --fs-2: 0.8125rem;  /* 13px — méta, légendes, stats secondaires */
  --fs-3: 0.9375rem;  /* 15px — corps par défaut, lignes de données */
  --fs-4: 1.125rem;   /* 18px — titre de carte, intertitre */
  --fs-5: 1.5rem;     /* 24px — titre de bloc */
  --fs-6: 2rem;       /* 32px — chiffre-clé KPI */
  --fs-7: 2.75rem;    /* 44px — H1 de vue */
  --lh-tight: 1.1;    --lh-snug: 1.3;    --lh: 1.5;    --lh-mono: 1.4;
  /* alias legacy → mappés sur l'échelle fixe (fin des clamp/vw qui gonflaient le compte) */
  --fs-display: var(--fs-7);  --fs-h2: var(--fs-6);  --fs-lead: var(--fs-4);  --fs-meta: var(--fs-1);

  /* ===== ESPACE & FORME — grille 4px, 4 rayons ===== */
  --s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 24px; --s-6: 32px; --s-7: 48px; --s-8: 64px;
  --r-sm: 8px; --r: 16px; --r-lg: 24px; --r-pill: 999px;

  /* ===== MOTION — 4 durées, 2 courbes ===== */
  --t-fast: 120ms; --t: 200ms; --t-slow: 320ms; --t-view: 450ms;
  --e-out: cubic-bezier(.22, 1, .36, 1);   /* la seule courbe par défaut */
  --e-in:  cubic-bezier(.4, 0, 1, 1);      /* sorties uniquement */
  /* alias legacy → mappés sur les 4 durées / la courbe unique */
  --t-mid: var(--t); --e-inout: var(--e-out); --e-exit: var(--e-in); --e-spring: var(--e-out);

  /* ===== COULEUR — JOUR (défaut DA) ===== */
  --paper:   oklch(0.933 0.003 106.5);
  --paper-2: oklch(0.912 0.004 106.5);
  --panel:   oklch(0.945 0.004 106.5);
  --bg:      var(--paper);
  --surface-solid: oklch(0.980 0.002 106);      /* PAPIER opaque */
  --ink:    oklch(0.200 0.002 106.6);
  --ink-2:  oklch(0.330 0.007 106.8);
  --grey:   oklch(0.380 0.008 106.7);            /* assombri (0.484→0.380) pour AA 4.5:1 sur panel clair */
  --grey-2: oklch(0.380 0.010 106.8);
  --line:   oklch(0.200 0.002 106.6 / .14);
  --line-2: oklch(0.200 0.002 106.6 / .26);

  /* oxblood BI-MODE (H28 C.110 fixes ; seule la L bouge — une rampe, pas une dérive) */
  --oxblood:       oklch(0.409 0.110 28);        /* 7,78:1 sur paper ✅ */
  --oxblood-hover: oklch(0.470 0.119 28);
  --oxblood-soft:  oklch(0.409 0.110 28 / .07);
  --oxblood-ink:   oklch(0.409 0.110 28);        /* emphase inline (jour = oxblood ; nuit relevé pour AA sur fond sombre) */

  /* accents niche — FILL (seuil 3:1, non textuel : hex DA conservés en OKLCH) */
  --btp:oklch(0.553 0.164 258.8); --gastro:oklch(0.651 0.167 42.8); --vin:oklch(0.543 0.174 29.7);
  --immo:oklch(0.623 0.123 165.4); --immoprestige:oklch(0.583 0.214 287.6); --hotellerie:oklch(0.628 0.104 206.6);
  --ecommerce:oklch(0.658 0.166 131.4); --auto:oklch(0.447 0.034 261.3); --beaute:oklch(0.616 0.174 357.2);
  --gc:oklch(0.729 0.145 70.2); --pine:oklch(0.485 0.07 155.6); --ochre:oklch(0.566 0.106 72.6);
  /* niche CHIP-TEXT — JOUR : L.40 en dur (fin de oklch(from …) : support récent, échec silencieux) */
  --btp-chip:oklch(0.40 0.164 258.8); --gastro-chip:oklch(0.40 0.167 42.8); --vin-chip:oklch(0.40 0.174 29.7);
  --immo-chip:oklch(0.40 0.123 165.4); --immoprestige-chip:oklch(0.40 0.214 287.6); --hotellerie-chip:oklch(0.40 0.104 206.6);
  --ecommerce-chip:oklch(0.40 0.166 131.4); --auto-chip:oklch(0.40 0.034 261.3); --beaute-chip:oklch(0.40 0.174 357.2);
  --gc-chip:oklch(0.40 0.145 70.2); --pine-chip:oklch(0.40 0.07 155.6); --ochre-chip:oklch(0.40 0.106 72.6);

  /* ===== MATIÈRE — tokens de verre/chrome (consommés par matiere.css) ===== */
  --glass-fill:  oklch(0.965 0.002 106);
  --glass-fill-deep: oklch(0.945 0.004 106.5);
  --glass-line:  oklch(0.200 0 0 / .10);
  --glass-blur:  blur(14px) saturate(1.08);
  --glass-spec-1: oklch(1 0 0 / .55);
  --glass-spec-2: oklch(1 0 0 / .12);
  --chrome-hi:  oklch(1 0 0 / .90);              /* arête lumineuse haut-gauche */
  --chrome-lo:  oklch(0.20 0 0 / .14);           /* arête d'ombre bas-droite */
  --chrome-tint: oklch(0.409 0.110 28 / .18);    /* le chrome prend l'oxblood */
  --sh-contact: oklch(0 0 0 / .12);
  --sh-diffuse: oklch(0 0 0 / .28);
  --noise-64: none;                              /* grain PNG 64×64 — posé en Phase 4 (régime CHROME) */
  /* legacy glass (app.css) — conservés, alignés sur la même lumière */
  --glass-mat: linear-gradient(180deg, oklch(1 0 0/.5), oklch(1 0 0/.05) 44%, oklch(1 0 0/0));
  --glass-sh:    var(--sh);
  --glass-sh-hi: 0 2px 5px oklch(0 0 0/.05), 0 16px 32px -8px oklch(0 0 0/.15), 0 34px 70px -22px oklch(0 0 0/.22);
  --glass-hi:   inset 0 1px 0 oklch(1 0 0 / .6);
  --sh: 0 1px 2px oklch(0.20 0 0/.05), 0 8px 24px -8px oklch(0.20 0 0/.10);
  --sh-1: 0 2px 8px oklch(0.20 0 0/.05);
  --sh-2: 0 10px 28px oklch(0.20 0 0/.09);
  --sh-3: 0 20px 48px oklch(0.20 0 0/.13);

  /* ===== fontes & layout ===== */
  --sans: "Archivo", -apple-system, system-ui, sans-serif;
  --mono: "Space Mono", ui-monospace, monospace;
  --sidew: 264px;
}

html.night{
  /* ===== COULEUR — NUIT ===== */
  --paper:   oklch(0.200 0.004 106);
  --paper-2: oklch(0.235 0.006 106);
  --panel:   oklch(0.185 0.004 106);
  --bg:      oklch(0.145 0 0);                   /* retour DA : fond profond → le verre a de la matière */
  --surface-solid: oklch(0.200 0.004 106);
  --ink:    oklch(0.940 0.003 106);
  --ink-2:  oklch(0.780 0.006 106);
  --grey:   oklch(0.700 0.008 106);              /* ≥ AA 4.5:1 sur bg nuit 0.145 */
  --grey-2: oklch(0.700 0.010 106);
  --line:   oklch(0.930 0.004 106 / .12);
  --line-2: oklch(0.930 0.004 106 / .24);

  --oxblood:       oklch(0.620 0.110 28);        /* 5,17:1 sur bg nuit ✅ (plus un saumon franc) */
  --oxblood-hover: oklch(0.680 0.119 28);
  --oxblood-soft:  oklch(0.620 0.110 28 / .12);
  --oxblood-ink:   oklch(0.720 0.105 28);        /* emphase inline relevée : texte fin/petit rendu ~4.5 à L.62 → L.72 clôt AA sans virer saumon */

  /* niche CHIP-TEXT — NUIT : alias clair (le fill est déjà assez lumineux) */
  --btp-chip:var(--btp); --gastro-chip:var(--gastro); --vin-chip:oklch(0.605 0.174 29.7);
  --immo-chip:var(--immo); --immoprestige-chip:oklch(0.605 0.214 287.6); --hotellerie-chip:var(--hotellerie);
  --ecommerce-chip:var(--ecommerce); --auto-chip:oklch(0.585 0.034 261.3); --beaute-chip:var(--beaute);
  --gc-chip:var(--gc); --pine-chip:oklch(0.605 0.07 155.6); --ochre-chip:var(--ochre);
  /* niche FILL — corrections AA nuit (btp/immoprestige/vin/auto échouaient) */
  --btp:oklch(0.585 0.164 258.8); --immoprestige:oklch(0.605 0.214 287.6);
  --vin:oklch(0.605 0.174 29.7); --auto:oklch(0.585 0.034 261.3);

  /* ===== MATIÈRE — NUIT ===== */
  --glass-fill:  oklch(0.180 0.004 106);
  --glass-fill-deep: oklch(0.163 0.002 106.6);
  --glass-line:  oklch(0.930 0.004 106 / .10);
  --glass-blur:  blur(14px) saturate(1.06);
  --glass-spec-1: oklch(1 0 0 / .10);
  --glass-spec-2: oklch(1 0 0 / .03);
  --chrome-hi:  oklch(1 0 0 / .28);
  --chrome-lo:  oklch(0 0 0 / .60);
  --chrome-tint: oklch(0.620 0.110 28 / .22);
  --sh-contact: oklch(0 0 0 / .40);
  --sh-diffuse: oklch(0 0 0 / .55);
  --glass-mat: linear-gradient(180deg, oklch(1 0 0/.07), oklch(1 0 0/.015) 55%, oklch(1 0 0/0));
  --glass-hi:   inset 0 1px 0 oklch(1 0 0 / .12);
  --sh: 0 1px 2px oklch(0 0 0/.40), 0 12px 32px -10px oklch(0 0 0/.55);
  --sh-1: 0 2px 8px oklch(0 0 0/.40);
  --sh-2: 0 10px 28px oklch(0 0 0/.50);
  --sh-3: 0 20px 48px oklch(0 0 0/.60);
}
