Motion por código com agente|INEMA.CLUB-PRO

Aula 4 · 15 min

Sistema de marca e filosofia de movimento: o DESIGN.md do seu vídeo

Sem regra escrita, cada pedido ao agente traz uma cor nova e um movimento diferente, e as peças não parecem da mesma marca. O DESIGN.md é o arquivo que o agente lê antes de compor: cores, fontes, como as coisas se movem e o que é proibido. Nesta aula você escreve o seu e reprova a cor fora da marca com um comando.

Começar a aula
Cartões de amostra de cor (preto, cinza, branco e um amarelo) e um tipômetro de metal sobre uma mesa escura.

Nesta aula você vai

  1. 1As quatro seções: Cores, Tipografia, Movimento e Proibido
  2. 2Tokens: a cor nasce no DESIGN.md e vira variável CSS
  3. 3Filosofia de movimento escrita como regra com número
  4. 4O conferidor que pega a cor que o agente inventou

Objetivo: escrever o DESIGN.md do seu vídeo e provar que a composição usa só as cores e regras dele.

01Do DESIGN.md à composição

Clique em cada seção do arquivo.

Clique em cada bloco do diagrama para ver o que ele faz.

Princípios que valem para qualquer marca: uma ideia por vez, luz em vez de muita cor, o quadro principal segura antes de sair.

02Um DESIGN.md de exemplo e a composição que obedece

O exemplo usa a paleta escura do INEMA. Troque pelas cores da sua marca, mantendo as quatro seções.

Arquivo · kit/exemplos/a4-marca/DESIGN.md
# DESIGN.md — vídeo de exemplo (curso Motion por código, INEMA.CLUB)

Uma frase: fundo escuro e calmo, uma ideia por vez, luz em vez de cor; o amarelo só aparece em detalhe.

## Cores
- fundo: #0c0c10
- superfície: #1c1c22
- linha: #3f3f47
- texto: #f4f4f5
- texto secundário: #a1a1aa
- destaque (só detalhe: um filete, um ponto, a cabeça de leitura): #e9b949

## Tipografia
- Títulos: sem serifa do sistema, peso 700, altura de linha 1,1, no máximo 6 palavras.
- Apoio: sem serifa do sistema, peso 400, 48 px em 1920x1080.
- Nenhuma palavra sozinha na última linha.

## Movimento
- Entrada de 0,5 a 0,8 s com power2.out ou power3.out; saída mais curta que a entrada, com power2.in.
- Uma coisa se move por vez; a próxima começa quando a anterior já assentou.
- Todo texto fica pelo menos 1,2 s parado e legível.
- Nada em velocidade constante (ease "none" só em barra de progresso).
- O quadro principal (título ou marca) segura pelo menos 1,5 s no fim.

## Proibido
- Cor que não está em "Cores", neon, brilho forte, gradiente colorido.
- Logo desenhado de memória: logo só do arquivo da marca.
- Math.random e Date.now na composição.
Arquivo · kit/exemplos/a4-marca/index.html
<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=1920, height=1080" />
    <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
    <style>
      /* tokens copiados do DESIGN.md: a composição só usa estas cores */
      :root { --fundo: #0c0c10; --superficie: #1c1c22; --linha: #3f3f47; --texto: #f4f4f5; --texto2: #a1a1aa; --destaque: #e9b949; }
      * { margin: 0; padding: 0; box-sizing: border-box; }
      html, body { width: 1920px; height: 1080px; overflow: hidden; background: var(--fundo); }
      #root { width: 100%; height: 100%; position: relative; font-family: ui-sans-serif, system-ui, sans-serif; }
      #luz { position: absolute; inset: 0; background: radial-gradient(ellipse at 30% 45%, var(--superficie) 0%, var(--fundo) 65%); }
      #bloco { position: absolute; left: 220px; top: 340px; }
      #rotulo { color: var(--texto2); font-size: 40px; letter-spacing: 0.2em; text-transform: uppercase; }
      #filete { width: 120px; height: 6px; margin: 28px 0 32px; background: var(--destaque); transform-origin: left center; }
      #titulo { color: var(--texto); font-size: 128px; font-weight: 700; line-height: 1.1; }
      #base { position: absolute; left: 220px; right: 220px; top: 900px; height: 2px; background: var(--linha); transform-origin: left center; }
    </style>
  </head>
  <body>
    <div id="root" data-composition-id="main" data-start="0" data-duration="5" data-width="1920" data-height="1080">
      <div id="luz"></div>
      <div id="bloco">
        <p id="rotulo">Capítulo 2</p>
        <div id="filete"></div>
        <h1 id="titulo">A luz decide o tom</h1>
      </div>
      <div id="base"></div>
    </div>
    <script>
      // regras do DESIGN.md: uma coisa por vez, entrada 0,5–0,8 s com power2/3.out, título segura até o fim
      const tl = gsap.timeline({ paused: true });
      tl.fromTo("#base", { scaleX: 0 }, { scaleX: 1, duration: 0.8, ease: "power2.out" }, 0.2);
      tl.fromTo("#rotulo", { y: 20, opacity: 0 }, { y: 0, opacity: 1, duration: 0.5, ease: "power2.out" }, 0.8);
      tl.fromTo("#filete", { scaleX: 0 }, { scaleX: 1, duration: 0.5, ease: "power3.out" }, 1.2);
      tl.fromTo("#titulo", { y: 40, opacity: 0 }, { y: 0, opacity: 1, duration: 0.8, ease: "power3.out" }, 1.6);
      window.__timelines["main"] = tl;
    </script>
  </body>
</html>

03Conferir a marca com um comando

O conferir-design.py lê as quatro seções e procura, na composição, toda cor em hex que não está em Cores.

Terminal · conferir o DESIGN.md e o check
K=~/projetos/formacao-cinema-ia-motion-v72/kit
export HYPERFRAMES_NO_TELEMETRY=1 NO_COLOR=1
E=${TMPDIR:-/tmp}/ensaio-motion/a4; rm -rf "$E"; mkdir -p "$E"
cp -r "$K/exemplos/a4-marca" "$E/marca"; cd "$E/marca"
python3 "$K/conferir-design.py" DESIGN.md index.html; echo "saída: $?"
npx -y hyperframes@0.8.176 check 2>&1 | grep -E "Check passed|✗|WCAG"
Terminal · o erro: o agente "melhorou" o destaque
K=~/projetos/formacao-cinema-ia-motion-v72/kit
cd ${TMPDIR:-/tmp}/ensaio-motion/a4/marca
sed -i 's/--destaque: #e9b949/--destaque: #ff3366/' index.html   # o agente "melhorou" o destaque
python3 "$K/conferir-design.py" DESIGN.md index.html; echo "saída: $?"
Exemplo do repositório
OK: 4 seções · 6 cores · 5 regras de movimento · a composição usa só cores do DESIGN.md
saída: 0
  ◇ 7/7 text checks pass WCAG AA
◇  Check passed

O check do HyperFrames confere o contraste (WCAG AA); o conferidor do kit confere a marca. São portões diferentes.

04Como o agente usa o arquivo

Três hábitos que fazem o DESIGN.md valer.

1. Citar no R

O pedido RISE começa com "leia o DESIGN.md desta pasta" (aula 3).

Sem isso, o agente lê só se lembrar.

05Prática

O ensaio, o erro e o DESIGN.md da sua marca.

E1 · Marca conferida

5 min

Rode o bloco "conferir o DESIGN.md e o check".

Pronto quando: OK: 4 seções · 6 cores · 5 regras de movimento · a composição usa só cores do DESIGN.md, saída: 0 e ◇ Check passed.

E2 · Cor fora

5 min

Rode o bloco do erro.

Pronto quando: FORA DA MARCA: #ff3366 (linha 9) e saída: 1.

E3 · O DESIGN.md da sua marca

20 min

Copie o exemplo para o seu projeto da aula 2, troque as cores e as regras pelas da sua marca, e troque as cores do :root do index.html pelas mesmas.

Pronto quando: python3 ~/projetos/formacao-cinema-ia-motion-v72/kit/conferir-design.py DESIGN.md index.html; echo "saída: $?" → começa com OK: 4 seções e saída: 0.

06Teste da aula

A explicação aparece depois da sua resposta.

Pergunta 1 de 3

Qual regra de movimento o agente consegue seguir sem adivinhar?

07Em três frases

Quatro seçõesCores, Tipografia, Movimento e Proibido, com número e não com adjetivo.
TokensA cor nasce no DESIGN.md e entra como variável CSS na composição.
Portão da marcaconferir-design.py junto do check, antes de todo render.

Para ir além

Aula anteriorPróxima aula