/* ---------------------------------------------------------------------------
   GRAMMAIRE DE MOUVEMENT — une seule référence pour tout le site.

   Chaque module utilisait sa propre courbe et sa propre durée : le menu à lui
   seul en comptait six. Résultat, les éléments bougeaient chacun dans leur coin
   et l'ensemble ne « tenait » pas. Ici, une courbe maîtresse et trois durées :
   tout ce qui bouge sur le site s'y réfère, donc tout avance ensemble.

   --bj-ease     : départ ET arrivée en douceur (déplacements, rideaux, bascules)
   --bj-ease-out : démarre franc, se pose en douceur (apparitions d'éléments)
   Les durées sont dans un rapport simple (≈ 1 : 1,7 : 2,6) pour que les
   enchaînements tombent juste.
--------------------------------------------------------------------------- */
:root {
  --bj-ease: cubic-bezier(0.62, 0, 0.14, 1);
  --bj-ease-out: cubic-bezier(0.16, 0.68, 0.22, 1);
  --bj-t-fast: 0.32s;
  --bj-t-base: 0.55s;
  --bj-t-slow: 0.85s;
}

/* Règles recommandées par Lenis — https://github.com/darkroomengineering/lenis */
html.lenis,
html.lenis body {
  height: auto;
}

/* Bloquer le scroll (menu plein écran, popup) masque la barre de défilement :
   la page s'élargit alors brutalement de sa largeur — d'où un « sursaut » à
   l'ouverture, y compris sur les éléments fixes (bouton menu, header).
   En réservant sa place en permanence, la largeur ne change plus jamais. */
html {
  scrollbar-gutter: stable;
}

.lenis:not(.lenis-autoToggle).lenis-stopped {
  overflow: clip;
}

.lenis.lenis-smooth {
  scroll-behavior: auto !important;
}

.lenis.lenis-smooth [data-lenis-prevent] {
  overscroll-behavior: contain;
}

/* Évite que les iframes (maps, vidéos) avalent la molette pendant le défilement. */
.lenis.lenis-smooth iframe {
  pointer-events: none;
}

.lenis.lenis-autoToggle {
  transition-property: overflow;
  transition-duration: 1ms;
  transition-behavior: allow-discrete;
}
