Loading race...
{{ loadError }}
← Back to Live Tracking
{{ statusMessage }}
TrackTabs · Host ·
{{ event.name }}
{{ currentUserName || 'You' }}
{{ currentUserId === event.created_by ? 'Owner' : 'Co-Host' }}
{{ event.name.toUpperCase() }}
{{ event.location || 'Unknown location' }}
{{ totalRunners }}
runners
{{ categories.length }}
categories
Started
{{ fmtWallTime(raceStartTime) }}
Status:
{{ raceStatus }}
Elapsed
{{ fmtElapsed(elapsedMs) }}
{{ raceStatus === 'paused' ? 'Resume' : 'Start Race' }}
Pause
{{ audioEnabled ? 'Sound: On' : 'Sound: Off' }}
End Event
{{ cat.name }}
{{ cat.winnerTitle || 'Last Person Standing' }} · Bell · {{ cat.bellIntervalMinutes }}-min loops
Fixed-Time · Freeform · {{ cat.durationHours }}h
{{ runnersByCategory[cat.id].filter(r => r.status === 'active').length }}
{{ cat.pacingModel === 'bell' ? 'Active' : 'Runners' }}
Next Bell In
{{ fmtCountdown(bellCountdown(cat)) }}
Lap
{{ bellCurrentLap(cat) }}
· Bell at
{{ fmtWallTime(bellNextAtWall(cat)) }}
SOLO LAP — {{ lpsSoloRunners[cat.id].bib }} · {{ lpsSoloRunners[cat.id].name }}
Out on Course
{{ runnersOnCourse(cat).length }}
{{ r.bib || '—' }}
{{ r.name }}
on course
{{ r.laps || 0 }}
Back In · Ready for Lap {{ bellCurrentLap(cat) + 1 }}
{{ runnersBackIn(cat).length }}
✓
{{ r.bib || '—' }}
{{ r.name }}
back in
{{ r.laps || 0 }}
Out of LPS
{{ runnersOutOf(cat).length }}
DNF
{{ r.bib || '—' }}
{{ r.name }}
DNF
{{ r.laps || 0 }}
No runners in this category yet.
Skip to Lap {{ bellCurrentLap(cat) + 1 }}
Start the race to enable the bell.
Cap
{{ cat.durationHours }}h
Status
{{ isLive ? 'Live' : raceStatus }}
{{ r.bib || '—' }}
{{ r.name }}
{{ r.laps || 0 }}
{{ runnerCellLastLap(r) }}
No runners in this category.
Activity
No activity yet.
{{ formatActivityTime(a.timestamp) }}
{{ a.message }}
Bell rang · Lap {{ pastBellModal.lap }} ended
{{ pastBellModal.rows.length }} RUNNER{{ pastBellModal.rows.length === 1 ? '' : 'S' }} HAVE NOT RETURNED
Lap {{ pastBellModal.lap + 1 }} has started. Decide what happens to each — or Wait and tap them when they cross.
{{ row.bib || '—' }}
{{ row.name }}
Wait — Tap when they cross
Late · Case A
Continue {{ findDemotionTargetCategory()?.name || '6h' }}
Late · Case A
Done racing
Case D
DNF · Bailed
Case B
DNF · Failed
Wait
keeps them past-bell ·
Late
credits the lap but DNFs LPS ·
Bailed/Failed
= no credit
Wait All
Apply Choices
Late return · Lap {{ demotionModal.atLap }}
{{ demotionModal.runner?.bib || '—' }} · {{ demotionModal.runner?.name }}
Their lap was logged but they returned after the bell. What now?
Late · Case A
Continue in {{ findDemotionTargetCategory()?.name || '6h' }}
Late · Case A
DNF · Done racing
Cancel