/**
 * EduSaas — Design Tokens (réécriture 8.A.2, 27/07/2026)
 * Source visuelle : docs/etudes/front-ui-ux/edusaas-ui.html, ASSAINIE (voir contrat).
 * Futur : extrait tel quel dans @mm-universe/design-system (8.E) — consommable
 * hors app (custom properties autonomes), y compris par le moteur de slides.
 *
 * ══════════════════ CONTRAT DE NOMMAGE ══════════════════
 * 1. DEUX niveaux seulement :
 *    — INVARIANTS : échelles indépendantes de la marque et du thème
 *      (typo, espacement, radius, motion, z-index, layout).
 *    — SÉMANTIQUES : nommés par RÔLE, jamais par apparence, définis pour
 *      chaque matrice marque × thème. Un composant ne consomme QUE des rôles.
 *    Les PRIMITIVES (palette brute) n'existent pas en custom properties :
 *    une « primitive » redéfinie par thème est un mensonge (la maquette
 *    redéfinissait --navy-950 en gris clair et recyclait --teal-500 en
 *    violet — dérives corrigées ici). La palette vit en commentaire.
 * 2. Préfixes de rôle : --surface-* (fonds) · --text-* (texte) ·
 *    --border-* (bordures) · --accent-* (identité) · --status-* (états) ·
 *    --wash-* (fonds lavés d'accent) · --gradient-* · --glow-* ·
 *    --shadow-* · --focus-ring / --ring-* (a11y & validation).
 * 3. Échelle de surfaces = élévation croissante :
 *    deep < base (fond app) < 1 < 2 (cartes) < 3 (hover) < raised.
 *    + glass (panneaux translucides) + scrim (voile modal).
 * 4. Variantes d'accent : -soft (plus clair : hover lumineux, décor — et
 *    LIENS TEXTE sur fond sombre, où -primary n'atteint pas AA) ·
 *    -strong (plus profond : pressed, texte accent sur fond clair).
 *    Règle AA vérifiée (scripts de calibration 8.A.2) : un fond
 *    --accent-primary porte --text-on-accent ; un fond --accent-secondary
 *    porte --text-on-accent-secondary (le teal edusaas ne porte JAMAIS de
 *    blanc : 2.2:1). Texte de statut sur surface ⇒ AA 4.5 garanti par
 *    matrice.
 * 5. Matrices : marque `edusaas` (défaut :root) | `meilleurmanager`
 *    (portée pour l'extraction 8.E — l'app pose data-brand="edusaas" FIXE,
 *    theme-boot.js) × thème `dark` (défaut produit) | `light`.
 *    Sélecteurs ordonnés : ne pas réordonner (la cascade départage
 *    meilleurmanager+light).
 * 6. Le bloc COMPAT LEGACY (fin de fichier) aliasse les anciens noms —
 *    interdit dans tout code écrit à partir de 8.A.2 ; purgé en 8.Z.
 *
 * Palette de référence (documentation, PAS des tokens) :
 *   edusaas dark  : navy #0c1220→#2e3a58 · violet #7c5cfc/#9d7cff ·
 *                   teal #17c3b2 · cyan #15b6d6 · green #3fce7e ·
 *                   rose #f0577a · amber #f5b445
 *   edusaas light : mêmes teintes, assombries pour le contraste AA
 *   meilleurmanager : pourpre #a249b8 (dark) / #5b1c6b (light) ·
 *                   indigo #6f4bff / #332571 · fonds chauds #191917
 */

/* ═══════════════ INVARIANTS (toutes marques, tous thèmes) ═══════════════ */
:root {
  /* ── Typographie — familles (8.A.1, vendorées /fonts/) ── */
  --font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-family-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --font-family-mono: 'Share Tech Mono', ui-monospace, 'Cascadia Mono', Menlo, monospace;

  /* ── Typographie — échelle (héritée, consommée par 26 000+ usages) ── */
  --font-size-2xs: 0.75rem; /* kickers, légendes techniques */
  --font-size-xs: 0.875rem;
  --font-size-sm: 1rem;
  --font-size-md: 1.125rem;
  --font-size-lg: 1.375rem;
  --font-size-xl: 1.75rem;
  --font-size-2xl: 2.5rem;
  --font-size-3xl: 3rem;
  --font-size-4xl: 3.25rem;
  --font-size-5xl: 3.75rem;
  --font-size-6xl: 4.5rem;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-extrabold: 800; /* Manrope monte à 800 */
  --line-height: 1.6;
  --line-height-snug: 1.3;
  --line-height-tight: 1.15; /* display (Fraunces) */
  --letter-spacing-tight: -0.01em; /* grands titres display */
  --letter-spacing-wide: 0.06em; /* kickers mono en capitales */

  /* ── Espacement (échelle héritée) ── */
  --space-2xs: 0.125rem;
  --space-xs: 0.25rem;
  --space-sm: 0.5rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2rem;
  --space-2xl: 3rem;
  --space-3xl: 4rem;

  /* ── Rayons (échelle canonique 8.A.2) ── */
  --radius-xs: 4px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 20px;
  --radius-2xl: 28px;
  --radius-pill: 999px;
  --radius-circle: 50%;

  /* ── Bordures ── */
  --border-width: 1px;
  --border-width-thick: 2px;

  /* ── Mouvement ── */
  --duration-fast: 120ms;
  --duration-base: 200ms;
  --duration-slow: 320ms;
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);

  /* ── Plans (z-index) ── */
  --z-dropdown: 1000;
  --z-sticky: 1100;
  --z-overlay: 1200;
  --z-modal: 1300;
  --z-toast: 1400;

  /* ── Effets ── */
  --glass-blur: 14px;

  /* ── Layout (hérité) ── */
  --content-max-width: 480px;
  --nav-height: 96px;
  --site-topbar-height: 80px;
  /* `pub-*` : pages de CONTENU (marketing, article) — centrées, largeur de lecture.
     `app-*`  : monde CONNECTÉ en app shell (8.B.4) — aligné à GAUCHE sur la même
     gouttière que le logo, largeur plafonnée pour ne pas s'étirer sur 27". */
  --pub-width-lg: 1100px;
  --pub-width-md: 900px;
  --pub-width-sm: 700px;
  --app-width: 1400px;

  /* ── Domaine — gamification (rangs & raretés, invariants) ── */
  --color-gold: #ffd700;
  --color-silver: #c0c0c0;
  --color-bronze: #cd7f32;
  --color-gold-text: #b8860b;
  --color-silver-text: #6b6b6b;
  --color-bronze-text: #b5651d;
  --color-rare: #3498db;
  --color-epic: #9b59b6;
  --color-legendary: #f39c12;
}

/* ═══════════════ SÉMANTIQUES — edusaas · dark (DÉFAUT) ═══════════════ */
:root {
  color-scheme: dark;

  /* Surfaces (élévation croissante, contrat §3) */
  --surface-deep: #0c1220;
  --surface-base: #0f1629;
  --surface-1: #1a2338;
  --surface-2: #1f2942;
  --surface-3: #26314d;
  --surface-raised: #2e3a58;
  --surface-glass: rgba(31, 41, 66, 0.55);
  --surface-scrim: rgba(6, 10, 22, 0.65);

  /* Texte */
  --text-primary: #f3f6fc;
  --text-secondary: #a2abc2;
  --text-tertiary: #919cb3; /* AA 4.5 jusque sur surface-3 (02/08) — l'ancien #8b96ad
                               ne tenait que sur surface-2 : 4.34 au-dessus */
  --text-disabled: #5a657c;
  --text-inverse: #0c1220; /* texte posé sur une surface inversée */
  --text-accent: #9d7cff; /* texte/lien accent, AA sur surfaces (= -soft en dark) */
  --text-on-accent: #fff; /* texte sur accent-primary et gradients */
  --text-on-accent-secondary: #0c1220; /* le teal ne porte pas de blanc (AA) */

  /* ── Teintes DÉCORATIVES (recette 02/08) ──────────────────────────────
     Un statut sert deux métiers que le thème clair confondait : PORTER LE SENS
     (texte, contour, icône — contraste requis) et TEINTER (remplissage, lavis
     — chroma requise). En clair, `--status-*` est assombri pour rester lisible
     en texte ; diluer cette teinte sombre dans du blanc donne du GRIS (chroma
     mesurée 0,27 contre 0,52 avec une teinte vive). D'où ce second jeu, vif
     dans les DEUX thèmes et réservé aux fonds : il ne porte jamais le sens,
     donc n'a pas de contraste à tenir. */
  --tone-success: #3fce7e;
  --tone-info: #15b6d6;
  --tone-warning: #f5b445;
  --tone-danger: #f0577a;

  /* Bordures */
  --border-subtle: rgba(255, 255, 255, 0.06);
  --border-default: rgba(255, 255, 255, 0.1);
  --border-strong: #3a4768;
  --border-glass: rgba(255, 255, 255, 0.08);

  /* Accents (identité edusaas : violet + teal) */
  --accent-primary: #7857fb; /* maquette #7c5cfc : assombri — blanc dessus 4.61 (AA) */
  --accent-primary-soft: #9d7cff;
  --accent-primary-strong: #6b47f0;
  --accent-secondary: #17c3b2;
  --accent-secondary-soft: #3fd7c7;
  --wash-primary: rgba(124, 92, 252, 0.12);
  --wash-secondary: rgba(23, 195, 178, 0.1);

  /* Statuts */
  --status-success: #3fce7e;
  --status-info: #15b6d6;
  --status-warning: #f5b445;
  --status-danger: #f65d80; /* +6 : 4.37 → 4.67 sur surface-2 (02/08) */
  --wash-success: rgba(63, 206, 126, 0.12);
  --wash-info: rgba(21, 182, 214, 0.12);
  --wash-warning: rgba(245, 180, 69, 0.14);
  --wash-danger: rgba(240, 87, 122, 0.12);

  /* Gradients (identité, action, progression). Lecture : --gradient-cta est
     construit sur accent-secondary ⇒ texte --text-on-accent-secondary ;
     --gradient-accent sur accent-primary ⇒ texte --text-on-accent. */
  --gradient-brand: linear-gradient(135deg, #17c3b2, #7c5cfc);
  /* Thème CLAIR : teal/vert légèrement rabattus. Les teintes du thème sombre,
     posées sur une page claire, saturaient l'écran et affaiblissaient le texte
     secondaire porté par le gradient (recette hub, 30/07). */
  --gradient-cta: linear-gradient(135deg, #12ab9d, #35b96f);
  --gradient-accent: linear-gradient(135deg, #7c5cfc, #9d7cff);
  --gradient-progress: linear-gradient(135deg, #15b6d6, #17c3b2 45%, #3fce7e);

  /* Effets */
  --glow-accent-primary: 0 0 20px rgba(124, 92, 252, 0.35);
  --glow-accent-secondary: 0 0 20px rgba(23, 195, 178, 0.35);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.35);
  --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.45);
  --shadow-glass: inset 0 1px 0 rgba(255, 255, 255, 0.06), 0 8px 24px rgba(0, 0, 0, 0.4);

  /* Focus & anneaux de validation (a11y) */
  --focus-ring: 0 0 0 2px var(--surface-base), 0 0 0 4px #9d7cff;
  --ring-primary: 0 0 0 4px rgba(124, 92, 252, 0.22);
  --ring-secondary: 0 0 0 3px rgba(23, 195, 178, 0.18);
  --ring-danger: 0 0 0 3px rgba(240, 87, 122, 0.22);
}

/* ═══════════════ SÉMANTIQUES — edusaas · light ═══════════════ */
:root[data-theme='light'] {
  color-scheme: light;

  /* Surfaces — refonte du 02/08 (« le clair n'est pas assez contrasté »).
     Le fond de page était à un cheveu de la carte : l'élévation mesurait 1,13
     là où le sombre atteint 1,25. La page descend donc d'un cran (texte
     secondaire encore à 4,77, AA tenu) et la carte quitte le BLANC PUR — un
     champ à luminance maximale éblouit et délave tout ce qu'on y pose.
     Le blanc devient le signal de la couche FLOTTANTE (modale, popover,
     toast) : il signifie enfin quelque chose. */
  --surface-deep: #ccd7e8;
  --surface-base: #dae3f0;
  --surface-1: #eef2f9;
  --surface-2: #f7f9fd;
  --surface-3: #e8edf6;
  --surface-raised: #ffffff;
  --surface-glass: rgba(247, 249, 253, 0.72);
  --surface-scrim: rgba(16, 24, 40, 0.45);

  --text-primary: #101828;
  --text-secondary: #586179;
  --text-tertiary: #59647c; /* assombri avec la page (02/08) : AA 4.5 sur surface-base */
  --text-disabled: #9aa3b8;
  --text-inverse: #f5f8fc;
  --text-accent: #633fe8; /* assombri avec la page (02/08) : 4.76 sur surface-base */
  --text-on-accent: #fff;
  --text-on-accent-secondary: #0c1220;

  --border-subtle: rgba(16, 24, 40, 0.07);
  --border-default: rgba(16, 24, 40, 0.12);
  --border-strong: #c3ccdd;
  --border-glass: rgba(16, 24, 40, 0.08);

  --accent-primary: #6b47f0;
  --accent-primary-soft: #7c5cfc;
  --accent-primary-strong: #5a38d6;
  --accent-secondary: #0f8f84; /* maquette #12a79b : assombri — icônes/décor ≥ 3.0 */
  --accent-secondary-soft: #17c3b2;
  --wash-primary: rgba(124, 92, 252, 0.1);
  --wash-secondary: rgba(23, 195, 178, 0.1);

  /* Statuts (maquette assombrie : AA 4.5 en usage texte sur surface-base) */
  --status-success: #147a46;
  --status-info: #0b7692;
  --status-warning: #96621b;
  --status-danger: #c22c52;
  --wash-success: rgba(31, 157, 91, 0.1);
  --wash-info: rgba(14, 143, 176, 0.1);
  --wash-warning: rgba(176, 118, 33, 0.12);
  --wash-danger: rgba(214, 60, 96, 0.1);

  --gradient-brand: linear-gradient(135deg, #17c3b2, #7c5cfc);
  --gradient-cta: linear-gradient(135deg, #17c3b2, #3fce7e);
  --gradient-accent: linear-gradient(135deg, #7c5cfc, #9d7cff);
  --gradient-progress: linear-gradient(135deg, #15b6d6, #17c3b2 45%, #3fce7e);

  --glow-accent-primary: 0 0 18px rgba(124, 92, 252, 0.26);
  --glow-accent-secondary: 0 0 18px rgba(23, 195, 178, 0.28);
  --shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.06);
  --shadow-md: 0 4px 12px rgba(16, 24, 40, 0.1);
  --shadow-lg: 0 12px 32px rgba(16, 24, 40, 0.16);
  --shadow-glass: inset 0 1px 0 rgba(255, 255, 255, 0.6), 0 8px 24px rgba(16, 24, 40, 0.1);

  --focus-ring: 0 0 0 2px var(--surface-base), 0 0 0 4px #7c5cfc;
  --ring-primary: 0 0 0 4px rgba(124, 92, 252, 0.2);
  --ring-secondary: 0 0 0 3px rgba(23, 195, 178, 0.2);
  --ring-danger: 0 0 0 3px rgba(214, 60, 96, 0.22);
}

/* ═══ SÉMANTIQUES — meilleurmanager · dark (extraction 8.E — non activable
       dans l'app : data-brand est fixé à "edusaas" par theme-boot.js) ═══ */
:root[data-brand='meilleurmanager'] {
  color-scheme: dark;

  --surface-deep: #111110;
  --surface-base: #191917;
  --surface-1: #201f1d;
  --surface-2: #262523;
  --surface-3: #2f2d2a;
  --surface-raised: #38352f;
  --surface-glass: rgba(38, 37, 35, 0.55);
  --surface-scrim: rgba(10, 10, 9, 0.65);

  --text-primary: #f7f7f5;
  --text-secondary: rgba(255, 255, 255, 0.72);
  --text-tertiary: rgba(255, 255, 255, 0.55);
  --text-disabled: rgba(255, 255, 255, 0.3);
  --text-inverse: #191917;
  --text-accent: #bd74d0; /* = -soft MM dark (5.51) */
  --text-on-accent: #fff;
  --text-on-accent-secondary: #fff; /* l'indigo MM porte le blanc (5.09) */

  --border-subtle: rgba(255, 255, 255, 0.07);
  --border-default: rgba(255, 255, 255, 0.12);
  --border-strong: rgba(255, 255, 255, 0.2);
  --border-glass: rgba(255, 255, 255, 0.08);

  --accent-primary: #a249b8;
  --accent-primary-soft: #bd74d0; /* maquette #b25cc7 : éclairci — lien AA sur fond sombre */
  --accent-primary-strong: #8e39a4;
  --accent-secondary: #6f4bff;
  --accent-secondary-soft: #8d6dff;
  --wash-primary: rgba(162, 73, 184, 0.14);
  --wash-secondary: rgba(111, 75, 255, 0.14);

  --status-success: #46c083;
  --status-info: #6fe6f9;
  --status-warning: #fde96d;
  --status-danger: #e25c5c;
  --wash-success: rgba(70, 192, 131, 0.12);
  --wash-info: rgba(111, 230, 249, 0.12);
  --wash-warning: rgba(253, 233, 109, 0.14);
  --wash-danger: rgba(226, 92, 92, 0.12);

  --gradient-brand: linear-gradient(135deg, #a249b8, #6f4bff);
  --gradient-cta: linear-gradient(135deg, #6f4bff, #5e3aee);
  --gradient-accent: linear-gradient(135deg, #a249b8, #8e39a4);
  --gradient-progress: linear-gradient(135deg, #6f4bff, #5e3aee);

  --glow-accent-primary: 0 0 20px rgba(162, 73, 184, 0.32);
  --glow-accent-secondary: 0 0 20px rgba(111, 75, 255, 0.32);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
  --shadow-md: 0 4px 14px rgba(0, 0, 0, 0.5);
  --shadow-lg: 0 16px 40px rgba(0, 0, 0, 0.6);
  --shadow-glass: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 8px 24px rgba(0, 0, 0, 0.55);

  --focus-ring: 0 0 0 2px var(--surface-base), 0 0 0 4px #a249b8;
  --ring-primary: 0 0 0 4px rgba(162, 73, 184, 0.3);
  --ring-secondary: 0 0 0 3px rgba(111, 75, 255, 0.25);
  --ring-danger: 0 0 0 3px rgba(226, 92, 92, 0.25);
}

/* ═══════════════ SÉMANTIQUES — meilleurmanager · light ═══════════════ */
:root[data-brand='meilleurmanager'][data-theme='light'] {
  color-scheme: light;

  --surface-deep: #e3e6ef;
  --surface-base: #ebedf3;
  --surface-1: #f2f4f8;
  --surface-2: #ffffff;
  --surface-3: #e7eaf2;
  --surface-raised: #dde1ec;
  --surface-glass: rgba(255, 255, 255, 0.7);
  --surface-scrim: rgba(36, 31, 48, 0.45);

  --text-primary: #26223a;
  --text-secondary: rgba(38, 34, 58, 0.74);
  --text-tertiary: #5e5b70; /* maquette rgba .55 : opacifié pour AA 4.5 */
  --text-disabled: rgba(38, 34, 58, 0.28);
  --text-inverse: #f7f7f5;
  --text-accent: #5b1c6b; /* = accent-primary MM light (9.8) */
  --text-on-accent: #fff;
  --text-on-accent-secondary: #fff;

  --border-subtle: rgba(36, 31, 48, 0.08);
  --border-default: rgba(36, 31, 48, 0.13);
  --border-strong: rgba(36, 31, 48, 0.2);
  --border-glass: rgba(36, 31, 48, 0.08);

  --accent-primary: #5b1c6b;
  --accent-primary-soft: #6e2681;
  --accent-primary-strong: #4a1557;
  --accent-secondary: #332571;
  --accent-secondary-soft: #4a3a8f;
  --wash-primary: rgba(91, 28, 107, 0.06);
  --wash-secondary: rgba(51, 37, 113, 0.06);

  /* Statuts (maquette assombrie : AA 4.5 en usage texte sur surface-base) */
  --status-success: #1e7843;
  --status-info: #0b7189;
  --status-warning: #82621a;
  --status-danger: #c23a3a;
  --wash-success: rgba(46, 158, 91, 0.1);
  --wash-info: rgba(14, 143, 168, 0.1);
  --wash-warning: rgba(181, 137, 30, 0.12);
  --wash-danger: rgba(214, 69, 69, 0.1);

  --gradient-brand: linear-gradient(135deg, #5b1c6b, #332571);
  --gradient-cta: linear-gradient(135deg, #332571, #282060);
  --gradient-accent: linear-gradient(135deg, #5b1c6b, #4a1557);
  --gradient-progress: linear-gradient(135deg, #332571, #282060);

  --glow-accent-primary: 0 0 18px rgba(91, 28, 107, 0.18);
  --glow-accent-secondary: 0 0 18px rgba(51, 37, 113, 0.16);
  --shadow-sm: 0 1px 2px rgba(36, 31, 48, 0.06);
  --shadow-md: 0 4px 14px rgba(36, 31, 48, 0.1);
  --shadow-lg: 0 16px 40px rgba(36, 31, 48, 0.16);
  --shadow-glass: inset 0 1px 0 rgba(255, 255, 255, 0.7), 0 8px 24px rgba(36, 31, 48, 0.08);

  --focus-ring: 0 0 0 2px var(--surface-base), 0 0 0 4px #5b1c6b;
  --ring-primary: 0 0 0 4px rgba(91, 28, 107, 0.22);
  --ring-secondary: 0 0 0 3px rgba(51, 37, 113, 0.2);
  --ring-danger: 0 0 0 3px rgba(214, 69, 69, 0.22);
}

/* ═══════════════ Webinar room (SSR, hors design system — D8-D5 en 8.D) ═══ */
:root {
  --wr-bg-deep: #1a1a2e;
  --wr-bg-surface: #16213e;
  --wr-bg-raised: #232340;
  --wr-text: #e0e0e0;
  --wr-text-muted: #a0a0b8;
  --wr-text-dim: #6c6c80;
  --wr-accent: #6c5ce7;
}

/* ═══════════════════════ COMPAT LEGACY — PURGE EN 8.Z ═══════════════════════
   Alias des anciens noms vers les rôles 8.A.2, pour que les 18 CSS legacy
   restent corrects pendant la passe écran. INTERDIT dans tout nouveau code.
   « (fantôme) » = token consommé par le legacy mais JAMAIS défini avant
   8.A.2 : la propriété tombait silencieusement en héritage/initial — le
   définir restaure l'intention d'origine (écarts visuels possibles en
   recette : ce sont des corrections, pas des régressions). */
:root {
  /* Marque & accents */
  --color-primary: var(--accent-primary);
  --color-primary-light: var(--accent-primary-soft);
  --color-primary-dark: var(--accent-primary-strong);
  --color-accent: var(--accent-secondary);
  --color-accent-light: var(--accent-secondary-soft);

  /* Statuts */
  --color-success: var(--status-success);
  --color-error: var(--status-danger);
  --color-danger: var(--status-danger); /* (fantôme) */
  --color-warning: var(--status-warning);
  --color-warning-dark: var(--status-warning); /* l'ex-« lisible sur clair » : le rôle thémé le couvre */
  --color-info: var(--status-info);

  /* Surfaces */
  --bg-base: var(--surface-base);
  --bg-surface: var(--surface-2);
  --bg-surface-raised: var(--surface-raised);
  --bg-overlay: var(--surface-scrim);
  --bg-hover: var(--surface-3); /* (fantôme) */
  --bg-secondary: var(--surface-1); /* (fantôme) */
  --color-bg: var(--surface-base); /* (fantôme) */
  --color-surface: var(--surface-2); /* (fantôme) */

  /* Texte */
  --text-muted: var(--text-tertiary);
  --color-text-muted: var(--text-tertiary); /* (fantôme) */
  --color-text: var(--text-primary); /* (fantôme) */

  /* Bordures */
  --border-color: var(--border-default);
  --color-border: var(--border-default); /* (fantôme) */
  --border: var(--border-default); /* (fantôme) */

  /* Rayons (anciens noms → échelle canonique, valeurs identiques) */
  --border-radius-sm: var(--radius-sm);
  --border-radius-md: var(--radius-md);
  --border-radius-lg: var(--radius-lg);
  --border-radius-full: var(--radius-circle);

  /* Typo */
  --font-size-base: var(--font-size-sm); /* (fantôme) */

  /* Mouvement (anciens raccourcis composés) */
  --transition-fast: var(--duration-fast) var(--ease-standard);
  --transition-normal: var(--duration-base) var(--ease-standard);
  --transition-slow: var(--duration-slow) var(--ease-standard);
}
