Цвет
Выбирайте цвет по роли, а не по значению. Каждый цветовой токен следует за темой и основным цветом, поэтому одни и те же имена работают везде.
Принципы
- Сначала нейтральное. Поверхности, текст и рамки серые и белые. Цвета мало, поэтому там, где он есть, он что-то значит: главное действие, статус, категорию.
- Выбирайте по роли. Берите токен роли, например
text/defaultилиfill/accent. Сырая палитра (gray-100,blue-500) за темой не следует. - Темы и основной цвет меняют значения, а не имена. Один и тот же токен работает в светлой, тёмной и контрастной теме и с любым основным цветом.
- Не передавайте смысл одним цветом. Добавьте к статусу, выбору или ошибке иконку, текст или форму.
Имена токенов
Имя цветового токена читается так: роль / намерение / уровень / состояние. Лишние части опускаются.
- Роль:
surface,text,icon,border,fill,state. - Намерение:
accent,success,warning,error,info. У нейтральных токенов намерения в имени нет:text/default, а неtext/neutral/default. - Уровень: например
secondary,subtle,strong,raised. - Состояние: например
hover,active,disabled,on-fill.
В CSS косые черты заменяются дефисами:
| Токен | CSS-переменная |
|---|---|
text/default |
var(--text-default) |
text/secondary |
var(--text-secondary) |
fill/accent/hover |
var(--fill-accent-hover) |
surface/error |
var(--surface-error) |
text/accent/on-fill |
var(--text-accent-on-fill) |
.card {
background: var(--surface-default);
color: var(--text-default);
border: 1px solid var(--border-default);
}Темы
- Светлая: нейтральная основа на белом. Глубину дают ступени серого.
- Тёмная: настроена отдельно, это не перевёрнутая светлая. Чем выше слой, тем он светлее: страница самая тёмная, всплывающие панели самые светлые.
- Контрастная: текст, рамки и заливки сильнее, а наведение, нажатие и выбор различаются между собой. Эта тема везде выдерживает контраст WCAG.
Как выбрать тему
Задайте data-theme на <html>: light, dark или high-contrast.
<html data-theme="dark">
Без атрибута страница светлая, но если система просит больше контраста, тема сама становится контрастной. Заданное вами значение всегда главнее.
data-theme |
Система просит больше контраста | Система молчит |
|---|---|---|
| не задан | контрастная | светлая |
light |
светлая | светлая |
dark |
тёмная | тёмная |
high-contrast |
контрастная | контрастная |
data-theme работает и на части страницы:
<div data-theme="dark" style="background: var(--surface-page); color: var(--text-default); padding: var(--space-16)"> <tk-button variant="primary">Publish</tk-button> <tk-button>Save draft</tk-button> </div>
Режим принудительных цветов (высокая контрастность Windows) к этим темам не относится: система заменяет цвета на цвета пользователя.
Основной цвет и акцент
Акцент (основная кнопка, ссылки, отмеченные элементы управления, рамка фокуса) берёт оттенок
из одного основного цвета. Задайте data-primary на <html> рядом с data-theme:
<html data-theme="light" data-primary="purple">
Значения: blue (по умолчанию), orange, green, mint, teal, indigo, purple,
brown, gray, black.
<tk-button variant="primary">Publish</tk-button> <tk-button variant="ghost">Preview</tk-button> <tk-checkbox checked>Email me updates</tk-checkbox>
blackдаёт монохромный акцент: в светлой и контрастной теме основная кнопка чёрная с белым текстом, в тёмной белая с чёрным.- Текст на акцентной заливке (
text/accent/on-fill) белый для всех основных цветов, кромеorange: там он чёрный. infoне акцент.infoвсегда синий, а акцент следует за основным цветом. Не подменяйте одно другим, даже если основной цвет синий.
Числа в таблице — ступени шкалы основного цвета в светлой, тёмной и контрастной теме.
| Токен | Для чего | Светлая | Тёмная | Контрастная |
|---|---|---|---|---|
fill/accent |
основная кнопка, отмеченные чекбокс, радиокнопка и переключатель, слайдер | 500 | 500 | 600 |
fill/accent/hover |
наведение на акцентную заливку | 600 | 400 | 700 |
fill/accent/active |
нажатие на акцентную заливку | 600 | 400 | 800 |
fill/accent/disabled |
не используется: отключённые элементы берут surface/disabled |
200 | 800 | 300 |
text/accent |
ссылки, текст кнопки ghost |
600 | 400 | 800 |
text/accent/hover |
наведение на ссылку и кнопку ghost |
800 | 200 | 900 |
text/accent/on-fill |
текст на fill/accent |
белый или чёрный | белый или чёрный | белый или чёрный |
icon/accent |
акцентные иконки | 600 | 400 | 700 |
icon/accent/on-fill |
иконки на fill/accent |
как text/accent/on-fill |
||
border/accent |
акцентная грань, например у ручки изменения размера во время перетаскивания | 500 | 500 | 700 |
border/accent/focus |
рамка фокуса и граница поля в фокусе | 500 | 500 | 800 |
state/accent/hover |
акцентный слой наведения | 600, 10% | 500, 10% | 800, 18% |
state/accent/press |
акцентный слой нажатия | 600, 10% | 500, 10% | 800, 46% |
state/accent/on |
акцентный слой выбора | 600, 10% | 500, 10% | 800, 46% |
В светлой и тёмной теме fill/accent/active равен fill/accent/hover, так что отдельного
вида нажатия у основной кнопки там нет. Рамке фокуса посвящена своя страница:
Роли
| Роль | Что окрашивает |
|---|---|
surface |
фоны: страницу, карточки, панели, всплывающие окна |
text |
всё, что читают |
icon |
самостоятельные иконки |
border |
контуры, разделители, выбор |
fill |
небольшие элементы со своей заливкой, например дорожку переключателя или сплошной бейдж |
state |
полупрозрачные слои наведения, нажатия и выбора поверх всего перечисленного |
Поверхность
| Токен | Для чего | Светлая | Тёмная | Контрастная |
|---|---|---|---|---|
surface/page |
холст страницы | white |
gray-950 |
gray-50 |
surface/default |
блоки контента и карточки | white |
gray-900 |
gray-50 |
surface/subtle |
слегка утопленная область внутри блока | gray-50 |
gray-800 |
gray-100 |
surface/raised |
всплывающие панели: меню, поповеры, диалоги | white |
gray-900 |
gray-50 |
surface/sunken |
углубления и дорожки, например дорожка прогресса | gray-100 |
gray-950 |
gray-200 |
surface/inverse |
панель в обратном тоне: подсказка, тост | gray-900 |
gray-50 |
gray-950 |
surface/disabled |
заливка отключённого элемента | gray-50 |
gray-900 |
gray-100 |
surface/backdrop |
затемнение страницы под модальным диалогом, и ничего больше | gray-950, 50% |
black, 60% |
gray-950, 60% |
У поверхностей нет токенов наведения и выбора: для этого есть слои состояний ниже.
Текст
| Токен | Для чего | Светлая | Тёмная | Контрастная |
|---|---|---|---|---|
text/default |
заголовки и основной текст | gray-950 |
gray-50 |
gray-950 |
text/secondary |
подписи, метаданные | gray-700 |
gray-300 |
gray-900 |
text/tertiary |
время, счётчики | gray-600 |
gray-400 |
gray-800 |
text/placeholder |
подсказка в пустом поле | gray-500 |
gray-500 |
gray-600 |
text/disabled |
текст отключённого элемента | gray-400 |
gray-600 |
gray-500 |
text/inverse |
текст на surface/inverse |
gray-50 |
gray-950 |
gray-50 |
text/on-fill |
текст на fill/default |
gray-950 |
white |
gray-950 |
Иконки
Каждый токен icon/* работает в паре с токеном text/* того же уровня. Иконкам нужен
контраст 3:1, а не 4.5:1, поэтому в светлой и контрастной теме иконка на ступень светлее
своего текста, а в тёмной совпадает с ним.
| Токен | Светлая | Тёмная | Контрастная |
|---|---|---|---|
icon/default |
gray-900 |
gray-50 |
gray-900 |
icon/secondary |
gray-600 |
gray-300 |
gray-800 |
icon/tertiary |
gray-500 |
gray-400 |
gray-700 |
icon/disabled |
gray-300 |
gray-600 |
gray-400 |
icon/inverse |
gray-50 |
gray-950 |
gray-50 |
icon/on-fill |
как text/on-fill |
Рамки
| Токен | Для чего | Светлая | Тёмная | Контрастная |
|---|---|---|---|---|
border/subtle |
разделители внутри блока; граница полей и кнопок outline |
gray-100 |
gray-700 |
gray-600 |
border/default |
контуры контейнеров и элементов управления | gray-200 |
gray-600 |
gray-700 |
border/strong |
грани, которые должны быть заметны, например разделитель в split button | gray-300 |
gray-400 |
gray-800 |
border/selected |
выбранный элемент | gray-800 |
gray-200 |
gray-900 |
border/inverse |
рамка или рамка фокуса на surface/inverse |
gray-50 |
gray-950 |
gray-50 |
border/disabled |
рамка отключённого элемента | gray-100 |
gray-900 |
gray-300 |
Рамка фокуса — это border/accent/focus, она в разделе
Заливки
| Токен | Для чего | Светлая | Тёмная | Контрастная |
|---|---|---|---|---|
fill/default |
нейтральная заливка элемента, например выключенная дорожка переключателя | gray-100 |
gray-800 |
gray-200 |
fill/hover |
её наведение | gray-200 |
gray-700 |
gray-300 |
fill/active |
её нажатие | gray-300 |
gray-600 |
gray-400 |
fill/selected |
выбранная нейтральная заливка | gray-300 |
gray-600 |
gray-400 |
fill/disabled |
отключённая заливка | gray-100 |
gray-900 |
gray-200 |
Текст и иконки на заливке берут её пару on-fill: text/on-fill на fill/default,
text/accent/on-fill на fill/accent, text/error/on-fill на fill/error.
Слои состояний
Наведение, нажатие и выбор — полупрозрачные слои поверх того, что элемент уже показывает.
Рисуйте их через background-image, а собственный background-color элемента оставляйте.
У каждого слоя есть готовый градиент: --state-layer-hover, --state-layer-press,
--state-layer-on, --state-layer-on-hover, акцентные
(--state-layer-accent-hover, -press, -on) и для ошибки
(--state-layer-error-hover, -press).
.row:hover { background-image: var(--state-layer-hover); }
.row[aria-selected='true'] { background-image: var(--state-layer-on); }Не задавайте такому элементу сокращённое свойство background: оно сбрасывает
background-image и убирает слой.
| Токен | Для чего | Светлая | Тёмная | Контрастная |
|---|---|---|---|---|
state/hover |
под указателем | gray-950, 5% |
gray-50, 5% |
gray-950, 13% |
state/press |
во время нажатия | gray-950, 5% |
gray-50, 5% |
gray-950, 26% |
state/on |
выбрано, включено или текущее | gray-950, 5% |
gray-50, 5% |
gray-950, 38% |
state/on-hover |
включённый элемент под указателем | gray-950, 9.75% |
gray-50, 9.75% |
gray-950, 38% |
В светлой и тёмной теме наведение, нажатие и выбор дают одинаковый оттенок. Отмечайте
выбранный элемент чем-то ещё: border/selected, галочкой или более жирным текстом. В
контрастной теме они различаются.
Цвета статусов
Статусы сохраняют оттенок при любом основном цвете: успех зелёный, предупреждение оранжевое, ошибка красная, информация синяя.
<tk-section-message tone="success">Payment received.</tk-section-message> <tk-section-message tone="warning">Your trial ends in 3 days.</tk-section-message> <tk-section-message tone="error">The upload failed. Try again.</tk-section-message> <tk-section-message tone="info">Reports update every hour.</tk-section-message>
<tk-badge tone="success">Paid</tk-badge> <tk-badge tone="warning">Due soon</tk-badge> <tk-badge tone="error" treatment="solid">Overdue</tk-badge> <tk-badge tone="info" treatment="solid">New</tk-badge>
В каждой ячейке ступень оттенка статуса: светлая · тёмная · контрастная.
| Токен | success (зелёный) |
warning (оранжевый) |
error (красный) |
info (синий) |
|---|---|---|---|---|
surface/{status}: тонированный фон |
50 · 900 · 100 | 50 · 900 · 100 | 50 · 900 · 100 | 50 · 900 · 100 |
text/{status} |
600 · 400 · 800 | 600 · 400 · 800 | 600 · 400 · 800 | 600 · 400 · 800 |
icon/{status} |
600 · 400 · 700 | 600 · 400 · 700 | 600 · 400 · 700 | 600 · 400 · 700 |
border/{status} |
300 · 500 · 600 | 300 · 500 · 600 | 600 · 400 · 600 | 300 · 500 · 600 |
fill/{status}: сплошная заливка |
600 · 500 · 700 | 500 · 500 · 700 | 600 · 500 · 700 | 600 · 600 · 700 |
text/{status}/on-fill, icon/{status}/on-fill |
белый | чёрный · чёрный · белый | белый | белый |
У error есть и токены взаимодействия:
| Токен | Для чего | Светлая | Тёмная | Контрастная |
|---|---|---|---|---|
state/error/hover |
наведение на опасную кнопку или пункт меню | red-600, 10% |
red-500, 10% |
red-800, 18% |
state/error/press |
нажатие на них же; равно наведению | red-600, 10% |
red-500, 10% |
red-800, 18% |
fill/error/hover |
наведение на сплошную красную заливку; компоненты его не используют | red-700 |
red-600 |
red-800 |
fill/error/active |
нажатие на сплошную красную заливку; компоненты его не используют | red-800 |
red-700 |
red-900 |
Категориальная палитра
Тринадцать цветов различают категории: теги, метки, серии графиков, аватары. Статуса они не несут: красный тег не ошибка.
<tk-tag color="purple">Research</tk-tag> <tk-tag color="teal">Design</tk-tag> <tk-tag color="orange">Marketing</tk-tag> <tk-tag color="green">Sales</tk-tag> <tk-tag color="gray">Unassigned</tk-tag>
Цвета: red, orange, yellow, green, mint, teal, cyan, blue, indigo,
purple, pink, brown, gray. У каждого три токена; числа — ступени этого цвета:
светлая · тёмная · контрастная.
| Токен | CSS-переменная | Для чего | Ступени |
|---|---|---|---|
categorical/{color}/surface |
--{color}-surface |
фон метки | 100 · 900 · 100 |
categorical/{color}/text |
--{color}-text |
текст метки | 700 · 300 · 900; в светлой 800 для orange, yellow, green, mint, teal, cyan |
categorical/{color}/border |
--{color}-border |
необязательный контур | 400 · 500 · 700 |
- Текст на своём фоне даёт не меньше 5:1 в любой теме.
- Контур декоративный: в светлой теме он ниже 3:1. Не передавайте им смысл.
- На одном экране держите не больше пяти-шести категориальных цветов: больше трудно различить.
- Оси и подписи графика берите из нейтральных токенов.
Палитра подсветки кода
syntax/*. Как и
категориальные цвета, они не несут статуса: строка зелёная, но это не success.
// Show a price in dollars
function formatPrice(amount) {
return '$' + amount.toFixed(2);
}<tk-code-block language="js"><pre>// Show a price in dollars
function formatPrice(amount) {
return '$' + amount.toFixed(2);
}</pre></tk-code-block>| Токен | Светлая | Тёмная | Контрастная |
|---|---|---|---|
syntax/surface |
gray-50 |
gray-950 |
white |
syntax/keyword |
purple-700 |
purple-300 |
purple-800 |
syntax/string |
green-700 |
green-300 |
green-800 |
syntax/comment |
gray-700 |
gray-400 |
gray-700 |
syntax/number |
orange-700 |
orange-300 |
orange-800 |
syntax/function |
blue-700 |
blue-300 |
blue-800 |
syntax/class |
teal-700 |
teal-300 |
teal-800 |
syntax/variable |
red-700 |
red-300 |
red-800 |
syntax/punctuation |
gray-800 |
gray-300 |
gray-800 |
Каждый цвет подсветки даёт не меньше 4.5:1 на syntax/surface в любой теме.
Пары
Берите фон вместе с его парными токенами, и контраст уже заложен.
| Сочетание | Фон | Текст | Иконка | Рамка |
|---|---|---|---|---|
| Карточка | surface/default |
text/default |
icon/default |
border/default |
| Выбранная строка | её поверхность + слой state/on |
text/default |
icon/default |
border/selected или галочка |
| Нейтральная заливка | fill/default |
text/on-fill |
icon/on-fill |
нет |
| Основная кнопка | fill/accent |
text/accent/on-fill |
icon/accent/on-fill |
нет |
| Ссылка | любая поверхность | text/accent |
нет | нет |
| Сообщение о статусе | surface/{status} |
text/{status} |
icon/{status} |
border/{status} |
| Сплошной бейдж | fill/{status} |
text/{status}/on-fill |
icon/{status}/on-fill |
нет |
| Подсказка, тост | surface/inverse |
text/inverse |
icon/inverse |
border/inverse |
| Отключённый элемент | surface/disabled |
text/disabled |
icon/disabled |
border/disabled |
| Тег | categorical/{color}/surface |
categorical/{color}/text |
нет | categorical/{color}/border, по желанию |
Доступность
Уже встроено:
- У каждой роли фона есть парные токены текста и иконок; пары выше выдерживают свой порог контраста, кроме пределов ниже.
- Контрастная тема везде выдерживает контраст WCAG, и тот, кто попросил у системы больше контраста, получает её сам.
- Отключённый вид задают отдельные токены, а не
opacity. - Подсказка в поле и текст отключённых элементов намеренно ниже 4.5:1: это не контент.
Ваша часть:
- Не передавайте смысл одним цветом; добавьте иконку, текст или форму.
- Проверяйте пары, которых нет на этой странице: 4.5:1 для текста; 3:1 для крупного текста (24px или 18.66px жирным), иконок и рамок, несущих смысл.
- Берите
text/*для текста иicon/*для иконок. Цветам иконок хватает 3:1, для текста они бывают слишком светлыми.
Измеренные пары
Светлая тема, синий основной цвет.
| Фон | Передний план | Контраст |
|---|---|---|
surface/default |
text/default |
17.36:1 |
surface/default |
text/secondary |
6.66:1 |
surface/default |
text/tertiary |
4.59:1 |
surface/default |
text/accent |
5.49:1 |
surface/error |
text/error |
4.63:1 |
surface/info |
text/info |
5.05:1 |
fill/default |
text/on-fill |
13.06:1 |
fill/accent |
text/accent/on-fill |
4.02:1 |
fill/success |
text/success/on-fill |
4.66:1 |
fill/warning |
text/warning/on-fill |
9.55:1 |
fill/error |
text/error/on-fill |
5.07:1 |
fill/info |
text/info/on-fill |
5.49:1 |
Пределы контраста
Эти пары не дотягивают в светлой или тёмной теме. Контрастная тема выдерживает минимумы.
- Текст статуса на своём фоне:
text/success4.29:1 иtext/warning3.02:1 в светлой теме, ниже 4.5:1.text/warningдаёт 3.30:1 даже на белом. - Акцентный текст:
text/accentдаёт 3.30:1 на белом с основным цветомorange. В тёмной теме наsurface/subtleиsurface/raisedон ниже 4.5:1 со всеми основными цветами, кромеorangeиblack; ниже всехindigo, 2.47:1. - Текст на акцентной заливке: не меньше 3:1 с любым основным цветом (ниже всех
gray, 3.26:1), но ниже 4.5:1 с несколькими, например уblue4.02:1. - Граница поля и кнопки
outline(border/subtle): 1.33:1 в светлой и 2.00:1 в тёмной, ниже 3:1; 4.22:1 в контрастной. В светлой теме наsurface/sunkenона пропадает. border/strong: 2.02:1 на белом в светлой теме, ниже 3:1.- Текст опасной кнопки при наведении и нажатии: 3.94:1 в светлой теме.
- Рамка фокуса: ниже 3:1 с некоторыми основными цветами на некоторых поверхностях.
Подробнее в
Focus . - Выбранное и наведённое выглядят одинаково в светлой и тёмной теме. Отмечайте выбор рамкой, галочкой или более жирным текстом.
Можно / нельзя
| ✅ Можно | ❌ Нельзя |
|---|---|
Ставить text/accent/on-fill на fill/accent |
Ставить text/default на акцентную заливку |
Заливать fill/* только небольшие элементы |
Делать заливку фоном страницы или панели |
Показывать отключённый элемент токенами */disabled |
Приглушать его через opacity |
Брать цвета статусов из success, warning, error, info |
Обозначать статус акцентом |
| Различать метки категориальным цветом | Обозначать ошибку красным тегом |
Отмечать выбранное border/selected или галочкой |
Полагаться только на оттенок state/on |
Рисовать слои состояний через background-image |
Задавать background элементу со слоем состояния |
| Брать один токен для всех тем | Вписывать тему в имя, например surface-default-dark |
Примитивы
Под ролями лежит палитра: 13 оттенков (red, orange, yellow, green, mint, teal,
cyan, blue, indigo, purple, pink, brown, gray), у каждого 11 ступеней от 50
до 950, плюс white и black. В CSS: var(--blue-500).
Примитивы не меняются с темой и основным цветом, поэтому везде, где подходит токен роли,
берите его. Одна и та же ступень выглядит примерно одинаково тяжёлой в любом оттенке, но
контраст всё равно разный: orange и yellow на той же ступени светлее, чем blue или
gray.
Все значения с контрастом к белому и чёрному:
Связанные
Focus : рамка фокуса и её цвет.Elevation : тени, которые поднимают всплывающие поверхности.Badge ,Section message иBanner : цвета статусов в деле.Tag : категориальная палитра в деле.
Основной цвет
Акцент принимает один из десяти оттенков. Он задаётся один раз на элементе html атрибутом data-primary. Выберите оттенок, чтобы увидеть в нём этот сайт.
Примитивные цвета
Сырая палитра под цветовыми ролями: 13 оттенков по 11 ступеней, плюс белый и чёрный. В интерфейсе берите токены ролей: примитивы не меняются с темой.
Как читать шкалу
Ступень 50 самая светлая, 950 самая тёмная, 500 — оттенок в полную силу. Одна и та же ступень выглядит примерно одинаково тяжёлой в любом оттенке.
| Ступень | Светлота | Для чего обычно |
|---|---|---|
| 50 | почти белый | фон / приглушённая поверхность |
| 100–200 | очень светлый | фоны, тонкие рамки |
| 300–400 | светлый | рамки, второстепенные акценты |
| 500 | опорная | основной акцент цвета |
| 600–700 | насыщенный | акценты, текст ссылок на светлом |
| 800–900 | тёмный | текст, сильный контраст |
| 950 | почти чёрный | глубокий фон / текст с наибольшим контрастом |
В каждой таблице: CSS-переменная, значение в hex, hsl и oklch и контраст к белому и к чёрному с уровнем WCAG для обычного текста (AA от 4.5:1, AAA от 7:1).
red
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
red-50 |
--red-50 |
#fff2ef |
hsl(11 100% 97%) |
oklch(0.970 0.015 28.7) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.20:1 AA/AAA |
red-100 |
--red-100 |
#ffd5ce |
hsl(9 100% 90%) |
oklch(0.907 0.048 28.7) |
фон / поверхность при наведении | 1.34:1 —/— | 15.66:1 AA/AAA |
red-200 |
--red-200 |
#ffb7ac |
hsl(8 100% 84%) |
oklch(0.844 0.086 28.7) |
рамки / разделители | 1.66:1 —/— | 12.62:1 AA/AAA |
red-300 |
--red-300 |
#ff9688 |
hsl(7 100% 77%) |
oklch(0.780 0.128 28.7) |
рамки / отключённые элементы | 2.11:1 —/— | 9.97:1 AA/AAA |
red-400 |
--red-400 |
#ff7161 |
hsl(6 100% 69%) |
oklch(0.717 0.177 28.7) |
второстепенный акцент / иконки на тёмном | 2.70:1 —/— | 7.79:1 AA/AAA |
red-500 |
--red-500 |
#ff3b30 |
hsl(3 100% 59%) |
oklch(0.654 0.232 28.7) |
основной акцент (опорный) | 3.55:1 —/— | 5.92:1 AA/— |
red-600 |
--red-600 |
#dc1312 |
hsl(0 85% 47%) |
oklch(0.567 0.225 28.7) |
акцент при наведении / насыщенный | 5.07:1 AA/— | 4.15:1 —/— |
red-700 |
--red-700 |
#b20004 |
hsl(359 100% 35%) |
oklch(0.480 0.197 28.7) |
акцентный текст на светлом фоне | 7.25:1 AA/AAA | 2.89:1 —/— |
red-800 |
--red-800 |
#880002 |
hsl(359 100% 27%) |
oklch(0.394 0.162 28.7) |
текст / сильный акцент | 10.26:1 AA/AAA | 2.05:1 —/— |
red-900 |
--red-900 |
#600001 |
hsl(359 100% 19%) |
oklch(0.307 0.126 28.7) |
текст с высоким контрастом | 14.02:1 AA/AAA | 1.50:1 —/— |
red-950 |
--red-950 |
#3b0000 |
hsl(0 100% 12%) |
oklch(0.220 0.091 28.7) |
почти чёрный текст / глубокий фон | 17.71:1 AA/AAA | 1.19:1 —/— |
orange
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
orange-50 |
--orange-50 |
#fff3e8 |
hsl(29 100% 95%) |
oklch(0.970 0.019 62.6) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.24:1 AA/AAA |
orange-100 |
--orange-100 |
#ffe1c8 |
hsl(27 100% 89%) |
oklch(0.929 0.047 62.6) |
фон / поверхность при наведении | 1.25:1 —/— | 16.86:1 AA/AAA |
orange-200 |
--orange-200 |
#ffd0a7 |
hsl(28 100% 83%) |
oklch(0.888 0.076 62.6) |
рамки / разделители | 1.42:1 —/— | 14.83:1 AA/AAA |
orange-300 |
--orange-300 |
#ffbd82 |
hsl(28 100% 75%) |
oklch(0.847 0.107 62.6) |
рамки / отключённые элементы | 1.63:1 —/— | 12.85:1 AA/AAA |
orange-400 |
--orange-400 |
#ffaa58 |
hsl(29 100% 67%) |
oklch(0.806 0.140 62.6) |
второстепенный акцент / иконки на тёмном | 1.88:1 —/— | 11.14:1 AA/AAA |
orange-500 |
--orange-500 |
#ff9500 |
hsl(35 100% 50%) |
oklch(0.765 0.175 62.6) |
основной акцент (опорный) | 2.20:1 —/— | 9.55:1 AA/AAA |
orange-600 |
--orange-600 |
#d07800 |
hsl(35 100% 41%) |
oklch(0.656 0.150 62.6) |
акцент при наведении / насыщенный | 3.30:1 —/— | 6.37:1 AA/— |
orange-700 |
--orange-700 |
#a35d00 |
hsl(34 100% 32%) |
oklch(0.547 0.125 62.6) |
акцентный текст на светлом фоне | 5.09:1 AA/— | 4.12:1 —/— |
orange-800 |
--orange-800 |
#784300 |
hsl(34 100% 24%) |
oklch(0.438 0.101 62.6) |
текст / сильный акцент | 8.07:1 AA/AAA | 2.60:1 —/— |
orange-900 |
--orange-900 |
#502b00 |
hsl(32 100% 16%) |
oklch(0.329 0.076 62.6) |
текст с высоким контрастом | 12.45:1 AA/AAA | 1.69:1 —/— |
orange-950 |
--orange-950 |
#2b1400 |
hsl(28 100% 8%) |
oklch(0.220 0.051 62.6) |
почти чёрный текст / глубокий фон | 17.46:1 AA/AAA | 1.20:1 —/— |
yellow
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
yellow-50 |
--yellow-50 |
#fbf5e0 |
hsl(47 77% 93%) |
oklch(0.970 0.029 95.0) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.24:1 AA/AAA |
yellow-100 |
--yellow-100 |
#faefc5 |
hsl(48 84% 88%) |
oklch(0.949 0.055 95.0) |
фон / поверхность при наведении | 1.15:1 —/— | 18.22:1 AA/AAA |
yellow-200 |
--yellow-200 |
#fbe79e |
hsl(47 92% 80%) |
oklch(0.928 0.094 95.0) |
рамки / разделители | 1.23:1 —/— | 17.03:1 AA/AAA |
yellow-300 |
--yellow-300 |
#fcdf71 |
hsl(47 96% 72%) |
oklch(0.907 0.133 95.0) |
рамки / отключённые элементы | 1.32:1 —/— | 15.93:1 AA/AAA |
yellow-400 |
--yellow-400 |
#fbd847 |
hsl(48 96% 63%) |
oklch(0.886 0.159 95.0) |
второстепенный акцент / иконки на тёмном | 1.40:1 —/— | 15.02:1 AA/AAA |
yellow-500 |
--yellow-500 |
#f4d038 |
hsl(49 90% 59%) |
oklch(0.865 0.163 95.0) |
основной акцент (опорный) | 1.51:1 —/— | 13.93:1 AA/AAA |
yellow-600 |
--yellow-600 |
#c8a700 |
hsl(50 100% 39%) |
oklch(0.736 0.151 95.0) |
акцент при наведении / насыщенный | 2.34:1 —/— | 8.98:1 AA/AAA |
yellow-700 |
--yellow-700 |
#9a8000 |
hsl(50 100% 30%) |
oklch(0.607 0.125 95.0) |
акцентный текст на светлом фоне | 3.84:1 —/— | 5.46:1 AA/— |
yellow-800 |
--yellow-800 |
#6f5c00 |
hsl(50 100% 22%) |
oklch(0.478 0.098 95.0) |
текст / сильный акцент | 6.55:1 AA/— | 3.21:1 —/— |
yellow-900 |
--yellow-900 |
#463900 |
hsl(49 100% 14%) |
oklch(0.349 0.072 95.0) |
текст с высоким контрастом | 11.38:1 AA/AAA | 1.85:1 —/— |
yellow-950 |
--yellow-950 |
#211a00 |
hsl(47 100% 6%) |
oklch(0.220 0.046 95.0) |
почти чёрный текст / глубокий фон | 17.32:1 AA/AAA | 1.21:1 —/— |
green
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
green-50 |
--green-50 |
#eff8ef |
hsl(120 39% 95%) |
oklch(0.970 0.015 145.5) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.34:1 AA/AAA |
green-100 |
--green-100 |
#b5f0bb |
hsl(126 66% 83%) |
oklch(0.901 0.094 147.4) |
фон / поверхность при наведении | 1.30:1 —/— | 16.15:1 AA/AAA |
green-200 |
--green-200 |
#6de682 |
hsl(130 71% 66%) |
oklch(0.832 0.176 147.4) |
рамки / разделители | 1.58:1 —/— | 13.29:1 AA/AAA |
green-300 |
--green-300 |
#3ad35f |
hsl(135 63% 53%) |
oklch(0.763 0.202 147.3) |
рамки / отключённые элементы | 1.97:1 —/— | 10.66:1 AA/AAA |
green-400 |
--green-400 |
#18bc4b |
hsl(139 77% 42%) |
oklch(0.695 0.199 147.3) |
второстепенный акцент / иконки на тёмном | 2.52:1 —/— | 8.33:1 AA/AAA |
green-500 |
--green-500 |
#00a43d |
hsl(142 100% 32%) |
oklch(0.626 0.184 147.3) |
основной акцент (опорный) | 3.29:1 —/— | 6.38:1 AA/— |
green-600 |
--green-600 |
#008731 |
hsl(142 100% 26%) |
oklch(0.543 0.160 147.4) |
акцент при наведении / насыщенный | 4.66:1 AA/— | 4.51:1 AA/— |
green-700 |
--green-700 |
#006c26 |
hsl(141 100% 21%) |
oklch(0.463 0.136 147.5) |
акцентный текст на светлом фоне | 6.62:1 AA/— | 3.17:1 —/— |
green-800 |
--green-800 |
#08511d |
hsl(137 82% 17%) |
oklch(0.381 0.107 147.4) |
текст / сильный акцент | 9.52:1 AA/AAA | 2.21:1 —/— |
green-900 |
--green-900 |
#103718 |
hsl(132 55% 14%) |
oklch(0.300 0.070 147.6) |
текст с высоким контрастом | 13.28:1 AA/AAA | 1.58:1 —/— |
green-950 |
--green-950 |
#0a200e |
hsl(131 52% 8%) |
oklch(0.220 0.045 147.8) |
почти чёрный текст / глубокий фон | 17.13:1 AA/AAA | 1.23:1 —/— |
mint
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
mint-50 |
--mint-50 |
#ecf8f6 |
hsl(170 46% 95%) |
oklch(0.970 0.013 185.1) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.32:1 AA/AAA |
mint-100 |
--mint-100 |
#a3f0e4 |
hsl(171 72% 79%) |
oklch(0.902 0.078 183.8) |
фон / поверхность при наведении | 1.30:1 —/— | 16.14:1 AA/AAA |
mint-200 |
--mint-200 |
#6ddfd0 |
hsl(172 64% 65%) |
oklch(0.833 0.107 184.1) |
рамки / разделители | 1.60:1 —/— | 13.12:1 AA/AAA |
mint-300 |
--mint-300 |
#3acbbb |
hsl(173 58% 51%) |
oklch(0.763 0.122 184.2) |
рамки / отключённые элементы | 2.01:1 —/— | 10.44:1 AA/AAA |
mint-400 |
--mint-400 |
#18b4a5 |
hsl(174 76% 40%) |
oklch(0.694 0.119 184.2) |
второстепенный акцент / иконки на тёмном | 2.59:1 —/— | 8.11:1 AA/AAA |
mint-500 |
--mint-500 |
#009d8f |
hsl(175 100% 31%) |
oklch(0.625 0.111 183.8) |
основной акцент (опорный) | 3.38:1 —/— | 6.22:1 AA/— |
mint-600 |
--mint-600 |
#008276 |
hsl(174 100% 25%) |
oklch(0.545 0.097 183.6) |
акцент при наведении / насыщенный | 4.71:1 AA/— | 4.45:1 —/— |
mint-700 |
--mint-700 |
#00675e |
hsl(175 100% 20%) |
oklch(0.462 0.082 184.5) |
акцентный текст на светлом фоне | 6.77:1 AA/— | 3.10:1 —/— |
mint-800 |
--mint-800 |
#084e47 |
hsl(174 81% 17%) |
oklch(0.383 0.065 184.2) |
текст / сильный акцент | 9.58:1 AA/AAA | 2.19:1 —/— |
mint-900 |
--mint-900 |
#103530 |
hsl(172 54% 14%) |
oklch(0.301 0.043 183.1) |
текст с высоким контрастом | 13.34:1 AA/AAA | 1.57:1 —/— |
mint-950 |
--mint-950 |
#0a1f1c |
hsl(171 51% 8%) |
oklch(0.221 0.028 183.3) |
почти чёрный текст / глубокий фон | 17.13:1 AA/AAA | 1.23:1 —/— |
teal
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
teal-50 |
--teal-50 |
#f1f6f8 |
hsl(197 33% 96%) |
oklch(0.970 0.006 223.5) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.28:1 AA/AAA |
teal-100 |
--teal-100 |
#c4e5ef |
hsl(194 57% 85%) |
oklch(0.901 0.037 218.0) |
фон / поверхность при наведении | 1.33:1 —/— | 15.80:1 AA/AAA |
teal-200 |
--teal-200 |
#7ed7f0 |
hsl(193 79% 72%) |
oklch(0.832 0.092 217.9) |
рамки / разделители | 1.63:1 —/— | 12.87:1 AA/AAA |
teal-300 |
--teal-300 |
#39c4e6 |
hsl(192 78% 56%) |
oklch(0.762 0.123 218.3) |
рамки / отключённые элементы | 2.06:1 —/— | 10.21:1 AA/AAA |
teal-400 |
--teal-400 |
#18aece |
hsl(191 79% 45%) |
oklch(0.694 0.121 217.8) |
второстепенный акцент / иконки на тёмном | 2.63:1 —/— | 7.98:1 AA/AAA |
teal-500 |
--teal-500 |
#0097b5 |
hsl(190 100% 35%) |
oklch(0.625 0.113 218.5) |
основной акцент (опорный) | 3.45:1 —/— | 6.09:1 AA/— |
teal-600 |
--teal-600 |
#007d96 |
hsl(190 100% 29%) |
oklch(0.544 0.098 218.3) |
акцент при наведении / насыщенный | 4.80:1 AA/— | 4.37:1 —/— |
teal-700 |
--teal-700 |
#006478 |
hsl(190 100% 24%) |
oklch(0.464 0.083 217.8) |
акцентный текст на светлом фоне | 6.79:1 AA/— | 3.09:1 —/— |
teal-800 |
--teal-800 |
#084b5a |
hsl(191 84% 19%) |
oklch(0.382 0.065 218.0) |
текст / сильный акцент | 9.70:1 AA/AAA | 2.16:1 —/— |
teal-900 |
--teal-900 |
#10333d |
hsl(193 58% 15%) |
oklch(0.301 0.043 219.9) |
текст с высоким контрастом | 13.44:1 AA/AAA | 1.56:1 —/— |
teal-950 |
--teal-950 |
#0a1e23 |
hsl(192 56% 9%) |
oklch(0.221 0.028 216.2) |
почти чёрный текст / глубокий фон | 17.17:1 AA/AAA | 1.22:1 —/— |
cyan
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
cyan-50 |
--cyan-50 |
#f2f6f8 |
hsl(200 30% 96%) |
oklch(0.971 0.005 228.8) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.31:1 AA/AAA |
cyan-100 |
--cyan-100 |
#cde2ef |
hsl(203 52% 87%) |
oklch(0.901 0.029 234.9) |
фон / поверхность при наведении | 1.34:1 —/— | 15.72:1 AA/AAA |
cyan-200 |
--cyan-200 |
#9ad0f0 |
hsl(202 74% 77%) |
oklch(0.831 0.072 234.8) |
рамки / разделители | 1.66:1 —/— | 12.65:1 AA/AAA |
cyan-300 |
--cyan-300 |
#4dbff8 |
hsl(200 92% 64%) |
oklch(0.763 0.130 234.1) |
рамки / отключённые элементы | 2.07:1 —/— | 10.12:1 AA/AAA |
cyan-400 |
--cyan-400 |
#17a9e6 |
hsl(198 82% 50%) |
oklch(0.693 0.141 234.2) |
второстепенный акцент / иконки на тёмном | 2.67:1 —/— | 7.85:1 AA/AAA |
cyan-500 |
--cyan-500 |
#0093ca |
hsl(196 100% 40%) |
oklch(0.625 0.131 234.0) |
основной акцент (опорный) | 3.48:1 —/— | 6.03:1 AA/— |
cyan-600 |
--cyan-600 |
#0079a7 |
hsl(197 100% 33%) |
oklch(0.543 0.114 234.0) |
акцент при наведении / насыщенный | 4.89:1 AA/— | 4.29:1 —/— |
cyan-700 |
--cyan-700 |
#006186 |
hsl(197 100% 26%) |
oklch(0.464 0.096 233.4) |
акцентный текст на светлом фоне | 6.88:1 AA/— | 3.05:1 —/— |
cyan-800 |
--cyan-800 |
#084965 |
hsl(198 85% 21%) |
oklch(0.383 0.076 233.8) |
текст / сильный акцент | 9.76:1 AA/AAA | 2.15:1 —/— |
cyan-900 |
--cyan-900 |
#0f3243 |
hsl(200 63% 16%) |
oklch(0.301 0.050 233.1) |
текст с высоким контрастом | 13.48:1 AA/AAA | 1.56:1 —/— |
cyan-950 |
--cyan-950 |
#091d27 |
hsl(200 63% 9%) |
oklch(0.220 0.032 232.6) |
почти чёрный текст / глубокий фон | 17.26:1 AA/AAA | 1.22:1 —/— |
blue
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
blue-50 |
--blue-50 |
#eff6ff |
hsl(214 100% 97%) |
oklch(0.970 0.014 257.4) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.30:1 AA/AAA |
blue-100 |
--blue-100 |
#c8dfff |
hsl(215 100% 89%) |
oklch(0.897 0.051 257.4) |
фон / поверхность при наведении | 1.36:1 —/— | 15.45:1 AA/AAA |
blue-200 |
--blue-200 |
#a1c7ff |
hsl(216 100% 82%) |
oklch(0.823 0.089 257.4) |
рамки / разделители | 1.73:1 —/— | 12.13:1 AA/AAA |
blue-300 |
--blue-300 |
#78afff |
hsl(216 100% 74%) |
oklch(0.750 0.130 257.4) |
рамки / отключённые элементы | 2.24:1 —/— | 9.37:1 AA/AAA |
blue-400 |
--blue-400 |
#4b96ff |
hsl(215 100% 65%) |
oklch(0.676 0.173 257.4) |
второстепенный акцент / иконки на тёмном | 2.96:1 —/— | 7.11:1 AA/AAA |
blue-500 |
--blue-500 |
#007aff |
hsl(211 100% 50%) |
oklch(0.603 0.218 257.4) |
основной акцент (опорный) | 4.02:1 —/— | 5.23:1 AA/— |
blue-600 |
--blue-600 |
#0065d5 |
hsl(212 100% 42%) |
oklch(0.526 0.190 257.4) |
акцент при наведении / насыщенный | 5.49:1 AA/— | 3.82:1 —/— |
blue-700 |
--blue-700 |
#0050ad |
hsl(212 100% 34%) |
oklch(0.450 0.163 257.4) |
акцентный текст на светлом фоне | 7.63:1 AA/AAA | 2.75:1 —/— |
blue-800 |
--blue-800 |
#003d86 |
hsl(213 100% 26%) |
oklch(0.373 0.135 257.4) |
текст / сильный акцент | 10.44:1 AA/AAA | 2.01:1 —/— |
blue-900 |
--blue-900 |
#002a61 |
hsl(214 100% 19%) |
oklch(0.297 0.108 257.4) |
текст с высоким контрастом | 13.96:1 AA/AAA | 1.50:1 —/— |
blue-950 |
--blue-950 |
#00183f |
hsl(217 100% 12%) |
oklch(0.220 0.081 257.4) |
почти чёрный текст / глубокий фон | 17.46:1 AA/AAA | 1.20:1 —/— |
indigo
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
indigo-50 |
--indigo-50 |
#f3f4ff |
hsl(235 100% 98%) |
oklch(0.970 0.014 278.3) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.20:1 AA/AAA |
indigo-100 |
--indigo-100 |
#cfd5ff |
hsl(232 100% 91%) |
oklch(0.882 0.058 278.3) |
фон / поверхность при наведении | 1.44:1 —/— | 14.61:1 AA/AAA |
indigo-200 |
--indigo-200 |
#acb5ff |
hsl(233 100% 84%) |
oklch(0.794 0.105 278.3) |
рамки / разделители | 1.94:1 —/— | 10.81:1 AA/AAA |
indigo-300 |
--indigo-300 |
#8b94ff |
hsl(235 100% 77%) |
oklch(0.706 0.156 278.3) |
рамки / отключённые элементы | 2.70:1 —/— | 7.78:1 AA/AAA |
indigo-400 |
--indigo-400 |
#7073f2 |
hsl(239 83% 69%) |
oklch(0.618 0.187 278.3) |
второстепенный акцент / иконки на тёмном | 3.87:1 —/— | 5.42:1 AA/— |
indigo-500 |
--indigo-500 |
#5856d6 |
hsl(241 61% 59%) |
oklch(0.529 0.191 278.3) |
основной акцент (опорный) | 5.65:1 AA/— | 3.72:1 —/— |
indigo-600 |
--indigo-600 |
#4944be |
hsl(242 48% 51%) |
oklch(0.468 0.185 278.3) |
акцент при наведении / насыщенный | 7.36:1 AA/AAA | 2.85:1 —/— |
indigo-700 |
--indigo-700 |
#3b34a0 |
hsl(244 51% 42%) |
oklch(0.406 0.168 278.3) |
акцентный текст на светлом фоне | 9.61:1 AA/AAA | 2.18:1 —/— |
indigo-800 |
--indigo-800 |
#2d287f |
hsl(243 52% 33%) |
oklch(0.344 0.141 278.3) |
текст / сильный акцент | 12.20:1 AA/AAA | 1.72:1 —/— |
indigo-900 |
--indigo-900 |
#201e5c |
hsl(242 51% 24%) |
oklch(0.282 0.107 278.3) |
текст с высоким контрастом | 14.98:1 AA/AAA | 1.40:1 —/— |
indigo-950 |
--indigo-950 |
#141242 |
hsl(243 57% 16%) |
oklch(0.220 0.088 278.3) |
почти чёрный текст / глубокий фон | 17.57:1 AA/AAA | 1.19:1 —/— |
purple
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
purple-50 |
--purple-50 |
#faf2ff |
hsl(277 100% 97%) |
oklch(0.970 0.020 312.4) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.21:1 AA/AAA |
purple-100 |
--purple-100 |
#edd1ff |
hsl(277 100% 91%) |
oklch(0.899 0.069 312.4) |
фон / поверхность при наведении | 1.38:1 —/— | 15.17:1 AA/AAA |
purple-200 |
--purple-200 |
#e1b0ff |
hsl(277 100% 85%) |
oklch(0.828 0.120 312.4) |
рамки / разделители | 1.77:1 —/— | 11.86:1 AA/AAA |
purple-300 |
--purple-300 |
#d58cff |
hsl(278 100% 77%) |
oklch(0.757 0.175 312.4) |
рамки / отключённые элементы | 2.33:1 —/— | 9.02:1 AA/AAA |
purple-400 |
--purple-400 |
#c56bf5 |
hsl(279 87% 69%) |
oklch(0.686 0.209 312.4) |
второстепенный акцент / иконки на тёмном | 3.09:1 —/— | 6.80:1 AA/— |
purple-500 |
--purple-500 |
#af52de |
hsl(280 68% 60%) |
oklch(0.615 0.213 312.4) |
основной акцент (опорный) | 4.13:1 —/— | 5.08:1 AA/— |
purple-600 |
--purple-600 |
#953ac1 |
hsl(280 54% 49%) |
oklch(0.536 0.206 312.4) |
акцент при наведении / насыщенный | 5.75:1 AA/— | 3.65:1 —/— |
purple-700 |
--purple-700 |
#7928a0 |
hsl(280 60% 39%) |
oklch(0.457 0.187 312.4) |
акцентный текст на светлом фоне | 8.00:1 AA/AAA | 2.62:1 —/— |
purple-800 |
--purple-800 |
#5d1b7c |
hsl(281 64% 30%) |
oklch(0.378 0.158 312.4) |
текст / сильный акцент | 10.98:1 AA/AAA | 1.91:1 —/— |
purple-900 |
--purple-900 |
#411357 |
hsl(281 64% 21%) |
oklch(0.299 0.119 312.4) |
текст с высоким контрастом | 14.43:1 AA/AAA | 1.46:1 —/— |
purple-950 |
--purple-950 |
#29053a |
hsl(281 84% 12%) |
oklch(0.220 0.098 312.4) |
почти чёрный текст / глубокий фон | 17.84:1 AA/AAA | 1.18:1 —/— |
pink
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
pink-50 |
--pink-50 |
#fff1f1 |
hsl(0 100% 97%) |
oklch(0.970 0.015 17.9) |
фон / приглушённая поверхность | 1.10:1 —/— | 19.10:1 AA/AAA |
pink-100 |
--pink-100 |
#ffd4d4 |
hsl(0 100% 92%) |
oklch(0.906 0.049 17.9) |
фон / поверхность при наведении | 1.34:1 —/— | 15.62:1 AA/AAA |
pink-200 |
--pink-200 |
#ffb5b6 |
hsl(359 100% 85%) |
oklch(0.842 0.087 17.9) |
рамки / разделители | 1.68:1 —/— | 12.54:1 AA/AAA |
pink-300 |
--pink-300 |
#ff9397 |
hsl(358 100% 79%) |
oklch(0.778 0.131 17.9) |
рамки / отключённые элементы | 2.13:1 —/— | 9.87:1 AA/AAA |
pink-400 |
--pink-400 |
#ff6b77 |
hsl(355 100% 71%) |
oklch(0.714 0.181 17.9) |
второстепенный акцент / иконки на тёмном | 2.76:1 —/— | 7.62:1 AA/AAA |
pink-500 |
--pink-500 |
#ff2d55 |
hsl(349 100% 59%) |
oklch(0.650 0.238 17.9) |
основной акцент (опорный) | 3.65:1 —/— | 5.76:1 AA/— |
pink-600 |
--pink-600 |
#da0040 |
hsl(342 100% 43%) |
oklch(0.564 0.226 17.9) |
акцент при наведении / насыщенный | 5.18:1 AA/— | 4.06:1 —/— |
pink-700 |
--pink-700 |
#af0031 |
hsl(343 100% 34%) |
oklch(0.478 0.192 17.9) |
акцентный текст на светлом фоне | 7.32:1 AA/AAA | 2.87:1 —/— |
pink-800 |
--pink-800 |
#860023 |
hsl(344 100% 26%) |
oklch(0.392 0.157 17.9) |
текст / сильный акцент | 10.30:1 AA/AAA | 2.04:1 —/— |
pink-900 |
--pink-900 |
#5e0016 |
hsl(346 100% 18%) |
oklch(0.306 0.123 17.9) |
текст с высоким контрастом | 14.12:1 AA/AAA | 1.49:1 —/— |
pink-950 |
--pink-950 |
#3a000a |
hsl(350 100% 11%) |
oklch(0.220 0.089 17.9) |
почти чёрный текст / глубокий фон | 17.73:1 AA/AAA | 1.18:1 —/— |
brown
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
brown-50 |
--brown-50 |
#faf4ed |
hsl(32 57% 95%) |
oklch(0.970 0.012 72.8) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.23:1 AA/AAA |
brown-100 |
--brown-100 |
#e8ddcf |
hsl(34 35% 86%) |
oklch(0.902 0.022 72.8) |
фон / поверхность при наведении | 1.34:1 —/— | 15.67:1 AA/AAA |
brown-200 |
--brown-200 |
#d8c6af |
hsl(34 34% 77%) |
oklch(0.835 0.037 72.8) |
рамки / разделители | 1.66:1 —/— | 12.62:1 AA/AAA |
brown-300 |
--brown-300 |
#c8af8f |
hsl(34 34% 67%) |
oklch(0.767 0.053 72.8) |
рамки / отключённые элементы | 2.10:1 —/— | 9.98:1 AA/AAA |
brown-400 |
--brown-400 |
#b79973 |
hsl(34 32% 58%) |
oklch(0.700 0.063 72.8) |
второстепенный акцент / иконки на тёмном | 2.69:1 —/— | 7.82:1 AA/AAA |
brown-500 |
--brown-500 |
#a2845e |
hsl(34 27% 50%) |
oklch(0.632 0.064 72.8) |
основной акцент (опорный) | 3.50:1 —/— | 6.00:1 AA/— |
brown-600 |
--brown-600 |
#886c48 |
hsl(34 31% 41%) |
oklch(0.550 0.062 72.8) |
акцент при наведении / насыщенный | 4.90:1 AA/— | 4.29:1 —/— |
brown-700 |
--brown-700 |
#6e5535 |
hsl(34 35% 32%) |
oklch(0.467 0.057 72.8) |
акцентный текст на светлом фоне | 6.97:1 AA/— | 3.01:1 —/— |
brown-800 |
--brown-800 |
#534026 |
hsl(35 37% 24%) |
oklch(0.385 0.048 72.8) |
текст / сильный акцент | 9.86:1 AA/AAA | 2.13:1 —/— |
brown-900 |
--brown-900 |
#3a2c1a |
hsl(34 38% 16%) |
oklch(0.302 0.036 72.8) |
текст с высоким контрастом | 13.50:1 AA/AAA | 1.56:1 —/— |
brown-950 |
--brown-950 |
#23180a |
hsl(34 56% 9%) |
oklch(0.220 0.030 72.8) |
почти чёрный текст / глубокий фон | 17.41:1 AA/AAA | 1.21:1 —/— |
gray
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
gray-50 |
--gray-50 |
#f5f5f8 |
hsl(240 18% 97%) |
oklch(0.970 0.004 286.2) |
фон / приглушённая поверхность | 1.09:1 —/— | 19.30:1 AA/AAA |
gray-100 |
--gray-100 |
#dfdfe2 |
hsl(240 5% 88%) |
oklch(0.906 0.004 286.2) |
фон / поверхность при наведении | 1.33:1 —/— | 15.79:1 AA/AAA |
gray-200 |
--gray-200 |
#cacace |
hsl(240 4% 80%) |
oklch(0.841 0.005 286.2) |
рамки / разделители | 1.63:1 —/— | 12.85:1 AA/AAA |
gray-300 |
--gray-300 |
#b6b6ba |
hsl(240 3% 72%) |
oklch(0.777 0.006 286.2) |
рамки / отключённые элементы | 2.02:1 —/— | 10.39:1 AA/AAA |
gray-400 |
--gray-400 |
#a2a2a6 |
hsl(240 2% 64%) |
oklch(0.713 0.006 286.2) |
второстепенный акцент / иконки на тёмном | 2.54:1 —/— | 8.26:1 AA/AAA |
gray-500 |
--gray-500 |
#8e8e92 |
hsl(240 2% 56%) |
oklch(0.648 0.006 286.2) |
основной акцент (опорный) | 3.26:1 —/— | 6.43:1 AA/— |
gray-600 |
--gray-600 |
#757579 |
hsl(240 2% 47%) |
oklch(0.563 0.006 286.2) |
акцент при наведении / насыщенный | 4.59:1 AA/— | 4.58:1 AA/— |
gray-700 |
--gray-700 |
#5c5c60 |
hsl(240 2% 37%) |
oklch(0.477 0.006 286.2) |
акцентный текст на светлом фоне | 6.66:1 AA/— | 3.15:1 —/— |
gray-800 |
--gray-800 |
#454548 |
hsl(240 2% 28%) |
oklch(0.391 0.006 286.2) |
текст / сильный акцент | 9.55:1 AA/AAA | 2.20:1 —/— |
gray-900 |
--gray-900 |
#2f2f32 |
hsl(240 3% 19%) |
oklch(0.306 0.006 286.2) |
текст с высоким контрастом | 13.35:1 AA/AAA | 1.57:1 —/— |
gray-950 |
--gray-950 |
#1a1a1d |
hsl(240 5% 11%) |
oklch(0.220 0.006 286.2) |
почти чёрный текст / глубокий фон | 17.36:1 AA/AAA | 1.21:1 —/— |
white
Одно значение, а не шкала. Страница, карточки и панели в светлой теме — white.
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
white |
--white |
#ffffff |
hsl(0 0% 100%) |
oklch(1.000 0 0) |
чистый белый для поверхностей / точка отсчёта | 1.00:1 —/— | 21.00:1 AA/AAA |
gray-50 — чуть холодный почти белый для приглушённых поверхностей, например surface/subtle.
black
Одно значение, а не шкала. Это цвет текста на светлых насыщенных заливках, например на fill/warning и на акцентной заливке основного цвета orange.
| Токен | CSS-переменная | hex | hsl | oklch | Для чего | к белому | к чёрному |
|---|---|---|---|---|---|---|---|
black |
--black |
#000000 |
hsl(0 0% 0%) |
oklch(0.000 0 0) |
чистый чёрный для текста на заливке / точка отсчёта | 21.00:1 AA/AAA | 1.00:1 —/— |
gray-950 — чуть холодный почти чёрный для текста и глубоких фонов.
Прозрачность
Шкалы прозрачности в Thykes нет. Отключённый вид, оттенки наведения и затемнение задают цветовые токены.
- Отключённый элемент: берите цветовые токены
*/disabled, а неopacity. Так контраст остаётся под контролем. - Наведение, нажатие, выбор: слои
state/*. - Затемнение под диалогом:
surface/backdrop.
Все три описаны в руководстве
Значения
| Токен | CSS-переменная | Значение | Для чего |
|---|---|---|---|
opacity-icon-duotone-body |
--opacity-icon-duotone-body |
0.12 | ни один компонент Thykes его не использует |