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

@keyframes pulseGlow {
  0%,
  100% {
    box-shadow: 0 0 0 rgba(0, 191, 255, 0.2);
  }
  50% {
    box-shadow: 0 0 38px rgba(0, 191, 255, 0.28);
  }
}

@keyframes gridDrift {
  0% {
    transform: translate3d(0, 0, 0);
  }
  50% {
    transform: translate3d(-12px, -8px, 0);
  }
  100% {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes shimmer {
  0% {
    transform: translateX(-150%);
  }
  100% {
    transform: translateX(150%);
  }
}

@keyframes ripple {
  to {
    transform: scale(22);
    opacity: 0;
  }
}

@keyframes progressPulse {
  0%,
  100% {
    opacity: 0.8;
  }
  50% {
    opacity: 1;
  }
}

.floating-card {
  animation: floatCard 7s ease-in-out infinite;
}

.pulse-glow {
  animation: pulseGlow 4.2s ease-in-out infinite;
}

.grid-drift {
  animation: gridDrift 15s ease-in-out infinite;
}

.shimmer-surface {
  position: relative;
  overflow: hidden;
}

.shimmer-surface::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, transparent 10%, rgba(255, 255, 255, 0.08) 50%, transparent 90%);
  transform: translateX(-150%);
  animation: shimmer 6s linear infinite;
}

.scroll-progress {
  animation: progressPulse 3s ease-in-out infinite;
}
