.challenge-page {
    --challenge-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

.challenge-title-main,
.challenge-title-sub,
.challenge-lead,
.challenge-points li {
    animation: challengeFadeUp 0.7s var(--challenge-ease) both;
}

.challenge-title-sub {
    animation-delay: 0.06s;
}

.challenge-lead {
    animation-delay: 0.12s;
}

.challenge-points li:nth-child(1) {
    animation-delay: 0.08s;
}

.challenge-points li:nth-child(2) {
    animation-delay: 0.14s;
}

.challenge-points li:nth-child(3) {
    animation-delay: 0.2s;
}

.challenge-points li:nth-child(4) {
    animation-delay: 0.26s;
}

.challenge-hero-media img {
    animation: challengePhotoIn 0.9s var(--challenge-ease) 0.1s both;
}

.challenge-motion-ready .challenge-reveal {
    opacity: 0;
    transform: translateY(18px);
    transition:
        opacity 0.75s var(--challenge-ease) var(--challenge-delay, 0ms),
        transform 0.75s var(--challenge-ease) var(--challenge-delay, 0ms),
        filter 0.45s var(--challenge-ease);
}

.challenge-motion-ready .challenge-reveal.challenge-reveal-photo {
    transform: translateY(16px) scale(0.985);
}

.challenge-motion-ready .challenge-reveal.challenge-reveal-card {
    transform: translateY(20px);
}

.challenge-motion-ready .challenge-reveal.is-visible {
    opacity: 1;
    transform: translateY(0) scale(1);
}

.challenge-motion-ready .challenge-check-list li::before {
    transition: transform 0.55s var(--challenge-ease) var(--challenge-delay, 0ms);
    transform: scale(0.86);
}

.challenge-motion-ready .challenge-check-list li.is-visible::before {
    transform: scale(1);
}

.challenge-image-grid img,
.challenge-card img,
.challenge-reviews-grid article img {
    transition: transform 0.45s var(--challenge-ease), filter 0.45s var(--challenge-ease);
}

.challenge-image-grid img:hover,
.challenge-reviews-grid article:hover img {
    filter: saturate(1.04);
    transform: translateY(-4px);
}

.challenge-steps .challenge-card img:hover {
    animation: challengeImageBounce 0.48s var(--challenge-ease) both;
    filter: saturate(1.05);
}

.challenge-arrow {
    animation: challengeArrowFloat 4.8s ease-in-out infinite;
}

.challenge-arrow-benefits,
.challenge-arrow-reward {
    animation-delay: 0.45s;
}

.challenge-arrow-reviews,
.challenge-arrow-loyalty {
    animation-delay: 0.9s;
}

@keyframes challengeFadeUp {
    from {
        opacity: 0;
        transform: translateY(14px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes challengePhotoIn {
    from {
        opacity: 0;
        transform: translateY(10px) scale(0.985);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes challengeArrowFloat {
    0%,
    100% {
        transform: translate3d(0, 0, 0) rotate(-1deg);
    }
    50% {
        transform: translate3d(0, -8px, 0) rotate(1deg);
    }
}

@keyframes challengeImageBounce {
    0% {
        transform: translateY(0) scale(1);
    }
    38% {
        transform: translateY(-8px) scale(1.018);
    }
    68% {
        transform: translateY(2px) scale(0.998);
    }
    100% {
        transform: translateY(-4px) scale(1.006);
    }
}

@media (prefers-reduced-motion: reduce) {
    .challenge-page *,
    .challenge-page *::before,
    .challenge-page *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        transition-delay: 0ms !important;
    }
}
