The basic issue is that CSS colors are defined in terms of relative brightness of the monitor, and not within of a proper colorspace. Most browsers assume sRGB, but many users don’t even have that.
In sRGB, a contrast of (102,102,102) to (255,255,255) is a very pleasant, and perfectly readable contrast.
But many users are on shitty 6-bit color depth 100 nits or less displays.
Changing contrast in hardware down is always a shitty option.
The solution is to handle this in hardware — artifically increase contrast and destroy image quality for people on shitty systems.
Or we simply fix browsers.
Because if it’s a choice between blinding users on most mobile devices, and most higher end desktop computers, or blinding those who have cheap hardware, most developers will choose by who is actually willing to pay.