Where the fix happens
At render time, and identically for all five: a campaign send, a sequence send, a test send, the editor preview, and a rendering requested over the API. Two consequences. Templates and campaigns saved long ago benefit without being touched — the HTML is rendered when it is sent, not when it is written. And nothing has to be fixed template by template.What it does to your document
- A
@media (prefers-color-scheme: dark)block is injected, with!importantdeclarations, so it can win over your inline styles without the product having to parse your HTML. - Outlook.com is handled through its own hooks (
[data-ogsc],[data-ogsb]), which it substitutes for classes in dark mode. - Gmail ignores
prefers-color-schemeentirely and applies its own partial inversion. It is covered differently: any element carrying a background is given an explicit text colour. - The
color-schemeandsupported-color-schemesmeta tags are added only when the dark rules ship with them — and removed when they cannot.
color-scheme tells the client "I handle
dark", so it stops applying its own inversion, which at least flipped background and text together.
With nothing behind the promise, the background darkens and the text stays black. The declaration
alone is worse than nothing.
An inline
!important puts your document out of reach. A rule in a <style> block beats an
inline style — but not an inline style that is itself !important. Against
style="background-color:#ffffff !important" the correction loses: the background stays white
while the text lightens. Drop the !important from your inline colours.It warns, it never blocks
When the renderer finds a risky pair, it corrects it and says so. No send is ever refused over contrast. Three notices exist: the contrast was corrected, it could not be verified, or acolor-scheme declaration was removed because the rules behind it could not be produced.