@keyframes orbFloat1 {
    0%, 100% {
        transform: translate(0, 0) scale(1);
    }

    33% {
        transform: translate(50px, -30px) scale(1.1);
    }

    66% {
        transform: translate(-30px, 40px) scale(0.95);
    }
}

@keyframes orbFloat2 {
    0%, 100% {
        transform: translate(0, 0) scale(1);
    }

    33% {
        transform: translate(-40px, 30px) scale(1.05);
    }

    66% {
        transform: translate(30px, -40px) scale(0.95);
    }
}

@keyframes orbFloat3 {
    0%, 100% {
        transform: translate(-50%, -50%) scale(1);
    }

    50% {
        transform: translate(-50%, -50%) scale(1.2);
    }
}

/* Dot Pulse */
@keyframes dotPulse {
    0%, 100% {
        opacity: 1;
        transform: scale(1);
    }

    50% {
        opacity: 0.5;
        transform: scale(0.8);
    }
}

/* Scroll Indicator */
@keyframes scrollDown {
    0% {
        top: -50%;
    }

    100% {
        top: 100%;
    }
}

@keyframes bounceArrow {
    0%, 100% {
        transform: translateY(0);
        opacity: 0.5;
    }

    50% {
        transform: translateY(6px);
        opacity: 1;
    }
}

/* Rings */
@keyframes ringRotate {
    from {
        transform: translate(-50%, -50%) rotate(0deg);
    }

    to {
        transform: translate(-50%, -50%) rotate(360deg);
    }
}

/* Pulse Expand */
@keyframes pulseExpand {
    0% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 0.6;
    }

    100% {
        transform: translate(-50%, -50%) scale(2.5);
        opacity: 0;
    }
}

/* Dot Blink */
@keyframes dotBlink {
    0%, 100% {
        opacity: 1;
    }

    50% {
        opacity: 0.3;
    }
}

/* Hotspot Pulse */
@keyframes hotspotPulse {
    0% {
        transform: scale(1);
        opacity: 0.6;
    }

    100% {
        transform: scale(2);
        opacity: 0;
    }
}

/* Tech Lines */
@keyframes lineScanH {
    0% {
        transform: translateX(-100%);
    }

    100% {
        transform: translateX(100%);
    }
}

@keyframes lineScanV {
    0% {
        transform: translateY(-100%);
    }

    100% {
        transform: translateY(100%);
    }
}

/* Arrow Draw */
@keyframes arrowDraw {
    0% {
        stroke-dashoffset: 50;
    }

    50% {
        stroke-dashoffset: 0;
    }

    100% {
        stroke-dashoffset: -50;
    }
}

/* ===== REVEAL ANIMATIONS ===== */
.reveal-up {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s var(--ease-out), transform 0.8s var(--ease-out);
    will-change: opacity, transform;
}

.reveal-up.in-view {
    opacity: 1;
    transform: translateY(0);
}

.reveal-text {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.8s var(--ease-out), transform 0.8s var(--ease-out);
    will-change: opacity, transform;
}

.reveal-text.in-view {
    opacity: 1;
    transform: translateY(0);
}

.reveal-scale {
    opacity: 0;
    transform: scale(0.9);
    transition: opacity 0.8s var(--ease-out), transform 0.8s var(--ease-out);
    will-change: opacity, transform;
}

.reveal-scale.in-view {
    opacity: 1;
    transform: scale(1);
}

.reveal-fade {
    opacity: 0;
    transition: opacity 0.8s var(--ease-out);
}

.reveal-fade.in-view {
    opacity: 1;
}

/* ===== DELAY CLASSES ===== */
[data-delay="100"] {
    transition-delay: 0.1s;
}

[data-delay="150"] {
    transition-delay: 0.15s;
}

[data-delay="200"] {
    transition-delay: 0.2s;
}

[data-delay="250"] {
    transition-delay: 0.25s;
}

[data-delay="300"] {
    transition-delay: 0.3s;
}

[data-delay="350"] {
    transition-delay: 0.35s;
}

[data-delay="400"] {
    transition-delay: 0.4s;
}

[data-delay="450"] {
    transition-delay: 0.45s;
}

[data-delay="500"] {
    transition-delay: 0.5s;
}

[data-delay="600"] {
    transition-delay: 0.6s;
}

/* ===== TEXT REVEAL LINE BY LINE ===== */
.reveal-text .title-line {
    display: block;
    overflow: hidden;
}

.reveal-text .title-line span {
    display: block;
    transform: translateY(100%);
    transition: transform 0.9s var(--ease-out);
}

.reveal-text.in-view .title-line span {
    transform: translateY(0);
}

/* ===== PARALLAX ===== */
[data-parallax] {
    will-change: transform;
}

/* ===== MAGNETIC BUTTON ===== */
.magnetic {
    transition: transform 0.3s var(--ease-out);
    will-change: transform;
}

/* ===== REDUCED MOTION ===== */
@media (prefers-reduced-motion: reduce) {

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }

    .hero-orb-1,
    .hero-orb-2,
    .hero-orb-3,
    .cta-orb-1,
    .cta-orb-2,
    .tech-glow-1,
    .tech-glow-2,
    .ring,
    .dot,
    .center-pulse,
    .label-dot,
    .hotspot-pulse,
    .scroll-line::after,
    .scroll-arrow,
    .tech-line {
        animation: none !important;
    }

    .reveal-up,
    .reveal-text,
    .reveal-scale,
    .reveal-fade {
        opacity: 1 !important;
        transform: none !important;
    }
}