3rd person left arm problem

Im trying to get Head, Right and Left Arms to rotate/follow the camera. For example, when aiming with a rifle.

Neck.C1 = CFrame.new(Vector3.new(0,YOffsetNeck,0)) * CFrame.Angles(0, asin(CameraDirection.x), 0) * CFrame.Angles(-asin(CameraDirection.y), 0, 0)

RArm.C1=CFrame.new(XOffsetRArm,YOffsetRArm,0) * CFrame.Angles(0, asin(CameraDirection.x), 0) * CFrame.Angles(-asin(CameraDirection.y), 0, 0)

Well, that generally works as intended, but I have a problem with the Left Arm. Since the Head and Right arm are basically pointed to Camera already and only need X rotation, the Left arm is kind of in an angle because it’s holding the rifle.
I have a general aiming animation, just points/looks forward.
image
So when adding basically the same code to LeftShoulder…

LArm.C1=CFrame.new(Vector3.new(XOffsetLArm,YOffsetLArm,0)) * CFrame.Angles(0, asin(CameraDirection.x), 0) * CFrame.Angles(-asin(CameraDirection.y), 0, 0)

Upon looking down or up the left arm moves weirdly.
image image
I’ve tried a few things to fix that (such as adjusting Y/Z rotations), but in the end could do nothing for over a week.
Tried to weld both arms but that’s pretty dumb.
I’m really struggling with this issue, does anyone know a potential fix?
Thanks.