Restrict Direction of rotation in Realtime.

I have a hand of clock which the player once starts rotating (Dragging) CCW until he completes one full rotation. ( Without lifting drag )

I am trying to lock the rotation to only CCW direction while/once the player starts rotating. I got help from the following links :
Detect Direction by @BobBobson108

Here is gif of what is actually happening: Demo

Below is what I actually want:

Here is my code :

void OnMouseDrag()
    {
        //rotation
        Vector3 mousePos = Input.mousePosition;
        mousePos.z = 5.23f;        

        Vector3 objectPos = Camera.main.WorldToScreenPoint(transform.position);        
        mousePos.x = mousePos.x - objectPos.x;
        mousePos.y = mousePos.y - objectPos.y;
        angle = Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg;
        transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle - 90f));

       

        hand_vector = transform.up;
        cross_product = Vector3.Cross(ref_vector, hand_vector);
        dot_product = Vector3.Dot(cross_product, transform.forward*-1);
        //Debug.Log("Hand Vector: " + hand_vector);
        //Debug.Log("Ref Vector: " + ref_vector);
        Debug.Log(cross_product);
        Debug.Log(dot_product);
    }

I tried to debug the values of the cross product, but the direction of resultant vector seems to be same even when when the player starts backward rotation.
68198-capture.png

Also the cross product vector changes direction only when the player starts rotation in CW direction from the default position i.e. 12 'o clock.

I have very less experience of working with Quaternions and rotations.
Any help will be highly helpful.
Thanks !!!

Hey Guys,
I manged to figure out the issue blocking me. Hope this post helps someone in future who is new to
Unity rotations, vectors and Maths.

void OnMouseDrag()
{

    transform.Rotate(new Vector3(0,0, Mathf.Sqrt(Input.GetAxis("Mouse X") * Input.GetAxis("Mouse X") + Input.GetAxis("Mouse Y") * Input.GetAxis("Mouse Y"))));  
    
 /*      
    Vector3 mousePos = Input.mousePosition;
    mousePos.z = 5.23f;

    Vector3 objectPos = Camera.main.WorldToScreenPoint(transform.position);
    mousePos.x = mousePos.x - objectPos.x;
    mousePos.y = mousePos.y - objectPos.y;

    print("Angle is :");
    print(Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg - 90f);

    if (counter_clockwise)
    {
        if (Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg - 90f > 0)
        {
            angle = Mathf.Max(angle, Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg - 90);
            transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));
        }

        if (Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg - 90f < 0)
        {
     angle = Mathf.Max(angle, 360 + (Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg - 90));
            transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));
        }
    }            
           
}