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

  1. 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.
  2. 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.
  3. 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.
  4. 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.