styles/tokens.css?v=20260928-card-stats-consistency-72РешениеЦвет, шрифт, сетка, радиусы, интервалы и размеры.
UXprod — Design system
Все образцы на этой странице используют реальные CSS-токены и классы портфолио. Изменение исходного токена или компонента автоматически отражается здесь и на страницах сайта.
01 — Введение
Меняйте глобальные значения в файле токенов, стили компонентов — в общих стилях, а готовую разметку копируйте из примеров ниже.
styles/tokens.css?v=20260928-card-stats-consistency-72РешениеЦвет, шрифт, сетка, радиусы, интервалы и размеры.
styles/global.css?v=20260928-card-stats-consistency-72БазаНормализация, ссылки и варианты кнопок.
styles/layout.css?v=20260928-card-stats-consistency-72КомпонентыШапка, карточки, секции, кейсы, контакты и медиа.
scripts/site.js?v=20260928-card-stats-consistency-72ПоведениеМеню, табы, слайдеры, lightbox и доступные состояния.
Не копируйте CSS компонента на страницу. Используйте его класс, а стиль меняйте в общем файле.
Если значение повторяется, меняйте или создавайте семантический CSS-token вместо локального числа.
Страница собирается из секций, а секция — из готовых компонентов и контентных слотов.
У каждого интерактивного элемента должны быть hover, focus-visible, keyboard и mobile-состояния.
02 — Введение
Карта показывает, где править систему, чтобы изменение распространилось на все страницы без дублирования.
tokens.cssЗначенияglobal.css + layout.cssКомпонентыHTML patternКомпозицияsite.jsПоведениеПросите изменить конкретный token или класс из этой страницы. Не разрешайте создавать локальный стиль внутри отдельного HTML-файла, если компонент уже существует.
02 — Основы
Значения читаются напрямую из :root, поэтому витрина всегда показывает актуальную палитру.
03 — Основы
Poppins с начертаниями 400, 500 и 600. Размеры заголовков адаптивные, подписи секций — системные 16 px.
Сложное становится понятным
var(--font-size-h1)var(--font-size-h2)var(--font-size-h3)var(--font-size-h4)var(--font-size-h5)var(--font-size-h6)Основной текст помогает ясно объяснить решение, контекст и результат.
var(--font-size-body)Краткая подпись раздела в кейсах.
var(--font-size-section-subtitle)Подпись логотипа
var(--font-size-logo-caption) — 11,5–12 pxОсновной текст и подписи
Заголовки и действия
Акцент внутри текста
04 — Основы
Шкала адаптивная: значения через clamp() плавно меняются между mobile и desktop.
05 — Основы
Основная desktop-сетка состоит из шести колонок. На узких экранах компоненты переходят в одну колонку, не меняя порядок содержания.
Вертикальные факты и минимальные интервалы.
Одна колонка, мобильное меню и touch-контролы.
Сокращённая сетка и компактные карточки.
Полная шестиколоночная композиция.
06 — Основы
Движение короткое и функциональное: 160 ms для мгновенной обратной связи, 240 ms для состояний, 460 ms для появления контента. При prefers-reduced-motion движение отключается. Демо запускаются только при наведении, поэтому страница не расходует ресурсы в фоне.
Однократное появление на 14 px при входе секции во viewport.
--motion-duration-reveal160 ms для цвета, фона и небольших состояний.
--motion-duration-fastУправляемый пользователем переход без автопрокрутки.
--motion-ease-emphasized07 — Ресурсы
Полный набор интерфейсных и продуктовых иконок из каталога /assets/icons/. Нажмите на карточку, чтобы скопировать HTML.
04 — Компоненты
Четыре нейтральных системных варианта не конкурируют с контентом. Фирменный фиолетовый остаётся смысловым и бренд-акцентом, но не используется для CTA. Для направления действия добавляйте существующую иконку-стрелку.
09 — Компоненты
Короткие метки описывают категорию или состояние. Не используйте их как основное действие.
11 — Компоненты
Системный блок для трёх или четырёх сопоставимых значений. Цифры используют типографические токены заголовков, а на mobile блок автоматически становится вертикальным.
12 — Компоненты
altprof-insights — единый шаблон выводов для исследований, анализа конкурентов и Job Stories. Нативный details сохраняет семантику и работает без JavaScript.
Короткое пояснение связывает группу выводов с данными раздела.
Форма должна помогать описать задачу обычным языком и не требовать экспертных знаний.
Покажите правила, прозрачные шаги и объяснение следующего действия.
13 — Компоненты
Один шаблон используется для одиночного изображения и галереи. Подпись берётся из активного слайда. Для именованных версий добавьте табы; без них компонент создаст пагинацию автоматически.
Для слайдера подключите /scripts/site.js?v=20260928-card-stats-consistency-72. data-case-media-tab связывается со слайдом по порядку, а data-case-media-initial="last" сразу открывает последнюю версию. Галерея переключается табами, стрелками клавиатуры, перетаскиванием мышью и свайпом. Два таба автоматически получают компактную ширину и выравниваются по центру. Модификатор case-media--controls-safe резервирует боковые зоны под стрелки и zoom, когда важный контент макета расположен у краёв. Подпись необязательна; для длинных вертикальных макетов не добавляйте data-case-media-fixed-ratio.
14 — Компоненты
Интерактивность подключается декларативно через data-* атрибуты. Основной файл поведения — /scripts/site.js?v=20260928-card-stats-consistency-72.
data-menu-toggle — data-menu-closeОткрытие, фокус и закрытие drawer.
data-language-switcher — data-language-toggleМеню локалей и aria-expanded.
data-protected-contact — data-contact-keyЗащищённые контактные действия.
data-video-trigger — data-video-modalМодальное видео, focus trap и Esc.
data-lightbox — data-galleryZoom, pan, swipe и навигация.
data-case-media — data-case-media-track — data-case-media-slide — data-case-media-tab — data-case-media-titleLayout, arrows, tabs или dots, drag и синхронная подпись.
data-photo-slider*Слайды, счётчик и pagination.
data-career-toggle — data-career-moreРаскрытие списка и отдельных записей.
data-case-contents*Scrollspy, collapse и mobile accordion.
tokens.css → global.css → typography.css → layout.css → animations.css → site.js. Для галерей мобильных приложений case-app-media.js подключается перед site.js.
14 — Шаблоны
Главный экран сочетает позиционирование, короткое описание, два действия и персональный визуальный акцент.
Привет, я Валерий
Открыт к проектамПревращаю сложную продуктовую логику в понятный пользовательский опыт.

15 — Шаблоны
Карточка состоит из светлой контентной колонки и медиазоны. На главной каждая карточка занимает полную ширину контейнера на десктопе и мобильных устройствах. Заголовок использует var(--font-size-h3), подзаголовок — var(--font-size-body). Все обложки используют один медиашаблон: контейнер 16:10, абсолютный внутренний frame с одинаковым полем --case-media-inset, центрирование и object-fit: contain без обрезки. Дополнительное свободное место по одной из осей допустимо для исходников с другим соотношением сторон — оно сохраняет изображение целиком. Фон медиазоны задаётся переменной --case-media-background и масштабируется точно по размеру контейнера. Модификатор case-card__media--fill-width разрешён только для специально подготовленных полноформатных обложек. Единый мобильный отступ контента задаёт --case-content-padding-mobile. В адаптивной компоновке до 1200 px панель метрик использует компактную высоту --case-stats-height, адаптивный размер цифр и общие токены внутренних отступов.
Кратко объясните контекст, масштаб работы и ценность решения для пользователя или бизнеса.

Для подборки экранов на главной и в первом экране мобильного кейса используйте один модификатор case-cover-carousel: в ленту попадает первый макет каждого продукта без дополнительной рамки или подложки, а вторая идентичная группа обеспечивает бесшовный цикл. Движение запускается только при наведении или фокусе, использует общий токен --motion-marquee-duration и отключается через prefers-reduced-motion. Используйте адаптивные WebP-превью 320/640 px из /assets/images/cases/mobile-cover/, а не полноразмерные исходники кейса.
16 — Шаблоны
На десктопе слева остаются только заголовок и краткий подзаголовок из одного предложения. Текст и контентные компоненты используют правую колонку; изображения и явно полноширинные блоки занимают всю сетку. Модификатор case-story-section--compact-lead позволяет следующему компоненту подняться под короткий вводный текст, не оставляя пустоту из-за высокого заголовка слева.
Короткая подпись раздела.
Основной рассказ находится справа. Здесь размещаются вводные абзацы и списки.
Тоже остаётся в правой колонке.
17 — Шаблоны
Готовые способы показать процесс, выводы, сравнение и основание приоритизации гипотез без локальных одноразовых компонентов.
Настройте измерение и зафиксируйте исходную точку.
Соберите качественные и количественные данные.
Свяжите решение с пользовательским сценарием.
Измерьте эффект и обновите гипотезу.
В компактном нумерованном списке case-story-list и в размеченном тексте altprof-labeled-copy смысловой заголовок всегда занимает отдельную строку, а пояснение начинается ниже.
Одно предложение поясняет, на каких материалах основаны выводы.
Сформулируйте наблюдение и объясните его влияние на сценарий.
Свяжите инсайт с конкретным направлением продуктового решения.
Если сократить первый шаг, больше пользователей начнут создание задания.
Визит → старт заявки
Если объяснить следующий шаг, снизится тревога перед публикацией.
Старт → публикация
Выборка ещё накапливается: прогноз не считается подтверждённым результатом.
Свяжите наблюдение с конкретным изменением в сценарии.
Отделите измеренный эффект от гипотезы, которую ещё предстоит проверить.
Визит → начало создания задания
Визит → публикация задания
Визит → выбран исполнитель
Завершите сравнение короткой интерпретацией: что подтверждено данными, а что требует следующей проверки.
altprof-journey-results показывает одинаковую пару «до → после» для каждого этапа пути. Компонент использует системные поверхности, accent, border, radius и тень; вывод отделяется общей поверхностью --color-surface-soft. Если данных пока недостаточно, статус прогноза объясняется отдельно от названия и значения метрики.
Один сквозной путь: от задачи пользователя до измеримого продуктового результата.
Profi
Avito
YouDo
Houzz
MyHammer
AirbnbНазвания в сетке используют единый семантический токен --font-size-logo-caption с адаптивным размером 11,5–12 px. Бренды не разрываются внутри слова; составные названия переносятся по пробелу. Не переопределяйте размер локально в кейсах.
Метки, значения и изменение показателя используют общие токены типографики. Во вложенном блоке метрики занимают ширину родителя; на телефоне выстраиваются вертикально. Разница процентных значений указывается в процентных пунктах.
Для абзацев и списков внутри altprof-insights используются общие отступы. У каждого раздела и data-gallery должен быть собственный идентификатор. Подпись можно не выводить в галереях версий; текст для лайтбокса задаётся через data-lightbox-caption. Русская версия задаёт структуру; EN и SR собираются из неё командой python tools/sync-portfolio.py --write.
18 — Шаблоны
Паттерны личного профиля: галерея, список компетенций и раскрываемая профессиональная история.
2024 — сейчас
Marketplace — B2B/B2C
Опишите ответственность, масштаб продукта, ключевые решения и измеримый результат.
19 — Шаблоны
Глобальные оболочки сайта. Их разметка сейчас статическая, поэтому при изменении структуры синхронизируйте все языковые страницы; стили и поведение уже общие.
Основные пункты используют токен --font-size-case-contents — 16 px. Связанные этапы сценария объединяйте через .case-contents__group: светлая подпись объясняет логику группы, линия остаётся фоном, а каждый пункт отмечается отдельной точкой. Активный этап отличается тёмным маркером и более контрастным текстом.
Используйте горизонтальный lockup из официального знака и полного названия. В спокойном состоянии весь элемент имеет --opacity-brand-muted; при наведении — --opacity-brand-active. Знак и название меняют тон одновременно, а длительность движения --motion-marquee-duration компенсирует увеличенную ширину элементов.
20 — Шаблоны
Единый шаблон для кодов 400, 403, 404, 410, 500 и 503. Меняются только статус, сообщение и modifier страницы.
Ошибка 404
Проверьте адрес или вернитесь на главную страницу портфолио.
21 — Шаблоны
Крупные текстовые ссылки подходят для нескольких каналов, primary-кнопка — для главного следующего шага.
22 — Конструктор
Скопируйте базовую разметку, замените заголовки, тексты и изображения, затем добавьте только нужные компоненты из каталога. Подробный локальный сценарий описан в LOCAL-EDITING.md.
Краткое описание ценности страницы.
Короткая подпись раздела.
Основное содержание раздела.
Запустите tools/new-case.ps1 -Slug my-case или скопируйте HTML-каркас существующей страницы своего типа.
Используйте классы case-story-section, case-study-stats, altprof-insights и case-media; не добавляйте inline-стили.
Обновите текст, alt, размеры изображения, метаданные и ссылки, сохранив классы и data-атрибуты компонентов.
Desktop 1440 px, tablet 1024/768 px, mobile 390 px, клавиатуру, фокус и отсутствие переполнения.
23 — Качество
Чек-лист обязателен для любого нового компонента или шаблона.
h1 на страницу:focus-visiblealtButtons, navigation, hero, case cards, case sections, media, sliders, stats, единый accordion выводов, about, career, contacts, overlays и error pages.
Dark theme и theme switcher: токены существуют, однако текущий сайт принудительно использует light theme.
Input, select, textarea, checkbox, radio, toggle, tooltip, toast, skeleton и progress. Не копируйте случайные локальные стили — сначала добавьте системный компонент.
24 — Справочник
Полный автоматически собранный список переменных из дизайн-системы. Значение и вызов каждого token можно скопировать.