Hey, about the bug: I'm assuming you have the camera moving at a set speed, which causes the desynchronization between the character and the camera. If this is the case, all you have to do is, instead of moving the camera based on a speed, move it on LateUpdate every frame, so that the character is always on a specific viewport position in X. Sample code to illustrate what I'm saying:
If you set the character's viewport position to 0.1 in X, for example, it should fix your bug without any more hassle.
Loved your take on this game, 5/5.