/* ============================================================
   Polices Nogegon — déclarations @font-face globales

   Source de vérité unique pour les polices du site.
   À inclure depuis tout outil ou page :
     <link rel="stylesheet" href="/assets/fonts.css">

   Chemins en absolu depuis la racine du site (/assets/fonts/...) pour
   que le même fichier fonctionne quel que soit l'endroit d'inclusion
   (outils-web/, nuancier/, racine, etc).

   32 familles disponibles, regroupées par catégorie :
     SERIF (12)      : Cardo, Cormorant Garamond, Crimson Pro, EB Garamond,
                       Fraunces, IBM Plex Serif, Lora, Merriweather,
                       Playfair Display, Source Serif 4, Spectral, Vollkorn
     SLAB (1)        : Roboto Slab
     SANS-SERIF (14) : Atkinson Hyperlegible Next, IBM Plex Sans, Inter,
                       Inter Tight, Karla, Lato, Lato Latin, Manrope,
                       Montserrat, Open Sans, Oswald, Roboto, Source Sans 3,
                       Space Grotesk
     DISPLAY (2)     : Bebas Neue, DM Serif Display
     MONO (3)        : IBM Plex Mono, JetBrains Mono, Space Mono

   Convention : font-display: swap partout (le texte s'affiche en
   fallback pendant le chargement, puis bascule sans flicker bloquant).
   ============================================================ */


/* ============================================================
   SERIF
   ============================================================ */

/* --- Cormorant Garamond (serif éditorial, contraste fort) --- */
@font-face {
  font-family: 'Cormorant Garamond';
  src: url('/assets/fonts/cormorant-garamond/cormorant-garamond_5.2.5_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 300 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Cormorant Garamond';
  src: url('/assets/fonts/cormorant-garamond/cormorant-garamond_5.2.6_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 300 700; font-style: italic; font-display: swap;
}

/* --- Cardo (serif humaniste philologique, couverture Unicode très large :
   latin étendu, grec, hébreu, vieux italique, runique — édition critique
   multilingue, citations classiques) ---
   Non variable : 2 graisses (400 normal + italic, 700 normal). */
@font-face { font-family: 'Cardo'; src: url('/assets/fonts/cardo/cardo_5.2.8_latin-400-normal.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Cardo'; src: url('/assets/fonts/cardo/cardo_5.2.8_latin-400-italic.woff2') format('woff2');
  font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'Cardo'; src: url('/assets/fonts/cardo/cardo_5.2.8_latin-700-normal.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap; }

/* --- Crimson Pro (serif transitionnel contemporain, contraste plus marqué) --- */
@font-face {
  font-family: 'Crimson Pro';
  src: url('/assets/fonts/crimson-pro/crimson-pro_5.2.7_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 200 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Crimson Pro';
  src: url('/assets/fonts/crimson-pro/crimson-pro_5.2.8_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 200 900; font-style: italic; font-display: swap;
}

/* --- EB Garamond (Garamond historique libre, édition littéraire) --- */
@font-face {
  font-family: 'EB Garamond';
  src: url('/assets/fonts/eb-garamond/eb-garamond_5.2.7_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 400 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'EB Garamond';
  src: url('/assets/fonts/eb-garamond/eb-garamond_5.2.7_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 400 800; font-style: italic; font-display: swap;
}

/* --- Fraunces (serif moderne, contemporain) --- */
@font-face {
  font-family: 'Fraunces';
  src: url('/assets/fonts/fraunces/fraunces_5.2.9_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Fraunces';
  src: url('/assets/fonts/fraunces/fraunces_5.2.9_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: italic; font-display: swap;
}

/* --- IBM Plex Serif (serif transitionnel IBM, cohérence Plex Sans/Mono) ---
   Non variable : 7 graisses statiques + italiques. */
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-100-normal.woff2') format('woff2');
  font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-100-italic.woff2') format('woff2');
  font-weight: 100; font-style: italic; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-200-normal.woff2') format('woff2');
  font-weight: 200; font-style: normal; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-200-italic.woff2') format('woff2');
  font-weight: 200; font-style: italic; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-300-normal.woff2') format('woff2');
  font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-300-italic.woff2') format('woff2');
  font-weight: 300; font-style: italic; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-400-normal.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-400-italic.woff2') format('woff2');
  font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-500-normal.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-500-italic.woff2') format('woff2');
  font-weight: 500; font-style: italic; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-600-normal.woff2') format('woff2');
  font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-600-italic.woff2') format('woff2');
  font-weight: 600; font-style: italic; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-700-normal.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'IBM Plex Serif'; src: url('/assets/fonts/ibm-plex-serif/ibm-plex-serif_5.2.7_latin-700-italic.woff2') format('woff2');
  font-weight: 700; font-style: italic; font-display: swap; }

/* --- Lora (serif lisible pour lecture longue) --- */
@font-face {
  font-family: 'Lora';
  src: url('/assets/fonts/lora/lora_5.2.7_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 400 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Lora';
  src: url('/assets/fonts/lora/lora_5.2.8_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 400 700; font-style: italic; font-display: swap;
}

/* --- Merriweather (serif robuste, presse, articles) --- */
@font-face {
  font-family: 'Merriweather';
  src: url('/assets/fonts/merriweather/merriweather_5.2.6_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 300 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Merriweather';
  src: url('/assets/fonts/merriweather/merriweather_5.2.6_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 300 900; font-style: italic; font-display: swap;
}

/* --- Playfair Display (serif transitionnel, élégance classique) --- */
@font-face {
  font-family: 'Playfair Display';
  src: url('/assets/fonts/playfair-display/playfair-display_5.2.7_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 400 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Playfair Display';
  src: url('/assets/fonts/playfair-display/playfair-display_5.2.8_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 400 900; font-style: italic; font-display: swap;
}

/* --- Source Serif 4 (serif transitionnel, lecture longue confortable) --- */
@font-face {
  font-family: 'Source Serif 4';
  src: url('/assets/fonts/source-serif-4/source-serif-4-latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 200 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Source Serif 4';
  src: url('/assets/fonts/source-serif-4/source-serif-4-latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 200 900; font-style: italic; font-display: swap;
}

/* --- Spectral (transitionnel contemporain, conçue pour le numérique
   éditorial — Production Type pour Google) ---
   Non variable : 7 graisses statiques + italiques (200 à 800). */
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-200-normal.woff2') format('woff2');
  font-weight: 200; font-style: normal; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-200-italic.woff2') format('woff2');
  font-weight: 200; font-style: italic; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-300-normal.woff2') format('woff2');
  font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-300-italic.woff2') format('woff2');
  font-weight: 300; font-style: italic; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-400-normal.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-400-italic.woff2') format('woff2');
  font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-500-normal.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.6_latin-500-italic.woff2') format('woff2');
  font-weight: 500; font-style: italic; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-600-normal.woff2') format('woff2');
  font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-600-italic.woff2') format('woff2');
  font-weight: 600; font-style: italic; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-700-normal.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-700-italic.woff2') format('woff2');
  font-weight: 700; font-style: italic; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-800-normal.woff2') format('woff2');
  font-weight: 800; font-style: normal; font-display: swap; }
@font-face { font-family: 'Spectral'; src: url('/assets/fonts/spectral/spectral_5.2.8_latin-800-italic.woff2') format('woff2');
  font-weight: 800; font-style: italic; font-display: swap; }

/* --- Vollkorn (serif robuste, optimisée papier bas de gamme et écrans) --- */
@font-face {
  font-family: 'Vollkorn';
  src: url('/assets/fonts/vollkorn/vollkorn_5.2.10_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 400 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Vollkorn';
  src: url('/assets/fonts/vollkorn/vollkorn_5.2.10_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 400 900; font-style: italic; font-display: swap;
}


/* ============================================================
   SLAB
   ============================================================ */

/* --- Roboto Slab (slab moderne, neutralité solide) --- */
@font-face {
  font-family: 'Roboto Slab';
  src: url('/assets/fonts/roboto-slab/roboto-slab-latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: normal; font-display: swap;
}


/* ============================================================
   SANS-SERIF
   ============================================================ */

/* --- Atkinson Hyperlegible Next (sans haute lisibilité, conçue pour
   basse vision — Braille Institute, version 2025 avec axe wght complet) --- */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('/assets/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next_5.2.5_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 200 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  src: url('/assets/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next_5.2.6_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 200 800; font-style: italic; font-display: swap;
}

/* --- Inter (sans neutre, UI, polyvalente) --- */
@font-face {
  font-family: 'Inter';
  src: url('/assets/fonts/inter/inter_5.2.6_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Inter';
  src: url('/assets/fonts/inter/inter_5.2.6_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: italic; font-display: swap;
}

/* --- Inter Tight (variante compacte d'Inter) --- */
@font-face {
  font-family: 'Inter Tight';
  src: url('/assets/fonts/inter-tight/inter-tight_5.2.7_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Inter Tight';
  src: url('/assets/fonts/inter-tight/inter-tight_5.2.7_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: italic; font-display: swap;
}

/* --- IBM Plex Sans (sans IBM, cohérence Plex Serif/Mono) --- */
@font-face {
  font-family: 'IBM Plex Sans';
  src: url('/assets/fonts/ibm-plex-sans/ibm-plex-sans_5.2.6_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 100 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Sans';
  src: url('/assets/fonts/ibm-plex-sans/ibm-plex-sans_5.2.8_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 100 700; font-style: italic; font-display: swap;
}

/* --- Karla (sans humaniste chaleureux, contrepoint visuel à un texte serif) --- */
@font-face {
  font-family: 'Karla';
  src: url('/assets/fonts/karla/karla_5.2.7_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 200 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Karla';
  src: url('/assets/fonts/karla/karla_5.2.8_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 200 800; font-style: italic; font-display: swap;
}

/* --- Lato (sans humaniste, jeu complet 9 graisses) --- */
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-Hairline.woff2') format('woff2');
  font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-HairlineItalic.woff2') format('woff2');
  font-weight: 100; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-Thin.woff2') format('woff2');
  font-weight: 200; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-ThinItalic.woff2') format('woff2');
  font-weight: 200; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-Light.woff2') format('woff2');
  font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-LightItalic.woff2') format('woff2');
  font-weight: 300; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-Regular.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-Italic.woff2') format('woff2');
  font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-Medium.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-MediumItalic.woff2') format('woff2');
  font-weight: 500; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-Semibold.woff2') format('woff2');
  font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-SemiboldItalic.woff2') format('woff2');
  font-weight: 600; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-Bold.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-BoldItalic.woff2') format('woff2');
  font-weight: 700; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-Heavy.woff2') format('woff2');
  font-weight: 800; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-HeavyItalic.woff2') format('woff2');
  font-weight: 800; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-Black.woff2') format('woff2');
  font-weight: 900; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('/assets/fonts/lato/Lato-BlackItalic.woff2') format('woff2');
  font-weight: 900; font-style: italic; font-display: swap; }

/* --- Lato Latin (variante optimisée pour le latin) --- */
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-Hairline.woff2') format('woff2');
  font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-HairlineItalic.woff2') format('woff2');
  font-weight: 100; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-Thin.woff2') format('woff2');
  font-weight: 200; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-ThinItalic.woff2') format('woff2');
  font-weight: 200; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-Light.woff2') format('woff2');
  font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-LightItalic.woff2') format('woff2');
  font-weight: 300; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-Regular.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-Italic.woff2') format('woff2');
  font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-Medium.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-MediumItalic.woff2') format('woff2');
  font-weight: 500; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-Semibold.woff2') format('woff2');
  font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-SemiboldItalic.woff2') format('woff2');
  font-weight: 600; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-Bold.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-BoldItalic.woff2') format('woff2');
  font-weight: 700; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-Heavy.woff2') format('woff2');
  font-weight: 800; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-HeavyItalic.woff2') format('woff2');
  font-weight: 800; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-Black.woff2') format('woff2');
  font-weight: 900; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Latin'; src: url('/assets/fonts/lato-latin/LatoLatin-BlackItalic.woff2') format('woff2');
  font-weight: 900; font-style: italic; font-display: swap; }

/* --- Manrope (sans humaniste moderne, chaleureuse et arrondie) --- */
@font-face {
  font-family: 'Manrope';
  src: url('/assets/fonts/manrope/manrope-latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 200 800; font-style: normal; font-display: swap;
}

/* --- Montserrat (sans géométrique, graphique) --- */
@font-face {
  font-family: 'Montserrat';
  src: url('/assets/fonts/montserrat/montserrat_5.2.8_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Montserrat';
  src: url('/assets/fonts/montserrat/montserrat_5.2.7_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: italic; font-display: swap;
}

/* --- Open Sans (sans humaniste, lisibilité écran) --- */
@font-face {
  font-family: 'Open Sans';
  src: url('/assets/fonts/open-sans/open-sans_5.2.7_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 300 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Open Sans';
  src: url('/assets/fonts/open-sans/open-sans_5.2.7_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 300 800; font-style: italic; font-display: swap;
}

/* --- Oswald (sans condensé, titres, affiches) --- */
@font-face {
  font-family: 'Oswald';
  src: url('/assets/fonts/oswald/oswald_5.2.7_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 200 700; font-style: normal; font-display: swap;
}

/* --- Roboto (sans neutre, Google, UI standard) --- */
@font-face {
  font-family: 'Roboto';
  src: url('/assets/fonts/roboto/roboto_5.2.10_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Roboto';
  src: url('/assets/fonts/roboto/roboto_5.2.10_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 100 900; font-style: italic; font-display: swap;
}

/* --- Source Sans 3 (sans Adobe, UI éditoriale) --- */
@font-face {
  font-family: 'Source Sans 3';
  src: url('/assets/fonts/source-sans-3/source-sans-3_5.2.9_latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 200 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Source Sans 3';
  src: url('/assets/fonts/source-sans-3/source-sans-3_5.2.9_latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 200 900; font-style: italic; font-display: swap;
}

/* --- Space Grotesk (sans neo-grotesque, tech, contemporain) --- */
@font-face {
  font-family: 'Space Grotesk';
  src: url('/assets/fonts/space-grotesk/space-grotesk_5.2.9_latin-400-normal.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Space Grotesk';
  src: url('/assets/fonts/space-grotesk/space-grotesk_5.2.10_latin-500-normal.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Space Grotesk';
  src: url('/assets/fonts/space-grotesk/space-grotesk_5.2.9_latin-600-normal.woff2') format('woff2');
  font-weight: 600; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Space Grotesk';
  src: url('/assets/fonts/space-grotesk/space-grotesk_5.2.10_latin-700-normal.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap;
}


/* ============================================================
   DISPLAY
   ============================================================ */

/* --- Bebas Neue (display condensé, affiches, titres uppercase) --- */
@font-face {
  font-family: 'Bebas Neue';
  src: url('/assets/fonts/bebas-neue/bebas-neue_5.2.7_latin-400-normal.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}

/* --- DM Serif Display (display serif, élégance hautes tailles) --- */
@font-face {
  font-family: 'DM Serif Display';
  src: url('/assets/fonts/dm-serif-display/dm-serif-display-latin-400-normal.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}


/* ============================================================
   MONO
   ============================================================ */

/* --- IBM Plex Mono (mono Adobe, cohérence Plex Sans/Serif) --- */
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/assets/fonts/ibm-plex-mono/ibm-plex-mono-latin-300-normal.woff2') format('woff2');
  font-weight: 300; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/assets/fonts/ibm-plex-mono/ibm-plex-mono-latin-400-normal.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/assets/fonts/ibm-plex-mono/ibm-plex-mono-latin-500-normal.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap;
}

/* --- JetBrains Mono (mono développeur, lisibilité code) --- */
@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/jetbrains-mono/jetbrains-mono-latin-wght-normal.woff2') format('woff2-variations');
  font-weight: 100 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/jetbrains-mono/jetbrains-mono-latin-wght-italic.woff2') format('woff2-variations');
  font-weight: 100 800; font-style: italic; font-display: swap;
}

/* --- Space Mono (mono rétro, identité affirmée) --- */
@font-face {
  font-family: 'Space Mono';
  src: url('/assets/fonts/space-mono/space-mono_5.2.9_latin-400-normal.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Space Mono';
  src: url('/assets/fonts/space-mono/space-mono_5.2.8_latin-700-normal.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap;
}
