@charset "UTF-8";







/* ==========================================================================
   WAKE UP MISSION - FEUILLE DE STYLE PRINCIPALE (style.css)
   ========================================================================== */

/* ------------------------------------------------------------------
   1. VARIABLES CSS - Charte graphique officielle WUM
   ------------------------------------------------------------------ */
/* Polices Google (Outfit + Poppins) : désormais chargées via <link rel="preconnect">
   + <link rel="stylesheet"> dans le <head> de chaque page HTML.
   (L'@import sérialisait le téléchargement des polices APRÈS celui de style.css,
   ce qui provoquait un long FOUT — polices qui « disparaissaient » au chargement.) */

:root {
  /* --- Couleurs principales --- */
  --bleu-principal: #4D41D9;
  --violet: #803DB4;
  --aqua-marine: #71F4B3;
  --noir: #000000;
  --gris-clair: #D4D6D5;
  --blanc: #FFFFFF;

  /* --- Fonds des sections --- */
  --fond-sombre: #07070A;
  --fond-sombre-2: #0F0F18;
  --fond-clair: #FFFFFF;

  /* --- Textes (contraste WCAG AA ∅ 4,5:1 sur fonds sombres/clairs) --- */
  --texte-clair: #F4F4FA;
  --texte-sombre: #121218;
  --texte-secondaire: #C5C5D4;
  --texte-secondaire-clair: #3A3A48;
  --texte-footer: #ECECF4;
  --focus-anneau: #71F4B3;
  --focus-anneau-clair: #3D32C4;

  /* --- Dégradés & Effets Verre --- */
  --gradient-bleu-violet: linear-gradient(135deg, #4D41D9 0%, #803DB4 100%);
  --gradient-sombre: linear-gradient(180deg, #07070A 0%, #0F0F18 100%);
  --gradient-aqua: linear-gradient(135deg, #71F4B3 0%, #4D41D9 100%);
  --glass-bg: rgba(13, 13, 25, 0.80);
  --glass-border: rgba(77, 65, 217, 0.25);
  --glass-shadow: 0 8px 40px rgba(0, 0, 0, 0.5);
  --overlay-photo: rgba(7, 7, 10, 0.55);
  --verre-sombre: rgba(12, 12, 22, 0.48);
  --verre-clair: rgba(255, 255, 255, 0.58);

  /* --- Typographies --- */
  --police-titre: 'Outfit', sans-serif;
  --police-corps: 'Poppins', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  /* --- Transitions & Tailles --- */
  --transition-lisse: all 0.35s cubic-bezier(0.25, 0.8, 0.25, 1);
  --transition-rapide: all 0.18s ease;
  --max-largeur: 1200px;
  --max-largeur: min(1200px, 95vw);
  --padding-section: 4rem 1.5rem;
  --padding-section: min(4.5rem, 8vw) min(1.25rem, 2.5vw);
}

/* Protection contre le débordement horizontal à haut niveau de zoom */
html,
body {
  overflow-x: hidden;
  max-width: 100vw;
}

/* S'assurer que les images ne débordent pas */
img {
  max-width: 100%;
  height: auto;
}

/* Protection pour les sections avec des grilles */
.grille-2,
.grille-3 {
  overflow: hidden;
}


/* ------------------------------------------------------------------
   2. RESET & BASE
   ------------------------------------------------------------------ */
*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  scroll-behavior: auto;
  scroll-behavior: smooth;
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

.lien-eviter {
  position: absolute;
  left: 1rem;
  top: -4rem;
  z-index: 10000;
  padding: 0.75rem 1.25rem;
  background: var(--aqua-marine);
  color: #03030A;
  font-family: var(--police-titre);
  font-weight: 700;
  border-radius: 8px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
}

.lien-eviter:focus,
.lien-eviter:focus-visible {
  top: 1rem;
  outline: 3px solid var(--blanc);
  outline-offset: 3px;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

body {
  font-family: var(--police-corps);
  background-color: var(--fond-sombre);
  background-image: none;
  color: var(--texte-clair);
  line-height: 1.65;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: var(--police-titre);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.2;
}

a {
  text-decoration: none;
  color: inherit;
  transition: var(--transition-rapide);
}

/*
  Soulignement léger GLOBAL — appliqué à tous les liens du site, SAUF :
    — boutons              [class*="btn"], .rm5-lien-item, .whatsapp-flottant, .bouton-retour-haut
    — barre de navigation  .nav-lien, .btn-nav-cta, .logo-link
    — lien d'évitement     .lien-eviter (a11y)
  Les liens en dégradé text-clip (footer réseaux, infolines RM Club) restent sans
  trait visible : color:transparent   text-decoration-color currentColor = pas de filet.
  Exclusions supplémentaires : .lien-tiktok-handle, .lien-instagram-footer, .lien-whatsapp-footer,
  .footer-contact .lien-instagram (@iamwum du footer : dégradé + filet blanc définis plus bas),
  .footer-contact a[href*="youtube.com"], .partenariat-rm5-actions .lien-whatsapp-partenariat,
  .communaute-reseaux-actions .lien-tiktok-handle (tous utilisent background-clip:text).
  Trés discret : 1px, décalé sous la ligne de base, skip-ink pour respirer.
*/
a:not([class*="btn"]):not(.nav-lien):not(.logo-link):not(.lien-eviter):not(.whatsapp-flottant):not(.bouton-retour-haut):not(.rm5-lien-item):not(.lien-tiktok-handle):not(.lien-instagram-footer):not(.lien-whatsapp-footer):not(.footer-contact .lien-instagram):not(.footer-contact .lien-tiktok-handle):not(.footer-contact .lien-instagram-footer):not(.footer-contact .lien-whatsapp-footer):not(.communaute-reseaux-actions .lien-tiktok-handle):not(.footer-contact a[href*="youtube.com"]):not(.partenariat-rm5-actions .lien-whatsapp-partenariat) {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-decoration-skip-ink: auto;
  text-underline-offset: 0.18em;
  text-decoration-color: currentColor;
}

a:not([class*="btn"]):not(.nav-lien):not(.logo-link):not(.lien-eviter):not(.whatsapp-flottant):not(.bouton-retour-haut):not(.rm5-lien-item):not(.lien-tiktok-handle):not(.lien-instagram-footer):not(.lien-whatsapp-footer):not(.footer-contact .lien-instagram):not(.footer-contact .lien-tiktok-handle):not(.footer-contact .lien-instagram-footer):not(.footer-contact .lien-whatsapp-footer):not(.communaute-reseaux-actions .lien-tiktok-handle):not(.footer-contact a[href*="youtube.com"]):not(.partenariat-rm5-actions .lien-whatsapp-partenariat):hover,
a:not([class*="btn"]):not(.nav-lien):not(.logo-link):not(.lien-eviter):not(.whatsapp-flottant):not(.bouton-retour-haut):not(.rm5-lien-item):not(.lien-tiktok-handle):not(.lien-instagram-footer):not(.lien-whatsapp-footer):not(.footer-contact .lien-instagram):not(.footer-contact .lien-tiktok-handle):not(.footer-contact .lien-instagram-footer):not(.footer-contact .lien-whatsapp-footer):not(.communaute-reseaux-actions .lien-tiktok-handle):not(.footer-contact a[href*="youtube.com"]):not(.partenariat-rm5-actions .lien-whatsapp-partenariat):focus-visible {
  text-decoration-thickness: 1px;
}

/* Annonces et poignée Instagram du hero : aucun soulignement
   (.lien-instagram du footer est re-stylé plus bas avec dégradé + soulignement blanc) */
.hero-annonce-rm5,
.hero-instagram a {
  text-decoration: none !important;
}

:focus {
  outline: none;
}

:focus-visible {
  outline: 3px solid var(--focus-anneau);
  outline-offset: 3px;
}

.fond-clair :focus-visible,
.btn-aqua:focus-visible {
  outline-color: var(--focus-anneau-clair);
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

ul {
  list-style: none;
}


/* ------------------------------------------------------------------
   3. HEADER & NAVIGATION
   ------------------------------------------------------------------ */
header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1000;
  background: var(--glass-bg);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--glass-border);
  box-shadow: 0 2px 30px rgba(0, 0, 0, 0.4);
  transition: var(--transition-lisse);
}

.scroll-progress {
  position: fixed;
  top: 70px;
  left: 0;
  z-index: 998;
  width: 100%;
  height: 3px;
  max-width: 100vw;
  overflow: hidden;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.22) 15%, var(--aqua-marine) 50%, #9EFFC9 85%, transparent 100%);
  box-shadow:
    0 0 8px rgba(113,244,179,0.7),
    0 0 22px rgba(113,244,179,0.4),
    0 0 45px rgba(113,244,179,0.18);
  border-radius: 999px;
  pointer-events: none;
  transform: scaleX(0);
  transform-origin: left center;
  will-change: transform;
}

.compteur-anime {
  display: inline-block;
  opacity: 0;
  transform: translateY(12px);
}

.compteur-anime--actif {
  animation: compteurPulse 0.6s ease-out;
}

@keyframes compteurPulse {
  0% {
    transform: translateY(0) scale(1);
  }
  40% {
    transform: translateY(-6px) scale(1.14);
  }
  100% {
    transform: translateY(0) scale(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  .scroll-progress {
    display: none;
  }

  .compteur-anime {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

.header-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  max-width: var(--max-largeur);
  margin: 0 auto;
  padding: 0.85rem 1.5rem;
  padding: 0.85rem min(2rem, 3vw);
}

.logo-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.logo-img {
  height: 42px;
  width: auto;
  object-fit: contain;
}

.logo-texte {
  font-family: var(--police-titre);
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--blanc);
  letter-spacing: 0.04em;
  line-height: 1.15;
}

.nav-bureau {
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.nav-lien {
  font-size: 0.875rem;
  font-weight: 500;
  padding: 0.45rem 0.9rem;
  color: var(--texte-clair);
  border-radius: 6px;
  transition: var(--transition-rapide);
}

.nav-lien:hover,
.nav-lien.actif,
.nav-lien[aria-current="page"] {
  color: var(--aqua-marine);
  background: rgba(113, 244, 179, 0.08);
}

.nav-lien:focus-visible {
  outline-offset: 2px;
}

.btn-nav-cta {
  background: var(--gradient-bleu-violet);
  color: var(--blanc) !important;
  font-weight: 700;
  padding: 0.55rem 1.3rem;
  border-radius: 50px;
  border: 2px solid transparent;
  font-family: var(--police-titre);
  font-size: 0.8rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  box-shadow: 0 4px 15px rgba(77, 65, 217, 0.35);
  transition: var(--transition-lisse);
  margin-left: 0.5rem;
}

.btn-nav-cta:hover {
  background: transparent;
  border-color: var(--bleu-principal);
  color: var(--blanc) !important;
  box-shadow: 0 4px 20px rgba(77, 65, 217, 0.5);
  transform: translateY(-2px);
}

.toggle-mobile {
  display: none;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0.4rem;
  flex-direction: column;
  gap: 5px;
  border-radius: 6px;
}

.toggle-mobile span {
  display: block;
  width: 26px;
  height: 2px;
  background-color: var(--blanc);
  transition: var(--transition-lisse);
  transform-origin: center;
}

.toggle-mobile.ouvert span:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}

.toggle-mobile.ouvert span:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}

.toggle-mobile.ouvert span:nth-child(3) {
  transform: rotate(-45deg) translate(5px, -5px);
}

.menu-mobile {
  position: fixed;
  top: 0;
  right: -100%;
  width: 280px;
  height: 100vh;
  background: #0D0D1A;
  border-left: 1px solid var(--glass-border);
  padding: 4rem 1.75rem 2rem 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  box-shadow: -15px 0 40px rgba(0, 0, 0, 0.6);
  transition: right 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
  z-index: 999;
}

.menu-mobile.ouvert {
  right: 0;
}

.overlay-mobile {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: rgba(0, 0, 0, 0.7);
  z-index: 998;
}

.overlay-mobile.actif {
  display: block;
}

.menu-mobile .nav-lien {
  font-size: 1.05rem;
  padding: 0.7rem 1rem;
}

.menu-mobile .btn-nav-cta {
  margin-left: 0;
  margin-top: 1rem;
  text-align: center;
  display: block;
}


/* ------------------------------------------------------------------
   4. HERO SECTION
   ------------------------------------------------------------------ */
.hero {
  position: sticky;
  top: 0;
  height: 100vh;
  min-height: 620px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 2rem;
  overflow: hidden;
  background-image: url('../Image/WUM_ID.png');
  background-position: center center;
  background-size: cover;
  background-repeat: no-repeat;
}

/* Safari/iOS : conserve un fallback 100vh pour les anciens WebKit, puis
   utilise la hauteur stable afin d'eviter les sauts quand la barre d'adresse bouge. */
@supports (height: 100svh) {

  .menu-mobile,
  .overlay-mobile,
  .hero {
    height: 100svh;
  }
}

.hero-video-conteneur {
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  z-index: 1;
}

.hero-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.28;
  filter: saturate(1.3) hue-rotate(-10deg);
}

.hero-titre-ligne {
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

.hero-overlay {
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  background: radial-gradient(ellipse at center, rgba(7, 7, 10, 0.45) 0%, rgba(7, 7, 10, 0.70) 100%);
  z-index: 2;
}

.hero-contenu {
  position: sticky;
  top: 70px;
  z-index: 3;
  max-width: 820px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.hero-tagline {
  display: inline-block;
  font-family: var(--police-titre);
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--aqua-marine);
  letter-spacing: 0.3em;
  text-transform: uppercase;
  margin-bottom: 1.5rem;
  padding: 0.4rem 1.2rem;
  border: 1px solid rgba(113, 244, 179, 0.3);
  border-radius: 50px;
  overflow-wrap: break-word;
  word-break: break-word;
  white-space: normal;
  max-width: 100%;
}

.hero-titre {
  display: inline-block;
  font-size: 2.6rem;
  font-size: clamp(2rem, 6vw, 3.4rem);
  font-weight: 900;
  color: var(--blanc);
  margin-bottom: 1.5rem;
  letter-spacing: -0.03em;
  line-height: 1.05;
  /* Jamais de rognage : le titre se replie (mobile-first) */
  white-space: normal;
  overflow: visible;
  overflow-wrap: anywhere;
  word-break: break-word;
  hyphens: auto;
  -webkit-hyphens: auto;
  max-width: 100%;
}


h1 .accent,
h2 .accent {
  color: var(--aqua-marine);
  background: linear-gradient(135deg, #B8B3FF 0%, #71F4B3 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ============================================================
   MAIN-TITLES — centrage garanti + aucun effet (fade/transition)
   Les styles locaux des pages alignaient le span à gauche et
   certaines animations de frappe ont été retirées du JS.
   Ces régles globales couvrent toutes les pages du site.
   ============================================================ */
h1.section-titre.titre-tape,
.hero-titre:not(.tw) {
  text-align: center;
  animation: none !important;
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

/* ------------------------------------------------------------
   TYPEWRITER - curseur clignotant (injecte par js/app.js)
   La frappe est pilotee par initTypewriter(). Le curseur est un
   element INLINE : il suit le texte sans jamais le rogner.
   Aucun overflow:hidden / masque de largeur -> le titre reste
   integral et se replie normalement sur mobile (multi-lignes).
   ------------------------------------------------------------ */
.tw-curseur {
  display: inline-block;
  width: 0.075em;
  min-width: 2px;
  height: 0.78em;
  margin-left: 0.08em;
  border-radius: 1px;
  background: var(--aqua-marine);
  box-shadow: 0 0 0.35em rgba(113, 244, 179, 0.75);
  vertical-align: -0.02em;
  animation: tw-clignote 0.75s linear infinite;
  pointer-events: none;
}

@keyframes tw-clignote {
  0%, 55%   { opacity: 1; }
  56%, 100% { opacity: 0.06; }
}

/* Fin de frappe : le curseur cesse de clignoter et s'efface en douceur,
   ce qui laisse ensuite le texte d'origine STRICTEMENT intact. */
.tw-curseur-fin {
  animation: none !important;
  opacity: 0;
  transition: opacity 0.45s ease;
}

@media (prefers-reduced-motion: reduce) {
  .tw-curseur {
    display: none !important;
    animation: none !important;
  }
}

h1.section-titre .hero-titre-ligne,
.hero-titre-ligne {
  text-align: center;
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  hyphens: auto;
  -webkit-hyphens: auto;
  max-width: 100%;
  text-overflow: clip;
  overflow: visible;
}

/* ============================================================
   LIQUID GLASS PREMIUM — .section-label (pill d'en-tête de section)
   Plus compact que .hero-tagline pour rester un LABEL, pas un titre.
   ============================================================ */
 .section-label {
  display: flex;
  align-items: center;
  justify-content: center;
  position: sticky;
  top: 0;
  z-index: 100;
  overflow: hidden;
  width: max-content;
  max-width: 100%;
  padding: 0.4rem 1rem;
  border-radius: 50px;
  background: rgba(255, 255, 255, 0.06);
  -webkit-backdrop-filter: blur(16px) saturate(1.5);
  backdrop-filter: blur(16px) saturate(1.5);
  border: 1px solid rgba(255, 255, 255, 0.16);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.20) inset,
    0 4px 14px rgba(7, 7, 10, 0.22),
    0 8px 28px rgba(77, 65, 217, 0.16);
  color: #F4F4FA;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  margin: 0 auto 1rem;
  transition: background-color .25s ease, border-color .25s ease, box-shadow .35s ease;
}

/* Reflet lumineux glissant — synchronisé avec .hero-tagline */
.section-label::before {
  content: "";
  position: absolute;
  top: 0;
  left: -100%;
  width: 60%;
  height: 100%;
  background: linear-gradient(90deg,
      transparent 0%,
      rgba(255, 255, 255, 0.18) 50%,
      transparent 100%);
  animation: glass-reflet 5s ease-in-out 4s infinite;
  pointer-events: none;
}

/* Variante pour sections sur fond clair : verre légérement plus opaque */
.fond-clair .section-label {
  background: rgba(77, 65, 217, 0.06);
  border-color: rgba(77, 65, 217, 0.18);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.7) inset,
    0 4px 14px rgba(7, 7, 10, 0.10),
    0 8px 28px rgba(77, 65, 217, 0.14);
}

@keyframes glass-reflet {
  0% {
    left: -100%;
  }

  30% {
    left: 130%;
  }

  100% {
    left: 130%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .section-label::before {
    animation: none;
  }
}

.hero-sous-titre {
  font-size: 1.05rem;
  color: var(--texte-secondaire);
  margin-bottom: 2.5rem;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
  font-weight: 400;
  overflow-wrap: break-word;
  word-break: break-word;
  hyphens: auto;
  -webkit-hyphens: auto;
}

.hero-actions {
  display: flex;
  gap: 1rem;
  justify-content: center;
  flex-wrap: wrap;
  overflow-wrap: inherit;
  word-break: normal;
}

.hero-instagram {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  justify-content: center;
  margin-top: 2rem;
}

.hero-instagram a {
  font-size: 0.85rem;
  color: var(--aqua-marine);
  font-weight: 500;
}

.hero-instagram a:hover {
  opacity: 0.8;
}

.lien-tiktok {
  color: var(--blanc);
  text-decoration: none;
  font-weight: 700;
  transition: opacity 0.25s ease, transform 0.25s ease;
}

.lien-tiktok:hover,
.lien-tiktok:focus-visible {
  opacity: 0.9;
  transform: translateY(-1px);
}

.lien-tiktok-handle {
  background: linear-gradient(90deg, #00F2EA 0%, #FF0050 52%, #FFFFFF 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  font-weight: 800;
}

.communaute-reseaux {
  position: sticky;
  top: 0;
  isolation: isolate;
  overflow: hidden;
  max-width: 760px;
  margin: 0 auto;
  padding: 1.75rem 1.5rem;
  padding: clamp(1.5rem, 4vw, 2.25rem) clamp(1rem, 4vw, 2rem);
  border: 1px solid rgba(128, 112, 166, 0.42);
  border-radius: 24px;
  background:
    linear-gradient(135deg, rgba(91, 79, 178, 0.88), rgba(105, 61, 145, 0.94)),
    linear-gradient(120deg, rgba(184, 179, 255, 0.12), rgba(77, 65, 217, 0.18));
  -webkit-backdrop-filter: blur(18px) saturate(1.1);
  backdrop-filter: blur(18px) saturate(1.1);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.26) inset,
    0 18px 50px rgba(65, 51, 92, 0.22),
    0 3px 12px rgba(18, 18, 24, 0.12);
  text-align: center;
}

.communaute-reseaux::before,
.communaute-reseaux::after {
  content: "";
  position: absolute;
  pointer-events: none;
  z-index: -1;
  border-radius: 50%;
  filter: blur(24px);
}

.communaute-reseaux::before {
  width: 180px;
  height: 180px;
  top: -105px;
  left: -55px;
  background: rgba(184, 179, 255, 0.16);
}

.communaute-reseaux::after {
  width: 170px;
  height: 170px;
  right: -60px;
  bottom: -105px;
  background: rgba(77, 65, 217, 0.18);
}

.communaute-reseaux-label {
  position: sticky;
  top: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  margin: 0 auto 1rem;
  padding: 0.42rem 0.9rem;
  border: 1px solid rgba(235, 229, 249, 0.28);
  border-radius: 50px;
  background: rgba(38, 29, 57, 0.22);
  -webkit-backdrop-filter: blur(14px) saturate(1.15);
  backdrop-filter: blur(14px) saturate(1.15);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.22) inset,
    0 6px 18px rgba(43, 32, 64, 0.14);
  color: #EEE9FA;
  font-family: var(--police-titre);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.communaute-reseaux-label::before {
  content: "";
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  background: linear-gradient(105deg, transparent 25%, rgba(255, 255, 255, 0.14) 50%, transparent 75%);
  transform: translateX(-120%);
  animation: communaute-label-reflet 5s ease-in-out 3s infinite;
  pointer-events: none;
}

@keyframes communaute-label-reflet {

  0%,
  35% {
    transform: translateX(-120%);
  }

  65%,
  100% {
    transform: translateX(120%);
  }
}

.communaute-reseaux-titre {
  margin: 0 0 0.8rem;
  color: #FAF8FF;
  font-family: var(--police-titre);
  font-size: 1.75rem;
  font-size: clamp(1.6rem, 4vw, 2.2rem);
  font-weight: 800;
  letter-spacing: 0;
}

.communaute-reseaux-titre span {
  background: linear-gradient(90deg, #F0C4D7, #D9C8F0 52%, #B8E6DB);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

.communaute-reseaux-intro {
  max-width: 500px;
  margin: 0 auto 1.6rem;
  color: rgba(244, 241, 250, 0.82);
  font-size: 0.92rem;
  line-height: 1.65;
}

.communaute-reseaux-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.communaute-reseaux-actions .btn {
  min-height: 44px;
  padding: 0.7rem 1.2rem;
  font-size: 0.82rem;
}

.communaute-reseaux-actions .lien-tiktok {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  color: #252532;
  border-color: rgba(37, 37, 50, 0.24);
  background: rgba(255, 255, 255, 0.38);
}

.communaute-reseaux-actions .lien-tiktok svg {
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
}

.communaute-reseaux-actions .lien-tiktok:hover,
.communaute-reseaux-actions .lien-tiktok:focus-visible {
  color: #11111A;
  border-color: #00BFB9;
  background: rgba(255, 255, 255, 0.7);
}

.communaute-reseaux-actions .lien-tiktok-handle {
  font-weight: 700;
}

.communaute-reseaux-actions .btn-whatsapp-reseaux {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  color: #E8FFF0;
  border-color: rgba(126, 235, 163, 0.45);
  background: rgba(25, 116, 67, 0.42);
}

.communaute-reseaux-actions .btn-whatsapp-reseaux svg {
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
}

.communaute-reseaux-actions .btn-whatsapp-reseaux:hover,
.communaute-reseaux-actions .btn-whatsapp-reseaux:focus-visible {
  color: #FFFFFF;
  border-color: #8FF0B1;
  background: rgba(35, 145, 82, 0.62);
}

.communaute-reseaux-actions .btn-instagram-reseaux {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  color: #ffffff;
  border-color: rgba(216, 122, 158, 0.45);
  background: rgba(0, 0, 0, 0.35);
  border-radius: 50px;
  transition: opacity 0.25s ease, transform 0.25s ease, border-color 0.25s ease;
}

.communaute-reseaux-actions .btn-instagram-reseaux .instagram-gradient-text {
  background: linear-gradient(90deg, #E7C95B 0%, #D87A9E 48%, #9279C5 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

.communaute-reseaux-actions .btn-instagram-reseaux:hover,
.communaute-reseaux-actions .btn-instagram-reseaux:focus-visible {
  opacity: 0.82;
  transform: translateY(-2px);
  border-color: rgba(216, 122, 158, 0.8);
  background: rgba(0, 0, 0, 0.5);
}

.communaute-reseaux-actions .btn-instagram-reseaux svg {
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
}

@media (max-width: 560px) {
  .communaute-reseaux {
    padding: 1.5rem 0.9rem;
    border-radius: 18px;
  }

  .communaute-reseaux-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .communaute-reseaux-actions .btn {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {

  .communaute-reseaux::before,
  .communaute-reseaux::after {
    filter: none;
  }

  .communaute-reseaux-label::before {
    animation: none;
  }
}

.lien-instagram-footer {
  background: linear-gradient(90deg, #E7C95B 0%, #D87A9E 48%, #9279C5 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  font-weight: 600;
  transition: opacity 0.25s ease, transform 0.25s ease;
}

.lien-instagram-footer:hover,
.lien-instagram-footer:focus-visible {
  opacity: 0.82;
}

.footer-contact a[href*="youtube.com"] {
  background: linear-gradient(90deg, #E98287 0%, #D95A5A 55%, #E2D9D9 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  font-weight: 600;
  transition: opacity 0.25s ease;
  /* Soulignement blanc : le texte est transparent (background-clip),
     la décoration hériterait sinon d'une couleur parasite. */
  text-decoration-color: #FFFFFF;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
}

.footer-contact a[href*="youtube.com"]:hover,
.footer-contact a[href*="youtube.com"]:focus-visible {
  opacity: 0.82;
}

.lien-whatsapp-footer {
  background: linear-gradient(90deg, #A5DDB8 0%, #63C98B 52%, #DCEFE2 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  font-weight: 600;
}

.footer-contact .lien-instagram-footer,
.footer-contact .lien-tiktok,
.footer-contact .lien-whatsapp-footer,
.footer-contact a[href*="youtube.com"] {
  font-size: 0.86rem;
  font-weight: 600;
  text-decoration: underline;
  transition: opacity 0.25s ease;
}

.footer-contact .lien-tiktok-handle {
  font-weight: 600;
}

.footer-contact .lien-tiktok:hover,
.footer-contact .lien-tiktok:focus-visible {
  opacity: 0.82;
  transform: none;
}


/* @iamwum du footer : dégradé Instagram identique au hero RM Club
   + soulignement blanc (comme YouTube WUM). */
.footer-contact .lien-instagram {
  background: linear-gradient(90deg, #E7C95B 0%, #D87A9E 48%, #9279C5 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  font-size: 0.86rem;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: #FFFFFF;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
  transition: opacity 0.25s ease;
}

.footer-contact .lien-instagram:hover,
.footer-contact .lien-instagram:focus-visible {
  opacity: 0.82;
}

.footer-cta-whatsapp-label {
  background: linear-gradient(90deg, #FFFFFF 0%, #D8FFE5 52%, #8FF0B1 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  font-weight: 800;
}

/* ------------------------------------------------------------------
   5. SECTIONS & LAYOUT GÉNÉRAL
   ------------------------------------------------------------------ */
section {
  padding: var(--padding-section);
  width: 100%;
}

.section-conteneur {
  max-width: var(--max-largeur);
  margin: 0 auto;
  width: 100%;
}

/* Les régles .section-label sont définies plus haut (ligne 413) avec le style glassmorphism complet. */
.fond-sombre .section-label {
  color: var(--aqua-marine);
}

.fond-sombre-2 .section-label {
  color: var(--aqua-marine);
}

.fond-clair .section-label {
  color: var(--bleu-principal);
}

.section-titre {
  font-size: 2.1rem;
  font-size: clamp(2rem, 5vw, 3rem);
  text-align: center;
  margin-bottom: 1rem;
  line-height: 1.1;
}

/* H1 HERO — main titles : inline, nowrap, une seule ligne.
   La taille responsive est définie PAGE PAR PAGE (inline sur chaque <h1>),
   calibrée sur la longueur exacte du titre de chaque page. */
h1.section-titre {
  display: inline-block;
  font-size: clamp(2.2rem, 8vw, 3.5rem);
  white-space: nowrap;
  overflow: visible;
  max-width: 100%;
  letter-spacing: -0.02em;
}

.fond-sombre .section-titre {
  color: var(--blanc);
}

.fond-sombre-2 .section-titre {
  color: var(--blanc);
}

.fond-clair .section-titre {
  color: var(--texte-sombre);
}

.section-intro {
  text-align: center;
  max-width: 660px;
  margin: 0 auto 1.6rem auto;
  margin: 0 auto clamp(1.5rem, 3vw, 2rem) auto;
  font-size: 1.15rem;
}

.fond-sombre .section-intro {
  color: #C8C8DA;
}

.fond-sombre-2 .section-intro {
  color: #C8C8DA;
}

.fond-clair .section-intro {
  color: #4E4E62;
}

.section-photo {
  position: sticky;
  top: 0;
  isolation: isolate;
}

/* Voile sombre doux (lisibilité texte) */
.section-photo::before {
  content: '';
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  background: var(--overlay-photo);
  z-index: 0;
  pointer-events: none;
}

/* Voile lumineux subtil — booste l'exposition sans laver la photo */
.section-photo::after {
  content: '';
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  background:
    radial-gradient(ellipse at center,
      rgba(255, 255, 255, 0.10) 0%,
      rgba(255, 255, 255, 0) 65%),
    linear-gradient(180deg,
      rgba(255, 255, 255, 0.06) 0%,
      rgba(255, 255, 255, 0) 50%,
      rgba(0, 0, 0, 0.15) 100%);
  z-index: 0;
  pointer-events: none;
  mix-blend-mode: screen;
}

.section-photo>* {
  position: sticky;
  top: 0;
  z-index: 1;
}

/* Éclaircit l'image de fond (boost luminosité) — spécificité (0,1,1) gagne
   sur .fond-sombre (0,1,0) pour les sections photo sur fond sombre. */
.fond-sombre.section-photo,
.section-photo.fond-sombre,
.section-photo {
  background-blend-mode: luminosity;
  background-color: rgba(255, 255, 255, 0.10);
}

/* ------------------------------------------------------------------
   SÉPARATEUR entre 2 sections photo consécutives
   Ligne dégradée aqua-marine   violet + petit halo glow,
   pour aérer la transition visuelle entre deux .section-photo.
   N'utilise pas ::before/::after pour ne pas écraser l'overlay sombre
   du carousel/photo (l'overlay reste prioritaire).
   ------------------------------------------------------------------ */
.section-photo+.section-photo,
.entete-formation+.fond-sombre-2,
.fond-sombre-2+.fond-sombre.section-photo,
.fond-sombre-2+.section-photo {
  border-top: 2px solid transparent;
  border-image: linear-gradient(90deg,
      rgba(113, 244, 179, 0) 0%,
      rgba(113, 244, 179, 0.9) 20%,
      rgba(77, 65, 217, 0.8) 50%,
      rgba(128, 61, 180, 0.9) 80%,
      rgba(128, 61, 180, 0) 100%) 1;
  box-shadow:
    0 -2px 12px -2px rgba(113, 244, 179, 0.4),
    0 -1px 24px -4px rgba(128, 61, 180, 0.3);
  position: sticky;
  top: 0;
}

.fond-sombre {
  background-color: var(--fond-sombre);
  color: var(--texte-clair);
}

.fond-sombre-2 {
  position: sticky;
  top: 0;
  isolation: isolate;
  background-color: var(--fond-sombre-2);
  background-image: url('../Image/IMG_1357.JPG');
  background-position: center center;
  background-size: cover;
  background-repeat: no-repeat;
  color: var(--texte-clair);
}

.fond-sombre-2::before {
  content: '';
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  background: var(--overlay-photo);
  z-index: 0;
  pointer-events: none;
}

.fond-sombre-2>* {
  position: sticky;
  top: 0;
  z-index: 1;
}

.fond-clair {
  position: sticky;
  top: 0;
  overflow: hidden;
  color: var(--texte-sombre);
  background:
    radial-gradient(ellipse at top left, rgba(77, 65, 217, 0.10) 0%, transparent 55%),
    radial-gradient(ellipse at bottom right, rgba(128, 61, 180, 0.12) 0%, transparent 60%),
    linear-gradient(180deg, #FFFFFF 0%, #F4F4FA 50%, #FFFFFF 100%);
}

.fond-clair::before,
.fond-clair::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  filter: blur(100px);
  pointer-events: none;
  z-index: 0;
}

.fond-clair::before {
  width: 380px;
  height: 380px;
  background: var(--aqua-marine, #71F4B3);
  top: -120px;
  right: -100px;
  opacity: 0.22;
}

.fond-clair::after {
  width: 420px;
  height: 420px;
  background: var(--violet, #803DB4);
  bottom: -140px;
  left: -120px;
  opacity: 0.18;
}

.fond-clair>* {
  position: sticky;
  top: 0;
  z-index: 1;
}

.grille-3 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
}

.grille-2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
}


/* ------------------------------------------------------------------
   6. COMPOSANTS : BOUTONS
   ------------------------------------------------------------------ */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.8rem 2rem;
  border-radius: 50px;
  font-weight: 700;
  font-family: var(--police-titre);
  font-size: 0.9rem;
  letter-spacing: 0.03em;
  transition: var(--transition-lisse);
  cursor: pointer;
  border: 2px solid transparent;
  text-decoration: none;
}

.btn-primaire {
  background: var(--gradient-bleu-violet);
  color: var(--blanc);
  box-shadow: 0 4px 20px rgba(77, 65, 217, 0.35);
}

.btn-primaire:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 30px rgba(77, 65, 217, 0.5);
  opacity: 0.92;
}

.btn-secondaire {
  /* Style « verre dépoli » — repris du bouton .btn-pdf du hero RM_Club.html
     (bordure blanche nette + voile blanc translucide + halo lumineux,
      hover : voile aqua-marine + halo aqua) */
  border: 2px solid rgba(255, 255, 255, 0.95);
  background: rgba(255, 255, 255, 0.18);
  box-shadow:
    0 0 20px rgba(255, 255, 255, 0.25),
    0 4px 16px rgba(0, 0, 0, 0.4);
  color: var(--blanc);
  font-weight: 600;
}

.btn-secondaire:hover {
  border-color: var(--aqua-marine);
  background: rgba(113, 244, 179, 0.25);
  box-shadow:
    0 0 25px rgba(113, 244, 179, 0.5),
    0 6px 20px rgba(0, 0, 0, 0.5);
  transform: translateY(-2px);
}

/* Bouton « contour » fantôme (look .btn-secondaire historique, avant verre).
   Utilisé par les formules RM_Club.html et les réseaux de ressources.html —
   la classe était référencée dans le HTML mais jamais définie en CSS. */
.btn-contour {
  background: transparent;
  border-color: rgba(240, 240, 246, 0.35);
  color: var(--blanc);
}

.btn-contour:hover {
  border-color: var(--aqua-marine);
  color: var(--aqua-marine);
  transform: translateY(-2px);
}

.btn-aqua {
  background-color: var(--aqua-marine);
  color: #03030A;
  font-weight: 800;
  box-shadow: 0 4px 20px rgba(113, 244, 179, 0.3);
}

.btn-aqua:hover {
  background-color: transparent;
  border-color: var(--aqua-marine);
  color: var(--aqua-marine);
  transform: translateY(-3px);
  box-shadow: 0 8px 30px rgba(113, 244, 179, 0.4);
}

.btn-contour-violet {
  background: transparent;
  border-color: var(--aqua-marine);
  color: var(--aqua-marine);
}

.btn-contour-violet:hover {
  background: var(--aqua-marine);
  color: #03030A;
  transform: translateY(-2px);
}

.fond-clair .btn-contour-violet {
  border-color: var(--bleu-principal);
  color: var(--bleu-principal);
}

.fond-clair .btn-contour-violet:hover {
  background: var(--bleu-principal);
  color: var(--blanc);
}


/* ------------------------------------------------------------------
   6b. COMPOSANTS : CARTES
   ------------------------------------------------------------------
   Styles réutilisables pour les cartes d'information.

   Les cartes constituent un composant fondamental du design system WUM.
   Elles existent sous plusieurs variantes :

   - .carte                  = carte générique
   - .carte-sur-photo        = carte avec photographie en arriére-plan
   - .carte-valeur           = carte utilisée dans "Nos Valeurs"

   IMPORTANT :
   Le systéme .carte-sur-photo utilise directement le background-image
   défini sur la carte HTML.

   Nous n'utilisons volontairement PAS :
   - de variable CSS --carte-bg ;
   - d'image <img> positionnée absolument ;
   - de dépendance à un pseudo-élément pour charger le fichier image.

   Cette approche est la plus robuste pour cette page car elle correspond
   au systéme qui fonctionnait déjé  avec les visuels WUM.
   ------------------------------------------------------------------ */

.carte {

  position: sticky;
  top: 0;

  isolation: isolate;

  overflow: hidden;

  padding: 1.35rem 1.2rem;

  border-radius: 18px;

  transition: var(--transition-lisse);

  background: var(--verre-sombre);

  border: 1px solid rgba(255, 255, 255, 0.12);

  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.06) inset,
    0 8px 24px rgba(7, 7, 10, 0.45),
    0 16px 48px rgba(77, 65, 217, 0.18),
    0 24px 80px rgba(128, 61, 180, 0.10);

  -webkit-backdrop-filter:
    blur(18px) saturate(1.35);
  backdrop-filter:
    blur(18px) saturate(1.35);

}

.carte:hover {

  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.08) inset,
    0 10px 28px rgba(7, 7, 10, 0.55),
    0 18px 56px rgba(77, 65, 217, 0.32),
    0 28px 96px rgba(128, 61, 180, 0.18),
    0 0 0 1px rgba(113, 244, 179, 0.22);

}


/*
   Tous les éléments placés directement dans une carte restent au-dessus
   du fond photographique et de son overlay.

   Le z-index est volontairement positif afin de conserver une hiérarchie
   claire dans le stacking context créé par .carte.
*/
.carte>* {

  position: sticky;
  top: 0;

  z-index: 2;

}


/*
   ------------------------------------------------------------------------
   CARTES SUR FOND SOMBRE
   ------------------------------------------------------------------------

   Ces cartes sont utilisées lorsque leur parent est .fond-sombre ou
   .fond-sombre-2.
*/
.fond-sombre .carte,
.fond-sombre-2 .carte {

  background:
    var(--verre-sombre);

  border:
    1px solid rgba(255, 255, 255, 0.12);

  color:
    var(--texte-clair);

}


/*
   Effet de survol sur les cartes sombres.
*/
.fond-sombre .carte:hover,
.fond-sombre-2 .carte:hover {

  transform:
    translateY(-6px);

  border-color:
    rgba(113, 244, 179, 0.35);

  box-shadow:
    0 18px 44px rgba(0, 0, 0, 0.35);

}


/*
   Titres des cartes placées sur fond sombre.
*/
.fond-sombre .carte h3,
.fond-sombre-2 .carte h3 {

  color:
    var(--blanc);

}


/*
   ------------------------------------------------------------------------
   CARTES SUR FOND CLAIR
   ------------------------------------------------------------------------

   Les cartes ordinaires utilisent le verre clair.
*/
.fond-clair .carte {

  background:
    rgba(255, 255, 255, 0.92);

  border:
    1px solid rgba(77, 65, 217, 0.20);

  box-shadow:
    0 8px 28px rgba(15, 15, 24, 0.10),
    0 2px 6px rgba(77, 65, 217, 0.08);

}


/*
   Effet de survol pour les cartes sur fond blanc.
*/
.fond-clair .carte:hover {

  transform:
    translateY(-5px);

  box-shadow:
    0 12px 35px rgba(77, 65, 217, 0.12);

  border-color:
    rgba(77, 65, 217, 0.28);

}


/*
   ------------------------------------------------------------------------
   ICÔNES
   ------------------------------------------------------------------------
*/
.carte-icone {

  width:
    44px;

  height:
    44px;

  border-radius:
    11px;

  display:
    flex;

  align-items:
    center;

  justify-content:
    center;

  margin-bottom:
    1.1rem;

  font-size:
    1.35rem;

}


/*
   Couleurs des icônes sur fond sombre.
*/
.fond-sombre .carte-icone,
.fond-sombre-2 .carte-icone {

  background:
    rgba(77, 65, 217, 0.18);

  color:
    var(--aqua-marine);

}


/*
   Couleurs des icônes sur fond clair.
*/
.fond-clair .carte-icone {

  background:
    rgba(77, 65, 217, 0.10);

  color:
    var(--bleu-principal);

}


/*
   ------------------------------------------------------------------------
   TYPOGRAPHIE DES CARTES
   ------------------------------------------------------------------------
*/
.carte h3 {

  font-size:
    1.15rem;

  margin-bottom:
    0.55rem;

}


.carte p {

  font-size:
    0.9rem;

  color:
    var(--texte-secondaire);

  line-height:
    1.6;

}


.fond-clair .carte h3 {

  color:
    var(--texte-sombre);

}


.fond-clair .carte p {

  color:
    var(--texte-secondaire-clair);

}



/* ------------------------------------------------------------------
   6c. CARTES AVEC PHOTOGRAPHIE EN ARRIÈRE-PLAN
   ------------------------------------------------------------------

   CORRECTION DÉFINITIVE DU PROBLÈME DES IMAGES
   ---------------------------------------------

   Le fond photographique est déclaré directement dans le HTML :

       style="
         background-image: url('Image/ID WUM - 11.png');
       "

   La classe .carte-sur-photo ne tente donc PAS de récupérer l'image
   depuis une variable CSS ou une balise <img>.

   Le navigateur sait exactement quoi charger.

   Le composant se décompose ainsi :

       .carte-sur-photo
              š
              Å“— background-image
              š       — photographie
              š
              Å“— ::before
              š       — overlay sombre
              š
              — contenu
                      — texte + icône

   Cette architecture est volontairement simple et prévisible.

   ------------------------------------------------------------------ */


/*
   ------------------------------------------------------------------------
   CONTENEUR PHOTO
   ------------------------------------------------------------------------

   La carte devient le contexte de positionnement de l'overlay.

   IMPORTANT :
   On ne remet PAS "background: ..." ici.

   On laisse le background-image défini directement dans le HTML.
*/
.carte-sur-photo {

  position:
    relative;

  isolation:
    isolate;

  overflow:
    hidden;

  color:
    var(--blanc);

  border:
    1px solid rgba(255, 255, 255, 0.14);

  background-color:
    #101018;

}


/*
   ------------------------------------------------------------------------
   OVERLAY PHOTOGRAPHIQUE
   ------------------------------------------------------------------------

   Ce pseudo-élément ne contient aucune image.

   Son seul rôle est d'assombrir la photographie située derriére afin
   que les titres et paragraphes restent parfaitement lisibles.

   Il est placé sous le contenu mais AU-DESSUS du background-image.
*/
.carte-sur-photo::before {

  content:
    "";

  position:
    absolute;

  inset:
    0;

  z-index:
    1;

  background:
    linear-gradient(180deg,
      rgba(7, 7, 10, 0.48) 0%,
      rgba(7, 7, 10, 0.72) 45%,
      rgba(7, 7, 10, 0.94) 100%);

  pointer-events:
    none;

}


/*
   ------------------------------------------------------------------------
   CONTENU AU-DESSUS DE L'OVERLAY
   ------------------------------------------------------------------------

   Le contenu conserve un z-index supérieur au pseudo-élément ::before.
*/
.carte-sur-photo>* {

  position:
    relative;

  z-index:
    2;

}


/*
   Titres et paragraphes des cartes photographiques.

   Le blanc est imposé pour conserver le contraste quel que soit le visuel
   utilisé comme arrière-plan.
*/
.carte-sur-photo h3,
.carte-sur-photo p {

  color:
    var(--blanc) !important;

  text-shadow:
    0 2px 6px rgba(0, 0, 0, 0.80);

}


/*
   ------------------------------------------------------------------------
   EFFET DE SURVOL
   ------------------------------------------------------------------------

   On conserve le déplacement global de la carte.

   L'image elle-même n'est pas transformée par CSS : cela permet de garder
   le background-image parfaitement stable et évite les artefacts.
*/
.carte-sur-photo:hover {

  transform:
    translateY(-6px);

  border-color:
    rgba(113, 244, 179, 0.38);

  box-shadow:
    0 20px 50px rgba(0, 0, 0, 0.35);

}


/*
   ------------------------------------------------------------------------
   CARTES DE VALEURS
   ------------------------------------------------------------------------

   Les quatre cartes de "Nos Valeurs" sont légérement plus hautes afin
   d'obtenir une composition équilibrée dans la grille.
*/
.carte-valeur {

  min-height:
    380px;

  color:
    var(--blanc);

}

.carte-valeur::before {

  background:
    linear-gradient(135deg,
      rgba(7, 7, 10, 0.55) 0%,
      rgba(14, 10, 31, 0.42) 45%,
      rgba(7, 7, 10, 0.70) 100%);

}

.carte-valeur::after {

  content:
    "";

  position:
    absolute;

  left:
    0;

  right:
    0;

  bottom:
    0;

  height:
    3px;

  background:
    linear-gradient(90deg,
      #71F4B3 0%,
      #4D41D9 50%,
      #803DB4 100%);

  z-index:
    1;

  pointer-events:
    none;

  opacity:
    0.85;

}


/*
   Le contenu des cartes de valeurs reste blanc sur photographie.
*/
.carte-valeur h3,
.carte-valeur p {

  color:
    var(--blanc) !important;

  text-shadow:
    0 2px 8px rgba(0, 0, 0, 0.65);

}

.carte-valeur h3 {
  font-size: 1.35rem;
  margin-bottom: 0.8rem;
}

.carte-valeur p {
  font-size: 1.05rem;
  line-height: 1.7;
}



/* ------------------------------------------------------------------
   6d. ACCESSIBILITÉ / FALLBACK
   ------------------------------------------------------------------

   Si l'utilisateur active la réduction des transparences, on désactive
   les effets glassmorphism afin de conserver une interface lisible.

   La photographie reste affichée, mais l'overlay garantit tout de même
   un contraste convenable.
   ------------------------------------------------------------------ */

@media (prefers-reduced-transparency: reduce) {

  .carte {

    -webkit-backdrop-filter:
      none;
    backdrop-filter:
      none;

  }


  .carte-sur-photo {

    background-color:
      #0F0F18;

  }


  .carte-sur-photo::before {

    background:
      rgba(7, 7, 10, 0.58);

  }

}

/* ------------------------------------------------------------------
   7. TIMELINE
   ------------------------------------------------------------------ */
.timeline {
  position: sticky;
  top: 0;
  max-width: 820px;
  margin: 0 auto;
  padding: 2rem 0;
}

.timeline::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 2px;
  height: 100%;
  background: linear-gradient(180deg, var(--bleu-principal) 0%, var(--violet) 100%);
  opacity: 0.35;
}

.timeline-item {
  position: sticky;
  top: 0;
  width: 50%;
  padding: 1.5rem 2.5rem;
}

.timeline-item:nth-child(odd) {
  left: 0;
  text-align: right;
}

.timeline-item:nth-child(even) {
  left: 50%;
  text-align: left;
}

.timeline-point {
  position: absolute;
  top: 2rem;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--aqua-marine);
  border: 3px solid var(--bleu-principal);
  z-index: 5;
}

.timeline-item:nth-child(odd) .timeline-point {
  right: -7px;
}

.timeline-item:nth-child(even) .timeline-point {
  left: -7px;
}

.timeline-date {
  font-family: var(--police-titre);
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--aqua-marine);
  margin-bottom: 0.5rem;
}

.timeline-contenu {
  background: var(--verre-sombre);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 14px;
  padding: 1.5rem;
  -webkit-backdrop-filter: blur(16px) saturate(1.3);
  backdrop-filter: blur(16px) saturate(1.3);
}

.timeline-contenu h3 {
  font-size: 1.1rem;
  color: var(--blanc);
  margin-bottom: 0.5rem;
}

.timeline-contenu p {
  font-size: 0.9rem;
  color: var(--texte-secondaire);
  line-height: 1.65;
}

@media (max-width: 768px) {
  .timeline::before {
    left: 20px;
  }

  .timeline-item {
    width: 100%;
    left: 0 !important;
    text-align: left !important;
    padding-left: 50px;
    padding-right: 0;
  }

  .timeline-point {
    left: 13px !important;
    right: auto !important;
  }
}


/* ------------------------------------------------------------------
   8. LES 5 SIGNES DU WAKE UP
   ------------------------------------------------------------------ */
.signes-grille {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1.5rem;
  margin-top: 3rem;
}

.signe-carte {
  position: sticky;
  top: 0;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(77, 65, 217, 0.2);
  border-radius: 16px;
  padding: 2rem 1.5rem;
  text-align: center;
  cursor: default;
  transition: var(--transition-lisse);
  overflow: hidden;
}

.signe-carte::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: var(--gradient-bleu-violet);
  opacity: 0;
  transition: var(--transition-lisse);
}

.signe-carte:hover {
  border-color: rgba(77, 65, 217, 0.5);
  transform: translateY(-5px);
  box-shadow: 0 15px 40px rgba(77, 65, 217, 0.15);
}

.signe-carte:hover::before {
  opacity: 1;
}

.signe-numero {
  font-family: var(--police-titre);
  font-size: 2.5rem;
  font-weight: 900;
  color: rgba(113, 244, 179, 0.12);
  line-height: 1;
  margin-bottom: 0.75rem;
  transition: var(--transition-lisse);
}

.signe-carte:hover .signe-numero {
  color: rgba(113, 244, 179, 0.35);
}

.signe-icone {
  font-size: 2rem;
  margin-bottom: 1rem;
  display: block;
}

.signe-titre {
  font-size: clamp(0.95rem, 2.2vw, 1.25rem);
  font-weight: 700;
  color: var(--blanc);
  margin-bottom: 0.6rem;
  font-family: var(--police-titre);
}

.signe-description {
  font-size: 0.85rem;
  color: var(--texte-secondaire);
  line-height: 1.6;
}

/* --- VERSION PHOTO AVANCÉE (Design Premium) --- */
.signes-grille-featured {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 2rem;
  margin-top: 3rem;
}

.signe-carte-photo {
  position: sticky;
  top: 0;
  border-radius: 18px;
  overflow: hidden;
  min-height: auto;
  border: 1px solid rgba(77, 65, 217, 0.25);
  transition: var(--transition-lisse);
  background: var(--fond-sombre-2);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3);
}

.signe-carte-photo:hover {
  transform: translateY(-6px);
  border-color: rgba(113, 244, 179, 0.45);
  box-shadow: 0 20px 50px rgba(77, 65, 217, 0.25);
}

.signe-carte-photo-visuel {
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  background: var(--gradient-bleu-violet);
}

.signe-carte-photo-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(100%) contrast(1.2);
  opacity: 0.55;
  transition: filter 0.5s ease, opacity 0.5s ease, transform 0.6s ease;
}

.signe-carte-photo:hover .signe-carte-photo-img:not(.image-manquante) {
  filter: grayscale(0%) contrast(1.1);
  opacity: 0.75;
  transform: scale(1.05);
}

.signe-carte-photo-img.image-manquante {
  display: none;
}

.signe-carte-photo-overlay {
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  background: linear-gradient(180deg,
      rgba(7, 7, 10, 0.62) 0%,
      rgba(7, 7, 10, 0.82) 42%,
      rgba(7, 7, 10, 0.96) 100%);
  transition: var(--transition-lisse);
}

.signe-carte-photo:hover .signe-carte-photo-overlay {
  background: linear-gradient(180deg,
      rgba(77, 65, 217, 0.38) 0%,
      rgba(7, 7, 10, 0.72) 48%,
      rgba(7, 7, 10, 0.94) 100%);
}

/* Mobile / tactile : le :hover n'existe pas de faé§on fiable sur écrans
   tactiles   on applique directement la version claire (celle du hover
   desktop) pour que l'overlay ne paraisse pas trop sombre en mobile. */
@media (max-width: 768px) {
  .signe-carte-photo-overlay {
    background: linear-gradient(180deg,
        rgba(77, 65, 217, 0.25) 0%,
        rgba(7, 7, 10, 0.60) 48%,
        rgba(7, 7, 10, 0.82) 100%);
  }

  /* Image légèrement plus présente : moins désaturée, plus lumineuse
     (équivalent tactile du rendu hover desktop). */
  .signe-carte-photo-img:not(.image-manquante) {
    filter: grayscale(15%) contrast(1.05);
    opacity: 0.80;
  }
}

.signe-carte-photo-contenu {
  position: sticky;
  top: 0;
  z-index: 2;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 1.75rem 1.5rem;
  text-align: left;
}

.signe-carte-photo .signe-numero {
  font-size: 2.5rem;
  font-weight: 900;
  color: var(--aqua-marine);
  margin-bottom: 0.5rem;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);
}

.signe-carte-photo .signe-titre {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--blanc);
  margin-bottom: 0.65rem;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
}

.signe-carte-photo .signe-description {
  font-size: 0.88rem;
  color: rgba(240, 240, 246, 0.88);
  line-height: 1.6;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}

.section-signes-featured {
  background: linear-gradient(160deg, #07070A 0%, #1a1240 50%, #0F0F18 100%);
  padding: clamp(2.5rem, 6vw, 4.5rem) clamp(1rem, 4vw, 2rem);
  position: sticky;
  top: 0;
  overflow: hidden;
}

.section-signes-featured::before {
  content: '';
  position: absolute;
  top: -30%;
  right: -10%;
  width: 50%;
  height: 80%;
  background: radial-gradient(circle, rgba(77, 65, 217, 0.2) 0%, transparent 70%);
  pointer-events: none;
}

.section-signes-featured .section-titre,
.section-signes-featured .signe-titre {
  color: var(--blanc);
}

.section-signes-featured .section-intro {
  color: var(--texte-secondaire);
}


/* ------------------------------------------------------------------
   9. ACTIVITÉS & ÉVÉNEMENTS
   ------------------------------------------------------------------ */
.activite-vedette {
  background: linear-gradient(135deg, #3A2A4D 0%, #2A1F38 50%, #3A2A4D 100%);
  border: 1px solid rgba(128, 61, 180, 0.35);
  border-radius: 20px;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  min-height: auto;
  margin-bottom: 2rem;
  box-shadow:
    0 12px 40px rgba(128, 61, 180, 0.35),
    0 4px 16px rgba(77, 65, 217, 0.20);
  position: sticky;
  top: 0;
}

/* Halo mauve visible en haut-droite (cohérent avec charte WUM) */
.activite-vedette::before {
  content: "";
  position: absolute;
  top: -30%;
  right: -10%;
  width: 60%;
  height: 120%;
  background: radial-gradient(circle, rgba(128, 61, 180, 0.35) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
}

.activite-vedette>* {
  position: sticky;
  top: 0;
  z-index: 1;
}

.activite-vedette-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.85;
}

.activite-vedette-contenu {
  padding: clamp(1.25rem, 3.5vw, 2rem);
  display: flex;
  flex-direction: column;
  justify-content: center;
  color: var(--blanc);
  border: 1px solid rgba(184, 179, 255, 0.18);
  border-radius: 0px 0px 24px 24px; /*  Border fixed babyyyy  */
  -webkit-backdrop-filter: blur(12px) saturate(1.3);
  backdrop-filter: blur(12px) saturate(1.3);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.08) inset,
    0 12px 40px rgba(0, 0, 0, 0.30);
  background:
    /* Voile sombre global (assombrissement marqué) */
    linear-gradient(135deg,
      rgba(7, 7, 10, 0.55) 0%,
      rgba(7, 7, 10, 0.40) 50%,
      rgba(7, 7, 10, 0.55) 100%),
    /* Bande aqua diagonale trés atténuée (effet subtil) */
    linear-gradient(115deg,
      transparent 0%,
      transparent 42%,
      rgba(113, 244, 179, 0.04) 47%,
      transparent 52%,
      transparent 100%),
    /* Bande sombre diagonale (profondeur) */
    linear-gradient(115deg,
      transparent 0%,
      transparent 68%,
      rgba(7, 7, 10, 0.55) 73%,
      rgba(7, 7, 10, 0.70) 78%,
      transparent 85%,
      transparent 100%),
    /* Dégradé oblique corporate : bleu nuit   violet profond   bleu nuit (moins flashy) */
    linear-gradient(115deg,
      #0E0A1F 0%,
      #1A1140 18%,
      #2A1F60 38%,
      #3A2A78 52%,
      #2D1A60 68%,
      #1A1140 85%,
      #0E0A1F 100%);
  position: sticky;
  top: 0;
}

.badge-vedette {
  position: sticky;
  top: 0;
  display: inline-flex;
  align-items: center;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.09);
  border: 1px solid rgba(235, 229, 249, 0.3);
  border-radius: 12px;
  color: #EEE9FA;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  padding: 0.4rem 1rem;
  margin-bottom: 1.25rem;
  width: fit-content;
  -webkit-backdrop-filter: blur(14px) saturate(1.2);
  backdrop-filter: blur(14px) saturate(1.2);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.24) inset,
    0 6px 18px rgba(7, 7, 10, 0.18);
}

.badge-vedette::before {
  content: "";
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  background: linear-gradient(105deg, transparent 25%, rgba(255, 255, 255, 0.14) 50%, transparent 75%);
  transform: translateX(-120%);
  animation: badge-liquid-reflet 5s ease-in-out 1.5s infinite;
  pointer-events: none;
}

@keyframes badge-liquid-reflet {

  0%,
  35% {
    transform: translateX(-120%);
  }

  65%,
  100% {
    transform: translateX(120%);
  }
}

/* Badge totalement round (variante pill/cercle — classe additionnelle) */
.badge-vedette.badge-totalement-round {
  border-radius: 999px;
}

/* Centre le badge vedette horizontalement dans son conteneur flex */
.badge-vedette {
  margin-left: auto;
  margin-right: auto;
}

@media (prefers-reduced-motion: reduce) {
  .badge-vedette::before {
    animation: none;
  }
}

.activite-vedette-contenu h2 {
  font-size: 2.4rem;
  font-size: clamp(2rem, 4vw, 3rem);
  font-weight: 900;
  margin-bottom: 1rem;
  color: var(--blanc);
}

.activite-vedette-contenu p {
  font-size: 0.95rem;
  opacity: 0.9;
  margin-bottom: 1.5rem;
  line-height: 1.7;
}

.activite-meta-info {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  margin-bottom: 2rem;
  font-size: 0.9rem;
}

.activite-meta-info span {
  opacity: 0.85;
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  line-height: 1.5;
  min-width: 0;
  flex-wrap: nowrap;
}

.activite-meta-info>span>.icone-meta {
  flex: 0 0 auto;
  margin-top: 0.18em;
}

.activite-meta-info>span>strong {
  flex: 0 0 auto;
  white-space: nowrap;
  margin-right: 0.15rem;
}

.activite-meta-info>span>strong+* {
  flex: 0 0 auto;
  min-width: 0;
  overflow-wrap: anywhere;
  white-space: normal;
}

/* ------------------------------------------------------------------
   Section événement Vedette (#rm5) — fond clair pour contraster
   avec la box .activite-vedette (dégradé bleu-violet flashy).
   Dégradé discret cohérent avec la charte graphique WUM.
   ------------------------------------------------------------------ */
#rm5 {
  background:
    radial-gradient(ellipse at top left, rgba(77, 65, 217, 0.06) 0%, transparent 55%),
    radial-gradient(ellipse at bottom right, rgba(128, 61, 180, 0.08) 0%, transparent 60%),
    linear-gradient(180deg, #FFFFFF 0%, #F8F8FC 50%, #FFFFFF 100%);
  color: var(--texte-sombre, #121218);
  position: sticky;
  top: 0;
  overflow: hidden;
}

/* Halo trés subtil (adoucissement) */
#rm5::before {
  content: "";
  position: absolute;
  top: -20%;
  right: -10%;
  width: 50%;
  height: 80%;
  background: radial-gradient(circle, rgba(113, 244, 179, 0.08) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
}

#rm5>* {
  position: sticky;
  top: 0;
  z-index: 1;
}

/* Couleurs de la section #rm5 (labels, labels Vedette) sur fond clair */
#rm5 .section-label {
  color: var(--bleu-principal, #4D41D9);
}

#rm5 .section-titre {
  color: var(--texte-sombre, #121218);
}

/* Boutons d'action sous l'événement vedette (responsive) */
.activite-vedette-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 0.5rem;
  position: sticky;
  top: 0;
  z-index: 1;
  justify-content: center;
}

.activite-vedette-actions .btn {
  flex: 1 1 auto;
  min-width: 180px;
  text-align: center;
  padding: 0.75rem 1.25rem;
  font-size: 0.9rem;
  white-space: normal;
  word-wrap: break-word;
  line-height: 1.3;
}

.activite-vedette-actions .btn:hover {
  transform: translateY(-2px);
}

/* ------------------------------------------------------------------
   CTA PRINCIPAUX — Effets phosphorescents "breathe" (quête de jeu vidéo)
   - .cta-conference : phosphorescence aqua-marine (couleur du btn)
   - .cta-banquet    : phosphorescence violette (contour + halo)
   - N'affecte pas la grille ni le responsive
   - Respecte prefers-reduced-motion
   ------------------------------------------------------------------ */
.cta-principal {
  position: sticky;
  top: 0;
  animation: cta-breathe 2.6s ease-in-out infinite;
  will-change: transform, box-shadow, filter;
}

/* Phosphorescence AQUA-MARINE pour le CTA Conférence (btn-aqua) */
.cta-conference {
  animation-name: cta-breathe-aqua;
}

/* Phosphorescence VIOLETTE pour le CTA Banquet (btn-secondaire) */
.cta-banquet {
  border-color: rgba(113, 244, 179, 0.55);
  animation-name: cta-breathe-violet;
}

/* Keyframe générique (au cas où) */
@keyframes cta-breathe {

  0%,
  100% {
    transform: scale(1);
    filter: brightness(1);
  }

  50% {
    transform: scale(1.025);
    filter: brightness(1.10);
  }
}

/* Breathe aqua — scale léger + halo aqua-marine qui respire */
@keyframes cta-breathe-aqua {

  0%,
  100% {
    transform: scale(1);
    box-shadow:
      0 0 0 0 rgba(113, 244, 179, 0.55),
      0 0 16px 2px rgba(113, 244, 179, 0.35),
      0 4px 20px rgba(77, 65, 217, 0.35);
    filter: brightness(1) drop-shadow(0 0 0 rgba(113, 244, 179, 0));
  }

  50% {
    transform: scale(1.03);
    box-shadow:
      0 0 0 6px rgba(113, 244, 179, 0),
      0 0 26px 6px rgba(113, 244, 179, 0.65),
      0 8px 30px rgba(77, 65, 217, 0.5);
    filter: brightness(1.10) drop-shadow(0 0 8px rgba(113, 244, 179, 0.65));
  }
}

/* Breathe violet — scale léger + halo violet qui respire */
@keyframes cta-breathe-violet {

  0%,
  100% {
    transform: scale(1);
    box-shadow:
      0 0 0 0 rgba(128, 61, 180, 0.55),
      0 0 16px 2px rgba(128, 61, 180, 0.30),
      inset 0 0 0 1px rgba(113, 244, 179, 0.35);
    filter: brightness(1) drop-shadow(0 0 0 rgba(128, 61, 180, 0));
  }

  50% {
    transform: scale(1.03);
    box-shadow:
      0 0 0 6px rgba(128, 61, 180, 0),
      0 0 26px 6px rgba(128, 61, 180, 0.55),
      inset 0 0 0 1px rgba(113, 244, 179, 0.65);
    filter: brightness(1.10) drop-shadow(0 0 8px rgba(128, 61, 180, 0.55));
  }
}

/* Hover : animation plus rapide + intensité boostée */
.cta-principal:hover,
.cta-principal:focus-visible {
  animation-duration: 1.3s;
  filter: brightness(1.15) drop-shadow(0 0 12px currentColor);
}

.cta-principal:focus-visible {
  outline: 2px solid var(--aqua-marine, #71F4B3);
  outline-offset: 3px;
}

/* A11y : désactiver pour les utilisateurs réduisant les animations */
@media (prefers-reduced-motion: reduce) {

  .cta-principal,
  .cta-conference,
  .cta-banquet {
    animation: none !important;
  }
}

/* Responsive : mobile — boutons empilés pleine largeur */
@media (max-width: 600px) {
  .activite-vedette-actions {
    flex-direction: column;
    gap: 0.6rem;
  }

  .activite-vedette-actions .btn {
    width: 100%;
    min-width: 0;
    padding: 0.85rem 1rem;
    font-size: 0.88rem;
  }
}

/* ------------------------------------------------------------------
   RM Club — Programme phare (section .activite-vedette sur fond sombre)
   Cohérent avec la charte WUM : accents aqua-marine + violet.
   ------------------------------------------------------------------ */
#rm-club {
  position: sticky;
  top: 0;
  overflow: hidden;
}

#rm-club::before {
  content: "";
  position: absolute;
  top: -30%;
  right: -15%;
  width: 50%;
  height: 90%;
  background: radial-gradient(circle, rgba(113, 244, 179, 0.08) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
}

#rm-club>* {
  position: sticky;
  top: 0;
  z-index: 1;
}

#rm-club .section-label {
  color: var(--aqua-marine, #71F4B3);
}

#rm-club .section-titre {
  color: var(--blanc);
}

/* CTA RM Club — phosphorescence aqua-marine */
.cta-rm-club {
  animation-name: cta-breathe-aqua;
}

.activites-grille {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 2rem;
}

.activite-carte {
  position: sticky;
  top: 0;
  isolation: isolate;
  background: var(--verre-sombre);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 18px;
  overflow: hidden;
  transition: var(--transition-lisse);
  -webkit-backdrop-filter: blur(18px) saturate(1.35);
  backdrop-filter: blur(18px) saturate(1.35);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.22);
}

.activite-carte:hover {
  transform: translateY(-5px);
  border-color: rgba(77, 65, 217, 0.3);
  box-shadow: 0 15px 40px rgba(0, 0, 0, 0.3);
}

.activite-carte-image {
  width: 100%;
  height: clamp(140px, 30vw, 200px);
  object-fit: cover;
  transition: transform 0.5s ease;
}

.activite-carte:hover .activite-carte-image {
  transform: scale(1.03);
}

.activite-carte-corps {
  padding: 1.75rem;
}

.activite-badge {
  display: inline-block;
  background: rgba(113, 244, 179, 0.1);
  color: var(--aqua-marine);
  font-size: 0.7rem;
  font-weight: 700;
  padding: 0.25rem 0.7rem;
  border-radius: 4px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 0.75rem;
}

.activite-titre {
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--blanc);
  margin-bottom: 0.5rem;
  font-family: var(--police-titre);
}

.activite-description {
  font-size: 0.88rem;
  color: var(--texte-secondaire);
  line-height: 1.65;
  margin-bottom: 1.25rem;
}

.activite-infos {
  display: flex;
  gap: 1rem;
  font-size: 0.8rem;
  color: var(--texte-secondaire);
  margin-bottom: 1.5rem;
  flex-wrap: wrap;
}

.activite-infos span {
  display: flex;
  align-items: center;
  gap: 0.3rem;
}


/* ------------------------------------------------------------------
   10. FORMULAIRES
   ------------------------------------------------------------------ */
.form-section {
  max-width: 620px;
  margin: 0 auto;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.07);
  padding: clamp(1.25rem, 4vw, 2.5rem);
  border-radius: 18px;
  box-shadow: var(--glass-shadow);
}

.form-groupe {
  margin-bottom: 1.5rem;
}

.form-etiquette {
  display: block;
  font-weight: 600;
  margin-bottom: 0.5rem;
  font-size: 0.875rem;
  color: var(--texte-clair);
}

.form-controle {
  width: 100%;
  padding: 0.85rem 1.1rem;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: var(--texte-clair);
  font-family: var(--police-corps);
  font-size: 0.92rem;
  transition: var(--transition-rapide);
}

.form-controle:focus,
.form-controle:focus-visible {
  outline: 3px solid var(--focus-anneau);
  outline-offset: 2px;
  border-color: var(--aqua-marine);
  background: rgba(77, 65, 217, 0.12);
  box-shadow: 0 0 0 3px rgba(113, 244, 179, 0.25);
}

.form-controle::placeholder {
  color: var(--texte-secondaire);
}

select.form-controle {
  -webkit-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%238A8A9A' d='M6 8L0 0h12z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 1rem center;
  padding-right: 2.5rem;
}

.case-a-cocher-groupe {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin-top: 0.5rem;
}

.case-a-cocher-etiquette {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  font-size: 0.88rem;
  cursor: pointer;
  color: var(--texte-clair);
  line-height: 1.5;
}

.case-a-cocher-etiquette input[type="checkbox"] {
  margin-top: 0.2rem;
  accent-color: var(--bleu-principal);
  width: 16px;
  height: 16px;
  cursor: pointer;
}


/* ------------------------------------------------------------------
   11. ONGLETS (Tabs)
   ------------------------------------------------------------------ */
.onglets-conteneur {
  max-width: var(--max-largeur);
  margin: 0 auto;
}

.onglets-nav {
  display: flex;
  justify-content: center;
  gap: 0.5rem;
  margin-bottom: 3rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.07);
  padding-bottom: 0;
  flex-wrap: wrap;
}

.onglet-btn {
  background: none;
  border: none;
  font-family: var(--police-titre);
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--texte-clair);
  padding: 0.75rem 1.5rem;
  cursor: pointer;
  position: sticky;
  top: 0;
  transition: var(--transition-rapide);
  border-radius: 8px 8px 0 0;
}

.onglet-btn:hover {
  color: var(--texte-clair);
}

.onglet-btn.actif {
  color: var(--aqua-marine);
}

.onglet-btn.actif::after {
  content: '';
  position: absolute;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--aqua-marine);
}

.panneau-onglet {
  display: none;
}

.panneau-onglet.actif {
  display: block;
  animation: apparaitre 0.4s ease forwards;
}

@keyframes apparaitre {
  from {
    opacity: 0;
    transform: translateY(12px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}


/* ------------------------------------------------------------------
   12. MODULE D'ONBOARDING
   ------------------------------------------------------------------ */
.wizard-onboarding {
  max-width: 680px;
  margin: 0 auto;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: 20px;
  padding: clamp(1.25rem, 4vw, 2.5rem);
  box-shadow: var(--glass-shadow);
}

.barre-progression-ext {
  height: 5px;
  background: rgba(255, 255, 255, 0.06);
  border-radius: 3px;
  margin-bottom: 2rem;
  overflow: hidden;
}

.barre-progression-int {
  height: 100%;
  background: var(--gradient-aqua);
  border-radius: 3px;
  width: 0%;
  transition: width 0.5s ease;
}

.etape-question {
  display: none;
}

.etape-question.active {
  display: block;
}

.question-texte {
  font-size: 1.2rem;
  font-weight: 600;
  margin-bottom: 1.5rem;
  color: var(--blanc);
  font-family: var(--police-titre);
}

.options-reponse {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin-bottom: 2rem;
}

.btn-option {
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  padding: 1rem 1.4rem;
  border-radius: 12px;
  color: var(--texte-clair);
  text-align: left;
  font-family: var(--police-corps);
  font-size: 0.92rem;
  cursor: pointer;
  transition: var(--transition-rapide);
}

.btn-option:hover {
  background: rgba(77, 65, 217, 0.1);
  border-color: var(--bleu-principal);
}

.btn-option.selectionne {
  background: rgba(77, 65, 217, 0.2);
  border-color: var(--aqua-marine);
  box-shadow: 0 0 12px rgba(113, 244, 179, 0.12);
}

.pied-wizard {
  display: flex;
  justify-content: space-between;
  align-items: center;
}


/* ------------------------------------------------------------------
   13. TABLEAU DE BORD DE MOBILISATION
   ------------------------------------------------------------------ */
.dashboard-grille {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 2rem;
}

@media (max-width: 992px) {
  .dashboard-grille {
    grid-template-columns: 1fr;
  }
}

.db-panneau {
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: 18px;
  padding: 2rem;
}

.db-titre {
  font-size: 1.4rem;
  margin-bottom: 1.5rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.07);
  padding-bottom: 0.75rem;
  color: var(--blanc);
}

.taches-liste,
.talents-liste {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.tache-item {
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 14px;
  padding: 1.4rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 1rem;
  transition: var(--transition-rapide);
}

.tache-item:hover {
  border-color: rgba(113, 244, 179, 0.2);
}

.talent-item {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.02);
}

.avatar-talent {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--gradient-bleu-violet);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--blanc);
  flex-shrink: 0;
}

.btn-attribuer {
  background: transparent;
  border: 1px solid var(--aqua-marine);
  color: var(--aqua-marine);
  padding: 0.4rem 1rem;
  font-size: 0.8rem;
  border-radius: 8px;
  cursor: pointer;
  font-family: var(--police-corps);
  transition: var(--transition-rapide);
}

.btn-attribuer:hover {
  background: var(--aqua-marine);
  color: var(--noir);
}


/* ------------------------------------------------------------------
   14. FOOTER
   ------------------------------------------------------------------ */
body>footer {
  position: sticky;
  top: 0;
  background:
    radial-gradient(ellipse 50% 40% at 80% 0%, rgba(128, 61, 180, 0.18) 0%, transparent 60%),
    radial-gradient(ellipse 50% 40% at 10% 100%, rgba(77, 65, 217, 0.15) 0%, transparent 60%),
    linear-gradient(180deg, #06060C 0%, #03030A 100%);
  border-top: 1px solid rgba(113, 244, 179, 0.10);
  padding: clamp(2.5rem, 6vw, 5rem) clamp(1rem, 4vw, 2rem) clamp(1.5rem, 4vw, 2rem);
  color: var(--texte-footer);
  overflow: hidden;
  isolation: isolate;
}

/* Les modales sont declarees inline sur plusieurs pages : !important garantit
   le même comportement de viewport sur Safari et les navigateurs modernes. */
@supports (height: 100svh) {
  .rm5-modal {
    max-height: calc(100svh - 2rem) !important;
  }

  .maintenance {
    min-height: calc(100svh - 70px - 320px) !important;
  }
}

/* Pop-up RM5 — responsive sans barre de scroll (sur tous types d'écran)
   Sélecteur #rm5-popup .rm5-modal (spécificité 0,1,1) + !important pour primer
   sur les blocs <style> inline des pages HTML (0,1,0). */
#rm5-popup .rm5-modal {
  max-height: calc(100svh - 2rem) !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  padding: 1.5rem 1.25rem 1.75rem !important;
}
#rm5-popup .rm5-image-cadre img {
  max-height: 55vh;
}
@media (max-width: 768px) {
  #rm5-popup .rm5-overlay {
    padding: 0.5rem;
  }
  #rm5-popup .rm5-modal {
    padding: 1.1rem 0.95rem 1.35rem !important;
    border-radius: 20px;
  }
  #rm5-popup .rm5-titre { font-size: 1.15rem; }
  #rm5-popup .rm5-intro, #rm5-popup .rm5-citation { font-size: 0.8rem; }
  #rm5-popup .rm5-image-cadre img { max-height: 42vh; }
}
@media (max-width: 480px) {
  #rm5-popup .rm5-modal {
    padding: 0.95rem 0.8rem 1.15rem !important;
    border-radius: 16px;
  }
  #rm5-popup .rm5-titre { font-size: 1rem; }
  #rm5-popup .rm5-intro, #rm5-popup .rm5-citation { font-size: 0.74rem; }
  #rm5-popup .rm5-badge { font-size: 0.6rem; }
  #rm5-popup .rm5-lien-label, #rm5-popup .rm5-lien-url { font-size: 0.66rem; }
  #rm5-popup .rm5-image-cadre img { max-height: 36vh; }
}

/* Halo aqua-marine décoratif en haut */
body>footer::before {
  content: "";
  position: absolute;
  top: -100px;
  left: 50%;
  transform: translateX(-50%);
  width: 600px;
  height: 200px;
  border-radius: 50%;
  background: var(--aqua-marine, #71F4B3);
  filter: blur(140px);
  opacity: 0.06;
  pointer-events: none;
  z-index: -1;
}

body>footer p,
body>footer a,
.footer-bas p,
.footer-bas a,
.footer-contact p,
.footer-contact a {
  color: var(--texte-footer);
}

.footer-grille {
  max-width: var(--max-largeur);
  margin: 0 auto 3rem auto;
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1.2fr;
  gap: 2rem;
}

.footer-grille>* {
  min-width: 0;
}

.footer-mobile-details {
  display: contents;
}

.footer-mobile-details>.footer-mobile-content {
  display: contents;
}

/* Desktop : les enfants de NAVIGATION sont toujours visibles,
   et le summary n'est plus affiché comme élément cliquable */
@media (min-width: 601px) {
  .footer-mobile-details {
    display: block;
  }
  .footer-mobile-details>summary {
    display: none !important;
  }
  .footer-mobile-details>.footer-mobile-content {
    display: block !important;
  }
  /* Override browser default: show details content on desktop */
  .footer-mobile-details:not([open])>.footer-mobile-content {
    display: block !important;
  }
  .footer-mobile-details:not([open])>.footer-mobile-content ul li {
    display: list-item !important;
  }
}

.footer-liens h4,
.footer-contact h4,
.footer-newsletter h4 {
  font-family: var(--police-titre);
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--blanc);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  margin-bottom: 1.25rem;
  position: sticky;
  top: 0;
  padding-bottom: 0.6rem;
}

.footer-liens h4::after,
.footer-contact h4::after,
.footer-newsletter h4::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 24px;
  height: 2px;
  background: linear-gradient(90deg, var(--aqua-marine) 0%, transparent 100%);
  border-radius: 2px;
}

@media (max-width: 1100px) {
  .footer-grille {
    grid-template-columns: 1.5fr 1fr 1fr 1.3fr;
    gap: 2rem;
  }
}

@media (max-width: 900px) {
  body>footer {
    padding: clamp(2rem, 5vw, 4rem) clamp(1rem, 3vw, 1.75rem) clamp(1rem, 3vw, 1.5rem);
  }

  .footer-grille {
    grid-template-columns: 1fr 1fr;
    gap: 2.5rem 2rem;
    margin-bottom: 2.5rem;
  }

  .footer-marque {
    grid-column: 1 / -1;
    text-align: center;
  }

  .footer-marque p {
    max-width: 480px;
    margin-left: auto;
    margin-right: auto;
  }

  .footer-marque .slogan {
    display: inline-block;
  }

  .footer-newsletter {
    grid-column: 1 / -1;
    max-width: 480px;
    margin: 0 auto;
    width: 100%;
  }

  .footer-cta-whatsapp {
    justify-content: center;
  }
}

@media (max-width: 600px) {
  body>footer {
    padding-top: 2rem;
    padding-right: 1.25rem;
    padding-right: max(1.25rem, env(safe-area-inset-right));
    padding-bottom: 1rem;
    padding-bottom: calc(1rem + env(safe-area-inset-bottom));
    padding-left: 1.25rem;
    padding-left: max(1.25rem, env(safe-area-inset-left));
  }

  .footer-grille {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem 1rem;
    margin-bottom: 1.25rem;
    text-align: center;
  }

  .footer-marque,
  .footer-newsletter {
    grid-column: 1 / -1;
    text-align: center;
  }

  .footer-newsletter h4 {
    text-align: center;
  }

  .footer-newsletter h4::after {
    left: 50%;
    transform: translateX(-50%);
  }

  /* Filets des autres titres centrer aussi (textes centrer a <=600px) */
  .footer-contact h4::after,
  .footer-liens h4::after {
    left: 50%;
    transform: translateX(-50%);
  }

  .footer-newsletter p {
    text-align: center;
  }

  .footer-cta-whatsapp {
    margin: 0 auto;
  }

  .footer-marque {
    text-align: center;
  }

  .footer-mobile-details {
    display: block;
    text-align: center;
  }

  .footer-mobile-details>summary {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    position: relative;
    padding: 0.4rem 0 0.7rem;
    color: var(--blanc);
    font-family: var(--police-titre);
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    cursor: pointer;
    list-style: none;
    -webkit-tap-highlight-color: transparent;
  }

  .footer-mobile-details>summary::before {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 24px;
    height: 2px;
    background: linear-gradient(90deg, var(--aqua-marine), transparent);
    border-radius: 2px;
  }

  .footer-mobile-details>summary::-webkit-details-marker,
  .footer-mobile-details>summary::marker {
    display: none;
  }

  .footer-mobile-details>summary::after {
    content: "";
    position: static;
    width: 0.6rem;
    height: 0.6rem;
    margin-top: -0.3rem;
    border-right: 2px solid var(--aqua-marine);
    border-bottom: 2px solid var(--aqua-marine);
    transform: rotate(45deg);
    transition: transform 0.2s ease;
  }

  .footer-mobile-details[open]>summary::after {
    position: absolute;
    right: 0;
    margin-top: 0.3rem;
    transform: rotate(225deg);
  }

  .footer-mobile-content {
    display: block;
    padding-top: 0.65rem;
    text-align: center;
  }

  .footer-marque>div {
    margin-bottom: 0.6rem !important;
  }

  .footer-marque p {
    text-align: center;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    line-height: 1.5;
  }

  .footer-marque .slogan {
    display: inline-block;
    font-size: 0.85rem;
    padding: 0.25rem 0.65rem;
  }

  .footer-liens h4,
  .footer-contact h4,
  .footer-newsletter h4 {
    font-size: 0.95rem;
    margin-bottom: 0.8rem;
    padding-bottom: 0.45rem;
  }

  .footer-liens ul {
    padding: 0;
    list-style: none;
    margin-bottom: 0;
    text-align: center;
  }

  .footer-liens ul li {
    margin-bottom: 0.35rem;
  }

  .footer-liens ul li a {
    justify-content: center;
    font-size: 1rem;
  }

  .footer-contact p {
    justify-content: center;
    font-size: 1rem;
  }

  .footer-contact p {
    margin-bottom: 0.35rem;
  }

  .footer-newsletter p {
    margin-bottom: 0.6rem;
    line-height: 1.5;
    font-size: 1rem;
  }

  .footer-cta-whatsapp {
    justify-content: center;
    width: 100%;
    padding: 0.65rem 0.85rem;
    font-size: 0.95rem;
  }

  .footer-bas {
    flex-direction: column;
    text-align: center;
    gap: 0.4rem;
    padding-top: 0.85rem;
  }

  .footer-bas p {
    font-size: 0.92rem;
  }

  .footer-bas .footer-bas-droite {
    font-size: 0.88rem;
    gap: 0.6rem;
  }
}

@media (max-width: 480px) {
  body>footer {
    padding-top: 1.5rem;
    padding-right: 0.75rem;
    padding-right: max(0.75rem, env(safe-area-inset-right));
    padding-bottom: 0.6rem;
    padding-bottom: calc(0.6rem + env(safe-area-inset-bottom));
    padding-left: 0.75rem;
    padding-left: max(0.75rem, env(safe-area-inset-left));
  }

  .footer-grille {
    gap: 0.75rem 0.6rem;
    margin-bottom: 0.75rem;
  }

  .footer-marque img {
    height: 28px !important;
  }

  .footer-marque p {
    font-size: 1rem;
    line-height: 1.4;
  }

  .footer-marque .slogan {
    font-size: 0.85rem;
    padding: 0.25rem 0.65rem;
    margin-top: 0.35rem;
  }

  .footer-mobile-details>summary {
    font-size: 0.85rem;
    padding: 0.25rem 0;
  }

  .footer-mobile-content {
    padding-top: 0.35rem;
    text-align: center;
  }

  .footer-liens h4,
  .footer-contact h4,
  .footer-newsletter h4 {
    margin-bottom: 0.55rem;
    padding-bottom: 0.3rem;
    font-size: 0.85rem;
    letter-spacing: 0.1em;
  }

  .footer-liens ul li {
    margin-bottom: 0.2rem;
  }

  .footer-liens ul li a,
  .footer-contact p,
  .footer-newsletter p {
    font-size: 1rem;
  }

  .footer-contact p {
    gap: 0.3rem;
  }

  .footer-contact p svg {
    width: 17px;
    height: 17px;
  }

  .footer-newsletter p {
    line-height: 1.45;
    margin-bottom: 0.5rem;
  }

  .footer-cta-whatsapp {
    font-size: 0.9rem;
    padding: 0.55rem 0.7rem;
  }

  .footer-cta-whatsapp svg {
    width: 17px;
    height: 17px;
  }

  .footer-bas {
    gap: 0.3rem;
  }

  .footer-bas p {
    font-size: 0.88rem;
  }

  .footer-bas .footer-bas-droite {
    font-size: 0.85rem;
    flex-direction: column;
    gap: 0.2rem;
  }

  .footer-contact br {
    display: none;
  }

  .footer-soutien {
    margin-top: 0.6rem;
    padding-top: 0.5rem;
  }

  .footer-soutien .lien-soutenir {
    font-size: 0.72rem;
  }
}

.footer-marque h4 {
  font-family: var(--police-titre);
  font-size: 1.2rem;
  color: var(--blanc);
  margin-bottom: 1rem;
}

.footer-marque p {
  font-size: 0.88rem;
  line-height: 1.7;
  max-width: 380px;
  color: #B5B5C5;
}

.footer-marque .slogan {
  color: var(--aqua-marine);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  margin-top: 0.75rem;
  display: inline-block;
  padding: 0.3rem 0.8rem;
  background: rgba(113, 244, 179, 0.08);
  border: 1px solid rgba(113, 244, 179, 0.25);
  border-radius: 50px;
}

.footer-liens ul li {
  margin-bottom: 0.75rem;
}

.footer-liens ul li a {
  font-size: 0.88rem;
  transition: var(--transition-rapide);
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}

.footer-liens ul li a::before {
  content: "→";
  opacity: 0;
  color: var(--aqua-marine);
  transition: opacity 0.25s, transform 0.25s;
  transform: translateX(-4px);
}

.footer-liens ul li a:hover::before,
.footer-liens ul li a:focus-visible::before {
  opacity: 1;
  transform: translateX(0);
}

.footer-liens ul li a:hover,
.footer-liens ul li a:focus-visible,
.footer-contact a:hover,
.footer-contact a:focus-visible,
.footer-bas a:hover,
.footer-bas a:focus-visible {
  color: var(--aqua-marine);
}

.footer-liens ul li a:hover {
  padding-left: 0;
}

/* Bloc Soutenir l'oeuvre — indépendant de la nav, hors <ul> */
.footer-soutien {
  margin-top: 1rem;
  padding-top: 0.75rem;
  border-top: 1px solid rgba(113, 244, 179, 0.15);
  text-align: center;
}

.footer-soutien .lien-soutenir {
  display: inline-block;
  color: var(--aqua-marine);
  font-weight: 700;
  font-size: 0.9rem;
  transition: var(--transition-rapide);
}

.footer-soutien .lien-soutenir:hover,
.footer-soutien .lien-soutenir:focus-visible {
  color: #FFFFFF;
}

/* Bloc Newsletter / WhatsApp canal — engagement émotionnel */
.footer-newsletter {
  word-wrap: break-word;
  overflow-wrap: break-word;
  min-width: 0;
}

.footer-newsletter p {
  font-size: 0.85rem;
  line-height: 1.6;
  color: #B5B5C5;
  margin-bottom: 1rem;
  word-wrap: break-word;
  overflow-wrap: break-word;
}

.footer-cta-whatsapp {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.75rem 1.25rem;
  background: linear-gradient(135deg, #25D366 0%, #128C7E 100%);
  color: #FFFFFF !important;
  font-size: 0.88rem;
  font-weight: 600;
  border-radius: 50px;
  text-decoration: none !important;
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  box-shadow: 0 4px 16px rgba(37, 211, 102, 0.30);
  position: sticky;
  top: 0;
  overflow: hidden;
}

.footer-cta-whatsapp svg {
  width: 18px;
  height: 18px;
  fill: currentColor;
  flex-shrink: 0;
}

.footer-cta-whatsapp:hover,
.footer-cta-whatsapp:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(37, 211, 102, 0.45);
  background: linear-gradient(135deg, #2EE874 0%, #1FA69A 100%);
  color: #FFFFFF !important;
  outline: none;
}

.footer-cta-whatsapp:focus-visible {
  outline: 2px solid var(--aqua-marine, #71F4B3);
  outline-offset: 3px;
}

/* Petit indicateur "live" pulsant à côté du bouton */
.footer-cta-whatsapp .live-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #FFFFFF;
  box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.7);
  animation: live-pulse 1.6s ease-in-out infinite;
}

@keyframes live-pulse {

  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.7);
  }

  50% {
    box-shadow: 0 0 0 6px rgba(255, 255, 255, 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .footer-cta-whatsapp .live-dot {
    animation: none;
  }
}

.footer-contact p {
  font-size: 0.88rem;
  margin-bottom: 0.7rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.footer-contact a {
  transition: var(--transition-rapide);
}

.footer-bas {
  max-width: var(--max-largeur);
  margin: 0 auto;
  padding-top: 2rem;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 1rem;
}

.footer-bas p {
  font-size: 0.85rem;
}

.footer-bas .footer-bas-droite {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  font-size: 0.82rem;
}

/* Bouton "Retour en haut" — discret, corporate, intégré au footer */
.btn-retour-haut-footer {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  height: 36px;
  padding: 0 0.85rem 0 0.65rem;
  border-radius: 50px;
  background: rgba(113, 244, 179, 0.10);
  border: 1px solid rgba(113, 244, 179, 0.35);
  color: var(--aqua-marine, #71F4B3);
  cursor: pointer;
  font-family: inherit;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  flex-shrink: 0;
}

.btn-retour-haut-footer .btn-texte {
  display: inline;
}

.btn-retour-haut-footer svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  pointer-events: none;
  flex-shrink: 0;
}

.btn-retour-haut-footer:hover,
.btn-retour-haut-footer:focus-visible {
  background: var(--aqua-marine, #71F4B3);
  color: var(--fond-sombre, #07070A);
  border-color: var(--aqua-marine, #71F4B3);
  transform: translateY(-3px);
  box-shadow: 0 4px 16px rgba(113, 244, 179, 0.40);
  outline: none;
}

.btn-retour-haut-footer:focus-visible {
  outline: 2px solid var(--aqua-marine, #71F4B3);
  outline-offset: 3px;
}

/* Mobile (°¤ 600px) : on masque le texte, on garde l'icône seule (cercle compact) */
@media (max-width: 600px) {
  .btn-retour-haut-footer {
    width: 36px;
    height: 36px;
    padding: 0;
    border-radius: 50%;
  }

  .btn-retour-haut-footer .btn-texte {
    display: none;
  }
}


/* ------------------------------------------------------------------
   15. BOUTON WHATSAPP FLOTTANT
   ------------------------------------------------------------------ */
.whatsapp-flottant {
  position: fixed;
  bottom: 2rem;
  right: 2rem;
  width: 68px;
  height: 68px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.38);
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  background-color: rgba(113, 244, 179, 0.78);
  color: #0B3B2A;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.45) inset,
    0 4px 20px rgba(113, 244, 179, 0.40);
  -webkit-backdrop-filter: blur(14px) saturate(1.4);
  backdrop-filter: blur(14px) saturate(1.4);
  z-index: 999;
  transition: var(--transition-lisse);
}

.whatsapp-flottant:hover {
  transform: scale(1.1) translateY(-3px);
  box-shadow: 0 8px 30px rgba(37, 211, 102, 0.55);
}

.whatsapp-flottant svg {
  width: 32px;
  height: 32px;
  fill: none;
  stroke: currentColor;
}

/* Mobile-first : bouton WhatsApp plus compact + bouton retour-haut recalé.
     Le bloc @media (max-width:560px) correspondant est déclaré à la FIN de
   ce fichier pour primer sur toutes les régles de base. */

/* ------------------------------------------------------------------
   15b. MINI POPUP WHATSAPP — déclenché par le bouton flottant (app.js)
   Petite carte « Laisser un message » avec CTA vers wa.me
   ------------------------------------------------------------------ */
.whatsapp-popup {
  position: fixed;
  bottom: calc(2rem + 68px + 0.875rem);
  right: 2rem;
  width: 284px;
  max-width: calc(100vw - 1.5rem);
  z-index: 1001;
  border-radius: 16px;
  background: linear-gradient(160deg, rgba(28, 22, 48, 0.95) 0%, rgba(12, 12, 24, 0.96) 100%);
  border: 1px solid rgba(113, 244, 179, 0.28);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.18) inset,
    0 16px 44px rgba(7, 7, 10, 0.50);
  -webkit-backdrop-filter: blur(16px) saturate(1.2);
  backdrop-filter: blur(16px) saturate(1.2);
  padding: 1rem 1.1rem;
  color: var(--texte-clair);
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px) scale(0.96);
  transform-origin: bottom right;
  pointer-events: none;
  transition: opacity 0.24s ease, transform 0.24s ease, visibility 0.24s ease;
}

.whatsapp-popup.ouvert {
  opacity: 1;
  visibility: visible;
  transform: none;
  pointer-events: auto;
}

.whatsapp-popup-fermer {
  position: absolute;
  top: 0.45rem;
  right: 0.6rem;
  width: 26px;
  height: 26px;
  padding: 0;
  border: 1px solid rgba(113, 244, 179, 0.30);
  border-radius: 50%;
  background: rgba(113, 244, 179, 0.12);
  color: var(--aqua-marine);
  font-size: 0.9rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}

.whatsapp-popup-titre {
  margin: 0 0 0.45rem;
  padding-right: 2rem;
  font-family: var(--police-titre);
  font-weight: 800;
  font-size: 0.92rem;
  color: #FAF8FF;
}

.whatsapp-popup-texte {
  margin: 0 0 0.9rem;
  font-size: 0.8rem;
  line-height: 1.5;
  color: rgba(244, 241, 250, 0.82);
}

.whatsapp-popup-lien {
  width: 100%;
  padding: 0.6rem 0.9rem;
  font-size: 0.8rem;
}

@media (max-width: 560px) {
  .whatsapp-popup {
    bottom: calc(1.25rem + 60px + 0.875rem);
    right: 1.25rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .whatsapp-popup {
    transition: none;
  }
}


/* ------------------------------------------------------------------
   16. MODAL D'ANNONCE RM5 — SUPPRIMÉ
   Remplacée par le pop-up inline #rm5-popup (voir chaque page HTML).
   ------------------------------------------------------------------ */


/* ------------------------------------------------------------------
   17. BANNIÈRE D'ANNONCE RM5 — SUPPRIMÉE
   Remplacée par le pop-up inline #rm5-popup (voir chaque page HTML).
   ------------------------------------------------------------------ */


/* ------------------------------------------------------------------
   18. CARTES AVEC VISUEL — Programmes et activités
   ------------------------------------------------------------------ */
.carte-avec-visuel {
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.carte-visuel {
  /* Visuel encore agrandi (mobile-first) : affiches & visuels WUM.
     - Mobile 375px (1 colonne) : ~240px de haut
     - Desktop 1200px (3 colonnes) : ~300px de haut */
  height: clamp(180px, 34vw, 300px);
  background: var(--gradient-bleu-violet);
  overflow: hidden;
  flex-shrink: 0;
}

.carte-visuel-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}

.carte-avec-visuel:hover .carte-visuel-img:not(.image-manquante) {
  transform: scale(1.05);
}

.carte-visuel-img.image-manquante {
  display: none;
}

.carte-avec-visuel .carte-corps {
  padding: 1rem 1.1rem 1.15rem;
  padding: clamp(0.85rem, 2.5vw, 1.2rem) clamp(0.85rem, 3vw, 1.3rem) clamp(1rem, 2.5vw, 1.3rem);
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}

/* Écosystéme WUM : boutons centrés sous le texte des cartes */
.carte-avec-visuel .carte-corps .btn {
  display: flex;
  width: max-content;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

/* Écosystème WUM : boutons stylisés LIQUID GLASS avec couleurs spécifiques.
    Chaque programme a sa propre couleur, mais tous partagent l'effet verre. */
.carte-avec-visuel .carte-corps .btn-liquide {
  overflow: hidden;
  border-radius: 50px;
  padding: 0.65rem 1.4rem;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  backdrop-filter: blur(14px) saturate(1.5);
  -webkit-backdrop-filter: blur(14px) saturate(1.5);
  border: 1px solid rgba(255, 255, 255, 0.35);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.30) inset,
    0 4px 16px rgba(0, 0, 0, 0.25),
    0 8px 32px var(--btn-glow, rgba(113, 244, 179, 0.25));
  transition: all 0.35s cubic-bezier(0.25, 0.8, 0.25, 1);
  margin-top: auto;
}
.carte-avec-visuel .carte-corps .btn-liquide::before {
  content: "";
  position: absolute;
  top: 0;
  left: -100%;
  width: 60%;
  height: 100%;
  background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.22) 50%, transparent 100%);
  animation: glass-reflet 5s ease-in-out 4s infinite;
  pointer-events: none;
}
.carte-avec-visuel .carte-corps .btn-liquide:hover {
  transform: translateY(-3px);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.25) inset,
    0 8px 24px rgba(0, 0, 0, 0.35),
    0 16px 40px var(--btn-glow, rgba(113, 244, 179, 0.45));
}
.carte-avec-visuel .carte-corps .btn-liquide:hover::before {
  left: 130%;
}
/* Couleurs spécifiques par programme (liquid glass) */
.btn-aes-liquide     { --btn-glow: rgba(255, 210, 100, 0.50); background: rgba(255, 220, 130, 0.20); color: #FFD255; }
.btn-rdv-liquide     { --btn-glow: rgba(245, 245, 245, 0.45); background: rgba(248, 248, 248, 0.20); color: #F0F0F0; }
.btn-podcast-liquide { --btn-glow: rgba(255, 220, 0, 0.55); background: rgba(255, 235, 40, 0.22); color: #FFE100; }
.btn-fps-liquide     { --btn-glow: rgba(175, 180, 190, 0.45); background: rgba(185, 190, 200, 0.20); color: #B0B4BC; }
.btn-rdr-liquide     { --btn-glow: rgba(255, 150, 70, 0.50); background: rgba(255, 180, 120, 0.20); color: #FF9E55; }
.btn-aqua-liquide    { --btn-glow: rgba(113, 244, 179, 0.50); background: rgba(113, 244, 179, 0.15); color: #71F4B3; }
.btn-rm5-liquide     { --btn-glow: rgba(113, 244, 179, 0.45); background: rgba(113, 244, 179, 0.18); color: #71F4B3; }
.btn-rmclub-liquide  { --btn-glow: rgba(77, 65, 217, 0.55); background: rgba(77, 65, 217, 0.22); color: #B8B3FF; }
.btn-clickup-liquide { --btn-glow: rgba(134, 239, 172, 0.50); background: rgba(134, 239, 172, 0.20); color: #86EFAC; }
.btn-liquide {
  --btn-glow: rgba(7, 7, 10, 0.35);
  border: 1px solid rgba(77, 65, 217, 0.25);
  border-radius: 50px;
  padding: 0.6rem 1.4rem;
  font-size: 0.82rem;
  font-family: var(--police-titre);
  letter-spacing: 0.04em;
  box-shadow: var(--btn-glow), 0 4px 15px rgba(77, 65, 217, 0.35);
  transition: var(--transition-lisse);
}
.btn-liquide:hover {
  background: transparent;
  border-color: var(--bleu-principal);
  color: var(--blanc) !important;
  box-shadow: 0 4px 20px rgba(77, 65, 217, 0.5);
  transform: translateY(-2px);
}

.carte-numero-niveau {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 10px;
  font-family: var(--police-titre);
  font-weight: 800;
  font-size: 0.85rem;
  margin-bottom: 1.25rem;
  background: rgba(77, 65, 217, 0.15);
  color: var(--aqua-marine);
  border: 1px solid rgba(77, 65, 217, 0.25);
}


/* ------------------------------------------------------------------
   19. ICÔNES SVG — Métadonnées
   ------------------------------------------------------------------ */
.icone-meta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  color: var(--aqua-marine);
}

.icone-meta svg {
  width: 100%;
  height: 100%;
}

.icone-reseau {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

.icone-reseau svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
}

.partenariat-rm5 {
  position: sticky;
  top: 0;
  isolation: isolate;
  overflow: hidden;
  margin-top: 3rem;
  padding: 1.6rem;
  padding: clamp(1.25rem, 3vw, 2rem);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: center;
  gap: 1.75rem;
  gap: clamp(1.25rem, 4vw, 3rem);
  border: 1px solid rgba(184, 179, 255, 0.28);
  border-radius: 24px;
  background:
    linear-gradient(135deg, rgba(77, 65, 217, 0.22), rgba(128, 61, 180, 0.36)),
    rgba(7, 7, 10, 0.62);
  -webkit-backdrop-filter: blur(16px) saturate(1.2);
  backdrop-filter: blur(16px) saturate(1.2);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.18) inset,
    0 18px 44px rgba(7, 7, 10, 0.28);
}

.partenariat-rm5::before {
  content: "";
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  z-index: -1;
  background: radial-gradient(circle at 80% 20%, rgba(184, 179, 255, 0.18), transparent 42%);
  pointer-events: none;
}

.partenariat-rm5-image {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  max-height: 360px;
  object-fit: cover;
  border-radius: 16px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.28);
}

.partenariat-rm5-contenu {
  text-align: left;
}

.partenariat-rm5-label {
  position: sticky;
  top: 0;
  display: inline-flex;
  align-items: center;
  overflow: hidden;
  margin-bottom: 0.7rem;
  padding: 0.4rem 0.85rem;
  border: 1px solid rgba(184, 179, 255, 0.32);
  border-radius: 12px;
  background: rgba(184, 179, 255, 0.1);
  -webkit-backdrop-filter: blur(14px) saturate(1.2);
  backdrop-filter: blur(14px) saturate(1.2);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.2) inset,
    0 6px 18px rgba(7, 7, 10, 0.16);
  color: #DDD8FF;
  font-family: var(--police-titre);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.partenariat-rm5-label::before {
  content: "";
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  inset: 0;
  background: linear-gradient(105deg, transparent 25%, rgba(255, 255, 255, 0.14) 50%, transparent 75%);
  transform: translateX(-120%);
  animation: partenariat-label-reflet 5s ease-in-out 1.5s infinite;
  pointer-events: none;
}

@keyframes partenariat-label-reflet {

  0%,
  35% {
    transform: translateX(-120%);
  }

  65%,
  100% {
    transform: translateX(120%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .partenariat-rm5-label::before {
    animation: none;
  }
}

.partenariat-rm5-titre {
  margin-bottom: 0.75rem;
  color: var(--blanc);
  font-family: var(--police-titre);
  font-size: 1.7rem;
  font-size: clamp(1.5rem, 4vw, 2.2rem);
  line-height: 1.1;
}

.partenariat-rm5-texte {
  margin-bottom: 1.25rem;
  color: var(--texte-secondaire);
  line-height: 1.7;
}

.partenariat-rm5-texte strong {
  color: var(--blanc);
}

.partenariat-rm5-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
}

.partenariat-rm5-actions .lien-whatsapp-partenariat {
  background: linear-gradient(135deg, #25D366, #128C7E);
  border-color: rgba(143, 240, 177, 0.58);
  color: #FFFFFF;
}

.partenariat-rm5-actions .lien-whatsapp-partenariat:hover,
.partenariat-rm5-actions .lien-whatsapp-partenariat:focus-visible {
  background: linear-gradient(135deg, #2EE874, #1FA69A);
  border-color: #8FF0B1;
  color: #FFFFFF;
}

@media (max-width: 768px) {
  .partenariat-rm5 {
    grid-template-columns: 1fr;
    gap: 1.25rem;
    margin-top: 2rem;
  }

  .partenariat-rm5-image {
    max-height: none;
  }

  .partenariat-rm5-contenu {
    text-align: center;
  }

  .partenariat-rm5-actions {
    justify-content: center;
  }

  .partenariat-rm5-actions .btn {
    width: 100%;
  }
}


/* ------------------------------------------------------------------
   20. BOUTONS DÉSACTIVÉS
   ------------------------------------------------------------------ */
.btn-indisponible {
  opacity: 1;
  cursor: not-allowed;
  pointer-events: none;
  position: relative;
  top: auto;
  background: #3A3480;
  color: var(--blanc);
  border: 0;
  box-shadow: none;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.btn-indisponible::after {
  content: 'Bientôt disponible';
  display: block;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-top: 0.4rem;
  color: #FFFFFF;
  background: rgba(255, 255, 255, 0.12);
  padding: 0.25rem 0.6rem;
  border-radius: 50px;
}


/* ------------------------------------------------------------------
   21. PAGE REJOINDRE
   ------------------------------------------------------------------ */
.page-rejoindre-hero {
  margin-top: 70px;
  padding-top: 70px;
  padding: clamp(2.5rem, 7vw, 4.5rem) clamp(1rem, 4vw, 2rem) clamp(2rem, 6vw, 3rem);
  text-align: center;
  background: var(--fond-sombre-2);
}

.rejoindre-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 2rem;
  max-width: 900px;
  margin: 3rem auto 0;
}

.rejoindre-option {
  position: sticky;
  top: 0;
  isolation: isolate;
  overflow: hidden;
  background: var(--verre-sombre);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 18px;
  padding: clamp(1.5rem, 4vw, 2.5rem) clamp(1rem, 4vw, 2rem);
  text-align: center;
  transition: var(--transition-lisse);
  -webkit-backdrop-filter: blur(18px) saturate(1.35);
  backdrop-filter: blur(18px) saturate(1.35);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.22);
}

.rejoindre-option:hover {
  border-color: rgba(113, 244, 179, 0.35);
  transform: translateY(-4px);
}

.rejoindre-option h3 {
  font-size: 1.25rem;
  margin-bottom: 0.75rem;
  color: var(--blanc);
}

.rejoindre-option p {
  font-size: 0.9rem;
  color: var(--texte-secondaire);
  margin-bottom: 1.5rem;
  line-height: 1.65;
}


/* ------------------------------------------------------------------
   22. MODAL RM5 — Visuel photographique — SUPPRIMÉ
   Remplacé par le pop-up inline #rm5-popup.
   ------------------------------------------------------------------ */

.activite-vedette-visuel {
  position: sticky;
  top: 0;
  min-height: auto;
  background: var(--gradient-bleu-violet);
  overflow: hidden;
}

.activite-vedette-visuel .activite-vedette-image {
  width: 100%;
  height: 100%;
  min-height: auto;
  object-fit: cover;
}

.activite-vedette-visuel .activite-vedette-image.image-manquante {
  display: none;
}


/* ------------------------------------------------------------------
   RESPONSIVE GLOBAL & ACCESSIBILITÉ
   ------------------------------------------------------------------ */

/* Haut niveau de zoom (125%, 150%) - viewport effectivement plus étroit */
@media (max-width: 900px) {
  .nav-bureau {
    display: none;
  }

  .toggle-mobile {
    display: flex;
  }
}

@media (max-width: 992px) {
  .toggle-mobile {
    display: flex;
  }

  .nav-bureau {
    display: none;
  }

  .activite-vedette {
    grid-template-columns: 1fr;
  }

  .activite-vedette-image {
    height: clamp(160px, 45vw, 220px);
    order: -1;
  }

  .activite-vedette-contenu {
    padding: 1.5rem;
  }
}

@media (max-width: 768px) {
  :root {
    --padding-section: 2.25rem 1.25rem;
  }

  .activite-vedette-contenu {
    padding: 1.25rem 1rem 1.4rem;
  }

  .activite-meta-info {
    gap: 0.55rem;
    font-size: 0.82rem;
  }

  .activite-meta-info span {
    gap: 0.38rem;
    flex-wrap: nowrap;
    align-items: flex-start;
  }

  .activite-meta-info>span>strong,
  .activite-meta-info>span>em {
    white-space: normal;
    display: inline;
    flex: 0 0 auto;
  }

  .activite-meta-info>span>strong+* {
    flex: 1 1 auto;
    min-width: 0;
  }

  .activite-meta-info .icone-meta {
    width: 0.95rem;
    height: 0.95rem;
    flex-shrink: 0;
  }

  .activite-vedette-contenu h2 {
    font-size: 2.1rem;
    font-size: clamp(1.8rem, 8vw, 2.6rem);
    line-height: 1.08;
  }

  .activite-vedette-contenu p {
    font-size: 0.86rem;
    line-height: 1.6;
  }

  /* Les filtres et le flou plein ecran sont tres couteux sur GPU mobile. */
  header {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    background: rgba(13, 13, 25, 0.96);
  }

  .hero-video {
    filter: saturate(1.05);
  }

  .diapo-slide,
  .carousel-slide,
  .carousel-slide-2 {
    contain: paint;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
  }

  /* Un fondu long limite le nombre de grandes images repaintes en continu. */
  .diapo-slide {
    animation-duration: 15s !important;
  }

  [class*="carousel-slide"] {
    animation-duration: 12s;
  }

  /* H1 hero titles: gardent la taille fluide (pas d'override fixe) */
  .hero-titre {
    white-space: nowrap;
  }

  /* Section H2 titles: retour à la ligne autorisé sur mobile */
  .section-titre {
    font-size: 1.75rem;
    font-size: clamp(1.5rem, 6vw, 2rem);
    white-space: normal;
  }

  .hero-sous-titre {
    max-width: 100%;
  }

  .hero-actions {
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
  }

  .hero-actions .btn {
    max-width: 320px;
    width: 100%;
  }

  .grille-3,
  .grille-2 {
    grid-template-columns: 1fr;
  }

  .signes-grille {
    grid-template-columns: 1fr 1fr;
  }

  .footer-grille {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 480px) {

  .hero-titre,
  h1.section-titre {
    white-space: nowrap;
    letter-spacing: -0.02em;
  }

  .activite-vedette {
    margin-bottom: 2.5rem;
  }

  .activite-vedette-contenu {
    padding: 1.2rem 1rem 1.35rem;
  }

  .activite-vedette-contenu h2 {
    font-size: 1.9rem;
    font-size: clamp(1.7rem, 9vw, 2.1rem);
    margin-bottom: 0.85rem;
  }

  .activite-meta-info {
    gap: 0.5rem;
    font-size: 0.75rem;
  }

  .activite-meta-info span {
    grid-template-columns: 1rem minmax(0, 1fr);
    column-gap: 0.38rem;
  }

  .activite-meta-info>span>strong {
    grid-column: 2;
  }

  .signes-grille {
    grid-template-columns: 1fr;
  }
}

@media (prefers-reduced-transparency: reduce) {

  .carte,
  .activite-carte,
  .rejoindre-option,
  .timeline-contenu {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    background: rgba(15, 15, 24, 0.94);
  }

  .fond-clair .carte {
    background: #ffffff;
  }

  .carte-sur-photo {
    background-color: rgb(15, 15, 24) !important;
  }

  /* Le mode réduction de transparence conserve la photo. */
  .carte-sur-photo .carte-photo-image {
    filter: none;
  }

  .carte-sur-photo::after {
    background: rgba(7, 7, 10, 0.68);
  }
}

blockquote,
.citation {
  color: var(--texte-clair);
}

.citation-encadree {
  font-size: 1.1rem;
  line-height: 1.9;
  color: var(--texte-clair);
  font-weight: 300;
  text-align: left;
  margin: 2.5rem 0;
  background: rgba(12, 12, 22, 0.37);
  border: 1px solid rgba(113, 244, 179, 0.35);
  padding: clamp(1.25rem, 4vw, 2.5rem);
  border-radius: 16px;
  border-left: 4px solid var(--aqua-marine);
  overflow-wrap: break-word;
  word-break: break-word;
  hyphens: auto;
  -webkit-hyphens: auto;
}

.page-hero {
  margin-top: 70px;
  padding: clamp(2.5rem, 7vw, 4.5rem) clamp(1rem, 4vw, 2rem) clamp(2rem, 6vw, 3rem);
  text-align: center;
}

.cta-finale {
  text-align: center;
  padding: clamp(2rem, 5vw, 3rem) clamp(1rem, 4vw, 2rem);
}

.cta-actions {
  display: flex;
  gap: 1rem;
  justify-content: center;
  flex-wrap: wrap;
}

.footer-logo {
  height: 36px;
  width: auto;
}

.whatsapp-flottant svg {
  pointer-events: none;
}

/* ------------------------------------------------------------------
   BOUTONS #RM5 — effet phosphorescent "quête de jeu vidéo"
   - N'affecte pas la grille, le flex, le display ou la taille
   - Respecte prefers-reduced-motion (cf. media query plus bas)
   - Pas de JS requis, GPU-friendly (transform + box-shadow + filter)
   ------------------------------------------------------------------ */
.lien-rm5 {
  position: sticky;
  top: 0;
  animation: rm5-pulse 2.4s ease-in-out infinite;
  will-change: transform, box-shadow, filter;
}

/* Halo + glow qui respire — couleur aqua-marine fluo (charte WUM) */
@keyframes rm5-pulse {

  0%,
  100% {
    transform: translateZ(0) scale(1);
    box-shadow:
      0 0 0 0 rgba(113, 244, 179, 0.55),
      0 0 18px 2px rgba(113, 244, 179, 0.35),
      0 0 36px 6px rgba(128, 61, 180, 0.20);
    filter: brightness(1) drop-shadow(0 0 0 rgba(113, 244, 179, 0));
  }

  50% {
    transform: translateZ(0) scale(1.04);
    box-shadow:
      0 0 0 8px rgba(113, 244, 179, 0),
      0 0 28px 6px rgba(113, 244, 179, 0.65),
      0 0 60px 14px rgba(128, 61, 180, 0.40);
    filter: brightness(1.08) drop-shadow(0 0 6px rgba(113, 244, 179, 0.55));
  }
}

/* Survol : pulse plus rapide + glow plus intense */
.lien-rm5:hover,
.lien-rm5:focus-visible {
  animation-duration: 1.2s;
  filter: brightness(1.12) drop-shadow(0 0 10px rgba(113, 244, 179, 0.75));
}

.lien-rm5:focus-visible {
  outline: 2px solid var(--aqua-marine, #71F4B3);
  outline-offset: 3px;
}

/* Désactive l'animation pour les utilisateurs qui réduisent les animations */
@media (prefers-reduced-motion: reduce) {
  .lien-rm5 {
    animation: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}


/* ------------------------------------------------------------------
   BOUTON FLOTTANT "RETOUR EN HAUT" — ancre HTML, CSP-safe, sans JS
   - Position : fixed, en bas à droite, au-dessus du bouton WhatsApp
   - z-index 1000 (au-dessus du WhatsApp 999)
   - html { scroll-behavior: smooth } gére le scroll fluide
   - Aucun JS requis, aucun inline script, fonctionne avec SW et CSP
   ------------------------------------------------------------------ */
/* Mobile-first : petit + compact */
.bouton-retour-haut {
  position: fixed;
  /* Empile au-dessus du WhatsApp (bottom 2rem + 68px de haut) avec un gap
     de 10px CONSTANT : le calc suit le meme 2rem que le WhatsApp, donc le
     gap reste invariant meme si la font-size racine change (zoom/a11y). */
  bottom: calc(2rem + 78px);
  right: 2rem;
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: linear-gradient(135deg, rgba(77, 65, 217, 0.80) 0%, rgba(128, 61, 180, 0.80) 100%);
  color: #FFFFFF;
  text-decoration: none;
  z-index: 1000;
  border: 1px solid rgba(255, 255, 255, 0.32);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.28) inset,
    0 4px 14px rgba(77, 65, 217, 0.45),
    0 0 12px 2px rgba(113, 244, 179, 0.30);
  -webkit-backdrop-filter: blur(14px) saturate(1.4);
  backdrop-filter: blur(14px) saturate(1.4);
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(15px);
  transition:
    opacity 0.3s ease,
    visibility 0.3s ease,
    transform 0.3s ease,
    background 0.3s ease,
    box-shadow 0.3s ease;
  flex-shrink: 0;
  overflow: hidden;
}

.bouton-retour-haut.est-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.bouton-retour-haut:hover,
.bouton-retour-haut:focus-visible {
  background: linear-gradient(135deg, rgba(92, 80, 232, 0.86) 0%, rgba(154, 78, 204, 0.86) 100%);
  box-shadow:
    0 6px 22px rgba(77, 65, 217, 0.60),
    0 0 0 5px rgba(113, 244, 179, 0.18),
    0 0 20px 4px rgba(113, 244, 179, 0.50);
  transform: translateY(-3px);
  outline: none;
}

.bouton-retour-haut:focus-visible {
  outline: 2px solid var(--aqua-marine, #71F4B3);
  outline-offset: 3px;
}

.bouton-retour-haut svg {
  width: 22px;
  height: 22px;
  min-width: 22px;
  min-height: 22px;
  max-width: 22px;
  max-height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
  pointer-events: none;
  display: block;
  flex-shrink: 0;
}

/* Tablette (∅ 481px) : un peu plus grand */
@media (min-width: 481px) {
  .bouton-retour-haut {
    width: 50px;
    height: 50px;
  }

  .bouton-retour-haut svg {
    width: 23px;
    height: 23px;
    min-width: 23px;
    min-height: 23px;
    max-width: 23px;
    max-height: 23px;
  }
}

/* Large desktop (∅ 1200px) : plus d'espace depuis le bord */
@media (min-width: 769px) {
  .bouton-retour-haut {
    width: 52px;
    height: 52px;
  }

  .bouton-retour-haut svg {
    width: 24px;
    height: 24px;
    min-width: 24px;
    min-height: 24px;
    max-width: 24px;
    max-height: 24px;
  }
}

/* Large desktop (∅ 1200px) : plus d'espace depuis le bord */
@media (min-width: 1200px) {
  .bouton-retour-haut {
    width: 54px;
    height: 54px;
    right: 2rem;
  }

  .bouton-retour-haut svg {
    width: 24px;
    height: 24px;
  }
}




/* ==========================================================================
   INFOLINE RM CLUB — Liens WhatsApp + Instagram (texte responsive centre)
   ========================================================================== */
.rmclub-infoline {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.5rem;
  margin-top: 1rem;
  font-size: 0.86rem;
  font-weight: 600;
  text-align: center;
  line-height: 1.5;
}

.rmclub-infoline a {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  text-decoration: none;
  font-size: 0.86rem;
  font-weight: 600;
  text-shadow: none;
  filter: none;
  transition: opacity 0.25s ease;
}

/* Style aligné sur les liens "Contact & Réseaux" du footer :
   dégradé de texte (background-clip), pas de soulignement, hover en opacité. */
.rmclub-infoline a.infoline-whatsapp {
  background: linear-gradient(90deg, #A5DDB8 0%, #63C98B 52%, #DCEFE2 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

.rmclub-infoline a.infoline-instagram {
  background: linear-gradient(90deg, #E7C95B 0%, #D87A9E 48%, #9279C5 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

/* Icônes SVG : blanc #ECECF4 comme footer .icone-reseau (svg hors dégradé,
   currentColor inutilisable car le texte du lien est transparent). */
.rmclub-infoline a.infoline-whatsapp svg,
.rmclub-infoline a.infoline-instagram svg {
  color: #ECECF4;
}

.rmclub-infoline .infoline-separateur {
  color: #ECECF4;
  font-weight: 700;
  margin: 0;
  flex-shrink: 0;
}

.rmclub-infoline a:hover,
.rmclub-infoline a:focus-visible {
  opacity: 0.82;
}

.rmclub-infoline a:focus-visible {
  outline: 2px solid rgba(255, 255, 255, 0.7);
  outline-offset: 2px;
}

.rmclub-infoline a svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  fill: currentColor;
}

.hero-infoline {
  margin-top: 1.4rem;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.85);
}

/* Hero RM Club : carousel sombre — détourage du rendu final (texte dégradé
   + icônes SVG). drop-shadow et non text-shadow : ce dernier passe SOUS le
   texte en background-clip: text et bave à travers. */
.hero-infoline a {
  filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.8));
}


/* ==========================================================================
   BOUTONS FLOTTANTS MOBILE — déclarés en FIN DE FICHIER
   pour primer sur toutes les régles de base de .whatsapp-flottant et
   .bouton-retour-haut, quel que soit leur ordre d'apparition plus haut.
   Garantit l'alignement vertical des 2 boutons (même right, gap 10px).
   ========================================================================== */
@media (max-width: 560px) {
  .whatsapp-flottant {
    width: 60px;
    height: 60px;
    bottom: 1.25rem;
    right: 1.25rem;
  }

  .whatsapp-flottant svg {
    width: 30px;
    height: 30px;
  }

  .bouton-retour-haut {
    bottom: calc(1.25rem + 70px);
    right: 1.25rem;
  }
}

.hero-titre {
  display: block !important;
  width: max-content !important;
  max-width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding: 0.15rem 0.75rem !important;
  white-space: normal !important;
  box-sizing: border-box !important;
}

.hero-titre-ligne {
  box-sizing: border-box;
  white-space: normal !important;
  overflow-wrap: anywhere;
}

.hero-sous-titre {
  box-sizing: border-box;
  max-width: 760px;
  max-width: min(100%, 760px);
  margin-left: auto;
  margin-right: auto;
  padding: 0.25rem 1rem !important;
  text-align: center;
}

.hero-tagline {
  margin-left: auto;
  margin-right: auto;
}

.diapo-contenu .section-intro,
.diapo-contenu-rej .section-intro,
.entete-activites > .section-conteneur .section-intro,
.entete-formation > .section-conteneur .section-intro,
.entete-rmclub > .section-conteneur .section-intro,
.entete-rejoindre .section-intro,
#les-20-signes .section-intro {
  text-align: center !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

.diapo-contenu,
.diapo-contenu-rej,
.entete-activites > .section-conteneur,
.entete-formation > .section-conteneur,
.entete-rmclub > .section-conteneur,
#les-20-signes > .section-conteneur {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.diapo-contenu > .section-label,
.diapo-contenu-rej > .section-label,
.entete-activites > .section-conteneur > .section-label,
.entete-formation > .section-conteneur > .section-label,
.entete-rmclub > .section-conteneur > .section-label,
#les-20-signes > .section-conteneur > .section-label {
  margin-left: auto;
  margin-right: auto;
}

.hero,
.diapo-entete,
.entete-activites,
.entete-formation,
.entete-rmclub,
.entete-rejoindre,
#les-20-signes {
  min-height: 50vh;
  min-height: 50svh;
}

.etoile-filante {
  position: fixed;
  left: -12%;
  bottom: -10%;
  z-index: 2;
  width: 180px;
  height: 2px;
  pointer-events: none;
  opacity: 0;
  background: linear-gradient(90deg, transparent 0%, rgba(113, 244, 179, 0.35) 35%, #ffffff 82%, #71f4b3 100%);
  transform: rotate(-45deg);
  transform-origin: left center;
  will-change: transform, opacity;
  filter: drop-shadow(0 0 8px rgba(113, 244, 179, 0.9)) drop-shadow(0 0 18px rgba(184, 179, 255, 0.65));
}

.etoile-filante::after {
  content: "";
  position: absolute;
  top: 50%;
  right: -4px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 0 10px #ffffff, 0 0 22px #71f4b3;
  transform: translateY(-50%);
}

.etoile-filante--1,
.etoile-filante--2 {
  animation: none;
  opacity: 0;
}

.etoile-filante--1.lancee,
.etoile-filante--2.lancee {
  animation: etoile-trajet-unique 2.6s cubic-bezier(0.25, 0.75, 0.35, 1) forwards;
}

@keyframes etoile-trajet-unique {
  0% {
    opacity: 0;
    transform: translate3d(0, 0, 0) rotate(-45deg) scaleX(0.25);
  }
  10% {
    opacity: 1;
    transform: translate3d(0, 0, 0) rotate(-45deg) scaleX(1);
  }
  82% {
    opacity: 1;
    transform: translate3d(calc(100vw + 24rem), calc(-100vh - 24rem), 0) rotate(-45deg) scaleX(1);
  }
  100% {
    opacity: 0;
    transform: translate3d(calc(100vw + 24rem), calc(-100vh - 24rem), 0) rotate(-45deg) scaleX(1);
  }
}

.rm5-overlay {
  padding: 0.75rem !important;
  padding-top: max(0.75rem, env(safe-area-inset-top)) !important;
  padding-right: max(0.75rem, env(safe-area-inset-right)) !important;
  padding-bottom: max(0.75rem, env(safe-area-inset-bottom)) !important;
  padding-left: max(0.75rem, env(safe-area-inset-left)) !important;
  align-items: center !important;
  align-items: safe center !important;
}

.rm5-modal {
  width: min(100%, 420px) !important;
  max-height: calc(100vh - 1.5rem) !important;
  max-height: calc(100svh - 1.5rem) !important;
  max-height: calc(100dvh - 1.5rem) !important;
  box-sizing: border-box !important;
  margin: 0 !important;
  padding: 1.25rem !important;
  padding-top: max(1rem, env(safe-area-inset-top)) !important;
  padding-right: max(1rem, env(safe-area-inset-right)) !important;
  padding-bottom: max(1.25rem, env(safe-area-inset-bottom)) !important;
  padding-left: max(1rem, env(safe-area-inset-left)) !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  overscroll-behavior: contain !important;
  -webkit-overflow-scrolling: touch !important;
}

.rm5-modal > * {
  box-sizing: border-box;
  max-width: 100%;
}

.rm5-citation-label {
  display: block;
  margin-bottom: 0.35rem;
  color: var(--aqua-marine) !important;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.rm5-fermer {
  position: sticky !important;
  top: 0.75rem !important;
  right: 0.75rem !important;
  z-index: 3;
}

.rm5-image-cadre img {
  max-height: 320px;
  max-height: min(38svh, 320px);
  object-fit: contain;
}

.btn-retour-haut-footer {
  background: linear-gradient(135deg, rgba(77, 65, 217, 0.9) 0%, rgba(128, 61, 180, 0.9) 100%);
  border: 1px solid rgba(255, 255, 255, 0.32);
  color: #ffffff;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.28) inset,
    0 4px 14px rgba(77, 65, 217, 0.45),
    0 0 12px 2px rgba(113, 244, 179, 0.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.4);
  backdrop-filter: blur(14px) saturate(1.4);
}

.btn-retour-haut-footer:hover,
.btn-retour-haut-footer:focus-visible {
  background: linear-gradient(135deg, rgba(92, 80, 232, 0.95) 0%, rgba(154, 78, 204, 0.95) 100%);
  border-color: rgba(113, 244, 179, 0.8);
  color: #ffffff;
  box-shadow:
    0 6px 22px rgba(77, 65, 217, 0.6),
    0 0 0 5px rgba(113, 244, 179, 0.18),
    0 0 20px 4px rgba(113, 244, 179, 0.5);
}

@media (max-width: 600px) {
  .btn-retour-haut-footer {
    width: 48px;
    height: 48px;
    padding: 0;
    border-radius: 50%;
  }

  .btn-retour-haut-footer svg {
    width: 22px;
    height: 22px;
  }
}

#rejoindre-valeurs .carte-valeurs-reveil {
  background: linear-gradient(145deg, #1B1738 0%, #251B4E 100%);
  border: 1px solid rgba(113, 244, 179, 0.28);
  color: #F4F4FA;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.10) inset,
    0 14px 36px rgba(15, 15, 24, 0.18),
    0 24px 64px rgba(77, 65, 217, 0.14);
}

#rejoindre-valeurs .carte-valeurs-reveil:hover {
  transform: translateY(-5px);
  border-color: rgba(113, 244, 179, 0.58);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.14) inset,
    0 18px 44px rgba(15, 15, 24, 0.24),
    0 28px 80px rgba(113, 244, 179, 0.14);
}

#rejoindre-valeurs .carte-valeurs-reveil h3 {
  color: #FFFFFF;
}

#rejoindre-valeurs .carte-valeurs-reveil p {
  color: #D8D4EA;
}

#rejoindre-valeurs .carte-valeurs-reveil .carte-icone {
  background: rgba(113, 244, 179, 0.14);
  color: #71F4B3;
}

#communaute .stat-carte-liquide {
  background:
    linear-gradient(135deg, rgba(113, 244, 179, 0.48) 0%, rgba(113, 244, 179, 0.28) 100%),
    radial-gradient(circle at 18% 12%, rgba(255, 255, 255, 0.58), transparent 32%),
    radial-gradient(circle at 86% 88%, rgba(77, 65, 217, 0.12), transparent 34%) !important;
  border-color: rgba(45, 157, 111, 0.42) !important;
  -webkit-backdrop-filter: blur(18px) saturate(1.45);
  backdrop-filter: blur(18px) saturate(1.45);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.72) inset,
    0 18px 42px rgba(23, 111, 77, 0.16),
    0 8px 24px rgba(15, 15, 24, 0.08) !important;
  isolation: isolate;
  overflow: hidden;
}

#communaute .stat-carte-liquide::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(115deg, transparent 12%, rgba(255, 255, 255, 0.58) 42%, rgba(255, 255, 255, 0.22) 52%, transparent 74%);
  transform: translateX(-120%);
  animation: communaute-liquid-reflet 6s ease-in-out infinite;
  pointer-events: none;
  z-index: 0;
}

#communaute .stat-carte-liquide::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 20% 18%, rgba(255, 255, 255, 0.42), transparent 25%),
    radial-gradient(circle at 82% 82%, rgba(77, 65, 217, 0.14), transparent 28%);
  opacity: 0.9;
  animation: communaute-liquid-lueur 7s ease-in-out infinite alternate;
  pointer-events: none;
  z-index: 0;
}

#communaute .stat-carte-liquide > :not([aria-hidden="true"]) {
  position: relative;
  z-index: 1;
}

#communaute .stat-carte-liquide:hover {
  transform: translateY(-5px);
  border-color: rgba(45, 157, 111, 0.62) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.82) inset,
    0 24px 54px rgba(23, 111, 77, 0.22),
    0 12px 32px rgba(15, 15, 24, 0.10) !important;
}

#communaute .stat-carte-liquide > div[aria-hidden="true"]:first-child {
  background: rgba(113, 244, 179, 0.34) !important;
}

#communaute .stat-carte-liquide > div[aria-hidden="true"]:nth-child(2) {
  background: rgba(77, 65, 217, 0.14) !important;
}

#communaute .stat-carte-liquide > div[aria-hidden="true"] {
  filter: blur(8px) !important;
  opacity: 0.32;
}

#communaute .stat-carte-liquide > span {
  color: #803DB4 !important;
  font-size: clamp(2.25rem, 6vw, 2.8rem) !important;
  line-height: 1 !important;
  text-shadow: 0 0 18px rgba(128, 61, 180, 0.28) !important;
}

#communaute .stat-carte-liquide h3 {
  color: #121218 !important;
}

#communaute .stat-carte-liquide p {
  color: #1f1f2e !important;
}

#communaute .stat-carte-liquide a {
  color: #803DB4 !important;
  text-decoration: underline !important;
  text-decoration-color: #FFFFFF !important;
  text-decoration-thickness: 2px !important;
  text-underline-offset: 0.18em !important;
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  box-shadow: none !important;
  font-weight: 700 !important;
  display: inline !important;
}

#communaute .stat-carte-liquide a:hover,
#communaute .stat-carte-liquide a:focus-visible {
  background: transparent !important;
  border-color: transparent !important;
  color: #4D41D9 !important;
  transform: none !important;
  box-shadow: none !important;
  text-decoration-color: #FFFFFF !important;
}

@keyframes communaute-liquid-reflet {
  0%, 32% { transform: translateX(-120%); }
  68%, 100% { transform: translateX(120%); }
}

@keyframes communaute-liquid-lueur {
  from { opacity: 0.62; }
  to { opacity: 1; }
}

#communaute .communaute-reseaux {
  background:
    linear-gradient(135deg, rgba(24, 15, 48, 0.98), rgba(48, 22, 72, 0.98)) !important;
  border-color: rgba(113, 244, 179, 0.45) !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

#communaute .communaute-reseaux-actions .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  min-height: 44px;
  padding: 0.7rem 1.1rem;
  color: #ffffff !important;
  border: 1px solid rgba(255, 255, 255, 0.24) !important;
  background: rgba(7, 7, 10, 0.28) !important;
  font-size: 0.86rem;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: rgba(255, 255, 255, 0.86);
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
  box-shadow: none;
}

#communaute .communaute-reseaux-actions .btn:hover,
#communaute .communaute-reseaux-actions .btn:focus-visible {
  opacity: 0.92 !important;
  transform: none !important;
  border-color: rgba(113, 244, 179, 0.72) !important;
  background: rgba(7, 7, 10, 0.46) !important;
}

#communaute .communaute-reseaux-actions .btn svg {
  color: #ffffff;
  flex: 0 0 16px;
}

#communaute .communaute-reseaux-actions .instagram-gradient-text {
  background: linear-gradient(90deg, #E7C95B 0%, #D87A9E 48%, #9279C5 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  font-weight: 600;
}

#communaute .communaute-reseaux-actions .lien-tiktok-handle {
  background: linear-gradient(90deg, #25F4EE 0%, #FE2C55 52%, #FFFFFF 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  font-weight: 600;
}

#communaute .communaute-reseaux-actions .footer-cta-whatsapp-label {
  background: linear-gradient(90deg, #FFFFFF 0%, #D8FFE5 52%, #8FF0B1 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  font-weight: 800;
}

@media (max-width: 768px) {
  #communaute .grille-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
  }

  #communaute .grille-3 .stat-carte:nth-child(3) {
    grid-column: 1 / -1;
    justify-self: center;
    width: min(100%, 280px);
  }
}

.verset-biblique,
.reference-biblique {
  color: var(--aqua-marine) !important;
  font-weight: 700;
}

.verset-biblique {
  font-style: italic;
}

.fond-clair .verset-biblique,
.fond-clair .reference-biblique {
  color: #087f5b !important;
}

@media (prefers-reduced-motion: reduce) {
  .etoile-filante {
    animation: none !important;
    opacity: 0 !important;
  }

  .diapo-entete .diapo-slide,
  .diapo-slide-rej {
    animation: none !important;
    opacity: 0 !important;
    transform: none !important;
  }

  .diapo-entete .diapo-slide:first-child,
  .diapo-slide-rej:first-child {
    opacity: 1 !important;
  }

  .carousel-slide,
  .carousel-slide-2,
  .carousel-slide-3,
  .carousel-slide-4 {
    animation: none !important;
    opacity: 0 !important;
  }

  .entete-activites .carousel-slide:first-child,
  .entete-formation .carousel-slide:first-child,
  .entete-rmclub .carousel-slide:first-child {
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ==========================================================================
   LOADER WUM — loader + ripple + heartbeat (sans replay)
   ========================================================================== */
#ripple-wrapper {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 2;
  overflow: hidden;
}

.ripple-wave {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 60vmax;
  height: 60vmax;
  border-radius: 50%;
  opacity: 0;
  transform: translate(-50%, -50%) scale(0);
  will-change: transform, opacity, box-shadow, border-width;
  border: solid rgba(255, 255, 255, 0.95);
}

.ripple-active .wave-1 { animation: realisticWater 3.0s cubic-bezier(0.1, 0.8, 0.3, 1) forwards; }
.ripple-active .wave-2 { animation: realisticWater 3.0s cubic-bezier(0.1, 0.8, 0.3, 1) 0.25s forwards; }
.ripple-active .wave-3 { animation: realisticWater 3.0s cubic-bezier(0.1, 0.8, 0.3, 1) 0.5s forwards; }

@keyframes realisticWater {
  0%{opacity:1;transform:translate(-50%,-50%) scale(0);border-width:6px;border-color:rgba(255,255,255,1);box-shadow:0 0 50px 18px rgba(255,255,255,0.65),inset 0 0 40px 16px rgba(255,255,255,0.3)}
  35%{opacity:0.7;border-width:3px;border-color:rgba(255,255,255,0.85);box-shadow:0 0 80px 30px rgba(255,255,255,0.4),inset 0 0 60px 24px rgba(255,255,255,0.18)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1);border-width:0px;border-color:rgba(255,255,255,0);box-shadow:0 0 80px 30px rgba(255,255,255,0),inset 0 0 50px 20px rgba(255,255,255,0)}
}

@media (max-width: 767px) {
  .ripple-wave { width: 70vmax; height: 70vmax; }
}

.loader-overlay {
  position: fixed;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  z-index: 9999;
  background-color: rgba(0, 0, 0, 0.8);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), visibility 0.8s;
}

.loader-overlay.hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.loader-container {
  width: 80vw;
  max-width: 145px;
  aspect-ratio: 1 / 1;
}

@media (min-width: 768px) {
  .loader-container { max-width: 178px; }
}

.wum-svg { width: 100%; height: 100%; overflow: visible; }

.bar, .star {
  fill: #ffffff;
  will-change: transform, opacity;
  opacity: 0;
}

.tm-text {
  fill: #ffffff;
  font-family: var(--police-titre, 'Outfit', sans-serif);
  will-change: transform, opacity;
  opacity: 0;
}

.play-animation .bar-1  { animation: slideTopLeft  0.85s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
.play-animation .bar-2  { animation: slideTopRight 0.85s cubic-bezier(0.16, 1, 0.3, 1) 0.18s forwards; }
.play-animation .bar-3  { animation: slideTopRight 0.85s cubic-bezier(0.16, 1, 0.3, 1) 0.35s forwards; }

.play-animation .star {
  transform-origin: 184px 160px;
  animation: starDropIn 1.0s cubic-bezier(0.22, 1, 0.36, 1) 0.8s forwards;
  filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.8));
}

.play-animation .tm-text { animation: fadeIn 0.8s ease forwards 1.2s; }
.play-animation .glow-pulse-group { animation: breathingGlow 3s ease-in-out infinite alternate 1.8s; }

@keyframes slideTopLeft  { 0% { opacity: 0; transform: translate(-120vw, -120vh); } 100% { opacity: 1; transform: translate(0, 0); } }
@keyframes slideTopRight { 0% { opacity: 0; transform: translate(120vw, -120vh); } 100% { opacity: 1; transform: translate(0, 0); } }
@keyframes starDropIn   { 0% { opacity: 0; transform: scale(0.1) rotate(-360deg) translateY(-38px); }
                           55% { opacity: 1; transform: scale(1.15) rotate(0deg) translateY(-38px); }
                           85% { opacity: 1; transform: scale(0.95) rotate(0deg) translateY(0px); }
                           100% { opacity: 1; transform: scale(1) rotate(0deg) translateY(0px); } }
@keyframes fadeIn       { to { opacity: 1; } }
@keyframes breathingGlow { 0% { filter: drop-shadow(0 0 4px rgba(255,255,255,0.3)); }
                              50% { filter: drop-shadow(0 0 24px rgba(255,255,255,1)); }
                              100% { filter: drop-shadow(0 0 8px rgba(255,255,255,0.5)); } }

.loader-status {
  margin-top: 25px;
  font-size: 0.75rem;
  letter-spacing: 5px;
  color: #a1a1aa;
  display: flex;
  align-items: center;
  justify-content: center;
}

.dots span {
  animation: blinkDot 1.4s infinite both;
  font-size: 1rem;
  line-height: 0;
  margin-left: 2px;
}
.dots span:nth-child(1) { animation-delay: 0s; }
.dots span:nth-child(2) { animation-delay: 0.2s; }
.dots span:nth-child(3) { animation-delay: 0.4s; }

@keyframes blinkDot {
  0%, 100% { opacity: 0.2; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.2); }
}

/* Prévenir la scrollbar horizontale pendant le scale */
html, body { overflow-x: hidden; }
section, .section-conteneur, .grille-2, .grille-3 { overflow-x: hidden; }

/* Désactivation des animations pour motion réduite */
@media (prefers-reduced-motion: reduce) {
  .ripple-wave { animation: none !important; }
  .bar, .star, .tm-text { opacity: 1 !important; }
  .dots span { animation: none !important; opacity: 0.6; }
  .play-animation .bar-1,
  .play-animation .bar-2,
  .play-animation .bar-3,
  .play-animation .star,
  .play-animation .tm-text,
  .play-animation .glow-pulse-group { animation: none !important; }
}
/* ============================================================
    SCROLL REVEAL — Animations progressives au défilement
    Système moderne : IntersectionObserver + CSS scroll-driven
    animations comme progressive enhancement.

    Variantes :
      .reveal (défaut), .reveal-up, .reveal-blur, .reveal-scale,
      .reveal-left, .reveal-right, .reveal-fade,
      .reveal-clip, .reveal-spring, .reveal-3d
      [data-reveal="up|blur|scale|left|right|fade|clip|spring|3d"]

    Conteneur stagger :
      .reveal-stagger > *   → stagger générique (tout enfant direct)
      [data-stagger]        → attribut alternatif sur l'enfant
    ============================================================ */

/* ============================================================
    1. KEYFRAMES (mobile-first : distances/durées réduites)
    ============================================================ */

:root {
  --reveal-distance: 25px;
}

@keyframes reveal-up {
  from {
    opacity: 0;
    transform: translateY(var(--reveal-distance)) scale(0.97);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes reveal-blur {
  from {
    opacity: 0;
    filter: blur(10px);
    transform: scale(1.03);
  }
  to {
    opacity: 1;
    filter: blur(0);
    transform: scale(1);
  }
}

@keyframes reveal-scale {
  from {
    opacity: 0;
    transform: scale(0.88);
  }
  55% {
    transform: scale(1.03);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes reveal-left {
  from {
    opacity: 0;
    transform: translateX(-40px) scale(0.97);
  }
  to {
    opacity: 1;
    transform: translateX(0) scale(1);
  }
}

@keyframes reveal-right {
  from {
    opacity: 0;
    transform: translateX(40px) scale(0.97);
  }
  to {
    opacity: 1;
    transform: translateX(0) scale(1);
  }
}

@keyframes reveal-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes reveal-clip {
  from {
    opacity: 0;
    transform: translateY(20px);
    clip-path: inset(0 0 100% 0);
  }
  to {
    opacity: 1;
    transform: translateY(0);
    clip-path: inset(0 0 0 0);
  }
}

@keyframes reveal-spring {
  from {
    opacity: 0;
    transform: scale(0.82);
  }
  60% {
    transform: scale(1.05);
  }
  80% {
    transform: scale(0.98);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes reveal-3d {
  from {
    opacity: 0;
    transform: perspective(800px) rotateX(6deg) translateY(20px);
  }
  to {
    opacity: 1;
    transform: perspective(800px) rotateX(0deg) translateY(0);
  }
}

/* ============================================================
    2. ÉTAT INITIAL
    ============================================================ */

.reveal,
[data-reveal],
.reveal-stagger > *,
[data-stagger] {
  opacity: 0;
  will-change: transform, opacity;
}

/* ============================================================
     2b. ENFANTS DIRECTS DE .reveal (stagger automatique)
     ============================================================ */

.reveal > :not(.reveal-stagger),
.reveal > :not(.reveal-stagger)[data-stagger] {
  opacity: 0;
}

.reveal > :not(.reveal-stagger).is-visible,
.reveal > :not(.reveal-stagger)[data-stagger].is-visible {
  animation: reveal-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: calc(var(--i, 0) * 0.08s + 0.08s);
}

.reveal .section-titre,
.reveal .section-intro,
.reveal .section-label,
.reveal .carte,
.reveal .signe-carte,
.reveal .signe-carte-photo,
.reveal .timeline-item,
.reveal .stat-carte,
.reveal .activite-carte,
.reveal .pilier-carte,
.reveal .espace-item,
.reveal .formule-carte,
.reveal .session-carte,
.reveal .rejoindre-option,
.reveal .engagement-carte {
  opacity: 0;
}

.reveal .section-titre.is-visible,
.reveal .section-intro.is-visible,
.reveal .section-label.is-visible,
.reveal .carte.is-visible,
.reveal .signe-carte.is-visible,
.reveal .signe-carte-photo.is-visible,
.reveal .timeline-item.is-visible,
.reveal .stat-carte.is-visible,
.reveal .activite-carte.is-visible,
.reveal .pilier-carte.is-visible,
.reveal .espace-item.is-visible,
.reveal .formule-carte.is-visible,
.reveal .session-carte.is-visible,
.reveal .rejoindre-option.is-visible,
.reveal .engagement-carte.is-visible {
  animation: reveal-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: calc(var(--i, 0) * 0.08s + 0.08s);
}

section.reveal {
  opacity: 0;
  will-change: transform, opacity;
}

section.reveal.is-visible {
  animation: reveal-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) both;
}

section.reveal > .section-conteneur,
section.reveal > div,
section.reveal > span,
section.reveal > p,
section.reveal > .carte,
section.reveal > .grille-2,
section.reveal > .grille-3 {
  opacity: 0;
  will-change: transform, opacity;
}

section.reveal.is-visible > .section-conteneur,
section.reveal.is-visible > div,
section.reveal.is-visible > span,
section.reveal.is-visible > p,
section.reveal.is-visible > .carte,
section.reveal.is-visible > .grille-2,
section.reveal.is-visible > .grille-3 {
  animation: reveal-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: calc(var(--i, 0) * 0.08s + 0.08s);
}

/* ============================================================
     3. ANIMATIONS PAR VARIANTE (mobile-first)
     ============================================================ */

section.reveal,
.reveal,
[data-reveal="up"].is-visible {
  animation: reveal-up 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.reveal-blur.is-visible,
[data-reveal="blur"].is-visible {
  animation: reveal-blur 0.65s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.reveal-scale.is-visible,
[data-reveal="scale"].is-visible {
  animation: reveal-scale 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.reveal-left.is-visible,
[data-reveal="left"].is-visible {
  animation: reveal-left 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.reveal-right.is-visible,
[data-reveal="right"].is-visible {
  animation: reveal-right 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.reveal-fade.is-visible,
[data-reveal="fade"].is-visible {
  animation: reveal-fade 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.reveal-clip.is-visible,
[data-reveal="clip"].is-visible {
  animation: reveal-clip 0.65s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.reveal-spring.is-visible,
[data-reveal="spring"].is-visible {
  animation: reveal-spring 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.reveal-3d.is-visible,
[data-reveal="3d"].is-visible {
  animation: reveal-3d 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
}

/* ============================================================
    4. STAGTER GÉNÉRIQUE (délais via --i, mobile-first)
    ============================================================ */

.reveal-stagger > *,
[data-stagger] {
  opacity: 0;
  will-change: transform, opacity;
}

.reveal-stagger > *.is-visible,
[data-stagger].is-visible {
  animation: reveal-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: calc(var(--i, 0) * 0.08s + 0.08s);
}

/* ============================================================
    5. MOBILE FIRST — Intensité réduite sur petit écran
    ============================================================ */

@media (max-width: 768px) {
  :root {
    --reveal-distance: 12px;
  }

  .reveal,
  [data-reveal],
  .reveal-stagger > *,
  [data-stagger],
  .reveal > :not(.reveal-stagger),
  .reveal > :not(.reveal-stagger)[data-stagger] {
    will-change: transform, opacity;
  }

  .reveal-blur.is-visible,
  [data-reveal="blur"].is-visible {
    animation-name: reveal-fade;
    animation-duration: 0.5s;
  }

  .reveal-scale.is-visible,
  [data-reveal="scale"].is-visible {
    animation-name: reveal-fade;
    animation-duration: 0.5s;
  }

  .reveal-spring.is-visible,
  [data-reveal="spring"].is-visible {
    animation-name: reveal-fade;
    animation-duration: 0.5s;
  }

  .reveal-3d.is-visible,
  [data-reveal="3d"].is-visible {
    animation-name: reveal-fade;
    animation-duration: 0.5s;
  }

  .reveal-clip.is-visible,
  [data-reveal="clip"].is-visible {
    animation-name: reveal-fade;
    animation-duration: 0.5s;
  }

  .reveal-stagger > *.is-visible,
  [data-stagger].is-visible {
    animation-delay: calc(var(--i, 0) * 0.08s + 0.08s);
  }

  .reveal > :not(.reveal-stagger).is-visible,
  .reveal > :not(.reveal-stagger)[data-stagger].is-visible {
    animation-delay: calc(var(--i, 0) * 0.06s + 0.06s);
  }

  .reveal .section-titre.is-visible,
  .reveal .section-intro.is-visible,
  .reveal .section-label.is-visible,
  .reveal .carte.is-visible,
  .reveal .signe-carte.is-visible,
  .reveal .signe-carte-photo.is-visible,
  .reveal .timeline-item.is-visible,
  .reveal .stat-carte.is-visible,
  .reveal .activite-carte.is-visible,
  .reveal .pilier-carte.is-visible,
  .reveal .espace-item.is-visible,
  .reveal .formule-carte.is-visible,
  .reveal .session-carte.is-visible,
  .reveal .rejoindre-option.is-visible,
  .reveal .engagement-carte.is-visible {
    animation-delay: calc(var(--i, 0) * 0.06s + 0.06s);
  }
}

/* ============================================================
     7. A11Y — prefers-reduced-motion
     ============================================================ */

/* reduced-motion : on ne désactive pas tout, on réduit l'intensité.
   - Les animations simples (reveal-up, reveal-fade) sont conservées
   - Les effets lourds (blur, spring, 3d, clip) sont supprimés
   - Durées réduites de moitié pour un confort accru */
@media (prefers-reduced-motion: reduce) {
  .reveal,
  [data-reveal],
  .reveal-stagger > *,
  [data-stagger] {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
    animation-duration: 0.01ms !important;
    animation-delay: 0ms !important;
    will-change: auto !important;
  }

  .reveal-blur,
  .reveal-scale,
  .reveal-left,
  .reveal-right,
  .reveal-fade,
  .reveal-clip,
  .reveal-spring,
  .reveal-3d {
    animation: none !important;
    transition: none !important;
  }

  /* Pour reveal-blur / reveal-scale : on retire le flou mais on garde le fondu */
  .reveal-blur,
  [data-reveal="blur"] {
    filter: none !important;
    animation-name: reveal-fade !important;
  }
}
