/* ===== CUSTOM ANIMATIONS ===== */

/* Floating animation */
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-15px); }
}

.float { animation: float 4s ease-in-out infinite; }

/* Pulse animation */
@keyframes pulse-soft {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.03); }
}

.pulse-soft { animation: pulse-soft 3s ease-in-out infinite; }

/* Shimmer effect for gradient text */
@keyframes shimmer {
  0% { background-position: -200% center; }
  100% { background-position: 200% center; }
}

.shimmer {
  background: var(--gradient-main);
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: shimmer 3s linear infinite;
}

/* Slide up with fade */
@keyframes slideUpFade {
  from { opacity: 0; transform: translateY(30px); }
  to { opacity: 1; transform: translateY(0); }
}

.animate-slide-up {
  animation: slideUpFade 0.6s ease forwards;
}

/* Spin slowly */
@keyframes spin-slow {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.spin-slow {
  animation: spin-slow 20s linear infinite;
}

/* Bounce */
@keyframes bounce-subtle {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}

.bounce-subtle {
  animation: bounce-subtle 2s ease-in-out infinite;
}

/* Typewriter cursor blink */
@keyframes blink {
  0%, 50% { opacity: 1; }
  51%, 100% { opacity: 0; }
}

/* Scale on hover effect for cards */
.hover-scale {
  transition: transform 0.3s ease;
}

.hover-scale:hover {
  transform: scale(1.03);
}

/* Gradient border animation */
@keyframes gradientBorder {
  0% { border-image: linear-gradient(45deg, #5B3CC4, #2D8CFF) 1; }
  50% { border-image: linear-gradient(225deg, #2D8CFF, #18D4FF) 1; }
  100% { border-image: linear-gradient(45deg, #5B3CC4, #2D8CFF) 1; }
}

/* Arrow bounce */
@keyframes arrowBounce {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(5px); }
}

.arrow-bounce:hover i {
  animation: arrowBounce 0.6s ease infinite;
}
