- Player sprite: render 32x32 char at 1 tile (TILE_PX) instead of
2x2 tiles (32*SCALE), matching NPC size on the game grid
- Wall data: completely rebuilt for both lab and town maps based on
actual PNG layouts. Previous walls blocked spawn point, NPC access,
and all exits. Now uses Set for O(1) collision lookups
- NPC dialog: was unreachable due to wall layout, causing player to
interact with workshop tiles instead. Fixed by opening corridors
- Canvas: use window.innerWidth/Height directly instead of
offsetWidth which gave wrong values before CSS recompute
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>