# Дизайн система сайта Mammoth Dev

Документ предназначен дизайнеру и разработчику сайта Mammoth Dev. Он фиксирует визуальный язык, состав страниц, компоненты и правила реализации на React и Next.js. Основа визуального стиля — чёрный, белый и золото, выразительные заголовки Manrope, спокойный текст Inter и технические подписи JetBrains Mono. Структуру сайта определяет спецификация версии 1.1 от 29 сентября 2026 года.

В этой папке создано приложение справочника дизайн системы на Next.js с примерами элементов. В нём работают локальные образцы кнопок, фильтров, формы с валидацией, контролов, FAQ, трёхшагового чек листа и выбора cookies. Полный корпоративный сайт, сервер заявок, отправка писем, PDF отчётов, аналитика и CMS являются следующими задачами. Демонстрация не подтверждает отправку заявки или реальный расчёт бизнес показателей.

Дата документа — 5 октября 2026 года. Значения с пометкой **Наблюдение Figma** извлечены из работающего прототипа в Chrome. Значения с пометкой **Рекомендация** дополняют неполную спецификацию состояния, доступности или адаптации. Эти рекомендации не следует представлять как исходные свойства макета.

## Источники и порядок приоритета

| Приоритет | Источник | Что определяет |
|---|---|---|
| 1 | [Спецификация сайта](./Спецификация/Mammoth_Dev_Site_2.0_Spec.docx), версия 1.1 от 29.09.2026 | Страницы, тексты главной, навигацию, CTA, форму и изменения прототипа |
| 2 | [Услуги](./Mammoth_Dev_Services.xlsx), [портфолио](./portfolio.xlsx), [чек лист](./Scalability_Checklist.xlsx) | Содержимое услуг и кейсов, исходные вопросы и методику оценки |
| 3 | [Прототип Figma Make](https://www.figma.com/make/MamGxFh2cyl0mkFbnovjXz/High-Fidelity-Website-Concept) | Цвета, шрифты, размеры, сетку и характер компонентов |
| 4 | Рекомендации настоящего документа | Недостающие состояния, доступность и контракт реализации |

Юридический источник: [политика ООО МамонтДев](./Лигал/ПОЛИТИКА_КОНФИДЕНЦИАЛЬНОСТИ_СЕРВИСОВ_ООО_МАМОНТДЕВ_.docx), в документе дата публикации 01.10.2024. Из неё взяты требования к согласию и cookies, а не заключение об актуальности политики.

Отзывы: [АО ФИК МЕДИА](<./ Отзывы/Отзыв_Molwe.pdf>), [Brookside Investments Ltd.](<./ Отзывы/Отзыв_SuperBoss.pdf>), [ROKSAGROLIT](<./ Отзывы/Отзыв_Автоматизация_производства.pdf>). В названии папки ` Отзывы` есть начальный пробел. Отзывы подтверждают конкретные высказывания клиентов; они не заменяют методику измерения показателей.

Если Figma и DOCX расходятся, переносить из Figma стиль, а состав и содержание брать из DOCX. Таблицы не должны молча расширять утверждённые четыре услуги или возвращать удалённые разделы.

## Вывод по визуальному направлению

Сайт должен восприниматься как инженерный партнёр для бизнеса с действующим ИТ продуктом. Уверенность передаётся крупной типографикой, чёткой сеткой, содержательными кейсами и документальными отзывами. Золото служит акцентом для действий, выбранных состояний и небольших маркеров; оно не должно заполнять большие поверхности.

Чередовать светлые содержательные секции с тёмными Hero и CTA. На главной использовать короткие блоки, а подробности переносить на страницы услуг и кейсов. Декоративный листинг из прототипа поддерживает инженерную тему, но не подменяет описание результата проекта.

Использовать реальные изображения продуктов, проверенные сведения и существующий логотип. Не добавлять вымышленные рейтинги, цифры опыта, количество проектов, портреты клиентов или награды. Статус ПВТ задан спецификацией; рядом нужна ссылка на карточку резидента.

## Страницы и навигация

| Страница | Канонический путь по основному тексту DOCX | Состав |
|---|---|---|
| Главная | `/` | Hero, о компании, 2 услуги, 4 кейса, общий футер |
| Услуги | `/services/` | Каталог четырёх услуг |
| Услуга | `/services-[service-slug]/` | Выгода, проблема и решение, 3–5 шагов, 2–3 кейса, FAQ, CTA |
| Портфолио | `/portfolio/` | Кейсы и собственные продукты, фильтры |
| Кейс | `/portfolio/[project-slug]/` | Клиент, задача, решение, результат, технологии, отзыв при наличии, связанные услуги |
| Масштабируем ИТ | `/it-scalability/` | Выбор контекста, вопросы, результат и следующие действия |
| Контакты | `/contacts/` | Контакты и основная форма консультации |

Рекомендация: принять повторяющийся в основном тексте формат `/services-[slug]/` как исходный контракт; его также подтверждают все четыре ячейки C3 в таблице услуг. В Next.js это реализовать четырьмя явными папками страниц с общим шаблоном и данными по slug. Примеры JSON в DOCX используют `/services/[slug]`; при выборе другого формата обновить меню, внутренние ссылки, canonical, sitemap, Schema и redirects вместе. Не создавать две индексируемые версии одной услуги.

Ссылка `/checklist/it-scalability/` встречается на странице услуги в DOCX. Рекомендация: все пользовательские переходы вести на `/it-scalability/`, а старую ссылку перенаправить, если она уже опубликована. Блог и `/en/...` описаны как развитие, поэтому их шаблоны допускаются в системе, но не входят в меню запуска.

Header: «Услуги», «Портфолио», «Масштабируем ИТ», «Контакты» и CTA «Обсудить проект». Удалить «Блог» и отдельный «Чек лист» из меню прототипа. Логотип в header — ссылка на `/`; favicon — значок вкладки браузера, действие перехода на главную относится к логотипу.

### Контент главной

| Элемент | Текст или правило из DOCX |
|---|---|
| Eyebrow Hero | «ИТ разработка & ИИ» |
| H1 | «Масштабируем ИТ-решения» |
| Подзаголовок | «Сложность возникает на масштабе. Мы решаем ИТ-задачи любого масштаба.» |
| Основной текст Hero | «МамонтДев разрабатывает индивидуальные ИТ-решения для бизнеса и помогает компаниям в масштабировании ИТ-продуктов и трансформации операционной деятельности через ИИ.» |
| Primary CTA | «Обсудить проект» → `/contacts/` |
| Secondary CTA | «Оценить масштабируемость» → `/it-scalability/` |
| Доверие в Hero | «Резидент ПВТ Республики Беларусь» вместо статистики проектов, технологий и лет |
| О компании | «МамонтДев возвращает ИТ-решениям возможность масштабироваться, а бизнесу расти» |
| Услуги | «Мы предлагаем», две карточки: заказная разработка и ИИ решения |
| Портфолио | «Как мы адаптируем ИТ-решения под бизнес», четыре карточки и переход к каталогу |

Раздел «Подход команды» с видео CTO удалить с главной согласно DOCX. Компонент Video оставить в системе как необязательный элемент внутренней страницы; его наличие в справочнике не возвращает удалённый блок.

## Цветовые токены

| CSS токен | Значение | Статус и назначение |
|---|---|---|
| `--color-ink` | `#111111` | Наблюдение Figma: основной текст, тёмная поверхность |
| `--color-paper` | `#FFFFFF` | Наблюдение Figma: основная светлая поверхность, текст на тёмном |
| `--color-surface` | `#F5F5F3` | Наблюдение Figma: вторичная светлая поверхность |
| `--color-muted` | `#6B6B6B` | Наблюдение Figma: вторичный текст на светлом |
| `--color-border` | `#E3E3E0` | Наблюдение Figma: декоративные границы и разделители |
| `--color-gold` | `#C9A227` | Наблюдение Figma: золото, primary CTA и акценты |
| `--color-gold-hover` | `#E0C45A` | Наблюдение Figma: hover primary CTA |
| `--color-gold-active` | `#B8911E` | Наблюдение Figma: active primary CTA |
| `--color-muted-inverse` | `#A8A8A2` | Рекомендация: читаемый вторичный текст на `#111111` |
| `--color-gold-ink` | `#806515` | Рекомендация: маленькие золотистые подписи на белом |
| `--color-control-border` | `#85857F` | Рекомендация: различимая граница поля ввода на белом |
| `--color-success` | `#247A48` | Рекомендация, реализована: текст и пиктограмма успеха на светлом |
| `--color-warning` | `#8A6200` | Рекомендация, реализована: предупреждение, отдельное от brand accent |
| `--color-error` | `#B42318` | Рекомендация: ошибка поля или запроса на светлом |
| `--color-info` | `#245DA8` | Рекомендация, реализована: информационное состояние на светлом |

Семантические подложки справочника: success `#EDF6EF`, warning `#FFF6DC`, error `#FDF0ED`, info `#EDF3FC`. Это реализованные рекомендации, не цвета, извлечённые из Figma. Для тёмных секций назначать отдельные проверенные пары текста и подложки; не использовать эти значения автоматически во всех режимах. Статус всегда сопровождать словом, пиктограммой или числом.

Локальный расчёт контраста даёт `#6B6B6B` на `#111111` около 3.54:1, а `#A8A8A2` — 7.90:1. `#C9A227` на белом даёт 2.42:1, рекомендуемый `#806515` — 5.54:1. Чёрный текст на золотой кнопке даёт 7.81:1. Поэтому сохранить золото для поверхности primary CTA, а вторичный текст тёмных секций и маленькие подписи светлых секций скорректировать.

Для обычного текста ориентир — минимум 4.5:1, для крупного — 3:1 согласно [WCAG 2.2 Contrast Minimum](https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html). Светлая рамка `#E3E3E0` на белом имеет около 1.29:1: использовать её для декоративного разделения карточек, но не как единственный признак интерактивного поля или выбранного состояния.

## Типографика

| Роль | Шрифт | Размер и интерлиньяж | Вес и трекинг | Статус |
|---|---|---|---|---|
| H1 | Manrope | около 57.15px при ширине 1137px; line-height 1.08 | 800, `-.03em` | Наблюдение Figma: размер вычислен clamp |
| H2 | Manrope | 36/42px; line-height 1.15/1.2 | 800, `-.02em` | Наблюдение Figma: варианты секций |
| H3 | Manrope | 19/20px; line-height 1.3 | 700 | Наблюдение Figma |
| Body | Inter | 16px / 28px | 400, нормальный трекинг | Наблюдение Figma |
| Navigation | Manrope | 15px | 500 | Наблюдение Figma |
| Button | Manrope | 15px; line-height 1 | 700 | Наблюдение Figma |
| Tag | Manrope | 12px | 600, `.04em` | Наблюдение Figma |
| Eyebrow | JetBrains Mono | 11px | 500, `.12em`, uppercase | Наблюдение Figma |
| Label поля | Manrope | 13px | 600 | Наблюдение Figma: форма контактов |
| Helper и caption | Inter | 14px / 20px | 400 | Рекомендация |
| Input и длинные списки | Inter | 16px / 24px | 400 | Рекомендация |

Рекомендация для адаптивных заголовков: H1 `clamp(36px, 5vw, 64px)`, H2 `clamp(28px, 3.2vw, 42px)`. Это контракт реализации, а не восстановленная точная формула Figma. На мобильном проверить реальные русские заголовки, переносы и высоту Hero.

Таблица задаёт типографику корпоративного сайта и образцов его компонентов. Оболочка справочника использует более компактные редакционные подписи и навигацию, другую компоновку Hero и интервалов; её размеры не заменяют токены корпоративного сайта. Подписи о происхождении значения и инструкции формы должны оставаться читаемыми.

Использовать по одному H1 на страницу и последовательную иерархию H2/H3. Не применять uppercase к длинному тексту, названиям услуг и сообщениям об ошибке. Короткие технические подписи допустимы в Mono; ключевая инструкция формы должна оставаться крупнее 11px.

В справочнике variable fonts подключены локально через `@fontsource-variable`, включая кириллицу. Имена CSS семейств: `'Manrope Variable'`, `'Inter Variable'`, `'JetBrains Mono Variable'`. Fallback в CSS: `sans-serif` для Manrope/Inter, `monospace` для Mono.

Рекомендация для корпоративного сайта: сохранить WOFF2 в проекте и подключить `next/font/local` с CSS variables и `display: swap`. Это делает сборку независимой от загрузки Google Fonts; порядок подключения и файлы описаны в [Next.js Font Optimization](https://nextjs.org/docs/app/getting-started/fonts). В репозитории фиксировать лицензию шрифтов и конкретные версии пакетов.

## Отступы и сетка

Наблюдение Figma: контейнер максимум 1280px; секции `padding: 80px 40px`; Hero `96px 40px 80px`; мобильный Hero `60px 20px 56px`. Hero и исторический блок CTO имеют две колонки с gap 64px; карточки услуг и кейсов — две колонки.

Рекомендация: базовая единица 4px, шкала `4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96`. Контейнер `width: min(100% - 2 * gutter, 1280px)`, `gutter: 40px` на больших экранах и 20px на мобильных. Не суммировать gutter контейнера с padding секции повторно.

| Ширина | Поведение | Статус |
|---|---|---|
| от 901px | Полное меню; Hero в 2 колонки; крупные интервалы | Рекомендация на основе наблюдённой границы 900px |
| 768–900px | Свернуть меню; Hero в 1 колонку; карточки в 2 колонки при достаточной ширине | Рекомендация |
| до 767px | Поля 20px; основные секции в 1 колонку; кнопки могут занимать всю ширину | Наблюдённая граница 767px, уточнение поведения — рекомендация |
| до 600px | Карточки и фильтры в 1 колонку; компактные отступы | Наблюдённая граница 600px, уточнение поведения — рекомендация |

Рекомендация: проверять 360, 390, 768, 1024 и 1440px. Минимальная поддерживаемая ширина — 320px; на ней не должно быть горизонтального скролла страницы. Для кода и таблиц разрешён внутренний горизонтальный скролл с понятной областью.

Текстовые колонки ограничить 60–75 знаками строки; основные описания обычно не шире 680px. Длинные CTA переносить целиком, не обрезать ellipsis. Группы тегов переносить на следующую строку. Сетка задаёт визуальный порядок, DOM должен сохранять естественный порядок чтения.

## Границы и визуальные эффекты

| Токен | Значение | Статус |
|---|---|---|
| `--radius-tag` | 2px | Наблюдение Figma |
| `--radius-control` | 4px | Наблюдение Figma: кнопки |
| `--radius-card` | 8px | Наблюдение Figma |
| `--border-thin` | 1px solid | Наблюдение Figma: карточки и теги |
| `--border-button` | 2px solid | Наблюдение Figma |
| `--shadow-card-hover` | `0 4px 24px rgba(201,162,39,.08)` | Наблюдение Figma |
| `--ring-own-product` | `rgba(201,162,39,.25)` | Наблюдение Figma: выделение собственного продукта |
| `--focus-width` | 2px | Рекомендация |
| `--focus-offset` | 3px | Рекомендация |

Не добавлять сильные чёрные тени, большие скругления и градиенты в стандартные карточки. Выбранное состояние и focus не должны менять размер компонента. Рекомендация: иерархия наложения `base 0`, `header 10`, `dropdown 20`, `overlay 40`, `dialog 50`, `toast 60`; проверить контексты stacking, а не рассчитывать только на число z-index.

## Изображения и иконки

Существующий логотип задан [ссылкой из DOCX](https://drive.google.com/file/d/1vL0eElSSdf1DGEA8cJ_OPvxlLpggS82m/view?usp=sharing). До получения исходного векторного файла типографическое имя в справочнике считать временным. Не перерисовывать фирменный знак по памяти. Рекомендация: основной и инверсный варианты, фиксированные пропорции, свободное поле не меньше половины высоты знака.

Рекомендация для иконок: одна согласованная библиотека контурных SVG, 20/24px, stroke 1.5–2px; для стрелки кнопки 16px. SVG наследует `currentColor`. Декоративным иконкам назначать `aria-hidden="true"`; кнопка только с иконкой получает понятное `aria-label`.

Для превью кейса рекомендация — соотношение 16:10, для видео 16:9; размеры контейнера резервировать заранее. Скриншот интерфейса показывать с `object-fit: contain`, фотографию с `cover` и проверенной точкой кадрирования. Alt описывает содержимое и его смысл; декоративная графика имеет пустой alt. Отсутствующее превью заменять честной заглушкой с названием проекта, а не вымышленным экраном продукта.

## Общие состояния и анимация

Все применимые компоненты корпоративного сайта должны поддерживать Default, Hover, Focus, Active/Pressed, Disabled, Loading, Error, Success, Selected и Empty. Это контракт системы; отдельной карточке без действия не требуется Loading, а ссылке не требуется Success. Справочник показывает локальные образцы этих состояний, а не завершённую серверную реализацию всех компонентов.

Рекомендация, реализована: переход цвета, фона, рамки и opacity — 200ms, easing `cubic-bezier(.4, 0, .2, 1)`. CSS токены — `--motion-duration` и `--motion-easing`. Не анимировать layout карточек при hover; допустимо лёгкое визуальное выделение рамкой и тенью. `prefers-reduced-motion: reduce` отключает перемещения, масштабирование, smooth scroll и ненужные переходы. На корпоративном сайте spinner допустим только пока есть реальная операция и сопровождается текстом; в справочнике закреплённый Loading образец подписан как демонстрация.

`focus-visible` должен быть различим на светлом и тёмном фоне: золото 2px, offset 3px; на светлом проверить контраст и при необходимости добавить тёмный внешний контур. Hover не заменяет focus. Нажатие кнопки — краткое active состояние, выбор радио или фильтра — устойчивое Selected состояние.

Контракты ниже — рекомендации для повторного использования; содержимое props поступает из проверенных данных, состояние не зашивается в текст.

| Компонент | Ключевые свойства | Варианты и применимые состояния |
|---|---|---|
| Logo, Nav, Breadcrumbs | `src`, `alt`, `href`; `items`, `currentPath`; `trail` | Light/Dark; hover, focus, current, open/closed |
| Hero, FeatureBlock, Panel | `eyebrow`, `title`, `description`, `actions`, `media?` | Light/Dark, с медиа/без медиа; контент без мнимой интерактивности |
| ServiceCard, CaseCard | `title`, `summary`, `slug`, связанные записи и медиа | Service/Case/OwnProduct; hover/focus ссылки, absent media |
| ReviewCard, Video | `organisation`, `author`, `role`, `date`, `source`; `src`, `poster`, `captions?` | Пересказ/точная цитата; video idle/loading/playing/error |
| Tag, FilterGroup, Tabs | `label`, `value`, `selected`, `onChange`; `items`, `activeId` | Static/Interactive; hover/focus/selected/disabled/empty |
| Field, Choice, Form | `id`, `label`, `value`, `required`, `helper`, `error`, `onChange` | Text/Email/Tel/Search/Select/Textarea; idle/invalid/pending/success/error |
| FAQ, Steps, Progress | `items`; `activeStep`, `completed`, `total` | Static steps/Open FAQ; empty, expanded, completed |
| ChecklistRisk, Status | `label`, `severity`, `reason`, `source?` | Success/Warning/Error/Info; риск отличается от индекса сценария |
| Tooltip, Dialog, CookieBanner | `label`, `content`, `open`, `onClose`; `consent`, `onChoose` | Hidden/Open; focus/escape; выбор согласия |
| Footer, ArticleTemplate | `contacts`, `legal`, `links`, `form?`; поля статьи | Общий/статья без footer формы; отсутствующие необязательные поля |

Рекомендация для outline кнопок: hover добавляет слабую нейтральную подложку своего контекста, active усиливает её; цвет текста сохраняет контраст. Disabled снижает визуальный акцент без изменения размеров, Loading сохраняет подпись или её доступное имя. Все неподтверждённые визуальные состояния дополнить в Figma отдельными вариантами до корпоративной реализации.

## Кнопки и ссылки

| Компонент | Вариант | Визуальный контракт |
|---|---|---|
| Button | Primary | Золотой фон, `#111111` текст; hover `#E0C45A`, active `#B8911E` |
| Button | Outline light | Прозрачный/белый фон, чёрный текст и рамка |
| Button | Outline dark | Прозрачный фон, белый текст и рамка на тёмной секции |
| Button | Text | Рекомендация: текстовая кнопка для вторичных действий без перехода |
| Link | Inline | Рекомендация: подчёркивание, читаемый цвет и видимый focus |
| Link | Arrow | Ссылка карточки с декоративной стрелкой, понятным текстом |

Наблюдение Figma: Manrope 15px/700, line-height 1, padding 12px 28px, border 2px, radius 4px, gap 8px. Вычисленная высота около 43px. Рекомендация: добавить `min-height: 44px`, для большой кнопки 48px; маленькая визуальная кнопка также должна иметь область нажатия минимум 44px. Это выбранная цель проекта, а не точная высота исходного макета.

Button использует `<button>` для действия и `type="button"` по умолчанию, submit — явно. Переход использует `<a>` или Next Link даже при внешнем виде кнопки. Не вкладывать кнопку в ссылку. Loading сохраняет ширину, блокирует повторный submit, задаёт `aria-busy`; Disabled отключает обработчик и получает текстовую причину рядом, когда она нужна.

Контракт: `variant`, `size`, `tone`, `disabled`, `loading`, `startIcon`, `endIcon`, `children`. Ссылки получают `href`; действия — `onClick`. Для внешнего перехода не открывать новую вкладку без причины; если она нужна, обозначить это доступным именем и использовать `rel="noopener noreferrer"`.

## Header и вспомогательная навигация

Header содержит Logo, PrimaryNav и CTA. Текущий пункт выделить текстом/линией и `aria-current="page"`; одного золота недостаточно. Dropdown услуг открывается по клику и с клавиатуры, получает `aria-expanded`, закрывается Escape и возвращает focus к кнопке.

Мобильное меню — кнопка «Открыть меню», затем доступная панель со всеми четырьмя разделами и CTA. Закрытие доступно клавиатурой. При реализации модального drawer focus удерживается внутри, фон недоступен для взаимодействия, после закрытия focus возвращается. Рекомендация: меню сворачивать на границе 900px после проверки длины русских пунктов.

Breadcrumbs нужны на внутренних страницах: `<nav aria-label="Хлебные крошки">`, упорядоченный список, текущий элемент не обязан быть ссылкой. Tabs меняют панель одного интерфейса; ссылки разделов остаются навигационными ссылками. Pagination имеет доступные названия страниц и текущую страницу; «Показать ещё» объявляет число добавленных карточек без переноса focus.

## Hero и содержательные блоки

Hero: eyebrow → H1 → подзаголовок → короткое описание → два CTA → знак ПВТ. Вторая колонка содержит листинг из прототипа, доступный как декоративная графика или кодовая панель без скрытого смысла. Achievement ПВТ — небольшая пиктограмма/знак награды, текст статуса и ссылка на [карточку резидента](https://park.by/residents/mamontdev/).

FeatureBlock: короткий H3, объяснение пользы и необязательная иконка. На главной четыре темы из DOCX: проектирование под бизнес, надёжность, полный цикл, масштабирование идей и продуктов. Panel и ListItem используют общие токены рамки/поверхности; внутри панели сохраняются собственные отступы 16–24px.

Video — необязательный компонент внутренней страницы: poster, название, кнопка воспроизведения, субтитры/текстовая расшифровка при речи и controls. Не включать autoplay со звуком; зарезервировать размер, грузить тяжёлое видео после действия. Error предлагает повторить или открыть исходник. На главной CTO Video отсутствует.

## Карточки услуг и кейсов

Наблюдение Figma: padding 32px, radius 8px, border 1px; hover меняет рамку на золото и добавляет мягкую золотую тень. Рекомендация: на мобильном padding 24px. В соседних карточках выравнивать CTA по нижнему краю, но не обрезать основной текст до потери смысла.

ServiceCard: название → краткое описание → «Подробнее». На главной две карточки, в каталоге четыре. Контракт: `title`, `summary`, `slug`, `icon?`, `relatedCaseIds?`. Переход карточки отправляет событие аналитики только после подключения реальной системы и учёта выбора cookies.

| Услуга | Путь из XLSX | SEO title из DOCX |
|---|---|---|
| Разработка ПО на заказ | `/services-custom-software-development/` | Заказная разработка программного обеспечения под ключ |
| Индивидуальные ИИ решения для бизнеса | `/services-ai-solutions-for-business/` | Разработка и внедрение эффективных ИИ-решений для бизнеса |
| Технический аудит | `/services-technical-audit/` | Технический аудит IT-проектов и инфраструктуры |
| Масштабирование ИТ решений и архитектуры | `/services-it-scalability/` | Услуги в области масштабирования ИТ-процессов и архитектуры АС |

В XLSX последняя услуга называется «Масштабирование ИТ-процессов и архитектуры АС», а название листа включает «ИТ решений». Отображение и slug должны опираться на одну выбранную запись. Каждый лист услуг содержит пять шагов процесса и шесть FAQ; DOCX требует 3–5 FAQ. Для запуска выбрать до пяти релевантных вопросов, шестой сохранить в контенте до редакционного решения.

CaseCard: preview → название → описание → подтверждённый результат при наличии → теги услуг → «Подробнее» или «Публичный сайт». Контракт: `title`, `slug`, `summary`, `preview?`, `result?`, `serviceTags`, `industry?`, `country?`, `companySize?`, `isOwnProduct`, `publicUrl?`, `reviewId?`. Поле результата содержит единицу, источник и оговорку; пустое поле не превращается в ноль.

OwnProduct — вариант CaseCard с небольшим текстовым тегом «Собственный продукт» и золотой рамкой/кольцом. Он входит в портфолио вместе с заказными проектами. Статус не должен выглядеть как независимая клиентская рекомендация.

Кейс внутри страницы: клиент → задача → решение → результат → технологии → отзыв → связанные услуги/кейсы → CTA. Поля страна/размер компании показывать только при наличии. Отсутствие данных не означает «Беларусь», «крупный бизнес» или иной предположенный сегмент.

В `portfolio.xlsx` 16 записей; DOCX перечисляет восемь основных проектов и требует четыре карточки на главной. Приоритет главной формировать редакционно из списка DOCX; полный каталог может содержать проверенные записи XLSX после согласования публикации. Все 16 preview пока записаны как «Нужно сделать изображение-превью». Страна отсутствует в 14/16 строк, размер компании — в 15/16, отрасль — в 2/16. Для первого каталога рабочие фильтры — услуги и заполненные отрасли; страны/размеры документировать как подготовленные поля, не обещать полноценный выбор.

| Число в портфолио | Допустимая интерпретация | Ограничение источника |
|---|---|---|
| Molwe: 410 000 уникальных посетителей/месяц, 3 624 новых автора | Посетители — по медиакиту 2026; новые авторы — за апрель 2026, как указано в XLSX | Не доказанный прирост от работы Mammoth Dev; перед публичной публикацией сверить медиакит |
| AANAI: >95% | Достоверность верификации контента по отзыву заказчика | Не универсальная точность ИИ; сохранять атрибуцию |
| Ordeez: >500 DAU, >20 тыс. транзакций/контракт, >3 тыс. NFT, около 5 млн USDT займов | Публичные показатели протокола, указанные в XLSX | Не общая метрика агентства; нужны контекст и проверка внешнего источника |
| GiftsBattle: около 90 тыс. активных пользователей и месячная аудитория 54–59 тыс. | Разные наблюдения, записанные в XLSX | Нет одной даты и единой базы; не объединять в точную KPI карточку |
| Darwin: две подготовленные статьи | Указанный в таблице результат проекта | HF benchmarks явно названы сторонними артефактами, их scores не выдавать за достижения команды |

4Sale описывает масштабы «миллионы товаров» и «сотни тысяч строк» без точного измеренного процента. В XLSX у AANAI также есть отзыв Sandor Miklos, генерального директора и председателя everdime.com; это отдельный источник от трёх PDF. Не раздавать один отзыв другим карточкам. Числа из этого раздела передают содержимое предоставленной таблицы; внешние утверждения не считаются повторно проверенными этим документом.

## Отзывы и факты доверия

ReviewCard: организация → краткое содержание подтверждённого результата → автор и роль → дата → «Открыть отзыв». Пересказ обозначить как содержание отзыва; кавычки использовать только для точной сверенной цитаты. Скан PDF открывается отдельно, читаемый текст карточки остаётся доступным на мобильном.

| Организация | Автор | Что подтверждено |
|---|---|---|
| АО «ФИК МЕДИА» | Андрианов М.Р., генеральный директор, 13.07.2026 | Восстановление и развитие сайта, стабилизация, устранение критических ошибок; численных метрик нет |
| Brookside Investments Ltd. | Sylvia Meadows, Director, 25.06.2026 | UX документооборота и корпоративного хранилища; время обучения новых сотрудников сократилось почти вдвое по отзыву |
| ROKSAGROLIT | Дмитрий Матвеенка, коммерческий директор, 01.07.2026 | Комплекс для производства, мобильное приложение, аналитика, Computer Vision и AI/ML; численных метрик нет |

Метрику Brookside можно цитировать с атрибуцией «по отзыву клиента». Не превращать «почти вдвое» в точные −50%, не распространять результат на все проекты, не добавлять срок или выборку. Документ ROKSAGROLIT описывает автоматизацию отдельных операций, поэтому «100% автоматизация» не подтверждается.

`Отзыв_Molwe.pdf` содержит письмо АО «ФИК МЕДИА», без названия Molwe в тексте. Связь с Molwe необходимо подтвердить прежде, чем прикреплять отзыв к этому кейсу. В письме Brookside проект написан SuperBos, в имени PDF — SuperBoss. В ROKSAGROLIT шапка UAB, русский текст ЗАО; использовать нейтральное публичное имя до уточнения юридической формы.

Molwe PDF и обе страницы SuperBoss являются сканами и полностью просмотрены визуально. При автоматическом чтении SuperBoss библиотека pdfplumber возвращает 0 страниц, а Poppler корректно видит 2: не считать отзыв пустым. Печати, подписи и личные контакты не использовать как декоративные ассеты; для публичного автора достаточно имени и роли.

## Теги и фильтры

Наблюдение Figma для Tag: Manrope 12px/600, tracking `.04em`, padding 4px 10px, radius 2px, border 1px. Статический тег не получает hover и tab stop; тег фильтра — отдельная кнопка с областью нажатия 44px и `aria-pressed`.

Фильтры портфолио: услуги, отрасль, страна и размер компании при достаточном наполнении данных. Использовать checkbox для множественного выбора или select для одного значения; не менять модель выбора между desktop и mobile. Selected содержит галочку и текст, Reset очищает только фильтры, а не исходные данные. Отображать число найденных кейсов; Empty предлагает «Сбросить фильтры».

Рекомендация: сохранять фильтры в query string, чтобы ссылку можно было передать и вернуться назад. Отсутствующие значения сохранять как `null`; категории не выводить из названия или языка проекта. Только у Molwe указана Россия, у Книги Жизни Израиль, а размер компании 1–10 сотрудников заполнен у Ordeez. Выключить остальные незаполненные фильтры до подготовки данных или ясно пояснить ограниченность выборки.

## Формы и элементы управления

Основная форма находится на `/contacts/`. DOCX также предусматривает форму в футере всех страниц, кроме статей; её реализовать через один Form компонент с уникальными id полей. Вариант модального окна на странице услуги допускается, но основной CTA Hero ведёт на контакты.

| Поле | Обязательность | Контракт |
|---|---|---|
| Имя | Да | `autocomplete="name"`; label «Имя» |
| Способ связи | Один вариант обязателен | Radio «Email» / «Телефон», fieldset с legend |
| Email или телефон | Выбранный вариант обязателен | `type="email"` / `type="tel"`; соответствующий autocomplete |
| Сообщение | Нет | Textarea; пользователь может менять высоту |
| Согласие | Да | Checkbox изначально выключен; рядом ссылка на политику |
| Отправить | Зависит от валидности и согласия | «Получить консультацию»; без согласия отправка недоступна |

Не добавлять обязательные организацию, УНП, бюджет и пароль: их нет в утверждённой форме. Смена способа связи показывает одно релевантное поле, сохраняет введённые значения и не отправляет скрытый невыбранный контакт без отдельного основания.

Рекомендация для TextInput, Search и Select: min-height 48px, padding 12px 16px, radius 4px, текст 16px, рамка 1px `--color-control-border`. Textarea: min-height 120px. Label — видимый, Manrope 13px/600 по форме контактов прототипа; helper/error — рекомендация Inter 14px/20px. Placeholder даёт пример, а не заменяет label.

FieldState: default — обычная рамка; hover — усиленная рамка; focus — outline; invalid — error рамка плюс объяснение; disabled — явная недоступность; readonly — доступно выделение/копирование. Ошибка связана с полем через `aria-describedby`, поле получает `aria-invalid="true"`. Валидация должна объяснять исправление, а не только писать «Ошибка».

Checkbox и Radio: визуальный элемент 20px, вся строка label — область нажатия минимум 44px; selected показывает галочку/точку. Checkbox работает Space, radio поддерживает клавиши стрелок. Для групп — fieldset/legend. Select предпочтительно native, чтобы сохранить клавиатуру и системные возможности.

Switch, Date/Time и Search документируются как общие элементы системы, хотя в форме запуска они не требуются. Switch имеет доступное имя и `aria-checked`; дату/время показывать с явным форматом и часовым поясом; Search содержит видимый label, очистку и состояние отсутствия результатов. Не добавлять эти поля в лид форму ради демонстрации всех компонентов.

При submit: показать ошибки, перевести focus к их сводке или первому ошибочному полю, сохранить введённые данные. Pending блокирует повторную отправку и объявляется `aria-live="polite"`. Success появляется только после подтверждения сервера; Error сохраняет данные и предлагает повторить. В справочнике текст результата прямо указывает «демонстрация, данные не отправлены».

Серверная проверка, защита от повторов/спама и политика хранения — отдельные требования корпоративной реализации. Нельзя выдавать успешную локальную проверку за доставленную заявку. Ссылку на актуальную политику и текст согласия необходимо сверить перед публикацией.

## FAQ и процесс работы

FAQ на странице услуги содержит 3–5 вопросов по DOCX. Рекомендация: `<details><summary>` для простого варианта; в управляемом accordion использовать кнопку с `aria-expanded` и связанной панелью. Focus остаётся на вопросе, несколько раскрытых ответов допустимы. Стрелка декоративная, а текст вопроса — доступное имя.

Steps: 3–5 шагов процесса услуги, нумерованный список с названием и объяснением. На мобильном — вертикально; горизонтальный desktop вариант не меняет порядок. Для статического процесса не применять семантику progressbar: он описывает метод работы, а не выполнение пользователя.

Progress чек листа показывает завершённые шаги пользователя: «Шаг 2 из 3» и количество ответов. При точном числовом прогрессе использовать `<progress>` или `role="progressbar"` с доступным названием и значениями. Цветовая полоса дополняется текстом, а неизвестное состояние не получает выдуманный процент.

## Чек лист масштабируемости

Страница «Оцените масштабируемость Вашего ИТ-проекта» универсальна. Контексты DOCX: Vibe-coding, Legacy, выбор коробки или заказной разработки, полный переход на новые технологии. Вопросы, коэффициенты и условное отображение читать из `Scalability_Checklist.xlsx`; не сводить все варианты к Vibe-code.

UI: выбор контекста → шесть вопросов → «Узнать результат». Вопросы XLSX: архитектура, БД, инфраструктура, безопасность, тесты и документация. Счётчик «Заполнено X из 6» отделять от «Шаг X из 3». Сохранять ответы при движении назад и смене типа, явно отмечать пропущенные обязательные вопросы, поддерживать переход клавиатурой. Результат доступен после выбора типа и всех шести ответов.

| Измерение | Точные варианты ответа в XLSX |
|---|---|
| Архитектура | Микросервисы; Монолит; Serverless; Событийно-ориентированная |
| База данных | Реляционная (SQL); NoSQL; Гибрид; In-memory; Дата-лейк |
| Инфраструктура | Облако (AWS/Azure/GCP); Гибрид; Собственный дата-центр; Контейнер-оркестрация (K8s) |
| Безопасность | Инлайн-сканирование кода; WAF; IAM-политики; Шифрование данных; Отсутствие |
| Тесты | < 50%; 50-80%; > 80%; Отсутствие |
| Документация | Полная (архитектура, API, процессы); Частичная; Минимальная; Отсутствует |

Инструкция исходника: отвечать о текущей системе, а не о желаемой. Если действует несколько мер безопасности, выбрать самую сильную из реально работающих. При выборе коробки или заказной разработки без существующего продукта описывать фактическую площадку, защиту, тесты и документацию команды. В справочнике ответы «Да / Нет / Не знаю» показывают поведение формы; для рабочего калькулятора использовать точные варианты таблицы и исходные шкалы.

Методика XLSX подтверждает формулу DOCX: базовый индекс — среднее шести баллов, итог — база × коэффициент контекста. У каждого ответа четыре шкалы сценариев: `inplace`, `greenfield`, `box`, `custom`; коэффициент зависит только от типа и сценария. Не добавлять седьмой показатель или повторное влияние ответов в коэффициент.

| Тип | Сценарии и коэффициенты из XLSX |
|---|---|
| Vibe-code | Переписывание `greenfield` 0.92 / доработка `inplace` 0.90 |
| Коробка или разработка на заказ | Коробка `box` 0.90 / заказная разработка `custom` 0.88 |
| Legacy | Доработка `inplace` 0.86 / переписывание `greenfield` 0.84 |
| Переход на новые технологии | Переписывание `greenfield` 0.86 / доработка `inplace` 0.78 |

Индекс является моделью рисков по выбранным ответам, не эмпирической вероятностью успеха. Даже при переводе `0.75` в визуальные `75%` подпись должна сохранять слово «индекс». Среднее не доказывает наличие репликации, шардинга, CI/CD или мониторинга: вопросы о них косвенные. Низкая применимость риска не означает «контроль закрыт».

Рекомендация для однозначной границы риска: зелёный `>= 0.80` — «Устойчивый контур», жёлтый `>= 0.50 и < 0.80` — «Зона внимания», красный `< 0.50` — «Высокий риск». В DOCX на 0.80 есть пересечение границ; XLSX использует эти однозначные интервалы. Индекс сценария и применимость отдельного риска — разные значения. ChecklistRisk содержит текст «Высокая / Средняя / Низкая применимость» и конкретное основание.

Результат включает 18 базовых рисков — по три на измерение — с применимостью и основаниями, каталог архитектур по рискам и три специфических риска выбранного типа. Если сценарии в одной зоне и разница индексов <0.05, исходник рекомендует выбирать по бюджету, срокам и допустимому простою; не выдавать разницу сотых за безусловное преимущество. CTA: «Получить детальный технический аудит» и «Оценить стоимость двух сценариев». Предложение PDF на email не означает готовую отправку: нужны реальный сервер и обработка согласия.

Обнаружено ограничение методики XLSX: зелёный результат достижим только для доработки Vibe-code с максимальным индексом около 0.8175; другие семь сочетаний типов/сценариев имеют максимумы 0.70–0.7812. Это вопрос исходных весов и порогов, а не дефект цвета. Не менять коэффициенты молча и не показывать случайный процент как рассчитанную оценку. В текущем справочнике результат обозначать как демонстрационное состояние.

## Системные сообщения и служебные элементы

| Компонент | Поведение |
|---|---|
| Status | Текст + иконка + семантический цвет; не передаёт состояние одним цветом |
| Tooltip | Дополнительная короткая справка по hover/focus; Escape закрывает; важная инструкция видна без tooltip |
| Loading | Skeleton без скачка высоты или spinner с названием операции; область получает `aria-busy` |
| Empty | Объясняет отсутствие данных и предлагает релевантное действие, например сброс фильтров |
| Error | Сообщает, что не удалось, и предлагает повтор/возврат; сохраняет пользовательские данные |
| Success | Только подтверждённый результат операции; объявляется без неожиданного переноса focus |
| Dialog | Название, кнопка закрытия, focus trap и возврат focus; Escape закрывает, когда действие обратимо |
| CookieBanner | Выбор «Принять» / «Отклонить» из предоставленной политики; выбор сохраняется |

Рекомендация: cookie banner не блокирует чтение сайта. Технические cookies описывать отдельно; аналитику включать только в соответствии с реально реализованным выбором. Политика содержит неактуализированные для нового сайта формулировки о паролях и загрузках, поэтому её текст и технологический состав нужно сверить перед продом. Справочник не активирует стороннюю аналитику.

## Футер и контакты

Footer общий для всех страниц: четыре раздела навигации, CTA, контакты, реквизиты, политика, ПВТ и реальные соцсети. DOCX задаёт крупный футер; рекомендация — давать ему достаточную высоту по содержимому, не фиксировать строго 100vh на маленьком экране.

Из спецификации: `sales@mammothdev.by`, `+375 (29) 659 36 53`, ООО «МамонтДев», УНП `193760274`, Минск, ул. Волгоградская, д. 13, индекс `220049`. Email и телефон кликабельны через mailto/tel. Политика указывает `mammoth@mammothdev.by` для содействия по вопросам персональных данных; не заменять его автоматически на sales.

Кабинет расходится: в спецификации `231-54`, в политике `213-54`. До сверки в демонстрации использовать адрес улицы и явно оставить вопрос кабинета открытым. VK, LinkedIn, Телеграм и Max названы в DOCX, но ссылки обещаны к продакшену; не выдумывать аккаунты и не ставить `href="#"` на мнимую соцсеть.

## Шаблоны статей и CMS

Это следующий этап согласно разделу CMS в DOCX; блог не входит в основное меню запуска. ArticleTemplate: breadcrumbs, title, дата, автор/роль при наличии, время чтения по фактическому тексту, содержимое, изображения, теги, связанные материалы, FAQ до пяти вопросов и CTA из CMS.

Модель статьи: `title`, `slug`, `previewImage`, `date`, `author`, `role`, `category`, `serviceTags`, `contentHTML`, `faq`, `cta`, `seoTitle`, `seoDescription`. Категории источника: Кейсы, Экспертиза, Новости компании, Инновации. Допускаются прошлые даты, но шаблон не создаёт фиктивную дату публикации.

Рекомендация: контент статьи санитизировать, не исполнять произвольный HTML/скрипты CMS. Списки, цитаты, таблицы, код и изображения получают семантическую разметку; широкие таблицы прокручиваются внутри блока. Search, pagination и related cards используют общие компоненты.

## Контракт React и Next.js

Использовать Next.js App Router, React, TypeScript, CSS custom properties для токенов и CSS Modules для компонентов. Версии зависимостей закреплять в lockfile; существующую реализацию и запуск описывает README. Основа файловых маршрутов и layout описана в [официальной инструкции Next.js](https://nextjs.org/docs/app/getting-started/installation).

Server Components: тексты, услуги, кейсы, отзывы, metadata, статические секции и SEO. Client Components: мобильное меню, фильтры, форма, управляемый FAQ, чек лист, модальные окна и демонстрация состояний. Граница `'use client'` располагается в небольшом интерактивном компоненте, а не автоматически на всей странице.

Рекомендация структуры: `app` для страниц/layout и границ ошибок, `components/ui` для общих элементов, `components/sections` для блоков, `data` для проверенного контента, `styles/tokens.css` для токенов, `public` для изображений и PDF. В CMS версии статические данные заменяются адаптером, а публичные props компонентов сохраняются.

```ts
type Evidence = { text: string; source: string; qualification?: string };
type CasePreview = {
  slug: string; title: string; summary: string;
  serviceTags: string[]; preview?: string; result?: Evidence;
  country?: string; companySize?: string; isOwnProduct: boolean;
  publicUrl?: string; reviewId?: string;
};
type FormState = 'idle' | 'invalid' | 'pending' | 'success' | 'error';
```

Этот пример — рекомендация типов, а не импортированный формат XLSX. Не хранить недостоверные метрики в `summary` вместо явно проверяемого `result`. Идентификаторы услуг и кейсов должны быть стабильны и связывать страницу, карточку и фильтр.

```css
:root {
  --color-ink: #111111;
  --color-surface: #f5f5f3;
  --color-gold: #c9a227;
  --color-gold-hover: #e0c45a;
  --color-gold-active: #b8911e;
  --font-heading: 'Manrope Variable', sans-serif;
  --font-body: 'Inter Variable', sans-serif;
  --font-mono: 'JetBrains Mono Variable', monospace;
  --radius-control: 4px;
  --radius-card: 8px;
  --motion-duration: 200ms;
  --motion-easing: cubic-bezier(.4, 0, .2, 1);
}
```

Полная таблица выше является договорённостью токенов; пример CSS показывает способ именования. Figma Variables: `color/ink`, `color/gold/default`, `color/gold/hover`, `space/32`, `radius/card`, `motion/fast`. Component sets: `Button`, `ServiceCard`, `CaseCard`, `Field`; варианты `Variant=Primary`, `State=Hover`, `Size=Default`, `Tone=Dark`. Не включать случайные номера копий в имя библиотечного компонента.

Вместо обязательного пользовательского dark mode использовать контекст секции `tone=light|dark`; это соответствует чередованию макета. В Figma допускаются режимы Light/Dark и Desktop/Mobile для семантических переменных, если они помогают поддерживать библиотеку.

## Доступность и SEO

Рекомендация — WCAG 2.2 AA как цель проверки, поскольку DOCX требует WCAG, но не указывает численный уровень. Проверить весь сценарий клавиатурой, видимый focus, порядок tab, доступные названия, ошибки и восстановление focus после диалогов. Ссылку «Перейти к содержимому» показывать при focus; landmarks — header/nav/main/footer.

Проверять 200% zoom и увеличение текста, реальные кириллические шрифты, читабельность на мобильном и reduced motion. Длинные названия услуг, email и адреса не должны разрывать сетку. Скриншоты и PDF не заменяют текстовую информацию, необходимую для понимания карточки.

Корпоративным страницам нужны уникальные title/description, canonical, sitemap, robots и корректные Open Graph изображения. Organization, WebSite, Service и BreadcrumbList заполнять подтверждёнными данными; Article добавлять при публикации статей. Placeholder телефон, `info@mammothdev.by`, демонстрационные соцсети и даты из примеров Schema не переносить в продакшен.

Текущий справочник не должен индексироваться как корпоративный сайт; рекомендация — `noindex`, пока он служит внутренней библиотекой. Хлебные крошки и Schema должны использовать тот же канонический маршрут услуги, что и header/карточки. `hreflang` добавляется после реального появления английских страниц.

## Критерии приёмки

1. Приоритет DOCX соблюдён: четыре пункта меню, удалённый CTO блок, знак ПВТ, две услуги и четыре кейса на главной.
2. Manrope, Inter и JetBrains Mono загружаются локально с кириллицей; размеры и переносы сравниваются в Chrome с наблюдённым прототипом.
3. Цвета, радиусы, рамки и padding переиспользуют токены; улучшения контраста обозначены как рекомендации, а не свойства Figma.
4. Button, Link, меню, фильтры, поля, FAQ и чек лист доступны клавиатурой; focus и выбранное состояние видны.
5. На 320–1440px нет горизонтального скролла страницы; карточки и формы остаются читаемыми, изображения не вызывают скачки layout.
6. Валидация требует имя, выбранный контакт и согласие; ошибка сохраняет данные; локальная демонстрация не заявляет реальную отправку.
7. Переходы услуг, кейсов и чек листа используют единый контракт маршрутов; нет ссылок на мнимые аккаунты и несуществующие страницы.
8. Метрики и отзывы имеют источники; неполные поля XLSX остаются пустыми/заглушками, не заполняются предположениями.
9. Для полной реализации проверяются загрузка до 3 секунд, LCP <2.5s и CLS <0.1 из DOCX на согласованном устройстве и сети; эти цели не считаются автоматически достигнутыми справочником.
10. Пройдены typecheck, lint и production build; визуально проверены desktop/mobile, формы, фильтры, раскрытие FAQ и демонстрационные состояния.

## Вопросы перед реализацией полного сайта

| Вопрос | Нужное решение |
|---|---|
| URL услуг расходятся между текстом и Schema | Утвердить один формат и синхронизировать все ссылки/redirects |
| Кабинет 231-54 или 213-54 | Сверить реквизиты и юридическую политику |
| Шесть FAQ в каждой услуге XLSX, 3–5 в DOCX | Выбрать до пяти для запуска, сохранить шестой до редакционного решения |
| Связанные кейсы услуг не совпадают с тегами портфолио | Утвердить mapping; упоминание не считать автоматически доказательством услуги |
| Восемь кейсов DOCX и 16 в портфолио XLSX | Утвердить четыре карточки главной и состав публикуемого каталога |
| Результат чек листа почти всегда ниже зелёного порога | Согласовать методику весов и порогов до реального калькулятора |
| Недостающие превью, страны и размеры компаний | Получить ассеты и факты, затем включать соответствующие фильтры |
| Molwe и отзыв ФИК МЕДИА | Подтвердить связь; не прикреплять документ автоматически |
| SuperBos / SuperBoss и разные названия услуг | Зафиксировать публичное написание и стабильные slug |
| CMS, сервер форм, PDF отчёт и аналитика | Выбрать интеграции и реально проверить delivery/consent |
| Логотип и соцсети | Получить оригинальные файлы и адреса аккаунтов из утверждённого источника |
| Политика и cookies нового сайта | Сверить текст, реально используемые технологии и согласие перед публикацией |

Эти вопросы не мешают использовать документ и локальное приложение как справочник визуальной системы. Они ограничивают перенос демонстрации в полный публичный сайт и достоверность отдельных публикационных данных.
