The score looks to be using a floating point number and can have a lot of decimal places. At some point my score ended up having .79999999... in it. It would be good to format it to only show 1 or 2 decimal places, or force it to always be an int if the decimal places are not intended. With the long number, the score covered up the # of keys I had, making those hard to see. I restarted and cleared my score, and did not get the decimals for the bit I tested. I'm not sure what caused it the first time as I was not paying attention to the score when it happened.
I would give the key image that is used as part of the UI showing how many keys you have, a background, or something else to signify it is not one to collect. Maybe it is because the score covers it up, but it often looks like it is on a tile, and I start to go for it before realizing it is not collectable. You could also make it static, or animated differently that the ones you can collect.
The movement is a bit too quick. For a puzzle game you don't need to be rushing around. Control is more important. You may even want to implement a system for moving only one square per button press, such as by holding Shift. Several times I stepped too far, either stepping on a death tile, or pushing a block too far. You should also think about how a player can resolve situations where they pushed a block they need into a position where they can't get to it, or where it otherwise blocks further progression in the game. It feels like it would be very easy to do something early that could prevent you from completing the game, and not knowing until later.
You only list arrows in the tutorial controls, but WASD also works. With the use of Q and E for the shifting, WASD makes more sense to use, so I would at least mention both are available options.
I think it would feel more intuitive if you only had one button that toggled between day and night.
Overall, this is a good start for a puzzle game.