Fase 0 · verificação

O sistema visual, medido

Guia vivo dos dois registros. Se algum bloco desta página estiver errado, o erro se multiplica por todas as fases seguintes.

Os dois registros

Editorial — formulário público

Três camadas, 48px de altura. Moldura 8px com bandeja 4px — a fórmula concêntrica fecha exata. Padding assimétrico 4·16·4·4.

Produto — builder e dashboard

Mesma luz, mesma sombra, mesma família. Altura 36px, raio 4px, 150ms. Densidade oposta.

Escala editorial

display

Aplicação enviada

54px / 110%

h1

Aplicação enviada

42px / 110% · 25px no celular

h3

Aplicação enviada

36px / 135%

card

Aplicação enviada

24px / 135%

lead

Aplicação enviada

20px / 115%

body

Aplicação enviada

18px / 140% — não encolhe

label

Aplicação enviada

14px / 125%

A entrelinha está embutida no token: não existe título grande com entrelinha de corpo por acidente. Quanto maior o tipo, menor a entrelinha.

Hierarquia de texto

ink-000Descreva o momento atual do seu negóciotítulos
ink-100Descreva o momento atual do seu negóciocorpo
ink-200Descreva o momento atual do seu negóciocorpo secundário
ink-300Descreva o momento atual do seu negócioterciário
ink-400Descreva o momento atual do seu negóciolegenda, versal
ink-500Descreva o momento atual do seu negóciorodapé

Nenhum #ccc, #999 ou #666. Alfa atravessa qualquer troca de fundo sem retradução — é o que torna o white-label da Fase 3.7 possível trocando quatro tokens.

Raio — escala corporativa

xs · 2px

bandeja interna, tag

sm · 4px

botão, campo — o padrão

md · 6px

cartão, painel

lg · 8px

modal, folha

O raio codifica nível de hierarquia, não tamanho do objeto: um cartão de 400px tem o mesmo raio de um de 60px. A cápsula foi eliminada.

As quatro camadas — a prova

uma queda só

Retângulo pintado com uma mancha embaixo.

as quatro camadas

Objeto físico: os dois inset dão a espessura.

A diferença está nos inset: o fio claro é luz batendo na borda de cima, o escuro é a espessura da peça. Com raio de 4px isto deixou de ser acabamento e virou obrigação — sem a cápsula, é a sombra que carrega a sensação de objeto.

A fonte de luz — 51.4% 6.1%

51.4% 6.1% — peça moldada50% 50% — adesivo20% 90% — luz de baixo, errada

Um valor só, para a página inteira. Se o botão tem luz de cima e o cartão tem luz da esquerda, o cérebro registra “montagem” sem saber apontar por quê.

As três densidades de linha

confortável48px · primeira visita, celular
padrão40px · a maior parte da interface
compacta32px · tabela longa, usuário experiente

Controles de formulário — produto

Agrupado, com uma opção desabilitada.
Digite uma ou duas letras para ver o estado de erro.
Adorno fixo, não dica em texto.

O <select> nativo foi abandonado por um motivo concreto: o menu dele é desenhado pelo sistema operacional. Num painel escuro ele abre branco, com a fonte do Windows e o azul de seleção do Windows, e nenhuma linha de CSS alcança aquilo. É o único componente capaz de fazer um produto inteiro parecer amador em um clique.

O preço de trocar é reimplementar o que ele fazia de graça — setas, Home/End, digitar para pular, Esc, foco de volta no gatilho, virar para cima quando falta espaço. Essa aritmética vive pura em navigation.ts, com teste: é o tipo de coisa que quebra sem lançar erro e sem aparecer em log.

Campo afunda, botão sobe. A sombra interna no campo e as quatro camadas no botão não são acabamento — são como a mão sabe onde clicar antes de ler.

Movimento editorial — GSAP

Cada palavra sobe dez pixels, em escada de setenta milissegundos

Deslize lateral de 73px — 28px no celular
Opacidade inicial 0.001, nunca zero
Duração 620ms, easing cubic-bezier(.22,.61,.36,1)
Escada de 70ms, com teto de 8 elementos
Só transform e opacity são animados

Recarregue a página para ver de novo. Se o bundle do GSAP falhar em carregar, a trava se solta em 2,5s e este bloco aparece sem animação — nunca em branco. Numa rota que recebe aplicação de R$ 50 mil, a diferença entre “sem animação” e “página quebrada” é a venda.