Paletas de cores para dark mode que realmente funcionam

Escolher cores escuras de que você goste leva dez minutos. Fazê-las sobreviver a uma interface real — estados desabilitados, bordas em duas superfícies, um destaque que ainda passe no contraste — é onde as coisas dão errado. Este artigo foca nessa parte, com números de paletas reais em produção.

Atualizado 2026-07-27

O dark mode deve ser preto puro?

Quase nunca, e vale a pena entender o porquê através de números, e não apenas como uma regra geral. Aqui estão os fundos dark e as superfícies de card de cinco paletas distintas em produção, em HSL:

FundoCardMatiz neutro
Industrial quente30 8% 10%24 7% 14%Laranja-acastanhado quente
Produto neutro0 0% 10%0 0% 15%Cinza verdadeiro
Azul arquivo222 31% 11%222 34% 15%Azul profundo
Verde suave128 40% 8%137 26% 11%Verde floresta
Dashboard Earth36 10% 10%36 7% 14%Areia quente
Fundos dark e superfícies de card de cinco design kits, extraídos de seus arquivos de tokens ativos. Valores em HSL: matiz, saturação, luminosidade.

Três padrões, todos consistentes, nenhum deles acidental.

  • Nada está com 0% de luminosidade. O tom mais escuro é 8%. O preto puro é o único valor sem margem abaixo dele — no momento em que você precisa de uma superfície *abaixo* do fundo, não há para onde ir.
  • Os cards são mais claros que o fundo, por 3 a 5 pontos. Em interfaces escuras, o que está elevado é mais claro. Isso inverte o instinto do light mode, onde um card costuma ser o elemento mais claro sobre uma página colorida.
  • Apenas um dos cinco é cinza puro. Os demais possuem matiz — 30, 222, 128, 36 — geralmente puxados para a cor de destaque. Um neutro escuro com matiz parece planejado; um sem matiz parece um padrão, porque ele é o padrão.

O único caso para o quase-preto

Telas OLED realmente consomem menos energia em #000000, e uma interface de mídia ou fotografia pode querer que a moldura desapareça. Essa é uma troca deliberada em favor de abrir mão de uma escala de elevação, e funciona quando o conteúdo fornece o contraste. Não é um padrão de uso geral, nem é o que a maioria das pessoas quer quando busca o preto.

O modo escuro não é uma inversão

A maneira mais rápida de criar um dark mode ruim é inverter a luminosidade de cada valor do light mode. Quatro coisas específicas quebram, aproximadamente nesta ordem:

  1. As sombras param de funcionar. Uma sombra é a escuridão projetada sobre uma superfície mais clara. Em uma superfície escura, não resta nada para escurecer, então cada pista de elevação que você tinha desaparece silenciosamente e a interface fica plana.
  2. O destaque falha no contraste. Uma cor de marca em tom médio saturado que funciona bem no branco costuma ser escura demais contra um fundo quase preto. Inverter os neutros não a afeta, então ela falha de forma sutil, em vez de óbvia.
  3. As bordas somem ou gritam. Uma borda no light mode é uma linha ligeiramente mais escura. Invertida, ela se torna uma linha ligeiramente mais clara — que ou desaparece contra o card ou brilha contra o fundo, dependendo de onde estiver.
  4. Estados desativados e silenciados colapsam. No light mode, estes são cinzas mais claros. Invertidos, tornam-se cinzas escuros sobre um fundo escuro, e o "silenciado" vira "invisível".
Uma paleta escura é um segundo design, não um filtro aplicado ao primeiro.

Elevação sem sombra

Como as sombras não estão disponíveis, interfaces escuras expressam profundidade através da luminosidade da superfície. É isso que a diferença entre fundo e card na tabela acima está fazendo: cada nível acima na pilha é um nível acima em luminosidade.

Você precisa de pelo menos três níveis, e vale a pena nomeá-los em vez de improvisar: o fundo da página, uma superfície elevada (cards, painéis) e uma superfície de sobreposição (popovers, dropdowns, diálogos) que fica acima de ambas. Espaçá-los entre 3 a 5 pontos de luminosidade mantém as fronteiras legíveis sem transformar a tela em listras. Abaixo de 3 pontos, os níveis deixam de ser distinguíveis em brilho normal; muito acima de 6, a superfície superior começa a parecer um painel de light mode que alguém inseriu ali.

Superfície vs superfície tonal

Alguns sistemas distinguem uma superfície elevada neutra de uma *tonal*, que mistura um pouco da matiz da marca na elevação. Ambas são legítimas. A versão tonal faz com que toda a interface pareça deliberadamente colorida, em vez de "cinza com um destaque"; a versão neutra preserva o significado da cor para as coisas que precisam dela. Escolha uma e aplique em tudo — misturá-las é o que faz um tema escuro parecer dois temas diferentes.

Cores de destaque precisam mudar

Observe novamente as cores primárias daqueles mesmos cinco kits: 12 71% 46%, 46 85% 60%, 225 63% 80%, 114 47% 50%, 23 92% 60%. Todas são tons claros ou médios. Nenhuma é uma versão profunda e saturada da matiz, porque uma cor profunda e saturada em uma superfície quase preta é difícil de ler e cansativa de olhar.

A regra geral é que um destaque de light mode deve clarear e, geralmente, dessaturar para o dark mode. Clarear garante contraste; dessaturar impede que a cor "vibre" contra o neutro escuro, que é o efeito que torna alguns temas escuros fisicamente cansativos. E o destaque precisa de sua própria decisão de primeiro plano: uma cor brilhante o suficiente para ser lida no escuro costuma ser brilhante o suficiente para exigir texto *escuro* sobre ela, o inverso da combinação do light mode.

Verifique ambas as direções contra uma meta de contraste. O texto do corpo sobre o fundo é o óbvio; os dois que costumam ser esquecidos são o texto silenciado em um card e o primeiro plano do destaque sobre o próprio destaque.

Cinco amostras não são uma paleta

É aqui que a maioria das galerias de paletas te deixa. Uma linha de cinco hexes indica o clima, mas não responde a quase nenhuma das perguntas que uma tela real faz: qual a cor de uma borda em um card, como fica o texto silenciado em uma sobreposição, como é um botão destrutivo quando está desativado, qual a cor do anel em um input com foco.

Token specimen · real values

Ambient Sage

Live render

Ambient Sage's actual tokens — the same values its exports use.

Color tokensSemantic roles with HEX / HSL / CMYK

Color tokens

Ambient Sage

dark · HEX · HSL · CMYK

Core

#1A1C17

background

H 84 · C7, 0, 18, 89

#E3E4DC

foreground

H 68 · C0, 0, 4, 11

#242620

card

H 80 · C5, 0, 16, 85

#292B24

muted

H 77 · C5, 0, 16, 83

#35372E

border

H 73 · C4, 0, 16, 78

Brand

#FEE951

primary

H 53 · C0, 8, 68, 0

#1A1C17

primary-fg

H 84 · C7, 0, 18, 89

#2F3129

secondary

H 75 · C4, 0, 16, 81

#F7E464

accent

H 52 · C0, 8, 60, 3

#FEE951

ring

H 53 · C0, 8, 68, 0

Semantic

#CC3333

destructive

H 0 · C0, 75, 75, 20

#FFFFFF

destructive-fg

H 0 · C0, 0, 0, 0

#66BB6A

success

H 123 · C45, 0, 43, 27

#FFA726

warning

H 36 · C0, 35, 85, 0

#FFFFFF

muted-fg

H 0 · C0, 0, 0, 0

Charts

#FEE951

chart-1

H 53 · C0, 8, 68, 0

#64B5F6

chart-2

H 207 · C59, 26, 0, 4

#81C784

chart-3

H 123 · C35, 0, 34, 22

#F48FB1

chart-4

H 340 · C0, 41, 27, 4

#FFCC80

chart-5

H 36 · C0, 20, 50, 0

Um conjunto escuro completo: funções nomeadas em vez de amostras, cada uma com seu hex. Cada uma delas é uma pergunta que um componente faria à pessoa — ou ao agente — que o está construindo.

A lista de funções é a mesma em ambos os modos, que é o ponto: background, foreground, card, card-foreground, popover, popover-foreground, muted, muted-foreground, primary, primary-foreground, secondary, accent, destructive, border, input, ring, além de séries de gráficos. Defina-os uma vez por modo e cada componente se resolve sem que ninguém precise escolher. Ignore isso e cada nova tela escolherá cores diferentes. A lista completa e a finalidade de cada função estão em explicação sobre design tokens de cores semânticas.

Ambient Sage

Live render

Rendered from the kit's actual tokens, fonts, and treatments

Ambient Sage/Dashboard
Search...⌘K
AS

Dashboard

Welcome back — here's how Ambient Sage is performing today.

Jan 1 – Jan 30, 2026
Overview
Analytics
Reports
Notifications

Active users

15.1k

+5%

Trending up this month

vs. previous 30 days

MRR

$49.1k

+3%

Strong recurring growth

Net of churn

Retention

89%

+2%

Engagement above target

Rolling 28-day window

NPS

69

+3

Meets growth projections

Survey · n=1,204

Total revenue

Last 12 months

$49.1k+18.2%

12m30d7d
JanFebMarAprMayJunJulAugSepOctNovDec

Recent sales

You closed 265 deals this month.

AR

Alex Rivera

alex@ambientsage.com

+$1,999.00
MO

Mira Okonkwo

mira@ambientsage.com

+$39.00
JF

Jonas Feld

jonas@ambientsage.com

+$299.00
SQ

Sana Qureshi

sana@ambientsage.com

+$99.00
TL

Theo Lindgren

theo@ambientsage.com

+$2,400.00

Recent transactions

View all
CustomerStatusDateAmount
AR

Alex Rivera

Founder & CEO

Paid2m ago$1,999.00
MO

Mira Okonkwo

Head of Product

Pending1h ago$39.00
JF

Jonas Feld

Design Lead

Processing3h ago$299.00
SQ

Sana Qureshi

Engineering Lead

PaidYesterday$99.00
TL

Theo Lindgren

Brand Director

Refunded2d ago$2,400.00

Typography

Plus Jakarta Sans

Color system

28 semantic roles, light + dark

Agent outputs

DESIGN.md, CSS, Tailwind, shadcn

As mesmas funções renderizadas como uma interface. Uma paleta só é testável quando está em uma tela com hierarquia real.

Quatro paletas escuras completas e o que as diferencia

Tudo acima é uma regra. Estes são quatro conjuntos escuros que a seguem, escolhidos porque resolvem o mesmo problema de maneiras visivelmente diferentes. Leia o par background e card em cada um: esse intervalo é o modelo de elevação, e é a decisão que mais determina se uma UI escura parece planejada ou apenas invertida.

Preview unavailable here. Browse complete kits in the kit gallery.

Token specimen · real values

Files Archival

Live render

Files Archival's actual tokens — the same values its exports use.

Color tokensSemantic roles with HEX / HSL / CMYK

Color tokens

Files Archival

dark · HEX · HSL · CMYK

Core

#191919

background

H 0 · C0, 0, 0, 90

#FAF6F3

foreground

H 26 · C0, 2, 3, 2

#242424

card

H 0 · C0, 0, 0, 86

#2A2A2A

muted

H 0 · C0, 0, 0, 84

#333333

border

H 0 · C0, 0, 0, 80

Brand

#4A6FE0

primary

H 225 · C67, 50, 0, 12

#FFFFFF

primary-fg

H 0 · C0, 0, 0, 0

#3D2B2E

secondary

H 350 · C0, 30, 25, 76

#F5DB7B

accent

H 47 · C0, 11, 50, 4

#4A6FE0

ring

H 225 · C67, 50, 0, 12

Semantic

#C9362A

destructive

H 5 · C0, 73, 79, 21

#FFFFFF

destructive-fg

H 0 · C0, 0, 0, 0

#2D7A4F

success

H 146 · C63, 0, 35, 52

#D4921A

warning

H 39 · C0, 31, 88, 17

#9A8E88

muted-fg

H 20 · C0, 8, 12, 40

Charts

#4A6FE0

chart-1

H 225 · C67, 50, 0, 12

#E29AA5

chart-2

H 351 · C0, 32, 27, 11

#F5DB7B

chart-3

H 47 · C0, 11, 50, 4

#E05040

chart-4

H 6 · C0, 64, 71, 12

#D2BDB6

chart-5

H 15 · C0, 10, 13, 18

A abordagem arquivística: um fundo mais quente e elevado que nunca chega ao preto, com a separação feita por bordas em vez de um grande salto de superfície.
Preview unavailable here. Browse complete kits in the kit gallery.

Token specimen · real values

The Social Club

Live render

The Social Club's actual tokens — the same values its exports use.

Color tokensSemantic roles with HEX / HSL / CMYK

Color tokens

The Social Club

dark · HEX · HSL · CMYK

Core

#2E2C1F

background

H 52 · C0, 4, 33, 82

#F4F0E4

foreground

H 45 · C0, 2, 7, 4

#3C3A29

card

H 54 · C0, 3, 32, 76

#3C3A29

muted

H 54 · C0, 3, 32, 76

#4E503A

border

H 65 · C2, 0, 28, 69

Brand

#D6D84A

primary

H 61 · C1, 0, 66, 15

#1A1800

primary-fg

H 55 · C0, 8, 100, 90

#736E4E

secondary

H 52 · C0, 4, 32, 55

#D6D84A

accent

H 61 · C1, 0, 66, 15

#D6D84A

ring

H 61 · C1, 0, 66, 15

Semantic

#9C3C2C

destructive

H 9 · C0, 62, 72, 39

#FFFFFF

destructive-fg

H 0 · C0, 0, 0, 0

#2D702C

success

H 119 · C60, 0, 61, 56

#C47A15

warning

H 35 · C0, 38, 89, 23

#C4C1AE

muted-fg

H 52 · C0, 2, 11, 23

Charts

#D6D84A

chart-1

H 61 · C1, 0, 66, 15

#9C3C2C

chart-2

H 9 · C0, 62, 72, 39

#426063

chart-3

H 185 · C33, 3, 0, 61

#2D702C

chart-4

H 119 · C60, 0, 61, 56

#945C37

chart-5

H 24 · C0, 38, 63, 42

Um conjunto oliva e amarelo, que é o caso mais difícil aqui — um destaque de baixa luminosidade exige que seu primeiro plano seja verificado em ambas as direções, não assumindo que seja branco.

Como ler quatro paletas rapidamente

Ignore o destaque primeiro; é a parte que você lembrará e a que menos importa estruturalmente. Compare background com card para ver o modelo de elevação, depois muted-foreground com card para ver se o texto secundário sobrevive em uma superfície elevada. Essas duas comparações preveem a maior parte do comportamento da paleta em uma tela real.

Por que isso se tornou urgente

As interfaces são cada vez mais construídas por agentes de código a partir de briefings escritos, e o dark mode é a lacuna mais comum nesses documentos. Analisamos 299 arquivos DESIGN.md públicos — o arquivo que um agente de código lê antes de escrever a UI — e medimos a cobertura de cada um.

Proporção de arquivos
Sem dark mode69%
Sem funções de cores semânticas — apenas hexadecimais puros86%
Sem proibições, apenas preferências76%
Omissões em 72 arquivos DESIGN.md de design visual públicos. A detecção é baseada em cabeçalhos e deliberadamente generosa, portanto, estes valores representam o limite mínimo.

A consequência é previsível. Quando solicitado a criar uma variante dark sem diretrizes escritas, o agente inverte os tons de cinza — exatamente a ação que quebra os quatro pontos listados anteriormente. Ele produz algo plausível na primeira tela e inconsistente na quinta; e como cada tela individual parece correta, ninguém percebe o erro até que todo o app esteja pronto.

Um check de dez minutos

  1. 1

    Empilhe três superfícies

    Coloque um overlay sobre um card sobre o fundo, com uma borda de um pixel em cada. Se qualquer limite desaparecer, seus degraus de luminosidade estão muito próximos ou sua função de borda está acumulando tarefas demais.

  2. 2

    Renderize texto muted em todas as superfícies

    Não apenas no fundo. O 'muted-on-card' é onde as paletas invertidas geralmente falham, e é o estado de texto mais comum em interfaces densas.

  3. 3

    Crie uma confirmação destrutiva

    Isso testa a cor destrutiva, seu foreground, seu hover e sua borda simultaneamente — o grupo de funções que as pessoas definem por último e usam primeiro.

  4. 4

    Foque em algo

    Use o Tab para navegar até um input. O anel de foco é uma cor que ninguém escolhe deliberadamente; então, ou é a sua cor de destaque fazendo um trabalho para o qual não serve, ou é um padrão do navegador que ninguém escolheu.

  5. 5

    Analise uma tabela densa

    Três tons de cinza lado a lado é o maior desafio de uma paleta dark. Uma paleta que sobrevive a uma tabela de configurações sobrevive facilmente a uma página de marketing; o inverso não é verdadeiro.

Erros comuns

  • Começar com preto puro. Isso elimina o nível abaixo do seu fundo antes mesmo de você descobrir que precisa de um.
  • Reutilizar a cor de destaque do light mode sem alterações. Geralmente, ela precisa de mais luminosidade, frequentemente de menos saturação e pode exigir texto escuro sobre ela.
  • Manter sombras e adicionar degraus de luminosidade. Escolha uma única linguagem de elevação. Usar ambas faz com que superfícies elevadas pareçam borradas.
  • Definir apenas o que a primeira tela exigia. As funções que você ignora são aquelas que a próxima tela irá inventar, e ela as inventará de forma diferente.
  • Testar em uma página de marketing. Seções hero favorecem qualquer paleta. Teste na tela mais densa que você tiver.

Explore paletas dark completas, não apenas linhas de amostras

Cada kit aqui define todas as suas funções de cores em light e dark, além de tipografia, raios e movimento — instaláveis como um único item de registro do shadcn. Kits gratuitos não exigem conta.

FAQ

Devo usar preto puro no dark mode?

Geralmente não. Em cinco paletas implementadas, o fundo mais escuro tem 8% de luminosidade HSL e nenhuma tem 0%. O preto puro não deixa superfície abaixo do fundo, então você perde a capacidade de mostrar elementos recuados. A exceção é um contexto de economia de energia em telas OLED ou de visualização de mídia, onde a moldura deve desaparecer.

O dark mode é apenas a inversão da paleta clara?

Não. Quatro coisas param de funcionar: as sombras deixam de fazer sentido porque não há nada mais escuro para escurecer, a cor de destaque geralmente falha no contraste, as bordas ou desaparecem ou brilham dependendo da superfície onde estão, e os estados desativados ou suavizados tornam-se invisíveis. Uma paleta escura é um segundo design, não um filtro.

Como mostrar elevação no dark mode sem usar sombras?

Através da luminosidade da superfície. Defina pelo menos três níveis — fundo, superfície elevada e overlay — espaçados por aproximadamente 3 a 5 pontos de luminosidade HSL. Abaixo de 3 pontos, os níveis deixam de ser distinguíveis; muito acima de 6, a superfície superior começa a parecer um painel de light mode.

Qual a diferença entre uma superfície neutra e uma superfície tonal?

Uma superfície neutra aumenta apenas a luminosidade; uma superfície tonal também mistura parte da matiz da marca conforme a luminosidade sobe. O estilo tonal faz com que toda a interface pareça deliberadamente colorida; o neutro mantém o significado das cores disponível para elementos que realmente precisam delas. Ambos funcionam — mas misturá-los em um único tema não.

As cores da minha marca funcionam no dark mode?

Geralmente não sem alterações. Um tom médio saturado que funciona bem no branco tende a ser escuro e vibrante demais contra uma superfície quase preta. Aumente a luminosidade para garantir o contraste, dessature levemente para evitar a vibração visual e verifique se agora é necessário texto escuro em vez de claro sobre a cor.

De quantas cores uma paleta escura precisa?

Cerca de 28 funções nomeadas, e não apenas cinco amostras: background e foreground, card, popover, muted, primary, secondary, accent, destructive e seus respectivos foregrounds, além de border, input, ring e séries de gráficos. Qualquer coisa que você deixe indefinida será inventada a cada tela, de forma diferente a cada vez.