@keyframes aurora-drift {
    0% { transform: translate(0, 0) scale(1); }
    33% { transform: translate(2%, -1.5%) scale(1.03); }
    66% { transform: translate(-1.5%, 2%) scale(0.98); }
    100% { transform: translate(1%, 1%) scale(1.05); }
}

@keyframes glow-drift-1 {
    0% { transform: translate(0, 0) scale(1); }
    100% { transform: translate(3%, 2%) scale(1.05); }
}

@keyframes glow-drift-2 {
    0% { transform: translate(0, 0) scale(1); }
    100% { transform: translate(-2%, -3%) scale(1.08); }
}

@keyframes showcase-motion-drift {
    0%, 100% { opacity: 0.3; transform: translateX(0); }
    50% { opacity: 0.55; transform: translateX(8px); }
}

@keyframes tunnel-edge-pulse {
    0%, 100% { opacity: 0.65; }
    50% { opacity: 1; }
}

@keyframes tunnel-focal-glow {
    0%, 100% { opacity: 0.62; }
    50% { opacity: 0.88; }
}

@keyframes tunnel-particle-in {
    0% { transform: translate(0, 0) scale(1); opacity: 0.15; }
    45% { opacity: 0.55; }
    100% { transform: translate(-18px, 8px) scale(0.6); opacity: 0; }
}

@keyframes auto-portal-glow {
    0%, 100% { opacity: 0.7; }
    50% { opacity: 1; }
}

@keyframes auto-portal-line-drift {
    0%, 100% { opacity: 0.35; transform: translateX(0); }
    50% { opacity: 0.6; transform: translateX(6px); }
}

@keyframes auto-logo-emerge {
    from {
        opacity: 1;
        transform: scale(0.97) translateY(6px);
    }
    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

@keyframes showcase-status-pulse {
    0%, 100% {
        box-shadow: 0 0 14px rgba(77, 212, 255, 0.18);
        border-color: rgba(77, 212, 255, 0.28);
    }
    50% {
        box-shadow: 0 0 22px rgba(77, 212, 255, 0.32);
        border-color: rgba(77, 212, 255, 0.45);
    }
}

@keyframes showcase-edge-pulse {
    0%, 100% { opacity: 0.7; }
    50% { opacity: 1; }
}

@keyframes showcase-curve-pulse {
    0%, 100% { opacity: 0.5; }
    50% { opacity: 0.85; }
}

@keyframes showcase-shimmer {
    0% { left: -100%; opacity: 0; }
    30% { opacity: 1; }
    60% { left: 120%; opacity: 0.8; }
    100% { left: 120%; opacity: 0; }
}

@keyframes showcase-drift {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-5px); }
}

@keyframes showcase-drift-active {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-4px); }
}

@keyframes showcase-beam-drift {
    0%, 100% { opacity: 0.35; transform: rotate(-8deg) translateX(0); }
    50% { opacity: 0.55; transform: rotate(-8deg) translateX(12px); }
}

@keyframes showcase-active-glow {
    0%, 100% { opacity: 0.6; transform: scale(1); }
    50% { opacity: 1; transform: scale(1.06); }
}

@keyframes showcase-spark {
    0%, 100% { opacity: 0.2; transform: scale(0.8); }
    50% { opacity: 0.9; transform: scale(1.2); }
}

@keyframes glow-pulse {
    0%, 100% { opacity: 0.45; transform: scale(1); }
    50% { opacity: 0.75; transform: scale(1.06); }
}

@keyframes orbit-spin {
    from { transform: translate(-50%, -50%) rotate(0deg); }
    to { transform: translate(-50%, -50%) rotate(360deg); }
}

@keyframes core-breathe {
    0%, 100% { transform: translate(-50%, -50%) scale(1); }
    50% { transform: translate(-50%, -50%) scale(1.05); }
}

@keyframes core-ring-pulse {
    0%, 100% { transform: scale(1); opacity: 0.5; }
    50% { transform: scale(1.08); opacity: 0.8; }
}

@keyframes node-pulse {
    0%, 100% {
        box-shadow:
            0 0 20px rgba(214, 185, 120, 0.55),
            0 0 40px rgba(91, 154, 255, 0.2);
    }
    50% {
        box-shadow:
            0 0 28px rgba(214, 185, 120, 0.75),
            0 0 56px rgba(91, 154, 255, 0.3);
    }
}

@keyframes node-ring-pulse {
    0%, 100% { transform: scale(1); opacity: 0.4; }
    50% { transform: scale(1.15); opacity: 0.7; }
}

@keyframes particle-float {
    0%, 100% { transform: translate(0, 0); opacity: 0.35; }
    25% { transform: translate(4px, -6px); opacity: 0.6; }
    50% { transform: translate(-3px, -10px); opacity: 0.45; }
    75% { transform: translate(5px, -4px); opacity: 0.55; }
}

@keyframes gradient-shift {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

/* Scroll reveal — visible by default; JS enhances entrance */
.reveal {
    opacity: 1;
    transform: translateY(0);
    transition:
        opacity var(--duration-reveal) var(--ease-out),
        transform var(--duration-reveal) var(--ease-out);
}

.reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}

html.js-enhanced .hero .reveal:not(.is-visible) {
    opacity: 0;
    transform: translateY(28px);
}

html.js-enhanced .section .reveal:not(.is-visible) {
    opacity: 1;
    transform: translateY(18px);
}

.hero__content .reveal:nth-of-type(1) { transition-delay: 0.05s; }
.hero__content .reveal:nth-of-type(2) { transition-delay: 0.15s; }
.hero__content .reveal:nth-of-type(3) { transition-delay: 0.25s; }
.hero__content .reveal:nth-of-type(4) { transition-delay: 0.35s; }
.hero__content .reveal:nth-of-type(5) { transition-delay: 0.45s; }

.section .reveal:nth-child(1) { transition-delay: 0s; }
.section .reveal:nth-child(2) { transition-delay: 0.1s; }
.section .reveal:nth-child(3) { transition-delay: 0.2s; }

.vision__grid .reveal:nth-child(1) { transition-delay: 0.1s; }
.vision__grid .reveal:nth-child(2) { transition-delay: 0.25s; }

.brand-pillars .reveal:nth-child(1) { transition-delay: 0.05s; }
.brand-pillars .reveal:nth-child(2) { transition-delay: 0.15s; }
.brand-pillars .reveal:nth-child(3) { transition-delay: 0.25s; }

@media (prefers-reduced-motion: reduce) {
    .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .reveal.is-visible {
        opacity: 1;
        transform: none;
    }
}
