/* Space 2047 HD Edition 5.2.3 — Character movement polish and terrain response */
.s2047-character-animation-phase-one-ready [data-s2047-movement-polished="true"],
.s2047-character-animation-phase-one-ready .s2047-player[data-s2047-movement-polished="true"],
.s2047-character-animation-phase-one-ready .s2047-npc[data-s2047-movement-polished="true"] {
  --s2047-polished-speed: 0;
  --s2047-turn-lean: 0deg;
  --s2047-terrain-stride: 1;
  --s2047-terrain-lift: 1;
  --s2047-terrain-drag: 1;
  --s2047-stop-settle: 0;
  transform-origin: 50% 88%;
}

[data-s2047-movement-polished="true"].s2047-natural-walking {
  animation-duration: calc((0.58s / max(var(--s2047-motion-speed, 1), .65)) / var(--s2047-terrain-stride, 1));
  filter: saturate(calc(.96 + min(var(--s2047-polished-speed, 0), 2) * .02));
}

[data-s2047-movement-polished="true"] .s2047-character-body,
[data-s2047-movement-polished="true"] .character-body,
[data-s2047-movement-polished="true"] .sprite-body {
  transform: rotate(var(--s2047-turn-lean, 0deg)) translateY(calc(-1px * var(--s2047-stop-settle, 0)));
  transition: transform 90ms linear;
  transform-origin: 50% 85%;
}

[data-s2047-movement-polished="true"][data-s2047-terrain-response="snow"] { --s2047-foot-sink: 1px; }
[data-s2047-movement-polished="true"][data-s2047-terrain-response="sand"] { --s2047-foot-sink: 2px; }
[data-s2047-movement-polished="true"][data-s2047-terrain-response="mud"] { --s2047-foot-sink: 3px; }
[data-s2047-movement-polished="true"][data-s2047-terrain-response="water"] { --s2047-foot-sink: 4px; }
[data-s2047-movement-polished="true"][data-s2047-terrain-response="ice"] { --s2047-foot-sink: 0px; }

[data-s2047-movement-polished="true"] .s2047-character-feet,
[data-s2047-movement-polished="true"] .character-feet,
[data-s2047-movement-polished="true"] .sprite-feet {
  transform: translateY(var(--s2047-foot-sink, 0));
}

[data-s2047-movement-polished="true"].s2047-movement-clean-stop .s2047-character-body,
[data-s2047-movement-polished="true"].s2047-movement-clean-stop .character-body,
[data-s2047-movement-polished="true"].s2047-movement-clean-stop .sprite-body {
  animation: s2047-clean-stop-settle 260ms ease-out both;
}

@keyframes s2047-clean-stop-settle {
  0% { transform: rotate(var(--s2047-turn-lean, 0deg)) translateY(-2px); }
  55% { transform: rotate(calc(var(--s2047-turn-lean, 0deg) * .35)) translateY(1px); }
  100% { transform: rotate(0deg) translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  [data-s2047-movement-polished="true"] .s2047-character-body,
  [data-s2047-movement-polished="true"] .character-body,
  [data-s2047-movement-polished="true"] .sprite-body {
    transition: none;
    animation: none !important;
    transform: none;
  }
}
