.sprite {
  position: absolute;
  z-index: 7;
  background-repeat: no-repeat;
  background-size: auto 100%;
  image-rendering: auto;
  filter: drop-shadow(0 5px 4px rgba(0, 0, 0, .45));
}

.unit {
  width: 52px;
  height: 52px;
  background-image: url("../assets/sprites/followers.png?v=20260619b");
}

.kingdom-strip .unit,
.kingdom-strip .follower.farmer {
  width: 24px;
  height: 24px;
}

.follower {
  background-size: 400% 400%;
  background-position: 0 66.667%;
}

.follower.species-human_tribe.worker-farmer { background-image: url("../assets/sprites/species-workers/human_tribe-farmer-move.png?v=20260619d"); }
.follower.species-orc_clan.worker-farmer { background-image: url("../assets/sprites/species-workers/orc_clan-farmer-move.png?v=20260619e"); }
.follower.species-undead_legion.worker-farmer { background-image: url("../assets/sprites/species-workers/undead_legion-farmer-move.png?v=20260619d"); }
.follower.species-insect_swarm.worker-farmer { background-image: url("../assets/sprites/species-workers/insect_swarm-farmer-move.png?v=20260619d"); }
.follower.species-demonkin.worker-farmer { background-image: url("../assets/sprites/species-workers/demonkin-farmer-move.png?v=20260619d"); }
.follower.species-clockwork.worker-farmer { background-image: url("../assets/sprites/species-workers/clockwork-farmer-move.png?v=20260619d"); }
.follower.species-elf_grove.worker-farmer { background-image: url("../assets/sprites/species-workers/elf_grove-farmer-move.png?v=20260619g"); }
.follower.species-lizardfolk.worker-farmer { background-image: url("../assets/sprites/species-workers/lizardfolk-farmer-move.png?v=20260619d"); }

.follower.species-human_tribe.worker-miner { background-image: url("../assets/sprites/species-workers/human_tribe-miner-move.png?v=20260619a"); }
.follower.species-human_tribe.worker-builder { background-image: url("../assets/sprites/species-workers/human_tribe-builder-move.png?v=20260619a"); }
.follower.species-human_tribe.worker-patrol_guard { background-image: url("../assets/sprites/species-workers/human_tribe-patrol_guard-move.png?v=20260619a"); }

.follower.species-undead_legion.worker-miner { background-image: url("../assets/sprites/species-workers/undead_legion-miner-move.png?v=20260619e"); }
.follower.species-undead_legion.worker-builder { background-image: url("../assets/sprites/species-workers/undead_legion-builder-move.png?v=20260619e"); }
.follower.species-undead_legion.worker-patrol_guard { background-image: url("../assets/sprites/species-workers/undead_legion-patrol_guard-move.png?v=20260619e"); }

.follower.species-orc_clan.worker-miner { background-image: url("../assets/sprites/species-workers/orc_clan-miner-move.png?v=20260619b"); }
.follower.species-orc_clan.worker-builder { background-image: url("../assets/sprites/species-workers/orc_clan-builder-move.png?v=20260619b"); }
.follower.species-orc_clan.worker-patrol_guard { background-image: url("../assets/sprites/species-workers/orc_clan-patrol_guard-move.png?v=20260619b"); }

.follower.species-elf_grove.worker-miner { background-image: url("../assets/sprites/species-workers/elf_grove-miner-move.png?v=20260619b"); }
.follower.species-elf_grove.worker-builder { background-image: url("../assets/sprites/species-workers/elf_grove-builder-move.png?v=20260619b"); }
.follower.species-elf_grove.worker-patrol_guard { background-image: url("../assets/sprites/species-workers/elf_grove-patrol_guard-move.png?v=20260619b"); }

.follower.species-insect_swarm.worker-miner { background-image: url("../assets/sprites/species-workers/insect_swarm-miner-move.png?v=20260619a"); }
.follower.species-insect_swarm.worker-builder { background-image: url("../assets/sprites/species-workers/insect_swarm-builder-move.png?v=20260619a"); }
.follower.species-insect_swarm.worker-patrol_guard { background-image: url("../assets/sprites/species-workers/insect_swarm-patrol_guard-move.png?v=20260619a"); }

.follower.species-demonkin.worker-miner { background-image: url("../assets/sprites/species-workers/demonkin-miner-move.png?v=20260619a"); }
.follower.species-demonkin.worker-builder { background-image: url("../assets/sprites/species-workers/demonkin-builder-move.png?v=20260619a"); }
.follower.species-demonkin.worker-patrol_guard { background-image: url("../assets/sprites/species-workers/demonkin-patrol_guard-move.png?v=20260619a"); }

.follower.species-clockwork.worker-miner { background-image: url("../assets/sprites/species-workers/clockwork-miner-move.png?v=20260619a"); }
.follower.species-clockwork.worker-builder { background-image: url("../assets/sprites/species-workers/clockwork-builder-move.png?v=20260619a"); }
.follower.species-clockwork.worker-patrol_guard { background-image: url("../assets/sprites/species-workers/clockwork-patrol_guard-move.png?v=20260619a"); }

.follower.species-lizardfolk.worker-miner { background-image: url("../assets/sprites/species-workers/lizardfolk-miner-move.png?v=20260619a"); }
.follower.species-lizardfolk.worker-builder { background-image: url("../assets/sprites/species-workers/lizardfolk-builder-move.png?v=20260619a"); }
.follower.species-lizardfolk.worker-patrol_guard { background-image: url("../assets/sprites/species-workers/lizardfolk-patrol_guard-move.png?v=20260619a"); }

.u1 { left: 17%; top: 53%; animation: roamWorkerA 6s linear infinite, workerStepRightLeft 6s steps(1, end) infinite; }
.u2 { left: 30%; top: 53%; animation: roamWorkerB 7s linear infinite, workerStepLeftRight 7s steps(1, end) infinite; }
.u3 { left: 48%; top: 54%; animation: roamWorkerC 7.5s linear infinite, workerStepRightLeft 7.5s steps(1, end) infinite; }
.u4 { left: 71%; top: 50%; animation: roamWorkerD 6.5s linear infinite, workerStepPatrol 6.5s steps(1, end) infinite; }

.monster {
  right: 2%;
  top: 33%;
  display: none;
  width: 62px;
  height: 62px;
  background-image: url("../assets/sprites/monsters.png?v=20260619b");
  background-position: 0 0;
  filter: drop-shadow(0 0 12px rgba(216, 80, 115, .72));
  animation: invadeMonster 2.2s ease-in-out both;
}

.monster.brute {
  background-position: 50% 0;
}

.monster.imp {
  background-position: 100% 0;
}

@keyframes invadeMonster {
  0% { opacity: 0; transform: translate(54px, -26px) scale(.72); }
  30% { opacity: 1; }
  100% { opacity: 1; transform: translate(-58px, 36px) scale(1.02); }
}

@keyframes roamWorkerA {
  0% { transform: translate(0, 0); }
  25% { transform: translate(14px, -8px); }
  50% { transform: translate(24px, -16px); }
  75% { transform: translate(10px, -7px); }
  100% { transform: translate(0, 0); }
}

@keyframes roamWorkerB {
  0% { transform: translate(0, 0); }
  25% { transform: translate(-12px, 7px); }
  50% { transform: translate(-22px, 13px); }
  75% { transform: translate(-10px, 6px); }
  100% { transform: translate(0, 0); }
}

@keyframes roamWorkerC {
  0% { transform: translate(0, 0); }
  25% { transform: translate(10px, 7px); }
  50% { transform: translate(18px, 14px); }
  75% { transform: translate(8px, 6px); }
  100% { transform: translate(0, 0); }
}

@keyframes roamWorkerD {
  0% { transform: translate(0, 0); }
  33% { transform: translate(22px, -10px); }
  66% { transform: translate(8px, 12px); }
  100% { transform: translate(0, 0); }
}

@keyframes workerStepRightLeft {
  0%, 6.24% { background-position: 0 66.667%; }
  6.25%, 12.49% { background-position: 33.333% 66.667%; }
  12.5%, 18.74% { background-position: 66.667% 66.667%; }
  18.75%, 24.99% { background-position: 100% 66.667%; }
  25%, 31.24% { background-position: 0 66.667%; }
  31.25%, 37.49% { background-position: 33.333% 66.667%; }
  37.5%, 43.74% { background-position: 66.667% 66.667%; }
  43.75%, 49.99% { background-position: 100% 66.667%; }
  50%, 56.24% { background-position: 0 33.333%; }
  56.25%, 62.49% { background-position: 33.333% 33.333%; }
  62.5%, 68.74% { background-position: 66.667% 33.333%; }
  68.75%, 74.99% { background-position: 100% 33.333%; }
  75%, 81.24% { background-position: 0 33.333%; }
  81.25%, 87.49% { background-position: 33.333% 33.333%; }
  87.5%, 93.74% { background-position: 66.667% 33.333%; }
  93.75%, 100% { background-position: 100% 33.333%; }
}

@keyframes workerStepLeftRight {
  0%, 6.24% { background-position: 0 33.333%; }
  6.25%, 12.49% { background-position: 33.333% 33.333%; }
  12.5%, 18.74% { background-position: 66.667% 33.333%; }
  18.75%, 24.99% { background-position: 100% 33.333%; }
  25%, 31.24% { background-position: 0 33.333%; }
  31.25%, 37.49% { background-position: 33.333% 33.333%; }
  37.5%, 43.74% { background-position: 66.667% 33.333%; }
  43.75%, 49.99% { background-position: 100% 33.333%; }
  50%, 56.24% { background-position: 0 66.667%; }
  56.25%, 62.49% { background-position: 33.333% 66.667%; }
  62.5%, 68.74% { background-position: 66.667% 66.667%; }
  68.75%, 74.99% { background-position: 100% 66.667%; }
  75%, 81.24% { background-position: 0 66.667%; }
  81.25%, 87.49% { background-position: 33.333% 66.667%; }
  87.5%, 93.74% { background-position: 66.667% 66.667%; }
  93.75%, 100% { background-position: 100% 66.667%; }
}

@keyframes workerStepPatrol {
  0%, 8.32% { background-position: 0 66.667%; }
  8.33%, 16.65% { background-position: 33.333% 66.667%; }
  16.66%, 24.99% { background-position: 66.667% 66.667%; }
  25%, 33.32% { background-position: 100% 66.667%; }
  33.33%, 41.65% { background-position: 0 33.333%; }
  41.66%, 49.99% { background-position: 33.333% 33.333%; }
  50%, 58.32% { background-position: 66.667% 33.333%; }
  58.33%, 66.65% { background-position: 100% 33.333%; }
  66.66%, 74.99% { background-position: 0 100%; }
  75%, 83.32% { background-position: 33.333% 100%; }
  83.33%, 91.65% { background-position: 66.667% 100%; }
  91.66%, 100% { background-position: 100% 100%; }
}
