Implement dark-mode (color-scheme) settings per user
Closes #3606655
Each account picks a color scheme on its profile form: Light, Dark or System. A color_scheme base field stores it.
The <html> element carries data-color-scheme="auto" on every page, for every account and every theme. The markup does not vary, so it declares no cacheability. It is also the fallback without JavaScript.
A customized preference travels in the Drupal.colorScheme cookie, holding light or dark. Absence of the cookie means auto. A script in the head reads the cookie and overrides the attribute before the stylesheets are requested.
ColorSchemeCookieSubscriber compares the cookie against the current user and returns early when they agree. On a difference it writes the cookie and fires the page cache kill switch, which keeps Set-Cookie off cacheable responses. Login seeds the cookie, logout clears it. hook_user_update carries a saved value to the response of the save.
The earlier user.color_scheme cache context is removed. It fragmented Dynamic Page Cache, and adding it only for customized values cannot be represented in VariationCache.
Generated with the help of an LLM.