/*! SONIC SNOWFLAKE RECORDS — Animations */

@keyframes eqBounce {
  0%, 100% { height: 30%; }
  50% { height: 100%; }
}

@keyframes lbIn {
  from { opacity: 0; transform: scale(.97) translateY(6px); }
  to { opacity: 1; transform: none; }
}

@keyframes toastIn {
  from { opacity: 0; transform: translateY(10px) scale(.96); }
  to { opacity: 1; transform: none; }
}

@keyframes glowPulse {
  0%, 100% { opacity: .55; }
  50% { opacity: 1; }
}

@keyframes driftSlow {
  0% { transform: translate3d(0,0,0) rotate(0deg); }
  50% { transform: translate3d(2%, -3%, 0) rotate(4deg); }
  100% { transform: translate3d(0,0,0) rotate(0deg); }
}

@keyframes spinSlow {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes snowFall {
  from { transform: translateY(-10vh) translateX(0); }
  to { transform: translateY(110vh) translateX(var(--drift, 0px)); }
}

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

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

@keyframes crackFlicker {
  0%, 92%, 100% { opacity: .85; }
  94% { opacity: .3; }
  96% { opacity: 1; }
}

@keyframes ringExpand {
  0% { transform: scale(.9); opacity: .8; }
  100% { transform: scale(1.5); opacity: 0; }
}

@keyframes sparkTwinkle {
  0%, 100% { opacity: 0; transform: scale(.4); }
  50% { opacity: 1; transform: scale(1); }
}

.ambient-snow, .ambient-spark {
  position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 1;
}
.ambient-snow span {
  position: absolute; top: -6%; border-radius: 50%; opacity: .5;
  animation-name: snowFall; animation-timing-function: linear; animation-iteration-count: infinite;
}
.ambient-spark span {
  position: absolute; border-radius: 50%;
  animation-name: sparkTwinkle; animation-timing-function: ease-in-out; animation-iteration-count: infinite;
  box-shadow: 0 0 7px currentColor;
}
@media (prefers-reduced-motion: reduce) { .ambient-snow, .ambient-spark { display: none; } }

.anim-marquee { animation: marquee 34s linear infinite; }
.anim-float { animation: floatY 5s ease-in-out infinite; }
.anim-spin-slow { animation: spinSlow 24s linear infinite; }
.anim-glow-pulse { animation: glowPulse 3.4s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) {
  .anim-marquee, .anim-float, .anim-spin-slow, .anim-glow-pulse { animation: none; }
}
