5d5c888acf
The modal HTML was assembled via raw f-string concatenation in ``delete_preview``. Move it to a dedicated Jinja2 partial (``chat/templates/_delete_impact_modal.html``) and render via ``TEMPLATES.TemplateResponse``. Jinja2 autoescape now handles HTML safety automatically — the explicit ``html.escape()`` calls added in T110.2 (and the ``import html``) become redundant and are removed in this commit. Net behavioural change: attribute quoting style flips from single to double quotes (Jinja default) — the existing T98.4 substring-based assertions are unaffected, and the new T110.3 test pins the double-quoted shape so future regressions surface. Test: tests/test_drawer_phase4.py::test_delete_impact_modal_uses_jinja_partial.