브라우저가 백그라운드 탭의 타이머를 느리게 돌려서(setInterval throttling) 카운트다운을 매 tick마다 1초씩 빼는 방식으로는 다른 창에 갔다오면 시간이 밀렸다. 남은 시간을 절대 종료 시각 (_phaseEndsAt) 기준으로 계산하도록 바꾸고, 탭이 다시 활성화될 때 (AppLifecycleState.resumed) 서버 상태를 재동기화하고 밀린 전환을 바로 따라잡도록 함. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>