Nice work! Trying not to repeat things mentioned below but as mentioned, texture-filter-linear is what makes it blurry, for pixel art, nearest is what you want. You’ll end up with larger pixels but they’ll be crisp. Not mentioned, you have texture-repeat-enabled and you want that disabled for the player sprite. When it’s largest and attacks, on the back side you can see some white lines, which are the impact wrapping from the front.
You might pull the shadow into it’s own sprite so it can be hidden while jumping (or stay on the ground). You also can either keep it the same size (matching the hit box) but you might want to grow the hit box too.
Coyote time would help that jump feel better (allowing the player to jump a few frames after falling off a ledge). I think it’s good to have in every platformer but especially here where the shadow and player can mismatch.
Keep up the good work!