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

Clase 4 · 15 min

Sistema de marca y filosofía de movimiento: el DESIGN.md de tu video

Sin una regla escrita, cada pedido al agente trae un color nuevo y un movimiento distinto, y las piezas no parecen de la misma marca. El DESIGN.md es el archivo que el agente lee antes de componer: colores, fuentes, cómo se mueven las cosas y qué está prohibido. En esta clase escribes el tuyo y reprueba el color fuera de la marca con un comando.

Empezar la clase
Tarjetas de muestra de color (negro, gris, blanco y un amarillo) y un tipómetro de metal sobre una mesa oscura.

En esta clase vas a

  1. 1Las cuatro secciones: Cores, Tipografia, Movimento y Proibido
  2. 2Tokens: el color nace en el DESIGN.md y se vuelve variable CSS
  3. 3La filosofía de movimiento escrita como regla con número
  4. 4El verificador que atrapa el color que el agente inventó

Objetivo: escribir el DESIGN.md de tu video y comprobar que la composición usa solo los colores y las reglas de él.

01Del DESIGN.md a la composición

Haz clic en cada sección del archivo.

Haz clic en cada bloque del diagrama para ver qué hace.

Principios que valen para cualquier marca: una idea a la vez, luz en lugar de mucho color, el fotograma principal se sostiene antes de salir.

02Un DESIGN.md de ejemplo y la composición que lo obedece

El ejemplo usa la paleta oscura de INEMA. Cámbiala por los colores de tu marca, manteniendo las cuatro secciones.

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

Una frase: fondo oscuro y calmo, una idea a la vez, luz en lugar de color; el amarillo solo aparece en detalles.

## Cores
- fundo: #0c0c10
- superfície: #1c1c22
- linha: #3f3f47
- texto: #f4f4f5
- texto secundário: #a1a1aa
- destaque (solo detalle: un filete, un punto, el cabezal de lectura): #e9b949

## Tipografia
- Títulos: sans serif del sistema, peso 700, altura de línea 1,1, máximo 6 palabras.
- Apoyo: sans serif del sistema, peso 400, 48 px en 1920x1080.
- Ninguna palabra sola en la última línea.

## Movimento
- Entrada de 0,5 a 0,8 s con power2.out o power3.out; salida más corta que la entrada, con power2.in.
- Una cosa se mueve a la vez; la siguiente empieza cuando la anterior ya se asentó.
- Todo texto queda al menos 1,2 s quieto y legible.
- Nada a velocidad constante (ease "none" solo en barra de progreso).
- El fotograma principal (título o marca) se sostiene al menos 1,5 s al final.

## Proibido
- Color que no está en "Cores", neón, brillo fuerte, degradado de colores.
- Logo dibujado de memoria: logo solo del archivo de la marca.
- Math.random y Date.now en la composición.
Archivo · 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 del DESIGN.md: la composición solo usa estos colores */
      :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>
      // reglas del DESIGN.md: una cosa a la vez, entrada 0,5–0,8 s con power2/3.out, el título se sostiene hasta el final
      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>

03Verificar la marca con un comando

El conferir-design.py lee las cuatro secciones y busca, en la composición, todo color en hex que no esté en Cores.

Terminal · verificar el DESIGN.md y el 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 · el error: el agente "mejoró" el 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: $?"
Ejemplo del repositorio
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

El check de HyperFrames verifica el contraste (WCAG AA); el verificador del kit verifica la marca. Son compuertas distintas.

04Cómo usa el agente el archivo

Tres hábitos que hacen que el DESIGN.md valga.

1. Citar en la R

El pedido RISE empieza con "lee el DESIGN.md de esta carpeta" (clase 3).

Sin eso, el agente lo lee solo si se acuerda.

05Práctica

El ensayo, el error y el DESIGN.md de tu marca.

E1 · Marca verificada

5 min

Ejecuta el bloque "verificar el DESIGN.md y el check".

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

E2 · Color fuera de la marca

5 min

Ejecuta el bloque del error.

Listo cuando: FORA DA MARCA: #ff3366 (linha 9) y saída: 1.

E3 · El DESIGN.md de tu marca

20 min

Copia el ejemplo a tu proyecto de la clase 2, cambia los colores y las reglas por los de tu marca, y cambia los colores del :root del index.html por los mismos.

Listo cuando: python3 ~/projetos/formacao-cinema-ia-motion-v72/kit/conferir-design.py DESIGN.md index.html; echo "saída: $?" → empieza con OK: 4 seções y saída: 0.

06Prueba de la clase

La explicación aparece después de tu respuesta.

Pregunta 1 de 3

¿Qué regla de movimiento puede seguir el agente sin adivinar?

07En tres frases

Cuatro seccionesColores, Tipografía, Movimiento y Prohibido, con número y no con adjetivo.
TokensEl color nace en DESIGN.md y entra como variable CSS en la composición.
Compuerta de la marcaconferir-design.py junto con el check, antes de cada render.

Para ir más allá

Clase anteriorPróxima clase