@keyframes spin { to { transform: rotate(360deg); } }
@keyframes pulse {
  0% { box-shadow: 0 0 0 0 rgba(25, 211, 126, .62); }
  70% { box-shadow: 0 0 0 10px rgba(25, 211, 126, 0); }
  100% { box-shadow: 0 0 0 0 rgba(25, 211, 126, 0); }
}
@keyframes ticker {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
@keyframes shimmer {
  from { background-position: 220% 0; }
  to { background-position: -220% 0; }
}
@keyframes floatIn {
  from { opacity: 0; transform: translateY(16px) scale(.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.flash-up { animation: flashUp .8s ease; }
.flash-down { animation: flashDown .8s ease; }
@keyframes flashUp { 0% { background: rgba(25, 211, 126, .22); } 100% { background: transparent; } }
@keyframes flashDown { 0% { background: rgba(255, 84, 112, .22); } 100% { background: transparent; } }
