/* ==========================================================================
   Endogeni — polices
   Michroma et Lexend sont auto-hébergées, et non chargées depuis Google
   Fonts, pour deux raisons :
   1. Le décalage. Servies par un tiers, elles arrivaient après le premier
      rendu : le H1 en Michroma passait sur une ligne de plus et poussait
      toute la page vers le bas (CLS 0,07 sur mobile). En même origine et
      préchargées, elles sont là avant la première peinture.
   2. Aucune requête vers Google depuis le navigateur du visiteur — un
      point qui compte pour des clients du secteur public européen.
   Les deux familles sont sous licence SIL Open Font License : la
   redistribution et l'auto-hébergement sont autorisés.
   Fichiers dans /assets/fonts/. Les `unicode-range` sont ceux de Google :
   un visiteur francophone ne télécharge que les sous-ensembles « latin ».
   ========================================================================== */

/* vietnamese */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/lexend-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/lexend-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/lexend-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/lexend-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/lexend-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/lexend-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/lexend-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/lexend-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/lexend-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/lexend-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/lexend-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Lexend';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/lexend-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Michroma';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/michroma-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Michroma';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/michroma-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* --------------------------------------------------------------------------
   Arabe. Michroma et Lexend n'ont aucun glyphe arabe : deux familles arabes
   prennent le relais, réparties comme leurs homologues latines.
     · Reem Kufi  -> les grands titres. Kufi géométrique, c'est l'équivalent
       arabe le plus proche de l'esprit de Michroma.
     · Cairo      -> tout le reste : paragraphes, cartes, pastilles,
       navigation, pied de page.
   Seul le sous-ensemble ARABE est déclaré, volontairement : grâce à
   `unicode-range`, les mots latins de la page arabe (« Endogeni », SIREN,
   l'adresse e-mail) restent rendus en Michroma et Lexend. Une seule
   identité, deux écritures.
   Les deux sont variables : 44 Ko pour toutes les graisses des deux
   familles. Licence SIL Open Font License.
   -------------------------------------------------------------------------- */

/* arabic */
@font-face {
  font-family: 'Reem Kufi';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/reem-kufi-400-700-arabic.woff2) format('woff2');
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC4, U+10EFC-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1;
}

/* arabic */
@font-face {
  font-family: 'Cairo';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/assets/fonts/cairo-300-700-arabic.woff2) format('woff2');
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC4, U+10EFC-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1;
}

/* ==========================================================================
   Endogeni — tokens de design
   Source unique des couleurs, polices, rayons, ombres et dégradés.
   Toute page et toute webapp de /apps/ doit charger ce fichier.
   ========================================================================== */

:root {
  /* --- Couleurs de base ------------------------------------------------- */
  --c-pearl:        #EDF0F7;  /* fond perle */
  --c-ink:          #161B3F;  /* texte indigo */
  --c-ink-soft:     #4B5280;  /* texte secondaire */
  --c-border:       #D9DEEE;  /* bordures */
  --c-white:        #FFFFFF;

  /* --- Couleurs d'accent ------------------------------------------------ */
  --c-violet:       #6B4BFF;  /* le choc */
  --c-blue:         #2E8BFF;
  --c-cyan:         #19C9D8;

  /* Variantes utilisées par les dégradés */
  --c-violet-light: #7A5CFF;
  --c-violet-soft:  #8A6BFF;
  --c-blue-soft:    #3FA0FF;
  --c-cyan-soft:    #34E0C8;
  --c-ice:          #B5F3FF;
  --c-pink:         #FF9BE0;

  /* --- Dégradés --------------------------------------------------------- */
  --grad-iris: linear-gradient(95deg, #6B4BFF 0%, #2E8BFF 40%, #19C9D8 70%, #7A5CFF 100%);
  --grad-liseret: linear-gradient(120deg, #8A6BFF, #3FA0FF, #34E0C8, #FF9BE0, #8A6BFF);
  --grad-orb: conic-gradient(#8A6BFF, #3FA0FF, #34E0C8, #B5F3FF, #FF9BE0, #8A6BFF);

  --grad-iris-size: 300% 100%;
  --grad-liseret-size: 300% 300%;

  /* --- Durées d'animation ----------------------------------------------- */
  --dur-iris: 8s;      /* dégradé irisé */
  --dur-liseret: 10s;  /* liseré irisé */
  --dur-orb: 22s;      /* rotation des orbes (18s à 26s) */

  /* --- Typographie ------------------------------------------------------ */
  /* Michroma et Lexend d'abord : n'ayant aucun glyphe arabe, elles laissent
     automatiquement la main à la famille arabe qui suit. Chaque écriture
     prend sa police sans qu'aucune règle n'ait à tester la langue. */
  --font-display: "Michroma", "Reem Kufi", ui-sans-serif, system-ui, sans-serif;
  --font-body: "Lexend", "Cairo", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;

  --track-display: -0.02em;  /* letter-spacing des titres */
  --track-label: 0.14em;     /* libellés de section */

  --fs-h1: 60px;
  --fs-h2: 40px;
  --fs-quote: 50px;
  --fs-label: 13px;
  --fs-body: 17px;
  --fs-small: 15px;

  /* --- Rayons ----------------------------------------------------------- */
  --r-card: 28px;
  --r-panel: 40px;
  --r-tile: 20px;
  --r-pill: 999px;

  /* --- Matière « verre » ------------------------------------------------ */
  --glass-bg: rgba(255, 255, 255, .52);
  --glass-blur: blur(22px);
  --glass-border-color: rgba(255, 255, 255, 1);
  --glass-shadow: 0 30px 60px -34px rgba(40, 50, 120, .35);

  /* --- Ombres ----------------------------------------------------------- */
  --shadow-soft: 0 18px 40px -28px rgba(40, 50, 120, .45);
  --shadow-violet: 0 16px 32px -14px rgba(107, 75, 255, .55);

  /* --- Grille et gouttières --------------------------------------------- */
  --page-max: 1280px;
  --gutter: 64px;         /* desktop */
  --gutter-tablet: 32px;
  --gutter-mobile: 16px;
  --grid-cols: 12;
  --grid-gap: 24px;

  /* --- En-tête ---------------------------------------------------------- */
  --header-h: 68px;
  --header-inset-y: 24px;
  --header-inset-x: 48px;
}
