# Design Визуальная система интерфейсов bj. Продуктовую правду держит `PRODUCT.md`. Токены и оболочка живут в `internal/lkgateway/web/templates/layout.html` (админка bj-server) и `cmd/bj-lk/templates.go` (клиентский ЛК). ## THESIS Пульт управления перемещением ценных бумаг между депозитариями через НРД — **приборная панель, а не маркетинговый дашборд**. Состояние системы и заявок читается с одного взгляда. Отказ от generic-SaaS-грамматики: эмодзи-иконки, лого-градиентный блоб, градиентный текст, сетка одинаковых карточек как структура страницы — не используются. ## OWN-WORLD «Диспетчерская депозитария». Прохладные нейтрали на свету, терминальный near-black в тёмной теме (настоящее рабочее место оператора). Один уверенный акцент — **индиго `--accent`** (интерактив); **MOEX-красный `--brand`** зарезервирован строго под знак бренда и критические состояния. Знак — два узла, соединённые мостом (продукт буквально соединяет депозитарии), inline-SVG. Иконки — только тонкие line-иконки (stroke 1.8, inline-SVG), никаких эмодзи. ## Color Стратегия — **Restrained** (нейтрали + один акцент), корректно для Operate. Токены в `:root` (light) и `[data-theme="dark"]`. Обе темы обязательны и переопределяют весь семантический набор (`--accent/--ok/--warn/--err` и их `-weak`). Тема запоминается в localStorage; уважать `prefers-color-scheme` и `prefers-reduced-motion`. Контраст текста — WCAG AA (body ≥4.5:1); вторичный текст тонируется из нейтрали, не «серым наугад». ## Typography Системный sans для UI. **Приборная подпись: все величины — моноширинными табличными цифрами** (`--mono`, `font-variant-numeric:tabular-nums`): ID, счётчики, время, коды, суммы, значения статов (`.num`, `.stat-value`, `.clock`, `code`). Заголовки — плотный трекинг (до −0.03em на крупных), явная шкала веса. ## Components - **Оболочка:** sticky-топбар (56px) = знак бренда (flex:none) + навигация (flex:1, внутренний горизонтальный скролл, скрытый скроллбар) + правый блок (flex:none): строка системного статуса `.sys-status` (пульс + «НРД на связи / Эмуляция»), моно-часы, SVG-переключатель темы. На ≤1200px статус сжимается до пульса, часы скрываются. Топбар не создаёт горизонтального скролла страницы. - **Приборные плитки-статы** `.stat`: цветной торец слева (3px, семантический — `.accent/.ok/.warn/.err`), моно-значение. - **Плитки задач** `.tile`: слот `.ico` под line-SVG (не эмодзи, не градиент), hover — подъём 2px + сдвиг стрелки. - **Таблицы:** плотные, числовые ячейки — `.num` (табличные цифры), ID — `code`. - **Бейджи статусов** `.badge.`: семантические заливка+текст (AA). - **Тост/алерты:** цветной акцент только сверху (`border-top`), не слева (`border-left`/`right` >1px запрещён). ## Motion Один авторский easing `--ease` (экспоненциальный ease-out). Живой момент — пульс индикатора системного статуса; hover-плитки — подъём + сдвиг стрелки. Всё отключается при `prefers-reduced-motion`. ## Refuse (из craft-floor + тезис) Эмодзи-иконки; лого-градиентный квадрат; градиентный текст; `border-left/right` >1px как акцент карточек; моноширинный шрифт как «костюм технологичности» вместо данных/измерений; выбор темы по категории, а не по сцене использования. ## Scope / статус Поднят общий слой `layout.html` (токены, оболочка, статы, плитки, таблицы, бейджи, тост) — его наследуют все ~20 страниц админки — и флагман `admin_home`. Клиентский ЛК (`cmd/bj-lk`) уже несёт совместимую систему (токены, тёмная тема, доступность). Постранично ещё не подняты: `admin_setup`, `admin_help_*`, `admin_wizard`, `admin_claim` — они наследуют систему, но их частная композиция (плотные формы, help-простыни) ждёт отдельного прохода. ## Личный кабинет клиента — мир «Табло» (17.09.2026) Клиентский ЛК (`modules/lk`, служба `bj-lk`) получает собственную поверхность внутри той же системы. Дизайн-холст: https://claude.ai/artifact/NAW1ak8cGgZDyXjy35p9Av **THESIS.** Кабинет — табло отправлений: бумаги куда-то едут, клиент читает состояние и расписание. Отказ от ряда метрик-плиток, одинаковых карточек как структуры страницы и серифного display-шрифта. **OWN-WORLD.** Графитовая доска сверху (`#191A1C` шапка, `#1F2124` полоса состояния, отбивка `#E8A33D` 3px), светлая бумага реестра `#EDEBE4`, лист формы `#F7F5EF`. Янтарь `#E8A33D` — «в пути» и первичное действие; зелёный `#1F6B3E` — свободно/исполнено; красный `#A32D22` — отказ; интерактив — индиго `#2C46C0`. Волосяные линейки `#DED8CA` вместо рамок, радиус 2–3px (не 12). **Типографика.** Две гарнитуры: Golos Text (интерфейс, кириллица) и JetBrains Mono (все величины, коды, подписи-заголовки `.lbl` — заглавные с трекингом 0.1em). Величины всегда `font-variant-numeric: tabular-nums`. Крупная величина на доске 38–62px, шкала интерфейса 13–26px. **Композиция.** Шапка 58px: знак (два узла + мост) · разделы · янтарная кнопка «Поручение M2M» (точка входа с каждого экрана) · договор · выход. Ниже — полоса состояния. Рабочая часть — таблицы с группировкой по счетам депо, состояние в правом столбце чипом. **Движение.** Один авторский момент — «перекидывание шторки» (`.live`, `@keyframes flip`, 420ms) на чипе состояния, который только что изменился; отключается при `prefers-reduced-motion`. **Роли.** Вход клиента и вход сотрудника — один экран с переключателем. Сотрудник в кабинете клиента только готовит поручение, подпись кодом из СМС — за клиентом; вход сотрудника виден клиенту в «Безопасности».