Argon2id Password Hashing
Passwords are hashed with 256 MiB memory cost, 4 iterations, 2 threads. Even with our entire users table in hand, recovering a single password requires infeasible compute. Silent rehash upgrades old hashes on next login — no user ever sees a "please reset" prompt.