/* ==========================================================
   Purified LLC — Animation System
   File: animations.css
   Purpose: Entrance animations, hover motion and UI transitions
   ========================================================== */

/* Global transition helpers */

.fade-in {
    animation: fadeIn 0.8s ease forwards;
}

.fade-up {
    animation: fadeUp 0.8s ease forwards;
}

.fade-left {
    animation: fadeLeft 0.8s ease forwards;
}

.fade-right {
    animation: fadeRight 0.8s ease forwards;
}

.zoom-in {
    animation: zoomIn 0.7s ease forwards;
}

/* Scroll reveal support */

.reveal {
    opacity: 0;
    transform: translateY(28px);
    transition:
        opacity 700ms ease,
        transform 700ms ease;
}

.reveal.active {
    opacity: 1;
    transform: translateY(0);
}

/* Hero animations */

.hero-content {
    animation: heroContentIn 0.9s ease forwards;
}

.hero-image {
    animation: heroImageIn 1s ease forwards;
}

/* Floating vehicle effect */

.hero-image img,
.equipment-inner img {
    animation: floatY 6s ease-in-out infinite;
}

/* Feature card hover */

.feature-card,
.service-card,
.price-card,
.why-card {
    transition:
        transform var(--transition-base),
        box-shadow var(--transition-base);
}

.feature-card:hover,
.service-card:hover,
.price-card:hover,
.why-card:hover {
    transform: translateY(-6px);
}

/* Button interaction */

.primary-button,
.secondary-button {
    transition:
        transform var(--transition-base),
        box-shadow var(--transition-base);
}

.primary-button:hover,
.secondary-button:hover {
    transform: translateY(-2px) scale(1.02);
}

/* Header shrink effect */

.site-header {
    transition:
        background var(--transition-base),
        box-shadow var(--transition-base),
        padding var(--transition-base);
}

.site-header.is-scrolled .header-container {
    min-height: 72px;
}

/* Keyframes */

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateY(28px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeLeft {
    from {
        opacity: 0;
        transform: translateX(-32px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes fadeRight {
    from {
        opacity: 0;
        transform: translateX(32px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes zoomIn {
    from {
        opacity: 0;
        transform: scale(0.92);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes heroContentIn {
    from {
        opacity: 0;
        transform: translateY(36px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes heroImageIn {
    from {
        opacity: 0;
        transform: translateX(60px) scale(0.96);
    }

    to {
        opacity: 1;
        transform: translateX(0) scale(1);
    }
}

@keyframes floatY {
    0% {
        transform: translateY(0px);
    }

    50% {
        transform: translateY(-8px);
    }

    100% {
        transform: translateY(0px);
    }
}

/* Reduced motion accessibility */

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