/* MOTION ANIMATIONS - Premium scroll & entrance effects */

/* Scroll-triggered reveal classes */
[data-animate] {
    opacity: 0;
    transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
[data-animate].in-view { opacity: 1; }

[data-animate="fade-up"] { transform: translateY(60px); }
[data-animate="fade-up"].in-view { transform: translateY(0); }

[data-animate="fade-down"] { transform: translateY(-60px); }
[data-animate="fade-down"].in-view { transform: translateY(0); }

[data-animate="fade-left"] { transform: translateX(-60px); }
[data-animate="fade-left"].in-view { transform: translateX(0); }

[data-animate="fade-right"] { transform: translateX(60px); }
[data-animate="fade-right"].in-view { transform: translateX(0); }

[data-animate="zoom-in"] { transform: scale(0.85); }
[data-animate="zoom-in"].in-view { transform: scale(1); }

[data-animate="flip-up"] { transform: perspective(800px) rotateX(15deg) translateY(40px); }
[data-animate="flip-up"].in-view { transform: perspective(800px) rotateX(0) translateY(0); }

[data-animate="slide-up"] { transform: translateY(100px); opacity: 0; }
[data-animate="slide-up"].in-view { transform: translateY(0); opacity: 1; }

/* Stagger children */
[data-stagger] > * { transition-delay: calc(var(--i, 0) * 0.1s); }

/* Parallax layer speeds */
[data-parallax] { transition: transform 0.1s linear; will-change: transform; }

/* Hero text split animation */
.hero-title .word {
    display: inline-block;
    opacity: 0;
    transform: translateY(40px) rotateX(20deg);
    animation: wordReveal 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
@keyframes wordReveal {
    to { opacity: 1; transform: translateY(0) rotateX(0); }
}

/* Magnetic hover for buttons */
.btn-magnetic { transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); }

/* Smooth counter */
.counter-animate { transition: all 0.05s ease-out; }

/* Section divider wave animation */
.wave-divider {
    position: absolute; bottom: -2px; left: 0; width: 100%; overflow: hidden; line-height: 0;
}
.wave-divider svg { display: block; width: calc(100% + 2px); height: 60px; }

/* Floating animation variants */
@keyframes floatSlow { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-15px)} }
@keyframes floatMed { 0%,100%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-10px) rotate(3deg)} }
@keyframes spinSlow { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }

/* Scroll progress bar */
.scroll-progress {
    position: fixed; top: 0; left: 0; height: 3px; z-index: 9999;
    background: var(--gradient-primary);
    transform-origin: left; transform: scaleX(0);
    transition: transform 0.1s linear;
}

/* Smooth image reveal */
.img-reveal {
    overflow: hidden; position: relative;
}
.img-reveal::after {
    content: ''; position: absolute; inset: 0;
    background: var(--clr-primary);
    transform: scaleX(1); transform-origin: right;
    transition: transform 0.8s cubic-bezier(0.77, 0, 0.175, 1);
}
.img-reveal.in-view::after { transform: scaleX(0); }

/* Tilt on hover (3D) */
.tilt-card { transition: transform 0.4s ease; transform-style: preserve-3d; }

/* Marquee text scroll */
.marquee-track {
    display: flex; gap: 2rem; animation: marquee 25s linear infinite; white-space: nowrap;
}
@keyframes marquee { from{transform:translateX(0)} to{transform:translateX(-50%)} }

/* Prefers reduced motion */
@media (prefers-reduced-motion: reduce) {
    [data-animate], .hero-title .word, .marquee-track, [data-parallax] {
        animation: none !important; transition: none !important;
        opacity: 1 !important; transform: none !important;
    }
}
