Previously, random selection would always be done at a *set* level. The
final operation of a random action would be "select the user's
recommended difficulty from this randomly selected set".
This makes no sense when sets are not grouped together at song select.
In fact, it is completely broken with the previous commit which adds
group-isolated random support – if we're grouping by difficulty and the
user's recommendation is not in the current group it would throw the
user into another group unexpectedly.
This fixes the issue by splitting out the random implementation into two
separate pathways depending on the carousel display mode.
- Enforces minimum width on accuracy / max combo displays which could
previously look broken in CJK languages, thus fixing
https://github.com/ppy/osu/issues/33434. Minimum sizes were chosen to
accomodate what could be considered reasonably possible with some
leeway on top.
- Fixes hilariously broken logic that was supposed to highlight perfect
/ FC / max combo scores in green but instead did nothing due to two
disparate bugs in a single line of code.
- Extends the highlighting logic to also apply to 100% accuracy because
web does this and I think it's nice.