Well, to close out this topic – my original problem was resolved with Esmi’s recommendation to rename the active theme via ftp in order to temporarily disable it. This gained me access to the dashboard again, from which I was able to re-activate my theme. Still not sure why it “broke” in the first place.
My secondary issue of losing all my text widgets in the process, however, was only resolved by recreating them from scratch.