/* The Crypto Taxi — animaciones de los taxis (ver js/art/vehicles.js) */
.veh {
  display: block;
  overflow: visible;
}

.veh-wheel {
  transform-box: fill-box;
  transform-origin: center;
}

.veh-leg-a,
.veh-leg-b {
  transform-box: fill-box;
  transform-origin: 50% 0;
}

.veh-smoke > * {
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
}

.veh-fire {
  animation: veh-fire 1.1s ease-in-out infinite alternate;
}

/* Luces: apagadas de día, encendidas de noche */
.veh-light,
.veh-glow {
  opacity: 0;
  transition: opacity 0.8s ease;
}

.is-night .veh-light,
.is-night .veh-glow {
  opacity: 1;
}

/* En marcha */
.is-driving .veh-wheel {
  animation: veh-spin var(--spin, 0.62s) linear infinite;
}

.is-driving .veh-bob {
  animation: veh-bob 0.34s ease-in-out infinite alternate;
}

.is-driving .veh-leg-a {
  animation: veh-gallop 0.44s ease-in-out infinite alternate;
}

.is-driving .veh-leg-b {
  animation: veh-gallop 0.44s ease-in-out infinite alternate-reverse;
}

.is-driving .veh-smoke > * {
  animation: veh-puff 1.8s ease-out infinite;
  animation-delay: var(--d, 0s);
}

@keyframes veh-spin {
  to { transform: rotate(360deg); }
}

@keyframes veh-bob {
  from { transform: translateY(0); }
  to { transform: translateY(-1.4px); }
}

@keyframes veh-gallop {
  from { transform: rotate(-17deg); }
  to { transform: rotate(15deg); }
}

@keyframes veh-puff {
  0% { opacity: 0; transform: translate(0, 0) scale(0.5); }
  15% { opacity: 0.9; }
  100% { opacity: 0; transform: translate(-22px, -26px) scale(1.9); }
}

@keyframes veh-fire {
  from { fill: #FF8A3D; }
  to { fill: #FFC24A; }
}

@media (prefers-reduced-motion: reduce) {
  .veh-fire,
  .is-driving .veh-wheel,
  .is-driving .veh-bob,
  .is-driving .veh-leg-a,
  .is-driving .veh-leg-b,
  .is-driving .veh-smoke > * {
    animation: none;
  }
}
