/* tokens.css — from pseo-design-tokens.md. Do not hardcode colors/sizes elsewhere. */
:root {
  --c-neutral-0:   hsl(0 0% 100%);
  --c-neutral-50:  hsl(220 14% 98%);
  --c-neutral-100: hsl(220 13% 95%);
  --c-neutral-200: hsl(220 13% 90%);
  --c-neutral-300: hsl(220 12% 82%);
  --c-neutral-400: hsl(220 10% 65%);
  --c-neutral-500: hsl(220 10% 50%);
  --c-neutral-600: hsl(220 12% 38%);
  --c-neutral-700: hsl(220 15% 25%);
  --c-neutral-800: hsl(220 18% 15%);
  --c-neutral-900: hsl(220 20% 10%);

  /* Акцент — бренд-уровень, один на весь сайт (design-code §12.2).
     Оранжевый: язык промышленной маркировки — рабочий элемент,
     действие, опасная зона. Синий на сайте по гидроизоляции читается
     как вода и обесценивается (§2, разрешение конфликта референсов).
     Вертикали этот hue НЕ переопределяют. */
  --c-accent-h: 24;
  --c-accent-s: 90%;
  --c-accent-l: 48%;
  --c-accent-400: hsl(var(--c-accent-h) var(--c-accent-s) 58%);
  --c-accent-500: hsl(var(--c-accent-h) var(--c-accent-s) var(--c-accent-l));
  --c-accent-600: hsl(var(--c-accent-h) var(--c-accent-s) 36%);
  --c-accent-700: hsl(var(--c-accent-h) var(--c-accent-s) 28%);
  --c-accent-bg:  hsl(var(--c-accent-h) var(--c-accent-s) 97%);

  /* Роли, а не шаги шкалы. Значения самой нейтральной шкалы не меняются;
     меняется только то, на какой шаг роль указывает. Ступень выбрана по
     контрасту: neutral-500 на белом даёт 4.25:1 и не проходит WCAG AA
     для текста, neutral-600 даёт 7:1. */
  --color-fg:        var(--c-neutral-800);
  --color-fg-muted:  var(--c-neutral-600);
  --color-fg-subtle: var(--c-neutral-500);
  --color-bg:        var(--c-neutral-0);
  --color-bg-elev:   var(--c-neutral-50);
  --color-bg-sunken: var(--c-neutral-100);
  --color-border:    var(--c-neutral-200);
  --color-border-strong: var(--c-neutral-300);
  --color-accent:    var(--c-accent-500);
  /* Тёмный текст на акценте: белый на оранжевом даёт 3.34:1.
     Чёрным по оранжевому — язык промышленной маркировки. */
  --color-accent-fg: var(--c-neutral-900);
  /* Акцент в роли текста, а не заливки: 500 на белом не проходит AA. */
  --color-accent-strong: var(--c-accent-600);
  --color-link:      var(--c-accent-600);
  --color-link-hover: var(--c-accent-700);

  /* Inverted surfaces: dark footer, spec table header. */
  --color-surface-dark:     var(--c-neutral-900);
  --color-fg-on-dark:       var(--c-neutral-100);
  --color-fg-on-dark-muted: var(--c-neutral-400);
  --color-border-on-dark:   var(--c-neutral-700);

  /* Одна наборная гарнитура на весь сайт + моноширинная для цифр
     (design-code р.4). Inter первым словом стека — подключается локальным
     woff2 в static/fonts/ по отдельному решению; до этого работает
     системная база, порядок стека менять не требуется. */
  --font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-heading: var(--font-body);
  --font-mono: ui-monospace, "Cascadia Mono", "Segoe UI Mono", "SF Mono", Menlo, Consolas, monospace;

  --fs-xs: 0.75rem;  --fs-sm: 0.875rem; --fs-base: 1rem;
  --fs-md: 1.125rem; --fs-lg: 1.25rem;  --fs-xl: 1.5rem;
  --fs-2xl: 1.875rem; --fs-3xl: 2.25rem; --fs-4xl: 2.75rem;
  /* Основной текст с 720px. Сайт текстовый: 17px читается заметно
     легче 16px на длинных полотнах (design-code р.5). */
  --fs-base-lg: 1.0625rem;

  --lh-none: 1.1; --lh-tight: 1.2; --lh-normal: 1.5; --lh-relaxed: 1.7;
  --fw-regular: 400; --fw-medium: 500; --fw-semibold: 600; --fw-bold: 700;
  --tracking-tight: -0.01em; --tracking-wide: 0.04em; --tracking-wider: 0.08em;

  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem;
  --space-4: 1rem;    --space-5: 1.5rem; --space-6: 2rem;
  --space-7: 3rem;    --space-8: 4rem;

  /* Чем интерактивнее элемент, тем круглее: md — контролы, sm —
     поверхности, 0 — полосы во всю ширину (design-code р.6). */
  --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px;
  --shadow-sm: 0 1px 2px hsl(220 15% 20% / 0.05);

  /* Глубина строится границами, не тенями. Три толщины, больше нет. */
  --border-hairline: 1px;
  --border-regular: 2px;
  --border-thick: 4px;
  --focus-ring: 2px;
  --focus-offset: 2px;

  --container-max: 1200px;
  --container-narrow: 768px;
  --prose-measure: 68ch;

  /* Восемь токенов решения от 11.08.2026 (design-code §10.1).
     Колонка «Значение» в §10.1 была техзаданием на эту правку —
     после неё значения живут здесь, канон на них ссылается. */
  --c-neutral-h: 220;
  --c-rule-width: 40px;
  --c-icon-sm: 16px;
  --c-icon-md: 20px;
  --c-icon-lg: 24px;
  --c-icon-stroke: 2px;
  --c-press-offset: 1px;
  --c-accent-pressed: var(--c-accent-600);

  /* Минимальная тап-зона. Инлайновый <a> с padding-block не растит бокс:
     пункт навигации выходил 19px на всех страницах (аудит GT-DESIGN-03). */
  --c-tap-min: 44px;

  /* Тёмного варианта у системы нет и не должно быть: канон §3 держит
     белое полотно, тонированный фон запрещён. */
  color-scheme: light;
}
