Hi G-CPTN,
I was going to suggest a linux based approach, but see Milo has done so already, so I second his approach.
The advantage of a live USB approach is that the drive being re-sized is not the OS drive, so if something goes wrong you still have a working system.
It goes without saying back up vital files before messing with disk partitions.
EG