/* ── Motion ──
   boot.js adds .rs-wait to <html> until fonts are ready (1.2s at most),
   then swaps it for .rs-go and the .reveal items rise in one at a time.
   With no JavaScript neither class exists, so everything is simply visible. */

@keyframes rise {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: none; }
}

@keyframes breathe {
    0%, 100% { filter: drop-shadow(0 0 0 rgba(224,100,42,0)); }
    50%      { filter: drop-shadow(0 0 16px rgba(224,100,42,0.35)); }
}

@keyframes pulse-dot {
    0%, 100% { box-shadow: 0 0 0 0 rgba(9,166,136,0.5); }
    50%      { box-shadow: 0 0 0 6px rgba(9,166,136,0); }
}

.rs-wait .reveal { opacity: 0; }

.rs-go .reveal {
    animation: rise 0.52s var(--ease) both;
    animation-delay: calc(var(--i, 0) * 70ms);
}

/* With panels on, a panel's items wait until it scrolls into view */
.panels-anim .panel:not(.in) .reveal { animation: none; opacity: 0; }

.logo .logo-name { animation: breathe 6s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation: none !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    .rs-wait .reveal { opacity: 1; }
}

/* Repair ticket on the home hero: the steps tick in one at a time */
.rs-go .hero .ticket li { animation: rise 0.45s var(--ease) both; }
.rs-go .hero .ticket li:nth-child(1) { animation-delay: 0.75s; }
.rs-go .hero .ticket li:nth-child(2) { animation-delay: 1.1s; }
.rs-go .hero .ticket li:nth-child(3) { animation-delay: 1.45s; }
