Ranks the 12 third-placed teams across groups (Pts -> GD -> GF -> id) and marks the top 8 that advance to the R32. Full-width section below the group cards in the Grupos tab, gated on all 12 groups finished (omitted from the DOM otherwise). Reuses .standings-table styling, header tooltips and the favorite-row highlight: gold rows + check for the 8 qualified, muted rows for 9-12, a dashed cut line between. computeThirdPlaceRanking() only ranks for display; the slot->group allocation stays in bracket-config.json. Bumps APP_VERSION to v1.0.3 (also covers the hero knockout-resolution fix).
The home hero read match.homeTeam/awayTeam directly; knockout matches (ids 73-104) carry only bracketRef and resolve teams at runtime, so once the next match became an R32 game the hero showed "A definir vs A definir". Resolve via resolveBracketTeams(match) like schedule cards and the modal; heroTeamHTML now takes a {team,label} slot.
Group stage complete (all 72 matches finished). 8 best third-placed teams ranked Pts→GD→GF: groups B,D,E,F,I,J,K,L (out: G/IRN, A/KOR, C/SCO, H/URU). Allocation from FIFA official combination table: {1:D, 2:F, 3:B, 4:I, 5:E, 6:K, 7:J, 8:L}. R32 verified vs official bracket — exact structural match, no same-group clashes.
Leader cards (Best attack/defense, Most clean sheets) now rotate through every
team tied on the headline metric instead of showing only the top one, and three
new cards are added: Most wins, Most goals conceded, Best goal difference.
- group by the metric value alone; order within the group by existing tiebreakers
- auto-advance (3.5s), pause on hover/focus, off under prefers-reduced-motion
- discrete edge arrows with a full-height side click strip; wrap-around
- dots indicator up to 8 tied teams, else an i/n counter; single team = plain card
- bump APP_VERSION to v1.0.2