# Правила наследования Bark

Этот документ отвечает на главный вопрос: что новый продукт обязан унаследовать
от Bark, что он может адаптировать под свой контекст, а что делать нельзя.

## Принцип

Новый продукт не копирует `barkone` буквально. Он наследует семейную систему
Bark и подставляет свой продуктовый суффикс.

```text
bark<module>
```

Примеры:

- `barkone` - личный кабинет
- `barkmon` - мониторинг
- `barkpay` - платежи
- `barkledger` - финансовая отчетность
- `barkhr` - персонал и кадровые процессы
- `barkstock` - склад, остатки и перемещения
- `barkops` - операции
- `barkadmin` - админка

## Уровни наследования

| Уровень | Что значит | Кто меняет |
| --- | --- | --- |
| Family core | Общее ядро Bark: имя, тон, цвета, шрифты, знак, UI-характер | Только владельцы бренд-системы |
| Product variant | Продуктовая адаптация: суффикс `one`, `mon`, подпись, metadata, PWA-иконка | Команда продукта в рамках правил |
| App implementation | Конкретные экраны, таблицы, графики, статусы, тексты функций | Команда приложения |

Если изменение ломает Family core, это не локальная адаптация, а изменение
бренд-системы.

## Обязательно наследовать

Новый продукт обязан сохранить:

- семейное имя `bark` как первую часть UI-логотипа
- lower-case no-space lockup: `barkmon`, `barkone`, `barkpay`, `barkops`, `barkadmin`
- структуру `bark` + продуктовый суффикс без пробела
- базовый знак `b` или знак, явно построенный из той же геометрии
- монохромный знак (белый `b` на тёмной плитке); цвет несёт продуктовый суффикс, а не сам знак
- семейную палитру нейтралей, статусов (`#15a06a`/`#cf850f`/`#e23d52`) и теней — продуктовый цвет при этом выбирается из палитры (см. «Можно адаптировать»)
- основной ink `#14181f`
- светлый рабочий фон `#eef0f4`
- белые/почти белые панели с тонкими границами
- Red Hat Display только для логотипа/wordmark и букв внутри брендовых иконок
- Onest для всего интерфейса, включая H1/H2 и остальные заголовки
- IBM Plex Mono для чисел, ID, времени, процентов и других data-values
- спокойный операционный характер интерфейса
- компактную, сканируемую структуру рабочих экранов
- единые favicon, PWA, `<title>`, OpenGraph и mobile/header patterns
- роли шрифтов: IBM Plex Mono для чисел, Onest для интерфейса, Red Hat Display для логотипа
- один пакет иконок: Lucide (`https://lucide.dev/`)
- fixed/sticky sidebar: прокручивается только navigation; theme switch и footer закреплены снизу
- единый logout: icon-only `Выйти` (Lucide `LogOut`, 40×40) в правом конце
  блока идентичности сайдбара, одинаковый во всех продуктах
- единую точку идентичности: блок `.bark-sidebar__user` в футере сайдбара —
  аватар 40px (фото из SSO / инициалы `initialsFromName()`) + имя + email;
  в шапке страницы аватара нет (`barkone` — задокументированное исключение)
- закреплённую плотность каркаса: `.bark-main` `24px 32px 40px`, секции через
  24px, сетки через 16px, панель 20px (`--dense` `12px 16px`), строки таблиц
  44px/36px — см. `docs/STYLE_GUIDE.md` §Page shell & density
- единый motion (120/200/300ms, `--ease-out`) и шкалу слоёв `--z-*`
- подключение favicon строго через сгенерированный `favicon.head.html`
  (SVG + PNG + apple-touch + manifest + theme-color)
- правила charts, modals и fields из `docs/COMPONENT_RULES.md`
- единый loader system: обязательный feedback при route transitions и async-кнопках
- обязательный SSO login feedback: существующая кнопка показывает spinner 18px + `Входим…` до redirect/error
- единый SSO Avatar contract: актуальный `picture` из сессии напрямую в существующий Avatar, fallback с инициалами, без отдельного photo API/proxy/base64
- три режима темы (светлая / тёмная / системная) и переключатель `.bark-theme-switch` (`templates/theme-switch.html` + `theme.snippet.js`)

## Можно адаптировать

Новый продукт может менять:

- продуктовый суффикс: `one`, `mon`, `pay`, `ops`
- **продуктовый цвет** из палитры (`tokens/brand.tokens.json` → `productColors`): им красится чашка favicon и продуктовое слово в иконках/локапе — чтобы вкладки различались. barkone — `#0d8f9c`, barkmon — `#2f6fed`, barkpay — `#1f9d63`, barkops — `#7c4dd6`, barkadmin — `#d6a100`, … Не брать статус-цвет (`ok`/`warn`/`bad`/`info`) как продуктовый; держать ≥25° по тону и ≥10 ΔE от статусов и других продуктов. `--accent` (#0d8f9c) при этом ВСЕГДА остаётся цветом актив/hover/KPI — продуктовый цвет только для чаши favicon и слова. **Если подходящего цвета нет — спросить у владельца, какой взять, не угадывать.**
- **динамический favicon** для статус-продуктов: цвет чаши меняется в рантайме (barkmon — зелёный «всё ок» / красный «инцидент»; `templates/dynamic-favicon.snippet.js`). Бренд-цвет иконки/локапа при этом остаётся прежним.
- подпись под логотипом: `Личный кабинет`, `Мониторинг`, `Платежи`
- описание продукта в metadata и manifest
- текст в PWA-иконке, если она используется как отдельный продуктовый entrypoint
- набор экранов, таблиц, графиков, фильтров и статусов
- выбор режима плотности **из двух закреплённых** — default или `--dense`
  (мониторинг/таблицы); собственные значения паддингов и «воздуха» продукт не
  изобретает
- иллюстрации, диаграммы и empty states под домен продукта
- product-specific lockup в `products/bark-<module>/assets/`
- вторичные цвета для графиков, если продуктовый цвет остаётся главным акцентом

## Можно только с явным решением

Эти изменения требуют явного решения владельца бренда или команды платформы:

- новый основной accent вместо `#0d8f9c`
- отдельный продуктовый знак вместо Bark `b`
- публичный внешний бренд без слова `bark`
- изменение семейного шрифта логотипа
- переход на темную тему как основной режим
- новый принцип компоновки, из-за которого продукт перестает выглядеть как Bark
- отдельная внешняя landing page identity

Если ИИ видит такую задачу, он должен остановиться и зафиксировать это как
brand decision, а не как обычную реализацию.

## Нельзя

Нельзя делать:

- писать в UI `BarkOne`, `Bark Mon`, `BARK MON`, `bark mon`, `bark·mon`, `bark_mon`
- трактовать запрет `BarkOne` как запрет слитного написания: запрещен
  PascalCase, а правильный UI-вариант — `barkone`
- возвращать старое `bark manager` или слово `manager` как название продукта
- менять `bark` на другое семейное имя в рамках Bark-продукта
- красить весь логотип в accent
- вносить акцент внутрь знака или перекрашивать сам `b` без отдельного решения
- растягивать, наклонять или перерисовывать знак произвольно
- использовать неродственные иконки как основной брендовый знак
- заменять Onest/Red Hat Display/IBM Plex Mono случайным набором шрифтов
- делать интерфейс маркетинговым лендингом вместо рабочего продукта
- строить стиль на тяжелых градиентах, декоративных пятнах или случайных тенях
- превращать палитру в один доминирующий цвет без нейтральной системы
- создавать локальные hard-coded цвета вместо токенов
- хранить секреты, токены, приватные скриншоты или полные логи в бренд-репо

## Матрица решений

| Вопрос | Решение по умолчанию |
| --- | --- |
| Новый продукт внутри компании | `bark<module>` |
| Нужен мониторинг | `barkmon`, подпись `Мониторинг` |
| Нужен отдельный PWA entrypoint | Создать product PWA icon с тем же знаком и module text |
| Нужен новый цвет графика | Добавить вторичный chart/status color, не менять base accent |
| Нужен внешний публичный бренд | Требуется отдельное brand decision |
| Старое название встречается в коде | Заменить, если это product copy; оставить, если это исторический/служебный ID |

## Порядок адаптации продукта

1. Выбрать module name: короткий lower-case суффикс.
2. Создать или выбрать `products/bark-<module>/brand.config.json`.
3. Подключить `tokens/brand.css` или `tokens/tailwind.preset.cjs`.
4. Обновить logo lockup, favicon, PWA manifest и metadata.
5. Заменить продуктовые тексты, не трогая бизнес-логику.
6. Привести navigation, active states, panels, metrics и charts к токенам.
7. Записать все отклонения от правил в README продукта или issue.

## Чеклист ревью

Перед merge проверьте:

- UI name выглядит как `bark<module>`
- `bark` не окрашен целиком в accent
- module suffix окрашен в продуктовый цвет (accent `#0d8f9c` — только active/hover/KPI)
- subtitle соответствует продукту
- favicon/PWA/title/manifest обновлены и подключены через `favicon.head.html`
  (SVG + PNG + apple-touch + manifest + theme-color = продуктовый цвет)
- блок идентичности в футере сайдбара: фото из SSO (fallback — инициалы из
  `initialsFromName()`), имя + email с ellipsis, icon-only `Выйти`; в шапке
  аватара нет
- плотность соответствует закреплённым числам (паддинг страницы `24/32/40`,
  панель 20px, таблицы 44/36) — экран не «воздушнее» стандарта
- основные цвета берутся из токенов
- рабочие экраны выглядят как операционный интерфейс, а не промо-страница
- старые названия удалены из пользовательского copy
- нет секретов, токенов, приватных скриншотов и полных логов

## Инструкция для ИИ

Если ты применяешь Bark к новому проекту:

- сначала прочитай `AGENTS.md`, этот документ и product config
- наследуй Family core без обсуждения
- адаптируй только Product variant и App implementation
- не придумывай новый бренд, если пользователь просит подключить Bark
- если запрос нарушает раздел "Можно только с явным решением", явно назови это
  brand decision и попроси подтверждение
- если есть сомнение, выбирай более близкий к Bark вариант
