Briefing
Um projeto real, do briefing ao deploy.
O vocabulário visual do workshop Freelancer + AI: cor, tipo, forma e movimento tirados direto do CSS que roda na página. O papel é bege, a tinta contorna e a sombra é dura.
A assinatura é o par logo + wordmark, sempre lado a lado com
gap: 12px. O símbolo é um círculo de 40px, com aro de 2px e sombra dura de 4px na
--moldura; o wordmark é Dela Gothic One 23px / 400, com o sufixo .dev no
mesmo peso e em --laranja. Nunca redesenhe o par: o contraste de cor entre
dallatorre e .dev é a marca.
dallatorre.dev
Sobre o papel bege: wordmark na tinta preta e o .dev no laranja. É o uso do topo e do
rodapé, e o padrão da casa.
dallatorre.dev
Sobre o papel escuro: o wordmark vira bege, e o aro do símbolo também — é ele que separa o círculo preto do fundo. O laranja não muda de tema.
favicon-dallatorre.png
--preto
Um papel bege, uma tinta quase preta e seis cores chapadas, sempre dentro de moldura.
O papel e a tinta de quase toda a página. O bege carrega o fundo, o preto carrega o texto, a moldura e a sombra — nunca o contrário. O roxo forte só aparece no anel de foco.
Sempre chapadas e sempre com moldura e sombra dura. São as mesmas nos dois temas, e o texto sobre elas é sempre preto: o pior caso, o laranja, ainda dá 6.21:1.
A proporção real da página: o bege domina, o preto aparece em todo contorno e em toda sombra, e as cores, somadas, ficam nos cartões e nos botões.
As seções se alternam em quatro papéis, e é o papel — não a cor do cartão — que muda com o tema. No escuro eles viram quatro pretos tingidos, e as cores chapadas continuam as mesmas por cima: é por isso que o texto sobre elas é sempre preto.
| Token | Claro | Escuro | Onde entra |
|---|---|---|---|
--moldura | #101011 | #FCFBF8 | contorno e sombra de tudo que pousa no papel |
--linha | var(--moldura) | var(--moldura) | traço de dentro; todo cartão de cor o redefine como --preto |
--sobre-cor | #101011 | #101011 | texto sobre qualquer cor chapada |
--tinta-2 | rgba(16,16,17,.78) | rgba(252,251,248,.8) | lead e texto de apoio |
--tinta-mute | rgba(16,16,17,.6) | rgba(252,251,248,.6) | rótulo e legenda |
--cartao | #FCFBF8 | #1E1E21 | papel do cartão neutro e dos campos |
--foco | #4B34F7 | #BAB7FC | anel de foco, 3px |
--barra | bege → transparente | preto → transparente | o degradê do topo fixo, sem borda |
Três vozes: Montserrat grita, Questrial explica, Dela Gothic assina.
Os títulos que abrem uma tela — a hero e o fecho — são Montserrat 900, e o da hero leva uma das linhas dentro da pílula de sombra dura, como o “Website” do template. O título de seção é Montserrat 700, sem pílula. Caixa-alta e peso fino não entram em título nenhum: fora esses dois padrões, não invente um terceiro.
A voz que abre. Títulos, botões, rótulos, números e tudo o que pede peso.
A voz que explica. Corpo, leads, legendas e notas — tudo o que é lido em bloco. Tem um peso só — ênfase aqui é Montserrat ou cor.
A voz que assina. Só o wordmark dallatorre.dev, como a letra do logo do template — nunca
em título.
dallatorre.devO compasso é o do template, e não fluido: seção com 104px de
respiro em cima e embaixo (72px no telefone), miolo travado em 1120px e margem lateral de
28px (18px no telefone). O que respira junto do viewport é o corpo dos títulos e o padding das
caixas grandes — esses, sim, em clamp() sobre vw.
Padding de seção 104px 0, e 72px 0 abaixo de 720px. Do olho ao
título, 10px; do título ao lead, 18px; do cabeçalho ao conteúdo,
60px (44px no telefone). Entre cartões, 44px 32px.
Cartão grande em 40px (--r-card); cartão menor, e todo cartão no telefone,
em 32px (--r-medio); capa de foto em 18px; botão, etiqueta e
campo de uma linha em 999px (--r-pill) — tudo o que se aperta ou se preenche
vira pílula.
| Medida | Valor | Onde |
|---|---|---|
| Margem lateral | 28px · 18px | .wrap, acima e abaixo de 720px |
| Margem do topo e da hero | 64px · 40px · 24px | acima de 1280, até 1280, até 768 |
| Largura de conteúdo | 1120px | .wrap (--maxw) |
| Medida de título | 22ch | .titulo |
| Medida de lead | 56ch · 48ch | .lead · .hero .lead |
| Altura do topo | 92px · 80px | acima e abaixo de 560px |
| Grade de cartões | repeat(2, 1fr) · repeat(3, 1fr) | serviços · portfólio |
| Quebras da navegação | 1180 · 980 · 945 | marca encolhe · menu sai · dock entra |
| Quebras das seções | 1100 · 900 · 720 · 560 | anéis saem · leque vira grade · uma coluna · selo sobe |
Nada aqui tem desfoque. Tudo o que sai do papel sai com moldura de tinta e sombra dura, deslocada só para baixo e sem blur nenhum — é ela que diz o que é botão, o que é cartão e o que é chão. A espessura acompanha o tamanho da peça, e a sombra também.
3px etiqueta e olho · 4px botão, selo e campo · 5px ladrilho e
dock · 8px pílula do título · 12px cartão. Sempre
0 Npx 0 0 var(--moldura). No botão o hover encolhe a sombra; na carta do leque, que
levanta, ela cresce para 18px.
Foto não leva véu: leva moldura. 2px quando mora dentro de um cartão, 4px
quando está solta no papel, com raio de 16 a 32px — e o texto mora fora dela.
Os SVGs são as cores das próprias marcas, então cada um ganha uma
pastilha nos tons claros do template — bege, bege 2, lilás, verde-claro, pêssego —, com moldura de 2px,
sombra dura de 5px e padding de 21%. Os quatro logos que vêm em branco chapado (MariaDB,
PostgreSQL, MySQL e MCP) ficam no --preto.
--lilas--bege--bege-2--pessego--verde-claro--bege-2--pretoTamanho e canto variam por ladrilho (64px e 18px são os da órbita
1): quem manda são os dados de cada casa — --lado e --canto no HTML da home,
HeroCircles.jsx no workshop —, não uma medida única. O que não varia é a pastilha, a moldura
e o padding.
Um desenho só, em duas medidas: a pílula do template. Contorno de
2px, sombra dura de 4px e cor chapada — verde para o que a página quer que se aperte, lilás
para o resto. O clique é um afundar: no hover a pílula desce 1px e a sombra encolhe junto, no
:active ela encosta no chão (0.2s).
| Contorno | 2px solid var(--linha) |
| Sombra | 0 4px 0 0 var(--linha), dura |
| Afundar | translate: 0 1px no hover, 0 4px no :active, .2s var(--ease) |
| Raio | 999px |
| Letra | Montserrat 600, 17px / 26px |
| Classe | Fundo | Padding | Corpo | Papel |
|---|---|---|---|---|
.btn | --verde | 10 / 22 | 17 · 600 | primário |
.btn-ghost | --lilas | 10 / 22 | 17 · 600 | secundário |
.btn--pequeno | — | 8 / 18 | 16 · 600 | topo, cartões |
translate, e não transform, não é capricho: o GSAP escreve o
transform dos pais na entrada em cascata, e as duas propriedades somam em vez de uma
apagar a outra. Mantenha assim.
Sobre um cartão de cor o botão é o mesmo, só que bege: o verde sumiria no cartão verde. O texto do CTA sempre pede uma ação de entrada — Entrar no time, Quero minha vaga — nunca Saiba mais.
Só o ícone, num círculo bege de 42px com o mesmo contorno, a mesma sombra e o mesmo
afundar da pílula — é o idioma e o tema no topo da home, e a seta do carrossel do template (lá, de 54px).
Sem rótulo visível, quem diz o que ele faz é o aria-label.
O menu é uma fileira de pílulas lilás de 8px 18px, Montserrat 600 16px — a do
topo da home e a do rodapé —, e a chamada principal é a pílula verde no fim dela. As abas são as mesmas
pílulas dentro de um trilho de papel com moldura fina: a acesa ganha o lilás e o contorno, as outras ficam
só no texto. É o desenho do Preview / DESIGN.md lá em cima.
Tudo que rotula é uma pílula, e toda pílula é totalmente arredondada, com contorno de 2px. O selo mudou de papel: agora é a pastilha redonda do template, a que carrega o ícone no alto de um cartão de cor. Rótulo de texto é a etiqueta.
Círculo bege de 64px, contorno de 2px e sombra dura de 4px na --linha —
mora sempre sobre cor, então desenha em preto nos dois temas. O ícone é um glifo preto: SVG de traço a
28px, ou um dos PNGs como fundo a 50%.
A etiqueta com ponto é o marcador de estado; a pílula verde-clara de sombra curta é o olho da
hero. A pílula lilás com a seta (.cursor-tag__rotulo, 15px / 600, sombra de 3px)
é a etiqueta que segue o cursor pela página — e, como toda cor aqui, leva texto preto por cima.
Dois contêineres, a mesma moldura. O painel é o cartão neutro:
papel --cartao, contorno de 4px, raio de 40px e sombra dura de 12px. O cartão de cor é
o mesmo desenho com uma das seis cores chapadas por dentro e texto preto por cima — e é ele que entorta.
O contêiner
padrão para conteúdo agrupado sobre o papel — a caixa das duas portas e o cartão do rodapé. Padding em
clamp(28px, 4.4vw, 60px): ele cresce com o viewport, como os títulos.
Um projeto real, do briefing ao deploy.
Code review de quem entrega para cliente pagante.
AI no fluxo de trabalho, não como truque.
Cada cartão roda numa cor e numa inclinação de ±1 a 2°, e endireita no hover
(rotate: 0deg, .3s). rotate, e não transform: a
cascata do GSAP escreve o transform na entrada, e os dois somam. Passe o mouse.
Trabalho em grupo
Do briefing ao deploy em quatro horas.
Ver o workshopO que é link afunda em vez de endireitar: no hover o cartão desce 10px e a sombra
cai para 2px, como o View case do template.
Cinco cartas sobrepostas em 13% da própria largura, cada uma com giro e deslocamento vertical próprios. Passe o mouse: a carta se endireita, sobe 16px, cresce 6%, ganha uma sombra dura mais alta e empurra as vizinhas. O verde fica no meio de propósito — é ele que ancora as outras quatro cores.
A faixa exposta de cada card (largura − sobreposição − padding) é o que manda no
corpo do título: todos precisam se ler no repouso, então os dois números andam juntos. Cada card tem
perspective própria — num contêiner comum todos dividiriam o mesmo ponto de fuga e os das
pontas girariam tortos.
dallatorre.devO rodapé é um cartão bege sobre o papel pêssego, como o do template: a marca no alto, um fio de 2px, e embaixo os destinos — o rótulo em Montserrat 600 18px e as pílulas, lilás para o que é do site e bege para o que leva para fora dele.
Abaixo de 946px a navegação sai do topo e vira uma barra flutuante no pé, ao alcance
do polegar: um cartão de papel com moldura de 2px, raio de 30px e sombra de 5px. Só o item da seção em que
a página está fica aceso — a pastilha verde, com contorno —, e quem diz qual é ele é o
aria-current que o script escreve, e não uma classe.
Toda seção abre igual, como no template: o olho miúdo em Montserrat
600, o título grande logo abaixo e a linha de apoio, tudo centrado. Não há régua nem seta de
continuidade: o que separa uma seção da outra é a troca de papel. A entrada é do GSAP, pelo atributo
data-cabeca — o olho sobe, as letras do título acendem em ordem aleatória e o lead vem por
último.
O título é frase curta e sem ponto final. Lead e itens de lista são frases completas, com ponto.
A lista numerada que serve as quatro seções do meio: grade de
52px 1fr 42px, divisórias de 2px na --moldura e, no hover, o papel lilás mais um
recuo à esquerda. A marca da direita é um botão de ícone, e gira 90°.
| Estado | Fundo | Marca |
|---|---|---|
| Repouso | — | botão de ícone bege, contorno --moldura |
| Hover | --papel-lilas + recuo | gira 90° |
| Destaque | --verde-claro, texto --sobre-cor | não gira |
No sistema novo o claro é o padrão, e o que muda de uma seção para a
outra é o papel: bege, bege 2, pêssego e lilás, em alternância. Sobre o papel de cor o conteúdo vai num
cartão bege, como o Partners in crime do template, e os destaques de dentro voltam a ser cartões de
cor. Os ícones deixaram de ser máscara: os PNGs já são glifos pretos, e entram como imagem dentro de
um selo bege — sem filter e sem tingir.
É o que você entregou. A diferença entre um curso e um time é ter alguém esperando o seu commit.
Entrar no timeVocê estuda sozinho e nunca sabe se o que fez está bom.
Sabe a sintaxe, mas trava na hora de montar um projeto inteiro.
Tem repositórios, mas nenhum que alguém pagou para existir.
| Papel | Escuro | Claro |
|---|---|---|
| Fundo | #101011 | #FCFBF8 |
| Título | #FCFBF8 | #101011 |
| Segunda voz | a mesma tinta, na pílula #1E1E21 | a mesma tinta, na pílula #FCFBF8 |
| Corpo | rgba(252,251,248,.8) | rgba(16,16,17,.78) |
| Fio | #FCFBF8 | #101011 |
| Ênfase | as cores chapadas, iguais | as cores chapadas, iguais |
As credenciais viram anotações manuscritas em volta da foto, com uma
seta apontando para o que descrevem. Ficam ancoradas na borda da imagem, não na da tela:
right: 100% encosta a nota na moldura e o top em porcentagem passa a ser da
altura da foto — é o que mantém todas dentro da faixa dela em monitor largo.
Nove anos entregando software para cliente pagante
Times de 2 a 30 pessoas, remoto e presencial
A seta é desenhada apontando para a direita e para baixo, e vale como está do lado
esquerdo da foto; do lado direito ela é espelhada (scaleX(-1)) em vez de existir um
segundo desenho. Cada nota ainda gira a seta no próprio ângulo, via --giroSeta. Corpo e
largura são contidos de propósito: são nove notas em volta de uma foto só. A seta é o laranja do logo — o
único traço de cor do palco —, e a foto vai em preto e branco, com moldura de 4px.
A página de hoje não tem campo nenhum — todo CTA leva ao grupo do WhatsApp. Este é o desenho derivado dos tokens, para quando entrar um formulário de inscrição, e não uma peça já em uso.
O anel de foco é o
--foco: 3px de roxo forte, afastado 2px do campo — no escuro, lilás. Passe pelos campos
com Tab.
| Superfície | --cartao, o papel dos cartões |
| Borda | 2px solid var(--moldura) e sombra dura de 4px |
| Raio | 999px — campo de uma linha é pílula; 16px no de várias |
| Foco | outline: 3px solid var(--foco), afastado 2px |
| Rótulo | Montserrat 600 · 15px · sem caixa-alta |
| Marcar | quadrado de 2px; marcado, --verde com o visto em preto |
No template campo e botão são pílula os dois — o que separa um do outro é a cor: o campo é papel, o botão é cor chapada. Se o campo ganhar cor, o formulário vira uma fileira de CTAs.
Uma curva só na página inteira:
cubic-bezier(.22, 1, .36, 1) — saída rápida, chegada longa. O GSAP usa
power3.out para entradas e power2.inOut para o flip dos cards. Nada de
linear, exceto os giros infinitos (as órbitas), que precisam de velocidade constante.
cubic-bezier(.22, 1, .36, 1) em 0.5s: a mesma curva do hover do card, da
raia e do afundar do botão.
| Afundar de botão | 0.2s |
| Cartão de link | 0.25s |
| Cartão endireitando | 0.3s |
| Hover de raia | 0.35s |
| Hover do leque | 0.5s |
| Entrada de ladrilho | 0.7s |
| Fade do vídeo | 0.9s |
| Giro das órbitas | 30–60s linear ∞ |
Movimento reduzido. Com prefers-reduced-motion: reduce, os giros
infinitos param: órbitas, contra-giro dos ladrilhos e o cursor do typewriter perdem a
animation. As transições de hover ficam — são curtas e disparadas pelo usuário. Toda entrada
de ladrilho é escala + opacidade, nunca filter: animar filter dentro de dois
ancestrais que giram congela a rasterização no meio do caminho.
A imagem da página é sempre a mesma promessa: gente real trabalhando junto. Foto documental emoldurada em tinta, sem véu por cima, e ícones de linha em preto dentro de selos bege. Sem stock sorridente, sem mockup de dashboard.

A foto do palco: ambiente escuro, luz de palco, plateia visível. Entra emoldurada, com 4px de tinta e raio de 28px, e o texto mora fora dela, num cartão — nunca por cima.

Telas, mesa, mais de uma pessoa. É a prova visual do argumento da página — time, não curso.
Os PNGs são glifos pretos e entram como são: fundo de um selo bege a 50%, com contorno e sombra dura.
Sem máscara e sem filter — a cor do ícone é a da tinta.
#FCFBF8; a tinta #101011 carrega o texto, a moldura e a sombra.tabular-nums em qualquer número.rotate, e não transform.backdrop-filter) nem texto em degradê.# WF + AI Design System
A linguagem visual da página do workshop Freelancer + AI. Cada valor aqui sai do
`<style>` da home (`index.html`), a implementação de referência do template Muis.
Quando o CSS discordar deste documento, o CSS ganha — e este documento é corrigido.
> **Princípio:** o bege é o papel; o preto é a tinta, a moldura e a sombra.
> As cores existem chapadas, dentro de moldura, e o texto sobre elas é sempre preto.
---
## Cor
### Primária
| Nome | Hex | Token | Uso |
|------------|-----------|----------------|-----------------------------|
| Bege | `#FCFBF8` | `--bege` | papel, cartão |
| Preto | `#101011` | `--preto` | tinta, moldura, sombra |
| Bege 2 | `#EFEBE0` | `--bege-2` | papel 2, zebra das tabelas |
| Roxo forte | `#4B34F7` | `--roxo-forte` | anel de foco (`--foco`) |
### Cores dos cartões
Sempre chapadas, com moldura de 4px e sombra dura. Iguais nos dois temas; o texto
sobre elas é sempre preto (`--sobre-cor`).
| Nome | Hex | Token | Preto s/ ela |
|-------------|-----------|-----------------|--------------|
| Verde | `#00C96B` | `--verde` | 8.66:1 |
| Laranja | `#FF5E00` | `--laranja` | 6.21:1 |
| Pêssego | `#FFC2B6` | `--pessego` | 12.36:1 |
| Roxo | `#968FFA` | `--roxo` | 6.89:1 |
| Lilás | `#BAB7FC` | `--lilas` | 10.20:1 |
| Verde médio | `#92DEAB` | `--verde-medio` | 12.01:1 |
| Verde claro | `#B6EAC6` | `--verde-claro` | 14.10:1 |
Branco sobre elas não se lê: 2.20:1 no verde, 3.06:1 no laranja.
### Papéis de seção
As seções alternam quatro papéis. É o papel — não a cor do cartão — que muda com o
tema; no escuro ele vira um preto tingido, e as cores chapadas continuam por cima.
| Token | Claro | Escuro |
|-------------------|-----------|-----------|
| `--papel` | `#FCFBF8` | `#101011` |
| `--papel-2` | `#EFEBE0` | `#19191B` |
| `--papel-pessego` | `#FFC2B6` | `#241918` |
| `--papel-lilas` | `#BAB7FC` | `#1A192D` |
| `--cartao` | `#FCFBF8` | `#1E1E21` |
### Traços, sombras e superfícies
| Token | Claro | Escuro | Onde |
|----------------|------------------------|------------------------|---------------------------------------------|
| `--moldura` | `#101011` | `#FCFBF8` | contorno e sombra do que pousa no papel |
| `--linha` | `var(--moldura)` | `var(--moldura)` | traço de dentro; cartão de cor põe `--preto`|
| `--sobre-cor` | `#101011` | `#101011` | texto sobre qualquer cor chapada |
| `--cartao` | `#FCFBF8` | `#1E1E21` | cartão neutro e campos |
| `--foco` | `#4B34F7` | `#BAB7FC` | anel de foco, 3px |
| `--barra` | bege → transparente | preto → transparente | degradê do topo fixo, sem borda |
### Texto
| Papel | Escuro | Claro |
|----------------|---------------------------|---------------------------|
| Título | `#FCFBF8` (`--tinta`) | `#101011` (`--tinta`) |
| Segunda voz | a mesma, dentro da pílula | a mesma, dentro da pílula |
| Corpo | `rgba(252,251,248,.8)` | `rgba(16,16,17,.78)` |
| Rótulo/apoio | `rgba(252,251,248,.6)` | `rgba(16,16,17,.6)` |
---
## Tipografia
Três famílias, três papéis:
- **Montserrat** (500–900) — a voz que abre: títulos, botões, rótulos, números.
- **Questrial** (400, um peso só) — a voz que explica: corpo, leads, legendas,
notas. **Não tem itálico nem negrito:** ênfase é Montserrat ou cor.
- **Dela Gothic One** (400) — a voz que assina: só o wordmark `dallatorre.dev`.
Os títulos que abrem uma tela (hero, fecho) são **Montserrat 900**; o da hero leva
uma das linhas dentro da pílula de sombra dura, como o "Website" do template. Título
de seção é Montserrat 700, sem pílula. Caixa-alta e peso fino não entram em título
nenhum. Fora esses dois padrões, não invente um terceiro.
| Papel | Fonte | Peso | Tamanho | LH | Tracking |
|------------------|-------------|---------|----------------------------|------|----------|
| Título da hero | Montserrat | 900 | `clamp(40px,5.6vw,84px)` | 1.08 | −2,5% |
| Título de seção | Montserrat | 700 | `clamp(30px,3.6vw,48px)` | 1.22 | −1% |
| Título pareado | Montserrat | 900/600 | `clamp(30px,4.2vw,56px)` | 1.1 | −2% |
| Título de cartão | Montserrat | 600 | `clamp(24px,2.3vw,32px)` | 1.15 | 0 |
| Olho de seção | Montserrat | 600 | `18px` | 28px | 0 |
| Lead | Questrial | 400 | `18px` (`19px` na hero) | 28px | 0 |
| Raia | Montserrat | 600 | `clamp(18px,1.7vw,24px)` | 1.28 | 0 |
| Raia densa | Questrial | 400 | `17px` | 1.45 | 0 |
| Botão | Montserrat | 600 | `17px` (`16px` pequeno) | 26px | 0 |
| Etiqueta | Montserrat | 600 | `13–15px` | 20px | 0 |
| Numeração | Montserrat | 600 | `.72em` do título | — | 0 |
| Nota | Questrial | 400 | `clamp(12.5px,.95vw,16px)` | 1.35 | 0 |
| Wordmark | Dela Gothic | 400 | `23px` | 1 | −1% |
Medidas de linha: título de seção `22ch`, lead `56ch` (`48ch` na hero).
Qualquer número leva `font-variant-numeric: tabular-nums`.
---
## Espaço & forma
O compasso é o do template, e não fluido: o que respira com o viewport é o corpo dos
títulos e o padding das caixas grandes, em `clamp()` sobre `vw`.
| Medida | Valor |
|-----------------------|-------------------------------------|
| Margem lateral | `28px` · `18px` abaixo de 720px |
| Margem do topo e hero | `64px` · `40px` · `24px` |
| Largura de conteúdo | `1120px` |
| Padding de seção | `104px 0` · `72px 0` abaixo de 720px|
| Olho → título | `10px` |
| Título → lead | `18px` |
| Cabeçalho → conteúdo | `60px` · `44px` no telefone |
| Entre cartões | `44px 32px` |
| Altura do topo | `92px` · `80px` abaixo de 560px |
Raios: cartão `40px` (`--r-card`), cartão menor `32px` (`--r-medio`), capa `18px`,
dock `30px`, campo de várias linhas `16px`, botão, etiqueta e campo `999px` (`--r-pill`).
Contornos: `2px` em botão, selo, campo e capa; `3px` na pílula do título; `4px` em
cartão. Sombras, todas duras (`0 Npx 0 0 var(--moldura)`): `3px` etiqueta e olho, `4px`
botão, selo e campo, `5px` ladrilho e dock, `8px` pílula do título, `12px` cartão,
`18px` carta levantada do leque.
Quebras: `1280 · 1180 · 1100 · 980 · 945 · 900 · 768 · 720 · 560 · 400`.
---
## Componentes
### Botão
A pílula do template, em duas medidas. Contorno de `2px`, sombra dura de `4px` e cor
chapada: `--verde` primário, `--lilas` secundário, `--bege` sobre cartão de cor. O
clique é um afundar: `translate: 0 1px` e sombra de `3px` no hover, `translate: 0 4px`
e sombra `0` no `:active`, em `.2s var(--ease)`. `translate`, e não `transform`, para
não disputar com o transform que o GSAP escreve nos pais.
| Classe | Fundo | Padding | Corpo | Papel |
|-----------------|------------|-------------|------------|----------------|
| `.btn` | `--verde` | `10px 22px` | `17px/600` | primário |
| `.btn-ghost` | `--lilas` | `10px 22px` | `17px/600` | secundário |
| `.btn--pequeno` | — | `8px 18px` | `16px/600` | topo e cartões |
Botão de ícone: círculo bege de `42px`, com o mesmo contorno, a mesma sombra e o
mesmo afundar. Quem diz o que ele faz é o `aria-label`.
### Menu e abas
Menu: pílulas lilás de `8px 18px`, Montserrat 600 16px, com a chamada principal em
verde no fim. Abas: as mesmas pílulas dentro de um trilho de papel com moldura de
2px; a acesa ganha o lilás e o contorno.
### Selo e etiquetas
`.selo` — a pastilha do ícone: círculo bege de `64px`, contorno de 2px e sombra de
4px na `--linha`, glifo preto por dentro (SVG a 28px ou PNG a 50%). Mora sobre cor.
`.tag` — o rótulo de texto: pílula de 2px, `padding: 4px 14px`, Montserrat 600
13–15px, cor chapada ou bege. O olho da hero é a mesma pílula em `--verde-claro`,
com sombra de 3px.
`.cursor-tag__rotulo` — a pílula lilás com a seta que segue o cursor, `15px/600`.
### Painel e cards
Painel — o cartão neutro: `--cartao`, contorno de `4px`, raio de `40px`, sombra
`0 12px 0 0`, padding `clamp(28px,4.4vw,60px)`.
Cartão de cor — o mesmo desenho com uma das seis cores (`--laranja`, `--verde`,
`--pessego`, `--roxo`, `--lilas`, `--verde-medio`) e texto preto; redefine `--linha`
como `--preto` para os filhos. Inclinação de ±1 a 2° por `rotate`, que endireita no
hover em `.3s`. Cartão que é link afunda: `translate: 0 10px` e sombra de `2px`.
Leque — cinco cards sobrepostos em **13% da própria largura**, cada um com giro e
deslocamento próprios. No hover o card se endireita, sobe `16px`, cresce `6%`, ganha
sombra de `18px` e empurra os vizinhos. O verde fica no meio: é ele que ancora as
outras quatro cores. A faixa exposta de cada card manda no corpo do título — todos
precisam se ler em repouso.
Rodapé — cartão bege sobre o `--papel-pessego`: a marca, um fio de 2px, e os destinos
em pílulas — lilás para o que é do site, bege para o que leva para fora dele.
Dock do celular — até `945px` a navegação vira uma barra no pé: cartão de papel com
moldura de 2px, raio de `30px` e sombra de `5px`. O item aceso é uma pastilha verde
com contorno, marcada pelo `aria-current` que o script escreve.
### Cabeçalho de seção
Olho em Montserrat 600 18px, título grande logo abaixo, lead por último, tudo
centrado. Sem régua e sem seta: o que separa as seções é a troca de papel. A entrada
é do GSAP (`data-cabeca`): o olho sobe, as letras do título acendem em ordem
aleatória e o lead vem por último.
### Raias
Grade `52px 1fr 42px`, divisórias de 2px na `--moldura`.
| Estado | Fundo | Marca |
|-----------|---------------------------------|--------------------------|
| Repouso | — | botão de ícone bege |
| Hover | `--papel-lilas` + recuo | gira 90° |
| Destaque | `--verde-claro`, texto preto | não gira |
### Superfície de cor
O claro é o padrão; o que muda de uma seção para a outra é o papel (`--papel`,
`--papel-2`, `--papel-pessego`, `--papel-lilas`). Sobre o papel de cor o conteúdo vai
num cartão bege, e os destaques de dentro voltam a ser cartões de cor. Ícones entram
como imagem num selo bege — os PNGs já são glifos pretos, sem máscara e sem `filter`.
### Notas
Anotações ancoradas na borda da imagem, não na da tela: `right: 100%` encosta a nota
na moldura e o `top` em porcentagem passa a ser da altura da foto. A seta é desenhada
apontando para a direita e para baixo, e vale como está à esquerda da foto; à direita
ela é espelhada com `scaleX(-1)`. Cada nota gira a seta no próprio ângulo via
`--giroSeta`. Corpo da nota: `--tinta`; seta: `--laranja`; foto em preto e branco,
com moldura de 4px.
### Formulários
Não existem na página de hoje — todo CTA leva ao grupo do WhatsApp. O desenho abaixo
é derivado dos tokens, para quando entrar um formulário de inscrição.
Campo: `--cartao`, contorno `2px solid var(--moldura)` e sombra dura de 4px, raio
`999px` (`16px` no de várias linhas). Foco: `outline: 3px solid var(--foco)`,
afastado 2px. Rótulo em Montserrat 600 15px, sem caixa-alta. Caixa de marcar:
quadrado de 2px; marcada, `--verde` com o visto em preto. Campo e botão são pílula os
dois: o que separa um do outro é a cor — papel no campo, cor chapada no botão.
---
## Movimento
Uma curva na página inteira: `cubic-bezier(.22, 1, .36, 1)` (`--ease`). No GSAP,
`power3.out` para entradas e `power2.inOut` para o flip dos cards. Nada de `linear`,
exceto os giros infinitos (as órbitas), que precisam de velocidade constante.
| O que | Duração |
|--------------------------|-------------------|
| Afundar de botão | `0.2s` |
| Cartão de link | `0.25s` |
| Cartão endireitando | `0.3s` |
| Hover de raia | `0.35s` |
| Hover do leque | `0.5s` |
| Entrada de ladrilho | `0.7s` |
| Fade do vídeo | `0.9s` |
| Giro das órbitas | `30–60s linear ∞` |
**Movimento reduzido.** Com `prefers-reduced-motion: reduce` os giros infinitos param:
órbitas, contra-giro dos ladrilhos e cursor do typewriter perdem a `animation`. As
transições de hover ficam — são curtas e disparadas pelo usuário.
Entrada de ladrilho é escala + opacidade, nunca `filter`: animar `filter` dentro de
dois ancestrais que giram congela a rasterização no meio do caminho.
---
## Direção de arte
Foto documental de gente real trabalhando junto, emoldurada em tinta — `2px` dentro de
cartão, `4px` solta no papel, raio de 16 a 32px — e sem véu por cima. Ícones de linha
em preto, dentro de selos bege. Logo branco sobre transparente vai num ladrilho
`--preto`. Sem stock sorridente, sem mockup de dashboard.
---
## Faça
- Lidere com o papel bege `#FCFBF8`; a tinta `#101011` carrega o texto, a moldura e a sombra.
- Escreva o título em Montserrat 700 a 900, em caixa normal — o da hero com uma linha dentro da pílula.
- Faça ênfase com **cor** ou **peso**.
- Ponha texto preto sobre qualquer cor chapada; o pior caso, o laranja, ainda dá 6.21:1.
- Contorne tudo o que sai do papel e dê a ele sombra dura, só para baixo.
- Use `tabular-nums` em qualquer número.
- Entorte o cartão de cor entre 1 e 2° com `rotate`, e não `transform`.
- Título de seção curto e sem ponto final; lead e itens de lista com ponto.
## Não faça
- Não use itálico: a Questrial não tem, e o falso itálico se vê.
- Não ponha texto branco sobre as cores chapadas (verde 2.20:1, laranja 3.06:1).
- Não use sombra com desfoque, brilho, vidro (`backdrop-filter`) nem texto em degradê.
- Não quadre as pílulas nem tire o contorno de um botão.
- Não use o laranja em texto corrido: no bege ele dá 2.96:1.
- Não acrescente cor fora das duas paletas documentadas.
- CTA nunca é *Saiba mais* nem *Fale comigo* — sempre uma ação de entrada.
- Não cite dia da semana, mês ou data: a flexibilidade é vantagem, não falha.
---
## Referência viva
`public/design-system/index.html` — esta página, com as peças reais renderizadas
pelo mesmo CSS que roda no site. Abra em `/design-system/` no dev server.