@keyframes drift-smoke {
  0% { transform: scale(0.5); opacity: 0.8; }
  100% { transform: scale(2); opacity: 0; }
}

.drift-particle {
  position: absolute;
  width: 10px;
  height: 10px;
  background: rgba(255, 255, 255, 0.3);
  border-radius: 50%;
  pointer-events: none;
  animation: drift-smoke 0.5s ease-out forwards;
}

@keyframes neon-pulse {
  0%, 100% { opacity: 0.8; box-shadow: 0 0 10px var(--neon-blue); }
  50% { opacity: 1; box-shadow: 0 0 25px var(--neon-blue); }
}

.pulse {
  animation: neon-pulse 2s infinite ease-in-out;
}

@keyframes speed-blur {
  0% { filter: blur(0px); }
  100% { filter: blur(2px); }
}

.high-speed {
  animation: speed-blur 0.1s infinite alternate;
}

@keyframes lap-complete {
  0% { transform: scale(1); color: var(--neon-green); }
  50% { transform: scale(1.5); color: white; text-shadow: 0 0 20px var(--neon-green); }
  100% { transform: scale(1); color: var(--neon-green); }
}

.lap-anim {
  animation: lap-complete 0.8s ease-out;
}

@keyframes shake {
  0%, 100% { transform: translate(0, 0); }
  25% { transform: translate(-2px, 2px); }
  50% { transform: translate(2px, -2px); }
  75% { transform: translate(-2px, -2px); }
}

.shake {
  animation: shake 0.2s ease-in-out;
}
