/* =============================================================================
   VERITEX SMOOTH ANIMATIONS & MICRO-INTERACTIONS
   ============================================================================= */

/* Fade In / Reveal from Bottom */
@keyframes vtxFadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Fade In / Reveal from Left */
@keyframes vtxFadeInLeft {
  from {
    opacity: 0;
    transform: translateX(-30px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

/* Fade In / Reveal from Right */
@keyframes vtxFadeInRight {
  from {
    opacity: 0;
    transform: translateX(30px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

/* Zoom In Effect */
@keyframes vtxZoomIn {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* Shimmer/Pulse for CTA elements */
@keyframes vtxPulseGold {
  0% {
    box-shadow: 0 0 0 0 rgba(201, 168, 76, 0.4);
  }
  70% {
    box-shadow: 0 0 0 15px rgba(201, 168, 76, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(201, 168, 76, 0);
  }
}

/* WhatsApp pulse rings */
@keyframes vtxWhatsappPulse {
  0% {
    transform: scale(0.95);
    box-shadow: 0 0 0 0 rgba(37, 211, 102, 0.5);
  }
  70% {
    transform: scale(1);
    box-shadow: 0 0 0 15px rgba(37, 211, 102, 0);
  }
  100% {
    transform: scale(0.95);
    box-shadow: 0 0 0 0 rgba(37, 211, 102, 0);
  }
}

/* Classes for triggers (applied via ScrollObserver JS or loaded on mount) */
.vtx-animate-fade-up {
  opacity: 0;
}

.vtx-animate-fade-up.vtx-animated {
  animation: vtxFadeInUp 0.8s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

.vtx-animate-fade-left {
  opacity: 0;
}

.vtx-animate-fade-left.vtx-animated {
  animation: vtxFadeInLeft 0.8s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

.vtx-animate-fade-right {
  opacity: 0;
}

.vtx-animate-fade-right.vtx-animated {
  animation: vtxFadeInRight 0.8s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

.vtx-animate-zoom {
  opacity: 0;
}

.vtx-animate-zoom.vtx-animated {
  animation: vtxZoomIn 0.8s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

/* Stagger delays for list components */
.vtx-delay-100 { animation-delay: 100ms !important; }
.vtx-delay-200 { animation-delay: 200ms !important; }
.vtx-delay-300 { animation-delay: 300ms !important; }
.vtx-delay-400 { animation-delay: 400ms !important; }
.vtx-delay-500 { animation-delay: 500ms !important; }

/* Pulse animation helper */
.vtx-pulse-gold {
  animation: vtxPulseGold 2s infinite;
}

/* Floating particle subtle drifting */
@keyframes vtxFloatDrift {
  0% {
    transform: translate(0, 0) rotate(0deg);
  }
  50% {
    transform: translate(15px, -15px) rotate(180deg);
  }
  100% {
    transform: translate(0, 0) rotate(360deg);
  }
}

.vtx-drifting-particle {
  animation: vtxFloatDrift 20s linear infinite;
}

/* Hover effects for premium cards */
.vtx-hover-grow {
  transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), box-shadow 0.3s cubic-bezier(0.25, 1, 0.5, 1);
}

.vtx-hover-grow:hover {
  transform: translateY(-5px) scale(1.02);
  box-shadow: var(--vtx-shadow-lg);
}

/* Form focus border glow transition */
.vtx-input-glow {
  transition: border-color 0.25s ease, box-shadow 0.25s ease;
}

.vtx-input-glow:focus {
  border-color: var(--vtx-primary);
  box-shadow: 0 0 0 4px rgba(11, 58, 115, 0.15);
}
