"""Валидация 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); - ровно один корневой ; - наличие `viewBox` (4 числа); - теги — только из ALLOWED_TAGS; -