Modo escuro em e-mail HTML: monte a paleta em pares e saiba quem lê o seu CSS
Por Mara Levin · Atualizado em 7 de outubro de 2026 · Dados do caniemail e da Litmus lidos nesse dia
A resposta curta
Projete cada cor como um par, um valor para o modo claro e outro para o escuro, e confira o contraste dos dois. Declare com color-scheme que o e-mail aceita os dois modos, escreva o par escuro dentro de @media (prefers-color-scheme: dark) e, para os clientes que ignoram essa regra, escolha cores que aguentem a inversão automática. Os números sobre quem suporta o quê vêm do caniemail.com e da tabela de dark mode da Litmus (fevereiro de 2025); os contrastes foram calculados com a fórmula de luminância relativa do WCAG.
Três grupos de clientes, três estratégias
A tabela da Litmus separa os clientes pela reação ao modo escuro: quem não mexe no e-mail, quem inverte as cores em parte (só fundos claros viram escuros) e quem inverte tudo, inclusive fundos que você já tinha feito escuros. Cruzando isso com a capacidade de ler o seu CSS, o que importa na prática são três grupos.
| Grupo | Clientes | Consequência para o design |
|---|---|---|
| Respeitam o seu CSS | Apple Mail (macOS), Mail do iPhone e iPad, Samsung Email, Outlook.com e apps do Outlook (estes via atributos data-og) | Você pode escrever as cores do modo escuro e trocar imagens. |
| Invertem sozinhos e ignoram o seu CSS | App do Gmail (iOS: inversão completa; Android: parcial), Outlook 2021 e Office 365 para Windows, Windows Mail | Só uma paleta que aguente a inversão protege o layout. |
| Não alteram o e-mail | Gmail no navegador, AOL, Yahoo | O e-mail aparece como no modo claro, mesmo que o app esteja escuro. |
Fonte: tabela de compatibilidade da Litmus (fevereiro de 2025) e as fichas do caniemail para prefers-color-scheme. Os clientes mudam de versão; confirme na sua própria lista. No Apple Mail, a Litmus faz uma ressalva: sem os metatags de modo escuro ele não altera as cores, e com os metatags mas sem estilos escuros ele aplica uma inversão parcial.
O que a documentação diz sobre declarar o suporte
O blog do WebKit, em Dark Mode Support in WebKit, explica que o Safari não escurece conteúdo da web automaticamente: o documento precisa declarar color-scheme. Para e-mail, o mesmo texto afirma que a propriedade informa ao Mail qual esquema usar e pode afetar as transformações automáticas; declarar light dark avisa que a mensagem tem estilo próprio para o modo escuro, e light only pede ao Mail que não transforme uma mensagem pensada só para o modo claro. A ficha de color-scheme do caniemail registra suporte no Apple Mail (só no elemento raiz), no Samsung Email e no Thunderbird, e nenhum no Gmail, no Outlook para Windows e no Outlook.com. A ficha do metatag mostra suporte no Apple Mail para macOS, mas não no iOS; por isso o CSS em :root acompanha o metatag.
<head>
<meta charset="utf-8">
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<style>
:root { color-scheme: light dark; supported-color-schemes: light dark; }
</style>
</head> Monte a paleta em pares
O erro mais comum de quem começa é inverter as cores de cabeça: o fundo claro vira escuro e o texto escuro vira claro, e ninguém confere o resultado. Faça o contrário. Liste cada papel de cor do e-mail (fundo, cartão, texto, texto de apoio, link, botão, erro) e defina o valor claro e o escuro lado a lado. O WCAG 2.2, no critério 1.4.3 Contraste (mínimo), exige pelo menos 4,5:1 para texto comum; a tabela abaixo mostra um conjunto que passa nos dois modos.
| Papel | Modo claro | Contraste | Modo escuro | Contraste |
|---|---|---|---|---|
| Página e texto principal | #333333 sobre #f5f5f5 | 11,59:1 | #f2f2f2 sobre #1a1a1a | 15,55:1 |
| Cartão e texto principal | #333333 sobre #ffffff | 12,63:1 | #f2f2f2 sobre #2d2d2d | 12,30:1 |
| Texto de apoio | #5b6470 sobre #ffffff | 6,00:1 | #b3b3b3 sobre #2d2d2d | 6,57:1 |
| Link no texto | #0a58ca sobre #ffffff | 6,44:1 | #7aa7ff sobre #2d2d2d | 5,77:1 |
| Botão (texto sobre fundo) | #ffffff sobre #0a58ca | 6,44:1 | #1a1a1a sobre #7aa7ff | 7,29:1 |
| Mensagem de erro | #b3261e sobre #f5f5f5 | 6,00:1 | #ff8a80 sobre #1a1a1a | 7,62:1 |
Contrastes calculados com a fórmula do WCAG. Note que o azul de link do modo claro (#0a58ca) cai para 2,70:1 sobre #1a1a1a e por isso não pode ser reaproveitado: no modo escuro o link precisa de um azul mais claro.
Com a tabela pronta, o CSS é só tradução. Cada papel vira uma classe, e a media query reescreve o valor do par escuro com !important, porque o estilo inline do modo claro tem prioridade. Para o Outlook.com e os apps do Outlook, a Litmus recomenda duplicar as mesmas regras com os prefixos [data-ogsc] (texto) e [data-ogsb] (fundo); a ficha do caniemail confirma que esses clientes adicionam atributos data-og ao e-mail em modo escuro.
<style>
@media (prefers-color-scheme: dark) {
.fundo { background-color: #1a1a1a !important; }
.card { background-color: #2d2d2d !important; }
.texto { color: #f2f2f2 !important; }
.apoio { color: #b3b3b3 !important; }
.link { color: #7aa7ff !important; }
.botao { background-color: #7aa7ff !important; color: #1a1a1a !important; }
.erro { color: #ff8a80 !important; }
}
/* Outlook.com e apps do Outlook: mesmas regras com atributos data-og */
[data-ogsb] .fundo { background-color: #1a1a1a !important; }
[data-ogsb] .card { background-color: #2d2d2d !important; }
[data-ogsc] .texto { color: #f2f2f2 !important; }
[data-ogsc] .link { color: #7aa7ff !important; }
</style> Repare que o botão não só troca de cor: a cor do texto também. Um botão azul-claro com texto branco daria cerca de 2,4:1, por isso o texto passa a #1a1a1a. Trocar o fundo sem revisar o texto é a causa mais frequente de botões ilegíveis em modo escuro.
Evite os extremos
Em um artigo de outubro de 2025, a Email on Acid observa que o Apple Mail tende a inverter o preto puro (#000000) e o branco puro (#FFFFFF) sem olhar o contraste, e sugere valores quase idênticos, como #000001 e #FFFFFE, para evitar surpresas. A Litmus confirma o lado do branco: no Apple Mail, fundos #ffffff puros são invertidos quando o metatag está presente. Por isso a paleta acima usa #f5f5f5 e #333333 em vez dos dois extremos.
Logos, ícones e imagens
Um logo com texto escuro e fundo transparente é legível no modo claro e some no escuro. A Email on Acid lista três saídas: usar PNG transparente com cuidado, adicionar um contorno ou brilho claro, ou criar uma versão do logo para o modo escuro e trocá-la. A Litmus acrescenta que, para clientes com pouca margem de personalização, como o app do Gmail e o Outlook 2019 para Windows, um contorno semitransparente em volta do PNG ajuda.
<style>
.logo-escuro { display: none; }
@media (prefers-color-scheme: dark) {
.logo-claro { display: none !important; }
.logo-escuro { display: block !important; max-height: none !important; }
}
</style>
<img class="logo-claro" src="https://exemplo.com.br/img/logo-texto-escuro.png" width="150" alt="Loja Exemplo">
<!--[if !mso]><!-->
<img class="logo-escuro" src="https://exemplo.com.br/img/logo-texto-claro.png" width="150" alt="Loja Exemplo" style="display:none; max-height:0;">
<!--<![endif]--> A troca por classes funciona nos clientes que leem a media query. A alternativa com <picture> e media="(prefers-color-scheme: dark)", que o WebKit mostra para páginas web, não é segura em e-mail: a ficha de picture informa que o Gmail troca as tags picture e source por u, e que o Apple Mail às vezes remove a tag. Quanto ao formato, a ficha de SVG avisa que o Gmail renderiza SVG, mas rasterizado como PNG, então um logo vetorial não escala por lá; mantenha PNG com o dobro da largura para telas de alta densidade.
Frameworks e o modo escuro
Nenhum framework resolve o modo escuro por você. A documentação do MJML que consultei não traz componente próprio para isso, de modo que as regras vão em mj-style (que aceita CSS livre, no head ou inline) e o metatag, em um mj-raw. A documentação do Maizzle descreve a variante dark: do Tailwind, que compila para @media (prefers-color-scheme: dark), e as variantes ogsc: e ogsb: para o modo escuro do Outlook.com; ela também avisa que empilhar dark: com ios: gera at-rules aninhadas, que o Gmail trata descartando a tag style inteira, e recomenda separar esses utilitários em um bloco Tailwind próprio. Para a comparação entre os dois, veja MJML contra React Email.
Testando o resultado
- Teste em aparelhos reais. Ative o modo escuro no celular e no computador, envie a mensagem para contas do Apple Mail, do Gmail e do Outlook e abra nos dois tipos de tela.
- Teste a inversão. Se o Gmail para iOS faz inversão completa, o que você vê ali é a paleta "no escuro" que você nunca desenhou. Confirme se texto, link e botão continuam legíveis.
- Use previews para ampliar, não para decidir. A Litmus e a Email on Acid mostram o modo escuro de vários clientes; confira em cada página de preços como o plano conta as visualizações antes de contratar, e leia o comparativo entre as duas.
- Documente. Anote cliente, modo, data e o que ficou imperfeito.
Para o restante do CSS que afeta estas decisões, veja o guia de CSS em e-mail; para contraste e texto alternativo, o guia de acessibilidade; para o panorama dos motores de renderização, o guia de compatibilidade entre clientes.
Perguntas frequentes
O Gmail respeita @media (prefers-color-scheme)?
Não. O caniemail marca a media query como não suportada em todas as variantes do Gmail (web, iOS e Android), e a tabela de fevereiro de 2025 da Litmus descreve o app do iOS com inversão completa e o do Android com inversão parcial, ambos sem suporte a @media nem a [data-ogsc]. Para o Gmail, o que protege o e-mail é a paleta que continua legível quando invertida.
Posso usar variáveis CSS para trocar de tema?
Em e-mail, não como base. A ficha de variáveis CSS do caniemail mostra suporte no Apple Mail e no Samsung Email e nenhum no Gmail, no Outlook para Windows, no Outlook.com e no Yahoo. O exemplo do blog do WebKit usa variáveis porque é para páginas web; no e-mail, escreva regras de classe duplicadas dentro da media query.
Vale a pena fazer um logo separado para o modo escuro?
Vale para o logo que aparece em todo envio. A Email on Acid chama de "geralmente a melhor solução" criar uma versão do logo para o modo escuro e trocar as imagens, mas a troca só acontece nos clientes que leem a media query. Como o Gmail não a lê, o logo padrão precisa continuar legível nos dois fundos, com um contorno claro fino se for necessário.
Como saber qual modo meus assinantes usam?
Nenhuma fonte desta página mede a sua lista. A Litmus publica uma estimativa de mercado, de que em média 35% das aberturas rastreadas em 2022 usaram o modo escuro, mas o número é agregado e antigo. O mais confiável é olhar a distribuição de clientes de e-mail nos relatórios da sua própria ferramenta de envio e testar primeiro os dois ou três clientes que mais aparecem.