Calculating angles of rotation

Greetings,
I have a script that keeps an object on a distance from the ground and rotate this object to act more or less like a hovercraft.

transform.position = Vector3.Lerp(transform.position, new Vector3(transform.position.x, distance, transform.position.z), 1);
yaw += rotateSpeed * Time.deltaTime * horizontal;
roll = -horizontal * rollAngle;
Vector3 rotationVector = new Vector3(0.0f, yaw, roll);
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(rotationVector), rotateSpeed * Time.deltaTime);

The code works for planes without any rotation. I would like to make my object parallel to the rotated ground but also I want to add my rotations. When I simply multiply ground’s angles to my rotations (Quaternion.Euler(groundAngles) * (Quaternion.Euler(rotationVector)) the angles are incorrect.

I edited first post for better explain the problem.

I might not understand your question correctly. Have you tried working with localRotation? Most of the time, when I want to work with rotations in an object, I make the following setup:

A parent GameObject that I use for movement (changes in transform.position) and a child GameObject that i use for rotation (transform.localRotation). You could use the parent object to make translations and Y rotations while using the inner child object to make Z rotations. This will help you make the Z rotations independent from the movements.

In other words.
Lets say your crafts is moving forward and make right and left turns. The Parent object will help you move in the Z(Axis) (Move forward) and change directions by rotating in the Y Axis. While the inner child object (which probably contains your hovercraft) will let you make the hovering effect by rotating in the local Z and X Axis.
I hope this helps.

Thank you very much. localRotation and parent-child solution work perfectly.