Notas de decisão
O que mudou, o que não mudou, e por quê.
O palco continua sendo cálculo
Nenhuma decoração foi aplicada em #palco: ele mantém position: absolute, overflow: hidden e touch-action: none, e a hierarquia #palco > .el está intacta. Todo o visual (fundo pontilhado, raio, borda) vive no invólucro .poco-palco. A conversão unidade-do-alvo → pixel segue usando o retângulo real do alvo.
Ids são contrato
#palco, #alvoCanvas, #h-estado, #pRotulo, #lista e demais ganchos permanecem com os mesmos nomes. Os blocos marcados STUB DE DEMONSTRAÇÃO existem só para a página respirar na revisão — o script real de cada página entra no lugar sem tocar no HTML.
Câmera escura, painel claro
As telas com vídeo ao vivo usam #0E0E10 e sobreposições rgba(0,0,0,.6): fundo claro em volta de vídeo cansa a vista e denuncia as bordas da imagem. Nelas, a ação primária troca --primary por --secondary, que permanece legível no escuro. Todo HUD respeita env(safe-area-inset-*).
Um símbolo para “a câmera reconhece isto”
Quatro cantos de mira marcam a área rastreável — na retícula de busca do visualizador e na moldura do alvo no editor. O eleitor aprende o símbolo ao escanear; o operador reencontra o mesmo símbolo ao editar. Nenhum texto explicativo é necessário.
Hierarquia do editor: o palco manda
Colunas estreitas (232 / 264 px), fundo branco quieto e rolagem própria — a lista de peças nunca empurra o palco. O alvo é a única área com cor no centro da tela. Seleção aparece três vezes coerentes: contorno + alças na peça, linha destacada na lista, nome em #pRotulo nas propriedades.
Publicar é conclusão, não mais um botão
Único botão primário da barra do editor. O resultado abre como diálogo de conclusão: selo de sucesso, QR grande e o endereço público — o momento em que o material “vai para a rua” merece cerimônia proporcional (e nada mais que isso).
Acessibilidade como régua
Toque mínimo 44×44 px em telas de toque (pointer: coarse promove todos os botões), todo campo com <label>, contraste ≥ 4.5:1 nos dois temas, foco visível com anel --secondary, e estado nunca comunicado só por cor — sempre ponto/ícone + texto.
O que ficou de fora, de propósito
Gradientes (exceto botões de rede social), vidro fosco, sombras pesadas, animação decorativa e ícones ilustrativos grandes. O santinho e o vídeo do candidato são o espetáculo; a interface é bastidor.
Pendências para a integração
1 · Substituir os stubs pelos scripts reais de cada página. 2 · Conferir os ids que não estavam no brief (a lista terminava em “…”). 3 · Apontar lib/three.min.js e lib/qrcode.js para os arquivos locais reais. 4 · Nunito: o painel já a carrega; os fallbacks seguram o playground isolado.