feat(site): blocos 3D da marca, novas ofertas e hero mais abrangente
CI / audit (push) Successful in 10m38s
CI / verify (push) Successful in 13m10s
CI / deploy (push) Successful in 1m50s
CI / e2e (push) Successful in 18m48s

Hero e movimento
- cena 3D em tempo real com os blocos da marca (kit feito no Blender, 3d/blocos.py):
  marca, tela, integrações e dados; segue a rolagem, tem vida em repouso, reage ao
  cursor e, parada no topo, passa sozinha pelos estados com legenda
- três níveis de aparelho (full, lite, static); sem WebGL fica o pôster
- título novo: "Sites e sistemas sob medida para o jeito que a sua empresa trabalha."
- faixa de clientes com o ramo, linha do primeiro passo, hero alinhado às seções
- rótulos digitados, entrada dos blocos, cortina de blocos entre páginas e capa
  compartilhada entre a lista de cases e o case

Ofertas
- atendimento no WhatsApp com IA e nota fiscal para a reforma tributária
  (páginas de serviço, cartões da home, formulário e aviso com data de validade)
- página /ia atualizada, com fontes
- peças 3D em loop nos cartões e topos de página (3d/pecas.py)

Design
- hover por papel (bloco nos botões, barra nos links), rótulos sem caixa alta
- um destino por rótulo: "Falar sobre meu projeto" leva ao formulário,
  "Chamar no WhatsApp" abre o WhatsApp
- logo montado em blocos, 404 redesenhado, grades sem célula vazia
- ícones do PWA e manifesto novos

Specs em specs/, contexto de design em DESIGN.md e PRODUCT.md.
This commit is contained in:
evandro committed 2026-11-10 03:48:25 -03:00
1 parent 4671837c44
commit c7d09d63d4
165 files changed
+7940 -3790

No files matched your search

+12 -9
View File
@@ -9,10 +9,10 @@ import {
/**
* (c) Teclado, no computador:
* (a) atalho: Tab até "Falar sobre meu projeto" no cabeçalho, Enter, e o campo de nome do contato em até 4 Tabs.
* Só no computador: no celular o botão do hero abre o WhatsApp, não o formulário.
* (b) caminho linear: do topo da home, o Tab chega ao campo de nome do contato em até 37 toques, mais os controles da
* barra de cookies enquanto ela estiver aberta (primeira visita: 37 + 3 = 40; com o consentimento já salvo a barra
* não abre e o limite é 37). A vitrine de projetos é navegada com as setas: um seletor e o link do case; ver o
* Só no computador: no celular o botão do cabeçalho fica dentro do menu.
* (b) caminho linear: do topo da home, o Tab chega ao campo de nome do contato em até 41 toques, mais os controles da
* barra de cookies enquanto ela estiver aberta (primeira visita: 41 + 3 = 44; com o consentimento já salvo a barra
* não abre e o limite é 41). A vitrine de projetos é navegada com as setas: um seletor e o link do case; ver o
* inventário em LINEAR_MAX_TABS.
* Os testes continuam apertando Tab depois do limite só para dizer, na falha, quantos toques faltavam.
*/
@@ -21,17 +21,20 @@ const CTA_LABEL = "Falar sobre meu projeto";
const SHORTCUT_MAX_TABS_TO_CTA = 20;
const SHORTCUT_MAX_TABS_AFTER_ENTER = 4;
/**
* Limite do caminho linear: 37 toques. Inventário das paradas legítimas, do topo da home ao campo de nome (37 hoje):
* Limite do caminho linear: 41 toques. Inventário das paradas legítimas, do topo da home ao campo de nome (41 hoje):
* 1 link "Pular para o conteúdo";
* cabeçalho: logo, 5 links (Cases, Serviços, Como trabalho, Sobre, IA) e "Falar sobre meu projeto" (7);
* hero: "Falar sobre meu projeto", "Ver projetos entregues", os 5 clientes da faixa, LinkedIn e e-mail (9);
* cabeçalho: logo, 5 links (Cases, Serviços, Como trabalho, Sobre, Revisão de app com IA) e "Falar sobre meu
* projeto" (7);
* hero: "Falar sobre meu projeto", "Ver projetos entregues", "Chamar no WhatsApp", os 5 clientes da faixa, LinkedIn
* e e-mail (10);
* vitrine de projetos: o seletor, o link do case do projeto aberto e "Ver os cases" (3);
* ofertas: 3 botões e 4 links de case/página (a revisão aparece no card e no fim), mais "Ver todos os serviços" (8);
* ofertas: o link da faixa da nota fiscal, 4 botões e 5 links de case/página (a revisão aparece no card e no fim),
* mais "Ver todos os serviços" (11);
* "Ver trajetória completa" (1) e as 5 perguntas da FAQ (5);
* contato: WhatsApp e e-mail (2), e então o campo de nome.
* Tudo isso é conteúdo e navegação que a pessoa quer alcançar; o limite não deve subir sem uma parada nova justificada.
*/
const LINEAR_MAX_TABS = 37;
const LINEAR_MAX_TABS = 41;
/** Primeira visita: a barra de cookies abre antes do cabeçalho e soma os controles dela (link da política, Aceitar, Recusar). */
const LINEAR_MAX_TABS_FIRST_VISIT =
LINEAR_MAX_TABS + COOKIE_BAR_CONTROLS.length;