

@keyframes FloatAndWobble {
  0%   { transform: translateY(0px) rotate(-8deg); }
  25%  { transform: translateY(-12px) rotate(8deg); }
  50%  { transform: translateY(8px) rotate(-6deg); }
  75%  { transform: translateY(-8px) rotate(6deg); }
  100% { transform: translateY(0px) rotate(-8deg); }
}


@keyframes FloatGentle {
  0% {
    transform: translateY(0px) rotate(-6deg);
  }
  25% {
    transform: translateY(-10px) rotate(3deg);
  }
  50% {
    transform: translateY(10px) rotate(-4deg);
  }
  75% {
    transform: translateY(-8px) rotate(5deg);
  }
  100% {
    transform: translateY(0px) rotate(-6deg);
  }
}


@keyframes FloatY {
  0%   { transform: translateY(100vh) rotate(0deg);   }
  100% { transform: translateY(-10vh) rotate(360deg); }
}

@keyframes FloatX {
  0%   { transform: translateX(-10vw); }
  100% { transform: translateX(110vw); }
}

@keyframes DriftDiagonal {
  0%   { transform: translate(-10vw, 10vh) rotate(0deg); }
  100% { transform: translate(10vw, -10vh) rotate(360deg); }
}

@keyframes Spin {
  to { transform: rotate(360deg); }
}

@keyframes Pulse {
  0%, 100% { transform: scale(1);    opacity: 1;   }
  50%      { transform: scale(1.06); opacity: 0.85;}
}

@keyframes GlowPulse {
  0%, 100% { text-shadow: 0 0 0 rgba(255,255,255,0.0); }
  50%      { text-shadow: 0 0 18px rgba(255,255,255,0.25); }
}

@keyframes FadeInUp {
  0%   { opacity: 0; transform: translateY(12px); }
  100% { opacity: 1; transform: translateY(0);    }
}

@keyframes FadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}


.FloatSlow    { animation: FloatY 18s linear infinite; }
.FloatMedium  { animation: FloatY 12s linear infinite; }
.FloatFast    { animation: FloatY 8s  linear infinite; }

.FloatGentle {
  animation: FloatGentle 8s ease-in-out infinite;
}

.FloatAndWobble {
  animation: FloatAndWobble 10s ease-in-out infinite;
}

.FloatXSlow   { animation: FloatX 28s linear infinite; }
.FloatXMedium { animation: FloatX 18s linear infinite; }
.FloatXFast   { animation: FloatX 12s linear infinite; }

.DriftSlow    { animation: DriftDiagonal 24s linear infinite; }
.DriftMedium  { animation: DriftDiagonal 16s linear infinite; }
.DriftFast    { animation: DriftDiagonal 10s linear infinite; }


.SpinSlow   { animation: Spin 40s linear infinite; }
.SpinMedium { animation: Spin 22s linear infinite; }
.SpinFast   { animation: Spin 12s linear infinite; }

.PulseSlow   { animation: Pulse 3.2s ease-in-out infinite; }
.PulseMedium { animation: Pulse 2.2s ease-in-out infinite; }
.PulseFast   { animation: Pulse 1.5s ease-in-out infinite; }

.PulseGlow { animation: GlowPulse 3s ease-in-out infinite; }


.RevealFadeIn   { animation: FadeIn 600ms ease-out both; }
.RevealFadeUp   { animation: FadeInUp 700ms ease-out both; }

.Delay100 { animation-delay: 100ms; }
.Delay200 { animation-delay: 200ms; }
.Delay300 { animation-delay: 300ms; }
.Delay400 { animation-delay: 400ms; }
.Delay500 { animation-delay: 500ms; }

.ParallaxLayer {
  transform: translate3d(0, calc(var(--ParallaxOffset, 0px) * var(--ParallaxSpeed, 0.5)), 0);
  will-change: transform;
  pointer-events: none;
}


@media (prefers-reduced-motion: reduce) {
  .FloatSlow, .FloatMedium, .FloatFast,
  .FloatXSlow, .FloatXMedium, .FloatXFast,
  .DriftSlow, .DriftMedium, .DriftFast,
  .SpinSlow, .SpinMedium, .SpinFast,
  .PulseSlow, .PulseMedium, .PulseFast,
  .PulseGlow,
  .RevealFadeIn, .RevealFadeUp {
    animation: none !important;
  }
  .ParallaxLayer {
    transform: none !important;
  }
}


@keyframes Bounce {
  0%, 100% { transform: translateY(0);   opacity: 0.8; }
  50%      { transform: translateY(6px); opacity: 1;   }
}
.ScrollIndicator {
  animation: Bounce 1.6s ease-in-out infinite;
  opacity: 0.9;
}


@keyframes Shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0;  }
}
.Shimmer {
  background-image: linear-gradient(90deg,
    rgba(255,255,255,0) 0%,
    rgba(255,255,255,0.12) 50%,
    rgba(255,255,255,0) 100%);
  background-size: 200% 100%;
  animation: Shimmer 2.2s linear infinite;
}
