You opened the HTML file directly (file://). Browsers block loading slate data that way.
Use the local server instead:
cd C:\Users\allmi\mlb-hr-cheatsheet-web python fetch-nfl-research-slate.py --season 2026 --week 1 python serve-research.py
Then open in your browser:
http://localhost:8080/nfl-research/index.html
Offense vs what the defense allows — green means the player beats the defensive average.
Player log (left): each game colored vs the player's season average — green above, red below. Defense log (right): what the D allowed to that position slot each week, colored vs league average — green gives up more (matchup to attack). Avg rows: player avg colored vs this defense; defense avg colored vs league. Deeper color = bigger edge; near-even games stay neutral. The box under each card shows the sportsbook expected lines.