/* ─── Bicycle Loading Overlay ─── */
#bicycle-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 30, 0.6);
  backdrop-filter: blur(3px);
  z-index: 9999;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 18px;
}

  #bicycle-overlay.visible {
    display: flex;
  }

  #bicycle-overlay p {
    color: #fff;
    font-size: 1.1rem;
    letter-spacing: .08em;
    margin: 0;
    animation: fadePulse 1.4s ease-in-out infinite;
  }

@keyframes fadePulse {
  0%, 100% {
    opacity: 1;
  }

  50% {
    opacity: 0.3;
  }
}

/* Wheels spin around their own centre.
   transform-box:fill-box makes transform-origin relative to the element bbox,
   so "50% 50%" always means the element's own centre. */
.bike-wheel {
  animation: spin 0.75s linear infinite;
  transform-box: fill-box;
  transform-origin: 50% 50%;
}

@keyframes spin {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}
