Academic Workspace
Центр Алмазова

Design Foundations

Основа визуального языка: цвет, типографика, отступы и форма, раскладка. Компоненты вынесены в отдельный раздел. Значения берутся из styles/tokens.css — единственного источника истины.

Цвет

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

Поверхности

--color-background#fcfcfbФон приложения
--color-surface#ffffffПанели и карточки
--color-surface-sunken#f7f7f5Утопленные области
--color-surface-hover#efefecНаведение
--color-surface-active#e4e4e0Нажатие

Текст

--color-text-primary#191c21Основной текст
--color-text-secondary#5f636aПодписи и описания
--color-text-tertiary#82858aСлужебный текст
--color-text-disabled#a8aaa6Недоступное
--color-text-accent#12524dСсылки и акценты
--color-text-inverted#ffffffНа тёмном фоне

Границы

--color-border#e4e4e0Базовая граница
--color-border-subtle#efefecРазделители внутри блока
--color-border-strong#d2d3ceПоля ввода, кнопки
--color-border-focus#17605aКольцо фокуса

Акцент

--color-accent#12524dОсновное действие
--color-accent-hover#0d403c
--color-accent-subtle#eaf2f0Фон акцентных областей
--color-accent-border#a9cbc5
--color-accent-contrast#ffffffТекст на акценте

Состояния

--color-success#1f7a4dРабота принята
--color-success-subtle#e9f4ee
--color-warning#8a5a00Приближается срок
--color-warning-subtle#faf1de
--color-danger#b3261eСрок нарушен
--color-danger-subtle#fbecea
--color-info#1b4f8aНейтральное уведомление
--color-info-subtle#e9f0f8

Типографика

Системный шрифтовой стек. Крупные размеры масштабируются через clamp(), поэтому отдельных мобильных значений не требуется.

Шкала

Display XL--font-size-display-xl · 44 → 64px · 700 · −0.03em
Aa
Display--font-size-display · 32 → 48px · 600 · −0.03em
Aa
Heading 1--font-size-h1 · 28 → 40px · 600
Aa
Heading 2--font-size-h2 · 22 → 28px · 600
Aa
Heading 3--font-size-h3 · 18 → 21px · 600
Aa
Body--font-size-body · 16px · 400 · 1.6
Aa
Small--font-size-small · 14px · 400
Aa
Caption--font-size-caption · 13px · 400
Aa
Label--font-size-label · 12px · 600 · uppercase
Aa
Code--font-size-code · 13px · mono
Aa

Стили

Display XLЗаголовок продукта

Academic Workspace

DisplayЗаголовок страницы

Design Foundations

Heading 1

Каноническая доменная модель

Heading 2

Деятельность и результат

Heading 3

Задачи на сегодня

Body

Студент выполняет задачи, создаёт работы и предъявляет их на проверку. Каждое суждение о работе сохраняется вместе с основанием, по которому оно вынесено.

Small

Обратная связь опубликована 14 мая, попытка 2 из 3.

Caption

Обновлено куратором программы

Label

Форма контроля

Code
Submission.attemptNo = 2

Отступы и форма

Шаг сетки — 4px. Тени применяются только к всплывающим слоям, статичные блоки разделяются границами.

Шкала отступов

4px--space-1
8px--space-2
12px--space-3
16px--space-4
24px--space-5
32px--space-6
40px--space-7
48px--space-8
64px--space-9
96px--space-10

Радиусы

Кольцо фокуса--radius-xs · 2px
Кнопки, поля, бейджи--radius-sm · 4px
Панели и таблицы--radius-md · 6px
Всплывающие слои--radius-lg · 10px
Круглые элементы--radius-full · 999px

Тени

Кромка кнопки--shadow-xs
Закреплённые панели--shadow-sm
Выпадающие списки--shadow-md
Диалоги--shadow-lg

Layout

Дизайн-система задаёт пределы и ритм раскладки, но не форму страницы. Готовой сетки из фиксированных колонок здесь нет и не будет.

Container

Ширина приложения--layout-max-width · 1200px
Ширина текста--layout-content-width · 44rem
Поля--layout-padding · clamp(24px, 4vw, 64px)

Breakpoints

md48rem · 768px
Одна колонка становится двумя: подпись помещается рядом с содержимым
lg64rem · 1024px
Помещается постоянная боковая навигация рядом с содержимым

Принципы адаптивности

  • Mobile FirstБазовые стили описывают узкий экран. Медиазапросы только расширяют раскладку, но не отменяют её.
  • Компонент адаптируется, а не заменяетсяОтдельных мобильных и настольных версий одного элемента не существует.
  • Раскладка меняется раньше компонентаЕсли содержимое не помещается, сначала перестраивается расположение блоков и только потом упрощается сам блок.
  • Все страницы живут внутри ContainerСобственную ширину и поля страница не задаёт.

Принципы раскладки

  • Сетки с фиксированным числом колонок нетЧисло колонок принадлежит сценарию, а не дизайн-системе.
  • Система задаёт пределы и ритм, а не форму страницыШирина, отступы и breakpoints общие для всех. Расположение блоков — решение конкретного экрана.
  • Колонки описываются намерением, а не количествомМинимальная ширина элемента вместо «четыре колонки из двенадцати».
  • Расстояния берутся из шкалы отступовПромежуточных значений между блоками не бывает.