

/* Start:/upload/wintra.webcreator/tokens.css?17812537795171*/
/*!
 * wintra.webcreator · tokens.css — АВТОГЕНЕРИРУЕМЫЙ файл
 * Источник: настройки модуля wintra.webcreator (Админка → Настройки модуля).
 * НЕ РЕДАКТИРОВАТЬ руками — перезапишется при следующем сохранении.
 * Кастомизация сайта — через /local/templates/<код>/custom.css.
 * Сгенерирован: 2026-06-12 12:42:59
 */
:root {
    --wintra-color-primary: #033fcb;
    --wintra-color-secondary: #f5a623;
    --wintra-color-primary-dark: #002c97;
    --wintra-color-accent: #fb4825;
    --wintra-color-ink: #171c21;
    --wintra-color-ink-muted: #475569;
    --wintra-color-surface: #f7f9ff;
    --wintra-color-card: #ffffff;
    --wintra-type-font-family: Manrope;
    --wintra-type-size-body: 16px;
    --wintra-type-size-h4: 1.125rem;
    --wintra-type-size-h3: 1.625rem;
    --wintra-type-size-h2: 2.25rem;
    --wintra-type-size-h1: 3.75rem;
    --wintra-type-size-hero: 3.75rem;
    --wintra-type-line-height-body: 1.6;
    --wintra-type-line-height-heading: 1.1;
    --wintra-type-weight-heading-light: 300;
    --wintra-type-weight-heading-bold: 800;
    --wintra-type-link-decoration: none;
    --wintra-type-link-transform: none;
    --wintra-type-size-kicker: 0.75rem;
    --wintra-type-size-chip: 0.6875rem;
    --wintra-container-max-width: 1400px;
    --wintra-container-padding-top: 60px;
    --wintra-container-padding-right: 20px;
    --wintra-container-padding-bottom: 60px;
    --wintra-container-padding-left: 20px;
    --wintra-module-module-gap: 24px;
    --wintra-module-module-radius: 28px;
    --wintra-module-padding-small: 16px;
    --wintra-module-padding-medium: 24px;
    --wintra-module-padding-large: 36px;
    --wintra-button-button-shape: pill;
    --wintra-shadow-card: 0 8px 24px rgba(15, 23, 42, 0.08);
    --wintra-font-family: Manrope, system-ui, -apple-system, sans-serif;
    --wintra-font-size-base: 16px;
    --wintra-radius: 28px;
    --wintra-module-gap: 24px;
    --wintra-padding-small:  16px;
    --wintra-padding-medium: 24px;
    --wintra-padding-large:  36px;
    --wintra-btn-radius: 999px;
    --wintra-link-decoration: none;
    --wintra-link-transform: none;
    --wintra-custom-fw600: 600;
    --wintra-custom-footer_back: #0a1224;
}

/* === Авто-классы для использования в поле «Фон» ряда/контейнера ===
 * Имя токена = имя класса. Шеф пишет в Сетке «primary» или
 * «footer_back» — фон применяется без хардкода CSS-значений.
 */
html body .wintra-bg-primary { background: var(--wintra-color-primary); }
html body .wintra-text-primary { color: var(--wintra-color-primary); }
html body .wintra-bg-secondary { background: var(--wintra-color-secondary); }
html body .wintra-text-secondary { color: var(--wintra-color-secondary); }
html body .wintra-bg-primary-dark { background: var(--wintra-color-primary-dark); }
html body .wintra-text-primary-dark { color: var(--wintra-color-primary-dark); }
html body .wintra-bg-accent { background: var(--wintra-color-accent); }
html body .wintra-text-accent { color: var(--wintra-color-accent); }
html body .wintra-bg-ink { background: var(--wintra-color-ink); }
html body .wintra-text-ink { color: var(--wintra-color-ink); }
html body .wintra-bg-ink-muted { background: var(--wintra-color-ink-muted); }
html body .wintra-text-ink-muted { color: var(--wintra-color-ink-muted); }
html body .wintra-bg-surface { background: var(--wintra-color-surface); }
html body .wintra-text-surface { color: var(--wintra-color-surface); }
html body .wintra-bg-card { background: var(--wintra-color-card); }
html body .wintra-text-card { color: var(--wintra-color-card); }
html body .wintra-custom-footer_back { background: var(--wintra-custom-footer_back); }

/* === Effects · CSS-переменные (settings → лежат на :root) === */
:root {
    --wintra-transition: 200ms;
    --wintra-shadow-sm: 0 2px 8px rgba(15, 23, 42, 0.06);
    --wintra-shadow-md: 0 8px 24px rgba(15, 23, 42, 0.08);
    --wintra-shadow-lg: 0 16px 48px rgba(15, 23, 42, 0.12);
    --wintra-shadow-card: 0 8px 24px rgba(15, 23, 42, 0.08);
}

/* === Effects · тени массово === */
.wm-card { box-shadow: var(--wintra-shadow-card); }

/* === Effects · hover карточек (scale, medium) === */
.wm-card { transition: transform var(--wintra-transition) ease, box-shadow var(--wintra-transition) ease, border-color var(--wintra-transition) ease; }
.wm-card:hover { transform: scale(1.02); }

/* === Effects · длительность scrollspy-анимации === */
[uk-scrollspy] { animation-duration: var(--wm-scroll-duration, 500ms); }
[uk-scrollspy] .wm-card { animation-duration: var(--wm-scroll-duration, 500ms); }

/* === Effects · hover кнопок (lift) === */
.wm-btn { transition: transform var(--wintra-transition) ease, box-shadow var(--wintra-transition) ease, opacity var(--wintra-transition) ease; }
.wm-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0,0,0,.15); }

/* End */


/* Start:/upload/wintra.webcreator/responsive.css?17812537792404*/
/*!
 * wintra.webcreator · responsive.css
 * Авто-генерация: 2026-06-12 12:42:59
 * Источник: «11 · Адаптив» (mobile_*/tablet_* scale-множители).
 * Не редактировать вручную — перетрётся при следующем save.
 */

/* BASE mobile (xs default). */
:root {
    --wintra-container-padding-top: 33px;
    --wintra-container-padding-right: 11px;
    --wintra-container-padding-bottom: 33px;
    --wintra-container-padding-left: 11px;
    --wintra-module-gap: 13px;
    --wintra-padding-small: 9px;
    --wintra-padding-medium: 13px;
    --wintra-padding-large: 20px;
    --wintra-type-size-hero: 2.63rem;
    --wintra-type-size-h1: 2.63rem;
    --wintra-type-size-h2: 1.58rem;
    --wintra-type-size-h3: 1.14rem;
    --wintra-type-size-h4: 0.79rem;
    --wintra-radius: 22px;
}
.wm-row {
  --wm-row-margin-top: 12px !important;
  --wm-row-margin-bottom: 12px !important;
  --wm-row-padding-top: 24px !important;
  --wm-row-padding-bottom: 24px !important;
}

/* @s tablet (from 640px). */
@media (min-width: 640px) {
  :root {
    --wintra-container-padding-top: 48px;
    --wintra-container-padding-right: 16px;
    --wintra-container-padding-bottom: 48px;
    --wintra-container-padding-left: 16px;
    --wintra-module-gap: 19px;
    --wintra-padding-small: 13px;
    --wintra-padding-medium: 19px;
    --wintra-padding-large: 29px;
    --wintra-type-size-hero: 3.19rem;
    --wintra-type-size-h1: 3.19rem;
    --wintra-type-size-h2: 1.91rem;
    --wintra-type-size-h3: 1.38rem;
    --wintra-type-size-h4: 0.96rem;
  }
  .wm-row {
    --wm-row-margin-top: unset !important;
    --wm-row-margin-bottom: unset !important;
    --wm-row-padding-top: unset !important;
    --wm-row-padding-bottom: unset !important;
  }
}

/* @m desktop (from 960px) - raw base. */
@media (min-width: 960px) {
  :root {
    --wintra-container-padding-top: 60px;
    --wintra-container-padding-right: 20px;
    --wintra-container-padding-bottom: 60px;
    --wintra-container-padding-left: 20px;
    --wintra-module-gap: 24px;
    --wintra-padding-small: 16px;
    --wintra-padding-medium: 24px;
    --wintra-padding-large: 36px;
    --wintra-type-size-hero: 3.75rem;
    --wintra-type-size-h1: 3.75rem;
    --wintra-type-size-h2: 2.25rem;
    --wintra-type-size-h3: 1.625rem;
    --wintra-type-size-h4: 1.125rem;
    --wintra-radius: 28px;
  }
}

/* End */


/* Start:/local/templates/wintra.corp/template_styles.css?178125741780233*/
@charset "UTF-8";
/**
 * wintra.corp — базовые стили корпоративного шаблона
 *
 * ВАЖНО: конкретные бренд-значения (цвет, шрифт, spacing) приходят из
 * ДИЗАЙН-ТОКЕНОВ модуля wintra.webcreator (lib/theme/tokens.php), которые
 * настраиваются админом через UI модуля. Ниже — только ФАЛЛБЭКИ и
 * структурная раскладка.
 */

/* ── Manrope (локально, OFL) ─────────────────────────────────────────────
   Google Fonts блочится в РФ — шрифт лежит в /fonts/manrope/.
   Файлы взяты из npm-пакета @fontsource/manrope (SIL OFL, лицензия рядом).
   Семь весов 200..800 × 2 subset (latin + cyrillic). unicode-range
   по @fontsource — браузер качает только нужный subset.
   font-display: swap — сначала рендер system-ui, потом подмена. */

/* 200 */
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 200; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-cyrillic-200-normal.woff2') format('woff2');
    unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 200; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-latin-200-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; }
/* 300 */
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 300; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-cyrillic-300-normal.woff2') format('woff2');
    unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 300; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-latin-300-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; }
/* 400 */
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 400; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-cyrillic-400-normal.woff2') format('woff2');
    unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 400; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-latin-400-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; }
/* 500 */
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 500; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-cyrillic-500-normal.woff2') format('woff2');
    unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 500; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-latin-500-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; }
/* 600 */
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 600; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-cyrillic-600-normal.woff2') format('woff2');
    unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 600; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-latin-600-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; }
/* 700 */
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 700; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-cyrillic-700-normal.woff2') format('woff2');
    unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 700; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-latin-700-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; }
/* 800 */
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 800; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-cyrillic-800-normal.woff2') format('woff2');
    unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 800; font-display: swap;
    src: url('/local/templates/wintra.corp/./fonts/manrope/manrope-latin-800-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; }

/* Все токены приходят из /upload/wintra.webcreator/tokens.css (Tokens::renderRootCss).
   В шаблоне НЕ дублируем :root с собственными значениями — это создавало
   путаницу (свои #1a1a1a против Tokens-color.ink #171c21). Используем прямые
   имена `--wintra-color-{key}` (где key совпадает с ключами в Tokens::DEFAULTS,
   которые видны в админке). */

* { box-sizing: border-box; }

/* === Глобальная типография: токены модуля > UIKit-defaults =============
 * UIKit ставит h2 { font-size: 2rem } (32px), h1 { 1.5rem * stuff } и т.д.
 * Без этих overrides шефовы токены --wintra-type-size-h* перебиваются
 * UIKit'ом (одинаковая специфичность 0,0,0,1 + UIKit грузится позже).
 *
 * Решение — повышаем специфичность через `html body`. Получается 0,0,0,3
 * против UIKit'a 0,0,0,1 — наши токены гарантированно выигрывают.
 *
 * Покрываем И теги (h1-h6, p) И UIKit-aliases (.uk-h1...uk-h6). Если
 * шеф пишет `<p class="uk-h2">` — текст принимает наш size-h2 токен.
 *
 * h4/h5/h6 в Tokens::DEFAULTS не определены — используем h3 fallback.
 * Если позже введём отдельные токены — добавим тут отдельные правила.
 */
/* Размеры h1/h2/h3 — перебиваем UIKit-defaults через специфичность
   `html body` (0,0,0,3 vs UIKit 0,0,0,1). Семейство шрифтов / line-height
   / color — общие токены модуля.

   font-weight НАМЕРЕННО НЕ задаётся: вес — специфика конкретного макета
   (где-то light с <strong>-bold контрастом, где-то bold целиком, где-то
   middle). Решается ВНУТРИ контента (теги <b>/<strong> с browser-default
   bolder) либо через custom.css шефа per-site. Не зашиваем в общий
   template_styles.css. */
html body h1, html body .uk-h1,
html body h2, html body .uk-h2,
html body h3, html body .uk-h3,
html body h4, html body .uk-h4,
html body h5, html body .uk-h5,
html body h6, html body .uk-h6 {
    font-family: var(--wintra-type-font-family-heading, var(--wintra-type-font-family));
    line-height: var(--wintra-type-line-height-heading, 1.2);
    color: var(--wintra-color-ink, #0d0d12);
    margin-top: 0;
}
html body h1, html body .uk-h1, html body .wm-type-h1 { font-size: var(--wintra-type-size-h1, 36px); }
html body h2, html body .uk-h2, html body .wm-type-h2 { font-size: var(--wintra-type-size-h2, 30px); }
html body h3, html body .uk-h3, html body .wm-type-h3 { font-size: var(--wintra-type-size-h3, 20px); }
html body h4, html body .uk-h4, html body .wm-type-h4,
html body h5, html body .uk-h5,
html body h6, html body .uk-h6 { font-size: var(--wintra-type-size-h4, var(--wintra-type-size-h3, 20px)); }
/* hero — гигантский CTA-заголовок (60px+ из токена size-hero). */
html body .wm-type-hero { font-size: var(--wintra-type-size-hero, 3.75rem); }

/* === Утилиты типографики (для семантически нейтральных DIV-заголовков) ===
 * Используются когда нужен ВИЗУАЛЬНЫЙ размер h1..h4 без увеличения числа
 * семантических <h1> на странице (которых должен быть ровно один).
 * Шеф пишет: <div class="wm-card-title wm-type-h1">…</div>.
 * Тэг — div (нейтральный), размер — через утилиту.
 * Также добавляем общий стиль (line-height/font-family heading) что унаследовал
 * div чтобы выглядел как настоящий <h>. */
.wm-type-hero,
.wm-type-h1, .wm-type-h2, .wm-type-h3, .wm-type-h4 {
    font-family: var(--wintra-type-font-family-heading, var(--wintra-type-font-family));
    line-height: var(--wintra-type-line-height-heading, 1.2);
}
html body p {
    font-size: var(--wintra-type-size-body, 16px);
    line-height: var(--wintra-type-line-height-body, 1.5);
    color: var(--wintra-color-ink, #0d0d12);
}

html, body {
    margin: 0;
    padding: 0;
    /* overflow-x:hidden на html/body СНЯТ — он ломает позицию absolute-
       дропдаунов в шапке (uk-navbar-dropdown, wm-menu__mega-drop) и
       вызывает вертикальный скролл при их наведении. Защита от horizontal-
       overflow остаётся на уровне .wm-row и .wm-row-group (ряд знает что
       внутри и обрезает свой контент). Edit-mode hover-frames Bitrix
       могут давать тонкий горизонтальный скролл — это известный
       side-effect, в публичном режиме его нет. */
    font-family: var(--wintra-font-family);
    font-size: var(--wintra-font-size-base);
    line-height: var(--wintra-type-line-height-body);
    color: var(--wintra-color-ink);
    background: var(--wintra-color-surface);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* === Глобальный стиль ссылок ====================================================
 * --wintra-link-decoration — тип подчёркивания (none | underline solid/dotted/dashed).
 * --wintra-link-transform  — регистр (none | uppercase).
 * Токены задаются в Админке → Модуль wintra.webcreator → Типографика.
 *
 * Регистр применяется ко ВСЕМ ссылкам и кнопкам — для единообразия. Если
 * шеф включил UPPERCASE — оно работает везде: навигация, кнопки, лого
 * (где есть текст), выпадайки. Это и есть смысл глобального токена.
 *
 * Подчёркивание для НАВИГАЦИОННЫХ элементов (.wm-btn / .uk-button /
 * пункты меню) убираем — иначе кнопки рендерятся с подчёркнутым текстом.
 */
a {
    color: var(--wintra-color-primary, #033fcb);
    text-decoration: var(--wintra-link-decoration, none);
    text-transform: var(--wintra-link-transform, none);
    text-underline-offset: 0.2em;
}
a:hover { text-decoration: underline; }
a.wm-btn, a.wm-logo, a.uk-button, a.uk-navbar-nav > li > a, a.uk-nav > li > a,
a.wm-card {
    text-decoration: none;
    /* регистр (text-transform) НАМЕРЕННО оставляем — наследуется из <a> */
}
/* Карточки-ссылки (tariffs/bento/grid-list с href) — никаких визуальных
 * эффектов hover (правило шефа: per-component анимации запрещены). */
a.wm-card,
a.wm-card:hover,
a.wm-card:focus,
a.wm-card:active {
    text-decoration: none;
    opacity: 1;
}
/* На тёмных секциях — белый текст по умолчанию (наследуется детьми
   через `color: inherit` или их собственные правила). Конкретные элементы
   (button-primary, accent-color) могут переопределять свой color. */
.section-dark,
.wm-row--dark,
[data-theme="dark"] { color: var(--wintra-color-surface); }

/* Ссылки на тёмном — surface, hover чуть приглушённо. */
.section-dark a,
.wm-row--dark a,
[data-theme="dark"] a { color: var(--wintra-color-surface); }
.section-dark a:hover,
.wm-row--dark a:hover,
[data-theme="dark"] a:hover { color: var(--wintra-color-surface); opacity: 0.78; }
/* Override: карточки-ссылки на тёмной теме не приглушаются */
.section-dark a.wm-card:hover,
.wm-row--dark a.wm-card:hover,
[data-theme="dark"] a.wm-card:hover { opacity: 1; }

/* === Контейнер UIKit с токен-переопределением padding (4 стороны) ===
 * UIKit даёт .uk-container (max-width + горизонтальные отступы).
 * Наши токены container.padding_* переопределяют все 4 стороны.
 * Модуль пишет значения токенов в :root через inline-style в <head>.
 */
.uk-container {
    padding-top: var(--wintra-container-padding-top, 40px);
    padding-right: var(--wintra-container-padding-right, 20px);
    padding-bottom: var(--wintra-container-padding-bottom, 40px);
    padding-left: var(--wintra-container-padding-left, 20px);
}

/* === Сетка модуля: .wm-row (секция-ряд PageGrid) ===
 * 3 уровня:
 *   1) <section class="wm-row"> — во всю ширину окна. Фон/margin задаются через CSS-переменные.
 *   2) <div class="uk-container[-size] wm-row__container"> — центрованный контейнер UIKit.
 *      Фон/padding читаются из переменных (fallback — глобальные токены :root).
 *   3) <div class="uk-grid-* wm-row__grid" uk-grid> — UIKit grid. Ширины колонок в
 *      <div class="uk-width-X-Y@s wm-row__col"> задаёт PageRenderer на основе span.
 *
 * ВСЕ конкретные значения (цвет, padding, radius) приходят через inline-style в виде
 * --wm-* переменных. CSS только объявляет, КАК эти переменные читаются. Это позволяет
 * переопределять фон/отступы/радиус из custom.css без специфичностных войн:
 *   .wm-row[data-row-id="hero"] { --wm-row-bg: linear-gradient(...); }
 */
/* === Группа рядов =====================================================
 * Соседние ряды с одинаковым `group:<id>` (задаётся в Сетке через префикс
 * метки ряда) оборачиваются PageRenderer'ом в <div class="wm-row-group
 * wm-row-group--<id>">. Используется для секций где общий фон/градиент
 * перекрывает несколько рядов (header + контент с непрерывной заливкой,
 * как «Наши услуги» в v14).
 *
 * Сам wm-row-group — прозрачная обёртка по умолчанию. Фон задаёт шеф в
 * custom.css по конкретному id-классу, например:
 *   .wm-row-group--services { background: linear-gradient(180deg,...); }
 *
 * Дочерние .wm-row внутри группы сохраняют свои настройки (margin, padding,
 * container width) — но обычно `background` ряда оставляют пустым, чтобы
 * не перекрывать групповой фон.
 */
.wm-row-group {
    display: block;
    width: 100%;
    position: relative;
    background: var(--wm-group-bg, transparent);
    /* overflow НЕ ставим — внутренние .wm-row уже обрезают свой контент.
       На уровне группы overflow:hidden может обрезать absolute-overlay
       компонентов (например uk-navbar-dropdown шапки если шапка в группе). */
}

.wm-row {
    display: block;
    width: 100%;
    position: relative;
    background: var(--wm-row-bg, transparent);
    margin-top: var(--wm-row-margin-top, 0);
    margin-bottom: var(--wm-row-margin-bottom, 0);
    /* Padding ряда — внутри фона. Используется когда нужен «воздух» вокруг
       контейнера, окрашенный фоном ряда (например серый ряд + синий
       контейнер с radius внутри, как v14 cta-блок). 0 по умолчанию.
       Объявлены 4 отдельных padding-* (не shorthand), чтобы каждая
       сторона была независимой CSS-переменной для override в custom.css. */
    padding-top:    var(--wm-row-pad-top,    0);
    padding-right:  var(--wm-row-pad-right,  0);
    padding-bottom: var(--wm-row-pad-bottom, 0);
    padding-left:   var(--wm-row-pad-left,   0);
    /* overflow-x:hidden СНЯТ — он автоматически переключает overflow-y
       на `auto` (CSS spec), что обрезает absolute-дропдауны меню в шапке
       (uk-navbar-dropdown, wm-menu__mega-drop) и добавляет vertical
       scrollbar внутри ряда. Защита от horizontal-overflow остаётся на
       уровне самих компонентов: .wm-slist--marquee имеет overflow:hidden
       на корне И на viewport (двойная защита). Если в будущем появится
       full-bleed-компонент без своей защиты — добавляем overflow:hidden
       на компоненте, не на ряду. */
}

/* === Позиционирование ряда (PageGrid → position_mode) =====================
 * UIKit-uk-sticky управляет переключением — мы только задаём начальное
 * положение и стиль активного состояния (когда добавлен .wm-row--stuck).
 *
 * sticky:  ряд в потоке, при скролле прибивается к верху (UIKit делает
 *          position:fixed; top:0). cls-active='wm-row--stuck' → при
 *          активации добавляется glass-эффект.
 *
 * overlay: ряд изначально position:absolute поверх следующего ряда (для
 *          шапки «с наездом» на hero). Сразу прозрачный; при скролле
 *          UIKit добавляет .wm-row--stuck → glass-фон. Hero снизу
 *          поднимается под y=0 окна (overlay-ряд вышел из потока).
 */
.wm-row--sticky {
    /* UIKit-uk-sticky сам поставит position:fixed; top:0 при активации.
       До активации ряд в потоке. */
    z-index: 100;
}

.wm-row--overlay {
    /* fixed (не absolute и не sticky) — шапка прибита к верху окна,
       выходит из потока (hero под ней начинается с y=0). UIKit-uk-sticky
       не подходит — он переключает на sticky и занимает место в потоке.
       Toggle класса .wm-row--stuck делает scroll-overlay.js на скролле.
       top: var(--wm-bx-panel-h) — учитываем Bitrix admin-panel сверху
       (для админа 39px, для гостя 0). */
    position: fixed;
    top: var(--wm-bx-panel-h, 0px);
    left: 0;
    right: 0;
    z-index: 100;
    transition: background 0.25s ease, backdrop-filter 0.25s ease, color 0.25s ease;
}

/* === Bitrix admin-panel offset =============================================
 * Когда админ залогинен — Bitrix вставляет <div id="bx-panel"> ~39px сверху
 * страницы. Стандартный 100vh не учитывает этот сдвиг → hero вылезает за
 * нижний край viewport на высоту панели. Через CSS-:has() детектируем
 * наличие панели и задаём переменную, которой пользуются все 100vh-расчёты.
 *
 * Поддержка :has(): Chrome 105+, Safari 15.4+, Firefox 121+. У админа
 * браузер всегда современный, у гостей панели нет — работает корректно.
 */
:root {
    --wm-bx-panel-h: 0px;
}
:root:has(#bx-panel) {
    --wm-bx-panel-h: 39px;
}

/* === Smooth scroll по якорным ссылкам ===============================
 * Правило шефа 06.06.2026: «нужно плавный ход дать и сделать это базой
 * всегда, если задаём ссылке якорь — прокрутка плавная».
 *
 * Используем NATIVE браузерный smooth (scroll-behavior:smooth) вместо
 * UIKit uk-scroll. Корень: ряды Сетки несут uk-scrollspy с анимациями
 * uk-animation-slide-bottom-small. UIKit-scroll по пути запускает scrollspy,
 * пересчитывает позицию из-за анимаций, на финале «дёргается» несколько раз.
 * Native CSS scroll-behavior к подобным reflow устойчив — браузер выполняет
 * scroll одним движением.
 *
 * scroll-padding-top = высота sticky-шапки (--wm-header-h, fallback 80px)
 * + панель Битрикса — при якорной навигации браузер сам отступает.
 * ==================================================================== */
html {
    scroll-behavior: smooth;
    scroll-padding-top: calc(var(--wm-header-h, 80px) + var(--wm-bx-panel-h, 0px));
}

/* === Универсальный glass-эффект =====================================
 * Образец — pill-список рубрикатора (29.04.2026, утверждено шефом).
 * Один класс/набор свойств для шапки overlay+stuck, outline-кнопок,
 * тизеров, рубрикатор-pill. Применяется через grouping selector ниже.
 *
 * Адаптив тёмный/светлый — через каскад от .wm-row--dark родителя:
 *   - Free-state над hero (галка «Тёмная тема» у ряда) — white-glass
 *     (rgba 255 0.06), текст светлый (caskадом color: surface).
 *   - Stuck-state на светлом content (template.js снимает wm-row--dark
 *     при scroll) — dark-glass (rgba 0 0.04), текст ink-чёрный
 *     (наследие default).
 *
 * НЕ изменять значения в одном месте — переключай везде синхронно,
 * чтобы стиль оставался единым.
 */
.wm-glass,
.wm-btn--glass,
.wm-row--stuck,
.wm-hero__teaser,
.wm-rubricator__list {
    background: rgba(0, 0, 0, 0.04);
    border: 1px solid rgba(0, 0, 0, 0.08);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.08);
}
/* Тёмный фон (галка «Тёмная тема» у ряда) — glass белый-полупрозрачный.
   Каскад единый для всех применений ниже. */
.wm-row--dark .wm-glass,
.wm-row--dark .wm-btn--glass,
.wm-row--dark.wm-row--stuck,
.wm-row--dark .wm-hero__teaser,
.wm-row--dark .wm-rubricator__list {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.14);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18);
}
.wm-row--dark .wm-rubricator__list {
    box-shadow: none;
}
/* Hover для кнопки glass — солидный fill, инверсия (одинаково для тёмного и светлого) */
.wm-btn--glass:hover,
.wm-row--dark .wm-btn--glass:hover {
    background: var(--wintra-color-surface);
    color: var(--wintra-color-primary);
    border-color: var(--wintra-color-surface);
}
/* Stuck-ряд: только нижняя граница-разделитель, без боковых/верхней */
.wm-row--stuck {
    border-left: none;
    border-right: none;
    border-top: none;
}

/* Когда overlay-ряд НЕ stuck (т.е. лежит поверх hero и шеф включил
   wm-row--dark на ряду или hero под ним тёмный) — текст светлый.
   Шеф настраивает галку «Тёмная тема» на overlay-ряду. */
/* Контейнер: max-width + центрирование (uk-container) + опц. фон/radius.
   Радиус: --wm-container-radius (px) если задан, иначе --wintra-radius модуля.
   max-width override через --wm-container-max-width (px) — точечное сжатие
   контейнера-карточки до ширины контента соседних рядов (например, синий
   контактный блок 1400 при .uk-container-large 1440 outer соседей). */
.wm-row__container {
    border-radius: var(--wm-container-radius, var(--wintra-radius, 0));
    position: relative;
    background: var(--wm-container-bg, transparent);
    padding-top: var(--wm-container-pad-top, var(--wintra-container-padding-top, 40px));
    padding-right: var(--wm-container-pad-right, var(--wintra-container-padding-right, 20px));
    padding-bottom: var(--wm-container-pad-bottom, var(--wintra-container-padding-bottom, 40px));
    padding-left: var(--wm-container-pad-left, var(--wintra-container-padding-left, 20px));
}
/* Override max-width: для контактных карточек-секций где outer-box должен
   совпасть с content-зоной соседних рядов (1400 при uk-container-large 1440).
   box-sizing: border-box обязателен — UIKit ставит .uk-container в content-box,
   и при max-width 1400 outer стал бы 1400 + padding = 1440. Border-box фиксит
   outer = max-width ровно. */
.wm-row__container[style*="--wm-container-max-width"] {
    max-width: var(--wm-container-max-width);
    box-sizing: border-box;
}
/* Реально применяем module_gap из настроек: переопределяем UIKit-default
 * нашим --wm-col-gap (PageRenderer выставляет его inline на ряд).
 * Без этого UIKit ставил бы свой default gutter (30–40px на широких экранах),
 * и админский токен `module.module_gap` визуально игнорировался бы. */
.wm-row__grid {
    margin-left: calc(-1 * var(--wm-col-gap, 24px)) !important;
}
.wm-row__grid > .wm-row__col {
    padding-left: var(--wm-col-gap, 24px) !important;
}

/* Сама .wm-row__col — ТОЛЬКО flex-item UIKit. Прозрачная, без фона/radius. */
.wm-row__col { min-width: 0; }

/* Все визуальные свойства модуля (фон, радиус, внутренний padding, margin)
 * живут на внутренней обёртке. Её бокс целиком внутри padding-left колонки,
 * то есть СТРОГО внутри контент-зоны контейнера. Идеальная матрёшка. */
.wm-row__col-inner {
    background: var(--wm-mod-bg, transparent);
    padding-top: var(--wm-mod-pad-top, 0);
    padding-right: var(--wm-mod-pad-right, 0);
    padding-bottom: var(--wm-mod-pad-bottom, 0);
    padding-left: var(--wm-mod-pad-left, 0);
    margin-top: var(--wm-mod-margin-top, 0);
    margin-bottom: var(--wm-mod-margin-bottom, 0);
    border-radius: var(--wm-mod-radius, 0);
    /* align модуля внутри колонки — работает для inline/inline-flex элементов
     * (phone/email/button/logo). Пусто = наследование. */
    text-align: var(--wm-mod-align, inherit);
    /* Flex-контейнер: content внутри (логотип/меню/кнопка) выравнивается
     * по align-items из НАСТРОЙКИ РЯДА (flex_v: top/middle/bottom).
     * PageRenderer ставит на <section> CSS-переменную --wm-row-flex-v
     * (mapping: top→flex-start, middle→center, bottom→flex-end).
     * Без display:flex block + inline-flex content давал baseline-descender
     * (col-inner на 7px выше content), что ломало выравнивание. */
    display: flex;
    align-items: var(--wm-row-flex-v, center);
}


/* 5-х доли — расширяют 12-grid UIKit (там только знаменатели 2/3/4/6).
 * Используются когда ряд имеет 5 колонок (например футер с 4 меню + контакты).
 * PageGrid::SPAN_CHOICES → 20/40/60/80 → классы 1-5/2-5/3-5/4-5. */
@media (min-width: 960px) {
    .uk-width-1-5\@m { width: 20%; }
    .uk-width-2-5\@m { width: 40%; }
    .uk-width-3-5\@m { width: 60%; }
    .uk-width-4-5\@m { width: 80%; }
}

/* Native ratings — группа чипов рейтингов «★ Я.Карты 4.8 (234)».
 *
 * Все размеры/радиусы/цвета — через токены модуля. Падинги и gap внутри
 * чипа выражены в `em` — относительно font-size (= --wintra-type-size-chip).
 * Это значит когда шеф меняет токен `type.size_chip` в настройках модуля,
 * пропорции чипа сохраняются автоматически.
 *
 * Звезда — UIKit-иконка `<span uk-icon="icon: star">`, SVG.
 * 3 варианта: chips-pale / chips-solid / bare. Тёмная тема — каскад. */
.wm-ratings {
    display: inline-flex;
    flex-wrap: wrap;
    gap: var(--wm-ratings-gap, var(--wintra-module-gap, 16px));
    align-items: center;
}
.wm-rating-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.5em;
    padding: 0.6em 1em;
    /* Радиус: колонка Сетки переопределяет (`Вид модуля → Радиус`).
     * Если пусто — глобальный радиус модуля. У ratings чип вытянутый —
     * крупный радиус превратит его в пилюлю, это ОК для большинства тем. */
    border-radius: var(--wm-mod-radius, var(--wintra-radius));
    text-decoration: none;
    font-size: var(--wintra-type-size-chip);
    line-height: 1.2;
    vertical-align: middle;
    color: var(--wintra-color-ink-muted);
}
.wm-rating-chip__star { color: var(--wintra-color-primary); display: inline-flex; }
.wm-rating-chip__star svg { width: 1.1em; height: 1.1em; }
.wm-rating-chip__label { opacity: 0.85; }
.wm-rating-chip__value { font-weight: 700; color: var(--wintra-color-ink); }
.wm-rating-chip__reviews { opacity: 0.6; }

/* --- variant: chips-pale --- бледная подложка (для футера/inline) */
.wm-ratings--chips-pale .wm-rating-chip { background: rgba(15, 23, 42, 0.05); }
.wm-ratings--chips-pale a.wm-rating-chip:hover { background: rgba(15, 23, 42, 0.09); }

/* --- variant: chips-solid --- белая сплошная подложка с тонкой рамкой */
.wm-ratings--chips-solid .wm-rating-chip {
    background: #fff;
    box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.08);
}

/* --- variant: bare --- без подложки, только звезда + текст */
.wm-ratings--bare .wm-rating-chip { background: transparent; padding: 0; }

/* Тёмная тема — каскад от ряда. */
.wm-row--dark .wm-rating-chip,
.wm-row-group--dark .wm-rating-chip,
[data-theme="dark"] .wm-rating-chip { color: rgba(255, 255, 255, 0.7); }
.wm-row--dark .wm-rating-chip__value,
.wm-row-group--dark .wm-rating-chip__value,
[data-theme="dark"] .wm-rating-chip__value { color: #fff; }
.wm-row--dark .wm-ratings--chips-pale .wm-rating-chip,
.wm-row-group--dark .wm-ratings--chips-pale .wm-rating-chip,
[data-theme="dark"] .wm-ratings--chips-pale .wm-rating-chip { background: rgba(255, 255, 255, 0.06); }
.wm-row--dark a.wm-rating-chip:hover,
.wm-row-group--dark a.wm-rating-chip:hover,
[data-theme="dark"] a.wm-rating-chip:hover { background: rgba(255, 255, 255, 0.12); }
.wm-row--dark .wm-ratings--chips-solid .wm-rating-chip,
.wm-row-group--dark .wm-ratings--chips-solid .wm-rating-chip,
[data-theme="dark"] .wm-ratings--chips-solid .wm-rating-chip {
    background: rgba(255, 255, 255, 0.1);
    box-shadow: none;
}

/* Native socials — ссылки-иконки соцсетей.
 *
 * Один HTML с переменным CSS-классом-вариантом:
 *   .wm-socials--chips-pale      — бледные плашки (футер)
 *   .wm-socials--icons-bare      — голые SVG (шапка/inline)
 *   .wm-socials--colored-circles — круги с бренд-цветом каждой соцсети
 *
 * Размер/зазор управляются через CSS-переменные (можно override
 * через inline-style на самом элементе из native-параметров size/gap).
 * Тёмная тема — каскад от .wm-row--dark / [data-theme="dark"].
 */
.wm-socials {
    display: flex;
    flex-wrap: wrap;
    gap: var(--wm-socials-gap, 12px);
    align-items: center;
}
.wm-social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    color: inherit;
    transition: none; /* hover-эффекты — глобальный слой, не здесь */
}
.wm-social-link img {
    display: block;
    width: var(--wm-socials-size, 18px);
    height: var(--wm-socials-size, 18px);
}

/* --- vairant: chips-pale (футер) --- */
.wm-socials--chips-pale { --wm-socials-size: 22px; --wm-socials-gap: 12px; }
.wm-socials--chips-pale .wm-social-link {
    width: 44px;
    height: 44px;
    /* Радиус: колонка Сетки переопределяет (`Вид модуля → Радиус`). Если
     * пусто — пропорционально размеру плашки (0.625em ≈ 10px при 16px body) —
     * не наследуем глобальный --wintra-radius чтобы крупный радиус сайта
     * не делал квадратные иконки идеально круглыми (44/2=22 ≥ радиус → круг). */
    border-radius: var(--wm-mod-radius, 0.625em);
    background: rgba(15, 23, 42, 0.05);
    color: var(--wintra-color-ink-muted);
}
.wm-socials--chips-pale .wm-social-link:hover { background: var(--wintra-color-primary, #033fcb); color: #fff; }
.wm-socials--chips-pale .wm-social-link img   { filter: none; }

/* В тёмном ряду — плашки белёсые с прозрачностью, как в v14. */
.wm-row--dark .wm-socials--chips-pale .wm-social-link,
.wm-row-group--dark .wm-socials--chips-pale .wm-social-link,
[data-theme="dark"] .wm-socials--chips-pale .wm-social-link {
    background: rgba(255, 255, 255, 0.05);
    color: rgba(255, 255, 255, 0.65);
}
.wm-row--dark .wm-socials--chips-pale .wm-social-link img,
.wm-row-group--dark .wm-socials--chips-pale .wm-social-link img,
[data-theme="dark"] .wm-socials--chips-pale .wm-social-link img {
    filter: invert(1) brightness(2);
}
.wm-row--dark .wm-socials--chips-pale .wm-social-link:hover,
.wm-row-group--dark .wm-socials--chips-pale .wm-social-link:hover,
[data-theme="dark"] .wm-socials--chips-pale .wm-social-link:hover {
    background: var(--wintra-color-primary, #033fcb);
    color: #fff;
}

/* --- variant: icons-bare (шапка) --- */
.wm-socials--icons-bare { --wm-socials-size: 24px; --wm-socials-gap: 16px; }
.wm-socials--icons-bare .wm-social-link {
    width: var(--wm-socials-size, 24px);
    height: var(--wm-socials-size, 24px);
    color: var(--wintra-color-ink, #1f2937);
}
.wm-socials--icons-bare .wm-social-link:hover { color: var(--wintra-color-primary, #033fcb); }
.wm-row--dark .wm-socials--icons-bare .wm-social-link img,
.wm-row-group--dark .wm-socials--icons-bare .wm-social-link img,
[data-theme="dark"] .wm-socials--icons-bare .wm-social-link img {
    filter: invert(1) brightness(2);
}

/* --- variant: colored-circles (страница контактов) --- */
.wm-socials--colored-circles { --wm-socials-size: 26px; --wm-socials-gap: 14px; }
.wm-socials--colored-circles .wm-social-link {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--wm-social-color, var(--wintra-color-primary, #033fcb));
    color: #fff;
}
.wm-socials--colored-circles .wm-social-link img {
    filter: brightness(0) invert(1);
}
.wm-socials--colored-circles .wm-social-link:hover { transform: none; opacity: 0.9; }

/* Вертикальный ряд — column-stack. Колонки horizontal-ряда могут вмещать
 * вложенный ряд direction=vertical: его модули рендерятся друг под другом
 * с одинаковым gap (по умолчанию = --wintra-module-gap). */
.wm-col-stack {
    display: flex;
    flex-direction: column;
    gap: var(--wm-stack-gap, var(--wintra-module-gap, 16px));
    width: 100%;
}
.wm-col-stack > .wm-row__col-inner { width: 100%; }
.wm-col-stack[data-align="center"] { align-items: center; text-align: center; }
.wm-col-stack[data-align="right"]  { align-items: flex-end; text-align: right; }
.wm-col-stack[data-align="left"]   { align-items: flex-start; text-align: left; }

/* Placeholder для колонки без привязанного компонента (Этап A-1).
 * На Этапе C здесь будет рендериться $APPLICATION->IncludeComponent() по slug. */
.wm-row__placeholder {
    display: flex; align-items: center; justify-content: center;
    min-height: 96px; padding: 16px;
    border: 1px dashed var(--wm-template-border, #e5e7eb);
    background: var(--wm-template-bg-soft, #f5f6f8);
    color: var(--wintra-color-ink-muted, #6b7280);
    font-size: 12px; font-family: 'JetBrains Mono', ui-monospace, monospace;
    letter-spacing: 0.05em;
}
.wm-row__ref-stub {
    padding: 12px 16px; border-left: 3px solid var(--wintra-color-primary, #033fcb);
    background: var(--wm-template-bg-soft, #f5f6f8);
    color: var(--wintra-color-ink-muted, #6b7280);
    font-size: 12px;
}
.wm-row__ref-stub code {
    background: #fff; padding: 2px 6px; border: 1px solid var(--wm-template-border, #e5e7eb);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
}

/* Мобильная раскладка: UIKit `@s` breakpoint автоматически стекает колонки
 * (uk-width-X-Y@s активен только с ≥640px, ниже все колонки полной ширины).
 * Никаких кастомных media-queries — фреймворк это уже умеет. */

/* Стили компонентов-кирпичей (wm.header, wm.news.* и т.д.) живут внутри пакетов
 * (install/components/<code>.v<N>/assets/*.css) и инжектятся Registry через
 * Asset::addString() при рендере. Тут их НЕТ. */

/* === Layout корпоративного шаблона === */

.wintra-layout {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.wintra-header {
    border-bottom: 1px solid var(--wm-template-border);
    background: var(--wintra-color-surface);
    position: sticky;
    top: 0;
    z-index: 100;
}

.wintra-header .uk-container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 72px;
    gap: 32px;
}

/* === Логотип: SVG перекрашивается через CSS currentColor ===
 * SVG должен содержать fill="currentColor" (или вовсе без fill).
 * Модификаторы задают контекст:
 *   .wintra-logo--brand — основной цвет бренда (по умолчанию)
 *   .wintra-logo--light — светлый (для тёмных секций — section-dark, footer)
 *   .wintra-logo--dark  — тёмный (для светлых фонов)
 *   .wintra-logo--ink   — цвет текста (нейтральный)
 */
.wintra-logo {
    display: inline-flex;
    align-items: center;
    color: var(--wintra-color-primary, #033fcb);
    transition: color 0.2s ease;
}
.wintra-logo svg {
    width: auto;
    height: 40px;
    fill: currentColor;
}
.wintra-logo svg path,
.wintra-logo svg rect,
.wintra-logo svg circle,
.wintra-logo svg ellipse,
.wintra-logo svg polygon,
.wintra-logo svg polyline { fill: currentColor; }

.wintra-logo--brand { color: var(--wintra-color-primary, #033fcb); }
.wintra-logo--light { color: var(--wintra-color-surface, #ffffff); }
.wintra-logo--dark  { color: var(--wintra-color-ink, #0a0f1f); }
.wintra-logo--ink   { color: var(--wintra-color-ink, #0a0f1f); }

/* Hover — автоматический переход к тёмному варианту бренда */
.wintra-logo:hover { opacity: 0.85; }

.wintra-nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 32px; }
.wintra-nav a { color: var(--wintra-color-ink); font-weight: 500; }

.wintra-main {
    flex: 1 0 auto;
}

.wintra-footer {
    margin-top: auto;
    background: var(--wm-template-bg-soft);
    padding-block: 48px 24px;
    color: var(--wintra-color-ink-muted);
}

.wintra-footer__top {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 32px;
    padding-bottom: 32px;
    border-bottom: 1px solid var(--wm-template-border);
}

.wintra-footer__nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.wintra-footer__nav a { color: var(--wintra-color-ink-muted); }

.wintra-footer__bottom {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
    padding-top: 24px;
    font-size: 14px;
}

@media (max-width: 768px) {
    .wintra-header .uk-container { flex-direction: column; align-items: flex-start; padding-block: 16px; }
    .wintra-nav ul { gap: 16px; flex-wrap: wrap; }
}

/* === Native .wm-logo ============================================================
 * Рендерится NativeElements::renderLogo() — обёртка <a> или <span> (на главной)
 * с классами wm-logo wm-logo--{auto|brand|light|dark}. CSS-переменные
 * --wm-logo-width / --wm-logo-height приезжают из inline-style (из параметров
 * колонки PageGrid). SVG-path'ы окрашиваются через currentColor — чтобы variant
 * менял цвет одним правилом, а не 6-ю fill'ами.
 * ============================================================================ */
.wm-logo {
    display: inline-flex;
    align-items: center;
    text-decoration: none;
    line-height: 0;
    color: currentColor;
    height: var(--wm-logo-height, auto);
    width:  var(--wm-logo-width, auto);
}
.wm-logo svg {
    display: block;
    height: 100%;
    width:  auto;
    max-width: 100%;
}
/* Если админ задал и width, и height — svg заполняет обе оси по viewBox. */
.wm-logo[style*="--wm-logo-width"][style*="--wm-logo-height"] svg {
    width: 100%;
    height: 100%;
}

/* Варианты цвета — currentColor пробрасывается в path'ы. */
.wm-logo svg .fil0,
.wm-logo svg .fil1,
.wm-logo svg .fil2,
.wm-logo svg .fil3,
.wm-logo svg .fil4,
.wm-logo svg .fil5,
.wm-logo svg path { fill: currentColor; }

.wm-logo--brand { color: var(--wintra-color-primary, #033fcb); }
.wm-logo--light { color: #ffffff; }
.wm-logo--dark  { color: var(--wintra-color-ink, #0a0a0a); }

/* Auto — берёт основной цвет темы (primary), на тёмных секциях — светлый.
 * .section-dark / .wm-row--dark выставляет верстальщик вручную на родителе. */
.wm-logo--auto { color: var(--wintra-color-primary, #033fcb); }
.section-dark .wm-logo--auto,
.wm-row--dark .wm-logo--auto,
[data-theme="dark"] .wm-logo--auto { color: #ffffff; }

/* === Native .wm-btn — кнопка с НАШИМИ токенами =================================
 * UIKit-варианты (uk-button-primary и т.д.) не читают --wintra-color-* и приходят
 * дефолтно-синими. Поэтому свой класс .wm-btn + 4 варианта через --wintra-color-*.
 *   primary   — фон = primary
 *   secondary — фон = secondary
 *   outline   — прозрачный + рамка primary
 *   ghost     — только текст primary, без фона/рамки
 * ============================================================================ */
.wm-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 24px;
    border-radius: var(--wintra-btn-radius, var(--wintra-radius, 8px));
    font-family: inherit;
    font-weight: 600;
    font-size: inherit;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    border: 1px solid transparent;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, opacity 0.15s ease;
    white-space: nowrap;
}
.wm-btn:hover { text-decoration: none; }

.wm-btn--primary {
    background: var(--wintra-color-primary, #033fcb);
    color: var(--wintra-color-on-primary, #ffffff);
}
.wm-btn--primary:hover {
    background: var(--wintra-color-primary-dark, #002c97);
    color: var(--wintra-color-on-primary, #ffffff);
}

.wm-btn--secondary {
    background: var(--wintra-color-secondary, #171c21);
    color: var(--wintra-color-on-secondary, #ffffff);
}
.wm-btn--secondary:hover { opacity: 0.88; }

.wm-btn--outline {
    background: transparent;
    color: var(--wintra-color-primary, #033fcb);
    border-color: var(--wintra-color-primary, #033fcb);
}
.wm-btn--outline:hover {
    background: var(--wintra-color-primary, #033fcb);
    color: var(--wintra-color-on-primary, #ffffff);
}

/* На dark-ряду / dark-группе outline-кнопка становится белой
   (color уже наследуется каскадом тёмной темы, а border-color
   надо переключать явно — не каскадирует). */
.wm-row--dark .wm-btn--outline,
[data-theme="dark"] .wm-btn--outline {
    color: var(--wintra-color-on-primary, #ffffff);
    border-color: var(--wintra-color-on-primary, #ffffff);
}
.wm-row--dark .wm-btn--outline:hover,
[data-theme="dark"] .wm-btn--outline:hover {
    background: var(--wintra-color-on-primary, #ffffff);
    color: var(--wintra-color-primary, #033fcb);
    border-color: var(--wintra-color-on-primary, #ffffff);
}

.wm-btn--ghost {
    background: transparent;
    color: var(--wintra-color-primary, #033fcb);
    padding-left: 0;
    padding-right: 0;
}
.wm-btn--ghost:hover { color: var(--wintra-color-primary-dark, #002c97); }

.wm-btn__icon { line-height: 0; }

/* === Native contact items (phone/email/address/work_hours) =================
 *
 * NativeElements рендерит каждый из 4 контактных типов как:
 *   <a|div class="wm-contact wm-contact--<variant> wm-<type>">
 *     <span class="wm-contact__icon-wrap?"><span uk-icon class="wm-contact__icon"></span></span>
 *     <span class="wm-contact__body?">
 *       <span class="wm-contact__label">…</span>
 *       <span class="wm-contact__value">…</span>
 *     </span>
 *   </a>
 *
 * Три варианта раскладки (--variant):
 *   inline  — иконка + значение в строку (default; для шапки/футера)
 *   circled — круг 48×48 + label сверху + value bold (как в v14 «Обсудим ваш проект?»)
 *   bare    — только значение, без иконки (для футера с минимумом)
 *
 * Цвет: phone/email — primary-link (наследуют from <a> правил), на тёмной
 * теме — белый (caskade .section-dark/.wm-row--dark/[data-theme=dark] из
 * шапки этого файла). address/work_hours — наследуют ink, на тёмной — белый.
 *
 * НИКАКИХ hover/transition в style.css компонентов — по правилу
 * `feedback_no_per_component_animations.md`. Все 3 состояния
 * :hover/:focus/:active объявляем одним блоком (правило
 * `feedback_webcreator_link_states_inline_block.md`).
 */
.wm-contact,
.wm-contact:hover,
.wm-contact:focus,
.wm-contact:active {
    display: inline-flex;
    align-items: center;
    color: inherit;
    text-decoration: none;
    line-height: 1.4;
}
/* --- Inline (default) ----------------------------------------------------- */
.wm-contact--inline { gap: 8px; }
.wm-contact--inline .wm-contact__icon { line-height: 0; opacity: 0.7; }
.wm-contact--inline .wm-contact__label {
    font-size: var(--wintra-type-size-chip);
    opacity: 0.6;
    margin-right: 4px;
}
/* --- Circled (v14-style) -------------------------------------------------- */
.wm-contact--circled { gap: 16px; align-items: center; }
.wm-contact--circled .wm-contact__icon-wrap {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 999px;
    border: 1px solid currentColor;
    flex-shrink: 0;
    /* На тёмной теме border полупрозрачный — переопределяем ниже каскадом */
}
.wm-contact--circled .wm-contact__icon { line-height: 0; }
.wm-contact--circled .wm-contact__body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.wm-contact--circled .wm-contact__label {
    font-size: var(--wintra-type-size-chip);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    opacity: 0.6;
}
.wm-contact--circled .wm-contact__value {
    font-size: var(--wintra-type-size-h4);
    font-weight: 700;
    line-height: 1.25;
}
/* --- Bare ----------------------------------------------------------------- */
.wm-contact--bare { gap: 0; }

/* --- Цвет: phone/email — primary (как все ссылки), address/work_hours — ink */
.wm-phone,
.wm-email,
.wm-phone:hover, .wm-phone:focus, .wm-phone:active,
.wm-email:hover, .wm-email:focus, .wm-email:active { color: var(--wintra-color-primary, #033fcb); }
.wm-address,
.wm-work-hours,
.wm-address:hover, .wm-address:focus, .wm-address:active,
.wm-work-hours:hover, .wm-work-hours:focus, .wm-work-hours:active { color: inherit; }

/* На тёмной теме — всё белое (наследуется в детях через color:inherit) */
.section-dark .wm-contact,
.wm-row--dark .wm-contact,
[data-theme="dark"] .wm-contact,
.section-dark .wm-contact:hover,
.wm-row--dark .wm-contact:hover,
[data-theme="dark"] .wm-contact:hover { color: inherit; }
/* Круг на тёмной — полупрозрачный border (v14-эффект) */
.section-dark .wm-contact--circled .wm-contact__icon-wrap,
.wm-row--dark .wm-contact--circled .wm-contact__icon-wrap,
[data-theme="dark"] .wm-contact--circled .wm-contact__icon-wrap {
    border-color: rgba(255, 255, 255, 0.2);
}

/* === Стек контактов — вертикальная колонка с обычным module-gap ============
 * Используется внутри слот-компонента wm.contacts (контейнер для нескольких
 * .wm-contact одного варианта). Если шеф хочет другой gap — переопределяет
 * через колоночный padding или custom.css.
 */
.wm-contact-stack {
    display: flex;
    flex-direction: column;
    gap: var(--wintra-padding-small, 16px);
}

/* === Native heading/text =================================================== */
/* Жёсткое font-weight:700 на .wm-heading УДАЛЕНО 30.04.2026 — ломало
   контраст «тонкий заголовок + <strong>bold</strong>». Вес теперь
   управляется токенами через блок «Глобальная типография» сверху файла:
     • сам h1/h2/h3 — наследует --wintra-type-weight-heading-light
     • <strong>/<b> внутри — --wintra-type-weight-heading-bold */
.wm-heading { margin: 0 0 0.5em; }
.wm-text { margin: 0 0 1em; }
.wm-text:last-child,
.wm-heading:last-child { margin-bottom: 0; }

/* === Kicker (overline / eyebrow) =========================================
 * Утилитный класс для короткого маркетингового заголовка над основным
 * контентом (например «опыт» над числом «15+», «миссия» над h2). Часть
 * дизайн-системы модуля — применяется глобально на всех сайтах.
 *
 * Размер — единственное что управляется per-site через токен
 * --wintra-type-size-kicker (Tokens::DEFAULTS.type.size_kicker, default 12).
 * Остальное (uppercase / weight 700 / letter-spacing 0.08em / ink-muted)
 * вшито — это формообразующие свойства паттерна kicker, везде одинаковые.
 *
 * Используется через class="wm-kicker" в любом компоненте/шаблоне.
 * В тёмной теме (.wm-row--dark родитель) — приглушённый светлый. */
.wm-kicker {
    display: inline-block;
    font-size: var(--wintra-type-size-kicker, 12px);
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--wintra-color-ink-muted, #475569);
}
.wm-row--dark .wm-kicker {
    color: rgba(255, 255, 255, 0.65);
}

/* === Shadow (utility) ====================================================
 * Утилитный класс для тени карточек/бейджей. Token-driven:
 * --wintra-shadow-card задаётся в табе «Эффекты» админки.
 *
 * Применяется через class="wm-shadow" в любом компоненте/шаблоне (например
 * параметр WM_CARD_SHADOW в wm.grid-list навешивает этот класс на
 * .wm-grid-list__card). Часть дизайн-системы модуля. */
.wm-shadow {
    box-shadow: var(--wintra-shadow-card, 0 8px 24px rgba(15, 23, 42, 0.08));
}

/* === UIKit dotnav — pill-индикатор (override штатных кружочков) ============
 * Единый стиль pagination для всех wm-компонентов на UIKit-слайдерах:
 * uk-slideshow-nav, uk-slider-nav, uk-dotnav. Активная точка растягивается
 * в pill-pаску, остальные — мелкие приглушённые. Цвет берётся из бренда
 * (--wintra-color-primary). На тёмных рядах (.wm-row--dark) — белый.
 *
 * Token-driven: меняется через переменные --wm-dot-* без правки CSS.
 * Применимо на любом сайте с этим модулем — это часть дизайн-системы. */
.uk-dotnav {
    --wm-dot-size: 8px;
    --wm-dot-active-w: 24px;
    --wm-dot-bg: rgba(10, 14, 26, 0.18);
    --wm-dot-bg-hover: rgba(10, 14, 26, 0.35);
    --wm-dot-bg-active: var(--wintra-color-primary, #033fcb);
    gap: 10px;
}
.uk-dotnav > * {
    padding-left: 0;
}
.uk-dotnav > * > * {
    width: var(--wm-dot-size);
    height: var(--wm-dot-size);
    border-radius: 999px;
    background: var(--wm-dot-bg);
    border: 0;
    padding: 0;
    box-shadow: none;
    transition: width 0.3s ease, background 0.3s ease, border-radius 0.25s ease;
}
.uk-dotnav > * > *:hover,
.uk-dotnav > * > *:focus {
    background: var(--wm-dot-bg-hover);
    box-shadow: none;
    outline: none;
}
.uk-dotnav > .uk-active > * {
    width: var(--wm-dot-active-w);
    border-radius: 4px;
    background: var(--wm-dot-bg-active);
}

/* Тёмная тема ряда — приглушённо-белые точки, активный — чистый белый */
.wm-row--dark .uk-dotnav,
.section-dark .uk-dotnav,
[data-theme="dark"] .uk-dotnav {
    --wm-dot-bg: rgba(255, 255, 255, 0.28);
    --wm-dot-bg-hover: rgba(255, 255, 255, 0.55);
    --wm-dot-bg-active: var(--wintra-color-surface, #ffffff);
    --wm-dot-active-w: 28px;
}

/* ═══════════════════════════════════════════════════════════════════════
 * TIER 2 — CARD-СИСТЕМА (общие классы карточек wm-*)
 * Принцип однообразия модуля. Применяются ВО ВСЕХ wm-компонентах с
 * карточками (wm.tariffs, wm.cards-bento, wm.grid-list, будущие).
 *
 * Структура классов:
 *   .wm-card               — карточка целиком (padding, gap, radius)
 *   .wm-card-icon          — иконка 48×48 в круглой подложке
 *   .wm-card-icon--lg      — увеличенная (для bento large)
 *   .wm-card-title         — h3 (toкен h3, weight bold)
 *   .wm-card-title--sm     — мельче (для слайдер-карточек, tariffs)
 *   .wm-card-price         — цена (h3 size, weight bold)
 *   .wm-card-price--lg     — крупная (для тарифов: 30px / 900)
 *   .wm-card-desc          — описание (body, opacity 0.7-0.8)
 *   .wm-card-params        — список характеристик (вертикальный stack)
 *   .wm-card-param         — одна строка параметра (icon + text)
 *   .wm-card-param-icon    — иконка слева у параметра
 *   .wm-card-badge         — pill в правом верхнем (метка «Популярно»)
 *   .wm-card-arrow         — стрелка-«Подробнее» (всегда right-align)
 *   .wm-card-foot          — подвал карточки (для arrow + price flex-row)
 *
 * SPACING-ТОКЕНЫ (общее лекало):
 *   --wm-card-padding         — внутренний padding карточки
 *   --wm-card-content-gap     — между title/price/desc внутри карты
 *   --wm-card-section-gap     — между card-content и card-foot (arrow)
 *   --wm-card-icon-mb         — отступ под иконкой
 *   --wm-card-title-mb        — отступ под заголовком
 *   --wm-card-params-gap      — между строками параметров
 *
 * Специфика per-component → в style.css компонента (например у bento
 * цена primary-цвет, у tariffs glass-фон). Общая база — здесь.
 * ═══════════════════════════════════════════════════════════════════════ */

/* Spacing-токены module — используются всеми .wm-card-*
 *
 * Иерархия:
 *   --wintra-module-gap (Tokens::DEFAULTS) — корневой ритм (default 24px)
 *   --wm-spacing-small  = gap × 0.5 (~12px) — внутри-секция, мелкие промежутки
 *   --wm-spacing-medium = gap       (~24px) — между секциями карточки
 *   --wm-spacing-large  = gap × 2   (~48px) — для крупных карточек / large-padding
 *
 * Vertical rhythm в карточке (margin-bottom после каждого слота):
 *   icon  → next:  small (12)
 *   title → next:  medium (24)   — отступ перед ценой увеличен
 *   price → next:  small  (12)   — между ценой и параметрами компактно
 *   params → next: medium (24)   — между параметрами и описанием как title-spacing
 *   desc  → next:  0 (последний слот) */
:root {
    /* Vertical-rhythm уровни (gap между секциями карточки) — производные от
     * module-gap, CSS-уровень. Если шеф меняет module_gap в админке,
     * пересчитываются автоматически. */
    --wm-spacing-small:   calc(var(--wintra-module-gap, 24px) * 0.5);
    --wm-spacing-medium:  var(--wintra-module-gap, 24px);
    --wm-spacing-large:   calc(var(--wintra-module-gap, 24px) * 2);

    /* Padding карточек — 3 уровня из админки (Tokens::DEFAULTS module.padding_*).
     * Шеф настраивает через таб «05 Контейнер» / «Модули по умолчанию». */
    --wm-card-padding-sm: var(--wintra-padding-small,  16px);
    --wm-card-padding-md: var(--wintra-padding-medium, 24px);
    --wm-card-padding-lg: var(--wintra-padding-large,  48px);
    --wm-card-padding:    var(--wm-card-padding-md);  /* default */

    --wm-card-section-gap: var(--wm-spacing-medium);
    --wm-card-icon-mb:    var(--wm-spacing-small);
    --wm-card-title-mb:   var(--wm-spacing-medium);
    --wm-card-price-mb:   var(--wm-spacing-small);
    --wm-card-params-mb:  var(--wm-spacing-medium);
    --wm-card-params-gap: calc(var(--wintra-module-gap, 24px) * 0.25);
    --wm-card-icon-size:  48px;
    --wm-card-icon-radius: var(--wintra-radius, 8px);
}

/* Карточка целиком (padding + gap внутреннего стэка + radius)
 *
 * Модификаторы padding по плотности раскладки:
 *   --padding-sm  : --wm-card-padding (24px) — для рядов 4+ карточек (компакт)
 *   --padding-lg  : --wm-card-padding-lg (48px) — для рядов 1-3 карточек (воздух)
 *   default (без mod) — small */
.wm-card {
    padding: var(--wm-card-padding);
    border-radius: var(--wintra-radius, 8px);
    color: inherit;
    box-sizing: border-box;
}
.wm-card--padding-sm { padding: var(--wm-card-padding-sm); }
.wm-card--padding-md { padding: var(--wm-card-padding-md); }
.wm-card--padding-lg { padding: var(--wm-card-padding-lg); }

/* UIKit-shadow override (03.06.2026) — отключаем нативные тени UIKit на
 * .uk-card-default ВО ВСЕХ состояниях (default + hover). UIKit ставит:
 *   .uk-card-default            → box-shadow: 0 5px 15px rgba(0,0,0,.08)
 *   .uk-card-default:hover      → box-shadow: 0 14px 25px rgba(0,0,0,.16)
 *   .uk-card-hover:hover        → box-shadow: 0 14px 25px rgba(0,0,0,.16)
 * Шеф запретил тени per-component (правило 30.04.2026, общая система
 * планируется через настройки модуля). Подавляем UIKit-уровень на любой
 * .wm-card сразу для базового и hover-состояния.
 */
.wm-card.uk-card-default,
.uk-card-default.wm-card,
.wm-card.uk-card-default:hover,
.uk-card-default.wm-card:hover,
.wm-card.uk-card-hover:hover {
    box-shadow: none;
}

/* Иконка — круглая подложка 48×48, опционально модификатор --lg */
.wm-card-icon {
    width: var(--wm-card-icon-size);
    height: var(--wm-card-icon-size);
    border-radius: var(--wm-card-icon-radius);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: inherit;
    background: rgba(10, 14, 26, 0.05);
    margin-bottom: var(--wm-card-icon-mb);
}
.wm-card-icon--lg {
    --wm-card-icon-size: 64px;
}
[data-theme="dark"] .wm-card-icon,
.wm-row--dark .wm-card-icon {
    background: rgba(255, 255, 255, 0.10);
}

/* Заголовок карточки (h3-token, bold). --sm для слайдер-карточек.
 * margin: 0 — vertical rhythm применяется scoped через .wm-card__stack
 * или per-component контейнер (.wm-tariffs__head). */
.wm-card-title {
    margin: 0;
    font-size: var(--wintra-type-size-h3, 1.25rem);
    font-weight: var(--wintra-type-weight-heading-bold, 800);
    line-height: 1.3;
    color: inherit;
}
/* Маленькие карточки (4+ в ряд, тизеры) — h4-размер.
 * Применяется автоматически на тегах h4.wm-card-title (тип h4)
 * ИЛИ через явный модификатор .wm-card-title--sm на любой h-тег. */
h4.wm-card-title,
.wm-card-title--sm {
    font-size: var(--wintra-type-size-h4);
}

/* Описание — body text с пониженной opacity. */
.wm-card-desc {
    margin: 0;
    color: inherit;
    opacity: 0.75;
    line-height: var(--wintra-type-line-height-body, 1.5);
}

/* Цена — bold, негативный letter-spacing. --lg для тарифов (30px / 900). */
.wm-card-price {
    margin: 0;
    font-size: var(--wintra-type-size-h3, 1.25rem);
    font-weight: var(--wintra-type-weight-heading-bold, 800);
    letter-spacing: -0.01em;
    color: inherit;
}
.wm-card-price--lg {
    font-size: 1.875rem;
    font-weight: 900;
    letter-spacing: -0.02em;
    line-height: 1.1;
}

/* Список параметров (вертикальный stack). */
.wm-card-params {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--wm-card-params-gap);
    font-size: 0.875rem;
    opacity: 0.7;
    color: inherit;
}

/* === Vertical rhythm контейнер ============================================
 * Класс .wm-card__stack применяется к контейнеру внутри карточки где slots
 * идут вертикальной стопкой (icon → title → price → params → desc).
 * Margin-bottom по slot'ам — token-driven, читает уровни из admin-токенов:
 *   icon  → small  (12)
 *   title → medium (24)
 *   price → small  (12)
 *   params → medium (24)
 *   desc  → 0 (последний)
 *
 * НЕ применяется глобально к .wm-card-* потому что не во всех компонентах
 * slot'ы идут стопкой (например в bento price лежит во flex-foot — ей
 * нижний отступ не нужен). Нужен явный класс-контейнер. */
.wm-card__stack > .wm-card-icon   { margin-bottom: var(--wm-card-icon-mb); }
.wm-card__stack > .wm-card-title  { margin-bottom: var(--wm-card-title-mb); }
.wm-card__stack > .wm-card-price  { margin-bottom: var(--wm-card-price-mb); }
.wm-card__stack > .wm-card-params { margin-bottom: var(--wm-card-params-mb); }
.wm-card__stack > .wm-card-desc   { margin-bottom: 0; }
.wm-card-param {
    display: flex;
    align-items: center;
    gap: 6px;
}
.wm-card-param-icon {
    flex: 0 0 auto;
    opacity: 0.9;
}

/* Бейдж — pill в правом верхнем углу (метка «Популярно» / «Новинка»). */
.wm-card-badge {
    position: absolute;
    top: 16px;
    right: 16px;
    background: var(--wintra-color-accent, #FB4825);
    color: var(--wintra-color-on-accent, #ffffff);
    border-radius: 999px;
    padding: 5px 10px;
    font-size: 10px;
    font-weight: var(--wintra-type-weight-heading-bold, 800);
    text-transform: uppercase;
    letter-spacing: 0.10em;
    line-height: 1;
    z-index: 2;
}

/* Стрелка-«Подробнее» — всегда right-aligned. Цвет наследуется.
 * Hover-цвет primary держим в общем шаблоне, а не в style.css компонента
 * (правило: hover/transition/animation в style.css компонента запрещены —
 * любое единое поведение wm-карточек живёт здесь). */
.wm-card-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    color: currentColor;
    flex-shrink: 0;
    text-decoration: none;
}
a.wm-card-arrow:hover,
a.wm-card-arrow:focus {
    color: var(--wintra-color-primary);
    text-decoration: none;
}

/* Подвал карточки — для размещения arrow с right-align (отдельно от content) */
.wm-card-foot {
    display: flex;
    justify-content: flex-end;
    margin-top: var(--wm-card-section-gap);
}

/* === Native include-file — общий стиль текстового блока в Сетке =========
 * Используется native-элементом 'include' (lib/theme/nativeelements.php).
 * Per-site может через .wm-page-<slug> переопределить размер/вес, но цвет
 * в любом случае наследует от темы (на [data-theme="dark"] — surface). */
.wm-include-file {
    color: inherit;
    line-height: var(--wintra-type-line-height-body, 1.5);
    opacity: 0.75;
}

/* === UIKit tooltip — брендирование под Винтру (по эталону v14) ============
 * UIKit-дефолт: серый (#666), 12px, padding 3×6, radius 2 — выглядит как
 * системный hint. Перебиваем под бренд: primary-фон, тень, мягкий padding.
 * Стрелочка-уголок добавляется через ::after, направление — по data-uk-position
 * (UIKit ставит модификаторы pos-top / pos-bottom / pos-left / pos-right).
 */
.uk-tooltip {
    background: var(--wintra-color-primary, #033fcb);
    color: var(--wintra-color-on-primary, #ffffff);
    font-size: 13px;
    font-weight: var(--wintra-type-weight-heading-bold, 700);
    line-height: 1.3;
    padding: 10px 16px;
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(3, 63, 203, 0.30);
    max-width: 280px;
    white-space: nowrap;
}

/* Стрелочка-уголок (треугольник, указывает ОТ tooltip К якорю).
 * UIKit-3 не даёт modifier-класс при разных pos — позиция через inline-style.
 * JS template.js (initTooltipArrowAutoPos) отслеживает появление tooltip'а,
 * сравнивает его координаты с якорем и ставит wm-tip-pos-{top|bottom|left|right}.
 * Здесь — только визуальная отрисовка по этим классам. */
.uk-tooltip::after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    border: 6px solid transparent;
}
/* tooltip ПОД якорем → стрелка ВВЕРХ (border-bottom-color = цвет треугольника) */
.uk-tooltip.wm-tip-pos-bottom::after {
    top: -12px;
    left: 50%;
    transform: translateX(-50%);
    border-bottom-color: var(--wintra-color-primary, #033fcb);
}
/* tooltip НАД якорем → стрелка ВНИЗ */
.uk-tooltip.wm-tip-pos-top::after {
    bottom: -12px;
    left: 50%;
    transform: translateX(-50%);
    border-top-color: var(--wintra-color-primary, #033fcb);
}
/* tooltip СПРАВА от якоря → стрелка ВЛЕВО */
.uk-tooltip.wm-tip-pos-right::after {
    left: -12px;
    top: 50%;
    transform: translateY(-50%);
    border-right-color: var(--wintra-color-primary, #033fcb);
}
/* tooltip СЛЕВА от якоря → стрелка ВПРАВО */
.uk-tooltip.wm-tip-pos-left::after {
    right: -12px;
    top: 50%;
    transform: translateY(-50%);
    border-left-color: var(--wintra-color-primary, #033fcb);
}

/* === Native slider-arrows — общий стиль для всех слайдеров модуля =======
 * Используется через native-элемент `slider-arrows` (lib/theme/nativeelements.php).
 * Шеф ставит native в любую колонку/ряд, указывает target=ID слайдера.
 * JS-bridge (template.js initSliderNavBridge) связывает их.
 *
 * Внутри-компонентные стрелки слайдера (.wm-tariffs__nav и т.п.) при наличии
 * external-навигации автоматически скрываются (.wm-has-external-nav). */
.wm-slider-nav {
    display: inline-flex;
    gap: 12px;
    color: inherit;
}
.wm-slider-nav__btn {
    width: 40px;
    height: 40px;
    border-radius: 999px;
    background: transparent;
    color: inherit;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid currentColor;
}
/* Стилевые варианты */
.wm-slider-nav--outlined .wm-slider-nav__btn { opacity: 0.6; }
.wm-slider-nav--glass    .wm-slider-nav__btn {
    background: rgba(255, 255, 255, 0.08);
    border-color: rgba(255, 255, 255, 0.30);
}
.wm-slider-nav--minimal  .wm-slider-nav__btn { border-color: transparent; }
.wm-slider-nav--brand    .wm-slider-nav__btn {
    background: var(--wintra-color-primary, #033fcb);
    border-color: var(--wintra-color-primary, #033fcb);
    color: var(--wintra-color-on-primary, #fff);
}

/* Auto-hide внутренних стрелок слайдера при наличии external-навигации */
.wm-has-external-nav .wm-tariffs__nav,
.wm-has-external-nav .wm-slist__nav {
    display: none !important;
}

/* === Тёмная тема через [data-theme="dark"] на обёртке группы PageGrid =====
 * Когда у группы стоит галка «Тёмная» (поле dark=Y) — PageGrid ставит
 * data-theme="dark" + class wm-row-group--dark на обёртку. Текст всех
 * рядов внутри становится светлым автоматически (без явного
 * wm-row--dark на каждом ряду). */
[data-theme="dark"] {
    color: var(--wintra-color-surface, #ffffff);
}
[data-theme="dark"] a:not(.wm-btn):not(.uk-button) {
    color: inherit;
}
/* h1-h6 / wm-heading имеют свой color через `html body h*` (0,0,0,3) —
 * перебиваем через atribute-selector (0,0,1,1) > (0,0,0,3) */
[data-theme="dark"] h1,
[data-theme="dark"] h2,
[data-theme="dark"] h3,
[data-theme="dark"] h4,
[data-theme="dark"] h5,
[data-theme="dark"] h6,
[data-theme="dark"] .wm-heading,
[data-theme="dark"] .wm-text {
    color: var(--wintra-color-surface, #ffffff);
}

/* Page-header стили удалены 03.06.2026 — native page_header заменён на
   композицию из wm.crumbs + native heading + native iblock_field. */

/* === CLS fix — резервируем layout для media-блоков (skill bitrix-aspro-speed B). =
 * Без width/height на <img>/<video> браузер не знает реальные размеры до загрузки
 * → когда грузит → layout прыгает. Lighthouse 03.06: CLS=0.621 (норма ≤0.1).
 *
 * Решение: aspect-ratio + max-width на родительские блоки. Браузер резервирует
 * место под медиа сразу. После загрузки контент попадает в готовый бокс — без
 * сдвига. Для блоков с фиксированной композицией задаём конкретный ratio
 * (hero 16:10, превью 16:9, бренды 3:2). Для гибких — auto + height:auto.
 *
 * Универсальная база (любой img в строке Сетки): не растягиваем, height auto. */
.wm-row img,
.wm-row video {
    max-width: 100%;
    height: auto;
}

/* Hero LCP-картинка. width/height на самом <img> (из CFile::GetFileArray)
 * дают браузеру правильный aspect-ratio — не дублируем в CSS, иначе при
 * расхождении (вертикальная картинка vs 16:10 в стиле) CLS только растёт. */
.wm-hero__image {
    max-width: 100%;
    height: auto;
}

/* Бэнто-карточки. SVG/PNG приходят без width/height из CFile, потому
 * страхуем простым box-fit — без жёсткого aspect-ratio. */
.wm-bento__media img {
    max-width: 100%;
    height: auto;
    object-fit: contain;
}

/* Grid-list превью — width/height из CFile рисуют ratio. */
.wm-grid-list__picture {
    max-width: 100%;
    height: auto;
    object-fit: cover;
}

/* Slider-list (бренды, лого) — высота фиксирована, ширина auto. */
.wm-slider-list__picture,
.wm-slider-list img {
    max-width: 100%;
    max-height: 120px;
    height: auto;
    width: auto;
    object-fit: contain;
}

/* Marquee (лента логотипов) — фиксированная высота. */
.wm-marquee__img {
    height: 56px;
    width: auto;
    object-fit: contain;
}

/* Hero teaser-иконки — фиксированные 24×24 как в style.css компонента. */
.wm-hero__teaser-icon {
    width: 24px;
    height: 24px;
    object-fit: contain;
}

/* Tariffs/Timeline иконки — стандарт 48×48. */
.wm-tariffs img:not([width]),
.wm-timeline img:not([width]) {
    width: 48px;
    height: 48px;
    object-fit: contain;
}

/* Видео — стабилизация через aspect-ratio из CSS-переменной style.css компонента.
 * wm.split __media уже имеет aspect-ratio: var(--wm-split-media-ratio) на родителе,
 * это правило страхует от сдвига если video сам ушёл «выше» через autoplay-resize. */
.wm-split__video,
.wm-split__picture {
    aspect-ratio: inherit;
}

/* =====================================================================
 * Bitrix edit-mode fix: bx_incl_area_* — обёртка IncludeComponent в
 * режиме правки. Bitrix вставляет <div id="bx_incl_area_N"> без классов
 * и без width, и в flex-родителе .wm-row__col-inner она коллапсирует
 * до min-content. uk-width-1-1 нашего слайдера тогда тянет 100% уже
 * с обёртки в 120px → карточки полоской.
 *
 * Фикс: edit-обёртка занимает всю ширину flex-родителя.
 * В публичном режиме этой обёртки нет — правило неактивно.
 * ===================================================================== */
.wm-row__col-inner > div[id^="bx_incl_area_"] {
    width: 100%;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

/* End */


/* Start:/bitrix/templates/wintra.corp/components/bitrix/menu/wintra.bar/style.min.css?17805221464141*/
.wm-menu .uk-navbar-nav{gap:var(--wintra-module-gap, 24px)}.wm-menu .uk-navbar-nav>li>a{color:var(--wintra-color-ink);font-family:inherit;font-size:14px;font-weight:600;line-height:var(--wintra-line-height, 1.4);letter-spacing:0;text-transform:var(--wintra-link-transform, none)!important;text-decoration:var(--wintra-link-decoration, none)!important;min-height:auto;padding:8px 0}.wm-menu .uk-navbar-nav>li.uk-active>a,.wm-menu .uk-navbar-nav>li>a:hover{color:var(--wintra-color-primary)}.wm-menu .uk-navbar-nav>li>a.uk-button-primary{background:var(--wintra-color-primary);color:var(--wintra-color-surface);padding:8px 20px;min-height:0;height:auto;line-height:var(--wintra-line-height, 1.4);font-size:14px;font-weight:600;border-radius:var(--wm-mod-radius, var(--wintra-btn-radius, 999px));display:inline-flex;align-items:center;gap:8px}.wm-menu .uk-navbar-nav>li>a.uk-button-primary:focus,.wm-menu .uk-navbar-nav>li>a.uk-button-primary:hover{background:var(--wintra-color-primary-dark);color:var(--wintra-color-surface)}.wm-menu .uk-navbar-dropdown{background:var(--wintra-color-surface);color:var(--wintra-color-ink);border-radius:var(--wm-mod-radius, var(--wintra-radius));box-shadow:0 16px 40px rgba(15,23,42,.1);padding:24px;min-width:220px}.wm-menu .uk-navbar-dropdown-nav>li>a,.wm-menu .wm-menu__click-drop-nav>li>a{color:var(--wintra-color-ink);font-family:inherit;font-size:14px;line-height:var(--wintra-line-height, 1.4);letter-spacing:0;padding:6px 0;text-transform:var(--wintra-link-transform, none)!important;text-decoration:var(--wintra-link-decoration, none)!important}.wm-menu .uk-navbar-dropdown-nav>li.uk-active>a,.wm-menu .uk-navbar-dropdown-nav>li>a:hover,.wm-menu .wm-menu__click-drop-nav>li.uk-active>a,.wm-menu .wm-menu__click-drop-nav>li>a:hover{color:var(--wintra-color-primary)}.wm-menu .wm-menu__item--click{position:relative}.wm-menu .wm-menu__click-drop{display:none;position:absolute;top:100%;left:0;z-index:980;background:var(--wintra-color-surface);color:var(--wintra-color-ink);border-radius:var(--wm-mod-radius, var(--wintra-radius));box-shadow:0 16px 40px rgba(15,23,42,.1);padding:24px;min-width:220px;box-sizing:border-box}.wm-menu .wm-menu__item--click.is-open>.wm-menu__click-drop,.wm-menu .wm-menu__item--mega.is-open>.wm-menu__mega-drop{display:block}.wm-menu .wm-menu__click-drop-nav{list-style:none;margin:0;padding:0}.wm-menu .wm-menu__click-drop-nav>li>a{display:block}.wm-menu .wm-menu__item--mega{position:relative}.wm-menu .wm-menu__mega-drop{display:none;position:absolute;top:100%;left:0;z-index:980;margin-top:16px;padding:32px;background:var(--wintra-color-surface);color:var(--wintra-color-ink);border-radius:var(--wm-mod-radius, var(--wintra-radius));box-shadow:0 24px 48px rgba(15,23,42,.12);min-width:240px}.wm-menu .wm-menu__mega-grid{display:grid;grid-template-columns:repeat(var(--wm-mega-cols, 4),minmax(160px,1fr));gap:32px}.wm-menu .wm-menu__mega-col{display:flex;flex-direction:column;gap:0}.wm-menu .wm-menu__mega-cat{display:block;font-family:inherit;font-size:11px;font-weight:700;letter-spacing:.06em;line-height:var(--wintra-type-line-height-heading, 1.2);color:var(--wintra-color-primary);text-transform:uppercase;margin-bottom:12px;text-decoration:none}.wm-menu .wm-menu__mega-cat:hover{opacity:.85}.wm-menu .wm-menu__mega-link{display:block;font-family:inherit;font-size:14px;font-weight:400;line-height:var(--wintra-line-height, 1.43);letter-spacing:0;color:var(--wintra-color-ink-muted);padding:6px 0;text-transform:var(--wintra-link-transform, none)!important;text-decoration:var(--wintra-link-decoration, none)!important}.wm-menu .wm-menu__mega-link:hover{color:var(--wintra-color-primary)}.section-dark .wm-menu .uk-navbar-nav>li>a:not(.uk-button-primary),.wm-row--dark .wm-menu .uk-navbar-nav>li>a:not(.uk-button-primary),[data-theme=dark] .wm-menu .uk-navbar-nav>li>a:not(.uk-button-primary){color:var(--wintra-color-surface)}.section-dark .wm-menu .uk-navbar-nav>li>a:not(.uk-button-primary):hover,.wm-row--dark .wm-menu .uk-navbar-nav>li>a:not(.uk-button-primary):hover,[data-theme=dark] .wm-menu .uk-navbar-nav>li>a:not(.uk-button-primary):hover{opacity:.7}
/* End */


/* Start:/bitrix/templates/wintra.corp/components/bitrix/main.include/wintra.crumbs/style.css?17807713061714*/
/* main.include · wintra.crumbs
 * Inline-список с разделителем «/». Все цвета/размеры через токены модуля.
 * Тёмная тема через каскад .wm-row--dark / .wm-row-group--dark.
 *
 * Two states:
 *  · static   — лента в потоке своего ряда
 *  · absolute — JS переносит <nav> в родителя по селектору,
 *               координаты top/bottom/left/right из CSS-переменных
 */

.wm-crumbs {
    font-family: 'Manrope', sans-serif;
    font-size: 0.75rem;
    line-height: 1.5;
    color: var(--wintra-color-ink-muted, #6b7280);
}

.wm-crumbs--static {
    position: static;
    width: 100%;
}

.wm-crumbs--absolute {
    position: absolute;
    top:    var(--wm-crumbs-top, auto);
    bottom: var(--wm-crumbs-bottom, auto);
    left:   var(--wm-crumbs-left, auto);
    right:  var(--wm-crumbs-right, auto);
    width: auto;
    z-index: 5;
}

.wm-crumbs__list {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.wm-crumbs__item { display: inline-flex; align-items: center; }

.wm-crumbs__link {
    color: inherit;
    text-decoration: none;
}

.wm-crumbs__link:hover {
    color: var(--wintra-color-brand, #033fcb);
}

.wm-crumbs__sep {
    opacity: 0.4;
    user-select: none;
}

.wm-crumbs__item--current {
    color: var(--wintra-color-ink, #0d1424);
    font-weight: 500;
}

.wm-row--dark .wm-crumbs,
.wm-row-group--dark .wm-crumbs { color: rgba(255, 255, 255, 0.75); }

.wm-row--dark .wm-crumbs__item--current,
.wm-row-group--dark .wm-crumbs__item--current { color: #ffffff; }

/* End */


/* Start:/local/components/wm/catalog-grouped/templates/.default/style.min.css?1780478002300*/
.wm-catalog-grouped>.wm-catalog-grouped__section+.wm-catalog-grouped__section{margin-top:var(--wm-spacing-large)}.wm-catalog-grouped__head{margin-bottom:var(--wm-spacing-medium)}.wm-catalog-grouped__head .wm-type-h2{margin:0 0 var(--wm-spacing-small)}.wm-catalog-grouped__head .wm-card-desc{margin:0}
/* End */


/* Start:/bitrix/templates/wintra.corp/components/bitrix/news.list/wintra.grid-list/style.min.css?17804789452362*/
.wm-grid-list.uk-grid{margin-left:calc(-1*var(--wintra-module-gap, 24px))}.wm-grid-list.uk-grid>*{padding-left:var(--wintra-module-gap, 24px)}.wm-grid-list.uk-grid>.uk-grid-margin{margin-top:var(--wintra-module-gap, 24px)}a.wm-grid-list__card{text-decoration:none;color:inherit}.wm-grid-list__card{display:flex;flex-direction:column;gap:calc(var(--wintra-module-gap, 24px)/2);padding:var(--wm-card-padding, 24px);border-radius:var(--wintra-radius, 8px);box-shadow:var(--wintra-shadow-card, none)}.wm-grid-list__card>*{margin:0}.wm-grid-list--align-center .wm-grid-list__card{align-items:center}.wm-grid-list--theme-glass .wm-grid-list__card{background:rgba(0,0,0,.04);border:1px solid rgba(0,0,0,.08);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.wm-row--dark .wm-grid-list--theme-glass .wm-grid-list__card,[data-theme=dark] .wm-grid-list--theme-glass .wm-grid-list__card{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.1)}.wm-grid-list--theme-card .wm-grid-list__card{background:var(--wintra-color-card, #fff)}.wm-grid-list__value{display:block;font-family:var(--wintra-type-font-family-heading, var(--wintra-type-font-family));font-size:var(--wintra-type-size-hero, 60px);line-height:var(--wintra-type-line-height-heading, 1);color:var(--wintra-color-ink, #0d0d12)}.wm-grid-list__icon{display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:20px;background:rgba(0,0,0,.04);border:1px solid rgba(0,0,0,.08);color:var(--wintra-color-ink)}.wm-row--dark .wm-grid-list__icon,[data-theme=dark] .wm-grid-list__icon{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.14)}.wm-grid-list__icon svg,.wm-grid-list__icon--svg svg{display:block;width:42px;height:42px}.wm-grid-list__picture{display:block;max-width:100%;height:auto;border-radius:calc(var(--wintra-radius, 8px)/2)}.wm-grid-list--text .wm-grid-list__card{padding:0;border-radius:0;box-shadow:none;background:0 0}.wm-grid-list--text .wm-card-title{line-height:var(--wintra-type-line-height-heading);color:var(--wintra-color-primary);margin:0}.wm-row--dark .wm-grid-list--text .wm-card-title,.wm-row--dark .wm-grid-list__icon,.wm-row--dark .wm-grid-list__value,[data-theme=dark] .wm-grid-list--text .wm-card-title,[data-theme=dark] .wm-grid-list__icon,[data-theme=dark] .wm-grid-list__value{color:var(--wintra-color-surface)}
/* End */


/* Start:/local/components/wm/split/templates/.default/style.min.css?1780854198971*/
.wm-split__text{display:flex;flex-direction:column;gap:var(--wintra-module-gap)}.wm-split__media{width:100%;line-height:0;aspect-ratio:var(--wm-split-media-ratio);background:var(--wintra-color-surface);border-radius:var(--wintra-radius);overflow:hidden;--wm-split-media-mobile-max-height:80vh}.wm-split__media--auto{aspect-ratio:auto}@media (max-width:959.98px){.wm-split__media{max-height:var(--wm-split-media-mobile-max-height)}}.wm-split__picture,.wm-split__video{display:block;width:100%;height:100%;object-fit:cover}.wm-split__media--auto .wm-split__picture,.wm-split__media--auto .wm-split__video{height:auto;object-fit:initial}.wm-split__heading{margin:0}.wm-split__desc{font-size:var(--wintra-type-size-body);line-height:var(--wintra-type-line-height-body);color:inherit;opacity:.75}.wm-split__desc p:first-child{margin-top:0}.wm-split__desc p:last-child{margin-bottom:0}.wm-split__teasers{width:100%}.wm-split__cta-wrap{display:inline-flex;align-self:flex-start}
/* End */


/* Start:/local/components/wm/slider/slider-engine.css?17812492036227*/
/**
 * wm:slider — общий CSS-движок.
 *
 * DOM-контракт см. webcreator/docs/wm-slider-contract.md.
 *
 * В этом файле ТОЛЬКО структурная механика слайдера:
 *   • viewport (overflow-x scroll, scroll-snap)
 *   • track (flex row, gap)
 *   • slide (flex 0 0 calc(...) по --wm-slider-per-view)
 *   • стрелки (top-right / inside / under позиционирование)
 *   • точки (uk-dotnav расширение)
 *   • bleed-модификатор
 *
 * НЕТ декора карточек — это работа шаблонов (templates/<tpl>/style.css).
 * НЕТ цвета/радиуса/тени — только структура.
 */

/* === Корневой контейнер ================================================
 * --wm-slider-gap по умолчанию наследует токен модуля --wintra-module-gap
 * (через CSS-переменную в template_styles.css). Если шеф явно задал
 * data-gap="N" в шестерёнке — JS перетрёт это inline-стилем. Пусто = токен.
 */
.wm-slider {
    --wm-slider-per-view: 3;
    --wm-slider-gap: var(--wintra-module-gap, 24px);
    position: relative;
    width: 100%;
}

/* === Viewport: overflow-x scroll-snap ================================== */
/* ВНИМАНИЕ: CSS-спека насильно превращает overflow-y:visible в clipping
 * когда overflow-x != visible. То есть лифт/scale карточек при hover
 * (из настроек модуля «06 · Эффекты») обрезается по верху и низу даже
 * при явном overflow-y:visible. Лечится padding+negative margin парой —
 * viewport получает 16px воздуха вверх/вниз, layout снаружи остаётся
 * на месте (negative margin компенсирует). 16px хватает на translateY(-8px)
 * и scale(1.04) с тенью shadow-lg (48px размах). */
.wm-slider__viewport {
    overflow-x: auto;
    overflow-y: visible;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding-top: 16px;
    padding-bottom: 16px;
    margin-top: -16px;
    margin-bottom: -16px;
}
.wm-slider__viewport::-webkit-scrollbar { display: none; }

/* BLEED: правый край уходит за viewport — peek-эффект (как v14 #products). */
.wm-slider--bleed .wm-slider__viewport {
    margin-right: calc(-1 * ((100vw - 100%) / 2));
    padding-right: calc(((100vw - 100%) / 2) + var(--wm-slider-gap));
}
@media (max-width: 768px) {
    .wm-slider--bleed .wm-slider__viewport {
        margin-right: 0;
        padding-right: var(--wm-slider-gap);
    }
}

/* === Track: горизонтальная лента ======================================= */
.wm-slider__track {
    display: flex;
    gap: var(--wm-slider-gap);
    align-items: stretch;
}

/* === Slide: ширина по --wm-slider-per-view + snap ====================== */
.wm-slider__slide {
    flex: 0 0 calc((100% - var(--wm-slider-gap) * (var(--wm-slider-per-view) - 1)) / var(--wm-slider-per-view));
    width:    calc((100% - var(--wm-slider-gap) * (var(--wm-slider-per-view) - 1)) / var(--wm-slider-per-view));
    scroll-snap-align: start;
    min-width: 0;
}

/* === Навигация (стрелки) =============================================== */
.wm-slider__nav {
    display: flex;
    gap: 12px;
    margin-bottom: var(--wintra-module-gap, 24px);
}
.wm-slider[data-arrows="top-right"] .wm-slider__nav {
    justify-content: flex-end;
}
.wm-slider[data-arrows="under"] .wm-slider__nav {
    justify-content: center;
    margin-top: var(--wintra-module-gap, 24px);
    margin-bottom: 0;
    order: 99; /* ставим под viewport через flex order на корне */
}
.wm-slider[data-arrows="inside"] .wm-slider__nav {
    /* В этом режиме стрелки рисуются по бокам viewport через absolute */
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    transform: translateY(-50%);
    pointer-events: none;
    justify-content: space-between;
    margin: 0;
}
.wm-slider[data-arrows="inside"] .wm-slider__btn {
    pointer-events: auto;
}
.wm-slider[data-arrows="none"] .wm-slider__nav {
    display: none;
}

/* Корень в режиме under стрелок и/или dots — flex column для order. */
.wm-slider[data-arrows="under"],
.wm-slider[data-dots="under"]:not([data-arrows="under"]):not([data-arrows="top-right"]):not([data-arrows="inside"]) {
    display: flex;
    flex-direction: column;
}

.wm-slider__btn {
    width: 40px;
    height: 40px;
    border-radius: 999px;
    border: 1px solid currentColor;
    background: transparent;
    color: inherit;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    opacity: 0.6;
    padding: 0;
}
.wm-slider__btn:hover:not(:disabled) { opacity: 1; }
.wm-slider__btn:disabled { opacity: 0.25; cursor: default; }

@media (max-width: 768px) {
    .wm-slider[data-arrows="top-right"] .wm-slider__nav {
        justify-content: flex-end;
        margin-bottom: 16px;
    }
}

/* === Точки (uk-dotnav расширение) ====================================== */
.wm-slider__dots {
    margin: var(--wintra-module-gap, 24px) 0 0;
    padding: 0;
    list-style: none;
    justify-content: center;
}
.wm-slider[data-dots="over"] .wm-slider__dots {
    position: absolute;
    bottom: 16px;
    left: 0;
    right: 0;
    margin: 0;
    z-index: 2;
}
.wm-slider[data-dots="none"] .wm-slider__dots {
    display: none;
}

/* === Адаптив дефолтный (можно переопределить в шаблоне) ================ */
/* Дополнительная страховка: на @s сужаем минимум до 1.1, чтоб карточка
   всегда занимала почти весь экран без выползания. Шаблоны могут
   переопределять --wm-slider-per-view вручную через media. */

/* End */


/* Start:/local/components/wm/slider/templates/wintra.tariffs/style.css?17781776732090*/
/**
 * wintra.tariffs — стили КАРТОЧКИ тарифа (для шаблона wm:slider).
 *
 * Структура слайдера (viewport/track/slide/dots/arrows) — в slider-engine.css.
 * В этом файле ТОЛЬКО декор тарифной карточки:
 *   • Тема glass (для тёмного фона) / solid (для светлого)
 *   • HIGHLIGHT='accent' — рамка accent-цвета
 *   • inline-SVG иконка
 *   • min-height карточки
 *
 * Типография, цена, заголовок, описание, бейдж, стрелка, иконка (общая) — в
 * template_styles.css через .wm-card-* классы.
 */

/* === Карточка тарифа =================================================== */
.wm-tariffs__card {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: 380px;
}

.wm-tariffs__head {
    display: block;
}

/* Тема glass — для тёмного фона группы */
.wm-tariffs--theme-glass .wm-tariffs__card {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.10);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

/* Тема solid — для светлого фона */
.wm-tariffs--theme-solid .wm-tariffs__card {
    background: var(--wintra-color-card, #ffffff);
    border: 1px solid transparent;
}

/* HIGHLIGHT='accent' — рамка accent-цвета. */
.wm-tariffs__card.wm-tariffs__card--accent {
    border-color: rgba(251, 72, 37, 0.55);
}

/* Карточка-ссылка */
a.wm-tariffs__card--link,
a.wm-tariffs__card--link:hover,
a.wm-tariffs__card--link:focus,
a.wm-tariffs__card--link:active {
    color: inherit;
    text-decoration: none;
}

/* === Inline-SVG иконка (currentColor работает) ======================== */
.wm-tariffs__icon--file > svg,
.wm-tariffs__icon--file > img {
    width: 24px;
    height: 24px;
    object-fit: contain;
    display: block;
    color: inherit;
}

/* End */


/* Start:/local/components/wm/marquee/marquee-engine.css?17804069294342*/
/**
 * wm:marquee — CSS-движок бесшовной ленты.
 *
 * Логика: track содержит 2 копии items, animation translateX(0 → -50%).
 * После цикла вторая копия становится на место первой = seamless loop.
 *
 * Скорость через --wm-marquee-speed (выставляется inline-style на корне).
 * Pause-on-hover через :hover на корне с data-pause="Y".
 * Reduced-motion отключает анимацию (accessibility).
 *
 * Тут ТОЛЬКО структура и анимация — декор карточек в style.css шаблонов.
 */

.wm-marquee {
    --wm-marquee-speed: 30s;
    --wm-marquee-gap: var(--wintra-module-gap, 24px);
    --wm-marquee-per-view: 6;
    /* --wm-marquee-item-width выставляется JS на основе реального viewport
     * (clientWidth - gap * (per-view - 1)) / per-view. Резерв на случай
     * до-JS рендера = ровная доля 100%. */
    --wm-marquee-item-width: calc(100% / var(--wm-marquee-per-view));
    position: relative;
    width: 100%;
    overflow: hidden;
}

.wm-marquee__viewport {
    overflow: hidden;
    width: 100%;
}

.wm-marquee__track {
    display: flex;
    gap: var(--wm-marquee-gap);
    /* НЕ ставим width: max-content — это создаёт циклику (track зависит от
     * items, items зависят от track). Items имеют фиксированную ширину в px
     * (--wm-marquee-item-width выставляется JS), flex авто-растягивает track
     * под суммарную ширину. translateX(-50%) сдвигает половину computed width
     * track = одна копия items за viewport. */
    align-items: center;
    will-change: transform;
    animation: wm-marquee-scroll var(--wm-marquee-speed) linear infinite;
}

/* Направление вправо — обратное keyframes. */
.wm-marquee[data-direction="right"] .wm-marquee__track {
    animation-direction: reverse;
}

/* Pause on hover — управляется через атрибут, чтобы шеф мог отключить. */
.wm-marquee[data-pause="Y"]:hover .wm-marquee__track,
.wm-marquee[data-pause="Y"]:focus-within .wm-marquee__track {
    animation-play-state: paused;
}

/* Item-блок в ленте — фиксированная ширина по WM_PER_VIEW.
 * 100% / per-view минус gap (упрощение: gap делится приблизительно равномерно).
 * Шаблоны могут переопределять ширину через свой CSS. */
.wm-marquee__item {
    /* Ширина item = --wm-marquee-item-width (выставляется JS из viewport/per-view).
     * До инициализации JS — fallback 100%/per-view (может выглядеть кривовато
     * из-за track:max-content, но JS дотянет за миллисекунды). */
    flex: 0 0 var(--wm-marquee-item-width);
    width: var(--wm-marquee-item-width);
    box-sizing: border-box;
    text-decoration: none;
    color: inherit;
}

/* Адаптив: на мобильных меньше per-view (но шеф может перекрыть в шестерёнке). */
@media (max-width: 960px) {
    .wm-marquee { --wm-marquee-per-view: 4; }
}
@media (max-width: 640px) {
    .wm-marquee { --wm-marquee-per-view: 3; }
}

/* === Grayscale-фильтр (для логотипов; v14-настройки) ==================== */
.wm-marquee--grayscale .wm-marquee__item img {
    filter: grayscale(1);
    opacity: 0.48;
    transition: filter 0.45s ease, opacity 0.45s ease, transform 0.45s ease;
    will-change: filter, opacity, transform;
}
.wm-marquee--grayscale .wm-marquee__item:hover img {
    filter: grayscale(0);
    opacity: 1;
    transform: scale(1.08);
}

/* === Keyframes ========================================================= */
@keyframes wm-marquee-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

/* === Accessibility — reduced motion отключает анимацию ================= */
@media (prefers-reduced-motion: reduce) {
    .wm-marquee__track {
        animation: none;
    }
}

/* End */


/* Start:/local/components/wm/marquee/templates/wintra.marquee/style.css?17781776783412*/
/**
 * wintra.marquee — стили универсальной бесшовной ленты.
 *
 * Структура (viewport/track/animation) — в marquee-engine.css.
 * Здесь — декор карточки (item) + варианты по WM_DISPLAY.
 */

/* === Карточка — общая структура =======================================
 * Ширина item = --wm-marquee-item-width (из движка, viewport/per-view).
 * Картинка сжимается до доступной ширины item, опц. ограничение по высоте
 * через WM_ITEM_HEIGHT (--wm-marquee-item-height, default = по контенту).
 */
.wm-marquee__item {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    color: inherit;
    box-sizing: border-box;
    padding: 8px 12px;
}

/* === display=picture =================================================== */
.wm-marquee--display-picture .wm-marquee__item {
    flex-direction: row;
}
.wm-marquee--display-picture .wm-marquee__img {
    display: block;
    width: 100%;
    max-height: var(--wm-marquee-item-height, none);
    object-fit: contain;
}

/* === display=name ====================================================== */
.wm-marquee--display-name .wm-marquee__item {
    flex-direction: row;
}
.wm-marquee--display-name .wm-marquee__name {
    font-size: var(--wintra-type-size-body, 16px);
    font-weight: 500;
    color: var(--wintra-color-ink, #11161F);
    text-align: center;
}

/* === display=both ====================================================== */
.wm-marquee--display-both .wm-marquee__item {
    flex-direction: column;
    gap: 8px;
}
.wm-marquee--display-both .wm-marquee__img {
    display: block;
    width: 100%;
    max-height: var(--wm-marquee-item-height, none);
    object-fit: contain;
}
.wm-marquee--display-both .wm-marquee__name {
    font-size: var(--wintra-type-size-caption, 13px);
    color: var(--wintra-color-ink-muted, rgba(0,0,0,0.6));
    text-align: center;
    line-height: 1.2;
}

/* === Тёмная тема ряда / группы рядов ====================================
 * Покрываем все варианты «тёмного фона» по которым рендерятся надписи:
 *   • .wm-row--dark — конкретный ряд помечен dark
 *   • .wm-row-group--dark — группа рядов
 *   • [data-theme="dark"] — общая тема (контейнер группы) с выворотом
 *
 * Срабатывает для display=name и display=both (где есть текстовая надпись).
 * Picture-only карточки тут ни при чём — там картинки + grayscale-фильтр.
 */
.wm-row--dark .wm-marquee__name,
.wm-row-group--dark .wm-marquee__name,
[data-theme="dark"] .wm-marquee__name {
    color: var(--wintra-color-surface, #fff);
    opacity: 0.5;
}

/* === Hover для cliquables ============================================== */
a.wm-marquee__item:hover {
    text-decoration: none;
}
/* Hover-эффект для картинок управляется через .wm-marquee--grayscale в
 * marquee-engine.css (opacity 0.48 → 1 при hover). Для текстовых надписей
 * hover-блекнование не делаем — текст остаётся читаемым. */

/* End */


/* Start:/local/components/wm/contacts/templates/.default/style.min.css?1780854198605*/
/*!
 * wm:contacts — шаблон .default.
 *
 * Большинство стилей живёт в template_styles.css модуля (.wm-contact*,
 * .wm-contact-stack). Здесь — только тонкие модификаторы wrapper'а
 * (.wm-contacts, .wm-contacts__title, .wm-contacts__desc) с использованием
 * токенов модуля. Никаких hover/transition/animation.
 */
.wm-contacts{display:flex;flex-direction:column;gap:var(--wintra-padding-medium, 24px)}.wm-contacts__title{margin:0}.wm-contacts__desc{margin:0;color:inherit;opacity:.75;max-width:36em}
/* End */


/* Start:/bitrix/templates/wintra.corp/components/bitrix/form.result.new/wintra.form-inline/style.min.css?17803883049421*/
/*!
 * wintra.form-inline — стили шаблона для bitrix:form.result.new.
 *
 * Архитектура «единый стиль форм + автоинверсия light↔dark»:
 *   1. Корень <form class="wm-form"> объявляет CSS-переменные для светлого
 *      (default) варианта: --wm-form-bg / -border / -text / -label / -placeholder.
 *   2. На тёмном фоне (.wm-row--dark, .section-dark, [data-theme=dark]
 *      родителя ИЛИ принудительно .wm-form--dark) — переменные
 *      ПЕРЕОПРЕДЕЛЯЮТСЯ зеркальными значениями.
 *   3. Все правила инпутов/labels/submit ссылаются ТОЛЬКО на эти переменные —
 *      инверсия мгновенная и полная.
 *
 * Модификаторы корня (из FormConstants):
 *   .wm-form--labels-{outside|floating|inside-only}  — стиль подписей
 *   .wm-form--size-{sm|md|lg}                        — высота инпутов
 *   .wm-form--cols-{single|auto-pair|grid-2col}      — раскладка полей
 *   .wm-form--submit-{row-left|row-right|row-between} — submit-кнопка
 *
 * Модификатор отдельного поля (из FIELD_PARAM `data-wm-col=50`):
 *   .wm-form__field--col-50                           — половина ширины (для пар PHONE+EMAIL)
 *   .wm-form__field--col-100                          — полная ширина (default)
 */
.wm-form{width:100%;--wm-form-pad-y:14px;--wm-form-pad-x:20px;--wm-form-radius:var(--wintra-radius, 8px);--wm-form-gap:16px;color:var(--wm-form-text)}.section-dark .wm-form,.wm-form.wm-form--dark,.wm-row--dark .wm-form,[data-theme=dark] .wm-form{--wm-form-bg:rgba(255, 255, 255, 0.08);--wm-form-border:rgba(255, 255, 255, 0.20);--wm-form-text:var(--wintra-color-surface, #ffffff);--wm-form-label:var(--wintra-color-surface, #ffffff);--wm-form-placeholder:rgba(255, 255, 255, 0.50);--wm-form-focus-border:rgba(255, 255, 255, 0.50)}.wm-form,.wm-form.wm-form--light{--wm-form-bg:rgba(15, 23, 42, 0.04);--wm-form-border:rgba(15, 23, 42, 0.15);--wm-form-text:var(--wintra-color-ink, #171c21);--wm-form-label:var(--wintra-color-ink, #171c21);--wm-form-placeholder:rgba(15, 23, 42, 0.42);--wm-form-focus-border:var(--wintra-color-primary, #033fcb)}.wm-form--size-sm{--wm-form-pad-y:10px;--wm-form-pad-x:16px;--wm-form-gap:12px}.wm-form--size-md{--wm-form-pad-y:14px;--wm-form-pad-x:20px;--wm-form-gap:16px}.wm-form--size-lg{--wm-form-pad-y:18px;--wm-form-pad-x:24px;--wm-form-gap:20px}.wm-form__errors,.wm-form__note{border-radius:var(--wm-form-radius)}.wm-form__note{padding:var(--wintra-padding-medium, 24px);background:var(--wm-form-bg);color:inherit;font-size:1rem;line-height:1.4}.wm-form__errors{margin-bottom:var(--wm-form-gap);padding:12px 16px;background:rgba(251,72,37,.1);color:var(--wintra-color-accent, #fb4825);font-size:.875rem}.wm-form__fields{display:flex;flex-direction:column;gap:var(--wm-form-gap)}.wm-form__title{margin:0 0 var(--wm-form-gap)}.wm-form__description{margin:0 0 calc(var(--wm-form-gap)*1.5);opacity:.75}.wm-form--cols-auto-pair .wm-form__fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--wm-form-gap)}.wm-form--cols-auto-pair .wm-form__field{grid-column:1/-1}.wm-form--cols-auto-pair .wm-form__field--col-50{grid-column:span 1}@media (max-width:640px){.wm-form--cols-auto-pair .wm-form__fields{grid-template-columns:1fr}}.wm-form--cols-grid-2col .wm-form__fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--wm-form-gap)}.wm-form--cols-grid-2col .wm-form__field{grid-column:span 1}.wm-form--cols-grid-2col .wm-form__field--col-100,.wm-form--cols-grid-2col .wm-form__field--textarea{grid-column:1/-1}@media (max-width:640px){.wm-form--cols-grid-2col .wm-form__fields{grid-template-columns:1fr}}.wm-form__field{display:flex;flex-direction:column;gap:6px;min-width:0}.wm-form__label{font-size:.875rem;font-weight:700;line-height:1.2;padding-left:4px;color:var(--wm-form-label)}.wm-form__required{color:var(--wintra-color-accent, #fb4825);margin-left:2px}.wm-form__input-wrap{width:100%}.wm-form__field-error{margin-top:4px;padding-left:4px;font-size:.8125rem;color:var(--wintra-color-accent, #fb4825);display:none}.wm-form__field--error .wm-form__field-error,.wm-form__field--invalid .wm-form__field-error{display:block}.wm-form__agreement--invalid .wm-form__agreement-checkbox,.wm-form__field--invalid input,.wm-form__field--invalid select,.wm-form__field--invalid textarea{border-color:var(--wintra-color-accent, #fb4825)}.wm-form__agreement--invalid{color:var(--wintra-color-accent, #fb4825);opacity:1}.wm-form__errors-global{padding:12px 16px;margin-bottom:var(--wm-form-gap);border-radius:var(--wm-form-radius);background:rgba(251,72,37,.1);color:var(--wintra-color-accent, #fb4825);font-size:.875rem;line-height:1.4}.wm-form__submit--loading{opacity:.6;cursor:progress}.wm-form__success{text-align:center;padding:48px 24px;min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.wm-form__success-icon{display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:999px;background:var(--wintra-color-primary, #033fcb);color:#fff;flex-shrink:0}.wm-form__success-text{margin:0;font-size:1.125rem;font-weight:700;line-height:1.4;color:var(--wm-form-text);max-width:32em}.wm-form--labels-inside-only .wm-form__label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.wm-form--labels-floating .wm-form__field{position:relative;padding-top:8px}.wm-form--labels-floating .wm-form__label{position:absolute;top:calc(8px + var(--wm-form-pad-y));left:var(--wm-form-pad-x);padding-left:0;font-weight:400;color:var(--wm-form-placeholder);transition:transform .18s ease,color .18s ease,font-size .18s ease;pointer-events:none;background:0 0}.wm-form--labels-floating .wm-form__field:focus-within .wm-form__label,.wm-form--labels-floating .wm-form__field:has(input:not(:placeholder-shown)) .wm-form__label,.wm-form--labels-floating .wm-form__field:has(select:valid) .wm-form__label,.wm-form--labels-floating .wm-form__field:has(textarea:not(:placeholder-shown)) .wm-form__label{transform:translate(-4px,-22px) scale(.85);color:var(--wm-form-label);font-weight:700}.wm-form input[type=date],.wm-form input[type=email],.wm-form input[type=password],.wm-form input[type=tel],.wm-form input[type=text],.wm-form input[type=url],.wm-form select,.wm-form textarea,.wm-form__captcha-input{width:100%;padding:var(--wm-form-pad-y) var(--wm-form-pad-x);border:1px solid var(--wm-form-border);border-radius:var(--wm-form-radius);background:var(--wm-form-bg);color:var(--wm-form-text);font-family:inherit;font-size:1rem;line-height:1.4;box-sizing:border-box;outline:0}.wm-form input[type=email]:focus,.wm-form input[type=password]:focus,.wm-form input[type=tel]:focus,.wm-form input[type=text]:focus,.wm-form input[type=url]:focus,.wm-form select:focus,.wm-form textarea:focus{border-color:var(--wm-form-focus-border)}.wm-form textarea{min-height:96px;resize:vertical}.wm-form input::placeholder,.wm-form textarea::placeholder{color:var(--wm-form-placeholder);opacity:1}.wm-form__agreement{display:flex;align-items:flex-start;gap:12px;cursor:pointer;margin:4px 0 0;font-size:.875rem;line-height:1.4;opacity:.75;color:var(--wm-form-text)}.wm-form--cols-auto-pair .wm-form__agreement,.wm-form--cols-grid-2col .wm-form__agreement{grid-column:1/-1}.wm-form__agreement-checkbox{appearance:none;-webkit-appearance:none;flex-shrink:0;width:20px;height:20px;margin:1px 0 0;padding:0;border:1px solid var(--wm-form-border);border-radius:6px;background:var(--wm-form-bg);cursor:pointer;position:relative;display:inline-block;vertical-align:middle;box-sizing:border-box}.wm-form__agreement-checkbox:hover{border-color:var(--wm-form-focus-border)}.wm-form__agreement-checkbox:focus-visible{outline:2px solid var(--wm-form-focus-border);outline-offset:2px}.wm-form__agreement-checkbox:checked{background-color:var(--wintra-color-primary, #033fcb);border-color:var(--wintra-color-primary, #033fcb);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-6.5' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;background-size:14px 14px}.wm-form__agreement-text{display:inline-block}.wm-form__agreement-link,.wm-form__agreement-link:active,.wm-form__agreement-link:focus,.wm-form__agreement-link:hover{color:inherit;text-decoration:underline}.wm-form__submit-row{display:flex;align-items:center;gap:var(--wm-form-gap);flex-wrap:wrap;margin-top:4px}.wm-form--cols-auto-pair .wm-form__submit-row,.wm-form--cols-grid-2col .wm-form__submit-row{grid-column:1/-1}.wm-form--submit-row-left .wm-form__submit-row{justify-content:flex-start}.wm-form--submit-row-right .wm-form__submit-row{justify-content:flex-end}.wm-form--submit-row-between .wm-form__submit-row{justify-content:space-between}.wm-form__submit{font-weight:700}.wm-form__submit-note{font-size:.875rem;opacity:.65}.wm-form__captcha-image img{border-radius:var(--wm-form-radius);background:var(--wm-form-bg)}
/* End */


/* Start:/local/templates/wintra.corp/custom.css?178051300117636*/
/*
 * custom.css — единственное легальное место для переопределений
 *   шаблона wintra.corp и любых стилей модуля wintra.webcreator.
 *
 * Цепочка CSS в <head>:
 *   1) uikit.min.css              — фреймворк
 *   2) tokens.css                 — системный, автогенерация (НЕ трогать)
 *   3) template_styles.css        — базовая раскладка шаблона
 *   4) компоненты wm.*            — стили кирпичей PageGrid
 *   5) custom.css                 — ← этот файл, перебивает всё
 *
 * Примеры:
 *   :root { --wintra-color-primary: #ff4500; }  — поменять брендовый цвет
 *   .wm-row[data-row-id="hero"] { --wm-row-bg: #0a0f1f; }
 *   .wintra-footer { font-size: 14px; }
 *
 * Файл при обновлениях модуля НЕ перезаписывается.
 */
.wm-row--shapka-desktop .wm-phone__number {
    font-weight: var(--wintra-custom-fw600);
}

/* === Главная — стилевые правки конкретно для этой страницы =============
 * Body получает класс .wm-page-<транслит-label> (см. PageRenderer::pageBodyClass).
 * Можно таргетить любой блок per-page без затрагивания других страниц.
 * ====================================================================== */

/* Описания (подключаемые файлы) на главной — light-шрифт под заголовками.
 * Цвет наследуется от темы группы (data-theme="dark" → surface). */
.wm-page-glavnaya .wm-include-file {
    font-weight: 300;
    font-size: 1.125rem;
}

/* === Bento-сетка услуг (wm.cards-bento) — large с фирменным градиентом ===
 * Для website (BENTO_LARGE=Y) очисти поле «Цвет фона карточки» в админке —
 * иначе inline-style CARD_BG_COLOR перебьёт градиент.
 * ====================================================================== */
.wm-bento__item--large {
    background: linear-gradient(135deg,
        var(--wintra-color-primary) 0%,
        var(--wintra-color-primary-dark) 100%);
}

/* Bento large — title fluid под hero-формат (специфика макета v14).
   Цена и описание используют общие классы .wm-card-price / .wm-card-desc
   из template_styles — однообразие со всеми bento и tariffs (правило
   шефа 06.05.2026: все цены и описания одинаковые везде). */
.wm-bento__item--large .wm-bento__title {
    font-size: clamp(2rem, 2.8vw, 2.625rem);
}

/* === wm-grey — фоновый градиент секций (атмосферный, по v14 .bg-atmo-warm) ==
 * Применяется когда в Сетке у группы/ряда задан background = «wm-grey».
 * Многослойные radial-градиенты создают «дыхание» вместо плоского серого.
 * Источник: design/v14/index.html .bg-atmo-warm.
 * ====================================================================== */
.wm-grey {
    background:
        radial-gradient(ellipse 80% 50% at 20% 0%, rgba(91, 142, 255, 0.08) 0%, transparent 55%),
        radial-gradient(ellipse 60% 60% at 85% 100%, rgba(3, 63, 203, 0.07) 0%, transparent 55%),
        radial-gradient(ellipse 70% 40% at 50% 50%, rgba(255, 255, 255, 0.6) 0%, transparent 60%),
        linear-gradient(180deg, #f7f9ff 0%, #eef2fb 100%);
}

/* === Фирменный фон wm-blue (по эталону v14 hero-fullscreen) + анимация =====
 * Эффект: «облака на небе» — два независимых слоя подсветки плывут с
 * разной скоростью, в разных направлениях, со scale-вариацией. Это даёт
 * parallax-чувство (облака на разных высотах двигаются по-своему).
 *
 *  Базовый: linear-gradient как в v14 .hero-fullscreen.
 *  ::before — крупное «облако» №1 (22s, медленнее, с противоходом).
 *  ::after  — облако №2 поменьше (16s, шустрее, в противоположную сторону).
 *
 * Если хочется заметнее — увеличь translate %% или alpha в radial.
 * Если слишком — уменьши значения keyframes или поставь opacity на ::before.
 */
.wm-blue {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, #0D0D0D 0%, #0225A8 100%);
}

/* Облако 1 — большое, мягкое, плывёт по диагонали.
   alpha 0.30 / scale до 1.05 / 4-5% движения — заметно но не агрессивно.
   inset: -20% — пятно выходит за края, чтобы при движении не оголялся угол. */
.wm-blue::before {
    content: '';
    position: absolute;
    inset: -20%;
    z-index: 0;
    pointer-events: none;
    background: radial-gradient(ellipse 50% 45% at 30% 40%, rgba(30, 80, 224, 0.30) 0%, transparent 60%);
    animation: wmCloud1 26s ease-in-out infinite alternate;
    will-change: transform;
}

/* Облако 2 — поменьше, светлее, плывёт навстречу первому, чуть быстрее. */
.wm-blue::after {
    content: '';
    position: absolute;
    inset: -20%;
    z-index: 0;
    pointer-events: none;
    background: radial-gradient(ellipse 40% 35% at 70% 60%, rgba(91, 142, 255, 0.20) 0%, transparent 60%);
    animation: wmCloud2 20s ease-in-out infinite alternate;
    will-change: transform;
}

.wm-blue > * {
    position: relative;
    z-index: 1;
}

/* Облако 1: плывёт вправо-вниз с лёгким scale, потом обратно. */
@keyframes wmCloud1 {
    0%   { transform: translate3d(-3%, -1%, 0) scale(1.00); }
    50%  { transform: translate3d( 4%,  2%, 0) scale(1.05); }
    100% { transform: translate3d(-2%,  3%, 0) scale(0.97); }
}

/* Облако 2: противоположное направление + чуть другой ритм scale. */
@keyframes wmCloud2 {
    0%   { transform: translate3d( 3%,  1%, 0) scale(1.00); }
    50%  { transform: translate3d(-5%, -3%, 0) scale(0.95); }
    100% { transform: translate3d( 2%, -1%, 0) scale(1.06); }
}

/* Серые пресеты на будущее — раскомментируй когда понадобятся. */
/* .wm-grey-1 { background: #f5f6f8; } */
/* .wm-grey-2 { background: #e5e7eb; } */
/* .wm-grey-3 { background: #d1d5db; } */

/* ========================================================================
 * Контраст в заголовках — специфика макета 2026.wintramedia.ru (v14)
 *
 * Все h1-h6 по умолчанию тонкие (--wintra-type-weight-heading-light),
 * <b>/<strong> внутри даёт жирный акцент (--wintra-type-weight-heading-bold).
 * Шеф пишет «Винтра в <b>цифрах</b>» → «Винтра в» тонкая, «цифрах» жирная.
 *
 * Правило per-site (custom.css, не template_styles.css) по
 * feedback_template_styles_no_layout_specifics.md — это специфика
 * именно этого макета, на других сайтах модуля может быть иначе.
 * ======================================================================== */
html body h1, html body .uk-h1,
html body h2, html body .uk-h2,
html body h3, html body .uk-h3,
html body h4, html body .uk-h4,
html body h5, html body .uk-h5,
html body h6, html body .uk-h6 {
    font-weight: var(--wintra-type-weight-heading-light, 300);
}
html body h1 b, html body h1 strong, html body .uk-h1 b, html body .uk-h1 strong,
html body h2 b, html body h2 strong, html body .uk-h2 b, html body .uk-h2 strong,
html body h3 b, html body h3 strong, html body .uk-h3 b, html body .uk-h3 strong,
html body h4 b, html body h4 strong, html body .uk-h4 b, html body .uk-h4 strong,
html body h5 b, html body h5 strong, html body .uk-h5 b, html body .uk-h5 strong,
html body h6 b, html body h6 strong, html body .uk-h6 b, html body .uk-h6 strong {
    font-weight: var(--wintra-type-weight-heading-bold, 800);
}

/* ========================================================================
 * Metrics-карточки (wm.grid-list режим WM_TYPE=number) — типографика v14.
 * Тени/hover/lift — UIKit (uk-card-default + uk-card-hover в template).
 * Здесь только градиент текста цифры (визуальная характеристика бренда).
 * ======================================================================== */

.wm-grid-list--number .wm-grid-list__value {
    background: linear-gradient(180deg,
        #5b8eff 0%,
        var(--wintra-color-primary, #033fcb) 55%,
        var(--wintra-color-primary-dark, #002c97) 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    color: transparent;
    font-weight: 800;
    letter-spacing: -0.04em;
}
.wm-bento__item--large {
    background: linear-gradient(135deg, var(--wintra-color-primary) 0%, var(--wintra-color-primary-dark) 100%);
}

/* ========================================================================
 * Группа «Тарифы» (Row-6) — тёмная подложка с радиальным градиентом и
 * мягким световым акцентом справа-сверху (по эталону design/v14 #products).
 *
 * Применяется через PageGrid-поле «Фон группы» — шеф вписывает туда имя
 * класса: wm-bg-tariffs. PageGrid распознаёт что это CSS-класс (содержит
 * дефис, regex в pagerenderer.php:177-180) и добавляет к корневому
 * <div class="wm-row-group ... wm-bg-tariffs">.
 * ======================================================================== */

.wm-bg-tariffs {
    position: relative;
    /* Обрезаем декор-фигуры (::before круг, ::after треугольник) по контейнеру
       группы — иначе они вылезают за границы и нарушают композицию. Стрелки
       управления слайдером теперь во внешнем native (slider-arrows), внутри
       компонента не торчат — overflow: hidden безопасен. */
    overflow: hidden;
    background:
        radial-gradient(ellipse 70% 60% at 80% 20%, rgba(91, 142, 255, 0.22) 0%, transparent 55%),
        radial-gradient(ellipse 60% 50% at 15% 90%, rgba(30, 80, 224, 0.20) 0%, transparent 50%),
        linear-gradient(135deg, #0D0D0D 0%, #0225A8 100%);
    /* Цвет светлого текста — per-site специфика тёмной подложки Винтры.
       Custom.css = специфика сайта (правило шефа). */
    color: var(--wintra-color-surface, #ffffff);
}

/* Декор-фигуры (как .wintra-pattern-dark в v14): большой круг справа-сверху +
   треугольник слева-снизу. На pointer-events:none, чтобы не блокировать клик. */
.wm-bg-tariffs::before {
    content: '';
    position: absolute;
    top: -80px;
    right: -100px;
    width: 320px;
    height: 320px;
    border: 2px solid rgba(255, 255, 255, 0.20);
    border-radius: 50%;
    pointer-events: none;
    z-index: 0;
}
.wm-bg-tariffs::after {
    content: '';
    position: absolute;
    bottom: -30px;
    left: 8%;
    width: 0;
    height: 0;
    border-left: 90px solid transparent;
    border-right: 90px solid transparent;
    border-bottom: 150px solid rgba(255, 255, 255, 0.12);
    transform: rotate(-15deg);
    pointer-events: none;
    z-index: 0;
}

/* Контент над декором */
.wm-bg-tariffs > * {
    position: relative;
    z-index: 1;
}

/* Цвет текста и dotnav-стиль теперь приходят универсально через
   [data-theme="dark"] на обёртке группы (поле «Тёмная» в PageGrid).
   Здесь только декор-фигуры и фон, без принудительного color. */

/* === Изоляция bleed-peek (для wintra.cert и других bleed-слайдеров) =====
 * overflow-x:clip на html+body прячет horizontal scroll от слайдеров с
 * margin-right: calc(-1 * ((100vw - 100%) / 2)) (peek-эффект).
 *
 * Важно: используем `clip` (не `hidden`) — `clip` НЕ переключает overflow-y
 * на auto, поэтому absolute-дропдауны меню (uk-navbar-dropdown,
 * wm-menu__mega-drop) работают как раньше. Это правка глобальная — для
 * любых bleed-компонентов на 2026.wintramedia.ru.
 *
 * Прецедент 30.05.2026: блок «Сертификаты» (wintra.cert + bleed=Y) при
 * per-view=5 давал тонкий horizontal scroll внизу body.
 * ===================================================================== */
html, body {
    overflow-x: clip;
}

/* === Глубокий синий фон футера (паттерн v14 section-dark) ================
 * Шеф задал в настройках модуля 03 · Цвета custom-токен `footer_back`.
 * Автогенерация создаёт класс `.wintra-custom-footer_back` с одним
 * `background: var(--wintra-custom-footer_back)`. Здесь перекрываем
 * на градиент + два слоя радиальных синих splash'ов + декор-фигуры
 * (кольцо + треугольник) — как `.section-dark .wintra-pattern-dark` в v14.
 *
 * Шеф в настройках хранит токен `footer_back` как HEX (база градиента,
 * обычно тёмно-синий: #0a1224 / #0d1530). Сами акценты — rgba-наложения
 * относительно бренд-цветов (синий-primary + светлый indigo).
 * ========================================================================= */
.wintra-custom-footer_back {
    position: relative;
    background:
        radial-gradient(circle at 15% 85%, rgba(91, 142, 255, 0.18) 0%, transparent 35%),
        radial-gradient(circle at 85% 15%, rgba(3, 63, 203, 0.22) 0%, transparent 35%),
        linear-gradient(135deg, var(--wintra-custom-footer_back, #0a1224) 0%, #0e1b3a 100%) !important;
    overflow: hidden;
}
.wintra-custom-footer_back::before {
    content: '';
    position: absolute;
    top: -80px; right: -100px;
    width: 320px; height: 320px;
    border: 2px solid rgba(91, 142, 255, 0.15);
    border-radius: 50%;
    pointer-events: none;
}
.wintra-custom-footer_back::after {
    content: '';
    position: absolute;
    bottom: -30px; left: 8%;
    width: 0; height: 0;
    border-left:  90px solid transparent;
    border-right: 90px solid transparent;
    border-bottom: 150px solid rgba(91, 142, 255, 0.08);
    transform: rotate(-15deg);
    pointer-events: none;
}
.wintra-custom-footer_back > * { position: relative; z-index: 1; }

/* Списки внутри футера, оформленные через uk-flex (inline-меню с двумя
 * ссылками типа «Политика конфиденциальности · Согласие на обработку ПД»):
 * снимаем маркеры-точки, сбрасываем дефолтный padding-left у <ul>,
 * даём нормальный зазор через токен модуля. Целимся на ul с любым
 * uk-flex-классом — это явное намерение шефа «список в строку». */
.wintra-custom-footer_back ul.uk-flex,
.wintra-custom-footer_back ul[class*="uk-flex"] {
    list-style: none;
    padding-left: 0;
    margin: 0;
    gap: var(--wintra-module-gap, 16px);
}
.wintra-custom-footer_back ul[class*="uk-flex"] > li::before { display: none; }
.wintra-custom-footer_back ul[class*="uk-flex"] > li { padding: 0; margin: 0; }

/* === Cert-слайдер: точки всегда primary (даже на тёмном ряду) ===========
 * Прецедент 30.05.2026: ряд «Сертификаты» имеет [data-theme="dark"]
 * (галка «Тёмный фон» в Сетке), но точки-индикатор вынесены ПОД ряд
 * (data-dots="under"), фактически на светлом фоне страницы. Глобальное
 * правило `[data-theme="dark"] .uk-dotnav` красит их в светлый — точки
 * становятся невидимыми. Локально для cert-темы возвращаем primary.
 * ===================================================================== */
.wm-slider.wm-tariffs--theme-cert .uk-dotnav {
    --wm-dot-bg: rgba(10, 14, 26, 0.18);
    --wm-dot-bg-hover: rgba(10, 14, 26, 0.35);
    --wm-dot-bg-active: var(--wintra-color-primary);
    --wm-dot-active-w: 24px;
}
.wm-row--shapka-desktop .wm-phone {
    font-weight: var(--wintra-custom-fw600);
}
/* End */


/* Start:/bitrix/templates/wintra.corp/components/bitrix/menu/wintra.footer-list/style.min.css?17805221501129*/
.wm-menu-footer{display:block}.wm-menu-footer__title{display:block;margin:0 0 var(--wintra-module-gap, 16px);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--wintra-color-ink-muted, #6b7280);text-decoration:none}.wm-menu-footer__item.is-selected .wm-menu-footer__link,.wm-menu-footer__link:hover,a.wm-menu-footer__title:hover{color:var(--wintra-color-primary, #033fcb)}.wm-menu-footer__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.wm-menu-footer__item{padding:0}.wm-menu-footer__link{color:var(--wintra-color-ink, #1f2937);text-decoration:none;font-size:14px;line-height:1.45}.wm-row--dark .wm-menu-footer__title,.wm-row-group--dark .wm-menu-footer__title,[data-theme=dark] .wm-menu-footer__title{color:rgba(255,255,255,.5)}.wm-row--dark .wm-menu-footer__link,.wm-row-group--dark .wm-menu-footer__link,[data-theme=dark] .wm-menu-footer__link{color:rgba(255,255,255,.65)}.wm-row--dark .wm-menu-footer__link:hover,.wm-row-group--dark .wm-menu-footer__link:hover,[data-theme=dark] .wm-menu-footer__link:hover{color:var(--wintra-color-primary, #5b8def)}
/* End */
/* /upload/wintra.webcreator/tokens.css?17812537795171 */
/* /upload/wintra.webcreator/responsive.css?17812537792404 */
/* /local/templates/wintra.corp/template_styles.css?178125741780233 */
/* /bitrix/templates/wintra.corp/components/bitrix/menu/wintra.bar/style.min.css?17805221464141 */
/* /bitrix/templates/wintra.corp/components/bitrix/main.include/wintra.crumbs/style.css?17807713061714 */
/* /local/components/wm/catalog-grouped/templates/.default/style.min.css?1780478002300 */
/* /bitrix/templates/wintra.corp/components/bitrix/news.list/wintra.grid-list/style.min.css?17804789452362 */
/* /local/components/wm/split/templates/.default/style.min.css?1780854198971 */
/* /local/components/wm/slider/slider-engine.css?17812492036227 */
/* /local/components/wm/slider/templates/wintra.tariffs/style.css?17781776732090 */
/* /local/components/wm/marquee/marquee-engine.css?17804069294342 */
/* /local/components/wm/marquee/templates/wintra.marquee/style.css?17781776783412 */
/* /local/components/wm/contacts/templates/.default/style.min.css?1780854198605 */
/* /bitrix/templates/wintra.corp/components/bitrix/form.result.new/wintra.form-inline/style.min.css?17803883049421 */
/* /local/templates/wintra.corp/custom.css?178051300117636 */
/* /bitrix/templates/wintra.corp/components/bitrix/menu/wintra.footer-list/style.min.css?17805221501129 */
