All audio-element wiring, periodic progress reporting, and seek/skip/ toggle/rate logic move into a reusable hook. The player component now consumes playback.* and switches to the extracted CircleButton primitive shared with the video player. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>