- extract the 365d fetch+render into heatSection() so ?stats and the home stats widget share it (no duplicated async loader) - home order: stats cards + top 3 -> watch-time heatmap (past year, month labels, scrollable) -> history widget
- extract the 365d fetch+render into heatSection() so ?stats and the home stats widget share it (no duplicated async loader) - home order: stats cards + top 3 -> watch-time heatmap (past year, month labels, scrollable) -> history widget