I try to put gameplay/simulation in FixedUpdate, and UI/rendering in Update, which implies that the "Correct" approach is to listen for inputs in Update, then use an EventWriter to inform the gameplay systems.
I was not aware that there was already a way to use EventReader for inputs, since the tutorials I saw only mentioned probing the input resource.
Clicking past the end screen is a known issue. It also allows people to keep a bunch of the "state" from the previous play through, which is unintended. I should have added a lock-out until at least the enemies are all cleared.