feat: режим индикаторов без цветовой кодировки + переустройство /setup

Новая настройка app_settings.indicator_mode (color | accessible), переключается
на /setup. В режиме accessible сигналы, которые раньше держались только на цвете,
переходят на форму/текст:
- качество цены (0-9) — 5-ступенчатый signal-meter вместо градиентной точки/числа;
  единый модуль web/static/price-quality.js, ветвление по window.QF_INDICATOR_MODE;
- вкладка «Ценообразование»: ведущая колонка-meter вместо заливки строк,
  пометка W вместо амбер-подсветки world-цен, ⚠ вместо красного «загрязнённого» итога.
- GET/PUT /api/settings/ui (без рестарта), регистрируется в обоих наборах роутов.

/setup переустроен: две колонки одной высоты, кнопка «Вернуться в приложение»,
исправлен <title>.

Документация: bible-local 02/03/04 + decisions/2026-08-31-accessible-indicator-mode.md

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LbRvQgPZpM4SJTaX3iLrXk
This commit is contained in:
Mikhail Chusavitin
2026-08-31 18:08:38 +03:00
co-authored by Claude Sonnet 5
parent d97ac447ca
commit 681ec15e2b
15 changed files with 453 additions and 52 deletions
+39
View File
@@ -44,3 +44,42 @@
visibility: visible;
opacity: 1;
}
/* Colour-blind-safe price-quality indicator (mono mode). 5-step signal meter,
single neutral hue — magnitude reads from the number of lit bars, not colour. */
.qf-quality-meter {
display: inline-flex;
align-items: flex-end;
gap: 1px;
height: 12px;
vertical-align: middle;
line-height: 0;
}
.qf-quality-meter > i {
display: inline-block;
width: 3px;
background-color: #d1d5db;
border-radius: 1px;
}
.qf-quality-meter > i.on {
background-color: #374151;
}
.qf-quality-meter > i:nth-child(1) { height: 30%; }
.qf-quality-meter > i:nth-child(2) { height: 45%; }
.qf-quality-meter > i:nth-child(3) { height: 62%; }
.qf-quality-meter > i:nth-child(4) { height: 80%; }
.qf-quality-meter > i:nth-child(5) { height: 100%; }
.qf-quality-meter[data-size="sm"] {
height: 10px;
gap: 1px;
}
.qf-quality-meter[data-size="sm"] > i {
width: 2px;
}
/* Leading meter column on the pricing tab tables (mono mode). */
.pricing-quality-meter {
width: 1%;
white-space: nowrap;
text-align: center;
}