- visibilitychange handler resumes speech + AudioContext on tab return - speak() retry logic: re-attempts once on non-cancel errors after 200ms - VOICE_VOLUME_SCALE (0.7) prevents voice from overpowering SFX/music - Music crossfade: brief gain dip (40% -> 100%) on track switches - Applied volume scale to all speech paths (speak, announce custom) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>