Description
Trim verbose ESPN pre-game status text overlapping the start time on cards. Make Up/Down cursor column-aware in the grid instead of linear through the flat list.
Acceptance Criteria
- #1 pre-game card status no longer overlaps
- #2 Up/Down navigates grid by column/row
Final Summary
Dashboard polish: grid-aware cursor navigation; confirmed pre-game cards no longer overlap.
What:
- AC#2: Up/Down now move by visual grid ROW (keeping column) instead of ยฑ1 through the flat list. nav.go reconstructs the rendered grid (gridRows, mirroring bodyLines' per-section sub-grids of a.columns()) and moveCursorVert steps rows, clamping the column for short/last rows. Arrow โ/โ move horizontally; they precede the league-nav cases (which also bind the arrows) so on the dashboard arrows move the cursor while tab/shift+tab still switch leagues.
- AC#1: pre-game card status already shows only 'โ ' (statusLine emits no detail pre-game), so there is no verbose ESPN text overlapping the time โ verified, no change needed.
Also (adjacent UX from this session): f/F now toggle favorites from the dashboard cursor and from standings rows; footer restored f/F and dropped 'a all' to de-crowd.
Tests: TestMoveCursorVertical (2-wide grid row movement + column clamp). go vet + go test ./... pass.