.reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .46s cubic-bezier(.2,.75,.25,1), transform .46s cubic-bezier(.2,.75,.25,1);
}
.reveal.is-visible { opacity: 1; transform: none; }
.service-card, .gallery-placeholder, .roadside__steps article, .counter-card, .testimonial-card, .prep-card, .region-block { transition: transform .28s cubic-bezier(.2,.75,.25,1), box-shadow .28s cubic-bezier(.2,.75,.25,1), border-color .28s cubic-bezier(.2,.75,.25,1), background .28s cubic-bezier(.2,.75,.25,1); }
.service-card:hover { transform: translateY(-3px); box-shadow: 0 18px 40px rgba(16,24,40,.08); border-color: #d6deea; }
.gallery-placeholder:hover, .roadside__steps article:hover { transform: translateY(-2px); }
.hero-media__route span { animation: routePulse 5s ease-in-out infinite alternate; }
.hero-media__route span:nth-child(2) { animation-delay: .7s; }
.hero-media__route span:nth-child(3) { animation-delay: 1.3s; }
@keyframes routePulse { from { opacity: .25; } to { opacity: .8; } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .reveal { opacity: 1 !important; transform: none !important; }
}

.counter-card:hover, .testimonial-card:hover, .prep-card:hover { transform: translateY(-5px); box-shadow: 0 26px 48px rgba(0,0,0,.18); }
.region-block:hover { transform: translateX(4px); }
.hero-media__badge { animation: floatBadge 4.8s ease-in-out infinite; }
.hero-media__badge--service { animation-delay: .8s; }
@keyframes floatBadge { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
.counter-card strong.is-done { text-shadow: 0 0 24px rgba(245,166,35,.20); }

.impact-counters__glow--left { animation: glowFloatLeft 8s ease-in-out infinite alternate; }
.impact-counters__glow--center { animation: glowFloatCenter 9s ease-in-out infinite alternate; }
.impact-counters__glow--right { animation: glowFloatRight 8.4s ease-in-out infinite alternate; }
.about__badge, .about__mini-card, .prep-card__icon { animation: softFloat 4.6s ease-in-out infinite; }
.about__badge--live, .about__mini-card--two { animation-delay: .8s; }
.about__badge--local, .about__mini-card--three { animation-delay: 1.4s; }
.process-list__icon { animation: pulseIcon 3.5s ease-in-out infinite; }
.prep-card:hover .prep-card__icon { transform: translateY(-4px) rotate(-4deg); }

@keyframes glowFloatLeft { from { transform: translate3d(0,0,0) scale(1); } to { transform: translate3d(18px, -8px, 0) scale(1.08); } }
@keyframes glowFloatCenter { from { transform: translateX(-50%) translateY(0) scale(1); } to { transform: translateX(-50%) translateY(16px) scale(1.08); } }
@keyframes glowFloatRight { from { transform: translate3d(0,0,0) scale(1); } to { transform: translate3d(-14px, 10px, 0) scale(1.06); } }
@keyframes softFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@keyframes pulseIcon { 0%,100% { box-shadow: 0 0 0 0 rgba(18,101,232,.0); } 50% { box-shadow: 0 0 0 10px rgba(18,101,232,.0), 0 0 0 4px rgba(18,101,232,.08); } }

.floating-whatsapp__icon {
  animation: whatsappBob 2.8s ease-in-out infinite, whatsappPulse 2.2s ease-out infinite;
}
@keyframes whatsappBob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}
@keyframes whatsappPulse {
  0% { box-shadow: 0 0 0 0 rgba(37, 211, 102, .28), 0 12px 26px rgba(16,24,40,.16); }
  70% { box-shadow: 0 0 0 14px rgba(37, 211, 102, 0), 0 12px 26px rgba(16,24,40,.16); }
  100% { box-shadow: 0 0 0 0 rgba(37, 211, 102, 0), 0 12px 26px rgba(16,24,40,.16); }
}

/* V9 subtle video motion */
.hero-media__live-dot { animation: livePulse 1.9s ease-in-out infinite; }
.hero-media__hud--top { animation: hudFloat 5.2s ease-in-out infinite; }
.hero-media__badge--service { animation: badgeFloatSoft 5.6s ease-in-out infinite; }
.hero-media__badge--location { animation: badgeFloatSoft 5.9s ease-in-out infinite reverse; }
.hero-media__frame { animation: frameGlow 7s ease-in-out infinite; }
@keyframes livePulse {
  0%,100% { box-shadow: 0 0 0 4px rgba(38,215,123,.08), 0 0 16px rgba(38,215,123,.30); opacity: .9; }
  50% { box-shadow: 0 0 0 7px rgba(38,215,123,0), 0 0 22px rgba(38,215,123,.48); opacity: 1; }
}
@keyframes hudFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes badgeFloatSoft { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
@keyframes frameGlow {
  0%,100% { box-shadow: 0 34px 86px rgba(0,0,0,.34), 0 0 0 1px rgba(255,255,255,.025) inset, 0 0 34px rgba(18,101,232,.08); }
  50% { box-shadow: 0 36px 90px rgba(0,0,0,.36), 0 0 0 1px rgba(255,255,255,.035) inset, 0 0 52px rgba(18,101,232,.16); }
}
@media (prefers-reduced-motion: reduce) {
  .hero-media__hud--top,
  .hero-media__badge--service,
  .hero-media__badge--location,
  .hero-media__frame,
  .hero-media__live-dot { animation: none !important; }
}
