/* ============================================================
   ESCAPE ROOM OUIDAH — animations.css v5 Premium
   ============================================================ */

/* ── Keyframes fondamentaux ── */
@keyframes fadeInUp    { from{opacity:0;transform:translateY(24px)} to{opacity:1;transform:none} }
@keyframes fadeInDown  { from{opacity:0;transform:translateY(-18px)} to{opacity:1;transform:none} }
@keyframes fadeInLeft  { from{opacity:0;transform:translateX(-24px)} to{opacity:1;transform:none} }
@keyframes fadeInRight { from{opacity:0;transform:translateX(24px)}  to{opacity:1;transform:none} }
@keyframes fadeIn      { from{opacity:0} to{opacity:1} }
@keyframes scaleIn     { from{opacity:0;transform:scale(.96)} to{opacity:1;transform:none} }
@keyframes shimmer     { 0%,100%{opacity:1} 50%{opacity:.55} }
@keyframes floatY      { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-8px)} }
@keyframes rotateGlow  { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }
@keyframes scrollLine  {
  0%  {transform:scaleY(0);transform-origin:top}
  50% {transform:scaleY(1);transform-origin:top}
  51% {transform-origin:bottom}
  100%{transform:scaleY(0);transform-origin:bottom}
}
@keyframes gradientShift {
  0%  {background-position:0% 50%}
  50% {background-position:100% 50%}
  100%{background-position:0% 50%}
}
@keyframes borderGlow {
  0%,100%{box-shadow:0 0 0 0 rgba(201,168,76,0)}
  50%    {box-shadow:0 0 0 6px rgba(201,168,76,.08)}
}

/* ── Hero : séquence d'entrée ── */
.hero-badge    { animation:fadeInDown .6s cubic-bezier(.4,0,.2,1) both }
.hero-title    { animation:fadeInUp .75s .12s cubic-bezier(.4,0,.2,1) both }
.hero-sub      { animation:fadeInUp .75s .24s cubic-bezier(.4,0,.2,1) both }
.hero-actions  { animation:fadeInUp .75s .36s cubic-bezier(.4,0,.2,1) both }
.hero-scroll   { animation:fadeIn .8s .8s both }
.hero-scroll-line {
  width:1px; height:44px;
  background:linear-gradient(var(--gold), transparent);
  animation:scrollLine 1.8s ease-in-out infinite;
}

/* ── Reveal on scroll — smooth & élégant ── */








/* Staggered delays */
.delay-1 { transition-delay:.08s }
.delay-2 { transition-delay:.16s }
.delay-3 { transition-delay:.24s }
.delay-4 { transition-delay:.32s }
.delay-5 { transition-delay:.40s }
.delay-6 { transition-delay:.50s }

/* ── Flottement ── */
.float-anim { animation:floatY 4s ease-in-out infinite }
.float-slow { animation:floatY 6s ease-in-out infinite }

/* ── Glow subtil ── */
.glow-gold { animation:borderGlow 3s ease-in-out infinite }

/* ── Hover lift ultra smooth ── */
.lift { transition:transform .4s cubic-bezier(.34,1.56,.64,1), box-shadow .4s cubic-bezier(.4,0,.2,1) }
.lift:hover { transform:translateY(-5px) }

/* ── Gradient text animé ── */
.gradient-text-anim {
  background:linear-gradient(135deg, var(--text-1), var(--gold-soft), var(--gold), var(--gold-bright), var(--text-1));
  background-size:300% 300%;
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
  animation:gradientShift 6s ease infinite;
}

/* ── Ligne shimmer ── */
.shimmer-line {
  position:relative; overflow:hidden;
}
.shimmer-line::after {
  content:''; position:absolute; top:0; left:-100%; width:100%; height:100%;
  background:linear-gradient(90deg, transparent, rgba(201,168,76,.06), transparent);
  animation:shimmerSlide 2.5s ease-in-out infinite;
}
@keyframes shimmerSlide { from{left:-100%} to{left:200%} }

/* ── Pulse badge ── */
@keyframes badgePulse {
  0%,100%{box-shadow:0 0 0 0 rgba(201,168,76,.3)}
  70%    {box-shadow:0 0 0 8px rgba(201,168,76,0)}
}
.badge-pulse { animation:badgePulse 2.5s ease-out infinite }

/* ── Spinner premium ── */
.spinner {
  width:20px; height:20px;
  border:1.5px solid rgba(201,168,76,.15);
  border-top-color:var(--gold);
  border-radius:50%;
  animation:spin .7s linear infinite;
  display:inline-block; vertical-align:middle;
}
@keyframes spin { to{transform:rotate(360deg)} }

/* ── Marquee pause au survol ── */
.marquee-wrap:hover .marquee-track { animation-play-state:paused }

/* ── Transition page ── */
#page-transition { transition:transform .5s cubic-bezier(.76,0,.24,1) }
