- iPhone: disable the idle timer while the exercise detail screen is open,
so the display no longer sleeps mid-set.
- Watch: the work/rest timers counted on a run-loop Timer that watchOS
throttles in the Always-On (wrist-down) state, so they froze. Anchor both
to a wall-clock Date rendered with SwiftUI's self-updating timer text;
rest haptics + auto-advance now derive from the end time so they catch up
after a stall instead of stalling.