/* ============================================
   Fast2 — Animations
   ============================================ */

/* --- Scroll Reveal --- */
.reveal {
    opacity: 0;
    transition: opacity var(--transition-slow), transform var(--transition-slow);
    will-change: opacity, transform;
}

.reveal.is-visible {
    opacity: 1 !important;
    transform: none;
}

.reveal-fade { opacity: 0; }
.reveal-up { opacity: 0; transform: translateY(40px); }
.reveal-down { opacity: 0; transform: translateY(-40px); }
.reveal-left { opacity: 0; transform: translateX(-40px); }
.reveal-right { opacity: 0; transform: translateX(40px); }
.reveal-scale { opacity: 0; transform: scale(0.9); }

/* Stagger delays (legacy fixed classes) */
.reveal-delay-1 { transition-delay: 200ms; }
.reveal-delay-2 { transition-delay: 450ms; }
.reveal-delay-3 { transition-delay: 700ms; }
.reveal-delay-4 { transition-delay: 950ms; }
.reveal-delay-5 { transition-delay: 1200ms; }

/* Dynamic stagger via --i (set by JS or inline style="--i:N") */
.stagger { transition-delay: calc(var(--i, 0) * 80ms); }

/* --- Pulse glow (for CTAs) --- */
@keyframes pulse-glow {
    0%, 100% { box-shadow: 0 0 0 0 rgba(233, 30, 99, 0.4); }
    50% { box-shadow: 0 0 0 15px rgba(233, 30, 99, 0); }
}

.btn--pulse {
    animation: pulse-glow 2.5s ease-in-out infinite;
}

/* --- Gradient text --- */
.gradient-text {
    background: linear-gradient(135deg, var(--c-primary-light), var(--c-secondary));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

/* --- Vanilla Tilt glare support --- */
.js-tilt-glare { border-radius: inherit; }

/* --- Reduce motion --- */
@media (prefers-reduced-motion: reduce) {
    .reveal, .reveal-fade, .reveal-up, .reveal-down,
    .reveal-left, .reveal-right, .reveal-scale {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .btn--pulse { animation: none; }
    .spinner { animation-duration: 1.5s; }
}
