/* Единственное место всех значений: шрифты, размеры, интерлиньяж, ширина колонки, сетка, отступы, цвет, время.
   Остальные файлы берут только переменные: tools/beta/check.mjs падает на любом значении вне этого файла.
   Причины и шкала в числах: site/beta/design.md. */

/* ---------- Заголовки: Exo 2. Переменный файл, используем 500 и 600. ---------- */
@font-face {
  font-family: "Exo 2"; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("../fonts/exo2-cyrillic-wght-normal.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Exo 2"; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("../fonts/exo2-latin-wght-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* ---------- Текст: Onest. Переменный файл, используем 400 и 500. ---------- */
@font-face {
  font-family: "Onest"; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("../fonts/onest-cyrillic-wght-normal.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Onest"; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("../fonts/onest-cyrillic-ext-wght-normal.woff2") format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: "Onest"; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("../fonts/onest-latin-wght-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Запасные шрифты подогнаны замером в браузере на украинском тексте: пока грузится настоящий,
   строки уже той же длины и высоты. Arial на компьютерах и iPhone, Roboto на Android. */
@font-face {
  font-family: "Exo 2 Fallback"; font-weight: 500 700;
  src: local("Arial Bold"), local("Arial-BoldMT");
  size-adjust: 96.77%; ascent-override: 103.24%; descent-override: 20.77%; line-gap-override: 0%;
}
@font-face {
  font-family: "Exo 2 Fallback Roboto"; font-weight: 500 700;
  src: local("Roboto Bold"), local("Roboto-Bold");
  size-adjust: 101.49%; ascent-override: 98.44%; descent-override: 19.81%; line-gap-override: 0%;
}
@font-face {
  font-family: "Onest Fallback"; font-weight: 300 500;
  src: local("Arial"), local("ArialMT");
  size-adjust: 104.43%; ascent-override: 92.89%; descent-override: 29.21%; line-gap-override: 0%;
}
@font-face {
  font-family: "Onest Fallback Roboto"; font-weight: 300 500;
  src: local("Roboto"), local("Roboto-Regular");
  size-adjust: 102.91%; ascent-override: 94.26%; descent-override: 29.64%; line-gap-override: 0%;
}

:root {
  /* ---------- Гарнитуры и начертания ---------- */
  --font-head: "Exo 2", "Exo 2 Fallback", "Exo 2 Fallback Roboto", Arial, sans-serif;
  --font-text: "Onest", "Onest Fallback", "Onest Fallback Roboto", Arial, sans-serif;
  --weight-head: 600;
  --weight-head-quiet: 500;
  --weight-text: 400;
  --weight-strong: 500;

  /* ---------- Шкала. В комментарии px на 375 · 768 · 1440 · 2560 ---------- */
  /* Заголовок страницы: 36 · 46 · 64 · 88 */
  --type-display-size: clamp(2.25rem, calc(1.63rem + 2.63vw), 5.5rem);
  --type-display-lh: 1.08;
  --type-display-weight: var(--weight-head);
  --type-display-track: -.012em;
  /* Заголовок раздела: 28 · 32 · 40 · 52 */
  --type-title-size: clamp(1.75rem, calc(1.49rem + 1.127vw), 3.25rem);
  --type-title-lh: 1.14;
  --type-title-weight: var(--weight-head);
  --type-title-track: -.008em;
  /* Подзаголовок, название проекта, глава: 21 · 24 · 28 · 34 */
  --type-subtitle-size: clamp(1.3125rem, calc(1.156rem + .657vw), 2.125rem);
  --type-subtitle-lh: 1.2;
  --type-subtitle-weight: var(--weight-head);
  --type-subtitle-track: 0em;
  /* Вступление, крупный абзац: 19 · 21 · 25 · 30 */
  --type-lead-size: clamp(1.1875rem, calc(1.056rem + .563vw), 1.875rem);
  --type-lead-lh: 1.4;
  --type-lead-weight: var(--weight-text);
  --type-lead-track: 0em;
  /* Текст: 17 · 18 · 20 · 24 */
  --type-body-size: clamp(1.0625rem, calc(.931rem + .357vw), 1.625rem);
  --type-body-lh: 1.55;
  --type-body-weight: var(--weight-text);
  --type-body-track: 0em;
  /* Подпись, поле формы, таблица: 15 · 15 · 17 · 20 */
  --type-small-size: clamp(.9375rem, calc(.825rem + .268vw), 1.375rem);
  --type-small-lh: 1.42;
  --type-small-weight: var(--weight-text);
  --type-small-track: 0em;
  /* Цена за м²: 44 · 60 · 88 · 120 */
  --type-price-size: clamp(2.75rem, calc(1.78rem + 4.13vw), 7.5rem);
  --type-price-lh: 1.02;
  --type-price-weight: var(--weight-head);
  --type-price-track: -.01em;
  /* Номер телефона крупно, в одну строку на любом экране: 34 · 38 · 72 · 96 */
  --type-phone-size: clamp(2.125rem, 5vw, 6rem);
  --type-phone-lh: 1.06;
  --type-phone-weight: var(--weight-head);
  --type-phone-track: -.005em;
  /* Тот же номер при крупном тексте браузера: строка шириной около 8,8 размера шрифта не выходит за поле экрана */
  --type-phone-fit-size: min(var(--type-phone-size), calc((100vw - 2 * var(--gut)) / 9));
  /* Пункты меню: 34 · 42 · 56 · 80 */
  --type-menu-size: clamp(2.125rem, calc(1.645rem + 2.07vw), 5rem);
  --type-menu-lh: 1.16;
  --type-menu-weight: var(--weight-head-quiet);
  --type-menu-track: -.008em;
  /* Четыре слова у логотипа. Размер --fs считает страница: он связан с шириной логотипа */
  --type-word-lh: 1.25;
  --type-word-weight: var(--weight-head-quiet);
  --type-word-track: .03em;
  /* Слова больших сот. Размер считает поле, от радиуса соты */
  --type-big-word-lh: 1.2;
  --type-big-word-weight: var(--weight-head);
  --type-big-word-track: 0em;
  --type-big-pale-lh: 1.24;
  --type-big-pale-weight: var(--weight-head-quiet);
  /* Подпись в схеме из четырёх сот: единицы холста SVG */
  --type-scheme-size: 20px;

  /* ---------- Ширина колонки: 52 и 38 ширин цифры 0 в Onest, это около 70 и 51 знака украинского текста ---------- */
  --col-text: 52ch;
  --col-narrow: 38ch;

  /* ---------- Сетка и отступы ---------- */
  --gut: clamp(16px, 4vw, 72px);
  --grid-cols: 12;
  --grid-gap: clamp(16px, 2vw, 40px);
  --page-max: 2200px;
  --touch: 44px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: clamp(20px, 1.7vw, 32px);
  --space-6: clamp(24px, 2.6vw, 48px);
  --space-7: clamp(32px, 3.6vw, 72px);
  --space-8: clamp(48px, 5.6vw, 112px);
  --space-9: clamp(72px, 8.4vw, 176px);
  --bar-pad: clamp(10px, 1.4vw, 20px);
  --bar-h: calc(var(--touch) + 2 * var(--bar-pad));
  /* Зелёная сота в углу и место под неё справа у контента: на телефоне сота уходит сама (js/shell.js), с 768 контент её обходит */
  --corner-w: clamp(56px, 8.4vh, 88px);
  --page-end: 0px;
  /* Кнопка-контур: шестиугольник лёжа, косые края под углом сот */
  --button-h: max(var(--touch), calc(var(--type-subtitle-size) * 1.9));
  --button-cut: calc(var(--button-h) * .289);
  --button-line: 1.5px;

  /* ---------- Цвет: белый, тёплые серые соты, чёрный текст, зелёный только у соты телефона ---------- */
  --paper: #ffffff;
  --ink: #1c1a17;
  --ink-2: #4d4943;
  --pale: #78736b;      /* 4,7:1 к белому */
  --t0: #f5f4f1;
  --t1: #edebe6;
  --t2: #d9d6cf;
  --t3: #c1bdb4;
  --t4: #a5a097;
  --err: #a4251c;
  --call: #16894a;      /* белый значок на ней от 3:1 */
  --call-deep: #117a40;
  /* Кадры: затемнение под текстом на фото и белая дымка на чертеже, числа только для прозрачности */
  --photo-ink-rgb: 14 16 18;
  --photo-deep: #15170f;
  --photo-deep-rgb: 21 23 15;
  --paper-rgb: 255 255 255;
  --on-mark-55: rgb(var(--paper-rgb) / .55);
  --icon-select: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 14'%3E%3Cpolyline points='2,2 12,12 22,2' fill='none' stroke='%231c1a17' stroke-width='1.6'/%3E%3C/svg%3E");

  --hex: polygon(50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%);

  /* ---------- Время: короткая на наведение, средняя на появление, длинная на смену страниц ---------- */
  --dur-short: 240ms;
  --dur-mid: 560ms;
  --dur-long: 900ms;
  /* Ритм зелёной соты: не переход, а повтор, только у .phone-cell (решение D01) */
  --cycle-call: 3600ms;
  --ease-short: cubic-bezier(.25, .1, .25, 1);
  --ease-mid: cubic-bezier(.16, 1, .3, 1);
  --ease-long: cubic-bezier(.65, 0, .35, 1);
}

@media (min-width: 768px) {
  :root { --page-end: calc(var(--corner-w) + var(--space-5)); }
}

/* Логотип главной: те же формулы в brandBlock (js/hexlayout.js), менять только вместе */
.home {
  --lw: min(80vw, 560px, 55svh);
  --fs: clamp(13px, calc(var(--lw) * .043), 24px);
  --word-k: .197; /* слово большой соты к её радиусу */
}
@media (min-width: 640px) and (min-aspect-ratio: 21/20) {
  .home {
    --lw: min(39vw, 900px, 85svh);
    --fs: clamp(14px, calc(var(--lw) * .034), 26px);
    --word-k: .205;
  }
}
/* Бледные слова большой соты растут вместе с сотой: --face задаёт поле */
.big {
  --type-big-pale-size: max(.875rem, calc(var(--face, 12rem) * .118));
}
