The athletics module backend is done — D1 schema, read API, admin CRUD endpoints, PB recompute. These mockups show the interaction patterns for the screens that drive those endpoints, before any production admin UI gets built. The performance-entry screen deserves the most attention because it's the highest-frequency task at a real centre.
Pick a meet, pick an event, fill in results. The page loads eligible athletes for that event's age group, shows each athlete's current PB inline, and flashes the gold "New PB" badge as you type a value that beats the existing best. Bulk save submits everything at once and triggers PB recompute server-side.
Review performance entryBrowse, search, edit the registered roster. Search by name, filter by age-group bracket or active status. Each row shows a quick PB count and last-seen meet (derived from the performances table). Edit drawer slides in from the right for inline edits without leaving the list.
Review athletesSchedule meets, manage events within them. Each meet card lists its scheduled events as chips with live performance counts. Add an event inline via the dashed "+ Add event" tile. Centre records on completed meets get a gold border accent so they're scannable at a glance.
Review meet manager