/* ==========================================================================
   VERITEX · design tokens  (источник: veritex-site-brief.md, раздел 2)
   Единственное место, где живут цвета, шрифты, отступы и тайминги.
   Всё, что помечено «ДОБАВЛЕНО», в ТЗ не было — см. README.md.
   ========================================================================== */

/* ---------- Шрифты ----------------------------------------------------------
   Витрина работает на Geist (SIL Open Font License, переменный шрифт, вес 100–900),
   пока не куплена веб-лицензия PP Neue Montreal (Pangram Pangram). Файлы PP Neue Montreal
   вынесены из публичной папки: font-licensed/ (см. font-licensed/README.md).
   Когда лицензия будет: вернуть файлы в public/vx/fonts, раскомментировать @font-face ниже
   и поменять --font-display (см. :root).
   --------------------------------------------------------------------------- */
@font-face { font-family: "Geist"; font-weight: 100 900; font-style: normal; font-display: swap;
  src: url("../fonts/Geist-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Geist"; font-weight: 100 900; font-style: normal; font-display: swap;
  src: url("../fonts/Geist-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Geist"; font-weight: 100 900; font-style: normal; font-display: swap;
  src: url("../fonts/Geist-latin.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; }

/* PP Neue Montreal (платная лицензия, файлы в font-licensed/): раскомментировать после покупки.
@font-face { font-family: "PP Neue Montreal"; font-weight: 100; font-style: normal; font-display: swap; src: url("../fonts/PPNeueMontreal-Thin.woff") format("woff"); }
@font-face { font-family: "PP Neue Montreal"; font-weight: 400; font-style: normal; font-display: swap; src: url("../fonts/PPNeueMontreal-Book.woff") format("woff"); }
@font-face { font-family: "PP Neue Montreal"; font-weight: 400; font-style: italic; font-display: swap; src: url("../fonts/PPNeueMontreal-Italic.woff") format("woff"); }
@font-face { font-family: "PP Neue Montreal"; font-weight: 500; font-style: normal; font-display: swap; src: url("../fonts/PPNeueMontreal-Medium.woff") format("woff"); }
@font-face { font-family: "PP Neue Montreal"; font-weight: 600; font-style: italic; font-display: swap; src: url("../fonts/PPNeueMontreal-SemiBoldItalic.woff") format("woff"); }
@font-face { font-family: "PP Neue Montreal"; font-weight: 700; font-style: normal; font-display: swap; src: url("../fonts/PPNeueMontreal-Bold.woff") format("woff"); }
*/

/* Inter (OFL): подхватывает глифы, которых нет в PP Neue Montreal: ₽ № ✓ ● */
@font-face { font-family: "Inter"; font-weight: 400; font-style: normal; font-display: swap;
  src: url("../fonts/Inter-Regular.woff") format("woff"); }
@font-face { font-family: "Inter"; font-weight: 500; font-style: normal; font-display: swap;
  src: url("../fonts/Inter-Medium.woff") format("woff"); }

/* IBM Plex Mono (OFL): все данные — CAS, LOT, дозировки, чистота, цены */
@font-face { font-family: "IBM Plex Mono"; font-weight: 400; font-style: normal; font-display: swap;
  src: url("../fonts/IBMPlexMono-Regular.woff") format("woff"); }

:root {
  color-scheme: dark;

  /* ---------- шрифты: меняются ОДНОЙ строкой ---------- */
  --font-display: "Geist", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  /* после покупки лицензии PP Neue Montreal: --font-display: "PP Neue Montreal", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; */
  --font-body: var(--font-display);
  --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;

  /* ---------- поверхности ---------- */
  --bg:            #0F0D13;
  --bg-raised:     #17151B;
  --line:          rgba(244, 240, 250, 0.08);
  --line-strong:   rgba(244, 240, 250, 0.16);

  /* ---------- текст ---------- */
  --text:          #F4F0FA;   /* 17.2:1 на --bg */
  --text-muted:    #8A7A98;   /* 4.89:1 на --bg · 4.59:1 на --bg-raised (AA) */
  --text-faint:    #5E5468;   /* 2.71:1 — НЕ проходит AA. Только декор и неактивное, не для читаемого текста */

  /* ---------- бренд ---------- */
  --violet:        #7046A3;   /* заливка главной кнопки, ячейка логотипа; белый текст 6.79:1 */
  --violet-glow:   #A98BDB;   /* акцентный текст, ссылки, кольцо фокуса; 6.81:1 на --bg */

  /* ---------- линейки (как на наклейках) ---------- */
  --line-peptides: #7046A3;
  --line-sarms:    #1F7A8C;
  --line-skin:     #B87333;
  --line-sport:    #B6E000;
  /* ДОБАВЛЕНО: версии линеек для текста и точек на тёмном (ТЗ указывает их в комментариях) */
  --line-peptides-fg: #A98BDB;
  --line-sarms-fg:    #3FB3C7;
  --line-skin-fg:     #B87333;   /* 5.09:1 на --bg, подходит как есть */
  --line-sport-fg:    #B6E000;

  /* ---------- статусы ---------- */
  --ok:            #5BD68A;   /* в наличии */
  --warn:          #E8B04B;   /* ожидается / мало */
  --off:           #5E5468;   /* нет в наличии (точка; подпись — всегда словом, цвет не единственный признак) */

  /* ---------- «бумага» для COA ---------- */
  --paper:         #F4F0FA;
  --paper-ink:     #17151B;
  /* ДОБАВЛЕНО */
  --paper-muted:   #5E5468;   /* 6.35:1 на --paper */
  --paper-line:    rgba(23, 21, 27, 0.12);

  /* ---------- ДОБАВЛЕНО: то, чего не хватило при сборке компонентов ---------- */
  --err:           #F2788A;   /* ошибка в поле; 7.2:1 на --bg. В ТЗ цвета ошибки не было */
  --field-border:  #6F6579;   /* граница полей и чекбоксов: 3.5:1 на --bg (WCAG 1.4.11). --line-strong даёт лишь 1.5:1 */
  --warn-surface:  rgba(232, 176, 75, 0.09);
  --warn-line:     rgba(232, 176, 75, 0.28);
  --warn-ink:      #F0DDB0;   /* текст плашки RUO, 12.5:1 */
  --ok-surface:    rgba(91, 214, 138, 0.07);
  --ok-line:       rgba(91, 214, 138, 0.32);

  /* ---------- размеры шрифта (desktop; mobile ниже) ---------- */
  --fs-display: 48px;
  --fs-h1:      40px;
  --fs-h2:      30px;
  --fs-h3:      20px;
  --fs-body:    16px;
  --fs-small:   14px;
  --fs-label:   12px;
  --fs-mono:    13px;
  --fs-cell:    24px;   /* код вещества в ячейке */

  /* ---------- сетка и отступы (база 6px) ---------- */
  --s-1: 6px;  --s-2: 12px; --s-3: 18px; --s-4: 24px;
  --s-5: 36px; --s-6: 60px; --s-7: 96px; --s-8: 120px;
  --container: 1360px;     /* ТЗ v2, 2.3: максимальная ширина 1360, поля 24 / 16 */
  --gutter: 16px;

  /* ---------- форма (ТЗ v2, 2.3): карточки 16, баннеры 20–24, кнопки и поля 10–12. Pill-кнопок нет ---------- */
  --r-btn:    12px;
  --r-input:  12px;
  --r-cell:   16px;   /* карточки */
  --r-banner: 24px;   /* крупные баннеры и панели */
  --r-panel:  24px;
  --r-pill:   12px;   /* имя сохранено для старых компонентов: теперь это скругление кнопок, не «таблетка» */

  /* ---------- движение ---------- */
  --dur-fast: 150ms;
  --dur-base: 250ms;
  --dur-slow: 400ms;
  --ease: cubic-bezier(.2, .8, .2, 1);

  /* ---------- минимальная зона касания ---------- */
  --tap: 44px;
}

@media (min-width: 768px) {
  :root {
    --fs-display: 104px;
    --fs-h1:      72px;
    --fs-h2:      44px;
    --fs-h3:      24px;
    --fs-body:    18px;
    --fs-mono:    14px;
    --fs-cell:    32px;
    --gutter: 24px;
  }
}

/* цвет текущей линейки: ставится атрибутом data-line на любом элементе */
[data-line="peptides"] { --accent: var(--line-peptides-fg); --accent-solid: var(--line-peptides); --on-accent: #fff; }
[data-line="sarms"]    { --accent: var(--line-sarms-fg);    --accent-solid: var(--line-sarms);    --on-accent: #fff; }
[data-line="skin"]     { --accent: var(--line-skin-fg);     --accent-solid: var(--line-skin);     --on-accent: #fff; }
[data-line="sport"]    { --accent: var(--line-sport-fg);    --accent-solid: var(--line-sport);    --on-accent: var(--bg); }
