E1 · Marca conferida
5 minRode 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.
Aula 4 · 15 min
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
Objetivo: escrever o DESIGN.md do seu vídeo e provar que a composição usa só as cores e regras dele.
Clique em cada seção do arquivo.
Princípios que valem para qualquer marca: uma ideia por vez, luz em vez de muita cor, o quadro principal segura antes de sair.
O exemplo usa a paleta escura do INEMA. Troque pelas cores da sua marca, mantendo as quatro seções.
# 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.
<!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>O conferir-design.py lê as quatro seções e procura, na composição, toda cor em hex que não está em Cores.
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"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: $?"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.
FORA DA MARCA: #ff3366 (linha 9) saída: 1
Uma linha basta para o rosa entrar no vídeo. O conferidor diz qual cor e em que linha, e sai com código 1 para travar o render num script.
Três hábitos que fazem o DESIGN.md valer.
O pedido RISE começa com "leia o DESIGN.md desta pasta" (aula 3).
Sem isso, o agente lê só se lembrar.
Rode o conferir-design.py junto do check, num script só.
Código 1 em qualquer um dos dois para tudo.
python3 conferir-design.py DESIGN.md index.html && npx hyperframes@0.8.176 check
Não gostou do amarelo? Mude no DESIGN.md e peça ao agente para aplicar.
Mudança feita direto numa peça some na próxima.
O ensaio, o erro e o DESIGN.md da sua marca.
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.
Rode o bloco do erro.
Pronto quando: FORA DA MARCA: #ff3366 (linha 9) e saída: 1.
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.
A explicação aparece depois da sua resposta.
Pergunta 1 de 3
Qual regra de movimento o agente consegue seguir sem adivinhar?
Pergunta 2 de 3
Por que as cores entram como variáveis CSS?
Pergunta 3 de 3
O check passou e o conferir-design.py reprovou. O que vale?
Escolha uma alternativa. A explicação aparece depois da sua tentativa.