That reminds me. If I don't have the browser window full-width then the 'flip side' text down the left hand edge of the screen goes underneath the 50 face down cards, but when I try to click on the cards in the first column, it thinks I'm clicking on the 'flip side' text, and takes me to a new page, rather than toggling the selection state of the card I clicked on. Took me a while to figure out what was wrong, but until I did it was very confusing.
Just make sure that it goes in this order:
1. show hash of server secret to user
2. allow user to select their secret
3. shuffle cards using server secret and client secret
If you do 2. before 1. then you could be selecting a server secret that makes the client secret bad for the user. Doing 1 before 2 is required if we're to know the game is fair. When you do it that way, we don't care how you pick the server secret, and so there's no need to pre-generate anything. Just pick a pseudorandom server secret, show us its hash, allow us to pick our own secret, then use both as the seed for all in-game randomness.
You don't even need to use external sources of randomness like the block hash then. We don't know the server secret, so can't cheat. And you don't know what secret the client is going to pick, so you can't cheat either.
Neat, huh?