/* ============================================================
   НОВА — дизайн-токены бренд-семьи (ядро + подбренды)
   Подключение: <link rel="stylesheet" href="../../nova-system/tokens.css">
   Переключение подбренда: <html data-brand="market|club|service">
   (без атрибута — ядро «Нова»). Все значения — CSS custom properties,
   источник правды для tokens.json. Префикс nv-.
   ============================================================ */

/* ---------- Шрифты (OFL, самохост) ---------- */
@font-face {
  font-family: "Unbounded";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("assets/fonts/unbounded-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Unbounded";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("assets/fonts/unbounded-cyrillic-ext.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: "Unbounded";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("assets/fonts/unbounded-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;
}
@font-face {
  font-family: "Unbounded";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("assets/fonts/unbounded-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url("assets/fonts/golos-text-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url("assets/fonts/golos-text-cyrillic-ext.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: "Golos Text";
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url("assets/fonts/golos-text-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;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url("assets/fonts/golos-text-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  /* ---------- Цвет: чернила и поверхности ---------- */
  --nv-ink:        #0F1B33;   /* основной текст, «чернила» на эмали */
  --nv-ink-2:      #3B4760;   /* вторичный текст (7.9:1 на белом) */
  --nv-ink-3:      #65718A;   /* подписи, плейсхолдеры (4.9:1 на белом) */
  --nv-ink-4:      #9AA4B8;   /* только декоративные линии/иконки без текста */
  --nv-paper:      #FFFFFF;   /* белая глазурь: карточки, поля, плитки */
  --nv-ground:     #F2F4F7;   /* поле страницы */
  --nv-ground-2:   #E9EDF3;   /* утопленные зоны (вкладки, фильтры) */
  --nv-grout:      #E1E6EE;   /* шов между плитками: 1-px границы */
  --nv-grout-2:    #C8D0DD;   /* шов сильнее: поля ввода, разделители таблиц */

  /* ---------- Цвет: кобальтовая глазурь (семья) ---------- */
  --nv-cobalt:        #1B3FB5;
  --nv-cobalt-deep:   #12297F;
  --nv-cobalt-light:  #3A5FE0;
  --nv-cobalt-tint:   #E7ECFC;
  --nv-cobalt-tint-2: #CFD9F8;

  /* ---------- Цвет: лампа (янтарь) ---------- */
  --nv-amber:       #FFB224;
  --nv-amber-deep:  #E99A05;
  --nv-amber-tint:  #FFF2D2;
  --nv-amber-glow:  rgba(255, 178, 36, 0.42);

  /* ---------- Цвет подбрендов (справочно; активный — через --nv-brand-*) ---------- */
  --nv-market-accent: #FFB224;  /* ценник */
  --nv-club-field:    #3B2A80;  /* сливовая глазурь */
  --nv-club-accent:   #D8286B;  /* малина */
  --nv-service-field: #0F6E7A;  /* бирюзовая глазурь */
  --nv-service-accent:#2BC4A8;  /* мята */

  /* ---------- Функциональные ---------- */
  --nv-success:       #1E8F55;
  --nv-success-tint:  #DDF4E6;
  --nv-warning:       #C97A00;
  --nv-warning-tint:  #FFF1D6;
  --nv-danger:        #D13A45;
  --nv-danger-tint:   #FDE4E6;
  --nv-info:          #1B3FB5;
  --nv-info-tint:     #E7ECFC;

  /* ---------- Активный бренд (ядро «Нова») ---------- */
  --nv-brand-field:        var(--nv-cobalt);
  --nv-brand-field-deep:   var(--nv-cobalt-deep);
  --nv-brand-field-light:  var(--nv-cobalt-light);
  --nv-brand-tint:         var(--nv-cobalt-tint);
  --nv-brand-tint-2:       var(--nv-cobalt-tint-2);
  --nv-brand-on-field:     #FFFFFF;
  --nv-brand-accent:       var(--nv-cobalt);       /* первичное действие */
  --nv-brand-accent-deep:  var(--nv-cobalt-deep);  /* hover/active */
  --nv-brand-on-accent:    #FFFFFF;
  --nv-brand-accent-tint:  var(--nv-cobalt-tint);
  --nv-brand-lamp:         var(--nv-amber);        /* лампа в логотипе и свет над полем */
  --nv-brand-link:         var(--nv-cobalt);
  --nv-brand-focus:        var(--nv-cobalt-light);
  --nv-brand-name:         "Нова";

  /* ---------- Типографика ---------- */
  --nv-font-display: "Unbounded", "Golos Text", system-ui, sans-serif;
  --nv-font-text:    "Golos Text", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  --nv-fs-xs:  0.8125rem;  /* 13 */
  --nv-fs-sm:  0.875rem;   /* 14 */
  --nv-fs-md:  1rem;       /* 16 */
  --nv-fs-lg:  1.125rem;   /* 18 */
  --nv-fs-xl:  1.25rem;    /* 20 */
  --nv-fs-2xl: 1.5rem;     /* 24 */

  /* Дисплейная шкала: вывеска (clamp от 390 до 1440) */
  --nv-fs-d1: clamp(2.125rem, 1.25rem + 3.2vw, 4rem);       /* 34–64 */
  --nv-fs-d2: clamp(1.625rem, 1.1rem + 2vw, 2.75rem);       /* 26–44 */
  --nv-fs-d3: clamp(1.375rem, 1.1rem + 1.1vw, 2rem);        /* 22–32 */
  --nv-fs-d4: clamp(1.125rem, 1rem + 0.5vw, 1.375rem);      /* 18–22 */
  --nv-fs-price: clamp(1.5rem, 1.2rem + 1vw, 2rem);         /* ценник */

  --nv-lh-tight: 1.08;
  --nv-lh-snug:  1.2;
  --nv-lh-text:  1.5;
  --nv-lh-loose: 1.65;

  --nv-ls-display: -0.02em;
  --nv-ls-text:    0;
  --nv-ls-caps:    0.02em;

  --nv-fw-regular: 400;
  --nv-fw-medium:  500;
  --nv-fw-semibold:600;
  --nv-fw-bold:    700;

  --nv-measure: 64ch;

  /* ---------- Модуль, отступы ---------- */
  --nv-module: 56px;            /* размер плитки: шаг фоновой сетки, высота строк навигации */
  --nv-space-1: 4px;
  --nv-space-2: 8px;
  --nv-space-3: 12px;
  --nv-space-4: 16px;
  --nv-space-5: 24px;
  --nv-space-6: 32px;
  --nv-space-7: 48px;
  --nv-space-8: 64px;
  --nv-space-9: 96px;
  --nv-space-10: 128px;

  --nv-gutter: clamp(16px, 4vw, 48px);
  --nv-container: 1280px;
  --nv-container-narrow: 820px;
  --nv-grid-gap: clamp(12px, 1.6vw, 24px);

  /* ---------- Радиусы ---------- */
  --nv-radius-xs: 6px;    /* бейджи, мелкие чипы */
  --nv-radius-sm: 10px;   /* кнопки, поля, чипы */
  --nv-radius-md: 16px;   /* плитка: карточки, табы-контейнеры */
  --nv-radius-lg: 24px;   /* крупные поля глазури, герои, модалки */
  --nv-radius-xl: 32px;   /* секции-прилавки */
  --nv-radius-full: 999px;

  /* ---------- Глубина: материалом, не тенью ---------- */
  --nv-line: 1px solid var(--nv-grout);
  --nv-line-strong: 1px solid var(--nv-grout-2);
  --nv-glaze-highlight: inset 0 1px 0 rgba(255,255,255,0.55);   /* блик на белой плитке */
  --nv-glaze-highlight-dark: inset 0 1px 0 rgba(255,255,255,0.18);
  --nv-shadow-float: 0 12px 32px -12px rgba(15, 27, 51, 0.28), 0 2px 6px -2px rgba(15, 27, 51, 0.10); /* только плавающие слои */
  --nv-shadow-lamp: 0 0 0 4px var(--nv-amber-glow);  /* фокус на тёмном поле */
  --nv-focus-ring: 0 0 0 3px var(--nv-paper), 0 0 0 6px var(--nv-brand-focus);

  /* Текстура кафеля на глазурованном поле: 1-px швы каждые --nv-module */
  --nv-tile-lines: rgba(255,255,255,0.07);
  --nv-tile-bg:
    linear-gradient(to right, var(--nv-tile-lines) 1px, transparent 1px) 0 0 / var(--nv-module) var(--nv-module),
    linear-gradient(to bottom, var(--nv-tile-lines) 1px, transparent 1px) 0 0 / var(--nv-module) var(--nv-module);
  --nv-lamp-light: radial-gradient(60% 55% at 50% -10%, var(--nv-amber-glow), transparent 70%);

  /* ---------- Движение ---------- */
  --nv-dur-press: 110ms;
  --nv-dur-state: 200ms;
  --nv-dur-reveal: 340ms;
  --nv-dur-glaze: 600ms;
  --nv-ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
  --nv-ease-spring: cubic-bezier(0.34, 1.4, 0.64, 1);
  --nv-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);

  /* ---------- Слои ---------- */
  --nv-z-header: 50;
  --nv-z-dropdown: 60;
  --nv-z-sheet: 80;
  --nv-z-toast: 90;

  color-scheme: light;
  accent-color: var(--nv-brand-accent);
}

/* ---------- Подбренды ---------- */
[data-brand="market"] {
  --nv-brand-field:        var(--nv-cobalt);
  --nv-brand-field-deep:   var(--nv-cobalt-deep);
  --nv-brand-field-light:  var(--nv-cobalt-light);
  --nv-brand-tint:         var(--nv-cobalt-tint);
  --nv-brand-tint-2:       var(--nv-cobalt-tint-2);
  --nv-brand-on-field:     #FFFFFF;
  --nv-brand-accent:       var(--nv-amber);
  --nv-brand-accent-deep:  var(--nv-amber-deep);
  --nv-brand-on-accent:    var(--nv-ink);
  --nv-brand-accent-tint:  var(--nv-amber-tint);
  --nv-brand-lamp:         var(--nv-amber);
  --nv-brand-link:         var(--nv-cobalt);
  --nv-brand-focus:        var(--nv-cobalt-light);
  --nv-brand-name:         "Нова.Маркет";
}
[data-brand="club"] {
  --nv-brand-field:        #3B2A80;
  --nv-brand-field-deep:   #281B5E;
  --nv-brand-field-light:  #5A47B0;
  --nv-brand-tint:         #ECE8F8;
  --nv-brand-tint-2:       #D8D0F0;
  --nv-brand-on-field:     #FFFFFF;
  --nv-brand-accent:       #D8286B;
  --nv-brand-accent-deep:  #B01C55;
  --nv-brand-on-accent:    #FFFFFF;
  --nv-brand-accent-tint:  #FBE3EC;
  --nv-brand-lamp:         var(--nv-amber);
  --nv-brand-link:         #3B2A80;
  --nv-brand-focus:        #D8286B;
  --nv-brand-name:         "НоваКлаб";
}
[data-brand="service"] {
  --nv-brand-field:        #0F6E7A;
  --nv-brand-field-deep:   #0A4F58;
  --nv-brand-field-light:  #1E8E9B;
  --nv-brand-tint:         #E1F3F4;
  --nv-brand-tint-2:       #C3E6E8;
  --nv-brand-on-field:     #FFFFFF;
  --nv-brand-accent:       #2BC4A8;
  --nv-brand-accent-deep:  #1FA48C;
  --nv-brand-on-accent:    var(--nv-ink);
  --nv-brand-accent-tint:  #DAF6EF;
  --nv-brand-lamp:         var(--nv-amber);
  --nv-brand-link:         #0F6E7A;
  --nv-brand-focus:        #1E8E9B;
  --nv-brand-name:         "Нова Сервис";
}

/* ---------- Базовые правила документа (безопасные, можно не подключать) ---------- */
.nv-root,
:root:has(body.nv-body) {
  font-family: var(--nv-font-text);
  font-size: 16px;
  line-height: var(--nv-lh-text);
  color: var(--nv-ink);
  background: var(--nv-ground);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-feature-settings: "kern" 1, "liga" 1;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --nv-dur-press: 1ms;
    --nv-dur-state: 1ms;
    --nv-dur-reveal: 1ms;
    --nv-dur-glaze: 1ms;
  }
}
