Technical notes
Input debouncing
The debounce() routine addresses the first interaction problem: a mechanical press can create several electrical transitions. Input conditioning belongs before game logic, where duplicate events could otherwise become duplicate moves.
Cell selection
traverseMatrix() and selectLED() separate matrix navigation from LED cell selection.
Win detection
checkWin() evaluates the game board separately from pixel updates.
