Really nice-looking entry. The torch bar against "way home" is a clean core decision, and the iPhone-size layout fits with the arrow pad in reach. Two things I found, both about the daily cave:
1. On itch the shared light can never turn on, but the intro still promises it. fi() asks window.claude for "db"/"user", and window.claude only exists inside Claude's own artifact runtime, so on itch it's always missing and the status goes straight to "off". So every itch player reads "Leave a light for whoever comes next... The sconces you light stay lit for strangers." with "Shared light isn't available here" right under it (same on desktop and iPhone 13 size). If you can't hook up a real backend before judging, swapping the headline and that sentence for the solo version whenever the status is "off" would stop the game from promising something it can't do here.
2. "Everyone gets the same cave today" only holds inside one time zone. The cave key comes from IP(), which builds the date with getFullYear/getMonth/getDate in the player's local time. I loaded it at the same moment with three time zones: Chicago got Cave No. 3 (Thu, Oct 22), London and Tokyo both got Cave No. 4 (Fri, Oct 23). Once shared light works, the runs/sconces are filed under that same day key, so a US evening player and a European player at that moment would be lighting different caves. Building the key from the UTC date (new Date().toISOString().slice(0, 10)) would give everyone one cave per day.
0 console errors on my runs.