Tank turret rotation problem,Tank turret rotation axis problem

Hello, I was not sleeping because I was trying to figure out how to fix this.
My problem is turret X axis rotation. (see gif)
I just want to rotate turret X axis with tank.
I found issue, please check last two images → Imgur: The magic of the Internet why is that ? :expressionless:

public class Tank : MonoBehaviour
{
    public GameObject cannon;   // not using yet
    public GameObject turret;   // tank turret
    private GameObject tank;    // tank


    // Debug
    public Text text1;
    public Text text2;
    public Text text3;


    public LayerMask layer;
    private Camera cam;

    public float    TurretRotationSpeed;

    private float   _defaultRotationX = -90; // This is default X axis rotation for turret, because if I set it to 0 then turret will be flipped 

    private Quaternion  _lookRotation;
    private Vector3     _direction;

    void Start()
    {
        cam = Camera.main;
        tank = gameObject;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
            ResetTurretRotation();

        TurretRotation();
    }

    private void TurretRotation()
    {
        text1.text = $"turret rotation: {turret.transform.rotation.x}, {turret.transform.rotation.y}, {turret.transform.rotation.z}";
        text2.text = $"tank rotation: {tank.transform.rotation.x}, {tank.transform.rotation.y}, {tank.transform.rotation.z}";

        /// Here I want to update turret rotation X axis based on tank X rotation to fix that issue but It is not working :(
        Vector3 newRotation             = new Vector3(tank.transform.eulerAngles.x - _defaultRotationX, tank.transform.eulerAngles.y, tank.transform.eulerAngles.z);
        turret.transform.eulerAngles    = newRotation;

        // Code below is used for moving (aiming) turret in Y axis (maybe Z axis too idk), so no up down just to sides

        Ray camRay = cam.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(camRay, out hit, float.MaxValue, layer)) // I use this because I want to have dynamic raycasting Reticle like WoT
        {
            //find the vector pointing from our position to the target
            _direction      = (hit.point - turret.transform.position).normalized;

            Vector3 fixedRot = new Vector3((turret.transform.rotation.x - tank.transform.rotation.x), 0, 0);

            _direction.y = 0;
            _direction.x = (_defaultRotationX) + fixedRot[0];

            text3.text = $"calc: {_direction.x}, {_direction.y}, {_direction.z}";

            //create the rotation we need to be in to look at the target
            _lookRotation = Quaternion.Euler(_direction);

            //rotate us over time according to speed until we are in the required rotation
            turret.transform.rotation = Quaternion.Slerp(turret.transform.rotation, _lookRotation, Time.deltaTime * TurretRotationSpeed);
        }
    }

    private void ResetTurretRotation()
    {
        // Here I want to reset turret rotation based on tank rotation, I tried some calculations using tank.transfrom.rotation but I cant figure out why it was not working, it was always reseting turret rotation to 0
        Vector3 resetRotation       = new Vector3(_defaultRotationX + tank.transform.rotation.x, tank.transform.rotation.y, tank.transform.rotation.z);
        turret.transform.rotation   = Quaternion.Euler(resetRotation);

        // Im not sure if im calculating AXISes correctly
    }
}

The reason those two rotations (i.e the one printed on screen and the one on the inspector) are different is because one is a Quaternion, and the other is a Euler angle.