// Leaflet JS - note the *className* attribute
// [...]
L.tileLayer('https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
className: 'map-tiles'
}).addTo(map);
// [...]
/* Only the necessary CSS shown */
:root {
--map-tiles-filter: brightness(0.6) invert(1) contrast(3) hue-rotate(200deg) saturate(0.3) brightness(0.7);
}
@media (prefers-color-scheme: dark) {
.map-tiles {
filter:var(--map-tiles-filter, none);
}
}
/** The non-dark mode map will be untouched since it's not styled. **/
/**
Source: https://github.com/pkrasicki/issviewer
Discovered via: https://github.com/openstreetmap/openstreetmap-website/issues/2332
**/
I've found a couple, but both require some sort of paid subscription.
I didn't look into the subscription(s) as I'm not personally using them (nor will I spend time to research them), but it may lead you to some option. It is possible to generate your own tile maps and serve them yourself, though I suspect that unless you know you'll only be supporting a small geographic area (and intend to keep up with geographic updates/changes) that could be problematic too.
Depending on the device(s) that will be viewing the map, CPU should, under normal conditions, be minimal since modern web browsers take advantage of GPU rendering of CSS when available. This method is definitely a tradeoff of aesthetics and resources, however.
Here's a video of one person having CPU resource issues while using CSS' filter() properties. Always good to keep these scenarios in mind.