.town-nature-ground,
.town-nature-wildlife,
.town-nature-sky {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  user-select: none;
  contain: layout style;
}
.town-nature-ground { z-index: 2; }
.town-nature-wildlife { z-index: 3; }
.town-nature-sky { z-index: 5; }
.town-nature-prop {
  position: absolute;
  transform: translate(-50%, -100%);
}
.town-nature-prop img {
  display: block;
  width: 100%;
  height: auto;
  transform-origin: 50% 92%;
  filter: drop-shadow(2px 4px 2px #314b3029);
  -webkit-user-drag: none;
}
.nature-oak img { animation: nature-breeze 9s ease-in-out infinite alternate; }
.nature-pine img { animation: nature-breeze 11s -4s ease-in-out infinite alternate-reverse; }
.nature-shrub img { animation: nature-breeze 8s -2s ease-in-out infinite alternate; }
.town-animal {
  position: absolute;
  top: 0;
  left: 0;
  aspect-ratio: 1;
  will-change: transform;
}
.nature-sprite { position: relative; transform: translate(-50%, -85%); }
.nature-sprite img {
  display: block;
  width: 100%;
  height: auto;
  -webkit-user-drag: none;
  filter: drop-shadow(1px 3px 1px #253b3233);
}
.town-rabbit img { animation: nature-hop 1.25s ease-in-out infinite; }
.town-squirrel img { animation: nature-amble 1.7s -.5s ease-in-out infinite; }
.town-bird .nature-sprite { transform: translate(-50%, -50%); }
.town-bird img { filter: drop-shadow(2px 7px 2px #253b3222); }
.town-bird img:first-child { animation: nature-wing-up .48s steps(1, end) infinite; }
.town-bird img:last-child { position: absolute; inset: 0; animation: nature-wing-down .48s steps(1, end) infinite; }
.town-nature-paused :is(.town-nature-prop, .town-animal) img { animation-play-state: paused; }
@keyframes nature-breeze { from { transform: rotate(-.7deg); } to { transform: rotate(.7deg); } }
@keyframes nature-hop { 0%, 68%, 100% { transform: translateY(0); } 82% { transform: translateY(-3px) rotate(-2deg); } }
@keyframes nature-amble { 0%, 100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-1.5px) rotate(1deg); } }
@keyframes nature-wing-up { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
@keyframes nature-wing-down { 0%, 100% { opacity: 0; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .town-nature-prop img,
  .town-animal img { animation: none; }
  .town-bird { display: none; }
}
