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-nhl-research-slate.py --date 2026-09-29 python serve-research.py
Then open in your browser:
http://localhost:8080/nhl-research/index.html
Skater vs what the opponent allows to that line slot — green means the player beats what that defense gives up.
Player log (left): each game colored vs the player's own average — green above, red below. Opponent log (right): what that team allowed to this line slot each game, colored vs league average — green gives up more (matchup to attack). Avg rows: player avg colored vs this opponent; opponent avg colored vs the league. Deeper color = bigger edge; near-even games stay neutral. Line slots (C1, D2, …) are ranked by ice time — the NHL publishes no depth chart, and the coach's top line is whoever he plays the most.