#thief {
  position: absolute;
  z-index: 8;
  bottom: 0;
  left: var(--thief-left, 9%);
  width: 138px;
  height: 108px;
  pointer-events: none;
  transform: translateX(-50%);
  transition: left .5s cubic-bezier(.45, .05, .3, 1);
}

.thiefFallback,
.thiefFallback svg {
  display: block;
  width: 100%;
  height: 100%;
}

.runnerShadow {
  position: absolute;
  z-index: 7;
  bottom: 4px;
  left: var(--thief-left, 9%);
  width: 96px;
  height: 13px;
  pointer-events: none;
  border-radius: 50%;
  background: rgba(9, 20, 30, .42);
  transform: translateX(-50%);
  transition: left .5s cubic-bezier(.45, .05, .3, 1);
}

.policeCar {
  position: absolute;
  z-index: 9;
  right: 3%;
  bottom: 2px;
  width: 168px;
  height: 104px;
  pointer-events: none;
  opacity: 0;
  transform: translateX(160%);
}

.policeCar svg {
  display: block;
  width: 100%;
  height: 100%;
}

.policeCar.arriving {
  animation: policeArrive .9s cubic-bezier(.18, .74, .28, 1) forwards;
}

@keyframes policeArrive {
  0% { opacity: 0; transform: translateX(160%); }
  18% { opacity: 1; }
  100% { opacity: 1; transform: translateX(0); }
}

.policeCar.arriving .copLightBlue { animation: copStrobeBlue .32s steps(1, end) infinite; }
.policeCar.arriving .copLightRed { animation: copStrobeRed .32s steps(1, end) infinite; }

@keyframes copStrobeBlue {
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: .18; }
}

@keyframes copStrobeRed {
  0%, 49% { opacity: .18; }
  50%, 100% { opacity: 1; }
}

.alarmLights {
  position: absolute;
  z-index: 30;
  inset: 0;
  opacity: 0;
  pointer-events: none;
}

.alarmLights.on {
  animation: sirenWash .4s steps(1, end) 4;
}

@keyframes sirenWash {
  0% {
    opacity: .9;
    background:
      radial-gradient(120% 90% at 12% 30%, rgba(47, 127, 240, .6), transparent 55%),
      rgba(30, 70, 150, .18);
  }
  49% {
    opacity: .78;
    background:
      radial-gradient(120% 90% at 12% 30%, rgba(47, 127, 240, .6), transparent 55%),
      rgba(30, 70, 150, .18);
  }
  50% {
    opacity: .9;
    background:
      radial-gradient(120% 90% at 88% 30%, rgba(239, 59, 82, .58), transparent 55%),
      rgba(150, 30, 45, .18);
  }
  100% {
    opacity: .78;
    background:
      radial-gradient(120% 90% at 88% 30%, rgba(239, 59, 82, .58), transparent 55%),
      rgba(150, 30, 45, .18);
  }
}

.game.alarm .scene::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(140% 120% at 50% 120%, rgba(47, 110, 220, .28), transparent 60%);
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .policeCar.arriving {
    animation: none;
    opacity: 1;
    transform: translateX(0);
  }

  .policeCar.arriving .copLightBlue { animation: none; opacity: 1; }
  .policeCar.arriving .copLightRed { animation: none; opacity: .18; }

  .alarmLights.on {
    animation: none;
    opacity: .55;
    background:
      radial-gradient(120% 90% at 12% 30%, rgba(47, 127, 240, .6), transparent 55%),
      rgba(30, 70, 150, .18);
  }
}
