Rotate camera 30 degrees after rotating along a normal

I have a world that’s basically a sphere and the camera ‘orbits’ around it. It aligns on the currently selected polygon based on the position and the normal of that polygon.

Right now my code works correctly and rotates the camera to point exactly at the polygon. I’m having trouble rotating the camera down about 30 degrees so that the game doesn’t look too top-down.
If I just say transform.Rotate(30f,…) then I’m not sure how to keep the right polygon in the center of the camera anymore. If I try to rotate the normal then the camera just acts kind of funny based on where the normal is pointing. I’m probably not rotating the normal correctly (it should just rotate on the y-axis.

Here’s what I have now (this is top-down with no extra rotation attempts):

	Vector3 cameraNormal = TargetNormal;
    Vector3 realTarget = TargetPosition + cameraNormal * 29f;

    transform.rotation = Quaternion.LookRotation(-cameraNormal);

    transform.position = realTarget;

You should make your camera child of another gameObject. Parent will be orbiting around while your camera will rotate to 30 degrees.