@keyframes formFade {
    from { opacity: 0; transform: translateY(16px) scale(.985); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes whatsappPulse {
    0%, 100% { box-shadow: 0 13px 30px rgba(15,23,42,.25), 0 0 0 0 rgba(34,197,94,.32); }
    50% { box-shadow: 0 13px 30px rgba(15,23,42,.25), 0 0 0 12px rgba(34,197,94,0); }
}

@keyframes callPulse {
    0%, 100% { box-shadow: 0 13px 30px rgba(15,23,42,.25), 0 0 0 0 rgba(0,110,232,.32); }
    50% { box-shadow: 0 13px 30px rgba(15,23,42,.25), 0 0 0 12px rgba(0,110,232,0); }
}

@keyframes phoneRing {
    0%, 58%, 100% { transform: rotate(0deg); }
    8% { transform: rotate(-14deg); }
    16% { transform: rotate(14deg); }
    24% { transform: rotate(-12deg); }
    32% { transform: rotate(12deg); }
    40% { transform: rotate(-8deg); }
    48% { transform: rotate(8deg); }
}

@keyframes ringRipple {
    0% { transform: scale(.82); opacity: .75; }
    100% { transform: scale(1.45); opacity: 0; }
}

@keyframes ringRippleOuter {
    0% { transform: scale(.88); opacity: .45; }
    100% { transform: scale(1.7); opacity: 0; }
}

@keyframes wheelTurn {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

@keyframes roadDash {
    from { background-position: 0 0; }
    to { background-position: 84px 0; }
}

@keyframes lightSweep {
    from { background-position: 220% 0; }
    to { background-position: -80% 0; }
}

@keyframes heroRoad {
    from { background-position: 0 0, 0 0; }
    to { background-position: -360px 0, 0 0; }
}

@keyframes heroPosterDrift {
    0%, 100% { transform: scale(1.02) translate3d(0, 0, 0); }
    50% { transform: scale(1.06) translate3d(-16px, 8px, 0); }
}

@keyframes orbitRoll {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

@keyframes floatCard {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-10px); }
}

@keyframes routeGlow {
    0%, 100% { filter: drop-shadow(0 0 8px rgba(22,169,255,.18)); opacity: .82; }
    50% { filter: drop-shadow(0 0 18px rgba(67,201,19,.34)); opacity: 1; }
}

@keyframes iconPop {
    0%, 100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-3px) scale(1.06); }
}

@keyframes tyreRoll {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

@keyframes queryFloat {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

.floating-call {
    animation: callPulse 2.4s ease-in-out infinite, phoneRing 3.8s ease-in-out infinite;
}
.floating-whatsapp {
    animation: whatsappPulse 2.4s ease-in-out infinite, phoneRing 3.8s ease-in-out infinite;
}
.floating-contact::before { animation: ringRipple 2.4s ease-out infinite; }
.floating-contact::after { animation: ringRippleOuter 2.4s ease-out infinite .55s; }
.floating-call:hover { animation: callPulse 2.4s ease-in-out infinite; }
.floating-whatsapp:hover { animation: whatsappPulse 2.4s ease-in-out infinite; }
.brand-road::before, .route-line::before { animation: roadDash 1.15s linear infinite; }
.hero-media { animation: heroPosterDrift 18s ease-in-out infinite; will-change: transform; }
.hero::after { animation: heroRoad 7s linear infinite; }
.hero-orbit-one { animation: orbitRoll 24s linear infinite; }
.hero-orbit-two { animation: orbitRoll 18s linear reverse infinite; }
.quick-booking::before, .image-cta::after, .safety-band::before, .final-cta::before, .compact-cta::before { animation: lightSweep 4.8s ease-in-out infinite; }
.section-dark::before { animation: lightSweep 8s linear infinite; }
.visual-main { animation: floatCard 5.6s ease-in-out infinite; }
.visual-float { animation: floatCard 4.4s ease-in-out infinite reverse; }
.route-line { animation: routeGlow 3s ease-in-out infinite; }
.service-card:hover .service-icon, .popular-card:hover > i:first-child, .need-card:hover i, .content-card:hover > i, .choice-card:hover .choice-icon, .verification-grid span:hover i { animation: iconPop .65s ease both; }
.service-card::before, .popular-card::before, .need-card::before, .content-card::before { animation: lightSweep 2.6s ease-in-out infinite; }
.reveal { opacity: 0; transform: translateY(34px) scale(.985); transition: opacity .78s cubic-bezier(.2,.7,.2,1), transform .78s cubic-bezier(.2,.7,.2,1); }
.reveal.visible { opacity: 1; transform: translateY(0); }
.delay-1 { transition-delay: .08s; }
.delay-2 { transition-delay: .16s; }
.delay-3 { transition-delay: .24s; }
.delay-4 { transition-delay: .32s; }
.delay-5 { transition-delay: .4s; }

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