[data-reveal] {
    opacity: 0;
    clip-path: inset(18% 0 0 0);
    transform: translateY(2.5rem);
    transition: opacity 1s var(--ease-lux), transform 1s var(--ease-lux), clip-path 1s var(--ease-lux);
    transition-delay: var(--reveal-delay, 0ms);
}

[data-reveal].is-visible {
    opacity: 1;
    clip-path: inset(0 0 0 0);
    transform: translateY(0);
}

.site-header[data-reveal],
.site-header[data-reveal].is-visible {
    clip-path: none;
    transform: none;
}

.magnetic { will-change: transform; }

@keyframes heroImageDrift {
    0% {
        transform: scale(1.025) translate3d(0, 0, 0);
    }
    100% {
        transform: scale(1.07) translate3d(-1.2%, 0.8%, 0);
    }
}

@keyframes heroSweep {
    0%, 38% {
        transform: translateX(0) skewX(-18deg);
        opacity: 0;
    }
    52% {
        opacity: 0.42;
    }
    100% {
        transform: translateX(124cqi) skewX(-18deg);
        opacity: 0;
    }
}

@keyframes heroLineBreath {
    0%, 100% {
        opacity: 0.42;
        transform: scaleX(0.86);
    }
    50% {
        opacity: 1;
        transform: scaleX(1);
    }
}

@keyframes statFrameDrift {
    0% {
        opacity: 0.38;
        transform: rotate(8deg) scale(0.94);
    }
    100% {
        opacity: 0.78;
        transform: rotate(20deg) scale(1.04);
    }
}

@keyframes statLightSweep {
    0%, 44% {
        transform: translateX(-120%);
        opacity: 0;
    }
    58% {
        opacity: 1;
    }
    100% {
        transform: translateX(120%);
        opacity: 0;
    }
}

@keyframes mapBreath {
    0% { box-shadow: 0 0 0 0 rgba(50, 131, 254, 0.28), 0 0 4rem rgba(50, 131, 254, 0.42); }
    70% { box-shadow: 0 0 0 2.4rem rgba(50, 131, 254, 0), 0 0 5rem rgba(50, 131, 254, 0.58); }
    100% { box-shadow: 0 0 0 0 rgba(50, 131, 254, 0), 0 0 4rem rgba(50, 131, 254, 0.42); }
}

@keyframes timelineGlowDrift {
    0% {
        opacity: 0.34;
        transform: translate3d(-8%, -1%, 0) scale(1);
    }
    50% {
        opacity: 0.66;
    }
    100% {
        opacity: 0.42;
        transform: translate3d(7%, 1%, 0) scale(1.04);
    }
}

.map-pulse { animation: mapBreath 3.4s var(--ease-lux) infinite; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: 0.001ms !important;
    }

    [data-reveal] {
        opacity: 1;
        clip-path: none;
        transform: none;
    }

}
