/* Premium global motion system — GPU-friendly initial states */

:root {
    --motion-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
    --motion-ease-smooth: cubic-bezier(0.22, 1, 0.36, 1);
    --motion-duration: 1.05s;
    --motion-stagger: 0.08s;
}

/* Reveal primitives — GSAP clears filter after animate */
.reveal-up,
.reveal-left,
.reveal-right,
.reveal-scale,
.reveal-blur,
.reveal-fade,
[data-motion-item] {
    opacity: 0;
    transform: translateZ(0);
    backface-visibility: hidden;
    will-change: transform, opacity, filter;
}

.reveal-up { transform: translate3d(0, 36px, 0); }
.reveal-left { transform: translate3d(-40px, 0, 0); }
.reveal-right { transform: translate3d(40px, 0, 0); }
.reveal-scale { transform: translate3d(0, 0, 0) scale(0.96); }
.reveal-blur { transform: translate3d(0, 28px, 0); filter: blur(10px); }
.reveal-fade { filter: blur(6px); }

.is-motion-done {
    will-change: auto;
}

/* Ambient section glow (injected by JS) */
section:not(.hero-banner):not(.inner-banner) {
    position: relative;
    isolation: isolate;
}

.motion-ambient-glow {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
}

.motion-ambient-glow::before,
.motion-ambient-glow::after {
    content: '';
    position: absolute;
    border-radius: 50%;
    filter: blur(72px);
    opacity: 0.45;
    animation: motionFloatGlow 10s var(--motion-ease-smooth) infinite;
}

.motion-ambient-glow::before {
    width: min(380px, 42vw);
    height: min(380px, 42vw);
    top: -12%;
    right: -8%;
    background: rgba(48, 67, 143, 0.14);
}

.motion-ambient-glow::after {
    width: min(280px, 34vw);
    height: min(280px, 34vw);
    bottom: -10%;
    left: -6%;
    background: rgba(232, 81, 38, 0.12);
    animation-delay: -4s;
}

@keyframes motionFloatGlow {
    0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
    50% { transform: translate3d(-12px, 16px, 0) scale(1.06); }
}

/* Premium hover lift (CSS fallback + JS enhanced) */
.motion-hover {
    transition: transform 0.45s var(--motion-ease-out), box-shadow 0.45s var(--motion-ease-out);
}

.motion-hover:hover {
    transform: translate3d(0, -4px, 0);
}

/* Parallax layers */
[data-parallax],
.motion-parallax {
    will-change: transform;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    .reveal-up,
    .reveal-left,
    .reveal-right,
    .reveal-scale,
    .reveal-blur,
    .reveal-fade,
    [data-motion-item] {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
        will-change: auto;
    }

    .motion-ambient-glow {
        display: none;
    }

    .motion-hover:hover {
        transform: none;
    }
}
