/* ── Walk: rhythmic bob + lean + arm swing ───────────────── */
/* Applied to .mote-body-anim when state = walk.              */
/* Composes ON TOP of the breathing in .mote-body (child).    */

.anim-walk.mote-body-anim {
  animation: ma-walk-bob 0.6s ease-in-out infinite;
  transform-box: fill-box;
  transform-origin: 50% 85%;
}

@keyframes ma-walk-bob {
  0%, 100% { transform: translateY(0) rotate(0deg) scaleY(1); }
  25%      { transform: translateY(calc(var(--bob-height, 2px) * -1))
                        rotate(var(--lean-angle, 4deg))
                        scaleY(1.04); }
  50%      { transform: translateY(0) rotate(0deg) scaleY(1); }
  75%      { transform: translateY(calc(var(--bob-height, 2px) * -1))
                        rotate(calc(var(--lean-angle, 4deg) * -1))
                        scaleY(1.04); }
}

/* ── Side features swing opposite to body lean ───────────── */
.anim-walk .mote-features-side {
  animation: ma-walk-arms 0.6s ease-in-out infinite;
  transform-box: fill-box;
  transform-origin: 50% 50%;
}

@keyframes ma-walk-arms {
  0%, 50%, 100% { transform: rotate(0deg); }
  25%           { transform: rotate(calc(var(--wing-angle, 12deg) * -1)); }
  75%           { transform: rotate(var(--wing-angle, 12deg)); }
}

/* ── Top features bounce with slight delay ───────────────── */
.anim-walk .mote-features-top {
  animation: ma-walk-top 0.6s ease-in-out infinite;
  animation-delay: -0.08s;
  transform-box: fill-box;
  transform-origin: 50% 100%;
}

@keyframes ma-walk-top {
  0%, 100% { transform: rotate(0deg); }
  25%      { transform: rotate(calc(var(--antenna-angle, 8deg) * -1)); }
  75%      { transform: rotate(var(--antenna-angle, 8deg)); }
}
