/* =========================================================
   La Nuitée — animations
   ========================================================= */

@keyframes scrollDot {
  0%   { transform: translateY(0);    opacity: 0; }
  30%  { opacity: 1; }
  100% { transform: translateY(16px); opacity: 0; }
}

@keyframes flipNum {
  0%   { transform: rotateX(0deg);   opacity: 1; }
  45%  { transform: rotateX(-88deg); opacity: .25; }
  55%  { transform: rotateX(88deg);  opacity: .25; }
  100% { transform: rotateX(0deg);   opacity: 1; }
}

@keyframes floatY {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50%      { transform: translate3d(0, -18px, 0); }
}

@keyframes floatYSoft {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50%      { transform: translate3d(0, -10px, 0); }
}

@keyframes pulseGlow {
  0%, 100% { opacity: .55; filter: drop-shadow(0 0 10px rgba(255, 122, 26, .45)); }
  50%      { opacity: 1;   filter: drop-shadow(0 0 26px rgba(255, 179, 71, .85)); }
}

@keyframes twinkle {
  0%, 100% { opacity: .18; }
  50%      { opacity: .9; }
}

@keyframes ghostDrift {
  0%   { transform: translate3d(-14vw, 0, 0) scale(.92);        opacity: 0; }
  12%  { opacity: .62; }
  50%  { transform: translate3d(46vw, -26px, 0) scale(1.06);    opacity: .5; }
  88%  { opacity: .55; }
  100% { transform: translate3d(108vw, 8px, 0) scale(.94);      opacity: 0; }
}

@keyframes batFly {
  0%   { offset-distance: 0%;   opacity: 0; }
  8%   { opacity: .75; }
  92%  { opacity: .7; }
  100% { offset-distance: 100%; opacity: 0; }
}

@keyframes wingFlap {
  0%, 100% { transform: scaleY(1)    scaleX(1); }
  50%      { transform: scaleY(.82)  scaleX(1.04); }
}

@keyframes spiderDrop {
  0%   { transform: translateY(-46px); opacity: 0; }
  14%  { opacity: 1; }
  82%  { transform: translateY(0);    opacity: 1; }
  100% { transform: translateY(0);    opacity: 1; }
}

@keyframes webSway {
  0%, 100% { transform: rotate(0deg); }
  50%      { transform: rotate(1.1deg); }
}

@keyframes candleFlicker {
  0%, 100% { transform: scaleY(1)    translateX(0);     opacity: 1; }
  22%      { transform: scaleY(1.07) translateX(.4px);  opacity: .92; }
  47%      { transform: scaleY(.95)  translateX(-.5px); opacity: 1; }
  71%      { transform: scaleY(1.04) translateX(.3px);  opacity: .96; }
}
