/* ============================================================
   NEXTGEN DELIVERY LIMITED — animations.css
   ============================================================ */

/* AOS custom overrides */
[data-aos] { pointer-events: none; }
[data-aos].aos-animate { pointer-events: auto; }

/* Smooth page transitions */
.page-enter { opacity: 0; transform: translateY(20px); }
.page-enter-active { opacity: 1; transform: translateY(0); transition: opacity .4s ease, transform .4s ease; }

/* Button ripple */
.btn-primary-custom, .btn-white-custom, .btn-outline-custom, .nav-quote {
  position: relative;
  overflow: hidden;
}
.btn-primary-custom::after,
.btn-white-custom::after,
.btn-outline-custom::after,
.nav-quote::after {
  content: '';
  position: absolute;
  inset: 50%;
  background: rgba(255,255,255,.25);
  border-radius: 50%;
  transform: scale(0);
  transition: transform .5s ease, opacity .5s ease;
  opacity: 0;
}
.btn-primary-custom:active::after,
.btn-white-custom:active::after,
.btn-outline-custom:active::after,
.nav-quote:active::after {
  inset: -50%;
  transform: scale(1);
  opacity: 1;
  transition: 0s;
}

/* Truck driving animation */
@keyframes driveRight {
  0%   { transform: translateX(-120%); }
  100% { transform: translateX(120vw); }
}
.truck-anim {
  position: fixed;
  bottom: -10px;
  left: 0;
  font-size: 2.5rem;
  z-index: 9998;
  animation: driveRight 3.5s ease-in-out forwards;
  pointer-events: none;
}

/* Counter number animation */
.counter-value {
  display: inline-block;
  transition: all .1s ease;
}

/* Service card icon spin on hover */
.service-card:hover .service-card-icon i {
  animation: iconBounce .4s ease;
}
@keyframes iconBounce {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.25) rotate(-8deg); }
}

/* Shimmer loading skeleton */
@keyframes shimmer {
  0% { background-position: -200% center; }
  100% { background-position: 200% center; }
}
.shimmer {
  background: linear-gradient(90deg, #f0f0f0 25%, #e8e8e8 50%, #f0f0f0 75%);
  background-size: 200% auto;
  animation: shimmer 1.5s linear infinite;
}

/* Glow pulse for CTA */
@keyframes glowPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(255,107,0,.4); }
  50% { box-shadow: 0 0 0 12px rgba(255,107,0,0); }
}
.btn-glow { animation: glowPulse 2.5s ease-in-out infinite; }

/* Floating arrow bounce */
@keyframes bounceDown {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(8px); }
}
.scroll-hint { animation: bounceDown 1.6s ease-in-out infinite; }

/* Nav underline slide */
.navbar-nav .nav-link::after { content: ''; position: absolute; bottom: 4px; left: 50%; right: 50%; height: 2px; background: #FF6B00; border-radius: 2px; transition: left .3s ease, right .3s ease; }
