It's quite doable to run your own tileserver. You will have full control over the colors, and you can hide/show things to create a more minimalist map.
With some tricks you can 2x the resolution, making it look better than OSM on modern high-DPI screens. Tile generation is quite CPU heavy though, so you may have to pre-generate tiles ideally. So it is not that easy actually.
If going with client-side CSS rendering, I'd also play with CSS filter functions like contrast. The OSM tiles have always looked too low on contrast for me and thus difficult to read. Making them grayscale makes it worse.
Another option would be self hosting vector tiles(or finding the most generous free tier vector tiles) and using a custom grey scale styling that you could tweak to your needs.
Maputnik is a great tool for building custom vector stylesheets. (1)
Much ado about a single line of CSS :P I thought this would lead to something a little more interesting, like dynamically modifying/drawing the elements of the map or something. CSS filter is the way to go; and I'm glad to see that applying the filter on-the-fly client-side was performant!