feat: audio player persists + resumes across page navigations (session persistence)
An <audio> doesn't survive a full reload, and cross-context navigation (e.g. to
the headerless hub overview) is intentionally full-nav -> the playing player
disappeared. Now the player saves queue+position+playstate to sessionStorage
(pagehide/play/pause + 5s interval) and restores+resumes on the next page;
restore wins over the page seed. Position is applied on loadedmetadata.
audio-player.js v=10->v=11.
Co-Authored-By: Claude <noreply@…>