Character Keeps Reverting back to forward position after no input

I have made my character walk in all 4 directions (2D). However, the character will snap back to a forward facing direction as soon as I let go of any WASD keys. Does anyone have an idea where this issue could be coming from?

This is what my character controller looks like so far. The reason it is so convoluted is because my character arms and torso/legs sprite animations are separate and therefore connected to different child game objects.

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float moveSpeed = 5f;

    private Rigidbody2D rb;
    private Vector2 movement;
    private Animator bodyAnimator;
    private Animator armsAnimator;
    private SpriteRenderer bodySpriteRenderer;
    private SpriteRenderer armsSpriteRenderer;

    private void Awake()
    {
        rb = GetComponent<Rigidbody2D>();

        Transform bodyTransform = transform.Find("body");
        Transform armsTransform = transform.Find("arms");

        if (bodyTransform != null)
        {
            bodyAnimator = bodyTransform.GetComponent<Animator>();
            bodySpriteRenderer = bodyTransform.GetComponent<SpriteRenderer>();
        }

        if (armsTransform != null)
        {
            armsAnimator = armsTransform.GetComponent<Animator>();
            armsSpriteRenderer = armsTransform.GetComponent<SpriteRenderer>();
        }

    }

    private void Update()
    {
        
        float moveX = Input.GetAxisRaw("Horizontal");
        float moveY = Input.GetAxisRaw("Vertical");

        movement = new Vector2(moveX, moveY).normalized;

        // Update animators
        UpdateAnimator(bodyAnimator, movement.x, movement.y);
        UpdateAnimator(armsAnimator, movement.x, movement.y);

        // Flip the sprites based on movement direction
        if (movement.x != 0)
        {
            bool flipSprite = movement.x < 0;
            bodySpriteRenderer.flipX = flipSprite;
            armsSpriteRenderer.flipX = flipSprite;
        }
    }

    private void FixedUpdate()
    {
        rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
    }

    private void UpdateAnimator(Animator animator, float moveX, float moveY)
    {
        if (animator != null)
        {
            animator.SetFloat("moveX", Mathf.Abs(moveX));
            animator.SetFloat("moveY", moveY);
            animator.SetBool("isMoving", movement.magnitude > 0.1f);
        }
    }
}

This is what the transition from body_walk to body_idle looks like, where the bug is most likely coming from.

it will almost certainly be because when move.x and move.y are both 0 you are still sending that every frame for the animator to process a (0,0) movement and that is most likely triggering your direction changer