"""Валидация SVG-ответов модели.
Делает две вещи:
1) `extract_svg()` — вытаскивает из произвольного текста
(модель иногда отвечает с пояснениями или code-fence).
2) `validate(svg_text, mode=...)` — строгая проверка по правилам дизайна.
3) `validate_svg(svg_text) -> (ok, reason, cleaned_svg)` — обёртка для UI,
описанная в задаче: всегда возвращает кортеж, не бросает исключений.
Правила (соответствуют §5 design.md и §6 spec.md):
- well-formed XML (lxml);
- ровно один корневой