How the shuffle works
The app uses secure random bytes from crypto.getRandomValues
to create a seed,
which is then hashed into a 32-bit number. That number seeds a Fisher–Yates shuffle
via a xorshift32 PRNG to ensure a high-quality, unpredictable shuffle.