.bld.selected:not(.hit) .buildingBody {
  animation: targetLock 1.4s ease-in-out infinite;
  transform-origin: 50% 100%;
}

@keyframes targetLock {
  0%, 100% { filter: brightness(1) saturate(.9); transform: scale(1); }
  50% { filter: brightness(1.16) saturate(1.12) drop-shadow(0 0 12px rgba(255, 211, 123, .42)); transform: scale(1.015); }
}

.bld.hit .buildingBody {
  animation: storefrontImpact .52s cubic-bezier(.175, .885, .32, 1.275) .88s both;
  transform-origin: 50% 100%;
}

.bld.hit .buildingBody::before {
  box-shadow: 0 0 0 0 rgba(255, 224, 149, 0);
}

@keyframes storefrontImpact {
  0% { filter: brightness(1) saturate(.9); transform: translateY(0) scale(1); }
  25% { filter: brightness(1.4) saturate(1.3) drop-shadow(0 0 20px rgba(255, 211, 123, .82)); transform: translateY(-4px) scale(1.04); }
  55% { filter: brightness(1.1) saturate(1.05); transform: translateY(1px) scale(.98); }
  78% { transform: translateY(-1px) scale(1.01); }
  100% { filter: brightness(.98) saturate(.78); transform: translateY(0) scale(1); }
}

.game.running #thief.walking:not(.busted):not(.exit) {
  animation: runnerLopePolish .35s ease-in-out .09s 3 both;
  transform-origin: 50% 92%;
}

@keyframes runnerLopePolish {
  0%, 100% { transform: translateX(-50%) translateY(0) rotate(1.2deg); }
  40% { transform: translateX(-50%) translateY(-6px) rotate(3.2deg); }
  70% { transform: translateX(-50%) translateY(-1px) rotate(.3deg); }
}

.game.cashoutGlow .trackGate {
  animation: escapeGateOpen .9s cubic-bezier(.16, .78, .22, 1) both;
}

.game.cashoutGlow .trackGate::after {
  position: absolute;
  right: -42px;
  bottom: -20px;
  left: -42px;
  height: 18px;
  content: "";
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(255, 217, 104, .48), transparent 68%);
  filter: blur(6px);
  animation: escapeReflection .9s ease-out both;
}

@keyframes escapeGateOpen {
  0% { opacity: 0; transform: scaleX(.58) translateY(10px); box-shadow: 0 0 0 rgba(255, 216, 61, 0); }
  48% { opacity: 1; transform: scaleX(1.04) translateY(0); box-shadow: 0 0 32px 11px rgba(255, 216, 61, .52); }
  100% { opacity: 1; transform: scaleX(1); box-shadow: 0 0 18px 5px rgba(255, 216, 61, .34); }
}

@keyframes escapeReflection {
  0% { opacity: 0; transform: scaleX(.35); }
  42% { opacity: 1; transform: scaleX(1); }
  100% { opacity: .35; transform: scaleX(1.25); }
}

.policeCar.arriving {
  filter: drop-shadow(0 8px 5px rgba(2, 9, 18, .58)) drop-shadow(-18px 0 12px rgba(75, 137, 255, .22));
}

.policeCar.arriving svg,
.policeCar.arriving::before,
.policeCar.arriving::after { will-change: opacity, transform; }

@media (prefers-reduced-motion: reduce) {
  .bld.selected:not(.hit) .buildingBody,
  .bld.hit .buildingBody,
  .game.running #thief.walking:not(.busted):not(.exit),
  .game.cashoutGlow .trackGate,
  .game.cashoutGlow .trackGate::after { animation: none; }

  .bld.selected:not(.hit) .buildingBody { filter: brightness(1.08) saturate(1); }
  .game.cashoutGlow .trackGate::after { opacity: .35; transform: none; }
}
