Can anyone explain me why this works? xD
I had no idea I can move the gray blocks, so I did it without moving them.
But nevertheless, interesting idea, executed well! There are some inconsistencies, though. Like in the example above, I'm pretty sure they should not behave the way they do, but mostly everything works as expected.
Great job, had a ton of fun playing it! :)