{
  "id": "clube-tudo-se-move",
  "titulo": "Tudo se move",
  "categoria": "elementos",
  "resumo": "filme de marca de 15 s, 16:9, que percorre os princípios do motion em sete seções: uma bola que quica no tempo da música, quatro palavras (TEMPO, ESPAÇO, curva, RITMO), um painel com dados reais do próprio vídeo, 1.800 partículas que viram uma esfera e depois o símbolo do Claude, fitas de linhas sob a frase \"tudo se move.\" e a assinatura com o símbolo e o nome oficiais. Os gráficos não inventam números: mostram o espectro da música quadro a quadro, a curva da mola padrão e o progresso real do vídeo. É uma **recriação** do \"Claude motion reel\", de Jason Zhou (@jasonzhou1993), publicado no prompt-motion.com (prompt-motion.com/jasonzhou1993-8595e0) e feito numa tentativa só com o prompt genérico de showreel. A nossa versão troca a paleta genérica pela marca do Claude, as cortinas de listras por formas que viram a próxima e a trilha sintética por \"Clocks\", do Coldplay.",
  "indicado": "filme de marca de empresa de tecnologia, abertura de apresentação e showreel com dados.",
  "estilo": [
    "tipografia cinética",
    "partículas",
    "gráficos animados",
    "dados reais",
    "cadeia de formas",
    "HUD técnico",
    "corte na batida."
  ],
  "ficha": {
    "formato": "1920×1080, 60 qps, 16:9",
    "duracao": "15,0 s (900 quadros); seções de 1,84 s, um compasso a 130 BPM",
    "motor": "html",
    "voz": "ver o guia de estilo",
    "musica": "ver o guia de estilo",
    "fontes": "ver o guia de estilo"
  },
  "ferramentas": [
    "Claude Code"
  ],
  "ficha_tecnica": {
    "Duração": "15,0 s (900 quadros); seções de 1,84 s, um compasso a 130 BPM",
    "Formato": "1920×1080, 60 qps, 16:9",
    "Narração": "nenhuma; o texto está na tela",
    "Ferramenta": "HyperFrames, com tudo desenhado num canvas 2D por `render(t)`; motion blur feito dentro do canvas, sem render em alta taxa",
    "Uso": "filme de marca, showreel",
    "Trilha": "\"Clocks\" (Coldplay), trecho de 13,0 a 28,1 s da faixa, sem voz; a bateria entra em 1,84 s"
  },
  "etapas": [
    {
      "titulo": "O roteiro",
      "texto": "**Resumo:** vídeo sem narração em sete seções, cada uma com cerca de um compasso de 1,84 s (130 BPM), mais o painel de dados, que ocupa dois. O texto da tela está em português e sai do `index.html`; os tempos são do vídeo (0 s = 13,0 s da música).\n\n## Como o roteiro foi feito\n\n- **Ponto de partida:** o original de @jasonzhou1993, que já dava uma palavra-princípio a cada tempo forte (princípio, tipografia, sistema, partículas, 3D, dados, frase e assinatura).\n\n- **O que mudou:** as cortinas de listras e o quadro cinza viraram transições de forma, o painel passou a mostrar dados reais, a assinatura usa o símbolo e o nome oficiais e todo texto foi para o português.\n\n## Cenas por tempo\n\n | \n\n | #\n | Tempo (s)\n | Seção (HUD)\n | Texto na tela\n | O que acontece\n\n | 1\n | 0–1,84\n | 00 — PRINCÍPIOS\n | \"princípios primeiro.\"; régua de quadros\n | a bola cai e quica numa régua, cada quique mais curto, no grid da música; fantasmas mostram o espaçamento; ela rola até parar (1,38 s), achata em antecipação (1,40–1,62 s) e cresce até a tela\n\n | 2\n | 1,84–2,30\n | 01 — TIPOGRAFIA\n | **TEMPO**\n | **drop:** a bola vira o fundo argila e as letras pousam com cliques; zoom ×70 pela haste do T\n\n | 3\n | 2,30–2,76\n | 01 — TIPOGRAFIA\n | **ESPAÇO**\n | o preto do T vira o fundo; o tracking fecha de 600 para −30 e a palavra achata num traço de 5 px\n\n | 4\n | 2,76–3,22\n | 01 — TIPOGRAFIA\n | curva; \"112%\"\n | o traço abre o fundo claro; a curva da mola se desenha com o selo de pico e depois engorda até virar o fundo azul\n\n | 5\n | 3,22–3,68\n | 01 — TIPOGRAFIA\n | **RITMO**\n | as letras entram sobre o azul e cada uma vira uma barra\n\n | 6\n | 3,68–7,34\n | 02 — DADOS\n | \"energia da trilha\", \"130 BPM\"; \"o reel em números\" (60, 0, 1.800); \"a mola padrão\"; \"progresso do reel\", \"quadro … de 900\"\n | as 5 barras se dividem nas 24 do espectro, que reage à música; a câmera recua do cartão azul e viaja entre os cartões (vai à mola em 5,87 s e volta às barras em 6,90 s); contadores rolam e o anel mostra o progresso real\n\n | 7\n | 7,34–9,18\n | 03 — PARTÍCULAS\n | \"1.800 PARTÍCULAS · SEMENTE 42 · ESFERA DE FIBONACCI\"\n | cada barra explode em 75 partículas, que formam uma esfera girando\n\n | 8\n | 9,18–11,02\n | 04 — FORMA\n | \"1.800 PARTÍCULAS · O SÍMBOLO DO CLAUDE\"\n | a esfera vira o símbolo do Claude, que se forma com um sino\n\n | 9\n | 11,02–12,84\n | 05 — MOVIMENTO\n | tudo se move.\n | as partículas entram em três fitas de linhas que torcem e se cruzam; a frase entra em serifa itálica\n\n | 10\n | 12,84–15,0\n | 06 — ASSINATURA\n | símbolo + **Claude**; \"DESIGNER DE MOTION — SHOWREEL 2026\"; feito em código, quadro a quadro.; \"TEMPO · ESPAÇO · CURVA · RITMO · DADOS · PARTÍCULAS · FORMA\"\n | as fitas fecham num ponto de luz, o símbolo nasce dele com onda de choque e faíscas, anda até a marca e o nome se revela (13,6 s); o subtítulo se decodifica (13,86 s); a frase em serifa entra em 14,2 s e o rodapé em 14,4 s; o símbolo segue girando\n\n## Momentos para a trilha\n\n- 0–1,84 s: intro da faixa, com o riser tonal subindo até o drop.\n\n- **1,84 s: a bateria entra**, no corte para TEMPO.\n\n- 3,68 s: virada para o painel de dados.\n\n- **7,34 s: estouro das partículas**, com Ping Boom.\n\n- **12,84 s: assinatura**, com Ping Boom e impacto.\n\n- 14,1–15,0 s: fade final."
    },
    {
      "titulo": "A identidade visual",
      "texto": "**Resumo:** a marca do Claude num filme de motion de 15 s: argila, marfim e preto quente, Inter Tight pesada nas palavras, Source Serif 4 itálica nas frases e JetBrains Mono no HUD. Tudo é desenhado num canvas por `render(t)`, com motion blur por subamostras, gráficos alimentados por dados reais e uma cadeia de formas em que cada cena nasce da anterior. Números tirados do `index.html`, do `data.js` e do `mix.py`.\n\n## Fontes\n\n | \n\n | Uso\n | Fonte\n | Onde baixar\n\n | Palavras (TEMPO, ESPAÇO, RITMO)\n | Inter Tight 900 (no lugar da Styrene da marca)\n | Google Fonts\n\n | Frases (\"princípios primeiro.\" em mono; \"curva\", \"tudo se move.\", \"feito em código, quadro a quadro.\")\n | Source Serif 4 itálica (no lugar da Tiempos)\n | Google Fonts\n\n | HUD, legendas técnicas e contadores\n | JetBrains Mono, 12–22 px\n | Google Fonts / JetBrains\n\n | Nome \"Claude\"\n | path oficial em SVG, que já é serifado\n | vem em `assets/claude.js`\n\n## Cores\n\n | \n\n | Token\n | Hex\n | Papel\n\n | Argila\n | `#D97757`\n | a bola, o fundo do drop, as partículas quentes, a frase da assinatura\n\n | Marfim\n | `#F0EEE6`\n | fundo claro, tinta sobre o escuro\n\n | Papel\n | `#FAF9F5`\n | cartões\n\n | Preto quente\n | `#141413`\n | fundo escuro\n\n | Ardósia\n | `#262624`\n | superfícies escuras\n\n | Azul\n | `#6A9BCC`\n | fundo da curva que engorda, barras\n\n | Verde\n | `#788C5D`\n | apoio\n\n | Kraft\n | `#D4A27F`\n | apoio\n\n | Cinzas\n | `#8F8D85`, `#E3E1D7`\n | réguas, grades, rótulos\n\nO original usava laranja `#F4561F` e cobalto `#2A3FF2` saturados; a argila da marca é mais sofisticada, mas grita menos no celular. Para mais impacto, um caminho é subir o azul para `#4F8FE0`.\n\n## Peças\n\n | \n\n | Peça\n | Como é\n\n | Bola e régua\n | quiques com gravidade de 12.397 px/s² e durações de 0,44 · 0,23 · 0,115 · 0,0575 s, no grid de 8ª, 16ª e 32ª da música; rola até parar em 1,38 s; fantasmas a cada 1/30 s mostram o espaçamento; squash no impacto (`e^(−t/0,045)`) e stretch na direção da velocidade\n\n | Palavras\n | TEMPO (corta no tempo forte), ESPAÇO (tracking de 600 a −30), curva (a mola desenhada, selo \"112%\"), RITMO (as letras viram barras)\n\n | Painel de dados\n | cartões \"energia da trilha\" (espectro de 24 bandas ao vivo, \"130 BPM\", \"AO VIVO · 24 BANDAS · COLDPLAY, CLOCKS\"), \"o reel em números\" (60 quadros por segundo, 0 keyframes à mão, 1.800 partículas, \"FEITO 100% EM CÓDIGO\"), \"a mola padrão\" (\"PICO 112% · ASSENTA EM 0,6 S\") e \"progresso do reel\" (anel com t/15 real e \"quadro 412 de 900\")\n\n | Espectro\n | FFT de 4096 pontos por quadro, 24 bandas logarítmicas de 40 Hz a 14 kHz, normalizadas por banda entre os percentis 5 e 99, com marcador de pico que cai em parábola\n\n | Partículas\n | cada barra explode em 75 partículas (1.800 no total), que formam uma esfera de Fibonacci projetada à mão (foco 1.100) e depois o símbolo do Claude amostrado do SVG (passo de 4 px, embaralhado com semente); legenda \"1.800 PARTÍCULAS · SEMENTE 42 · ESFERA DE FIBONACCI\"\n\n | Fitas de linhas\n | 3 fitas × 34 linhas; `y = base(x,t) + cos(x·g + 0,9t)·largura·(k/33 − 0,5)·2`; mistura `lighter` no escuro, alfa 0,22–0,44, traço de 1,3 px\n\n | Assinatura\n | símbolo e nome oficiais; linha fina; \"DESIGNER DE MOTION — SHOWREEL 2026\" decodificado letra a letra; \"feito em código, quadro a quadro.\" em serifa itálica argila; rodapé \"TEMPO · ESPAÇO · CURVA · RITMO · DADOS · PARTÍCULAS · FORMA\"\n\n | HUD\n | cantoneiras de 26 px, \"CLAUDE · SHOWREEL 2026\", timecode real, rótulo da seção decodificado; mono 14 px a 62% de opacidade, tinta clara ou escura conforme o fundo\n\n## Transições (a cadeia de formas)\n\n- A bola cresce em `expoIn` (de 26 px ao fundo inteiro) e vira o fundo argila no drop.\n\n- Zoom ×70 na haste do T (sólida, ao contrário do miolo do O) e o preto vira o fundo seguinte.\n\n- A palavra achata num traço de 5 px, e o traço abre o fundo claro.\n\n- A curva da mola engorda (traço de 9 a 3.200 px) e vira o fundo azul.\n\n- Cada letra de RITMO vira uma barra, as 5 barras se dividem nas 24 do gráfico e a tela azul é o cartão; a câmera recua dele.\n\n- Cada barra explode em partículas, que formam a esfera, que vira o símbolo.\n\n- As partículas entram nas faixas das fitas, as fitas se fecham num ponto de luz, e o ponto vira o símbolo da marca, com onda de choque e faíscas.\n\n## Curvas e molas\n\n- **Mola padrão desenhada:** `1 − e^(−6,5s)·cos(10,05s)`: pico de 113% em 0,31 s, assenta em 0,6 s.\n\n- Curvas cúbicas de entrada e saída (`eOutCubic`, `eInCubic`, `eInOutCubic`) e `expoIn` nos crescimentos até a tela.\n\n- **Motion blur:** 6 subamostras num obturador de 180°, 10 nas transições rápidas, acumuladas com `globalAlpha = 1/(k+1)`; com 5 amostras, expansões muito rápidas mostram degraus.\n\n## Câmera\n\nDeriva contínua somada a toda transformação (`setCam`): ±7,5 px na horizontal, ±5,5 px na vertical, ±0,2° de rotação e ±0,4% de escala. A câmera viaja entre os cartões do painel e recua do cartão azul.\n\n## Trilha\n\n | \n\n | Item\n | Valor\n\n | Música\n | \"Clocks\" (Coldplay)\n\n | Trecho\n | 13,0 a 28,1 s da faixa, sem voz (a voz entra em 29,3 s)\n\n | Andamento e tom\n | 130 BPM medido com o `beat_this`; Mi bemol maior\n\n | Drop\n | 1,84 s, quando a bateria entra, no corte para TEMPO\n\n | Fecho\n | fade de 14,1 a 15,0 s\n\n## Sound design e mix\n\n | \n\n | Ação na tela\n | Efeito\n\n | bola caindo e quicando\n | whoosh curto grave; pops graves e abafados (passa-baixa de 2,6 kHz), meio tom acima a cada quique\n\n | \"princípios primeiro.\" digitado\n | tecla de teclado a cada duas letras\n\n | drop (1,84 s)\n | riser Clarity em Ré# (no tom) terminando no drop, Ping Boom em Ré#, whoosh grave, impacto\n\n | letras de TEMPO pousam\n | cliques em cascata, subindo de tom\n\n | zoom na haste do T, tracking\n | whooshes curtos\n\n | palavra vira linha, curva desenha\n | clique; caneta; pop no selo \"112%\"\n\n | curva engorda e vira o azul\n | whoosh grave\n\n | letras viram barras\n | colagem + impacto\n\n | cartões e contadores\n | pops em cascata; contador rolando; caneta na mola\n\n | estouro das partículas (7,34 s)\n | riser, Ping Boom, impacto, glitch\n\n | esfera e símbolo\n | whoosh longo, whoosh grave, sino quando o símbolo se forma\n\n | fitas e título\n | whoosh longo; whoosh curto grave no \"tudo se move.\"\n\n | assinatura (12,84 s)\n | riser, Ping Boom, impacto, pop; whooshes no deslize do símbolo; digitação no subtítulo; sino na frase em serifa\n\n- 64 efeitos, cada um em `at = evento − pico`; os 50 efeitos curtos ficam a até 25 ms do evento, medidos na faixa só de efeitos.\n\n- **Sem voz, os acentos sobem ×1,8 (teto de 0,7) e a música fica em 0,68.** Alvo: efeito ~6 dB abaixo da música na janela de 80 ms do evento (mediana medida: −6 dB).\n\n- **Final:** mix no ffmpeg (`adelay` + `amix`), limitador a 0,95 e `loudnorm` em duas passagens: −13,9 LUFS, pico −2,3 dBFS.\n\n## O que é \"humano\" neste vídeo\n\n- A bola rola até parar e faz antecipação antes de crescer, em vez de esperar congelada.\n\n- Os gráficos mexem com a música de verdade, então o painel nunca congela.\n\n- Nenhuma tela vazia entre as seções: cada uma começa com a forma da anterior.\n\n- O símbolo final continua girando devagar até o último quadro."
    },
    {
      "titulo": "A montagem no HyperFrames",
      "texto": "- **Instale o Node.js e o ffmpeg.** O HyperFrames roda pelo `npx`: `npx hyperframes@0.8.144`. Fontes, GSAP e dados já estão em `projeto/hf/`.\n\n- **Pré-visualize:** dentro de `projeto/hf/`, rode `npx hyperframes@0.8.144 preview`.\n\n- **Render:** de `projeto/`, rode `npx hyperframes@0.8.144 render hf -q delivery` e guarde o vídeo em `projeto/render/`. O motion blur já sai do canvas, então o render é a 60 qps. Se algum quadro sair vazio, renderize de novo e junte os dois com `python render/juntar_bons.py A.mp4 B.mp4 saida.mp4`.\n\n- **Áudio:** copie a pasta `audio/` para dentro de `projeto/` (os scripts esperam `hf/`, `audio/` e `render/` lado a lado). No `mix.py`, aponte `SFX`, `PACK` e `TON` para `audio/sfx/` e rode `python mix.py`; ele monta o mix no ffmpeg e normaliza a −14 LUFS, gerando `audio/mix.wav`.\n\n- **Final:** `bash render/finalizar.sh render/<video>.mp4` junta o vídeo com o mix e monta a comparação; para a comparação, ajuste `REF` para `referencias/original/`.\n\n- **Conferência:** `python revisao/saltos.py <final>.mp4` e `python revisao/vazios.py <final>.mp4`.\n\n**Pegadinhas:** crie os contextos do canvas com `getContext('2d', { willReadFrequently: true })`; com a GPU e vários renders em paralelo, a captura perdeu o contexto e gravou quadros vazios em sequência. Registre a timeline só depois de `document.fonts.load()` de cada peso usado."
    },
    {
      "titulo": "As decisões de direção",
      "texto": "- **Os princípios em ordem, um por compasso:** princípio → tipografia → dados → partículas → forma → movimento → assinatura.\n\n- **Dados reais no lugar de números inventados:** o espectro da música ao vivo, a mola padrão desenhada (pico de 112%, assenta em 0,6 s), \"o reel em números\" (60 quadros por segundo, 0 keyframes à mão, 1.800 partículas) e um anel com o progresso real (\"quadro 412 de 900\").\n\n- **Uma forma vira a próxima, 12 vezes:** a bola cresce e vira o fundo argila; zoom na haste do T, nunca no miolo do O; a palavra achata num traço que abre o fundo claro; a curva da mola engorda até virar o fundo azul; as letras de RITMO viram barras, as barras viram o painel; as barras explodem em partículas, que viram esfera e depois o símbolo; as fitas fecham num ponto de luz, que vira a marca.\n\n- **Física no tempo da música:** quiques com gravidade constante e durações em progressão geométrica, todos no grid de 8ª, 16ª e 32ª; fantasmas a cada 1/30 s mostram o espaçamento.\n\n- **Motion blur dentro do canvas**, sem render a 240 qps: 6 subamostras por quadro, 10 nas transições rápidas.\n\n- **A marca do Claude:** argila, marfim, preto quente, azul e kraft; símbolo e nome a partir dos paths oficiais em SVG; serifa itálica nas frases.\n\n- **Trilha no tom.** \"Clocks\" está em Mi bemol maior, e os tonais (riser Clarity e Ping Boom em Ré#) entram no drop, no estouro das partículas e no logo.\n\n- **Assinatura viva até o fim:** o símbolo gira devagar e o subtítulo se decodifica letra a letra.\n\nDetalhes de cores, curvas e som: estilo.md. Cenas por tempo: roteiro.md. Para fazer um vídeo no mesmo estilo: PROMPT.md."
    },
    {
      "titulo": "As versões até o final",
      "texto": "| \n\n | Versão\n | O que mudou\n\n | rascunho\n | primeira passagem completa; a captura com GPU e vários renders em paralelo gravou 10 quadros vazios\n\n | v2\n | render pelo SwiftShader; ainda saíram 18 quadros vazios\n\n | **v3**\n | contextos do canvas na CPU (`willReadFrequently: true`): 0 quadros vazios e só três saltos, todos cortes de propósito (1,85 · 2,75 · 12,85 s); mix com os acentos ×1,8 e a música a 0,68; é a versão entregue"
    }
  ],
  "pacote": [
    {
      "pasta": "projeto/hf/",
      "conteudo": "a composição (`index.html`), o `BRIEF.md`, `hyperframes.json`, `package.json`, o GSAP local, `assets/data.js` (batidas e espectro da música por quadro), `assets/beats.json`, `assets/claude.js` e `assets/claude-paths.json` (símbolo e nome oficiais em path) e as fontes em `fonts/` (Inter Tight, Source Serif 4 romana e itálica, JetBrains Mono)"
    },
    {
      "pasta": "projeto/render/",
      "conteudo": "`finalizar.sh` (junta o vídeo com o mix e monta a comparação) e `juntar_bons.py` (troca quadros vazios de um render pelos de outro render do mesmo código)"
    },
    {
      "pasta": "projeto/revisao/",
      "conteudo": "`saltos.py` (salto entre quadros 3× maior que os vizinhos) e `vazios.py` (quadro chapado)"
    },
    {
      "pasta": "audio/",
      "conteudo": "`mix.py` (os 64 efeitos, a música e o `loudnorm` em duas passagens), as batidas medidas (`clocks-batidas.json`), a música, o mix final e a pasta `sfx/`"
    },
    {
      "pasta": "referencias/",
      "conteudo": "o vídeo original e o prompt dele, folhas de contato do original, a comparação original × nossa e três folhas de momentos comparados"
    },
    {
      "pasta": "render/",
      "conteudo": "`render.mp4`"
    },
    {
      "pasta": "render(t)",
      "conteudo": "desenha o quadro inteiro no canvas; é chamada no `onUpdate` de um tween GSAP pausado de 0 a 15 s, então qualquer quadro sai igual"
    },
    {
      "pasta": "T",
      "conteudo": "os tempos de cada seção: palavras em 1,84 · 2,30 · 2,76 · 3,22 s; dados 3,68; partículas 7,34; forma 9,18; movimento 11,02; assinatura 12,84"
    },
    {
      "pasta": "data.js",
      "conteudo": "o espectro da trilha por quadro (FFT de 4096 pontos, 24 bandas logarítmicas de 40 Hz a 14 kHz, normalizadas por banda entre os percentis 5 e 99)"
    }
  ],
  "prompt": "Quero fazer um filme de marca curto, sem narração, no mesmo estilo do projeto \"Tudo se move\", que está em 07-videos/projetos/tudo-se-move/, com a minha marca.\n\nMarca: {{MARCA}} (site: {{SITE}}; símbolo e logo em SVG)\nQuatro palavras que resumem o que a marca faz: {{PALAVRAS}} (na referência, TEMPO, ESPAÇO, curva, RITMO)\nDados reais que podem ir para o painel: {{DADOS}} (números do meu produto, do meu negócio ou do próprio vídeo; nada inventado)\nFrase do meio: {{FRASE}} (na referência, \"tudo se move.\")\nAssinatura: {{ASSINATURA}} (na referência, \"feito em código, quadro a quadro.\")\nDuração aproximada: {{DURACAO}} (a referência tem 15 s)\nFormato: {{FORMATO}} (a referência é 1920×1080; para reels, 1080×1920)\nMúsica: {{MUSICA}} (se vazio, sugira 3 faixas reais com uma intro curta e a bateria entrando num tempo forte claro)\n(Se algum desses estiver vazio ou com as chaves, me pergunte antes de começar.)\n\n1. Estude o projeto antes de propor qualquer coisa. Leia, nesta ordem: 07-videos/projetos/tudo-se-move/LEIA-ME.md, estilo.md e roteiro.md. Depois abra projeto/hf/index.html e veja a função render(t), a tabela de tempos T, o motion blur por subamostras, a deriva da câmera (setCam), a física da bola, o painel de dados, as partículas que formam o símbolo, as fitas de linhas e o HUD; o assets/data.js (o espectro da música por quadro) e o audio/mix.py. Me explique em poucas linhas o que vai reaproveitar e o que vai trocar.\n\n2. Siga o passo a passo de 07-videos/_LEIA.md e os números de 07-videos/regras-vigentes.md. Crie o meu projeto em 07-videos/projetos/AAAA-MM-DD-tema/ a partir de 07-videos/projetos/_modelo/README.md e marque cada etapa no checklist. Não edite os arquivos do projeto tudo-se-move: copie o que for reaproveitar.\n\n3. Use as skills instaladas: animacao-saas (forma que vira a próxima, câmera viva, mola), motion-app-ae (rota em HTML determinístico), video-referencias (marca real e um som por ação), conteudo-video (regras de vídeo) e better-portuguese (todo texto da tela). Se as skills do HyperFrames estiverem instaladas, leia também as de composição e animação antes de escrever o HTML.\n\n4. A identidade vem da minha marca, de verdade: abra o site, tire o símbolo e o logo em SVG, as cores do CSS e as fontes, e anote cada valor com a fonte num BRAND.md do projeto. Uma sans pesada nas palavras, uma serifa itálica nas frases (ou a fonte de texto da marca) e uma mono no HUD. Showreel precisa de contraste para o celular: use a cor de acento mais saturada da marca.\n\n5. Antes de qualquer código, meça a música com o beat_this, calcule o tom e me mostre o mapa: uma seção por compasso (princípio → as quatro palavras → dados → partículas → forma → frase → assinatura) e, para cada troca, qual forma vira a próxima (a bola vira o fundo, zoom na haste de uma letra e nunca no miolo do O, a palavra achata num traço, uma curva engorda até virar o fundo, as letras viram barras, as barras explodem em partículas, as partículas desenham o meu símbolo). Mostre também de onde vem cada número do painel.\n\n6. Construa reaproveitando o esqueleto do index.html: um canvas desenhado por render(t) num tween GSAP pausado, contextos com willReadFrequently: true, fontes carregadas com document.fonts.load antes da timeline, motion blur com 6 subamostras (10 nas transições rápidas), quiques com gravidade no grid da música, espectro da trilha calculado em Python por quadro, partículas amostradas do meu SVG com semente fixa, câmera com deriva contínua. Troque seções, palavras, dados, cores, fontes, símbolo e música.\n\n7. Me mostre 4 quadros de teste (abertura, palavras, painel e assinatura) e a folha de contato a 4 qps antes do render final. Em cada movimento, pergunte: está humano ou robotizado? E compare no tamanho do celular: o vídeo grita o bastante?\n\n8. Som em paralelo, num subagente: um efeito para cada elemento que entra ou sai, em evento − pico do arquivo, e tonais no tom da música no drop, no estouro das partículas e na assinatura. Sem voz, suba os acentos ×1,8 (teto 0,7) e deixe a música em ~0,68, mirando o efeito ~6 dB abaixo da música no instante do evento; meça a sincronia na faixa só de efeitos. Final com loudnorm em duas passagens a −14 LUFS.\n\n9. Render a 60 qps e rode os detectores de quadro vazio e de salto (projeto/revisao/vazios.py e saltos.py). Se sair quadro vazio, renderize de novo e junte os dois com projeto/render/juntar_bons.py. Todo salto que sobrar tem de ser um corte de propósito. Entregue o vídeo, a ficha do projeto atualizada e uma anotação em anotacoes/.",
  "campos": [
    "ASSINATURA",
    "DADOS",
    "DURACAO",
    "FORMATO",
    "FRASE",
    "MARCA",
    "MUSICA",
    "PALAVRAS",
    "SITE"
  ],
  "fonte": {
    "nome": "Clube do Motion",
    "url": "https://clubedomotion.com/projeto/?id=tudo-se-move",
    "uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
  }
}