/* ============ all keyframes live here ============ */

/* marquee strip — scrolls right (content is duplicated in HTML for seamless loop) */
@keyframes mq {
from { transform: translateX(-50%); }
to { transform: translateX(0); }
}

/* live dot in nav */
@keyframes pulse-red {
from { opacity: 1; }
to { opacity: .3; }
}

/* status dot in footer */
@keyframes pulse-green {
from { opacity: 1; }
to { opacity: .3; }
}

/* toasts */
@keyframes toast-in {
from { opacity: 0; transform: translateX(40px); }
to { opacity: 1; transform: translateX(0); }
}
@keyframes toast-out {
from { opacity: 1; transform: translateX(0); }
to { opacity: 0; transform: translateX(40px); }
}

/* invalid prompt box */
@keyframes shake {
0%, 100% { transform: translateX(0); }
20% { transform: translateX(-8px); }
40% { transform: translateX(8px); }
60% { transform: translateX(-5px); }
80% { transform: translateX(5px); }
}

/* lobby start button when everyone is ready */
@keyframes btn-pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.05); }
}
