diff --git a/docs/reports/A48.md b/docs/reports/A48.md
index 486bd89..fdfd7c6 100644
--- a/docs/reports/A48.md
+++ b/docs/reports/A48.md
@@ -65,3 +65,9 @@ HubSnapshot: generation, seq, timestamp, profiles_by_provider, all_profiles, rea
## 2026-08-31 — оркестратор сверху по запросу владельца
Владелец явно запросил изменить сохранённые координаты: оркестратор (430,60), первый ряд субагентов — два кодера и ревьюер на y=250; остальные 9 субагентов в трёх колонках ниже. Раскладка применена через штатную команду и сохранена `save_workflow`. После перезагрузки координаты подтверждены по DOM. Связи, модели и настройки агентов не менялись. Начальный вид клиента центрирует выбранного агента по горизонтали. Новый снимок: `docs/screenshots/a48/after/overview-orchestrator-top.png`; предыдущие сравнительные снимки показывают состояние до этого запроса. Проверка синтаксиса workflow.js прошла.
+
+## 2026-08-31 — разводка и цвета стрелок
+
+По запросу владельца изменено только отображение существующих связей. Нисходящая связь выходит снизу и входит сверху; переходы между соседними карточками идут напрямую, обратные связи — по отдельным нижним дорожкам, возврат к оркестратору — снаружи справа. Углы скруглены. SUCCESS/REVIEW_PASSED зелёные, REVIEW_FAILED/ERROR красные пунктирные, NEXT/ALWAYS золотые; наконечники и подписи используют соответствующий цвет. Невидимый hit-path больше не перекрашивает видимый путь. Длинные подписи переносятся в межузловом промежутке. Fit учитывает внешние линии.
+
+`node tests/test_workflow_routes_a48.js`: шесть связей текущей раскладки не пересекают 13 карточек, направление портов и возвратные дорожки проверены. Оба прежних JS-набора проходят. В браузере подтверждены разные stroke/marker, прозрачность шести hit-path, отсутствие пересечений подписей с узлами и ошибок консоли. Новый снимок: `after/overview-colored-arrows.png`. Старые снимки в галерее остаются историческим сравнением. Топология и настройки workflow не менялись. Полный произвольный граф с препятствиями не проверен; маршрутизация рассчитана на текущую раскладку по рядам.
diff --git a/docs/screenshots/a48/after/overview-colored-arrows.png b/docs/screenshots/a48/after/overview-colored-arrows.png
new file mode 100644
index 0000000..9f7852b
Binary files /dev/null and b/docs/screenshots/a48/after/overview-colored-arrows.png differ
diff --git a/docs/screenshots/a48/index.html b/docs/screenshots/a48/index.html
index 00dcb63..9461bcd 100644
--- a/docs/screenshots/a48/index.html
+++ b/docs/screenshots/a48/index.html
@@ -1,4 +1,4 @@
A48 — визуальное сравнение
-
A48 · Сравнение с макетами
Клиент проверен с живыми данными; визуальное согласование остаётся за владельцем. «До»: хаб 81a58f6. «После»: клиент A48 с тем же защищённым API. 21 снимок до и 21 после. Аккаунтов 0, поэтому заполненные карточки и выбор реальной модели не проверены.
База кода: 80aab00. Контрольная ширина снимков: 1280 px. Макеты имеют разные исходные размеры; изображения показаны полностью, без подмены данных.
Клиент проверен с живыми данными; визуальное согласование остаётся за владельцем. «До»: хаб 81a58f6. «После»: клиент A48 с тем же защищённым API. 21 снимок до и 21 после. Аккаунтов 0, поэтому заполненные карточки и выбор реальной модели не проверены.
База кода: 80aab00. Контрольная ширина снимков: 1280 px. Макеты имеют разные исходные размеры; изображения показаны полностью, без подмены данных.