/* Loader simple et efficace */

/* Masquer TOUT le contenu sauf le loader par défaut */
body:not(.page-ready) > *:not(#page-loader) {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* Le loader */
#page-loader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #ffffff;
  z-index: 99999;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0;
  transition: opacity 0.8s ease-out, visibility 0.8s ease-out;
}

.dark #page-loader {
  background: #0a0a0a;
}

#page-loader.hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* Logo */
.loader-logo {
  width: 120px;
  height: 120px;
  animation: loader-pulse 2s ease-in-out infinite;
  margin-bottom: 0;
}

@keyframes loader-pulse {
  0%, 100% {
    transform: scale(1);
    opacity: 1;
  }
  50% {
    transform: scale(1.05);
    opacity: 0.9;
  }
}

.loader-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Barre de progression */
.loader-progress-container {
  width: 280px;
  max-width: 90%;
  height: 4px;
  background: rgba(0, 0, 0, 0.1);
  border-radius: 10px;
  overflow: hidden;
  position: relative;
  margin-top: -1.5rem;
}

.dark .loader-progress-container {
  background: rgba(255, 255, 255, 0.1);
}

.loader-progress-bar {
  height: 100%;
  width: 0%;
  background: #000000;
  border-radius: 10px;
  transition: width 0.3s ease-out;
  position: relative;
  overflow: hidden;
}

.dark .loader-progress-bar {
  background: #ffffff;
}

.loader-progress-bar::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(255, 255, 255, 0.3),
    transparent
  );
  animation: loader-shimmer 1.5s infinite;
}

.dark .loader-progress-bar::after {
  background: linear-gradient(
    90deg,
    transparent,
    rgba(0, 0, 0, 0.3),
    transparent
  );
}

@keyframes loader-shimmer {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}

/* Pourcentage */
.loader-percentage {
  margin-top: 0.5rem;
  font-size: 0.875rem;
  color: #64748b;
  font-weight: 500;
}

.dark .loader-percentage {
  color: #e2e8f0;
}

/* Quand la page est prête, afficher le contenu */
body.page-ready > *:not(#page-loader) {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity 0.6s ease-in, visibility 0.6s ease-in;
}

