- fix(typst): replace json.decode() with native Typst dict literals; fixes control-char escaping bug (#15)
- perf(engine): cache font database in Engine, rebuilt once at construction (#16)
- feat(engine): PageSetup struct for paper, orientation, margins, header/footer toggle (#17)
- refactor(typst): split chart.typ monolith into per-type functions, use theme tokens for colors (#18)
- feat(components): ScoreCardVariant, CalloutVariant, SpotlightCardVariant enums (#19)
- fix(typst): named virtual source path (report.typ) for readable error spans (#20)
- feat(i18n): remove hard-coded German strings from templates, add label overrides (#21)