/**
 * Page Animations — Scroll-triggered animations for Elementor builder pages
 *
 * Loaded on singular 'lap' posts via enqueue-page-animations.php
 * Classes applied by page-scroll-observer.js (IntersectionObserver)
 */

/* ---- Hero Entrance ---- */
@keyframes heroFadeUp {
    from { opacity: 0; transform: translateY(30px); }
    to { opacity: 1; transform: translateY(0); }
}
@keyframes heroSlideIn {
    from { opacity: 0; transform: translateX(40px) scale(0.96); }
    to { opacity: 1; transform: translateX(0) scale(1); }
}

/* ---- Scroll Animation Classes ---- */
.fade-in {
    opacity: 0; transform: translateY(40px);
    transition: opacity 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.fade-in.visible { opacity: 1; transform: translateY(0); }

.slide-left {
    opacity: 0; transform: translateX(-60px);
    transition: opacity 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.slide-left.visible { opacity: 1; transform: translateX(0); }

.slide-right {
    opacity: 0; transform: translateX(60px);
    transition: opacity 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.slide-right.visible { opacity: 1; transform: translateX(0); }

.scale-in {
    opacity: 0; transform: scale(0.92);
    transition: opacity 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.scale-in.visible { opacity: 1; transform: scale(1); }

.stagger-children > * {
    opacity: 0; transform: translateY(30px);
    transition: opacity 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.stagger-children.visible > *:nth-child(1) { transition-delay: 0s; }
.stagger-children.visible > *:nth-child(2) { transition-delay: 0.1s; }
.stagger-children.visible > *:nth-child(3) { transition-delay: 0.1s; }
.stagger-children.visible > *:nth-child(4) { transition-delay: 0.2s; }
.stagger-children.visible > *:nth-child(5) { transition-delay: 0.25s; }
.stagger-children.visible > *:nth-child(6) { transition-delay: 0.3s; }
.stagger-children.visible > *:nth-child(7) { transition-delay: 0.35s; }
.stagger-children.visible > *:nth-child(8) { transition-delay: 0.4s; }
.stagger-children.visible > * { opacity: 1; transform: translateY(0); }

.parallax-rise {
    opacity: 0; transform: translateY(80px);
    transition: opacity 1.2s cubic-bezier(0.22, 1, 0.36, 1), transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}
.parallax-rise.visible { opacity: 1; transform: translateY(0); }

/* ---- Nav highlight flash ---- */
.nav-highlight { animation: sectionPulse 0.6s ease-out 3; }
@keyframes sectionPulse {
    0% { box-shadow: inset 0 0 0 3px rgba(234,88,12,0.5); }
    100% { box-shadow: inset 0 0 0 0 rgba(234,88,12,0); }
}

/* ---- Floating Elements ---- */
@keyframes scrollTopIn {
    0% { opacity: 0; transform: translateY(24px) scale(0.8); }
    60% { opacity: 1; transform: translateY(-4px) scale(1.05); }
    100% { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes scrollTopOut {
    0% { opacity: 1; transform: translateY(0) scale(1); }
    100% { opacity: 0; transform: translateY(16px) scale(0.85); }
}
@keyframes giftWiggle {
    0%, 100% { transform: rotate(0deg); }
    15% { transform: rotate(-12deg); }
    30% { transform: rotate(10deg); }
    45% { transform: rotate(-8deg); }
    60% { transform: rotate(4deg); }
    75% { transform: rotate(0deg); }
}
@keyframes giftPulseRing {
    0% { transform: scale(1); opacity: 0.6; }
    100% { transform: scale(1.6); opacity: 0; }
}
@keyframes giftBurst {
    0% { transform: scale(1); }
    30% { transform: scale(1.3); }
    100% { transform: scale(0) rotate(180deg); opacity: 0; }
}

/* ---- Reduced Motion ---- */
@media (prefers-reduced-motion: reduce) {
    .fade-in, .slide-left, .slide-right, .scale-in, .parallax-rise, .stagger-children > * {
        opacity: 1 !important; transform: none !important; transition: none !important;
    }
    [style*="animation"] { animation: none !important; }
}
