# Templates, styles et interactions

`templateAdd(name, definition)` enregistre un template de type `scene` ou `acte`.
`templateRequire(kind, name)` le retrouve. Les templates intégrés sont `minimal`,
`compact` et `detail` pour les scènes, `minimal` et `detail` pour les actes.
Les objets sont copiés et gelés ; les changements de template suivent le cycle de flush.

Un template d’acte déclare `kind:'acte'` et `content`.
Un template de scène déclare `kind:'scene'`, `header` et `footer`.
Les nœuds déclarent `tag`, `classes`, `text`, `children` ; une liaison textuelle
utilise `{field:'titre'}` ou les autres champs autorisés par `templates.js`.
Les textes sont inertes. Le modèle refuse les balises actives, les fonctions,
les cycles et les structures invalides.

`styleAdd`, `styleSet`, `styleRemove` gèrent des styles nommés et ordonnés,
isolés par théâtre. Les deux rendus DOM utilisent les mêmes mécanismes.
Les sélecteurs internes sont préfixés `alloframe-`.

`eventsSet`, `eventsReset`, `acteEventsSet`, `acteEventsReset` contrôlent les
surcharges locales. Un gestionnaire d’actes porté par la scène décide de déléguer
avec `context.acteDispatch()` ; sans lui, le gestionnaire de l’acte est appelé.
Les survols et sorties sont traités à l’entrée et à la sortie, sans double appel.

L’infobulle affiche `titre (deb - fin)` puis la description.
Le clavier permet l’activation et la fermeture de l’infobulle.
Le démontage et le remplacement d’un moteur libèrent les anciens abonnements.
Voir [validation.md](validation.md).
