/* animations.css */

/* Float — Organic Balloon Motion */
@keyframes float {
  0%, 100% { transform: translateY(0) rotate(-3deg); }
  33%       { transform: translateY(-15px) rotate(2deg); }
  66%       { transform: translateY(-5px) rotate(-1deg); }
}

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

/* Ticker — Smooth Scroll */
@keyframes ticker {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

.ticker-track {
  display: flex;
  white-space: nowrap;
  width: max-content;
  animation: ticker 40s linear infinite;
  gap: 60px;
  align-items: center;
}

/* Glow Pulse — Primary Accent */
@keyframes glowPulse {
  0%   { box-shadow: 0 0 0 0 rgba(255, 79, 163, 0.4); }
  70%  { box-shadow: 0 0 0 20px rgba(255, 79, 163, 0); }
  100% { box-shadow: 0 0 0 0 rgba(255, 79, 163, 0); }
}

.btn-primary:active {
  animation: glowPulse 1.5s infinite;
}

/* Confetti Fall */
@keyframes confettiFall {
  0%   { transform: translateY(-20px) rotate(0deg); opacity: 1; }
  10%   { opacity: 1; }
  90%   { opacity: 1; }
  100% { transform: translateY(105vh) rotate(720deg); opacity: 0; }
}

/* Shake — Form Validation */
@keyframes shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-8px); }
  75% { transform: translateX(8px); }
}

.shake {
  animation: shake 0.4s ease-in-out;
}

/* Hover Scale */
.hover-scale {
  transition: transform var(--tr-base);
}

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

/* Gradient Flow */
@keyframes gradFlow {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

.grad-active {
  background-size: 200% 200%;
  animation: gradFlow 3s ease infinite;
}
