Единый канон прототипов. Над тремя рабочими слоями — вводный
раздел «Основы»: айдентика и фирменные знаки, на которых стоит система.
Сами слои — токены, компоненты и паттерны-композиции (слой Foundations
переименован в «Токены»). Бирюза + slate, Plus Jakarta Sans. Каждый
компонент извлечён из рабочих экранов v2/v3, переписан на токены и сверен
с DESIGN-GUIDE. Новый экран собирается подключением tokens.css
+ components.css и компоновкой готовых блоков
ОсновыАйдентика и опорыВводный раздел-зонтик над рабочими слоями: суть бренда, фирменные знаки, иконография. Это не токены и не компоненты — то, на чём система стоит.
Слой 2ComponentsКирпичики интерфейса, собранные в 11 групп по смыслу: кнопки и управление, Куратор, поля ввода, периферийный хром экрана, бейдж безопасности, нейтральные ноты (notes), шкала самочувствия, голос Sona, шаги дня, заголовки и подписи (типографика), список живых фактов (facts-list). Отдельной секцией — каркас кабинета куратора.
Слой 3PatternsГотовые блоки из этих кирпичиков, которые повторяются на нескольких экранах: нить дня, лента дня, быстрая помощь, плеер на весь экран.
◖
Основы
Айдентика и опоры системы — то, на чём стоит дизайн-система, но что НЕ
является токеном или компонентом: суть бренда, фирменные знаки,
иконография. Вводный раздел-зонтик над тремя рабочими слоями
Основы
О системе — суть бренда
Прохладная палитра — бирюза и slate, шрифт Plus Jakarta Sans. Тон — calm-tech: спокойный интерфейс, который ведёт, а не торопит. Образ Sonaura — проводник, не врач. Полная палитра и точные значения — в слое «Токены» ниже
бирюза-градиентslate · тексттинт-плашка
Основы
Сонар-знак — бренд-марка приложения
Главный знак продукта: круг с дугами-«волнами» и точкой — иконка приложения и герой онбординга. Это не аватар голоса Sona (тот — буква «S», см. osn-avatar)
Три размера знака
22 · марка в шапке4088 · hero онбординга (свечение)
Знак в трёх размерах: 22 px — шапка, 40 px — средний, 88 px — герой онбординга со свечением
да — это бренд-марка приложения (иконка приложения, герой онбординга)
нет — это НЕ аватар голоса Sona: аватар Sona — буква «S» (см. C2/C6 гайда)
Тех. детали: инлайн-SVG viewBox 0 0 512 512, круг --teal, дуги и точка #fff; свечение --sona-glow на круглом контейнере
Основы
Аватар Sona «S»
Знак голоса Sona — буква «S» в бирюзовом кружке со свечением, лицо ассистента в интерфейсе. Не путать с Сонар-знаком (иконка продукта). Применение — в слое Components → sona-voice
Знак-аватар
SS
Бирюзовый кружок с буквой «S» — лицо Sona в интерфейсе
да — это аватар ГОЛОСА Sona; его применение — в Components → sona-voice
нет — это НЕ Сонар-знак (тот — бренд-марка приложения), знаки не путать
Тех. детали: класс .savatar, кружок --grad, буква «S» #fff; размеры .is-lg / .is-md
Основы
Иконография
Иконки V1 — единый линейный контур: keyline 20×20, эффективный штрих 2, без заливок. Инвариант B6: активная иконка — тот же глиф, что и неактивная; меняется только цвет обводки — активная url(#osnnavgrad) (бирюза-градиент), неактивная currentColor. Весь набор — в Каталоге набора ниже; он рендерится из icons.js, который и есть единственный источник глифов
Глиф «Сегодня» (кружок) — неактивный и активный: форма одна, меняется только обводка. Единый keyline для всего набора
да — единый keyline 20×20 внутри viewBox 24×24, эффективный штрих 2; глифы — в icons.js (единственный источник), витрина ниже
нет — задавать stroke-width руками. Вес ВЫВОДИТСЯ из размера и сетки; заданный порознь, он с ними разойдётся
Тех. детали:viewBox 0 0 24 24, keyline (живая область) 20×20, поле 2, stroke-linecap/linejoin: round.
Вес — эффективный штрих 2 CSS-px при отрисовке 24px (1.5 для носителей ≤14px), а stroke-width в разметке выводится:
calc(var(--icon-eff) * var(--icon-vb) / var(--icon-px)). Носитель объявляет размер (--icon-px) и сетку глифа (--icon-vb) — и только их.
Активная обводка — градиент url(#osnnavgrad); вес у обоих состояний одинаков (B6).
Каталог набора
Все глифы продукта, разложенные по назначению. Имя — то, чем иконка зовётся в icons.js; по нему её и берут.
Прежде чем рисовать новую — найди её здесь. Под каждой: что она значит, на каких экранах реально стоит и сколько её экземпляров.
Жёлтый бейдж «было N» — сколько разных рисунков обслуживало этот смысл до пересборки. Серый «не используется» — глиф держим про запас, экран ещё не построен. Строка lucide/… — глиф взят из первоисточника дословно: раньше в наборе жили правленые руками копии, и именно они давали ощущение «иконки из разных наборов».
да — взял имя из каталога, вставил <use href="#i-имя">
нет — не нашёл и нарисовал свою. Не нашёл — заведи в icons.js, тогда её найдёт следующий
Основы
V3 — на чём построен минимализм
Стиль V3 («стильный минимализм») вырос из разбора лидеров healthtech и wellness — V3 — на чём построен минимализм (Oura, WHOOP, Headspace, Balance, Levels, Flo, Noom): что именно на их экранах работает и почему. Из этого исследования и родился язык V3.
Канон принципов, выведенный из исследования, — v3-minimalism-guide.md (управляющий документ стиля); да/нет-приёмка — раздел D в дизайн-гайде.
Основы
Дизайн-гайд — автоматический контроль соблюдения
Дизайн-система работает в связке с дизайн-гайдом — чек-листом «да / нет» (ярлыки A1–A4 · B1–B8 · C1–C7). Система задаёт значения (токены и компоненты), гайд — правила приёмки экрана. Валидация-рои сверяют каждый макет с пунктами гайда и точечно сообщают каждый «нет». Сами правила — в гайде, не в галерее
Алгоритм валидации — VALIDATION-ALGORITHM.md (утв., v2.7): полная процедура проверки прототипа против гайда и системы, включая кросс-экранный барьер и скрытые источники текста и стиля. Прогон по запросу «провалидируй прототипы».
1
Токены
Единственный источник «магических» значений: цвет, типографика, spacing,
радиусы, тени, фокус и движение. Всё в продуктовых экранах
ссылается на токен из tokens.css через var().
Слой устроен как primitive → semantic: сырые значения-источники, на
которые ссылаются смысловые роли. Ниже — весь канон.
Токены
Палитра
Primitives — сырые значения-источники
--slate-900#1E293Bисточник --ink и --navy
--red-500#EF4444источник --safety
Бренд / основные цвета
--teal#2BB4C6основной бирюзовый
--cyan#3ED1DBсветлый бирюзовый (конец градиента)
--grad135° teal→cyanфирменный градиент-якорь
--teal-ink#0E7C8Bтёмная бирюза, текст/иконки
--teal-tint#E8F8FAтинт: плашки, фокус-кольцо
--sky-tint#F0F9FFнебесный тинт: опоры/планы
--ink / --navy#1E293Bосновной текст / тёмная поверхность
--dark-borderrgba(255,255,255,.10)границы на тёмном
--dark-dividerrgba(255,255,255,.08)разделители на тёмном
Размерная шкала типографики
Шрифт: --sans · Plus Jakarta Sans
Aa--fs-display · 30 · V3-якорь
Aa--fs-h1 · 27
Aa--fs-h2 · 23
Aa--fs-h3 · 18
Aa--fs-h3-sm · 17
Aa--fs-body · 15.5
Aa--fs-body-sm · 15
Aa--fs-meta · 14
Aa--fs-meta-sm · 13
Aa--fs-label · 12
Aa--fs-label-sm · 11.5
Aa--fs-micro · 11
Spacing (база 8)
--sp-xs · 4
--sp-sm · 8
--sp-md · 16
--sp-lg · 24
--sp-xl · 32
Радиусы
--r-sm · 11
--r-btn · 14
--r-nested · 16
--r-nested-lg · 18
--r-card · 20
--r-card-lg · 22
--r-chip · 999
Тени / elevation
--sh-card
--sh-elevated
--sh-cta
--sh-player-play
--sona-glow
--sh-disc
--sh-sheet
--sh-device
Токены · фокус · движение
Фокус и движение
Фокус-кольцо
Канон: 4px бирюзовое кольцо тинтом на светлом, по dark-dot — на тёмном. Здесь показано постоянно для демо; в продукте — только :focus-visible.
Движение
--t-micro · 120ms
--t-short · 220ms
--t-medium · 340ms
--t-tick · 1s
Кривая — --ease-out. Наведи на ряд — увидишь длительность. --t-tick (1s) — осознанное исключение для посекундного тика таймера.
Токены
Контраст ролей текста
Какой цвет текста для какой роли и какой контраст он даёт. Главное правило: самый тихий цвет --muted2 нельзя использовать для смыслового текста — только для декора и служебных мелочей.
Как читать строку →пример текста в цвете роли · роль и токен · уровень контраста на белом (WCAG): AA = обычный текст 4.5:1, AA / AAA = строгий 7:1, не для смысла = ниже порога, только декор
Сегодня — день спокойствиязаголовки и тело · --ink #1E293BAA / AAA
Видео · 11 минут · по желаниюмета, подписи, статусы · --muted #64748BAA
Sona · твой AI-проводниктекст-действие · --teal-ink #0E7C8BAA
только декор / служебноеНЕ для смысла · --muted2 #94A3B8не для смысла
Пороги контраста: обычный текст 4.5:1, крупный 3:1, критичное (safety) 7:1. Главное правило:--muted2 — только декор и служебное, никогда для смыслового текста
2
Components — компоненты
Отдельные кирпичики интерфейса — от кнопки до строки шага — разложенные
по 11 группам. У каждого: что это и зачем пользователю, как он выглядит
в разных состояниях, какие правила гайда соблюдает и из какого экрана
извлечён. Все размеры и цвета берутся из токенов слоя 1
Components
actions — действия и управление
То, что пользователь нажимает и тянет: главная кнопка, кнопки плеера, переключатели слоёв звука, ползунки громкости, пилюли-выбор. Экраны «Сегодня», «Звуковая терапия», «Аудио-практика». Часть управления живёт в плеере — здесь показана на той же тёмной подложке, что и в продукте.
Кнопка «Начать» — главное действие экрана (.start)
Что это: ряд круглых кнопок плеера. Большая центральная запускает воспроизведение и ставит на паузу (иконка сама переключается); маленькие по бокам — вспомогательное, например перемотка на 15 секунд назад. Варианты: большая ярко-бирюзовая (текущее действие) и тихие маленькие.
Тех. детали:.cbtn 52px (вспомогательные), .cbtn.main 82px с градиентом (главная); переключение иконки — скриптом; фокус по токену --focus-ring-dark
Пилюли выбора — один вариант из ряда (.chip)
Что это: ряд кнопок-пилюль с выбором одного варианта — например длительности таймера сна. Как ведёт себя: выбранная подсвечивается бирюзовым, остальные тихие.
Тех. детали: класс .chip, активное состояние .on (фон --teal-tint), скругление --r-chip (999px)
Тумблер слоя звука — включить или выключить (.toggle)
Что это: переключатель одного слоя звука в микшере — например дождя или розового шума. Как ведёт себя: включённый загорается бирюзой и кружок едет вправо; выключенный тёмный.
Тех. детали: класс .toggle, включённое — .on; видимый трек 42×25, зона нажатия через ::before 48×44
Ползунок громкости — общий и для слоёв (.slider)
здесь шум ещё слышен
Что это: горизонтальный ползунок громкости — тянешь кружок и меняешь уровень. Управляется мышью и стрелками клавиатуры. Варианты: при калибровке на дорожке есть риска-ориентир с подписью («здесь шум ещё слышен»); у ползунка отдельного слоя риски нет.
Тех. детали: части — .track (дорожка), .fill (заливка --dark-fill, без градиента), .knob (кружок), .mix (риска), .mixcap (подпись)
Стрелка «дальше» — серый указатель в конце строки (.chev)
››
Что это: серая стрелка-уголок справа в строке или карточке — подсказка, что по ней можно перейти дальше. Варианты: обычная (строки и списки) и крупнее (карточки-намерения).
Тех. детали: класс .chev, крупная версия .chev--lg, цвет --muted2; один компонент вместо повторов в разных строках
Components
curator — Куратор
Куратор — живой сопровождающий, отвечает не мгновенно, а примерно за сутки. В системе три контакта: Sona, экстренная помощь и Куратор. Чтобы не спутать, Куратор отличается сразу всем — аватаром, фиолетовым цветом и неспешностью. Его плита-присутствие есть только на «Сегодня».
Аватар Куратора — фото в фиолетовой оправе (.gav)
АА
Что это: «лицо» Куратора в интерфейсе — фотография в круге с фиолетовой оправой-кольцом, знак, что говорит живой человек (реш. DK R30). Варианты: фото (канон); без фото — фиолетовый кружок с первой буквой имени (фолбэк), обычный и поменьше.
Тех. детали: фото img.gav — оправа 2px --curator #7C6CD6, object-fit:cover; фолбэк span.gav — фиолетовый диск с инициалом; 42px, маленький .gav--sm 32px (один компонент, размер через --cur-av-size), плоско и без тени
Что это: плоская фиолетовая плита в конце дня на «Сегодня» — присутствие живого Куратора той же грамматикой, что блок Sona: фото, роль-строка «Анна · твой куратор», одна реплика живым голосом и тихое «Написать ›» в углу. Вся плита — одна тап-мишень, ведёт в чат. Как ведёт себя: плита живая — когда от Куратора есть непрочитанное сообщение, реплика-заглушка заменяется началом этого сообщения, а у роль-строки появляется тихая фиолетовая точка (не пульс, не счётчик). Варианты: покой и непрочитанное (реш. DK R30, сменяет строку .guide).
Тех. детали: класс .cpresence — подложка --curator-tint без рамки и тени, радиус --r-nested-lg, паддинг 18px (зеркало .presence); роль-строка .cwho и «Написать ›» .cwrite — --curator-ink; реплика .csay — --ink, обрезка до 2 строк; точка .cdot — --curator; нажатие — фон --curator-tint-deep, фокус — кольцо --curator-line
Components
forms — поля и выбор
То, чем пользователь отвечает приложению: текстовые поля, выбор одного варианта, галочки, пилюли, переключатели, сворачиваемые заметки. Онбординг и закрытие шага практики. Принцип: серая рамка в покое, бирюзовая подсветка при выборе, плавный переход без мельтешения.
Поле ввода — строка и заметка (.input)
Что это: поле для ввода текста — имени или короткой заметки. Как ведёт себя: в покое серая рамка, при наборе — бирюзовая с подсветкой; плейсхолдер исчезает, как только начали печатать. Варианты: однострочное поле и многострочная заметка.
Тех. детали: класс .input (и однострочный, и textarea); рамка --line → при фокусе --teal, кольцо --focus-ring, плейсхолдер --muted2
Выбор одного варианта — список с кружком (.opt)
Что это: список с выбором одного варианта; у строки может быть пояснение снизу. Как ведёт себя: выбранная строка подсвечивается бирюзовым фоном и рамкой, кружок слева заливается.
Тех. детали: классы .opts / .opt; выбранное — рамка --teal, фон --teal-tint, точка --grad
Отметка-галочка — выбрать несколько (.opt.check)
Что это: та же строка выбора, но с отметкой нескольких пунктов сразу. Как ведёт себя: отмеченный квадратик заливается бирюзовым с белой галочкой.
Тех. детали: это вариант строки .opt с модификатором .check — квадрат и галочка вместо круглой точки; залив --grad
Пилюли-варианты — компактный выбор отметками (.chip)
Что это: компактная замена списку с галочками — варианты-пилюли, можно отметить несколько (например давность тиннитуса). Как ведёт себя: отмеченная пилюля подсвечивается бирюзой.
Тех. детали: классы .chips / .chip, скругление --r-chip; отмеченное — фон --teal-tint, текст --teal-ink
Строка с переключателем — включить модуль (.toggle-row)
Название модуляОдин вопрос на гейт, обратимо
Выключенный модульТот же ряд, состояние off
Что это: строка с названием модуля, пояснением и переключателем справа — включить модуль или нет (выбор обратим в любой момент). Как ведёт себя: включённый переключатель заливается бирюзой и кружок едет вправо.
Тех. детали: классы .toggle-row / .toggle; выключенный трек --bg2, включённый --grad, кружок едет на 18px
Что это: тот же тумблер форм, но включённое состояние — плоская бирюза, а не фирменный градиент. Почему так: единственный градиент-якорь зоны (C1b) остаётся за главной кнопкой («Дальше»), поэтому тогглы-гейты в V3 включаются плоским акцентом.
Тех. детали: модификатор .toggle--flat поверх базового .toggle (эта же группа forms); хитбокс ≥44 и фокус наследуются
Слой объяснения. Тихо разворачивается «зачем» — психообразование или смысл шага. Свёрнуто по умолчанию, чтобы не нагружать экран.
Что это: тихая ссылка-триггер, по нажатию разворачивающая дополнительный блок — поле для необязательной заметки или пояснение «зачем этот шаг». По умолчанию свёрнуто. Как ведёт себя: при раскрытии стрелка поворачивается, блок плавно выезжает. В демо показано раскрытым.
Тех. детали: ссылка .notelink + контейнер .notewrap; внутри либо textarea.input (заметка), либо панель .expl на фоне --bg2 (пояснение)
Components
nav-chrome — обвязка экрана
Постоянная рамка интерфейса по краям экрана: имитация системной строки телефона сверху, полоса дней недели, нижняя панель вкладок и круглая кнопка быстрой помощи в углу. Принцип: обвязки ровно один слой — только нижняя панель, отдельной шапки нет, чтобы не давить.
Системная строка — время и батарея сверху (.statusbar)
light
9:41●●● ▆ 74%
dark (плеер)
9:41●●● ▆ 74%
Что это: имитация верхней строки телефона — время, сеть, заряд; в макетах нужна, чтобы экран выглядел как настоящий телефон. Варианты: на светлом фоне и тёмный для плеера.
Тех. детали: класс .statusbar, тёмный вариант .statusbar--dark; цвет текста --ink / --dark-text
Полоса недели — где вы в неделе (.week)
Пн6
Вт7
Ср8
Чт9
Пт10
Сб11
Вс12
Что это: календарная неделя (день недели + число) с сегодняшней датой и отметками присутствия — не программный номер и не счётчик достижений (реш. DK 2026-07-07). Как выглядят дни: будущий — пустой кружок, пройденный — залит бирюзой, сегодняшний — бирюзовая плашка с реальной датой.
Тех. детали: класс .week, день .wd; пройденный .active, сегодня .today; .lab — день недели, .date — число месяца
Два состояния таба: слева — обычный, справа — с точкой непрочитанного (.has-badge).
Что это: нижняя панель с основными разделами — «Сегодня», «Программа», «Чат», «Инструменты». Как ведёт себя: у текущего раздела значок подсвечен бирюзой, остальные серые; на вкладке с непрочитанным — маленькая точка. Активная вкладка отличается только цветом контура, значок тот же.
Тех. детали: класс .nav, активная .on (контур url(#navgrad)), точка .has-badge
Кнопка быстрой помощи — сердце в ладонях (.qranchor)
на светлой
на тёмной (тот же компонент)
Что это: круглая кнопка со значком «сердце в ладонях» — быстрый вход в помощь, когда стало тяжело. Один и тот же белый кружок на светлом и тёмном экране. Как ведёт себя: при нажатии чуть проседает. Значок — бирюзовый контур, не красный и не залитый, чтобы не пугать.
Тех. детали: класс .qranchor, контейнер 48×48, диск 44×44, :active scale .96
Components
safety — двухтировая безопасность
Красный — Tier-1 и только здесь. Двухтировое правило (реш. DK): верхний тир острых нейросимптомов — НЕЙТРАЛЬНЫЙ slate-инфоблок .emergency (вес держит формой, без красного); красный зарезервирован за РЕАКТИВНОЙ плашкой флагов .safety (появляется СРАЗУ при «Да»). Бейдж/баннер .sbadge/.sbanner — статичные метки-сигналы. .crisis-help — тёмный нейтральный кризис-ресурс SOS-экрана (та же грамматика «вес формой», но на --dark-*). Нейтральные реактивные ноты .calmline/.softnote (slate, без красного, без мед-веса) — отдельная группа notes ниже. Всё это сигналы к суждению специалиста, не вердикт.
Бейдж безопасности — компактная метка (.sbadge)
Требуется внимание
Что это: маленькая красная метка рядом с пунктом, который стоит обсудить со специалистом. Как выглядит: бледно-красная пилюля с треугольником и короткой подписью.
да — это метка-сигнал, а не оценка тяжести и не вердикт
Тех. детали: класс .sbadge; цвета --safety / --safety-tint / --safety-line
Баннер безопасности — сообщение Tier 1 (.sbanner)
!
Требуется внимание специалистаОцените по клиническому протоколу — это сигнал, не вердикт.
Что это: заметная красная плашка с верхней риской: ситуация требует внимания специалиста. Тон: указывает на необходимость суждения по протоколу, но ничего не диагностирует сама.
да — «сигнал к суждению, не автоматический вердикт»: помечает, не решает
Тех. детали: класс .sbanner, иконка .sbanner__ic, текст .sbanner__t; цвета --safety / --safety-tint / --safety-ink
Нейро-инфоблок — верхний тир, БЕЗ красного (.emergency)
Если что-то из этого появилось внезапно
слабеет или немеет лицо, рука или нога
трудно говорить, речь стала невнятной
Не пользуйся приложением — сразу обращайся к врачу.
Что это: острые нейросимптомы тира ВЫШЕ красной плашки (стоп + к врачу, не «сперва покажись»). Как выглядит: нейтральный slate-блок на --bg2 с тёмным ink-рейлом слева и круглым слотом-иконкой — вес держит формой, не цветом.
да — без красного: два красных рядом конкурируют, реактивную плашку флагов можно не заметить
да — виден всегда (директива, не вопрос), вне гейта
Тех. детали: класс .emergency (.ei / .et / .act); цвета --bg2 / --line / --ink / --surface
Реактивная плашка флагов — нижний тир, красный (.safety)
Сначала стоит показаться врачу
Один из ответов — повод сперва сходить к ЛОР-врачу или аудиологу. Программа подождёт тебя здесь.
Что это: единственное место красного на экране — появляется СРАЗУ при любом «Да». Как выглядит: бледно-красная плашка-в-потоке с иконкой; обёртка-тоггл .safety-wrap.show (отлична от статичного .sbanner).
да — реактивна: показ через .safety-wrap.show, скрыта по умолчанию
Кризис-ресурс на тёмном — нейтральный, вес формой (.crisis-help)
Если самому сейчас не справиться — рядом живой человек.
Позвонить на линию помощиБесплатно, круглосуточно, конфиденциально
Позвонить
НаписатьЕсли говорить вслух тяжело
Написать
Контакты линий помощи подбираем для твоего региона.
демо · контакты подключат DK и Лёва
Что это: внешняя помощь внизу SOS-экрана «Сейчас тяжело» — два ко-равных канала (звонок + текст, оба ≥44px: приложение про слух, голос доступен не всем). Как выглядит: нейтральный тёмный блок на --dark-* с ink-рейлом слева и слотами-иконками — грамматика .emergency, но на тёмной иммерсивной поверхности; вес держит форма, не цвет.
да — нейтральный, не красный (C1f): красный зарезервирован за Tier-1 .safety; teal — за якорем/чипом (C1b)
да — кнопки .is-placeholder НЕактивны (ghost-пунктир), пока реальный контакт не подключён — 988 live ждёт клин-гейта
Спокойная обратная связь по ответам онбординга: slate, БЕЗ красного (красный зарезервирован за Tier-1 — группа safety выше). Появляются СРАЗУ при триггере, как реактивная красная плашка, но без мед-веса — это не safety. Единая конвенция тоггла: базово скрыты, показ через .show. Глиф — нейтральный --muted: бирюза зарезервирована за CTA и активным сегментом (C1/D5). Раньше .calmline/.softnote были локальны и дрейфовали по экранам — сведены в один канон.
Что это: тихая строка-галочка «всё в порядке, идём дальше» (safety — все шесть флагов «нет»; program-fit — полное совпадение). Как выглядит: одна строка с нейтральным глифом-галочкой.
да — глиф --muted: бирюза зарезервирована за CTA и активным сегментом (C1/D5)
Серая нота несовпадения — slate, не красная (.softnote)
Похоже, программа — не совсем про твой случай
Один из ответов в это пока не попадает. Запрета нет: захочешь — идём дальше. И в любом случае пройди следующую короткую проверку здоровья.
Что это: мягкий сигнал несовпадения на program-fit; НЕ блокирует переход, НЕ красная. Как выглядит: серый блок на --bg2 с приглушённой иконкой.
да — реактивна: появляется сразу при провале критерия, показ через .show
Тех. детали: класс .softnote (.lf / .st); цвета --bg2 / --line / --ink / --muted
Components
scale-data — самочувствие и отметки
То, чем пользователь отмечает состояние и видит «сделано»: шкала самочувствия из кружков, карточка вопроса дня, галочки завершения, маркеры дня. Экран «Сегодня» и завершение шага. Принцип: замер ощущается как короткий живой диалог, а не как медицинский дашборд — без подсчёта «тяжести шума».
Точка шкалы — один кружок для ответа (.dot)
в покоевыбран · .on
Что это: один кружок шкалы — нажатием отмечают самочувствие. Как ведёт себя: в покое тихий контур, при наведении подсвечивается, выбранный — расцветает бирюзовым и слегка увеличивается с ореолом.
Тех. детали: класс .dot, выбранный .on (градиент, scale 1.12); зона нажатия через ::after
Шкала самочувствия — ряд кружков с подписями (.scale)
ТяжелоРовноОтлично
Что это: вся шкала целиком — ряд кружков с подписями по краям («Тяжело — Ровно — Отлично»); подписей бывает две или три. Как ведёт себя: после выбора остальные кружки тускнеют и уменьшаются — внимание на ответе. Draft: средний якорь «Ровно» (ждёт DK) — совпадает с репликой Sona на пульс.
Тех. детали: ряд .scale, после выбора — .chosen (остальные opacity .45); подписи краёв .scalelab, цвет --muted2
Пульс самочувствия — точки-шкала и её свёртка (.pulse / .pulsedone)
ТяжелоРовноОтлично
S„Ровно“ — с этого хорошо начать день.
Самочувствие на сегодня отмечено
Что это: ежедневный пульс самочувствия — ряд точек-кружков. На «Сегодня» живёт на общей поверхности блока присутствия Sona вместе с зачином (.presence, см. #comp-presence в группе sona-voice), а не в собственной карточке. Вопрос «Как ты сейчас?» задаёт сама Sona в приветствии. Как ведёт себя: после ответа под шкалой отдельным моментом раскрывается короткий отклик Sona, затем пульс сворачивается в тихую строку «Самочувствие на сегодня отмечено» — её можно снова развернуть.
Тех. детали: контейнер .pulse сам не несёт фон/тень/паддинг (плоский по умолчанию — заливку на «Сегодня» держит родитель .presence), после ответа .answered (раскрыт отклик .doseHint); свёрнутая строка .pulsedone. Жирный .pulse h3 — только review-вариант ?zachin=under
Кружок «сделано» — бирюзовая галочка (.chk)
Что это: маленький бирюзовый кружок с галочкой — знак «сделано» у пройденных шагов и отмеченных пунктов. Варианты: обычный и чуть меньше.
Тех. детали: класс .chk 22×22 (в коде встречается как pchk / schk), маленький .chk--sm 18×18 (как rchk) — один компонент вместо трёх повторов
Точка-маркер у подсказки — тихий серый кружок (.sdot)
Сегодня короче — начнём с дыхания, остальное по желанию.
Что это: крошечный серый кружок в начале тихой плашки-подсказки (например «сегодня короче»). Декор-маркер — на него не нажимают, он ничего не отмечает.
Тех. детали: класс .sdot 6×6, цвет --muted2
Точка под днём недели — отметка в полосе (.mk)
Пн6
Вт7
Ср8
Чт9
Что это: маленькая точка под буквами дня в полосе недели — показывает состояние конкретного дня. Как выглядит: у будущего дня тихий контур, у пройденного залита бирюзой, у сегодняшнего белая на бирюзовой плашке.
Тех. детали: класс .mk внутри .wd; пройденный --teal, контур --line
Components
sona-voice — голос Sona
То, чем в интерфейсе говорит Sona — ассистент-проводник: аватар-«S», приветствие в начале дня, пузыри с фразами, отклик на самочувствие, тихие подсказки на других экранах. Принцип: большое приветствие бывает только на «Сегодня»; на остальных экранах голос Sona — короткая реплика, а не целый блок. Аватар-«S» везде один.
Аватар Sona — бирюзовый кружок с буквой «S» (.savatar)
SSSS
Что это: бирюзовый кружок с буквой «S» — «лицо» Sona, знак, что говорит ассистент. Варианты: четыре размера — крупный в приветствии, поменьше в подсказках, мелкий рядом с короткой репликой.
Тех. детали: класс .savatar, размеры .is-lg 38 / .is-md 30 / .is-sm 22 / .is-xs 20 — один компонент вместо повторов
Приветствие Sona — блок-зачин дня (.coach)
S
Sona · твой AI-проводник
Неделя 2 · Тело и дыхание · День 3
В предыдущий день курса ты познакомился с дыханием — сегодня идём чуть глубже.
Что это: приветственный блок вверху экрана «Сегодня»: аватар Sona, подпись «Sona · твой AI-проводник», строка-ориентир «Неделя · Тема · День» и короткая фраза-настрой. Строка-ориентир видна сразу, не прячется.
Тех. детали: класс .coach; подпись-проводник цветом --teal-ink
Пузырь Sona — короткая фраза в облачке (.bubble)
Звон не определяет день — давай попробуем мягкий старт. Я рядом.
Что это: светло-бирюзовое облачко с короткой фразой Sona и хвостиком сверху слева. Одно-два слова внутри могут быть выделены бирюзовым акцентом.
Тех. детали: класс .bubble, фон --teal-tint; акцент внутри — <b> цветом --teal-ink
Мост Sona — тёплая фраза-проводник между этапами (.bridge)
S
Дальше настроим программу под тебя — я рядом на каждом шаге.
Что это: одна тёплая мысль голосом Sona на бирюзовом тинте вместо боксовой плашки-плиты. Снимает тревогу перехода («дальше — программа», «это обратимо»). Почему так: строка-проводник читается за секунду и теплее любого абзаца-пояснения.
Тех. детали: класс .bridge; аватар-«S» — канон .savatar.is-sm (эта же группа sona-voice)
Отклик Sona на самочувствие — реплика после ответа (.doseHint)
S„Ровно“ — с этого хорошо начать день.
Что это: короткая реплика Sona сразу после того, как отметили самочувствие; подстраивается под ответ (на тяжёлый день фраза мягче, на ровный — спокойнее). По умолчанию скрыта, разворачивается в момент ответа. В демо показана раскрытой.
Тех. детали: класс .doseHint, раскрывается через .pulse.answered; длительность --t-medium
Присутствие Sona + пульс — единая поверхность, chromeless-merge (.presence)
S
Sona · твой AI-проводник
Сегодня начинаем вместе — наметишь, ради чего идёшь этим путём. Как ты сейчас?
ТяжелоРовноОтлично
S„Ровно“ — с этого хорошо начать день.
Что это: зачин Sona и пульс-чек-ин «Как ты сейчас?» на ОДНОЙ плоской teal-tint поверхности — без шва между «сообщением» и «контролом» (реш. DK 2026-07-08, chromeless-merge; сменяет более раннюю подачу «пульс инлайн без своей карточки рядом с пузырём без карточки»). Радиус пузыря-приветствия внутри поверхности симметричен — асимметричный «хвостик» (речевой аффорданс, см. изолированный .bubble выше) здесь снят ради цельности плиты. После ответа шкала сворачивается в тихую строку .pulsedone на той же поверхности (полный цикл двух состояний — паттерн _gal-pat-sona-voice.html ↗).
Тех. детали: класс .presence — единственный источник заливки/радиуса/паддинга; вложенные .coach/.bubble/.pulse/.scale/.dot/.pulsedone сами фон не несут, держат только состояние. Пока единственный потребитель — program/templates/today, компонент общесистемный
Подсказка Sona вне «Сегодня» — тихая реплика на других экранах (.guardnote)
S
Звук — на трудные моменты, не на весь день: тишина тоже тренирует
Что это: тихая светло-бирюзовая плашка с аватаром Sona и одной короткой мыслью — уместный совет на экранах помимо «Сегодня» (например про звукотерапию). Реплика к месту, а не большое приветствие.
Тех. детали: класс .guardnote, фон --teal-tint
Components
step-card — элементы шагов и родственные карточки-строки
Из чего собрана лента дня на «Сегодня»: тихие строки пройденных и предстоящих шагов, одна яркая карточка текущего шага, вход в «Оглянуться на день», галочка завершения. Плюс родственные карточки той же формы «значок + текст»: узел на нити дня, карточки звукотерапии «Уснуть» / «Сосредоточиться», итог онбординга. Принцип: ярким остаётся только один шаг — тот, что делать сейчас; остальное приглушено.
Значок шага — мини-иконка типа практики (.sico)
Что это: маленькая иконка слева в строке шага — с одного взгляда понятно, что за практика (дыхание, видео, звук). Варианты: базовый серый значок и крупнее подсвеченные — для карточек-намерений и плашки уровня.
Тех. детали: класс .sico 34px, крупнее — --s40 (+--tint) и --s46; один компонент вместо повторов в строке шага, плашке уровня и карточке-намерении
Узел на нити дня — кружок шага на вертикальной линии (.fnode)
32
Что это: кружок на вертикальной линии пути дня (или программы) — на каком шаге вы сейчас и какие пройдены. Как выглядят: будущий шаг — тихий кружок с номером, пройденный — залит бирюзой с галочкой, текущий — бирюзовый контур.
Тех. детали: класс .fnode; пройденный .done, текущий .now; линия — .flow::before
Строка шага — тихий пункт ленты дня (.step)
Дыхание 4-7-8Основная практика · 11 минут
Короткий настройВидео · 2 мин
Что это: тихая строка одного шага — значок, название и пояснение («Дыхание 4-7-8 · 11 минут»); из таких строк собрана лента дня. Как ведёт себя: у пройденного шага строка тускнеет и справа появляется бирюзовая галочка. Текущий шаг показан не строкой, а отдельной яркой карточкой.
Тех. детали: класс .step, пройденный .done (галочка .schk); яркий вид того же шага — .maincard
Карточка текущего шага — единственный яркий блок дня (.maincard)
Что это: крупная яркая карточка шага, который делают прямо сейчас. Весь герой — кликабельное поле-превью на приглушённом брендовом тоне (плоский, не градиент — единственный градиент-якорь зоны остаётся у кнопки), высотой ближе к 16:9, чтобы превью доминировало. На обложке — чип с ФАКТОМ о шаге: у медиа это «Тип · длительность» («Практика · 11 мин», «Видео · 2 мин», «Урок · 2 мин»), у упражнения — просто «Упражнение» (длительности нет). Название вынесено в заголовок и не дублирует чип, а подпись под ним несёт лишь остаток (медиум «аудио»/«видео» или атрибуцию), не повторяя чип; если сказать нечего — её просто нет (как у «Упражнения»). Сигнал типа на обложке разведён по жанру: у видео и аудио — одна большая центральная кнопка play, как на реальном видео-превью; у упражнения и письма — значок-мотив (карандаш), тот же, что и в свёрнутой строке. Play ровно один и только у медиа; у не-медиа play нет вовсе. Кнопка снизу зовёт глаголом действия — «Смотреть», «Слушать» или «Заполнить». На экране такая карточка всегда одна — остальные шаги показаны тихими строками.
Тех. детали: класс .maincard; части — .hero (кликабельное поле-постер, фон-плейсхолдер по умолчанию — саундвейв hero-soundwave.svg / .hasposter с реальной poster-картинкой; высота ~150px; <a> на тот же href, что .start; .media — медиа), .heromotif (значок типа, только НЕ-медиа), .tag (чип «Тип · длит»; длительность — поле duration инстанса content.js, у медиа), .playbig (центральная кнопка play, только медиа), .cardbody (текст), .cmeta (подпись-остаток, скрыта при дубле с чипом), .start (кнопка-глагол). Мотив и play взаимоисключающи: медиа → play, не-медиа → мотив. Единственный градиент-якорь карточки — CTA .start; play — белый сигнификатор, саундвейв-плейсхолдер не градиент-заливка (C1b).
Вход «Оглянуться на день» — тихая строка в конце ленты (.closestep)
Что это: карточка-выбор цели — «Уснуть», «Сосредоточиться» — со значком, названием и пояснением. Как ведёт себя: все карточки равноправны, ни одна не выделена заранее; при нажатии выбранная слегка подсвечивается.
Тех. детали: класс .jcard, значок .sico размера 46
Плашка уровня — состояние словами, без балла (.levelcard)
Уровень
Заметное влияниеСловами, без балла. Это про то, как тиннитус влияет на жизнь — не оценка «тяжести».
Что это: спокойная плашка по итогам онбординга — описывает состояние словами («Заметное влияние»), а не баллом. Про то, как тиннитус влияет на жизнь, а не оценка «тяжести» в цифрах.
Тех. детали: класс .levelcard, значок .sico размера 40
Твои ответы пригодятся — они помогут настроить программу под тебя.
Подробный разбор будет в твоём профиле — можно скачать как PDF.
Что это: новый итог-экран замера отражает ответы словами, а не баллом. Зеркало — тихие строки-домена «домен + человеческая фраза» с бирюзовой точкой-маркером (.mirror). Под ним строка ценности «время не зря» (.valueline) и честная сноска про профиль/PDF (.profileline) — замена антипаттерну «раскрытие подробнее» с пустыми заглушками. Почему так: антипод дашборда тяжести — без чисел, полос, радара, светофора.
Что это: крупный бирюзовый кружок с галочкой на экране завершения шага — спокойный знак «готово». Без салюта, конфетти и процентов, чтобы завершение ощущалось мирно.
Тех. детали: класс .check ~44px, градиентный диск
Строка «записано» — куда ушёл результат шага (.routed)
Сессия записана — в дневнике практики
Что это: тихая строка-факт после завершения шага — куда ушёл результат («Сессия записана — в дневнике практики»). Констатация, без поздравлений.
Тех. детали: класс .routed, маленькая галочка .schk--sm 18px
Components
typography — заголовки экрана и подписи секций
Общие типографические примитивы, которые раньше были scoped по отдельным экранам, а теперь сведены на токены: крупный заголовок-H1 светлого экрана и единая uppercase-подпись секции. Три ранее разрозненные подписи секций (.block-label, .coach .sona-pos, .onbdots .seclabel) сведены в один компонент .section-label.
Заголовок-H1 светлого экрана (.pagetitle)
Звуковая терапия
Что это: крупный slate-заголовок страницы светлого экрана (--fs-h1 27px, --ink), плотный трекинг. Якорь экранов без V3-якоря (.lede / .screen-anchor) — прежде всего «Звуковая терапия».
Тех. детали: класс .pagetitle (--fs-h1, letter-spacing −.025em, --ink)
Что это: единая тихая uppercase-метка раздела (--fs-label-sm 11.5px, --muted2, разрядка .07em). Модификатор --block добавляет вертикальную отбивку для подписи-разделителя блока («Оглянуться на день»).
да — один компонент на все uppercase-подписи секций (зачин «Сегодня», онбординг, «Оглянуться на день»)
Тех. детали: класс .section-label (+ модификатор .section-label--block); старые имена .block-label / .coach .sona-pos / .onbdots .seclabel остаются алиасами в боевой разметке
Главная мысль крупно — display-якорь экрана (.lede)
Это путь, а не кнопка
Облегчение приходит как навык — от практики, не от одного сеанса.
Что это: тезис/вопрос экрана «сам как заголовок», набранный крупно (--fs-display 30px, ≈1.9× от основного текста) — он держит ~40% внимания. Одна тихая строка-уточнение снимает неоднозначность. Почему так: иерархия задаётся размером и воздухом, без рамок и плашек.
Тех. детали: класс .lede (h1 на --fs-display, .sub 16px --muted)
Components
facts-list — список живых фактов без рамок
Вертикальный список живых фактов без рамок и разделителей — антипод криптоплиток: каждый факт остаётся понятной фразой, а не однословным ребусом-плиткой. Извлечён и унифицирован из V3-экранов онбординга (источник — локальные .facts3 / .fact3).
Живые факты — вертикальный список без рамок (.facts / .fact)
Это навык, который тренируетсяМозг учится не цепляться за звук — и со временем тот уходит из центра внимания.
Работает регулярность, не рывкиПонемногу каждый день важнее, чем час раз в неделю.
Считается путь, а не календарьПрогресс идёт от пройденных практик, а не от числа дней.
Что это: антипод криптоплиток — каждый факт остаётся живой фразой (жирный тезис + тихое уточнение), понятной без расшифровки. Единственный акцент — бирюзовая маркер-точка слева. Почему так: воздух между фактами группирует их в один список, рамки и разделители не нужны.
Тех. детали: классы .facts / .fact; маркер — .fact .marker 9px --teal (не путать со scale-data .dot 30px)
Components · кабинет куратора
кабинет куратора — десктоп-рабочее место
Пометка: это каркас из секции PATTERNS («Patterns — кабинет куратора» ниже), а не одна из 11 групп компонентов components.css.
Компоненты, которые живут только в десктоп-кабинете куратора, а не в мобильном продукте: вкладки-разделы кабинета и каркас-классы рабочего места. Продуктовый хром (.nav, .statusbar, .week) остался выше в группе nav-chrome — это мобильный экран. Сам Куратор как роль (аватар, фиолетовый цвет) — общий с продуктом, см. группу curator.
Что это: горизонтальный ряд вкладок для переключения разделов — десктоп-компонент кабинета Куратора. Как ведёт себя: у активной вкладки текст темнее и снизу цветная риска; рядом с названием может быть счётчик или точка «есть новое». Вариант .tabs--curator переводит акцент в фиолетовую систему кабинета.
да — выделение подчёркиванием снизу, не капсулами; на ряд ровно один акцент
нет — красного в табах не бывает: красный закреплён только за Tier 1 safety
Тех. детали: класс .tabs / .tab, активная .is-active, счётчик .tab__count, точка .tab__dot, вариант .tabs--curator. A11y: WAI-ARIA tabs — role="tablist"/"tab", aria-selected, roving-tabindex (активная tabindex=0, прочие −1)
Каркас рабочего места — десктоп-рамка кабинета (.cabinet / .topbar / .brand / .wrap)
Что это: каркас-классы десктоп-кабинета вместо телефонной рамки: широкая светлая подложка .cabinet, прижатый к верху sticky-.topbar с бренд-блоком .brand (лого + название) и одноколоночная рабочая область .wrap (.wrap-wide — со своей сеткой). Используются только в кабинете куратора, не в мобильных экранах.
Собранный вид этих классов — паттерн «Каркас кабинета (десктоп)» на этаже Patterns ниже: там каркас показан целиком в живом iframe.
Паттерн — это готовый блок из нескольких кирпичиков слоя 2, который
повторяется на разных экранах и решает одну задачу пользователя
(показать день как нить, дать помощь в острый момент, погрузить в
практику). Это крупный многоразовый блок страницы, а не пример целого
экрана. Готовые экраны (Today, онбординг, плеер) — это уже сборки из таких
блоков и отдельных компонентов; их место — в галерее прототипов v2, а не
здесь. Каждый блок показан в отдельной рамке на том же общем наборе стилей
(tokens.css + components.css)
Группа
Каркасы
Обёртки-поверхности экранов: телефонный хром дневной петли, рамка онбординга и тихий финал дня.
Pattern
Каркас · телефон (Today-shell)
Базовый хром мобильного экрана — рамка устройства, статус-бар сверху и таб-бар снизу; общая обёртка всех экранов дневной петли «Сегодня». Открыть отдельно:
_gal-pat-shell-phone.html ↗
Pattern
Каркас · онбординг (Onb-shell)
Мобильная рамка без хедера для Дня 0: сверху тихий индикатор раздела, снизу закреплённая навигация с единственным градиент-якорем «Дальше». Открыть отдельно:
_gal-pat-shell-onb.html ↗
Pattern
Каркас · тихий финал (Terminal)
Центрированный тихий финал дня без развилки — экран «Сегодня · день пройден» (галочка + заголовок + закрытие голосом Sona). Открыть отдельно:
_gal-pat-shell-terminal.html ↗
Группа
Навигация программы
Где пользователь в дне и в программе: вертикальная нить дня и горизонтальная рельса недель.
Pattern
Нить дня (вертикальная)
Каркас дневной петли «Сегодня»: шаги нанизаны на одну вертикальную нить с ровно одним ярким активным шагом и тихим закрытием дня. Открыть отдельно:
_gal-pat-day-flow.html ↗
Pattern
Недельная полоска дней
Шапка экрана «Сегодня»: позиция в неделе программы — дни одной строкой, закрытые залиты бирюзой, сегодня — единственная плашка-градиент. Вся полоска — вход в «Мой дневник». Открыть отдельно:
_gal-pat-week-rail.html ↗
Pattern
Рельса недель программы
Горизонтальный извод нити на экране «Программа»: 8 недель (пройдено / сейчас / впереди / выбрана) + строка-ориентир .railnote — то, что после программы. Ряд восьмиместный и не растягивается: девятая тап-цель 44px не помещается (PROGRAM.post — «НЕ неделя»). Две работы разведены: «путь идёт дальше» говорит затухающая линия, «дальше есть жизнь» — слово. Открыть отдельно:
_gal-pat-program-rail.html ↗
Группа
Острый слой и безопасность
Помощь в острый момент и сигналы безопасности: быстрая помощь, бейдж и баннер скрининга, кризис-перехват, двухтировый медскрининг красных флагов и нейтральные реактивные ноты. Двухтировое правило (реш. DK): нейтральный нейро-инфоблок держит вес формой, красный зарезервирован за реактивной плашкой флагов.
Pattern
Быстрая помощь (SOS)
Плавающий SOS-якорь ведёт переходом на полноэкранный тёмный экран «Сейчас тяжело?» — доступ к 2-минутным практикам, личным опорам и мосту к куратору в острый момент, за один тап с любого экрана дневной петли. Нижняя шторка-диалог упразднена (реш. DK 2026-07-10/11): «Быстрая помощь» и SOS-якорь — один экран. Открыть отдельно:
_gal-pat-quick-relief.html ↗
Pattern
Сигнал безопасности
Нижний (красный) тир двухтировой safety: реактивная плашка .safety — единственное место красного — появляется при ответе «Да» в медскрининге и даёт направление к врачу (сигнал куратору — концепт бекенда). Это повод к вниманию специалиста, не вердикт. Открыть отдельно:
_gal-pat-safety-signal.html ↗
Pattern
Кризис-ресурсы
Красная плашка-забота и карточки помощи — экран-перехват в онбординге при срабатывании PHQ-9 (мысли о самоповреждении). Открыть отдельно:
_gal-pat-crisis.html ↗
Pattern
Двухтировая безопасность (красные флаги)
Медскрининг онбординга: безмолвный поток из 7 вопросов (6 красных флагов + вопрос-настройка модуля) «да/нет». Два тира НЕ конкурируют красным — нейтральный нейро-инфоблок .emergency (slate, виден всегда, вес держит формой: ink-рейл + слот-иконка) и реактивная красная плашка .safety (единственное место красного, появляется СРАЗУ при «Да»). Тихая .calmline видна при всех шести «нет» на флагах. Открыть отдельно:
_gal-pat-redflags.html ↗
Pattern
Нейтральные реактивные ноты
Спокойная обратная связь по ответам без красного: серая нота несовпадения .softnote («возможно, программа не совсем про твой случай» — не блокирует) и позитивная строка совпадения .calmline. Slate-семантика, появляются СРАЗУ при триггере, единая конвенция тоггла .show — экран onb-program-fit. Открыть отдельно:
_gal-pat-notes.html ↗
Группа
Вопросы и измерения
Как приложение спрашивает и замеряет: шаг-вопрос онбординга, карточка-пульс со шкалой, частотная сетка PHQ-9, блок опций и чипов, гейты-тогглы модулей.
Pattern
Шаг-вопрос онбординга
Шаблон экрана-шага онбординга: заголовок-вопрос + форма (поле/выбор) + тихое раскрытие «зачем»; применяется на всех шагах Дня 0 до входа в учётную запись. Открыть отдельно:
_gal-pat-onb-step.html ↗
Pattern
Шкала пульса крупным планом
Механика самой шкалы отдельно от зачина Sona — интерактивный образец: один вопрос со шкалой из 5 точек (без чисел), тёплый отклик и свёртка в строку «отмечено». Живёт на той же поверхности .presence, что и в бою, без .coach (вариант ?zachin=under). Полный парный цикл вместе с приветствием Sona — паттерн sona-voice. Открыть отдельно:
_gal-pat-pulse-scale.html ↗
Pattern
Частотная сетка (PHQ-9)
Карточка вопроса с рядом из 4 частотных ответов (0–3) — канонические якоря частоты PHQ-9 в опроснике настроения онбординга. Открыть отдельно:
_gal-pat-phq9-freq.html ↗
Pattern
Блок опций/чипов
Выбор ответа в опросах: вертикальные строки-опции (одиночный выбор) и компактные чипы (множественный); применяется в онбординг-анамнезе, чек-инах и настройках программы. Открыть отдельно:
_gal-pat-option-block.html ↗
Pattern
Гейты-тогглы модулей
Комплектация программы в онбординге: секция «Уже в программе» — базовые карточки без тумблера («Основа» + «Звуковая терапия») с бейджем-галкой «В программе» (кандидат-компонент ДС); секция «По твоим ответам» — четыре тумблер-карточки (имя + живая фраза «чем поможет» + тихая muted-строка причины), «нет» — ровный выбор; свод «Твоя программа» — одна живая строка-состав: константный префикс базовых + включённые тумблеры. Открыть отдельно:
_gal-pat-gates.html ↗
Pattern
Живая кнопка-проводник (гейт)
Кнопка «Дальше» на экранах с обязательными полями: никогда не «мёртвый тап». Пока есть пропуски — приглушена, но тап ведёт к первому незаполненному полю (спотлайт + фокус) и держит счётчик; всё отвечено — оживает градиентом. Жёсткий стоп — отдельным контрактом data-hard-gate. Контракт — gate-contract.md, контроллер — gate.js. Открыть отдельно:
_gal-pat-gate-next.html ↗
Группа
Результат и калибровка
Итог и честная настройка ожиданий: карточка-результат уровня словами, факт-список с галочками, сохранение прогресса и входы.
Pattern
Карточка-результат уровня
Итог замера словами, без балла-приговора: мягкий уровень влияния тиннитуса вместо числа — экран результата онбординга. Открыть отдельно:
_gal-pat-level-card.html ↗
Pattern
Живые факты (V3)
Канон V3: главная мысль крупно (.lede) + вертикальный список фактов без рамок (.facts/.fact), маркер — бирюзовая точка. Минимизирована подача, не смысл — для честной калибровки ожиданий на шаге онбординга «На что настроиться». Открыть отдельно:
_gal-pat-facts-list.html ↗
Каркасы выбора и навигации внутри разделов: хаб карточек-намерений и сгруппированный список секций.
Pattern
Хаб карточек-намерений
Выбор «зачем» одним тапом крупными равнозначными карточками-кнопками (иконка + заголовок + подпись + шеврон); применяется на входе в звуковую терапию и хаб инструментов. Открыть отдельно:
_gal-pat-intention-hub.html ↗
Pattern
Сгруппированный список секций
Капс-подпись секции + белая карточка со строками (иконка/текст/значение/шеврон/сегмент/тоггл) — каркас служебных экранов вроде «Настроек». Открыть отдельно:
_gal-pat-section-list.html ↗
Группа
Иммерсивный слой
Поверхность полного погружения без хрома: тёмный плеер практики на весь экран.
Pattern
Иммерсивный плеер
Полноэкранный тёмный плеер практики (кольцо-таймер + контролы + ✕) — поверхность погружения при запуске управляемой аудио-сессии «Сегодня», без хрома и навигации. Открыть отдельно:
_gal-pat-immersive-player.html ↗
Группа
Чат и запись
Поверхности для слов: тред чата с Куратором и композер, форма короткой записи с прогрессивным раскрытием.
Pattern
Тред чата + композер
Честный асинхронный мессенджер с живым Куратором (канон daily/chat, реш. DK R31 2026-07-10): шапка-контакт с фото Анны без точки «онлайн» и сроком «обычно отвечает в течение суток», лента пузырей (подложка = цвет говорящего), тихая статус-строка вместо «прочитано», линия «Новое» по непрочитанному, маршрут-строка при совете, композер-textarea с кнопкой отправки над таб-баром. Открыть отдельно:
_gal-pat-chat-thread.html ↗
Pattern
Форма записи (прогрессивное раскрытие)
Короткая запись мысли в инструментах: одно обязательное поле с голосовым вводом, остальное раскрывается по желанию — today-first. Открыть отдельно:
_gal-pat-journaling-form.html ↗
3К
Patterns — кабинет куратора
Десктоп-поверхность для куратора, а не основной мобильный продукт. Те же
токены и палитра, но рабочее место на светлой широкой раскладке со
sticky-topbar вместо телефонной рамки.
Pattern
Каркас кабинета (десктоп)
Общий каркас всех экранов кабинета куратора: sticky-topbar (бренд Sonaura + аккаунт куратора) над одноколоночной рабочей областью на светлой подложке. Открыть отдельно:
_gal-pat-cab-shell.html ↗
Pattern
Список людей (кабинет)
Плоский список строк-сводок пациентов (имя · неделя · последняя активность · непрочитанные · safety-бейдж) — куратор охватывает подопечных одним взглядом. Открыть отдельно:
_gal-pat-cab-people.html ↗
Pattern
Чат куратора (кабинет)
Переписка куратора с пациентом в десктоп-кабинете: входящие slate слева, ответы куратора фиолетовые справа, чипы-шаблоны и подсказка цели недели над композером. Открыть отдельно:
_gal-pat-cab-chat.html ↗