Living style guide · Today-first / CBT4T

Дизайн-система Sonaura

Единый канон прототипов. Над тремя рабочими слоями — вводный раздел «Основы»: айдентика и фирменные знаки, на которых стоит система. Сами слои — токены, компоненты и паттерны-композиции (слой Foundations переименован в «Токены»). Бирюза + slate, Plus Jakarta Sans. Каждый компонент извлечён из рабочих экранов v2/v3, переписан на токены и сверен с DESIGN-GUIDE. Новый экран собирается подключением tokens.css + components.css и компоновкой готовых блоков

Основы Айдентика и опоры Вводный раздел-зонтик над рабочими слоями: суть бренда, фирменные знаки, иконография. Это не токены и не компоненты — то, на чём система стоит.
Слой 1 Токены Цвет, типографика, spacing, радиусы, тени, фокус, движение. Источник правды — tokens.css.
Слой 2 Components Кирпичики интерфейса, собранные в 11 групп по смыслу: кнопки и управление, Куратор, поля ввода, периферийный хром экрана, бейдж безопасности, нейтральные ноты (notes), шкала самочувствия, голос Sona, шаги дня, заголовки и подписи (типографика), список живых фактов (facts-list). Отдельной секцией — каркас кабинета куратора.
Слой 3 Patterns Готовые блоки из этих кирпичиков, которые повторяются на нескольких экранах: нить дня, лента дня, быстрая помощь, плеер на весь экран.

Основы

Айдентика и опоры системы — то, на чём стоит дизайн-система, но что НЕ является токеном или компонентом: суть бренда, фирменные знаки, иконография. Вводный раздел-зонтик над тремя рабочими слоями


Основы

О системе — суть бренда

Прохладная палитра — бирюза и slate, шрифт Plus Jakarta Sans. Тон — calm-tech: спокойный интерфейс, который ведёт, а не торопит. Образ Sonaura — проводник, не врач. Полная палитра и точные значения — в слое «Токены» ниже

бирюза-градиент slate · текст тинт-плашка
Основы

Сонар-знак — бренд-марка приложения

Главный знак продукта: круг с дугами-«волнами» и точкой — иконка приложения и герой онбординга. Это не аватар голоса Sona (тот — буква «S», см. osn-avatar)

Три размера знака

22 · марка в шапке 40 88 · 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

Знак-аватар

Бирюзовый кружок с буквой «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, который и есть единственный источник глифов

Линейный контур · неактивный → активный

неактивный · currentColor (--muted2) активный · url(#osnnavgrad)

Глиф «Сегодня» (кружок) — неактивный и активный: форма одна, меняется только обводка. Единый 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): полная процедура проверки прототипа против гайда и системы, включая кросс-экранный барьер и скрытые источники текста и стиля. Прогон по запросу «провалидируй прототипы».

Токены

Единственный источник «магических» значений: цвет, типографика, 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основной текст / тёмная поверхность
--muted#64748Bприглушённый текст
--muted2#94A3B8самый тихий текст / иконки

Поверхности и линии

--surface#FFFFFFкарточки, листы
--bg#F8FAFCфон экрана
--bg2#F1F5F9вторичный фон, иконки-слоты
--line#E2E8F0границы, разделители
--teal-line#CFE9EFбирюзовая граница на тинте
--backdrop#0F172Aподложка устройства
--glass-bgcolor-mix(--bg 94%)стекло шапки ленты (chattop) + blur
--glass-surfacecolor-mix(--surface 94%)стекло хрома: таб-бар, композер, топбар + blur

Семантика

--success#22C55Eуспех/подтверждение (не геймификация)
--safety#EF4444безопасность/кризис — ТОЛЬКО Tier-1
--curator#7C6CD6живой Куратор (≠ Sona ≠ SOS)
--curator-ink#5A48C0активное состояние Куратора
--curator-deep#645AC4hover/pressed Куратора
--curator-tint#F0EDFBмягкая подложка Куратора
--curator-tint-deep#E4DEF7прижатая tint-поверхность Куратора
--curator-line#D9D0F4граница-разделитель Куратора
--curator-grad135°градиент сообщения Куратора
--safety-ink#991B1Bтекст на safety-плашке (Tier 1)

Роли онбординга и предупреждений

--seg-done#BEE7EDпройденный сегмент онбординга
--warn-bg / --warn-border#FEF6E7 / #F3D89Bamber-предупреждение (НЕ кризис)
--warn-ink#92660Cтекст amber-предупреждения
--safety-tint / --safety-line#FEF2F2 / #FECACAsafety-плашка Tier 1

Тёмная подпалитра плеера (санкционированная тёмная тема)

--player-bg#243149верх радиального фона плеера
--player-surf#1B2740подложка тёмной поверхности
--dark-text#E2E8F0основной текст на тёмном
--dark-accent#7FD8E2бирюзовый акцент на тёмном
--dark-fill#27A2B2заливка слайдера на тёмном
--dark-dot#5CCBD7точка-прогресс на тёмном
--dark-text2#CBD5E1вторичный текст на тёмном
--dark-muted#94A3B8приглушённый текст на тёмном

Тёмная подпалитра — служебные альфа-слои (поверх тёмного)

--dark-surface-1rgba(255,255,255,.06)кнопки/чипы fill
--dark-surface-2rgba(255,255,255,.10)треки слайдеров/прогресса
--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 #1E293B AA / AAA
Видео · 11 минут · по желанию мета, подписи, статусы · --muted #64748B AA
Sona · твой AI-проводник текст-действие · --teal-ink #0E7C8B AA
только декор / служебное НЕ для смысла · --muted2 #94A3B8 не для смысла

Пороги контраста: обычный текст 4.5:1, крупный 3:1, критичное (safety) 7:1. Главное правило: --muted2 — только декор и служебное, никогда для смыслового текста

Components — компоненты

Отдельные кирпичики интерфейса — от кнопки до строки шага — разложенные по 11 группам. У каждого: что это и зачем пользователю, как он выглядит в разных состояниях, какие правила гайда соблюдает и из какого экрана извлечён. Все размеры и цвета берутся из токенов слоя 1


Components

actions — действия и управление

То, что пользователь нажимает и тянет: главная кнопка, кнопки плеера, переключатели слоёв звука, ползунки громкости, пилюли-выбор. Экраны «Сегодня», «Звуковая терапия», «Аудио-практика». Часть управления живёт в плеере — здесь показана на той же тёмной подложке, что и в продукте.

Кнопка «Начать» — главное действие экрана (.start)

Как ведёт себя: при нажатии чуть проседает, с клавиатуры обводится бирюзовым кольцом. Справа — стрелка «→».

Тех. детали: класс .start, фирменный градиент --grad, стрелка через ::after

Круглые кнопки плеера — воспроизведение, пауза, перемотка (.cbtn / .cbtn.main)

Что это: ряд круглых кнопок плеера. Большая центральная запускает воспроизведение и ставит на паузу (иконка сама переключается); маленькие по бокам — вспомогательное, например перемотка на 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), плоско и без тени

Плита-присутствие Куратора (.cpresence)

Что это: плоская фиолетовая плита в конце дня на «Сегодня» — присутствие живого Куратора той же грамматикой, что блок 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

Плоский тоггл — V3-вариант включения гейта (.toggle--flat)

Что это: тот же тумблер форм, но включённое состояние — плоская бирюза, а не фирменный градиент. Почему так: единственный градиент-якорь зоны (C1b) остаётся за главной кнопкой («Дальше»), поэтому тогглы-гейты в V3 включаются плоским акцентом.

Тех. детали: модификатор .toggle--flat поверх базового .toggle (эта же группа forms); хитбокс ≥44 и фокус наследуются

Раскрывающаяся заметка — «+ заметка» / «зачем это» (.notelink + .notewrap)

Слой объяснения. Тихо разворачивается «зачем» — психообразование или смысл шага. Свёрнуто по умолчанию, чтобы не нагружать экран.

Что это: тихая ссылка-триггер, по нажатию разворачивающая дополнительный блок — поле для необязательной заметки или пояснение «зачем этот шаг». По умолчанию свёрнуто. Как ведёт себя: при раскрытии стрелка поворачивается, блок плавно выезжает. В демо показано раскрытым.

Тех. детали: ссылка .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 — число месяца

Нижняя панель вкладок — главная навигация (.nav)

Два состояния таба: слева — обычный, справа — с точкой непрочитанного (.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, скрыта по умолчанию

Тех. детали: классы .safety / .safety-wrap; цвета --safety / --safety-tint / --safety-line / --safety-ink(-strong)

Кризис-ресурс на тёмном — нейтральный, вес формой (.crisis-help)

Если самому сейчас не справиться — рядом живой человек.

Позвонить на линию помощи Бесплатно, круглосуточно, конфиденциально
Позвонить
Написать Если говорить вслух тяжело
Написать

Контакты линий помощи подбираем для твоего региона.

демо · контакты подключат DK и Лёва

Что это: внешняя помощь внизу SOS-экрана «Сейчас тяжело» — два ко-равных канала (звонок + текст, оба ≥44px: приложение про слух, голос доступен не всем). Как выглядит: нейтральный тёмный блок на --dark-* с ink-рейлом слева и слотами-иконками — грамматика .emergency, но на тёмной иммерсивной поверхности; вес держит форма, не цвет.

  • да — нейтральный, не красный (C1f): красный зарезервирован за Tier-1 .safety; teal — за якорем/чипом (C1b)
  • да — кнопки .is-placeholder НЕактивны (ghost-пунктир), пока реальный контакт не подключён — 988 live ждёт клин-гейта

Тех. детали: классы .crisis-help (-lead / -list / -row / -ico / -txt / -go(.is-placeholder) / -note / -demo); токены --dark-text / --dark-text2 / --dark-muted / --dark-surface-2 / --dark-divider / --dark-border. Поднят из inline program/templates/crisis в канон (safety §3c, реш. DK 2026-07-13)

Components

notes — нейтральные реактивные ноты

Спокойная обратная связь по ответам онбординга: slate, БЕЗ красного (красный зарезервирован за Tier-1 — группа safety выше). Появляются СРАЗУ при триггере, как реактивная красная плашка, но без мед-веса — это не safety. Единая конвенция тоггла: базово скрыты, показ через .show. Глиф — нейтральный --muted: бирюза зарезервирована за CTA и активным сегментом (C1/D5). Раньше .calmline/.softnote были локальны и дрейфовали по экранам — сведены в один канон.

Строка-успокоение — позитивная/спокойная нота (.calmline)

По здоровью всё спокойно.

Что это: тихая строка-галочка «всё в порядке, идём дальше» (safety — все шесть флагов «нет»; program-fit — полное совпадение). Как выглядит: одна строка с нейтральным глифом-галочкой.

  • да — глиф --muted: бирюза зарезервирована за CTA и активным сегментом (C1/D5)
  • да — единая конвенция тоггла .show (раньше дрейфовала: .is-hidden + teal-ink)

Тех. детали: класс .calmline (.lf); цвет --muted

Серая нота несовпадения — 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)

ТяжелоРовноОтлично
„Ровно“ — с этого хорошо начать день.
Самочувствие на сегодня отмечено

Что это: ежедневный пульс самочувствия — ряд точек-кружков. На «Сегодня» живёт на общей поверхности блока присутствия 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)

Что это: бирюзовый кружок с буквой «S» — «лицо» Sona, знак, что говорит ассистент. Варианты: четыре размера — крупный в приветствии, поменьше в подсказках, мелкий рядом с короткой репликой.

Тех. детали: класс .savatar, размеры .is-lg 38 / .is-md 30 / .is-sm 22 / .is-xs 20 — один компонент вместо повторов

Приветствие Sona — блок-зачин дня (.coach)

Sona · твой AI-проводник
Неделя 2 · Тело и дыхание · День 3
В предыдущий день курса ты познакомился с дыханием — сегодня идём чуть глубже.

Что это: приветственный блок вверху экрана «Сегодня»: аватар Sona, подпись «Sona · твой AI-проводник», строка-ориентир «Неделя · Тема · День» и короткая фраза-настрой. Строка-ориентир видна сразу, не прячется.

Тех. детали: класс .coach; подпись-проводник цветом --teal-ink

Пузырь Sona — короткая фраза в облачке (.bubble)

Звон не определяет день — давай попробуем мягкий старт. Я рядом.

Что это: светло-бирюзовое облачко с короткой фразой Sona и хвостиком сверху слева. Одно-два слова внутри могут быть выделены бирюзовым акцентом.

Тех. детали: класс .bubble, фон --teal-tint; акцент внутри — <b> цветом --teal-ink

Мост Sona — тёплая фраза-проводник между этапами (.bridge)

Дальше настроим программу под тебя — я рядом на каждом шаге.

Что это: одна тёплая мысль голосом Sona на бирюзовом тинте вместо боксовой плашки-плиты. Снимает тревогу перехода («дальше — программа», «это обратимо»). Почему так: строка-проводник читается за секунду и теплее любого абзаца-пояснения.

Тех. детали: класс .bridge; аватар-«S» — канон .savatar.is-sm (эта же группа sona-voice)

Отклик Sona на самочувствие — реплика после ответа (.doseHint)

„Ровно“ — с этого хорошо начать день.

Что это: короткая реплика Sona сразу после того, как отметили самочувствие; подстраивается под ответ (на тяжёлый день фраза мягче, на ровный — спокойнее). По умолчанию скрыта, разворачивается в момент ответа. В демо показана раскрытой.

Тех. детали: класс .doseHint, раскрывается через .pulse.answered; длительность --t-medium

Присутствие Sona + пульс — единая поверхность, chromeless-merge (.presence)

S
Sona · твой AI-проводник
Сегодня начинаем вместе — наметишь, ради чего идёшь этим путём. Как ты сейчас?
ТяжелоРовноОтлично
„Ровно“ — с этого хорошо начать день.

Что это: зачин 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)

Звук — на трудные моменты, не на весь день: тишина тоже тренирует

Что это: тихая светло-бирюзовая плашка с аватаром Sona и одной короткой мыслью — уместный совет на экранах помимо «Сегодня» (например про звукотерапию). Реплика к месту, а не большое приветствие.

Тех. детали: класс .guardnote, фон --teal-tint

Components

step-card — элементы шагов и родственные карточки-строки

Из чего собрана лента дня на «Сегодня»: тихие строки пройденных и предстоящих шагов, одна яркая карточка текущего шага, вход в «Оглянуться на день», галочка завершения. Плюс родственные карточки той же формы «значок + текст»: узел на нити дня, карточки звукотерапии «Уснуть» / «Сосредоточиться», итог онбординга. Принцип: ярким остаётся только один шаг — тот, что делать сейчас; остальное приглушено.

Значок шага — мини-иконка типа практики (.sico)

Что это: маленькая иконка слева в строке шага — с одного взгляда понятно, что за практика (дыхание, видео, звук). Варианты: базовый серый значок и крупнее подсвеченные — для карточек-намерений и плашки уровня.

Тех. детали: класс .sico 34px, крупнее — --s40 (+--tint) и --s46; один компонент вместо повторов в строке шага, плашке уровня и карточке-намерении

Узел на нити дня — кружок шага на вертикальной линии (.fnode)

3 2

Что это: кружок на вертикальной линии пути дня (или программы) — на каком шаге вы сейчас и какие пройдены. Как выглядят: будущий шаг — тихий кружок с номером, пройденный — залит бирюзой с галочкой, текущий — бирюзовый контур.

Тех. детали: класс .fnode; пройденный .done, текущий .now; линия — .flow::before

Строка шага — тихий пункт ленты дня (.step)

Дыхание 4-7-8Основная практика · 11 минут
Короткий настройВидео · 2 мин

Что это: тихая строка одного шага — значок, название и пояснение («Дыхание 4-7-8 · 11 минут»); из таких строк собрана лента дня. Как ведёт себя: у пройденного шага строка тускнеет и справа появляется бирюзовая галочка. Текущий шаг показан не строкой, а отдельной яркой карточкой.

Тех. детали: класс .step, пройденный .done (галочка .schk); яркий вид того же шага — .maincard

Карточка текущего шага — единственный яркий блок дня (.maincard)

Практика · 11 мин

Прогрессивная мышечная релаксация

аудио
Слушать
Упражнение

Мои цели на программу

Заполнить

Что это: крупная яркая карточка шага, который делают прямо сейчас. Весь герой — кликабельное поле-превью на приглушённом брендовом тоне (плоский, не градиент — единственный градиент-якорь зоны остаётся у кнопки), высотой ближе к 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)

Что это: тихая строка-ссылка внизу ленты дня — спокойный вход в ритуал завершения. Намеренно неброская, не похожа на главную кнопку.

Тех. детали: класс .closestep; использует тот же значок .sico, что и строки шагов

Карточка-намерение — «Уснуть», «Сосредоточиться» (.jcard)

Что это: карточка-выбор цели — «Уснуть», «Сосредоточиться» — со значком, названием и пояснением. Как ведёт себя: все карточки равноправны, ни одна не выделена заранее; при нажатии выбранная слегка подсвечивается.

Тех. детали: класс .jcard, значок .sico размера 46

Плашка уровня — состояние словами, без балла (.levelcard)

Уровень
Заметное влияние Словами, без балла. Это про то, как тиннитус влияет на жизнь — не оценка «тяжести».

Что это: спокойная плашка по итогам онбординга — описывает состояние словами («Заметное влияние»), а не баллом. Про то, как тиннитус влияет на жизнь, а не оценка «тяжести» в цифрах.

Тех. детали: класс .levelcard, значок .sico размера 40

Зеркало итога — строки-домены словами, ценность, профиль (.mirror / .valueline / .profileline)

Сон — даётся непросто

Твои ответы пригодятся — они помогут настроить программу под тебя.

Подробный разбор будет в твоём профиле — можно скачать как PDF.

Что это: новый итог-экран замера отражает ответы словами, а не баллом. Зеркало — тихие строки-домена «домен + человеческая фраза» с бирюзовой точкой-маркером (.mirror). Под ним строка ценности «время не зря» (.valueline) и честная сноска про профиль/PDF (.profileline) — замена антипаттерну «раскрытие подробнее» с пустыми заглушками. Почему так: антипод дашборда тяжести — без чисел, полос, радара, светофора.

Тех. детали: классы .mirrors / .mirror (маркер .mirror::before 7px --teal), .valueline, .profileline; источник — onboarding/result V3

Галочка завершения — спокойный итог шага (.check)

Что это: крупный бирюзовый кружок с галочкой на экране завершения шага — спокойный знак «готово». Без салюта, конфетти и процентов, чтобы завершение ощущалось мирно.

Тех. детали: класс .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-метка (.section-label / --block)

базовый (.section-label)
с отбивкой блока (.section-label--block)

Что это: единая тихая 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 / .tabs--curator)

бирюзовый ряд (.tabs)
кабинет Куратора (.tabs--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.

Тех. детали: .cabinet (широкая рамка, align сверху), .topbar (sticky-шапка, .spacer разводит бренд и аккаунт), .brand (.logo + .bt), .wrap / .wrap-wide (рабочая область)

Patterns — основной продукт

Паттерн — это готовый блок из нескольких кирпичиков слоя 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

Сохранение прогресса + входы

Карта-зеркало пройденного (галочки) + равноценные мягкие входы Google/Apple/e-mail — экран онбординга, где гость сохраняет прогресс в аккаунт. Открыть отдельно: _gal-pat-save-card.html ↗

Группа

Голос проводника

Реплика Sona как композиция: аватар, строка-подпись и речевой пузырь.

Pattern

Голос Sona (аватар + пузырь)

Реплика проводника Sona: круглый аватар + строка-подпись + речевой пузырь teal-tint — звучит в онбординге и контекстных откликах приложения. Открыть отдельно: _gal-pat-sona-voice.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 ↗

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 ↗