The puzzles were well designed, it really made me take a moment to think carefully on what I had to do. The puzzles in the beginning were a bit too simple, I kind of wished there were more puzzles like the last levels in the game.
The enemies were simple, but they were placed in ways that made the puzzles interesting. The player has to decide if it’s the right choice to kill the enemy or leave them since they could be an essential part of beating the puzzle. It also felt good when the crate had to be pushed down in a certain area, and the enemy’s movement was exploited to push the crate right on to the button.
The instruments of the music were way too loud and a bit too high pitched. I actually had to mute the game because it was hurting my ears.
The music also seems to restart with each new level. Perhaps you could make a music manager that spawns a music-playing object if one doesn’t exist while applying DontDestroyOnLoad and a tag of “Music” to it. On a new scene load, it will search for an object labeled with the tag, “Music”. If one already exists then it will not spawn a new music object.