* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

html, body {
  height: 100%;
  overflow: hidden;
  overscroll-behavior: none;
}

body {
  background-image: url("images/hero-sky.jpg");
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  width: 100%;
  height: 100vh;
  height: 100dvh;
  position: fixed;
  inset: 0;
  touch-action: none;
  font-family: 'Segoe UI', Arial, sans-serif;
}

/* Scrolling road */
.road {
  width: 500%;
  height: 100px;
  background-image: url("images/road.png");
  background-repeat: repeat-x;
  position: absolute;
  bottom: 0;
  left: 0;
  animation: road 5s linear infinite;
  z-index: 1;
}

@keyframes road {
  100% {
    transform: translateX(-3000px);
  }
}

/* Scrolling city skyline */
.city {
  background-image: url("images/city.png");
  background-repeat: repeat-x;
  width: 500%;
  height: 350px;
  position: absolute;
  bottom: 100px;
  left: 0;
  animation: city 15s linear infinite;
  opacity: 0.85;
}

@keyframes city {
  100% {
    transform: translateX(-1400px);
  }
}

/* Car bouncing in place, grounded on the road */
.car {
  width: 400px;
  max-width: 60vw;
  position: absolute;
  bottom: 12px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
}

.car > img:first-child {
  display: block;
  width: 100%;
  animation: car-bounce 1s linear infinite;
}

@keyframes car-bounce {
  0%   { transform: translateY(2px); }
  50%  { transform: translateY(-1px); }
  100% { transform: translateY(2px); }
}

/* Spinning wheels, positioned relative to the car body */
.wheel {
  position: absolute;
  width: 12.67%;
  top: 44.17%;
  animation: wheel-spin 1s linear infinite;
}

@keyframes wheel-spin {
  100% { transform: rotate(360deg); }
}

.front-wheel {
  left: 69.54%;
}

.back-wheel {
  left: 18.71%;
}

/* Maintenance notice card */
.notice {
  position: absolute;
  top: 10%;
  left: 50%;
  transform: translateX(-50%);
  z-index: 3;
  width: 90%;
  max-width: min(640px, calc(100vw - 32px));
  background: rgba(10, 15, 25, 0.65);
  backdrop-filter: blur(3px);
  border: 2px solid #e67e22;
  border-radius: 10px;
  padding: 30px 35px;
  text-align: center;
  color: #edf0f1;
  overflow-wrap: break-word;
  word-break: break-word;
}

.notice h1 {
  font-size: 2rem;
  color: #f1cc40;
  animation: heading-glow 3s linear infinite;
}

@keyframes heading-glow {
  20%  { color: #bdc3c7; }
  40%  { color: #2980b9; }
  60%  { color: #d35400; }
  80%  { color: #e67e22; }
  100% { color: #f1cc40; }
}

.notice h2 {
  margin-top: 10px;
  font-size: 1.25rem;
  font-weight: 400;
  color: #edf0f1;
}

.notice p {
  margin-top: 16px;
  line-height: 1.5;
  font-size: 1rem;
}

.notice .contact {
  margin-top: 12px;
  font-size: 0.9rem;
  color: #f1cc40;
}

.notice .contact a {
  color: inherit;
  font-weight: 600;
  text-decoration: underline;
}

@media (max-width: 600px) {
  .car { bottom: 22px; }
  .notice { padding: 18px 16px; }
  .notice h1 { font-size: 1.3rem; }
  .notice h2 { font-size: 0.95rem; }
  .notice p { font-size: 0.9rem; }
  .notice .contact { font-size: 0.82rem; }
}

@media (max-width: 400px) {
  .notice h1 { font-size: 1.1rem; }
}
