/* ============================================================
   Токены Openhouse — белая бумага с терракотой.

   Единственное место в проекте, где стоят настоящие значения
   цвета, шрифта и размера. Ни одного цвета вне этого файла:
   правило перенесено из Warm Lens.

   Проверять контраст: scripts/contrast --tokens
   ============================================================ */

:root {
  /* ---- цвет ---- */
  /*
   * Четвёртая палитра, и выбрана владельцем 01.10.2026 из трёх показанных
   * на живом коде (белая бумага с синими чернилами, холодный камень с
   * петролем, эта). Прежние три отпали так:
   *
   * Тёмно-сливовая с малиной приехала из Shelfready вместе с заготовкой.
   * Кремовая с зелёным была взята у Apex — и оказалась палитрой **Paperrow**:
   * тот стоит на том же шаблоне, и его `#F2F1EA`, `#19201A`, `#5C635D`
   * совпадали с нашими до цифры. Ночной синий с янтарём прожил день и был
   * сменён по решению владельца: светлое лицо.
   *
   * Отсюда правило, записанное тогда же: **прежде чем брать палитру,
   * посмотреть, что уже занято соседями.** Зелёный акцент занят тремя
   * проектами из пяти, малиновый — Shelfready. Терракота не занята никем:
   * проверено чтением `tokens.css` у Paperrow и Shelfready 01.10.2026,
   * у остальных своей палитры в коде нет.
   *
   * ## Чем за светлое лицо платим, и это надо помнить
   *
   * Товар здесь — фотография светлой комнаты. На тёмной странице такой
   * снимок **светится**: страница работает рамой. На белой он сидит ровно —
   * страница с ним не спорит, но и не помогает. Поэтому бумага здесь не
   * чисто белая (`#FCFBFA`), а кадры лежат на `--c-sunk`, который темнее
   * фона: снимку оставлен хоть небольшой борт.
   *
   * Кремовой бумаги среди вариантов не было вовсе — она занята Paperrow.
   */
  --c-bg:        #FCFBFA;   /* бумага: фон страницы */
  --c-surface:   #FFFFFF;   /* карточка, поле, панель */
  --c-raised:    #F0EDEA;   /* приподнятое: наведение, чередование, выбранное */
  --c-sunk:      #EBE7E3;   /* утопленное: подложка под кадром */
  --c-text:      #1A1715;   /* основной текст — 17,26 : 1 на бумаге */
  --c-muted:     #5A5450;   /* подписи, размеры, второстепенное — 7,21 : 1 */

  /*
   * Полоса — тёмная вставка, а не светлая.
   *
   * На ночном лице всё было наоборот: страница тёмная, и выделяла светлая
   * полоса. Здесь страница светлая, значит выделяет тёмная. Имя токена не
   * меняется — меняется, что считать фоном, а что вставкой.
   */
  --c-band:      #1A1715;
  --c-band-in:   #F5F2EF;   /* текст внутри тёмной полосы: 15,99 : 1 */

  /*
   * Терракота — в двух оттенках, и это плата за светлый фон.
   *
   * На ночном лице янтарь был один: он читался и заливкой, и текстом. На
   * светлой бумаге так не выходит никогда — яркий цвет упирается в
   * собственную светлоту, и для текста его приходится затемнять. Поэтому
   * заливка `#B4472A` (белый текст поверх, 5,42 : 1), а текст — `#9C3A20`
   * (6,68 : 1 на бумаге).
   */
  --c-accent:      #B4472A;
  --c-accent-in:   #FFFFFF;
  --c-accent-text: #9C3A20;

  /* На тёмной полосе терракота глуха — там она светлее. */
  --c-accent-on-band: #E08161;

  /*
   * Тёплая полоса — для выделенного, а не для разделов.
   *
   * `--c-band` чернильная: ею набраны подвал и полоса призыва, то есть целые
   * разделы, которые должны отбиваться от бумаги голосом. Выделенное внутри
   * раздела — одно число на листе 05, одна строка в тарифах — чернильной
   * плитой выглядело самым тёмным пятном листа и ни с чем не рифмовалось.
   *
   * Почему **глубокая** терракота, а не та же, что у кнопки. Кнопочная
   * `#B4472A` светла: белый на ней даёт 5,42, и это потолок — любой
   * приглушённый оттенок сразу проваливается ниже 4,5, а приглушённый на
   * полосе нужен: в строке тарифа четыре уровня текста. Посчитано для пяти
   * оттенков, `#8E3520` — первый, на котором сходятся все три:
   * белый 7,84, приглушённый 4,84, акцент на скидке 5,24.
   */
  --c-band-warm:    #8E3520;
  --c-band-warm-in: #FFFFFF;

  /* Скидка внутри тёплой полосы: песочный, единственный светлый, который на
     ней и читается, и отличим от белого текста рядом. */
  --c-accent-on-warm: #F6CC9D;

  --c-ok:        #1E7F52;

  /*
   * Ошибка — малиновая, а не кирпичная, и это вынужденный выбор.
   *
   * Прежний `#A8332A` отличался от терракоты на двадцать единиц зелёного:
   * на ночном фоне этого хватало, на белой бумаге сообщение об ошибке
   * читалось как ещё одна фирменная надпись. Малиновый холоднее акцента на
   * всю разницу синего и зелёного, и спутать их нельзя.
   */
  --c-error:     #9B1C34;

  /* производные — считаются от основных, отдельной правды не заводят */

  /*
   * Цвет краёв: темнее фона, как и положено на светлом.
   *
   * Формула не менялась при смене лица, и это не везение, а то, ради чего
   * она написана через `color-mix` от `--c-text`: на тёмной странице она
   * давала светлый край, на светлой даёт тёмный. Подмешана терракота, а не
   * чистый серый: рамка родственна собственному цвету страницы.
   *
   * Доли уменьшены против ночных (было 24 и 13): тёмная черта на белом
   * видна гораздо сильнее светлой на тёмном при той же прозрачности.
   */
  --c-edge:      color-mix(in srgb, var(--c-text) 78%, var(--c-accent));
  --c-line:      color-mix(in srgb, var(--c-edge) 16%, transparent);
  --c-line-soft: color-mix(in srgb, var(--c-edge) 9%, transparent);
  /*
   * Наведение — налёт акцента, а не приподнятый фон.
   *
   * Было `var(--c-raised)`. На ночном лице приподнятый тон был чуть светлее
   * фона и работал подсветкой; на белой бумаге он же даёт серый прямоугольник,
   * который тяжелее всего остального на странице.
   *
   * Пять процентов — на грани заметности, и это нарочно: наведение обязано
   * подтвердить, что строка живая, а не перекрасить её.
   */
  --c-hover:     color-mix(in srgb, var(--c-accent) 5%, transparent);
  --c-focus:     var(--c-accent);

  /* ---- шрифт ---- */
  /* Файлы лежат в assets/fonts своими woff2. С сервера Google ничего
     не тянем: он получает адрес каждого посетителя. */
  --f-display: "Space Grotesk", "Helvetica Neue", Arial, sans-serif;   /* заголовки */
  --f-body:    "DM Sans", -apple-system, "Segoe UI", sans-serif;
  --f-mono:    "Space Grotesk", ui-monospace, Menlo, monospace;  /* номера, подписи в разрядку */

  /*
   * Курсивная засечка — единственное украшение этого лица.
   *
   * У Apex ею набрано одно-два слова в заголовке, и больше нигде. Так она и
   * работает: выделяет, потому что редка. Пущенная в подзаголовки и кнопки,
   * она превратится в шум, и выделять станет нечем.
   *
   * Работает **через Georgia**: Instrument Serif, которым набран Apex, решено
   * пока не заводить — 29.09.2026, владелец. Georgia стоит на каждой машине,
   * её курсив приличен, и ждать она не заставляет. Имя Instrument Serif
   * оставлено первым нарочно: положат файлы — засечка сменится сама, и
   * искать это место не придётся.
   */
  --f-serif:   "Instrument Serif", Georgia, "Times New Roman", serif;

  --fw-display: 700;
  --fw-semi:    600;
  --fw-medium:  500;
  --fw-body:    400;

  /* заголовки узкие и плотные — язык цеха, а не галереи */
  --fs-display-stretch: 100%;

  /* ---- размер текста ---- */
  --t-xs:   0.75rem;    /* 12 — подписи размеров */
  --t-sm:   0.875rem;   /* 14 */
  --t-base: 1rem;       /* 16 — основной */
  --t-lg:   1.125rem;   /* 18 */
  --t-xl:   1.5rem;     /* 24 */
  --t-2xl:  2rem;       /* 32 */
  --t-3xl:  clamp(2.25rem, 5vw, 3.5rem);   /* заголовок раздела */
  /* Первый экран. Крупно, но не настолько, чтобы окно броска ушло за край:
     оно здесь главное, а заголовок лишь объясняет. */
  --t-hero: clamp(2.25rem, 5vw, 3.5rem);

  --lh-tight: 1.04;
  --lh-snug:  1.28;
  --lh-body:  1.6;

  --ls-tight:   -0.025em;
  --ls-normal:  0;
  --ls-label:    0.14em;   /* моноширинные подписи в разрядку */

  /* ---- отступы ---- */
  --s-1:  0.25rem;
  --s-2:  0.5rem;
  --s-3:  0.75rem;
  --s-4:  1rem;
  --s-5:  1.5rem;
  --s-6:  2rem;
  --s-7:  3rem;
  --s-8:  4rem;
  --s-9:  6rem;
  --s-10: 8rem;

  /* ---- ширины ---- */
  --w-page:  1200px;   /* предел содержимого */
  --w-text:  65ch;     /* читаемая строка */
  --w-form:  520px;

  /* ---- геометрия ---- */
  /*
   * Прежде углы были прямые везде: «верстак — прямые углы». Владелец
   * попросил скруглить кнопки, рамки и таблицы, и это его решение.
   *
   * Шкала, а не одно число: у поля ввода в 44 точки высотой и у панели
   * в 400 одинаковое скругление выглядит ошибкой — на маленьком оно
   * съедает угол, на большом теряется.
   */
  /* Шкала подтянута к Apex: у него --radius: 1rem, то есть 16 на карточке. */
  --r-sm:   8px;   /* поля ввода, мелкие плашки */
  --r-md:  12px;   /* кнопки */
  --r-lg:  16px;   /* карточки, кадры, панели */
  --r-xl:  24px;   /* крупное: таблица, призыв, зона загрузки */
  --r-dot: 50%;    /* кружок состояния */

  --border: 1px solid var(--c-line);

  /* ---- движение ---- */
  --dur-fast: 120ms;
  --dur-base: 200ms;
  --ease: cubic-bezier(0.2, 0, 0.2, 1);
}

@media (prefers-reduced-motion: reduce) {
  :root { --dur-fast: 0ms; --dur-base: 0ms; }
}

/* ============================================================
   Переменные GeneratePress, переведённые на наши токены.

   Родительская тема красит свою начинку не жёсткими цветами, а
   собственными переменными: карточка содержимого, например, берёт
   --base-3. Поэтому воевать правилами не нужно — достаточно сказать
   этим переменным, что они значат у нас, и вся начинка родителя
   покрасится сама, включая то, до чего мы ещё не дошли.

   Настоящие значения по-прежнему живут только выше, в блоке цвета.
   ============================================================ */

:root {
  --base:       var(--c-sunk);
  --base-2:     var(--c-surface);
  --base-3:     var(--c-bg);
  --contrast:   var(--c-text);
  --contrast-2: var(--c-muted);
  --contrast-3: var(--c-line);
  --accent:     var(--c-accent);
}
