{
  "id": "clube-codigo",
  "titulo": "Cada quadro é código",
  "categoria": "elementos",
  "resumo": "filme de marca de 31,5 s, 16:9, em que uma bola laranja atravessa nove cenas de motion: quica, vira fundo, vira acento de palavra, rola sobre um campo de cubos 3D, sobra no fim de 12.000 partículas e pousa como ponto final de \"CLAUDE.\". Tipografia cinética em Archivo variável, grade generativa, nó de cromo em Three.js e partículas, tudo em português e cortado nas batidas medidas da música. É uma **recriação** do \"Bold kinetic type showreel\", de kirill sh (@shneural), publicado no prompt-motion.com (prompt-motion.com/shneural-2abdfa). O original juntava dois showreels gerados pelo mesmo prompt genérico (um do Opus 5.5 e outro do GPT 6), colados com cartões de título parados; a nossa versão faz uma peça só, com o melhor das duas metades, trilha real e 152 efeitos sonoros.",
  "indicado": "abertura de marca, showreel de estúdio ou manifesto de quem trabalha com tecnologia e quer mostrar ofício.",
  "estilo": [
    "tipografia cinética",
    "partículas",
    "3D",
    "cromo",
    "grade generativa",
    "objeto protagonista",
    "corte na batida",
    "contraste alto."
  ],
  "ficha": {
    "formato": "1920×1080, 60 qps, 16:9",
    "duracao": "31,5 s; 9 cenas, a maioria de 3 s (4 batidas de 0,75 s)",
    "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": "31,5 s; 9 cenas, a maioria de 3 s (4 batidas de 0,75 s)",
    "Formato": "1920×1080, 60 qps, 16:9",
    "Narração": "nenhuma; o texto está na tela",
    "Ferramenta": "HyperFrames (HTML + GSAP), com Three.js para cubos, cromo e partículas e canvas 2D para bola, grade e poeira",
    "Uso": "showreel, filme de marca",
    "Trilha": "\"Bad Karma\" (Axel Thesleff), trecho de 71,84 a 103,34 s; drop em 4,43 s"
  },
  "etapas": [
    {
      "titulo": "O roteiro",
      "texto": "**Resumo:** vídeo sem narração, com 9 cenas presas aos bumbos medidos da música (batida a cada 0,75 s). O texto da tela está em português e sai do `index.html`; os tempos são do vídeo e vêm da tabela `T` da composição.\n\n## Como o roteiro foi feito\n\n- **Ponto de partida:** o original de @shneural tinha duas metades de 15 s, uma de cada modelo, separadas por cartões de título. O roteiro pegou a sequência da primeira metade (bola → palavras → grade → cubos → parede → partículas → assinatura) e trouxe da segunda o eco em contorno, o nó de cromo e as palavras de peso.\n\n- **O que mudou:** as palavras de 0,25 s viraram cenas de ~3 s, o mosaico de recapitulação deu lugar à frase em partículas e todo texto foi para o português.\n\n- **Cortes:** 4,43 · 7,46 · 10,46 · 13,45 · 16,45 · 19,45 · 22,48 · 28,41 s.\n\n## Cenas por tempo\n\n | \n\n | #\n | Tempo (s)\n | Rótulo do HUD\n | Texto na tela\n | O que acontece\n\n | 1\n | 0–4,43\n | 01 / COMPRIMIR E ESTICAR\n | rótulos da bola\n | a bola laranja quica em 0,74 · 1,50 · 2,24 · 3,00 s, achata e estica, sobe ao ápice (3,92 s) e mergulha na câmera (4,24 s)\n\n | 2\n | 4,43–7,46\n | 02 / TIPOGRAFIA CINÉTICA\n | **CADA** · **QUADRO** (\"1280 × 300\") · (03) **É** · **CÓDIGO**\n | **drop:** a bola vira o fundo laranja e \"CADA\" entra em preto; \"QUADRO\" (5,18 s) numa caixa de seleção com alças; o \"É\" itálico azul (5,92 s); \"CÓDIGO\" com glitch RGB sobre o azul e linhas de código (6,30 s); tudo se recolhe numa linha (7,08 s) e num ponto (7,22 s)\n\n | 3\n | 7,46–10,46\n | 03 / GRADE GENERATIVA\n | —\n | o ponto abre uma grade de pontos; três ondas trocam a forma das peças: cruzes (8,22 s), losangos (8,96 s) e quadrados (9,72 s)\n\n | 4\n | 10,46–13,45\n | 04 / PROFUNDIDADE\n | —\n | a câmera inclina e a grade vira um campo de cubos 3D, com destaques laranja e azul; a bola rola sobre eles; chicote de câmera em 13,18 s\n\n | 5\n | 13,45–16,45\n | 05 / RITMO\n | **MOVIMENTO** (em fileiras)\n | parede de fileiras azuis e creme com a palavra repetida e uma faixa central em destaque, cuja palavra alarga e se achata na saída\n\n | 6\n | 16,45–19,45\n | 06 / PESO\n | **OUSADO.** \"SEM MEDO.\" · **PRECISO.** \"SEM ACASO.\" · **VIVO.** \"NENHUM QUADRO PARADO.\"\n | uma palavra a cada batida (16,45 · 17,20 · 17,95 s), cada uma com quatro ecos em contorno; em 18,70 s a câmera mergulha no miolo do \"O\" de \"VIVO.\"\n\n | 7\n | 19,45–22,48\n | 07 / CROMO · LUZ · FORMA\n | **FORMA.** · **SEM LIMITES.** · \"CROMO · LUZ · PROFUNDIDADE\" · \"MORPH 000%\"\n | o nó de cromo gira com reflexos laranja e azul; \"FORMA.\" (19,62 s) e \"SEM LIMITES.\" (19,98 s); o nó muda de forma a partir de 20,98 s e a barra conta a porcentagem\n\n | 8\n | 22,48–28,41\n | 08 / PARTÍCULAS 12.000\n | \"CADA QUADRO / É CÓDIGO\" em partículas\n | o nó se desfaz em 12.000 pontos que derivam, viram uma galáxia (24,2 s), escrevem a frase (25,6 s) e colapsam (27,1 s) num ponto laranja (27,75 s); a música está na pausa filtrada\n\n | 9\n | 28,41–31,5\n | 09 / ASSINATURA\n | **CLAUDE.** · \"cada quadro deste reel é código.\"\n | a música volta cheia; o ponto pousa como ponto final de \"CLAUDE.\"; a frase é digitada com cursor a partir de 29,41 s; fade a partir de 30,75 s\n\n## Momentos para a trilha\n\n- 0–4,43 s: intro, com riser no mergulho da bola.\n\n- **4,43 s: drop**, no fundo laranja do \"CADA\".\n\n- 7,46 · 10,46 · 13,45 · 16,45 · 19,45 s: viradas de cena nos bumbos, com tremor de câmera.\n\n- 22,5–28,4 s: pausa filtrada da música, ocupada pelas partículas.\n\n- **28,41 s: volta da música** no \"CLAUDE.\".\n\n- 30,55–31,45 s: fade final."
    },
    {
      "titulo": "A identidade visual",
      "texto": "**Resumo:** quatro cores chapadas (tinta, creme, laranja e azul) e cromo, uma grotesca variável que estica e comprime na batida, uma bola laranja como fio condutor e três motores numa composição só: DOM para as palavras, canvas 2D para bola e grade, Three.js para cubos, cromo e partículas. A câmera treme em cada impacto e os cortes caem nos bumbos. Números tirados do `index.html`, do `mix.py` e do `cues.txt`.\n\n## Fontes\n\n | \n\n | Uso\n | Fonte\n | Onde baixar\n\n | Palavras (CADA, QUADRO, CÓDIGO, MOVIMENTO, OUSADO., CLAUDE.)\n | Archivo variável, largura 62–125 e peso 100–900; o eixo de largura pulsa na batida\n | Google Fonts / repositório google/fonts\n\n | \"É\" e destaques em itálico\n | Archivo Italic variável (o \"É\" sai a 520 px, peso 300, em azul)\n | Google Fonts\n\n | HUD, rótulos e código\n | JetBrains Mono\n | Google Fonts / JetBrains\n\n## Cores\n\n | \n\n | Token\n | Hex\n | Papel\n\n | Tinta\n | `#0d0d0f`\n | fundo escuro, letras sobre o claro\n\n | Creme\n | `#f2eee5`\n | fundo claro, letras sobre o escuro\n\n | Laranja\n | `#ff5a1f`\n | a bola, fundo do \"CADA\", \"QUADRO\", cubos de destaque, ponto de \"CLAUDE.\"\n\n | Azul\n | `#2d3bff`\n | o \"É\", fundo do \"CÓDIGO\", faixas da parede, cubos de destaque\n\n | Glitch\n | `#ff3b6b` / `#3be8ff`\n | as duas cópias deslocadas de \"CÓDIGO\"\n\n | Cubos neutros\n | `#d9d3c8`\n | o resto do campo 3D\n\n | Cromo\n | material metálico com ambiente RoomEnvironment e painéis laranja e azul\n | o nó\n\nAs cores do original eram parecidas (laranja #ec4921, azul #4247f7, creme #dad6d0); a recriação manteve a família e saturou.\n\n## Peças\n\n | \n\n | Peça\n | Como é\n\n | Bola\n | canvas 2D; quica com squash e stretch, arcos tracejados e rótulos; no mergulho, vem até a câmera e vira o fundo laranja\n\n | Palavra com peso\n | `translateY` com `expo.out` em 0,34 s, mais `scaleY = 1 + 0,32·(1 − mola)` e `scaleX = 1/√scaleY`\n\n | \"QUADRO\"\n | dentro de uma caixa de seleção com alças e a medida ao vivo (\"1280 × 300\")\n\n | \"CÓDIGO\"\n | creme sobre azul, com duas cópias em rosa e ciano deslocadas (glitch RGB) e linhas de código ao fundo\n\n | Grade generativa\n | pontos que viram cruzes, losangos e quadrados em três ondas (8,22 · 8,96 · 9,72 s)\n\n | Campo de cubos\n | Three.js; câmera de cima a `H = 1080/(passo_px·2·tan(fov/2))` (passo de 60 px e fov de 35° dão H = 28,54), `up = (0,1,0)`; os quadrados ganham sombra de extrusão nos 0,45 s finais e sobem com mola; pilares até 3,7, elevação 0,44 rad, distância 16,5, exposição 0,92\n\n | Parede MOVIMENTO\n | fileiras da palavra em faixas azul e creme, com uma faixa central cuja palavra alarga pelo eixo de largura e se achata na saída\n\n | Eco em contorno\n | palavra cheia + 4 cópias só de contorno (traço de 2 px), abrindo para cima e para baixo com 0,04 s de atraso por nível, opacidade 0,32 e 0,14\n\n | Nó de cromo\n | dois `TorusKnotGeometry` com os mesmos segmentos, (2,3) → (3,5), como morph target de posição e normal; legenda \"CROMO · LUZ · PROFUNDIDADE\" e barra \"MORPH 000%\"\n\n | Partículas\n | 12.000 pontos, posição por função do tempo e semente por índice; fases: vértices do nó → deriva → galáxia de dois braços → texto amostrado a cada 3 px → colapso; mistura aditiva, `gl_PointSize = size·62/−z`\n\n | Assinatura\n | \"CLAUDE\" com o ponto laranja e \"cada quadro deste reel é código.\" digitado com cursor\n\n | HUD\n | \"CLAUDE — SHOWREEL 2026\", \"160 BPM · 60 QPS · 1920×1080\", timecode em quadros, rótulo da cena (\"04 / PROFUNDIDADE\") e barra segmentada por cena; a cor troca com o fundo\n\n | Acabamento\n | grão determinístico (canvas de 256 px por hash) e vinheta radial até 55% nas bordas\n\n## Transições\n\n- A bola mergulha na câmera e vira o fundo laranja no drop (4,43 s).\n\n- As palavras se recolhem numa linha, a linha num ponto, e o ponto vira a grade.\n\n- A grade 2D é exatamente o campo de cubos visto de cima; a câmera inclina e os quadrados viram cubos sem corte.\n\n- Um chicote de câmera (13,18 s) leva dos cubos à parede MOVIMENTO.\n\n- A palavra da faixa central da parede alarga e se achata enquanto a parede sai, no bumbo das palavras com eco (16,45 s).\n\n- O zoom entra pelo miolo do \"O\" de \"VIVO.\" (centro medido no glifo) e abre a cena do cromo.\n\n- O nó se desfaz nas partículas; as partículas colapsam num ponto, que vira o ponto de \"CLAUDE.\".\n\n## Curvas e molas\n\n- **Mola padrão:** `spring(u) = 1 − e^(−7,5u)·cos(11u)`, com ~112% de pico e assentamento em ~0,6 s.\n\n- **Curva SAAS** (`bez(0.86, 0, 0.07, 1)`) na inclinação da câmera sobre os cubos.\n\n- **Zoom pelo \"O\":** escala em `exp(ln 90 · expo.in)`, desenhado no canvas.\n\n- **Rotação diferencial da galáxia:** `θ += t·0,9/(0,45 + 0,35r)`.\n\n- **Atraso por partícula** nas fases: `hash(i·7,7)·0,35`.\n\n## Câmera\n\n- 2D: deriva por ruído (±7 px na horizontal, ±5 px na vertical, ±0,22°) somada ao tremor de impacto.\n\n- Tremor: uma lista de impactos com amplitude própria (3 nos quiques, 16 no drop, 18 no \"CLAUDE.\") e decaimento `e^(−9d)` por 0,7 s.\n\n- 3D: a câmera do Three.js tem deriva própria, inclina sobre os cubos e faz o chicote em 13,18 s.\n\n## Trilha\n\n | \n\n | Item\n | Valor\n\n | Música\n | \"Bad Karma\" (Axel Thesleff)\n\n | Trecho\n | 71,84 a 103,34 s da faixa\n\n | Batida\n | a cada 0,75 s, medida com o `beat_this`\n\n | Drop\n | 4,43 s (a música salta de −19 para −8 dB)\n\n | Pausa\n | trecho filtrado de 22,5 a 28,4 s, usado nas partículas\n\n | Volta\n | 28,41 s, no \"CLAUDE.\"\n\n | Ducking\n | a música abaixa nos impactos de 4,43, 10,46, 16,45, 19,45 e 28,41 s e sai em fade a partir de 30,55 s\n\n## Sound design e mix\n\n | \n\n | Ação na tela\n | Efeito\n\n | quiques da bola\n | boing subindo 2 semitons a cada quique + impacto com passa-baixa\n\n | mergulho e drop\n | whoosh longo, riser, impacto, whoosh grave e Ping Boom em Fá (tonal)\n\n | palavras entrando\n | whooshes curtos, cliques e pops; glitch no \"CÓDIGO\"\n\n | ondas da grade\n | cliques e pops em cascata, subindo de tom e passeando no estéreo\n\n | cubos sobem e rolam\n | impacto, whoosh grave, carimbo abafado e cliques e teclas graves de rolagem\n\n | parede MOVIMENTO\n | whooshes curtos em cascata e boing grave abafado na batida\n\n | OUSADO., PRECISO., VIVO.\n | impacto + whoosh curto ou clique por palavra\n\n | nó de cromo\n | riser, impacto, whoosh grave, Ping Boom e sino grave; tinta no morph\n\n | partículas\n | grãos sintetizados com semente fixa (de 1,5 a 9 kHz), sino quando o texto se forma, whoosh invertido na sucção até o ponto\n\n | assinatura\n | impacto duplo + Ping Boom + pop e boing no ponto + teclas na frase digitada\n\n- 152 efeitos, cada um em `at = evento − pico` (pico medido no próprio arquivo). Na faixa só de efeitos, o ataque fica entre −60 e +30 ms do evento; os whooshes entram um pouco antes de propósito.\n\n- **Música a 0,55 e efeitos ×2,2.** Os efeitos nivelados vêm calibrados para ficar sob uma voz; sem voz, somem sob a música.\n\n- **Final:** limitador e `loudnorm` linear em duas passagens: −14,0 LUFS, pico −4,1 dBFS.\n\n## O que é \"humano\" neste vídeo\n\n- A bola tem gravidade, achata no chão e estica no ar; é ela que liga uma cena à outra.\n\n- As letras chegam esticadas, comprimem e assentam, como se tivessem massa.\n\n- A câmera nunca para e responde a cada pancada da música.\n\n- A pausa da música vira o momento mais calmo do vídeo, com as partículas girando em galáxia."
    },
    {
      "titulo": "A montagem no HyperFrames",
      "texto": "- **Instale o Node.js e o ffmpeg.** O HyperFrames roda pelo `npx`: `npx hyperframes@0.8.144`. Fontes e bibliotecas JavaScript já estão em `projeto/hf/assets/`, então nada vem da internet.\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 --fps 240 --workers 2 -q delivery`. Nesta cena com WebGL, 2 workers renderam mais rápido que 4 (10 contra 2,3 qps no PC do autor).\n\n- **Motion blur e áudio:** junte o master de 240 qps em 60 qps com `ffmpeg -i <master>.mp4 -i audio/mix-final.wav -filter_complex \"[0:v]tmix=frames=4:weights='1 1 1 1',fps=60,format=yuv420p[v]\" -map \"[v]\" -map 1:a -c:v libx264 -crf 19 -c:a aac -shortest final.mp4`.\n\n- **Refazer o som** (opcional): no `mix.py`, aponte as pastas `S2`, `PREM` e `TON` para `audio/sfx/` e rode `SFX_G=2.2 MUS_G=0.55 python mix.py` (precisa de numpy, soundfile e ffmpeg com rubberband). A saída é `mix-bruto.wav`; depois passe um limitador e o `loudnorm` em duas passagens até −14 LUFS.\n\n**Pegadinhas:** texto DOM escalado 90× estoura a GPU do Chrome (a tela fica branca por quase 2 s), então o zoom pelo miolo do \"O\" de \"VIVO.\" é desenhado no canvas 2D. No shader das partículas, `gl_PointSize = size·62/−z`: com 420 os pontos viram mancha branca, com 38 somem."
    },
    {
      "titulo": "As decisões de direção",
      "texto": "- **Uma peça só no lugar de duas metades.** O original colava dois reels com cartões de título parados e em silêncio; a recriação junta o melhor das duas metades numa peça contínua, que começa em movimento no quadro 0.\n\n- **A bola como protagonista.** O mesmo objeto quica na abertura, vira o fundo de \"CADA\", vira o acento do \"É\", rola sobre os cubos, sobra das partículas e pousa como ponto final de \"CLAUDE.\".\n\n- **Grade 2D que vira cubos 3D sem corte.** A câmera do Three.js começa olhando de cima, na altura em que o passo da grade bate com o pixel; os quadrados ganham sombra de extrusão e sobem como cubos no bumbo.\n\n- **Letra com peso.** Cada letra chega esticada, comprime e assenta (`scaleY = 1 + 0,32·(1 − mola)`, `scaleX = 1/√scaleY`).\n\n- **Eco em contorno.** OUSADO., PRECISO. e VIVO. ganham quatro cópias só de contorno que se abrem para cima e para baixo.\n\n- **Zoom através do \"O\"** de \"VIVO.\" leva à cena do cromo.\n\n- **Partículas que formam a frase.** O nó de cromo se desfaz em 12.000 pontos, que viram galáxia, escrevem \"CADA QUADRO / É CÓDIGO\" e colapsam no ponto laranja.\n\n- **Corte nos bumbos medidos** (4,43 · 7,46 · 10,46 · 13,45 · 16,45 · 19,45 · 22,48 · 28,41 s) e câmera que nunca para, com tremor em cada impacto.\n\n- **A pausa da música vira respiro:** as partículas ocupam o trecho filtrado de 22,5 a 28,4 s, e a música volta cheia no \"CLAUDE.\".\n\n- **Um som para cada elemento** (152 efeitos), mais grãos sintetizados com semente fixa no brilho das partículas.\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 | rascunhos v1–v3\n | montagem das cenas; na comparação com o original, o campo de cubos ficou chapado e estourado e foi refeito (pilares até 3,7 de altura, elevação de 0,44 rad, distância 16,5, ambiente sem painéis coloridos, exposição 0,92); uma revisão do áudio pediu mais volume nos cliques da grade e um som de rolagem nos cubos\n\n | **final**\n | render a 240 qps com motion blur para 60 qps, mix a −14 LUFS; é a versão entregue"
    }
  ],
  "pacote": [
    {
      "pasta": "projeto/hf/",
      "conteudo": "a composição (`index.html`), o `BRIEF.md`, `hyperframes.json`, `package.json` e `assets/` com as fontes (Archivo variável romana e itálica, JetBrains Mono) e o JavaScript local (GSAP, Three.js e o RoomEnvironment)"
    },
    {
      "pasta": "audio/",
      "conteudo": "`mix.py` (música com ducking nos impactos, os efeitos e os grãos sintetizados das partículas), `cues.txt` (a lista dos efeitos com tempo e volume), o trecho da música, a faixa só de efeitos, 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, os recortes de momentos, as folhas a 4 qps e as análises do áudio do original"
    },
    {
      "pasta": "render/",
      "conteudo": "`render.mp4`"
    },
    {
      "pasta": "T",
      "conteudo": "a tabela de tempos de cada evento (quiques, palavras, grade, cubos, parede, nó, partículas, assinatura)"
    },
    {
      "pasta": "hash(i)",
      "conteudo": "o acaso com semente; nada usa `Math.random`"
    }
  ],
  "prompt": "Quero fazer um showreel sem narração no mesmo estilo do projeto \"Cada quadro é código\", que está em 07-videos/projetos/codigo/, com a minha marca.\n\nMarca: {{MARCA}} (site: {{SITE}})\nA frase que as partículas escrevem: {{FRASE}} (na referência, \"CADA QUADRO / É CÓDIGO\")\nAs palavras de peso (três adjetivos com um complemento cada): {{PALAVRAS}} (na referência, OUSADO. / PRECISO. / VIVO.)\nO objeto protagonista: {{OBJETO}} (na referência, uma bola laranja; pode ser o símbolo da marca, um ponto, um produto simples)\nAssinatura final: {{ASSINATURA}}\nDuração aproximada: {{DURACAO}} (a referência tem 31,5 s, 9 cenas)\nFormato: {{FORMATO}} (a referência é 1920×1080; para reels, 1080×1920)\nMúsica: {{MUSICA}} (se vazio, sugira 3 faixas reais com bumbo marcado, um drop no começo e uma pausa no meio)\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/codigo/LEIA-ME.md, estilo.md e roteiro.md. Depois abra projeto/hf/index.html e veja a tabela de tempos T, as cenas SC e LABELS, o relógio por setter que chama renderAll(t), o tremor de câmera (IMP e shake), o campo de cubos, o nó de cromo e as partículas no Three.js; 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 codigo: copie o que for reaproveitar.\n\n3. Use as skills instaladas: animacao-saas (objeto protagonista, forma que vira a próxima, 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 logo em SVG, as cores do CSS e as fontes, e anote cada valor com a fonte num BRAND.md do projeto. Mantenha a lógica de quatro cores chapadas (um escuro, um claro e dois acentos saturados) e uma grotesca variável com eixo de largura para as palavras; se a fonte da marca não tiver esse eixo, use a Archivo variável e deixe a fonte da marca na assinatura.\n\n5. Antes de qualquer código, meça a música com o beat_this e me mostre o mapa: batidas, bumbos onde caem os cortes, o drop e a pausa. Uma técnica por cena, na ordem da referência ou adaptada ao meu assunto (comprimir e esticar → tipografia → grade → profundidade → ritmo → peso → material → partículas → assinatura). Para cada cena, diga onde o objeto protagonista aparece e de que forma a cena nasce da anterior. As partículas ficam na pausa da música e a assinatura entra na volta.\n\n6. Construa reaproveitando o esqueleto do index.html: um relógio só (renderAll(t) chamado por um tween), acaso por hash com semente, letra com peso (chega esticada, comprime e assenta), eco em contorno nas palavras de peso, grade 2D que vira cubos 3D com a câmera de cima na altura calculada, partículas com posição por função do tempo e a frase amostrada de um canvas, câmera com deriva e tremor por impacto. Zoom através de letra vai para o canvas 2D, nunca texto DOM escalado acima de ~10×. Troque cenas, textos, cores, fontes, objeto, material do 3D e música.\n\n7. Me mostre 4 quadros de teste (abertura, drop, partículas e assinatura) e a folha de contato a 4 qps antes do render final. Em cada movimento, pergunte: está humano ou robotizado? Compare também no tamanho do celular.\n\n8. Som em paralelo, num subagente: um efeito para cada elemento que entra ou sai, em evento − pico do arquivo, a mesma família de som para a mesma ação, um tonal no tom da música no drop, no 3D e na assinatura, e grãos sintetizados com semente fixa no brilho das partículas. Sem narração, música em ~0,55 e efeitos ×2,2; limitador e loudnorm em duas passagens a −14 LUFS. Confira a faixa só de efeitos.\n\n9. Render a 240 qps (em cena com WebGL, teste 2 workers) e junte em 60 qps com tmix de 4 quadros. Rode um detector de quadro vazio e de salto; 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",
    "DURACAO",
    "FORMATO",
    "FRASE",
    "MARCA",
    "MUSICA",
    "OBJETO",
    "PALAVRAS",
    "SITE"
  ],
  "fonte": {
    "nome": "Clube do Motion",
    "url": "https://clubedomotion.com/projeto/?id=codigo",
    "uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
  }
}