Nicolas Lima · Design System

Style Guide

Um sistema de design editorial com calor humano e rigor técnico. Paleta terrosa, tipografia contrastante, cor plana — sem degradê. Construído para engenharia, dados e AI, com a voz de quem explica sem arrogância.

Filosofia
60/30/10 — 60% neutro, 30% quente, 10% contraste frio (teal/cyan).
Um acento por tela — coral é ação, nunca decoração.
Cor plana — sem degradê, sem brilho, sem sombra 3D.

01 · Cor

Paleta

Paleta completa com usos. Cores planas, sem degradê. A sequência de dados padrão são as 6 cores da marca na ordem definida.

Neutros · Fundo e superfície

A base da paleta — 60% da composição.

--bg
#F4ECD9
Fundo da página
--card
#FBF6EA
Superfície / card
--sand
#EAD9B8
Superfície secundária
--taupe
#B6A892
Muted claro
--stone
#6B5D4F
Texto secundário / muted
--ink
#211913
Texto principal

Quentes · Ação e personalidade

30% da composição. Coral é o acento principal — use com parcimônia.

--coral
#E8553A
Acento · ação · CTA primário
--clay
#C2683E
Display / kicker
--rust
#9E3E2B
Links · hover (WCAG AA)
--amber
#E8A33D
Secundário · fill de dados
--honey
#EBC14E
Acento claro
--olive
#7F8B45
Fill de dados

Frios · Contraste técnico

10% da composição. Um por composição — nunca protagonista.

--teal
#16786E
Contraste técnico · fill
--cyan
#0E9AAC
Separador do lockup · sinal

Overflow · Ramo estendido

Para séries além de 6 categorias. Cada cor tem versões light e dark.

--fern
#4F8757
--denim
#3F5F90
--sky
#7196BC
--iris
#6C5C97
--plum
#8D4A64
--rose
#CB7B85

Dark Mode

Fundo quase preto com calor sutil, superfície charcoal quente, texto off-white. Inspirado no Claude/Anthropic dark mode — quente sem ser marrom. Acentos da marca mantêm a personalidade.

--espresso
#1A1A18
Fundo dark
--surface
#262624
Superfície dark
--sand-dk
#E8E4DC
Texto dark
--terra
#D9714A
Acento warm dark
--teal-dk
#4FC2B6
Contraste frio dark
--cyan-dk
#54C8D0
Sinal dark

02 · Tipo

Tipografia

Três famílias com papéis definidos. Display ousado, corpo legível, mono técnico. A assinatura STIX Two Text itálico é o toque editorial — nunca corpo de texto.

Display
Bricolage Grotesque 800
Bricolage Grotesque · 800 weight · −0.02em tracking · line-height 1.0
Display · Título
Pipeline de Embeddings em Produção
Bricolage Grotesque 800 · 32px · −0.015em tracking
Display · Subtítulo
Arquitetura de índices vetoriais em escala
Bricolage Grotesque 600 · 22px · −0.01em tracking
Corpo
Um pipeline de RAG que cortou a latência em 40%. Te mostro como — sem buzzword, sem promessa vazia. Código real, números reais, arquitetura que você pode implementar hoje.
Hanken Grotesk 400 · 16px · line-height 1.6
Corpo · Ênfase
Um pipeline de RAG que cortou a latência em 40%. Te mostro como.
Hanken Grotesk 510 (ênfase) · 600 (forte)
Kicker / Label
Engenharia · Dados · AI
IBM Plex Mono 500 · 11px · 0.1em tracking · UPPERCASE
Assinatura
nⁱ · Nicolas Lima
STIX Two Text italic · 28px · uso exclusivo: marca nⁱ, pull-quotes
Mono · Técnico
$ curl -X POST https://api.nicolaslima.dev/embed \ -H "Content-Type: application/json" \ -d '{"text": "índice vetorial"}'
IBM Plex Mono 400 · 14px · código, métricas, carimbo técnico

Composição real · As 4 fontes juntas

Como Bricolage, Hanken, IBM Plex Mono e STIX Two Text trabalham juntos numa mesma peça. Cada fonte no seu papel — display, corpo, kicker, assinatura.

Engenharia · Dados · AI
Pipeline de Embeddings em Produção
Um pipeline de RAG que cortou a latência em 40%. Te mostro como — sem buzzword, sem promessa vazia. Código real, números reais, arquitetura que você pode implementar hoje.
$ curl -X POST https://api.nicolaslima.dev/embed \ -H "Content-Type: application/json"
nⁱ · Nicolas Lima

Escala tipográfica

TokenFamíliaPesoTamanhoTrackingLine-heightUso
--text-displayBricolage Grotesque80048–72px−0.02em1.0Hero / capa
--text-h1Bricolage Grotesque80032–48px−0.02em1.1Título de seção
--text-h2Bricolage Grotesque60022–28px−0.01em1.2Subtítulo
--text-bodyHanken Grotesk40015–18px01.5–1.6Corpo
--text-body-emHanken Grotesk51015–18px01.5–1.6Ênfase
--text-smallHanken Grotesk40013–14px01.5Legenda
--text-monoIBM Plex Mono400–50011–14px0.02em1.4Código / label
--text-kickerIBM Plex Mono500–60011px0.08–0.1em1.4Kicker UPPERCASE
--text-signatureSTIX Two Textitalic 40018–28px01.2Marca nⁱ / pull-quote

03 · Marca

Logos e Variações

Duas marcas: nⁱ (primária, STIX Two Text itálico) e NL (utilitária, geométrica). Três modos: color, mono, reverse. O ponto ciano aparece apenas no lockup horizontal como separador.

nⁱ · Marca primária

Use como marca principal em todos os contextos. O "i" sobrescrito em coral.

ni
nⁱ · Color
Fundo claro · padrão
ni
nⁱ · Mono
Fundo ocupado / sobre coral
ni
nⁱ · Reverse
Fundo escuro

NL · Marca utilitária

Geométrica, para favicon (~16px) e contextos onde o "i" sobrescrito não lê.

NL
NL · Color
Fundo claro
NL
NL · Mono
Fundo ocupado
NL
NL · Reverse
Fundo escuro
Regra de uso
nⁱ é a marca primária — lidere com ela em todos os contextos.
NL é a variante utilitária — apenas para favicon e tamanhos mínimos.
Nunca os dois lado a lado com peso igual.
Logo colorido nunca sobre coral/âmbar → use mono.
O ponto ciano aparece exclusivamente como separador do lockup horizontal.

04 · Ícones

Iconografia

Ícones de marca em SVG plano, traço 1.6px, `currentColor`. Sem emoji decorativo — Unicode apenas funcionalmente (✓ ✕ ↗ • →).

Camadas
Globo
Tendência
Dashboard
Pacote
Relógio
Documento
Gráfico
Coração
Check

05 · Elementos

Grafismos e Texturas

Texturas, formas geométricas e elementos hand-drawn. Sempre emolduram conteúdo real — nunca são decoração vazia.

Texturas

Campo de pontos
Grid técnico

Formas Bauhaus / Geométricas

Círculo
Quadrado
Triângulo
Losango

Hand-drawn · Camada de cima

Elementos à mão livre como camada superior sobre a estrutura geométrica.

Seta
Sublinha
Pin
Selo
Bandeirola
Balao

06 · Layout

Composição

Composição é o esqueleto invisível de tudo. Antes de cor ou animação: uma grade, margens de segurança e uma hierarquia clara. Estas regras valem para os três formatos (16:9, 9:16, 1:1).

Grade de 3×3

A regra dos terços. Posicione o que importa nas linhas e nos quatro cruzamentos (pontos coral), não no centro morto.

Ponto focal nos cruzamentos

Margem de segurança

Nada vital nos 8% das bordas (linha âmbar). Cortes, legendas e UI de plataforma vivem aí.

8% · zona de segurança

Regras de composição

01
Um ponto focal
Cada tela tem UM herói. O resto apoia. Se tudo grita, ninguém ouve.
02
Respiro
Espaço vazio não é desperdício — é o que dá foco. Resista a preencher tudo.
03
Estrutura primeiro
Comece pela grade e margem de segurança, decida o ponto focal, e só então adicione apoio.

07 · Mídia

Vídeo · Anatomia

Num vídeo, a tela é dividida em regiões fixas. Manter cada tipo de elemento sempre na mesma região cria consistência — o espectador aprende onde olhar.

Zonas da tela

Cada zona tem um trabalho fixo. Nunca troque as posições.

Marca
Canto superior
O nⁱ pequeno e constante. Presença, não protagonismo.
Título
Terço inferior esquerdo
O que a tela está dizendo agora.
Apoio / Kicker
Acima do título
Em mono. Contexto curto.
Zona de legenda
Faixa inferior central
Deixe livre para captions.

Componentes de tela

O repertório fechado. Combine estes blocos em vez de inventar layout do zero a cada vídeo.

01
Title card
Abertura e troca de capítulo. Respira, ocupa a tela toda.
02
Lower third
Identificar quem fala, ou rotular o que está na tela.
03
Callout
Puxar atenção a um detalhe ou definição importante.
04
Code block
Mostrar código ou comando. Mono, fundo escuro, uma ideia por vez.
05
Bullet reveal
Listar passos ou pontos. Revele um por vez, nunca tudo de uma vez.
06
End card / CTA
Fechamento. Lockup + uma ação só (inscreva-se, link).

08 · Movimento

Animação com propósito

Movimento guia o olho e dá ritmo — quando tem intenção. A marca usa um vocabulário pequeno e consistente de transições. Tudo parte de uma curva e de durações fixas.

A curva da marca

Saída rápida, chegada suave (ease-out). Dá energia sem parecer brusco. Use a mesma curva em tudo — é o que faz o movimento "soar" como a marca.

Curva
cubic-bezier(.2,.7,.3,1)
Ease-out · saída rápida, chegada suave

Durações

Micro (UI, hover)
120–200ms
Aparição de label, troca de estado.
Elemento entra/sai
300–450ms
Title card, bullet, callout surgindo.
Transição de cena
500–700ms
Corte entre seções/capítulos.

Do & Don't

✓ Faça
Fade + leve subida, na curva da marca, rápido. O movimento serve o conteúdo e some. Kicker, título e barra entram em sequência (50/200/350ms) — o olho segue a ordem de leitura.
✕ Evite
Bounce, giros, escalas exageradas e durações longas. Parece amador e distrai do conteúdo. Nunca anime tudo ao mesmo tempo.
Acessibilidade
Sempre respeite prefers-reduced-motion: quem desativou animação no sistema deve ver o conteúdo no estado final, sem movimento. É uma linha de CSS — e evita enjoar parte do público.

09 · Diagramas

Diagramas, fluxos e arquiteturas

Seu terreno: explicar sistemas. Um bom diagrama é metade do trabalho de ensinar. As regras aqui valem para fluxogramas, arquiteturas e infográficos.

Vocabulário de nós

Tamanho e forma consistentes. Cor = significado (coral destaca, ciano = dado/storage, tracejado = sistema externo). Nunca cor por enfeite.

Processo
Processo · coral
Store
Store · teal
Externo
Externo · tracejado

Conectores

Ortogonal (90°), nunca diagonal solta. Sólido = fluxo direto. Tracejado = fluxo de dado / assíncrono.

Source Transform Store Serve

Fluxograma · pipeline de dados

Direção única e clara (esquerda → direita). Toda seta rotulada com o verbo da ação. O nó final (entrega) recebe o destaque coral.

Source
API / logs
extract →
Transform
spark
load →
Store
warehouse
query →
Serve
dashboard
Antes de desenhar
Pergunte: qual é a única coisa que isto precisa deixar claro? Corte tudo que não ajuda essa frase. Um diagrama com 20 caixas geralmente são três diagramas disfarçados.

10 · Dados

Data Visualization

Gráficos planos, sem degradê. Grid fino, labels em mono, fills da sequência de dados da marca. Coral codifica o foco.

Três princípios inegociáveis

01
Hierarquia perceptual
O olho compara posição e comprimento com precisão; ângulo, área e cor, mal. Prefira barras e linhas a pizzas e bolhas. (Cleveland & McGill)
02
Razão dado-tinta
Cada pixel deve carregar informação. Apague grade pesada, bordas, sombras, fundos e 3D. O dado é o herói. (Tufte)
03
Diga a verdade
Eixo de valor começa no zero. Escala proporcional. Rótulo direto no dado. Sem distorção que exagere a diferença.

Qual gráfico usar?

Barras
Comparar valores
Linha
Tendência no tempo
99
KPI
Um número-chave
Donut
Composição (2-4 fatias)
⦿
Dispersão
Relação entre 2 vars
Funil
Volume que se afunila
Tabela
Detalhe exato

Sequência de dados

6 cores na ordem padrão. Use --seq-1 a --seq-6. Para mais de 6 séries, use o ramo estendido.

TokenCorHex
--seq-1Coral#E8553A
--seq-2Amber#E8A33D
--seq-3Olive#7F8B45
--seq-4Teal#16786E
--seq-5Cyan#0E9AAC
--seq-6Rust#9E3E2B

Gráfico de barras

Fills planos da sequência. Barra de foco em coral. Grid fino, labels mono.

Latência por modelo (p95, ms)
42GPT-4
32Claude
37Gemini
23Mistral
27Llama
20DeepSeek

Gráfico de linha

Série temporal contínua. Uma linha, área leve (não gradiente), último ponto rotulado. Grade discreta.

Throughput semanal (req/s)
2,450

KPI / Big number

Um número que importa, grande. Contexto (delta vs período) pequeno e colorido por significado.

98,7%
Uptime
▲ 0,3 pp
1,2M
Eventos / dia
▲ 8%
40%
Menos latência
após reescrever o índice

Donut (com ressalvas)

Só para 2–4 fatias e quando o todo importa. Sempre com % direto. Para mais categorias, prefira barras.

100%
Retrieval 58%
LLM 30%
Outros 12%

Funil / Pipeline

Volume que decai por etapa. Barras proporcionais, valor absoluto em cada uma, destaque no gargalo ou na saída.

Capturado 12.000
Válido 9.800
Embedado 9.100
Servido 8.700

Tabela de dados

Mono, grid fino, sem row striping. Alinhamento tabular. Números à direita.

ModeloLatência p95ThroughputCusto/1M tokStatus
GPT-4o42ms1,240 req/s$2.50
Claude 3.532ms1,890 req/s$3.00
Gemini Pro37ms1,560 req/s$1.50
Mistral Large23ms2,100 req/s$2.00
Llama 3.1 70B27ms1,780 req/s$0.90
DeepSeek V320ms2,450 req/s$0.50

Erro que mais engana: eixo cortado

✕ Evite
Eixo começando em 90 faz uma diferença de 4% parecer enorme. Distorção — mesmo sem querer.
✓ Faça
Eixo no zero mostra a diferença real. Honesto. Se a variação é pequena, o gráfico deve mostrar isso.
Checklist antes de publicar
1) O eixo começa no zero? 2) Dá pra entender sem legenda? 3) A cor significa algo? 4) Apaguei toda tinta que não informa? 5) O título diz a conclusão, não só o assunto?

11 · Cenas

Cenas de slide

Telas inteiras prontas (16:9), cada uma nos dois temas. O código usa variáveis CSS — copie e troque 5 valores no topo pra alternar claro ⇄ escuro.

Galeria de cenas

6 cenas em pares claro/escuro. Use o escuro como pontuação — não alterne a cada slide.

● Episódio 12
Arquitetura de RAG na prática
nicolaslima.dev
Título · Claro
● Episódio 12
Arquitetura de RAG na prática
nicolaslima.dev
Título · Escuro
Parte 02
Indexação
Divisória · Claro
Parte 02
Indexação
Divisória · Escuro
"Dado bom não é o que você coleta — é o que você consegue explicar."
— Nicolas Lima
Citação · Claro
"Dado bom não é o que você coleta — é o que você consegue explicar."
— Nicolas Lima
Citação · Escuro
Ritmo claro ⇄ escuro
Não alterne a cada slide — isso cansa. Use o escuro como pontuação: abra um capítulo, isole uma citação ou um número de impacto num slide escuro, e volte ao claro pro conteúdo. O contraste vira ênfase.

12 · Infográficos

Blocos de infográfico

Não são ícones soltos — são componentes inteiros, compostos: estatística, fluxo de processo, pizza com chamadas, organograma, linha do tempo, comparação… Cada um já monta um pedaço do infográfico no traço hand-drawn da marca.

Estatística
40%
menos latência
Fluxo de processo
1 Coletar2 Modelar3 Servir
Comparação
Batch
55%
Streaming
90%
KPIs em linha
98,7%
uptime
1,2M
eventos
Linha do tempo
2023 v12024 v22025 RAG
Pizza com chamadas
Software 34% Dados 26% IA 22%
Como usar
Escolha o bloco que responde sua pergunta, encaixe sobre o papel quadriculado e troque os dados. Combine 2–3 por peça (ex.: faixa de título + pizza com chamadas + bloco de estatística) — um só assunto por infográfico.

13 · UI

Componentes

Componentes de interface com a paleta da marca. Botões, inputs, cards e navegação editorial — sem glass blur, sem gradiente.

Botões

Coral para ação primária. Ghost/secondary para ações secundárias. Um coral por tela.

Primary
Ação principalPequenoGrande
Secondary
Ação secundáriaPequeno
Ghost / Link
GhostLink
Estados
DefaultDisabledDisabled

Inputs

Fundo card, borda ink 20%. Focus em coral.

Text input
Textarea
Select

Cards

Superfície clara, borda fina, sem sombra. 8px radius.

Card padrão
Pipeline de RAG
Latência reduzida em 40% com chunking semântico e índice vetorial em produção.
Card com acento
Embeddings em escala
2.5M documentos indexados · p95 23ms · 99.7% recall@10

14 · Biblioteca

Assets prontos pra usar

Um kit completo: componentes copiáveis, logos, ícones, formas, texturas e tokens exportáveis. Tudo já no sistema da marca — é só puxar e montar.

Componentes copiáveis

12 componentes de mídia prontos. Copie o HTML e cole onde quiser — já vêm com cores e fontes embutidas.

Title
Title card
Abertura · 16:9
LT
Lower third
Identificação na tela
!
Callout
Chamar atenção
</>
Code block
Código / comando
99
KPI
Estatística de destaque
Nó de fluxo
Bloco de fluxograma
"
Citação
Quote editorial
Stat bar
Comparação / progresso
#
Tags
Stack / tópicos
01
Divisor
Kicker de seção
Botão
CTA / ação principal
Timeline
Passo / marco

Logos & avatares

8 arquivos SVG. Vetor; o nⁱ acompanha a fonte STIX.

nⁱ
nⁱ Color
SVG
nⁱ
nⁱ Mono
SVG
nⁱ
nⁱ Reverse
SVG
NL
NL Color
SVG
NL
NL Mono
SVG
NL
NL Reverse
SVG
NL
Avatar NL
SVG
n
Avatar nⁱ
SVG

Tokens exportáveis

As variáveis da marca em CSS e JSON — cole no projeto e tudo já sai na paleta certa.

tokens.css
/* Variáveis CSS */ --coral:#E8553A; --clay:#C2683E; --bg:#F4ECD9; --card:#FBF6EA; --ink:#211913; --stone:#6B5D4F; --font-display:'Bricolage Grotesque';
tokens.json
{ "color": { "coral": "#E8553A", "bg": "#F4ECD9", "ink": "#211913" }, "font": { "display": "Bricolage Grotesque" } }

15 · Disciplina

Regras da Marca

As regras que protegem a identidade visual. Violá-las é quebrar a coerência da marca.

Cor plana
Sem degradê, sem brilho, sem sombra 3D. Cores chapadas, pontos e linhas.
Coral é ação
Um coral por tela. Apenas CTA primário ou destaque único. O resto recua (ghost/outline).
60/30/10
60% neutro · 30% quente · 10% frio (teal/cyan). Se tudo é destaque, nada é.
Bricolage só em tamanhos grandes
Display e títulos. Hanken para corpo. Mono para carimbo técnico.
Mono = carimbo técnico
Caixa alta, espaçado (0.08–0.1em). Kickers, labels, código, métricas.
Hand-drawn é camada de cima
Estrutura geométrica primeiro. Hand-drawn como overlay, nunca como fundo.
Um ponto focal por tela
Se tudo grita, ninguém ouve. Hierarquia clara: um elemento principal, o resto suporte.
Eixo começa no zero
Gráficos e eixos sempre em zero. Sem truncamento enganoso.
Logo colorido nunca sobre coral/âmbar
Use mono. O ponto ciano só aparece no lockup horizontal como separador.
Sem emoji decorativo
Unicode apenas funcionalmente: ✓ ✕ ↗ • →. Nada de ✨ 🚀 🎯.
Animação com propósito
Curva única: cubic-bezier(.2,.7,.3,1). Durações: 120–200ms micro, 300–450ms entrada, 500–700ms cena. Sempre respeite prefers-reduced-motion.
Dados honestos
Eixo no zero. Rótulo direto. Sem 3D, sem arco-íris, sem pizza com 8 fatias. Checklist antes de publicar: eixo no zero? entende sem legenda? cor significa algo? tinta que não informa foi apagada? título diz a conclusão?