Actually, I believe that there is a feature that was just recently released that does this! The latest edge release of Self-Hosted retool is also available to cloud users and is outlined here. I think that what you're interested in is this line: "Added a JS API theme.setMode() to dynamically change app themes during a user session. (#47667)"
Apologies for the confusion here! The new themes feature is still in Private Beta. I'm happy to enable it for you if you'd like. During private betas, we are particularly interested in collecting lots of product feedback as we move towards general availability.
Should I go ahead and add the feature? Once it is enabled, you'll get access to the new themes editor shown here. You can create any number of "modes" in the top right corner of the editor. Then, in an app that has your theme enabled, you can run a Javascript query to switch modes:
For folks following along, themes are only available on Business & Enterprise plans