StaticAnimated loading indicator with status text and elapsed time.
Displays:
Initial status text to display
Turn start time (time.time() epoch seconds) the
elapsed counter counts from. Pass the time the user's prompt
was accepted so the counter includes pre-stream setup;
defaults to widget mount.
Compose the loading widget layout.
Start animation on mount.
Preserves _start_time when the widget is remounted (e.g., after
being removed and re-added for repositioning) so the elapsed-time
counter doesn't reset. Repositioning via move_child avoids the
remount path entirely, but this guard keeps the behavior correct
if any caller ever falls back to remove + mount.
Stop the animation timer when the widget leaves the DOM.
Stop animation before delegating DOM removal to Textual.
Update the status text.
Pause the animation and update status.
Resume the animation, excluding the paused interval from elapsed time.
Rebases _start_time forward by the paused duration so the elapsed-time
counter continues from where it paused rather than counting the wait.
No-op when not currently paused. This method is wired both as a
Future.add_done_callback and as a self-healing net in the app's
_set_spinner, so it can fire on a widget that was never paused (e.g.
one created to replace the paused spinner mid-approval). Returning early
there avoids rebasing the start time or clobbering that widget's status.
Stop the animation (widget will be removed by caller).