# La lengua de pliegos: la especificación interna (MESA v2)

> La especificación completa de la lengua tal como la implementa la referencia: gramática, vocabularios, semántica, IR, lint, herramientas y todo lo que entró después (§3.10 a §3.20: el aspecto, el cartel, la imagen que oye, la cámara, el proyecto portable, la vida, la lengua que enseña, el 3D, la toma partida, los géneros y el fútbol).

URL: https://torculo.joseluissaorin.com/referencia/mesa · Revisado: 2026-10-16 · English: https://torculo.joseluissaorin.com/en/reference.md

Fuente: manim-saorín · SPEC-MESA-2.md (generada al construir la web).


**Época:** `MESA v2 beta` · **motor de referencia:** `manim-saorin 1.0.0b1`
**Revisión:** 2 (2026-08-04) · **estado:** normativa

---

## 0 · Alcance, conformidad y notación
### 0.1 · Qué es este documento
La especificación **formal y completa** del lenguaje `.mesa`: su léxico, su
gramática, sus vocabularios cerrados, la lógica con que se resuelve un
pliego, el IR que produce y las herramientas que lo operan.

Es un documento de **referencia**, no de historia. La historia está en
`CHANGELOG.md` y los planes en `PLAN-B.md`, `PLAN-C.md`, `MESA-C.md` y
`BETA-1.md`. Sustituye a `SPEC-MESA.md`, que había crecido como un changelog
con nombre de spec.

### 0.2 · Ley de autoridad
> **La documentación se enumera desde el parser, no desde la memoria.**

Todo vocabulario cerrado de §4 está copiado de la estructura que lo declara
en el código, y esa estructura aparece nombrada junto a la tabla. Si una
tabla y el código discrepan, **manda el código y este documento está roto**.
La tabla de precedencia (§5.2) se genera con `mesa por-que --tabla`.

Corolario operativo: **un vocabulario sin tabla en §4 no es un vocabulario
cerrado**, es un agujero. Los no terminales del EBNF que no tienen tabla
serían exactamente eso, y por eso §4 los cubre todos.

### 0.3 · Conformidad
Una implementación **conforme** debe:

1. aceptar todo pliego que esta especificación declara válido;
2. **rechazar con error toda palabra fuera de un vocabulario cerrado** (§4),
   sin extenderlo en silencio;
3. producir el IR de §6 con los campos marcados **obligatorio**;
4. aplicar la precedencia de §5.2 sin excepciones;
5. ser **determinista** en el sentido de §5.3.5.

No está obligada a renderizar: `mesa lee`, `mesa ir` y `mesa cuenta` son
conformes sin motor gráfico.

### 0.4 · Notación
EBNF con estas convenciones:

| forma | significa |
|---|---|
| `MAYÚSCULAS` | no terminal |
| `"literal"` | texto literal |
| `A \| B` | alternativa |
| `[A]` | opcional |
| `{A}` | cero o más |
| `TEXTO` | caracteres hasta fin de línea |
| `NL` | fin de línea |
| `IDENT` | identificador (§2.5) |
| `NÚMERO` | entero o decimal con punto, con signo opcional |

**Los literales se comparan NORMALIZADOS** (§2.5): la forma canónica va sin
tilde y el comparador acepta las dos. En este documento las palabras clave se
escriben **acentuadas**, que es como se leen y como conviene escribirlas; el
código las guarda sin tilde. `ilustración` e `ilustracion` son la misma
palabra.

**Excepción, y es lingüística:** las **palabras reservadas** (§4.13) se
comparan **sin normalizar**, porque en castellano la tilde diacrítica
distingue palabras. `el` es un artículo reservado; **`él` es un nombre de
personaje perfectamente válido**. Igual `tu`/`tú`, `si`/`sí`, `mas`/`más`.

---

## 1 · Modelo conceptual
### 1.1 · Qué es un pliego
Un pliego es **un guion que se lee de arriba abajo como un texto** y del que
se deriva un vídeo. Si leerlo no es leer el vídeo, está mal escrito.

> **CONSTITUCIÓN ANTI-PARÁMETRO.** El pliego dice cuentas humanas y maneras;
> los números los pone el motor.

Esa ley **solo se sostiene porque los vocabularios son cerrados**, y los
vocabularios cerrados **solo son tolerables porque el motor deriva**. Las dos
cláusulas se sujetan la una a la otra: quita cualquiera y esto se convierte
en YAML con acentos.

### 1.2 · Los dos dialectos y el porcentaje pobre
| dialecto | quién lo escribe | ¿lleva cifras? |
|---|---|---|
| **pobre** | una persona | no |
| **revelado** | `mesa escribe`, `transpila.py`, modo réplica | sí, marcadas `(máquina)` |

**Porcentaje pobre** = líneas de dramaturgia sin cifras / totales. Un pliego
de autor sano vive **≥85 %**. `mesa lee` lo imprime.

**No cuentan** —y cada exención tiene su razón—:

- **las secciones** (§3.3): el taller es calibración de un oficio, y ahí los
  números son legítimos. *La constitución gobierna el pliego, no el taller.*
- **el cuerpo de un `ver:`**: `ver: votos — sí: 7 · no: 4` no declara un
  parámetro, **declara el dato que la visualización dibuja**. Penalizarlo
  sería castigar el único sitio donde los números SON el contenido.
- **los títulos de capítulo, los comentarios y el preámbulo de formato.**

### 1.3 · Los cuatro estratos y el proscenio
| estrato | vive | espacio | banda de z | ¿lo compone el resolutor? |
|---|---|---|---|---|
| `FONDO` | por secuencias | espacio-mesa | −60…−30 | no |
| `MUNDO` | hasta mutis o telón | suelo, marcas, ligaduras | −20…0 | no — relacional |
| `DOCUMENTO` | por frases | zonas y slots, con reserva | 1…100 | sí |
| `PROSCENIO` | mientras cruza | espacio-mesa | **101…200** | no |
| `ANOTACIÓN` | con su objetivo | el objetivo | 9000+ | no |

`BANDAS` en `mesa.py`.

El **proscenio** es lo que está entre la cámara y la escena: la rama que
cruza en primer término. Va **por encima del documento** —si no, cualquier
cartulina se dibuja sobre ella y la oclusión no ocluye— y **por debajo de la
anotación**, porque un subtítulo no está en la habitación: está sobre la
película.

La pertenencia se **infiere** del tipo y se corrige con una palabra
(`en el mundo:`, `en el documento:`).

### 1.4 · Unidades
```
PLIEGO
 └─ CAPÍTULO           unidad de página y de render (una Scene propia)
     └─ ESCENA          unidad de MUNDO (mundo persistente entre planos)
         └─ CLIP        unidad de tiempo — un beat, un plano
             └─ LÍNEA   unidad de acción
```

Los capítulos se renderizan **en paralelo**, así que la continuidad entre
ellos es **dato serializado** (`estado_entrada`, §6.2), nunca objetos vivos.

---

## 2 · Estructura léxica
### 2.1 · Codificación y líneas
UTF-8 sin BOM. Análisis **orientado a línea**: cada línea se clasifica por su
prefijo. Solo cruzan líneas los bloques de sección (§3.3) y `dentro:`
(§3.7.9). Las líneas vacías separan clips.

### 2.2 · Comentarios y digresiones
| forma | qué es | ¿llega al IR? |
|---|---|---|
| `// texto` | comentario técnico | no |
| `( texto )` | digresión de autor | sí, en `digresiones` |
| `~ deriva: texto` | encargo al motor | sí, en `derivas` |

### 2.3 · El separador `·`
El punto medio (U+00B7) separa campos. Es el único separador de campos.

### 2.4 · Las comillas latinas `« »`
El texto que va a pantalla se acota con `«…»` (U+00AB, U+00BB). Las comillas
rectas **no** son equivalentes.

### 2.5 · Identificadores y normalización
`IDENT` = letras (con acentos y `ñ`), dígitos y `_`. Las claves de sección
admiten espacios.

`normaliza()` en `formato/vocabulario.py`:

1. minúsculas;
2. espacios colapsados;
3. `_` ≡ espacio (`toca_la_truca` ≡ `toca la truca`);
4. **tildes fuera** — la forma canónica va sin tilde.

Y la excepción de §0.4: las palabras reservadas se comparan **sin
normalizar**.

### 2.6 · La marca `(máquina)`
Sufijo que declara que la decisión la tomó el motor. Afecta a
`autor_cabecera` y a `origen`; **no afecta al hash maestro** (§5.3.4).

---

## 3 · Gramática
### 3.1 · El documento
```ebnf
PLIEGO   = PREÁMBULO { CAPÍTULO } [ FIN ] ;
PREÁMBULO = { LÍNEA-PREÁMBULO | SECCIÓN | COMENTARIO } ;
CAPÍTULO = CAB-CAPÍTULO { LÍNEA-UNIDAD | SECCIÓN } { ESCENA | CLIP } ;
ESCENA   = CAB-ESCENA { LÍNEA-UNIDAD | SECCIÓN } { CLIP } ;
CLIP     = CAB-CLIP { LÍNEA-CLIP } ;
FIN      = "==" "FIN" { "=" } { TEXTO } [ ">" "silencio" NÚMERO ] ;
```

**`LÍNEA-UNIDAD` es la misma en capítulo y en escena** (§3.5). Es lo que
antes se llamaba `LÍNEA-CAPÍTULO` en un sitio y `LÍNEA-ESCENA` en otro: eran
el mismo conjunto y tener dos nombres hacía que `ARCHIVO` a nivel de capítulo
funcionara por accidente.

**`SECCIÓN` es legal en los tres niveles** —preámbulo, capítulo y escena—,
que es lo que exige la precedencia de §3.3. Sin eso, la regla hablaría de un
construcción que la lengua no sabe expresar.

Un pliego sin ningún `==` es un **pliego servilleta** (§3.9).

### 3.2 · Preámbulo
```ebnf
LÍNEA-PREÁMBULO =
    "MESA" [ "v" NÚMERO ] TÍTULO
  | "formato" CAMPO { "·" CAMPO }
  | "ARCO" ARCO
  | "MOTIVO" CITA [ "—" TEXTO ]
  | "ECO" IDENT "→" IDENT
  | "REPARTO" IDENT ":" TAMBOR [ "," VOZ ] [ "," "alias:" ALIAS { "·" ALIAS } ]
  | "PERSONAJE" IDENT "—" TEXTO
  | "MUSICA" RUTA { "·" CAMPO-MEZCLA }
  | "LETRA" RUTA
  | "PYTHON" RUTA
  | "ARCHIVO" CLAVE { "·" CLAVE }
  | "FANTASMA" ( "foto" | "texto" | "numeral" ) NÚMERO
  | "RELOJES" IDENT NÚMERO
  | "SONIDO" TEXTO ;
```

`MESA v2 El puerto` declara la **época de la lengua**. Si el pliego pide una
mayor que la del motor, es error (§7.1).

`formato 16:9 · sala crema · tirada borrador` — `sala` ∈ {crema, pizarra};
`tirada` ∈ {borrador, definitiva}.

**El REPARTO es normativo para el diálogo** (§3.7.1): un hablante que no esté
declarado aquí o en `PERSONAJE` no es un hablante.

### 3.3 · Secciones
```ebnf
SECCIÓN       = BLOQUE | IMPORTACIÓN ;
BLOQUE        = "#" NOMBRE-SECCIÓN [ IDENT ] NL { LÍNEA-SECCIÓN } "#FIN" ;
IMPORTACIÓN   = NOMBRE-SECCIÓN RUTA ;
NOMBRE-SECCIÓN = "TALLER" | "MANO" | "BESTIARIO" | "REPARTO"
               | "MONTAJE" | "CASCADA" ;
LÍNEA-SECCIÓN = FAMILIA [ VALOR ] { "·" CAMPO } ;
CAMPO         = CLAVE ( " " | ": " ) VALOR ;
```

> **LEY DEL ESPEJO.** Todo bloque escrito dentro del `.mesa` es **idéntico en
> gramática** al archivo que se importa en su lugar.
>
> **Invariante:** `efectivo(p) == efectivo(parte(p)) == efectivo(funde(parte(p)))`

Las claves de **varias palabras llevan dos puntos** (`por defecto: tijera`),
para sobrevivir a la ida y vuelta.

**Precedencia, única y sin excepciones:**

```
importado  <  inline del preámbulo  <  bloque de capítulo  <  bloque de escena
```

siempre por **herencia parcial**: una línea sobrescribe una línea.

**Estado de cada sección:**

| sección | estado |
|---|---|
| `TALLER` · `MANO` | **normativas** — §4.10, §4.11 |
| `BESTIARIO` · `REPARTO` | normativas — equivalen a `PYTHON` y a `REPARTO` del preámbulo |
| `MONTAJE` · `CASCADA` | **RESERVADAS** — §9.5 |

### 3.4 · Capítulo
```ebnf
CAB-CAPÍTULO = "==" TÍTULO { "·" ATRIBUTO-CAP } { "=" } ;
ATRIBUTO-CAP =
    "tensión" TENSIÓN | "nº" NÚMERO | "tambor" TAMBOR
  | "gigante" PALABRA | "plano fijo" PLANTILLA
  | "tramo" NÚMERO ("→"|"->"|"a") NÚMERO
  | "nocturno" | "diurno" ;
```

`plano fijo` toma una **plantilla** (§4.6), no una talla.

### 3.5 · Escena y líneas de unidad
```ebnf
CAB-ESCENA   = "--" TÍTULO [ "·" HORA ] "--" ;
LÍNEA-UNIDAD =
    "EJE" "de" IDENT "a" IDENT
  | "LUZ" DIRECCIÓN-LUZ { "·" ( DUREZA | "rasante" ) }
  | "MUNDO" MOVIMIENTO-MUNDO [ NÚMERO ] [ "·" SENTIDO ]
  | "FONDO" CLAVE { ARG } "·" LEJANÍA [ "·" NÚMERO ]
  | "DELANTE" CLAVE { ARG } [ "·" LEJANÍA ] [ "·" "cada" NÚMERO ]
  | "ESCENARIO" TEXTO
  | "ARCHIVO" CLAVE { "·" CLAVE } ;
```

- **`EJE`** es la regla de los 180°. De ella se derivan el lado de cada quien,
  la dirección de las miradas y por dónde entra quien salió por el opuesto.
- **`LUZ`** es **una sola por escena** y gobierna **todas** las sombras
  (§5.9).
- **`MUNDO`** — ver §4.9 y la nota constitucional de §5.6.
- **`FONDO`** monta multiplano: velocidad, color y z **se deducen** de la
  lejanía.
- **`DELANTE`** siembra oclusión en el **proscenio** (§1.3).

### 3.6 · Clip
```ebnf
CAB-CLIP   = "*" ( FUNCIÓN | PLANO-CINE ) [ "·" AFECTO ] [ "(máquina)" ] ;
PLANO-CINE = { TALLA | ALTURA | FRENTE | MODO } [ "de" [ ARTÍCULO ] IDENT ] ;
```

Dos lenguas, las dos legítimas:

```
* prueba · seco                              ← función dramatúrgica
* corto contrapicado de tercero · nervioso   ← plano de cine
```

Con función, la **plantilla** se deriva (§4.6). Con plano, se declara la
**talla**. Son **dos ejes distintos** y §4.5 explica por qué.

El artículo del sujeto se descarta: `general de la carretera` tiene por
sujeto `carretera`, no `la`.

### 3.7 · Líneas de clip
Se clasifican por prefijo, **y el prefijo gana siempre**. El orden dentro del
clip se respeta.

#### 3.7.1 · Contenido, voz y diálogo
```ebnf
  "di" [ "(" VOZ ")" ] ":" TEXTO
  HABLANTE ":" TEXTO
  "letrero" [ "(" REGISTRO-LETRERO ")" ] ":" TEXTO { "/" TEXTO }
  "terminal:" TEXTO
  "canta:" TEXTO
  "contenido (máquina):" TEXTO
  TEXTO                                   ← prosa: contenido del beat
```

`di:` es **la partitura del beat**: de su locución sale la duración.

**`HABLANTE` debe estar declarado** en `REPARTO` o `PERSONAJE`, y no puede
ser una palabra reservada (§4.13). Sin esa condición:

- `Y entonces: nada.` se parsearía como un personaje llamado «Y entonces»;
- un personaje llamado `nota` o `pie` eclipsaría una directiva.

Con ella, las dos cosas se resuelven y el diálogo hereda la voz del reparto.
Las **directivas se resuelven antes**, así que un hablante homónimo de una
palabra del parser no puede secuestrarla, y `mesa índice` lo dice.

#### 3.7.2 · Piezas
```ebnf
  "pon:" TIPO-PIEZA CITA { "·" ATRIBUTO-PIEZA }
  ( "foto" | "recorte" | "prensada" ) ":" CLAVE
  "ver:" CLAVE-VIS [ "—" CUERPO ]
  "pica:" CLAVE [ "en" NÚMERO ]
  "python:" NOMBRE { ARG }
  ( "arriba" | "pie" | "nota" ) ":" TEXTO
  "marca:" GESTO-MARCA CITA
```

`ATRIBUTO-PIEZA` ∈ { `NÚMERO` (cuerpo de letra o alto), `id RUTA`, `TAMBOR` }.

El cuerpo declarado tiene autoridad `declarado`, la primera de la dimensión
`tamaño` (§5.2).

#### 3.7.2b · Vídeo real
```ebnf
  "clip" [ " de fondo" | " mudo" ] ":" RUTA [ "de" TIEMPO "a" TIEMPO ]
TIEMPO = [ MM ":" ] SS
```

```
clip: peli.mp4 de 12:04 a 12:11
clip de fondo: mar.mp4
clip mudo: archivo.mp4 de 0:30 a 0:36
```

Un clip es un **recorte vivo**: entra como Polaroid con celo, sus fotogramas
corren al reloj de la escena y su audio se suma a la mezcla en su cronología
exacta. `de fondo` lo pone a pantalla completa, mudo, bajo el contenido;
`mudo` es un recorte sin audio.

> **UN CLIP DURA LO QUE DICE QUE DURA.**
>
> Un beat **no se cierra** mientras un clip suyo siga corriendo. Si el
> recorte declara doce segundos y la voz dura cuatro, el beat crece ocho
> —plano en silencio— en vez de cortar la película por la mitad. Lo que
> cede es la frase, no el plano. Vale para todos los clips, suenen o no.
>
> `mesa lee` lo dice antes de rodar: **`el beat se alarga`**, con cuántos
> segundos, para que la consecuencia de ritmo se vea en el pliego.

`> espera al clip` no solo retiene el beat: **le da el turno entero**.

> **Un letrero ABRE su beat; un clip que espera lo CIERRA.**

La narración del beat suena primero, se le deja un respiro de 0,30 s, y
**entonces** entra el clip y corre completo. Antes el clip arrancaba con
el beat y la voz seguía sonando encima del diálogo de la película: dos
voces a la vez —medido en un solo vídeo, **107 s de narración pisada**, y
en un caso las dos diciendo la misma frase—. El beat dura, por tanto,
`voz + clip`, no `max(voz, clip)`.

Mientras corre el clip, **la banda de subtítulos se retira**: lo que se
está diciendo lo dice el diálogo. La banda está exenta de la escoba, así
que sin esto se quedaba colgada la última frase de la narración durante
todo el clip.

> **LA REALIDAD NO SE REVELA.** Un clip **nunca** pasa por el cuarto oscuro:
> no lleva semitono, ni duotono, ni troquel de tijera. La materia del collage
> es papel; el vídeo real es una ventana, y tratarlo como papel lo convierte
> en un pegote.

#### 3.7.3 · Colocación
```ebnf
  "en" NÚMERO NÚMERO ":" LÍNEA-CLIP
  "en" PARTE-CUERPO "de" IDENT [ NÚMERO NÚMERO ] ":" LÍNEA-CLIP
  RELACIÓN OBJETIVO [ "a" NÚMERO ] ":" LÍNEA-CLIP
  RELACIÓN "cada uno:" IDENT TEXTO
  "juntos:" LISTA "—" DISPOSICIÓN
  ( "en el mundo" | "en el documento" ) ":" LÍNEA-CLIP
```

`RELACIÓN` ∈ `bajo · sobre · junto a · delante de · detrás de`

> **LEY DEL CUERPO.** Casi nada va en coordenadas: la piedra va delante de
> **sus** pies. Traducirlo a coordenadas absolutas deja todo en el centro.

#### 3.7.4 · Verbos de escena y mutación
```ebnf
  IDENT "con vista" VISTA
  IDENT "se encaja en" HUECO | "en sus huecos:" LISTA
  "recoge" IDENT | "clava" IDENT "en" IDENT
  ( "recorta" | "dobla" | "tapa" | "traslada" ) CITA [ … ]
```

#### 3.7.4b · `TABLAS` — el teatro de papel como decorado quieto
```ebnf
  "TABLAS" { "·" ( HORA | "suelo" NUM | "a sangre" | "ancho" NUM
                 | "alto" NUM ) }
  "FONDO" CLAVE "·" LEJANIA
  "retira:" ( "el escenario" | "las tablas" | "el teatro" )
```

`FONDO x · a media distancia` está hecho para un **viaje** —capas que
desfilan— y aplasta y tiñe cualquier cosa que no sea una tira de paisaje.
Un patio no desfila: se monta con `TABLAS`, que arma un **diorama**
—capas por lejanía, marco de tijera, sombra propia, el papel de la página
alrededor— sobre el que actúan los títeres.

La `HORA` **tiñe, no apaga**: una noche de papel es la misma página con
una cera azul encima, no un fundido a negro. Y las luces que expone cada
decorado (`.luces`) se levantan **por encima** del velo, porque en un
collage la ventana encendida es un papel claro pegado sobre la cera azul,
no debajo.

**Quien tiene pies se planta en el suelo.** Un títere se posa por sus
`_pies`, no por el centro de su grupo, y la escala del escenario se le
aplica una sola vez. Sin eso los actores flotaban un palmo por encima de
las tablas.

**`retira: el escenario` baja el telón.** Un escenario es persistente por
diseño —ni la escoba ni `> barre` lo tocan, y así tiene que ser mientras
se actúa encima—, pero no había forma de decir «ya»: el cuarto del niño
se quedaba cuatro beats después de irse el niño, tapando lo que venía
detrás.

#### 3.7.4c · `mapa:` — la tesis como diagrama que crece
```ebnf
  "mapa:" ORDEN-MAPA
  ORDEN-MAPA = "territorio" CITA { "·" ( "con" LISTA | "grande"
                                        | "en" LUGAR ) }
             | "línea desde" CITA [ "hacia" CITA ]
             | "la línea de" CITA "llega a otro igual"
             | "la línea de" CITA "se hunde"
             | "la línea de" CITA "vuelve"
             | "conecta" CITA { "·" CITA }
             | "el círculo se abre"
             | "mira a" CITA
             | "en fila abajo" | "en columna izquierda"
             | "se va" ;
```

Un vídeo-ensayo sobre Deleuze y Guattari tiene cuatro conceptos que son
figuras: el **territorio** (un recinto), la **línea de fuga** (sale del
recinto por donde no había puerta), la **reterritorialización** (la línea
llega a otro recinto: idéntico si es relativa, nuevo si es absoluta) y la
**abolición** (la línea se enrosca en un agujero que se lo traga todo).
`mapa:` los dibuja como UN diagrama que vive en la mesa y crece; cada
orden es una animación de un par de segundos.

- **Sobrevive al render por capítulos**: el compilador guarda las órdenes
  de los capítulos anteriores y el intérprete las reproduce sin animar al
  arrancar. «La línea de Iván llega a otro igual» en el capítulo 11
  encuentra al Iván que nació en el 10.
- **Reserva su caja cada beat**: los clips no aterrizan encima.
- `grande` es para el territorio protagonista (cuando el mapa es lo único
  que hay que mirar); `en columna izquierda` deja la página de la derecha
  libre para la película.

#### 3.7.4d · Las transiciones
```ebnf
  "> capítulo" CITA
  "> el clip se agranda y se va"
```

`> capítulo «…»` vacía la mesa, pone el título solo —serifa sobre banda
rasgada, filete rojo— y suena la página; se sostiene lo que se tarda en
leerlo. `> el clip se agranda y se va` espera a que el último recorte
termine, lo crece al lienzo, lo sostiene, lo retira y deja un segundo de
página vacía. Las dos existen porque «hay que marcar mucho más las
transiciones, en imagen y en sonido».

#### 3.7.5 · Movimiento
```ebnf
MOVIMIENTO = [ COLOCACIÓN ":" ] [ ARTÍCULO ] SUJETO VERBO-MOV [ DESTINO ]
             { "·" ( [ "por" ] TRAYECTO | MANERA | GRANULADO ) }
             [ VENTANA ] ;
```

> **SE RECONOCE POR EL VERBO**, no por llevar sufijos. `VERBO-MOV` es
> vocabulario cerrado (§4.7) precisamente para poder decidirlo aquí.
>
> Si se reconociera por los sufijos, `la piedra rueda hasta el borde` —sin
> adornos— no sería un movimiento: caería a prosa y **se imprimiría en
> pantalla como texto del narrador**. Es el peor fallo del sistema (§9.2) y
> era alcanzable por su función más nueva.

> **LEY DEL MOVIMIENTO.** La curva **no se declara: se deduce** de la
> materia, la mano, el afecto y la manera. **No hay easing, ni keyframes, ni
> Bézier, ni `rate_func` en el pliego.**

**El oficio de Lasseter es el comportamiento por defecto** (`oficio.py`).
Los principios de «Principles of Traditional Animation Applied to 3D
Computer Animation» (Lasseter, 1987) los pone el motor en cada verbo de
movimiento, sin que el pliego escriba un número:

| principio | qué hace el motor | quién lo modula |
|---|---|---|
| entrada y salida lentas | la curva deducida se suaviza en los dos extremos; **nunca es lineal** | la manera (`de golpe` conserva brusquedad) |
| anticipación | retrocede por el mismo camino antes de salir, **proporcional a la velocidad** | `con anticipación` la fuerza; `de golpe` la quita |
| arcos | sin trayecto, el verbo lo decide (`salta` → en arco, `vuela` → en curva, `cae` → cayendo…); si tampoco, un arco suave hacia arriba. Nada se sale de la hoja por el camino | el trayecto escrito manda; `recto` es recto |
| estirar y encoger | se estira a lo largo de la marcha **conservando el área**; al aterrizar (`cae`, `salta`, `rebota`) se aplasta y vuelve | la velocidad y la materia (lo rígido cede la mitad); un texto anclado a su papel no se deforma |
| acción continuada | se pasa del destino y vuelve oscilando; se inclina contra la marcha | la masa clava, el rebote y el cimbreo se pasan |
| acción superpuesta | las partes de un grupo (`juntos:`) salen escalonadas, cada una tirando de la siguiente como un **muelle amortiguado**; con más partes que `simultaneos_maximos`, la cadena se tensa en cascada y nunca hay más de tres moviéndose a la vez | — |
| tiempo | la duración sale de la distancia y la manera, nunca por debajo de los fotogramas mínimos del canon | la manera |
| pausa viva | lo que se ha movido **respira** (deriva mínima sembrada): nunca un fotograma congelado | `> deja posar` la alarga |
| exageración | todos los factores ×1,25 | canon de Tórculo (`OFICIO.exageracion`) |

Los números son los del canon de Tórculo (`~/Developer/torculo/canon/gen/canon.py`,
sección `OFICIO`) y, si no está, la copia de `oficio._OFICIO_BASE`, que es
la misma. **El mutis en tanda** (`retira_juntas`) también anticipa: se
carga hacia dentro y se va acelerando.

**El registro `en dos`.** Lo dibujado se anima a la mitad de fotogramas
con las poses retenidas, como la animación tradicional. Se escribe como
sufijo de un movimiento (`la pluma flota hasta el suelo · a la deriva · en
dos`) o en la línea de propiedades del preámbulo (`formato 16:9 · sala
crema · en dos`) para todo el pliego. La película real, el hervor y los
updaters siguen a unos.

> Lo que va detrás de un `·` en una línea de movimiento es **trayecto,
> manera, granulado, registro o ventana** (`hasta decir`, `mientras`).
> Cualquier otra palabra es **error** (§7.1): antes se ignoraba en silencio.

#### 3.7.6 · Cámara y cine
```ebnf
  "la truca" ORDEN-TRUCA [ IDENT ] [ "en" TALLA ]
  IDENT "mira a" IDENT
  [ ARTÍCULO ] IDENT ( "sale" | "entra" ) "por la" LADO
  "sonido:" CRUCE-SONIDO [ NÚMERO ]
  "fuera de campo" [ "por la" LADO ] ":" TEXTO
  [ "el" ] "foco" ( "en" | "pasa a" ) IDENT | "todo en foco"
  IDENT "está" TEXTO                       ← estado, para el raccord
```

`mira a` admite un objetivo **fuera del encuadre**: es el truco del
plano/contraplano. `foco` **no es blur**: es densidad de tinta, nitidez de
canto y sombra (§5.9.2).

#### 3.7.7 · El viaje
```ebnf
  IDENT "viaja" | IDENT "se apea"
  "el mundo" MOVIMIENTO-MUNDO [ NÚMERO ]
  "por la ventanilla:" LISTA "desfilan"
  "por" VENTANA-DE "de" IDENT "se ve el mundo"
```

#### 3.7.8 · Eventos
```ebnf
EVENTO = ">" NOMBRE-EVENTO [ ARG ] { "·" ">" NOMBRE-EVENTO [ ARG ] } ;
```

`NOMBRE-EVENTO` es vocabulario cerrado **con estado** (§4.8): un evento
puede estar `vivo` o `reservado`, y el lint lo dice.

#### 3.7.9 · Anidamiento y concurrencia
```ebnf
  "dentro:" NL { LÍNEA-CLIP }        ← sub-clips; máximo 3 niveles
  "mientras:" LÍNEA-CLIP
  "al decir" CITA ":" LÍNEA-CLIP
  LÍNEA-CLIP "hasta decir" CITA
```

### 3.8 · FIN · 3.9 · La servilleta
```
== FIN ====================
texto del colofón
> silencio 3
```

Un archivo **sin ningún `==`** es prosa pura: cada frase es un clip y el
dramaturgo decide lo demás. Es el punto de entrada y **debe funcionar
siempre** — §9.3 le exige un pliego de prueba.

---

## 4 · Léxico: los vocabularios cerrados
> **LEY.** Si una palabra no está en su lista, es un **error**, no una
> extensión silenciosa.

### 4.1 · Afectos (8) · `vocabulario.AFECTOS`
```
contenido · eufórico · exhausto · juguetón · nervioso · seco · sereno · solemne
```

### 4.2 · Funciones (11) · `vocabulario.FUNCIONES`
```
apertura · cartel · contrapunto · digresión · eco · giro · ilustración
prueba · remate · respiro · tesis
```

### 4.3 · Tensiones (4) y arcos (6)
`vocabulario.TENSIONES` · `vocabulario.ARCOS`

```
sube · mantiene · cae · rompe

espiral · letanía · pregunta→respuesta · ruina
tesis→antítesis→síntesis · viaje y vuelta
```

### 4.4 · El plano de cine · `continuidad.TALLAS · ALTURAS · FRENTES · MODOS`
| eje | valores |
|---|---|
| **talla** (7) | `general · conjunto · medio · americano · corto · primer · detalle` |
| **altura** (5) | `nadir · contrapicado · normal · picado · cenital` |
| **frente** (5) | `frontal · tres cuartos · perfil · escorzo · espalda` |
| **modo** (3) | `cartel · documento · mundo` |

Las **tallas están ordenadas**: la distancia entre dos es su número de
escalones. `Mesa.ENCUADRES` da la escala y el ritmo de cada una y **debe
coincidir exactamente con `TALLAS`, en el mismo orden** — es requisito de
conformidad.

### 4.5 · Plantillas y tallas son DOS EJES
`vocabulario.PLANTILLAS` (8):

```
documento · primerísimo · general · mapa · contraplano · orla · nocturno · cartel
```

**No son tallas.** Una **talla** dice cuánto ocupa el sujeto en el encuadre;
una **plantilla** dice **dónde caen las piezas en la hoja**. Comparten una
sola palabra, `general`, y `primerísimo` no es `primer`.

Consecuencias normativas:

1. `PLANO_DE` (§4.6) mapea funciones a **plantillas**, no a tallas.
2. **`SALTO DE TALLA` (§7.2) solo se evalúa cuando los dos planos consecutivos
   declaran talla.** Entre plantillas no hay escalones que contar, y el lint
   no debe inventarlos.
3. `plano fijo` (§3.4) toma una plantilla.

### 4.6 · Mapa función → plantilla · `vocabulario.PLANO_DE`
| función | plantilla |
|---|---|
| apertura | orla |
| remate · giro | primerísimo |
| respiro | general |
| ilustración · contrapunto | contraplano |
| digresión | mapa |
| tesis · prueba · eco | documento |
| cartel | cartel |

### 4.7 · Los verbos de movimiento · `movimiento.VERBOS` (24)
```
baja · cae · camina · corre · cruza · entra · esquiva · flota · gira
rebota · resbala · rueda · sale · salta · se apea · se encaja · se levanta
se sienta · sube · tiembla · tropieza · va · viaja · vuela
```

Cada uno declara si **gasta ventana propia** y si **admite destino**.
`viaja` no gasta ventana: monta en el reloj del mundo.

**Relacionales** (11) · `movimiento.VERBOS_RELACIONALES` — actúan sobre otra
cosa y crean **ligadura viva con muerte conjunta**; el ciclo es error (§7.1):

```
agarra · alcanza · arrastra · cuelga · empuja · esquiva · huye · orbita
se apoya · sigue · suelta
```

Cada relacional declara su preposición (`sigue a`, `huye de`, `se apoya en`).

### 4.8 · Los eventos, con su estado · `vocabulario.EVENTOS` (78)
**Todos vivos.** Los 19 de siempre:

```
amanece · anochece · barre · barrido · capítulo · congela · continúa
cruza el eje · deja posar · dura · el clip se agranda y se va · empapela
espera al clip · gigante · queda · respira · salta · seco · silencio
```

`> deja posar` es **la pausa viva** del oficio (§3.7.5): lo último que se
ha puesto en el beat respira y la mesa espera a que se asiente
(2 × `pausa_fin_beat` del canon). El beat crece lo que dura el asiento.

**Los 14 que eran reservados, vivos desde RADIOINTERMISIÓN** (§3.10.6),
con `transicion.wgsl` de la biblioteca de materias:

```
a la vez · chasquido · corta · corta en la acción · cortinilla de tijera
encadena · entra de golpe · funde a blanco · funde a negro
funde desde negro · la mano tapa · pasa página · retención larga · se sostiene
```

**Los nuevos de RADIOINTERMISIÓN** (§3.10), por familias:

```
transiciones   funde desde blanco · iris · se quema · desenfoque de pasada · sintoniza
cámara         zoom de golpe [a «X»] · barrido a la izquierda | a la derecha |
               hacia arriba | hacia abajo · plano holandés [a la izquierda |
               a la derecha] · temblor · cámara lenta · velocidad normal ·
               congela la imagen · se para en seco · arranca de golpe ·
               fotograma en blanco · la cámara vuelve · la cámara no para ·
               la cámara va pegada a «X»
materia viva   se moja · se seca · se lava · florece [TAMBOR] [en «X»] · se teje ·
               la tinta lo cubre todo [TAMBOR] · se rasga el papel y asoma «ESCENA» ·
               asoma «ESCENA» en el hueco
espejo         se rompe el espejo · vuelve el espejo · se parte la pantalla ·
               se junta la pantalla
formato        formato 4:3 | 16:9 | 2,39:1 [· de televisión]
simultaneidad  simultáneo en rejilla | en abanico | en abanico que gira · un solo plano
río            río tipográfico [en fila | en libertad | a pantalla completa] ·
               revienta «palabras»
montaje        montaje al ritmo de las palabras · montaje al pulso ·
               el montaje se acelera · mezcla los registros «A» · «B»…
voz            la voz se vuelve radio
```

> Declarar el estado es la ley de las tres sedes (§9.2) aplicada a sí misma.
> **`mesa lee` avisaría de un reservado**; hoy no queda ninguno.

Cuatro eventos se copian además a un campo propio del clip
(`vocabulario.EVENTO_A_CAMPO`), porque otra pasada los lee de ahí:
`salta`, `cruza el eje`, `congela`, `continúa`. **Las dos primeras son las
vías de escape de los avisos de continuidad**, y sin esa copia la escapatoria
documentada no funcionaba.

### 4.9 · Trayectos (16), maneras (15), granulados (4), registros (1)
`movimiento.TRAYECTOS · MANERAS · REGISTROS` · `taller.GRANULADOS`

```
TRAYECTOS
  recto · en arco · en curva · a saltos · en zigzag · rodando · girando
  cayendo · flotando · resbalando · rebotando · por el camino · por el borde
  por el suelo · en espiral · fuera de campo

MANERAS
  de un tirón · a tirones · despacio · titubeante · resuelto · pesado
  ligero · rozando · en volandas · sin ganas · de golpe · con cuidado
  a regañadientes · a la deriva · con anticipación

GRANULADOS
  a unos (1) · a doses (2) · a treses (3) · a pulso (irregular sembrado)

REGISTROS
  en dos
```

`de golpe` significa además **sin anticipación** (el énfasis no avisa);
`con anticipación` la fuerza aunque el gesto sea lento. `a la deriva`
estaba en el ejemplo de `movimiento.py` y en pliegos de verdad sin estar en
la lista: era un agujero del vocabulario, no una palabra inventada. Las
maneras se comparan normalizadas (§0.4): `con anticipacion` vale.

### 4.10 · Los vocabularios menores · `vocabulario.*`
| vocabulario | valores |
|---|---|
| `ORDEN_TRUCA` (9) | `viaja con · sigue a · busca a · encuadra a · se acerca a · se acerca · sube · baja · se queda` |
| `GESTO_MARCA` (4) | `subraya · rodea · tacha · señala` |
| `DISPOSICIONES` (8) | `en fila · en fila holgados · en columna · en corro · en abanico · como flores · amontonados · en rejilla` |
| `PARTES_CUERPO` (7) | `los pies · la cabeza · las manos · el pecho · la espalda · el hombro · el regazo` |
| `REGISTROS_LETRERO` (6) | `rescate · mano · cartulina · cita · cita máquina · cita moderna` |
| `REGISTROS_LETRERO_RESERVADOS` (3) | `máquina · dymo · tira` — la lengua los acepta y hoy caen al párrafo; `mesa lee` avisa |
| `DIRECCIONES_LUZ` (5) | `de la izquierda · de la derecha · de frente · de atrás · cenital` |
| `DUREZAS` (2) | `dura · blanda` |
| `SENTIDOS` (2) | `de frente · de espaldas` |
| `LADOS` (4) | `izquierda · derecha · arriba · abajo` |
| `HORAS` (5) | `diurna · nocturna · amanece · atardece · mediodía` |
| `MOVIMIENTO_MUNDO` (4) | `avanza · acelera · frena · para` |
| `VOCES` (6) · `sonido.VOCES` | `narrador · cita · cita_f · cita_f2 · cita_f3 · cita_m2` |
| `CRUCE_SONIDO` (4) | `adelanta` (corte J) · `retiene` (corte L) · `dentro` · `fuera` |
| `LEJANÍAS` (8) · `viaje.LEJANIAS` | `al pie · al paso · cerca · a media distancia · lejos · al fondo · en el horizonte · en el cielo` |
| `REGISTROS` (4) · `materia.REGISTROS` | `recorte · pintado · fotográfico · tinta` |
| `ANCLAS` (5) | `bordado · celo · chincheta · esquineras · washi` |
| `TAMBORES` (7) | `ámbar · bermellón · naranja · rosa · ultramar · verde · violeta` |

### 4.11 · El taller y la mano
**Familias del taller** · `taller.TALLER_BASE`:

| familia | declara |
|---|---|
| `papel` | tono · grano · canto · sangra |
| `tinta` | hierve · sangra |
| `canto` | por defecto ∈ tijera, cuchilla, rasgado, quemado, ninguno |
| `ancla` | por defecto y repertorio |
| `sombra` | dureza · dx · dy · alfa |
| `materia <nombre>` | masa · arrastre · rebote · cimbreo · foley |
| `vida` | escoba · resurrección |
| `bano` | grano · temperatura |
| `fantasma` | foto · texto · numeral |
| `reticula` | ancho · celda |

**Claves de la mano** · `taller.MANO_BASE`:

| clave | valores |
|---|---|
| `pulso` | poco · normal · mucho |
| `precisión` | alta · media · baja |
| `granulado` | §4.9 |
| `entra` | resuelta · titubeante · de golpe |
| `sale` | sin prisa · seca · arrastrando |
| `cansa` | nada · poco · mucho |
| `toca la truca` | sí · no |

**Escala de cuentas humanas → número** (`taller.escala`), en un solo sitio:

```
nada/nula 0.0 · poco/poca 0.33 · normal/media/medio 0.55
mucho/mucha/alta 1.0 · baja 0.15
```

### 4.12 · Piezas y sustratos: dos taxonomías, y cómo se relacionan
**`TIPO-PIEZA`** (8) — lo que `pon:` acepta y el compilador emite:

```
cartulina · dymo · mano · python · rescate · sello · texto · tira
```

**`SUSTRATOS`** (14) · `pieza.SUSTRATOS` — de qué está hecha una pieza:

```
papel · tira · cartulina · postit · vegetal · acetato · foto · periódico
pijama · milimetrado · kraft · dymo · ficha · polaroid
```

**No son la misma lista y no deben serlo.** Un `TIPO-PIEZA` es un **papel
dramatúrgico** («esto es un rescate», «esto es un letrero Dymo»); un
`SUSTRATO` es una **propiedad física** (color base, opacidad, grosor de
sombra, foley al posarse). Se relacionan así:

- todo `TIPO-PIEZA` **resuelve** a un sustrato: `rescate`→`papel`,
  `sello`→`cartulina`, `texto`→`papel`, `mano`→`papel`, y los homónimos
  (`cartulina`, `tira`, `dymo`) a sí mismos;
- los sustratos que **no** son tipos (`postit`, `vegetal`, `acetato`, `foto`,
  `periódico`, `pijama`, `milimetrado`, `kraft`, `ficha`, `polaroid`) se
  alcanzan desde el taller (`materia <nombre>`) o desde la capa Python, no
  desde `pon:`.

### 4.13 · Palabras reservadas · `vocabulario.PALABRAS_RESERVADAS` (76)
Las palabras que abren línea en el parser más los artículos y preposiciones.
**No pueden ser el nombre de un hablante** (§3.7.1) ni un identificador
(§7.1). Se comparan **sin normalizar** (§0.4): `él` no es `el`.

### 4.14 · El catálogo `ver:` (68) · `visualizaciones.CATALOGO`
```
alfiler · ancla · arbol · balanza · barras · brujula · bucle · cadena · caja
cancelacion · ciclo · comparacion · constelacion · convergencia · cuadrante
cuenta · curva · dado · diana · dispersion · distribucion · domino · ecuacion
ejes · embudo · engranaje · escalera · espectro · espiral · flecha de proceso
fraccion · globo · grieta · huella · interruptor · isla · jerarquia · laberinto
linea temporal · lista tachada · lupa · mapa · medidor · moneda · monton
multitud · onda · orbita · papeleta · pendulo · pila · ping pong · porcentaje
proceso · puente · recorrido · red · reloj · resta · semaforo · suma · telarana
teorema · termometro · titere · venn · versus · votos
```

El **cuerpo** tras `—` es el dato que la visualización dibuja, y por eso
queda exento del porcentaje pobre (§1.2).

---

## 5 · Semántica
### 5.1 · Las cinco leyes
1. **La constitución anti-parámetro.**
2. **Cierre**, en el sentido de §5.10.
3. **La identidad es la semilla.**
4. **Lo que no cabe en la hoja no se lee.**
5. **La lejanía manda** sobre velocidad, color y z de todo estrato.

### 5.2 · La tabla de precedencia
Gana el de la izquierda. Fuente única: `precedencia.DIMENSIONES`; se imprime
con `mesa por-que --tabla`.

| dimensión | orden de autoridad |
|---|---|
| **sitio** | mano → ligadura → cuerpo → slot → compositor → semilla |
| **z** | estrato → proscenio → llegada |
| **tamaño** | **declarado** → mano → identidad → papel → legibilidad |
| **tiempo** | partitura → ventana → tope → gesto |
| **fondo** | orden de la mano → escena → capítulo → carácter |
| **velocidad de estrato** (`velocidad_estrato`) | lejanía → **orden del mundo** |
| **color de estrato** (`color_estrato`) | lejanía → archivo → paleta |
| **curva** | manera → materia → mano → afecto |
| **sombra** | luz *(la dice la escena, nunca la pieza)* |
| **nombre** | **exacto → alias → texto exacto → texto difuso** |

Todo decisor devuelve `(valor, razón)` o `None`; la razón es obligatoria por
firma. Las autoridades son vocabulario cerrado
(`precedencia.AUTORIDADES`, 34).

**La dimensión `nombre`** existe porque §7.1 declara error el empate «en el
mismo nivel de resolución»: los niveles existían y no estaban en ninguna
tabla. Para un documento cuya tesis es que ninguna precedencia vive en un
comentario, era la que no vivía en ningún sitio.

### 5.3 · Identidad, semilla y determinismo
#### 5.3.1 · La identidad
```
identidad = ruta declarada (`id portada/fabula`)
          | ruta derivada  (`capítulo/escena/texto`)
```

Se calcula del **contenido**, nunca de la posición. Un índice `#n` solo
desempata piezas literalmente idénticas, y el desempate es local.

#### 5.3.2 · La semilla
```
semilla_pieza = H(identidad) ⊕ H(toma)
```

La **identidad** gobierna lo que debe verse siempre igual; la **toma**
gobierna la materia. `--toma 3` da **otra interpretación de la misma
película**: mismo número de planos, misma duración, distinta materia.

#### 5.3.3 · Prohibiciones de siembra
Ninguna semilla puede depender del orden de render o de creación, de `id()`
de Python, del proceso, del reloj ni del sistema de archivos.

#### 5.3.4 · El hash maestro
Se calcula sobre el pliego **desnudado y canonicalizado**: espacios
normalizados, comentarios y digresiones fuera, secciones resueltas, marcas
`(máquina)` retiradas. Consecuencia: escribir de vuelta no cambia la semilla.

#### 5.3.5 · El contrato de determinismo, completo
Dos ejecuciones producen **el mismo vídeo** si coinciden **las cinco**
entradas:

1. el **pliego** (canonicalizado, §5.3.4);
2. la **toma** (`--toma`);
3. la **versión del motor**;
4. el **bestiario** (`PYTHON …`) y las secciones importadas;
5. **el sidecar de tiempos** `p.tiempos.json`.

La quinta no es un detalle: `mesa graba` sintetiza voz, y la voz es una
entrada del render como cualquier otra. Un cambio de versión del TTS mueve
las duraciones y con ellas todo el compás. Por eso el sidecar guarda `hash` y
`metodo` por beat: **son parte del contrato, no metadatos**.

**Corolario para el canon (§9.3):** una huella dorada es válida para una
terna `(pliego, toma, versión)` concreta, y el pliego del canon **debe
declarar `tirada definitiva` y fijar su toma**. Sin eso, el arnés es
indeterminista justo en el eje que §5.3.2 introduce.

### 5.4 · Los estratos
Ver §1.3. Leyes derivadas: contrato de reserva por beat; ligaduras sin
ciclos; z por bandas con reset por capítulo.

### 5.5 · El tiempo
**Compás único**: `mesa graba` es prerrequisito; el sidecar
`<pliego sin extensión>.tiempos.json` está siempre presente. Un clip sin
`di:` recibe `> dura N` o duración sintética. No hay régimen libre.

**La partitura** (`al decir «w»:`) es la primera autoridad del tiempo. Toda
acción tiene ventana; `mientras:` abre pista paralela; `hasta decir` estira;
el **tope** impide que una acción se coma el turno de la siguiente. Dos
acciones sobre el mismo sujeto en la misma ventana son error.

### 5.6 · La lejanía manda, y su única excepción
De la **lejanía** —y de nada más— salen la velocidad de una capa, su color y
su z.

**La excepción, declarada:** `MUNDO acelera a N` / `frena a N` es una **orden
explícita de la mano al reloj del mundo**, y por eso la dimensión
`velocidad_estrato` tiene una segunda autoridad, `orden_mundo`, por debajo de
la lejanía. La ley sigue valiendo para el reparto **entre capas** —una capa
no puede ir despacio y estar delante—; lo que la orden cambia es **el reloj
común**, que multiplica a todas por igual.

`MUNDO para` fija el reloj a cero. Es vocabulario cerrado
(`MOVIMIENTO_MUNDO`), no un número por defecto.

### 5.7 · La materia
> **LEY: nada es un relleno plano.**

| registro | qué es | cómo se hace |
|---|---|---|
| `recorte` | papel cortado con tijera | contorno de tijera + grano + sombra dura + canto |
| `pintado` | gouache o rotulador | capas de pasadas con ductus y **borde desbordado** |
| `fotográfico` | material real recortado | revelado + troquel |
| `tinta` | línea de rotulador | trazo a pulso — ya hierve |

**El hervor**: tres poses del mismo camino, misma geometría, distinto
temblor, periodos 7/8/9 sembrados por identidad. Las tres deben ser
**isomorfas**. *El hervor cambia la forma, nunca el sitio.*

**El movimiento secundario** (arrastre, rebote, cimbreo) es propiedad de la
materia y **no se declara nunca en el pliego**.

**El apoyo**: una pieza soltada cae hasta su apoyo; flota solo si su materia
lo permite. Una piedra en el aire es aviso.

### 5.8 · La cámara y la continuidad
Del **eje** se derivan el lado de cada quien, su vista y por dónde entra.
Volteo solo sobre piezas `espejable`.

**Las tres leyes de cámara**: el desplazamiento es un dato, no una caja
envolvente · **el corte no viaja** · una escena con mundo propio es un lugar
nuevo.

**El operador**: si la mano declara `toca la truca: sí`, la truca hereda su
pulso —anticipación, micro-temblor de periodo primo, sobrepaso, y pierde al
sujeto medio segundo—.

### 5.9 · La luz y el foco
**Una sola declaración por escena**, y todas las sombras obedecen. La hora
las tiñe. Prohibido ajustar la sombra de una pieza suelta.
`materia.luz_de(dirección, dureza, hora, rasante)` es la derivación.

**El foco no es blur**: lo desenfocado está más pálido, con el canto más
blando y algo más grande.

### 5.10 · El invariante de cierre, con precisión
La ley 2 se enunciaba `compilar(pobre) == compilar(escribe(pobre))`, y **así
no puede cumplirse literalmente**: `escribe` materializa decisiones y marca
su procedencia, luego `origen` y `autor_cabecera` difieren por construcción.

**Enunciado normativo:** son iguales **módulo procedencia**.

```
canon(compilar(p)) == canon(compilar(escribe(p)))
```

donde `canon(ir)` descarta los campos de procedencia —`origen`,
`autor_cabecera`, `_importado`— y nada más. Todo lo que decide un fotograma
tiene que coincidir; **quién lo decidió, no**.

---

## 6 · El IR (guion rico)
El IR se **regenera siempre y no se versiona**. Es el contrato del que come
`mesa cuenta`, y esa es la prueba de autenticidad del formato: **si
`mesa cuenta` no sabe narrar una capacidad nueva, la capacidad está mal
integrada.**

`compila(doc)` devuelve `(guion, parte, extra)`.

### 6.1 · Nivel de guion
**Obligatorios** — una implementación conforme los emite siempre:

| campo | tipo | significado |
|---|---|---|
| `escena` | str | nombre de la Scene a renderizar |
| `capitulo` | int | índice de página (0-based) |
| `sala` | str | `crema` \| `pizarra` |
| `beats` | lista | los clips compilados (§6.2) |
| `unidades` | lista | capítulos, con sus beats y su estado (§6.3) |
| `taller` | dict | el taller **efectivo**, con toda la precedencia aplicada |
| `mano` | dict | la mano **efectiva** |

**Opcionales** — ausentes o `null` si el pliego no los declara:

| campo | significado |
|---|---|
| `registro` | el afecto dominante del pliego |
| `subtitulos` | estilo de subtítulo, o ausente = apagados |
| `gigantes` | palabras-fantasma detectadas |
| `personajes` | protocolo de títere por personaje |
| `claves_cap` | capítulo → palabra-fantasma |
| `tambor_cap` | capítulo → tambor **declarado** |
| `tramos_cap` | capítulo → tramo de canción |
| `archivo`, `archivo_cap`, `archivo_tintas` | el archivo fotográfico curado |
| `fantasma` | pesos del gigante de fondo |
| `python_ruta`, `python_rutas` | el bestiario |
| `replica` | bool: el pliego va en modo réplica |
| `colofon` | `{lineas, tirada, semilla, toma, pobre}` — **se cuenta, no se declara** |

### 6.2 · Nivel de beat
**Obligatorios:**

| campo | significado |
|---|---|
| `id` | ordinal del clip (`b07`) — para referenciarlo y para el lint |
| `identidad` | la ruta estable (§5.3.1) — **de aquí salen las semillas** |
| `cap` | índice de capítulo |
| `plano` | la **plantilla** resuelta (§4.5) |
| `afecto` | el afecto resuelto |
| `acciones` | lista de acciones (§6.4) |

**Opcionales, y qué distingue los pares:**

| campo | significado |
|---|---|
| `di` | la locución del beat |
| `dura` | duración declarada, si no hay `di:` |
| `sec` | número de secuencia dentro del capítulo |
| `corte` | **hay corte antes de este beat** (lo decida quien lo decida) |
| `corte_mano` | **el corte lo pidió la mano**, no el dramaturgo |
| `plano_mano` | **la plantilla la declaró la mano**, no se derivó de la función |
| `limpia` | el beat abre barriendo la mesa |
| `queda` | sus piezas no se retiran |
| `canta` | el beat va sobre la canción |
| `nocturno` | la hora está en modo noche |
| `congela` | `> congela`: el corte detiene lo que se movía |
| `luz` | la luz **efectiva**, ya resuelta con la hora |
| `escena`, `escena_titulo` | a qué escena pertenece |
| `abre_escena` | es el primer beat de su escena |
| `lugar_nuevo` | la escena trae mundo propio |

El patrón `X` / `X_mano` es sistemático: **`X` es el valor y `X_mano` dice si
lo puso una persona.** De ahí sale la columna «autoridad» de `mesa por qué`.

### 6.3 · Nivel de unidad
| campo | significado |
|---|---|
| `n`, `titulo` | ordinal y título del capítulo |
| `beats` | ids de sus beats |
| `escenas` | títulos de sus escenas |
| `estado_entrada` | **obligatorio** — con qué estado abre la unidad |

`estado_entrada` = `{velocidad_mundo, sentido, hora}`.

Existe porque **el movimiento persiste al corte** (§3.7.8) y **los capítulos
se renderizan en procesos distintos**: la única forma de que el capítulo 3
sepa a qué velocidad iba el mundo es que el compilador se lo escriba. Lo
calcula recorriendo todo lo anterior, y es determinista.

### 6.4 · Nivel de acción
| campo | significado |
|---|---|
| `verbo` | **obligatorio** — qué se hace |
| `pieza` | la pieza sobre la que se actúa |
| `en` | sitio declarado por la mano → autoridad `mano` |
| `liga` | ligadura → autoridad `ligadura` |
| `cuerpo` | sitio relativo a un cuerpo → autoridad `cuerpo` |
| `al_decir` | ancla a la voz → autoridad `partitura` |
| `run` | duración del gesto → autoridad `gesto` |
| `trayecto`, `manera`, `granulado` | del movimiento (§3.7.5) |
| `fijar`, `seco` | anclaje y modo de entrada |
| `spec`, `sobre` | el cuerpo de un `ver:` / el objetivo de una marca |

**Que un campo esté presente ES la señal de autoridad**: `mesa por qué` lee
exactamente esto y por eso su explicación no puede divergir del render.

Verbos que emite el compilador (26):

```
bordar · camino · clip · desfila · dispone · distribuye · encaja · escena
escenario · escribir · letrero · mascarilla · mecanografiar · monta · mundo
muta · pausa · pica · posar · recompone · subrayar · tachar · truca · ver
viaje · vista
```

### 6.5 · Parte y decisiones
`parte` es una lista de frases legibles. `extra` contiene `decisiones` por
beat (función, afecto, plantilla, tensión, autor), `motivos`, `reparto` y
`arco`.

---

## 7 · Lint (`mesa lee`)
### 7.1 · Errores
- palabra fuera de vocabulario cerrado — **incluidos los verbos de
  movimiento y los eventos**;
- función o plano desconocidos en la cabecera;
- **ambigüedad de nombre irresuelta**: dos candidatos empatan en el mismo
  nivel de la dimensión `nombre` (§5.2);
- palabra reservada usada como identificador (§4.13);
- dos gritos en un clip;
- dos acciones sobre el mismo sujeto en la misma ventana;
- ciclo de ligaduras · cadena de más de 3 eslabones · anidamiento > 3;
- pieza sin apoyo cuando su materia no flota;
- el pliego declara una época mayor que la del motor;
- **registro de letrero desconocido** — `letrero (chorizo)` pasaba limpio
  y salía un párrafo de cuaderno donde el pliego pedía una cita;
- **palabra suelta en una línea de movimiento** — lo que no es trayecto,
  manera, granulado, registro ni ventana.

### 7.2 · Avisos de continuidad
Ninguno es fatal: romperlos es legítimo, pero tienen que decirse solos.
`continuidad.AVISOS`:

| aviso | cuándo | cómo se silencia |
|---|---|---|
| `SALTO DE EJE` | cruzar la línea sin plano neutro | `> cruza el eje` |
| `SALTO DE TALLA` | misma talla y ángulo sobre el mismo sujeto, o más de dos escalones — **solo entre planos que declaran talla** (§4.5) | `> salta` |
| `RACCORD DE MIRADA` | en contraplano, los dos miran al mismo lado | — |
| `RACCORD DE DIRECCIÓN` | sale por un lado y entra por el mismo | — |
| `RACCORD DE ESTADO` | una pieza cambia sin acción que lo explique | — |

### 7.3 · Otros avisos
- **evento reservado** (§4.8): la lengua lo acepta y hoy no se ve;
- **porcentaje pobre < 85 %**, con las líneas que llevan cifras;
- capítulo sin respiro · escena sin `EJE` con dos o más personajes;
- sombra declarada por pieza · cifra en dialecto libre;
- plano sin duración alcanzable (el tope recorta más del 30 %);
- **registro de letrero reservado** (§4.8): declarado y hoy invisible.

### 7.4 · Avisos que necesitan el sidecar de tiempos
`mesa lee <pliego>` los emite solo si existe `<pliego>.tiempos.json`.
Los dos nacieron de fallos que **no daban error ni aviso** y solo se
veían mirando el vídeo entero:

| aviso | qué caza |
|---|---|
| **`ancla muerta`** | `al decir «X»` donde X **no se dice nunca** en ese beat. La promesa no falla: se degrada en silencio al reparto automático y la pieza cae donde le toque. En un pliego de 224 señales había **9 muertas**, todas por escribir el ancla como se escribe y no como suena: «Montalván» por «Montalbán», «quiosco» por «kiosco», «cincuenta» donde la transcripción pone «56». |
| **`dos voces`** | un clip **no mudo** dentro de un beat **narrado** y sin `> espera al clip`. El diálogo de la película queda debajo de la voz del ensayo y se pierden los dos. O va mudo, o el beat declara la espera. |
| **`ancla ilegible`** | la señal casa con la voz **pero no con su `di:`**. Funciona y el pliego se lee como si estuviera rota — es lo que pasa al escribir el ancla como suena en vez de como se escribe. |
| **`el beat se alarga`** | el clip dura más que la voz: dice cuántos segundos de plano en silencio se están pidiendo. |

### 7.4b · La revisión Lasseter (`mesa lasseter`, `mesa lee --lasseter`)
**Se mide sobre la cronología real, no sobre el pliego.** La Mesa apunta
en su único envoltorio (`Mesa.play`) y en cada fotograma
(`update_to_time`) qué se mueve, cuánto, durante cuántos fotogramas, con
qué perfil, cuántas cosas a la vez, cuándo entra y sale cada texto y dónde
empieza cada beat (`lasseter.Registro`). Tres caminos dan esa cronología, y
los tres son el mismo intérprete:

| camino | cronología |
|---|---|
| `mesa toca` | el render entero; escribe `<vídeo>.cronologia.json` junto al vídeo |
| `mesa lasseter P` · `mesa toca P --seca` | el render **seco**: los mismos fotogramas interpolados (a 24 fps) sin rasterizar ni escribir vídeo |
| `mesa animatica` | los gestos están secos: se juzga su curva, no su recorrido, y el informe lo dice |

`mesa lee` lee la cronología de la última tirada si es más nueva que el
pliego; con `--lasseter` rueda en seco. `tools/vela.py lasseter` es la
misma revisión (un `.mesa` o un `.cronologia.json`).

| aviso | cuándo (números del canon `OFICIO`) |
|---|---|
| `movimiento demasiado corto` | algo se desplaza en menos de 8 fotogramas (a 24 fps) |
| `demasiadas cosas a la vez` | más de 3 piezas **que se quedan en escena** se mueven en el mismo fotograma (lo que sale de cuadro despeja, no pide atención) |
| `sin pausa al final del beat` | el último gesto acaba a menos de 0,6 s del corte |
| `no da tiempo a leerlo` | un texto se ve menos de palabras/220·60 + 1 s |
| `beats gemelos` | dos beats seguidos con la misma duración (±1 fotograma) y la misma curva |
| `movimiento lineal` | el perfil medido fotograma a fotograma es una recta |
| `rápido y sin anticipación` | ≥ 5,6 u/s y ≥ 1 u sin retroceso previo, salvo `de golpe` o lo que entra de la mano o desde fuera de cuadro |

Cada aviso lleva beat, **línea del pliego**, instante, detalle, sugerencia
y gravedad; el informe da los diez más graves. Dibujar no es moverse: un
trazo que crece no cuenta como desplazamiento.

### 7.5 · Avisos que necesitan el bestiario del proyecto
`mesa lee` lee el `PYTHON fichero.py` del preámbulo **sin ejecutarlo**
—se buscan los `def`, los nombres reexportados y las claves de los
`poses={…}`—. Sin esto, un nombre mal escrito solo se veía a la hora y
media de tirada:

| aviso | qué caza |
|---|---|
| `python: X` inexistente | **error**: se invoca un dibujo que no está en el bestiario. |
| `pose no existe` | **error**: `X está bailando` con una pose que no se declaró. Antes caía a la primera pose **en silencio**. |
| `pose sin normalizar` | `senala` donde el bestiario escribe `señala`. |
| `compone un fantasma` | `juntos: … avion …` con un `avion` que en ese beat no se crea. |
| `registro de letrero desconocido` | **error**: `letrero (chorizo)` pasaba limpio y salía un párrafo de cuaderno. |

> **Las anclas se escriben como se ESCRIBEN.** `casa_palabra` resuelve
> los dos desajustes legítimos contra una voz real: la cifra frente a su
> lectura (`1154` ↔ «mil ciento cincuenta y cuatro») y la transcripción
> aproximada (`Hafsa`/`Habsa`, `quiosco`/`kiosco`), por distancia de
> edición.



---

## 8 · Herramientas
`mesa` ≡ `python -m manim_saorin.formato.cli`

### 8.1 · Escribir y ver
| orden | qué hace |
|---|---|
| `mesa lee P` | lint, avisos, porcentaje pobre |
| `mesa cuenta P` | narra el pliego en prosa |
| `mesa ir P` | vuelca el IR |
| `mesa escribe P` | materializa lo decidido, marcado `(máquina)` |
| `mesa propone P CLIP` · `mesa explica J` | ayuda y explicación |

### 8.2 · Dirigir
| orden | qué hace |
|---|---|
| `mesa graba P` | sintetiza la voz y escribe el sidecar |
| **`mesa animatica P`** | un fotograma por beat con tiempos y audio reales |
| `mesa dura P [--objetivo S]` | metraje contra un objetivo |
| **`mesa lasseter P [--cap N] [--jobs J] [--max K]`** | la revisión del oficio sobre la cronología real (§7.4b); con `--jobs` rueda en seco por capítulos en paralelo |
| `mesa contactos P` · `mesa ensaya P [N]` | hoja de contactos · un capítulo |

### 8.3 · Depurar
| orden | qué hace |
|---|---|
| `mesa por-que P CLIP [PIEZA]` | cada decisión con su autoridad y su línea |
| `mesa por-que P --tabla` | la tabla de precedencia, generada |
| `mesa mueve P [CLIP]` | trayecto, manera, ventana y curva resuelta |
| `mesa indice P` | censo de nombres y ambigüedades |

### 8.4 · El espejo
`mesa taller P [--mano]` · `mesa parte P` · `mesa funde P`.
Ninguna cambia un fotograma.

### 8.5 · Renderizar
```
mesa toca P [-q ql|qm|qh|qk] [-o SALIDA] [--cap N] [--escena T]
            [--partes --jobs N] [--sonido] [--bano] [--toma N]
```

### 8.6 · Los arneses
```
vela huella V -o H.json      ¿he roto algo?
vela vida V [-o H.json]      ¿está vivo?
vela vidas A.json B.json     comparar
vela replica ORIG REPL       coincidencia 1:1
planos.py F.py …             puerta anti-relleno-plano
```

> **LA MÉTRICA MIENTE.** `huella` mide **dónde** están las cosas; `vida` mide
> si se mueven.
>
> **Ley de arbitraje.** Huella idéntica + ojos que dicen «muerto» → ganan los
> ojos y el cambio es deliberado. Huella distinta sin que nadie lo pidiera →
> regresión. **Ninguna huella del canon se rompe sin mirar antes una tira a
> 2 fps**, y la rotura se documenta con acta.

El hervor solo es medible a **≥20 fps**; por debajo la implementación debe
decir «no medible» y **no estimarlo**.

---

## 9 · Conformidad, compatibilidad y estado
### 9.1 · La constitución de compatibilidad
> **Un `.mesa` que compiló una vez compila siempre.**

La época se declara en el preámbulo; `mesa lee` avisa si el pliego pide
vocabulario más nuevo. El vocabulario de una época está **congelado** —
incluidos los eventos **reservados** (§4.8), que es precisamente lo que
«reservado» compra.

### 9.2 · La ley de las tres sedes
> **Una capacidad que no está en los tres sitios —gramática, compilador,
> intérprete— no existe.**

Y el modo en que se nota es peor que un error: una directiva que está en el
vocabulario y no en el parser **se imprime en pantalla como texto del
narrador**. Nombrar así el fallo es lo que lo hace exigible.

De esa ley salen dos obligaciones de este documento:

1. **todo no terminal del EBNF tiene tabla en §4** — si no, no es cerrado;
2. **todo evento declara si está vivo o reservado** — §4.8.

### 9.3 · La suite obligatoria
| pliego | oficio | criterio de aceptación |
|---|---|---|
| `servilleta.mesa` | **el punto de entrada** (§3.9) | prosa pura, sin una marca; compila y renderiza |
| `paradoja.mesa` | **el canon dorado** | huella idéntica para su terna `(pliego, toma, versión)`; **declara `tirada definitiva` y fija su toma** (§5.3.5) |
| `espejo.mesa` | **el invariante de §3.3** | `efectivo(p) == efectivo(parte(p)) == efectivo(funde(parte(p)))` |
| `materia.mesa` | el taller y los registros | los cuatro registros presentes |
| `pulso.mesa` | la mano | misma composición en sitios, distinto movimiento |
| `movimiento.mesa` | trayectos × maneras | **los 16 × las 13, sin una cifra** |
| `oficio.mesa` | **el oficio de Lasseter** | arco, anticipación forzada, `de golpe`, `> deja posar`, `en dos` y fuera de campo, sin una cifra; `mesa lasseter` sin avisos |
| `raccord.mesa` | continuidad | **los cinco avisos, al menos una vez cada uno** |
| `ambiguo.mesa` | nombres | error de ambigüedad y de palabra reservada; código de salida 1 |
| `corto.mesa` | **la prueba de fuego** | 2–3 min · dos personajes · tres escenas · un viaje · **diálogo con hablante** · música · transiciones · **≥85 % pobre** · **sin bajar al Python** · se lee en voz alta |

### 9.4 · Lo que el pliego NO puede decir
- easing, keyframes, `rate_func`, duraciones sueltas en dialecto libre;
- colores por hex o RGB;
- sombra, velocidad de estrato o z **por pieza**;
- piezas sin nombre;
- dos sitios para la misma decisión.

> **Ninguna capacidad nueva entra si obliga al pliego a decir números que
> antes derivaba.**

### 9.5 · Reservado: declarado en la lengua, no en el motor
Estas cosas **están en la lengua y congeladas**, y el motor todavía no las
realiza. Escribirlas hoy no rompe mañana; `mesa lee` avisa.

| qué | estado y por qué |
|---|---|
| ~~los 14 eventos reservados~~ | **vivos** desde RADIOINTERMISIÓN (§3.10.6) |
| **`#MONTAJE`** | transición por defecto, `respiro cada N` y **`alterna`** (montaje paralelo). El ritmo de los cortes ya se dice en la línea de unidad `MONTAJE` (§3.10.8) |
| **`#CASCADA`** | pila de decisores con nombre y autoridad, cargable desde el proyecto |

### 9.6 · Fuera de la beta 1, con decisión explícita
No son deuda oculta: son el contenido de la 1.0, y se listan aquí para que
nadie los busque en la gramática.

| qué | decisión | por qué |
|---|---|---|
| **`mesa desnuda`** | **1.0, y es la más urgente de esta lista** | sin la inversa de `escribe`, el porcentaje pobre (§1.2) es un diagnóstico sin tratamiento: un pliego transpilado no se puede caminar de vuelta hacia la autoría |
| `mesa mira` | 1.0 | el crítico automático. `mesa contactos` cubre hoy su mitad barata |
| `ACTO` · `PLIEGO` | 1.0 | la estructura larga: un corto de doce minutos como varios archivos |
| multi-formato (9:16) | 1.0 | reencuadre por punto de interés |
| protocolos genéricos por especie | 1.0 | refactor grande sin cambio visible |
| cadenas con IK (≤3 eslabones) | 1.0 | más que eso es rigging, y el títere de cartón no lo necesita |
| stems · OTIO/EDL · `mesa exporta` | 1.0 | posproducción |
| los cuatro talleres (`pizarra`, `riso`, `cuaderno`) | 1.0 | son la demostración del eje, no su cimiento |

---

## 10 · Ejemplos
### 10.1 · La servilleta
```
MESA «La paradoja»

Hay una paradoja incómoda en el arte de decidir bien.
Para acertar más sobre un tema, no siempre conviene juntar a los que más saben.
A veces conviene exactamente lo contrario.
```

### 10.2 · Un capítulo dirigido
```
MESA La paradoja de los expertos
formato 16:9 · sala crema · tirada borrador

ARCO pregunta→respuesta
MOTIVO «error» — empieza como enemigo y acaba siendo la herramienta
REPARTO Galton: verde

== CAPÍTULO 1 · EL BUEY ============== tensión sube · tambor ultramar

* apertura · contenido
di: Hay una paradoja incómoda en el arte de decidir bien.
pon: rescate «LA PARADOJA» · 60

* ilustración · nervioso
di: Plymouth, mil novecientos seis. Ochocientas personas apuestan cuánto pesa un buey.
foto: galton
al decir «ochocientas»: ver: multitud 18

* prueba · seco
di: La mediana de las apuestas: mil doscientas siete libras.
terminal: mediana de la multitud: 1207 libras
marca: rodea «1207»
```

### 10.3 · Una escena de cine, con diálogo y movimiento
```
MESA v2 El puerto
formato 16:9 · sala crema

PYTHON vistas.py
REPARTO ella: ultramar, alias: la que conduce
REPARTO él: bermellon, alias: el que pregunta

== CAPÍTULO 1 · LA SUBIDA ==========================

-- LA CARRETERA · diurna --
EJE de él a ella
LUZ de la izquierda · dura
MUNDO avanza · de frente
FONDO cielo · en el cielo
FONDO arboleda · cerca
FONDO carretera · al pie
DELANTE almendro · al paso · cada dos

* general de la carretera · sereno
di: Suben al puerto desde antes de que amaneciera del todo.
coche con vista cenital
el coche viaja
la truca viaja con el coche

* primer de él · contenido
él: —¿Falta mucho?
él mira a ella
sonido: retiene

* primer de ella · seco
ella: —Lo que falte.
ella mira a él

* detalle de la piedra · nervioso
di: En el arcén hay una piedra que lleva ahí desde antes que la carretera.
la piedra rueda hasta el borde · por el suelo · pesado · a treses
> congela
```

Obsérvese que **`él` es un personaje válido** y `el` no lo sería: la tilde
diacrítica los distingue (§0.4).

### 10.4 · Taller y mano, y su mudanza
```
#TALLER collage
  papel crema · grano medio · canto rasgado
  canto · por defecto: tijera
  materia washi · masa nula · arrastre mucho · cimbreo mucho
#FIN

#MANO firme
  pulso poco
  precisión alta
  granulado a doses
  toca la truca: sí
#FIN
```

Con `mesa parte`, exactamente lo mismo:

```
TALLER talleres/collage.taller
MANO manos/firme.mano
```

### 10.5 · El pliego trampa de la continuidad
```
-- EL ANDÉN · diurna --
EJE de primero a tercero
LUZ de la izquierda · dura

* general de primero · sereno
di: Primero espera en su lado del andén, que es el izquierdo.
primero mira a tercero
sale por la izquierda

* detalle de primero · nervioso          ← SALTO DE TALLA
di: Y aparece otra vez por donde se fue.
entra por la izquierda                   ← RACCORD DE DIRECCIÓN

* medio de tercero · contenido           ← SALTO DE EJE
di: El otro cruza la línea sin avisar.

* corto de tercero · seco
di: Y los dos miran para el mismo sitio.
tercero mira a primero
primero mira a primero                   ← RACCORD DE MIRADA
el sombrero está puesto

* medio de primero · contenido
di: El sombrero, que nadie tocó, ya no está donde estaba.
el sombrero está en el suelo             ← RACCORD DE ESTADO
```

---

## Apéndice A · Gramática completa
```ebnf
PLIEGO        = PREÁMBULO { CAPÍTULO } [ FIN ] ;
PREÁMBULO     = { LÍNEA-PREÁMBULO | SECCIÓN | COMENTARIO } ;

CAPÍTULO      = "==" TÍTULO { "·" ATRIBUTO-CAP } { "=" }
                { LÍNEA-UNIDAD | SECCIÓN | COMENTARIO }
                { ESCENA | CLIP } ;
ESCENA        = "--" TÍTULO [ "·" HORA ] "--"
                { LÍNEA-UNIDAD | SECCIÓN | COMENTARIO } { CLIP } ;
CLIP          = "*" ( FUNCIÓN | PLANO-CINE ) [ "·" AFECTO ] [ "(máquina)" ]
                { LÍNEA-CLIP } ;

LÍNEA-UNIDAD  = "EJE" "de" IDENT "a" IDENT
              | "LUZ" DIRECCIÓN-LUZ { "·" ( DUREZA | "rasante" ) }
              | "MUNDO" MOVIMIENTO-MUNDO [ NÚMERO ] [ "·" SENTIDO ]
              | "FONDO" CLAVE { ARG } "·" LEJANÍA [ "·" NÚMERO ]
              | "DELANTE" CLAVE { ARG } [ "·" LEJANÍA ] [ "·" "cada" NÚMERO ]
              | "ESCENARIO" TEXTO
              | "ARCHIVO" CLAVE { "·" CLAVE } ;

SECCIÓN       = "#" NOMBRE-SECCIÓN [ IDENT ] NL { LÍNEA-SECCIÓN } "#FIN"
              | NOMBRE-SECCIÓN RUTA ;
LÍNEA-SECCIÓN = FAMILIA [ VALOR ] { "·" CAMPO } ;
CAMPO         = CLAVE ( " " | ": " ) VALOR ;

LÍNEA-CLIP    = CONTENIDO | PIEZA | COLOCACIÓN | VERBO-ESCENA | MOVIMIENTO
              | CÁMARA | VIAJE | EVENTO | ANIDAMIENTO | COMENTARIO ;

CONTENIDO     = "di" [ "(" VOZ ")" ] ":" TEXTO
              | HABLANTE ":" TEXTO
              | "letrero" [ "(" REGISTRO-LETRERO ")" ] ":" TEXTO { "/" TEXTO }
              | "terminal:" TEXTO | "canta:" TEXTO | TEXTO ;

PIEZA         = "pon:" TIPO-PIEZA CITA { "·" ATRIBUTO-PIEZA }
              | ( "foto" | "recorte" | "prensada" ) ":" CLAVE
              | "ver:" CLAVE-VIS [ "—" CUERPO ]
              | "pica:" CLAVE [ "en" NÚMERO ]
              | "python:" NOMBRE { ARG }
              | ( "arriba" | "pie" | "nota" ) ":" TEXTO
              | "marca:" GESTO-MARCA CITA ;

COLOCACIÓN    = "en" NÚMERO NÚMERO ":" LÍNEA-CLIP
              | "en" PARTE-CUERPO "de" IDENT [ NÚMERO NÚMERO ] ":" LÍNEA-CLIP
              | RELACIÓN OBJETIVO [ "a" NÚMERO ] ":" LÍNEA-CLIP
              | RELACIÓN "cada uno:" IDENT TEXTO
              | "juntos:" LISTA "—" DISPOSICIÓN
              | ( "en el mundo" | "en el documento" ) ":" LÍNEA-CLIP ;
RELACIÓN      = "bajo" | "sobre" | "junto a" | "delante de" | "detrás de" ;

MOVIMIENTO    = [ ARTÍCULO ] SUJETO VERBO-MOV [ DESTINO ]
                { "·" ( [ "por" ] TRAYECTO | MANERA | GRANULADO ) }
                [ VENTANA ] ;

CÁMARA        = "la truca" ORDEN-TRUCA [ IDENT ] [ "en" TALLA ]
              | IDENT "mira a" IDENT
              | [ ARTÍCULO ] IDENT ( "sale" | "entra" ) "por la" LADO
              | "sonido:" CRUCE-SONIDO [ NÚMERO ]
              | "fuera de campo" [ "por la" LADO ] ":" TEXTO
              | [ "el" ] "foco" ( "en" | "pasa a" ) IDENT
              | "todo en foco" | IDENT "está" TEXTO ;

EVENTO        = ">" NOMBRE-EVENTO [ ARG ] { "·" ">" NOMBRE-EVENTO [ ARG ] } ;
ANIDAMIENTO   = "dentro:" NL { LÍNEA-CLIP } | "mientras:" LÍNEA-CLIP
              | "al decir" CITA ":" LÍNEA-CLIP ;
VENTANA       = "hasta decir" CITA | "mientras" ;

FIN           = "==" "FIN" { "=" } { TEXTO } [ ">" "silencio" NÚMERO ] ;
COMENTARIO    = "//" TEXTO | "(" TEXTO ")" | "~" TEXTO ;
CITA          = "«" TEXTO "»" ;
ARTÍCULO      = "el" | "la" | "los" | "las" ;
```

**Todo no terminal en MAYÚSCULAS que no se define aquí es un vocabulario
cerrado de §4**, y esa correspondencia es exhaustiva por §9.2:

| no terminal | tabla |
|---|---|
| `FUNCIÓN` · `AFECTO` · `TENSIÓN` · `ARCO` | §4.1–4.3 |
| `TALLA` · `ALTURA` · `FRENTE` · `MODO` | §4.4 |
| `PLANTILLA` | §4.5 |
| `VERBO-MOV` | §4.7 |
| `NOMBRE-EVENTO` | §4.8 |
| `TRAYECTO` · `MANERA` · `GRANULADO` | §4.9 |
| `ORDEN-TRUCA` · `GESTO-MARCA` · `DISPOSICIÓN` · `PARTE-CUERPO` · `VOZ` · `REGISTRO-LETRERO` · `DIRECCIÓN-LUZ` · `DUREZA` · `SENTIDO` · `LADO` · `HORA` · `MOVIMIENTO-MUNDO` · `CRUCE-SONIDO` · `LEJANÍA` · `ANCLA` · `TAMBOR` | §4.10 |
| `TIPO-PIEZA` · `SUSTRATO` | §4.12 |
| `HABLANTE` | §3.7.1 — declarado en `REPARTO`/`PERSONAJE` |
| `CLAVE-VIS` | §4.14 |
| `NOMBRE-SECCIÓN` | §3.3 |

## Apéndice B · Fuente de cada vocabulario
| vocabulario | módulo · estructura |
|---|---|
| afectos, funciones, tensiones, arcos, anclas, tambores, función→plantilla, **eventos**, **plantillas**, **palabras reservadas**, y los menores de §4.10 | `formato/vocabulario.py` |
| tallas, alturas, frentes, modos, avisos | `formato/continuidad.py` |
| **verbos de movimiento**, relacionales, trayectos, maneras | `movimiento.py` |
| granulados, secciones, familias del taller, claves de la mano, escala | `formato/taller.py` |
| lejanías | `viaje.py` |
| registros de materia, luz | `materia.py` |
| sustratos | `pieza.py` |
| voces | `formato/sonido.py` |
| dimensiones y autoridades de precedencia | `formato/precedencia.py` |
| catálogo `ver:` | `visualizaciones.py::CATALOGO` |
| bandas de z | `mesa.py::BANDAS` |
| encuadres | `mesa.py::ENCUADRES` |

## Apéndice C · Qué cambió respecto de MESA v1
| v1 | v2 |
|---|---|
| sin secciones | `#TALLER`, `#MANO` … con ley del espejo |
| la materia cableada en el intérprete | declarada en el taller |
| el plano solo como función | además, plano de cine — y **dos ejes declarados como tales** |
| sin eje ni raccords | `EJE` y cinco avisos |
| la sombra por pieza | `LUZ` por escena, teñida por la hora |
| verbos de movimiento sueltos | **vocabulario cerrado**, anatomía única |
| la curva implícita | deducida de materia, mano, afecto y manera |
| semilla por posición | `H(identidad) ⊕ H(toma)` |
| un arnés | dos, con ley de arbitraje |
| sin métrica de salud | porcentaje pobre |
| cuatro estratos | cinco: **el proscenio**, para que la oclusión ocluya |
| el diálogo, sin implementar | `HABLANTE:` con hablante declarado |

## Apéndice D · Documentos relacionados
| documento | qué es |
|---|---|
| `SPEC-MESA-2.md` | **este**: la especificación formal, normativa |
| `SPEC-MESA.md` | la de v1: superada, se conserva como historia |
| `CHANGELOG.md` | qué cambió y cuándo |
| `PLAN-MESA.md` · `PLAN-B.md` · `PLAN-C.md` · `MESA-C.md` · `BETA-1.md` | los planes |
| `canon/ACTA.md` | las roturas de huella, con su porqué |
| `docs/SKILL-MESA.md` | cómo se escribe un pliego, operativamente |
| `docs/SKILL.md` · `docs/SKILL-PRO.md` | la librería y la producción |

### 3.7.4e · La truca en el teatro de papel (v6b)
La mesa no tiene cámara. Lo que se acerca es **el mundo** —el decorado y
quien está en él— alrededor de un personaje:

```
la truca se acerca a hafsa        # ×1,75 sobre Hafsa; ella queda centrada
la truca vuelve                   # deshace
la truca se aleja                 # sinónimo de «vuelve»
```

Compila a `truca_cine` (el verbo `truca` a secas es el viaje sobre una
tira, §3.6). Escala el estrato `mundo`, el suelo y los `PERSONAJE`
vivos; el proscenio (letreros, fichas, subtítulos) no se mueve. Vale entre
beats sin caminatas: la caminata usa el suelo declarado, que no se escala.
El hervor respeta el tamaño (antes devolvía la pieza a su tamaño de
nacimiento al cambiar de pose).

### 3.7.4f · `apunte` y los registros de rótulo
- `pon: apunte «…»`: tarjeta mecanografiada (Courier 21, corta a 38
  caracteres) para el comentario que desarrolla lo que la voz no dice. Es
  la **tercera columna** del pliego: datos, fuentes, quién es quién.
- `letrero (cartulina): TEXTO` vive en la marquesina (y=2,75, proscenio)
  y muere con su beat. `pon: cartulina «TEXTO»` es una pieza más y cae
  donde la ponga el compositor: para un rótulo de sección usar SIEMPRE el
  letrero.
- Las tiras bajas y alargadas (sello, dymo, apunte, verso) nunca se
  escalan como héroe del beat.
- Un clip que termina **se retira** al cierre del beat (`_despide_clips`);
  no se queda de foto hasta la siguiente escoba.

## 3.10 · El aspecto: lo que entró con RADIOINTERMISIÓN (backend gx)
El corto «RADIOINTERMISIÓN» se escribe entero en un pliego, y lo que la
lengua no sabía decir se le enseñó aquí. Todo vale para cualquier pliego,
todo es vocabulario CERRADO (`formato/aspecto.py`, `vocabulario.EVENTOS`) y
**nada lleva números**: los pone el motor (`gx/aspecto.py: OFICIO`,
`gx/materias.py`, `gx/rio.py`, `gx/sonido_radio.py`), con el oficio de
Lasseter por defecto. Se rueda con `mesa toca --motor gx`; el motor CE
acepta el pliego y no realiza el aspecto (§9.5).

### 3.10.1 · Dónde se escribe: unidad, prefijo, evento
- **Líneas de unidad** (en mayúsculas, como `LUZ`): en el **preámbulo**
  valen para todo el pliego; en un **capítulo** o una **escena**, para
  ella. La escena manda sobre el capítulo y el capítulo sobre el preámbulo.
- **Prefijos de pieza** (como `bajo «X»:`), encadenables con los de sitio
  y con `al decir`: `en MATERIA:`, `de «A» a «B»:`, `a la izquierda:` /
  `a la derecha:`.
- **Eventos `> …`** en un clip, en su sitio del orden del autor y
  anclables a la voz: `al decir «GOL»: > temblor`.

```
UNIDAD   ::= "MATERIA" materia | "BOBINA" bobina | "FORMATO" formato
           | "ESPEJO" [lado] | "PANTALLA PARTIDA" {"·" partida}
           | "RÍO TIPOGRÁFICO" ["·" modo_río] | "SIMULTÁNEO" simultáneo
           | "MONTAJE" montaje {"·" montaje} | "CAMA" efecto | "JINGLE" efecto
           | "HERVOR" ("dibujado"|"suave"|"no") | "REPITE" «escena»
           | "EFECTOS" carpeta                      (solo en el preámbulo)
materia  ::= "papel" PAPEL | "acuarela" [sobre] | "risografía" TAMBOR "y" TAMBOR ["y" TAMBOR]
             {"·" ("desregistrada"|"en registro"|"trama de puntos"|"trama de grano"|"trama de líneas")} [sobre]
           | "pincel" [sobre] | "tejido" [TAMBOR] | "tinta" [sobre] | "ninguna"
sobre    ::= "sobre papel" PAPEL
PAPEL    ::= grano fino | satinado | torchón | khadi | washi | verjurado | lienzo
           | tintado | kraft | escolar | cuaderno            (los once de la biblioteca)
TAMBOR   ::= ultramar | bermellón | naranja | ámbar | verde | rosa | violeta | humo | tinta | azurita
bobina   ::= truca | sin grano | noticiario
formato  ::= 4:3 | 16:9 | 2,39:1 ["·" "de televisión"]
lado     ::= de la izquierda | de la derecha
partida  ::= con un espejo en medio | que se miran
modo_río ::= en fila | en libertad | a pantalla completa
simultáneo ::= en rejilla | en abanico | en abanico que gira
montaje  ::= se acelera | al ritmo de las palabras | al pulso | cada vez más cerca
           | la cámara no para | mezcla «escena» {"·" «escena»}
```

En la línea de propiedades del preámbulo vale también `formato 4:3`.
Y `página desnuda`: sin folio, sin sello «Nº» y sin campos de color; solo
el papel (o la materia) y lo que se pone. Es la página de un corto, no la de
un cuaderno de trabajo.

**El tamaño de un dibujo** se dice como el de un clip, detrás de un `·`:
`python: patio cenital noche · a sangre` (cubre el cuadro, se sale por los
cuatro lados, no se pinza ni se compone, va por debajo del documento),
`python: radio · enorme`, `python: radio · grande`.

### 3.10.2 · MATERIA del plano y de la pieza
`MATERIA` es de qué está hecho el cuadro: una pasada sobre el fotograma
terminado (`m.Pass`). El plano de la mesa se lee como **tinta sobre la
crema del canon**: dividida la crema, la tinta se reimprime sobre la
materia pedida.

| materia | qué hace | de dónde sale |
|---|---|---|
| `papel X` | la hoja de los once papeles, con su tinte, su relieve iluminado y la tinta hundida en el grano | `papel.wgsl` (papel_compone) de la biblioteca, con la hoja calculada en el sitio |
| `risografía A y B` | separación en dos o tres tambores, trama, desregistro, mezcla por multiplicación | `risografia.wgsl` (imprime) de la biblioteca; `desregistrada` lo anima «en dos» |
| `acuarela` | pigmento de Beer-Lambert: sangra mojada, bordes oscuros y granulado seca, coliflores al secar | `acuarela_plano.wgsl` (una pasada: la de la biblioteca simula el fluido con estado) |
| `pincel` | pinceladas por el flujo de la imagen (tensor de estructura), cerdas y pasta | `pincel_plano.wgsl` (una pasada) |
| `tejido` | el cuadro en punto de media (V de dos patas, lana, pelusa) | `tejido_plano.wgsl` |
| `tinta` | la tinta se abre en la fibra y se encharca | `tinta_plano.wgsl` |

Sus eventos vivos: `> se moja`, `> se seca`, `> se lava`, `> florece
[TAMBOR] [en «X»]` (acuarela: una mancha que crece desde una pieza y se
ramifica), `> se teje` (el tejido avanza fila a fila), `> la tinta lo cubre
todo [TAMBOR]` (un frente de tinta que sube y se traga el plano).

**La materia de una pieza** es un prefijo: `en acuarela: python: gamba`,
`en tejido rosa: pon: cartulina «PESCADOS Y MARISCOS»`, `en tinta: python:
pulpo`, `en risografía rosa: python: almeja`, `en papel kraft: …`, `en
pincel: foto: estadio.jpg`. Las capas vectoriales llevan el material del
motor (`set_material`: papel, acuarela, riso, y los nuevos tejido, tinta y
pincel, `gx/materiales_radio.py`); la risografía, además, `set_blend
multiplicar` y el color del tambor; el tejido tiñe de lana el fondo y deja
las letras con su color. Una **foto** no tiene capas: su pincel se cuece
una vez con la pasada de la biblioteca (`materia aplica -c pincel`, seis
pasadas con estado) sobre la imagen ORIGINAL, no su semitono.

### 3.10.3 · BOBINA
`BOBINA truca` (la película de la casa, la del baño), `BOBINA sin grano`
(sin película: el anuncio, que «brilla de más») y `BOBINA noticiario`
(sepia, rayas, parpadeo, el cuadro que baila y **la imagen a 18 por
segundo**: la escena repite cada cuadro lo que toca). Por escena; sin
línea, la del preámbulo o la del baño (`baño truca`).

### 3.10.4 · FORMATO, ESPEJO, PANTALLA PARTIDA, SIMULTÁNEO
- **El visor**: en un pliego que cambia de formato (algún `FORMATO` que no
  es 16:9, `· de televisión` o `> formato X`), TODO formato —también el
  16:9— es una ventana de esquinas redondas con aire de papel alrededor (el
  aire y el radio son del canon de Tórculo, `oficio.visor_*`), para que se
  lea como una decisión de encuadre y no como un recorte; el cambio se anima
  siempre, también bajo una transición; y la pasada del visor va la última:
  la edad del noticiario, la bobina, el grano, el soporte y la estática de
  la sintonía se quedan dentro. Las bandas de papel (§3.13.4) van dentro del
  visor. Un pliego que nunca cambia de formato se ve como siempre.
- `FORMATO 4:3 | 16:9 | 2,39:1`, con bandas de tinta de canto rasgado; `·
  de televisión` redondea las esquinas y da el brillo del cristal. **El
  cambio de formato se anima** (entrada y salida lentas) si no hay una
  transición que lo cubra; `> formato X` lo cambia a mitad de escena. El
  compositor no pone nada bajo las bandas (son reservas del beat).
- `ESPEJO [de la izquierda | de la derecha]`: una mitad se refleja en la
  otra (toda la escena en simetría especular). `> se rompe el espejo` lo
  rompe a esquirlas, cada una a su tiempo; `> vuelve el espejo` lo recompone.
- `PANTALLA PARTIDA [· con un espejo en medio] [· que se miran]`: una
  costura en el eje (a pluma, o una franja de azogue), que se traza al
  abrirse; los prefijos `a la izquierda:` / `a la derecha:` ponen una pieza
  en el centro de su mitad, y con `que se miran` la de la derecha se
  voltea. `> se parte la pantalla` / `> se junta la pantalla`.
- `SIMULTÁNEO en rejilla | en abanico | en abanico que gira` (o `> …` en un
  clip, y `> un solo plano` para volver): varios planos de la misma escena a
  la vez en el cuadro, cada casilla con su encuadre, entrando escalonadas; el
  abanico que gira es una turbina que pasa de cuatro a ocho planos.

### 3.10.5 · LA CÁMARA
| evento | qué hace |
|---|---|
| `> zoom de golpe [a «X»]` | el encuadre vectorial salta en un fotograma sobre X y se asienta con un sobrepaso mínimo |
| `> barrido a la izquierda` (… derecha, hacia arriba, hacia abajo) | látigo con desenfoque de pasada; escrito **el primero del clip** es la transición: sale, se corta en lo más borroso, entra el plano nuevo |
| `> plano holandés [a la …]` | el cuadro se inclina (con sobrante para no enseñar el canto) hasta el corte |
| `> temblor` | sacudida que se apaga (los goles) |
| `> cámara lenta` · `> velocidad normal` | lo que se anima dura más; la voz no se estira |
| `> congela la imagen` | una sola estampa: sin vibración, sin grano, sin hervor, hasta el corte |
| `> se para en seco` · `> arranca de golpe` | el congelado VIVO: todo lo que se movía se para en el sitio (la tinta hierve, el grano vive) y luego todo sigue a la vez, con un golpe |
| `> fotograma en blanco` | un cuadro blanco, uno solo |
| `> la cámara no para` | deriva de mano (empuja, se va, gira un poco) hasta el final del beat |
| `> la cámara va pegada a «X»` | el encuadre sigue a X en cada fotograma, cerca |
| `> la cámara vuelve` | deshace zoom, holandés y seguimiento (el corte también) |

### 3.10.6 · LAS TRANSICIONES
Una transición escrita en un clip dice cómo ENTRA ese clip; `funde a negro`
y `funde a blanco`, cómo SALE (en el final de su beat). Las de dos planos
(encadena, pasa página, la mano tapa, cortinilla de tijera, iris, se quema,
desenfoque de pasada, chasquido, entra de golpe, funde desde negro, funde
desde blanco) son `transicion.wgsl` de la biblioteca: **el plano que llega
está vivo** y el que se va es una lámina (la foto del último cuadro, con su
materia, sin la película); el motor la lee en `@group(1)` (rama `radio` de
Tórculo: `Pass(…, pictures=…)`). `corta` despeja en un fotograma; `corta en
la acción` además quita la anticipación al primer movimiento. `sintoniza` es
la del corto: la aguja de un dial cruza su banda, estática y desregistro, y
el corte en lo más sucio. `a la vez` hace que lo siguiente empiece con lo
anterior; `se sostiene` y `retención larga`, una pausa.

### 3.10.7 · EL RÍO TIPOGRÁFICO
`RÍO TIPOGRÁFICO [· en fila | en libertad | a pantalla completa]` en una
escena (o `> río tipográfico …` en un clip): la voz de los `di:` y los
diálogos se escribe **palabra a palabra en el instante en que se dice**
(las palabras del sidecar, con el texto del pliego tal cual si cuentan lo
mismo). En fila, un renglón que corre y no se para nunca (acelera o afloja
para no alcanzar a la pluma); en libertad, cada palabra sale disparada en
diagonal con su cuerpo y su letra, cruza, choca y sale (unas pocas a la
vez, para que se lea); a pantalla completa, cada palabra llena el cuadro.
Las **MAYÚSCULAS** del texto, y lo que diga `> revienta «…»`, crecen con
anticipación, se estampan con un sello y desbordan.

**La frase partida**: `VECINO / LOCUTOR: —Podría haber sido un / partido
decepcionante…`. La empieza el letrero recortado del primero y la termina la
pluma del segundo en el mismo renglón; la voz son dos tomas encadenadas
(el sidecar lleva una lista de wav en ese beat) con el color de cada uno y
el cambio cruzado en la juntura.

**El letrero que vuela**: `de «vecino» a «vecina»: pon: rescate
«¡CÁLLATE!»` nace en A, se encoge (anticipación), vuela en arco y se
estrella en B (aplasta y rebota).

### 3.10.8 · EL MONTAJE
`MONTAJE se acelera · al ritmo de las palabras · al pulso · cada vez más
cerca · la cámara no para · mezcla «LA RADIO» · «EL ESTADIO» · …` (o los
eventos `> el montaje se acelera`, `> montaje al ritmo de las palabras`,
`> mezcla los registros «…»`): cortes dentro del beat, cada uno otro
encuadre de lo mismo; al ritmo de las palabras (si el beat grita, sus
MAYÚSCULAS), acelerando hasta dos fotogramas, cada vez más cerca, y con
`mezcla` cada corte toma la materia, el formato y la película de otra
escena por su título. Con el río a pantalla completa el corte no recorta la
palabra.

### 3.10.9 · MOVIMIENTO: rastros, metamorfosis, en el sitio
- Rastros (detrás de un `·` en una línea de movimiento, como una manera):
  `con estela` (un trazo de pincel que sigue a la pieza y se queda),
  `con líneas de fuerza` (Balla y Boccioni: líneas detrás, largas según la
  velocidad), `en cronofotografía` (Marey: todas las posiciones a la vez,
  que se van con su beat). `grada salta · en cronofotografía` es la grada
  entera en el aire.
- Un verbo sin destino se hace en el sitio: `grada salta`, `pichichi cae`.
- `X se funde en Y` (dos piezas que comparten estructura: el aro en el
  dial; si Y no está en la mesa, nace del bestiario), `X hierve con Y` (una
  figura que hierve entre dos identidades, por poses «en dos»), `el pelo
  pasa de X a Y` (el mismo trazo viaja de una pieza a otra: el bestiario
  nombra la parte en `pieza.partes`).

### 3.10.10 · ASOMA: la grieta y la escena dentro de otra
`> se rasga el papel y asoma «EL PATIO»`: el papel se rasga y por la grieta
se ve la última imagen de esa escena; **la grieta no se cierra**: queda en
todas las escenas que se llamen como esta. `> asoma «EL ESTADIO» en el
hueco`: la otra escena, a escala, en una ventana rasgada en el centro (la
jugada en el patio). La escena que asoma tiene que haberse rodado antes (en
la misma tirada o en otra: su imagen se guarda en la caché del pliego).

### 3.10.11 · REPITE
`REPITE «PRIMER ANUNCIO»` en una escena: sus clips son los de aquella, con
la misma identidad (las mismas semillas: **el mismo vídeo**), su mismo
aspecto y su misma voz (los tiempos y los wav se toman del original).

### 3.10.12 · EL SONIDO
```
EFECTOS audio/sfx                                   (preámbulo)
REPARTO LOCUTOR: ultramar, elevenlabs A, con radio
REPARTO VECINO: rosa, elevenlabs VBL, seca
CAMA estadio                                        (escena: en bucle, bajo la voz)
JINGLE jingle                                       (escena: una vez, al abrirla)
sonido: congelador                                  (clip: el efecto, en su sitio)
al decir «ÁLAMO»: sonido: pitido
> la voz se vuelve radio
```

Los efectos son los wav de la carpeta de `EFECTOS` (su nombre es el del
fichero): un nombre que no está es error. La **cama** se agacha sola bajo
la voz (ataque rápido, suelta lenta). El tercer campo del `REPARTO` es el
**color de la voz**: `con radio` (la banda del altavoz, un pelo de
saturación y el soplido de la emisora) o `seca`. Las voces de ElevenLabs
están **ya grabadas** en el sidecar (`metodo: "elevenlabs"`; un beat puede
llevar una lista de tomas encadenadas o de tomas `{ruta, desde}` que suenan
a la vez): el render nunca llama a la API y `mesa graba` no se usa en un
pliego así.

#### 3.10.12.1 · LA BANDA: música, ambientes, espacio, paneo y máster
Un pliego que declara `BANDA` o `MEZCLA` se mezcla como una película
(`gx/banda.py`): en estéreo, por cuatro buses (VOCES, MÚSICA, EFECTOS,
AMBIENTES), con un máster de sonoridad medida y sus stems. Todo en palabras;
los números son del motor (`OFICIO` de `gx/banda.py`).

```
BANDA audio/banda                       (preámbulo: la carpeta de los cues)
MEZCLA para la web · con stems          (preámbulo: para la web | para cine; con stems | sin stems)
REPARTO LOCUTOR: azurita, elevenlabs B, seca, a la izquierda    (a la izquierda | a la derecha | al centro)
MÚSICA 1M2                              (capítulo o escena: el cue que suena; «MÚSICA ninguna»)
AMBIENTE amb radio valvulas bucle · amb estadio masa bucle      (el mundo, por capas)
ESPACIO estadio                         (la sala de los efectos: estadio | patio | estudio | radio | seco)
al decir «Y»: > entra la música «4M4»
> la música se corta · > la música se apaga
> silencio de verdad
> las voces se juntan en el centro · > cada voz a su lado
sonido: tema blanquiazul ruido a la izquierda
```

- **La música** sigue mientras las escenas siguientes digan el mismo cue (no
  vuelve a empezar); al cambiar de cue, se cruza; `> entra la música «X»`
  la arranca en su instante (anclable a una palabra), `> la música se
  corta` la para en seco y `> la música se apaga` la funde. Un cue más corto
  que su tramo acaba solo; uno más largo se funde al final del tramo.
- **El ambiente** es el mundo: suena en bucle (con cruce en cada vuelta)
  mientras dure, y puede tener varias capas separadas por `·`. Las `CAMA`
  de antes son ambientes. La música se agacha bajo la voz más que el
  ambiente: la voz se entiende siempre.
- **El silencio de verdad** corta música, ambientes y lo que ya sonaba
  hasta el beat siguiente, sin suelo de sala; un efecto que empieza en ese
  mismo instante (el crujido) suena entero.
- **El lado** de cada voz sale del `REPARTO`; `> las voces se juntan en el
  centro` las lleva al centro a lo largo de ese beat y ahí se quedan hasta
  `> cada voz a su lado`. Un `sonido:` puede llevar su lado detrás del nombre.
- **El espacio** es la reverberación de la sala que llevan los efectos de
  la escena (la voz ya trae su color en la toma).
- **Los nombres**: los de `sonido:` y `AMBIENTE` se buscan en `EFECTOS` y,
  si no, en `BANDA` (un tema o el jingle suenan así, en el bus de música);
  los de `MÚSICA`, en `BANDA`. El lint dice cuál falta.
- **El máster**: −14 LUFS integrados para la web (−24 para cine), picos
  verdaderos por debajo de −1 dBTP (limitador sobremuestreado ×4), WAV de
  24 bits junto al vídeo (`<salida>.master.wav`), los stems en
  `<salida>.stems/` (voces, música, efectos, ambientes: la misma ganancia
  que el máster, sin el limitador) y el informe en `<salida>.banda.json`.

`mesa suena p.mesa --video v.mp4` pone la banda a un vídeo ya rodado sin
volver a rodarlo (la cronología sale de `v.gx.json`; los efectos y los
eventos de la banda, de lo que el render apuntó o de su palabra en el
sidecar). Sin vídeo, `--linea linea.json` ({beats: {id: {t}}}) da la banda
sola, en un WAV, sobre una línea de tiempo prevista.

### 3.10.13 · LOS PERSONAJES CON FICHA
Un personaje del bestiario con los parámetros `vista, pose, expresion, boca,
mano_i, mano_d, hervor` (el contrato del dibujante: `gx/ficha.py`) es una
pieza viva:

- la **vista** sale del plano de la cabecera (`* medio de LOCUTOR perfil ·
  …`) y de la dirección de lo que hace; se fuerza con `LOCUTOR de espaldas
  | de perfil | de frente | de tres cuartos | de tres cuartos de espaldas`;
- **acciones**: `LOCUTOR celebra | grita | aplaude | anda | gira el dial |
  señala`, y los verbos de movimiento (`corre`, `camina`, `cruza`…) lanzan
  su ciclo (`CICLOS` de la ficha); las poses clave van «en dos», con su
  anticipación si está dibujada;
- la **boca** de quien tiene la voz sigue sus palabras (visemas: vocales,
  bilabiales y f/v), sola, a doce dibujos por segundo;
- la **expresión** del beat sale de su afecto, y en una palabra: `al decir
  «ESPERA»: LOCUTOR se asombra` (`se asombra · se enfada · se ríe · sonríe ·
  se asusta · se entristece · se pone serio · duda · se calma`);
- el **pelo y la bufanda** (`pieza.partes`) hacen su acción secundaria
  solos; las tres poses de `hervor` se alternan a ocho por segundo.
- El hablante y su pieza se unen por el nombre o por un `alias:` del
  `REPARTO`. Un personaje es del mundo: no caduca con el ciclo del documento.

### 3.10.14 · HERVOR
`HERVOR suave` (el temblor del motor en la GPU, el de siempre), `HERVOR
dibujado` (tres poses tembladas de cada trazo, hechas una vez, a ocho por
segundo) o `HERVOR no`. Por escena.

### 3.10.15 · Combinable
Todo se combina: la cadena de cada instante es materia → lo que asoma →
espejo y pantalla partida → simultaneidad → cámara → formato → noticiario →
transición → sintoniza → el baño (papel y bobina). Una pasada se cambia
solo cuando algo cambia; sus animaciones son envolventes en el tiempo de la
escena. Ejemplos: `ejemplos/radio/` (`materias`, `camara`, `transiciones`,
`registros`, `rio`, `montaje`, `sonido`, `personajes`; el sonido y la foto
los prepara `prepara_audio.py` desde el proyecto).


## 3.11 · Cada plano es un cartel (RADIOINTERMISIÓN, dirección radical)
La lengua de la propuesta de dirección radical (§4): los signos son piezas,
la página es un espacio compuesto como un cartel, el texto se teje y la
tipografía del cuento es la partitura. Gramática en `formato/cartel.py`,
rodaje en `gx/cartel.py` (con `gx/glifos.py` y `gx/silueta.py`); el recorte
por forma y las texturas persistentes son de la rama `cartel` del motor
(Tórculo). Todo con vocabulario cerrado y sin un número.

### 3.11.1 · El plano de cartel: CARTEL y PALETA
Líneas de unidad (preámbulo, capítulo, escena; la escena manda) que valen
también dentro de un clip, solo para ese plano:

```
PALETA verde, morado y amarillo        # el campo, la figura y el acento (+ el papel)
CARTEL columna a sangre a la izquierda · figura delante de la letra · centro vacío
```

- Colores (16): `rojo · morado · amarillo · verde · azul · naranja · rosa ·
  negro · crema · minio · tinta · ultramar · celeste · lila · arena · blanco`
  (las tintas medidas en los carteles de la casa). La letra va en papel
  salvo sobre un campo claro, donde va en el color de la figura.
- Composiciones: `columna a sangre a la izquierda | a la derecha` · `diagonal
  de abajo a la izquierda arriba a la derecha | de arriba a la izquierda abajo
  a la derecha` · `tercios` · `centro vacío` · `figura delante de la letra` ·
  `la letra corta a la figura` (= `la letra delante de la figura`) · `campo a
  sangre | partido en diagonal | en bandas` · `disco detrás` · `en silueta` ·
  `enorme`.
- El compositor de zonas obedece: la columna y el centro vacío se reservan;
  las figuras van a la otra mitad, a la diagonal, al tercio o a los cantos.

### 3.11.2 · Los signos son piezas
```
LETRA «GOL» · en Anton · a sangre · girada · a la izquierda · de amarillo
«ESPERA» es un muro
«GOL» es una ventana a «EL ESTADIO»
la O de «GOL» es balon
el «¡» de «¡CÁLLATE» es vecino
la O de «GOL» se convierte en balon        balon se convierte en la O de «GOL»
las letras de «GOL» caen                    «GOL» se estampa
la raya corta «momen»
«RADIOINTERMISIÓN» forma el patio
```

- Tipos (`en …`): `League Gothic · Anton · la serifa de Pretexto (serifa) ·
  letra de mano · máquina de escribir`.
- Disposiciones: `a sangre · en columna · girada · en escalera · en abanico ·
  rota por el borde`; sitios: `a la izquierda · a la derecha · arriba · abajo
  · en el centro`; tamaño: `grande · enorme`; color: `de COLOR`.
  « / » parte la palabra en líneas.
- Papeles del signo (`«X» es un|una …`): `muro · suelo · cielo · ventana ·
  máscara · portería · persiana · barandilla · cuchilla`. `ventana`/`máscara`
  `a|de «ESCENA»` deja ver dentro de las letras la última imagen de esa
  escena (o, sin escena, las figuras del plano).
- Verbos del signo (singular: la palabra; `las letras de «X» …`: letra a
  letra, escalonadas): `cae · se estampa · se apila · se rompe · se abre ·
  se separa · se va`. Cada letra lleva su rig (pivote en la base, ojo en su
  hueco, peso) y el oficio de Lasseter (anticipación, aplastar y estirar
  conservando el volumen, sobrepaso, asiento).
- La letra que es figura toma su sitio y su tamaño; la que se convierte se
  transforma con los contornos igualados (`glifos.iguala`).
- Formas que forma una palabra: `el patio | un marco` (las cuatro paredes
  mirado desde arriba; las tildes y los puntos, ventanas encendidas) · `una
  portería` (el larguero y la red) · `una columna` · `un muro`.

### 3.11.3 · El blocking de cartel
```
en silueta: python: vecino · enorme · cortado por abajo
ESCALA vecino como grada
«GOL» tapa a pichichi           pichichi tapa «GOL»          la letra tapa al pichichi
el ojo completa «SCHLAGER»
BOSQUE de brazos y puños
```

- `en silueta:` (prefijo) o `CARTEL … · en silueta` (el plano entero): la
  pieza pasa a silueta plana de tres tintas (figura, sombra, luz) con
  facetas angulosas del lado de la sombra de la `LUZ` de la escena, sin
  redibujarla; si la pieza cambia de pose, la silueta se rehace.
- Cortes por el borde (detrás de `·` en una pieza): `cortado|cortada por
  abajo | por arriba | por la frente | por la izquierda | por la derecha |
  por el borde`.
- `ESCALA A como B`: A toma la altura de B (de todo el cuadro si B es un
  decorado a sangre). La escala es una opinión.
- `BOSQUE de brazos y puños | de brazos | de puños | de manos`: la grada como
  bosque de brazos en silueta, en dos filas.

### 3.11.3b · El blocking enorme (dirigir-saorin §40)
```
python: locutor_a · gigante · cortado por la frente
a la izquierda: en silueta: python: vecino · gigante · cortado por abajo
PANTALLA PARTIDA · desigual · inclinada
al decir «campo»: > la costura se mueve hacia «vecino»
al decir «tira»: jugador se sale del cuadro por la derecha
RÍO TIPOGRÁFICO · no
```

- Tamaños de pieza: `grande · enorme` (el alto del cuadro) · `gigante` (entre
  1,6 y 2,2 veces el alto; sin corte, se corta por abajo) · `a sangre` (llena
  lo que se ve: el 4:3 hasta las bandas, o su mitad).
- El corte decide qué se ve: `por abajo` (la cima rozando el canto de
  arriba), `por la frente` (el canto pasa por la frente: la cara entera, sin
  cráneo; la cabeza sale de `partes["cabeza"]` o de la proporción de una
  figura de pie), `por arriba`, `por la izquierda | por la derecha` (media
  figura fuera, la otra media llenando su cuadro).
- En la PANTALLA PARTIDA cada mitad es el cuadro: tamaño, sitio y corte se
  miden contra ella, y lo de una mitad no invade la otra (recorte por forma).
  `· desigual` (una mitad grande y la otra estrecha), `· inclinada` (la
  costura en diagonal); `> la costura se mueve hacia «X»`: la mitad de X crece
  (el que habla le come sitio al otro), con anticipación y asiento.
- `X se sale del cuadro [por la derecha | izquierda | arriba | abajo]`: X se
  carga, cruza el canto y el cuadro se abomba donde lo cruza y vuelve con un
  rebote (pasada `empuje`, detrás del formato: las bandas también ceden).
- `RÍO TIPOGRÁFICO · no` apaga el río en esa unidad (tampoco lo enciende la
  PARTITURA).
- `TEJE` y `SINTONIZA` aceptan tamaño y disposición (`· enorme | gigante · a
  sangre · en columna · girada …`); `gigante` hace la palabra más ancha que el
  cuadro y la última línea la corta el borde de abajo, como la pantalla de
  carga de Pretexto.

### 3.11.3c · La salvaguarda: lo esencial no se corta
Un corte por el borde (y `gigante`) nunca se lleva lo esencial de la pieza:
la cara y la boca de quien habla, la mano que actúa, el objeto que importa
(lo que la pieza declara en `partes` —`cara`, `boca`, `cabeza`, `mano`,
`objeto`— o en `_esencial`; si no declara nada, su centro). Si el corte lo
saca, la pieza vuelve lo justo; si ni lo esencial cabe, encoge alrededor de
ello. Las letras que hay que leer se leen: ningún corte se lleva más de un
pelo de una letra (un cuarto, si se pidió `rota por el borde` o `gigante`);
el muro llena el cuadro de alto y deja la palabra entera de ancho. El permiso
se escribe: `· sin leer` (en la pieza o en la LETRA) deja cortar lo que sea.

`«ESPERA» es un muro` con el río en fila: el muro deja sitio a la derecha y
el río se estrella contra su cara (cada palabra se aplasta y cae al montón).
`la raya corta «momen»` corta la palabra donde esté: en el cartel o dentro
del río (se para en seco y se parte). Una composición escrita suelta en el
clip (`la letra corta a la figura`, `centro vacío`) es la del plano.

### 3.11.4 · El texto se teje
```
TEJE «RADIO / INTERMISIÓN» · en la serifa de Pretexto · con la aguja del dial
SINTONIZA «RADIOINTERMISIÓN»
«RADIOINTERMISIÓN» se interrumpe en «RADIO»
«RADIOINTERMISIÓN» sigue
los hilos de VECINO y LOCUTOR se entretejen
FRASES «así es» · «hoy nos espera una jornada» · «de tensiones vecinales»
> la tela se enreda          > la tela se desenreda          > se desteje
> la mancha deja «ES AZUL» en reserva
```

- `TEJE`: la palabra se teje fila a fila mientras la lanzadera (o la aguja
  roja del dial) va y vuelve. Las letras son la forma (recorte por forma: el
  borde nítido) y dentro se ve la malla de puntadas en V que deja la
  lanzadera, sobre la letra en un tono más claro. Por defecto, `gigante`.
- `SINTONIZA`: las letras llegan desordenadas, parpadeando y desregistradas
  entre estática, y se ordenan cuando la aguja se clava.
- `se interrumpe en «X»`: la palabra se compone entera pero solo se ve hasta
  X, y queda guardada; `sigue`, en otra escena, la recompone igual y teje lo
  que faltaba (el título con una intermisión dentro).
- `los hilos de A y B se entretejen`: dos hilos con los colores del REPARTO.
- `FRASES`: la banda de frases de colores que corre por arriba.
- La tela (`> la tela se enreda`, `> se desteje`) es una pasada con estado
  del motor: el enredo se acumula fotograma a fotograma; al destejer, cada
  pasada de hilo se va de derecha a izquierda a su ritmo y queda el papel.
- `> la mancha deja «X» en reserva [de COLOR]`: una mancha crece hasta llenar
  el cuadro y deja las letras de X en blanco (recorte por forma, «fuera»).

### 3.11.5 · La tipografía del cuento como partitura
```
PARTITURA texto/cuento.md
```

En el preámbulo. El compilador busca en el texto original el tramo que dice
cada beat y su tipografía propone lo que el clip no dice: cursiva (`_…_`,
`*…*`) → la radio (río en fila); guion (`- …`) → el vecino (su grito en letra
de cartel); raya (`— …`) → la cuchilla corta la última palabra del tramo
anterior; MAYÚSCULAS → revientan; un párrafo largo sin puntuación → `la
cámara no para`. Lo que el clip declara manda.

Solo se GRITA lo que es un grito: una exclamación o unas mayúsculas breves
(hasta diez palabras) van en letra de cartel; una frase dicha del vecino (con
su punto, aunque sea corta) va en una tira pequeña de papel recortado al canto.
Ningún rótulo tapa una cara del plano (lo esencial de cada figura con `cara`,
`boca` o `cabeza`): se aparta a una banda o a un lado y, si no cabe, encoge.
Una `LETRA`, `TEJE` o `SINTONIZA` del clip sustituye al grito o la tira de la
partitura. Para apagarla: `PARTITURA · no` (en una escena o un clip: nada de la
partitura) o `PARTITURA · sin gritos` (ni grito ni tira; el resto sí); en un
clip también `sin partitura` y `sin gritos`.

### 3.11.6 · El motor (rama `cartel` de Tórculo)
- `mob.set_clip("mascara" | "dentro" | "fuera", nombre)`: recorte por forma
  en la composición (el estadio dentro de GOL, la mancha que deja letras en
  reserva, la raya que parte una palabra); vale en vista 3D.
- `m.Pass(shader, estado="nombre", pasos=N, paso="paso")`: textura
  persistente de la cadena (`@group(2)`), paso fijo determinista; el estado
  sobrevive a los cambios de cadena.

Ejemplos: `ejemplos/cartel/` (`signos`, `composicion`, `tejido`,
`partitura`).


## 3.12 · La imagen que oye, la luz, el soporte y la intensidad (backend gx)
Lo que pidió la especificación de radicalidad de RADIOINTERMISIÓN (§5 la
imagen que oye, §6 el color y la luz, §7 la degradación como dramaturgia,
§8 y §9.6 la intensidad como parámetro de dirección). Vocabulario CERRADO
(`formato/oye.py`), sin números: los pone el motor (`gx/oye.py: OFICIO`,
`gx/materias/luz.wgsl`, `gx/materias/soporte.wgsl`, `gx/espectro.py`,
`oido.py`). Ejemplos que se miran: `ejemplos/oye/*.mesa` (antes, `python
prepara.py`: el sidecar con las tomas del proyecto).

### 3.12.1 · El oído: lo que suena, en curvas
El motor oye el audio real: la voz de cada beat (el wav del sidecar), la
`CAMA` y el `JINGLE` de la escena, cada `sonido:` y lo que el espectrograma
haga sonar. Cada wav se lee una vez y se guarda en la caché como curvas a
cien muestras por segundo, con su contenido como llave (`oido.py`):

| curva | qué es |
|---|---|
| `intensidad` | volumen en escala absoluta (−50 dBFS → 0, −6 → 1), con ataque rápido y suelta lenta; se suma en potencia entre pistas |
| `relativa` | volumen respecto a la propia toma (lo que una palabra se dice más fuerte que otra) |
| `tono` | altura respecto al tono medio de la toma, en octavas (YIN) |
| `ataque` | impulso en cada sílaba o golpe, que decae; `ataques` son esos golpes |
| `centroide` | el brillo del sonido |
| `bandas` | el espectrograma en 32 bandas logarítmicas |

`python -m manim_saorin.oido toma.wav --png curvas.png [--palabras
sidecar.json:r03_03]` dibuja lo que el oído oyó y mide cada palabra.

**Pistas** (vocabulario cerrado): `la voz` (quien habla en el beat), `la
música` (cama, jingle y temas), `la cama`, `los efectos`, `la radio` (todo
lo que suena), un efecto de `EFECTOS` (o un cue de `BANDA`) entre comillas
(`«estadio rugido gol»`), o el nombre de lo que suena sin comillas (`del
estadio`: el ambiente o el efecto que suena con ese nombre; si no suena
ninguno, el primer efecto que lo lleve, los ambientes primero). El oído oye
también la `MÚSICA`, el `AMBIENTE` y los eventos de la banda (§3.10.12.1).

### 3.12.2 · Las frases de la imagen que oye
En una unidad (preámbulo, capítulo o escena) valen para toda ella; en un
clip, con `>` o sin él, desde ese instante hasta el final del beat (y se
anclan: `al decir «GOL»: > la cámara respira con la voz`).

```
la cámara respira con PISTA        la intensidad empuja hacia delante, el tono sube o
                                   baja la altura, cada golpe de sílaba da un temblor
> la cámara deja de respirar
el río mide la voz                 en el río, cada palabra mide lo que la voz hizo con ella
la luz sube con PISTA              la fuerza de la LUZ de la escena sigue a la pista
el dial es la línea de tiempo      (preámbulo) la aguja de todo dial avanza con el corto
                                   y salta de emisora en cada cambio de mundo
X es el espectrograma de PISTA     (clip) la superficie X hecha del espectrograma
                                   («el campo es el espectrograma del estadio»)
```

- **La cámara respira**: un delta sobre el encuadre que se deshace y se
  rehace en cada fotograma (se suma a lo que haga la cámara). Empuja con la
  frase (volumen relativo y absoluto, suavizado) y con el pulso de cada
  palabra; sube con el tono; tiembla con los golpes. Su fuerza crece con la
  INTENSIDAD si el pliego la declara. Una cámara física que la quiera como
  fuerza lee `mesa._oido.respiracion(t)` (ver `NOTAS_LENGUA.md`).
- **El río mide la voz** (`RÍO TIPOGRÁFICO` en cualquiera de sus modos):
  el cuerpo de cada palabra es el volumen con que se dice; su peso (de
  ultraligera a negra), la emoción (volumen, tono y lo que el tono se
  mueve); su inclinación, la velocidad (sílabas por segundo respecto a la
  toma); y una palabra que dura más de lo que pide (un GOOOOOOL) se estira
  mientras se dice y se escribe lo que dura.
- **El espectrograma**: abajo, las graves (cerca) son la hierba: cada brizna
  mide su banda en ese instante y el viento que la inclina es el brillo del
  sonido; arriba, las agudas (lejos) son la grada: una cabeza por celda, del
  tamaño del grito; la valla las separa. El paisaje corre con el sonido (lo
  que suena ahora, en el centro); si el sonido no sonaba, lo hace sonar. Si
  hay en la mesa una pieza con ese nombre, el espectrograma la cubre; si no,
  se pone a sangre en la mitad de abajo y se llama así en el índice.
- **El dial**: toda pieza con partes `aguja` y `escala` (la `radio` y la
  `banda_frecuencias` del bestiario) lleva la aguja donde va la película
  (los DUR del pliego entero, también al rodar un capítulo suelto); en cada
  escena nueva salta, con sobrepaso y asiento, y dentro de ella tiembla y
  avanza despacio.

### 3.12.3 · La luz y el color
La `LUZ` de la escena (que ya decía de dónde caen las sombras) dice además su
FUENTE: una sola, dura, por mundo. Va la primera de la cadena: la materia
imprime ya la luz.

```
LUZ de «radio» · desde abajo · ámbar   la fuente sale de esa pieza; todo lo demás es noche
                                       (desde abajo | desde arriba | desde la izquierda |
                                       desde la derecha; un tambor para su color)
LUZ de los focos · en contraluz        las figuras en silueta plana con un filo de luz,
                                       el fondo arde; los destellos, formas de risografía
LUZ plana · de estudio                 el brillo plano del anuncio
COLOR monocromo [TAMBOR] | COLOR pleno la escena en un solo tambor (humo: el gris frío)
> estalla el color [en «X»]            el color vuelve desde X en un frente mellado
> el color se apaga                    y se vuelve a ir
> destellan los focos                  un destello (los golpes de la pista que sube la luz
                                       también destellan, en contraluz)
```

La fuente va pegada a su pieza: si la pieza o la cámara se mueven, la luz se
mueve con ellas. La luz de la fuente se recorta en tres tonos planos con un
borde de papel cortado (luz de cartel, no de render).

### 3.12.4 · El soporte: la degradación como dramaturgia
```
SOPORTE limpio | usado | gastado | sucio | roto
> el soporte empeora          un paso más: grano, desregistro, trama, tinta corrida
> el soporte se deshace       la imagen pierde su materia (la disolución)
> el soporte se limpia        papel limpio otra vez, casi blanco, y se asienta
```

El soporte dura TODA la película: lo que un gol estropea sigue estropeado en
la escena siguiente. El `SOPORTE` del preámbulo es el de partida; el de una
escena o un capítulo se pone al abrirla. La pasada `soporte` va tras la
cámara (el papel no se mueve con ella): desregistro de las tintas (a doce
dibujos por segundo), tinta corrida en la fibra y alguna mancha, trama de
medio tono en los grises, grano, y la materia que se va con un borde de
fibra.

### 3.12.5 · La intensidad como parámetro de dirección
```
INTENSIDAD PALABRA [· extraña] [· con PISTA]
INTENSIDAD de PALABRA a PALABRA [· …]      una rampa a lo largo de la escena
> la intensidad sube a PALABRA | cae a PALABRA | salta a PALABRA
PALABRA ::= nula · quieta · serena · templada · viva · agitada · tensa ·
            encendida · desatada · furiosa · rota            (0 … 10)
```

`· con la voz` hace que la pista empuje la curva arriba y abajo; `·
extraña` invierte la inclinación y manda el desregistro en vertical (la
disolución). La curva gobierna a la vez, sin otra línea:

| qué | cómo |
|---|---|
| temblor | cámara de mano continua, de nada (por debajo de viva) a unos 20 px |
| inclinación | el holandés que crece por grados (desde tensa; unos 11° en rota) |
| desregistro | de las tintas, en la pasada del soporte (el termómetro) |
| grano | en la pasada del soporte |
| duración de plano y montaje | `MONTAJE al pulso` corta con la duración que pide (de 4 s a 2 fotogramas) |

`mesa intensidad p.mesa [--json curva.json]` imprime el mapa del pliego
(como el de la especificación, con su tira) y escribe la curva y lo que
gobierna para otros frentes. En el rodaje: `mesa._direccion.intensidad(t)`
y `mesa._direccion.parametro("temblor" | "plano" | "desregistro" | "grano" |
"inclinacion" | "montaje", t)`.

### 3.12.6 · En la cadena
luz → materia → asoma → espejo → simultaneidad → cámara (con el giro de base
de la intensidad) → soporte → formato → noticiario → transición → sintoniza
→ baño. La luz y el soporte leen sus curvas de una lámina de una fila
(`pictures=`), muestreada con el tiempo de la escena: se ponen una vez por
beat (y cuando un evento cambia algo) y se animan solas.

## 3.13 · La cámara como objeto, la profundidad, el tiempo y el cuadro (RADIOINTERMISIÓN)
La especificación de radicalidad del corto (§9.1–9.4 y §9.7) pide una cámara
de verdad, no un desplazamiento de imagen: con masa, con lente, con
profundidad, que se monta en las cosas, que atraviesa marcos y letras; un
tiempo que se rompe por capas; un cuadro que es un objeto; y una forma
explícita de romper las reglas con permiso. Todo es vocabulario CERRADO
(`formato/camara.py`), sin una cifra: los números viven en el motor
(`gx/operador.py: OFICIO_CAMARA`, `gx/profundidad.py: OFICIO_FOCO`,
`gx/tiempo.py: OFICIO_TIEMPO`, `gx/cuadro.py: OFICIO_CUADRO`). Se rueda con
`--motor gx`. **Sin nada de esto en el pliego, nada cambia**: el operador no
toca el encuadre, la escena sigue en 2D.

```
UNIDAD   ::= … | "CÁMARA" cámara {"·" cámara} | "HORIZONTE" horizonte
           | "CADENCIA" cadencia {"·" cadencia} | "GOLPES" golpe {"·" golpe}
           | "PISTA ÓPTICA" [lado_pista]
cámara   ::= normal | gran angular | teleobjetivo | ojo de pez       (la lente)
           | ligera | con masa | pesada                             (la masa)
           | en trípode | al hombro                                 (la mano)
           | profundidad total | poca profundidad                   (el foco)
horizonte ::= recto | se inclina | gira
cadencia ::= BLANCO ("en uno" | "en dos" | "en tres" | "en cuatro")
BLANCO   ::= las figuras | la letra | el fondo | lo de delante | la cámara | todo
golpe    ::= con impacto | con borrón
lado_pista ::= a la izquierda | a la derecha
DISTANCIA ::= delante | al pie | cerca | al paso | a media distancia | lejos
           | al fondo | en el horizonte | en el cielo                 (prefijo: `lejos: python: fachada`)
formato  ::= … ["·" "bandas de papel"]
```

### 3.13.1 · La cámara como objeto físico
La cámara de una escena con cualquiera de estas cosas es la **cámara 3D de
ManimGX** (perspectiva real): el papel y los muebles de la página se van
detrás del cielo, agrandados para que no se les vea el canto aunque la
cámara gire. Es un delta sobre el encuadre: lo que hacen los demás (el zoom
de golpe, la cámara pegada, los cortes del montaje, la respiración de la
imagen que oye) se suma y no se pelea.

| escrito | qué hace |
|---|---|
| `CÁMARA ligera · con masa · pesada` | la masa del operador: arranca un pelo tarde, se pasa del objetivo y vuelve (sobrepaso y asiento) |
| `> la cámara va a «X»` | panorámica con masa hasta X |
| `> la cámara se acerca a «X»` · `> la cámara se aleja` | travelling de verdad (dolly): lo de delante crece más que lo de detrás; lo que está entre medias pasa por delante |
| `> la cámara sube` · `> la cámara baja` | grúa |
| `CÁMARA normal · gran angular · teleobjetivo · ojo de pez` y `> gran angular`… `> lente normal` | **focal y distancia separadas**: el ancho que se ve en el plano del sujeto no cambia; el gran angular separa las capas (paralaje fuerte) y abomba un poco, el teleobjetivo las aplana (la grada como un muro), el ojo de pez abomba mucho y deja las esquinas fuera de su círculo |
| `> vértigo [sobre «X»]` · `> vértigo al revés [sobre «X»]` | el travelling con zoom inverso de Hitchcock: X se queda del mismo tamaño y el fondo se estira (o se echa encima). Necesita capas |
| `CÁMARA al hombro` · `> la tensión sube | cae | rompe | se mantiene` | **el temblor es una curva continua de tensión**: parte del afecto del clip, sube con cada palabra dicha (más con un grito en mayúsculas) y con la intensidad de la imagen que oye, baja en los silencios; `rompe` es un pico y un vacío |
| `HORIZONTE se inclina` · `> el horizonte se inclina` · `> el horizonte se endereza` | el holandés que no es fijo: un paso más en cada golpe (temblor, zoom de golpe, arranca de golpe, lo que revienta en el río, el salto axial); es del partido, no se reinicia al cortar. `HORIZONTE gira`: el cuadro no para de girar |
| `> el cuadro gira [a la izquierda | a la derecha]` · `> el cuadro se endereza` | el cuadro gira noventa grados, con masa: la fila se vuelve columna |
| `> la cámara va montada en «X»` | snorricam: X quieta en el centro, el mundo corriendo alrededor; el cuadro se ladea con su cuerpo |
| `> la cámara gira alrededor de «X»` | órbita: las piezas son láminas de papel en el espacio y se les ve el canto |
| `> tiempo bala sobre «X»` | el congelado vivo y la órbita a la vez (el instante congelado) |
| `> la cámara entra en «X»` · `> la cámara sale de «X»` | atravesar: por el hueco de la pieza (la O de «GOL» de la rama `cartel`, si está; si no, su centro) hasta dejarla atrás; o empezar dentro y salir |
| `> la cámara mira desde dentro de «X»` | desde dentro de las cosas: X pegada a la cámara, tan grande que su canto enmarca el plano (la costura del balón, la tapa del congelador, la boca); la cámara se mece dentro |
| `> la cámara atraviesa` | atraviesa todas las capas, de delante al fondo |
| `> plano secuencia por «A», «B» y «C»` | una trayectoria sin corte que pasa por las piezas en orden, atravesándolas |
| `> salto axial a «X»` · `> triple salto axial a «X»` | Kurosawa: saltos secos sobre el mismo eje, sin muelle |
| `> barrido a la derecha` (el primero del clip) | el látigo como transición (§3.10.5): ya existía |
| `> pasa por delante «X»` | lo que tapa el plano: una forma enorme (del bestiario, o una silueta plana; `bufanda` es una bufanda a rayas) cruza pegada a la cámara; **escrito el primero del clip, el corte va escondido debajo** |
| `> la cámara vuelve` | deshace también todo lo del operador (salvo el horizonte, que es del partido) |

### 3.13.2 · La escena con profundidad
`lejos: python: fachada` pone la pieza a esa distancia de la cámara,
agrandada lo justo para verse en reposo donde el compositor la puso: **el
paralaje no se declara**, sale de la perspectiva al moverse la cámara. Una
capa es del mundo (dura su escena; si el clip siguiente la vuelve a pedir a
la misma distancia, se queda la que había). Lo que va `· a sangre` a una
distancia se agranda de más para que la cámara no le vea el canto. **El
cielo está en el infinito**: lo de `en el cielo` no tiene paralaje al
moverse la cámara, no cambia de tamaño con la lente y su campo se ensancha
(sin mover la luna) para que nunca se le vea el canto.

**El foco** (§3.7.6, ahora vivo en GX y anclable a la voz):

| escrito | qué hace |
|---|---|
| `el foco en X` | X nítido; lo que está a otra distancia, desenfocado según cuánto se aleje (con capas); sin capas, foco selectivo |
| `el foco pasa a X` | el cambio de foco, sin corte |
| `el foco en X y en Y` | la dioptría partida (De Palma): cada mitad del cuadro, enfocada a su distancia |
| `todo en foco` | la profundidad de campo total (Welles) |
| `CÁMARA poca profundidad · profundidad total` | cuánto desenfoca lo que no está a la distancia del foco |

**Lo desenfocado no es un blur fotográfico** (§5.9): está más pálido, con el
canto blando y algo más grande (un halo de copias tenues de la pieza). El
texto no se desenfoca nunca, salvo `> sin leer porque «…»`.

### 3.13.3 · El tiempo por capas
| escrito | qué hace |
|---|---|
| `CADENCIA las figuras en dos · el fondo en cuatro · la cámara en uno` | cada capa dibuja a su ritmo: lo retenido enseña el dibujo de su último tic y la animación sigue por debajo. `el fondo` son las capas de `lejos` en adelante; `lo de delante`, `delante`, `al pie` y `cerca`; `todo`, el cuadro entero |
| `> rampa de velocidad` | lo que se mueve a partir de ahí va a velocidad real, se frena hasta casi parar y arranca de golpe |
| `> cámara lenta a saltos` | step-printing (Wong Kar-wai): lenta, cada dibujo tres fotogramas y una estela de los dos anteriores; hasta el corte |
| `> todo se para menos «X»` | el congelado vivo de todo menos una cosa (la cámara también se queda quieta); `> arranca de golpe` lo suelta |
| `> barrido temporal [hacia abajo | hacia arriba | hacia la derecha | hacia la izquierda]` | slit-scan: una rendija recorre el cuadro y cada franja se queda con el instante en que pasó por ella; luego se suelta |
| `GOLPES con impacto` · `> fotograma de impacto` | en cada golpe, un fotograma de silueta pura: a dos tintas (tinta sobre minio) o en negativo, alternando |
| `GOLPES con borrón` · `X corre … · con borrón` | en los gestos rápidos, el cuerpo estirado en un solo fotograma (smear): el canto que va delante se queda y lo de detrás se estira |

### 3.13.4 · El cuadro como objeto
| escrito | qué hace |
|---|---|
| `FORMATO 2,39:1 · bandas de papel` | las bandas son dos tiras de papel entintado con canto rasgado, pegadas al cuadro (ya no una pasada) |
| `> las bandas bajan` · `> las bandas suben` | como persianas, con su rebote |
| `> se rasga la banda de arriba | de abajo | …` | la banda se rasga por una línea quebrada y sus mitades caen |
| `X empuja | agarra | arrastra la banda de abajo` | X va al borde y la aparta para pasar |
| `X se apoya en la banda de abajo` | como en una barandilla; la banda cede un poco |
| `> asoma «ESCENA» en «X»` | el cuadro dentro del cuadro: la última imagen de otra escena dentro de una pieza (la tele, la ventana, el visor); con `> la cámara entra en «X»` el corte cae dentro |
| `> la línea se mueve a la izquierda | a la derecha | al centro` · `> la línea se inclina` · `> la línea se endereza` · `> la línea se rompe` | la costura de la `PANTALLA PARTIDA` es una raya del mundo: se mueve, se inclina, se parte, y un personaje la cruza por delante |
| `PISTA ÓPTICA` · `> la pista se desborda` · `> la pista vuelve` | la pista de área variable al borde, con la onda de la voz que suena (del wav del sidecar); desbordada, llena el cuadro |
| `> se ven las perforaciones` · `> se van las perforaciones` · `> el fotograma se descarrila` | el celuloide: los agujeros a contraluz; el fotograma resbala, se ve la línea de fotograma y vuelve a engancharse |
| `X mira a cámara` | la cuarta pared (una línea de ficha): de frente, serio, y la cámara se le acerca, pesada |

### 3.13.5 · Romper con permiso
El compositor y la revisión Lasseter tienen reglas. Un plano puede romperlas
a sabiendas, **con su porqué** (la frase del texto que lo pide). Romper
queda escrito: el lint exige el `porque`, `mesa por-que` lo cuenta y la
revisión Lasseter lo lista aparte («roto con permiso») sin contarlo como
error.

| escrito | qué regla rompe |
|---|---|
| `> rompe el eje porque «…»` | el eje (el aviso de SALTO DE EJE; equivale a `> cruza el eje`) |
| `> se sale del cuadro porque «…»` | nada fuera de cuadro: la pinza no recoloca las piezas de ese plano |
| `> sin leer porque «…»` | la legibilidad: el aviso de lectura y la regla de no desenfocar texto |
| `> demasiado rápido porque «…»` | los movimientos de menos de ocho fotogramas, lineales o sin anticipación |
| `> todo a la vez porque «…»` | no más de tres cosas moviéndose a la vez |
| `> sin respiro porque «…»` | la pausa viva al final del beat |

**Los encuadres incómodos con nombre** son ya roturas declaradas (del
cuadro y, los que cortan, de la talla): el `porque` se escribe igual.

| escrito | qué encuadre |
|---|---|
| `> demasiado cerca de «X»` | X desborda el cuadro por todos lados: la boca, los dientes |
| `> cortado por la frente «X»` · `> cortado por la barbilla «X»` | el borde corta la cabeza: solo la boca que grita y la bufanda (o al revés) |
| `> aire al revés «X»` | X pegada al borde y todo el cuadro vacío detrás de ella |
| `> mirando fuera de campo «X»` | X pegada al borde mirando hacia fuera; lo que mira no se enseña |
| `> el que habla fuera de campo` | la voz de uno sobre la cara del otro, que escucha |
| `> cuadro vacío [«X»]` | el sitio sin la persona (o sin quien habla) mientras se oye su voz |

### 3.13.6 · Combinable
La cadena de cada instante queda: materia → lo que asoma → espejo y pantalla
partida → simultaneidad → cámara → **lente** → **tiempo** (impacto, barrido
temporal) → formato → noticiario → **cuadro** (perforaciones,
descarrilamiento) → transición → sintoniza → el baño. El operador consume la
respiración y la intensidad de la imagen que oye (rama `oye`) como fuerzas.
Ejemplos que se miran: `ejemplos/camara/` (`capas`, `lentes`, `mano`,
`atraviesa`, `tiempo`, `cuadro`, `romper`; el sonido lo prepara
`prepara_audio.py` desde el proyecto).

**Trampas**: las piezas sin `al decir` se reparten por las frases de la
voz (la segunda pieza cae en la segunda frase): ancla los eventos de cámara
después de que entren sus piezas, o ancla las piezas a la primera palabra.
Si la pieza aún no ha entrado, el operador espera a que entre. Un
movimiento va hasta otra pieza o `hasta fuera de campo [por la izquierda |
por la derecha]` (no hasta «la derecha»).

**Lo que no hace todavía**: un plano secuencia que cruce de una escena a
otra sin corte (dentro de una escena sí; entre escenas, `> la cámara entra
en «X»` deja el corte escondido); el desenfoque de lo que no tiene capas es
selectivo por pieza, no por distancia; la cadencia por capa retiene la
forma (los puntos) pero no el color.

## 3.14 · El proyecto portable: `mesa empaqueta`, `desempaqueta`, `comprueba`
Un corto de la casa es **el pliego + su bestiario + su sonido** (la voz con
su sidecar, los efectos, la música) **+ lo que el pliego lea** (la
PARTITURA, un TALLER importado, los clips, el lock de las láminas, la ficha
de los clips). Nada se apunta a mano: `formato/paquete.py` lo **descubre**
leyendo el pliego y el bestiario (con `ast`, sin ejecutar código del
proyecto).

```bash
mesa comprueba x.mesa [--lista] [--arregla]   # ¿completo y portable?
mesa empaqueta x.mesa [-o x.mesapack]         # un solo archivo
mesa desempaqueta x.mesapack [carpeta] [--instala-fuentes]
```

### 3.14.1 · Qué entra
| de dónde | qué |
|---|---|
| el pliego | él mismo; `<pliego>.lock`; `clips/fichas.json`; toda palabra de una línea que sea un archivo o carpeta del proyecto (`PARTITURA`, `TALLER x.taller`, `clip:`, `foto: x.jpg`, `MUSICA`) |
| `EFECTOS`, `BANDA` | todos los audios de la carpeta: el motor los busca por nombre y, a veces, por aproximación en la tabla entera |
| `PYTHON` | el cierre de imports locales del bestiario y las cadenas que nombran archivos del proyecto |
| la voz | el sidecar, **reescrito con rutas relativas al pliego**; las tomas que vivían fuera (la caché de Supertonic) entran en `audio/voz/` |
| las fuentes | las de `LETRA … · en X` y las `fuente="X"` del bestiario: si están en el motor (`fuentes_cartel`) o en macOS no viajan; si las instaló el usuario, van en `_fuentes/` |
| el archivo de la casa | las fotos de `foto:` que ya están en la caché, en `_archivo/` (vuelven a la caché al desempaquetar) |

Lo que el bestiario lee **de la instalación** (Tórculo, `~/Library/Fonts`)
no viaja: queda escrito en el manifiesto.

### 3.14.2 · El paquete
Un zip (los audios, vídeos e imágenes sin recomprimir) con el árbol del
proyecto y `MANIFIESTO.json`: `formato` (`mesapack 1`), `pliego`, `titulo`,
`versiones` (la lengua, `EPOCA_MESA`; el motor, versión, commit y rama de
manim-saorin; Tórculo y su ManimGX, por commit), `voces` (el reparto con
sus voces y cuántas tomas hay de cada método), `fuentes`, `externos`,
`no_portable` y `archivos` (sha256, bytes y **por qué** entra cada uno).

`desempaqueta` no escribe fuera de su carpeta (rechaza rutas absolutas y
`..`), comprueba cada hash y termina con `comprueba`.

### 3.14.3 · Las rutas relativas, en todo el motor
Un sidecar puede guardar cada wav **relativo a su propia carpeta** (la del
pliego) o absoluto. `tiempos.carga_sidecar` resuelve las relativas al
cargar, así que valen en `mesa toca`, en `--motor gx` (también con
`--tiempos` de otro pliego), en la voz por el motor (`m.sidecar`), en el
oído, en la mezcla y en `sentido voz`. `mesa graba` ya escribe relativas
las tomas que caen dentro del proyecto.

Un proyecto **copiado o movido** cuyo sidecar apunta a la carpeta vieja se
reancla solo: si la misma toma (mismo sufijo de ruta y mismo tamaño) está
en la carpeta nueva, se usa esa. `mesa comprueba --arregla` deja el sidecar
relativo (con copia `.bak`) y trae al proyecto la voz que vive fuera.

### 3.14.4 · `mesa comprueba`
Error (sale con 1): falta algo (el bestiario, la PARTITURA, una toma, la
carpeta de EFECTOS), una ruta absoluta al propio proyecto en el bestiario,
tomas con ruta absoluta o fuera del proyecto, un bestiario o una carpeta de
sonido fuera del proyecto. Aviso: una fuente que no está en ningún sitio;
en un proyecto desempaquetado, la lengua, el motor o Tórculo distintos de
los del paquete y los archivos que cambiaron desde que se empaquetó.

**Medido** (2026-10-15): RADIOINTERMISIÓN entera cabe en 219 archivos y
199 MB (de los 3,1 GB de la carpeta); desempaquetada en otra carpeta, la
animática de la secuencia 8 (`--cap 9 --sonido --motor gx`) sale **idéntica
bit a bit** (vídeo y audio) a la del proyecto original, y un vigía de
auditoría de Python no registró una sola lectura de la carpeta original.

## 3.15 · La vida (dirigir-saorin §41, ley fundamental)
> José Luis, 15-10-2026: «TODO debe estar vivo, moverse, cambiar de ángulo,
> tener acciones, que sus extremidades cambien. Alejarse, acercarse, etc.
> ESTA ES UNA LEY FUNDAMENTAL: LA VIDA».

Ningún personaje ni objeto se queda en su pose fuera de los frenos del
vídeo. La vida va **por defecto**: el pliego no la escribe; escribe las
acciones y los giros, y el motor pone lo demás. Backend: `--motor gx`
(`gx/vida.py` el cerebro, `gx/ficha.py` el dibujo, `gx/objetos_vivos.py`,
`gx/vida_mide.py` la comprobación).

### 3.15.1 · El esqueleto: el contrato ampliado de la ficha
Una ficha del bestiario (§3.10, `vista, pose, expresion, boca, mano_i,
mano_d, hervor`) anima POR ESQUELETO si además declara:

```python
fn.ANGULOS(nombre) -> dict   # la pose clave «nombre» en ángulos
fn.MANOS_LIBRES = ("i",)     # con qué brazos gesticula (opcional; el del
                             # micrófono no se suelta)
```

y acepta `pose` como diccionario de ángulos y `vista` en grados (0 frente,
40 tres cuartos, 90 perfil, 140 tres cuartos de espalda, 180 espalda). El
vocabulario del esqueleto es el del muñeco de estudio:

| clave | qué es |
|---|---|
| `x`, `z`, `baja` | la pelvis: dónde está y cuánto se agacha |
| `inclina`, `ladea`, `torsion`, `giro` | el tronco y el cuerpo entero |
| `cabeza = (giro, cabeceo, ladeo)` | el cuello |
| `brazo_d/i = (barrido, separación, codo)` | hombro y codo (la mano va con el antebrazo) |
| `pierna_d/i = (barrido, separación, rodilla)`, `pie_d/i` | cadera, rodilla, tobillo |
| `melena` | la capa del pelo largo |
| `parpado` (0..1), `mirada = (dx, dy)`, `ceja` | el rostro: lo suma la cara sobre la expresión |

Sin ese contrato la ficha vive como **marioneta**: sus poses dibujadas y,
encima, la misma vida aplicada a sus partes por sus pivotes (`partes` con
`pivote_mob`: el cuerpo que respira y se balancea sobre los pies, la
cabeza y los brazos que giran).

### 3.15.2 · Pose a pose, con Lasseter
Una acción (`X celebra`, `X señala`, `X se sienta`) no cambia de dibujo de
golpe: cada articulación va de la pose que tenía a la nueva con su
intercalado, redibujando la pluma «en dos» (doce dibujos por segundo):

- **anticipación**: un amago hacia atrás antes de salir (el 20 % del
  tiempo, un 10 % del recorrido); si la ficha tiene `<acción>_anticipa`,
  esa pose va delante;
- **sobrepaso y asiento**: sale con decisión, se pasa y asienta;
- **superposición**: el tronco tira; los brazos llegan 0,05 s después, el
  codo y la mano 0,1 s, la cabeza 0,1 s, el pelo 0,16 s;
- la **duración** sale de cuánto se mueve el cuerpo (0,22 a 0,75 s);
- una pose nueva que llega antes de asentarse la anterior empalma sin
  salto (cada articulación sale de donde estaba en su propio tiempo).

Los **ciclos** (`corre`, `anda`, `habla`, `aplaude`) interpolan entre sus
dibujos con la fase continua y se desplazan con el movimiento de la pieza
(`X corre hasta Y`).

### 3.15.3 · La capa de vida por defecto
Todo personaje con ficha en cuadro, sin que el pliego lo diga, y con
semilla (la misma toma, la misma vida):

- **respira** (periodo propio de 3,4 a 4,4 s): pecho, brazos, cabeza;
- **cambia el peso de pierna** cada 2,4 a 5 s: la cadera cae del lado que
  descansa, esa rodilla se afloja y adelanta (se lee de frente y de perfil);
- **se reorienta**: el cuerpo gira unos grados cada 3 a 6 s (cambia de
  ángulo);
- **mueve la cabeza y la mirada** cada 0,9 a 2,3 s, con sobrepaso; nunca
  enseña la nuca (si el cuerpo no está ya de espaldas, la cabeza no pasa
  del perfil);
- **ajusta las manos** cada 1,5 a 3,6 s (la del micrófono, apenas);
- **parpadea** cada 2 a 4,8 s (a veces dos veces);
- **tics** de quien no habla cada 3 a 6,5 s: se ajusta las gafas, la mano a
  la cadera, se rasca la nuca, la mano a la barbilla, al pecho;
- debajo de todo, una **deriva lenta** (moving hold) que nunca deja la
  silueta quieta;
- la **energía** sale del afecto del beat (eufórico 1,45 … exhausto 0,6).

### 3.15.4 · Actuar la voz
Quien tiene la voz del beat la actúa a partir del sidecar (las palabras y
sus tiempos), sin una palabra en el pliego:

- un **gesto en la tónica** de las palabras con contenido (la sílaba
  tónica sale de la ortografía: la tilde manda; si no, llana si acaba en
  vocal, n o s), uno por golpe de frase (al menos medio segundo entre
  golpes): preparación (anticipación), golpe rápido, retención y vuelta;
- el **repertorio** de cada personaje (de su semilla): batuta, abre, puño,
  cuenta, ofrece, corta, señala; nunca el mismo dos veces seguidas;
- la **cabeza** cabecea en el golpe y el **tronco** se inclina hacia quien
  escucha mientras dura la frase;
- las **MAYÚSCULAS** y las exclamaciones son **gritos**: el cuerpo entero
  (los brazos arriba con los puños, el pecho atrás o hacia el micrófono, la
  cabeza arriba, temblor); las vocales estiradas (GOOOOL) más;
- «**jajaja**» es una risa que sacude (cuerpo, hombros y cabeza) con la
  cara de risa.

**Quien escucha reacciona**: mira al que habla (cabeza y ojos), asiente en
una de cada tres tónicas, **se indigna** cuando el otro grita (retrocede,
niega con la cabeza, abre la mano, cara de enfado) y niega, serio, con la
risa ajena.

### 3.15.5 · Desplazamiento, giro y mirada (los verbos nuevos)
```
LOCUTOR se gira                      # entre frente y perfil, por las vistas intermedias
LOCUTOR se da la vuelta              # a la espalda (o de vuelta al frente)
LOCUTOR se vuelve hacia la cámara    # · se pone de frente · se pone de perfil · se vuelve de espaldas
LOCUTOR de espaldas                  # (ya existía) ahora gira, no salta
VECINO se sienta · se levanta · se inclina · se yergue
VECINO se asoma a la barandilla      # · se apoya en la barandilla
VECINO asiente · niega · se encoge de hombros · se rasca la cabeza
VECINO se acerca                     # camina hacia cámara y crece sobre sus pies
VECINO se aleja                      # se da la vuelta, se va y mengua
VECINO mira a «radio»                # cabeza y ojos hacia otra pieza, hasta el beat siguiente
VECINO se queda quieto               # el freno del personaje: solo respira (`mesa vida` no lo cuenta)
```

Todos anclables (`al decir «gol»: VECINO se asoma a la barandilla`). Al
girar, la cabeza se adelanta al cuerpo. `X se ríe` pone además la risa del
cuerpo.

### 3.15.6 · Los objetos vivos
Toda pieza `python:` que no es personaje ni va a sangre vive (por las
partes con nombre del bestiario): la **radio** (y la tele) vibra y late con
lo que suena (`mesa._oido`, la radio entera); la **aguja** tiembla, más
cuanto más suena; la **ropa**, la tela, el manto, la bufanda, el pelo, el
cable y el tentáculo se mecen con el viento; las **ondas**, la luz y el ojo
mágico laten; el **vaho** sube; cualquier otro objeto respira (escala de
décimas sobre su base y un balanceo de décimas de grado). Las criaturas
con ficha (almeja, calamar, pulpo) viven como marionetas con sus ciclos.

### 3.15.7 · La comprobación: `mesa vida`
```bash
${=MESA} toca p.mesa --motor gx … -o /tmp/x.mp4
${=MESA} vida /tmp/x.mp4            # (o el .gx.json) · --json medida.json
```

El render registra en `<vídeo>.gx.json` (clave `vida`) cada dibujo de cada
personaje con ficha: instante, si está en cuadro, opacidad, vista,
postura sin la boca y silueta en una rejilla de 24 × 32. `mesa vida` mide
por personaje y por segundo la articulación que más se movió y la parte de
la silueta que cambió de sitio, y marca **PEGATINA** (sale con 1) el
segundo en cuadro con menos de 4° y menos del 4 % (el hervor solo mueve un
2 %). Los frenos (`> congela la imagen`, `> se para en seco`, `> todo se
para menos …`) dejan un hueco en el registro y no cuentan; `X se queda
quieto` tampoco.

`MESA_GX_SIN_VIDA=1` rueda como antes de la vida (poses dibujadas de golpe,
sin actor ni objetos vivos): para comparar. Medido en los locutores de
RADIOINTERMISIÓN (r01_01 a r01_04): sin vida, 16 de 18 segundos pegatina;
con vida, 0.

## 3.16 · La lengua que enseña: capas, errores que enseñan, `explica`, `chuleta`, `nuevo`
El objetivo es que cualquiera escriba bien un pliego sin mirar el código:
una persona, o un modelo mucho más pequeño que el que diseñó la lengua.
Medido en `ERGONOMIA.md`.

### 3.16.1 · Las capas y la capa de la casa
Un pliego se escribe por capas (lo que se dice → dirigir → poner cosas → el
tiempo → la escena y el movimiento → el sonido → el aspecto y la materia),
y cada capa es opcional. Para que la primera ya sea un vídeo digno, el
compilador pone **la capa de la casa** (`formato/capas.py`): en las
unidades (escena, o capítulo sin escenas) en las que **ningún** beat enseña
nada propio, cada beat que habla lleva al papel su frase (la primera; si es
muy larga, su arranque), con la pieza que elige el dramaturgo por sus
rasgos: la pregunta a mano y en minio, el grito en nota de rescate, la cita
en recorte de periódico, el año con su fechador, el resto a máquina. Si hay
diálogo, también la réplica, anclada a su primera palabra.

No se pone en un `respiro` (página vacía a propósito), en un `cartel`, en
una frase partida, ni cuando el aspecto de la unidad ya enseña (río
tipográfico, cartel, pantalla partida, simultáneo, espejo) o hay escenario,
mundo, fondos o `DELANTE`. `página vacía` en la línea de propiedades la
apaga en todo el pliego. Se apunta en el parte de dirección («capa de la
casa en b01: …») y cada acción lleva `maquina: "capa de la casa"`.

### 3.16.2 · Los errores que enseñan
Cada error y aviso de `mesa lee` dice **qué pasa, en qué línea, por qué y
cómo arreglarlo**, con «¿quisiste decir…?» (por parecido, por prefijo y por
un diccionario de sinónimos: «frente» → «frontal», «rápido» → «de un
tirón», «tiempo bala» → «tiempo bala sobre «X»») y, casi siempre, un
ejemplo correcto:

```
  ✗ línea 31 · «cerrado» detrás de «·» no es un tamaño ni un corte: …
      por qué: detrás de «·» en una línea `python:` solo va el tamaño …
      arreglo: si «cerrado» es un argumento del dibujo, va pegado al nombre …
      ejemplo: python: congelador cerrado · enorme
```

Los mensajes de siempre pasan por un catálogo (`ensena._catalogo`) que les
añade la línea (si hablaban de un clip por su id), el porqué, el arreglo y
el ejemplo. Y se cazan los **fallos silenciosos** (lo que el parser aceptaba
y el vídeo no hacía), que son error:

| se escribía | pasaba | `mesa lee` dice |
|---|---|---|
| `pon: python: sol` | salía escrito en pantalla | no es una orden; arreglo `python: sol` |
| `COLOR monocromo` dentro de un clip | salía escrito en pantalla | es una línea de ESCENA |
| `NOMBRE: —…` sin REPARTO | salía escrito en vez de oírse | habla pero no está en el REPARTO |
| `X verbo` con un verbo que no es de la lengua, y X una pieza o un personaje | salía escrito | no es un verbo; ¿quisiste decir…? |
| `palabra: …` que no es una orden | salía escrito | ¿quisiste decir «X:»? |
| `python: gamba · entera` | «·» y «entera» llegaban como argumentos (y el render se caía) | no es un tamaño ni un corte |
| `python: X a b c` con más argumentos que la firma, o `k=` que no existe | fallaba al rodar | la firma del dibujo, leída con `ast` |
| `python:` sin `PYTHON` en el preámbulo | no salía ningún dibujo | el preámbulo no carga bestiario |
| `* general simétrico · …` | «simétrico» se ignoraba | no es una palabra de plano |

Y son aviso: el texto suelto que se escribirá a máquina («texto en
pantalla»), el sujeto de un movimiento que no existe, la palabra de más en
la cabecera de una escena (pasa a ser parte del título) y la **página
vacía** (un beat que corta a un cuadro nuevo y no pone nada mientras se
oye la voz). El aviso «clip vacío» ya no salta en un `respiro`.

El motor busca las piezas también sin tildes: «el árbitro camina…» mueve
al dibujo `arbitro`.

### 3.16.3 · Las herramientas
```bash
mesa explica «palabra o línea»   # qué es, dónde va, qué entiende el parser, ejemplo
mesa chuleta                     # la lengua en una página
mesa bestiario p.mesa            # los dibujos que ve el pliego, con sus argumentos
mesa nuevo «Título» [--desde texto.md] [--carpeta dir]
```

- `explica` explica una palabra (en qué vocabulario está y dónde va), una
  construcción (`python`, `REPARTO`, `al decir`…) o una línea entera: la
  mete en un pliego de una escena, la pasa por el parser de verdad y dice
  qué entendió (movimiento con sus partes, dibujo con sus argumentos, voz,
  evento…) o por qué se escribiría en pantalla. No puede divergir del
  parser. Con un `.json` del IR, hace lo de antes (lo devuelve como
  pliego).
- `chuleta` sale de los vocabularios del motor (no hay una segunda lista),
  con las tildes repuestas (`ensena.con_tildes`) y los eventos por familias.
- `bestiario` lee el bestiario con `ast` (sin ejecutarlo): las funciones
  que el pliego ve (las de los archivos de `PYTHON` y lo que importan), su
  firma y la primera línea de su documentación.
- `nuevo` crea la carpeta con el pliego comentado por capas, un bestiario
  mínimo que funciona (`estrella`, `flecha`, a pulso) y `audio/sfx`,
  `audio/banda`, `texto/`. Con `--desde`, propone el pliego del texto por su
  tipografía, sin IA: `#` título, `##` capítulo, un beat por párrafo (los
  de más de 35 palabras se parten por frases, o en tramos de unas treinta si
  no hay puntuación), la prosa al narrador (`di:`), la cursiva a CURSIVA,
  los párrafos en mayúsculas a MAYÚSCULAS, y las réplicas con raya o guion
  al que nombra la acotación (`—… —dijo Marta.` → MARTA) o, si no la hay, a
  VOZ_A y VOZ_B por turnos.

## 3.17 · El escenario 3D, Blender orquestado y lo generativo (rama `tresde`)
Un decorado de verdad, en volumen, con la luz del cine y la MISMA cámara
física de §3.13; Blender como motor de fondo que renderiza por capas y
Tórculo que las compone con la pluma, las láminas, la bobina y el papel; el
3D ligero de ManimGX para lo que no merece Blender; el intercambio con
otros programas (glTF, USD) y el material de los modelos de imagen y de
vídeo como cuarta fuente, siempre declarado y congelado. Vocabulario
CERRADO (`formato/tresde.py`), sin una cifra: los números viven en
`tresde/escenario.py: OFICIO_3D` y en el repertorio. Se rueda con
`--motor gx`. **Sin `ESCENARIO 3D` en el pliego, nada cambia.**

### 3.17.1 · Las líneas de la escena
Van en la ESCENA (debajo de `-- LUGAR --`, antes del primer `*`): un
escenario es un sitio. Dentro de un clip son error (se escribirían en
pantalla); fuera de una escena, también.

```
UNIDAD    ::= "ESCENARIO 3D" {"·" escenario} | "DECORADO" decorado
            | "PERSONAJE 3D" NOMBRE {"·" personaje} | "LUZ" papel {"·" luz}
            | "HORA" hora | "NIEBLA" niebla
escenario ::= en Blender | en ManimGX | ligero            (el motor; por omisión, Blender)
            | con EEVEE | con Cycles                       (el render de Blender)
            | de papel | de cartón | en tinta | en acuarela | en risografía | modelado
            | líneas a pluma | líneas de Blender | sin líneas
            | en GPU alquilada | en el Mac
decorado  ::= [«NOMBRE»] (PIEZA | terreno TIPO | de RUTA.{glb,gltf,usd,usda,usdc,usdz,blend,fbx,obj})
              {"·" (DISTANCIA | LADO | TAMAÑO | RELACIÓN «X» | en fila | por todas partes | materia)}
PIEZA     ::= suelo pared muro caja cubo esfera cilindro cono columna escalera arco rampa
              casa torre tejado tejados azotea chimenea antena deposito barandilla
              ventana puerta farola banco arbol arboleda roca luna nube nubes
              tendedero silla mesa radio maniqui
TIPO      ::= llano | de colinas | de montañas | de dunas
DISTANCIA ::= delante | al pie | cerca | al paso | a media distancia | lejos
            | al fondo | en el horizonte | en el cielo          (las de §3.13.2)
LADO      ::= a la izquierda | a la derecha | al centro
TAMAÑO    ::= pequeño | grande | enorme | gigante
RELACIÓN  ::= sobre | junto a | detrás de | delante de | dentro de
personaje ::= maniquí | de RUTA | DISTANCIA | LADO | TAMAÑO
papel     ::= principal | de relleno | de contraluz | de recorte | práctica de «X»
luz       ::= DIRECCIÓN | cálida | fría | neutra | ámbar | de luna | de vela
            | dura | suave | tenue | fuerte
DIRECCIÓN ::= de la izquierda | de la derecha | de frente | de arriba | desde abajo
            | de lado | de detrás
hora      ::= alba | mañana | mediodía | tarde | atardecer | hora azul | noche | noche de luna
niebla    ::= ligera | densa | de suelo | no
```

- **El repertorio** es de mallas propias (`tresde/malla.py`) en metros con
  la base en el suelo; el pliego nunca da un tamaño: `pequeño … gigante`
  multiplica el natural. Un modelo de fuera (`DECORADO «torre» de
  modelos/torre.glb`) entra con su tamaño, la base en el suelo y el centro
  donde lo pone la distancia; su cámara y sus luces se quedan fuera.
- **Dónde va cada cosa** sale de las palabras: la distancia da la
  profundidad, el lado la saca hacia el borde de lo que se ve a esa
  distancia, la relación la apoya en otra (`sobre «silla»`), `en fila`
  la repite a lo ancho y `por todas partes` la siembra (con la semilla de
  su nombre). Con una `azotea`, lo de lejos (tejados, casas, torres) se
  levanta desde la calle, debajo: se ven sus tejados por encima del pretil.
- **La luz del cine.** La HORA pone el sol (o la luna) y el cielo; si el
  pliego dice una `LUZ principal`, esa es la principal. El relleno y el
  contraluz salen de la principal (su fuerza y su lado); la práctica la da
  una pieza (`LUZ práctica de «radio»`): una luz en su dial o su lámpara.
  `NIEBLA` es niebla de papel: lo lejano se funde en el color del horizonte
  (`de suelo`: un volumen bajo).
- **El plano de la cabecera, en la cámara de verdad.** `* medio
  contrapicado tres cuartos de VECINO`: la talla es un travelling hasta la
  distancia justa con la misma lente (el sujeto queda de ese tamaño), la
  altura inclina la mirada alrededor del sujeto (picado, contrapicado,
  cenital, nadir) y el frente la hace girar alrededor de él. La cámara
  nunca atraviesa el suelo. El sujeto puede ser un personaje o una pieza
  del decorado (que se mide con su propio tamaño).
- **Los eventos de §3.13 nombran piezas del decorado**: `> la cámara se
  acerca a «torre»`, `> plano secuencia por «tendedero» y «radio»`,
  `> vértigo sobre «X»`, `> la cámara gira alrededor de «X»`. En un
  escenario, girar alrededor es dar la vuelta con el suelo abajo (guiñada
  sobre la vertical), no rodar sobre el eje de la mirada como en la página.

### 3.17.2 · Los personajes con ficha en el decorado (2,5D)
Una ficha (§3.10.13, §3.15) puesta en una escena 3D es una **lámina
plantada**: los pies en el suelo del decorado y la altura de una persona;
dónde (a lo ancho) lo sigue decidiendo el compositor, o el pliego con
`junto a «silla»: python: vecino`. Lo que en el decorado está más cerca que
ella la tapa (la capa de delante). **Su vista sale de la cámara**: cuando la
cámara gira alrededor, el personaje pasa por las vistas de su ficha (el
model sheet en acción); la vida (§3.15) sigue igual.

### 3.17.3 · Blender orquestado: las tres pasadas y las capas
`mesa toca --motor gx` con un escenario en Blender hace solo:

1. **Grabar la cámara**: el pliego se rueda en pequeño (256 × 144, el mismo
   fps, sin sonido); el operador hace lo que hará en la tirada (es
   determinista) y se apunta su estado en cada fotograma
   (`<vídeo>.camara3d.json`).
2. **Blender** (`tresde/blender/puente.py`, en segundo plano, `nice 15`, 4
   hilos, dentro del turno de `pesado`) construye la escena desde el mundo
   y la pista y renderiza, fotograma a fotograma, un EXR multicapa del que
   salen: `fondo` (el decorado sobre su cielo, con la niebla), `frente` (lo
   que está más cerca que los personajes, con alfa), `trazos` (los
   contornos visibles como polilíneas: siluetas, aristas, bordes y las
   líneas de dibujo del repertorio, con la visibilidad contra la
   profundidad) y, a petición, `lineas_blender` (Freestyle), `prof`,
   `mascaras`, `normales`. Caché por contenido en
   `~/Library/Caches/manim-saorin/tresde/<hash>`: si no cambian el decorado
   ni la cámara, no se vuelve a abrir Blender, y un fotograma hecho no se
   repite.
3. **Componer** (`gx/tresde.py`): el fondo cuelga al fondo del todo,
   llenando el cuadro con la cámara de cada fotograma; encima, la **pluma de
   Tórculo** dibuja los contornos (`m.Trazo`, presión, puntas afiladas y
   hervor: tres poses a ocho dibujos por segundo con la semilla del canon);
   las láminas van en el mundo de ManimGX; lo de delante cuelga justo por
   delante del personaje más cercano, con sus contornos. Después, lo de
   siempre: la bobina, el papel, los carteles, el sonido.

Las **materias de la casa en 3D** (EEVEE) son NPR: `de papel` (tres tintas
planas sacadas de la luz real, el grano del papel y un rayado de pluma en
la sombra), `de cartón`, `en tinta` (el papel en blanco y solo el rayado),
`en acuarela` (rampa blanda y el pigmento acumulado en el canto), `en
risografía` (dos tambores y trama de puntos) y `modelado` (principled). En
Cycles la materia es un difuso con grano; lo de la casa lo pone Tórculo.

### 3.17.4 · La misma cámara
`tresde/camara.py` traduce el estado de la cámara de ManimGX (centro,
ancho, `phi`, `theta`, `gamma`, distancia focal, zoom) a un pinhole de mundo
(ojo, ejes, campo vertical) y de ahí a Blender (matriz y focal con sensor
de 24 mm de alto; mundo (x, y, z) ↦ (x, −z, y) · 0,4 m). Comprobado: un
punto del mundo cae en el mismo píxel en ManimGX (±1 px) y las líneas
extraídas de Blender caen sobre sus aristas. La lente, la masa, el temblor,
el vértigo, la órbita y el plano secuencia son los de §3.13.

### 3.17.5 · El 3D ligero de ManimGX
`ESCENARIO 3D · en ManimGX`: el mismo mundo son mallas iluminadas dentro del
render (sol, puntos y ambiente de la luz del cine, con sombras), el cielo
cuelga al fondo y la pluma dibuja aristas, bordes y siluetas (recalculadas
«en dos» con la cámara). Sin segunda pasada ni Blender: 10,9 s de vídeo en
3,4 s de render.

### 3.17.6 · El personaje 3D y la vida
`PERSONAJE 3D NOMBRE · maniquí` (o `· de modelos/x.glb`, pendiente de
asignar sus huesos): una ficha invisible en la mesa recibe la vida entera
(§3.15: respira, actúa la voz, grita con el cuerpo, celebra, señala); la
primera pasada graba sus ángulos y su boca; `tresde/esqueleto.py` los hace
articulaciones con la convención del muñeco de estudio; el puente mueve una
armadura cuyos huesos se llaman como en la vida (`pelvis tronco cabeza
brazo_i antebrazo_i brazo_d antebrazo_d pierna_i espinilla_i pierna_d
espinilla_d pie_i pie_d`) y la boca con una clave de forma por visema
(`reposo a e i o u m f`). Para que hable, NOMBRE va en el REPARTO.

### 3.17.7 · Lo generativo, declarado y congelado
```
imagen sintetizada ≈ «nubes de tormenta sobre los tejados, tinta y acuarela»
en el cielo: imagen sintetizada ≈ «…» · sin fondo
clip sintetizado ≈ «…»  ·  clip sintetizado de fondo ≈ «…»  ·  clip sintetizado mudo ≈ «…»
```

`mesa sintetiza p.mesa [--proveedor simulado|local|treg] [--de-pago]
[--descarga] [--refresca] [--creditos]` genera cada petición UNA vez en
`_sintesis/` y la congela en `<pliego>.lock` (clave `sintesis`: tipo,
consulta, proveedor, modelo, semilla, fecha, sha256, coste). Al compilar
cada línea es un `foto:` o un `clip:` a su archivo: **el render nunca llama
a un modelo**. Si falta alguna, `mesa lee` da error. Lo generado se
declara en el `comment` del vídeo, en `<vídeo>.creditos.txt` y en el
informe (`generado`). Proveedores: `simulado` (determinista, sin modelo),
`local` (Stable Diffusion Turbo en el Mac, gratis; el clip local es la
imagen con un empuje de cámara, declarado así) y `treg` (de pago: MiniMax
image-01, Seedance 1 Lite; **solo con `--de-pago`** y escribiendo antes el
precio).

### 3.17.8 · Intercambio y GPU alquilada
```
mesa tresde mundo p.mesa [--escena X]                 # el escenario, sin rodar
mesa tresde exporta p.mesa -o x.glb|.gltf|.usd|.usdc|.usda|.blend|.fbx [--pista v.camara3d.json]
mesa tresde remoto p.mesa [--simula]                  # el trabajo de Cycles para Vast/R2, o su ensayo
```

`exporta` saca el decorado, su luz y su cámara (animada fotograma a
fotograma con la pista que grabó el render); lo exportado vuelve a entrar
como `DECORADO … de x.glb`. `· en GPU alquilada` empaqueta el mismo
trabajo del puente con los modelos (skill `gpu-alquilada`: sube una vez a
R2, una máquina lo baja, rinde con OptiX, sube las capas y se destruye) y
**no alquila nada sin permiso**: escribe el paquete y las órdenes y para;
`MESA_TRESDE_REMOTO=ensayo` (o `--simula`) hace el trabajo entero en el
Mac con un almacén en carpeta.

### 3.17.9 · Medido (15-10-2026, Mac M-series, carga del Mac ajena 5-25)
- *La azotea* (27,5 s, `-q ql`, 412 fotogramas 854 × 480): grabar la
  cámara 60 s; Blender EEVEE 0,52 s/fotograma (225 s); componer 37 s. Con
  la caché llena, la tirada entera 55 s.
- 3D ligero: 10,9 s de vídeo en 3,4 s.
- Ensayo del trabajo remoto (Cycles, 1 fotograma 640 × 360, Metal): 141 s.

### 3.17.10 · Lo que no hace todavía
Los huesos de un personaje importado (`de x.glb`) aún no se asignan a la
vida (solo el maniquí); la lámina no hace sombra en el suelo del decorado
(solo la oclusión); el lanzador real de Vast no está atado (las órdenes sí);
los contornos de un modelo importado se sacan de su malla de reposo (si se
anima, no siguen); el ligero no tiene materias de la casa por pieza (lleva
el baño y la pluma).
## 3.18 · Las tomas y los planos
Nació en «Radiointermisión» (v6, 15-10-2026): «los planos en el estadio son aburridos y estáticos cuando deberían ser frenéticos». Una toma de voz de diez segundos («arranca a correr su delanterogoleador… OH DIOS MÍO QUÉ REGATE») era un solo clip y, por tanto, un solo plano. Ahora la toma y el plano son dos cosas.

### 3.18.1 · La toma partida en planos
El mismo id de beat en clips **seguidos** es la misma toma de voz cortada en varios planos. Cada clip dice su tramo de la frase, tal cual, y entre todos la toma entera:

```
* r06_01 general nadir perfil de delantero · euforico
BLANQUIAZUL: —arranca a correr su delanterogoleador
DELANTERO esprinta
* r06_01 detalle de balon · euforico
BLANQUIAZUL: —con el esférico entre los pies
> la cámara va pegada a «balon»
```

- El compilador los llama `r06_01`, `r06_01_p2`, `r06_01_p3`… (`toma_de`, `toma_parte`).
- La voz suena **una vez**, entera, desde el primer plano. Cada plano empieza cuando la voz dice su primera palabra y acaba cuando dice la primera del siguiente: sin pausa entre ellos (es la misma frase); el último lleva la pausa de la toma.
- `al decir «X»` busca en el tramo de su plano.
- **El plano no se pasa de su toma**: si el anterior se pasó, el siguiente empieza tarde y acaba a su hora; ningún gesto de un plano se come el tiempo del siguiente (se aprieta).
- Un plano que declara su talla (o es un cartel) es un **cuadro nuevo de verdad**: en el corte se va todo lo del plano anterior, también los personajes y las capas, y el corte es seco.
- `mesa lee` avisa («toma partida») si los planos no dicen, entre todos, las palabras de la toma.

### 3.18.2 · Dos tomas en una frase
`* r15_01+r15_02 …` junta dos tomas seguidas del sidecar en un solo beat: sus palabras van una detrás de otra (con la pausa de la primera entre ellas) y las dos tomas suenan encadenadas. Es lo que pide la frase partida, que empieza en la voz de uno y la termina el otro:

```
* r15_01+r15_02 contrapicado de vecino_blanquiazul · sereno
VECINO_BL / BLANQUIAZUL: —Podría haber sido un / partido decepcionante tras unos primeros minutos históricos
al decir «partido»: vecino_blanquiazul hierve con locutor_blanquiazul
```

`mesa lee` da error si alguna de las tomas no está en el sidecar. Las dos cosas se combinan: el mismo `a+b` en clips seguidos parte en planos las dos tomas juntas.

### 3.18.3 · Dónde vive
`formato/tomas.py` reescribe los tiempos (`beats`) y las tomas (`wavs`) del sidecar ya cargado, en memoria y sin tocar el disco; el resto del motor ve beats normales. Lo usan `mesa toca` (CE) y `gx/correr.py`; el corte y el tope de cada plano, `gx/escena.py`.

Arreglos que salieron por el camino: la escena se identifica con su capítulo (la escena 1 de un capítulo y la 1 del siguiente se tomaban por la misma y la segunda no levantaba la mesa); las partes con nombre de un personaje con ficha (`el pelo pasa de nina_rubia a delantero`) se buscan dentro de su contenedor; la frase partida empieza en un letrero de cartulina, no en la nota de rescate (dirigir-saorin §26); y la gramática se lee sin Manim (para `sentido`).

## 3.19 · Los géneros y la producción (rama `generos`)
Que del mismo pliego salga cualquier vídeo: un TikTok, una clase, una
noticia con sus fuentes, un corto o su tráiler. El género es un **perfil de
la lengua**: una línea que trae todos los valores por defecto. Los números
viven en la tabla del perfil (`manim_saorin/generos/perfiles.py`), que es
calibración de un oficio, como el taller; el pliego no escribe ninguno.

### 3.19.1 · El preámbulo
```ebnf
LÍNEA-PREÁMBULO += "GÉNERO" GÉNERO { "·" CAMPO-GÉNERO }
                 | "LIENZO" ( "16:9" | "9:16" | "1:1" | "4:5" | "vertical" | "cuadrado" | "retrato" )
                 | "IDIOMA" LENGUA
                 | "DATOS" RUTA ;
GÉNERO       = "tiktok" | "reel" | "short" | "didáctico" | "noticia" | "documental"
             | "ensayo" | "corto" | "videoclip" | "podcast" | "anuncio" | "clase"
             | "presentación" | "tráiler" | "videopoema" | "efeméride" | "tutorial" ;
CAMPO-GÉNERO = ( "de" | "marca" | "canal" ) CITA | "sin bucle" | "con bucle"
             | "sin subtítulos" | "para la tele" | "para el cine" ;
LENGUA       = "es" | "en" | "fr" | "pt" | "it" | "de" | "ca" | "ko" | nombre en castellano ;
```

- **Precedencia**: perfil < preámbulo < capítulo < escena < clip. El perfil
  solo rellena lo que el pliego no dice (`subtitulos banda` en el preámbulo
  gana a los subtítulos del género).
- **Lo que trae cada perfil** (`mesa géneros` lo imprime): lienzo nativo,
  ventana `FORMATO` si la pide (corto y tráiler, 2,39:1), duración mínima,
  objetivo y máxima, duración media de plano, segundos del gancho, estilo
  de subtítulos, sonoridad del máster (LUFS integrados y pico verdadero),
  pausa al final de cada beat, silencio final, cada cuánto un respiro, si
  da la vuelta (bucle), zonas seguras de la interfaz, plantilla de títulos,
  estructura esperada y reglas duras (`fuente` en noticia y efeméride,
  `llamada` en anuncio, `musica` en videoclip).
- **`LIENZO`** es la proporción del fichero (1080×1920 en vertical), no la
  ventana de `FORMATO`. En un lienzo que no es 16:9, la hoja mide 8 de alto
  y lo que se lee sale, en proporción, del tamaño de un teléfono; la
  página es una columna (una pieza al centro; dos, la primera arriba y la
  segunda en medio) y lo que se lee no cae bajo la interfaz de la app.
  En 16:9 las cotas son exactamente las de siempre (regresión: mismos
  fotogramas que master).
- **`IDIOMA`** dice la lengua de lo que se dice y se lee: la voz
  (Supertonic con `--lang`), la alineación y la ortografía.
- **`DATOS`** declara la fuente de una serie (§3.19.4).

### 3.19.2 · Las líneas de clip de los géneros
```ebnf
LÍNEA-CLIP += "ecuación:" ( LATEX | "$" TYPST "$" )
            | "rótulo:" NOMBRE [ "·" CARGO ]
            | "titular:" TEXTO
            | "fuente:" RUTA-SPDF [ CITA ] [ "·" "p." FOLIO ] [ "·" "en español" CITA ]
            | "dato:" ( CITA | PALABRA ) [ TEXTO ] [ "·" "según" RUTA-SPDF CITA ]
            | "cita:" CITA [ "·" ( QUIEN | "según" RUTA-SPDF ) ] [ "·" "en español" CITA ]
            | "llamada:" TEXTO [ "·" ENLACE ]
            | "paso:" TEXTO
            | "audiograma" [ "de" HABLANTE ]
            | "firma" [ ":" CLAIM ] ;
```

- **`ecuación:`** se escribe con tinta y se lee desde el fondo del aula; si
  ya hay una ecuación viva (en el mismo beat o en el siguiente), la
  anterior **se transforma** en la nueva: la derivación paso a paso.
- **`fuente:`** comprueba la cita **letra a letra** en el SPDF (el formato
  de la casa, `~/Developer/spdf`) y enseña la cita subrayada, su
  traducción, la referencia (`(NIST, 2025, p. 14)`) y el ancla
  (`spdf:sha256-…#p=25&f=14&char=1692,1754`). Si la frase no está en la
  fuente, o no está en la página dicha, **`mesa lee` da error**: una
  cartela no puede citar lo que la fuente no dice. `mesa fuente nueva
  informe.pdf` hace el SPDF de un PDF con capa de texto.
- **En noticia y efeméride, cada cifra en pantalla lleva su ancla**: una
  línea que enseña un número (`ver:`, `dato:`, `pon:`, `letrero`,
  `titular:`, `rótulo:`) en un clip sin `fuente:` ni `· según` es aviso.
- **Una cifra de contenido no es dirección**: lo que va entre «», los datos
  de un `ver:`, las ecuaciones y los datos no cuentan contra el porcentaje
  pobre.
- **`firma`** cierra un anuncio con el canon de `marca.toml` (junto al
  pliego: `nombre`, `claim`, `legal`, `logo`, `acento`, `texto`, `letra`),
  que también viste la `llamada:`.
- Las piezas de género llevan su propio papel (la letra no se ancla) y
  pasan por el compositor; en apaisado con género, dos piezas del mismo
  beat van en fila, y si el beat anterior dejó un gráfico grande, se
  aparta a la izquierda para que el dato entre a su derecha.

### 3.19.3 · Gráficos desde datos
```
ver: curva desde datos/capital.csv      # una línea por columna; la 1.ª es la x
ver: barras desde datos/votos.csv       # una barra por fila
ver: puntos desde datos/medidas.json    # CSV, JSON (lista de objetos)
```

Ejes a pulso, marcas redondas (1, 2, 5 × 10ⁿ), números con la ortografía de
la RAE (coma decimal; espacio fino desde 10 000), cada serie con su nombre a
mano al final de su línea y en su tinta. Las rutas, relativas al pliego.

### 3.19.4 · Plantillas, series y variantes
```
MESA «{lugar} en folios»
DATOS datos/cimas.csv
variante A: di: ¿Cuántas veces hay que doblar un folio para llegar a {lugar}?
variante B: di: {dobleces_letra|inicial} dobleces: eso mide {lugar} en papel.
si {record}: pon: sello «RÉCORD»
```

- `{campo}` es una columna de la fila; `|mayúsculas`, `|minúsculas`,
  `|inicial`, `|miles` le dan forma. `si {campo}:` incluye la línea si el
  campo dice algo; `variante X:` la pone solo en la variante X.
- Una plantilla se rueda tal cual (primera fila, primera variante; o las
  de `MESA_FILA` y `MESA_VARIANTE`). `mesa serie` y `mesa variantes`
  escriben un pliego por fila o por variante junto al original (sus rutas
  siguen valiendo) y, con `--rueda`, los vídeos y su hoja de contactos.

### 3.19.5 · La localización
`mesa traduce p.mesa en` escribe la hoja `p.en.lengua.json`, un segmento por
texto que se ve o se oye, identificado por el hash del original; `mesa
localiza p.mesa en` materializa `p.en.mesa` (con `IDIOMA en`) y su sidecar.
**La imagen conserva los tiempos del original**: cada beat dura lo que
duraba y las anclas `al decir` caen en el mismo instante (el sidecar
traducido guarda las palabras del original en `palabras`); la voz traducida
cabe en su hueco (hasta un 18 % más rápida sin cambiar el tono; si no, el
beat crece y se avisa) y los subtítulos la siguen (`palabras_voz`). No se
traducen anclas, nombres de pieza, rutas ni citas literales de una fuente.
Una hoja hacia el español pasa la regla de las tildes o no se materializa.

### 3.19.6 · Accesibilidad, revisión y derivados
| orden | qué deja |
|---|---|
| `mesa subtitulos v.mp4 [--incrusta]` | `.srt`, `.vtt` (dos líneas de 42, 0,83–7 s, cortes en la puntuación); la pista dentro del mp4 |
| `mesa audiodescribe p.mesa v.mp4` | `.ad.vtt` (descripciones), `.ad.txt` y `.ad.mp4` con segunda pista de audiodescripción |
| `mesa accesible v.mp4` | contraste WCAG de cada tinta sobre su papel, destellos, velocidad de lectura, letra mínima (Vision), texto bajo la interfaz |
| `mesa revisa v.mp4` | la mesa de revisión en el navegador: notas en el instante, con un trazo sobre el fotograma |
| `mesa notas p.mesa [--aplica\|--hecha nN\|--correo X\|--importa f\|--hilo id]` | las notas ancladas a su beat, como `// NOTA nN [pendiente] m:ss,d · autor: …` bajo su cabecera |
| `mesa trailer p.mesa` | `p.trailer.mesa` y su sidecar con las tomas del original |
| `mesa deriva v.mp4 --hilo\|--web\|--vertical` | el hilo con texto alternativo, la página web interactiva, el corte 9:16 |
| `mesa canal canal.toml [--rueda]` | la carpeta del día con todo lo anterior y un diario |
| `mesa nuevo «T» --género X` | el proyecto con la plantilla del género (`// ✎` en cada hueco) |

La audiodescripción sale del pliego, que sabe qué se ve: cada pieza tiene su
frase (las ecuaciones se leen; las cartelas dicen su fuente y su página; los
gráficos, sus series), y los dibujos del bestiario la declaran en
`DESCRIBE = {"torre": "… junto a {junto}"}` (con `DESCRIBE_VALORES` para que
los argumentos se lean en castellano).

### 3.19.7 · Lo que hace el motor solo
- El **acabado del género**: el máster se lleva a su sonoridad en dos
  pasadas (lineal y, si el pico no deja, dinámica) y, en redes, el último
  fotograma funde con el primero.
- En los géneros de corte rápido (plano ≤ 3 s: redes, anuncio, noticia,
  tráiler) lo del beat anterior se va al cortar: cada beat, un plano limpio.
- La **ortografía**: `mesa lee` revisa con el corrector de español del
  sistema (local) lo que se ve y se oye, más las reglas de la casa (vídeo,
  píxel; plurales en -ciones sin tilde; ¿ y ¡ de apertura; la raya pegada
  al inciso).
- El **reloj de cada palabra**: sin whisper.cpp, `mesa graba` alinea con
  mlx-whisper local (large-v3-turbo).

### 3.19.8 · Pendiente
- 3D matemático (`ver: superficie «…»`) y mapas: esperan a la rama `tresde`.
- Videoclip y karaoke sobre `--motor gx`: el régimen de canción aún delega.
- Una ventana `FORMATO 16:9` dentro de un lienzo vertical (hoy, en un
  lienzo nativo, el formato neutro es el lienzo).
- La versión web con tomas de ManimGX (`<manimgx-film>`) en vez del mp4.

## 3.20 · La acción física y la jugada (el fútbol que se mueve)
Rama `futbol` (15-10-2026), encargo de «Radiointermisión»: «ninguno corre,
nunca se ve un gol, una parada, chutar». La acción física es del
personaje (sus `ACCIONES`) y de la física del motor (`gx/jugada.py`); el
pliego la pide con palabras.

### 3.20.1 · El cuerpo entero en el esqueleto
Cuatro claves más de la pose (`estudio/muneco.py`, `POSE_BASE`), que el
motor interpola como las demás:

| clave | qué |
|---|---|
| `rueda` | el cuerpo entero gira alrededor de X por la pelvis (+ de bruces, − de espaldas: la chilena, la entrada) |
| `vuelco` | gira alrededor de Z (+ hacia su derecha: la estirada del portero) |
| `apoyo` | 0..1: lo más bajo del cuerpo toca el suelo (pie, rodilla, cadera, pecho, cabeza) |
| `pisa` | +1 apoya solo el pie derecho, −1 solo el izquierdo (el otro golpea) |
| `eleva` | lo que se levanta del suelo después de apoyarse (el vuelo de la zancada, el salto) |

Los cantos del tronco y de la cabeza se calculan perpendiculares a su eje
en la hoja: un cuerpo tumbado no pierde el volumen.

### 3.20.2 · Las acciones (librería `estudio/futbol.py`)
Toda ficha que publique las `ACCIONES` de la librería las sabe hacer. Su
forma, además de la lista de poses de siempre, puede ser un diccionario:

```python
dict(poses=[("chuta_anticipa", 0.34), ("chuta", 0.1), ("chuta_sigue", 0.22)],
     vuelve="reposo",          # None: se queda donde acaba (en el suelo)
     contacto="chuta",         # CONTACTOS: (pose, fracción, parte que golpea)
     recorre=1.3,              # avanza resbalando, en alturas de la figura
     ciclo="esprinta", dura=2.4,   # un ciclo en el sitio
     balon="estira")           # el portero responde al balón
```

| línea | qué |
|---|---|
| `X corre hasta «Y»` | ciclo `corre` (contacto, recogida, paso, impulso; ocho dibujos); la fase la marca lo que avanza la pieza: los pies no patinan. Sin manera, `de un tirón` |
| `X esprinta` | ciclo `esprinta` en el sitio hasta el beat siguiente; publica la velocidad de su zancada para el césped en fuga |
| `X regatea` | amago, corte y salida |
| `X chuta` · `X chuta a «Y»` | anticipación, contacto (una décima) y seguimiento; el balón sale en el contacto hacia Y |
| `X pasa a «Y»` | pase raso con el interior, a los pies de Y |
| `X remata de cabeza [a «Y»]` · `X hace la chilena [a «Y»]` · `X despeja a «Y»` | ídem |
| `X hace una entrada` · `X se desploma` | al suelo, resbalando |
| `X celebra de rodillas` · `X abre los brazos` · `X se besa el escudo` · `X se incorpora` | la celebración |
| `X se estira` · `X para` · `X no llega` · `X se le escapa` | el portero, cronometrado con el balón |

`X verbo a «Y»` con los cinco verbos de la jugada es una línea de ficha
(`aspecto.JUGADA_A`), no un movimiento. `mesa lee` exige que la acción esté
en las `ACCIONES` de la pieza.

**Lo rápido se ve rápido.** Si la ficha acepta `estela`, el motor le pasa,
en los fotogramas en que el cuerpo se ha movido mucho, las dos poses de
antes y una velocidad: la hoja dibuja la multiexposición de los miembros
que se mueven (del cuerpo entero si vuela o cae) y las líneas de fuerza.

### 3.20.3 · La jugada (`gx/jugada.py`)
- **El balón** es cualquier pieza `balon`, `pelota` o `esferico`. Al
  primer toque toma la escala del jugador más cercano (una décima larga de
  su altura). Lo conduce quien corre a su lado (un toque por zancada); sale
  en el fotograma del contacto; gira con lo que corre, se estira con la
  velocidad, se aplasta en cada golpe y bote, y deja su estela
  cronofotográfica. `el balón vuela | rueda | va hasta «Y»`, `el balón cae`,
  `el balón rebota` usan esa física, no el arrastre de los verbos.
- **El portero** que `se estira`, `para`, `no llega` o `se le escapa`
  espera al balón: la estirada empieza para que el vuelo llegue cuando
  llega el balón, el cuerpo se desplaza hacia él (en espejo si va al otro
  lado) y las manos lo encuentran, se quedan cortas o lo rechazan.
- **La portería** (`porteria`, `red`): la red se hincha donde entra el
  balón (un muelle amortiguado sobre sus puntos) y el poste vibra.
- **El césped en fuga** (`cesped_en_fuga`, `· a sangre`): franjas y líneas
  de cal al punto de fuga, hierba en tres capas de paralaje; corre bajo
  quien corre en el sitio, a la velocidad de su zancada.
- **La grada** (`grada…`) estalla en ola con `> la grada estalla`.

Eventos: `> el balón entra en «X»`, `> la red se hincha`, `> el balón da en
el poste`, `> el balón bota`, `> la grada estalla`. Cada fotograma se
escribe desde los puntos guardados: nada deriva.

### 3.20.4 · Lo esencial de quien juega
Las fichas de jugadores declaran `objeto` = el pie que golpea: a tamaño
gigante, el corte por el borde no se lleva ni la cabeza ni los pies.
