# D13. Free design, structured content (design layer prototype)

Agents write any CSS, layout template or figure-drawing code; content stays in schema-checked blocks so authors can rework it and translators can extract it. The boundary is enforced by the validator rather than by a closed design vocabulary: no words in CSS, templates or figures; no external resources; colours through tokens; templates without script or interactive elements. Cascade layers (`elabora.base` < `elabora.layout` < `elabora.theme`, later `elabora.components` replaced `elabora.layout`, D14) let a theme override the player without specificity fights; the DOM hooks it relies on are documented as a contract (docs/design.md). Maths is rendered at build time to MathML with **temml** (MIT, no runtime dependency: packages ship MathML, which every current browser renders and screen readers read). Generated assets carry provenance so a charter change can regenerate them.
*Revisit if:* authors need to edit designs without an agent (then components and a style editor), or MathML rendering differs too much across LMS browsers (then ship a math font with the player).
