/* Reusable motion utilities — all effects are transform/opacity based. */
.motion-ready [data-aos] {
    opacity: 0;
    filter: blur(8px);
    translate: 0 34px;
    transition:
        opacity 800ms var(--ease-out) var(--reveal-delay, 0ms),
        filter 800ms var(--ease-out) var(--reveal-delay, 0ms),
        translate 900ms var(--ease-out) var(--reveal-delay, 0ms),
        scale 900ms var(--ease-out) var(--reveal-delay, 0ms);
}

.motion-ready [data-aos="fade-left"] {
    translate: 48px 0;
}

.motion-ready [data-aos="fade-right"] {
    translate: -48px 0;
}

.motion-ready [data-aos].aos-animate,
.motion-ready [data-aos].is-visible {
    opacity: 1;
    filter: blur(0);
    translate: 0 0;
    scale: 1;
}

.motion-ready .hero-badge,
.motion-ready .hero-title > span,
.motion-ready .hero-subtitle,
.motion-ready .hero-buttons,
.motion-ready .hero-stats {
    opacity: 0;
    filter: blur(10px);
    transform: translate3d(0, 28px, 0);
}

.motion-ready.page-ready .hero-badge,
.motion-ready.page-ready .hero-title > span,
.motion-ready.page-ready .hero-subtitle,
.motion-ready.page-ready .hero-buttons,
.motion-ready.page-ready .hero-stats {
    animation: hero-reveal 900ms var(--ease-out) forwards;
}

.motion-ready.page-ready .hero-title > span:first-child { animation-delay: 90ms; }
.motion-ready.page-ready .hero-title > span:last-child { animation-delay: 180ms; }
.motion-ready.page-ready .hero-subtitle { animation-delay: 280ms; }
.motion-ready.page-ready .hero-buttons { animation-delay: 370ms; }
.motion-ready.page-ready .hero-stats { animation-delay: 470ms; }

.loading-logo {
    animation: loader-float 1.8s ease-in-out infinite;
}

.loading-logo i {
    animation: loader-drive 1.5s var(--ease-out) infinite;
}

.loading-progress {
    animation: loading-line 1.25s var(--ease-out) infinite;
}

.logo-icon i {
    animation: logo-drive 3.8s ease-in-out infinite;
}

.gradient-text {
    animation: gradient-flow 7s linear infinite;
}

.shape {
    animation: ambient-float 10s ease-in-out infinite;
}

.shape-2,
.shape-5 { animation-delay: -3s; animation-duration: 13s; }
.shape-3,
.shape-6 { animation-delay: -7s; animation-duration: 16s; }

.particle {
    animation: particle-rise 10s linear infinite;
}

.particle:nth-child(2) { animation-delay: -2s; animation-duration: 13s; }
.particle:nth-child(3) { animation-delay: -6s; animation-duration: 9s; }
.particle:nth-child(4) { animation-delay: -4s; animation-duration: 15s; }
.particle:nth-child(5) { animation-delay: -8s; animation-duration: 12s; }
.particle:nth-child(6) { animation-delay: -1s; animation-duration: 11s; }

.delivery-truck {
    animation: truck-hover 5.5s ease-in-out infinite;
}

.wheel {
    animation: wheel-turn 2.8s linear infinite;
}

.truck-smoke {
    animation: exhaust 1.8s ease-out infinite;
}

.route-orbit-outer {
    animation: orbit-outer 22s linear infinite;
}

.route-orbit-inner {
    animation: orbit-inner 16s linear infinite reverse;
}

.route-orbit span {
    animation: route-pulse 1.8s ease-in-out infinite;
}

.floating-parcel,
.floating-pin {
    animation: parcel-float 5s ease-in-out infinite;
}

.parcel-two { animation-delay: -2.5s; }
.floating-pin { animation-delay: -1.4s; animation-duration: 6.5s; }

.service-icon i,
.contact-icon i {
    transition: transform 350ms var(--ease-spring);
}

.service-card:hover .service-icon i,
.contact-item:hover .contact-icon i {
    transform: scale(1.12) rotate(5deg);
}

.testimonial-card.is-featured {
    animation: featured-card 900ms var(--ease-out);
}

.button-ripple {
    animation: ripple 650ms ease-out forwards;
}

.tooltip {
    animation: tooltip-in 180ms var(--ease-out);
}

.menu-toggle i {
    transition: transform 260ms var(--ease-spring);
}

.menu-toggle.active i {
    transform: rotate(90deg);
}

@keyframes hero-reveal {
    to {
        opacity: 1;
        filter: blur(0);
        transform: translate3d(0, 0, 0);
    }
}

@keyframes loader-float {
    0%, 100% { transform: translateY(0) rotate(-2deg); }
    50% { transform: translateY(-9px) rotate(2deg); }
}

@keyframes loader-drive {
    0% { transform: translateX(-4px); opacity: 0.65; }
    50% { transform: translateX(4px); opacity: 1; }
    100% { transform: translateX(-4px); opacity: 0.65; }
}

@keyframes loading-line {
    0% { transform: translateX(-110%); }
    70%, 100% { transform: translateX(240%); }
}

@keyframes logo-drive {
    0%, 82%, 100% { transform: translateX(0); }
    88% { transform: translateX(3px); }
    94% { transform: translateX(-2px); }
}

@keyframes gradient-flow {
    to { background-position: -220% center; }
}

@keyframes ambient-float {
    0%, 100% { transform: translate3d(0, 0, 0) rotate(0); }
    35% { transform: translate3d(14px, -18px, 0) rotate(4deg); }
    70% { transform: translate3d(-9px, 12px, 0) rotate(-3deg); }
}

@keyframes particle-rise {
    0% { opacity: 0; transform: translate3d(0, 10vh, 0) scale(0.5); }
    12% { opacity: 0.8; }
    84% { opacity: 0.65; }
    100% { opacity: 0; transform: translate3d(35px, -105vh, 0) scale(1.35); }
}

@keyframes truck-hover {
    0%, 100% { transform: translate(-50%, -50%) rotateY(-9deg) rotateX(3deg) translateY(0); }
    50% { transform: translate(-50%, -50%) rotateY(-5deg) rotateX(1deg) translateY(-13px); }
}

@keyframes wheel-turn {
    to { rotate: 1turn; }
}

@keyframes exhaust {
    0% { opacity: 0; transform: translateX(8px) scaleX(0.5); }
    40% { opacity: 0.65; }
    100% { opacity: 0; transform: translateX(-32px) scaleX(1.7); }
}

@keyframes orbit-outer {
    from { transform: rotateX(68deg) rotateZ(-16deg); }
    to { transform: rotateX(68deg) rotateZ(344deg); }
}

@keyframes orbit-inner {
    from { transform: rotateX(68deg) rotateZ(18deg); }
    to { transform: rotateX(68deg) rotateZ(378deg); }
}

@keyframes route-pulse {
    0%, 100% { opacity: 0.65; scale: 0.7; }
    50% { opacity: 1; scale: 1.25; }
}

@keyframes parcel-float {
    0%, 100% { transform: translate3d(0, 0, 20px) rotate(-3deg); }
    50% { transform: translate3d(0, -15px, 42px) rotate(4deg); }
}

@keyframes featured-card {
    0%, 100% { translate: 0 0; }
    50% { translate: 0 -6px; }
}

@keyframes ripple {
    to { opacity: 0; transform: translate(-50%, -50%) scale(1); }
}

@keyframes tooltip-in {
    from { opacity: 0; transform: translateY(5px) scale(0.96); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

@media (max-width: 1100px) {
    .delivery-truck {
        animation-name: truck-hover-compact;
    }

    @keyframes truck-hover-compact {
        0%, 100% { transform: translate(-50%, -50%) rotateY(-9deg) rotateX(3deg) scale(0.86) translateY(0); }
        50% { transform: translate(-50%, -50%) rotateY(-5deg) rotateX(1deg) scale(0.86) translateY(-13px); }
    }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }

    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }

    .motion-ready [data-aos],
    .motion-ready .hero-badge,
    .motion-ready .hero-title > span,
    .motion-ready .hero-subtitle,
    .motion-ready .hero-buttons,
    .motion-ready .hero-stats {
        opacity: 1;
        filter: none;
        translate: 0 0;
        transform: none;
    }

    .cursor-dot,
    .cursor-ring { display: none; }
}
