Design: ícones, ilustrações, animação e geração de imagens
Este guia mostra como deixar as peças do time com a mesma cara. São cinco decisões: uma família de ícones, a cor guardada num lugar só, a licença lida antes do uso, o movimento mais barato e a imagem leve. Ele serve para quem publica página, e-mail e anúncio toda semana.
Boa parte do trabalho hoje passa por um agente de IA. Ele preenche sozinho tudo o que o pedido não disser, e o resultado muda a cada vez. Por isso cada decisão daqui vira uma linha escrita, com número e nome de arquivo.
Ícones: uma família por projeto
Comece pelos ícones, porque a bagunça neles aparece de mais longe. Um sino de uma biblioteca ao lado de uma engrenagem de outra tem traço e proporção diferentes. A barra inteira parece montada às pressas.
Duas barras de interface com os mesmos quatro comandos. Na faixa aprovada os ícones vêm de uma só família, com traço e proporção uniformes; na reprovada cada ícone vem de uma biblioteca diferente e a barra parece montada às pressas.
A regra é escolher uma família só por projeto e escrever o nome dela no arquivo de instruções do agente. Peça o conjunto de uma vez, com a espessura do traço declarada. Cada pedido separado é uma nova chance de o agente escolher outro padrão.
A cor do ícone sai do desenho e vai para um token, ou seja, um apelido de cor guardado num lugar só. Um valor cravado no componente, como #1a1a1a, vira preto sobre preto quando o tema escuro entra. Com var(--color-icon), o mesmo ícone recebe um valor no claro e outro no escuro.
Dentro do botão, uma palavra do CSS termina o serviço que o token começou: currentColor. O desenho declarado com stroke="currentColor" herda a cor do texto do elemento que o abriga, então passar o cursor, chegar pelo teclado e desabilitar o botão movem rótulo e ícone juntos, sem uma segunda variável para cada estado. O token pinta o texto, e o traço acompanha.
Lucide e as outras famílias
A referência do guia é a Lucide, uma família de traço único. A licença dela é a ISC, ou seja, o autor libera o uso comercial sem pedir crédito. Ela tem componente pronto para React, Vue e Svelte, e três ajustes resolvem quase tudo: tamanho, espessura e cor.
Importe só o que usa, com import { Bell, Settings, User }. Assim apenas esses três desenhos entram no pacote que o visitante baixa. A importação em bloco arrasta a coleção inteira para a conta dele.
Catálogo grande não decide a escolha. Phosphor tem 9.072 ícones, Tabler tem 6.184, Heroicons tem 316 e o Material Symbols passa de 2.500 desenhos. O Iconify junta mais de 300.000 num serviço só, e ali cada conjunto mantém a licença do dono.
Licença e catálogo mudam de uma versão para outra. A versão 1.0 da Lucide, de 23 de março de 2026, tirou os ícones de marca do pacote. Quem exibia símbolo de rede social por ela viu o rodapé quebrar. Antes de atualizar pacote visual, leia o registro de mudanças.
Rótulo, alvo de toque e ícone de aplicativo
O rótulo mora no botão e o desenho fica decorativo: aria-label no botão, aria-hidden no ícone. Assim o leitor de tela anuncia uma coisa só, e quem enxerga vê o mesmo comando.
Botão com ícone de 20 pixels dentro dos dois alvos de toque da WCAG 2.2: 24 por 24 pixels no mínimo AA do critério 2.5.8 e 44 por 44 pixels no nível AAA, medidos no botão inteiro.
A norma de acessibilidade WCAG 2.2 pede alvo de toque de 24 por 24 pixels. Os 44 pixels que este guia usa vêm do nível mais alto da mesma norma e valem para o botão inteiro, que é o que o dedo alcança.
Para o ícone do aplicativo, cinco arquivos cobrem tudo, e a lista antiga de dezenove tamanhos envelheceu. A conferência que pega fundo preto e recorte é salvar o site na tela inicial de um Android e de um iPhone.
Arquivo
Onde aparece
Regra que não pode ser violada
favicon.svg
Aba do navegador moderno
Aceita variante para tema escuro; peso de 1 a 2 KB
favicon.ico (16 e 32 px)
Navegador antigo, como retaguarda
Os dois tamanhos embutidos no mesmo arquivo
apple-touch-icon.png 180×180
Tela inicial da Apple
Fundo sólido: ali a transparência vira preto
Manifesto 192 e 512 px
Instalação como aplicativo
As duas versões declaradas no manifesto
Versão recortável (maskable)
Tela inicial do Google
Arte contida nos 80% centrais, por causa do recorte
Quadro do curso Frontends com Vibecoding.
Ilustração e fonte: a licença decide antes do gosto
Com os ícones no lugar, o risco seguinte vem de fora: ilustração e fonte baixadas da internet. Escolha primeiro a categoria, porque categoria errada não se conserta com pedido melhor. Ícone resolve ação, ilustração resolve narrativa e tela vazia, e fundo gerado resolve textura.
Antes de adotar material de fora, faça duas conferências. Abra a licença e procure a palavra comercial. Depois pergunte se aquele desenho ajuda alguém a entender alguma coisa.
Material gratuito com atribuição obrigatória pede crédito visível ao autor. Sem o crédito você descumpre o combinado, mesmo tendo baixado de graça. As diferenças entre as bibliotecas conhecidas cabem num quadro.
Biblioteca
Licença
O que ela exige ou proíbe
unDraw
Licença própria, gratuita e comercial
Proíbe compilar os desenhos para montar serviço concorrente, redistribuí-los em pacote e usá-los para treinar modelos de IA
Storyset (Freepik)
Gratuita com atribuição
O crédito à empresa é condição do uso gratuito; a dispensa exige assinatura Premium do Flaticon, e só enquanto ela durar
Humaaans e Open Peeps
CC0, domínio público
Uso comercial sem permissão e sem crédito; a declaração vale para essas duas bibliotecas, e outros projetos do mesmo autor têm termos próprios
DiceBear (avatares)
Código MIT; cada estilo com licença do artista
Na página oficial de licenças convivem estilos CC0, CC BY 4.0 (crédito obrigatório) e termos próprios; a conferência é por estilo
Boring Avatars
MIT
Manter o aviso de copyright junto ao código; cobre o pacote React
Fontes: páginas de licença de unDraw, Storyset, Humaaans, Open Peeps, DiceBear e Boring Avatars, lidas em 18 de agosto de 2026.
Fluxo de decisão de licença. Cada ramo tem saída própria: CC0 libera o uso, atribuição exige crédito visível e proibição específica fica fora do uso.
A fonte do site vem de dentro de casa
Guarde a fonte dentro do projeto, com o Fontsource, em vez de buscá-la no servidor do Google. O texto aparece antes, porque some uma conexão externa. E o dado de quem visita não sai da sua casa.
O risco tem endereço. Em 20 de janeiro de 2022, o tribunal regional de Munique condenou um site alemão a indenizar um visitante. O Google Fonts remoto enviava ao Google o endereço de internet dele, o número que identifica quem acessa, sem consentimento.
No Brasil a lógica é a mesma pela LGPD, ou seja, a lei que protege os dados do cliente e limita o que você guarda. A autoridade brasileira de proteção de dados lista o endereço de internet entre os dados pessoais.
Prefira fonte variável, porque um arquivo só entrega as várias espessuras. Declare também font-display: swap, para o texto aparecer de imediato na fonte reserva. A conferência final é a aba Rede do navegador, sem nenhuma chamada para fonts.googleapis.com.
Vetor exportado passa pelo SVGO
Todo vetor que sai do Figma passa pelo SVGO antes de entrar no projeto. Vetor, ou SVG, é o desenho que o navegador redesenha em qualquer tamanho sem borrar. O resultado esperado é metade do peso, com a arte igual.
Um cuidado mudou de lado na versão 4 do SVGO. Ela parou de remover o viewBox e o title, e o vetor mantém escala e acessibilidade. A mudança entrou em 21 de junho de 2025, e projeto que ainda roda o SVGO 3 precisa do ajuste na mão. Descobrir em qual dos dois casos você está custa um npm ls svgo.
Movimento: suba um degrau por vez
Com os arquivos escolhidos, entra o movimento. O guia organiza a animação numa escada de quatro degraus, ordenada por custo. Suba um degrau só quando o de baixo falhar na sua tela.
A escada do movimento em quatro degraus ordenados por custo. A subida acontece apenas quando o degrau de baixo falha na sua tela.
CSS puro (transition e @keyframes): peso zero. Resolve reação ao cursor, foco e entrada de bloco.
Recurso nativo do navegador: peso zero. O <dialog> entrega janela sobreposta com foco preso, e o popover entrega menu suspenso sem cálculo de posição.
Motion: custa um pacote. Para React com gesto, mola e entradas coordenadas.
GSAP: custa pacote e tempo de estudo. Para linha do tempo longa amarrada à rolagem.
Quase toda tela de produto vive nos dois primeiros degraus. Trocar um recurso nativo do navegador por componente de biblioteca cobra peso e devolve o mesmo resultado na tela.
Técnica
O caso que a justifica
Custo e risco
Transição de CSS
Hover, foco, mudança de estado simples
Mínimo: nativo, zero instalação
Animação dirigida por rolagem (CSS)
Revelar bloco ao rolar; barra de progresso de leitura
Mínimo em peso, mas a MDN ainda a marca como disponibilidade limitada em agosto de 2026; trate como melhoria progressiva atrás de @supports
Transição de visualização (nativa)
Trocar estado ou tela dentro do mesmo documento
Baixo no mesmo documento: Baseline 2025 desde outubro, segundo a MDN; entre documentos segue disponibilidade limitada
Motion (antiga Framer Motion)
Microinteração em React, monta e desmonta, gesto
Médio: é dependência, e é a melhor delas para React
GSAP
Linha do tempo complexa e narrativa longa de rolagem
Médio a alto: potente, e caro demais para revelar um bloco
Rive
Mascote e ícone com máquina de estado, que reage ao usuário
Baixo ao rodar; exige o editor próprio para autorar
Lottie
Vetor exportado do After Effects que toca do início ao fim
Médio: o arquivo costuma pesar mais que o equivalente em Rive
Lenis
Rolagem suave igual em todos os navegadores
Baixo, mas é dependência: precisa ser desligada sob menos movimento e limpa na desmontagem
Quadro do curso Frontends com Vibecoding, com o estado das bibliotecas registrado em julho de 2026.
O degrau nativo entre o CSS puro e o Motion
A escada ganhou um degrau depois de desenhada, e ele mora entre o CSS puro e o Motion. A regra @starting-style descreve o estado de onde o elemento parte quando aparece, e com ela a entrada e a saída animam a partir de display: none. O diálogo que surgia de estalo passa a abrir e a fechar com transição, sem uma linha de script.
O painel que abre se resolve com a outra metade da dupla. A propriedade interpolate-size, junto da função calc-size(), deixa a animação chegar em height: auto, a altura que o navegador só conhecia depois de terminar a conta. Chrome e Edge entregam as duas desde a versão 129, e elas estão entre os focos do Interop 2026, o programa em que os fabricantes de navegador combinam o que vão acertar no ano.
Como pendurar isso sem quebrar a tela de ninguém: escreva a animação dentro de um bloco @supports e deixe o estado final legível sem ela. Quem abrir a página num navegador que ignora a regra continua vendo o painel aberto e o diálogo na tela, com o conteúdo no lugar. Altura em movimento ainda custa recálculo de desenho a cada quadro, então guarde o recurso para o bloco pequeno que abre e mantenha a cena longa em transform.
Tooltip e popover presos ao ícone, sem biblioteca
Menu e dica de texto que nascem colados a um botão de ícone eram o caso clássico de instalar uma biblioteca de posicionamento. O CSS já dá conta disso sozinho: position-anchor amarra o elemento flutuante à âncora, a função anchor() lê a borda dela para posicionar, e @position-try guarda os planos alternativos para quando a dica encosta no fim da tela.
O suporte fechou o círculo em 2026. O Firefox ligou o recurso por padrão na versão 147 e o Safari 26 passou a entregar o @position-try, o que leva a cobertura para algo em torno de 91% do tráfego global. É o par natural do popover nativo que a escada já recomenda: um entrega a camada por cima, o outro decide onde ela para.
Suporte de @starting-style, interpolate-size e do posicionamento por âncora conferido nas notas de versão de Chrome, Edge, Firefox e Safari e na pauta do Interop 2026, em 2 de setembro de 2026.
Motion e GSAP, em uma frase cada
O Motion serve a gesto e mola em React: arrastar, reordenar e gaveta que segue o dedo. A versão 13.1.0 saiu em 10 de agosto de 2026, sob licença MIT. Revelar bloco ao entrar na tela continua sendo CSS puro.
O GSAP serve à linha do tempo longa amarrada à rolagem, com cinco peças ou mais entrando em ordem. Ele ficou gratuito por inteiro em 30 de abril de 2025, depois da compra pela Webflow.
A diferença de responsabilidade importa. No Motion, um ajuste desliga sozinho as animações para quem pediu menos movimento. No GSAP essa verificação fica com você, e sem ela a cena roda para quem pediu para não rodar.
As três regras que não se negociam
A primeira é respeitar a preferência de menos movimento do sistema. A população sensível é grande: 35,4% dos adultos com 40 anos ou mais têm alguma disfunção do labirinto. Efeito de profundidade e giro desligam; cor e opacidade continuam.
A segunda é o estado base visível. O opacity: 0 mora dentro do @keyframes from, porque na regra base do elemento ele apaga o conteúdo de quem não recebe a animação.
A terceira é animar só transform e opacity. Animar altura para abrir um painel refaz a conta do desenho a cada quadro, e o toque demora a responder.
As faixas de duração fecham o orçamento: 120 a 200 milissegundos para microinteração, 200 a 300 para troca de estado, 240 como ponto ideal de entrada. Acima de 400 a interface fica preguiçosa. A curva padrão de entrada é ease-out.
O sistema operacional guarda uma segunda preferência ao lado da de movimento reduzido. A consulta prefers-contrast: more entrega a escolha de quem pediu tinta mais separada do fundo, e os tokens de cor respondem a ela como já respondem ao tema escuro: um bloco a mais na folha de estilo, com os valores de contraste elevado. Quem atende o pedido de menos movimento e passa por cima desse segundo pedido cobre metade de quem levantou a mão.
Imagem gerada por IA: direito, coerência e peso
Movimento resolvido, sobra a imagem. A regra de fronteira vem antes de qualquer pedido: use imagem gerada por modelo para textura e cena de fundo, que você vai editar depois.
Para o que representa a marca, como logotipo, ícone de sistema e diagrama, use vetor sob medida, recurso de código aberto com licença clara ou foto licenciada. A saída do modelo é rascunho, e o desenho final passa por você.
Os três cuidados na ordem que o curso ensina: direito, coerência e peso. Cada etapa carrega o seu resumo prático.
Os três cuidados vêm em ordem, e a ordem faz parte da regra: direito primeiro, coerência depois, peso por último. Trocar essa ordem custa a campanha.
Direito: quem é dono do quê
Cada plataforma tem termos próprios sobre quem detém o resultado. Descobrir isso com a campanha no ar custa mais do que refazer a arte inteira. Registre plataforma, data, instrução usada e edições feitas.
O que protege é a contribuição humana registrada, porque a geração pura não entra no registro. Nos Estados Unidos a discussão fechou: em 18 de março de 2025, no caso Thaler contra Perlmutter, o tribunal decidiu que direito autoral exige obra criada por gente.
Plataforma (versão dos termos)
Quem é dono da saída
O detalhe que decide
OpenAI, termos de uso (1º de janeiro de 2026)
O usuário, com cessão expressa da OpenAI
A saída pode se repetir entre usuários, e a cessão vale "na medida permitida pela lei aplicável": contrato não cria direito autoral onde a lei o nega
OpenAI, contrato de serviços para empresas e API (1º de janeiro de 2026)
O cliente
A cláusula 13.1 obriga a OpenAI a indenizar o cliente por alegação de que os serviços violam propriedade intelectual de terceiro, com exclusões para conteúdo e aplicações do próprio cliente
Midjourney (27 de maio de 2026)
O usuário
Empresa com receita anual acima de US$1 milhão, ou empregado dela, só é dona dos ativos com plano Pro ou Mega; ampliar imagem alheia mantém a propriedade do criador original
Google, termos da Gemini API (23 de março de 2026)
O Google declara que não reivindica propriedade
O mesmo conteúdo pode ser gerado para outros usuários, e a responsabilidade pelo uso é de quem publica
Google Cloud, termos de serviço (29 de julho de 2026)
O cliente ("Generated Output is Customer Data")
A indenização por violação de terceiro cobre saída sem modificação de serviço listado, e cai se o cliente sabia da provável infração ou desligou filtros e citações
Adobe Firefly, termos de IA generativa (15 de abril de 2024)
Conforme o plano
A indenização ampla exige contrato enterprise específico; nos termos padrão o teto declarado é de US$10.000 por saída indenizada, e modificar a saída quebra a cobertura
Fontes: termos de uso de OpenAI, Midjourney, Google, Google Cloud e Adobe Firefly, lidos em 18 de agosto de 2026.
Brasil: a lei de hoje e a que vem
A régua em vigor é a Lei 9.610, de 1998, cujo artigo 11 diz que autor é a pessoa física criadora da obra. Máquina não entra nessa definição, e nenhum tribunal superior brasileiro firmou posição sobre imagem gerada por IA.
O marco legal da inteligência artificial, o PL 2338, passou pelo Senado em 10 de dezembro de 2024 e espera parecer na Câmara. O texto obriga identificador de procedência em conteúdo feito por máquina.
A leitura prática é uma só: trate essa marcação como requisito de projeto agora, porque adaptar depois custa a campanha inteira. O padrão que o mercado já adota é o Content Credentials do C2PA, com especificação publicada em 5 de janeiro de 2026.
O selo que você confere na imagem que chega
A credencial tem duas pontas, e o guia até aqui cobriu a de cima: o arquivo que você gera sai marcado. A de baixo é a imagem que chega pronta, de um banco de imagens, de uma agência ou do celular de um parceiro. Ela entra numa conferência antes de subir para a página.
O padrão publica a própria ferramenta de inspeção, e ela é aberta: abra verify.contentauthenticity.org, da Content Authenticity Initiative, arraste o arquivo e leia o que o selo declara sobre origem e edições. Imagem sem credencial nenhuma continua publicável, e o registro de plataforma, data e instrução que esta seção pede passa a valer também para o material que veio de fora.
Coerência, e o texto que nunca entra na arte
Sem uma instrução base reutilizável, cada seção do site sai com uma estética. Isso anula o motivo de encomendar ilustração própria. Escreva um pedido base com traço, paleta e proporção, e varie só o tema.
Texto nunca vai dentro da imagem gerada. O modelo escreve palavra com erro e acento fora do lugar, e o problema piora em português. Ponha o texto por cima, em HTML: a palavra sai correta e o leitor de tela enxerga.
Pedido vago devolve estética média. O pedido que funciona tem seis linhas. Nelas cabem propósito e público, direção estética em palavras, o que é proibido e o elemento memorável. As duas últimas trazem o piso de acessibilidade e a lista de escolhas, com o motivo de cada uma.
Formato e peso: nunca sirva imagem maior que o espaço
A arte pronta ainda atravessa a rede de outra pessoa. O desperdício mais silencioso é servir a foto do jeito que ela saiu da pasta. Quem abre a página no 4G desiste antes de ver o preço, e essa desistência não deixa registro.
O tamanho do problema tem medição pública. No levantamento do Web Almanac de 2025, a página inicial mediana pesa 2.862 KB no computador e 2.559 KB no celular. A imagem é o maior pedaço da conta: 1.058 KB e 911 KB.
Peso mediano da home segundo o Web Almanac 2025, com dados de julho de 2025. A imagem é o maior componente da conta nas duas telas: 1.058 KB dos 2.862 KB no computador e 911 KB dos 2.559 KB no celular.
Velocidade vira dinheiro. Um estudo da Deloitte com 37 marcas mediu o efeito de 0,1 segundo a menos no carregamento do celular: 8,4% a mais de conversão no varejo. Conversão, aqui, é o interessado que vira cliente pagante.
Um número famoso saiu de validade. A estatística de que 53% das visitas de celular somem depois de três segundos vem de um estudo de 2016, cuja página oficial não existe mais. O dado da Deloitte ocupa esse lugar hoje.
A regra mestra é curta: nunca sirva uma imagem maior do que o espaço onde ela aparece. Essa frase resolve a maior parte das páginas lentas.
A esteira de peso do curso, com a área de cada retângulo acompanhando a queda: 4,2 MB no original, 380 KB na largura real e 96 KB no formato moderno. Regra mestra: nunca sirva uma imagem maior do que o espaço onde ela aparece.
A escala aparece na esteira. O original de 4,2 MB cai para 380 KB no tamanho real e para 96 KB no formato moderno. Para foto e cena, o alvo é ficar abaixo de 150 KB no espaço em que a imagem aparece.
AVIF é a primeira escolha e WebP é a retaguarda, dois formatos que guardam a mesma foto em bem menos espaço que o JPEG. O WebP funciona em todo navegador desde março de 2023, e o AVIF desde 25 de julho de 2026.
Tipo de imagem
Primeira escolha
Retaguarda
Foto de produto ou pessoa
AVIF
WebP e depois JPEG
Ícone, ilustração e gráfico simples
Vetor (SVG)
Nenhuma: funciona em todo lugar
Imagem com transparência
AVIF, que tem canal alfa
WebP e depois PNG
Captura de tela com texto fino
WebP sem perda
PNG; compressão com perda borra letra pequena
Quadro do curso Frontends com Vibecoding, montado sobre o suporte de formato dos navegadores atuais.
Na entrega, quatro atributos fazem o trabalho
O elemento <picture> oferece os formatos em ordem, e o navegador para no primeiro que entende. Os atributos srcset e sizes fazem o celular baixar a versão pequena, enquanto o computador baixa a grande.
A largura e a altura declaradas reservam o espaço e impedem o botão de mudar de lugar na hora do toque. A prioridade alta vai só na imagem principal do topo, e o carregamento preguiçoso fica para o que está fora da primeira tela.
Imagem decorativa leva alt vazio, e imagem que informa leva descrição objetiva. Repetir o nome do arquivo ali engana quem depende do leitor de tela.
A medição final é a aba de rede do navegador, com o cache desligado. O alvo público é o dos Core Web Vitals: conteúdo principal em 2,5 segundos, resposta ao toque em 200 milissegundos e pouco deslocamento de layout.
Catálogo: trinta e seis tipos de peça visual, cada um com a regra que o rege
As cinco decisões deste guia dizem como escolher; este catálogo mostra o que existe para escolher. São trinta e seis tipos de peça visual em cinco famílias: ícone de interface, ilustração, imagem e foto, movimento e entrega. Cada tipo traz para que serve, onde entra na régua do guia (a biblioteca, o pedido base, o script de build), o caso em que a forma engana, e um exemplo desenhado com o dia a dia deste portal: o botão de enviar proposta, o estado vazio do CRM, a capa da aula, o selo de resposta em uma hora. Todo exemplo é SVG inline com cor vinda dos tokens da página, e por isso troca de tema com o site; os tipos de movimento aparecem em quadros parados, porque o catálogo precisa ler sem animar. Abaixo de cada figura, um bloco fechado traz a receita (Lucide, HTML, CSS, o pedido para o modelo de imagem ou o script da esteira) e a ficha técnica com tamanho, formato, peso e o que a acessibilidade exige.
Sobre os exemplos: as peças das trinta e seis figuras foram desenhadas para ilustrar o formato, e a legenda de cada uma repete o aviso. Nenhuma é o logotipo, a foto ou o produto real de um cliente; ao reutilizar um tipo, troque a peça pela sua e mantenha a licença lida, a cor por token e o rótulo no botão, como as seções anteriores cobram.
Ícones de interface
O ícone resolve ação: ele diz o que o botão faz num espaço de 24 pixels. Todos os tipos desta família vêm de uma única biblioteca por projeto, com a cor herdada do texto e o rótulo morando no botão.
1. Ícone de traço (outline)
Serve para: a barra de comandos, o menu e qualquer ação da interface, com o desenho leve que convive com texto. Onde entra: biblioteca única do projeto (a referência do guia é a Lucide), importada por nome. Quando evitar: misturando com ícones preenchidos de outra família: traço e preenchido só convivem quando vêm do mesmo desenho.
Oito ícones de traço da mesma família, todos com traço de 2 px na grade de 24. É a família inteira que dá à barra a cara de produto acabado. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Importe cada ícone por nome, defina tamanho, espessura e cor uma vez no componente e deixe a cor herdar do texto. Nenhum ícone entra por arquivo solto.
Receita em Lucide (React):
import { Bell, Settings, User, Search } from 'lucide-react';
<button aria-label="Notificações">
<Bell size={20} strokeWidth={2} aria-hidden="true" />
</button>
/* a cor vem do texto do botão: stroke="currentColor" */
Item
Valor
Grade
24 × 24 px
Traço
2 px (1,5 px em tamanhos acima de 32)
Cor
currentColor, herdada do texto
Licença
ISC (Lucide)
Formato
SVG inline via componente
2. Ícone preenchido (estado ativo)
Serve para: dizer que algo está ligado: o coração curtido, a estrela favoritada, a aba selecionada. Onde entra: a mesma família, na variante preenchida do mesmo desenho. Quando evitar: como estilo padrão de toda a barra: o preenchido pesa mais que o texto e cansa em série.
Quatro pares: o traço para inativo e o preenchido para ativo. É o mesmo desenho, então a troca de estado lê como uma transição e não como um ícone novo. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Use a variante preenchida da mesma família ou preencha o traço com a cor atual. Troque por classe, não por outro arquivo, e mantenha o rótulo: o estado também vai no aria-pressed.
Serve para: dar destaque a um ícone grande sem trocar de família: cartão de recurso, ícone de seção, hero. Onde entra: a mesma família, com uma segunda camada de preenchimento translúcido na cor da marca. Quando evitar: em tamanho de botão: abaixo de 24 px a segunda cor vira ruído.
Quatro ícones em duas cores: traço na cor do texto e preenchimento translúcido na cor da marca. Serve para os cartões de recurso do portal, onde o ícone tem 40 px ou mais. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Desenhe o mesmo path duas vezes: uma com fill translúcido e sem traço, outra com traço e sem fill. Duas classes, dois tokens, e o tema escuro troca os dois.
Serve para: o tamanho certo do ícone e do botão que o abriga, para o dedo acertar e o traço não borrar. Onde entra: todo botão de ícone do produto. Quando evitar: alvo de 24 px como botão: é o mínimo da norma, e o guia sobe para 44 porque o dedo é maior que o cursor.
O ícone de 24 px centrado num alvo de 44 px, e ao lado a comparação: o botão de 44 px e o ícone solto de 24. A WCAG 2.2 pede 24 no mínimo; o guia usa 44 no botão inteiro. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Desenhe na grade de 24 com margem interna de 2 px, e dê ao botão 44 × 44 com o ícone centrado. Em CSS, o botão tem largura e altura mínimas e o SVG não recebe padding.
Serve para: a ação principal, que precisa ser lida por quem enxerga e por quem ouve o leitor de tela. Onde entra: todo botão; o ícone sozinho só quando o espaço obriga, e aí com aria-label. Quando evitar: rótulo genérico como "clique aqui": o leitor de tela anuncia o nada.
Três botões: o certo com rótulo visível, o aceitável com rótulo só para o leitor de tela, e o reprovado com "clique aqui". O ícone é decorativo nos três. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
O texto vai no botão e o SVG recebe aria-hidden. Quando o rótulo visível não cabe, o aria-label no botão diz a ação em verbo, nunca o nome do ícone.
Serve para: avisar que há novidade sem abrir nada: notificações, mensagens, presença, alerta. Onde entra: o botão de ícone, com o selo posicionado no canto pelo CSS. Quando evitar: selo só por cor sem número ou texto: quem não distingue a cor perde o aviso.
Quatro selos sobre botões de ícone: contador de um e de dois dígitos, ponto de presença e aviso. O número entra também no rótulo acessível do botão. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
O selo é um span posicionado no canto superior direito do botão, com fundo na cor da marca e texto branco de pelo menos 12 px em negrito. Acima de 99, escreva 99+.
Serve para: a marca no cabeçalho, no rodapé e no favicon, sem o texto virar mancha quando encolhe. Onde entra: vetor sob medida, versionado no repositório; nunca gerado por IA. Quando evitar: uma versão só para todos os tamanhos: o nome desaparece abaixo de 20 px e o símbolo sobra grande demais acima de 48.
O mesmo logotipo em três versões: assinatura completa, reduzida e só o símbolo. A regra de corte por tamanho vai escrita, e o CSS troca a versão pela largura. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Três arquivos SVG a partir do mesmo desenho, com o texto convertido em curvas e a cor por currentColor onde o guia da marca permitir. O picture ou uma classe por breakpoint escolhe a versão.
Serve para: a aba, a tela inicial do celular e a instalação como aplicativo, com um conjunto de cinco arquivos. Onde entra: exportado do símbolo do logotipo, em SVG e PNG, declarado no head e no manifesto. Quando evitar: a lista antiga de dezenove tamanhos: ela envelheceu, e cinco arquivos cobrem tudo.
Os cinco arquivos: favicon SVG, ICO de retaguarda, ícone da Apple com fundo sólido e os dois do manifesto, com o círculo dos 80% centrais marcado no recortável. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Exporte do símbolo, com fundo sólido onde a transparência vira preto e a arte contida no círculo central do maskable. A conferência é salvar o site na tela inicial de um Android e de um iPhone.
Serve para: dizer sucesso, atenção, erro e informação numa mensagem, sem depender só da cor. Onde entra: a família de ícones, num círculo de fundo com a cor de estado por token. Quando evitar: só a cor, sem forma nem texto: a WCAG 1.4.1 reprova, e o daltônico não vê a diferença.
Quatro estados com cor e forma combinadas: verde com ✓, dourado com !, vermelho com ✕ e azul com i. A cor reforça; a forma e o texto ao lado carregam a informação. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Um círculo de fundo por token de estado e o ícone da família dentro, sempre com a mensagem em texto ao lado. O role="status" ou "alert" no contêiner avisa o leitor de tela.
Receita em HTML e CSS:
<p class="mensagem mensagem--ok" role="status">
<CircleCheck aria-hidden="true" />
Proposta enviada. O comercial responde em até 24 h.
</p>
<style>
.mensagem--ok { --cor: var(--green-ink); --fundo: var(--green-soft); }
.mensagem--alerta{ --cor: var(--gold-ink); --fundo: var(--gold-soft); }
.mensagem { color: var(--cor); background: var(--fundo); }
</style>
Estado
Forma
Token de cor
Papel ARIA
Confirmado
✓
green
status
Atenção
!
gold
status
Erro
✕
ll (vermelho)
alert
Informação
i
navy
status
10. Avatar de iniciais ou geométrico
Serve para: identificar a pessoa no CRM, no comentário e na lista de leads quando não há foto. Onde entra: gerado no código a partir do nome (iniciais e cor por hash) ou por biblioteca como o Boring Avatars (MIT) e o DiceBear (licença por estilo). Quando evitar: foto de banco de imagens como avatar de pessoa real: engana, e a licença raramente cobre o uso.
Quatro avatares de iniciais com a cor derivada do nome e três geométricos gerados a partir de uma semente. Nenhum precisa de foto, e o mesmo nome dá sempre o mesmo avatar. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Calcule um hash do nome, escolha a cor numa paleta de tokens pelo resto da divisão e escreva as iniciais em branco. Para o geométrico, a semente é o e-mail, e a biblioteca desenha.
A ilustração resolve narrativa e tela vazia: ela explica uma ideia que o ícone não cabe. A licença decide antes do gosto, e o pedido base com traço, paleta e proporção garante que a segunda ilustração pareça irmã da primeira.
11. Ilustração spot e ilustração de cena
Serve para: a spot explica um benefício ao lado do texto; a cena abre a página com o contexto inteiro. Onde entra: biblioteca com licença comercial lida (unDraw, Humaaans, Open Peeps) ou geração por IA com pedido base. Quando evitar: cena onde cabe uma spot: a ilustração grande empurra o texto e o leitor rola sem ler.
À esquerda, a spot de 120 px com uma ideia só; à direita, a cena com várias na proporção 3:1. As duas usam o mesmo traço e os mesmos quatro tokens de cor. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Defina o pedido base (traço, paleta de quatro tokens, proporção) uma vez e varie só o tema. Exporte em SVG quando o desenho é plano; em AVIF quando tem textura.
Receita em pedido base + SVG:
Pedido base (guarde no arquivo de instruções do agente):
Ilustração plana, traço de 2 px, sem gradiente, sem sombra, sem texto.
Paleta: #DD235B, #1E2365, #C8962C, fundo #FFF5F8.
Tema desta peça: [uma frase]. Proporção: [1:1 spot | 3:1 cena].
Saída: SVG com viewBox, sem fontes embutidas.
Tipo
Proporção
Tamanho
Formato
Spot
1:1
96 a 160 px
SVG
Cena
3:1 ou 16:9
largura da coluna
SVG ou AVIF ≤ 150 KB
12. Ilustração de estado vazio
Serve para: a lista sem itens, a busca sem resultado e a caixa de entrada zerada, sem parecer erro. Onde entra: spot pequena da mesma família, com título, uma frase e a ação seguinte. Quando evitar: estado vazio sem ação: a tela diz que não há nada e deixa a pessoa parada.
O estado vazio do CRM: ilustração pequena, título que diz o que aconteceu, frase de contexto e o botão do próximo passo. É a tela que mais aparece e menos se desenha. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Ilustração spot de 96 px, título em uma frase afirmativa, uma linha de contexto e um botão. Sem a ilustração a tela ainda funciona; ela só tira a cara de erro.
Receita em HTML:
<div class="vazio" role="status">
<img src="/ilustra/sem-lead.svg" alt="" width="96" height="96">
<h3>Nenhum lead sem dono</h3>
<p>Todos os cartões deste segmento já têm responsável.</p>
<a class="botao-primario" href="/leads">Ver todos os leads</a>
</div>
Elemento
Regra
Ilustração
96 px, decorativa (alt vazio)
Título
afirmativo, diz o que aconteceu
Frase
uma linha de contexto
Ação
botão com o próximo passo
13. Ilustração isométrica
Serve para: mostrar um sistema como objetos no espaço: servidores, telas, fluxo entre caixas, na página de produto. Onde entra: vetor sob medida ou geração por IA com o ângulo declarado no pedido; SVG quando plano. Quando evitar: para explicar processo: a isometria decora, e o diagrama do guia irmão explica.
Três objetos isométricos: cada um com topo, frente e lado em três tons da mesma cor, luz vinda da esquerda. É o estilo das páginas de produto de software. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Ângulo de 30 graus, três faces por objeto com três tons do mesmo token, e nenhuma perspectiva real. No pedido para IA, declare "isométrico, 30 graus, sem perspectiva".
Receita em pedido para IA + SVG:
Ilustração isométrica, ângulo de 30 graus, sem perspectiva, luz da esquerda.
Objetos: um servidor, uma tela de CRM e um painel, ligados por linhas finas.
Paleta: #1E2365 (lado), #DD235B (frente), #FCE4EC (topo). Fundo branco. Sem texto.
Saída: SVG plano, 1600 × 900.
Face
Tom
Papel
Topo
claro (soft)
recebe a luz
Frente
médio (marca)
leitura principal
Lado
escuro (navy)
profundidade
14. Personagem e mascote
Serve para: dar rosto ao guia: a recepcionista da clínica, o dono do restaurante, a pessoa que aparece em todas as telas do onboarding. Onde entra: biblioteca modular com licença CC0 (Humaaans, Open Peeps) ou personagem próprio desenhado uma vez e reusado. Quando evitar: personagem diferente em cada tela: o leitor perde o fio, e a marca perde a coerência.
Três personagens modulares em formas simples, com três tons de pele da mesma família, e o cartão do mascote: a recepcionista que aparece em todas as telas do guia de dentistas. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Escolha uma biblioteca modular (cabeça, tronco, pernas trocáveis) ou desenhe um personagem próprio com quatro poses. Registre no guia da marca quem é a pessoa e onde ela aparece.
Receita em SVG à mão:
Personagem fixo do guia de dentistas: a recepcionista.
Traço plano, sem rosto detalhado, cabelo preso, uniforme claro.
Quatro poses: atendendo ao telefone, no WhatsApp, à mesa, apontando o painel.
Paleta de pele em três tons; roupa em #1E2365 e #FCE4EC.
Fonte: Open Peeps (CC0) remontado, ou desenho próprio em SVG.
Item
Valor
Biblioteca
Humaaans / Open Peeps (CC0) ou própria
Poses
quatro, reusadas
Tons de pele
três, da mesma família
Formato
SVG
15. Ilustração de linha e ilustração flat
Serve para: escolher o estilo do projeto: o traço combina com a família de ícones de traço; o flat com peso de cor combina com marca forte. Onde entra: decisão registrada no pedido base e no guia da marca; uma só por projeto. Quando evitar: os dois estilos na mesma página: é o equivalente a misturar famílias de ícone.
A mesma cena em dois estilos: traço único sem preenchimento e flat com formas cheias sem contorno. O projeto escolhe um, e a escolha combina com a família de ícones. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Registre o estilo no pedido base: "traço único de 2 px, sem preenchimento" ou "formas planas sem contorno". Confira que a família de ícones segue a mesma lógica.
Receita em pedido base:
Estilo do projeto: [linha | flat]
- linha: traço único de 2 px, cantos arredondados, sem preenchimento, uma cor de destaque
- flat: formas planas sem contorno, três tons por cor, sem gradiente
Não misturar. Ícones: Lucide (traço) para o estilo linha; Phosphor Fill para o flat.
Estilo
Ícone que combina
Onde brilha
Linha
traço (Lucide)
guia, documentação, produto
Flat
preenchido (Phosphor Fill)
marketing, capa, anúncio
16. Padrão e textura de fundo
Serve para: dar textura a uma seção ou capa sem uma imagem pesada: fundo de hero, de cartão e de slide. Onde entra: SVG com pattern repetido, ou imagem gerada por IA para textura (a fronteira do guia). Quando evitar: textura forte atrás de texto: o contraste cai abaixo de 4,5:1 e o texto some.
Um motivo geométrico repetido por pattern, com o bloco de texto por cima. A opacidade do padrão fica em 8% para o texto manter 4,5:1. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Desenhe o motivo uma vez num pattern de SVG e repita pelo CSS. Textura fotográfica só por IA e só como fundo, com a opacidade baixa e o texto sempre em HTML.
Serve para: destacar três números de um guia com ícone e frase, sem virar o gráfico que o guia irmão trata. Onde entra: cartões em HTML com ícone da família; imagem só se for para rede social, e aí com o número refeito em texto na legenda. Quando evitar: número dentro de imagem gerada: o modelo erra o algarismo e o leitor de tela não lê.
Três cartões: número grande, ícone da família e a frase que dá o contexto, com a fonte e a data em texto. Serve para a abertura dos guias de segmento. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Cartões em grid, número em tipografia grande e tabular, ícone decorativo e a fonte escrita. Se a peça for para o Instagram, exporte o cartão renderizado e repita o número na legenda.
Serve para: ensinar um caminho na tela em três quadros, no guia de recepção e no onboarding do produto. Onde entra: capturas de tela recortadas ou ilustração simplificada, na mesma moldura, com o texto do passo em HTML. Quando evitar: mais de cinco quadros: vira vídeo curto, ou lista numerada com uma captura só.
Três quadros numerados na mesma moldura e escala, com o texto de cada passo fora da imagem. É o formato dos roteiros de recepção do guia de dentistas. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Mesma moldura e mesma escala nos três quadros, numeração no canto e o texto do passo em HTML abaixo. Captura de tela passa por WebP sem perda para não borrar letra.
Receita em HTML:
<ol class="passos">
<li><img src="/tutorial/passo-1.webp" width="380" height="300" alt="Cartão do lead aberto, com o botão Responder em destaque"><p>Abra o cartão do lead</p></li>
<li><img src="/tutorial/passo-2.webp" … alt="…"><p>Toque em Responder</p></li>
<li><img src="/tutorial/passo-3.webp" … alt="…"><p>Escolha a faixa de preço</p></li>
</ol>
Item
Regra
Quadros
três a cinco, mesma moldura
Texto do passo
HTML, fora da imagem
Captura
WebP sem perda ou PNG
Alt
descreve o que o quadro mostra
19. Ilustração editorial gerada por IA
Serve para: abrir um artigo ou uma aula com uma arte abstrata coerente com a marca, quando não há foto nem ilustração própria. Onde entra: modelo de imagem com o pedido base, registro de plataforma, data e instrução, e edição humana depois. Quando evitar: para logotipo, ícone, diagrama, pessoa real ou qualquer coisa com texto: fora da fronteira do guia.
Arte abstrata de fundo com o título por cima em HTML. É o uso que o guia autoriza para imagem gerada: textura e cena, editadas depois, com o registro de origem guardado. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Escreva o pedido de seis linhas (propósito, direção estética, proibições, elemento memorável, acessibilidade, escolhas), gere, edite e registre plataforma, data e instrução. O texto nunca entra na arte.
Receita em pedido para IA:
Propósito: abertura do artigo "Robô que responde preço como pessoa", público de donos de clínica.
Direção: formas orgânicas abstratas, tinta e papel, três cores da marca, muito espaço vazio no centro.
Proibido: pessoas, rostos, texto, logotipos, telas de celular.
Elemento memorável: uma linha contínua que atravessa a composição.
Acessibilidade: centro claro para o título em #1E2365 manter 4,5:1.
Escolhas: 1600 × 900, sem moldura, fundo #FFF5F8.
Registro: plataforma, data, este pedido e as edições, no arquivo ao lado da imagem.
Item
Regra
Uso permitido
textura, cena de fundo, arte abstrata
Uso vetado
logotipo, ícone, diagrama, pessoa, texto
Registro
plataforma, data, instrução, edições
Credencial
Content Credentials (C2PA) quando a plataforma emite
Imagem e foto
A foto e a imagem pronta atravessam a rede de outra pessoa. Cada tipo aqui tem uma proporção, um formato e um teto de peso, e a regra mestra vale para todos: nunca sirva uma imagem maior do que o espaço onde ela aparece.
20. Foto de produto
Serve para: mostrar o que se vende no catálogo e na página do produto, com fundo neutro na listagem e contexto na página. Onde entra: foto própria ou licenciada; nunca gerada por IA para o produto real. Quando evitar: foto de banco de imagens como se fosse o produto: engana o cliente e a licença não cobre.
Duas fotos do mesmo produto: fundo neutro em 1:1 para a listagem e em contexto em 4:3 para a página. Sombra suave e luz da mesma direção nas duas. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Listagem em 1:1 com fundo neutro e 800 px; página em 4:3 com 1200 px. AVIF primeiro, WebP de retaguarda, e o teto de 150 KB no espaço em que aparece.
Serve para: a página Sobre, a assinatura de e-mail e o cartão do consultor, com as pessoas reais da empresa. Onde entra: sessão de fotos com padrão fixo de luz, fundo e enquadramento; corte circular pelo CSS. Quando evitar: foto de banco no lugar de pessoa real: quebra a confiança na primeira reunião.
Quatro retratos com a mesma luz, o mesmo fundo e o mesmo enquadramento, cortados em círculo pelo CSS. A regra é a coerência, e ela vem da sessão de fotos, não da edição. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Uma sessão com fundo neutro fixo, luz frontal difusa e enquadramento do peito para cima. Exporte quadrado em 400 px, AVIF, e deixe o corte circular para o CSS.
Serve para: mostrar o produto real no guia e no artigo, com o trecho que importa em destaque. Onde entra: captura em escala 2×, moldura de janela pelo CSS, anotação em HTML ou SVG por cima. Quando evitar: captura comprimida com perda: a letra pequena borra e o leitor não confia.
A captura com moldura de janela, o trecho em destaque e a anotação apontando. A moldura e a anotação são CSS e SVG por cima, e a captura fica intacta. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Capture em escala 2×, recorte para o trecho que importa, exporte em WebP sem perda e ponha a moldura e a anotação por cima em HTML. Escureça dados reais antes de capturar.
Receita em HTML e CSS:
<figure class="captura">
<img src="/capturas/crm-cartao@2x.webp" width="1200" height="720" alt="Cartão do lead no CRM com o botão Responder em destaque">
<span class="anotacao" style="--x: 62%; --y: 48%">Responder</span>
</figure>
.captura { border: 1px solid var(--ll-line); border-radius: 12px; overflow: hidden; }
.captura img { display: block; width: 100%; height: auto; }
Item
Regra
Escala
2× (retina)
Formato
WebP sem perda, ou PNG
Moldura e anotação
CSS e HTML, fora da imagem
Dados
anonimizados antes de capturar
23. Mockup de dispositivo
Serve para: mostrar a tela dentro de um aparelho na página de produto e no anúncio, para o leitor situar onde aquilo roda. Onde entra: moldura genérica em SVG ou CSS, sem marca de fabricante, com a captura real dentro. Quando evitar: moldura com logotipo de fabricante: é marca registrada, e o mockup de terceiros costuma ter licença própria.
Moldura genérica de celular e de notebook, sem marca, com a tela do produto dentro. A moldura é SVG ou CSS; só a captura é imagem. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Desenhe a moldura em CSS (borda, raio e sombra) ou SVG e coloque a captura dentro com object-fit. Sem logotipo de fabricante, e a captura segue a regra do tipo anterior.
Receita em HTML e CSS:
<div class="celular">
<img src="/capturas/app-home.webp" width="390" height="844" alt="Tela inicial do aplicativo com a lista de leads">
</div>
.celular { width: 260px; aspect-ratio: 9 / 19.5; padding: 12px; border-radius: 36px;
background: var(--ll-navy-head); box-shadow: 0 12px 32px rgba(0,0,0,.18); }
.celular img { width: 100%; height: 100%; object-fit: cover; border-radius: 26px; }
Aparelho
Proporção da tela
Moldura
Celular
9:19,5
raio 36 px, sem marca
Notebook
16:10
raio 14 px, base fina
Captura
escala 2×
WebP sem perda
24. Fundo em gradiente ou malha
Serve para: dar profundidade ao hero e ao cartão de destaque sem imagem, com o fundo trocando de tema junto com o site. Onde entra: CSS puro: linear-gradient ou radial-gradient com tokens; malha com várias camadas de radial. Quando evitar: gradiente com hexadecimal cravado: no tema escuro ele vira mancha, e o texto por cima perde contraste.
À esquerda, um gradiente linear de dois tokens; à direita, uma malha de radiais suaves. Os dois são CSS, pesam zero e trocam de tema com o site. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Gradiente com tokens, no máximo dois tons, e o texto conferido a 4,5:1 sobre o ponto mais claro. A malha empilha três radiais com opacidade baixa sobre o token de superfície.
Serve para: o quadro que representa a aula na playlist do portal e no YouTube, legível a 200 px de largura. Onde entra: cartão montado em HTML, renderizado e exportado em JPEG 1280 × 720; poster do player. Quando evitar: quadro aleatório do vídeo como capa: o rosto no meio da frase e o texto ilegível.
A capa com título em três a cinco palavras, duração e o botão de play sobre o fundo de marca escurecido. É a exceção em que o texto entra na imagem, porque o player só lê pixel. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Monte a capa em HTML com os tokens, renderize a 1280 × 720 e exporte em JPEG com qualidade 80. Confira a leitura a 200 px de largura, que é o tamanho na lista.
Receita em HTML renderizado:
<video poster="/media/aulas/robo-preco-poster.jpg" width="1280" height="720" controls>
<source src="/media/aulas/robo-preco.mp4" type="video/mp4">
</video>
<!-- a capa nasce de um cartão HTML renderizado:
título 64 px, 3 a 5 palavras, contraste 4,5:1 sobre o fundo escurecido a 35% -->
Item
Valor
Proporção
16:9, 1280 × 720
Título
3 a 5 palavras, ≥ 64 px
Formato
JPEG q80, ≤ 120 KB
Teste
legível a 200 px de largura
26. Imagem social (og:image)
Serve para: a prévia do link no WhatsApp, no LinkedIn e nos assistentes que mostram cartão, com o título legível. Onde entra: cartão gerado por página a partir do título, renderizado em 1200 × 630 e declarado nas metas. Quando evitar: a imagem do hero como og:image: recortada no meio e sem título, a prévia vira mancha.
O cartão social com logotipo, título do guia e domínio, na zona segura de 60 px. O portal gera um por página a partir do título, como o menu Segmentos já faz. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Gere o cartão por página no build a partir do título e da seção, em 1200 × 630, JPEG ou PNG abaixo de 300 KB, e declare nas metas og:image e twitter:image com largura e altura.
Receita em HTML e meta:
<meta property="og:image" content="https://brasilgeo.ai/media/og/design-graficos.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<!-- gerado no build: molde HTML + título + seção → 1200 × 630 -->
Item
Valor
Tamanho
1200 × 630 (1,91:1)
Zona segura
60 px nas bordas
Peso
≤ 300 KB
Conteúdo
logotipo, título, domínio
27. Selo de garantia ou certificação
Serve para: reforçar uma promessa na página de venda: garantia, prazo de resposta, onde os dados ficam. Onde entra: SVG próprio com tokens; selo de terceiro só com a licença e a regra de uso da marca dele. Quando evitar: selo inventado que imita certificação real: é a promessa que o comercial não consegue sustentar.
Três selos com a promessa escrita dentro: garantia de 30 dias, resposta em uma hora, dados no Brasil. O desenho é SVG com tokens, e a promessa é a que o contrato sustenta. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Desenhe a forma uma vez em SVG, com a cor por token, e escreva a promessa em texto real dentro. Selo de terceiro entra como imagem do próprio emissor, no tamanho e na cor que ele exige.
Serve para: levar do impresso e do slide para a página: cartão da recepção, cardápio, slide da aula. Onde entra: gerado por biblioteca a partir da URL curta com utm, em SVG, com a URL escrita ao lado. Quando evitar: QR com logotipo no meio e gradiente: a leitura falha na câmera velha, e o cliente desiste.
O QR code em preto sobre branco com a zona quieta, e as três regras ao lado. A URL curta vai escrita embaixo, para quem não aponta a câmera e para o leitor de tela. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Gere em SVG a partir de uma URL curta com utm_source do lugar onde ele vai (recepção, cardápio, slide). Preto sobre branco, zona quieta de quatro módulos, e a URL escrita ao lado.
Receita em JavaScript (qrcode):
import QRCode from 'qrcode';
const svg = await QRCode.toString('https://brasilgeo.ai/l/recepcao?utm_source=balcao', { type: 'svg', margin: 4, errorCorrectionLevel: 'M' });
// <figure> com o SVG e <figcaption>brasilgeo.ai/l/recepcao</figcaption>
Item
Regra
Cor
preto sobre branco, sem gradiente
Zona quieta
4 módulos
Tamanho impresso
≥ 2 cm
URL
curta, com utm, escrita ao lado
Movimento
O movimento entra pela escada de custo: CSS puro, recurso nativo, Motion, GSAP. Os tipos abaixo vivem nos dois primeiros degraus e mostram os quadros parados, porque o catálogo precisa ler sem animar. As três regras valem em todos: respeitar menos movimento, estado base visível, animar só transform e opacidade.
29. Estados do botão (transição)
Serve para: responder ao cursor, ao teclado e ao desabilitado com a mesma peça, sem biblioteca. Onde entra: degrau 1 da escada: transition em CSS sobre transform, cor e sombra. Quando evitar: transição na altura ou na largura: recalcula o desenho a cada quadro e o toque atrasa.
Os quatro estados do mesmo botão: repouso, cursor, foco com anel e desabilitado a 45% de opacidade. A transição entre eles é de 150 ms e só mexe em transform e cor. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Uma transição de 150 ms com ease-out em transform, cor e sombra. O foco tem outline visível de 2 px separado por offset, e o desabilitado reduz opacidade sem esconder o botão.
Serve para: segurar o lugar do conteúdo enquanto ele chega, sem a tela pular quando aparece. Onde entra: degrau 1: blocos cinza com as mesmas medidas do conteúdo e um brilho suave por CSS. Quando evitar: esqueleto para carregamento de menos de 300 ms: pisca e chama mais atenção que a espera.
O esqueleto à esquerda e o cartão carregado à direita, com as mesmas medidas. O conteúdo aparece no lugar exato, e nada pula. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Blocos com as mesmas medidas do conteúdo final (avatar, título, linhas), cor de superfície neutra e um brilho que atravessa por keyframes, desligado sob menos movimento e limitado a poucas repetições.
brilho suave, poucas repetições, off sob reduced-motion
ARIA
aria-busy no contêiner
31. Indicador de progresso
Serve para: dizer quanto falta quando se sabe (barra ou anel) e que algo acontece quando não se sabe (spinner). Onde entra: degrau 1: SVG ou div com largura ou arco proporcional; spinner por keyframes com poucas repetições. Quando evitar: spinner onde o valor é conhecido: a pessoa espera sem saber se falta um segundo ou um minuto.
Os quatro indicadores: barra com o texto do que está acontecendo, anel com valor, spinner para valor desconhecido e o botão que troca o rótulo enquanto espera. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Barra e anel recebem o valor por variável de CSS (a barra cresce por transform, e não por largura) e o texto ao lado; o spinner só entra quando não há valor. O role="progressbar" com aria-valuenow deixa o leitor de tela acompanhar.
Receita em HTML e CSS:
<div role="progressbar" aria-valuenow="68" aria-valuemin="0" aria-valuemax="100" aria-label="Envio dos arquivos">
<div class="barra" style="--v: 0.68"></div>
</div>
.barra { height: 8px; background: var(--ll); border-radius: 4px;
transform: scaleX(var(--v)); transform-origin: left; transition: transform 300ms ease-out; }
/* --v vai de 0 a 1: a barra cresce por transform, não por largura, para não recalcular o desenho */
/* anel: stroke-dasharray com a circunferência e stroke-dashoffset pelo valor */
Indicador
Quando
ARIA
Barra
valor conhecido, tarefa longa
progressbar + aria-valuenow
Anel
valor conhecido, espaço pequeno
progressbar
Spinner
valor desconhecido, < 10 s
aria-busy no contêiner
Botão em espera
ação disparada
aria-disabled + rótulo
32. Entrada de bloco (aparecer e subir)
Serve para: revelar um cartão ou uma seção quando entra na tela, com o estado final legível para quem não recebe a animação. Onde entra: degrau 1: keyframes com from em opacidade zero e transform, disparado por classe ou por animação dirigida por rolagem atrás de @supports. Quando evitar: opacity: 0 na regra base: quem não roda a animação vê a página em branco.
Três quadros da entrada: invisível e 16 px abaixo, no meio do caminho, no lugar final. O opacity zero mora só no from, e o estado base do elemento é visível. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Keyframes de 240 ms com ease-out em opacity e translateY; a regra base do elemento fica visível e no lugar. Sob menos movimento, a animação desliga e o bloco simplesmente está lá.
Receita em CSS:
@keyframes entrar { from { opacity: 0; transform: translateY(16px); } }
.cartao { animation: entrar 240ms ease-out; } /* estado base: visível, no lugar */
@media (prefers-reduced-motion: reduce) { .cartao { animation: none; } }
/* dirigido por rolagem, como melhoria progressiva: */
@supports (animation-timeline: view()) {
.cartao { animation-timeline: view(); animation-range: entry 0% entry 40%; }
}
Item
Valor
Duração
240 ms (entrada)
Curva
ease-out
Propriedades
opacity, transform
Estado base
visível, sem opacity: 0
Menos movimento
animation: none
33. Microinteração de ícone
Serve para: confirmar uma ação pequena com o próprio ícone: o sino balança ao chegar notificação, o coração pulsa ao curtir. Onde entra: degrau 1: keyframes em transform com origem definida, disparado uma vez por evento. Quando evitar: microinteração em laço sem fim: vira ruído, e o teste do portal veta a animação infinita.
Quatro quadros do sino: repouso, inclinado para um lado, para o outro e de volta. O balanço é uma vez por evento, com a origem no topo do sino. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Keyframes de 400 ms em rotate com transform-origin no ponto de apoio, disparados por classe adicionada no evento e removidas no fim. Nunca em laço, e desligada sob menos movimento.
A peça pronta ainda precisa chegar leve e no tamanho certo. Os três tipos finais são a esteira que todo ícone, ilustração e foto atravessam antes de entrar na página.
34. Esteira de peso da imagem
Serve para: levar a foto de 4,2 MB ao arquivo de 96 KB que a página serve, na ordem certa. Onde entra: script de build (sharp ou squoosh) que redimensiona para as larguras usadas e converte para AVIF e WebP. Quando evitar: otimizar à mão, uma por uma: a próxima foto entra sem passar pela esteira.
Os três passos da esteira: original de 4,2 MB, redimensionado para o tamanho real com 380 KB, convertido para AVIF com 96 KB. O alvo é ficar abaixo de 150 KB no espaço em que aparece. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Um script no build lê a pasta de originais, gera cada largura usada nos srcset em AVIF, WebP e JPEG, e grava ao lado com o sufixo da largura. Ninguém otimiza à mão.
Receita em Node (sharp):
import sharp from 'sharp';
for (const largura of [480, 800, 1200]) {
const base = sharp('originais/bolo.jpg').resize({ width: largura, withoutEnlargement: true });
await base.clone().avif({ quality: 55 }).toFile(`public/p/bolo-${largura}.avif`);
await base.clone().webp({ quality: 75 }).toFile(`public/p/bolo-${largura}.webp`);
await base.clone().jpeg({ quality: 80, mozjpeg: true }).toFile(`public/p/bolo-${largura}.jpg`);
}
Passo
Resultado
Peso
Original
4000 × 3000 JPEG
4,2 MB
Redimensionar
1200 × 900 JPEG
380 KB
Converter
1200 × 900 AVIF
96 KB
Alvo
no espaço em que aparece
≤ 150 KB
35. Imagem responsiva (picture e srcset)
Serve para: fazer o celular baixar a versão pequena e o computador a grande, no formato que cada um entende. Onde entra: HTML: picture com uma source por formato, srcset com as larguras da esteira e sizes com a largura do espaço. Quando evitar: largura e altura omitidas: o layout pula quando a imagem chega, e o botão muda de lugar na hora do toque.
Três telas baixando larguras diferentes da mesma imagem, e o esquema do picture ao lado: uma source por formato, srcset com as larguras, sizes com a largura do espaço e o img com as medidas e o alt. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Uma source por formato em ordem de preferência, srcset com as larguras que a esteira gerou, sizes com a largura real do espaço, e o img com width, height, alt e loading. A prioridade alta só na imagem do topo.
Serve para: servir os ícones da família num site estático, sem componente React, com um arquivo só e cor por token. Onde entra: arquivo SVG com um symbol por ícone, gerado no build a partir da família, referenciado por use. Quando evitar: sprite com a família inteira: a página baixa 300 ícones para usar oito. Só os usados entram.
O sprite com seis símbolos e o uso na página: cada ícone é um use apontando para o símbolo. O arquivo baixa uma vez, fica em cache e pinta por currentColor. Exemplo hipotético, montado para mostrar o formato.Como produzir e a ficha técnica
Um script no build lê a lista de ícones usados, copia cada path da família para um symbol com o viewBox de 24 e grava o sprite. Na página, o use referencia o símbolo pelo id.
Receita em SVG à mão:
<!-- sprite.svg, gerado no build só com os ícones usados -->
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
<symbol id="bell" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="…"/></symbol>
<symbol id="mail" viewBox="0 0 24 24" …><path d="…"/></symbol>
</svg>
<!-- na página -->
<button aria-label="Notificações">
<svg width="24" height="24" aria-hidden="true"><use href="/sprite.svg#bell"/></svg>
</button>
Item
Regra
Conteúdo
só os ícones usados
Grade
viewBox 0 0 24 24 em todo symbol
Cor
currentColor
Cache
um arquivo, versionado por hash no nome
Regra da casa: escolha a família pelo que a peça precisa resolver (ação, narrativa, prova, movimento) e o tipo pela forma mais leve que resolve; se dois tipos empatam, vence o que pesa menos na rede de quem visita. Uma família de ícones, um estilo de ilustração, um pedido base por projeto. E toda peça publicada sai com o rótulo, o alt ou o título por perto, porque é isso que o leitor de tela lê e o revisor confere.
Prompts prontos do curso
Três pedidos completos, transcritos do material do curso, para copiar e adaptar. Eles carregam as restrições que o agente não acrescenta por conta própria: família única, cor por token, acessibilidade e menos movimento.
Cabeçalho com ícones coerentes
Monte o cabeçalho do app usando ícones Lucide, NÃO emojis. Quero três ações:
Notificações (sino), Configurações (engrenagem) e Perfil (usuário).
Regras: Todos os ícones com o MESMO tamanho (20px) e strokeWidth 1.75.
A cor deve vir do token --color-icon (não hex fixo), para adaptar em dark/light.
Cada botão precisa de aria-label e área de toque >= 44px.
Estado de foco visível (anel) navegável por teclado.
Me mostre o TSX e diga quais ícones do Lucide você usou.
Conjunto de ilustrações com estética única
Preciso de 4 ilustrações para as seções do site, com estética COERENTE:
traço/linha limpo, paleta com a cor de destaque #[hex] e tons neutros;
proporção 4:3, fundo transparente ou claro.
Gere um prompt-base reutilizável que eu possa variar só no tema.
Antes de gerar, confirme a licença de uso comercial do modelo e quem detém
os direitos da imagem resultante. Entregue as imagens em alta e liste o
passo de otimização (converter para AVIF/WebP e gerar o tamanho certo).
Orçamento de movimento da página
Aplique o orçamento de movimento desta página:
microinteração de 120 a 200 ms; transição de estado de 200 a 300 ms;
mola com rigidez ~300 e amortecimento ~30; anime só transform e opacity;
respeite prefers-reduced-motion; o estado base nasce visível.
Justifique em uma frase cada escolha. Se propuser Motion ou GSAP, diga
em uma frase por quê. Se eu escrever "Framer Motion", leia "a lib Motion
(motion/react)", nunca o builder Framer. Ao final, liste o que conferir
na aba de rede e o peso total da primeira visita.
A aula: este guia em vídeo e em podcast
O guia inteiro também existe em vídeo de dez minutos e em podcast de vinte e um. O texto continua sendo a fonte, e as duas peças cobrem as mesmas cinco frentes. Use o formato que couber no seu dia.
Videoaula, dez minutos
Explicação visual das cinco frentes do guia, com legendas em português que você liga no botão CC do reprodutor.
Cada cartão abaixo sai como imagem. Escolha o formato, abra a tela de print e capture a área do cartão. Publique com a legenda que o botão copia: ela resume o método desta página e traz o leitor de volta para cá.
Design · Guia visualLeadlovers 2026
A escada do movimento sobe um degrau por vez
Cada degrau custa mais que o de baixo, e quase toda tela vive nos dois primeiros.
Comece no CSS puro. Transição e keyframes resolvem cursor, foco e entrada de bloco.
Suba para o recurso nativo do navegador. Janela sobreposta e menu flutuante custam peso zero.
Instale o Motion quando houver gesto e mola. Ele entra no orçamento da página como pacote.
Guarde o GSAP para a linha do tempo longa. Cinco peças ou mais entrando em ordem na rolagem.
Legenda sugerida para LinkedIn e Instagram
Instalar uma biblioteca de animação para trocar a cor de um botão é o gasto mais silencioso de uma página.
A escada do movimento resolve a decisão sem discussão. CSS puro e recurso nativo do navegador custam zero e dão conta de cursor, foco, entrada de bloco, janela sobreposta e menu flutuante. O Motion entra quando o gesto pede mola. O GSAP entra na linha do tempo longa amarrada à rolagem.
Suba um degrau apenas quando o de baixo falhar na sua tela, e respeite o orçamento de duração: microinteração de 120 a 200 milissegundos, transição de estado de 200 a 300.
Salve o cartão e leve a escada para a próxima revisão de código do seu time.
Guia completo: brasilgeo.ai/leadlovers2026/design/
#Leadlovers #Design #Frontend #Animacao
Design · Guia visualLeadlovers 2026
O ativo visual passa por cinco conferências
Rode a lista antes de subir ícone, ilustração ou imagem gerada por modelo.
Leia a licença na fonte. Procure a palavra comercial e o que o autor proíbe.
Tire a cor do ícone do código. O valor vem de token, para o tema escuro funcionar.
Registre plataforma, data e edições de cada imagem gerada por modelo.
Deixe o texto fora da arte gerada. A palavra entra por HTML em cima da imagem.
Converta para AVIF no tamanho real do espaço onde a imagem vai aparecer.
Legenda sugerida para LinkedIn e Instagram
O ativo visual que derruba uma campanha costuma entrar pela porta da frente, com a licença nunca aberta.
Cinco conferências resolvem o risco antes de subir ícone, ilustração ou imagem gerada por modelo: a licença lida na fonte, a cor do ícone vinda de token, o registro de plataforma, data e edições de cada geração, o texto sempre fora da arte e a conversão para AVIF no tamanho real do espaço.
A regra mestra do peso cabe em uma linha. Nunca sirva uma imagem maior do que o lugar onde ela aparece.
Comente qual das cinco conferências mais escapa na sua rotina de publicação.
Guia completo: brasilgeo.ai/leadlovers2026/design/
#Leadlovers #Design #DirecaoDeArte #Performance
Perguntas frequentes
Como escolher a família de ícones de um projeto?
Escolha uma família só por projeto e escreva o nome dela no arquivo de instruções do agente. Peça o conjunto de uma vez, com a espessura do traço declarada e a cor vinda de token. A referência do guia é a Lucide.
Por que a cor do ícone precisa vir de um token?
Por causa do tema escuro. Um valor cravado no componente, como #1a1a1a, vira preto sobre preto quando o fundo escurece. Com var(--color-icon), o mesmo ícone recebe um valor no claro e outro no escuro.
O que conferir antes de adotar uma ilustração gratuita?
Abra a licença e procure a palavra comercial. Depois confira se o desenho ajuda alguém a entender alguma coisa. Material com atribuição obrigatória pede crédito visível ao autor. Anote a data em que você leu cada licença.
Quando instalar uma biblioteca de animação como Motion ou GSAP?
Só quando os degraus de baixo falharem. A escada começa no CSS puro, passa pelos recursos nativos do navegador e só então chega ao Motion, para gesto e mola. O GSAP fica para a linha do tempo longa.
Quem é dono de uma imagem gerada por inteligência artificial?
Depende dos termos da plataforma e da lei do país. Nos Estados Unidos, o caso Thaler contra Perlmutter firmou que o direito autoral exige obra criada por gente. No Brasil, a Lei 9.610 define autor como pessoa física.
Qual o peso máximo de uma imagem para a página carregar rápido?
A regra mestra: nunca sirva uma imagem maior do que o espaço onde ela aparece. Para foto e cena, fique abaixo de 150 KB no tamanho real, com AVIF como primeira escolha e WebP como retaguarda.
Por onde começar
Volte à promessa do começo com uma peça só. Escolha a que o time publica esta semana e aplique três decisões nela. A primeira é uma família de ícones escrita no arquivo de instruções. A segunda é a licença de cada ativo anotada com a data da leitura. A terceira é nenhuma imagem maior do que o espaço onde ela aparece.
Fontes: cada número desta página vem de um destes registros, lidos em 18 de agosto de 2026.
Páginas oficiais de licença e catálogo de Lucide, Phosphor, Tabler, Heroicons, Material Symbols e Iconify.
Páginas de licença de unDraw, Storyset, Humaaans, Open Peeps, DiceBear e Boring Avatars.
Sentença do tribunal regional de Munique de 20 de janeiro de 2022, processo 3 O 17493/20; texto da LGPD e lista de dados pessoais da autoridade brasileira.
Notas da versão 4.0.0 do SVGO, de 21 de junho de 2025; documentação da MDN e do web.dev para dialog, popover e animação.
Registro npm do Motion 13.1.0, de 10 de agosto de 2026; anúncio de gratuidade do GSAP, de 30 de abril de 2025; Agrawal e colegas, Archives of Internal Medicine.
Termos de uso de OpenAI, Midjourney, Google, Google Cloud e Adobe Firefly; caso Thaler contra Perlmutter; Lei 9.610 de 1998; PL 2338 de 2023; especificação 2.3 do C2PA.
Web Almanac de 2025, do HTTP Archive, com dados de julho de 2025; estudo Milliseconds Make Millions, da Deloitte; rastreador webstatus.dev para WebP e AVIF.
O guia vem de quatro capítulos do curso Frontends com Vibecoding, de Alexandre Caramaschi: identidade visual, animação, imagens e plugins visuais. A atualização é de 18 de agosto de 2026.