Run a league and track standings

The League layer turns your Sports module into a full league operator — multiple member teams, a shared schedule, and live standings.

On /sports, open the **League** tab to create a league for a season, then **invite teams** to join as members. League-authored games fan out to each member team automatically, so coaches see them on their own schedules without re-entry.

Standings live on the **Standings** tab and are recomputed from scratch whenever a league game is finalized — wins, losses, ties, and ranking all derive from the games themselves, so there's no manual bookkeeping and no drift. Mark a game final on its box score and the table updates.

A league sits inside the Sports module — there's no separate module to enable. Turn on **Sports** for the org and the League, Standings, and Brackets tabs appear.