Pular para o conteúdo

Bancada de design

Laboratório

Cada seção mostra uma decisão do redesenho isolada, com o site de antes ao lado do que as frentes P31 a P37 aplicaram. Troque a variante na barra abaixo e a página inteira responde.

Atualizada em 13/09/2026. As propostas desta bancada saíram do papel entre 09 e 10/09, e as duas decisões que travavam foram tomadas. Entre 12 e 13/09 o site ganhou o que as seções 12 a 16 contam: a cortina de entrada, a poeira com duas constelações, o som, a memória e a leitura refeita. As seções 01 a 11 dizem o que ficou decidido e o que mudou depois - decisão revertida se registra, não se apaga.

- palavras · cerca de - min de leitura, a 265 palavras por minuto.

Variante
Tipografia
Escala
Renderização
Movimento

01 Cor

A paleta não muda em nenhuma frente. Ela foi medida em OKLCH, passa nos quatro portões e é a parte já resolvida. Está aqui para conferência.

--background

o papel da página

16,94:1 no claro, 16,34:1 no escuro

--foreground

o texto

—

--accent

acento de sistema

4,5:1 mínimo, medido nos dois temas

--tinta

o traço da figura

5,97:1 sobre o pergaminho

--pergaminho

a folha do diagrama

—

--border

a borda

3,26:1 sobre o fundo

Os quatro pilares, a 90° um do outro em OKLCH, com L e C constantes. Fixar luminosidade e croma e variar só a matiz é o que garante que nenhum dos quatro pese mais que os outros.

ciência

matiz 275°

tecnologia

matiz 185°

arte

matiz 5°

filosofia

matiz 95°

02 Tipografia P31

Use as barras "Tipografia" e "Escala" acima. A primeira troca a família de toda esta página; a segunda troca o tamanho e o piso.

Trocar só a família não resolveu, e a medição diz por quê. O número que o olho lê não é o font-size: é a altura-x em pixels, que junta família e tamanho num valor só. E há um segundo número, que é o mais grave: a fração do texto da página abaixo de 16 px.

página corpo altura-x texto abaixo de 16 px
ciechanow.ski — IBM Plex Sans 19,2 px 10 px 0%
razaoinadequada.com — Rubik 18 px 10 px 36%
paco.me — Söhne 16 px 9 px 15%
joshwcomeau.com — Wotfard 16 px 8 px 40%
o site, /posts/ 17 px 8 px 50%
esta bancada, antes deste conserto 17 px 8 px 57% — 136 de 237 elementos

Era eu repetindo o defeito. Construí esta bancada com a mesma escala de que você reclamou: 136 dos 237 blocos de texto estavam a 14 px - os rótulos, as medidas, as células de tabela. O parágrafo nunca foi o problema; o problema é tudo em volta dele. Por isso a barra "Escala" abre em Confortável, e não em Atual.

Medido em 09/09/2026: das sete referências, seis usam sans-serif no corpo, e as duas que você apontou como boas - linear.app/now e razaoinadequada.com - usam Inter e Rubik. O site é o único serifada no corpo e serifada de display no título.

família altura-x ÷ caixa alta folga do circunflexo onde
Newsreader — o corpo de hoje 0,654 — a menor 0,517 — a maior —
Instrument Serif — o título de hoje 0,708 0,441 —
Inter 0,748 0,373 linear.app/now
Rubik 0,743 0,394 razaoinadequada
Source Serif 4 0,739 0,505 serifada, se quiser manter
IBM Plex Sans 0,738 0,452 ciechanow.ski
Public Sans 0,712 0,317 — a menor acento mais assentado

A altura-x dividida pela caixa alta diz o tamanho aparente das minúsculas. A Newsreader tem 0,654, a menor do conjunto: em 17 px ela desenha minúsculas 14% menores que a Inter no mesmo tamanho nominal. É a medida por trás de "tudo pequeno demais".

A folga do circunflexo é o quanto o acento sobe acima do e, dividido pela altura-x. Foi este critério que reprovou EB Garamond, Cormorant Garamond e Bodoni Moda nesta casa - e a Newsreader tem 0,517, o pior número da tabela. O defeito que barrou três famílias está na que ficou.

A escala existe e é fluida. O que a P31 conserta é o degrau: hoje o h3 dos cards mede 16 px contra corpo de 16 px, e subtítulo do mesmo tamanho do texto não é subtítulo.

--passo-0 Quatro elementos rótulo · 13-14 px
--passo-1 Quatro elementos corpo · 16-17 px
--passo-2 Quatro elementos destaque · 18-20 px
--passo-3 Quatro elementos h4 · 19-22 px
--passo-4 Quatro elementos h3, título de card · 24-34 px
--passo-5 Quatro elementos h2, título de página · 30-46 px
--passo-6 Quatro elementos display do hero · 42-84 px

hoje

Sistema de verificação

O harness da casa exige teste antes do código e evidência congelada. Um veredito que uma máquina confere.

título 16 px · corpo 16 px · degrau 0 px

proposto

Sistema de verificação

O harness da casa exige teste antes do código e evidência congelada. Um veredito que uma máquina confere.

título --passo-3 · corpo --passo-1 · degrau ≥ 3 px

Decidido e aplicado — P31, 09/09/2026 (A-58). Nenhuma das candidatas entrou: a prosa continuou na Newsreader, e o que mudou foi a escala e a divisão das vozes. Corpo com piso de 19 px em 390 e 20,2 px em 1440, degrau de 4 px entre rótulo e corpo; Space Mono para a interface (data, tag, botão) e Instrument Serif só no display.

Depois, em 13/09/2026. A coluna de leitura dos posts tinha ficado calibrada para a Literata a 17 px (36 rem, 68 caracteres) e ninguém refez a conta quando a prosa virou Newsreader a 20 px: eram 552 px e 63 caracteres, com título e dek em tetos próprios de 469 e 462 px - o dono: "por que tá tudo tão espremido?". Hoje a coluna é 39 rem (624 px, 71 caracteres) e a composição inteira, índice incluído, é centrada na tela. Ver a seção 16. As oito candidatas de família continuam nesta bancada como registro; nenhuma entrou, e o site continua a única serifada no corpo entre as referências, por decisão.

03 Caixa contra régua P32 · P37

O achado mais forte da varredura, e o que exigiu duas medições. Cerca é fundo próprio ou borda em três lados: o cartão. Régua é borda em um ou dois lados: o fio que separa, e não conta. A primeira medição juntava as duas, e por isso acusava páginas limpas.

Contando só cerca, por 100 elementos: o /about/ tem 29,4 e o /projects/ tem 9,1, contra 1,4 do linear.app/now, 2,3 do joshwcomeau e zero do overreacted.io. A home mede 0,7 e está mais limpa que as duas referências. A proposta troca o cartão pela linha na régua - notação que o projeto já tem.

hoje: cartão

Cadastra

AIvengers

Harness de verificação para times de front-end. Teste antes do código, evidência congelada, veredito auditável.

  • VTEX IO
  • Node
  • Playwright

Pessoal

eltonleao.dev

Site próprio como sistema: quatro assuntos, um grafo completo, e uma suíte que não deixa o design apodrecer.

  • Astro
  • OKLCH
  • Canvas

cercas nesta amostra: 8

proposto: linha na régua

Cadastra

AIvengers

Harness de verificação para times de front-end. Teste antes do código, evidência congelada, veredito auditável.

VTEX IO · Node · Playwright

Pessoal

eltonleao.dev

Site próprio como sistema: quatro assuntos, um grafo completo, e uma suíte que não deixa o design apodrecer.

Astro · OKLCH · Canvas

cercas nesta amostra: 0 — o fio horizontal separa, e separar não é cercar

Decidido e aplicado — P32 e P37, 09/09/2026 (A-59, A-61). O cartão virou linha na pauta. Cercas por 100 elementos: /projects/ de 9,3 para 0,2, /links/ de 9,1 para 0,0, /about de 2,8 para 0,9. As sete rotas medidas ficaram abaixo de 1,0, e o /about/ perdeu 124 pílulas e as quatro barras de progresso.

Depois, em 13/09/2026. O cartão de destaque de /projects/ ainda tinha um defeito escondido: pedia sm:flex no markup e display: block no estilo escopado, e o escopado ganhava - a miniatura empilhava acima do texto em qualquer largura e a página media 6 378 px para oito projetos. Virou linha de pauta com a prancha à direita: 5 406 px. E o filtro de pilar deixou de ser chip com bolinha: são os quatro símbolos alquímicos com o anel de seleção do hero, e o "todos" é o K₄ completo - ver a seção 16.

04 Desbotar contra acender P33

Passe o ponteiro sobre os quatro. Hoje o site tira presença do que não importa: 59 textos da home usam opacidade parcial, e desbotar derruba o contraste junto. Na Noite Estrelada a luminância representa energia cinética - o que tem energia brilha. A proposta inverte a operação: nada apaga, o ativo acende.

hoje: os outros apagam

  • ciência
  • tecnologia
  • arte
  • filosofia

opacidade cai para 0,45 nos três não apontados

proposto: o ativo acende

  • ciência
  • tecnologia
  • arte
  • filosofia

opacidade constante em 1; a luminância do apontado sobe

Decidido e aplicado — P33, 09/09/2026 (A-62). Textos com opacidade parcial na home: de 59 para 0, e zero nas outras rotas. O deslocamento em resposta a gesto segue uma razão só, --k4-cascata = 0,45, em quatro degraus de 14 a 1,3 px; /posts/ foi de 27 para 66 transições, e nenhuma animação roda sozinha fora do hero.

Depois, em 13/09/2026. A regra "o ativo acende" ganhou o exemplo mais literal do site: a marca do cabeçalho, ao apontar, faz o encontro do hero em miniatura - os quatro nós acendem nas cores dos pilares, as arestas se traçam de novo em acento, e um brilho atravessa a palavra no sentido da leitura. Em repouso continua monocromática. E a regra "nada roda sozinho fora do hero" ganhou uma ressalva medida no próprio hero: ele dorme quando ninguém olha - ver a seção 09.

05 O item da listagem P36

Cada item de /posts/ carrega oito blocos de texto. O overreacted.io carrega três, o joshwcomeau quatro, o danluu dois. As quatro tags já estão ditas no filtro, poucos pixels acima - repetir o filtro dentro de cada linha é dizer duas vezes.

hoje: 8 folhas, 1310 px

01 filosofia

Eu achava que sabia o que era liderar

Sete anos depois, a conclusão é que quase tudo que eu chamava de liderança era, na verdade, ansiedade bem vestida.

  • liderança
  • tech-lead
  • systems-thinking
  • journal

ordem · categoria · título · resumo · data · 4 tags = 8 folhas

proposto: 4 folhas, em coluna

Eu achava que sabia o que era liderar

filosofia

Sete anos depois, a conclusão é que quase tudo que eu chamava de liderança era, na verdade, ansiedade bem vestida.

título · categoria · data · resumo = 4 folhas, e o título continua em --passo-4

Decidido e aplicado — P36, 10/09/2026 (A-67). O item caiu de 7 a 8 folhas para 4: índice e categoria se fundiram numa marca acima do título, as tags e a miniatura saíram, e o item ganhou coluna de 47,5 rem. A amostra acima mostra a ordem proposta; a aplicada pôs a marca antes do título, porque em duas colunas o texto fundido vazava sobre ele.

Depois, em 13/09/2026. A marca ganhou um dado a mais, e não uma folha: o tempo de leitura ("filosofia · 12 abr, 2026 · 13 min de leitura"), pela mesma conta do artigo - só as palavras de prosa, a 265 por minuto (`utils/leitura.ts`). Continua em quatro folhas.

06 Aparato de leitura P34

Nove das treze referências de ensaio têm figura viva dentro do texto, e quatro têm nota lateral. O artigo do site tem a barra de progresso, e mais nada. A nota lateral vive na margem que já é vazia - a coluna de leitura não estreita para acomodá-la.

O harness da casa tem três estados, e não dois: PASS, FAIL e UNKNOWN. O terceiro é o que separa um sistema de verificação de um teatro de verificação.

UNKNOWN bloqueia igual a FAIL. "Não consegui medir" nunca vira "passou", porque o dia em que virar, a suíte inteira deixa de significar qualquer coisa.

E PASS exige RED antes. Critério que nasce verde não é aceite: é guarda. Ele prova que alguma coisa não quebrou, e não que alguma coisa foi feita.

Decidido e aplicado — P34, 10/09/2026 (A-66). O artigo ganhou índice gerado dos próprios títulos, sem JavaScript, e a nota lateral virou sintaxe de markdown, > [!aside]. O cipreste é a régua fina contínua (seção 08). A figura viva dentro do texto não foi entregue, e continua declarada como pendente.

Depois, em 13/09/2026. O índice ganhou seção ativa (aria-current="location" na última seção cujo título passou pelo terço de cima da tela, com um traço à esquerda - o mesmo dispositivo do cipreste), a abertura do artigo virou kicker, título, dek e meta, o corpo saiu do branco cheio para o tom 1, e a capitular parou de vazar para dentro das citações. Ver a seção 16.

07 A Noite Estrelada, como estrutura P33 · P35

Até esta seção, a referência ao quadro aparecia nesta bancada 21 vezes em texto e nenhuma em desenho. Era a mesma falha que você apontou no site: "não to sentindo muito a referência". Paleta não é referência ao quadro.

O campo de turbulência

Não são espirais desenhadas. É um campo vetorial - a técnica que a pesquisa achou em todos os trabalhos de Van Gogh no front-end -, e a espiral é o que aparece quando o escoamento acontece. O potencial é uma soma de gaussianas e a velocidade é o rotacional dele, o que torna o escoamento incompressível por identidade: sem fonte nem sumidouro visíveis.

o que o quadro tem o número como entra aqui medido
Redemoinhos na tela 14 centros de rotação do campo 14
Cascata de Kolmogorov energia cai do grande ao pequeno amplitude ∝ σ4/3 —
Escoamento sem fonte nem sumidouro divergência zero velocidade = rotacional do potencial 1,5 × 10−8
Luminância = energia cinética o que brilha é o que se move brilho do traço ∝ velocidade 508 traços

O campo é gerado no build, então isto é SVG estático: zero JavaScript em runtime, e o portão sem-js continua de pé. No hero, a P35 troca a órbita das 160 partículas que já existem por este mesmo campo - sem WebGL e sem partícula a mais.

POC: o campo como fundo da secao

Esta e a POC do que voce pediu. O campo ocupa o fundo da secao inteira - 1440 × 989, a proporcao real -, e a composicao do hero fica por cima, intacta: a elipse com as gravuras, a figura do K₄, os quatro glifos, os rotulos e o texto.

Os quatro vortices grandes ficam exatamente sobre os quatro pilares, convertidos da caixa do K₄ para a caixa da secao. O ceu nao e textura atras da figura: ele e organizado por ela.

ciência tecnologia arte filosofia

Quatro elementos, uma só obra

FILOSOFIA — dar o chão e a gramática: o repertório que torna qualquer pergunta navegável

1316 pinceladas · 14 centros, 4 sobre os pilares · a composicao por cima nao mudou

O hero nessa pegada

Mesma técnica, amarrada à geometria real do hero - viewBox -430 -226 860 452, os quatro nós nas coordenadas medidas, as seis arestas. O que muda não é a figura: é o que está atrás dela.

A pincelada tem o comprimento do quadro. A Noite Estrelada mede 92 cm de largura e as pinceladas do céu têm de 3 a 8 cm - entre 3,3% e 8,7% da tela. A primeira versão disto usava traços de 27,9%, de três a oito vezes longos demais: aquilo não era pincelada, era linha de corrente, e lia como agressivo. Agora a mediana é 7,4%, e a densidade se forma por sobreposição, como no impasto.

A proposta, e ela não é decorativa: os quatro vórtices grandes ficam exatamente nos quatro pilares. O céu não é textura atrás da figura - ele é organizado pela figura. Os quatro assuntos são o que agita o campo, e os dez vórtices menores são a cascata descendo a partir deles. Quatro grandes mais dez pequenos são os 14 do quadro.

ciência tecnologia arte filosofia
446 pinceladas de 4% a 11% da largura, que é a faixa do quadro · 14 centros, sendo 4 nos pilares · o campo se move, a figura não

Aqui o campo é SVG estático porque a bancada é uma bancada. No hero de verdade a P35 não faz assim: lá o campo vira uma função pura que as 160 partículas que já existem em orbe.mjs consultam a cada quadro - elas deixam de percorrer uma órbita elíptica e passam a escoar. Mesmo teto de partículas, sem WebGL, e o custo é aritmética em vez de bytes.

O céu se agita, a vila não

O quadro tem três regimes empilhados, e o contraste entre eles é o que faz o céu parecer vivo. Isto resolve a contradição que a medição tinha deixado em aberto: nenhum bom site de leitura tem movimento contínuo, e o hero deste site tem 36 animações infinitas. Céu inteiro seria ruído; vila inteira seria morto.

céu circular, agitado, em cascata
montanhas ondulante, horizontal, lento
vila imóvel, geométrica — é o texto

Justapor, e não misturar

Os azuis e amarelos do quadro não foram fundidos na paleta: foram postos lado a lado, e o olho faz a mistura. As pranchas do site usam mix-blend-mode, que faz o oposto - e é de onde vem a mancha acinzentada que E-21 registrou.

hoje: misturado

o quadro: justaposto

O que aconteceu com esta seção — P35, ainda aberta (A-65). O campo entrou no hero como lei de movimento, e não como desenho: a poeira passou a escoar pelos catorze centros, com correlação de 0,995 entre brilho e velocidade. O fundo pintado das POCs acima nunca foi aprovado, e o hero seguiu outro caminho - a poeira ganhou massa, céu e forma, e as pranchas passaram a cobrir o hero. É o que a seção 09 conta.

08 As duas decisões que travavam

Nenhuma das duas era técnica, e enquanto estavam em aberto as frentes não saíam de aberto. Estavam aqui desenhadas para serem escolhidas com o olho.

Tomadas em 09/09/2026, por delegação do dono ("pode seguir tomando as decisões, eu vou dormir", A-65): o cipreste é a régua fina contínua, entregue na P34; Projetos na home vira link, entregue na P36. As duas opções continuam desenhadas abaixo, com a escolhida marcada.

O cipreste — P34

Na Noite Estrelada um elemento atravessa os três regimes e liga a terra ao céu. O site não tem: o hero termina, a página começa. A vertical carrega o progresso de leitura, então não é enfeite. Falta decidir a peça.

A — régua fina contínua · escolhida

hero
texto

B — o fio de relação descendo

hero
texto

Projetos na home — P36

As duas seções somam 3623 px dos 5047 da página, e o hero já apresenta o site inteiro. Projetos ocupa 2035 px e vem antes de Escrita, que ocupa 1588 px, num site cuja tese é o texto.

A — as duas seções, Escrita primeiro

hero · 987 px
Escrita · 1588 px
Projetos · 2035 px

B — só Escrita, e Projetos vira link · escolhida

hero · 987 px
Escrita · 1588 px

09 O hero depois da bancada P40 · P41

Entre 11 e 12/09/2026 o hero mudou mais do que em todas as frentes acima juntas, e quase tudo é movimento em canvas - que uma bancada sem JavaScript não mostra. Por isso aqui entram só o que mudou, o número medido e onde está a evidência. O hero de verdade está na home.

o que mudou como funciona medido registro
A prancha cobre o hero inteiro cada combinação de pilares tem imagem própria, sem texto, e só a ativa carrega opacidade 0,26 no claro e 0,28 no escuro A-68
A poeira obedece a Newton pilares acesos são massas, e os grãos se atraem entre si ~0,9 ms por passo com 160 grãos A-70
O céu da poeira é o hero inteiro o canvas sai da figura e cobre o hero teto de 320 grãos em repouso A-71
O motor imóvel os quatro pilares orbitam o centro, e os acesos se aproximam uma volta a cada 120 s A-72
A poeira forma o cérebro com os quatro acesos, 2 200 grãos nascem num big bang no centro e desenham um cérebro sutil; entre dois acesos a poeira faz a ponte, e nenhum fio liga os pilares densidade na silhueta 44 vezes a de fora, contra 1,2 do céu sem cérebro A-73
O vazio ganha prancha sem nada selecionado, o fundo é o Monge à beira-mar, de Friedrich a única combinação que não tinha imagem A-74

Ainda em aberto: a P41 continua aberta - falta a tinta das manchas formar os hemisférios, tecnologia ir para a área de Wernicke e os pilares acesos girarem como elétrons (o tremor que vinha junto saiu em 12/09/2026, a pedido do dono: era imperceptível e custava quadro) -, e a P35 também. Evidência em docs/evidencia/hero-inteiro/, newton/, ceu/, p40/, p41/ e vazio/.

O que mudou entre 12 e 13/09

o que mudou como funciona medido onde
O hero dorme quando ninguém olha marca data-hero-dormindo no <html> quando nem a figura nem as pranchas encostam na janela, quando a aba vai para trás, ou enquanto a cortina de entrada está de pé; o CSS pausa toda animação do hero e o laço de quadros para página rolada: de 0,352 para 0,037 s de CPU por segundo, de 62 para 1,6 recálculos/s global.css, k4.mjs
Os alvos do cérebro são preguiçosos os 2 520 alvos eram sorteados na avaliação do módulo; agora cada grão lê o seu por um getter, e as arestas dos polígonos ficam indexadas por faixa de y sorteio de 615 para 18 ms, hash idêntico; a tarefa longa de 2,2 s no arranque saiu cerebro.mjs, orbe.mjs
O centro devolve ao vazio com o cérebro montado, clicar no centro volta a "Tudo é 1" em vez de sortear um par; o grupo do centro passou para o fim do SVG para ganhar os cliques das diagonais 96 de 96 pontos do centro; antes as diagonais levavam 81 Sistema.astro, k4.mjs
As frases dos pilares reescritas pelo dono, na voz dele: "sempre procurar o cisne negro", "o que eu construo precisa funcionar sem mim", "só sei que preciso fazer isso...", "qual é a pergunta certa, afinal?" a de arte tem 111 caracteres: duas linhas em 1440, cinco em 390 pilares.ts
Tentado e descartado: o tour por cima do hero real a apresentação de entrada chegou a rodar como véu com recorte de luz sobre a figura de verdade, com o cursor tocando os pilares reais; o dono não quis - "quero minimalista na tela de tutorial" - e o tour saiu inteiro no mesmo dia o hero real sozinho, com CPU 4x mais lenta e sem GPU, roda a 78 ms por quadro; o tour não acrescentava custo próprio seção 12

10 O que esta bancada mede de si mesma

Uma página que cobra número dos outros declara o dela. Medida com o mesmo script, em 1440×1000: 32 cercas e 36 réguas em 476 elementos, ou 6,7 cercas por 100.

Remedida em 12/09/2026, depois desta atualização, com a coleta de caixa.test.mjs - a mesma que fecha as rotas do site: 30 cercas e 99 réguas em 3 177 elementos, ou 0,9 por 100. O número de elementos não bate com o de 09/09, e não foi reconciliado: esta coleta conta todo elemento do documento, inclusive os traços dos campos, e a de 09/09 não está guardada para saber o que contava. As cercas, que não dependem da base, são quase as mesmas: 32 antes, 30 agora.

É alto para uma página de leitura e correto para esta: 10 das 32 são amostras de cor, que são retângulos de cor; 6 são o diagrama de proporção da home; e 6 são o cartão e as tags da coluna "hoje" - isto é, o defeito sendo exibido. Duas cercas eram vício meu e saíram: a pílula com borda em volta da etiqueta de frente, que é o mesmo vocabulário que a P32 manda tirar do /about/, e o truque de gap sobre fundo colorido, que desenha régua mas conta como cerca.

O que ela custa, e o que não é medido. As seis candidatas de tipografia somam 341 KB de fonte que o site não carrega. E orcamento.test.mjs mede só a home: esta rota não passa pelo portão de peso. É aceitável numa bancada noindex de trabalho e seria inaceitável numa rota pública - quando uma família for escolhida, ela entra pelo astro.config.ts, com subconjunto declarado, e as outras cinco saem daqui.

E os dois campos custam HTML: cerca de mil traços curtos punham a página em 471 KB de marcação em 09/09, e em 12/09 o dist/laboratorio/index.html mede 669 KB - subiu de 300 KB quando a pincelada encolheu para a escala do quadro, porque traço curto significa mais traços. Aqui é o preço certo, e gerar no build é o que mantém o portão sem-js de pé. No hero, a P35 não faz assim: lá o campo é uma função pura avaliada em runtime sobre as 160 partículas que já existem, e o custo é aritmética, não bytes.

O que ela lê agora, neste navegador

Daqui para baixo nada é número gravado: é lido em tempo de execução do CSS, das fontes e dos módulos - e por isso muda com o tema, com a janela e com o navegador de quem está olhando. Sem JavaScript as tabelas ficam com o traço.

token valor calculado contraste sobre o fundo WCAG (4,5:1 texto · 3:1 borda)
--foreground - - -
--tom-1 - - -
--tom-2 - - -
--accent - - -
--border - - -
--hairline - - -
--pilar-ciencia - - -
--pilar-tecnologia - - -
--pilar-arte - - -
--pilar-filosofia - - -

O contraste é calculado do valor computado, convertido de OKLCH para sRGB linear pela conta do próprio espaço (OKLab → LMS → RGB) - e não por canvas.fillStyle, que devolve preto para oklch() e deu duas rodadas de números falsos a dois agentes hoje.

face carregada peso estilo estado
----

Os módulos de cliente da home, lidos do disco no build: 74 arquivos, 1341,5 KB na fonte (antes de juntar, minificar e comprimir - o bundle é menor, mas a ordem de grandeza e a proporção entre eles são estas).

módulo na fonte fração
orbe.mjs 179,8 KB 13%
k4.mjs 105,4 KB 8%
espaco.mjs 91,3 KB 7%
meu-ceu.mjs 62,1 KB 5%
atomo-nucleo.mjs 52,2 KB 4%
ceu-pessoal.mjs 50,7 KB 4%
trilha.mjs 48,7 KB 4%
mini-nave.mjs 44,9 KB 3%
voz.mjs 40,4 KB 3%
constelacao.mjs 39,2 KB 3%
constelacao-pessoal.mjs 35,6 KB 3%
controle-poderes.mjs 29,1 KB 2%
ovos.mjs 28,1 KB 2%
metricas.mjs 27,9 KB 2%
afinacao.mjs 24,3 KB 2%
cerebro.mjs 19,7 KB 1%
estoque.mjs 19,4 KB 1%
ceu-sonoro.mjs 19,2 KB 1%
grafo.mjs 19,1 KB 1%
grifo.mjs 19,0 KB 1%
lembretes.mjs 18,1 KB 1%
atomo.mjs 17,1 KB 1%
portas-de-poder.mjs 16,5 KB 1%
arsenal.mjs 16,3 KB 1%
palavras-do-inventario.mjs 16,1 KB 1%
mapa-do-site.mjs 15,8 KB 1%
desfecho.mjs 15,8 KB 1%
celebracao-dos-poderes.mjs 15,5 KB 1%
descoberta.mjs 12,9 KB 1%
pagina.mjs 12,7 KB 1%
epoca.mjs 10,8 KB 1%
disco-da-voyager.mjs 10,8 KB 1%
simbolos.mjs 10,1 KB 1%
inventario-local.mjs 9,2 KB 1%
orbita-viva.mjs 9,2 KB 1%
paleta.mjs 9,1 KB 1%
perto-do-post.mjs 8,2 KB 1%
marvin-no-site.mjs 8,0 KB 1%
posicao-pelo-pilar.mjs 7,9 KB 1%
aberturas.mjs 7,8 KB 1%
painel-de-descobertas.mjs 7,1 KB 1%
orbita.mjs 7,1 KB 1%
figuras-do-ceu.mjs 6,9 KB 1%
faisca.mjs 6,7 KB 0%
compartilhar.mjs 6,6 KB 0%
mancha.mjs 6,6 KB 0%
marcos.mjs 5,7 KB 0%
album.mjs 5,6 KB 0%
modelo.mjs 5,4 KB 0%
previa.mjs 5,4 KB 0%
parametro-tudo.mjs 5,3 KB 0%
campo.mjs 5,3 KB 0%
conjunto.mjs 4,6 KB 0%
poderes.mjs 4,2 KB 0%
tempo-de-leitura.mjs 4,2 KB 0%
sem-webgl.mjs 4,1 KB 0%
tutorial.mjs 3,9 KB 0%
cabeca-do-marvin.mjs 3,8 KB 0%
tinta.mjs 3,8 KB 0%
atomo-worker.mjs 3,7 KB 0%
caderno.mjs 3,6 KB 0%
destravar-audio.mjs 3,4 KB 0%
luz.mjs 3,4 KB 0%
miniaturas.mjs 3,2 KB 0%
forma.mjs 2,3 KB 0%
aureo.mjs 2,2 KB 0%
chaves.mjs 2,2 KB 0%
favoritar.mjs 2,1 KB 0%
ceu-compartilhado.mjs 2,0 KB 0%
diario.mjs 1,8 KB 0%
trecho.mjs 1,8 KB 0%
ultimo-controle.mjs 1,4 KB 0%
sinal-da-leitura.mjs 1,4 KB 0%
mapa-da-pagina.mjs 0,8 KB 0%

11 A televisão do vizinho

No Amélie Poulain, ela monta uma fita com cenas soltas e deixa na porta do vizinho que não sai de casa. Este aparelho faz o mesmo: sorteia uma cena da lista a cada visita e só procura o vídeo quando alguém liga - até lá, o que existe na tela é o quadro de capa. A lista mora em src/data/tv.ts, e acrescentar cena é acrescentar uma linha.

Depois, em 13/09/2026. A fita tem oito cenas, os dois botões do painel giram a sintonia de verdade (eram decorativos e aria-hidden), e a troca tem chuvisco de tubo com o corte caindo no meio da estática. A playlist do dono ficou de fora porque é privada, e list= privado derruba o embed inteiro - medido com e sem o parâmetro na mesma sessão. A televisão também mora no /sobre, no fim de tudo, sem legenda. Em aberto: o dono quer experimentar GIFs passando sozinhos, um após o outro, no lugar dos vídeos.


Cute Lamb Needs Attention Lee Walters

12 A cortina de entrada

A home abre com uma cortina, e ela existe por três razões que não são enfeite: o som só nasce dentro de um gesto (a política de autoplay não reconhece pointermove; o clique que abre a cortina é o gesto que destrava o AudioContext); a figura demora a montar, e a cortina é o tempo dela; e movimento é preferência de sistema, mas o site oferece a porta local.

fase o que acontece medido decisão
abertura "somos feitos de poeira de estrelas" sozinha na tela, condensando em fumaça, 3,4 s de leitura esfuma em 1,5 s enquanto o corpo entra Sagan é pilar do dono; por isso abre sozinha e não disputa com nada
carga o K₄ se traça como medidor: nós (fontes), arestas (a figura viva), elipse (as lâminas do primeiro clique decodificadas). Sem frases: o dono tentou lembretes por cima e voltou atrás - "fica confuso" portão de prontidão: 3 quadros seguidos abaixo de 20 ms, teto de 4 s; prontidão com teto de 8 s. Cache quente: pronto aos 2,4 s, antes de a frase acabar não é relógio, é medida - "só quando tiver 100% de certeza que está tudo carregado"
pergunta assistir ou pular, dois botões do mesmo peso; quem já viu vê "assistir de novo" com o pular sugerido a pergunta espera a frase de abertura esfumar: aos 5,0 s tutorial que bloqueia é abandonado (NN/g); entrar continua a um clique o tempo todo
apresentação quatro atos mínimos sobre a figura com os símbolos alquímicos reais e os nomes: quatro pilares; dois acesos e nasce um terceiro; o todo é maior do que a soma das partes; na poeira há grãos que cintilam. Frase primeiro, animação depois, repouso, tela limpa entre atos. Clique avança, Escape pula, "pula o que você já sabe" com a cortina escondendo o hero, 16,7 ms por quadro com CPU 4x mais lenta a versão de seis atos com pontos e linhas confundia: a réplica não se parecia com o hero. A miniatura agora é a figura de verdade
ajustes som, movimento e idioma em três colunas - rótulo, controle, dica - com o botão de entrar contraste no tema claro: de 4 em 5 textos reprovando (3,45 a 4,31) para 7 em 7 passando (5,76 a 14,06) a causa era color-mix(..., transparent), que é opacidade com outro nome

O que a cortina não faz. Não é portão: um clique entra, Escape entra, e há um abridor de emergência no script embutido para o intervalo em que o módulo ainda não chegou - medido em 13/09/2026 com a rede a 400 KB/s, o botão de entrar ficava 13 s desenhado e sem ouvinte, e o relato foi "está tudo branco". Não existe sem JavaScript. E não decide nada sozinha: som nasce desligado, movimento nasce como o sistema pediu. O endereço ?cortina a reabre, e sai da barra por replaceState ao entrar.

13 A poeira e as duas constelações

Entre os 320 grãos do céu, 26 escondem uma referência do dono. Ao clicar, abre uma folha; ao fechar, o grão voa até a constelação do seu lado e vira estrela. Virgem à esquerda, Câncer à direita - o signo solar e o ascendente, e ninguém precisa saber disso para jogar. A distribuição é semântica, gravada no catálogo: Virgem é a mente que analisa e ordena, Câncer é a casa, a memória e o que se sente.

a regra como funciona medido origem
O ovo anda contra a corrente a poeira segue a turbulência do campo em curvas; o ovo anda em linha, devagar, no sentido oposto ao vento local, com um balanço miúdo - o que atravessa o rio, entre o que vai com ele 22 de 26 contra a corrente, cosseno mediano -0,98 entre o deslocamento e o vento; 1,7 px/s contra 2,3 unidades/s da poeira "a poeira das constelações precisa ter um movimento um pouco diferente das outras, pense"
O ovo é solto dos pilares não entra no campo dos pilares, na forma, na ponte nem no fluxo; só o ponteiro o atrai, de leve ciência acesa por 20 s: distância média dos ovos ao pilar de 549 para 551 px (antes diminuía - era a órbita) "elas devem ficar soltas no universo à volta"
O ovo nunca sai da tela nasce no retângulo visível com 12 px de folga, e é contido na borda com rebate amortecido; o destino do espalhar também fica no visível 0 fora em 1440x900, 1280x720 e 390x844, três visitas cada, após 10 s em 1440x900 um dos 26 nascia abaixo da dobra em toda visita - "senão não tem como achar"
Três degraus de estrela achada: dourada, de quatro pontas, respirando num ciclo de 3,6 s; vaga (achado atribuído, ainda não encontrado): anel vazio; estrela de fundo (sem achado): ponto fino luminância da achada 203,9 contra 200,4 do pico da poeira; a vaga 36,8. Antes a achada estava a 0,42 de alfa e a poeira mais clara a 0,94 - o achado era mais apagado que o pó o branco foi tentado e recusado - "não sei se gostei"; a forma de quatro pontas é a dos mapas do Hevelius, o mesmo idioma da gravura final
Cada constelação fecha a sua as estrelas são projetadas das coordenadas reais, em pé, centradas no centro vertical da elipse; ao fechar, a gravura do Hevelius (1690) aparece por um instante e depois só no hover caixas centradas a 576/576 px em 1440x900 e 514/514 em 1280x720, contra a elipse Câncer tem 18 estrelas e a Praesepe como aglomerado miúdo; é a mais apagada do zodíaco e o desenho assume isso
Espalhar o botão embaixo da constelação fechada devolve as estrelas ao céu: direção uniforme em 360°, arco contornando a figura, 3,6 s com cauda três rodadas: nenhuma direção com menos de 8% dos grãos, mediana de 416 a 508 px, 0 grãos na elipse em qualquer quadro a primeira versão empurrava só para o lado oposto: "tem que ser para todos"
O ovo não disputa clique margem de 24 px em volta do disco do pilar e dos botões, 8 px em volta do rótulo; o clique em cima da letra é do pilar 26 de 26 ovos abrindo a folha em três visitas; antes, 21 de 26 - a caixa do grupo inteiro do pilar com 24 px virava uma zona morta de 205x190 px "os easter eggs não podem competir com os cliques principais"

Modo de teste: /?ovos pinta os ovos de vermelho e expõe a posição de cada um no data-ovos-xy do canvas; /?ovos=25 abre a visita com os 25 primeiros achados já encontrados, sem gravar nada.

14 O som

Silêncio é o padrão, e nada toca sem gesto. A regra vale para o acorde dos pilares, para os toques dos achados e para a trilha. Tudo o que soa está na mesma afinação: cada altura é um parcial da série harmônica sobre os mesmos 55 Hz - som de interface fora da afinação do resto lê como efeito colado por cima. A sala é uma só (SALA em afinacao.mjs: 2,8 s de cauda, corte em 2 400 Hz).

o que como soa por quê medido
grão sob o ponteiro nota curta, rodando entre 550, 660, 770 e 880 Hz variação contra fadiga; piso de 0,18 s entre repetições pico 0,039 - sussurra. Nunca cria o contexto de áudio: só soa para quem já clicou algo
achado quinta justa subindo, 440 para 660 subir é ganho pico 0,157 - fala
voo até a estrela deslize de 330 a 880 em 2,4 s, com sopro, pouso em 880 a altura acompanha o trajeto; o som chega antes da imagem o pouso em 880 cai consonante em cima do acorde da constelação, sem ajuste
constelação fecha o acorde 4:5:6:7, entradas a 160 ms é o acorde que só existe com os quatro juntos pico 0,335 - canta. Quem volta com tudo achado não o ouve: seria autoplay
espalhar cinco degraus descendo, 880 para 440 descer é perda -
a trilha "Says", de Nils Frahm (Spaces, 2013): os três primeiros minutos em laço, Opus a 96 kbps (2,1 MB) e AAC para o Safari, com o começo levantado em até 20,5 dB porque o original abre a -49 dB começa no clique do som, toca a jornada inteira, sobrevive ao refresh do mesmo ponto (sessionStorage) e abaixa quando um vídeo toca por cima (midia:tocando / midia:parou, com saldo) volume 0,42; 90 s medidos no build de produção com rolagem e clique em pilar: zero pausas. Obra comercial sem licença de uso: decisão do dono, com o crédito em /creditos

Um só AudioContext por página, fechado em pagehide - medido em 13/09/2026, o da cortina ficava running até o fim, e voz.fechar() nasceu por isso.

15 A memória, e o que você deixou aqui

Tudo o que o site lembra fica no navegador da pessoa - o site é estático, não há servidor, nada sai daqui. São dez chaves - oito no `localStorage` e duas na sessão da aba. A tabela abaixo lê as suas agora, neste navegador; sem JavaScript ela mostra só o que cada chave é.

chave o que guarda onde se apaga agora, aqui
eltonleao.caderno.v1 as duplas de pilares já descobertas no hero - o caderno nenhum na interface: o caderno só se apaga pelo "esquecer tudo" abaixo -
eltonleao.ovos.v1 os achados da poeira, pelo id de cada um o botão de espalhar, embaixo da constelação fechada -
eltonleao.sistema.v1 o estoque de leitura por pilar, que enche a assinatura do rodapé "zerar a leitura", na assinatura do rodapé -
eltonleao.som.v1 som ligado ou desligado o botão de som, na cortina ou ao pé da figura -
eltonleao.volume.v1 o volume da música, de 0 a 1 o controle deslizante no cabeçalho, arraste para 0 -
eltonleao.movimento.v1 movimento reduzido só neste site o botão de movimento, na cortina ou ao pé da figura -
eltonleao.idioma.v1 o idioma escolhido na porta da cortina, antes de tudo nenhum na interface; ?zerar ou o "esquecer tudo" abaixo -
eltonleao.completo.v1 se a figura já ficou inteira uma vez - a folha do fim do hero, que só aparece sozinha uma vez nenhum na interface; ?zerar ou o "esquecer tudo" abaixo -
eltonleao.cortina.v1 se já entrou nesta aba - a cortina não volta na mesma sessão fechar a aba, ou ?cortina no endereço -
eltonleao.trilha.v1 a posição da música, para o refresh continuar de onde parou fechar a aba -

O seu estoque de leitura, agora

assunto lidos no acervo o nó do rodapé
ciência - - -
tecnologia - - -
arte - - -
filosofia - - -

Um texto conta quando fica visível por vinte segundos contínuos com a aba em primeiro plano - abrir, rolar e clicar não contam. O mesmo texto não conta duas vezes, e um texto de dois assuntos enche os dois. Quando os quatro nós enchem, a assinatura do rodapé passa a apontar para como este site é organizado.

Sem placar, e não é por gosto. As quinze combinações não vazias de quatro pilares são a estrutura de faces do K₄: quatro vértices, seis arestas, quatro triângulos e o todo. A figura já desenha esse objeto - ela é o caderno, e nenhuma medalha precisa existir. O estoque de leitura só conta o que esteve visível por segundos contínuos com a aba em primeiro plano: não conta abrir, rolar nem clicar, porque placar que sobe com clique mede clique.

16 A leitura e as listas, depois

As seções 03, 05 e 06 descrevem o que foi decidido entre 09 e 10/09. Em 13/09 as três superfícies foram refeitas de novo, e o que a medição achou desta vez não era a linha nem a entrelinha:

princípio fonte a página, antes agora
medida de 45 a 75 caracteres, ideal ~66 Bringhurst 2.1.2; Butterick 71 caracteres em 624 px - dentro igual
entrelinha cresce com a medida Bringhurst 2.2.1 1,70 - dentro igual; parágrafos com 29 px entre si (eram 25, no limite de baixo)
espaço em branco proporcional ao que separa Bringhurst cap. 8; Tschichold kicker, título, dek com 16 px entre cada, para um título de 46 px - fora 24 / 28 / 28 px
índice visível sem competir com o texto NN/g, Table of Contents índice a 48 px da coluna e cipreste a 20 px do índice: uma parede - fora calha de 80 px; seção ativa marcada
tela larga: manter a medida, usar a margem Medium, Substack, iA; Bringhurst 8.3 conjunto deslocado: centro em 838 numa tela de 960 - fora composição centrada, índice incluído; tabelas sangram até 10 rem na margem
a listagem de projetos seção 03 destaque com miniatura empilhada em qualquer largura: 6 378 px para oito projetos linha de pauta com a prancha à direita: 5 406 px; tabela com o nome como elo
o filtro de pilar seção 03 e o hero chips com bolinha e nome; ao clicar, o filtro escondia a si mesmo (os chips também têm data-pilar) e não havia como limpar os quatro símbolos alquímicos com o anel de seleção do hero; "todos" é o K₄ completo; três jeitos de limpar

WebGL desligado

Este site precisa da placa de vídeo

O espaço deste site - a nave Swordfish, o voo entre as galáxias, o céu que você monta - é desenhado pela placa de vídeo, através do WebGL. Neste navegador ele está desligado, e sem ele essas partes não aparecem. Os textos continuam legíveis.

Como ligar

Endereços como chrome://settings não abrem por link: copie e cole na barra de endereço.