Smooth position:

Vector3 destination =
    target.position + offset;

transform.position =
    Vector3.Lerp(
        transform.position,
        destination,
        smoothness * Time.deltaTime
    );

Alternative:

transform.position =
    Vector3.SmoothDamp(
        transform.position,
        destination,
        ref currentVelocity,
        smoothTime
    );

Smooth rotation:

transform.rotation =
    Quaternion.Slerp(
        transform.rotation,
        targetRotation,
        rotationSpeed * Time.deltaTime
    );