.fade-in {
    animation: entranceEffect 1.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes entranceEffect {
    from {
        opacity: 0;
        transform: translateY(10px);
        filter: blur(2px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
        filter: blur(0);
    }
}

@keyframes blackHoleGlow {
    0%,
    100% {
        opacity: 0.45;
        transform: translate(-50%, -50%) scale(0.985);
        filter: blur(18px);
    }

    50% {
        opacity: 0.5;
        transform: translate(-50%, -50%) scale(1.015);
        filter: blur(19px);
    }
}

@keyframes orangeHighlightFlicker {
    0%,
    100% {
        opacity: 1;
        filter: saturate(1);
    }

    42% {
        opacity: 0.97;
        filter: saturate(0.98);
    }

    56% {
        opacity: 1;
        filter: saturate(1.03);
    }

    64% {
        opacity: 0.985;
        filter: saturate(1);
    }
}

@keyframes orangeLineFlicker {
    0%,
    100% {
        opacity: 0.92;
    }

    48% {
        opacity: 0.78;
    }

    53% {
        opacity: 0.96;
    }
}

@keyframes orangePinFlicker {
    0%,
    100% {
        opacity: 0.95;
        box-shadow: 0 0 0 rgba(255, 106, 0, 0);
    }

    50% {
        opacity: 1;
        box-shadow: 0 0 8px rgba(255, 106, 0, 0.18);
    }
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    .hero-scene::before,
    .hero-overlay,
    .panel-header-line::before,
    .panel-header-line::after,
    .panel-header-line h1::before,
    .panel-header-line h1::after,
    .panel-header-line h2::before,
    .panel-header-line h2::after {
        animation: none;
    }
}
