Update:
I decided to start a new project and follow a crouching tutorial on both projects to see if I could spot any differences. Turns out, I was using an entirely wrong third-person character mesh which wasn’t supposed to exist, which was causing my character to phase through the floor. How stupid of me.
Now all that’s left to fix is the camera snap.