Este documento é a fonte única de verdade do visual do Orquestro. Toda tela nova deve seguir estas diretrizes. Qualquer mudança de design começa aqui — não direto no código.
1. Princípios
Princípio
Descrição
Denso, não poluído
Informação comercial é densa. Priorize espaço útil sem sacrificar respiração.
Hierarquia clara
O usuário deve saber, em 2 segundos, o que é mais importante em cada tela.
Ações visíveis
Botões e ações primárias nunca ficam escondidos. Ações destrutivas têm confirmação.
IA sugere, humano decide
Conteúdo gerado por IA tem marcação visual própria — nunca parece um fato.
2. Cores
O sistema usa uma paleta Material Design 3 adaptada, com primário em navy escuro. Os tokens estão em src/app/globals.css.
Paleta principal
Token CSS
Valor hex
Uso
--primary
#011323
Sidebar, botões primários, links de ação
--background
#f8fafb
Fundo geral da aplicação
--foreground
#191c1d
Texto principal
Superfícies (do mais claro ao mais escuro)
Token CSS
Valor hex
Uso típico
--v-surface-container-lowest
#ffffff
Cards, modais, tabelas
--v-surface-container-low
#f2f4f5
Hover de linha, fundo de input
--v-surface-container
#eceeef
Divisórias, muted
--v-surface-container-high
#e6e8e9
Bordas de card, header de tabela
--v-surface-container-highest
#e1e3e4
Badges neutros
Textos sobre superfície
Token CSS
Valor hex
Uso
--v-on-surface
#191c1d
Texto de maior peso (títulos, dados)
--v-on-surface-variant
#43474c
Texto secundário (labels, metadados)
--v-outline
#74777d
Textos desabilitados, placeholders
--v-outline-variant
#c4c6cd
Bordas de input, divisórias
Sidebar (escura)
Token CSS
Uso
--sidebar → #011323
Fundo da sidebar
--sidebar-foreground → #ffffff
Texto e ícones
--sidebar-accent → rgba(255,255,255,0.07)
Item de nav ativo/hover
--sidebar-border → rgba(255,255,255,0.08)
Divisórias internas
Semânticas
Token
Valor
Uso
--v-success-container
#004536
Textos de sucesso, status “ganho”
--v-on-success-container
#54b89b
Ícones e labels de sucesso
--destructive
#ba1a1a
Erros, ações destrutivas
--v-secondary
#456366
Ícones neutros, elementos de apoio
Como usar em código
// Tailwind usa o prefixo do token mapeado em @theme<div className="bg-surface-container-lowest border border-outline-variant text-on-surface"><span className="text-on-surface-variant"><button className="bg-primary text-on-primary">
3. Tipografia
Fonte:Lato (400, 700, 900) — carregada via Google Fonts no layout.tsx.
Escala
Classe Tailwind
Tamanho
Peso
Uso
text-display-lg
32px / lh 40px
700
Títulos de página (Bem-vinda, Ana!)
text-headline-md
24px / lh 32px
600
Seções principais
text-headline-sm
18px / lh 24px
600
Títulos de card, sub-seções
text-stats-number
28px / lh 34px
700
Números de KPI
text-body-lg
16px / lh 24px
400
Subtítulo de página, parágrafos
text-body-md
14px / lh 20px
400
Texto corrente de tabelas e formulários
text-label-md
12px / lh 16px
500
Labels de campo, badges, tabs de filtro
Exemplos
<h2 className="text-display-lg font-bold text-on-surface">Bem-vinda, Ana!</h2><p className="text-body-lg text-on-surface-variant">Subtítulo da página</p><h3 className="text-headline-sm text-on-surface">Título de card</h3><span className="text-label-md text-on-surface-variant">Label de campo</span><div className="text-stats-number font-bold text-on-surface">42</div>
// padding de card<div className="p-card-padding">// padding da área de conteúdo<div style={{ padding: 'var(--spacing-container-margin)' }}>// gap entre cards<div className="grid gap-4"> // gutter-md<div className="space-y-6"> // gutter-lg aprox.
Seguido de modal de confirmação com resumo do que está sendo validado.
Estado vazio
<div className="py-12 text-center text-on-surface-variant"> <span className="material-symbols-outlined text-4xl text-outline mb-2 block">inbox</span> <p className="text-body-md font-bold">Nenhum registro encontrado.</p> <p className="text-label-md mt-1">Ajuste os filtros ou crie um novo item.</p></div>