Closes https://github.com/ppy/osu/issues/31909.
Previously: https://github.com/ppy/osu/pull/30062.
Happening because of rounding errors - in this case the beat index
pre-flooring was something like a 0.003 off of a full beat, which would
get floored down rather than rounded up which created the discrepancy.
But also we don't want to round *too* far, which is why this
frankenstein solution has to exist I think. This is probably all
exacerbated by stable not handling decimal control point start times.
Would add tests if not for the fact that this is like extremely annoying
to test.
If one of these elments is hidden, the following spacing element is
expected to be hidden too. Simplest is to use margins.
Old implementation already did this.
If style changes, then we also need to re-validate mods. Thus, we should
just update the entire selection anyway, and merge the "gameplay state"
into it for simplicity.
I believe once upon a time the `SelectedRoom` bindable used to be bound
to `RoomManager.JoinedRoom` or similar. But now it's effectively private
to the lounge subscreen and so a lease is unnecessary.