Provably fair
Before each round the server commits to a random seed by publishing sha256(serverSeed). After it settles the server reveals the seed, and the roll is sha256(serverSeed:clientSeed:nonce) mapped into [0,1). In a coinflip the creator wins when the roll is below their value share; in an upgrade or a wheel spin you win when the roll is below your win chance. Everything below is recomputed in your browser — nothing here trusts the server.