Fix-ul initial deblocà AudioContext-ul doar in handlerul btn-start. Lacuna:
calea de resume (reload mid-campanie) intra direct pe harta fara btn-start ->
ctx nedeblocat -> camere mute. Plus resume() singur nu ajunge pe iOS Safari.
- unlockAudio() + listener global one-time (pointerdown+keydown capture):
acopera fresh SI resume; buffer silentios iOS-safe.
- beep() se auto-vindeca daca ctx redevine suspended.
- Test smoke #9 rescris: headless creeaza ctx direct 'running' (ignora autoplay)
-> vechiul "ctx running" trecea trivial. Acum: gest tastatura fara btn-start
-> running (cale resume) + beep self-heal din ctx suspendat.
- Demo campanie regenerat. Suita 24/24.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>