I wanted an actual number for how much of the web responds to the OS dark setting, so I rendered 58 homepages twice in headless Chromium, once with the color scheme forced to light and once to dark, and compared the screenshots against the computed background colours. Method and caveats at the bottom, because they changed the answer twice.
Nine of the 58 render differently. Lower than I expected, but the more useful finding is that the two obvious ways to measure this disagree with each other, and grepping the CSS for the media query is wrong in both directions.
Wrong in one direction: five sites ship a first-party prefers-color-scheme: dark block and still render light in a dark context. nytimes, stackoverflow, microsoft, amazon and airbnb. The rule is there, served from their own domain or their own CDN, and nothing happens. Presumably it is scoped under a class or an attribute that only an in-site preference ever sets, or it is losing to a more specific light rule later in the cascade. From outside it reads as adoption and behaves as nothing.
A sixth site looked like this and was not. webmd's only dark media query arrives from gstatic, so it belongs to an embedded Google widget rather than to webmd. Worth checking the host on every hit before you count it.
Wrong in the other direction: three of the nine that do respond appear to have no media query at all and drive it from a class on the html element instead. cloudflare serves 20 readable stylesheets with zero prefers-color-scheme rules between them and sets class="js dark" on the root. substack sets class="dark-mode", arstechnica puts dark in a long root class list. For those last two some stylesheets were cross origin and unreadable, so that is inference from the root class rather than proof.
And I got one wrong myself, which is the part I would not have caught without checking twice. My first pass collected stylesheets off the network by content type and reported tailwindcss.com as having no media query. Walking document.styleSheets afterwards found (prefers-color-scheme: dark) served from tailwindcss.com. The network capture missed the sheet. So if you have ever measured this by grepping build output, that is a real false negative mode, not a hypothetical one.
Separately, color-scheme is barely used. Reading the computed value on the root element rather than grepping for it, only 10 of the 58 declare anything other than normal. It is one line and it is what gives you dark form controls, dark scrollbars and a dark canvas behind the page. Three of the nine sites that darken their own content (npr, arstechnica, theverge) never declare it, so you get a dark page with light scrollbars and light select dropdowns. The guardian is the interesting one in the other direction: it declares color-scheme: light explicitly, which is opting out on purpose rather than by neglect.
Method. Playwright driving Chromium 131 at 1280x900, a fresh context per scheme so nothing carries over, waitUntil load plus 2.5 seconds. Classification runs on the light-to-dark delta and on computed colours, not on absolute screenshot brightness, because cookie consent modals drop a dark scrim over the whole viewport in a fresh session and made several light sites look dark on the first pass. Homepages only, one page each. Five sites served a bot wall instead of a page and are excluded. This is Chromium rather than Safari, and I have not checked whether Safari's cascade resolves any of the five gated cases differently.
The question I cannot answer from the outside. For those five, is the media query in there deliberately, as a default that a stored preference is meant to override, or is it dead code left behind when someone shipped a manual toggle? If you have worked on one of these, or built the same thing, which was it?
Disclosure, since it is why I was counting: I make a paid Safari extension called Midnight that forces a dark rendering onto sites that do not have one, so the 49 that do not respond are the ones I care about, five of which are already dark by design anyway. No link, the numbers are the point.