P2 #9 — Achievement unlock celebration. AchievementsCard сравнивает
текущие unlocked с persisted set'ом в localStorage. Новые играют
scale+accent-glow анимацию 2.8 сек (1.4с × 2 повтора). После
добавляются в celebrated — при следующем заходе не подпрыгивают.
P2 #10 — Match summary close confirm. Если в Match Summary остались
незакрытые челленджи, при close через X / Esc / btn — native
confirm с количеством остатка. Пользователь не «пролетает» окно
случайно.
P2 #11 — TTS delay 800ms. Дикторский голос ждёт 800мс прежде чем
проговорить — пользователь успевает decrement stepper если хочет
сделать меньше планового. Иначе голос произносит планируемые
reps уже когда юзер изменил цифру.
P2 #13 — Tracking badge точность. Раньше зелёный если просто
`gamesEnabled[id]`. Теперь зелёный только если live (enabled +
integrationActive + launchOptionStatus='applied'). Введён tone
'warning' для «включена, но launch option ещё queued» с подсказкой
«закрой Steam и снова открой». Dashboard подписывается на
onGamesChanged + первый listGames на mount.