/* Ecran de chargement bref (logo + motif de marque). Masque le tres court
   instant ou les composants et le carrousel s'initialisent, pour eviter
   tout flash d'images demesurees et desorganisees pendant ce moment. */
.site-preloader {
  position: fixed;
  inset: 0;
  z-index: 500;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #f7f5f3;
  transition: opacity 0.4s ease;
}

.site-preloader[hidden] {
  display: none;
}

.site-preloader.is-hiding {
  opacity: 0;
  pointer-events: none;
}

.site-preloader-logo {
  width: clamp(56px, 10vw, 96px);
  height: auto;
  filter: invert(100%);
  animation: site-preloader-pulse 1.6s ease-in-out infinite;
}

@keyframes site-preloader-pulse {
  0%,
  100% {
    opacity: 0.55;
    transform: scale(0.94);
  }
  50% {
    opacity: 1;
    transform: scale(1);
  }
}

/* Empeche le defilement pendant le tres court instant ou l'ecran de
   chargement est visible. */
body:has(.site-preloader:not(.is-hiding)) {
  overflow: hidden;
}
