/* KnuckleBet — motion: ticker, blink, price ticks, reveals. */
@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes blink { 0%,100% { opacity: 1; } 50% { opacity: .2; } }
@keyframes tickup { 0% { color: var(--up); transform: translateY(2px); } 100% { color: var(--fg-000); transform: none; } }
@keyframes tickdown { 0% { color: var(--down); transform: translateY(-2px); } 100% { color: var(--fg-000); transform: none; } }

[data-reveal] { opacity: 0; transform: translateY(14px); transition: opacity var(--t-slow) var(--ease), transform var(--t-slow) var(--ease); }
[data-reveal].is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
    .topline__track, .live-dot::before { animation: none !important; }
    [data-reveal] { opacity: 1; transform: none; transition: none; }
}
