{
  "$description": "Токены СИГМАКОД 1.0. Формат W3C Design Tokens (DTCG). Источник правды: tokens.css собирается из этого файла скриптом tools/build-tokens.py. Правки вносим только сюда.",
  "color": {
    "$type": "color",
    "brand": {
      "$description": "Триада. Три цвета равноправны: в графике их можно ставить в любую пару. Роли в интерфейсе — см. color.role.",
      "red": { "$value": "#FF3927", "$description": "Фирменный красный. Точка логотипа, геометрия, крупные акценты. Белый текст на нём — только от 24 px." },
      "mint": { "$value": "#A0EFD0", "$description": "Фирменный мятный. Геометрия, фон выделенной строки, фон блока. Текст на нём — только тёмный." },
      "blue": { "$value": "#91D2F1", "$description": "Фирменный голубой. Геометрия, фон блока, информационные плашки. Текст на нём — только тёмный." }
    },
    "red": {
      "50":  { "$value": "#FFF1EE" },
      "100": { "$value": "#FFE3DE" },
      "500": { "$value": "{color.brand.red}" },
      "600": { "$value": "#D62D20", "$description": "Кнопки и красный текст. Белый на нём 4.93:1, он на бумаге 4.71:1." },
      "700": { "$value": "#B3241A", "$description": "Наведение и нажатие кнопки." }
    },
    "mint": {
      "50":  { "$value": "#EAFBF3" },
      "100": { "$value": "#D7F7E9" },
      "300": { "$value": "{color.brand.mint}" },
      "600": { "$value": "#1F8A64", "$description": "Иконки и графика на бумаге (4.11:1). Для текста — 700." },
      "700": { "$value": "#0F6E50", "$description": "Мятный текст на бумаге, 5.96:1." }
    },
    "blue": {
      "50":  { "$value": "#EEF8FD" },
      "100": { "$value": "#DDF1FB" },
      "200": { "$value": "#ADE6FC" },
      "300": { "$value": "{color.brand.blue}" },
      "600": { "$value": "#1C7AAE", "$description": "Иконки и графика на бумаге, 4.51:1." },
      "700": { "$value": "#0E5E86", "$description": "Голубой текст на бумаге, 6.77:1." }
    },
    "neutral": {
      "$description": "Графит с лёгким зелёным оттенком. Заменяет #333, #484b48, #555, #666, #6b6b6b, #777 и прочие серые лендинга.",
      "white": { "$value": "#FFFFFF" },
      "paper": { "$value": "#F9FAF8", "$description": "Бумага. Основной фон всех носителей." },
      "50":  { "$value": "#F1F3F0" },
      "100": { "$value": "#E4E7E3" },
      "200": { "$value": "#C9CDCB", "$description": "Линейки и рамки." },
      "300": { "$value": "#A9AEAB" },
      "400": { "$value": "#858A87", "$description": "Неактивные элементы. Не для важного текста: 3.35:1." },
      "500": { "$value": "#6A6F6C", "$description": "Подписи и источники, 4.89:1." },
      "600": { "$value": "#545855", "$description": "Второстепенный текст, 6.91:1." },
      "700": { "$value": "#3A3D3B" },
      "800": { "$value": "#232725" },
      "900": { "$value": "#171B19", "$description": "Тёмная плашка: обложка кейса, слайд-разделитель." },
      "ink": { "$value": "#080909", "$description": "Тушь. Основной текст, 19.04:1 на бумаге." }
    },
    "status": {
      "success":    { "$value": "{color.mint.700}" },
      "success-bg": { "$value": "{color.mint.100}" },
      "info":       { "$value": "{color.blue.700}" },
      "info-bg":    { "$value": "{color.blue.100}" },
      "warning":    { "$value": "#9A6200", "$description": "4.87:1 на бумаге." },
      "warning-bg": { "$value": "#FFF1D6" },
      "error":      { "$value": "{color.red.700}", "$description": "red-700: 5,9 : 1 на red-50 и 6,3 : 1 на бумаге. red-600 на red-50 даёт только 4,48." },
      "error-bg":   { "$value": "{color.red.50}" }
    },
    "role": {
      "$description": "Семантика. В коде используем только эти токены, палитру — через них.",
      "bg":              { "$value": "{color.neutral.paper}" },
      "bg-subtle":       { "$value": "{color.neutral.50}" },
      "bg-inverse":      { "$value": "{color.neutral.900}" },
      "surface":         { "$value": "{color.neutral.white}", "$description": "Поля ввода, всплывающие окна." },
      "text":            { "$value": "{color.neutral.ink}" },
      "text-secondary":  { "$value": "{color.neutral.600}" },
      "text-tertiary":   { "$value": "{color.neutral.500}" },
      "text-disabled":   { "$value": "{color.neutral.400}" },
      "text-inverse":    { "$value": "{color.neutral.paper}" },
      "text-accent":     { "$value": "{color.red.600}" },
      "border":          { "$value": "{color.neutral.200}" },
      "border-strong":   { "$value": "{color.neutral.ink}" },
      "action":          { "$value": "{color.red.600}", "$description": "Главное действие. Одна красная кнопка на экран." },
      "action-hover":    { "$value": "{color.red.700}" },
      "on-action":       { "$value": "{color.neutral.white}" },
      "highlight":       { "$value": "{color.brand.mint}", "$description": "Выделенная строка, активный пункт, выбранное." },
      "highlight-soft":  { "$value": "{color.mint.100}", "$description": "Наведение на строку и кнопку на цветном фоне." },
      "info-surface":    { "$value": "{color.brand.blue}", "$description": "Информационный блок, фон формы." },
      "info-surface-soft": { "$value": "{color.blue.100}" },
      "focus":           { "$value": "{color.red.600}" },
      "selection":       { "$value": "{color.brand.mint}" }
    }
  },
  "font": {
    "family": {
      "$type": "fontFamily",
      "display": { "$value": ["Oswald", "Arial Narrow", "sans-serif"], "$description": "Только прописные и цифры, только Bold. Без scaleX и других искажений." },
      "text":    { "$value": ["Manrope", "Arial", "sans-serif"], "$description": "Всё остальное. Вариативный файл: начертания 200–800, в системе используем 400 и 600." },
      "mono":    { "$value": ["ui-monospace", "SFMono-Regular", "Menlo", "Consolas", "monospace"], "$description": "Только примеры кода в документации. Системный, не загружается." }
    },
    "weight": {
      "$type": "fontWeight",
      "regular":  { "$value": 400 },
      "semibold": { "$value": 600, "$description": "Названия карточек и строк, метки, акцент в тексте." },
      "display":  { "$value": 700, "$description": "Только Oswald." }
    }
  },
  "size": {
    "$type": "dimension",
    "$description": "Пять кеглей — вся шкала. min — экран 375 px, max — от 1440 px. Для постов и сторис (смотрят уменьшенными) значения ×2, для печати — те же числа ×0,5 в пунктах.",
    "xl": { "$value": { "min": 56, "max": 144 }, "$description": "Oswald. Первый экран, обложка, главная цифра." },
    "l":  { "$value": { "min": 40, "max": 72 },  "$description": "Oswald. Номера разделов и шагов, показатели, финальный призыв." },
    "m":  { "$value": { "min": 28, "max": 40 },  "$description": "Manrope. Заголовок страницы и секции, название кейса." },
    "s":  { "$value": { "min": 16, "max": 18 },  "$description": "Manrope. Текст, подводка, кнопки, поля; 600 — названия карточек и строк." },
    "xs": { "$value": { "min": 14, "max": 14 },  "$description": "Manrope. Подписи, источники, метки, мелкий юридический текст." }
  },
  "typography": {
    "$type": "typography",
    "$description": "Роли набора. Все используют только пять кеглей из size.",
    "display":      { "$value": { "fontFamily": "{font.family.display}", "fontWeight": 700, "size": "xl", "lineHeight": 1,    "letterSpacing": "-0.01em", "textTransform": "uppercase" }, "$description": "Заголовок первого экрана и обложки; главная цифра («58») — тем же кеглем." },
    "display-s":    { "$value": { "fontFamily": "{font.family.display}", "fontWeight": 700, "size": "l",  "lineHeight": 1,    "letterSpacing": "0",       "textTransform": "uppercase" }, "$description": "Номера 01–04, показатели, финальный призыв." },
    "heading":      { "$value": { "fontFamily": "{font.family.text}",    "fontWeight": 400, "size": "m",  "lineHeight": 1.1,  "letterSpacing": "-0.03em" }, "$description": "Заголовок." },
    "body":         { "$value": { "fontFamily": "{font.family.text}",    "fontWeight": 400, "size": "s",  "lineHeight": 1.55, "letterSpacing": "0" }, "$description": "Текст, подводка, кнопки." },
    "body-strong":  { "$value": { "fontFamily": "{font.family.text}",    "fontWeight": 600, "size": "s",  "lineHeight": 1.35, "letterSpacing": "-0.01em" }, "$description": "Название карточки, строки, этапа." },
    "small":        { "$value": { "fontFamily": "{font.family.text}",    "fontWeight": 400, "size": "xs", "lineHeight": 1.45, "letterSpacing": "0" }, "$description": "Подписи, источники, даты." },
    "label":        { "$value": { "fontFamily": "{font.family.text}",    "fontWeight": 600, "size": "xs", "lineHeight": 1.3,  "letterSpacing": "0.06em", "textTransform": "uppercase" }, "$description": "Метка отрасли: TRAVELTECH. Не больше трёх слов." }
  },
  "space": {
    "$type": "dimension",
    "$description": "Шаг 4 px. В макетах используем только эти значения.",
    "0":  { "$value": "0px" },
    "1":  { "$value": "4px" },
    "2":  { "$value": "8px" },
    "3":  { "$value": "12px" },
    "4":  { "$value": "16px" },
    "5":  { "$value": "20px" },
    "6":  { "$value": "24px" },
    "8":  { "$value": "32px" },
    "10": { "$value": "40px" },
    "12": { "$value": "48px" },
    "16": { "$value": "64px" },
    "20": { "$value": "80px" },
    "24": { "$value": "96px" },
    "32": { "$value": "128px" },
    "40": { "$value": "160px" }
  },
  "layout": {
    "$type": "dimension",
    "max-width":   { "$value": "1760px", "$description": "Ширина контента. Фоны и геометрия — на всю ширину окна." },
    "margin":      { "$value": { "min": "20px", "max": "80px" }, "$description": "Поле страницы: 20 px на экране 375, 80 px от 1440." },
    "gutter":      { "$value": { "mobile": "16px", "tablet": "20px", "desktop": "24px" } },
    "columns":     { "$value": { "mobile": 4, "tablet": 8, "desktop": 12 } },
    "section-y":   { "$value": { "min": "48px", "max": "120px" }, "$description": "Вертикальный отступ секции." },
    "measure":     { "$value": "64ch", "$description": "Максимальная длина строки текста." },
    "breakpoint":  { "$value": { "tablet": "700px", "desktop": "1100px", "wide": "1440px" } }
  },
  "border": {
    "width": {
      "$type": "dimension",
      "hairline": { "$value": "1px", "$description": "Линейки между блоками, рамки полей." },
      "strong":   { "$value": "2px", "$description": "Фокус, активное поле." },
      "accent":   { "$value": "0.045em", "$description": "Красная черта под главной цифрой, от кегля цифры." }
    }
  },
  "radius": {
    "$type": "dimension",
    "none": { "$value": "0px", "$description": "Всё: кнопки, поля, карточки, плашки, изображения, геометрия." },
    "full": { "$value": "9999px", "$description": "Только круглая кнопка виджета мессенджеров и аватары в соцсетях." }
  },
  "shadow": {
    "$type": "shadow",
    "none":    { "$value": "none" },
    "overlay": { "$value": { "offsetX": "0px", "offsetY": "16px", "blur": "40px", "spread": "0px", "color": "#0809092E" }, "$description": "Единственная тень: то, что лежит поверх страницы (виджет, всплывающая форма)." }
  },
  "motion": {
    "duration": {
      "$type": "duration",
      "fast": { "$value": "120ms", "$description": "Цвет фона кнопки." },
      "base": { "$value": "180ms", "$description": "Сдвиг стрелки, раскрытие виджета." },
      "slow": { "$value": "320ms", "$description": "Появление формы, аккордеон." }
    },
    "easing": {
      "$type": "cubicBezier",
      "out":      { "$value": [0.16, 1, 0.3, 1], "$description": "Всё, что появляется или сдвигается." },
      "standard": { "$value": [0.2, 0, 0, 1] }
    },
    "arrow-shift": { "$type": "dimension", "$value": "4px", "$description": "Стрелка сдвигается вправо при наведении и фокусе." }
  },
  "geometry": {
    "angle":      { "$type": "number", "$value": 27, "$description": "Главный угол косых плоскостей: пологий край, в градусах от горизонтали." },
    "angle-alt":  { "$type": "number", "$value": 63, "$description": "Крутой край: 90 − 27. Других углов у косых краёв нет." }
  },
  "dimension": {
    "$type": "dimension",
    "icon":      { "$value": { "s": "16px", "m": "20px", "l": "24px" } },
    "icon-stroke": { "$value": "1.5px", "$description": "Толщина линии иконки на сетке 24." },
    "control":   { "$value": { "s": "44px", "m": "52px", "l": "60px" }, "$description": "Высота кнопок и полей. Меньше 44 px не бывает." },
    "logo-min":  { "$value": { "screen": "80px", "print": "20mm" }, "$description": "Минимальная ширина логотипа." }
  },
  "z": {
    "$type": "number",
    "header": { "$value": 100 },
    "widget": { "$value": 200 },
    "modal":  { "$value": 300 },
    "toast":  { "$value": 400 }
  }
}
