/* ═══════════════════════════════════════════════════════
   LOADER — Écran de chargement (v2 — compressé ~2.3s)
   Partagé entre toutes les pages publiques.
   ═══════════════════════════════════════════════════════ */
html.no-loader .loader-overlay { display: none !important; }

.loader-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: var(--bg-primary, #0a0a0a);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  transition: opacity 0.45s cubic-bezier(0.4, 0, 0.2, 1);
}
.loader-overlay.done {
  opacity: 0;
  pointer-events: none;
}

.loader__logo-wrap {
  position: relative;
  width: 130px;
  height: 130px;
  margin-bottom: 36px;
  overflow: visible;
}
.loader__logo-wrap svg {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  overflow: visible;
}

.loader__stroke path {
  fill: none;
  stroke: #FFFFFF;
  stroke-width: 14;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.loader__fill { opacity: 0; }
.loader__fill path { fill: #FFFFFF; }

.loader__text {
  text-align: center;
  opacity: 0;
}
.loader__name {
  font-family: var(--font-logo, 'Syne', sans-serif);
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin-bottom: 8px;
  color: #FFFFFF;
}
.loader__activity {
  font-family: var(--font-body, 'Inter', sans-serif);
  font-size: 0.58rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--text-secondary, rgba(255,255,255,0.85));
}

/* Animations compressées ~2.3s (vs 4.7s original) */
@keyframes loaderStroke { to { stroke-dashoffset: 0; } }
@keyframes loaderFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes loaderFadeOut { to { opacity: 0; } }
@keyframes loaderFadeUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }

.loader-overlay.playing .loader-bar-entry {
  animation: loaderStroke 0.3s 0.0s cubic-bezier(0.4,0,0.2,1) forwards,
             loaderFadeOut 0.3s 1.65s cubic-bezier(0.4,0,0.2,1) forwards;
}
.loader-overlay.playing .loader-bar-a {
  animation: loaderStroke 0.45s 0.25s cubic-bezier(0.4,0,0.2,1) forwards;
}
.loader-overlay.playing .loader-bar-b {
  animation: loaderStroke 0.4s 0.6s cubic-bezier(0.4,0,0.2,1) forwards;
}
.loader-overlay.playing .loader-bar-c {
  animation: loaderStroke 0.4s 0.6s cubic-bezier(0.4,0,0.2,1) forwards;
}
.loader-overlay.playing .loader-bar-d {
  animation: loaderStroke 0.45s 0.9s cubic-bezier(0.4,0,0.2,1) forwards;
}
.loader-overlay.playing .loader-bar-exit {
  animation: loaderStroke 0.3s 1.35s cubic-bezier(0.4,0,0.2,1) forwards,
             loaderFadeOut 0.3s 1.65s cubic-bezier(0.4,0,0.2,1) forwards;
}
.loader-overlay.playing .loader__fill {
  animation: loaderFadeIn 0.35s 1.75s cubic-bezier(0.22,1,0.36,1) forwards;
}
.loader-overlay.playing .loader__text {
  animation: loaderFadeUp 0.5s 1.9s cubic-bezier(0.22,1,0.36,1) forwards;
}

@media (max-width: 768px) {
  .loader__logo-wrap { width: 100px; height: 100px; }
  .loader__name { font-size: 1.2rem; }
  .loader__activity { font-size: 0.5rem; letter-spacing: 0.08em; white-space: nowrap; }
}
