Nice work! My first attempt was a massive failure and knocked the balls off, I expected the effects to be persistent, maybe just flashing the color with ring moving out for push and starting large then coming in for pull. I think I beat it though I’m not sure what I did, I circled the end piece and kept pushing and pulling then ended up at the main menu.
It seemed to me like the camera tilted only by whole degrees (or some other fixed increment), maybe you where setting rotation_degrees with integers instead of floats? I really appreciated having some texture otherwise the sense of motion is really low, though the size could probably a little smaller. It would be cool to see some more puzzles with this mechanic, keep it up!