Function
The ticket to show, or null for none
The status region is always mounted, so screen readers are listening before a ticket arrives; the pill inside it appears with the moment. It sits at the top at every width — where the learner is looking after pressing a control, and clear of the player's own chrome. It never takes focus and only the pill itself catches the pointer.
While the browser is presenting an element fullscreen, the region is rendered
into that element: nothing outside it is painted, so a learner watching
fullscreen would otherwise never see the ticket they just earned. After
TICKET_TOAST_LIFETIME_MS it calls onDone — a timer, not the
animation, so it leaves under reduced motion too. A moment with a new id
restarts that lifetime.
The notification a lesson page shows when the learner earns a ticket: the ticket dropping out of its slot, the tickets collected towards the module's prize, and that prize's silhouette.