/* M1.20 physical tracks: capped, fading DOM marks inside the world. */
.terrain-footprint-layer{position:absolute;inset:0;z-index:6;pointer-events:none;overflow:visible}
.terrain-footprint{position:absolute;display:block;transform:translate(-50%,-50%) rotate(var(--foot-heading,0deg));opacity:.55;animation:terrain-track-fade 3.8s linear forwards}
.footprint-hero,.footprint-boot{width:9px;height:19px;border-radius:55% 48% 35% 35%;background:#283d32a6;box-shadow:3px 4px 0 #1e34365c}
.footprint-hoof{width:19px;height:17px;border-radius:45% 45% 57% 57%;background:linear-gradient(90deg,#36423a 45%,transparent 47%,#36423a 55%);box-shadow:0 1px 4px #192e2987}
.footprint-paw{width:18px;height:20px;border-radius:50%;background:radial-gradient(ellipse at 50% 75%,#283b34 0 40%,transparent 44%),radial-gradient(circle at 20% 28%,#283b34 0 13%,transparent 16%),radial-gradient(circle at 50% 14%,#283b34 0 13%,transparent 16%),radial-gradient(circle at 80% 28%,#283b34 0 13%,transparent 16%)}
.footprint-spider{width:23px;height:20px;border-radius:50%;background:radial-gradient(ellipse at center,#233b3d 0 24%,transparent 29%);border-left:2px dotted #253b37;border-right:2px dotted #253b37;opacity:.32}
.footprint-wisp{width:19px;height:19px;border-radius:50%;background:radial-gradient(circle,#b7d5dca1,transparent 72%);box-shadow:0 0 11px #c0e7dd}
@keyframes terrain-track-fade{0%{opacity:.55}65%{opacity:.25}100%{opacity:0}}
/* Mobile and desktop: mob hitboxes follow their coordinates, no whole-button CSS patrol. */
.valley-mob{animation:none!important;transition:transform .2s linear;will-change:auto}
.valley-mob.facing-left .creature-illustration{transform:scaleX(-1)}
.valley-mob .creature-illustration{animation:none!important}
.valley-mob.mob-visible:not(.mob-defeated) .creature-illustration{animation:valley-trot .55s ease-in-out infinite alternate!important}
.valley-mob.mob-defeated{animation:none!important}
@media(prefers-reduced-motion:reduce){.terrain-footprint{animation:none;opacity:.22}.valley-mob .creature-illustration{animation:none!important}}

/* Interpolate 70ms simulation steps between paints without costly DOM reflows. */
.valley-mob{transition:left 74ms linear,top 74ms linear!important;animation:none!important}
.valley-mob.mob-awaiting-respawn{display:none!important}
.valley-mob.mob-defeated{transition:none!important}
@media(prefers-reduced-motion:reduce){.valley-mob{transition:none!important}}
