Fixes two issues found during manual verification:
- fragments/toast.html was missing class="toast-container" on the
swapped-in element, so the container lost its fixed-position
styling after the first swap.
- htmx:oobAfterSwap's event.detail.target is the *old* element that
just got replaced (outerHTML oob-swaps detach it), so the dismiss
timer must look up the live #toast-container by id instead of
trusting that stale reference.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Replaces the one-time UTC-to-local formatting with a per-second
countdown (HH:MM:SS, or MM:SS under an hour) that fits the dark
cockpit theme's instrument-panel feel, falling back to "due now" once
the target passes instead of showing a negative duration.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Exposes the scheduler's next_tick in the topbar via a safe Jinja
helper (falls back to nothing if the scheduler isn't running yet),
and converts the server-rendered UTC timestamp to the visitor's local
time client-side so it reads correctly regardless of timezone.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>