A cor não existe no objeto — existe no olho e no cérebro de quem olha

Apostila completa de Cor: paleta, contraste e sistemas

Cor é a decisão de design com maior impacto emocional e o maior potencial de excluir gente. Esta apostila cobre como a percepção funciona, os modelos e espaços de cor (RGB, HSL, OKLCH, CMYK, gamutes), teoria e harmonias, como construir uma paleta de verdade com escalas perceptualmente uniformes, acessibilidade e daltonismo, cor em CSS e em tokens, e três aprofundamentos por meio — produto digital, jogos e tempo real, animação e filme.

10 módulosRGB · HSL · OKLCH · CMYKPaleta · escalas de tomWCAG · daltonismoWeb · Jogos · AnimaçãoExercícios com gabarito
MÓDULO 01 · BÁSICO

O que é cor e como a enxergamos

Objetivo: entender que cor é percepção (não uma propriedade fixa do objeto), separar cor de luz de cor de pigmento, e conhecer as três dimensões com que toda cor é descrita.

1.1 Cor é percepção

Um objeto "vermelho" apenas reflete certos comprimentos de onda e absorve o resto; a luz que o ilumina, o ambiente ao redor e o sistema visual de quem observa completam a equação. A mesma tinta parece uma cor ao meio-dia e outra sob lâmpada quente. O mesmo cinza parece mais claro sobre preto e mais escuro sobre branco (contraste simultâneo). Isso não é curiosidade acadêmica: significa que você nunca controla a cor final — controla probabilidades, e projeta com margem.

💡 A regra que organiza a apostila

Projete a cor pela relação, não pelo valor isolado. "Este azul" importa menos do que "este azul contra aquele fundo, ao lado daquele texto, para aquela pessoa, naquela tela". Contraste, hierarquia e acessibilidade são relações; é nelas que a cor acerta ou erra.

1.2 Cor aditiva × subtrativa

Aditiva (luz)Subtrativa (pigmento)
PrimáriasVermelho, Verde, Azul (RGB)Ciano, Magenta, Amarelo (CMY) + Preto (K)
Somar tudo dáBrancoPreto (na teoria; marrom-lama na prática)
Onde viveTelas, projetores, LEDsImpressão, tinta, pintura
ImplicaçãoO que você desenha na tela é luz emitida — mais luz = mais claroMais tinta = mais escuro; o papel é o "branco"

Quase todo trabalho desta apostila é aditivo (telas). CMYK aparece no Módulo 2 para quando o projeto também vai para papel.

Veja: somar luz e subtrair luz

ADITIVA (RGB) — ecrãs. Parte-se do preto e somam-se luzes. As três juntas dão branco.

SUBTRATIVA (CMY) — tinta. Parte-se do branco e cada tinta subtrai luz. As três juntas escurecem até quase preto.

Repare nas zonas de sobreposição: à esquerda, vermelho + verde dá amarelo — o que é contraintuitivo para quem só misturou tinta. À direita, ciano + magenta dá azul. São os mesmos pares, em sentidos opostos: os primários de um sistema são os secundários do outro. E é por isso que as três tintas juntas não dão preto puro na prática — daí o K do CMYK.

1.3 As três dimensões de qualquer cor

Esses três eixos são a base de HSL, HSB, Lab/LCh e OKLCH (Módulo 2). Dominar "vou baixar a saturação e subir a luminosidade" em vez de caçar um hexadecimal é o pulo do gato.

Veja: as três dimensões, cinco exemplos de cada

1 · MATIZ — a volta completa dos 360°, repetida em cinco combinações de saturação e luminosidade. Cada faixa vai de 0° a 330°, de 30 em 30.

S 90 · L 50
S 70 · L 50
S 45 · L 50
S 70 · L 75
S 70 · L 30

Compare as linhas de cima para baixo. O matiz é o mesmo em todas — o que muda é quanto dele se consegue ver. Na última linha (luminosidade 30) os matizes aproximam-se uns dos outros; na quarta (luminosidade 75) também. Só na zona média de luminosidade é que os 12 matizes se distinguem bem, e é por isso que uma paleta com muitos tons claros ou muitos tons escuros parece ter menos cores do que tem.

2 · SATURAÇÃO — cinco matizes, cada um do puro (100) ao cinzento (0), com luminosidade fixa em 50.

vermelho 0
amarelo 50
verde 140
azul 210
roxo 285

Repare que os cinco chegam ao mesmo cinzento à direita: com saturação zero, o matiz deixa de existir. E repare na diferença de percurso — o amarelo perde identidade muito mais depressa que o azul, porque a saturação em HSL não é perceptualmente uniforme (é o problema que o OKLCH resolve, secção 2.4).

3 · LUMINOSIDADE — os mesmos cinco matizes, do quase branco ao quase preto, com saturação fixa em 70.

vermelho 0
amarelo 50
verde 140
azul 210
roxo 285

O achado mais útil está na coluna do meio: as cinco cores têm a mesma «luminosidade» declarada (50) e não parecem ter o mesmo brilho. O amarelo salta, o azul recua. HSL trata os cinco matizes como iguais e o olho não os vê assim — a mesma razão pela qual não se pode escolher a cor do texto pela luminosidade em HSL, e é preciso medir contraste a sério (secção 5.1).

A conclusão prática das três: dominar «vou baixar a saturação e subir a luminosidade» em vez de caçar um hexadecimal é o passo que separa quem tenta cores de quem as controla — mas só funciona se souber que estes três eixos não são independentes na percepção, mesmo sendo independentes na fórmula.

1.4 Onde a cor decide um projeto

💼 Mercado de trabalho

Perguntas de abertura: "Por que a mesma cor parece diferente em contextos diferentes?" (contraste simultâneo; luz; adaptação do olho), "Diferença entre cor aditiva e subtrativa?", "Quais são as três dimensões de uma cor?" (matiz, saturação/croma, luminosidade). Falar em relação e percepção, não em "gosto de azul", já sinaliza maturidade.

✏️ Exercício 1 — Descreva em três eixos

Pegue quatro cores de um site ou app que você usa e descreva cada uma só em palavras: matiz aproximado, saturação (baixa/média/alta), luminosidade (escura/média/clara). Depois diga qual é a cor de ação (botão principal) e por que ela "salta" — em termos dos três eixos e do fundo.

Gabarito (modelo): "Fundo: matiz neutro levemente azulado, saturação baixíssima, luminosidade muito clara. Texto: neutro, saturação ~0, luminosidade escura. Ação: matiz ~230° (azul), saturação alta, luminosidade média. A ação salta porque é a única com saturação alta e porque sua luminosidade contrasta fortemente com o fundo claro — é a relação (saturação isolada + contraste de luminosidade), não o tom em si."

MÓDULO 02 · BÁSICO

Modelos e espaços de cor

Objetivo: saber o que cada modelo representa, por que HSL engana, por que OKLCH é o padrão moderno para UI, e o que é gamut (sRGB, P3, Rec.2020).

2.1 RGB e HEX

2.2 HSL e HSB/HSV

Reorganizam o RGB nos três eixos intuitivos (matiz, saturação, luminosidade/brilho). Ótimos para ajustar uma cor. O problema: não são perceptualmente uniformes — hsl(60 100% 50%) (amarelo) e hsl(240 100% 50%) (azul) têm a mesma "lightness" no modelo mas o amarelo parece muito mais claro. Fazer uma escala de tons variando só o L de HSL produz degraus irregulares e matizes que "derivam".

2.3 Lab e LCh

CIELAB foi desenhado para que distâncias iguais no espaço correspondam a diferenças percebidas iguais. LCh é a versão em coordenadas polares (Lightness, Chroma, hue) — os mesmos três eixos intuitivos, mas perceptualmente honestos. Base do ΔE (delta E), a métrica de "quão diferentes são duas cores".

2.4 OKLab / OKLCH — o modelo moderno para UI

/* mesma luminosidade e croma percebidos — três matizes que "combinam" de peso */
--blue:   oklch(62% 0.17 254);
--green:  oklch(62% 0.17 150);
--red:    oklch(62% 0.17 27);

/* uma escala de tons: só o L muda, em passos regulares */
--gray-100: oklch(97% 0.005 260);
--gray-300: oklch(88% 0.010 260);
--gray-500: oklch(64% 0.015 260);
--gray-700: oklch(45% 0.015 260);
--gray-900: oklch(22% 0.012 260);

2.5 CMYK, cor de processo e spot

2.6 Gamut: sRGB, Display P3, Rec.709/2020

GamutCobreOnde
sRGBo "mínimo comum" da web há 25 anosmaioria dos monitores; assuma-o como base
Display P3~25% mais cores que sRGB (verdes/vermelhos mais vívidos)telas Apple recentes, muitos celulares e monitores novos
Rec.709~sRGBvídeo HD / broadcast (Módulo 9)
Rec.2020bem maior, base do HDRvídeo UHD/HDR; poucos monitores cobrem 100%
Adobe RGBmaior que sRGB nos ciano-verdesfotografia, pré-impressão

Fora do gamut (out of gamut): uma cor que o dispositivo não consegue mostrar — ela é "recortada" (clipping) para a mais próxima que cabe. Em CSS, oklch() pode descrever cores fora do sRGB; use @media (color-gamut: p3) para servir a versão vívida só a quem a exibe, com fallback em sRGB.

💡 Regra prática de modelo

Raciocine e gere paletas em OKLCH. Entregue tokens em oklch() (com fallback hex/rgb para navegadores antigos). Use HSL só para tweaks rápidos, sabendo que ele mente sobre luminosidade. Guarde CMYK/Pantone só se houver impressão. Trabalhe o documento em sRGB por padrão e trate P3 como aprimoramento progressivo.

💼 Mercado de trabalho

Perguntas: "Por que uma escala de tons feita variando o L de HSL fica irregular?" (HSL não é perceptualmente uniforme), "O que OKLCH resolve?", "O que é gamut e o que acontece com uma cor fora dele?" (clipping), "Diferença entre cor de processo e cor spot?". Citar oklch() e @media (color-gamut) mostra que você acompanha o CSS atual.

✏️ Exercício 2 — Traduza e compare

(a) Explique, para um colega, por que hsl(55 100% 50%) e hsl(250 100% 50%) não parecem ter o mesmo brilho apesar do "50%". (b) Escreva três cores em oklch() — um azul, um verde, um laranja — que tenham o mesmo peso visual. (c) Diga o que fazer para que um vermelho vívido de P3 não apareça "lavado" em quem só tem sRGB.

Gabarito: (a) o "L" do HSL é uma média dos canais RGB, não a luminosidade percebida; o olho é muito mais sensível ao verde/amarelo, então o amarelo em "50%" parece claro e o azul parece escuro. (b) ex.: oklch(65% 0.16 250), oklch(65% 0.16 150), oklch(65% 0.16 60) — mesmo L e C, só o H muda. (c) definir a cor com oklch() e um fallback sRGB antes, ou usar @media (color-gamut: p3) / @supports para só entregar a versão P3 a quem a exibe; o fallback sRGB será a cor "recortada" mais próxima, propositalmente escolhida.

MÓDULO 03 · BÁSICO

Teoria da cor e harmonias

Objetivo: usar a roda cromática e os esquemas clássicos como ponto de partida, entender os tipos de contraste, e a proporção 60-30-10 — sem tratar "regras" como lei.

3.1 A roda cromática

A roda tradicional de artista usa primárias RYB (vermelho, amarelo, azul) — é um modelo histórico, não físico, mas continua útil para pensar relações (o que é oposto, o que é vizinho). Ferramentas digitais geralmente usam a roda HSL/HSB (matiz em 360°). Para gerar paletas, prefira raciocinar em graus de matiz num espaço uniforme (OKLCH).

Veja: a roda cromática

Esta é a roda em matiz: os 360 graus do círculo, com saturação e luminosidade constantes. O vermelho está a 0°, o verde a 120°, o azul a 240°.

A distância angular entre duas cores é o que define uma harmonia. Todos os esquemas do capítulo seguinte são apenas formas diferentes de escolher ângulos — e é por isso que se desenham sobre a roda.

Atenção a uma armadilha: esta roda é RGB, feita para ecrã. A roda que se aprende em pintura tem primários vermelho, amarelo e azul, e por isso o complementar do vermelho lá é o verde, aqui é o ciano. Nenhuma das duas é a certa — são modelos diferentes para meios diferentes.

3.2 Esquemas de harmonia

Veja: seis harmonias, marcadas na roda

Em cada bloco, o ponto marcado na roda é exactamente a cor que está nessa posição (matiz puro, saturação 100, luminosidade 50). A amostra grande mostra a versão utilizável do mesmo matiz — saturação 72, luminosidade 52 — porque cores a 100% de saturação raramente servem para interface. A legenda dá os dois valores, com pré-visualização de cada um.

MONOCROMÁTICO — um só matiz

matiz 210° na roda #007FFF
em uso hsl(210 72% 52%) #2C85DD

Não há decisão de matiz nenhuma: toda a variação vem de saturação e luminosidade. É o esquema mais fácil de acertar e o mais difícil de tornar interessante — se ficar chato, o erro está quase sempre em não afastar suficientemente as luminosidades.

ANÁLOGA — vizinhas, 30° entre si

matiz 180° na roda #00FFFF
em uso hsl(180 72% 52%) #2CDDDD
matiz 210° na roda #007FFF
em uso hsl(210 72% 52%) #2C85DD
matiz 240° na roda #0000FF
em uso hsl(240 72% 52%) #2C2CDD

Serena e coesa, porque não há conflito de matiz. O risco é ficar monótona — resolve-se variando bastante a luminosidade, não acrescentando matizes.

COMPLEMENTAR — 180° de distância

matiz 210° na roda #007FFF
em uso hsl(210 72% 52%) #2C85DD
matiz 30° na roda #FF8000
em uso hsl(30 72% 52%) #DD852C

Máximo contraste de matiz. Vibrante e difícil de equilibrar: use uma como dominante e a outra só como acento, nunca em partes iguais. É o par azul/laranja que a pintura usa há séculos e que aparece na figura logo a seguir.

COMPLEMENTAR DIVIDIDA — a oposta, e as duas ao lado dela

matiz 210° na roda #007FFF
em uso hsl(210 72% 52%) #2C85DD
matiz 15° na roda #FF4000
em uso hsl(15 72% 52%) #DD592C
matiz 45° na roda #FFBF00
em uso hsl(45 72% 52%) #DDB12C

Quase todo o contraste da complementar, com bastante menos tensão. É a mais segura das quatro e a que costuma resolver quando a complementar pura fica agressiva.

TRÍADE — 120° entre si

matiz 0° na roda #FF0000
em uso hsl(0 72% 52%) #DD2C2C
matiz 120° na roda #00FF00
em uso hsl(120 72% 52%) #2CDD2C
matiz 240° na roda #0000FF
em uso hsl(240 72% 52%) #2C2CDD

Equilibrada e viva. Três cores fortes competem entre si: a regra 60-30-10 é praticamente obrigatória aqui (secção 3.5).

TETRÁDICA — dois pares complementares

matiz 210° na roda #007FFF
em uso hsl(210 72% 52%) #2C85DD
matiz 30° na roda #FF8000
em uso hsl(30 72% 52%) #DD852C
matiz 120° na roda #00FF00
em uso hsl(120 72% 52%) #2CDD2C
matiz 300° na roda #FF00FF
em uso hsl(300 72% 52%) #DD2CDD

A mais rica e a mais fácil de estragar: quatro matizes fortes não cabem todos em primeiro plano. Na prática usa-se com um dominante claro e os outros três reduzidos a acentos — ou baixando muito a saturação de dois deles.

EsquemaComoSensação / uso
Monocromáticoum matiz, variando saturação e luminosidadecoeso, calmo, sofisticado; fácil de acertar
Análogo2–4 matizes vizinhos (ex.: azul, azul-esverdeado, verde)harmônico, natural; escolha um dominante
Complementardois matizes opostos (ex.: azul + laranja)alto contraste, vibrante; um domina, o outro é acento
Complementar divididoum matiz + os dois vizinhos do seu opostocontraste com menos tensão que o complementar puro
Tríadetrês matizes equidistantes (120°)equilibrado e animado; difícil sem um dominante claro
Tetrádica / retângulodois pares complementaresrico, mas fácil de virar bagunça — muito cuidado com proporção

Duas aplicações da harmonia análoga, com a mesma escolha de matizes e decisões opostas quanto à luminosidade — que é o que decide se o resultado tem hierarquia ou não:

A Grande Onda de Kanagawa, de Hokusai
azul escuroazul médioazul clarocreme
Hokusai, A Grande Onda de Kanagawa (c. 1831). Uma harmonia análoga levada ao limite: praticamente tudo vive entre os 200° e os 230° de matiz, e a variação toda é de luminosidade. É a demonstração exacta do que a secção diz sobre a análoga — «o risco é ficar monótona, resolve-se variando bastante a luminosidade, não acrescentando matizes». O creme do céu é o único matiz de fora, e ocupa a menor área.Domínio público · Metropolitan Museum of Art, via Wikimedia Commons
Nenúfares, de Monet: verdes, azuis e violetas vizinhos na roda
azul-verdeverdevioletaocre
Monet, Nenúfares (1906). Outra análoga, e o contraponto útil ao Hokusai: aqui os matizes espalham-se por uma faixa mais larga da roda (verde → azul → violeta) e a luminosidade varia pouco. O resultado é coeso e quase sem hierarquia — o olho não sabe onde pousar, o que na pintura é deliberado e numa interface seria um defeito. É o mesmo esquema com a decisão oposta na segunda dimensão.Domínio público · Art Institute of Chicago, via Wikimedia Commons

3.3 Os contrastes (Itten)

3.4 "Regras" são ponto de partida

Esquemas de harmonia ajudam a não travar diante da roda, mas os melhores sistemas de cor reais quebram esquemas o tempo todo: um análogo com um acento complementar, um "quase-monocromático" com um neutro temperado. Use os nomes para comunicar e para começar; julgue pelo resultado no contexto.

3.5 A proporção 60-30-10

Um ponto de partida para distribuir: 60% cor dominante (geralmente um neutro/superfície), 30% secundária, 10% acento (a cor de ação, o destaque). Impede o erro clássico de dar peso igual a tudo — o que apaga a hierarquia. Em UI, "60%" quase sempre é branco/cinza.

A regra é fácil de enunciar e difícil de acreditar até se ver. Os três quadros seguintes são de domínio público e estão aqui por serem, cada um, uma demonstração diferente da mesma ideia — a tira por baixo de cada imagem mostra as cores nas proporções aproximadas em que aparecem na tela.

A Leiteira, de Vermeer: parede neutra dominante, avental azul e corpete amarelo
~60% neutro~30% azul10%
Vermeer, A Leiteira (c. 1658). O exemplo mais limpo que existe da proporção: a parede e a toalha ocupam a maior parte da tela num neutro quente; o avental azul é a segunda cor; o corpete amarelo é o acento — pequeno, saturado, e é exactamente onde o olhar vai primeiro. Note que azul e amarelo são quase complementares: o acento não é só pequeno, é oposto ao dominante. A tira abaixo mostra as três cores nas proporções aproximadas.Domínio público · Rijksmuseum, via Wikimedia Commons
Terraço de café à noite, de Van Gogh: céu azul profundo e toldo amarelo iluminado
55% azul30% amarelo15%
Van Gogh, Terraço de café à noite (1888). A complementar azul/laranja da secção 3.2, em quadro. Van Gogh escreveu que pintou «a noite sem preto» — o escuro é azul saturado, não neutro, e é isso que faz o amarelo do toldo parecer luz em vez de tinta. A lição transferível para interface: um fundo escuro com matiz produz mais contraste percebido que um fundo cinzento, com o mesmo contraste medido.Domínio público · Kröller-Müller Museum, via Wikimedia Commons
Composição II em vermelho, azul e amarelo, de Mondrian
~62% branco22% vermelho9%7%
Mondrian, Composição II em vermelho, azul e amarelo (1930). Uma tríade pura (0°, 240°, 55°) levada ao extremo — e ainda assim obedece à proporção: o branco domina, o vermelho é o segundo, azul e amarelo somados não chegam a um sexto da tela. É a demonstração de que três cores fortes só funcionam quando não têm o mesmo peso — o mesmo quadro com os três quadrados do mesmo tamanho seria ilegível.Domínio público · Kunsthaus Zürich, via Wikimedia Commons
Veja: a mesma paleta, três proporções

As três barras usam exactamente as mesmas três cores. Só muda quanto espaço cada uma ocupa.

60 · 30 · 10 — hierarquia clara

recomendado

33 · 33 · 33 — o erro clássico

peso igual

45 · 45 · 10 — dois dominantes a competir

sem hierarquia

Na primeira, o laranja #E8873A é claramente o destaque. Na segunda deixa de ser destaque de coisa nenhuma — é apenas a terceira cor. Na terceira, azul #1F4E9C e o neutro #EDF0F2 disputam a dominância e o ecrã fica sem centro. O acento não é definido pela cor: é definido pela escassez.

Como aplicar isto num ecrã, em concreto
  • 60% — fundo, superfícies de cartão, espaço vazio. Quase sempre #FFFFFF ou um cinza muito claro como #F4F6F8.
  • 30% — texto, bordas, ícones, barras de navegação. Os neutros médios e escuros, mais a cor de marca em áreas grandes: #44555F, #15222C.
  • 10% — botões primários, ligações, estados activos, indicadores. É aqui que a cor de acento vive: #0E7C6B.

O teste: tire uma captura do ecrã, desfoque-a até não conseguir ler nada, e veja onde o olho pousa. Se pousar em três sítios diferentes, a proporção está errada.

💼 Mercado de trabalho

Perguntas: "Como você criaria uma paleta a partir de uma cor de marca?" (monocromático/análogo para o sistema + um acento; Módulo 4), "Qual contraste importa para legibilidade?" (claro-escuro / luminosidade), "O que é a regra 60-30-10?", "Por que um cinza parece colorido sobre um fundo saturado?" (contraste simultâneo).

✏️ Exercício 3 — Do matiz ao esquema

Sua cor de marca é um verde-azulado (~175°). Proponha: (a) um esquema para o sistema de UI e por quê; (b) a cor de acento para ações e alertas; (c) como você aplicaria 60-30-10 numa tela de dashboard.

Gabarito (uma boa resposta): (a) quase-monocromático/análogo: neutros temperados com um leve viés do matiz da marca + o verde-azulado como cor de identidade — coeso e deixa espaço para semânticas. (b) para ação, um azul mais puro (não a cor de marca, para a ação não competir com a identidade) ou o próprio matiz da marca em L/C bem definidos; para alerta/erro, um vermelho-alaranjado (~25°), quente e oposto o suficiente para saltar; sucesso num verde mais amarelado (~145°) distinto do matiz da marca. (c) 60% superfícies (branco/cinza-100/200), 30% componentes e bordas (cinza-300/500 + a cor de marca em áreas de navegação), 10% ações e destaques (o acento + as semânticas), sempre checando contraste.

MÓDULO 04 · INTERMEDIÁRIO

Construir uma paleta

Objetivo: um método repetível — âncora, suporte, neutros, semânticas — e escalas de tom perceptualmente uniformes, nomeadas para escalar.

Veja: a mesma tríade, em duas proporções

Em partes iguais — três cores a disputar o mesmo palco

33%
33%
33%

60-30-10 — uma domina, uma apoia, uma acentua

60% · dominante (neutra ou dessaturada)
30% · secundária
10%

A diferença não é de gosto: é de hierarquia. Na primeira barra nada se destaca porque tudo se destaca. Na segunda, os 10% de vermelho tornam-se o ponto de atenção precisamente por serem pouco — e é assim que se constrói um botão de ação que se vê sem gritar. Repare também que a dominante está muito dessaturada: numa interface, os 60% quase nunca são cor a sério.

4.1 O método

  1. Âncora: a cor de identidade (da marca) ou a cor de ação. Uma só.
  2. Suporte: 0–2 matizes que acompanham a âncora (análogos, ou um complementar de acento).
  3. Neutros: a escada de cinzas — o esqueleto de qualquer UI (4.2).
  4. Semânticas: sucesso, aviso, erro, informação — matizes com significado convencional, distintos entre si e do resto.
  5. Escalas de tom: cada cor vira uma rampa de ~10 degraus (4.3).
Veja: os cinco passos, com a mesma âncora do princípio ao fim

Tudo o que se segue sai de uma decisão só — o azul oklch(62% 0.17 254). Repare que os passos 2 a 5 nunca escolhem uma cor nova: derivam-na, mexendo num eixo de cada vez.

PASSO 1 · A âncora — uma decisão, e só uma

Âncora
oklch(62% 0.17 254)
#2D87E9

É a cor da marca ou a cor de ação. Escolhe-se em OKLCH e não em hexadecimal, porque é a partir do L e do C que tudo o resto vai ser derivado — com um hexadecimal ficaria a adivinhar.

PASSO 2 · Suporte — mexer só no matiz

Âncora 254°
oklch(62% 0.17 254)
#2D87E9
Análogo −30°
oklch(62% 0.17 224)
#0098D1
Análogo +30°
oklch(62% 0.17 284)
#7C73E7
Acento (oposto)
oklch(70% 0.15 74)
#D58E00

Os dois análogos estão a ±30° da âncora, com L e C exactamente iguais — por isso pesam o mesmo e não competem. O acento é o oposto (254 − 180 = 74°), com o L subido para 70: a 62% ficava escuro de mais para ser um destaque. Um acento tem de saltar, e saltar é uma questão de luminosidade tanto como de matiz.

PASSO 3 · Neutros — o matiz da âncora, com croma quase zero

neutros
H 254

Nove degraus, do L 97 ao L 21, com croma entre 0.006 e 0.014 no mesmo matiz 254. Não são cinzas puros: são cinzas com um vestígio de azul, e é isso que os faz parecer da mesma família da âncora em vez de emprestados (secção 4.2). O croma sobe ligeiramente no meio porque é aí que a cor «aguenta» mais sem sujar.

PASSO 4 · Semânticas — matizes convencionais, pesos iguais

Sucesso
oklch(62% 0.15 150)
#2E9E52
Aviso
oklch(75% 0.15 80)
#DFA11A
Erro
oklch(58% 0.19 25)
#D33A3C
Informação
oklch(62% 0.17 254)
#2D87E9

Três notas que decidem se isto funciona. Uma: a informação é a própria âncora — não se inventa uma quinta cor para dizer o que a cor de ação já diz. Duas: o aviso está a L 75 e não a 62, porque o amarelo a 62% de luminosidade fica castanho. Três: sucesso a 150° e erro a 25° são o par mais distinguível para quem tem deficiência de visão de cores — mas ainda assim não podem ser a única indicação (secção 5.2).

PASSO 5 · Escalas — cada cor vira onze degraus

blue
50 → 950

A rampa da âncora, do 50 ao 950. O L desce em passos regulares e o C faz um arco — sobe até ao 500 e volta a descer, porque nas pontas a cor não aguenta croma sem parecer suja. Faça isto para a âncora, para o acento e para as quatro semânticas e a paleta está completa: seis rampas, todas derivadas de uma única decisão inicial.

Os três erros que estragam uma paleta construída assim
  • Escolher os matizes de suporte a olho, em hexadecimal. Ficam com L e C diferentes sem que se note, e depois há sempre uma cor que «salta» sem se perceber porquê.
  • Usar cinzas neutros a sério ao lado de uma âncora saturada. Parecem sujos por contraste simultâneo — o cinza puro parece ganhar a cor oposta à que está ao lado.
  • Aplicar a mesma luminosidade a todos os matizes. Amarelo e azul ao mesmo L não têm o mesmo contraste sobre branco. A rampa dá-lhe degraus regulares; o contraste ainda tem de ser medido (secção 5.1).

4.2 Neutros: cinzas temperados e a escada

4.3 Escalas de tom (50–950)

Gere cada rampa em OKLCH, variando principalmente o L em passos perceptualmente regulares, com o croma subindo em direção ao meio da rampa (onde a cor "aguenta" mais saturação) e caindo nas pontas. Mantenha o H quase constante — pequenas correções de matiz podem compensar o Bezold–Brücke (o matiz parece deslocar com a luminosidade).

/* rampa "brand blue" — L desce, C faz um arco, H ~constante */
--blue-50:  oklch(97% 0.02 250);
--blue-100: oklch(93% 0.05 250);
--blue-200: oklch(87% 0.09 250);
--blue-300: oklch(80% 0.13 250);
--blue-400: oklch(72% 0.16 252);
--blue-500: oklch(64% 0.17 254);   /* o "tom base" */
--blue-600: oklch(56% 0.16 255);
--blue-700: oklch(47% 0.13 256);
--blue-800: oklch(39% 0.10 257);
--blue-900: oklch(30% 0.07 258);
--blue-950: oklch(22% 0.05 260);

Um alvo prático: cada degrau deve ter contraste suficiente com o vizinho para ser distinguível, e a rampa deve conter pelo menos um tom que passe 4.5:1 sobre branco (para texto) e um que passe sobre preto.

Veja: a mesma rampa em OKLCH e em HSL

OKLCH — o L desce em passos regulares

oklch
50100200300400500600700800900950

HSL — os mesmos onze degraus, o mesmo matiz

hsl
50100200300400500600700800900950

Olhe para as duas faixas com os olhos semicerrados. Na de OKLCH os degraus parecem igualmente espaçados; na de HSL a zona clara (50–300) muda pouco e a zona escura (700–950) muda de repente. É o mesmo matiz e o mesmo número de degraus — o que difere é que o L do OKLCH corresponde a luminosidade percebida e o L do HSL não.

É por isso que a secção acima insiste em gerar rampas em OKLCH: não é purismo, é a diferença entre um degrau 400 que se distingue do 300 e um que não se distingue.

E o que cada degrau autoriza a fazer

DegrauValorHexvs. brancovs. preto
blue-50oklch(97% 0.02 254)#ECF6FF1.09:119.19:1fundo com texto preto por cima
blue-100oklch(93% 0.05 254)#D2EAFF1.24:116.95:1fundo com texto preto por cima
blue-200oklch(87% 0.09 254)#ABD8FF1.50:114.00:1fundo com texto preto por cima
blue-300oklch(80% 0.13 254)#81C1FF1.91:111.01:1fundo com texto preto por cima
blue-400oklch(72% 0.16 254)#56A7FF2.51:18.37:1fundo com texto preto por cima
blue-500oklch(62% 0.17 254)#2D87E93.65:15.75:1fundo com texto preto por cima
blue-600oklch(54% 0.16 254)#176EC85.12:14.10:1serve como texto sobre branco
blue-700oklch(45% 0.13 254)#13559B7.50:12.80:1serve como texto sobre branco
blue-800oklch(37% 0.1 254)#12407310.47:12.01:1serve como texto sobre branco
blue-900oklch(29% 0.07 254)#0F2C4D14.12:11.49:1serve como texto sobre branco
blue-950oklch(21% 0.05 254)#06192F17.68:11.19:1serve como texto sobre branco

Os contrastes estão calculados pela fórmula das WCAG (secção 5.1). Repare no que a tabela revela: nenhum degrau do 50 ao 500 serve como texto sobre branco — só a partir do 600 é que passa. E o 500, o «tom base», aquele que quase toda a gente usa no botão primário, tem 3,65:1 contra branco e 5,75:1 contra preto: aguenta texto preto por cima, não aguenta texto branco. Como a expectativa habitual é botão azul com letras brancas, este é precisamente o degrau que costuma reprovar numa auditoria — e a correção é usar o 600 no botão, não clarear as letras. É a verificação que fecha a construção da paleta: uma rampa bonita que não tem um degrau acima de 4.5:1 sobre branco não está terminada.

4.4 Quantas cores

A paleta mínima viável: 1 neutro (rampa) + 1 ação + 3–4 semânticas. Muitos produtos maduros vivem nisso. Cada matiz novo é mais um eixo para manter consistente, testar em dark mode e validar em contraste — adicione só com motivo.

4.5 Nomear: papel × valor

/* PRIMITIVO — por valor/escala, sem significado de uso */
--blue-500: oklch(64% 0.17 254);
--gray-700: oklch(45% 0.015 260);

/* SEMÂNTICO — por papel; aponta para um primitivo e troca no dark mode */
--color-action:        var(--blue-500);
--color-text:          var(--gray-900);
--color-text-muted:    var(--gray-600);
--color-surface:       white;
--color-border:        var(--gray-200);
--color-danger:        var(--red-600);

Componentes consomem só os semânticos. Trocar o tema = trocar a camada semântica, não caçar hexadecimais pelo código.

4.6 Ferramentas e validação

💡 O teste da escala de cinza

Tire a saturação da sua paleta inteira. Se em preto-e-branco você ainda distingue os degraus da rampa e a hierarquia da tela continua legível, a base está sólida — a cor está somando, não carregando. Se some tudo, você está dependendo de matiz para comunicar o que deveria vir de luminosidade.

4.7 Cinco paletas prontas, e a razão de cada decisão

Tudo o que está neste módulo junto, em cinco paletas que se podem copiar e usar. Não são sugestões estéticas: cada valor foi escolhido por uma regra concreta das secções anteriores, e todos os contrastes da coluna da direita foram calculados — não estimados. A percentagem indica a área aproximada que cada cor deve ocupar (secção 3.5); os tokens sem percentagem são de apoio e aparecem em áreas pequenas.

Como ler a coluna «vs. fundo»

É o contraste de cada cor contra a superfície principal da própria paleta, pela fórmula das WCAG (secção 5.1). Tudo o que é texto está acima de 4.5:1; os contornos de campo estão acima de 3:1 (exigência 1.4.11); as divisórias decorativas ficam abaixo de propósito — uma divisória com contraste de texto vira uma linha que grita. É a distinção que quase todas as paletas partilhadas na internet ignoram.

1 · Produto digital / painel de controlo

Quando usar: Aplicações, painéis, ferramentas internas, SaaS. Ecrãs que se olham oito horas por dia.

TokenHexOKLCH%Papelvs. fundo
--superficie#FFFFFF—62%Fundo da página1.0:1
--superficie-2#F6F9FCoklch(98% 0.006 254)—Cartões e zonas agrupadas1.1:1
--divisoria#DCE5ECoklch(91% 0.012 254)—Separadores decorativos1.3:1
--contorno#8A939Foklch(66% 0.020 254)—Bordas de inputs — precisa de 3:13.1:1
--tinta#12212Coklch(24% 0.020 254)26%Texto principal16.4:1
--tinta-suave#485A67oklch(45% 0.025 254)—Texto secundário, rótulos7.2:1
--acao#005CB4oklch(48% 0.160 254)12%Botão primário, ligações6.6:1
--acao-forte#004595oklch(40% 0.150 254)—Estado hover e activo9.2:1
--sucesso#006A29oklch(45% 0.140 152)—Confirmações6.8:1
--aviso#935B00oklch(52% 0.130 75)—Atenção5.6:1
--erro#B00C15oklch(48% 0.190 27)—Destrutivo e falhas7.2:1
PainelDefinições

Relatório mensal

Actualizado há 4 minutos

GerarCancelar

A mesma paleta aplicada. Repare em quanto do ecrã é superfície.

proporção
62% superfície26% tinta e estrutura12% ação

Porque é que esta paleta respeita as regras

  • É quase monocromática: superfícies, neutros e ação partilham o matiz 254. O que separa cada token não é a cor, é a luminosidade — a lição do capítulo 4.1.
  • Os neutros não são cinzas puros: têm croma 0.006 a 0.025 no matiz da ação. É o que os impede de parecerem sujos ao lado do azul (secção 4.2).
  • As semânticas estão todas em L 45–52, portanto pesam o mesmo. E o aviso está a 52 e não a 45, porque amarelo escuro vira castanho.
  • A ação a L 48 e não a 62 é a decisão que faz esta paleta passar: um azul a 62 não aguenta texto branco por cima (é o problema do blue-500 da secção 4.3).

2 · Editorial / leitura longa

Quando usar: Blogues, documentação, revistas, relatórios. Ecrãs onde se lê texto corrido durante minutos.

TokenHexOKLCH%Papelvs. fundo
--papel#FAF6EFoklch(97% 0.012 80)66%Fundo — não branco puro1.0:1
--papel-2#F2ECE0oklch(93% 0.020 80)—Citações, blocos destacados1.1:1
--divisoria#DED5C6oklch(86% 0.025 80)—Filetes e separadores1.4:1
--contorno#9B8B86oklch(65% 0.020 40)—Bordas de campos3.0:1
--tinta#1E1912oklch(23% 0.015 70)24%Texto — não preto puro16.2:1
--tinta-suave#5A5044oklch(45% 0.020 70)—Legendas, notas de rodapé7.3:1
--acento#932E14oklch(45% 0.140 35)10%Ligações e destaques7.4:1
--acento-forte#781D03oklch(38% 0.130 35)—Ligação já visitada9.9:1
PainelDefinições

Relatório mensal

Actualizado há 4 minutos

GerarCancelar

A mesma paleta aplicada. Repare em quanto do ecrã é superfície.

proporção
66% papel24% tinta10% acento

Porque é que esta paleta respeita as regras

  • Nem branco puro nem preto puro. Papel a L 97 e tinta a L 23 dão 16:1 — muito acima do mínimo — e evitam o brilho do #FFFFFF sobre #000000, que cansa em leitura longa.
  • Papel e tinta partilham um matiz quente (70–80°) com croma baixíssimo. A página tem temperatura sem ter cor, e é isso que a faz parecer papel e não ecrã.
  • O acento é uma terracota a 35°, quase complementar do papel: contrasta sem gritar. Passa 7,4:1 sobre o papel, portanto serve como texto de ligação sem precisar de sublinhado para contraste — embora deva ter sublinhado por outra razão (secção 5.2: não depender só da cor).
  • Só três cores no total. Numa página de leitura, cada cor a mais é uma interrupção.

3 · Comércio / loja

Quando usar: Lojas, marketplaces, reservas. Ecrãs onde há uma ação que vale dinheiro e várias que não valem.

TokenHexOKLCH%Papelvs. fundo
--superficie#FFFFFF—60%Fundo e fichas de produto1.0:1
--superficie-2#F4F7FAoklch(97% 0.006 232)—Zonas agrupadas1.1:1
--divisoria#D9E2EAoklch(90% 0.012 232)—Separadores1.3:1
--contorno#87959Doklch(66% 0.020 232)—Bordas de campos3.1:1
--tinta#0F1C26oklch(22% 0.020 232)30%Texto e preços17.3:1
--tinta-suave#465866oklch(45% 0.025 232)—Descrições, secundário7.4:1
--confianca#00629Coklch(46% 0.150 232)—Navegação, ligações, selos6.5:1
--comprar#BD2900oklch(52% 0.190 35)10%Só o botão de compra6.0:1
LojaEntrar

Ténis de corrida

Envio em 24h

89,90 €

ComprarDetalhes

A mesma paleta aplicada. Repare em quanto do ecrã é superfície.

proporção
60% superfície30% tinta e navegação10% comprar

Porque é que esta paleta respeita as regras

  • Duas cores com papéis separados por decreto: o azul é para navegar e para confiar; o laranja-vermelho é exclusivamente para a ação que gera receita. Nada mais no ecrã pode usar o segundo.
  • São quase complementares (232° e 35°). É a harmonia mais forte da secção 3.2, e por isso mesmo é a que obriga à proporção: se o laranja aparecer em mais de 10% da área, deixa de ser o destaque.
  • O laranja está a L 52 — mais claro que a ação da paleta 1 — e ainda assim passa 6:1 com texto branco. Foi escolhido no limite: mais claro e reprovava.
  • O erro que esta paleta previne: pôr o botão «adicionar ao carrinho» e o botão «ver detalhes» na mesma cor. Quando tudo é destaque, nada é.

4 · Modo escuro (não é a paleta clara invertida)

Quando usar: Editores, ferramentas de longa sessão, media. E como par obrigatório de qualquer paleta clara.

TokenHexOKLCH%Papelvs. fundo
--fundo#0E141Boklch(19% 0.015 254)58%Base — não preto1.0:1
--superficie#161E27oklch(24% 0.015 254)—Cartões (elevação 1)1.1:1
--superficie-2#1E2833oklch(29% 0.018 254)—Modais (elevação 2)1.2:1
--divisoria#2C3946oklch(36% 0.020 254)—Separadores1.6:1
--tinta#E7EEF5oklch(94% 0.010 254)30%Texto — não branco15.8:1
--tinta-suave#9AAAB8oklch(72% 0.020 254)—Secundário7.8:1
--acao#62A7FAoklch(72% 0.140 254)12%Botões e ligações7.4:1
--sucesso#56BD78oklch(72% 0.140 152)—Confirmações7.9:1
--erro#ED756Eoklch(70% 0.150 25)—Falhas6.5:1
PainelDefinições

Relatório mensal

Actualizado há 4 minutos

GerarCancelar

A mesma paleta aplicada. Repare em quanto do ecrã é superfície.

proporção
58% fundo30% tinta12% ação

Porque é que esta paleta respeita as regras

  • A elevação faz-se com luminosidade, não com sombra. Fundo L 19, cartão L 24, modal L 29 — no escuro as sombras não se veem, portanto o que está «mais acima» é o que está mais claro (secção 7.4).
  • A ação subiu de L 48 (paleta 1) para L 72. Não é a mesma cor mais clara por gosto: um azul a L 48 sobre fundo escuro daria 2:1 e seria ilegível. É por isto que inverter a paleta clara não funciona.
  • Fundo a L 19 e texto a L 94, e não 0 e 100. Branco puro sobre preto puro produz halo e cansaço — e deixa sem espaço para representar elevação.
  • As três cores de estado estão todas a L 70–72: pesam o mesmo, e todas passam 6,5:1 ou mais sobre o fundo.

5 · Campanha / marca com atitude

Quando usar: Páginas de campanha, apresentações, cartazes, redes. Peças curtas onde chamar a atenção é o objetivo.

TokenHexOKLCH%Papelvs. fundo
--superficie#FFFFFF—55%Respiro — a cor mais importante1.0:1
--base#4F2980oklch(38% 0.140 300)30%Blocos grandes, cabeçalho10.7:1
--tinta#141414oklch(20% 0 0)—Texto sobre branco18.4:1
--acento#E19200oklch(72% 0.190 80)15%Só o que tem de saltar2.5:1
A CAMPANHA15%

Um título que ocupa espaço

O branco é 55% e é o que faz isto respirar.

Quero saber mais

A mesma paleta aplicada. Repare em quanto do ecrã é superfície.

proporção
55% branco30% base15% acento

Porque é que esta paleta respeita as regras

  • Roxo (300°) e âmbar (80°) estão a 140° na roda — quase complementares. É o par mais agressivo destas cinco paletas, e funciona só por causa da proporção.
  • O branco é 55% e é a cor mais importante da paleta. Sem esse espaço, roxo e âmbar entram em guerra. É o erro clássico das paletas «vibrantes»: esquecer que o vazio também é uma cor.
  • O âmbar leva texto preto, não branco: a L 72 dá 7,3:1 com preto e apenas 2,5:1 com branco. Escurecê-lo para aceitar texto branco tirava-lhe o brilho — por isso muda-se o texto, não a cor.
  • Não use esta paleta numa aplicação. Ela existe para peças que se veem durante segundos. Numa ferramenta de trabalho, oito horas de roxo a 30% é insuportável.
O que estas cinco têm em comum — e é o que se leva daqui
  • Uma âncora, tudo derivado. Em nenhuma delas há uma cor escolhida a olho: os neutros têm o matiz da ação, as semânticas têm a luminosidade umas das outras.
  • Nunca #FFFFFF sobre #000000. Nem a mais neutra usa os extremos — precisam-se deles como margem de manobra.
  • O acento é escasso por definição. Entre 10% e 15% em todas. Aumentar essa fatia não torna a paleta mais viva: torna-a sem centro.
  • A cor de ação foi escolhida pelo contraste, não pela beleza. É a decisão que mais reprova paletas na prática, e a que menos vezes é feita a sério.
  • Três a quatro cores chegam. A paleta 2 tem três. Nenhuma tem mais de quatro contando semânticas à parte.

Para adaptar qualquer uma à sua marca: mude o matiz da âncora e regenere tudo a partir dele mantendo os L e os C. Depois volte a medir os contrastes — mudar o matiz mantendo o L não mantém o contraste, porque a luminosidade percebida varia com o matiz (é o achado da secção 1.3).

💼 Mercado de trabalho

Perguntas: "Como você constrói a paleta de um produto do zero?" (âncora → suporte → neutros → semânticas → rampas), "Como gerar uma escala de tons consistente?" (OKLCH, L regular, C em arco, H quase fixo), "Por que usar cinza temperado em vez de cinza puro?", "Semântico ou por escala ao nomear?" (as duas camadas). Ter uma paleta com rampas OKLCH e contrastes documentados no portfólio é forte.

✏️ Exercício 4 — Gere a paleta

Para um app de finanças pessoais, especifique: (a) a cor âncora e se ela é de marca ou de ação; (b) a escada de neutros (matiz e croma que você usaria); (c) as 4 semânticas; (d) para a rampa da âncora, os valores OKLCH aproximados de 3 degraus (claro, base, escuro) e qual passa 4.5:1 sobre branco.

Gabarito (uma boa resposta): (a) um azul-esverdeado de confiança como marca, e um azul mais puro separado para ação (para número negativo/positivo não brigar com a marca). (b) neutros temperados: H ≈ 250, C ≈ 0.008–0.015, rampa 50→950 com L de ~98% a ~20%. (c) sucesso/entrada de dinheiro oklch(~60% 0.15 150); erro/gasto acima do orçamento oklch(~55% 0.18 25); aviso oklch(~75% 0.15 80); info = a cor de ação. (d) âncora: claro oklch(93% 0.05 200), base oklch(64% 0.13 200), escuro oklch(42% 0.10 205) — o degrau escuro (~42% L) passa 4.5:1 sobre branco; o base costuma passar 3:1 (texto grande) mas não 4.5:1, então texto pequeno usa o escuro.

MÓDULO 05 · INTERMEDIÁRIO

Cor acessível

Objetivo: garantir contraste suficiente, nunca depender só da cor, e projetar para os ~300 milhões de pessoas com alguma deficiência de visão de cores.

5.1 Contraste de texto (WCAG)

SituaçãoAAAAA
Texto normal (< 24px, ou < 18.66px bold)4.5:17:1
Texto grande (≥ 24px, ou ≥ 18.66px bold)3:14.5:1
Componentes de UI e gráficos essenciais (borda de input, ícone que carrega sentido)3:1 (1.4.11)—
Veja: o mesmo texto, quatro contrastes
Texto de exemplo a 15 px
16,1:1 — True
Texto de exemplo a 15 px
7,6:1 — True
Texto de exemplo a 15 px
2,5:1 — False
Texto de exemplo a 15 px
4,6:1 — True

O terceiro é o erro mais comum de todos: cinzento claro para o que é "menos importante". Fica bonito no ecrã do designer, com luz controlada e visão jovem, e desaparece ao sol ou para quem tem visão reduzida. Menos importante resolve-se com tamanho, peso e posição — não baixando o contraste até ao ilegível.

5.2 Não depender só da cor (1.4.1)

Nenhuma informação pode ser transmitida apenas por cor. "Campos em vermelho são obrigatórios", "linha verde subiu, vermelha caiu", "status pela cor da bolinha" — todos falham para quem não distingue os matizes. Acrescente ícone, texto, forma, padrão ou posição. A cor reforça; não carrega sozinha.

5.3 Deficiências de visão de cores

TipoO que mudaPrevalência (aprox.)
Deuteranomalia / -nopiaverde reduzido/ausente — confunde vermelho↔verde↔marroma mais comum; ~6% dos homens
Protanomalia / -nopiavermelho reduzido/ausente; vermelhos parecem escuros~2% dos homens
Tritanomalia / -nopiaazul-amarelo afetadorara
Acromatopsiapouca ou nenhuma percepção de matizmuito rara

No total, cerca de 1 em 12 homens e 1 em 200 mulheres. O par vermelho/verde é o campo minado — evite usá-lo como única distinção (semáforos de status, gráficos).

Veja: o par que colapsa para 1 em cada 12 homens
Visão tricromática
verde de sucesso e vermelho de erro — bem distintos
Simulação de deuteranopia
praticamente o mesmo tom — a informação desapareceu

Verde e vermelho são o par mais usado em interfaces e o pior possível — a deficiência de visão de cores mais comum afeta exatamente essa distinção, em cerca de 1 em cada 12 homens. E repare que nenhuma das duas cores é "má": o problema é usá-las como única diferença.

A correção não é trocar de cores: é acrescentar uma segunda dimensão — um ícone, um texto, uma diferença clara de luminosidade. O teste mais rápido de todos: converta a interface para escala de cinzentos. Se a informação sobrevive, sobrevive a qualquer deficiência de visão de cores.

5.4 Como testar

5.5 Modo escuro, alto contraste e preferências

5.6 Cor, cultura e significado

Associações de cor (vermelho = perigo ou sorte? branco = pureza ou luto?) variam entre culturas e contextos. Convenções de UI são mais estáveis (vermelho = erro/destrutivo, verde = sucesso), mas não universais — não presuma. Em produto global, apoie o significado com texto e ícone (volta ao 5.2). A secção seguinte trata do que se sabe — e do que se inventa — sobre o efeito emocional da cor.

5.7 O aspecto emocional da cor — o que se sabe e o que se inventa

Esta é a parte da cor sobre a qual mais se escreve e menos se comprova. Vale separar com clareza três níveis de evidência, porque tratá-los como um só é a origem de quase toda a asneira que se diz sobre psicologia da cor.

NívelO que éQuão sólido
1 · Efeitos fisiológicosCores muito saturadas cansam mais depressa; azuis intensos à noite interferem com o sono; contraste extremo provoca fadiga visual.Sólido. É óptica e biologia.
2 · Convenções aprendidasVermelho = parar, erro, destrutivo. Verde = seguir, sucesso. Amarelo = aviso. Azul = ligação clicável.Sólido dentro de um contexto — mas é aprendido, não inato, e varia por cultura e por domínio.
3 · "Psicologia das cores""Azul transmite confiança", "laranja gera impulso de compra", "verde acalma".Fraco. Os estudos são pequenos, mal replicados e muito dependentes de contexto.
⚠️ A tabela de significados que circula na internet

Aquelas infografias que atribuem uma emoção a cada cor são, na melhor das hipóteses, uma generalização ocidental e contemporânea. O mesmo vermelho é perigo num painel, sorte num casamento chinês e luto na África do Sul. O branco é pureza num contexto e luto noutro. Não existe significado inerente à cor — existe significado atribuído por cultura, categoria e repetição.

O que funciona de facto: a coerência de categoria

Se as marcas de banca são maioritariamente azuis, o azul não "transmite confiança" por si — ele transmite “banco”, porque é isso que a pessoa viu mil vezes. Isso dá duas jogadas opostas, ambas legítimas e conscientes:

A pergunta útil nunca é "que emoção esta cor provoca?". É "o que é que esta cor faz lembrar, neste setor, a esta pessoa?" — e essa responde-se olhando para os concorrentes, não para uma tabela de significados.

O Grito, de Munch: céu em laranjas e vermelhos sobre azuis frios
laranjavermelhoazul frioocre
Munch, O Grito (1893). Serve para o argumento desta secção e para o seu limite. O que funciona aqui não é «laranja = angústia» — laranja não significa angústia em lado nenhum. O que produz o efeito é a saturação muito alta num céu, onde se espera dessaturação, combinada com linhas que continuam as do corpo. É a violação da expectativa que carrega o significado, não o matiz. Trocar o laranja por verde igualmente saturado manteria boa parte da inquietação.Domínio público · Nasjonalmuseet, via Wikimedia Commons

O que a saturação e a luminosidade fazem, e que é mais fiável que o matiz

Curiosamente, os dois eixos menos discutidos são os que produzem efeito mais consistente:

Trocar o matiz mantendo saturação e luminosidade muda muito menos a sensação do que o contrário. É um teste fácil de fazer e quase sempre surpreende quem espera que o matiz mande.

O Beijo, de Klimt: dourado dominante com acentos de cor
52% dourado20%16% verde12%
Klimt, O Beijo (1907–08). Um caso de dominância extrema: mais de metade da tela é a mesma família de dourados. Segundo a lógica da secção 3.5 isto devia matar a hierarquia — e não mata, porque a variação está toda na textura e no valor dentro do mesmo matiz. É a prova prática de que «monocromático» não é sinónimo de «monótono»: quando o matiz é único, todo o trabalho passa para a luminosidade.Domínio público · Österreichische Galerie Belvedere, via Wikimedia Commons

5.8 Cor em logótipos

A cor de um logótipo obedece a restrições que a cor de uma interface não tem, e ignorá-las produz identidades que só funcionam no ecrã de quem as desenhou.

💡 A regra que ordena tudo: a forma primeiro, a cor depois

Um logótipo tem de funcionar a uma cor sólida — preto sobre branco e branco sobre preto — antes de ter cor nenhuma. Se só se distingue por causa da cor, não é um logótipo: é uma ilustração colorida. Fatura, fax, gravação, bordado, carimbo e serigrafia a uma tinta continuam a existir. Ver Logótipos & Lettering, cap. 8.

As restrições próprias da identidade

Cor como marca registada

Uma cor pode, em circunstâncias restritas, ser protegida como marca — mas o critério é exigente: exige demonstrar que o público associa aquela cor específica, naquele setor, àquela empresa, o que normalmente implica anos de uso consistente e prova documentada. Não é algo que se conquiste escolhendo um tom invulgar, e não é aconselhamento jurídico — ver Branding, cap. 08, e confirmar com um jurista.

A diferença entre cor de marca e cor de interface

São coisas diferentes e confundi-las estraga as duas. A cor de marca é escolhida para ser memorável e distinta; a cor de interface é escolhida para ser funcional e acessível. Uma marca com um vermelho vibrante não deve usar esse vermelho no botão principal, porque vermelho em interface significa destrutivo — e a convenção aprendida (nível 2 de 5.6) vence a identidade. Ver a secção 7.3.

Cinco casos de cor em identidade

Todos verificáveis por si — abra as páginas de identidade das marcas em causa e compare com o que se segue. As cores estão indicadas com pré-visualização e valor.

Caso 1 · Uma cor pode ser propriedade — e ter um custo de manutenção

A Descoberta da Púrpura, de Rubens
Rubens, A Descoberta da Púrpura (c. 1636). O quadro conta a lenda da descoberta da púrpura de Tiro — um corante extraído de moluscos, tão caro que era preciso esmagar milhares para tingir um manto. Durante mais de mil anos, uma cor concreta significou «imperador», a ponto de haver leis a proibir que outros a usassem.

Porque isto está aqui: é o caso mais antigo e mais puro do que este caso descreve. A cor não ganhou significado por ser bonita nem por ter sido bem escolhida — ganhou-o por ter sido aplicada consistentemente ao mesmo referente durante séculos, e por ser cara o suficiente para que ninguém pudesse imitá-la. É exactamente o que um registo de marca de cor exige provar hoje, em escala de anos em vez de séculos.Domínio público · Museu do Prado, via Wikimedia Commons

Há marcas que registaram uma cor concreta para uma categoria concreta: o roxo #7D2248 da Cadbury para chocolate em tablete, o azul #0085CA da Tiffany, o vermelho da sola dos sapatos de Christian Louboutin. Nenhum destes registos foi fácil nem é total: o registo cobre uma categoria, não a cor, e vários foram parcialmente anulados em tribunal.

A lição de trabalho, que é a que interessa: um registo destes exige provar que o público associa aquela cor àquela marca — o que só se consegue com uso consistente durante anos. Uma marca que muda de tom a cada campanha nunca chega lá. A consistência não é uma preferência estética: é a condição de existir o activo.

Caso 2 · A cor de marca que não serve para a interface

Veja: a mesma marca, duas decisões de interface
MARCA

Apagar a conta

Esta ação não pode ser revertida.

Apagar Guardar
✗ As duas ações parecem igualmente perigosas
MARCA

Apagar a conta

Esta ação não pode ser revertida.

Apagar Guardar
✓ A marca fica no cabeçalho; a ação usa a cor do seu significado

À esquerda, o vermelho de marca #C8102E foi usado como cor de botão porque «é a nossa cor». O resultado é que guardar e apagar ficam indistinguíveis. À direita a marca continua presente — no cabeçalho, onde é identidade — e os botões usam as cores do seu significado. Nada se perdeu de identidade e ganhou-se a capacidade de distinguir o que é destrutivo.

O vermelho #E50914 da Netflix é a identidade. Repare no que ele não faz na aplicação: não é o botão de «reproduzir», que é branco; e o botão vermelho aparece sobretudo em «subscrever». A razão é a do parágrafo acima — vermelho em interface significa destrutivo ou urgente, e essa convenção vence a identidade.

O padrão que daqui se tira e se aplica a qualquer projeto: a cor de marca é para o que é da marca — logótipo, cabeçalho, o momento de compra. A cor de ação é escolhida à parte, por critérios funcionais. Confundir as duas é o erro mais comum em produtos de empresas com identidade forte.

Caso 3 · Quando a categoria já tem dono, mude de eixo

Facebook#1877F2
LinkedIn#0A66C2
Twitter#1DA1F2
Telegram#229ED9
PayPal#009CDE

Cinco azuis de cinco produtos que toda a gente conhece. Estão todos entre os 198° e os 214° da roda — dezasseis graus de amplitude, num círculo de 360. Não é falta de imaginação de cinco equipas independentes: o azul comunica confiança e segurança, e em categorias onde essa associação é o argumento — redes, bancos, saúde, pagamentos — quase todos chegam ao mesmo sítio. O resultado é uma categoria onde a cor deixou de distinguir seja o que for.

Veja: a mesma decisão, cinco vezes
f
Facebook#1877F2
matiz 214°
! 4.23:1
in
LinkedIn#0A66C2
matiz 210°
✓ 5.69:1
t
Twitter#1DA1F2
matiz 203°
✗ 2.83:1
T
Telegram#229ED9
matiz 199°
! 3.02:1
P
PayPal#009CDE
matiz 198°
! 3.08:1

Tape os nomes e as iniciais. É impossível dizer qual é qual — e note-se que estes são cinco dos produtos mais usados do mundo, com orçamentos de identidade ilimitados. O problema não se resolve com mais dinheiro: resolve-se escolhendo outro eixo.

T
Twitch#9146FF
matiz 264°
✓ 4.64:1
S
SoundCloud#FF5500
matiz 20°
! 3.21:1
S
Spotify#1DB954
matiz 141°
✓ 8.12:1
S
Snapchat#FFFC00
matiz 59°
✗ 1.10:1
A
Airbnb#FF5A5F
matiz 358°
! 3.05:1

Cinco marcas que foram deliberadamente para outro sítio da roda — do amarelo aos 59° ao roxo aos 264°, cobrindo praticamente o círculo inteiro. Distinguem-se à primeira, mesmo sem nomes. E cada uma pagou por isso o preço de não comunicar «instituição de confiança» — o que para uma rede de criadores, um serviço de música ou um alojamento entre particulares não é uma perda.

É uma troca, não uma melhoria. A decisão não é «azul é mau»: é perceber que o azul lhe dá uma associação de graça e lhe tira a distinção, e decidir de qual das duas precisa mais.

O achado que apareceu ao desenhar estes ícones

Cada inicial acima está na cor que a própria marca usa — nove em branco, e o Spotify em preto, porque as ondas do seu ícone são pretas sobre o verde. Não escolhi a cor que dá mais contraste: escolhi a que a identidade aplica de facto. O número por baixo de cada ícone é o contraste medido.

Sete das dez ficam abaixo de 4.5:1. Facebook, Twitter, Telegram, PayPal, SoundCloud, Snapchat, Airbnb. E duas ficam abaixo de 3:1 — o pássaro branco do Twitter sobre #1DA1F2 dá 2,83:1, e o fantasma branco do Snapchat sobre #FFFC00 dá 1,10:1, que é praticamente invisível se medido como texto.

E isto não é um erro destas marcas. A WCAG 1.4.3 isenta explicitamente os logótipos: texto que faz parte de um logótipo ou nome de marca não tem requisito de contraste. Um símbolo de marca é reconhecido pela forma, não lido letra a letra — e por isso pode viver com contrastes que seriam inaceitáveis num parágrafo.

A consequência prática, e é a lição do caso 2 com números: se usar o amarelo do Snapchat como fundo de um bloco de texto branco, ou o azul-claro do Twitter num botão com letras brancas, está a reprovar numa auditoria de acessibilidade — mesmo estando a respeitar a identidade à letra. É por isto que praticamente toda a identidade séria tem, além da cor de marca, uma variante escurecida para uso em interface. A cor do logótipo e a cor do botão são dois problemas diferentes.

A decisão real que isto coloca: ou se aceita o azul e a distinção passa a vir da forma, da tipografia e do tom de voz — ou se vai para outro sítio da roda e se constrói a confiança por outros meios. As duas são estratégias legítimas; o que não é estratégia é escolher azul sem reparar que toda a gente já escolheu.

Sobre estes valores: são os hexadecimais publicamente documentados por cada marca à data desta apostila, e vários já mudaram pelo menos uma vez — o azul do Facebook foi #3B5998 antes de ser #1877F2. Isso não enfraquece o argumento: reforça-o, porque as revisões continuaram todas dentro da mesma faixa de matiz. E é um lembrete do caso 1 — uma cor só se torna um activo com anos de aplicação consistente, e cada mudança de tom recomeça parte dessa contagem.

Caso 4 · A cor tem de sobreviver ao pior meio, não ao melhor

Mondrian a cores
A cores. Vermelho, azul e amarelo perfeitamente distintos.
O mesmo Mondrian em escala de cinzentos
Em escala de cinzentos. O vermelho e o azul colapsaram no mesmo cinzento — têm luminosidade parecida. Só o amarelo sobrevive, porque é o único cuja diferença era de luminosidade e não apenas de matiz.Domínio público · via Wikimedia Commons · conversão feita no navegador com filter:grayscale(1)

É o teste inteiro, numa imagem. Se a sua identidade depender de distinguir dois elementos que ficam no mesmo cinzento, ela não sobrevive a uma fotocópia, a uma gravação, nem a um utilizador com deficiência de visão de cores (secção 5.3).

Um verde escolhido no ecrã calibrado do estúdio vai depois ser: bordado numa camisola, impresso a uma cor num saco de papel, gravado a laser, reduzido a 16 px num favicon e — o teste mais duro — fotocopiado a preto e branco. Um verde #009639 e um vermelho #C8102E podem ter luminosidade quase idêntica: em escala de cinzentos tornam-se o mesmo cinzento.

A verificação, que leva um minuto: converta a identidade para escala de cinzentos antes de a aprovar. Se os elementos deixarem de se distinguir, o problema não é da fotocopiadora — é de a identidade depender só do matiz, e matiz é a dimensão que mais facilmente se perde.

Caso 5 · O caso raro em que a cor é a marca

Cabine telefónica vermelha em Londres
~70% da peça20%10%
A cabine telefónica britânica. Reconhece-se de longe, de costas, desfocada, e numa fotografia a preto e branco — porque não depende só da cor: é cor mais forma mais repetição no território. Cumpre as três condições do caso: área grande, consistência física durante décadas, e raridade na categoria.

O contraste com o caso 3 é o ponto: um azul num ícone de 44 px distingue zero; este vermelho aplicado a um objeto de dois metros e meio, repetido por todo o país, distingue a um quarteirão. O poder de uma cor de marca depende muito mais da área e da repetição do que do valor escolhido. Christoph Braun · CC0 · via Wikimedia Commons

Há marcas cujo activo visual mais forte não é o símbolo nem o nome: é a cor aplicada a uma superfície grande — o laranja de uma loja de bricolage, o castanho de uma transportadora, o amarelo de um correio nacional. Funcionam porque cumprem três condições em simultâneo: a cor cobre área grande, é fisicamente consistente (tinta, veículo, fardamento) e é rara na categoria.

O contraste com o caso 3 é o ponto: um azul num logótipo pequeno de uma rede social distingue zero; um laranja numa fachada inteira distingue a dois quarteirões de distância. O poder de uma cor de marca depende muito mais da área e da repetição do que do valor escolhido.

O que estes cinco casos têm em comum

Nenhum é sobre qual cor escolher. Todos são sobre consistência (caso 1), separar identidade de função (caso 2), contexto competitivo (caso 3), robustez no pior meio (caso 4) e área de aplicação (caso 5). É a resposta à pergunta de entrevista mais comum desta secção — «que cor escolherias para esta marca?» — cuja boa resposta começa sempre por «depende de onde vai ser aplicada e de quem já está na categoria».

5.9 Quatro casos

Caso 1 · O cinzento da legenda

O que aconteceu: um produto usava cinzento claro para tudo o que era "secundário" — legendas, marcadores de posição, texto de ajuda. Aprovado por todos, bonito no ecrã do estúdio. Reprovou em auditoria de acessibilidade e gerou queixas de utilizadores mais velhos.

A causa: confundir hierarquia com contraste. Menos importante não significa menos legível.

A correção: a hierarquia passou a ser feita com tamanho, peso e espaço, mantendo todo o texto acima de 4.5:1. Nenhuma informação foi perdida e o desenho não piorou.

Caso 2 · O vermelho da marca no botão principal

O que aconteceu: uma marca com vermelho forte na identidade usou-o no botão de ação principal. A taxa de conclusão caiu e o apoio recebeu perguntas do tipo "isto apaga alguma coisa?".

A causa: a convenção aprendida (vermelho = destrutivo) venceu a identidade — exatamente o mecanismo do nível 2 da secção 5.7.

A correção: o vermelho ficou reservado à marca e às ações destrutivas; a ação principal passou a usar uma cor da paleta de interface. Cor de marca e cor de interface são sistemas distintos.

Caso 3 · O logótipo em gradiente

O que aconteceu: identidade aprovada com um gradiente de três cores. Funcionou no site e falhou em tudo o resto: no bordado das fardas, na gravação, no carimbo e na fatura a preto e branco.

A causa: a cor foi decidida antes de a forma ser testada a uma cor.

A correção: criou-se uma versão a uma cor que funciona sozinha, e o gradiente passou a ser a versão preferencial em digital — não a única. A forma primeiro, a cor depois (secção 5.8).

Caso 4 · O gráfico de seis categorias

O que aconteceu: um painel usava seis matizes com saturação e luminosidade parecidas. Ninguém conseguia ler a legenda de relance, e em impressão a preto e branco o gráfico ficava inútil.

A causa: variar apenas o matiz. Matiz sozinho é o eixo mais fraco dos três — e é o primeiro a desaparecer em escala de cinzentos e em deficiência de visão de cores.

A correção: reduziu-se a cinco categorias mais "outros", variou-se também a luminosidade, e acrescentaram-se rótulos diretos junto às séries em vez de legenda separada.

⚠️ Erros de cor que reprovam em auditoria

Texto cinza-claro (placeholder, legenda, "menos importante") abaixo de 4.5:1. Link distinguido do texto só pela cor, sem sublinhado. Erro de formulário só pela borda vermelha. Gráfico com 6 categorias em matizes de saturação e luminosidade parecidas. Estado (online/ocupado/ausente) só pela cor da bolinha. Botão colorido com texto branco que não alcança 4.5:1. Desativar o modo de alto contraste do sistema com !important.

💼 Mercado de trabalho

Perguntas: "Quais são os limites de contraste da WCAG?" (4.5:1 normal, 3:1 grande e componentes), "O que significa 'não usar só a cor'?", "Como você testa uma paleta para daltonismo?" (simular + escala de cinza + luminosidade entre categorias), "Ratio vs APCA?". Mostrar um gráfico ou um sistema de status que funciona em deuteranopia é um diferencial concreto.

✏️ Exercício 5 — Conserte o componente

Um app mostra transações: valor em verde para entradas, vermelho para saídas; o único indicador é a cor. Legendas em #B0B0B0 sobre branco. Um selo "Pendente" em amarelo-claro com texto branco. Aponte os problemas e as correções.

Gabarito: (1) verde/vermelho como única distinção → falha 1.4.1 e é o par pior para daltonismo; adicione sinal +/−, o rótulo "Entrada/Saída", ou posição/ícone; garanta que os dois tons diferem em luminosidade. (2) #B0B0B0 em branco ≈ 1.9:1 → muito abaixo de 4.5:1; escureça para ~#595959. (3) selo amarelo-claro + texto branco → contraste ínfimo; use texto escuro sobre o amarelo (e cheque 4.5:1) ou um amarelo mais escuro com texto branco; acrescente um ícone de relógio para não depender da cor.

MÓDULO 06 · INTERMEDIÁRIO

Cor em código (CSS e tokens)

Objetivo: dominar as sintaxes de cor do CSS moderno (oklch(), color-mix(), relative color), estruturar tokens, e lidar com transparência e gradientes sem sujeira.

6.1 Sintaxes de cor

color: #1E90FF;
color: rgb(30 144 255 / 0.8);          /* sintaxe moderna, sem vírgulas, alpha com / */
color: hsl(210 100% 56%);
color: oklch(64% 0.17 254);            /* perceptual — prefira para tokens */
color: oklch(64% 0.17 254 / 0.15);     /* com alpha */
color: color(display-p3 0.2 0.56 1);   /* cor fora do sRGB */

/* relative color syntax: derivar de outra cor */
--brand: oklch(64% 0.17 254);
--brand-hover: oklch(from var(--brand) calc(l - 0.08) c h);
--brand-tint:  oklch(from var(--brand) 0.97 0.03 h);

/* color-mix: misturar duas cores num espaço escolhido */
--brand-muted: color-mix(in oklch, var(--brand) 30%, white);
--overlay:     color-mix(in srgb, black 60%, transparent);

6.2 Palavras-chave úteis

6.3 Tokens de cor: as três camadas

/* 1. PRIMITIVOS — a paleta crua */
:root{
  --blue-500: oklch(64% 0.17 254);
  --gray-50:  oklch(98% 0.005 260);
  --gray-900: oklch(22% 0.012 260);
  --red-600:  oklch(55% 0.18 25);
}
/* 2. SEMÂNTICOS — papéis; a única camada que os componentes usam */
:root{
  --color-surface:     var(--gray-50);
  --color-text:        var(--gray-900);
  --color-action:      var(--blue-500);
  --color-danger:      var(--red-600);
  --color-border:      color-mix(in oklch, var(--color-text) 12%, transparent);
}
/* 3. DARK MODE — redefine só os semânticos */
@media (prefers-color-scheme: dark){
  :root{
    --color-surface: oklch(20% 0.01 260);
    --color-text:    oklch(95% 0.005 260);
    --color-action:  oklch(72% 0.15 254);   /* mais claro e menos saturado no escuro */
  }
}

6.4 Transparência e camadas

6.5 Gradientes

background: linear-gradient(in oklch, var(--blue-500), var(--teal-500));
/* interpolar em oklch/oklab evita o "cinza morto" no meio de dois matizes */
background: conic-gradient(from 90deg, ...);
background: radial-gradient(circle at 30% 20%, ...);

6.6 P3 como aprimoramento progressivo

.cta{ background: #0A66FF; }                 /* fallback sRGB */
@supports (color: oklch(0% 0 0)){
  .cta{ background: oklch(60% 0.20 258); }   /* pode "vazar" para P3 onde houver */
}
@media (color-gamut: p3){
  .cta{ background: color(display-p3 0.13 0.4 1); }
}
💡 Deixe o CSS derivar

Guarde poucos primitivos e derive o resto com oklch(from …) e color-mix(): hover = base −8% de L; borda = texto a 12% de alpha; disabled = texto a 38%. Menos tokens crus para manter, e as relações ficam explícitas no código em vez de escondidas em dezenas de hexadecimais.

💼 Mercado de trabalho

Perguntas de front-end: "Como você estrutura tokens de cor?" (primitivos → semânticos → componentes só usam semânticos; dark mode troca a camada semântica), "O que color-mix() e a relative color syntax resolvem?", "Por que interpolar gradiente em oklch?", "Como servir cores P3 sem quebrar sRGB?" (@supports / @media (color-gamut) + fallback).

✏️ Exercício 6 — Escreva o núcleo de tokens

Escreva o CSS de: 4 primitivos (ação, neutro claro, neutro escuro, perigo em oklch()); 6 semânticos (surface, text, text-muted, action, action-hover derivado, border derivada); e o bloco de dark mode redefinindo só os semânticos necessários. Explique como um componente de botão consumiria isso.

Gabarito (uma boa resposta): primitivos --blue-500, --gray-50, --gray-900, --red-600 em oklch(). Semânticos: --color-surface: var(--gray-50); --color-text: var(--gray-900); --color-text-muted: color-mix(in oklch, var(--color-text) 62%, var(--color-surface)); --color-action: var(--blue-500); --color-action-hover: oklch(from var(--color-action) calc(l - 0.08) c h); --color-border: color-mix(in oklch, var(--color-text) 12%, transparent). Dark: redefinir --color-surface, --color-text e --color-action (mais claro, C menor); os derivados se recalculam sozinhos. O botão usa background: var(--color-action), :hover → var(--color-action-hover), texto branco só se passar 4.5:1 (senão usar --color-text).

MÓDULO 07 · AVANÇADO

Cor para produto digital e web

Objetivo: o sistema de cor de uma aplicação — superfícies, elevação, estados, foco — cor de marca vs cor de UI, dados dentro do produto, modo escuro de verdade e theming.

7.1 O sistema de cor de um produto

PapelNotas
Superfícies (background, card, popover)a base neutra; a elevação se dá por diferença sutil de luminosidade e por sombra
Texto (primário, secundário, desabilitado, sobre cor)cada nível com contraste alvo; "sobre cor" tem par próprio validado
Bordas e divisoresgeralmente texto a baixo alpha; ≥ 3:1 quando delimitam um controle
Ação (primária, secundária, destrutiva, link)a cor de mais peso; destrutiva sempre com confirmação textual também
Estados (hover, active, focus, selected, disabled)derivados por regra (±L, alpha), não cores novas à mão
Focoanel visível, ≥ 3:1 com o fundo adjacente, não removível; use :focus-visible
Semânticas (success/warning/danger/info)cada uma com rampa própria: fundo suave, borda, texto, ícone

7.2 Cor em visualização de dados dentro do produto

7.3 Cor de marca × cor de UI

A cor da marca nem sempre pode ser a cor de ação: se a marca é um vermelho, ele colide com "erro/destrutivo"; se é um amarelo, não alcança contraste como fundo de botão com texto branco. Solução comum: a marca vive na navegação, no logo, em áreas de identidade; a ação é uma cor derivada ou vizinha, escolhida por contraste e por não colidir com as semânticas.

7.4 Modo escuro de verdade

7.5 Theming e white-label

Um produto que precisa vestir a marca de cada cliente: exponha uma cor de marca como entrada e derive a paleta inteira (rampa via OKLCH, semânticas, estados) por função — em vez de pedir 40 valores ao cliente. Fixe as semânticas de status (não deixe o cliente tornar o "erro" verde). Valide contraste automaticamente para qualquer cor de entrada e ajuste (ex.: forçar o texto sobre a cor de marca a preto ou branco conforme o L dela).

7.6 Governança

💼 Mercado de trabalho

Perguntas de product/design systems: "Como você faz um modo escuro que não é só inverter?" (superfícies escuras temperadas, elevação por luz, destaque com +L −C, revalidar contraste), "A cor de marca pode ser a cor de ação?" (nem sempre — colisão com semânticas e contraste), "Como suportar white-label sem caos?" (uma entrada → paleta derivada + semânticas fixas + validação de contraste), "Como cor de dados difere de cor de UI?".

✏️ Exercício 7 — Do claro para o escuro

Você tem no claro: surface branco, texto gray-900, ação oklch(60% 0.19 258) com texto branco (passa 4.5:1), borda gray-200. Descreva as mudanças para o modo escuro, item a item, e o que você reverificaria.

Gabarito (uma boa resposta): surface → oklch(~20% 0.01 260) (não #000); superfícies elevadas → ~24–28% L. Texto → oklch(~95% 0.005 260), não branco puro; texto secundário mais claro que no claro, revalidado. Ação → subir L para ~72% e baixar C para ~0.14 (oklch(72% 0.14 258)); reverificar se o texto sobre ela deve virar escuro em vez de branco. Borda → texto a ~14–18% de alpha (mais visível que no claro). Sombras → trocar por borda/again por luminosidade de superfície. Reverificar: todos os pares texto/superfície, texto-sobre-ação, anel de foco, e a paleta de dados (que também muda no escuro).

MÓDULO 08 · AVANÇADO

Cor para jogos e tempo real

Objetivo: entender o fluxo de cor linear, valores de albedo plausíveis para PBR, HDR e tonemapping, color grading no engine, e a legibilidade de cor no gameplay.

8.1 O fluxo linear (linear vs sRGB)

8.2 PBR e valores de albedo

8.3 HDR, exposição e tonemapping

8.4 Color grading no engine

8.5 Legibilidade de gameplay

8.6 Paleta e mood

⚠️ Armadilhas de cor em tempo real

Normal/roughness maps importados como sRGB (iluminação errada). Albedo com preto/branco puro ou com sombra pintada. Comparar o look com tonemapping desligado. Grading tão forte que o gameplay-critical some (loot que vira parte do cenário). Time vermelho vs time verde sem opção acessível. HUD testado só numa cena clara. "Ficou lindo no meu monitor" sem checar em SDR/HDR e em telas baratas.

💼 Mercado de trabalho

Perguntas (technical artist / game): "Por que iluminar em espaço linear?", "Que texturas não são sRGB?" (normal, roughness, metallic, AO), "O que o tonemapping faz e qual operador você usaria?" (ACES/AgX e por quê), "Como garantir que o loot é sempre visível?" (reservar cor + silhueta + grading que preserva o gameplay-critical), "Como fazer um modo daltônico de verdade?".

✏️ Exercício 8 — Diagnóstico e plano de cor

(a) Um objeto metálico no jogo aparece "chapado" e escuro sob qualquer luz. Cite duas causas de cor prováveis. (b) Playtesters daltônicos não distinguem aliados de inimigos (marcados por contorno vermelho/verde). Proponha a correção. (c) O jogo tem um bioma de deserto e um de floresta que parecem iguais de humor. O que você ajusta sem tocar nos assets?

Gabarito: (a) o normal/roughness map pode estar como sRGB (iluminação errada), ou o material está tratando o metal como dielétrico — metal precisa de metallic alto e a cor vindo do specular/reflectância, não do albedo difuso; albedo difuso de metal é ~0. (b) não usar vermelho/verde como única pista: pares seguros configuráveis (ex.: azul/laranja), ícones/formas diferentes por afiliação, e opção de daltonismo nas configurações; testar em deuteranopia. (c) temperatura e cor da luz (key quente e fill fria no deserto; verde-frio filtrado pela copa na floresta), fog colorido, e volumes de grading distintos (saturação, split toning, curvas) com key colors próprias — mais concept/color key para a equipe.

MÓDULO 09 · MUITO AVANÇADO

Cor para animação, motion e filme

Objetivo: escrever a jornada emocional em cor (color script), manter continuidade entre planos, trabalhar paleta limitada, e entender grading, espaços de vídeo e entrega.

9.1 Color script

Um color script é uma sequência de pequenos quadros (miniaturas pintadas) que mapeia a temperatura emocional da história ao longo do tempo — antes de animar. Usado em longas de animação para garantir que a cor "conta a história": o momento de esperança é quente e claro, o fundo do poço é dessaturado e frio, o clímax volta a saturar. É uma partitura de cor da narrativa inteira, vista de uma vez.

9.2 Paleta por sequência e continuidade

9.3 Paleta limitada em 2D

O Temerário Rebocado, de Turner: pôr do sol quente contra o navio frio
quentequentefriofrio
Turner, O Temerário Rebocado (1839). O quadro é uma aula de separação por temperatura: metade da tela em laranjas quentes, metade em azuis frios, e o navio branco exactamente na fronteira. É o que um color grading faz num plano de cinema — e a razão de funcionar é a mesma da complementar da secção 3.2. A leitura para quem trabalha em motion e vídeo: a separação figura/fundo pode ser feita por temperatura em vez de por luminosidade, e é menos óbvia ao espectador.Domínio público · National Gallery, Londres, via Wikimedia Commons

9.4 Grading, espaços de vídeo e scopes

EspaçoUso
Rec.709 / sRGB (gamma ~2.4)entrega HD, web, broadcast SDR — o alvo padrão
Rec.2020 + PQ/HLGHDR (UHD, streaming HDR) — muito mais brilho e gamut
ACESpipeline de cor cena-referida para produção; entra tudo, converte, entrega em vários alvos de forma consistente

9.5 Motion graphics e web

9.6 Entrega: "por que ficou diferente no player"

🔬 Aprofundamento — o mesmo princípio em três meios

Color script (animação), color key por nível (jogo) e a paleta semântica de um produto (web) são a mesma ideia: decidir antes, em relação, o que cada cor significa ao longo da experiência — e depois manter a coerência. A ferramenta muda (miniaturas pintadas, volumes de post-process, tokens em OKLCH), a disciplina não.

💼 Mercado de trabalho

Perguntas: "O que é um color script e para que serve?", "Como manter continuidade de cor entre planos?", "Por que as sombras numa paleta 2D não são só a base escurecida?", "Rec.709, Rec.2020, ACES — o que é o quê?", "Por que confiar em scopes e não no monitor?", "Como um vídeo 'fica diferente' de um player para outro?" (tags de espaço de cor e range).

✏️ Exercício 9 — Color script curto

Um curta de 3 atos: (1) rotina confortável, (2) perda e isolamento, (3) reconstrução. Descreva a paleta-chave de cada ato (dominante, acento, neutros, saturação, temperatura) e como você faria a transição entre eles. Depois cite um cuidado de acessibilidade se esse curta virar peça de motion para a web.

Gabarito (uma boa resposta): Ato 1: dominante quente-clara (âmbar/creme), acento verde suave, neutros mornos, saturação média-alta, temperatura quente. Ato 2: dominante fria e dessaturada (azul-acinzentado), acento mínimo, neutros frios, saturação baixa, luminosidade geral mais baixa — a cor "esvazia". Ato 3: a saturação e o calor voltam gradualmente, mas com uma paleta um pouco diferente da do Ato 1 (não é "voltar ao começo", é um novo equilíbrio) — talvez um acento novo. Transições: graduais ao longo de vários planos, acompanhando os beats; um plano-ponte com iluminação ambígua entre atos. Acessibilidade na web: nenhuma piscada > 3×/s, honrar prefers-reduced-motion com uma versão de transições suaves, e garantir que qualquer texto sobreposto mantém 4.5:1 durante toda a animação, não só nos extremos.

MÓDULO 10 · CARREIRA

Mercado de trabalho: roadmap, entrevistas e portfólio

Objetivo: converter o conteúdo dos módulos anteriores em contratação — onde cor pesa, um plano de estudo, um banco de perguntas com respostas e projetos que geram entrevista.

10.1 Onde cor pesa

10.2 Roadmap de estudo (6–8 semanas)

SemanasFocoPrática
1Percepção, modelos, gamut (Módulos 1–2)Recriar 5 paletas de apps que você admira em oklch(); ver cada uma em cinza
2Teoria e harmonias (Módulo 3)Gerar 4 paletas com esquemas diferentes a partir da mesma âncora; aplicar 60-30-10
3Construir paleta: rampas e tokens (Módulo 4)Criar uma paleta de produto: neutros temperados + ação + 4 semânticas, rampas 50–950 em OKLCH
4Acessibilidade (Módulo 5)Auditar a paleta: contraste de cada par, simulação de daltonismo, teste da escala de cinza
5Cor em CSS e tokens (Módulo 6)Implementar os tokens (primitivos → semânticos), color-mix/relative color para derivados, dark mode
6Produto: sistema, dark mode, theming (Módulo 7)Fazer o dark mode "de verdade" da UI da semana 3; montar um white-label a partir de 1 cor
7Um aprofundamento à escolha: jogos (Módulo 8) ou animação (Módulo 9)Jogo: um color key + grading de bioma no Unity. Animação: um color script de 12 quadros
8PortfólioEscrever os estudos de caso com o raciocínio e os números de contraste; publicar

10.3 Banco de perguntas de entrevista (com a resposta que aprova)

Júnior/pleno — "Quais são as três dimensões de uma cor?"

Matiz (hue — que cor é), saturação/croma (quão pura ou acinzentada) e luminosidade (lightness/value — quão clara ou escura). São os eixos de HSL, LCh e OKLCH. Raciocinar nesses eixos ("baixar croma, subir L") é mais produtivo que caçar hexadecimais.

Pleno — "Por que não fazer uma escala de tons variando o L de HSL?"

Porque HSL não é perceptualmente uniforme: o mesmo "L" parece mais claro no amarelo que no azul, e o matiz "deriva" ao mudar a luminosidade. Os degraus saem irregulares. Em OKLCH, variar o L dá passos visualmente regulares e o matiz se mantém.

Pleno — "Como você constrói a paleta de um produto?"

Âncora (marca ou ação) → 0–2 cores de suporte → escada de neutros (temperados, não cinza puro) → semânticas (success/warning/danger/info) → cada cor vira uma rampa 50–950 gerada em OKLCH (L regular, croma em arco, matiz quase fixo). Nomear em duas camadas: primitivos por escala, semânticos por papel; componentes usam só os semânticos. Validar contraste e daltonismo, documentar em specimen.

Pleno — "Quais os limites de contraste da WCAG e onde eles se aplicam?"

Texto normal 4.5:1 (AA) / 7:1 (AAA); texto grande (≥ 24px ou ≥ 18.66px bold) 3:1 / 4.5:1; componentes de UI e gráficos essenciais 3:1. Aplica-se também a texto secundário em cinza, placeholders, links, e texto dentro de botões coloridos. O ratio atual tem limitações; APCA (WCAG 3, rascunho) é o sucessor perceptual.

Pleno/sénior — "Como fazer um modo escuro que não seja só inverter?"

Superfícies em cinza muito escuro temperado (não #000); elevação por mais luz, não menos; cores de destaque com L maior e croma menor (senão "brilham"); texto a ~90–95% de L, não branco puro; sombras substituídas por diferença de luminosidade e borda; e revalidar todos os contrastes — eles não se transferem do tema claro. Na prática: redefinir só a camada de tokens semânticos.

Sénior — "A cor da marca pode ser a cor de ação da UI?"

Nem sempre. Se a marca é vermelha, colide com "erro/destrutivo"; se é amarela, não alcança contraste como fundo de botão com texto branco. Solução comum: a marca vive no logo/navegação/áreas de identidade e a cor de ação é uma vizinha derivada, escolhida por contraste e por não colidir com as semânticas de status.

Sénior / technical artist — "Por que iluminar em espaço linear e que texturas não são sRGB?"

Somar e multiplicar luz só é fisicamente correto em linear; por isso o engine converte o albedo (que é sRGB) para linear antes de iluminar e reaplica a curva no fim, após o tonemapping. Não são sRGB: normal map, roughness, metallic, ambient occlusion, height — são dados, e devem ser importados como "linear/non-color", senão a iluminação sai errada.

Armadilha — "Escolhi cores bonitas, tá pronto"

Cor é relação e sistema: sem rampas consistentes, contraste validado, comportamento em dark mode, teste de daltonismo e tokens, "cores bonitas" viram dívida. E "bonito no meu monitor" ignora gamut, calibração e o modo de alto contraste do usuário.

10.4 Projetos de portfólio que geram entrevista

  1. Sistema de cor de produto (âncora): paleta completa com rampas OKLCH, tokens em 3 camadas, dark mode real, specimen com todos os contrastes, e um texto explicando cada decisão.
  2. Redesign de acessibilidade: pegue um produto real com problemas de contraste/daltonismo e refaça a cor; mostre antes/depois com números e simulações.
  3. White-label a partir de uma cor: um gerador que recebe uma cor de marca e deriva a paleta inteira + semânticas, com validação de contraste automática.
  4. Paleta de dados acessível: conjuntos categórico, sequencial e divergente que funcionam em deuteranopia e em cinza, aplicados a gráficos reais.
  5. Um aprofundamento: um color script de um curta (12–20 quadros com o raciocínio emocional) ou um color key + grading de dois biomas de um jogo, com antes/depois.

10.5 Fontes para continuar

🏁 Síntese final da apostila

Cinco ideias sustentam a cor: (1) é percepção e relação — projete o par, não o valor isolado; (2) raciocine em OKLCH — luminosidade honesta, rampas regulares, matizes que combinam de peso; (3) acessibilidade não é opcional — contraste, nunca só a cor, e teste de daltonismo; (4) tokens em camadas transformam a paleta num sistema que o dark mode e o theming só reconfiguram; (5) em qualquer meio — web, jogo ou filme — a disciplina é a mesma: decidir antes, em relação, o que cada cor significa, e manter a coerência.