/* ===== 01-base.css ===== */
/* Токены и базовое ядро дизайн-системы
   Файл нарезан из единого application.css (как на сайте Дед Глеб).
   Порядок подключения в layout важен: поздние файлы перекрывают ранние. */
/* ============================================================
   ДИЗАЙН-СИСТЕМА КабЭм (промпт 4) — ТОКЕНЫ. Подключаются первыми.
   ============================================================ */
:root {
  /* Перенесено из 09-design-system.css: единый источник токенов */
  --container: 1280px;
  --fs-h1: 42px;
  --lh-tight: 1.16;
  --fw-regular: 400;
  /* Трекинг крупного текста (промпт 13.08.2026): без отрицательного
     межбуквенного крупные заголовки выглядят как системный шрифт */
  --ls-h1: -0.022em;
  --ls-h2: -0.012em;
  --ls-h3: -0.006em;
  --space-1: 4px;
  --radius-card: 16px;
  --control-h: 48px;
  --color-bg: #ffffff;
  --color-bg-soft: #f4f8fd;
  --color-text: #10233C;
  --color-text-invert: #ffffff;
  --color-border: #D5E2ED;
  --color-border-hover: #AFC9DE;
  --border-rule: 1px solid var(--color-border);
  --border-strong-rule: 1px solid var(--color-border-strong);
  --shadow-card: 0 1px 2px rgba(7, 26, 47, 0.04),
                 0 8px 24px rgba(7, 26, 47, 0.055);
  --focus-ring: 0 0 0 3px rgba(20, 91, 145, 0.75);
  --transition: var(--mo-fast) ease;

  /* Контейнер и измерительные величины */
  --container: 1280px;
  --gutter: 32px;
  --measure: 68ch;
  --measure-lead: 58ch;
  --measure-caption: 52ch;
  /* Кегли (rem от 16px) */
  --fs-h1: 42px;
  --fs-h2: 2rem;
  --fs-h3: 1.375rem;
  --fs-lead: 1.125rem;
  --fs-body: 1rem;
  --fs-caption: 0.875rem;
  --fs-overline: 0.8125rem;
  /* Интерлиньяж — четыре значения */
  --lh-tight: 1.16;
  --lh-heading: 1.3;
  --lh-compact: 1.45;
  --lh-text: 1.6;
  /* Начертания — два */
  --fw-regular: 400;
  --fw-bold: 600;
  /* Трекинг — три */
  /* Трекинг крупного текста (промпт 13.08.2026): без отрицательного
     межбуквенного крупные заголовки выглядят как системный шрифт */
  --ls-h1: -0.022em;
  --ls-h2: -0.012em;
  --ls-h3: -0.006em;
  --ls-overline: 0.08em;
  /* Шкала отступов, шаг 8 */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;   /* полушаг: мобильные паддинги карточек */
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;  /* шаг между блоками внутри карточек на вебе */
  --space-12: 48px;
  --space-16: 64px;
  --space-20: 80px;
  /* Вертикальный ритм: один зазор между секциями на всех страницах.
     15px — решение владельца 31.08.2026, отменяет 25 от 28.08 */
  --section-gap: 15px;
  /* Внутренние отступы: панель со своим фоном и мелкая карточка внутри неё */
  --pad-panel: 24px;
  --pad-card: 16px;
  /* Радиусы — три */
  --radius-card: 16px;
  --radius-control: 12px;
  /* 12, не 8: в шкале проекта только 12 и 16 (аудит 26.08.2026, п. 1).
     Токен оставлен, чтобы не переписывать все места использования */
  --radius-chip: 12px;
  /* Геометрия элементов управления */
  --control-h: 48px;
  --control-pad-x: 16px;
  --btn-pad-x: 24px;
  --textarea-min-h: 120px;
  --tap-min: 44px;
  --icon-inline: 20px;
  --icon-block: 24px;
  --icon-plate: 40px;
  /* Цвета границ и фокуса */
  --color-error: #A8342B;   /* единственный красный для ошибок, 6.1:1 на белом */
  --color-border: #D5E2ED;
  --color-border-hover: #AFC9DE;
  --color-border-strong: #9BB8D5;
  --color-primary: #10233C;
  --border: 1px solid var(--color-border);
  --border-strong: 1px solid var(--color-border-strong);
  /* Тени — две */
  --shadow-card: 0 1px 2px rgba(7, 26, 47, 0.04), 0 8px 24px rgba(7, 26, 47, 0.055);
  --shadow-raised: 0 2px 4px rgba(7, 26, 47, 0.06), 0 12px 32px rgba(7, 26, 47, 0.09);
  /* Фокус */
  --focus-ring: 0 0 0 3px rgba(20, 91, 145, 0.75);
  --focus-offset: 2px;
  /* Анимация */
  --transition: var(--mo-fast) ease;
  --card-pad: 32px;
}

@media (max-width: 1023px) {
  :root { --gutter: 24px }
}

/* Широкие мониторы: контейнер растёт с 1280 до 1440 (решение 16.08.2026).
   На 1920 поля по краям были по 320px и страница выглядела узкой колонкой
   посередине экрана; со 1440 поля сокращаются до 240. Дальше не растим:
   строки текста и так подходят к пределу читаемости. */
@media (min-width: 1600px) {
  :root { --container: 1440px }
}

@media (max-width: 767px) {
  :root {
    --gutter: 16px;
    --fs-h1: 2rem;
    --fs-h2: 1.625rem;
    --fs-h3: 1.25rem;
    --fs-lead: 1.0625rem;
    --fs-overline: 0.75rem;
    --lh-tight: 1.2;
    --control-h: 48px; /* решение 24.08.2026: на мобильном кнопка 48 */
    --space-20: 64px;
    --radius-card: 16px; /* радиус панелей один на всех ширинах (аудит 24.08) */
    --card-pad: 20px;
  }
}

@media (prefers-reduced-motion: reduce) {
  :root { --transition: 0ms }
}

* {
  box-sizing: border-box;
}

/* Inter — единая шрифтовая система: заголовки, текст, кнопки — всё одним шрифтом */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url("/fonts/inter-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: "Inter";
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url("/fonts/inter-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;
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url("/fonts/inter-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: "Inter";
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url("/fonts/inter-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;
}
:root {
  --font-heading: "Inter", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --font-body: "Inter", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --font-display: "Inter", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --font-weight-regular: 400;
  --font-weight-medium: 400;
  --font-weight-semibold: 600;
  --font-weight-bold: 600;
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-md: 1.125rem;
  --text-lg: 1.25rem;
  --text-xl: 1.5rem;
  --text-2xl: 2rem;
  --text-3xl: 2.75rem;
  --text-hero: clamp(3rem, 4.4vw, 4.75rem);
  --color-text-primary: #181b1e;
  --color-text-secondary: #5c6672;
  --color-text-muted: #7b8490;
  --color-text-on-dark: #f5f7fa;
  --color-text-secondary-on-dark: #b9c1cc;
  --bg: #f7f8f4;
  --surface: #ffffff;
  --surface-2: #edf3f2;
  --ink: #17191c;
  --muted: #5f6873;
  --line: #d8dedc;
  --blue: #1d6fb8;
  --blue-dark: #124977;
  --copper: #b66a2c;
  --green: #2f7d64;
  --shadow: 0 18px 45px rgba(23, 25, 28, 0.09);
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 90px;
  font-synthesis: none;
  /* Страница не ездит вбок. Горизонтальной прокрутки на сайте нет ни на
     одной ширине, но Chrome на macOS по двухпальцевому свайпу всё равно
     тянет её вправо: это жест «назад» и резиновый откат. Свойство их
     выключает — страница стоит на месте (15.08.2026). */
  overscroll-behavior-x: none;
}

[id] {
  scroll-margin-top: 90px;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--color-text-secondary);
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: var(--font-weight-regular);
  line-height: 1.6;
}

a {
  color: inherit;
  text-decoration: none;
}

.skip-link {
  position: fixed;
  left: 16px;
  top: 16px;
  z-index: 1000;
  transform: translateY(calc(-100% - 32px));
  padding: 10px 14px;
  border-radius: 8px;
  background: var(--blue-dark);
  color: #ffffff;
  font-weight: 600;
  transition: transform var(--mo-micro) ease;
}

.skip-link:focus {
  transform: translateY(0);
}

.skip-anchor {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

img {
  display: block;
  max-width: 100%;
}

.wrap {
  width: min(1400px, calc(100% - 24px));
  margin: 0 auto;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 10;
  background: rgba(247, 248, 244, 0.92);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(14px);
}

.header-inner {
  display: flex;
  align-items: center;
  gap: 28px;
  min-height: 78px;
}

.brand {
  display: inline-flex;
  align-items: center;
  flex: 1;
}

.brand-logo {
  width: 144px;
  height: auto;
}

.primary-nav {
  display: flex;
  align-items: center;
  /* Меню занимает свободное место между логотипом и действиями и стоит
     по центру: до этого пункты жались к логотипу, а справа от них до
     телефона оставалась пустая треть шапки (просьба 19.08.2026). */
  flex: 1;
  justify-content: center;
  gap: 24px;
  color: var(--muted);
  font-size: 15px;
}

.primary-nav a:hover,
.text-link:hover {
  color: var(--blue);
}

.header-phone {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--blue-dark);
  font-size: 13px;
  line-height: 1.2;
}

.header-phone strong {
  color: var(--blue-dark);
  font-size: 15px;
  white-space: nowrap;
}

.header-phone span {
  color: var(--muted);
  white-space: nowrap;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* Единая система 24.08.2026: одна высота кнопки на всех страницах и
     ширинах, включая мобильный (решение заказчика — 48) */
  min-height: var(--control-h);
  padding: 0 22px;
  border: 1px solid var(--blue);
  border-radius: var(--radius-control);
  background: var(--blue);
  color: #fff;
  font-weight: 600;
  cursor: pointer;
  transition: transform var(--mo-micro) ease, background var(--mo-micro) ease, border-color var(--mo-micro) ease;
}

.btn:hover {
  background: var(--blue-dark);
  border-color: var(--blue-dark);
  transform: translateY(-1px);
}

.btn-line {
  background: transparent;
  color: var(--blue-dark);
}

.btn-line:hover {
  background: #e8f1f8;
  color: var(--blue-dark);
}

.btn-small {
  min-height: 40px;
  padding: 0 16px;
  font-size: 14px;
}

.hero {
  padding: 72px 0 56px;
  background: linear-gradient(180deg, #ffffff 0%, var(--bg) 100%);
}

.hero-grid,
.product-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(320px, 0.88fr);
  gap: 48px;
  align-items: center;
}

.eyebrow,
.kicker {
  margin: 0 0 14px;
  color: var(--copper);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

h1,
h2,
h3 {
  color: var(--color-text-primary);
  font-family: var(--font-heading);
  font-weight: var(--font-weight-semibold);
  text-wrap: balance;
  word-break: normal;
  overflow-wrap: normal;
  hyphens: none;
}

p {
  overflow-wrap: break-word;
}

h1 {
  max-width: 880px;
  margin: 0;
  font-size: clamp(42px, 6vw, 76px);
  line-height: 0.98;
  font-weight: var(--font-weight-bold);
}

h2 {
  margin: 0 0 14px;
  font-size: clamp(28px, 4vw, 44px);
  line-height: 1.08;
}

h3 {
  margin: 0 0 10px;
  font-size: 21px;
  line-height: 1.2;
}

.lead {
  max-width: 690px;
  margin: 22px 0 0;
  color: var(--muted);
  font-size: 20px;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 32px;
}

.hero-facts {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-top: 42px;
}

.fact {
  min-height: 112px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.fact strong,
.fact span {
  display: block;
}

.fact strong {
  margin-bottom: 6px;
  font-size: 20px;
}

.fact span {
  color: var(--muted);
  font-size: 14px;
}

.hero-visual,
.product-visual {
  position: relative;
  min-height: 460px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background:
    linear-gradient(90deg, rgba(29, 111, 184, 0.08) 1px, transparent 1px),
    linear-gradient(0deg, rgba(29, 111, 184, 0.08) 1px, transparent 1px),
    #f1f4ee;
  background-size: 40px 40px;
  overflow: hidden;
}

.cable-hero {
  position: absolute;
  inset: 50%;
  width: min(330px, 72vw);
  aspect-ratio: 1;
  transform: translate(-50%, -50%);
  border: 28px solid #2d3134;
  border-radius: 999px;
  background: #f1ede5;
  box-shadow: inset 0 0 0 18px #d3d8d5, var(--shadow);
}

.cable-hero span {
  position: absolute;
  width: 78px;
  aspect-ratio: 1;
  border-radius: 999px;
  background: radial-gradient(circle at 38% 38%, #f4b26d 0 28%, var(--copper) 29% 100%);
  box-shadow: 0 0 0 12px #30383b;
}

.cable-hero span:nth-child(1) { left: 74px; top: 58px; }
.cable-hero span:nth-child(2) { right: 74px; top: 58px; background: radial-gradient(circle at 38% 38%, #e7eef0 0 28%, #7c8b91 29% 100%); }
.cable-hero span:nth-child(3) { left: 74px; bottom: 66px; background: radial-gradient(circle at 38% 38%, #9fd6c6 0 28%, var(--green) 29% 100%); }
.cable-hero span:nth-child(4) { right: 74px; bottom: 66px; }

.hero-card {
  position: absolute;
  right: 26px;
  bottom: 26px;
  width: min(250px, calc(100% - 52px));
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: var(--shadow);
}

.hero-card strong,
.hero-card span {
  display: block;
}

.hero-card span {
  margin-top: 4px;
  color: var(--muted);
}

.trust-strip {
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: var(--surface);
}

.trust-grid,
.value-grid,
.contact-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  padding: 24px 0;
}

.trust-item,
.value-card,
.contact-card,
.panel,
.product-card,
.category-card,
.quote-form,
.empty-state {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.trust-item {
  padding: 22px;
}

.trust-item h2,
.trust-item h3,
.value-card h3 {
  font-size: 20px;
}

.trust-item p,
.panel p,
.value-card p,
.contact-card p,
.category-card p,
.product-card p,
.form-note {
  color: var(--muted);
}

.section {
  padding: 72px 0;
}

.section-muted {
  background: var(--surface-2);
}

.section-head {
  margin-bottom: 28px;
}

.section-head p:last-child {
  color: var(--muted);
  font-size: 18px;
}

.category-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}

.category-card {
  min-height: 190px;
  padding: 24px;
  transition: transform var(--mo-micro) ease, box-shadow var(--mo-micro) ease;
}

.category-card:hover,
.product-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow);
}

.category-mark {
  display: block;
  width: 42px;
  height: 10px;
  margin-bottom: 22px;
  border-radius: 8px;
  background: linear-gradient(90deg, var(--blue), var(--copper), var(--green));
}

.product-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}

.product-card {
  display: flex;
  flex-direction: column;
  min-height: 430px;
  overflow: hidden;
}

.product-card-media {
  display: grid;
  place-items: center;
  min-height: 170px;
  background: #eef0ea;
}

.cable-disc {
  position: relative;
  display: block;
  width: 112px;
  aspect-ratio: 1;
  border: 14px solid #2d3134;
  border-radius: 999px;
  background: #ffffff;
  box-shadow: inset 0 0 0 10px #cfd8d4;
}

.cable-disc span {
  position: absolute;
  width: 24px;
  aspect-ratio: 1;
  border-radius: 999px;
  background: var(--copper);
}

.cable-disc span:nth-child(1) { left: 22px; top: 24px; }
.cable-disc span:nth-child(2) { right: 22px; top: 24px; background: var(--blue); }
.cable-disc span:nth-child(3) { left: 42px; bottom: 24px; background: var(--green); }

.product-card-body {
  display: flex;
  flex: 1;
  flex-direction: column;
  padding: 22px;
}

.product-category {
  margin: 0 0 8px;
  color: var(--copper);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.product-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 18px 0;
}

.product-tags span,
.status {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f7f8f4;
  color: #5C6E84;
  font-size: 13px;
}

.product-card-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: auto;
}

.text-link {
  color: var(--blue-dark);
  font-weight: 600;
}

/* Тач-цель: самостоятельные текстовые ссылки-действия — минимум 44px по высоте */
body:not(.admin-body) a.text-link,
body:not(.admin-body) span.text-link,
body:not(.admin-body) button.text-link {
  display: inline-flex;
  align-items: center;
  min-height: var(--tap-min);
}

/* Ссылки внутри абзаца остаются инлайновыми — увеличиваем область через padding */
body:not(.admin-body) .text-link-inline {
  padding-block: 12px;
  /* Кегль и интервал — от абзаца: общее правило a { font-size: 16 }
     делало ссылку на 2px крупнее текста в подписях 14 и 13 (31.08.2026).
     Раньше это лечили постранично — на «О компании» и Главной */
  font-size: inherit;
  line-height: inherit;
}

.text-link[data-analytics-goal="template_download"] {
  font-size: 0.9375rem;
}

.two-column {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}

.panel,
.value-card,
.contact-card,
.empty-state {
  padding: 28px;
}

.panel-accent {
  background: #143f62;
  color: #fff;
}

.panel-accent p {
  color: rgba(255, 255, 255, 0.78);
}

.page-hero {
  padding: 64px 0 46px;
  background: #ffffff;
}

.catalog-layout {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: 28px;
  padding-top: 48px;
  padding-bottom: 72px;
}

.catalog-sidebar {
  position: sticky;
  top: 104px;
  align-self: start;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.catalog-sidebar h2 {
  font-size: 20px;
}

.catalog-sidebar a {
  display: block;
  padding: 10px 12px;
  border-radius: 8px;
  color: var(--muted);
}

.catalog-sidebar a.active,
.catalog-sidebar a:hover {
  background: #e8f1f8;
  color: var(--blue-dark);
}

.search-form {
  display: grid;
  gap: 10px;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
}

.search-form label,
.field label {
  color: #5C6E84;
  font-weight: 600;
}

input,
textarea,
select {
  width: 100%;
  border: 1px solid #c7d0cf;
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  font: inherit;
}

input {
  min-height: 46px;
  padding: 0 12px;
}

select {
  min-height: 46px;
  padding: 0 12px;
}

textarea {
  padding: 12px;
  resize: vertical;
}

input:focus,
textarea:focus,
select:focus {
  outline: 3px solid #1870BD;
  border-color: var(--blue);
}

.catalog-count {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin-bottom: 18px;
}

.catalog-count strong {
  font-size: 32px;
}

.product-hero .product-visual {
  min-height: 360px;
}

.spec-list {
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 12px 18px;
  margin: 0;
}

.spec-list dt {
  color: var(--muted);
  font-weight: 600;
}

.spec-list dd {
  margin: 0;
}

.quote-form {
  padding: clamp(22px, 4vw, 36px);
}

.quote-form-copy {
  margin-bottom: 24px;
}

.quote-form-copy p {
  max-width: 700px;
  color: var(--muted);
}

.quote-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.field {
  display: grid;
  gap: 8px;
}

.field-wide,
.consent {
  grid-column: 1 / -1;
}

.consent {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
}

.consent input {
  width: 24px;
  height: 24px;
  min-height: 24px;
  margin-top: 10px;
}

/* Кликабельная область согласия — не меньше 44px по высоте */
body:not(.admin-body) .consent > label {
  display: flex;
  align-items: center;
  min-height: var(--tap-min);
}

.required-marker,
.field-error {
  /* Единственный красный сайта: второй оттенок #B43B31 убран 28.08.2026 */
  color: var(--color-error);
}

.field-error {
  margin: 0;
  font-size: 14px;
}

.form-errors {
  margin-bottom: 20px;
  padding: 16px;
  border: 1px solid #e6b3ad;
  border-radius: 8px;
  background: #fff2ef;
}

.honeypot {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

.quote-form .btn {
  margin-top: 22px;
}

.form-note {
  margin: 12px 0 0;
  font-size: 14px;
}

.contact-grid {
  padding: 0;
}

.contact-card a {
  display: inline-flex;
  margin: 8px 0;
  color: var(--blue-dark);
  font-weight: 600;
}

.prose-page {
  max-width: 780px;
}

.flash {
  padding: 14px 0;
  background: #e8f5ef;
  color: #1870BD;
  border-bottom: 1px solid var(--color-border);
  font-weight: 600;
}

.category-image {
  width: 100%;
  height: 92px;
  margin-bottom: 18px;
  border-radius: 8px;
  object-fit: cover;
  background: #eef0ea;
}

.category-subgroups {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 18px;
}

.category-subgroups span,
.admin-row-title span,
.admin-subcategory > span {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f7f8f4;
  color: #5C6E84;
  font-size: 13px;
  font-weight: 600;
}

.catalog-sidebar .sub-link {
  margin-left: 16px;
  padding-left: 18px;
  border-left: 2px solid var(--line);
  font-size: 14px;
}

.stock-public {
}

.stock-file-card {
  padding: clamp(24px, 4vw, 36px);
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.stock-file-card h2 {
  font-size: clamp(24px, 3vw, 34px);
}

.stock-file-card .btn {
  margin: 18px 10px 0 0;
}

.stock-meta,
.current-file p,
.admin-page-head p,
.admin-subcategory p,
.admin-category-main p {
  color: var(--muted);
}

.admin-body {
  background: #f3f5f0;
}

.admin-header {
  position: sticky;
  top: 0;
  z-index: 20;
  border-bottom: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(14px);
}

.admin-header-inner {
  display: flex;
  align-items: center;
  gap: 24px;
  min-height: 72px;
}

.admin-brand {
  color: var(--blue-dark);
  font-size: 24px;
  font-weight: 600;
}

.admin-nav {
  display: flex;
  flex: 1;
  justify-content: flex-end;
  gap: 18px;
  color: var(--muted);
  font-weight: 600;
}

.admin-nav a:hover {
  color: var(--blue-dark);
}

.admin-main {
  padding-top: 42px;
  padding-bottom: 72px;
}

.admin-page-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 28px;
}

.admin-list {
  display: grid;
  gap: 16px;
}

.admin-panel,
.admin-category-row {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: 0 12px 28px rgba(23, 25, 28, 0.06);
}

.admin-panel {
  padding: clamp(22px, 4vw, 34px);
}

.admin-category-row {
  display: grid;
  grid-template-columns: 132px minmax(0, 1fr);
  gap: 22px;
  padding: 18px;
}

.admin-category-thumb {
  display: grid;
  place-items: center;
  min-height: 112px;
  border-radius: 8px;
  background: #eef0ea;
  overflow: hidden;
}

.admin-category-thumb picture {
  display: block;
  width: 100%;
  height: 100%;
}

.admin-category-thumb img,
.current-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.admin-category-main {
  min-width: 0;
}

.admin-row-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.admin-row-title h2 {
  margin-bottom: 0;
  font-size: 24px;
}

.admin-row-actions,
.admin-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-top: 16px;
}

.admin-row-actions form,
.admin-actions form {
  margin: 0;
}

.compact-actions {
  margin-top: 0;
}

.admin-subcategories {
  grid-column: 2;
  display: grid;
  gap: 10px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}

.admin-subcategory {
  padding: 14px;
  border-radius: 8px;
  background: #f7f8f4;
}

.admin-subcategory strong {
  display: inline-block;
  margin-right: 10px;
  font-size: 18px;
}

.admin-form {
  display: grid;
  gap: 18px;
}

.admin-form-grid {
  display: grid;
  grid-template-columns: 1fr 180px;
  gap: 16px;
}

.admin-form input[type="file"] {
  min-height: 52px;
  padding: 12px;
}

.check-field {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
}

.check-field input {
  width: 18px;
  min-height: 18px;
}

.current-file {
  margin-bottom: 26px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--line);
}

.current-image {
  display: grid;
  grid-template-columns: minmax(120px, 190px) minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  margin-top: 10px;
}

.current-image img {
  height: 116px;
  border-radius: 8px;
  background: #eef0ea;
}

.btn-danger {
  border-color: #b43b31;
  background: #b43b31;
}

.btn-danger:hover {
  border-color: #8f2f28;
  background: #8f2f28;
}

.link-danger {
  display: inline-flex;
  align-items: center;
  min-height: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: #b43b31;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}

.link-danger:hover {
  color: #8f2f28;
}

.admin-preview-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 24px;
}

.preview-meta-item,
.preview-device {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.preview-meta-item {
  padding: 16px;
}

.preview-meta-item span,
.preview-device-head p {
  display: block;
  margin: 0;
  color: var(--muted);
  font-size: 14px;
}

.preview-meta-item strong {
  display: block;
  margin-top: 4px;
  font-size: 18px;
}

.admin-preview-stack {
  display: grid;
  gap: 28px;
}

.preview-device {
  overflow: hidden;
  box-shadow: 0 12px 28px rgba(23, 25, 28, 0.06);
}

.preview-device-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding: 18px;
  border-bottom: 1px solid var(--line);
}

.preview-device-head h2 {
  margin: 0 0 4px;
  font-size: 22px;
}

.preview-canvas {
  overflow: auto;
  padding: 18px;
  background:
    linear-gradient(90deg, rgba(29, 111, 184, 0.08) 1px, transparent 1px),
    linear-gradient(0deg, rgba(29, 111, 184, 0.08) 1px, transparent 1px),
    #e7ecea;
  background-size: 32px 32px;
}

.preview-canvas-mobile {
  display: flex;
  justify-content: center;
}

.preview-iframe {
  display: block;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 16px 30px rgba(23, 25, 28, 0.12);
}

.preview-iframe-desktop {
  width: 1400px;
  height: 760px;
}

.preview-iframe-mobile {
  width: 390px;
  height: 760px;
}

.category-photo-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  height: 108px;
  margin-bottom: 18px;
}

.category-photo-grid.is-single {
  grid-template-columns: 1fr;
}

.category-photo-grid .category-image {
  width: 100%;
  height: 100%;
  margin-bottom: 0;
}

.admin-body {
  min-height: 100vh;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(237, 243, 242, 0.9) 330px, var(--bg) 760px),
    var(--bg);
}

.admin-backdrop {
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(29, 111, 184, 0.06) 1px, transparent 1px),
    linear-gradient(0deg, rgba(29, 111, 184, 0.05) 1px, transparent 1px);
  background-size: 44px 44px;
}

.admin-header {
  border-bottom: 1px solid rgba(216, 222, 220, 0.78);
  background: rgba(255, 255, 255, 0.88);
  box-shadow: 0 10px 30px rgba(23, 25, 28, 0.05);
}

.admin-header-inner {
  min-height: 76px;
}

.admin-brand {
  display: inline-flex;
  align-items: center;
  flex: 1;
  min-width: 160px;
}

.admin-logo {
  width: 138px;
  height: auto;
}

.admin-nav {
  flex: none;
  justify-content: flex-end;
  gap: 6px;
  padding: 6px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.86);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8);
}

.admin-nav a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  padding: 0 12px;
  border-radius: 8px;
  color: var(--muted);
  font-size: 14px;
}

.admin-nav a:hover {
  background: #e8f1f8;
  color: var(--blue-dark);
}

.admin-nav a.active {
  background: var(--blue-dark);
  color: #fff;
}

.admin-nav .admin-site-link {
  color: var(--blue-dark);
}

.admin-main {
  padding-top: 28px;
}

.admin-page-head {
  position: relative;
  overflow: hidden;
  padding: clamp(20px, 3vw, 28px);
  border: 1px solid var(--line);
  border-radius: 8px;
  background:
    linear-gradient(135deg, #ffffff 0%, #f8fbfa 58%, #edf3f2 100%);
  box-shadow: 0 16px 38px rgba(23, 25, 28, 0.07);
}

.admin-page-head::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 7px;
  background: linear-gradient(180deg, var(--blue), var(--copper), var(--green));
}

.admin-page-head > * {
  position: relative;
}

.admin-page-head p:last-child {
  max-width: 680px;
  margin-bottom: 0;
  font-size: 15px;
}

.admin-metric-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin: 0 0 22px;
}

.admin-metric {
  position: relative;
  overflow: hidden;
  min-height: 84px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: 0 12px 28px rgba(23, 25, 28, 0.06);
}

.admin-metric::after {
  content: "";
  position: absolute;
  left: 20px;
  right: 20px;
  bottom: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--blue), var(--copper), var(--green));
}

.admin-metric span {
  display: block;
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}

.admin-metric strong {
  display: block;
  margin-top: 6px;
  font-size: 28px;
  line-height: 1;
}

.admin-panel,
.admin-category-row,
.preview-device,
.preview-meta-item {
  border-color: var(--color-border);
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 16px 34px rgba(23, 25, 28, 0.07);
}

.admin-category-row {
  transition: transform var(--mo-micro) ease, box-shadow var(--mo-micro) ease, border-color var(--mo-micro) ease;
}

.admin-category-row:hover {
  transform: translateY(-2px);
  border-color: var(--color-border-hover);
  box-shadow: var(--shadow);
}

.admin-category-thumb {
  min-height: 132px;
  border: 1px solid rgba(216, 222, 220, 0.88);
  background:
    linear-gradient(135deg, rgba(29, 111, 184, 0.08), rgba(47, 125, 100, 0.08)),
    #eef0ea;
}

.admin-thumb-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px;
  width: 100%;
  height: 100%;
}

.admin-thumb-grid.is-single {
  grid-template-columns: 1fr;
}

.admin-thumb-grid img {
  width: 100%;
  height: 100%;
  min-height: 132px;
  object-fit: cover;
}

.admin-row-title span,
.admin-subcategory > span,
.status-pill {
  border-color: var(--color-border);
  background: #e8f5ef;
  color: #1870BD;
  font-size: 12px;
}

.admin-row-title h2 {
  font-size: 20px;
}

.status-pill.is-hidden {
  border-color: #f0c7c2;
  background: #fff2ef;
  color: #8f2f28;
}

.status-pill.is-live {
  border-color: var(--color-border);
  background: #e8f5ef;
  color: #1870BD;
}

.admin-subcategory {
  border: 1px solid var(--color-border);
  background:
    linear-gradient(90deg, rgba(29, 111, 184, 0.04), rgba(47, 125, 100, 0.04)),
    #fbfcfa;
}

.admin-subcategory strong {
  font-size: 16px;
}

.admin-form {
  padding: clamp(20px, 3vw, 28px);
  border: 1px solid var(--line);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 16px 34px rgba(23, 25, 28, 0.07);
}

.admin-panel .admin-form {
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.admin-form input[type="file"] {
  border-style: dashed;
  background: #f8fbfa;
}

.current-photo-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 220px));
  gap: 14px;
  margin-top: 12px;
}

.current-photo {
  display: grid;
  gap: 10px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f8fbfa;
}

.current-photo img {
  width: 100%;
  height: 124px;
  border-radius: 8px;
  object-fit: cover;
  background: #eef0ea;
}

.admin-panel .empty-state {
  border: 1px dashed var(--color-border);
  background:
    linear-gradient(135deg, rgba(29, 111, 184, 0.05), rgba(47, 125, 100, 0.05)),
    #fbfcfa;
}

.preview-canvas {
  background:
    linear-gradient(90deg, rgba(1, 46, 79, 0.07) 1px, transparent 1px),
    linear-gradient(0deg, rgba(1, 46, 79, 0.06) 1px, transparent 1px),
    #e7ecea;
}

.preview-meta-item strong {
  font-size: 16px;
}

.preview-device-head h2 {
  font-size: 19px;
}

.site-footer {
  padding: 48px 0 24px;
  border-top: 1px solid var(--line);
  background: #24282b;
  color: #fff;
}

.footer-grid {
  display: grid;
  grid-template-columns: 1.3fr 0.8fr 1fr;
  gap: 42px;
}

.footer-logo {
  width: 132px;
  margin-bottom: 18px;
  filter: brightness(0) invert(1);
}

.footer-brand p,
.footer-block p,
.footer-bottom {
  color: rgba(255, 255, 255, 0.68);
}

.footer-block {
  display: grid;
  gap: 8px;
}

.footer-block h2 {
  font-size: 18px;
}

.footer-bottom {
  margin-top: 34px;
  padding-top: 18px;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
  font-size: 14px;
}

@media (max-width: 920px) {
  .header-inner,
  .primary-nav {
    gap: 14px;
  }

  .primary-nav {
    display: none;
  }

  .hero-grid,
  .product-hero-grid,
  .two-column,
  .catalog-layout,
  .admin-form-grid,
  .footer-grid {
    grid-template-columns: 1fr;
  }

  .hero-visual {
    min-height: 360px;
  }

  .hero-facts,
  .trust-grid,
  .category-grid,
  .product-grid,
  .value-grid,
  .contact-grid {
    grid-template-columns: 1fr 1fr;
  }

  .catalog-sidebar {
    position: static;
  }

  .admin-page-head {
    display: grid;
  }

  .admin-category-row {
    grid-template-columns: 104px minmax(0, 1fr);
  }

  .admin-preview-meta {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .admin-metric-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .admin-subcategories {
    grid-column: 1 / -1;
  }
}

@media (max-width: 640px) {
  .wrap {
    width: min(100% - 24px, 1400px);
  }

  .header-inner {
    min-height: 68px;
  }

  .brand-logo {
    width: 116px;
  }

  .site-header .btn {
    padding: 0 12px;
    font-size: 13px;
  }

  .admin-header-inner,
  .admin-nav,
  .admin-row-title,
  .current-image {
    display: grid;
  }

  .admin-nav {
    justify-content: start;
    gap: 8px;
  }

  .admin-logo {
    width: 136px;
  }

  .admin-nav {
    width: 100%;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .admin-nav a {
    padding: 0 10px;
    font-size: 14px;
  }

  .admin-category-row {
    grid-template-columns: 1fr;
  }

  .admin-category-thumb {
    min-height: 150px;
  }

  .admin-preview-meta {
    grid-template-columns: 1fr;
  }

  .admin-metric-grid,
  .current-photo-grid {
    grid-template-columns: 1fr;
  }

  .preview-device-head {
    display: grid;
  }

  .preview-canvas {
    padding: 12px;
  }

  .stock-file-card .btn {
    width: 100%;
    margin-right: 0;
  }

  h1 {
    font-size: 40px;
  }

  .lead {
    font-size: 17px;
  }

  .hero,
  .section {
    padding: 48px 0;
  }

  .hero-facts,
  .trust-grid,
  .category-grid,
  .product-grid,
  .value-grid,
  .contact-grid,
  .quote-grid {
    grid-template-columns: 1fr;
  }

  .product-card {
    min-height: auto;
  }

  .spec-list {
    grid-template-columns: 1fr;
  }

  .cable-hero {
    width: 250px;
    border-width: 22px;
  }

  .cable-hero span {
    width: 56px;
  }

  .cable-hero span:nth-child(1) { left: 52px; top: 48px; }
  .cable-hero span:nth-child(2) { right: 52px; top: 48px; }
  .cable-hero span:nth-child(3) { left: 52px; bottom: 54px; }
  .cable-hero span:nth-child(4) { right: 52px; bottom: 54px; }
}

/* Public B2B design system */
body {
  font-family: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

a:focus-visible,
button:focus-visible,
summary:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 3px solid #1870BD;
  outline-offset: 3px;
}

.site-header {
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 8px 24px rgba(23, 25, 28, 0.04);
}

.header-inner {
  position: relative;
  gap: 18px;
  min-height: 62px;
}

.brand {
  flex: 0 0 auto;
}

.brand-logo {
  width: 132px;
}

.primary-nav {
  flex: 1;
  justify-content: center;
  gap: 10px;
  font-size: 14px;
  font-weight: 600;
}

.primary-nav a,
.nav-link {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 0 8px;
  border-radius: 8px;
  color: var(--muted);
  cursor: pointer;
}

.primary-nav a:hover,
.primary-nav a.is-active,
.nav-link:hover,
.nav-link.is-active {
  background: #e8f1f8;
  color: var(--blue-dark);
}

.nav-dropdown {
  position: relative;
}

.nav-dropdown summary,
.mobile-menu summary {
  list-style: none;
}

.nav-dropdown summary::-webkit-details-marker,
.mobile-menu summary::-webkit-details-marker {
  display: none;
}

.nav-link::after {
  content: "";
  width: 6px;
  height: 6px;
  margin-left: 7px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
}

.nav-dropdown-panel {
  position: absolute;
  top: calc(100% + 10px);
  left: 0;
  z-index: 30;
  display: grid;
  min-width: 300px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  box-shadow: 0 18px 42px rgba(23, 25, 28, 0.14);
}

.nav-dropdown:not([open]) .nav-dropdown-panel {
  display: none;
}

.nav-dropdown-panel a {
  justify-content: flex-start;
  min-height: 38px;
  padding: 0 12px;
}

.header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.header-cta {
  min-height: 36px;
  padding: 0 14px;
  font-size: 13px;
  white-space: nowrap;
}

.mobile-menu {
  display: none;
}

.mobile-menu-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  color: var(--blue-dark);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}

.mobile-menu-panel {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  right: 0;
  z-index: 40;
  display: grid;
  gap: 4px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  box-shadow: 0 18px 42px rgba(23, 25, 28, 0.16);
}

.mobile-menu:not([open]) .mobile-menu-panel {
  display: none;
}

.mobile-menu-panel a {
  min-height: 38px;
  padding: 0 12px;
  border-radius: 8px;
  color: var(--muted);
  font-weight: 600;
}

.mobile-menu-panel a:hover,
.mobile-menu-panel a.is-active {
  background: #e8f1f8;
  color: var(--blue-dark);
}

.breadcrumbs {
  padding: 10px 0;
  border-bottom: 1px solid rgba(216, 222, 220, 0.68);
  background: rgba(255, 255, 255, 0.78);
  color: var(--muted);
  font-size: 13px;
}

.breadcrumbs ol {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.breadcrumbs li {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.breadcrumbs li + li::before {
  content: "/";
  color: #9aa5ad;
}

.breadcrumbs a:hover {
  color: var(--blue-dark);
}

.hero {
  padding: 58px 0 44px;
}

section[id],
#quote-form {
  scroll-margin-top: 92px;
}

.page-hero {
  padding: 56px 0 38px;
}

.section {
  padding: 60px 0;
}

h1 {
  font-size: clamp(38px, 5vw, 68px);
  line-height: 1;
}

h2 {
  font-size: clamp(26px, 3.3vw, 40px);
}

.lead {
  font-size: clamp(17px, 2vw, 20px);
}

.hero-microcopy {
  display: grid;
  gap: 6px;
  margin-top: 16px;
  color: var(--muted);
  font-size: 14px;
}

.fact-strip {
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: #ffffff;
}

.fact-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  padding: 16px 0;
}

.fact-grid .fact {
  min-height: 94px;
  padding: 16px;
}

.trust-grid,
.value-grid,
.contact-grid {
  gap: 16px;
}

.trust-item,
.value-card,
.contact-card,
.panel,
.product-card,
.category-card,
.quote-form,
.empty-state,
.catalog-note,
.process-card,
.industry-card {
  border-color: var(--color-border);
  border-radius: 8px;
}

.trust-item,
.value-card,
.contact-card,
.panel,
.empty-state,
.catalog-note,
.process-card,
.industry-card {
  padding: clamp(20px, 2.5vw, 28px);
}

.panel-accent {
  background: #113f63;
}

.panel-accent .btn {
  border-color: #ffffff;
  background: #ffffff;
  color: var(--blue-dark);
}

.panel-accent .btn:hover {
  border-color: #e8f1f8;
  background: #e8f1f8;
}

.hero-visual-supply {
  background:
    linear-gradient(90deg, rgba(29, 111, 184, 0.08) 1px, transparent 1px),
    linear-gradient(0deg, rgba(29, 111, 184, 0.08) 1px, transparent 1px),
    #f4f7f5;
}

.supply-rings {
  position: absolute;
  inset: 50%;
  width: min(390px, 78vw);
  aspect-ratio: 1;
  transform: translate(-50%, -50%);
}

.supply-rings span {
  position: absolute;
  inset: 0;
  border: 1px solid var(--color-border);
  border-radius: 999px;
}

.supply-rings span:nth-child(2) {
  inset: 34px;
  border-color: rgba(182, 106, 44, 0.24);
}

.supply-rings span:nth-child(3) {
  inset: 68px;
  border-color: var(--color-border);
}

.supply-board {
  position: absolute;
  inset: 0;
}

.supply-node {
  position: absolute;
  left: 28px;
  top: 28px;
  z-index: 2;
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  color: var(--blue-dark);
  font-weight: 600;
  box-shadow: 0 12px 24px rgba(23, 25, 28, 0.08);
}

.supply-line {
  position: absolute;
  left: 88px;
  top: 84px;
  width: 2px;
  height: 210px;
  background: linear-gradient(180deg, var(--blue), var(--copper));
}

.supply-cluster {
  position: absolute;
  left: 28px;
  bottom: 28px;
  z-index: 2;
  display: grid;
  gap: 8px;
}

.supply-cluster span {
  width: max-content;
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.92);
  color: #5C6E84;
  font-size: 13px;
  font-weight: 600;
}

.process-grid,
.industry-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 16px;
}

.industry-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.process-card,
.industry-card {
  background: var(--surface);
}

.industry-card {
  display: block;
  min-height: 250px;
  background:
    linear-gradient(135deg, rgba(29, 111, 184, 0.08), rgba(47, 125, 100, 0.07)),
    #ffffff;
  transition: transform var(--mo-micro) ease, box-shadow var(--mo-micro) ease;
}

.industry-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow);
}

.step-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 30px;
  margin-bottom: 16px;
  border-radius: 8px;
  background: #e8f1f8;
  color: var(--blue-dark);
  font-size: 13px;
  font-weight: 600;
}

.industry-mark,
.direction-visual {
  position: relative;
  width: 76px;
  height: 52px;
  margin-bottom: 18px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: #f4f7f5;
  overflow: hidden;
}

.industry-mark::before,
.industry-mark::after,
.direction-visual span {
  content: "";
  position: absolute;
  border-radius: 999px;
  background: var(--blue);
}

.industry-mark::before {
  width: 46px;
  height: 8px;
  left: 14px;
  top: 14px;
}

.industry-mark::after {
  width: 28px;
  height: 28px;
  right: 10px;
  bottom: 8px;
  background: var(--copper);
}

.direction-visual span:nth-child(1) {
  left: 12px;
  top: 12px;
  width: 46px;
  height: 8px;
}

.direction-visual span:nth-child(2) {
  right: 12px;
  top: 24px;
  width: 28px;
  height: 28px;
  background: var(--copper);
}

.direction-visual span:nth-child(3) {
  left: 14px;
  bottom: 10px;
  width: 22px;
  height: 22px;
  background: var(--green);
}

.direction-visual-nizkovoltnaya-apparatura span:nth-child(1),
.direction-visual-kommutacionnoe-oborudovanie span:nth-child(1) {
  width: 12px;
  height: 34px;
  border-radius: 4px;
}

.direction-visual-elektroustanovochnye-izdeliya span:nth-child(2),
.direction-visual-svetotehnicheskoe-oborudovanie span:nth-child(2) {
  width: 34px;
  height: 18px;
  border-radius: 999px 999px 6px 6px;
}

.direction-visual-promyshlennaya-avtomatizaciya span:nth-child(1),
.direction-visual-shkafy-i-korpusa span:nth-child(1),
.direction-visual-komplektuyushchie span:nth-child(1) {
  width: 42px;
  height: 30px;
  border-radius: 6px;
}

.direction-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.direction-card {
  display: flex;
  flex-direction: column;
}

.direction-card .category-subgroups {
  margin-top: auto;
  padding-top: 12px;
}

.direction-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 16px;
}

.text-link-muted {
  color: var(--muted);
}

.trust-grid-four {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.trust-note-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-top: 16px;
}

.trust-note-grid span {
  display: flex;
  align-items: center;
  min-height: 40px;
  padding: 0 12px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: #e8f5ef;
  color: #1870BD;
  font-size: 13px;
  font-weight: 600;
}

.risk-section {
  background:
    linear-gradient(90deg, rgba(16, 47, 74, 0.06) 1px, transparent 1px),
    linear-gradient(0deg, rgba(16, 47, 74, 0.05) 1px, transparent 1px),
    #ffffff;
  background-size: 36px 36px;
}

.risk-grid,
.result-grid,
.proof-grid,
.case-grid,
.category-detail-grid {
  display: grid;
  gap: 16px;
}

.risk-grid,
.result-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.risk-card,
.result-card,
.case-card,
.category-detail-panel {
  padding: clamp(20px, 2.5vw, 28px);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: #ffffff;
}

.risk-card span,
.case-card span {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  margin-bottom: 14px;
  padding: 0 10px;
  border-radius: 8px;
  background: #e8f1f8;
  color: var(--blue-dark);
  font-size: 13px;
  font-weight: 600;
}

.risk-card h3,
.result-card h3,
.case-card h3,
.category-detail-panel h3 {
  margin-bottom: 10px;
  color: var(--blue-dark);
  font-size: 19px;
  line-height: 1.25;
}

.risk-card p,
.result-card p,
.case-card p {
  color: var(--muted);
}

.result-card {
  background:
    linear-gradient(135deg, rgba(29, 111, 184, 0.07), rgba(47, 125, 100, 0.07)),
    #ffffff;
}

.proof-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.proof-grid span {
  display: flex;
  align-items: center;
  min-height: 54px;
  padding: 0 16px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: #e8f5ef;
  color: #1870BD;
  font-weight: 600;
}

.case-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.case-card {
  min-height: 230px;
}

.case-card span {
  background: #fff3e7;
  color: #8b4b15;
}

.category-detail-section {
  padding-top: 24px;
}

.category-detail-grid {
  grid-template-columns: 1.1fr 1fr 1fr 1.1fr;
}

.category-detail-panel {
  min-height: 250px;
}

.category-detail-panel-accent {
  background: #102f4a;
  color: #ffffff;
}

.category-detail-panel-accent h3,
.category-detail-panel-accent .clean-list {
  color: #ffffff;
}

.category-detail-panel-accent .clean-list li::marker {
  color: #f0b16c;
}

.category-detail-panel-accent .btn {
  margin-top: 16px;
  border-color: #ffffff;
  color: #ffffff;
}

.category-detail-panel-accent .btn:hover {
  background: #ffffff;
  color: var(--blue-dark);
}

.tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.tag-list span {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: #e8f1f8;
  color: var(--blue-dark);
  font-size: 13px;
  font-weight: 600;
}

.material-date {
  display: inline-flex;
  margin: 8px 0 12px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}

.form-response-note {
  color: var(--blue-dark);
  font-weight: 600;
}

.work-section {
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0.06) 1px, transparent 1px),
    linear-gradient(0deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px),
    #102f4a;
  background-size: 42px 42px;
  color: #ffffff;
}

.work-section .kicker {
  color: #f0b16c;
}

.work-section .section-head p:last-child,
.work-section .process-card p {
  color: #d9e3e8;
}

.work-section .process-card {
  border-color: rgba(255, 255, 255, 0.16);
  background: rgba(255, 255, 255, 0.08);
}

.work-section .step-number {
  background: rgba(240, 177, 108, 0.16);
  color: #ffd7a6;
}

.clean-list {
  display: grid;
  gap: 10px;
  margin: 0;
  padding-left: 20px;
  color: var(--muted);
}

.clean-list li::marker {
  color: var(--copper);
}

.cta-band {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  padding: clamp(24px, 4vw, 36px);
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface);
}

.cta-copy {
}

.cta-copy p:last-child {
  margin-bottom: 0;
  color: var(--muted);
}

.catalog-note {
  margin-top: 22px;
  background: #f8fbfa;
}

.catalog-note h2 {
  font-size: 24px;
}

.field-hint {
  margin-left: 8px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 400;
}

input[type="file"] {
  min-height: 48px;
  padding: 10px;
  border-style: dashed;
  background: #fbfcfa;
}

.file-dropzone {
  display: grid;
  place-items: center;
  min-height: 150px;
  padding: 22px;
  border: 1px dashed #9bb6c8;
  border-radius: 8px;
  background: #f8fbfa;
  color: var(--blue-dark);
  text-align: center;
  cursor: pointer;
  transition: border-color var(--mo-micro) ease, background var(--mo-micro) ease;
}

.file-dropzone:hover,
.file-dropzone.is-dragging {
  border-color: var(--blue);
  background: #e8f1f8;
}

.file-dropzone input {
  position: absolute;
  width: 1px;
  min-height: 1px;
  opacity: 0;
  pointer-events: none;
}

.file-dropzone-title,
.file-dropzone-mobile-title,
.file-dropzone-note {
  display: block;
}

.file-dropzone-mobile-title {
  display: none;
}

.file-dropzone-title {
  font-size: 18px;
  font-weight: 600;
}

.file-dropzone-note {
  margin-top: 4px;
  color: var(--muted);
  font-size: 14px;
  font-weight: 600;
}

.file-preview {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 10px;
  padding: 10px 12px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: #e8f5ef;
  color: #1870BD;
  font-weight: 600;
}

.file-preview[hidden] {
  display: none;
}

.link-button {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--blue-dark);
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}

.btn:disabled {
  opacity: 0.72;
  cursor: wait;
  transform: none;
}

.section-compact {
  padding: 38px 0;
}

.contact-compact {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.contact-compact-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 28px;
}

.contact-line {
  display: grid;
  gap: 3px;
}

.contact-line span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}

.contact-line a {
  color: var(--blue-dark);
  font-weight: 600;
}

.contact-line p {
  margin: 0;
}

.contact-requisites-panel {
  display: grid;
  grid-template-columns: minmax(260px, 0.36fr) minmax(0, 1fr);
  gap: 24px;
  align-items: start;
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.contact-requisites-head {
  display: grid;
  gap: 10px;
}

.contact-requisites-head .eyebrow {
  margin: 0;
}

.contact-requisites-head h2 {
  margin: 0;
  color: var(--ink);
  font-size: 1.35rem;
  line-height: 1.18;
}

.contact-requisites-head p:not(.eyebrow) {
  margin: 0;
  color: var(--muted);
}

.contact-requisites-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 20px;
  margin: 0;
}

.contact-requisite {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.contact-requisite-wide {
  grid-column: 1 / -1;
}

.contact-requisite dt {
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}

.contact-requisite dd {
  min-width: 0;
  margin: 0;
  color: var(--ink);
  font-weight: 600;
  line-height: 1.45;
}

.scroll-popup {
  position: fixed;
  right: max(18px, calc((100vw - 1400px) / 2));
  bottom: 18px;
  z-index: 60;
  width: min(380px, calc(100vw - 28px));
  padding: 18px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.97);
  box-shadow: 0 18px 50px rgba(23, 25, 28, 0.18);
}

.scroll-popup[hidden] {
  display: none;
}

.scroll-popup h2,
.scroll-popup-title {
  margin-bottom: 8px;
  font-size: 22px;
}

.scroll-popup p:not(.kicker):not(.scroll-popup-title) {
  color: var(--muted);
}

.scroll-popup-title {
  color: var(--ink);
  font-family: var(--font-heading);
  font-weight: var(--font-weight-semibold);
  line-height: 1.18;
}

.scroll-popup-close {
  position: absolute;
  top: 10px;
  right: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  color: var(--muted);
  font: inherit;
  font-size: 20px;
  cursor: pointer;
}

.scroll-popup-close:hover {
  color: var(--blue-dark);
}

.scroll-popup-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-top: 16px;
}

.reveal-ready {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity var(--mo-reveal) ease, transform var(--mo-reveal) ease;
}

.reveal-ready.is-revealed {
  opacity: 1;
  transform: translateY(0);
}

.footer-grid-wide {
  grid-template-columns: 1.2fr repeat(5, minmax(0, 1fr));
  gap: 28px;
}

.footer-contacts .btn {
  margin-top: 8px;
  border-color: #ffffff;
  background: #ffffff;
  color: var(--blue-dark);
}

.footer-block a:hover {
  color: #ffffff;
}

@media (max-width: 1080px) {
  .primary-nav {
    gap: 10px;
    font-size: 13px;
  }

  .header-phone span {
    display: none;
  }

  .header-cta {
    padding: 0 12px;
    font-size: 13px;
  }
}

@media (max-width: 920px) {
  .primary-nav {
    display: none;
  }

  .mobile-menu {
    display: block;
  }

  .header-inner {
    justify-content: space-between;
  }

  .header-actions {
    margin-left: auto;
  }

  .fact-grid,
  .direction-grid,
  .trust-grid-four,
  .trust-note-grid,
  .risk-grid,
  .result-grid,
  .proof-grid,
  .case-grid,
  .category-detail-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .process-grid,
  .industry-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .cta-band {
    display: grid;
  }

  .contact-compact {
    display: grid;
  }

  .footer-grid-wide {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .header-inner {
    gap: 12px;
    min-height: 62px;
  }

  .brand-logo {
    width: 112px;
  }

  .header-cta {
    min-height: 38px;
    padding: 0 10px;
    font-size: 12px;
  }

  .header-phone {
    display: none;
  }

  .mobile-menu-toggle {
    padding: 0 10px;
  }

  .fact-grid,
  .direction-grid,
  .trust-grid-four,
  .trust-note-grid,
  .risk-grid,
  .result-grid,
  .proof-grid,
  .case-grid,
  .category-detail-grid,
  .contact-compact-list {
    grid-template-columns: 1fr;
  }

  .process-grid,
  .industry-grid {
    grid-template-columns: 1fr;
  }

  .supply-cluster {
    grid-template-columns: repeat(2, minmax(0, max-content));
  }

  .supply-node {
    left: 18px;
    top: 18px;
  }

  .supply-line {
    left: 62px;
    top: 68px;
    height: 170px;
  }

  .scroll-popup {
    left: 14px;
    right: 14px;
    bottom: 14px;
    width: auto;
  }

  .scroll-popup-actions {
    display: grid;
  }

  .footer-grid-wide {
    grid-template-columns: 1fr;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto;
    transition-duration: 0.001ms;
    animation-duration: 0.001ms;
    animation-iteration-count: 1;
  }

  .reveal-ready {
    opacity: 1;
    transform: none;
  }
}

/* Admin rhythm mirrors the denser typography and spacing of the Ded Gleb admin. */
.admin-body {
  --admin-ui-font: var(--font-body);
  --admin-heading-font: var(--font-heading);
  color: #10233C;
  font-family: var(--admin-ui-font);
  font-size: 15px;
  line-height: 1.5;
}

.admin-body .admin-header {
  padding: 0.85rem 0 0.7rem;
}

.admin-body .admin-header-inner {
  min-height: 0;
  gap: 18px;
}

.admin-body .admin-logo {
  width: 128px;
}

.admin-body .admin-nav {
  gap: 4px;
  padding: 4px;
  font-weight: 400;
}

.admin-body .admin-nav a {
  min-height: 34px;
  padding: 0 12px;
  font-size: 0.95rem;
  font-weight: 400;
}

.admin-body .admin-main {
  padding-top: 1.5rem;
  padding-bottom: 3rem;
}

.admin-body .admin-page-head {
  overflow: visible;
  gap: 1rem;
  margin-bottom: 1.5rem;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.admin-body .admin-page-head::before {
  display: none;
}

.admin-body .admin-page-head p:last-child {
  max-width: 680px;
  margin-top: 0.35rem;
  font-size: 0.95rem;
}

.admin-body .kicker {
  margin-bottom: 0.35rem;
  color: var(--muted);
  font-family: var(--admin-ui-font);
  font-size: 0.875rem;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
}

.admin-body h2,
.admin-body .admin-row-title h2,
.admin-body .preview-device-head h2 {
  font-family: var(--admin-heading-font);
  font-size: 1.3rem;
  font-weight: 600;
  line-height: 1.25;
}

.admin-body .admin-panel,
.admin-body .admin-category-row,
.admin-body .preview-device,
.admin-body .preview-meta-item,
.admin-body .admin-form {
  border-radius: 14px;
  box-shadow: 0 1px 2px rgba(23, 25, 28, 0.05);
}

.admin-body .admin-panel,
.admin-body .admin-form {
  padding: 1.25rem;
}

.admin-body .admin-panel .admin-form {
  padding: 0;
}

.admin-body .admin-list {
  gap: 0.75rem;
}

.admin-body .admin-category-row {
  grid-template-columns: 112px minmax(0, 1fr);
  gap: 1rem;
  padding: 0.9rem;
}

.admin-body .admin-category-thumb {
  min-height: 104px;
  border-radius: 12px;
}

.admin-body .admin-thumb-grid img {
  min-height: 104px;
}

.admin-body .admin-category-main p,
.admin-body .admin-subcategory p,
.admin-body .current-file p,
.admin-body .preview-device-head p,
.admin-body .preview-meta-item span,
.admin-body .form-note,
.admin-body .form-text {
  font-size: 0.875rem;
}

.admin-body .admin-row-title {
  gap: 0.75rem;
}

.admin-body .admin-row-actions,
.admin-body .admin-actions {
  gap: 0.55rem;
  margin-top: 0.85rem;
}

.admin-body .text-link,
.admin-body .link-danger {
  font-size: 0.95rem;
  font-weight: 400;
}

.admin-body .status-pill,
.admin-body .admin-row-title span,
.admin-body .admin-subcategory > span {
  min-height: 24px;
  padding: 0.22em 0.75em;
  border-radius: 999px;
  font-size: 0.82rem;
  font-weight: 400;
}

.admin-body .admin-subcategories {
  gap: 0.6rem;
  padding-top: 0.85rem;
}

.admin-body .admin-subcategory {
  padding: 0.75rem 0.9rem;
  border-radius: 12px;
}

.admin-body .admin-subcategory strong {
  font-size: 1.05rem;
  font-weight: 600;
}

.admin-body .admin-metric-grid {
  gap: 0.65rem;
  margin-bottom: 1rem;
}

.admin-body .admin-metric {
  min-height: 60px;
  padding: 0.55rem 0.85rem;
  border-radius: 14px;
}

.admin-body .admin-metric::after {
  left: 0.85rem;
  right: 0.85rem;
  height: 3px;
}

.admin-body .admin-metric span {
  font-size: 0.875rem;
  font-weight: 400;
}

.admin-body .admin-metric strong {
  margin-top: 0.2rem;
  font-family: var(--admin-heading-font);
  font-size: 1.6rem;
  font-weight: 600;
}

.admin-body .admin-form {
  gap: 1rem;
}

.admin-body .admin-form-grid {
  gap: 1rem;
}

.admin-body .field {
  gap: 0.4rem;
}

.admin-body .field label,
.admin-body .check-field label {
  font-size: 0.875rem;
  font-weight: 400;
}

.admin-body input,
.admin-body textarea,
.admin-body select {
  border-radius: 10px;
  font-size: 0.95rem;
}

.admin-body input,
.admin-body select {
  min-height: 42px;
  padding: 0 0.75rem;
}

.admin-body textarea {
  padding: 0.65rem 0.75rem;
}

.admin-body .btn {
  min-height: 0;
  padding: 0.5rem 1.15rem;
  border-radius: 10px;
  font-family: var(--admin-ui-font);
  font-size: 0.95rem;
  font-weight: 400;
}

.admin-body .btn-small {
  min-height: 0;
  padding: 0.4rem 0.95rem;
  font-size: 0.875rem;
}

.admin-body .admin-preview-meta {
  gap: 0.65rem;
  margin-bottom: 1rem;
}

.admin-body .preview-meta-item {
  padding: 0.85rem;
}

.admin-body .preview-meta-item strong {
  margin-top: 0.2rem;
  font-size: 1rem;
}

.admin-body .admin-preview-stack {
  gap: 1rem;
}

.admin-body .preview-device-head {
  gap: 1rem;
  padding: 0.9rem 1rem;
}

.admin-body .preview-canvas {
  padding: 1rem;
}

.admin-body .current-photo-grid {
  gap: 0.75rem;
}

.admin-body .current-photo {
  gap: 0.55rem;
  padding: 0.65rem;
  border-radius: 12px;
}

.admin-body .current-photo img {
  height: 116px;
  border-radius: 10px;
}

@media (max-width: 920px) {
  .admin-body .admin-page-head {
    gap: 0.75rem;
  }

  .admin-body .admin-category-row {
    grid-template-columns: 104px minmax(0, 1fr);
  }
}

@media (max-width: 640px) {
  .admin-body .admin-header {
    padding: 0.55rem 0;
  }

  .admin-body .admin-header-inner {
    display: grid;
    gap: 0.65rem;
  }

  .admin-body .admin-logo {
    width: 118px;
  }

  .admin-body .admin-nav {
    display: grid;
    width: 100%;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 3px;
  }

  .admin-body .admin-nav a {
    min-height: 34px;
    padding: 0 0.55rem;
    font-size: 0.875rem;
  }

  .admin-body .admin-page-head {
    display: grid;
    margin-bottom: 1rem;
  }

  .admin-body .admin-panel,
  .admin-body .admin-form {
    padding: 1rem;
  }

  .admin-body .admin-category-row {
    grid-template-columns: 1fr;
  }

  .admin-body .admin-category-thumb,
  .admin-body .admin-thumb-grid img {
    min-height: 120px;
  }

  .admin-body .admin-metric-grid,
  .admin-body .admin-preview-meta,
  .admin-body .current-photo-grid {
    grid-template-columns: 1fr;
  }
}

/* Compact public footer: keep the same content, reduce the black block height. */
.site-footer {
  padding: 18px 0 10px;
}

.footer-grid {
  align-items: start;
  grid-template-columns: minmax(250px, 1.1fr) minmax(410px, 1.35fr) minmax(250px, 1fr);
  gap: 24px;
}

.footer-logo {
  width: 104px;
  margin-bottom: 10px;
}

.footer-brand p,
.footer-block p,
.footer-block a {
  margin: 0;
  font-size: 14px;
  line-height: 1.35;
}

.footer-brand p {
}

.footer-block {
  gap: 5px;
}

.footer-block h2,
.footer-title {
  margin: 0 0 8px;
  font-size: 16px;
  line-height: 1.15;
  color: #ffffff;
  font-family: var(--font-heading);
  font-weight: var(--font-weight-semibold);
}

.footer-grid > .footer-block:nth-child(2) {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 18px;
}

.footer-grid > .footer-block:nth-child(2) h2,
.footer-grid > .footer-block:nth-child(2) .footer-title {
  grid-column: 1 / -1;
}

.footer-bottom {
  margin-top: 14px;
  padding-top: 10px;
  font-size: 13px;
  line-height: 1.3;
}

@media (max-width: 920px) {
  .site-footer {
    padding: 18px 0 12px;
  }

  .footer-grid {
    grid-template-columns: 1fr;
    gap: 18px;
  }
}

@media (max-width: 640px) {
  .footer-grid > .footer-block:nth-child(2) {
    grid-template-columns: 1fr;
  }
}

/* KabEM typography polish: local system fonts for stable rendering. */
body,
input,
textarea,
select {
  color: var(--color-text-secondary);
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: var(--font-weight-regular);
  line-height: 1.6;
}

h1,
h2,
h3,
h4,
.hero-title,
.section-title,
.card-title,
.small-title,
.primary-nav,
.nav-link,
.btn,
button,
.footer-title,
.contact-value,
.admin-body h1,
.admin-body h2,
.admin-body h3,
.admin-body .admin-nav,
.admin-body .btn {
  font-family: var(--font-heading);
  letter-spacing: 0;
}

h1,
h2,
h3,
h4,
.hero-title,
.section-title,
.card-title,
.small-title {
  color: var(--color-text-primary);
  text-wrap: balance;
  word-break: normal;
  overflow-wrap: normal;
  hyphens: none;
}

p,
li,
dd,
.lead,
.card-description,
.category-card p,
.trust-item p,
.value-card p,
.contact-card p,
.panel p,
.process-card p,
.industry-card p,
.product-card p,
.quote-form p,
.footer-block p,
.footer-brand p {
  font-family: var(--font-body);
  font-weight: var(--font-weight-regular);
  letter-spacing: 0;
}

h1,
.page-hero h1 {
  max-width: none;
  font-size: 3.35rem;
  line-height: 1.08;
  font-weight: var(--font-weight-bold);
}

h2,
.section-title,
.section-head h2,
.catalog-note h2,
.scroll-popup h2,
.scroll-popup-title {
  font-size: 2.6rem;
  line-height: 1.12;
  font-weight: var(--font-weight-semibold);
}

h3,
.card-title,
.category-card h3,
.product-card h3,
.industry-card h3,
.process-card h3,
.value-card h3 {
  font-size: 1.375rem;
  line-height: 1.25;
  font-weight: var(--font-weight-semibold);
}

h4,
.small-title {
  font-size: 1.0625rem;
  line-height: 1.35;
  font-weight: var(--font-weight-semibold);
}

.lead,
.hero-description,
.hero .lead {
  max-width: none;
  color: var(--color-text-secondary);
  font-size: 1.1875rem;
  line-height: 1.55;
  font-weight: var(--font-weight-regular);
}

.section-head p:not(.kicker):not(.eyebrow) {
  max-width: none;
  color: var(--color-text-secondary);
  font-size: 1rem;
  line-height: 1.6;
  font-weight: var(--font-weight-regular);
}

.eyebrow,
.kicker,
.section-eyebrow {
  color: #9b5d2b;
  font-family: var(--font-heading);
  font-size: 0.75rem;
  line-height: 1.4;
  font-weight: var(--font-weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.primary-nav,
.nav-link,
.primary-nav a,
.mobile-menu-panel a {
  font-family: var(--font-heading);
  font-size: 0.9375rem;
  line-height: 1.3;
  font-weight: var(--font-weight-medium);
  letter-spacing: 0;
}

.primary-nav a.is-active,
.nav-link.is-active,
.nav-link[aria-current="page"],
.mobile-menu-panel a.is-active {
  font-weight: var(--font-weight-semibold);
}

.btn,
button.btn,
input[type="submit"].btn,
.admin-body .btn {
  font-family: var(--font-heading);
  font-size: 0.9375rem;
  line-height: 1;
  font-weight: var(--font-weight-semibold);
  letter-spacing: 0;
}

.btn-small {
  font-size: 0.875rem;
}

.header-cta {
  font-size: 0.9375rem;
}

.trust-item h2,
.benefit-card__title {
  max-width: 300px;
  margin-bottom: 14px;
  font-family: var(--font-heading);
  font-size: 1.25rem;
  line-height: 1.22;
  font-weight: var(--font-weight-semibold);
}

.trust-item p,
.benefit-card__text,
.category-card p,
.category-card__description,
.product-card p,
.industry-card p,
.process-card p,
.card-description {
  color: var(--color-text-secondary);
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.55;
  font-weight: var(--font-weight-regular);
}

.category-card h3,
.category-card__title {
  font-family: var(--font-heading);
  font-size: 1.375rem;
  line-height: 1.22;
  font-weight: var(--font-weight-semibold);
}

.category-subgroups span,
.product-tags span,
.tag,
.status-pill,
.admin-row-title span,
.admin-subcategory > span {
  border-width: 1px;
  font-family: var(--font-body);
  font-size: 0.8125rem;
  line-height: 1.2;
  font-weight: var(--font-weight-medium);
  letter-spacing: 0;
}

.category-subgroups span,
.product-tags span,
.tag {
  padding-inline: 0.78rem;
}

.fact strong,
.hero-card strong,
.supply-node,
.supply-cluster span,
.step-number,
.trust-note-grid span,
.file-dropzone-title,
.file-preview,
.contact-line a,
.contact-line span,
.link-button {
  font-weight: var(--font-weight-semibold);
}

.form-label,
.field label,
.check-field label,
.quote-form label,
.admin-body .field label,
.admin-body .check-field label {
  font-family: var(--font-body);
  font-size: 0.875rem;
  line-height: 1.4;
  font-weight: var(--font-weight-medium);
  text-transform: none;
}

input,
textarea,
select,
.form-input,
.quote-form input,
.quote-form textarea,
.quote-form select {
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.4;
  font-weight: var(--font-weight-regular);
}

input::placeholder,
textarea::placeholder {
  font-weight: var(--font-weight-regular);
  opacity: 0.65;
}

.file-dropzone-note,
.field-hint,
.form-note,
.form-text,
.consent {
  color: var(--color-text-muted);
  font-family: var(--font-body);
  font-weight: var(--font-weight-regular);
}

.site-footer {
  color: var(--color-text-secondary-on-dark);
}

.footer-block h2,
.footer-title {
  color: var(--color-text-on-dark);
  font-family: var(--font-heading);
  font-size: 1rem;
  line-height: 1.25;
  font-weight: var(--font-weight-semibold);
}

.footer-block a,
.footer-link,
.footer-block p,
.footer-brand p,
.footer-bottom {
  font-family: var(--font-body);
  font-size: 0.9375rem;
  line-height: 1.5;
  font-weight: var(--font-weight-regular);
}

.contact-value,
.contact-line a {
  font-family: var(--font-heading);
  font-size: 1.125rem;
  font-weight: var(--font-weight-medium);
}

.work-section h2,
.work-section h3 {
  color: var(--color-text-on-dark);
}

.work-section .section-head p:last-child,
.work-section .process-card p {
  color: var(--color-text-secondary-on-dark);
}

.admin-body {
  --admin-ui-font: var(--font-body);
  --admin-heading-font: var(--font-heading);
  font-family: var(--font-body);
  font-weight: var(--font-weight-regular);
}

.admin-body h2,
.admin-body .admin-row-title h2,
.admin-body .preview-device-head h2 {
  font-size: 1.3rem;
  line-height: 1.25;
  font-weight: var(--font-weight-semibold);
}

.admin-body .admin-nav a,
.admin-body .text-link,
.admin-body .link-danger {
  font-weight: var(--font-weight-medium);
}

@media (max-width: 767px) {
  h1,
  .page-hero h1 {
    font-size: 2.5rem;
    line-height: 1.08;
  }

  h2,
  .section-title,
  .section-head h2,
  .catalog-note h2,
  .scroll-popup h2,
  .scroll-popup-title {
    font-size: 2rem;
    line-height: 1.12;
  }

  h3,
  .card-title,
  .category-card h3,
  .product-card h3,
  .industry-card h3,
  .process-card h3,
  .value-card h3 {
    font-size: 1.3125rem;
    line-height: 1.25;
  }

  .lead,
  .hero-description,
  .hero .lead,
  body,
  input,
  textarea,
  select {
    font-size: 1rem;
  }
}

@media (max-width: 390px) {

  h1,
  .page-hero h1 {
    font-size: 2.25rem;
  }
}

.market-position-section .panel-accent {
  align-content: start;
}

.brand-strip {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 22px;
  padding: 16px 18px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #ffffff;
}

.brand-strip span {
  color: var(--muted);
  font-size: 0.875rem;
  font-weight: var(--font-weight-semibold);
}

.brand-strip strong {
  padding: 8px 12px;
  border-radius: 999px;
  background: rgba(15, 104, 173, 0.1);
  color: var(--blue);
  font-weight: var(--font-weight-semibold);
}

.brand-strip p {
  margin: 0;
  color: var(--muted);
}

.section-actions {
  display: flex;
  justify-content: center;
  margin-top: 24px;
}

.documents-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

.document-card {
  min-height: 100%;
  padding: 20px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #ffffff;
}

.document-card h3 {
  margin: 0 0 10px;
  color: var(--ink);
  font-size: 1rem;
}

.document-card p {
  margin: 0;
  color: var(--muted);
}

.product-card-note {
  font-size: 0.875rem;
  color: var(--muted);
}

.map-panel {
  display: grid;
  grid-template-columns: minmax(260px, 0.58fr) minmax(0, 1fr);
  gap: 20px;
  align-items: stretch;
}

.map-panel-copy {
  display: grid;
  align-content: center;
  gap: 12px;
  padding: 24px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #ffffff;
}

.map-panel-copy h2 {
  margin: 0;
  font-size: 1.35rem;
}

.map-panel-copy p {
  margin: 0;
  color: var(--muted);
}

.map-frame {
  width: 100%;
  min-height: 300px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #eef5f8;
}

@media (max-width: 920px) {
  .documents-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .brand-strip,
  .map-panel {
    grid-template-columns: 1fr;
  }

  .map-panel-embed {
    min-height: 280px;
  }

  .brand-strip {
    display: grid;
  }
}

@media (max-width: 640px) {
  .documents-grid {
    grid-template-columns: 1fr;
  }

  .map-frame {
    min-height: 240px;
  }
}

/* Branded admin skin: dark KabEM blue with clean white work surfaces. */
.admin-body {
  --admin-navy: #073455;
  --admin-navy-deep: #041f35;
  --admin-blue: #0b5f9e;
  --admin-blue-soft: #e8f4ff;
  --admin-white: #ffffff;
  --admin-muted: #d7e5ef;
  --admin-card-text: #17324a;
  --admin-card-muted: #5d6f7f;
  min-height: 100vh;
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.06), transparent 32%),
    var(--admin-navy-deep);
  color: var(--admin-white);
}

.admin-body .admin-backdrop {
  background:
    radial-gradient(circle at 16% 0%, rgba(255, 255, 255, 0.12), transparent 34%),
    linear-gradient(180deg, var(--admin-navy), var(--admin-navy-deep));
}

.admin-body .admin-header {
  border-bottom: 1px solid rgba(255, 255, 255, 0.14);
  background: rgba(4, 31, 53, 0.94);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18);
}

.admin-body .admin-nav {
  color: var(--admin-muted);
}

.admin-body .admin-nav a {
  border-radius: 10px;
  color: var(--admin-muted);
}

.admin-body .admin-nav a:hover,
.admin-body .admin-nav a.active {
  background: rgba(255, 255, 255, 0.12);
  color: var(--admin-white);
}

.admin-body .admin-site-link {
  border: 1px solid rgba(255, 255, 255, 0.22);
}

.admin-body .admin-page-head {
  color: var(--admin-white);
}

.admin-body .admin-page-head h1,
.admin-body .admin-page-head p {
  color: var(--admin-white);
}

.admin-body .kicker {
  color: #9fd7ff;
}

.admin-body .admin-panel,
.admin-body .admin-category-row,
.admin-body .admin-metric,
.admin-body .admin-form,
.admin-body .preview-device,
.admin-body .preview-meta-item,
.admin-body .empty-state {
  border-color: rgba(255, 255, 255, 0.18);
  background: var(--admin-white);
  color: var(--admin-card-text);
  box-shadow: 0 18px 44px rgba(0, 0, 0, 0.22);
}

.admin-body .admin-panel h2,
.admin-body .admin-category-row h2,
.admin-body .admin-form h2,
.admin-body .empty-state h2,
.admin-body .admin-metric strong,
.admin-body .admin-row-title h2 {
  color: var(--admin-card-text);
}

.admin-body .admin-panel p,
.admin-body .admin-category-main p,
.admin-body .admin-subcategory p,
.admin-body .current-file p,
.admin-body .form-note,
.admin-body .form-text,
.admin-body .preview-device-head p,
.admin-body .admin-metric span {
  color: var(--admin-card-muted);
}

.admin-body .admin-metric::after {
  background: linear-gradient(90deg, var(--admin-blue), #0a3150);
}

.admin-body .admin-date-value {
  font-size: 1.15rem;
  line-height: 1.15;
}

.admin-date-counter {
  display: grid;
  gap: 8px;
  margin-top: 16px;
}

.admin-date-counter-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-height: 38px;
  padding: 0 12px;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  background: var(--admin-blue-soft);
}

.admin-date-counter-row span {
  color: var(--admin-card-muted);
}

.admin-date-counter-row strong {
  color: var(--admin-blue);
  font-family: var(--font-heading);
  font-weight: var(--font-weight-semibold);
}

.admin-dashboard-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.admin-dashboard-card {
  display: grid;
  align-content: start;
  gap: 10px;
}

.admin-text-group {
  margin-bottom: 16px;
}

.admin-text-group-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 16px;
}

.admin-text-group-head span {
  color: var(--admin-card-muted);
  font-size: 0.875rem;
}

.admin-text-list {
  display: grid;
  gap: 12px;
}

.admin-text-row {
  display: grid;
  grid-template-columns: minmax(220px, 0.42fr) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
  padding: 12px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: #F4F8FD;
}

.admin-text-row label {
  display: grid;
  gap: 4px;
  color: var(--admin-card-text);
}

.admin-text-row label small {
  color: var(--admin-card-muted);
  font-size: 0.75rem;
}

.admin-text-row input,
.admin-text-row textarea {
  width: 100%;
  border-color: #c5d8e7;
  background: var(--admin-white);
}

.admin-sticky-actions {
  position: sticky;
  bottom: 0;
  z-index: 5;
  display: flex;
  justify-content: flex-end;
  padding: 14px 0 0;
}

.admin-body .btn {
  border-color: var(--admin-blue);
  background: var(--admin-blue);
  color: var(--admin-white);
}

.admin-body .btn:hover {
  border-color: #1870BD;
  background: #084f86;
}

.admin-body .btn-line {
  border-color: #c5d8e7;
  background: var(--admin-white);
  color: var(--admin-blue);
}

.admin-body .btn-line:hover {
  background: var(--admin-blue-soft);
  color: var(--admin-blue);
}

.admin-body .text-link {
  color: var(--admin-blue);
}

.admin-body .link-danger {
  color: #b3261e;
}

@media (max-width: 920px) {
  .admin-dashboard-grid,
  .admin-metric-grid.admin-metric-grid-four {
    grid-template-columns: 1fr 1fr;
  }

  .admin-text-row {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .admin-dashboard-grid,
  .admin-metric-grid.admin-metric-grid-four {
    grid-template-columns: 1fr;
  }
}

/* KabEM public render-style layout refresh. */
:root {
  --font-heading: "Inter", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --font-body: "Inter", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --font-display: "Inter", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --color-text-primary: #10233C;
  --color-text-secondary: #5C6E84;
  --color-text-muted: #718096;
  --color-text-on-dark: #F4F8FD;
  --color-text-secondary-on-dark: #c8d6e6;
  --bg: #f4f8fd;
  --surface: #ffffff;
  --surface-2: #eaf2fb;
  --ink: #10233C;
  --muted: #5C6E84;
  --line: var(--color-border);
  --border: var(--color-border);
  --blue: #2563ae;
  --blue-dark: #123a75;
  --navy-950: #06182f;
  --navy-900: #0b1f3f;
  --navy-800: #123a75;
  --ice-50: #f4f8fd;
  --ice-100: #eaf2fb;
  --cyan: #6ab7e8;
  --green: #2f7d64;
  --copper: #3f8fc9;
  --shadow: 0 18px 44px rgba(11, 31, 63, 0.12);
  --shadow-soft: 0 10px 30px rgba(11, 31, 63, 0.08);
}

body:not(.admin-body) {
  background: var(--bg);
  color: var(--muted);
}

body:not(.admin-body).mobile-menu-open {
  overflow: hidden;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.site-header {
  z-index: 90;
  border-bottom-color: var(--color-border);
  background: rgba(255, 255, 255, 0.9);
  backdrop-filter: blur(18px);
  transition: box-shadow var(--mo-fast) ease, background var(--mo-fast) ease;
}

.site-header.is-scrolled {
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 10px 30px rgba(11, 31, 63, 0.11);
}

.header-inner {
  min-height: 58px;
  gap: 18px;
}

.brand-logo {
  width: 128px;
}

.primary-nav {
  gap: 4px;
  color: #5C6E84;
  font-size: 14px;
}

.primary-nav a,
.nav-link {
  min-height: 34px;
  padding: 0 10px;
  border-radius: 10px;
}

.primary-nav a:hover,
.primary-nav a.is-active,
.nav-link:hover,
.nav-link.is-active,
.nav-dropdown[open] > .nav-link {
  background: var(--ice-100);
  color: var(--blue-dark);
}

.nav-dropdown-panel {
  min-width: 320px;
  padding: 8px;
  border-color: var(--line);
  border-radius: 14px;
  box-shadow: 0 24px 56px rgba(11, 31, 63, 0.18);
}

.header-actions {
  gap: 8px;
}

.header-phone {
  color: var(--blue-dark);
}

.header-phone-icon {
  display: none;
}

.header-cta {
  min-height: 38px;
  padding: 0 16px;
  border-radius: 10px;
}

.mobile-menu-toggle {
  min-height: 38px;
  border-radius: 10px;
  background: #ffffff;
}

.mobile-menu-contacts {
  display: grid;
  gap: 7px;
  margin-top: 10px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.mobile-menu-contacts a:not(.btn),
.mobile-menu-contacts span {
  min-height: 0;
  padding: 0;
  color: var(--muted);
  font-size: 14px;
  font-weight: 600;
}

.mobile-menu-contacts .btn {
  width: 100%;
  margin-top: 4px;
}

.breadcrumbs {
  background: rgba(255, 255, 255, 0.76);
}

h1,
.page-hero h1 {
  max-width: none;
  font-size: 3.25rem;
  line-height: 1.08;
}

h2,
.section-title,
.section-head h2 {
  font-size: 2.35rem;
  line-height: 1.12;
}

.eyebrow,
.kicker {
  color: var(--blue);
  letter-spacing: 0.06em;
}

.hero {
  position: relative;
  overflow: hidden;
  padding: 56px 0 44px;
  background:
    linear-gradient(90deg, rgba(37, 99, 174, 0.055) 1px, transparent 1px),
    linear-gradient(0deg, rgba(37, 99, 174, 0.045) 1px, transparent 1px),
    linear-gradient(135deg, #ffffff 0%, #F4F8FD 46%, #eaf2fb 100%);
  background-size: 48px 48px, 48px 48px, auto;
}

.hero-grid,
.product-hero-grid {
  grid-template-columns: minmax(0, 1.03fr) minmax(360px, 0.97fr);
  gap: 42px;
}

.hero-actions,
.direction-actions,
.scroll-popup-actions {
  gap: 10px;
}

.btn {
  border-color: var(--blue);
  border-radius: 10px;
  background: var(--blue);
  box-shadow: 0 8px 20px rgba(37, 99, 174, 0.18);
}

.btn:hover {
  border-color: var(--blue-dark);
  background: var(--blue-dark);
}

.btn-line {
  border-color: rgba(18, 58, 117, 0.22);
  background: rgba(255, 255, 255, 0.82);
  color: var(--blue-dark);
  box-shadow: none;
}

.btn-line:hover {
  border-color: rgba(18, 58, 117, 0.28);
  background: var(--ice-100);
}

.hero-microcopy {
  color: #5C6E84;
}

.hero-visual,
.product-visual {
  min-height: 0;
  aspect-ratio: 1.05;
  border: 1px solid var(--color-border);
  border-radius: 18px;
  background: var(--navy-900);
  box-shadow: var(--shadow);
}

.hero-visual picture,
.product-visual picture,
.product-card-media picture,
.category-card picture,
.industry-card picture,
.quote-map-card picture,
.map-panel picture {
  display: block;
  width: 100%;
  height: 100%;
}

.hero-photo,
.product-hero-image,
.product-card-image,
.category-image,
.industry-image,
.quote-map-image,
.map-frame {
  width: 100%;
  object-fit: cover;
  background: var(--ice-100);
}

.hero-photo,
.product-hero-image {
  height: 100%;
}

.hero-card {
  right: 20px;
  bottom: 20px;
  width: min(250px, calc(100% - 40px));
  border-color: rgba(255, 255, 255, 0.52);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.9);
  backdrop-filter: blur(10px);
}

.fact-strip,
.trust-strip {
  border-color: var(--line);
}

.fact-grid {
  gap: 14px;
  padding: 18px 0;
}

.fact,
.trust-item,
.value-card,
.contact-card,
.panel,
.product-card,
.category-card,
.quote-form,
.empty-state,
.catalog-note,
.process-card,
.industry-card,
.risk-card,
.result-card,
.case-card,
.category-detail-panel,
.document-card {
  border-color: var(--line);
  border-radius: 16px;
  background: var(--surface);
  box-shadow: var(--shadow-soft);
}

.trust-item,
.value-card,
.contact-card,
.panel,
.empty-state,
.catalog-note,
.risk-card,
.result-card,
.case-card,
.category-detail-panel,
.document-card {
  padding: 24px;
}

.section {
  padding: 64px 0;
}

.section-muted {
  background: var(--ice-100);
}

.category-grid,
.direction-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
}

.category-card {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  padding: 0;
  overflow: hidden;
}

.category-card h3,
.category-card p,
.category-card .category-subgroups,
.category-card .direction-actions {
  margin-left: 18px;
  margin-right: 18px;
}

.category-card h3 {
  margin-top: 18px;
}

.category-card p {
  margin-bottom: 0;
}

.category-card .direction-actions {
  margin-top: auto;
  margin-bottom: 18px;
  padding-top: 16px;
}

.category-photo-grid,
.category-image {
  height: 150px;
  margin-bottom: 0;
  border-radius: 0;
}

.category-photo-grid {
  width: 100%;
}

.category-subgroups span,
.product-tags span,
.status,
.tag-list span {
  border-color: var(--color-border);
  border-radius: 999px;
  background: #F4F8FD;
  color: #5C6E84;
}

.product-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
}

.product-card {
  min-height: 100%;
}

.product-card-media {
  min-height: 0;
  aspect-ratio: 4 / 3;
  background: var(--navy-900);
}

.product-card-image {
  height: 100%;
}

.product-card-body {
  padding: 18px;
}

.product-card-footer {
  align-items: flex-start;
}

.catalog-toolbar-section {
  margin-top: 22px;
}

.catalog-toolbar {
  display: grid;
  gap: 14px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: var(--shadow-soft);
}

.catalog-search-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
}

.catalog-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.catalog-chip {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #ffffff;
  color: var(--muted);
  font-size: 14px;
  font-weight: 600;
}

.catalog-chip:hover,
.catalog-chip.active {
  border-color: var(--color-border-hover);
  background: var(--ice-100);
  color: var(--blue-dark);
}

.catalog-mobile-filters {
  display: none;
}

.catalog-sidebar {
  top: 82px;
  border-radius: 16px;
  box-shadow: var(--shadow-soft);
}

.catalog-layout {
  gap: 24px;
  padding-top: 28px;
}

.industry-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.industry-card {
  position: relative;
  display: grid;
  min-height: 100%;
  padding: 0 0 22px;
  overflow: hidden;
  border-color: var(--color-border);
  background: var(--navy-900);
  color: var(--color-text-on-dark);
}

.industry-image {
  height: 176px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  opacity: 0.88;
}

.industry-card h3,
.industry-card p,
.industry-card .text-link {
  margin-left: 22px;
  margin-right: 22px;
}

.industry-card h3 {
  margin-top: 20px;
  color: var(--color-text-on-dark);
}

.industry-card p {
  color: var(--color-text-secondary-on-dark);
}

.industry-card .text-link {
  margin-top: auto;
  color: #b6dcff;
}

.work-section {
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0.055) 1px, transparent 1px),
    linear-gradient(0deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px),
    radial-gradient(circle at 14% 18%, rgba(106, 183, 232, 0.2), transparent 36%),
    var(--navy-950);
  background-size: 44px 44px, 44px 44px, auto, auto;
}

.work-section .process-grid,
.quote-process-section .process-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.work-section .process-card {
  position: relative;
  border-color: rgba(255, 255, 255, 0.15);
  background: rgba(255, 255, 255, 0.075);
  box-shadow: none;
}

.work-section .process-card::after {
  content: "";
  position: absolute;
  top: 38px;
  right: -11px;
  width: 22px;
  height: 1px;
  background: rgba(255, 255, 255, 0.25);
}

.work-section .process-card:last-child::after {
  display: none;
}

.quote-form {
  border-radius: 18px;
}

.quote-grid {
  gap: 14px;
}

.quote-validation-summary {
  margin-top: 16px;
  padding: 12px 14px;
  border: 1px solid #e6b3ad;
  border-radius: 12px;
  background: #fff2ef;
  color: #8f2f28;
  font-weight: 600;
}

.quote-validation-summary[hidden] {
  display: none;
}

.field.has-error input,
.field.has-error textarea,
.field.has-error select,
.consent.has-error input {
  border-color: #b43b31;
}

input,
textarea,
select {
  border-color: #cbd8e8;
  border-radius: 12px;
}

input:focus,
textarea:focus,
select:focus {
  outline: 3px solid #1870BD;
  border-color: var(--blue);
}

.file-dropzone {
  min-height: 148px;
  border: 2px dashed #9bb8d5;
  border-radius: 14px;
  background:
    linear-gradient(135deg, rgba(37, 99, 174, 0.06), rgba(106, 183, 232, 0.1)),
    #f8fbff;
}

.file-dropzone:hover,
.file-dropzone.is-dragging {
  background: var(--ice-100);
}

.quote-page-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 360px);
  gap: 22px;
  align-items: start;
}

.quote-form-column {
  display: grid;
  gap: 14px;
}

.quote-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.quote-badges span,
.quote-benefit-list li {
  border: 1px solid var(--color-border);
  border-radius: 999px;
  background: #ffffff;
  color: var(--blue-dark);
  font-size: 14px;
  font-weight: 600;
}

.quote-badges span {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  padding: 0 12px;
}

.quote-side-column {
  display: grid;
  gap: 14px;
  position: sticky;
  top: 82px;
}

.quote-side-card {
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #ffffff;
  box-shadow: var(--shadow-soft);
}

.quote-side-card h2 {
  margin-bottom: 12px;
  font-size: 1.25rem;
}

.quote-benefit-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.quote-benefit-list li {
  padding: 8px 12px;
}

.quote-contact-card a {
  display: block;
  margin: 8px 0;
  color: var(--blue-dark);
  font-weight: 600;
}

.quote-map-card {
  overflow: hidden;
  padding: 0;
}

.quote-map-image {
  height: 230px;
}

.map-panel {
  grid-template-columns: minmax(260px, 0.5fr) minmax(0, 1fr);
}

.map-frame {
  height: 320px;
  border-radius: 16px;
  border: 1px solid var(--line);
}

.map-route-hint {
  margin-top: 8px;
  color: var(--muted);
  font-size: 0.92rem;
  font-weight: 600;
  line-height: 1.45;
}

.map-route-buttons {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 4px;
}

.map-route-button {
  display: flex;
  min-height: 46px;
  align-items: center;
  gap: 10px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #F4F8FD;
  color: var(--blue-dark);
  font-size: 0.9rem;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  box-shadow: 0 8px 18px rgba(8, 49, 83, 0.06);
  transition: border-color var(--mo-hover) ease, box-shadow var(--mo-hover) ease, transform var(--mo-hover) ease;
}

.map-route-button:hover {
  border-color: rgba(28, 112, 184, 0.48);
  color: var(--blue-dark);
  box-shadow: 0 12px 24px rgba(8, 49, 83, 0.1);
  transform: translateY(-1px);
}

.map-route-button:focus-visible,
.map-load:focus-visible {
  outline: 3px solid #1870BD;
  outline-offset: 3px;
}

.map-route-button span {
  min-width: 0;
  text-align: left;
}

.map-route-button .brand-ico {
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
}

.map-route-logo {
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  object-fit: contain;
}

.map-panel-embed {
  position: relative;
  min-height: 320px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #eef5f8;
}

.map-panel-embed picture,
.map-panel-embed img,
.map-panel-embed iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* Виджет карты появляется одним кроссфейдом (правка 15.08.2026). Он лежит
   поверх статичного превью и до готовности прозрачен: pointer-events снят,
   чтобы невидимый iframe не перехватывал прокрутку и клики. Класс
   is-map-ready ставит kabem.js через 0,7 с после load виджета — к этому
   моменту плитки и подписи уже отрисованы. */
.map-panel-embed iframe {
  border: 0;
  opacity: 0;
  pointer-events: none;
  transition: opacity 420ms ease;
}

.map-panel-embed.is-map-ready iframe {
  opacity: 1;
  pointer-events: auto;
}

/* Превью под картой не гасим: виджет проявляется поверх него и закрывает
   его целиком. Если гасить оба слоя одновременно, на середине перехода
   картинка проваливается в светлое пятно. */
.map-preview {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(0.9) contrast(0.98);
}

/* Кнопка «Открыть на карте» — путь для случая, когда скрипт не отработал.
   Как только загрузка началась, она уходит, не мигая поверх превью. */
.map-panel-embed.is-map-loading .map-load {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .map-panel-embed iframe {
    transition: none;
  }
}

.map-preview-placeholder {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  overflow: hidden;
  background:
    linear-gradient(135deg, rgba(1, 46, 79, 0.1) 0%, rgba(255, 255, 255, 0.82) 52%, rgba(23, 107, 177, 0.12) 100%),
    #eef5f8;
  filter: none;
}

.map-preview-placeholder::before,
.map-preview-placeholder::after {
  content: "";
  position: absolute;
  border: 1px solid var(--color-border);
  border-radius: 999px;
}

.map-preview-placeholder::before {
  width: 74%;
  height: 42%;
  transform: rotate(-10deg);
}

.map-preview-placeholder::after {
  width: 42%;
  height: 68%;
  transform: rotate(22deg);
}

.map-preview-pin {
  position: relative;
  z-index: 1;
  width: 30px;
  height: 30px;
  border: 8px solid var(--kabem-logo-navy);
  border-radius: 50% 50% 50% 0;
  background: #ffffff;
  transform: rotate(-45deg);
  box-shadow: 0 14px 30px rgba(1, 46, 79, 0.18);
}

.map-preview-line {
  position: absolute;
  z-index: 0;
  width: 58%;
  height: 6px;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(1, 46, 79, 0.16), rgba(23, 107, 177, 0.55), rgba(1, 46, 79, 0.16));
  transform: rotate(-9deg);
}

.map-preview-address {
  position: absolute;
  left: 24px;
  right: 24px;
  bottom: 24px;
  z-index: 1;
  color: var(--kabem-logo-navy);
  font-size: 0.95rem;
  font-weight: 600;
  text-align: center;
}

.map-load {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: flex;
  width: 100%;
  cursor: pointer;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 0;
  background: rgba(247, 251, 255, 0.34);
  color: var(--blue-dark);
  font-family: inherit;
  font-size: 0.9rem;
  font-weight: 600;
  transition: background var(--mo-hover) ease;
}

.map-load:hover {
  background: rgba(247, 251, 255, 0.2);
}

.map-load span {
  padding: 8px 16px;
  border-radius: 999px;
  background: #ffffff;
  box-shadow: 0 8px 20px rgba(8, 49, 83, 0.16);
}

.map-load svg {
  width: 36px;
  height: 36px;
  fill: none;
  stroke: var(--blue);
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.7;
}

.site-footer {
  border-top: 0;
  background: var(--navy-950);
  color: var(--color-text-secondary-on-dark);
}

.footer-logo {
  filter: brightness(0) invert(1);
}

.footer-contacts .btn {
  color: var(--blue-dark);
  box-shadow: none;
}

.scroll-popup {
  border-radius: 16px;
  box-shadow: 0 24px 56px rgba(11, 31, 63, 0.2);
}

@media (max-width: 1180px) {
  .primary-nav {
    font-size: 13px;
  }

  .header-phone {
    display: none;
  }

  .product-grid,
  .category-grid,
  .direction-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .work-section .process-grid,
  .quote-process-section .process-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .work-section .process-card::after {
    display: none;
  }
}

@media (max-width: 920px) {
  .header-inner {
    min-height: 58px;
  }

  .header-actions {
    gap: 6px;
  }

  .header-phone-icon {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    /* 44px — минимальная тач-цель; 38px не хватало (аудит 17.08, М3) */
    width: 44px;
    height: 44px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: #ffffff;
    color: var(--blue-dark);
  }

  .header-phone-icon span::before {
    content: "";
    display: block;
    width: 15px;
    height: 15px;
    border: 2px solid currentColor;
    border-top-color: transparent;
    border-right-color: transparent;
    border-radius: 4px;
    transform: rotate(-45deg);
  }

  .mobile-menu[open]::before {
    content: "";
    position: fixed;
    inset: 58px 0 0;
    z-index: 70;
    background: rgba(6, 24, 47, 0.44);
  }

  .mobile-menu-panel {
    position: fixed;
    top: 66px;
    left: 12px;
    right: 12px;
    z-index: 80;
    max-height: calc(100dvh - 82px);
    overflow: auto;
    padding: 14px;
    border-radius: 18px;
  }

  .mobile-menu-panel a {
    min-height: 44px;
  }

  .hero-grid,
  .product-hero-grid,
  .quote-page-layout,
  .map-panel {
    grid-template-columns: 1fr;
  }

  .hero-visual,
  .product-visual {
    aspect-ratio: 16 / 10;
  }

  .category-grid,
  .direction-grid,
  .product-grid,
  .industry-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .catalog-chip-row {
    display: none;
  }

  .catalog-mobile-filters {
    display: block;
  }

  .catalog-mobile-filters summary {
    display: flex;
    align-items: center;
    min-height: 42px;
    margin-top: 10px;
    padding: 0 14px;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: #ffffff;
    color: var(--blue-dark);
    font-weight: 600;
    cursor: pointer;
  }

  .catalog-mobile-filter-panel {
    display: grid;
    gap: 6px;
    margin-top: 8px;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #ffffff;
  }

  .catalog-mobile-filter-panel a {
    min-height: 36px;
    padding: 7px 10px;
    border-radius: 10px;
    color: var(--muted);
    font-weight: 600;
  }

  .catalog-mobile-filter-panel a.active,
  .catalog-mobile-filter-panel a:hover {
    background: var(--ice-100);
    color: var(--blue-dark);
  }

  .catalog-sidebar {
    display: none;
  }

  .quote-side-column {
    position: static;
  }
}

@media (max-width: 767px) {
  .wrap {
    width: min(100% - 24px, 1400px);
  }

  h1,
  .page-hero h1 {
    font-size: 2.35rem;
  }

  h2,
  .section-title,
  .section-head h2 {
    font-size: 1.9rem;
  }

  .hero,
  .section {
    padding: 44px 0;
  }

  .page-hero {
    padding: 42px 0 30px;
  }

  .header-cta {
    display: none;
  }

  .hero-actions,
  .direction-actions,
  .scroll-popup-actions {
    display: grid;
  }

  .hero-actions .btn,
  .direction-actions .btn,
  .scroll-popup-actions .btn {
    width: 100%;
  }

  .fact-grid,
  .trust-grid,
  .trust-grid-four,
  .trust-note-grid,
  .risk-grid,
  .result-grid,
  .proof-grid,
  .case-grid,
  .category-detail-grid,
  .documents-grid,
  .category-grid,
  .direction-grid,
  .product-grid,
  .industry-grid,
  .work-section .process-grid,
  .quote-process-section .process-grid {
    grid-template-columns: 1fr;
  }

  .catalog-search-form {
    grid-template-columns: 1fr;
  }

  .catalog-search-form .btn {
    width: 100%;
  }

  .quote-grid {
    grid-template-columns: 1fr;
  }

  .category-photo-grid,
  .category-image {
    height: 190px;
  }

  .product-card-media {
    aspect-ratio: 16 / 9;
  }

  .industry-image {
    height: 190px;
  }

  .contact-compact {
    padding: 18px;
  }

  .map-frame {
    height: 240px;
  }

  .map-route-buttons {
    grid-template-columns: 1fr;
  }

  .map-panel-embed {
    min-height: 240px;
  }

  .scroll-popup {
    bottom: 88px;
  }
}

@media (max-width: 390px) {
  .brand-logo {
    width: 106px;
  }

  h1,
  .page-hero h1 {
    font-size: 2.1rem;
  }
}

/* Header should keep desktop navigation labels on one line. */
@media (min-width: 920.02px) {
  .site-header .header-inner {
    gap: 12px;
  }

  .site-header .primary-nav {
    min-width: 0;
    gap: 4px;
  }

  .site-header .primary-nav > a,
  .site-header .primary-nav .nav-link {
    flex: 0 0 auto;
    min-width: max-content;
    padding-inline: 8px;
    white-space: nowrap;
  }

  .site-header .nav-link span,
  .site-header .primary-nav > a {
    white-space: nowrap;
  }

  .site-header .header-actions,
  .site-header .header-phone,
  .site-header .header-cta {
    flex: 0 0 auto;
  }
}

@media (min-width: 920.02px) and (max-width: 1320px) {
  .site-header .brand-logo {
    width: 118px;
  }

  .site-header .primary-nav {
    gap: 2px;
    font-size: 13px;
  }

  .site-header .primary-nav > a,
  .site-header .primary-nav .nav-link {
    padding-inline: 7px;
  }

  .site-header .header-phone strong {
    font-size: 14px;
  }

  .site-header .header-phone span {
    font-size: 12px;
  }

  .site-header .header-cta {
    padding-inline: 12px;
  }
}

/* Premium compact UI pass: tighter rhythm, calmer surfaces, and more refined depth. */
:root {
  --premium-ink: #071a2f;
  --premium-muted: #5a6674;
  --premium-line: #d7e1ec;
  --premium-surface: #ffffff;
  --premium-surface-soft: #f3f7fb;
  --premium-blue: #185f9f;
  --premium-blue-deep: #073455;
  --premium-shadow: 0 16px 42px rgba(7, 26, 47, 0.08);
  --premium-shadow-soft: 0 8px 24px rgba(7, 26, 47, 0.055);
}

body:not(.admin-body) {
  background:
    linear-gradient(180deg, #ffffff 0%, #f5f8fb 42%, #eef4f8 100%);
  color: var(--premium-muted);
}

body:not(.admin-body) .site-header {
  background: rgba(255, 255, 255, 0.9);
  border-bottom-color: var(--color-border);
  box-shadow: 0 10px 30px rgba(7, 26, 47, 0.055);
}

body:not(.admin-body) .header-inner {
  min-height: 68px;
}

body:not(.admin-body) .section {
  padding: 42px 0;
}

body:not(.admin-body) .section-compact {
  padding: 22px 0;
}

body:not(.admin-body) .page-hero {
  padding: 44px 0 28px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(245, 248, 251, 0.86));
}

body:not(.admin-body) .hero {
  padding: 48px 0 36px;
}

body:not(.admin-body) .section-head {
  margin-bottom: 24px;
}

body:not(.admin-body) .page-hero .lead,
body:not(.admin-body) .hero .lead {
  max-width: 760px;
}

body:not(.admin-body) h1,
body:not(.admin-body) h2,
body:not(.admin-body) h3 {
  color: var(--premium-ink);
}

body:not(.admin-body) h1,
body:not(.admin-body) .page-hero h1 {
  font-size: clamp(2.7rem, 4.4vw, 4.15rem);
}

body:not(.admin-body) h2,
body:not(.admin-body) .section-title,
body:not(.admin-body) .section-head h2 {
  font-size: clamp(2rem, 3.2vw, 3rem);
}

body:not(.admin-body) .btn {
  min-height: 44px;
  border-color: var(--premium-blue);
  background: linear-gradient(180deg, #2477bf 0%, var(--premium-blue) 100%);
  box-shadow: 0 10px 22px rgba(24, 95, 159, 0.18);
}

body:not(.admin-body) .btn:hover {
  border-color: var(--premium-blue-deep);
  background: linear-gradient(180deg, #185f9f 0%, var(--premium-blue-deep) 100%);
}

body:not(.admin-body) .btn-line {
  border-color: rgba(7, 52, 85, 0.18);
  background: rgba(255, 255, 255, 0.9);
  color: var(--premium-blue-deep);
  box-shadow: none;
}

body:not(.admin-body) .fact,
body:not(.admin-body) .trust-item,
body:not(.admin-body) .value-card,
body:not(.admin-body) .contact-card,
body:not(.admin-body) .panel,
body:not(.admin-body) .product-card,
body:not(.admin-body) .category-card,
body:not(.admin-body) .quote-form,
body:not(.admin-body) .empty-state,
body:not(.admin-body) .catalog-note,
body:not(.admin-body) .process-card,
body:not(.admin-body) .industry-card,
body:not(.admin-body) .risk-card,
body:not(.admin-body) .result-card,
body:not(.admin-body) .case-card,
body:not(.admin-body) .category-detail-panel,
body:not(.admin-body) .document-card,
body:not(.admin-body) .contact-compact,
body:not(.admin-body) .contact-requisites-panel,
body:not(.admin-body) .map-panel-copy,
body:not(.admin-body) .map-panel-embed,
body:not(.admin-body) .quote-side-card {
  border-color: var(--color-border);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: var(--premium-shadow-soft);
}

body:not(.admin-body) .value-card,
body:not(.admin-body) .contact-card,
body:not(.admin-body) .panel,
body:not(.admin-body) .trust-item,
body:not(.admin-body) .risk-card,
body:not(.admin-body) .result-card,
body:not(.admin-body) .case-card,
body:not(.admin-body) .category-detail-panel,
body:not(.admin-body) .document-card,
body:not(.admin-body) .contact-compact,
body:not(.admin-body) .contact-requisites-panel,
body:not(.admin-body) .map-panel-copy,
body:not(.admin-body) .quote-side-card {
  padding: 20px;
}

body:not(.admin-body) .hero-grid,
body:not(.admin-body) .product-hero-grid {
  gap: 32px;
}

body:not(.admin-body) .category-grid,
body:not(.admin-body) .direction-grid,
body:not(.admin-body) .product-grid,
body:not(.admin-body) .industry-grid,
body:not(.admin-body) .risk-grid,
body:not(.admin-body) .result-grid,
body:not(.admin-body) .case-grid,
body:not(.admin-body) .documents-grid,
body:not(.admin-body) .proof-grid {
  gap: 14px;
}

body:not(.admin-body) .fact-grid,
body:not(.admin-body) .trust-note-grid,
body:not(.admin-body) .quote-grid,
body:not(.admin-body) .quote-page-layout,
body:not(.admin-body) .map-panel {
  gap: 16px;
}

body:not(.admin-body) .category-card h3,
body:not(.admin-body) .category-card p,
body:not(.admin-body) .category-card .category-subgroups,
body:not(.admin-body) .category-card .direction-actions {
  margin-left: 16px;
  margin-right: 16px;
}

body:not(.admin-body) .product-card-body,
body:not(.admin-body) .industry-card h3,
body:not(.admin-body) .industry-card p,
body:not(.admin-body) .industry-card .text-link {
  margin-left: 18px;
  margin-right: 18px;
}

body:not(.admin-body) .product-card-body {
  margin-left: 0;
  margin-right: 0;
  padding: 16px;
}

body:not(.admin-body) .hero-visual,
body:not(.admin-body) .product-visual {
  border-radius: 14px;
  box-shadow: var(--premium-shadow);
}

body:not(.admin-body) .contact-compact {
  align-items: flex-start;
}

body:not(.admin-body) .contact-compact-list,
body:not(.admin-body) .contact-requisites-grid {
  gap: 10px 18px;
}

body:not(.admin-body) .contact-line span,
body:not(.admin-body) .contact-requisite dt {
  color: #5C6E84;
  font-size: 12px;
}

body:not(.admin-body) .contact-line a,
body:not(.admin-body) .contact-requisite dd {
  color: var(--premium-ink);
}

body:not(.admin-body) .map-panel-embed {
  min-height: 290px;
}

body:not(.admin-body) .map-route-button {
  min-height: 42px;
  background: linear-gradient(180deg, #ffffff, #F4F8FD);
  box-shadow: 0 6px 16px rgba(7, 26, 47, 0.055);
}

body:not(.admin-body) .quote-form-column,
body:not(.admin-body) .quote-side-column,
body:not(.admin-body) .contact-requisites-head {
  gap: 10px;
}

body:not(.admin-body) .work-section {
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0.052) 1px, transparent 1px),
    linear-gradient(0deg, rgba(255, 255, 255, 0.042) 1px, transparent 1px),
    linear-gradient(135deg, #06172a 0%, #082948 58%, #073455 100%);
  background-size: 42px 42px, 42px 42px, auto;
}

body:not(.admin-body) .site-footer {
  background: linear-gradient(180deg, #071a2f 0%, #041524 100%);
}

@media (max-width: 920px) {
  body:not(.admin-body) .contact-requisites-panel {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 767px) {
  body:not(.admin-body) .section {
    padding: 34px 0;
  }

  body:not(.admin-body) .section-compact {
    padding: 18px 0;
  }

  body:not(.admin-body) .page-hero {
    padding: 34px 0 22px;
  }

  body:not(.admin-body) .hero {
    padding: 38px 0 30px;
  }

  body:not(.admin-body) .contact-requisites-grid {
    grid-template-columns: 1fr;
  }

  body:not(.admin-body) .map-panel-embed {
    min-height: 230px;
  }
}

/* KabEM logo button language */
:root {
  --kabem-logo-navy: #10233C;
  --kabem-logo-navy-2: #064169;
  --kabem-logo-navy-dark: #001d34;
  --kabem-logo-sky: #b7d8ee;
  --kabem-logo-ice: #eef6fb;
}

body:not(.admin-body) .map-route-button {
  border-color: rgba(1, 46, 79, 0.24);
  background:
    linear-gradient(180deg, #ffffff 0%, #f5f9fc 100%);
  color: var(--kabem-logo-navy);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 8px 18px rgba(1, 46, 79, 0.08);
}

body:not(.admin-body) .map-route-button:hover {
  border-color: var(--kabem-logo-navy);
  background:
    linear-gradient(180deg, var(--kabem-logo-navy-2) 0%, var(--kabem-logo-navy) 100%);
  color: #ffffff;
  box-shadow: 0 12px 24px rgba(1, 46, 79, 0.16);
}

body:not(.admin-body) .primary-nav a.is-active,
body:not(.admin-body) .nav-link.is-active,
body:not(.admin-body) .nav-link[aria-current="page"],
body:not(.admin-body) .mobile-menu-panel a.is-active {
  background:
    linear-gradient(180deg, rgba(6, 65, 105, 0.98) 0%, var(--kabem-logo-navy) 100%);
  color: #ffffff;
  box-shadow: 0 8px 18px rgba(1, 46, 79, 0.14);
}

body:not(.admin-body) .primary-nav a:hover,
body:not(.admin-body) .nav-link:hover,
body:not(.admin-body) .nav-dropdown[open] > .nav-link {
  background: var(--kabem-logo-ice);
  color: var(--kabem-logo-navy);
}

body:not(.admin-body) .primary-nav a.is-active:hover,
body:not(.admin-body) .nav-link.is-active:hover,
body:not(.admin-body) .nav-link[aria-current="page"]:hover {
  background:
    linear-gradient(180deg, rgba(6, 65, 105, 0.98) 0%, var(--kabem-logo-navy) 100%);
  color: #ffffff;
}

body:not(.admin-body) .map-load span {
  background:
    linear-gradient(180deg, var(--kabem-logo-navy-2) 0%, var(--kabem-logo-navy) 100%);
  color: #ffffff;
  box-shadow: 0 12px 24px rgba(1, 46, 79, 0.18);
}

body:not(.admin-body) .map-load svg {
  stroke: var(--kabem-logo-navy);
}

body:not(.admin-body) .scroll-popup-close {
  border-color: var(--color-border);
  background: var(--kabem-logo-ice);
  color: var(--kabem-logo-navy);
}

body:not(.admin-body) .scroll-popup-close:hover {
  border-color: var(--kabem-logo-navy);
  background: var(--kabem-logo-navy);
  color: #ffffff;
}

body:not(.admin-body) .link-button {
  color: var(--kabem-logo-navy);
}

body:not(.admin-body) .link-button:hover {
  color: var(--kabem-logo-navy-dark);
}

/* Repeat audit fixes */
:root {
  --text-hero: clamp(2.5rem, 3.4vw, 3.75rem);
}

body:not(.admin-body) h1,
body:not(.admin-body) .page-hero h1 {
  font-size: clamp(2.45rem, 3.4vw, 3.75rem);
}

body:not(.admin-body) h2,
body:not(.admin-body) .section-title,
body:not(.admin-body) .section-head h2 {
  font-size: clamp(2.05rem, 2.4vw, 2.25rem);
}

body:not(.admin-body) .section.reveal-ready,
body:not(.admin-body) .quote-form.reveal-ready {
  opacity: 1;
  transform: none;
}

body:not(.admin-body) .quote-side-card.quote-map-card {
  overflow: hidden;
  padding: 0;
  background: #eef5fb;
}

body:not(.admin-body) .quote-map-image {
  display: block;
  height: 240px;
}

body:not(.admin-body) .contact-page-hero h1 {
  font-size: clamp(2.35rem, 3vw, 3.25rem);
}

body:not(.admin-body) .contact-line small {
  color: #5C6E84;
  font-size: 0.78rem;
  line-height: 1.35;
}

body:not(.admin-body) .contact-requisites-actions,
body:not(.admin-body) .manager-contact-links {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

body:not(.admin-body) button.text-link {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--kabem-logo-navy);
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}

body:not(.admin-body) button.text-link:hover {
  color: var(--kabem-logo-navy-dark);
}

body:not(.admin-body) button.text-link.is-copied {
  color: #1870BD;
}

body:not(.admin-body) .contact-wayfinding {
  display: grid;
  gap: 6px;
  margin-top: 4px;
  padding: 14px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: linear-gradient(180deg, #ffffff 0%, #f5f9fc 100%);
}

/* Work process audit fixes */
body:not(.admin-body) .work-section .section-head h2,
body:not(.admin-body) .work-section h2 {
  color: var(--color-text-on-dark);
}

body:not(.admin-body) .work-section .section-head p:last-child,
body:not(.admin-body) .work-section .process-card p,
body:not(.admin-body) .work-section .process-meta span {
  color: #dfeaf2;
}

body:not(.admin-body) .work-section .process-card {
  border-color: rgba(255, 255, 255, 0.18);
  background: rgba(255, 255, 255, 0.08);
}

.process-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.process-icon {
  position: relative;
  display: inline-flex;
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: linear-gradient(180deg, #ffffff 0%, #edf7fd 100%);
  color: var(--kabem-logo-navy);
}

.work-section .process-icon {
  border-color: var(--color-border);
  background: rgba(183, 216, 238, 0.1);
  color: #d9eefb;
}

.process-icon::before,
.process-icon::after,
.process-icon span {
  content: "";
  position: absolute;
  display: block;
  border-color: currentColor;
}

.process-icon-file::before,
.process-icon-document::before {
  width: 16px;
  height: 20px;
  border: 2px solid currentColor;
  border-radius: 4px;
}

.process-icon-file::after,
.process-icon-document::after {
  width: 8px;
  height: 2px;
  border-top: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
}

.process-icon-search::before {
  width: 15px;
  height: 15px;
  border: 2px solid currentColor;
  border-radius: 50%;
  transform: translate(-3px, -3px);
}

.process-icon-search::after {
  width: 9px;
  height: 2px;
  background: currentColor;
  border-radius: 999px;
  transform: translate(8px, 8px) rotate(45deg);
}

.process-icon-box::before {
  width: 20px;
  height: 16px;
  border: 2px solid currentColor;
  border-radius: 4px;
}

.process-icon-box::after {
  width: 16px;
  height: 8px;
  border-top: 2px solid currentColor;
  transform: translateY(-4px) skewX(-28deg);
}

.process-icon-truck::before {
  width: 19px;
  height: 12px;
  border: 2px solid currentColor;
  border-radius: 3px;
  transform: translateX(-3px);
}

.process-icon-truck::after {
  width: 7px;
  height: 8px;
  border: 2px solid currentColor;
  border-left: 0;
  border-radius: 0 3px 3px 0;
  transform: translateX(10px);
}

.process-icon-truck span {
  bottom: 7px;
  width: 24px;
  height: 4px;
  border-left: 4px solid currentColor;
  border-right: 4px solid currentColor;
  border-radius: 999px;
}

body:not(.admin-body) .work-section .step-number {
  border: 1px solid rgba(255, 255, 255, 0.24);
  background: rgba(183, 216, 238, 0.16);
  color: #ffffff;
}

.process-meta {
  display: grid;
  gap: 6px;
  margin-top: 14px;
}

.process-meta span {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  max-width: 100%;
  padding: 5px 8px;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  background: #f3f8fb;
  color: #5C6E84;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.25;
}

.work-section .process-meta span {
  border-color: rgba(255, 255, 255, 0.14);
  background: rgba(255, 255, 255, 0.08);
}

.process-link {
  display: inline-flex;
  margin-top: 14px;
}

.work-section .process-link {
  color: #d9eefb;
}

.work-page-intro-grid .panel {
  align-content: start;
}

body:not(.admin-body) .contact-wayfinding h3 {
  margin: 0;
  font-size: 1rem;
}

body:not(.admin-body) .contact-wayfinding p {
  font-size: 0.92rem;
}

body:not(.admin-body) .contact-form-layout {
  display: grid;
  grid-template-columns: minmax(280px, 0.38fr) minmax(0, 1fr);
  gap: 18px;
  align-items: stretch;
}

body:not(.admin-body) .contact-manager-card {
  align-self: stretch;
  top: 82px;
  padding: 22px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background:
    linear-gradient(135deg, rgba(1, 46, 79, 0.96) 0%, rgba(6, 65, 105, 0.94) 100%);
  color: #ffffff;
  box-shadow: var(--premium-shadow-soft);
}

body:not(.admin-body) .contact-manager-card h2 {
  margin: 0 0 10px;
  color: #ffffff;
  font-size: 1.35rem;
}

body:not(.admin-body) .contact-manager-card p:not(.kicker) {
  color: rgba(255, 255, 255, 0.78);
}

body:not(.admin-body) .contact-manager-card .kicker {
  color: #b7d8ee;
}

body:not(.admin-body) .manager-contact-links {
  margin-top: 16px;
}

body:not(.admin-body) .manager-contact-links a {
  color: #ffffff;
  font-weight: 600;
}

body:not(.admin-body) .about-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(340px, 0.92fr);
  gap: 34px;
  align-items: center;
}

body:not(.admin-body) .about-hero-visual {
  position: relative;
  min-height: 420px;
  overflow: hidden;
  border: 1px solid var(--color-border);
  border-radius: 14px;
  background: var(--kabem-logo-navy);
  box-shadow: var(--premium-shadow);
}

body:not(.admin-body) .about-hero-visual picture,
body:not(.admin-body) .about-hero-image {
  display: block;
  width: 100%;
  height: 100%;
}

body:not(.admin-body) .about-hero-image {
  object-fit: cover;
}

body:not(.admin-body) .about-hero-card {
  position: absolute;
  right: 18px;
  bottom: 18px;
  width: min(280px, calc(100% - 36px));
  padding: 16px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 12px;
  background: rgba(1, 46, 79, 0.88);
  color: #ffffff;
  box-shadow: 0 16px 34px rgba(1, 30, 52, 0.24);
  backdrop-filter: blur(14px);
}

body:not(.admin-body) .about-hero-card span,
body:not(.admin-body) .about-hero-card strong {
  display: block;
}

body:not(.admin-body) .about-hero-card span {
  margin-bottom: 6px;
  color: rgba(255, 255, 255, 0.72);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

body:not(.admin-body) .about-hero-card strong {
  color: #ffffff;
  font-family: var(--font-heading);
  font-size: 1.15rem;
  line-height: 1.18;
}

body:not(.admin-body) .about-story-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(300px, 0.45fr);
  gap: 28px;
  align-items: start;
}

body:not(.admin-body) .about-story-copy {
}

body:not(.admin-body) .about-story-copy p:not(.kicker) {
  color: var(--premium-muted);
  font-size: 1.05rem;
}

body:not(.admin-body) .about-timeline {
  padding: 22px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: var(--premium-shadow-soft);
}

body:not(.admin-body) .about-timeline h2 {
  margin-bottom: 18px;
  font-size: 1.35rem;
}

body:not(.admin-body) .about-timeline-list {
  display: grid;
  gap: 16px;
}

body:not(.admin-body) .about-timeline-item {
  position: relative;
  padding-left: 44px;
}

body:not(.admin-body) .about-timeline-item::before {
  content: "";
  position: absolute;
  left: 10px;
  top: 5px;
  width: 12px;
  height: 12px;
  border: 3px solid #ffffff;
  border-radius: 999px;
  background: var(--kabem-logo-navy);
  box-shadow: 0 0 0 1px rgba(1, 46, 79, 0.2);
}

body:not(.admin-body) .about-timeline-item::after {
  content: "";
  position: absolute;
  left: 15px;
  top: 24px;
  bottom: -14px;
  width: 1px;
  background: rgba(1, 46, 79, 0.16);
}

body:not(.admin-body) .about-timeline-item:last-child::after {
  display: none;
}

body:not(.admin-body) .about-timeline-item span {
  display: inline-block;
  margin-bottom: 6px;
  color: var(--kabem-logo-navy);
  font-weight: 600;
}

body:not(.admin-body) .about-timeline-item h3 {
  margin-bottom: 6px;
  font-size: 1.08rem;
}

body:not(.admin-body) .about-timeline-item p {
  margin: 0;
  color: var(--premium-muted);
  font-size: 0.95rem;
}

body:not(.admin-body) .about-fact-grid .fact {
  min-height: 118px;
}

body:not(.admin-body) .about-responsibility-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

body:not(.admin-body) .about-responsibility-grid .value-card {
  min-height: 100%;
}

body:not(.admin-body) .about-object-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

body:not(.admin-body) .about-object-card {
  min-height: 100%;
}

body:not(.admin-body) .about-principles-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

body:not(.admin-body) .about-legal-section {
  padding-top: 0;
}

body:not(.admin-body) .about-legal-strip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 18px 22px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background:
    linear-gradient(135deg, rgba(1, 46, 79, 0.06) 0%, rgba(245, 249, 253, 0.96) 100%);
}

body:not(.admin-body) .about-legal-strip p {
  margin: 0;
  color: var(--premium-ink);
  font-weight: 600;
}

@media (max-width: 920px) {
  body:not(.admin-body) .about-hero-grid,
  body:not(.admin-body) .about-story-grid,
  body:not(.admin-body) .contact-form-layout {
    grid-template-columns: 1fr;
  }

  body:not(.admin-body) .contact-manager-card {
    position: static;
  }

  body:not(.admin-body) .about-hero-visual {
    min-height: 360px;
  }

  body:not(.admin-body) .about-responsibility-grid,
  body:not(.admin-body) .about-principles-grid,
  body:not(.admin-body) .about-object-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body:not(.admin-body) .about-legal-strip {
    display: grid;
  }

  body:not(.admin-body) .scroll-popup {
    display: none !important;
  }
}

@media (max-width: 640px) {
  body:not(.admin-body) .about-hero-visual {
    min-height: 300px;
  }

  body:not(.admin-body) .about-responsibility-grid,
  body:not(.admin-body) .about-principles-grid,
  body:not(.admin-body) .about-object-grid {
    grid-template-columns: 1fr;
  }

  body:not(.admin-body) .about-hero-card {
    position: static;
    width: auto;
    margin: -76px 14px 14px;
  }
}

/* Spacing and overlap audit fixes */
details:not([open]) > :not(summary) {
  display: none !important;
}

details[open] > .catalog-mobile-filter-panel,
details[open] > .nav-dropdown-panel,
details[open] > .mobile-menu-panel {
  display: grid;
}

html,
body:not(.admin-body) {
  max-width: 100%;
}

body:not(.admin-body) .work-section,
body:not(.admin-body) .quote-process-section {
  overflow: hidden;
}

body:not(.admin-body) .process-grid,
body:not(.admin-body) .process-card,
body:not(.admin-body) .process-meta span {
  min-width: 0;
}

@media (max-width: 640px) {
  body:not(.admin-body) .work-section .process-grid,
  body:not(.admin-body) .quote-process-section .process-grid {
    width: 100%;
    max-width: 100%;
  }

  body:not(.admin-body) .process-meta span {
    width: 100%;
    white-space: normal;
  }
}

@media (min-width: 920.02px) and (max-width: 1080px) {
  body:not(.admin-body) .site-header .primary-nav {
    display: none;
  }

  body:not(.admin-body) .site-header .mobile-menu {
    display: block;
  }

  body:not(.admin-body) .site-header .header-inner {
    justify-content: space-between;
  }

  body:not(.admin-body) .site-header .header-actions {
    margin-left: auto;
  }

  body:not(.admin-body) .site-header .header-phone {
    display: none;
  }

  body:not(.admin-body) .site-header .header-phone-icon {
    position: relative;
    display: inline-flex;
    width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background: #ffffff;
    color: var(--kabem-logo-navy);
  }

  body:not(.admin-body) .site-header .header-phone-icon span::before {
    content: "";
    display: block;
    width: 15px;
    height: 15px;
    border: 2px solid currentColor;
    border-top-color: transparent;
    border-right-color: transparent;
    border-radius: 4px;
    transform: rotate(-45deg);
  }
}

@media (max-width: 430px) {
  :root { --pad-panel: 20px; }
}

@media (max-width: 480px) {
  body:not(.admin-body) .page-hero h1 {
    font-size: clamp(1.72rem, 8vw, 2rem);
    line-height: 1.1;
    overflow-wrap: anywhere;
    hyphens: auto;
  }
}

body:not(.admin-body) .process-compact {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
  gap: 12px;
  align-items: stretch;
}

body:not(.admin-body) .process-compact-item {
  min-width: 0;
  display: flex;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: #ffffff;
  box-shadow: 0 16px 38px rgba(1, 46, 79, 0.08);
}

body:not(.admin-body) .work-section .process-compact-item,
body:not(.admin-body) .quote-process-section .process-compact-item {
  border-color: rgba(255, 255, 255, 0.16);
  background: rgba(255, 255, 255, 0.08);
  color: #ffffff;
  box-shadow: none;
}

body:not(.admin-body) .process-compact-item .step-number {
  flex: 0 0 auto;
  color: var(--kabem-accent);
  font-weight: 600;
}

body:not(.admin-body) .process-compact-item h3 {
  margin: 0 0 4px;
  font-size: 1rem;
  line-height: 1.25;
}

body:not(.admin-body) .process-compact-item p {
  margin: 0;
  color: var(--premium-muted);
  font-size: 0.92rem;
  line-height: 1.5;
}

body:not(.admin-body) .work-section .process-compact-item p,
body:not(.admin-body) .quote-process-section .process-compact-item p {
  color: rgba(255, 255, 255, 0.76);
}

body:not(.admin-body) .process-compact-link {
  align-self: center;
  justify-self: end;
  white-space: nowrap;
}

body:not(.admin-body) .documents-grid-compact {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  max-width: 920px;
}

@media (max-width: 1180px) {
  body:not(.admin-body) .process-compact {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body:not(.admin-body) .process-compact-link {
    justify-self: start;
  }
}

@media (max-width: 640px) {
  body:not(.admin-body) .process-compact,
  body:not(.admin-body) .documents-grid-compact {
    grid-template-columns: 1fr;
  }

  body:not(.admin-body) .process-compact-link {
    width: 100%;
    justify-content: center;
    white-space: normal;
  }

  body:not(.admin-body) .product-card-footer {
    display: grid;
    width: 100%;
  }

  body:not(.admin-body) .product-card-footer .text-link {
    display: inline-flex;
    min-height: 44px;
    width: 100%;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--color-border);
    border-radius: 10px;
    background: #ffffff;
  }
}

@media (max-width: 920px) {
  body:not(.admin-body) .file-dropzone {
    min-height: 52px;
    padding: 12px 16px;
    border-style: solid;
    border-color: rgba(1, 46, 79, 0.18);
    background: linear-gradient(180deg, var(--kabem-logo-navy) 0%, var(--kabem-logo-navy-dark) 100%);
    color: #ffffff;
  }

  body:not(.admin-body) .file-dropzone-title {
    display: none;
  }

  body:not(.admin-body) .file-dropzone-mobile-title {
    display: block;
    font-size: 1rem;
    font-weight: 600;
  }

  body:not(.admin-body) .file-dropzone-note {
    color: rgba(255, 255, 255, 0.78);
    font-size: 0.82rem;
  }
}

/* Final audit refinements */
:root {
  --kabem-phone-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2A19.79 19.79 0 0 1 11.19 18.87a19.5 19.5 0 0 1-6-6A19.79 19.79 0 0 1 2.08 4.18 2 2 0 0 1 4.06 2h3a2 2 0 0 1 2 1.72c.12.86.31 1.7.57 2.5a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.58-1.09a2 2 0 0 1 2.11-.45c.8.26 1.64.45 2.5.57A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E");
}

html {
  scroll-padding-top: 92px;
}

/* Значок телефона в шапке — трубка по маске --kabem-phone-mask. Правило
   стоит после блоков выше, где у span::before нарисован уголок из двух
   границ: без него в кружке оставался шеврон (возврат 31.08.2026 — при
   удалении липкой панели правило удалили заодно, оно было общим с ней) */
body:not(.admin-body) .header-phone-icon span {
  display: inline-block;
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  margin: 0;
}

body:not(.admin-body) .header-phone-icon span::before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: currentColor;
  transform: none;
  -webkit-mask: var(--kabem-phone-mask) center / contain no-repeat;
  mask: var(--kabem-phone-mask) center / contain no-repeat;
}

body:not(.admin-body) .work-section .kicker,
body:not(.admin-body) .quote-process-section .kicker {
  color: #e8f6ff;
}

body:not(.admin-body) .work-section .section-head p:last-child,
body:not(.admin-body) .work-section .process-card p,
body:not(.admin-body) .work-section .process-meta span,
body:not(.admin-body) .quote-process-section .section-head p:last-child,
body:not(.admin-body) .quote-process-section .process-card p,
body:not(.admin-body) .quote-process-section .process-meta span {
  color: #f0f7fb;
}

body:not(.admin-body) .work-section .process-compact-item p,
body:not(.admin-body) .quote-process-section .process-compact-item p {
  color: #eef6fb;
}

body:not(.admin-body) .work-section .process-meta span,
body:not(.admin-body) .quote-process-section .process-meta span {
  border-color: rgba(255, 255, 255, 0.22);
  background: rgba(255, 255, 255, 0.12);
}

body:not(.admin-body) .map-panel-embed .map-preview {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  filter: saturate(0.95) contrast(1.02);
}

/* Card layout repair */
body:not(.admin-body) .category-card,
body:not(.admin-body) .industry-card {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.96);
  color: var(--premium-ink);
}

body:not(.admin-body) .category-card {
  padding: 0 0 20px;
}

body:not(.admin-body) .industry-card {
  padding: 0 0 22px;
}

body:not(.admin-body) .category-card picture,
body:not(.admin-body) .industry-card picture,
body:not(.admin-body) .category-photo-grid,
body:not(.admin-body) .category-image,
body:not(.admin-body) .industry-image {
  flex: 0 0 auto;
}

body:not(.admin-body) .category-card picture {
  height: auto;
  min-height: 0;
}

body:not(.admin-body) .category-card picture .category-image,
body:not(.admin-body) .category-card > .category-image,
body:not(.admin-body) .industry-card picture .industry-image,
body:not(.admin-body) .industry-card > .industry-image {
  display: block;
  width: 100%;
  object-fit: cover;
}

body:not(.admin-body) .category-card picture .category-image,
body:not(.admin-body) .category-card > .category-image {
  height: 150px;
}

body:not(.admin-body) .industry-card picture .industry-image,
body:not(.admin-body) .industry-card > .industry-image {
  height: 176px;
}

body:not(.admin-body) .category-card h3 {
  margin: 20px 20px 0;
  color: var(--premium-ink);
  line-height: 1.12;
}

body:not(.admin-body) .category-card p {
  margin: 16px 20px 0;
  color: #5C6E84;
  line-height: 1.5;
}

body:not(.admin-body) .category-card .category-subgroups {
  margin: 18px 20px 0;
}

body:not(.admin-body) .category-card > .text-link,
body:not(.admin-body) .industry-card > .text-link {
  display: inline-flex;
  align-self: flex-start;
  margin: auto 20px 0;
  padding-top: 18px;
  color: var(--color-accent-text, #1870BD);
  line-height: 1.2;
}

body:not(.admin-body) .category-card .direction-actions {
  margin: auto 20px 0;
  padding-top: 18px;
}

body:not(.admin-body) .category-card .direction-actions .text-link {
  color: var(--color-accent-text, #1870BD);
}

body:not(.admin-body) .category-card .category-subgroups span,
body:not(.admin-body) .industry-card .category-subgroups span {
  border-color: var(--color-border);
  background: #f5f9fc;
  color: #5C6E84;
}

/* Шапка на очень узких экранах (≤340): логотип 122 + зазор 18 + блок
   действий 183 = 323 при контейнере 288, и правая кромка «Меню» уходила
   за экран на 19px — на всех страницах сразу (перепроверка 26.08.2026).
   Ужимаем только здесь: на 375 и шире шапка остаётся утверждённой. */
@media (max-width: 340px) {
  body:not(.admin-body) .site-header .header-inner {
    gap: 8px;
  }

  body:not(.admin-body) .site-header .header-actions {
    gap: 4px;
  }

  /* Повторы :not и .is-compact обязательны: в 09 ту же ширину задаёт
     правило с пятью :not, и без перевеса по специфичности логотип
     остаётся 122px */
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .brand .brand-logo,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header.is-compact .brand .brand-logo {
    width: 104px;
    height: auto;
  }
}

/* ===== 02-redesign.css ===== */
/* Редизайн: иконки, hero, cookie, каталог, шрифты Inter
   Файл нарезан из единого application.css (как на сайте Дед Глеб).
   Порядок подключения в layout важен: поздние файлы перекрывают ранние. */
/* ===== Redesign under render: icon system + hero highlights + fact icons ===== */
.icon-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: linear-gradient(180deg, #ffffff 0%, #eaf4fc 100%);
  color: var(--kabem-logo-navy);
}

.icon-badge--sm {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  border-radius: var(--radius-control);
}

.icon-badge::before {
  content: "";
  display: block;
  width: 24px;
  height: 24px;
  background: currentColor;
  -webkit-mask: var(--ic, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3C/svg%3E")) center / contain no-repeat;
  mask: var(--ic, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3C/svg%3E")) center / contain no-repeat;
}

.icon-badge--sm::before {
  width: 21px;
  height: 21px;
}

.ic-file { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpolyline points='14 2 14 8 20 8'/%3E%3Cline x1='16' y1='13' x2='8' y2='13'/%3E%3Cline x1='16' y1='17' x2='8' y2='17'/%3E%3Cline x1='10' y1='9' x2='8' y2='9'/%3E%3C/svg%3E"); }
.ic-clock { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpolyline points='12 6 12 12 16 14'/%3E%3C/svg%3E"); }
.ic-truck { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='3' width='15' height='13'/%3E%3Cpolygon points='16 8 20 8 23 11 23 16 16 16 16 8'/%3E%3Ccircle cx='5.5' cy='18.5' r='2.5'/%3E%3Ccircle cx='18.5' cy='18.5' r='2.5'/%3E%3C/svg%3E"); }
.ic-grid { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7'/%3E%3Crect x='14' y='3' width='7' height='7'/%3E%3Crect x='14' y='14' width='7' height='7'/%3E%3Crect x='3' y='14' width='7' height='7'/%3E%3C/svg%3E"); }
.ic-box { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='16.5' y1='9.4' x2='7.5' y2='4.21'/%3E%3Cpath d='M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z'/%3E%3Cpolyline points='3.27 6.96 12 12.01 20.73 6.96'/%3E%3Cline x1='12' y1='22.08' x2='12' y2='12'/%3E%3C/svg%3E"); }
.ic-clipboard { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Crect x='8' y='2' width='8' height='4' rx='1' ry='1'/%3E%3Cpath d='M9 14l2 2 4-4'/%3E%3C/svg%3E"); }
.ic-pin { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E"); }
.ic-phone { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2A19.79 19.79 0 0 1 11.19 18.87a19.5 19.5 0 0 1-6-6A19.79 19.79 0 0 1 2.08 4.18 2 2 0 0 1 4.06 2h3a2 2 0 0 1 2 1.72c.12.86.31 1.7.57 2.5a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.58-1.09a2 2 0 0 1 2.11-.45c.8.26 1.64.45 2.5.57A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E"); }
.ic-mail { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z'/%3E%3Cpolyline points='22 6 12 13 2 6'/%3E%3C/svg%3E"); }
.ic-chat { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z'/%3E%3C/svg%3E"); }
.ic-building { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18'/%3E%3Crect x='6' y='3' width='12' height='18' rx='1'/%3E%3Cline x1='9.5' y1='7' x2='9.51' y2='7'/%3E%3Cline x1='14.5' y1='7' x2='14.51' y2='7'/%3E%3Cline x1='9.5' y1='11' x2='9.51' y2='11'/%3E%3Cline x1='14.5' y1='11' x2='14.51' y2='11'/%3E%3Cline x1='9.5' y1='15' x2='9.51' y2='15'/%3E%3Cline x1='14.5' y1='15' x2='14.51' y2='15'/%3E%3C/svg%3E"); }
.ic-users { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M23 21v-2a4 4 0 0 0-3-3.87'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'/%3E%3C/svg%3E"); }

/* Отраслевые иконки для витрины «Отраслей» (16.08.2026): в наборе не было
   ни завода, ни крана, ни опоры ЛЭП — рисунок тот же, что у соседей:
   контур 24×24, толщина 2, скруглённые концы */
.ic-factory { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18'/%3E%3Cpath d='M5 21V11l5 3.5V11l5 3.5V8l4-3v16'/%3E%3Cpath d='M9 21v-4'/%3E%3Cpath d='M14 21v-4'/%3E%3C/svg%3E"); }
.ic-crane { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 21h8'/%3E%3Cpath d='M8 21V4'/%3E%3Cpath d='M8 4h12'/%3E%3Cpath d='M8 4 4 8'/%3E%3Cpath d='M19 4v4'/%3E%3Crect x='17' y='8' width='4' height='4' rx='1'/%3E%3C/svg%3E"); }
.ic-tower { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v18'/%3E%3Cpath d='M6 21 12 3l6 18'/%3E%3Cpath d='M8.4 11h7.2'/%3E%3Cpath d='M6.6 17h10.8'/%3E%3Cpath d='M4 7h5'/%3E%3Cpath d='M15 7h5'/%3E%3C/svg%3E"); }
.ic-oil { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3s5.5 6.4 5.5 10.4a5.5 5.5 0 0 1-11 0C6.5 9.4 12 3 12 3z'/%3E%3Cpath d='M12 17.5a3.5 3.5 0 0 1-3.5-3.5'/%3E%3C/svg%3E"); }
.ic-train { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='3' width='14' height='13' rx='3'/%3E%3Cpath d='M5 10h14'/%3E%3Cpath d='M9 13h.01'/%3E%3Cpath d='M15 13h.01'/%3E%3Cpath d='M8.5 16 6 21'/%3E%3Cpath d='M15.5 16 18 21'/%3E%3Cpath d='M4 21h16'/%3E%3C/svg%3E"); }
.ic-city { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18'/%3E%3Crect x='4' y='9' width='7' height='12' rx='1'/%3E%3Crect x='13' y='4' width='7' height='17' rx='1'/%3E%3Cpath d='M6.5 12.5h.01'/%3E%3Cpath d='M8.5 16h.01'/%3E%3Cpath d='M16.5 8h.01'/%3E%3Cpath d='M16.5 12h.01'/%3E%3C/svg%3E"); }

/* Hero highlights row (replaces plain microcopy) */
body:not(.admin-body) .hero-highlights {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px 22px;
  margin-top: 30px;
  padding-top: 26px;
  border-top: 1px solid var(--line);
}

.hero-highlight {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}

.hero-highlight strong {
  display: block;
  font-size: 15px;
  line-height: 1.3;
  color: var(--ink);
}

.hero-highlight span {
  display: block;
  margin-top: 3px;
  font-size: 13px;
  line-height: 1.4;
  color: var(--muted);
}

/* Fact cards with icon */
body:not(.admin-body) .fact-grid .fact {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-height: 0;
  padding: 22px;
}

.fact-icon-badge {
  margin-bottom: 2px;
}

/* Guard: keep icon badges intact inside .fact and .hero-highlight (override generic span rules) */
body:not(.admin-body) .fact > .icon-badge,
body:not(.admin-body) .hero-highlight > .icon-badge {
  display: inline-flex;
  width: 46px;
  color: var(--kabem-logo-navy);
}
body:not(.admin-body) .fact > .icon-badge.icon-badge--sm,
body:not(.admin-body) .hero-highlight > .icon-badge.icon-badge--sm {
  width: 40px;
}
body:not(.admin-body) .hero-highlight div span {
  display: block;
  margin-top: 3px;
  font-size: 13px;
  line-height: 1.4;
  color: var(--muted);
}

/* ===== Redesign: checkmark lists in positioning panels ===== */
.check-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 13px;
}

.check-list.check-list--cols {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 13px 22px;
  margin-top: 22px;
}

.check-list li {
  position: relative;
  padding-left: 32px;
  color: var(--muted);
  line-height: 1.45;
}

.check-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: rgba(37, 99, 174, 0.12);
}

.check-list li::after {
  content: "";
  position: absolute;
  left: 4px;
  top: 4px;
  width: 14px;
  height: 14px;
  background: var(--blue, #2563ae);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat;
}

body:not(.admin-body) .market-position-section .panel {
  display: flex;
  flex-direction: column;
}
@media (max-width: 640px) {
  .check-list.check-list--cols {
    grid-template-columns: 1fr;
  }
}

/* ===== Redesign: numbered horizontal process (Преимущества) ===== */
.process-flow .process-step {
  position: relative;
}

.step-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  margin-bottom: 16px;
  border-radius: 50%;
  background: linear-gradient(180deg, var(--kabem-logo-navy-2, #16456b) 0%, var(--kabem-logo-navy, #0c3050) 100%);
  color: #ffffff;
  font-family: var(--font-heading);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.02em;
  box-shadow: 0 6px 14px rgba(12, 48, 80, 0.24);
}

.process-flow .process-step:not(:last-child)::after {
  content: "";
  position: absolute;
  top: 41px;
  right: -10px;
  width: 20px;
  height: 2px;
  background: linear-gradient(90deg, rgba(20, 71, 110, 0.42), rgba(20, 71, 110, 0.12));
  z-index: 1;
}

@media (max-width: 900px) {
  .process-flow .process-step:not(:last-child)::after {
    display: none;
  }
}

/* ===== Redesign: value cards with icon (Комплексные поставки) ===== */
.value-card--icon {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.value-card--icon .icon-badge {
  margin-bottom: 2px;
}
.value-card--icon h3 {
  margin: 0;
}

/* ===== Redesign: contacts page icons ===== */
body:not(.admin-body) .contact-compact-list .contact-line {
  display: flex;
  gap: 13px;
  align-items: flex-start;
}
body:not(.admin-body) .contact-compact-list .contact-line > .icon-badge {
  flex: 0 0 40px;
  color: var(--kabem-logo-navy);
  margin-top: 2px;
}
.contact-line-body {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.section-icon-badge {
  margin-bottom: 14px;
  color: var(--kabem-logo-navy);
}
body:not(.admin-body) .contact-manager-card .section-icon-badge {
  border-color: rgba(255, 255, 255, 0.24);
  background: rgba(255, 255, 255, 0.12);
  color: #ffffff;
}

/* ===== Redesign: extra icons + about page cards ===== */
.ic-search { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E"); }
.ic-thermo { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26'/%3E%3Ccircle cx='11.5' cy='18' r='4'/%3E%3C/svg%3E"); }
.ic-link { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.07 0l3-3a5 5 0 0 0-7.07-7.07l-1.5 1.5'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.07 0l-3 3a5 5 0 0 0 7.07 7.07l1.5-1.5'/%3E%3C/svg%3E"); }
.ic-alert { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z'/%3E%3Cpath d='M12 9v4'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E"); }
.ic-swap { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 3l4 4-4 4'/%3E%3Cpath d='M21 7H8'/%3E%3Cpath d='M7 21l-4-4 4-4'/%3E%3Cpath d='M3 17h13'/%3E%3C/svg%3E"); }
.ic-shield { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/%3E%3C/svg%3E"); }
.ic-folder { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z'/%3E%3C/svg%3E"); }
.ic-check { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpolyline points='22 4 12 14.01 9 11.01'/%3E%3C/svg%3E"); }
.ic-globe { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18'/%3E%3Cpath d='M12 3a15 15 0 0 1 0 18a15 15 0 0 1 0-18z'/%3E%3C/svg%3E"); }

/* Icon cards on About (Что берём на себя / Принципы) */
.trust-item--icon,
.about-responsibility-grid .value-card,
.about-principles-grid .trust-item {
  display: flex;
  flex-direction: column;
  gap: 13px;
}
.about-responsibility-grid .value-card .icon-badge,
.about-principles-grid .trust-item .icon-badge {
  margin-bottom: 2px;
}
.about-responsibility-grid .value-card h3,
.about-principles-grid .trust-item h3 {
  margin: 0;
}

/* ===== Cookie consent banner ===== */
.cookie-bar {
  position: fixed;
  right: 18px;
  bottom: 20px;
  left: 18px;
  z-index: 1200;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px 24px;
  width: auto;
  padding: 12px 18px;
  border: 1px solid var(--color-border);
  border-radius: 14px;
  background: #ffffff;
  box-shadow: 0 16px 34px rgba(12, 40, 66, 0.16);
}

.cookie-bar[hidden] {
  display: none;
}

.cookie-bar-title,
body:not(.admin-body) .cookie-bar-title {
  margin: 0 0 2px;
  max-width: none;
  color: var(--ink, #10233C);
  font-size: 14px;
  line-height: 1.35;
  font-weight: 600;
}

.cookie-bar-body {
  flex: 1 1 auto;
  min-width: 0;
}

.cookie-bar-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: stretch;
  gap: 10px;
}

.cookie-bar-text,
body:not(.admin-body) .cookie-bar-text {
  margin: 0;
  flex: 1 1 auto;
  /* плашка во всю ширину — общий предел строки для абзацев здесь не нужен */
  max-width: none;
  color: var(--muted);
  font-size: 12.5px;
  line-height: 1.4;
}

.cookie-bar-text a {
  color: var(--blue-dark);
  font-weight: 600;
}

.cookie-bar-accept,
.cookie-bar-decline {
  flex: 0 0 auto;
  min-height: 44px;
  padding: 0 18px;
  border-radius: 8px;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 14px;
  line-height: 1.25;
  cursor: pointer;
  transition: transform var(--mo-micro) ease, box-shadow var(--mo-micro) ease, background-color var(--mo-micro) ease;
}

.cookie-bar-accept {
  border: 1px solid var(--kabem-logo-navy, #0c3050);
  background: linear-gradient(180deg, var(--kabem-logo-navy-2, #16456b) 0%, var(--kabem-logo-navy, #0c3050) 100%);
  color: #ffffff;
}

/* Отказ — равнозначный выбор: та же высота и кегль, только вторичный цвет */
.cookie-bar-decline {
  border: 1px solid var(--color-border);
  background: #ffffff;
  color: var(--blue-dark, #0c3050);
}

.cookie-bar-decline:hover {
  border-color: #1870BD;
  background: #F2F7FC;
}

.cookie-bar-accept:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 18px rgba(12, 48, 80, 0.24);
}

@media (max-width: 720px) {
  .cookie-bar {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    right: 12px;
    left: 12px;
    bottom: 12px;
    width: auto;
    padding: 12px 14px;
  }
  .cookie-bar-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  .cookie-bar-accept,
  .cookie-bar-decline {
    width: 100%;
    padding-inline: 10px;
  }

  .cookie-bar-text,
  body:not(.admin-body) .cookie-bar-text {
    font-size: 12px;
    line-height: 1.35;
  }
}

/* Lift banner above the mobile sticky CTA bar when it is visible */
@media (max-width: 720px) {
  body:not(.admin-body) .cookie-bar {
    bottom: max(12px, env(safe-area-inset-bottom));
  }
}

@media (max-width: 767px) {

  body:not(.admin-body).cookie-visible {
    padding-bottom: calc(var(--cookie-bar-height, 0px) + 16px + env(safe-area-inset-bottom));
  }
}

/* ===== Redesign: mobile safety for new blocks ===== */
@media (max-width: 720px) {
  body:not(.admin-body) .hero-highlights {
    grid-template-columns: 1fr;
    gap: 14px;
    margin-top: 24px;
    padding-top: 20px;
  }
}
@media (max-width: 520px) {
  .check-list.check-list--cols {
    grid-template-columns: 1fr;
  }
  .process-flow .process-step .step-badge {
    margin-bottom: 12px;
  }
}

/* ===== Mobile overflow safety: shrinkable grid/flex items + long-word wrapping ===== */
body:not(.admin-body) .hero-copy,
body:not(.admin-body) .hero-visual,
body:not(.admin-body) .about-hero-copy,
body:not(.admin-body) .about-hero-visual,
body:not(.admin-body) .product-hero-grid > * {
  min-width: 0;
}

body:not(.admin-body) .hero-title,
body:not(.admin-body) h1,
body:not(.admin-body) .eyebrow,
body:not(.admin-body) .kicker {
  overflow-wrap: break-word;
  word-break: break-word;
}

body:not(.admin-body) .hero-highlight,
body:not(.admin-body) .hero-highlight > div,
body:not(.admin-body) .contact-line,
body:not(.admin-body) .contact-line-body {
  min-width: 0;
}

body:not(.admin-body) .hero-highlight strong,
body:not(.admin-body) .hero-highlight span,
body:not(.admin-body) .contact-line-body span,
body:not(.admin-body) .contact-line-body a {
  overflow-wrap: break-word;
  word-break: break-word;
}

/* ===== Header: fit 7 nav items (added "Главная") without overlapping logo/actions ===== */
@media (min-width: 920.02px) {
  .header-inner {
    gap: 18px;
  }
  .primary-nav {
    flex: 1;
    justify-content: flex-start;
    gap: 4px;
    font-size: 13.5px;
  }
  .primary-nav a,
  .primary-nav .nav-link {
    padding: 0 8px;
  }
  .header-actions {
    gap: 12px;
  }
}
@media (min-width: 920.02px) and (max-width: 1200px) {
  .header-phone strong {
    font-size: 14px;
  }
  .primary-nav {
    gap: 2px;
    font-size: 13px;
  }
  .primary-nav a,
  .primary-nav .nav-link {
    padding: 0 6px;
  }
}

/* ===== Contacts: two-column hero (copy + contact card) like render ===== */
.contact-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.92fr);
  gap: 40px;
  align-items: start;
}
.contact-hero-copy {
  min-width: 0;
}
body:not(.admin-body) .contact-hero-card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 16px;
}
body:not(.admin-body) .contact-hero-card .contact-line {
  display: flex;
  gap: 14px;
  align-items: center;
  padding: 6px 0;
}
body:not(.admin-body) .contact-hero-card .contact-line + .contact-line {
  border-top: 1px solid var(--color-border);
}
body:not(.admin-body) .contact-hero-card .contact-line > .icon-badge {
  flex: 0 0 40px;
  color: var(--kabem-logo-navy);
}
body:not(.admin-body) .contact-hero-card .contact-line-value {
  min-width: 0;
  color: var(--ink);
  font-weight: 600;
  font-size: 15.5px;
  overflow-wrap: break-word;
}
body:not(.admin-body) .contact-hero-card a.contact-line-value:hover {
  color: var(--blue-dark);
}
.contact-hero-card .btn {
  width: 100%;
  margin-top: 10px;
}
@media (max-width: 860px) {
  .contact-hero-grid {
    grid-template-columns: 1fr;
    gap: 26px;
  }
}

/* ===== About: "Как работаем сегодня" panel ===== */
.about-today-card {
  align-self: start;
}
.about-today-list {
  list-style: none;
  margin: 18px 0 0;
  padding: 0;
  display: grid;
  gap: 16px;
}
.about-today-list li {
  display: flex;
  gap: 13px;
  align-items: center;
  color: var(--ink);
  font-weight: 600;
  line-height: 1.4;
}
.about-today-list li .icon-badge {
  flex: 0 0 40px;
}

/* Contacts hero card: stack note under value on narrow screens */
@media (max-width: 520px) {
  body:not(.admin-body) .contact-hero-card .contact-line {
    flex-wrap: wrap;
  }
  body:not(.admin-body) .contact-hero-card .contact-line-value {
    flex: 1 1 auto;
  }
}

/* ===== Stock (Наличие на складе) ===== */
.stock-public {
  display: grid;
  gap: 18px;
}
.stock-file-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
}
.stock-file-card .icon-badge {
  margin-bottom: 8px;
}
.stock-file-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 14px;
}
.stock-file-note {
  margin-top: 14px;
  color: var(--muted);
  font-size: 14px;
}
.stock-reserve-card {
  margin: 0;
}
.nav-dropdown-stock {
  display: flex;
  align-items: center;
  gap: 8px;
}
.nav-dropdown-tag {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 1px 6px;
}

/* Заголовки: pretty у H2 (не дробит короткие заголовки пополам, убирает
   висячие слова). У H1 с 13.08.2026 balance — он выравнивает длины строк,
   правило живёт в 17-headings.css. */
h1,
h2,
.hero-title,
.section-title,
.section-head h2 {
  text-wrap: pretty;
}

/* ===== Photo hero banner (горизонтальный, текст поверх) ===== */
.page-hero--photo {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 440px;
  padding: 0;
  color: #fff;
  border-bottom: 0;
}
/* Кадрирует фото и Ken Burns обёртка картинки, а не сама секция: у секции
   overflow: hidden срезал бы текст, если он не влезает в первый экран. */
.page-hero--photo picture {
  position: absolute;
  inset: 0;
  display: block;
  overflow: hidden;
}
.page-hero--photo .hero-banner-img,
.page-hero--photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 70% center;
}
.page-hero--photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(11, 31, 63, 0.85) 0%, rgba(11, 31, 63, 0.6) 45%, rgba(11, 31, 63, 0.12) 100%);
}
.page-hero--photo .wrap {
  position: relative;
  z-index: 1;
}
.page-hero--photo .page-hero__content {
  padding: 26px 0;
}
body:not(.admin-body) .page-hero--photo h1 {
  max-width: 720px;
  margin-bottom: 14px;
}
body:not(.admin-body) .page-hero--photo .lead {
  margin-bottom: 22px;
}
body:not(.admin-body) .page-hero--photo h1 {
  color: #fff;
}
body:not(.admin-body) .page-hero--photo .lead {
  color: rgba(255, 255, 255, 0.92);
  max-width: 600px;
}
body:not(.admin-body) .page-hero--photo .eyebrow {
  color: #1870BD;
}
body:not(.admin-body) .page-hero--photo .btn-line {
  border-color: rgba(255, 255, 255, 0.7);
  background: transparent;
  color: #fff;
}
body:not(.admin-body) .page-hero--photo .btn-line:hover {
  background: rgba(255, 255, 255, 0.12);
  border-color: #fff;
  color: #fff;
}
.page-hero--photo--home {
  min-height: 500px;
}
@media (max-width: 920px) {
  .page-hero--photo {
    min-height: 380px;
  }
  .page-hero--photo--home {
    min-height: 400px;
  }
  .page-hero--photo::after {
    background: linear-gradient(180deg, rgba(11, 31, 63, 0.55) 0%, rgba(11, 31, 63, 0.82) 100%);
  }
}

/* ===== Quote form: align & shorten "Файл" and "Что нужно поставить" ===== */
body:not(.admin-body) .quote-grid .file-field,
body:not(.admin-body) .quote-grid .field-message {
  grid-template-rows: auto 1fr;
}
body:not(.admin-body) .quote-grid .file-dropzone {
  height: 100%;
  min-height: 118px;
  padding: 16px;
}
body:not(.admin-body) .quote-grid .field-message textarea {
  height: 100%;
  min-height: 118px;
  resize: vertical;
}
body:not(.admin-body) .quote-grid .quote-file-hint {
  margin-top: 2px;
}

/* ===== Catalog navigator (3 levels) ===== */
/* Level 1 — section tiles */
.catalog-sections-section {
  padding-top: 8px;
  padding-bottom: 8px;
}
.catalog-sections-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}
.catalog-section-tile {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: #fff;
  overflow: hidden;
  box-shadow: var(--premium-shadow-soft);
  transition: transform var(--mo-micro) ease, box-shadow var(--mo-micro) ease;
}
.catalog-section-tile:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 30px rgba(20, 60, 100, 0.14);
}
.catalog-section-media {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--navy-900, #0c2036);
}
.catalog-section-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.catalog-section-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 18px;
}
.catalog-section-body h2 {
  margin: 0;
  font-size: 1.02rem;
  line-height: 1.25;
}
.catalog-section-body p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
  flex: 1 1 auto;
}
.catalog-section-count {
  margin-top: 4px;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--premium-blue-deep, #185f9f);
}

/* Level 2 — subcategory cards */
.catalog-section-intro {
  margin-bottom: 20px;
  color: var(--muted);
  line-height: 1.6;
}
.catalog-subcategory-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.catalog-subcategory-card {
  display: flex;
  gap: 14px;
  align-items: center;
  padding: 14px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: #fff;
  box-shadow: var(--premium-shadow-soft);
  transition: transform var(--mo-micro) ease, border-color var(--mo-micro) ease;
}
.catalog-subcategory-card:hover {
  transform: translateY(-1px);
  border-color: var(--premium-blue, #2477bf);
}
.catalog-subcategory-media {
  flex: 0 0 96px;
  width: 96px;
  height: 72px;
  border-radius: 8px;
  overflow: hidden;
  background: var(--navy-900, #0c2036);
}
.catalog-subcategory-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.catalog-subcategory-body {
  min-width: 0;
}
.catalog-subcategory-body h3 {
  margin: 0 0 4px;
  font-size: 1.05rem;
}
.catalog-subcategory-body p {
  margin: 0;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.4;
}

/* Level 3 — marks list */
body:not(.admin-body) .catalog-main:has(.catalog-request-panel) {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 320px);
  gap: 22px;
  align-items: start;
}
.catalog-marks {
  display: grid;
  gap: 12px;
  min-width: 0;
}
.catalog-mark-group {
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: #fff;
  padding: 16px 18px;
}
.catalog-mark-group-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  cursor: pointer;
  list-style: none;
}
.catalog-mark-group-head::-webkit-details-marker {
  display: none;
}
.catalog-mark-group-label {
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ink);
}
.catalog-mark-group-chip {
  flex: 0 0 auto;
  padding: 3px 10px;
  border-radius: 999px;
  background: #e8f1f8;
  color: var(--blue-dark);
  font-size: 11.5px;
  font-weight: 600;
}
.catalog-mark-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 4px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
  font-size: 15px;
  font-weight: 600;
}
.catalog-mark {
  color: var(--ink);
}
.catalog-mark::after {
  content: "·";
  margin-left: 8px;
  color: var(--muted);
  font-weight: 400;
}
.catalog-mark-row > :last-child::after {
  content: none;
}
.catalog-mark--link {
  color: var(--premium-blue-deep, #185f9f);
  text-decoration: none;
}
.catalog-mark--link:hover {
  text-decoration: underline;
}
.catalog-request-panel {
  position: sticky;
  top: 96px;
  padding: 22px;
  border: 1px solid var(--color-border);
  border-radius: 14px;
  background:
    linear-gradient(180deg, rgba(24, 95, 159, 0.06), rgba(24, 95, 159, 0)) , #fff;
  box-shadow: var(--premium-shadow-soft);
}
.catalog-request-panel h2 {
  margin: 0 0 10px;
  font-size: 1.2rem;
}
.catalog-request-panel p {
  margin: 0 0 16px;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.5;
}
.catalog-request-panel .btn {
  width: 100%;
}

/* Range chips in hero (level 3) */
.catalog-range-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 18px;
}
.range-chip {
  padding: 5px 12px;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  background: #f3f8fb;
  color: var(--blue-dark);
  font-size: 13px;
  font-weight: 600;
}

/* Search results list */
.catalog-main--full {
  grid-column: 1 / -1;
}
.catalog-search-list {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
  display: grid;
  gap: 8px;
}
.catalog-search-list li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}
.catalog-search-cat {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 13px;
}

@media (max-width: 900px) {
  .catalog-sections-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  body:not(.admin-body) .catalog-main:has(.catalog-request-panel) {
    grid-template-columns: 1fr;
  }
  .catalog-request-panel {
    position: static;
  }
}
@media (max-width: 560px) {
  .catalog-sections-grid,
  .catalog-subcategory-grid {
    grid-template-columns: 1fr;
  }
}

/* ===== Delivery map figure ===== */
.delivery-map-figure {
  border: 1px solid var(--color-border);
  border-radius: 16px;
  overflow: hidden;
  background: #eef4fb;
  box-shadow: var(--premium-shadow-soft);
}
.delivery-map-image {
  display: block;
  width: 100%;
  height: auto;
}

/* ===== Fix: .panel-accent renders LIGHT in premium theme — keep its text dark/readable ===== */
body:not(.admin-body) .panel-accent {
  color: var(--premium-ink, #10233C);
}
body:not(.admin-body) .panel-accent p,
body:not(.admin-body) .panel-accent li,
body:not(.admin-body) .panel-accent small,
body:not(.admin-body) .panel-accent dd {
  color: var(--muted);
}
body:not(.admin-body) .panel-accent .kicker,
body:not(.admin-body) .panel-accent .eyebrow {
  color: var(--premium-blue-deep, #185f9f);
}

/* ===== Шрифтовая система: Inter на весь сайт (моно, иерархия весами 400/500/600) ===== */
body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Inter-моносистема: иерархия держится на весе 600↔400 и отрицательном трекинге заголовков */
h1,
h2,
.hero-title,
.section-title,
.section-head h2,
.page-hero h1,
.about-timeline h2 {
  font-family: var(--font-heading);
  font-weight: 600;
  line-height: 1.18;
}
h1,
.hero-title,
.page-hero h1 {
  line-height: 1.12;
}

/* Мелкие «карточные» h2 — технические/навигационные */
.catalog-section-body h2,
.footer-block h2,
.scroll-popup-title {
  font-family: var(--font-heading);
  font-weight: 600;
}
.catalog-section-body h2 {
  line-height: 1.25;
}

/* Технические марки и чипы каталога — всегда гротеск, tabular-nums */
.catalog-mark,
.catalog-mark--link,
.range-chip,
.catalog-mark-group-chip,
.hero-highlight strong,
.spec-list,
.contact-requisites-grid {
  font-family: var(--font-body);
  font-variant-numeric: tabular-nums;
}

@media (max-width: 640px) {
  h1,
  .page-hero h1 {
    line-height: 1.2;
  }
}

/* Force smaller catalog tile titles (override any responsive h2 clamp) */
.catalog-sections-grid .catalog-section-tile .catalog-section-body h2 {
  font-size: 1.05rem;
  line-height: 1.28;
}
.catalog-subcategory-card .catalog-subcategory-body h3 {
  font-size: 1rem;
}

/* .prose-intro: на общую сетку (полная ширина .wrap), мера строки остаётся читаемой */
.wrap.prose-page.prose-intro {
  max-width: none;
}
.prose-intro h2,
.prose-intro p {
  max-width: none;
}

/* Карточки подгрупп в каталоге больше не ссылки: обычный курсор, без hover-подъёма */
.catalog-subcategory-card { cursor: default; }
div.catalog-subcategory-card:hover { transform: none; box-shadow: none; border-color: var(--color-border-hover); }

/* ============================================================
   Каталог (промпт 19.08.2026): hero со схемой поставки, сетка с
   доминирующей карточкой кабеля, диалоги направлений, блоки
   экспертизы, шагов, цены и перелинковки.
   ============================================================ */

/* ===== Hero ===== */

/* Линию под первым экраном сняли вместе со схемой (просьба 21.08.2026) */
/* Описание под «Направлениями поставки» снято 24.08.2026: заголовок остался
   последним, отступ под ним и зазор до сетки поднимаем. */
body:not(.admin-body).pages.catalog .catalog-directions .section-head h2:last-child { margin-bottom: 0; }
body:not(.admin-body).pages.catalog .catalog-directions .section-head { margin-bottom: 20px; }

/* Первый экран компактный (просьба 26.08.2026): вместе с шапкой, крошками
   и головкой секции первый ряд направлений влезает в экран без обрезки. */
/* Высоту первого экрана задаёт содержимое: после снятия подписи под лидом
   min-height оставлял под текстом 91px пустоты (просьба 31.08.2026) */
body:not(.admin-body).pages.catalog .catalog-hero {
  border-bottom: 0;
  min-height: 0;
}

body:not(.admin-body).pages.catalog .catalog-hero-copy h1 { margin: 0; }

/* Зазор h1 → лид как на «О компании» — 8px (просьба 24.08.2026). Общее
   правило первой секции в 09-design-system.css задаёт 20px вместе с кеглем
   лида, поэтому перебиваем только отступ, кегль оставляем общий. */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body).pages.catalog .catalog-hero-copy .lead {
  margin: 8px 0 8px;
  /* Во всю колонку: при 620px лид шёл третьей строкой и ряд карточек
     не влезал в экран (просьба 26.08.2026) */
  max-width: none;
}

body:not(.admin-body).pages.catalog .catalog-hero-note,
body:not(.admin-body).pages.catalog .catalog-hero-support {
  margin: 0 0 8px;
  max-width: 620px;
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
  color: #5C6E84;
}

/* ===== Сетка направлений ===== */

body:not(.admin-body).pages.catalog .catalog-directions { background: var(--color-bg-soft); }

/* Два ряда по четыре (просьба 26.08.2026): первый — Кабель, низковольтное,
   электрощитовое и кабеленесущие; остальные направления вторым рядом.
   Кнопка «Показать все» снята вместе со скрытием хвоста. */
body:not(.admin-body).pages.catalog .catalog-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  /* Ряды равные: все восемь карточек одного размера (просьба 26.08.2026) */
  grid-auto-rows: 1fr;
  gap: 16px;
}

body:not(.admin-body).pages.catalog .catalog-card {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  padding: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: var(--color-bg);
  color: inherit;
  font: inherit;
  text-align: left;
  text-decoration: none;
  overflow: hidden;
  transition: transform var(--mo-hover) var(--mo-ease), border-color var(--mo-hover) var(--mo-ease), box-shadow var(--mo-hover) var(--mo-ease);
}

body:not(.admin-body).pages.catalog .catalog-card--dialog { cursor: pointer; }

body:not(.admin-body).pages.catalog .catalog-card:focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* 2/1 вместо 16/9: первый ряд направлений должен помещаться в экран
   ноутбука при открытии страницы (просьба 26.08.2026) */
/* Тон фона под ленивым фото: до загрузки левая треть карточки была
   белой и выглядела недогруженной (мобильный аудит 26.08.2026) */
body:not(.admin-body).pages.catalog .catalog-card__media { overflow: hidden; aspect-ratio: 2 / 1; background: var(--color-bg-soft); }

body:not(.admin-body).pages.catalog .catalog-card__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--mo-expand) var(--mo-ease);
}

body:not(.admin-body).pages.catalog .catalog-card__content {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 16px 16px 14px;
  flex: 1 1 auto;
}

body:not(.admin-body).pages.catalog .catalog-card__title {
  margin: 0;
  font-size: 21px;
  line-height: 1.22;
  font-weight: var(--fw-bold);
  color: var(--color-text);
}

body:not(.admin-body).pages.catalog .catalog-card__description {
  margin: 0;
  font-size: 14px;
  line-height: 1.45;
  color: #5C6E84;
}

body:not(.admin-body).pages.catalog .catalog-card__foot {
  /* Счётчик справа от «Подробнее» (просьба 26.08.2026): в карточках 308px
     строка влезает — столбик остался от узкой семиколоночной сетки */
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  /* Ряды сетки выравниваются по низу (аудит каталога, р. 3) */
  margin-top: auto;
  padding-top: 14px;
}

/* На телефоне в карточку 200px строка «Подробнее · 12 типов продукции»
   не влезала и обрезалась краем без многоточия: счётчик уходит на свою
   строку под ссылку (мобильный аудит 26.08.2026) */
@media (max-width: 767px) {
  body:not(.admin-body).pages.catalog .catalog-card__foot {
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 4px 12px;
  }

  body:not(.admin-body).pages.catalog .catalog-card__count {
    flex-basis: 100%;
  }
}

body:not(.admin-body).pages.catalog .catalog-card__more {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: var(--fw-bold);
  color: #1870BD;
  line-height: 1.4;
}

body:not(.admin-body).pages.catalog .catalog-card__plus {
  width: 16px;
  height: 16px;
  background: currentColor;
  transition: transform var(--mo-hover) var(--mo-ease);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") no-repeat center / contain;
}

body:not(.admin-body).pages.catalog .catalog-card__count {
  /* Было 13px цветом #7C8CA0 — контраст 3,43 при норме 4,5. Кегль 14 и
     вспомогательный цвет сайта дают 5,23 (аудит каталога, р. 8) */
  font-size: 14px;
  line-height: 1.45;
  color: #5C6E84;
  white-space: nowrap;
}

/* Кабель: две колонки сетки, тёмная заливка, больше контента */
body:not(.admin-body).pages.catalog .catalog-card--featured {
  flex-direction: column;
  align-items: stretch;
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-bg);
}

/* Снимок кабеля того же формата 16/9, что у остальных (26.08.2026) */
body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__media {
  flex: 0 0 auto;
}

body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__content {
  flex: 1 1 58%;
  /* Название с плашкой прижаты к снимку, свободный воздух уходит вниз
     (просьба 26.08.2026 «подними чуть выше») */
  justify-content: flex-start;
  gap: 8px;
  padding: 16px 16px 14px;
}

body:not(.admin-body).pages.catalog .catalog-card__titlerow {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 10px;
}

/* Плашка у правого края карточки (просьба 26.08.2026 «сдвинуть правее») */
body:not(.admin-body).pages.catalog .catalog-card__titlerow .catalog-card__badge {
  margin-left: auto;
}

body:not(.admin-body).pages.catalog .catalog-card__badge {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  /* Компактнее общего надзаголовка: плашка стоит справа от «Кабель» в одну
     строку (правило 26.08.2026), при 13px она не влезала в карточку */
  padding: 2px 9px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.12);
  color: #BFDCF6;
  font-size: 11px;
  font-weight: var(--fw-bold);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

/* Плашка «Ключевое направление» — самый мелкий содержательный текст на
   сайте (11px). На телефоне она уходит на свою строку и читается 13px:
   рядом с «Кабель» в одну строку 13px действительно не влезали
   (мобильный аудит 26.08.2026) */
@media (max-width: 767px) {
  body:not(.admin-body).pages.catalog .catalog-card__titlerow {
    flex-direction: column;
    align-items: flex-start;
  }

  body:not(.admin-body).pages.catalog .catalog-card__titlerow .catalog-card__badge {
    margin-left: 0;
    max-width: 100%;
    font-size: 13px;
    min-height: 24px;
    white-space: normal;
  }
}

body:not(.admin-body).pages.catalog.catalog.catalog.catalog.catalog .catalog-directions .section-head {
  margin-bottom: 16px;
}

/* H2 секций — по принятой таблице 24/30/−0.3: страница оставалась на
   26/31.2 (аудит 26.08, п. 2.1) */
body:not(.admin-body).pages.catalog.catalog.catalog.catalog.catalog .section-head h2,
body:not(.admin-body).pages.catalog.catalog.catalog.catalog.catalog .catalog-expertise-copy h2 {
  font-size: 24px;
  line-height: 30px;
  letter-spacing: var(--ls-h2);
}

/* Названия направлений всегда одной строкой (правило 26.08.2026):
   при табличных 17px «Трубы и системы защиты кабеля» и «Датчики и
   оборудование КИПиА» рвались надвое — карточкам оставлен 16px.
   Пять :not() — перебить h3. */
body:not(.admin-body).pages.catalog:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .catalog-card .catalog-card__title {
  font-size: 16px;
  line-height: 20px;
  /* Строка названия у кабеля 22px из-за плашки — тот же минимум всем,
     чтобы описания стартовали с одной линии */
  min-height: 22px;
  display: inline-flex;
  align-items: center;
}

body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__title { color: var(--color-bg); }
body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__description { color: rgba(255, 255, 255, 0.86); font-size: var(--fs-caption); }

/* Текстовая строка в ритме «Подробнее» у соседей: белая плашка-кнопка
   добавляла ~30px высоты, и карточка кабеля не совпадала с остальными
   (просьба 26.08.2026 «все блоки одинакового размера») */
body:not(.admin-body).pages.catalog .catalog-card__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  align-self: flex-start;
  margin-top: auto;
  padding-top: 14px;
  color: #BFDCF6;
  font-size: 15px;
  font-weight: var(--fw-bold);
  line-height: 1.4;
}

body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__meta {
  font-size: var(--fs-overline);
  color: rgba(255, 255, 255, 0.6);
}

/* Тонкая линия пробегает вдоль низа кабельной карточки при появлении */
body:not(.admin-body).pages.catalog .catalog-card--featured::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  background: linear-gradient(90deg, #1870BD, #BFDCF6);
  transform: scaleX(0);
  transform-origin: left center;
}

@media (prefers-reduced-motion: no-preference) {
  html.motion-ready body:not(.admin-body).pages.catalog .catalog-card--featured.is-revealed::after {
    transform: scaleX(1);
    transition: transform 900ms var(--mo-ease) 120ms;
  }
}

@media (hover: hover) and (pointer: fine) {
  body:not(.admin-body).pages.catalog .catalog-card:hover {
    transform: translateY(-3px);
    border-color: var(--color-border-hover);
    box-shadow: var(--shadow-card);
  }
  body:not(.admin-body).pages.catalog .catalog-card--featured:hover { border-color: #1870BD; }
  body:not(.admin-body).pages.catalog .catalog-card:hover .catalog-card__image { transform: scale(1.02); }
  body:not(.admin-body).pages.catalog .catalog-card:hover .catalog-card__plus { transform: rotate(90deg); }
  body:not(.admin-body).pages.catalog .catalog-card--featured:hover .btn-arrow { transform: translateX(4px); }
}

/* ===== Диалог направления ===== */

body:not(.admin-body).pages.catalog .catalog-dialog {
  width: min(760px, calc(100vw - 48px));
  /* Верх окна всегда на одной высоте: при центрировании короткая группа
     открывалась ниже длинной и уровень «прыгал» (просьба 31.08.2026) */
  margin-block: 72px auto;
  max-height: min(660px, calc(100dvh - 96px));
  padding: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: var(--color-bg);
  box-shadow: 0 24px 60px rgba(9, 25, 44, 0.22);
  overflow: hidden;
}

body:not(.admin-body).pages.catalog .catalog-dialog::backdrop { background: rgba(9, 25, 44, 0.48); }

body:not(.admin-body).pages.catalog .catalog-dialog__head {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) var(--tap-min);
  align-items: center;
  gap: 14px;
  padding: 16px var(--pad-panel);
  border-bottom: 1px solid var(--color-border);
}

body:not(.admin-body).pages.catalog .catalog-dialog__ico {
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  border-radius: var(--radius-control);
  background: #EAF2FB;
  position: relative;
  overflow: hidden;
}

/* Снимок направления заполняет кружок целиком; пока картинки нет,
   под ней остаётся значок-маска ниже */
body:not(.admin-body).pages.catalog .catalog-dialog__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

body:not(.admin-body).pages.catalog .catalog-dialog__ico::before {
  content: "";
  position: absolute;
  inset: 10px;
  background: #1870BD;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M9 4v16'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M9 4v16'/%3E%3C/svg%3E") no-repeat center / contain;
}

body:not(.admin-body).pages.catalog .catalog-dialog__title {
  margin: 0;
  font-size: 22px;
  line-height: 1.25;
  font-weight: var(--fw-bold);
  color: var(--color-text);
}

body:not(.admin-body).pages.catalog .catalog-dialog__close {
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  box-sizing: border-box;
  border: 0;
  border-radius: var(--radius-control);
  background: transparent;
  cursor: pointer;
  position: relative;
}

body:not(.admin-body).pages.catalog .catalog-dialog__close::before {
  content: "";
  position: absolute;
  inset: 0;
  background: #10233C;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='m6 6 12 12M18 6 6 18'/%3E%3C/svg%3E") no-repeat center / 18px;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='m6 6 12 12M18 6 6 18'/%3E%3C/svg%3E") no-repeat center / 18px;
}

body:not(.admin-body).pages.catalog .catalog-dialog__close:hover { background: #EAF2FB; }
body:not(.admin-body).pages.catalog .catalog-dialog__close:focus-visible { outline: none; box-shadow: var(--focus-ring); }

body:not(.admin-body).pages.catalog .catalog-dialog__body {
  padding: var(--pad-panel);
  overflow-y: auto;
  overscroll-behavior: contain;
  max-height: min(440px, calc(100vh - 260px));
}

/* Резервное раскрытие направления в браузерах без <dialog>: то же содержимое
   разворачивается прямо в сетке под карточкой (страницы направления нет) */
body:not(.admin-body).pages.catalog .catalog-inline {
  grid-column: 1 / -1;
  padding: 18px 22px;
  border: 1px solid var(--color-border);
  border-radius: 14px;
  background: #fff;
}

body:not(.admin-body).pages.catalog .catalog-dialog__summary {
  margin: 0 0 8px;
  font-size: var(--fs-body);
  line-height: var(--lh-compact);
  color: var(--color-text);
}

body:not(.admin-body).pages.catalog .catalog-dialog__text {
  margin: 0 0 12px;
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
  color: var(--color-text-muted);
}

body:not(.admin-body).pages.catalog .catalog-dialog__block {
  margin: 16px 0 8px;
  font-size: var(--fs-overline);
  line-height: 18px;
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-overline);
  text-transform: uppercase;
  color: #1870BD;
}

body:not(.admin-body).pages.catalog .catalog-dialog__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 16px;
}

body:not(.admin-body).pages.catalog .catalog-dialog__list li {
  padding: 7px 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-chip);
  background: var(--color-bg-soft);
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
  color: var(--color-text);
}

body:not(.admin-body).pages.catalog .catalog-dialog__advantages {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px 16px;
}

body:not(.admin-body).pages.catalog .catalog-dialog__advantages li {
  position: relative;
  padding-left: 24px;
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
  color: var(--color-text-muted);
}

body:not(.admin-body).pages.catalog .catalog-dialog__advantages li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 5px;
  width: 15px;
  height: 15px;
  background: #1870BD;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3'%3E%3Cpath d='m5 13 4 4 10-10'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3'%3E%3Cpath d='m5 13 4 4 10-10'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Развёрнутое описание направления (тексты 26.08.2026): подгруппы идут
   названием и пояснением, поэтому список в одну колонку — в две пояснение
   ужималось бы до нечитаемой ширины. */
body:not(.admin-body).pages.catalog .catalog-dialog__list--detailed {
  grid-template-columns: minmax(0, 1fr);
  gap: 8px;
}

body:not(.admin-body).pages.catalog .catalog-dialog__list--detailed li {
  /* Карточный отступ и радиус управления: 12/14 и радиус 8 были вне
     системы (аудит 26.08, п. 4.1) */
  padding: var(--pad-card);
  border-radius: var(--radius-control);
}

body:not(.admin-body).pages.catalog .catalog-dialog__item-name {
  display: block;
  margin-bottom: 2px;
  font-weight: var(--fw-bold);
  color: var(--color-text);
}

body:not(.admin-body).pages.catalog .catalog-dialog__item-text {
  display: block;
  color: var(--color-text-muted);
}

/* Не сетка, а колоночный поток: в сетке пункт из двух строк растягивал
   строку целиком и рядом с соседом появлялась дыра (26.08.2026). */
body:not(.admin-body).pages.catalog .catalog-dialog__applications {
  list-style: none;
  margin: 0;
  padding: 0;
  columns: 2;
  column-gap: 16px;
}

body:not(.admin-body).pages.catalog .catalog-dialog__applications li {
  break-inside: avoid;
  margin-bottom: 4px;
}

body:not(.admin-body).pages.catalog .catalog-dialog__applications li {
  position: relative;
  padding-left: 14px;
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
  color: var(--color-text-muted);
}

body:not(.admin-body).pages.catalog .catalog-dialog__applications li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 8px;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #1870BD;
}

/* Завершающий абзац шёл вплотную к последнему пункту списка. Отступ тот же,
   что у заголовка блока после списка, — вертикальный ритм один. */
/* Вводная фраза перед списком — часть блока: до списка те же 8px, что и
   от заголовка блока, а не 12 как между абзацами. */
body:not(.admin-body).pages.catalog .catalog-dialog__text:has(+ .catalog-dialog__applications) {
  margin-bottom: 8px;
}

/* Нижнее поле тела задаёт сам контейнер: хвостовой отступ последнего
   элемента давал лишние 12px в окнах, кончающихся абзацем. */
body:not(.admin-body).pages.catalog .catalog-dialog__body > *:last-child {
  margin-bottom: 0;
}

body:not(.admin-body).pages.catalog .catalog-dialog__advantages + .catalog-dialog__text,
body:not(.admin-body).pages.catalog .catalog-dialog__applications + .catalog-dialog__text,
body:not(.admin-body).pages.catalog .catalog-dialog__list + .catalog-dialog__text {
  margin-top: 16px;
}

body:not(.admin-body).pages.catalog .catalog-dialog__advantages--detailed {
  grid-template-columns: minmax(0, 1fr);
  gap: 10px;
}

body:not(.admin-body).pages.catalog .catalog-dialog__foot {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  padding: 14px 22px;
  border-top: 1px solid var(--color-border);
  background: var(--color-bg);
}

@media (prefers-reduced-motion: no-preference) {
  body:not(.admin-body).pages.catalog .catalog-dialog[open] {
    animation: catalog-dialog-in 200ms var(--mo-ease) both;
  }
  body:not(.admin-body).pages.catalog .catalog-dialog[open]::backdrop {
    animation: catalog-backdrop-in 200ms var(--mo-ease) both;
  }
}

@keyframes catalog-dialog-in {
  from { opacity: 0; transform: translateY(14px) scale(0.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes catalog-backdrop-in { from { opacity: 0; } to { opacity: 1; } }

/* ===== Экспертиза ===== */

/* ===== Шаги ===== */

body:not(.admin-body).pages.catalog .catalog-flow { background: var(--color-bg-soft); }

body:not(.admin-body).pages.catalog .catalog-flow-wrap { position: relative; }

body:not(.admin-body).pages.catalog .catalog-flow-line {
  position: absolute;
  left: 24px;
  right: 24px;
  top: 22px;
  height: 2px;
  background: #DCE7F1;
  border-radius: 2px;
  overflow: hidden;
}

body:not(.admin-body).pages.catalog .catalog-flow-fill {
  display: block;
  height: 100%;
  background: #1870BD;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 850ms var(--mo-ease);
}

body:not(.admin-body).pages.catalog .catalog-flow.is-revealed .catalog-flow-fill { transform: scaleX(1); }

body:not(.admin-body).pages.catalog .catalog-flow-steps {
  position: relative;
  z-index: 1;
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}

body:not(.admin-body).pages.catalog .catalog-flow-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 1px solid var(--color-border);
  background: var(--color-bg);
  color: #1870BD;
  font-size: var(--fs-caption);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
}

body:not(.admin-body).pages.catalog .catalog-flow-step h3 {
  margin: 14px 0 8px;
  font-size: 20px;
  line-height: 1.25;
}

body:not(.admin-body).pages.catalog .catalog-flow-step p {
  margin: 0;
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
  color: #5C6E84;
}

/* ===== Перелинковка ===== */

body:not(.admin-body).pages.catalog .catalog-links-row {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

body:not(.admin-body).pages.catalog .catalog-link-row {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 64px;
  padding: var(--pad-card);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  background: var(--color-bg);
  color: #5C6E84;
  font-size: var(--fs-caption);
  text-decoration: none;
  transition: border-color var(--mo-hover) ease, background-color var(--mo-hover) ease;
}

body:not(.admin-body).pages.catalog .catalog-link-row__to {
  margin-left: auto;
  color: var(--color-text);
  font-weight: var(--fw-bold);
  white-space: nowrap;
}

body:not(.admin-body).pages.catalog .catalog-link-row:hover {
  border-color: var(--color-border-hover);
  background: var(--color-bg-soft);
}

/* ===== Финальный призыв ===== */

/* ===== Финальный призыв «Есть спецификация?» — единый формат по образцу
   «Каталога» (решение 26.08.2026). Партиал shared/_spec_cta. ===== */
body:not(.admin-body) main .final-band {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 48px;
  align-items: center;
  /* Паддинг панели по токену: 15/40 был самой заметной асимметрией сайта
     (аудит 26.08, п. 3) */
  padding: var(--pad-panel);
  border-radius: var(--radius-card);
  background: var(--color-primary);
}

/* Заголовок панели, не секции: табличные 20/25/−0.24 (аудит 26.08, п. 3) */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .final-band h2 {
  font-size: 20px;
  line-height: 25px;
  letter-spacing: -0.012em;
}

/* Надзаголовок на тёмной полосе светлый: общее правило киккеров красит их
   в синий, на синем фоне он пропадал (просьба 26.08.2026). Шесть :not() —
   чтобы перебить цвет из 09-design-system. */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .final-kicker { color: #BFDCF6; margin-bottom: 8px; }
body:not(.admin-body) main .final-copy h2 { margin: 0 0 10px; color: var(--color-bg); }

body:not(.admin-body) main .final-copy p {
  margin: 0;
  font-size: 15px;
  line-height: 1.4;
  color: rgba(255, 255, 255, 0.82);
}

body:not(.admin-body) main .final-btn {
  background: var(--color-bg);
  color: var(--color-primary);
  border-color: var(--color-bg);
}

body:not(.admin-body) main .final-btn:hover { background: #EAF2FB; border-color: #EAF2FB; color: var(--color-primary); }

body:not(.admin-body) main .final-note { margin-top: 12px; }

body:not(.admin-body) main .final-mail-note {
  margin: 0;
  font-size: 14px;
  /* 21, не 20,3: 14 → 21 по общей таблице интервалов */
  line-height: 21px;
  color: var(--color-text-muted);
}

@media (max-width: 767px) {
  /* minmax(0, …): кнопка с nowrap растягивала колонку шире панели */
  body:not(.admin-body) main .final-band { grid-template-columns: minmax(0, 1fr); padding: 24px 20px; gap: 20px; }
  body:not(.admin-body) main .final-btn { width: 100%; justify-content: center; }
}

@media (max-width: 360px) {
  body:not(.admin-body) main .final-band { padding-inline: 16px; }
}

/* ===== Планшет и мобильный ===== */

/* 1200–1299: четыре колонки дают строку названия уже 263px, и «Трубы…»
   с «Датчиками…» переносились — переносов в каталоге быть не должно
   (правило 26.08.2026), поэтому здесь три колонки */
@media (max-width: 1299px) {
  body:not(.admin-body).pages.catalog .catalog-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 1199px) {
  body:not(.admin-body).pages.catalog .catalog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  /* На двух колонках ключевая идёт лежачей: колонкой её снимок раздувался
     до полуэкрана. Текст слева, снимок справа — как на рендере. */
  body:not(.admin-body).pages.catalog .catalog-card--featured { grid-column: span 2; flex-direction: row-reverse; }
  body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__media { flex: 0 0 42%; aspect-ratio: auto; }
  body:not(.admin-body).pages.catalog .catalog-flow-steps { grid-template-columns: 1fr; gap: 28px; }
  body:not(.admin-body).pages.catalog .catalog-flow-line { display: none; }
  body:not(.admin-body).pages.catalog .catalog-links-row { grid-template-columns: 1fr; }
}

@media (max-width: 1023px) {
  body:not(.admin-body).pages.catalog .catalog-dialog { width: calc(100vw - 40px); }
}

@media (max-width: 767px) {
  /* auto вместо 1fr: в одной колонке равнение рядов на карточку кабеля
     раздувало каждую строку до 280px при контенте 46px (26.08.2026) */
  body:not(.admin-body).pages.catalog .catalog-grid { grid-template-columns: 1fr; grid-auto-rows: auto; gap: 10px; }

  /* Мобильный каталог по рендеру 26.08.2026: обычные направления —
     строка «снимок · название · счётчик · шеврон», описание и подпись
     действия остаются только в диалоге. */
  body:not(.admin-body).pages.catalog .catalog-card:not(.catalog-card--featured) {
    display: grid;
    grid-template-columns: 90px minmax(0, 1fr) 18px;
    align-items: center;
    /* Между снимком и текстом 18px: в 12px текст читался как продолжение
       картинки (просьба 14.09.2026) */
    gap: 12px 18px;
    padding: 10px;
    /* Одна высота у одно- и двухстрочных названий */
    min-height: 91px;
  }

  body:not(.admin-body).pages.catalog .catalog-card:not(.catalog-card--featured) .catalog-card__media {
    width: 90px;
    height: 64px;
    border-radius: 10px;
    overflow: hidden;
  }

  body:not(.admin-body).pages.catalog .catalog-card:not(.catalog-card--featured) .catalog-card__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  body:not(.admin-body).pages.catalog .catalog-card:not(.catalog-card--featured) .catalog-card__content {
    padding: 0;
    gap: 4px;
  }

  /* Описания карточек на телефоне были скрыты: посетитель видел «9 типов
     продукции» без сути и без «Подробнее» (аудит 26.08.2026, п. 16).
     Возвращаем и текст, и анкор — прятать содержание не нужно */
  body:not(.admin-body).pages.catalog .catalog-card:not(.catalog-card--featured) .catalog-card__description {
    display: block;
    font-size: 14px;
    line-height: 1.45;
  }

  body:not(.admin-body).pages.catalog .catalog-card:not(.catalog-card--featured) .catalog-card__foot {
    margin: 0;
    padding: 0;
    border: 0;
  }

  body:not(.admin-body).pages.catalog .catalog-card:not(.catalog-card--featured)::after {
    content: "";
    width: 18px;
    height: 18px;
    background: #5C6E84;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E") center / contain no-repeat;
  }
  body:not(.admin-body).pages.catalog .catalog-card--featured { grid-column: auto; }
  body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__content { padding: 16px; }

  /* Ключевое направление по рендеру 26.08.2026: текст слева, снимок
     справа, плашка отдельной строкой под названием, действие — рамочная
     кнопка. */
  body:not(.admin-body).pages.catalog .catalog-card--featured {
    flex-direction: row-reverse;
  }

  /* 36, не 42: плашке «Ключевое направление» в одну строку нужно 182px,
     при 42% колонка текста распиралась, и в row-reverse текст уезжал
     за левый край карточки на 8px (390px, аудит 16.09.2026) */
  body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__media {
    flex: 0 0 36%;
  }

  body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__content {
    min-width: 0;
  }

  body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__titlerow {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }

  body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__titlerow .catalog-card__badge {
    margin-left: 0;
  }

  body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__cta {
    align-self: flex-start;
    min-height: 44px;
    margin-top: 10px;
    padding: 0 16px;
    border: 1px solid rgba(255, 255, 255, 0.55);
    border-radius: var(--radius-control);
  }
  /* Лист открывается всегда на одной высоте: он был прижат к низу, и
     короткая группа начиналась ниже длинной (просьба 31.08.2026) */
  body:not(.admin-body).pages.catalog .catalog-dialog {
    width: 100%;
    max-width: none;
    height: calc(100dvh - 72px);
    max-height: calc(100dvh - 72px);
    margin: 72px auto 0;
    border-radius: var(--radius-card) var(--radius-card) 0 0;
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }
  body:not(.admin-body).pages.catalog .catalog-dialog__list { grid-template-columns: 1fr; }
  body:not(.admin-body).pages.catalog .catalog-dialog__applications { columns: 1; }
  body:not(.admin-body).pages.catalog .catalog-dialog__foot .btn { width: 100%; justify-content: center; }

  /* Плашка «Ключевое направление» — в одну строку (просьба 14.09.2026).
     В 13px она не влезала в текстовую колонку карточки и рвалась пополам,
     поэтому здесь возвращаются десктопные 11px */
  body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__titlerow .catalog-card__badge {
    font-size: 11px;
    white-space: nowrap;
  }
}

/* Узкие телефоны: у ключевого направления снимок уходит наверх — рядом
   с ним плашке и кнопке не хватало ширины; у остальных снимок меньше,
   чтобы «Электрощитовое» помещалось в колонку (аудит 16.09.2026, 320px) */
@media (max-width: 360px) {
  body:not(.admin-body).pages.catalog .catalog-card--featured {
    flex-direction: column;
  }

  body:not(.admin-body).pages.catalog .catalog-card--featured .catalog-card__media {
    flex: 0 0 auto;
    aspect-ratio: 2 / 1;
  }

  body:not(.admin-body).pages.catalog .catalog-card:not(.catalog-card--featured) {
    grid-template-columns: 64px minmax(0, 1fr) 18px;
    gap: 12px;
  }

  body:not(.admin-body).pages.catalog .catalog-card:not(.catalog-card--featured) .catalog-card__media {
    width: 64px;
    height: 48px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body:not(.admin-body).pages.catalog .catalog-card,
  body:not(.admin-body).pages.catalog .catalog-card__image,
  body:not(.admin-body).pages.catalog .catalog-dialog[open] {
    transition: none;
    animation: none;
    transform: none;
    opacity: 1;
  }
  body:not(.admin-body).pages.catalog .catalog-flow-fill { transition: none; transform: scaleX(1); }
  body:not(.admin-body).pages.catalog .catalog-card--featured::after { transform: scaleX(1); }
}

/* Первый экран каталога: тот же спокойный каскад, что на «Контактах» и
   «Наличии» — заголовок, лид, подсказка, кнопки
   (просьба 19.08.2026: у H1 каталога не было движения). */
@media (prefers-reduced-motion: no-preference) {
  html.motion-ready body:not(.admin-body).pages.catalog .catalog-hero-copy h1 {
    animation: mo-rise-12 var(--mo-reveal) var(--mo-ease) both;
  }
  html.motion-ready body:not(.admin-body).pages.catalog .catalog-hero-copy .lead {
    animation: mo-rise-12 var(--mo-reveal) var(--mo-ease) 80ms both;
  }
  html.motion-ready body:not(.admin-body).pages.catalog .catalog-hero-support {
    animation: mo-rise-12 var(--mo-reveal) var(--mo-ease) var(--mo-micro) both;
  }
}

/* ============================================================
   Хаб кабельной ветки /catalog/kabel: базовые правила карточек групп и
   таблицы обозначений. Раскладку хаба по макету 11.09.2026 задаёт
   30-cable-landing.css; тело страницы — body.pages.product.
   ============================================================ */

/* ===== Группы ===== */

body:not(.admin-body) .cbl-groups .section-head { margin-bottom: 22px; }
body:not(.admin-body) .cbl-groups .section-head p { max-width: none; }

body:not(.admin-body) .cbl-groups-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 16px;
}

body:not(.admin-body) .cbl-group-card {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: #ffffff;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: transform var(--mo-hover) var(--mo-ease), border-color var(--mo-hover) var(--mo-ease), box-shadow var(--mo-hover) var(--mo-ease);
}

@media (hover: hover) {
  body:not(.admin-body) .cbl-group-card:hover {
    transform: translateY(-3px);
    border-color: var(--color-border);
    box-shadow: 0 10px 24px rgba(16, 35, 60, 0.08);
  }
  body:not(.admin-body) .cbl-group-card:hover .cbl-group-img { transform: scale(1.02); }
  body:not(.admin-body) .cbl-group-card:hover .cbl-group-link { color: #125E9F; }
}

body:not(.admin-body) .cbl-group-media {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: #0B1F3F;
}

body:not(.admin-body) .cbl-group-media picture { display: block; height: 100%; }

body:not(.admin-body) .cbl-group-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--mo-reveal) var(--mo-ease);
}

body:not(.admin-body) .cbl-group-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 8px;
  padding: 16px 18px 18px;
}

body:not(.admin-body) .cbl-group-body h3 {
  margin: 0;
  font-size: 17px;
  line-height: 1.25;
}

body:not(.admin-body) .cbl-group-body p {
  margin: 0;
  font-size: 14px;
  line-height: var(--lh-compact);
  color: #5C6E84;
}

body:not(.admin-body) .cbl-group-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: auto;
  padding-top: 6px;
  font-size: 14px;
  font-weight: 600;
  color: #1870BD;
}

/* ===== Первый экран: спокойный каскад появления ===== */

@media (prefers-reduced-motion: no-preference) {
  html.motion-ready body:not(.admin-body) .cbl-hero-eyebrow {
    animation: mo-rise-12 var(--mo-reveal) var(--mo-ease) both;
  }
  html.motion-ready body:not(.admin-body) .cbl-hero-panel h1 {
    animation: mo-rise-12 var(--mo-reveal) var(--mo-ease) 60ms both;
  }
}

/* ===== Планшет и мобильный ===== */

@media (max-width: 1279px) {
  body:not(.admin-body) .cbl-groups-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
  body:not(.admin-body) .cbl-groups-grid { grid-template-columns: 1fr; }
}

/* ===== Марки в карточке группы и таблица обозначений ===== */

body:not(.admin-body) .cbl-group-marks {
  margin: 8px 0 0;
  font-size: 14px;
  line-height: 1.45;
  color: var(--color-text-muted);
}

body:not(.admin-body) .cbl-group-count { color: #7A8CA0; }

body:not(.admin-body) .cbl-decoding-panel {
  padding: var(--pad-panel);
  background: #ffffff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
}

body:not(.admin-body) .cbl-decoding-list {
  margin: 0 0 14px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 40px;
}

body:not(.admin-body) .cbl-decoding-row {
  display: grid;
  grid-template-columns: 84px minmax(0, 1fr);
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid var(--color-border);
}

body:not(.admin-body) .cbl-decoding-row dt {
  font-size: 15px;
  line-height: 1.4;
  font-weight: var(--fw-bold);
  color: #10233C;
}

body:not(.admin-body) .cbl-decoding-row dd {
  margin: 0;
  font-size: 16px;
  line-height: 1.5;
  color: var(--color-text-muted);
}

@media (max-width: 1023px) {
  body:not(.admin-body) .cbl-decoding-list { grid-template-columns: minmax(0, 1fr); }
}

/* ============================================================
   ПОИСК ПО САЙТУ В ШАПКЕ (просьба 21.08.2026)
   Значок слева от телефона; по клику раскрывается поле.
   Раскрытие на <details> — та же механика, что у мобильного меню,
   поэтому поиск работает и без JavaScript.
   ============================================================ */
body:not(.admin-body) .header-search {
  position: relative;
  display: flex;
  align-items: center;
}

body:not(.admin-body) .header-search-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-control);
  cursor: pointer;
  list-style: none;
  transition: background-color var(--mo-hover) var(--mo-ease);
}

body:not(.admin-body) .header-search-toggle::-webkit-details-marker { display: none; }

/* Кнопка нарисована 40×40 по утверждённой шапке, а нажимать нужно в 44:
   зону расширяем псевдоэлементом, вид не трогаем (мобильный аудит 26.08.2026) */
body:not(.admin-body) .header-search-toggle {
  position: relative;
}

body:not(.admin-body) .header-search-toggle::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: var(--tap-min);
  height: var(--tap-min);
  transform: translate(-50%, -50%);
}

body:not(.admin-body) .header-search-toggle:hover,
body:not(.admin-body) .header-search[open] .header-search-toggle { background: #EAF3FB; }

body:not(.admin-body) .header-search-ico {
  width: 20px;
  height: 20px;
  background: #10233C;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m16.5 16.5 4 4'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m16.5 16.5 4 4'/%3E%3C/svg%3E") no-repeat center / contain;
}

body:not(.admin-body) .header-search-panel {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  z-index: 40;
  padding: 12px;
  background: #ffffff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  box-shadow: 0 18px 40px rgba(11, 31, 63, 0.14);
}

body:not(.admin-body) .header-search-form {
  display: flex;
  align-items: center;
  gap: 8px;
}

body:not(.admin-body) .header-search-input {
  width: 260px;
  min-height: 40px;
  padding: 0 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  font-size: 15px;
  line-height: 1.4;
  color: #10233C;
}

body:not(.admin-body) .header-search-input:focus-visible {
  border-color: #1870BD;
  outline: 2px solid #1870BD;
  outline-offset: 1px;
}

body:not(.admin-body) .header-search-submit {
  min-height: 40px;
  padding: 0 16px;
  border: 1px solid #10233C;
  border-radius: var(--radius-control);
  background: #10233C;
  color: #ffffff;
  font-size: 15px;
  font-weight: var(--fw-bold);
  cursor: pointer;
}

body:not(.admin-body) .header-search-submit:hover,
body:not(.admin-body) .header-search-submit:focus-visible { background: #1B3457; }

/* Подсказки под полем поиска (просьба 21.08.2026). Список рисует kabem.js,
   разметка одна и для шапки, и для страницы /poisk — поэтому стили лежат
   в ядре, а не в файле страницы. */
body:not(.admin-body) .srch-combo { position: relative; }

body:not(.admin-body) .srch-suggest {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  left: 0;
  z-index: 60;
  max-height: 62vh;
  padding: 8px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background: #ffffff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  box-shadow: 0 18px 40px rgba(11, 31, 63, 0.14);
}

body:not(.admin-body) .srch-suggest-group + .srch-suggest-group {
  margin-top: 4px;
  padding-top: 8px;
  border-top: 1px solid var(--color-border);
}

body:not(.admin-body) .srch-suggest-group-title {
  margin: 0 0 4px;
  padding: 0 10px;
  font-size: 13px;
  line-height: 18px;
  font-weight: var(--fw-bold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #1870BD;
}

body:not(.admin-body) .srch-suggest-item {
  display: block;
  padding: 8px 10px;
  border-radius: var(--radius-chip);
  color: #10233C;
  text-decoration: none;
}

body:not(.admin-body) .srch-suggest-item:hover,
body:not(.admin-body) .srch-suggest-item.is-active,
body:not(.admin-body) .srch-suggest-all:hover,
body:not(.admin-body) .srch-suggest-all.is-active { background: #EAF3FB; }

body:not(.admin-body) .srch-suggest-item:focus-visible,
body:not(.admin-body) .srch-suggest-all:focus-visible {
  outline: 2px solid #1870BD;
  outline-offset: -2px;
}

body:not(.admin-body) .srch-suggest-item-title {
  display: block;
  font-size: 15px;
  line-height: 1.4;
  font-weight: var(--fw-bold);
}

body:not(.admin-body) .srch-suggest-item-title mark {
  background: #D8EBFA;
  color: inherit;
}

body:not(.admin-body) .srch-suggest-item-note {
  display: block;
  margin-top: 2px;
  font-size: 14px;
  line-height: 1.4;
  color: #4A5B72;
  /* Подпись в одну строку: список подсказок не должен прыгать по высоте */
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:not(.admin-body) .srch-suggest-all {
  display: block;
  margin-top: 4px;
  padding: 10px;
  border-top: 1px solid var(--color-border);
  border-radius: var(--radius-chip);
  font-size: 15px;
  line-height: 1.4;
  font-weight: var(--fw-bold);
  color: #1870BD;
  text-decoration: none;
}

body:not(.admin-body) .srch-suggest-empty {
  margin: 0;
  padding: 10px;
  font-size: 15px;
  line-height: 1.4;
  color: #4A5B72;
}

/* ============================================================
   Модальное окно поиска (макет 24.08.2026). Панель раскрытия превращена
   в оверлей: затемнение, крупное поле, популярные запросы и быстрые
   переходы. Механика прежняя — <details>, поэтому поиск работает и без
   скрипта: значок остаётся формой GET на /poisk.
   ============================================================ */
/* Оверлей лежит внутри шапки, а backdrop-filter делает шапку системой
   координат для position: fixed — панель обрезалась по её высоте (80px
   вместо экрана). На время открытого поиска блюр снимаем: в обычном
   состоянии шапка непрозрачно-белая, разницы не видно (24.08.2026). */
body:not(.admin-body) .site-header:has(.header-search[open]) {
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

body:not(.admin-body) .header-search[open] .header-search-panel {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 12vh 16px 16px;
  background: rgba(11, 31, 63, 0.55);
  border: 0;
  border-radius: 0;
  box-shadow: none;
  overflow-y: auto;
}

body:not(.admin-body) .srch-modal {
  width: 100%;
  max-width: 720px;
  padding: 16px;
  background: #ffffff;
  border-radius: var(--radius-card);
  box-shadow: 0 24px 60px rgba(11, 31, 63, 0.26);
}

body:not(.admin-body) .srch-modal {
  position: relative;
}

body:not(.admin-body) .srch-modal .header-search-form {
  display: block;
}

body:not(.admin-body) .srch-modal-close {
  position: absolute;
  top: -14px;
  right: -14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tap-min);
  height: var(--tap-min);
  border: 1px solid var(--color-border);
  border-radius: 999px;
  background: #ffffff;
  cursor: pointer;
  box-shadow: 0 6px 18px rgba(11, 31, 63, 0.18);
}

body:not(.admin-body) .srch-modal-close span {
  width: 18px;
  height: 18px;
  background: #10233C;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E") no-repeat center / contain;
}

body:not(.admin-body) .srch-modal-close:hover,
body:not(.admin-body) .srch-modal-close:focus-visible { border-color: #1870BD; }

body:not(.admin-body) .srch-modal-close:hover span,
body:not(.admin-body) .srch-modal-close:focus-visible span { background: #1870BD; }

body:not(.admin-body) .srch-modal-field {
  position: relative;
  display: flex;
  align-items: center;
}

body:not(.admin-body) .srch-modal .header-search-input {
  width: 100%;
  min-height: 52px;
  padding: 0 64px 0 16px;
  border: 1px solid #1870BD;
  border-radius: var(--radius-control);
  font-size: 16px;
  line-height: 1.5;
}

body:not(.admin-body) .srch-modal-esc {
  position: absolute;
  right: 12px;
  padding: 4px 8px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-chip);
  background: #F4F8FD;
  font-family: inherit;
  font-size: 13px;
  line-height: 18px;
  color: #5C6E84;
}

/* Кнопка нужна для работы без скрипта, в макете её нет */
body:not(.admin-body) .srch-modal .header-search-submit {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

body:not(.admin-body) .srch-modal-block {
  margin-top: 20px;
}

body:not(.admin-body) .srch-modal-block-title {
  margin: 0 0 10px;
  font-size: 14px;
  line-height: 1.45;
  color: #5C6E84;
}

body:not(.admin-body) .srch-modal-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

body:not(.admin-body) .srch-modal-chip {
  display: inline-flex;
  align-items: center;
  min-height: var(--tap-min);
  padding: 0 16px;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  background: #ffffff;
  font-size: 15px;
  line-height: 1.45;
  color: #10233C;
  text-decoration: none;
}

body:not(.admin-body) .srch-modal-chip:hover,
body:not(.admin-body) .srch-modal-chip:focus-visible {
  border-color: #1870BD;
  color: #1870BD;
}

body:not(.admin-body) .srch-modal-links {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}

body:not(.admin-body) .srch-modal-link {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) 20px;
  align-items: center;
  gap: 12px;
  padding: 8px;
  border-radius: var(--radius-control);
  color: #10233C;
  text-decoration: none;
}

body:not(.admin-body) .srch-modal-link:hover,
body:not(.admin-body) .srch-modal-link:focus-visible { background: #F4F8FD; }

body:not(.admin-body) .srch-modal-link-ico {
  width: 44px;
  height: 44px;
  border-radius: var(--radius-control);
  background: #EAF3FB no-repeat center;
  background-size: 22px 22px;
}

body:not(.admin-body) .srch-modal-link-ico--1 {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231870BD' stroke-width='1.8'%3E%3Ccircle cx='12' cy='12' r='8'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
}

body:not(.admin-body) .srch-modal-link-ico--2 {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231870BD' stroke-width='1.8'%3E%3Crect x='3' y='6' width='18' height='12' rx='2'/%3E%3Cpath d='M8 6v12M16 6v12'/%3E%3C/svg%3E");
}

body:not(.admin-body) .srch-modal-link-ico--3 {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231870BD' stroke-width='1.8'%3E%3Crect x='4' y='3' width='16' height='18' rx='2'/%3E%3Cpath d='M9 8h6M9 12h6M9 16h3'/%3E%3C/svg%3E");
}

body:not(.admin-body) .srch-modal-link-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
}

body:not(.admin-body) .srch-modal-link-copy strong {
  font-size: 16px;
  line-height: 1.4;
  font-weight: var(--fw-bold);
}

body:not(.admin-body) .srch-modal-link-copy span {
  font-size: 14px;
  line-height: 1.45;
  color: #5C6E84;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:not(.admin-body) .srch-modal-link-arrow {
  width: 20px;
  height: 20px;
  background: #9BB8D5;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m13 6 6 6-6 6'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m13 6 6 6-6 6'/%3E%3C/svg%3E") no-repeat center / contain;
}

body:not(.admin-body) .srch-modal-hint {
  margin: 16px 0 0;
  padding-top: 12px;
  border-top: 1px solid var(--color-border);
  font-size: 13px;
  line-height: 18px;
  text-align: center;
  color: #5C6E84;
}

/* Подсказки внутри модалки идут в потоке, а не выпадающим слоем */
body:not(.admin-body) .srch-modal .srch-suggest {
  position: static;
  max-height: 46vh;
  margin-top: 12px;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

body:not(.admin-body) .srch-modal[data-has-query="true"] .srch-modal-start,
body:not(.admin-body) .srch-modal[data-has-query="true"] .srch-modal-hint { display: none; }

@media (max-width: 767px) {
  body:not(.admin-body) .header-search[open] .header-search-panel { padding-top: 5vh; }
  body:not(.admin-body) .srch-modal-link-copy span { white-space: normal; }
}

/* На узких экранах панель не должна вылезать за край окна */
@media (max-width: 480px) {
  body:not(.admin-body) .header-search-panel {
    position: fixed;
    left: 16px;
    right: 16px;
    top: 74px;
  }
  body:not(.admin-body) .header-search-input { width: 100%; }
}

/* ============================================================
   РИТМ СЕКЦИЙ КАТАЛОГА — 24/24 (аудит каталога 19.08.2026, р. 4)
   Было 10/0 из ядра: между содержимым соседних секций оставалось
   10px, и две белые секции подряд сливались в одну.
   ============================================================ */
body:not(.admin-body).pages.catalog.catalog.catalog.catalog.catalog main > section {
  padding-top: 24px;
  padding-bottom: 24px;
}

body:not(.admin-body).pages.catalog.catalog.catalog.catalog.catalog main > section.page-hero {
  padding-top: 28px;
  /* Низ без паддинга: на узких он складывался с ритмом в 34px (аудит
     26.08, п. 1.1); высоту первого экрана держит min-height */
  padding-bottom: 0;
}

/* Лид секций каталога — во всю ширину блока: max-width обрезал строку
   по короткой границе (просьба 21.08.2026) */
body:not(.admin-body).pages.catalog main .section-head p:not(.kicker) { max-width: none; }

/* Первый экран каталога: слева текст, справа снимок продукции
   (просьба 21.08.2026) */
body:not(.admin-body).pages.catalog .catalog-hero-grid {
  display: grid;
  /* Снимок крупнее (просьба 26.08.2026): колонка 300 -> 400 */
  grid-template-columns: minmax(0, 1fr) 470px;
  gap: 40px;
  align-items: center;
}

body:not(.admin-body).pages.catalog .catalog-hero-visual {
  border-radius: var(--radius-card);
  overflow: hidden;
}

/* Снимок предметный, с прозрачным фоном: cover срезал бы кабели слева
   и приборы справа — вписываем целиком (24.08.2026). */
body:not(.admin-body).pages.catalog .catalog-hero-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center right;
}

/* Первый экран каталога был 386px против 272–280 на «Контактах» и «Наличии»:
   высоту ряда задавал снимок продукции, а не текст. Выводим снимок из потока —
   высоту первого экрана определяет текстовая колонка (просьба 24.08.2026). */
@media (min-width: 1024px) {
  body:not(.admin-body).pages.catalog .catalog-hero-grid { align-items: stretch; }
  /* Снимок на всю высоту секции, включая её отступы: сама секция при этом
     не растёт (просьба 26.08.2026) */
  body:not(.admin-body).pages.catalog .catalog-hero-visual {
    position: relative;
    min-height: 0;
    margin-top: -29px;
    margin-bottom: -19px;
  }
  body:not(.admin-body).pages.catalog .catalog-hero-img { position: absolute; inset: 0; }
}

@media (max-width: 1023px) {
  body:not(.admin-body).pages.catalog .catalog-hero-grid { grid-template-columns: minmax(0, 1fr); gap: 24px; }
}

/* Единое правило мобильного H1 (разбор 26.08.2026): 26px, интерлиньяж 1.16,
   разрядка -0.03em. При прежних 30px «Каталог кабеля и электрооборудования»
   рвал слово пополам на 320. */
@media (max-width: 430px) {
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body).pages.catalog .catalog-hero-copy h1 {
    font-size: 26px;
    line-height: 1.16;
    letter-spacing: -0.03em;
  }
}

/* ===== 03-buttons.css ===== */
/* Система кнопок
   Файл нарезан из единого application.css (как на сайте Дед Глеб).
   Порядок подключения в layout важен: поздние файлы перекрывают ранние. */
/* ============================================================
   Система кнопок «Капитель-пилюля» — единый слой на весь публичный сайт
   (перебивает старые градиентные .btn-правила по позиции в файле)
   ============================================================ */
:root {
  --btn-deep: #10233C;      /* фон основной кнопки — системный тёмный */
  --btn-brand: #123a75;     /* фон основной на ховере */
  --btn-hairline: #b9c7d9;  /* рамка вторичной */
}

/* Общая геометрия — пилюля с капителью */
body:not(.admin-body) .btn,
body:not(.admin-body) button.btn,
body:not(.admin-body) input[type="submit"].btn,
body:not(.admin-body) .header-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  /* 48, не 50: высота контрола по таблице сайта (--control-h).
     Шапка держит свои 44 отдельным правилом ниже (сверка 31.08.2026) */
  min-height: var(--control-h);
  height: var(--control-h);
  padding: 0 30px;
  border: 0;
  border-radius: 999px;
  font-family: var(--font-body);
  /* Первичный призыв 15/600 (промпт 13.08.2026, Л5): на 14/400 кнопка
     читалась как служебная ссылка. Трекинг минусовой, не разрядка. */
  font-weight: 600;
  font-size: 15px;
  letter-spacing: -0.004em;
  text-transform: none;
  white-space: nowrap;
  cursor: pointer;
  box-shadow: none;
  transform: none;
  /* Трекинг постоянный: анимировать letter-spacing — это пересчёт
     раскладки на каждом кадре и дёрганье текста (промпт 13.08.2026, Н3) */
  transition: background-color var(--mo-hover) var(--mo-ease),
              border-color var(--mo-hover) var(--mo-ease),
              color var(--mo-hover) var(--mo-ease),
              transform var(--mo-micro) var(--mo-ease);
}

/* Основная — глубокий нейви */
body:not(.admin-body) .btn,
body:not(.admin-body) button.btn,
body:not(.admin-body) input[type="submit"].btn,
body:not(.admin-body) .header-cta {
  background: var(--btn-deep);
  color: #fff;
}
body:not(.admin-body) .btn:hover,
body:not(.admin-body) button.btn:hover,
body:not(.admin-body) input[type="submit"].btn:hover,
body:not(.admin-body) .header-cta:hover {
  letter-spacing: 0.01em;
  background: var(--btn-brand);
  border: 0;
  color: #fff;
  box-shadow: none;
  transform: none;
}

/* Вторичная — hairline */
body:not(.admin-body) .btn-line {
  background: transparent;
  color: var(--navy-900);
  border: 1px solid var(--btn-hairline);
  box-shadow: none;
}
body:not(.admin-body) .btn-line:hover {
  background: transparent;
  border-color: var(--navy-900);
  color: var(--navy-900);
  letter-spacing: 0.01em;
}

/* Малый размер — шапка, компактные карточки */
body:not(.admin-body) .btn-small,
body:not(.admin-body) .btn.btn-small,
body:not(.admin-body) .header-cta {
  min-height: 42px;
  height: 42px;
  padding: 0 22px;
  font-size: 13px;
}

/* Фокус и состояния */
body:not(.admin-body) .btn:focus-visible,
body:not(.admin-body) button.btn:focus-visible,
body:not(.admin-body) input[type="submit"].btn:focus-visible,
body:not(.admin-body) .header-cta:focus-visible {
  outline: 2px solid var(--btn-brand);
  outline-offset: 3px;
}
body:not(.admin-body) .btn[disabled],
body:not(.admin-body) .btn:disabled,
body:not(.admin-body) .btn.is-loading {
  opacity: 0.55;
  pointer-events: none;
}

/* На тёмных баннерах: основная — белая пилюля, текст нейви */
body:not(.admin-body) .page-hero--photo .btn,
body:not(.admin-body) .on-dark .btn,
body:not(.admin-body) .btn-primary--inverse {
  background: #fff;
  color: var(--btn-deep);
}
body:not(.admin-body) .page-hero--photo .btn:hover,
body:not(.admin-body) .on-dark .btn:hover,
body:not(.admin-body) .btn-primary--inverse:hover {
  background: #fff;
  color: var(--btn-deep);
  letter-spacing: 0.01em;
}
body:not(.admin-body) .page-hero--photo .btn-line,
body:not(.admin-body) .on-dark .btn-line,
body:not(.admin-body) .btn-secondary--inverse {
  background: transparent;
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.5);
}
body:not(.admin-body) .page-hero--photo .btn-line:hover,
body:not(.admin-body) .on-dark .btn-line:hover,
body:not(.admin-body) .btn-secondary--inverse:hover {
  background: transparent;
  border-color: #fff;
  color: #fff;
}

/* Иконки внутри кнопок не капителизируются */
body:not(.admin-body) .btn .icon-badge,
body:not(.admin-body) .btn svg {
  text-transform: none;
  letter-spacing: normal;
  flex: 0 0 auto;
}

/* Мобильные: кнопки форм и hero — на всю ширину, высота сохраняется */
@media (max-width: 640px) {
  body:not(.admin-body) .hero-actions .btn,
  body:not(.admin-body) .quote-form button.btn,
  body:not(.admin-body) .quote-form input[type="submit"].btn,
  body:not(.admin-body) .stock-cta-row .btn {
    width: 100%;
  }
}

/* Узкие телефоны: длинная подпись переносится и кнопка растёт от 48,
   а не выталкивает страницу вбок (аудит 16.09.2026, 320px) */
@media (max-width: 360px) {
  body:not(.admin-body) .btn {
    height: auto;
    min-width: 0;
    padding-inline: 16px;
    white-space: normal;
    text-align: center;
  }
}

@media (prefers-reduced-motion: reduce) {
  body:not(.admin-body) .btn { transition: none; }
  body:not(.admin-body) .btn:hover,
  body:not(.admin-body) .btn-line:hover,
  body:not(.admin-body) .page-hero--photo .btn:hover { letter-spacing: 0.01em; }
}

/* Стрелка в кнопке: общий вид для всех страниц. Раньше правило жило только
   на «Контактах», и на Главной четыре <span class="btn-arrow"> были 0×0. */
body:not(.admin-body) .btn .btn-arrow {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  display: inline-block;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'/%3E%3Cpolyline points='12 5 19 12 12 19'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'/%3E%3Cpolyline points='12 5 19 12 12 19'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* ===== 05-header-motion.css ===== */
/* Шапка, крошки, главная, моушн, Turbo-шторка, меню
   Файл нарезан из единого application.css (как на сайте Дед Глеб).
   Порядок подключения в layout важен: поздние файлы перекрывают ранние. */
/* ============================================================
   Шапка + крошки под рендер: иконка телефона, шеврон в CTA, домик
   ============================================================ */
.header-phone-text {
  display: grid;
  gap: 1px;
}
.header-phone-ico {
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  background: var(--kabem-logo-navy, #10233C);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2A19.79 19.79 0 0 1 11.19 18.87a19.5 19.5 0 0 1-6-6A19.79 19.79 0 0 1 2.08 4.18 2 2 0 0 1 4.06 2h3a2 2 0 0 1 2 1.72c.12.86.31 1.7.57 2.5a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.58-1.09a2 2 0 0 1 2.11-.45c.8.26 1.64.45 2.5.57A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2A19.79 19.79 0 0 1 11.19 18.87a19.5 19.5 0 0 1-6-6A19.79 19.79 0 0 1 2.08 4.18 2 2 0 0 1 4.06 2h3a2 2 0 0 1 2 1.72c.12.86.31 1.7.57 2.5a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.58-1.09a2 2 0 0 1 2.11-.45c.8.26 1.64.45 2.5.57A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Шеврон в кнопке CTA шапки */
body:not(.admin-body) .header-cta .btn-chevron {
  width: 15px;
  height: 15px;
  flex: 0 0 15px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Домик в первой хлебной крошке */
.breadcrumbs .crumb-link--home {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.breadcrumbs .crumb-home {
  width: 15px;
  height: 15px;
  flex: 0 0 15px;
  display: inline-block;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3Cpolyline points='9 22 9 12 15 12 15 22'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3Cpolyline points='9 22 9 12 15 12 15 22'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Шапка: контейнер ограничен 1400px, поэтому на десктопе ужимаем навигацию
   и правый блок, чтобы телефон с иконкой и CTA с шевроном не наезжали на меню */
@media (min-width: 920.02px) {
  .header-inner { gap: 8px; }
  body:not(.admin-body) .primary-nav { flex: 0 1 auto; gap: 2px; }
  body:not(.admin-body) .primary-nav a,
  body:not(.admin-body) .nav-link {
    font-size: 13px;
    padding: 0 5px;
  }
  .header-actions { gap: 6px; margin-left: auto; }
  .header-phone { gap: 8px; font-size: 12px; }
  .header-phone-ico { width: 17px; height: 17px; flex: 0 0 17px; }
  /* Часы уже показаны в карточке контактов и футере — в шапке убираем,
     чтобы 7 пунктов меню + телефон + CTA не наезжали друг на друга */
  body:not(.admin-body) .header-phone-text span { display: none; }
  body:not(.admin-body) .header-phone-text { display: inline-flex; align-items: center; }
  /* Компактный CTA в шапке, чтобы правый блок не поджимал навигацию */
  body:not(.admin-body) .header-cta { padding-left: 15px; padding-right: 15px; }
}

/* Fix: секция процесса на /quote (.quote-process-section) имеет СВЕТЛЫЙ фон
   (.section-muted → --ice-100), поэтому текст должен быть тёмным, а не белым */
body:not(.admin-body) .quote-process-section .process-compact-item p,
body:not(.admin-body) .quote-process-section .process-card p,
body:not(.admin-body) .quote-process-section .section-head p:last-child,
body:not(.admin-body) .quote-process-section .process-meta span {
  color: var(--muted);
}
body:not(.admin-body) .quote-process-section .process-compact-item h3,
body:not(.admin-body) .quote-process-section h2 {
  color: var(--navy-900);
}
body:not(.admin-body) .quote-process-section .step-number {
  color: var(--kabem-logo-navy);
  background: rgba(1, 46, 79, 0.06);
  border-color: var(--color-border);
}

/* Фон hero «Контакты» из рендера (волновой светло-синий паттерн) */
body:not(.admin-body) .contact-page-hero {
  background-image: url("/images/kabem-contacts-hero-bg.webp");
  background-size: cover;
  background-position: center top;
  background-repeat: no-repeat;
}

/* Каталог: блок «Наши преимущества» на странице раздела */
.catalog-advantages {
  margin-top: clamp(28px, 4vw, 44px);
  padding-top: clamp(24px, 3vw, 32px);
  border-top: 1px solid var(--line);
}
.catalog-advantages h2 {
  margin: 0 0 18px;
  font-size: 1.3rem;
}
.catalog-advantages-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 28px;
}
.catalog-advantage {
  position: relative;
  padding-left: 30px;
  line-height: 1.5;
  color: var(--muted);
}
.catalog-advantage::before {
  content: "";
  position: absolute;
  left: 0;
  top: 1px;
  width: 18px;
  height: 18px;
  background: var(--kabem-logo-navy, #10233C);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat;
}
@media (max-width: 640px) {
  .catalog-advantages-list { grid-template-columns: 1fr; }
}

/* Футер: уменьшить высоту и подтянуть контент вверх */
body:not(.admin-body) .site-footer {
  padding-top: 34px;
  padding-bottom: 18px;
}
body:not(.admin-body) .site-footer .footer-grid { gap: 30px; }
body:not(.admin-body) .site-footer .footer-block { gap: 6px; }
body:not(.admin-body) .site-footer .footer-bottom {
  margin-top: 22px;
  padding-top: 14px;
}

/* Наличие: лид на всю ширину левой колонки (не 480px), чтобы не ломался в 3 строки */
.stock-intro .lead { max-width: none; }

/* ============================================================
   Разгрузка главной: карточка-ссылка, метки кейсов, «Что фиксируем в КП», 5 шагов
   ============================================================ */
/* Продукция: вся карточка — ссылка (один переход вместо двух) */
a.category-card,
body:not(.admin-body) a.category-card {
  text-decoration: none;
  color: inherit;
  cursor: pointer;
}
.category-card-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 14px 16px 2px;
  color: var(--kabem-logo-navy, #10233C);
  font-weight: 600;
  font-size: 14px;
}
.category-card-link::after {
  content: "→";
  transition: transform var(--mo-hover) ease;
}
a.category-card:hover .category-card-link::after { transform: translateX(4px); }

/* Метки кейсов — нейтральные (убираем оранжевый) */
.case-card .case-tag,
body:not(.admin-body) .case-card .case-tag {
  background: #e8f1f8;
  color: var(--color-text, #10233C);
}

/* «Что фиксируем в КП» — панель внутри Преимуществ */
.kp-fix-panel {
  margin-top: clamp(20px, 3vw, 34px);
  padding: clamp(20px, 3vw, 28px);
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface, #f7fafc);
}
.kp-fix-panel h3 {
  margin: 0 0 14px;
  font-size: 1.15rem;
}

/* Как мы работаем — 5 коротких шагов */
.home-steps {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(16px, 2vw, 26px);
}
.home-step {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-top: 16px;
  border-top: 2px solid var(--line);
}
.home-step-num {
  font-weight: 600;
  font-size: 1.4rem;
  line-height: 1;
  color: var(--premium-blue, #185f9f);
  font-variant-numeric: tabular-nums;
}
.home-step h3 {
  margin: 2px 0 0;
  font-size: 1.02rem;
  line-height: 1.3;
}
.home-step p {
  margin: 0;
  color: var(--muted);
  font-size: 0.95rem;
  line-height: 1.5;
}
@media (max-width: 900px) {
  .home-steps { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .home-steps { grid-template-columns: 1fr; }
}

/* ============================================================
   Моушн-система (безопасный reveal + живая шапка + ховеры + параллакс + лента)
   ============================================================ */
/* Безопасность: без motion-ready (JS не отработал/reduced-motion) — всё видно */
html:not(.motion-ready) .reveal-ready {
  opacity: 1 !important;
  transform: none !important;
}
.reveal-ready {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity var(--mo-reveal) cubic-bezier(0.2, 0.7, 0.3, 1),
              transform var(--mo-reveal) cubic-bezier(0.2, 0.7, 0.3, 1);
}
.reveal-ready.is-revealed {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  .reveal-ready { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* Живая шапка — сжатие + блюр при скролле */
body:not(.admin-body) .site-header {
  /* backdrop-filter из перехода убран: анимировать фильтр дорого, blur
     включается сразу вместе с классом (промпт 13.08.2026, Н3) */
  transition: background-color var(--mo-expand) var(--mo-ease), box-shadow var(--mo-expand) var(--mo-ease);
}
body:not(.admin-body) .site-header.is-compact {
  background: rgba(255, 255, 255, 0.9);
  backdrop-filter: blur(12px);
  box-shadow: 0 10px 30px rgba(11, 31, 63, 0.12);
}
/* Высота шапки переключается классом без перехода, логотип уменьшается
   масштабом: min-height и width пересчитывали раскладку каждый кадр */
.site-header .brand-logo {
  transform-origin: left center;
  transition: transform var(--mo-expand) var(--mo-ease);
}
body:not(.admin-body) .site-header.is-compact .header-inner { min-height: 52px; }
body:not(.admin-body) .site-header.is-compact .brand-logo { transform: scale(0.87); }

/* Ховер-карточки — только для устройств с курсором */
@media (hover: hover) {
  a.category-card,
  a.industry-card,
  a.catalog-section-tile,
  a.catalog-subcategory-card {
    transition: transform var(--mo-reveal) cubic-bezier(0.2, 0.7, 0.3, 1), box-shadow var(--mo-reveal) ease;
  }
  a.category-card:hover,
  a.industry-card:hover,
  a.catalog-section-tile:hover,
  a.catalog-subcategory-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 18px 40px rgba(1, 46, 79, 0.16);
  }
  .category-photo-grid,
  .industry-card .industry-image,
  .catalog-section-media,
  .catalog-subcategory-media {
    overflow: hidden;
  }
  .category-image,
  .industry-image,
  .catalog-section-image,
  .catalog-subcategory-image {
    transition: transform var(--mo-reveal) cubic-bezier(0.2, 0.7, 0.3, 1);
  }
  a.category-card:hover .category-image,
  a.industry-card:hover .industry-image,
  a.catalog-section-tile:hover .catalog-section-image,
  a.catalog-subcategory-card:hover .catalog-subcategory-image {
    transform: scale(1.07);
  }
}

/* Параллакс фото-баннеров */
/* Правила .has-parallax удалены 13.08.2026 вместе с самим параллаксом. */

/* Бегущая строка марок/направлений */
.marks-marquee {
  overflow: hidden;
  background: linear-gradient(180deg, var(--kabem-logo-navy-2, #064169) 0%, var(--kabem-logo-navy, #10233C) 100%);
  padding: 16px 0;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.marks-marquee-track {
  display: inline-flex;
  gap: 40px;
  white-space: nowrap;
  will-change: transform;
  animation: marks-scroll 32s linear infinite;
}
.marks-marquee:hover .marks-marquee-track { animation-play-state: paused; }
.marks-marquee-item {
  color: rgba(255, 255, 255, 0.86);
  font-size: 14px;
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
}
.marks-marquee-item::before {
  content: "•";
  margin-right: 40px;
  color: rgba(255, 255, 255, 0.4);
}
@keyframes marks-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .marks-marquee-track { animation: none; }
}

/* Клиенты: чипы отраслей-заказчиков (нейтральные, со старого сайта) */
.client-sectors {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 6px;
}
.client-sector {
  display: inline-flex;
  align-items: center;
  padding: 10px 18px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  color: var(--navy-900, #0b1f3f);
  font-weight: 400;
  font-size: 15px;
}
body:not(.admin-body) .client-sector {
  background: linear-gradient(180deg, #ffffff 0%, var(--kabem-logo-ice, #eef5fb) 100%);
  border-color: var(--color-border);
}

/* ============================================================
   Шторка перехода между страницами (Turbo)
   ============================================================ */
.page-curtain {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: linear-gradient(180deg, #0b1f3f 0%, #071a2f 100%);
  transform: translateY(-100%);
  pointer-events: none;
}
.page-curtain.is-covering {
  transform: translateY(0);
  transition: transform var(--mo-reveal) cubic-bezier(0.7, 0, 0.3, 1);
}
.page-curtain.is-leaving {
  transform: translateY(100%);
  transition: transform var(--mo-reveal) cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
  .page-curtain { display: none !important; }
}

/* ============================================================
   Оживление верхнего меню
   ============================================================ */
body:not(.admin-body) .primary-nav a,
body:not(.admin-body) .primary-nav .nav-link {
  position: relative;
  transition: color var(--mo-hover) ease, background-color var(--mo-expand) ease;
}
/* Ховер пункта меню — тёмная нейви-пилюля, как кнопка «Отправить спецификацию» и активный пункт */
body:not(.admin-body) .primary-nav a:not(.is-active):hover,
body:not(.admin-body) .primary-nav .nav-link:not(.is-active):hover,
body:not(.admin-body) .nav-dropdown[open] > .nav-link:not(.is-active) {
  background: linear-gradient(180deg, rgba(6, 65, 105, 0.98) 0%, var(--kabem-logo-navy) 100%);
  color: #ffffff;
  box-shadow: 0 8px 18px rgba(1, 46, 79, 0.14);
}
/* Активный пункт — та же пилюля */
body:not(.admin-body) .primary-nav a.is-active,
body:not(.admin-body) .primary-nav .nav-link.is-active {
  transition: transform var(--mo-expand) ease, background-color var(--mo-expand) ease;
}
/* Шеврон «Каталог» — поворот при открытии (наследует белый цвет на ховере) */
.nav-dropdown .nav-link::after {
  transition: transform var(--mo-expand) cubic-bezier(0.2, 0.7, 0.3, 1);
}
.nav-dropdown[open] .nav-link::after {
  transform: translateY(0) rotate(-135deg);
}
/* Выпадающая панель — мягкое появление */
.nav-dropdown[open] .nav-dropdown-panel {
  animation: nav-dropdown-in var(--mo-hover) cubic-bezier(0.2, 0.7, 0.3, 1);
}
@keyframes nav-dropdown-in {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: translateY(0); }
}
.nav-dropdown-panel a {
  transition: background-color var(--mo-fast) ease, color var(--mo-fast) ease, padding-left var(--mo-fast) ease;
}
.nav-dropdown-panel a:hover {
  padding-left: 14px;
}
@media (prefers-reduced-motion: reduce) {
  .nav-dropdown[open] .nav-dropdown-panel { animation: none; }
  body:not(.admin-body) .primary-nav a::after { transition: none; }
}

/* ===== 07-rhythm-form.css ===== */
/* Вертикальный ритм и компактная форма заявки
   Файл нарезан из единого application.css (как на сайте Дед Глеб).
   Порядок подключения в layout важен: поздние файлы перекрывают ранние. */
/* ============================================================
   Единый вертикальный ритм: крошки 7px; крошки→контент 20px; низ секций 20px
   ============================================================ */
.breadcrumbs {
  padding-top: 7px;
  padding-bottom: 7px;
}

/* Верх первой секции (текстовый hero) — 20px от крошек; низ hero — 20px */
body:not(.admin-body) .page-hero:not(.page-hero--photo) {
  padding-top: 20px;
  padding-bottom: 20px;
}
.page-stock .stock-hero,
body:not(.admin-body) .page-stock .stock-hero {
  padding-top: 20px;
  padding-bottom: 20px;
}

/* Низ всех контентных секций — 20px на всех страницах */
body:not(.admin-body) .section {
  padding-bottom: 20px;
}

/* Карточка скачивания: кнопка справа от инфо, а не снизу */
.stock-download-card--row {
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
}
.stock-download-info {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}
.stock-download-card--row .stock-download-btn {
  margin-top: 0;
  flex: 0 0 auto;
}
@media (max-width: 560px) {
  .stock-download-card--row {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }
  .stock-download-card--row .stock-download-btn { width: 100%; }
}

/* Первый блок «Наличия» — компактнее (~160px): карточка ниже + плотнее левый текст */
.stock-download-card--row {
  padding-top: 8px;
  padding-bottom: 8px;
}
.stock-download-card--row .icon-badge { margin-bottom: 4px; }
.page-stock .stock-intro .eyebrow { margin-bottom: 4px; }
.page-stock .stock-intro .lead { margin-top: 2px; }

/* Карточка наличия: одинаковый вертикальный зазор между строками (база — «Файл наличия»↔«Обновлён») */
.stock-download-card--row .stock-download-meta {
  margin-top: 2px;
}

/* Контакты: компактный hero (секция ~250px) */
body:not(.admin-body) .page-hero.contact-page-hero {
  padding-top: 12px;
  padding-bottom: 12px;
}
.contact-hero-card {
  padding: 12px 20px;
  gap: 10px;
}
.contact-hero-card .contact-line {
  padding: 3px 0;
  gap: 12px;
}
.contact-hero-card .contact-line .icon-badge--sm {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
}
.contact-hero-card .btn {
  margin-top: 2px;
}

/* Контакты: компактная карточка (перебиваем премиум .contact-compact) */
body:not(.admin-body) .contact-hero-card {
  padding: 12px 20px;
  gap: 5px;
}
body:not(.admin-body) .contact-hero-card .contact-line {
  padding: 3px 0;
  gap: 12px;
}
body:not(.admin-body) .contact-hero-card .contact-line .icon-badge--sm {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
}
body:not(.admin-body) .contact-hero-card .contact-line .icon-badge--sm::before {
  width: 17px;
  height: 17px;
}
body:not(.admin-body) .contact-hero-card .btn {
  margin-top: 0;
}

/* Контакты: карта и левый блок ниже (~вдвое) */
.map-panel { align-items: start; }
body:not(.admin-body) .map-panel-embed {
  min-height: 300px;
  height: 300px;
}
body:not(.admin-body) .map-panel-copy {
  gap: 8px;
  padding: 16px;
  align-content: start;
}
body:not(.admin-body) .map-panel-copy h2 {
  font-size: 1.1rem;
  line-height: 1.2;
}
body:not(.admin-body) .contact-wayfinding {
  padding: 10px;
  gap: 4px;
  margin-top: 0;
}
body:not(.admin-body) .contact-wayfinding p {
  font-size: 0.85rem;
  line-height: 1.35;
}
body:not(.admin-body) .map-route-button {
  min-height: 38px;
}
body:not(.admin-body) .map-route-hint {
  margin-top: 2px;
}

/* Контакты: компактная форма заявки (~600px) + левый блок карты 300px */
.contact-form-layout .quote-form { gap: 12px; }
.contact-form-layout .quote-form h2 { font-size: 1.4rem; line-height: 1.2; }
.contact-form-layout .quote-form .lead { font-size: 0.95rem; line-height: 1.45; }
.contact-form-layout .quote-grid { row-gap: 10px; }
.contact-form-layout .quote-form .field { gap: 4px; }
.contact-form-layout .quote-form input { min-height: 42px; }
.contact-form-layout .quote-form .file-dropzone { min-height: 82px; }
.contact-form-layout .quote-form textarea { min-height: 82px; }
.contact-form-layout .quote-form .form-note { margin: 0; }

/* Левый блок карты — вровень с картой (300px) */
body:not(.admin-body) .map-panel-embed { min-height: 300px; height: 300px; }
body:not(.admin-body) .map-route-button { min-height: 34px; }
body:not(.admin-body) .map-panel-copy { gap: 7px; }

/* Контакты: форма ещё компактнее (цель 600) + карта-копия 300 */
.contact-form-layout .quote-form { gap: 9px; }
.contact-form-layout .quote-form h2 { font-size: 1.2rem; margin-bottom: 0; }
.contact-form-layout .quote-form .lead { margin: 0; }
.contact-form-layout .quote-grid { row-gap: 8px; }
.contact-form-layout .quote-form .field { gap: 3px; }
.contact-form-layout .quote-form input { min-height: 40px; }
.contact-form-layout .quote-form .file-dropzone { min-height: 68px; padding: 10px; }
.contact-form-layout .quote-form textarea { min-height: 68px; }
.contact-form-layout .quote-form .field label { font-size: 0.9rem; }
body:not(.admin-body) .map-panel-copy { gap: 6px; padding: 12px; }

/* Контакты: перебиваем min-height обёрток файла/текста (специфичнее .quote-grid правил) */
body:not(.admin-body) .contact-form-layout .quote-grid .field-message,
body:not(.admin-body) .contact-form-layout .quote-grid .file-dropzone,
body:not(.admin-body) .contact-form-layout .quote-form textarea {
  min-height: 66px;
}

/* Контакты: финальное поджатие формы к ~600 */
body:not(.admin-body) .contact-form-layout .quote-grid .file-dropzone {
  min-height: 60px;
  padding: 8px;
}
body:not(.admin-body) .contact-form-layout .quote-grid .field-message,
body:not(.admin-body) .contact-form-layout .quote-grid .file-field {
  min-height: 60px;
}
body:not(.admin-body) .contact-form-layout .quote-form textarea {
  min-height: 60px;
  height: 60px;
}
.contact-form-layout .quote-form input { min-height: 38px; }
.contact-form-layout .quote-form .field { gap: 2px; }
.contact-form-layout .quote-form { gap: 8px; }
.contact-form-layout .quote-form .consent { margin: 0; }

/* ============================================================
   Компактная форма заявки — НА ВСЕХ СТРАНИЦАХ (как на «Контактах», ~675px)
   ============================================================ */
body:not(.admin-body) .quote-form { gap: 8px; }
body:not(.admin-body) .quote-form h2 { font-size: 1.2rem; }
body:not(.admin-body) .quote-form .lead { margin: 0; }
body:not(.admin-body) .quote-grid { row-gap: 8px; }
body:not(.admin-body) .quote-form .field { gap: 2px; }
body:not(.admin-body) .quote-form input { min-height: 38px; }
body:not(.admin-body) .quote-grid .field-message,
body:not(.admin-body) .quote-grid .file-field,
body:not(.admin-body) .quote-grid .file-dropzone { min-height: 60px; }
body:not(.admin-body) .quote-grid .file-dropzone { padding: 8px; }
body:not(.admin-body) .quote-grid .field-message textarea,
body:not(.admin-body) .quote-form textarea { min-height: 60px; height: 60px; }
body:not(.admin-body) .quote-form .consent { margin: 0; }
body:not(.admin-body) .quote-form .form-note { margin: 0; }

/* h1 — единый фиксированный размер 35px на всех страницах */
body:not(.admin-body) h1,
body:not(.admin-body) .page-hero h1,
body:not(.admin-body) .page-hero--photo h1,
body:not(.admin-body) .contact-page-hero h1,
body:not(.admin-body) .hero h1,
body:not(.admin-body) .hero-title {
  font-size: 35px;
}

/* Контакты: стрелка на CTA hero-карточки + иконка внешней ссылки на кнопке карты (под рендер) */
.contact-hero-cta {
  justify-content: space-between;
  gap: 12px;
}
.map-load .map-load-ico {
  display: inline-block;
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Кнопка карты — единая пилюля «Показать на карте» с иконкой (под рендер) */
body:not(.admin-body) .map-load .map-load-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
body:not(.admin-body) .map-load .map-load-label .map-load-ico {
  padding: 0;
  border-radius: 0;
  box-shadow: none;
  background: currentColor;
}

/* Реквизиты: иконки у действий «Скопировать» и «Открыть полную страницу» (под рендер) */
body:not(.admin-body) .requisites-action {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
body:not(.admin-body) .requisites-action-ico {
  width: 15px;
  height: 15px;
  flex: 0 0 15px;
  display: inline-block;
  background: currentColor;
  -webkit-mask: var(--ric) center / contain no-repeat;
  mask: var(--ric) center / contain no-repeat;
}
body:not(.admin-body) .requisites-action-ico--copy {
  --ric: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='13' height='13' rx='2' ry='2'/%3E%3Cpath d='M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1'/%3E%3C/svg%3E");
}
body:not(.admin-body) .requisites-action-ico--link {
  --ric: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E");
}

/* Реквизиты: два столбца — слева наименование/дата/адрес, справа ИНН/ОГРН/КПП.
   Адрес в половину ширины переносится, а не тянется на всю строку. */
body:not(.admin-body) .contact-requisites-col {
  display: grid;
  gap: 12px;
  align-content: start;
  min-width: 0;
}
body:not(.admin-body) .contact-requisite-address dd {
  overflow-wrap: anywhere;
}

/* Контакты: зазор между блоком реквизитов и картой — 12px */
body:not(.admin-body) .contact-requisites-section { padding-bottom: 6px; }
body:not(.admin-body) .contact-map-section { padding-top: 6px; }

/* Действия реквизитов — внизу панели, в одну строку на всю ширину */
body:not(.admin-body) .contact-requisites-panel > .contact-requisites-actions {
  grid-column: 1 / -1;
  margin-top: 4px;
  padding-top: 16px;
  border-top: 1px solid var(--line);
  gap: 24px;
  flex-wrap: nowrap;
}

/* Наличие: строка доверия под лидом (мелкий приглушённый кегль) */
body:not(.admin-body) .page-stock .stock-hero-trust {
  margin: 10px 0 0;
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 14px;
  color: var(--muted);
}

/* Наличие: цифры шагов — читаемый ice-круг 32px, вес 600, цвет brand */
body:not(.admin-body) .page-stock .stock-step {
  align-items: center;
}
body:not(.admin-body) .page-stock .stock-step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  border-radius: 999px;
  background: var(--kabem-logo-ice, #eaf2fb);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 1rem;
  line-height: 1;
  color: var(--kabem-logo-navy, #123a75);
}

/* Наличие: CTA-строка не должна прижиматься к футеру — нижний отступ секции 42px */
body:not(.admin-body) .page-stock .stock-hero { padding-bottom: 42px; }

/* Контакты: зазоры между секциями — 12px (шапка-карточка↔реквизиты, карта↔форма) */
body:not(.admin-body) .page-hero.contact-page-hero { padding-bottom: 6px; }
body:not(.admin-body) .contact-requisites-section { padding-top: 6px; padding-bottom: 6px; }
body:not(.admin-body) .contact-map-section { padding-top: 6px; padding-bottom: 6px; }
body:not(.admin-body) .contact-form-section { padding-top: 6px; }

/* Контакты: карточка «адрес на карте» одной высоты с картой */
body:not(.admin-body) .map-panel { align-items: stretch; }
/* Контакты: зазор шапка-карточка ↔ реквизиты ровно 12px */
body:not(.admin-body) .contact-requisites-section { padding-top: 5px; }

/* Контакты: телефон и почта в карточке — главные элементы (крупнее, вес 500) */
body:not(.admin-body) .contact-hero-card a.contact-line-value {
  font-size: 20px;
  font-weight: 400;
}
/* Контакты: строка ссылок под формой */
body:not(.admin-body) .contact-form-note {
  margin-top: 16px;
  color: var(--muted);
  font-size: 15px;
}
body:not(.admin-body) .contact-form-note a {
  color: var(--kabem-logo-navy);
  font-weight: 400;
  text-decoration: underline;
  text-underline-offset: 2px;
}
/* Контакты/формы: тап-цели ≥44px на мобильных (телефон, почта, копирование) */
@media (max-width: 640px) {
  body:not(.admin-body) .contact-hero-card a.contact-line-value,
  body:not(.admin-body) .manager-contact-links a,
  body:not(.admin-body) .requisites-action {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
}

/* О компании: H1 на фото-баннере на мобильных короче (цель ≤3 строк) */
@media (max-width: 640px) {
}
/* О компании: «9 направлений» — кликабельная цифра-ссылка */
body:not(.admin-body) .about-stat-link {
  color: inherit;
  text-decoration: none;
  border-bottom: 2px solid var(--color-border);
  transition: border-color var(--mo-hover) ease;
}
body:not(.admin-body) .about-stat-link:hover {
  border-bottom-color: var(--kabem-logo-navy);
}

/* ===== /quote: тонкая настройка отступов ===== */
/* Зазор шапка → форма = 10px */
body:not(.admin-body) .quote-hero { padding-bottom: 5px; }
body:not(.admin-body) .quote-page-section { padding-top: 5px; }
/* Полосы вокруг блока «Как мы работаем» — ~80px */
body:not(.admin-body) .quote-process-section { padding-top: 34px; padding-bottom: 12px; }
/* Чекбокс согласия — квадратный (не растянут по высоте поля 38px) */
body:not(.admin-body) .quote-form .consent input[type="checkbox"] {
  min-height: 24px;
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  align-self: center;
  margin-top: 0;
}

/* Дропзона: на десктопе видны «Перетащите файл сюда» и подпись, на телефоне —
   «Выберите файл на устройстве». Правило общее для всех форм сайта и жило в
   постраничном файле «Реквизитов»: после разделения CSS по страницам оно
   перестало приезжать на «Контакты», и в дропзоне показывались обе строки. */
@media (min-width: 768px) {
body:not(.admin-body).pages.contacts .quote-form .file-dropzone .file-dropzone-title--mobile,
body:not(.admin-body) .quote-form .file-dropzone .file-dropzone-title--mobile,
body:not(.admin-body).pages.quote .quote-form .file-dropzone .file-dropzone-title--mobile,
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone .file-dropzone-title--mobile { display: none !important; }
}
@media (max-width: 767px) {
body:not(.admin-body).pages.contacts .quote-form .file-dropzone .file-dropzone-title:not(.file-dropzone-title--mobile),
body:not(.admin-body) .quote-form .file-dropzone .file-dropzone-title:not(.file-dropzone-title--mobile),
body:not(.admin-body).pages.contacts .quote-form .file-dropzone .file-dropzone-subtitle,
body:not(.admin-body) .quote-form .file-dropzone .file-dropzone-subtitle,
body:not(.admin-body).pages.quote .quote-form .file-dropzone .file-dropzone-title:not(.file-dropzone-title--mobile),
body:not(.admin-body).pages.quote .quote-form .file-dropzone .file-dropzone-subtitle,
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone .file-dropzone-title:not(.file-dropzone-title--mobile),
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone .file-dropzone-subtitle { display: none !important; }
body:not(.admin-body).pages.contacts .quote-form .file-dropzone .file-dropzone-title--mobile,
body:not(.admin-body) .quote-form .file-dropzone .file-dropzone-title--mobile,
body:not(.admin-body).pages.quote .quote-form .file-dropzone .file-dropzone-title--mobile,
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone .file-dropzone-title--mobile { display: block !important; }
}


/* ===== 09-design-system.css ===== */
/* Охрана body:not(.admin-body) в этом файле остаётся намеренно.
   Проба 12.08.2026: снятие 1054 одиночных префиксов дало 314 расхождений на
   14 страницах (H1 42 → 35px на Главной, цвет текста, высота страниц) —
   специфичность правил падала на один класс, и их начинали перебивать
   соседние файлы. Убирать охрану можно только вместе с пересчётом
   специфичности всего ядра, отдельной задачей и с той же сверкой снимков. */
/* Промпт 4: финальный слой дизайн-системы
   Файл нарезан из единого application.css (как на сайте Дед Глеб).
   Порядок подключения в layout важен: поздние файлы перекрывают ранние. */
/* ============================================================
   Промпт 4: финальный слой дизайн-системы
   Нормализует токены, типографику, сетку, форму, карту, шапку и футер.
   ============================================================ */
:root {
  /* Только осознанные переопределения поверх 01-base.css.
     Базовые токены живут в 01-base.css — новые заводить там. */
  --color-text-muted: #5C6E84;
  --color-border-strong: #9bb8d5;
  --color-primary: #10233C;
  --shadow-raised: 0 2px 4px rgba(7, 26, 47, 0.06),
                   0 12px 32px rgba(7, 26, 47, 0.09);
  --font-weight-regular: var(--fw-regular);
  --font-weight-medium: var(--fw-regular);
  --font-weight-semibold: var(--fw-bold);
  --font-weight-bold: var(--fw-bold);
  --line: var(--color-border);
  --muted: var(--color-text-muted);
  --ink: var(--color-text);
  --blue: var(--color-primary);
  --blue-dark: var(--color-primary);
  --navy-900: var(--color-primary);
  --surface: var(--color-bg);
  --surface-2: var(--color-bg-soft);
  --bg: var(--color-bg-soft);
}

@media (max-width: 1023px) {
  :root { --gutter: 24px; }
}

@media (max-width: 767px) {
  :root {
    --gutter: 16px;
    --fs-h1: 2rem;
    --fs-h2: 1.625rem;
    --fs-h3: 1.25rem;
    --fs-lead: 1.0625rem;
    --fs-overline: 0.75rem;
    --lh-tight: 1.2;
    --control-h: 48px; /* решение 24.08.2026: на мобильном кнопка 48 */
    --space-20: 64px;
    --radius-card: 16px; /* радиус панелей один на всех ширинах (аудит 24.08) */
  }
}

/* Узкие телефоны: поля 12 вместо 16. На 320 в контейнер 288 не вставали
   кнопка финальной панели и карточки каталога (аудит 16.09.2026).
   404 заморожена и остаётся на 16: её картинка шире контейнера ровно
   на эти поля */
@media (max-width: 360px) {
  body:not(.admin-body):not(.not_found) { --gutter: 12px; }
}

body:not(.admin-body) {
  background: var(--color-bg-soft);
  color: var(--color-text-muted);
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
  line-height: var(--lh-text);
}

body:not(.admin-body) .wrap,
body:not(.admin-body) .contact-page .wrap {
  width: min(var(--container), calc(100% - (var(--gutter) * 2)));
  max-width: none;
  margin-inline: auto;
  padding-inline: 0;
}

body:not(.admin-body) h1,
body:not(.admin-body) .page-hero h1,
body:not(.admin-body) .page-hero--photo h1,
body:not(.admin-body) .contact-page-hero h1,
body:not(.admin-body) .hero h1,
body:not(.admin-body) .hero-title {
  max-width: var(--measure-lead);
  color: var(--color-text);
  font-size: var(--fs-h1);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
}

/* Hero с фотографией: заголовок на тёмном снимке остаётся белым.
   Правило выше перекрывало белый цвет из 02-redesign.css. */
body:not(.admin-body) .page-hero--photo h1 {
  color: #fff;
}

body:not(.admin-body) h2,
body:not(.admin-body) .section-title,
body:not(.admin-body) .section-head h2,
body:not(.admin-body) .contact-page h2,
body:not(.admin-body) .quote-form h2,
body:not(.admin-body) .contact-links-title,
body:not(.admin-body) .scroll-popup-title,
body:not(.admin-body) .quote-page h2 {
  max-width: var(--measure);
  color: var(--color-text);
  font-size: var(--fs-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-heading);
}

body:not(.admin-body) h3,
body:not(.admin-body) .card-title,
body:not(.admin-body) .category-card h3,
body:not(.admin-body) .product-card h3,
body:not(.admin-body) .industry-card h3,
body:not(.admin-body) .contact-link-card h3,
body:not(.admin-body) .contact-faq-item summary {
  color: var(--color-text);
  font-size: var(--fs-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-heading);
  letter-spacing: var(--ls-h3);
}

body:not(.admin-body) p,
body:not(.admin-body) li,
body:not(.admin-body) label,
body:not(.admin-body) input,
body:not(.admin-body) textarea,
body:not(.admin-body) select,
body:not(.admin-body) button,
body:not(.admin-body) a {
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
  letter-spacing: normal;
}

/* Абзацы и пункты списков идут во всю ширину своего блока: общее
   ограничение по мере (68ch) раз за разом обрезало текст вплотную к
   границе карточки. Меру держим только у длинных читаемых текстов —
   правовые страницы и рассказ о компании задают её сами. */
body:not(.admin-body) p,
body:not(.admin-body) li {
  max-width: none;
}

body:not(.admin-body) .lead,
body:not(.admin-body) .hero-description,
body:not(.admin-body) .contact-page .contact-hero-copy .lead,
body:not(.admin-body) .quote-page .contact-hero-copy .lead {
  max-width: var(--measure-lead);
  color: var(--color-text-muted);
  font-size: var(--fs-lead);
  font-weight: var(--fw-regular);
  line-height: var(--lh-text);
}

body:not(.admin-body) .eyebrow,
body:not(.admin-body) .kicker,
body:not(.admin-body) .section-eyebrow {
  margin-block: 0 var(--space-2);
  color: var(--color-primary);
  font-size: var(--fs-overline);
  font-weight: var(--fw-bold);
  line-height: var(--lh-heading);
  letter-spacing: var(--ls-overline);
  text-transform: uppercase;
}

body:not(.admin-body) .caption,
body:not(.admin-body) .field-hint,
body:not(.admin-body) .field-error,
body:not(.admin-body) .form-note,
body:not(.admin-body) .file-dropzone-note,
body:not(.admin-body) .file-pii-note,
body:not(.admin-body) .requisite-label,
body:not(.admin-body) .footer-title {
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
}

body:not(.admin-body) main > section,
body:not(.admin-body) .section,
body:not(.admin-body) .section-compact {
  padding-block: var(--space-20);
}

body:not(.admin-body) main > section:first-of-type,
body:not(.admin-body) .page-hero,
body:not(.admin-body) .hero,
body:not(.admin-body) .page-hero.contact-page-hero {
  padding-block-start: var(--space-12);
}

body:not(.admin-body) .section-head {
  margin-bottom: var(--space-8);
}

body:not(.admin-body) .grid-12,
body:not(.admin-body) .contact-hero-grid,
body:not(.admin-body) .map-panel,
body:not(.admin-body) .contact-page .contact-hero-grid,
body:not(.admin-body) .contact-page .map-panel {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--space-6);
  align-items: start;
}

body:not(.admin-body) .contact-hero-copy { grid-column: span 7; }
body:not(.admin-body) .contact-hero-card { grid-column: span 5; }
body:not(.admin-body) .map-panel-copy { grid-column: span 4; }
body:not(.admin-body) .map-panel-embed { grid-column: span 8; }

body:not(.admin-body) .contact-page .contact-hero-copy { grid-column: span 7; }
body:not(.admin-body) .contact-page .contact-hero-card { grid-column: span 5; }
body:not(.admin-body) .contact-page .map-panel-copy { grid-column: span 4; }
body:not(.admin-body) .contact-page .map-panel-embed { grid-column: span 8; }

body:not(.admin-body) .site-header {
  min-height: 72px;
  background: rgba(255, 255, 255, 0.96);
  border-bottom: var(--border-rule);
  box-shadow: none;
}

body:not(.admin-body) .header-inner,
body:not(.admin-body) .site-header.is-compact .header-inner {
  min-height: 72px;
  gap: var(--space-6);
}

body:not(.admin-body) .brand-logo,
body:not(.admin-body) .site-header.is-compact .brand-logo {
  width: 132px;
}

/* Атрибуты width/height у логотипа стоят ради резерва места (CLS).
   Размер задаёт CSS, поэтому высота всегда считается от ширины —
   иначе height="272" из разметки растягивает логотип (28.08.2026) */
body:not(.admin-body) .brand-logo,
body:not(.admin-body) .footer-logo {
  height: auto;
}

body:not(.admin-body) .primary-nav {
  gap: var(--space-4);
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
}

body:not(.admin-body) .primary-nav a,
body:not(.admin-body) .nav-link {
  position: relative;
  min-height: var(--tap-min);
  padding-inline: 0;
  border-radius: 0;
  color: var(--color-text-muted);
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
  line-height: var(--lh-compact);
}

body:not(.admin-body) .primary-nav a::after,
body:not(.admin-body) .nav-link::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: var(--space-2);
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  opacity: 0;
}

body:not(.admin-body) .primary-nav a.is-active,
body:not(.admin-body) .primary-nav .nav-link.is-active,
body:not(.admin-body) .nav-link[aria-current="page"],
body:not(.admin-body) .mobile-menu-panel a.is-active,
body:not(.admin-body) .primary-nav a:hover,
body:not(.admin-body) .nav-link:hover,
body:not(.admin-body) .nav-dropdown[open] > .nav-link {
  background: transparent;
  color: var(--color-primary);
  box-shadow: none;
}

body:not(.admin-body) .primary-nav a.is-active,
body:not(.admin-body) .primary-nav .nav-link.is-active,
body:not(.admin-body) .nav-link[aria-current="page"] {
  font-weight: var(--fw-bold);
}

body:not(.admin-body) .primary-nav a.is-active::after,
body:not(.admin-body) .primary-nav .nav-link.is-active::before,
body:not(.admin-body) .nav-link[aria-current="page"]::before {
  opacity: 1;
}

body:not(.admin-body) .nav-link::after {
  margin-left: var(--space-2);
}

body:not(.admin-body) .header-phone strong {
  color: var(--color-primary);
  font-size: var(--fs-body);
  font-weight: var(--fw-bold);
  white-space: nowrap;
}

body:not(.admin-body) .header-phone span {
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
}

body:not(.admin-body) .header-cta {
  height: 40px;
  min-height: 40px;
  padding-inline: var(--space-4);
  border: var(--border-rule);
  background: #ffffff;
  color: var(--color-primary);
}

body:not(.admin-body) .btn:disabled,
body:not(.admin-body) .btn[disabled],
body:not(.admin-body) .btn.is-loading {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

body:not(.admin-body) .quote-form {
  display: grid;
  gap: var(--space-6);
  padding: var(--space-8);
  border: var(--border-rule);
  border-radius: var(--radius-card);
  background: #ffffff;
  box-shadow: var(--shadow-card);
}

body:not(.admin-body) .contact-form-wrap {
  max-width: none;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

body:not(.admin-body) .quote-form-copy {
  margin: 0;
}

body:not(.admin-body) .quote-form-copy h2 {
  margin-block: var(--space-2) 0;
}

body:not(.admin-body) .quote-form-copy p {
  margin-block: var(--space-4) 0;
}

body:not(.admin-body) .quote-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-6);
}

body:not(.admin-body) .field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  min-width: 0;
}

body:not(.admin-body) .field-wide,
body:not(.admin-body) .consent,
body:not(.admin-body) .quote-validation-summary,
body:not(.admin-body) .quote-file-hint {
  grid-column: 1 / -1;
}

body:not(.admin-body) .field label,
body:not(.admin-body) .quote-form label,
body:not(.admin-body) .field-label-row label {
  color: var(--color-text);
  font-size: var(--fs-caption);
  font-weight: var(--fw-bold);
  line-height: var(--lh-compact);
}

body:not(.admin-body) .field-hint {
  margin: 0;
  color: var(--color-text-muted);
  font-weight: var(--fw-regular);
}

body:not(.admin-body) input,
body:not(.admin-body) textarea,
body:not(.admin-body) select,
body:not(.admin-body) .quote-form input,
body:not(.admin-body) .quote-form textarea,
body:not(.admin-body) .quote-form select {
  width: 100%;
  min-height: var(--control-h);
  padding-inline: var(--control-pad-x);
  border: var(--border-rule);
  border-radius: var(--radius-control);
  background: #ffffff;
  color: var(--color-text);
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
  line-height: var(--lh-compact);
  box-shadow: none;
  transition: border-color var(--transition), box-shadow var(--transition);
}

body:not(.admin-body) textarea,
body:not(.admin-body) .quote-form textarea,
body:not(.admin-body) .quote-grid .field-message textarea {
  height: auto;
  min-height: var(--textarea-min-h);
  padding: var(--space-3) var(--space-4);
  line-height: var(--lh-text);
  resize: vertical;
}

body:not(.admin-body) input:hover,
body:not(.admin-body) textarea:hover,
body:not(.admin-body) select:hover {
  border-color: var(--color-border-strong);
}

/* Ошибка поля: цвет + утолщённая рамка + значок, чтобы состояние
   читалось и без различения цвета (WCAG 1.4.1). Красный один — --color-error. */
body:not(.admin-body) .field.has-error input,
body:not(.admin-body) .field.has-error textarea,
body:not(.admin-body) .field.has-error select,
body:not(.admin-body) .consent.has-error input {
  border-color: var(--color-error);
  border-width: 2px;
}

body:not(.admin-body) .field-error {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  margin: 0;
  color: var(--color-error);
  font-weight: var(--fw-regular);
}

body:not(.admin-body) .field-error::before {
  content: "";
  flex: 0 0 16px;
  width: 16px;
  height: 16px;
  margin-top: 1px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cline x1='12' y1='8' x2='12' y2='13'/%3E%3Cline x1='12' y1='16.5' x2='12' y2='16.6'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cline x1='12' y1='8' x2='12' y2='13'/%3E%3Cline x1='12' y1='16.5' x2='12' y2='16.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

body:not(.admin-body) .form-errors,
body:not(.admin-body) .quote-validation-summary {
  margin: 0;
  padding: var(--space-4);
  border: 1px solid #e6b3ad;
  border-radius: var(--radius-control);
  background: #fff2ef;
  color: var(--color-error);
}

body:not(.admin-body) .file-dropzone,
body:not(.admin-body) .quote-grid .file-dropzone {
  min-height: 96px;
  padding: var(--space-4);
  border: 1px dashed var(--color-border);
  border-radius: var(--radius-control);
  background: #ffffff;
  color: var(--color-primary);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
  text-align: center;
  box-shadow: none;
}

body:not(.admin-body) .file-dropzone:hover,
body:not(.admin-body) .file-dropzone.is-dragging {
  border-color: var(--color-border-strong);
  background: #F4F8FD;
}

body:not(.admin-body) .file-dropzone-title {
  color: var(--color-text);
  font-size: var(--fs-caption);
  font-weight: var(--fw-regular);
  line-height: var(--lh-compact);
}

body:not(.admin-body) .file-select-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--control-h);
  padding-inline: var(--space-4);
  border: var(--border-rule);
  border-radius: var(--radius-control);
  background: #ffffff;
  color: var(--color-primary);
  font-size: var(--fs-body);
  font-weight: var(--fw-bold);
  line-height: 1;
}

body:not(.admin-body) .file-dropzone-note,
body:not(.admin-body) .file-pii-note {
  margin: 0;
  color: var(--color-text-muted);
  font-weight: var(--fw-regular);
}

body:not(.admin-body) .file-preview {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  min-height: var(--tap-min);
  margin: 0;
  padding: var(--space-2) var(--space-3);
  border: var(--border-rule);
  border-radius: var(--radius-chip);
  background: #F4F8FD;
  color: var(--color-text);
  font-weight: var(--fw-regular);
}

body:not(.admin-body) .file-preview[hidden] {
  display: none;
}

/* Файлов в заявке может быть несколько: превью стало списком, а сам блок
   выравнивает список и кнопку «Удалить файлы» по верхнему краю (27.08.2026) */
body:not(.admin-body) .file-preview-list {
  min-width: 0;
  display: grid;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

body:not(.admin-body) .file-preview-item {
  min-width: 0;
}

body:not(.admin-body) .file-preview-meta {
  min-width: 0;
  display: grid;
  gap: var(--space-1);
}

body:not(.admin-body) .file-preview-name {
  min-width: 0;
  overflow: hidden;
  color: var(--color-text);
  font-size: var(--fs-body);
  font-weight: var(--fw-bold);
  line-height: var(--lh-compact);
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:not(.admin-body) .file-preview-size {
  color: var(--color-text-muted);
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
}

body:not(.admin-body) .link-button,
body:not(.admin-body) .file-preview .link-button {
  min-width: var(--tap-min);
  min-height: var(--tap-min);
  padding-inline: var(--space-2);
  border: 0;
  background: transparent;
  color: var(--color-primary);
  font-size: var(--fs-caption);
  font-weight: var(--fw-bold);
  line-height: 1;
}

body:not(.admin-body) .quote-form .consent {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  gap: var(--space-2) var(--space-3);
  align-items: start;
  min-height: var(--tap-min);
  padding-block: var(--space-2);
  margin: 0;
  cursor: pointer;
}

body:not(.admin-body) .quote-form .consent input[type="checkbox"] {
  width: 24px;
  height: 24px;
  min-height: 24px;
  flex: 0 0 24px;
  align-self: center;
  margin: 0;
  padding: 0;
  border-radius: 6px;
}

body:not(.admin-body) .quote-form .consent label {
  color: var(--color-text-muted);
  font-size: var(--fs-caption);
  font-weight: var(--fw-regular);
  line-height: var(--lh-compact);
}

body:not(.admin-body) .quote-form .consent .field-error {
  grid-column: 2;
}

body:not(.admin-body) .quote-form > .btn {
  justify-self: start;
  min-width: 236px;
  margin: 0;
}

body:not(.admin-body) .contact-compact,
body:not(.admin-body) .contact-hero-card,
body:not(.admin-body) .map-panel-embed {
  border: var(--border-rule);
  border-radius: var(--radius-card);
  background: #ffffff;
  box-shadow: var(--shadow-card);
}

body:not(.admin-body) .contact-hero-card {
  display: grid;
  gap: var(--space-3);
  align-self: start;
  padding: var(--space-8);
}

body:not(.admin-body) .contact-hero-card .contact-line {
  display: grid;
  grid-template-columns: var(--icon-plate) minmax(0, 1fr);
  gap: var(--space-2);
  align-items: start;
  padding: 0;
}

body:not(.admin-body) .contact-hero-card .contact-line + .contact-line {
  padding-top: var(--space-3);
  border-top: var(--border-rule);
}

body:not(.admin-body) .contact-hero-card .icon-badge--sm {
  width: var(--icon-plate);
  height: var(--icon-plate);
  /* Радиус из шкалы: 8 (--radius-chip) был третьим значением */
  border-radius: var(--radius-control);
}

body:not(.admin-body) .contact-hero-card .contact-line-value {
  grid-column: 2;
  min-width: 0;
  color: var(--color-text);
  font-size: 1.25rem;
  font-weight: var(--fw-bold);
  line-height: var(--lh-heading);
  overflow-wrap: anywhere;
}

body:not(.admin-body) .contact-hero-card a.contact-line-value {
  min-height: var(--tap-min);
  display: inline-flex;
  align-items: center;
}

body:not(.admin-body) .contact-hero-card a[href^="tel:"] {
  white-space: nowrap;
}

body:not(.admin-body) .map-panel-copy {
  display: grid;
  align-content: start;
  gap: var(--space-3);
  padding: var(--space-8);
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

body:not(.admin-body) .map-panel-copy h2,
body:not(.admin-body) .map-panel-copy p {
  margin: 0;
}

body:not(.admin-body) .map-route-buttons,
body:not(.admin-body) .contact-page .map-route-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-2);
}

body:not(.admin-body) .map-route-button,
body:not(.admin-body) .contact-page .map-route-button {
  width: auto;
  min-height: var(--control-h);
  padding-inline: var(--space-4);
  gap: var(--space-2);
  white-space: normal;
}

body:not(.admin-body) .map-route-logo,
body:not(.admin-body) .map-route-button .brand-ico {
  width: var(--icon-inline);
  height: var(--icon-inline);
  flex: 0 0 var(--icon-inline);
}

body:not(.admin-body) .map-panel-embed,
body:not(.admin-body) .contact-page .map-panel-embed {
  position: relative;
  min-height: 0;
  height: auto;
  overflow: hidden;
  aspect-ratio: 16 / 9;
}

body:not(.admin-body) .map-panel-embed picture,
body:not(.admin-body) .map-panel-embed img,
body:not(.admin-body) .map-panel-embed iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

body:not(.admin-body) .map-preview {
  object-fit: cover;
  filter: none;
}

body:not(.admin-body) .map-load {
  position: absolute;
  inset: auto var(--space-4) var(--space-4) auto;
  z-index: 2;
  width: auto;
  min-width: 0;
  height: var(--control-h);
  min-height: var(--control-h);
  padding-inline: var(--space-4);
  border: var(--border-rule);
  border-radius: var(--radius-control);
  background: #ffffff;
  color: var(--color-primary);
  display: inline-flex;
  flex-direction: row;
  gap: var(--space-2);
  font-size: var(--fs-body);
  font-weight: var(--fw-bold);
  line-height: 1;
  box-shadow: var(--shadow-card);
}

/* Скрытие по атрибуту должно перебивать display выше: браузер прячет
   hidden своим display: none, а любое наше объявление display сильнее.
   Из-за этого кнопка «Открыть на карте» оставалась поверх карты после
   того, как виджет открылся, и на карте висели сразу две кнопки —
   наша и собственная кнопка Яндекса (15.08.2026). */
body:not(.admin-body) .map-load[hidden] {
  display: none;
}

body:not(.admin-body) .map-load:hover {
  border-color: var(--color-border-strong);
  background: #F4F8FD;
}

body:not(.admin-body) .map-load span,
body:not(.admin-body) .map-load .map-load-label {
  padding: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

body:not(.admin-body) .contact-requisites,
body:not(.admin-body) .contact-requisites-panel {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

body:not(.admin-body) .contact-requisites-head {
  margin-bottom: var(--space-6);
}

body:not(.admin-body) .contact-requisites-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-6) var(--space-8);
  margin: 0;
}

body:not(.admin-body) .contact-requisite {
  display: grid;
  gap: var(--space-1);
}

body:not(.admin-body) .contact-requisite dt {
  color: var(--color-text-muted);
  font-size: var(--fs-caption);
  font-weight: var(--fw-regular);
  line-height: var(--lh-compact);
}

body:not(.admin-body) .contact-requisite dd {
  margin: 0;
  color: var(--color-text);
  font-size: var(--fs-body);
  font-weight: var(--fw-bold);
  line-height: var(--lh-compact);
}

body:not(.admin-body) .contact-requisites-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-6);
  padding-top: 0;
  border-top: 0;
}

body:not(.admin-body) .requisites-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding-inline: var(--space-4);
  text-decoration: none;
}

body:not(.admin-body) .contact-links-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-6);
}

body:not(.admin-body) .contact-link-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-6) 0;
  border: 0;
  border-top: var(--border-rule);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  transition: color var(--transition);
}

body:not(.admin-body) .contact-link-card:hover {
  border-color: var(--color-border);
  box-shadow: none;
}

body:not(.admin-body) .contact-link-card p {
  margin: 0;
  color: var(--color-text-muted);
  font-size: var(--fs-body);
  line-height: var(--lh-text);
}

body:not(.admin-body) .contact-link-more {
  min-height: var(--tap-min);
  color: var(--color-primary);
  font-size: var(--fs-body);
  font-weight: var(--fw-bold);
}

body:not(.admin-body) .site-footer {
  padding-block: var(--space-16) var(--space-8);
  background: #06182f;
}

body:not(.admin-body) .site-footer .footer-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) repeat(3, minmax(0, 1fr));
  gap: var(--space-6);
  padding-bottom: var(--space-6);
}

body:not(.admin-body) .footer-block {
  display: grid;
  gap: var(--space-3);
}

body:not(.admin-body) .footer-title {
  margin: 0;
  color: var(--color-text-invert);
  font-size: var(--fs-caption);
  font-weight: var(--fw-bold);
  line-height: var(--lh-compact);
  text-transform: none;
}

body:not(.admin-body) .footer-block a,
body:not(.admin-body) .footer-block p,
body:not(.admin-body) .footer-brand p {
  margin: 0;
  color: rgba(255, 255, 255, 0.76);
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
  line-height: var(--lh-text);
}

body:not(.admin-body) .site-footer .footer-bottom {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3) var(--space-6);
  margin-top: 0;
  padding-block: var(--space-6) 0;
  border-top: 1px solid rgba(255, 255, 255, 0.16);
  color: rgba(255, 255, 255, 0.72);
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
}

body:not(.admin-body) .footer-legal {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}

body:not(.admin-body) .site-footer .footer-legal a {
  color: rgba(255, 255, 255, 0.78);
  font-size: var(--fs-caption);
  line-height: var(--lh-compact);
}

body:not(.admin-body) :where(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
  outline: 2px solid #1870BD;
  outline-offset: var(--focus-offset);
  box-shadow: var(--focus-ring);
}

@media (hover: hover) {
  body:not(.admin-body) a.category-card:hover,
  body:not(.admin-body) a.industry-card:hover,
  body:not(.admin-body) a.catalog-section-tile:hover {
    box-shadow: var(--shadow-raised);
    transform: translateY(-1px);
  }
}

@media (max-width: 1023px) {
  body:not(.admin-body) .contact-hero-copy,
  body:not(.admin-body) .contact-hero-card,
  body:not(.admin-body) .contact-page .contact-hero-copy,
  body:not(.admin-body) .contact-page .contact-hero-card {
    grid-column: span 12;
  }

  body:not(.admin-body) .map-panel-copy { grid-column: span 5; }
  body:not(.admin-body) .map-panel-embed { grid-column: span 7; }
  body:not(.admin-body) .contact-page .map-panel-copy { grid-column: span 5; }
  body:not(.admin-body) .contact-page .map-panel-embed { grid-column: span 7; }

  body:not(.admin-body) .primary-nav {
    gap: var(--space-3);
  }
}

@media (max-width: 920px) {
  body:not(.admin-body) .site-header,
  body:not(.admin-body) .header-inner,
  body:not(.admin-body) .site-header.is-compact .header-inner {
    min-height: 56px;
  }

  body:not(.admin-body) .brand-logo,
  body:not(.admin-body) .site-header.is-compact .brand-logo {
    width: 118px;
  }

  body:not(.admin-body) .header-cta {
    display: none;
  }

  /* Открытое меню: у шапки снимаем backdrop-filter — иначе она становится
     containing block для position: fixed, и панель схлопывается до высоты шапки,
     наезжая на содержимое страницы. */
  body:not(.admin-body).mobile-menu-open .site-header {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: #ffffff;
  }
  body:not(.admin-body) .mobile-menu-panel {
    position: fixed;
    inset: 56px 0 0;
    z-index: 120;
    display: grid;
    align-content: start;
    gap: 0;
    width: 100%;
    padding: var(--space-4) var(--gutter) calc(var(--space-6) + env(safe-area-inset-bottom));
    border: 0;
    border-top: var(--border-rule);
    border-radius: 0;
    background: #ffffff;
    box-shadow: 0 24px 56px rgba(7, 26, 47, 0.16);
    overflow-y: auto;
  }

  /* Только пункты навигации. Раньше правило било по всем ссылкам панели —
     и логотипу в шапке меню, и круглой кнопке звонка, и тёмной кнопке
     «Отправить спецификацию»: каждой доставалась разделительная линия и
     чужие поля, границы блоков расходились между собой (правка
     15.08.2026). Сами линии между пунктами рисует 13-mobile-final. */
  body:not(.admin-body) .mobile-menu-panel .mobile-menu-item {
    /* 48px — та же высота строки, что была до правки: с 56px список
       перестал помещаться и кнопка «Отправить спецификацию» уходила под
       нижний край экрана. */
    min-height: 48px;
    padding-inline: var(--space-4);
    border-bottom: var(--border-rule);
    border-radius: 0;
    color: var(--color-text);
    font-size: var(--fs-lead);
    font-weight: var(--fw-regular);
  }

  body:not(.admin-body) .mobile-menu-panel .mobile-menu-item.is-active {
    background: #F4F8FD;
    color: var(--color-primary);
    font-weight: var(--fw-bold);
  }

  body:not(.admin-body) .mobile-menu-contacts {
    gap: var(--space-3);
    margin-top: var(--space-4);
    padding-top: var(--space-4);
    border-top: 0;
  }
}

@media (max-width: 767px) {
  body:not(.admin-body) {
    padding-inline: env(safe-area-inset-left) env(safe-area-inset-right);
  }

  body:not(.admin-body) main > section,
  body:not(.admin-body) .section,
  body:not(.admin-body) .section-compact {
    padding-block: var(--space-20);
  }

  body:not(.admin-body) .grid-12,
  body:not(.admin-body) .contact-hero-grid,
  body:not(.admin-body) .map-panel,
  body:not(.admin-body) .contact-page .contact-hero-grid,
  body:not(.admin-body) .contact-page .map-panel,
  body:not(.admin-body) .quote-grid,
  body:not(.admin-body) .contact-links-grid,
  body:not(.admin-body) .site-footer .footer-grid,
body:not(.admin-body) .quote-page .contact-hero-grid,
body:not(.admin-body) .quote-page .map-panel {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }

  body:not(.admin-body) .grid-12 > *,
  body:not(.admin-body) .contact-hero-copy,
  body:not(.admin-body) .contact-hero-card,
  body:not(.admin-body) .map-panel-copy,
  body:not(.admin-body) .map-panel-embed,
  body:not(.admin-body) .contact-page .contact-hero-copy,
  body:not(.admin-body) .contact-page .contact-hero-card,
  body:not(.admin-body) .contact-page .map-panel-copy,
  body:not(.admin-body) .contact-page .map-panel-embed {
    grid-column: 1 / -1;
  }

  body:not(.admin-body) .quote-form,
  body:not(.admin-body) .contact-hero-card {
    padding: 20px;
    border-radius: var(--radius-card);
  }

  body:not(.admin-body) .quote-form > .btn,
  body:not(.admin-body) .btn-primary,
  body:not(.admin-body) .hero-actions .btn,
  body:not(.admin-body) .map-route-button,
  body:not(.admin-body) .contact-page .map-route-button,
  body:not(.admin-body) .requisites-action,
body:not(.admin-body) .quote-page .map-route-button {
    width: 100%;
  }

  body:not(.admin-body) .file-dropzone,
  body:not(.admin-body) .quote-grid .file-dropzone {
    min-height: 88px;
  }

  body:not(.admin-body) .file-dropzone-title {
    display: none;
  }

  body:not(.admin-body) .file-select-button {
    width: 100%;
    min-height: var(--control-h);
  }

  body:not(.admin-body) .contact-hero-card .contact-line {
    grid-template-columns: var(--icon-inline) minmax(0, 1fr);
    padding-block: var(--space-2);
  }

  body:not(.admin-body) .contact-hero-card .icon-badge--sm {
    width: var(--icon-inline);
    height: var(--icon-inline);
    background: transparent;
  }

  body:not(.admin-body) .contact-hero-card .contact-line-value {
    font-size: var(--fs-lead);
  }

  body:not(.admin-body) .map-route-buttons,
  body:not(.admin-body) .contact-page .map-route-buttons,
  body:not(.admin-body) .contact-requisites-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-3);
  }

  body:not(.admin-body) .map-panel-embed,
  body:not(.admin-body) .contact-page .map-panel-embed {
    aspect-ratio: 4 / 3;
    max-height: 320px;
  }

  body:not(.admin-body) .map-load {
    left: var(--space-4);
    right: var(--space-4);
    bottom: var(--space-4);
    width: auto;
  }

  body:not(.admin-body) .contact-requisites-grid {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }

  body:not(.admin-body) .site-footer {
    padding-block: var(--space-12) var(--space-6);
  }

  body:not(.admin-body) .footer-block a,
  body:not(.admin-body) .footer-block p {
    min-height: var(--tap-min);
    display: inline-flex;
    align-items: center;
  }
}

@media (max-width: 359px) {
  body:not(.admin-body) .header-phone-icon,
  body:not(.admin-body) .mobile-menu-toggle {
    min-width: var(--tap-min);
    padding-inline: var(--space-2);
  }
}

/* Contacts final tune: compact hero,
equal route buttons {
  display: none;
}

body:not(.admin-body).pages.contacts .page-hero.contact-page-hero {
  min-height: 0;
  padding-block: 24px 28px;
}

body:not(.admin-body).pages.contacts .contact-page .contact-hero-grid,
body:not(.admin-body).pages.contacts .contact-hero-grid {
  align-items: center;
  min-height: 0;
}

body:not(.admin-body).pages.contacts .contact-hero-copy {
  padding-block: 0;
}

body:not(.admin-body).pages.contacts .contact-page-hero h1 {
  max-width: 760px;
  margin: 0;
}

body:not(.admin-body).pages.contacts .contact-page .contact-hero-copy .lead {
  max-width: 720px;
  margin-top: var(--space-4);
}

body:not(.admin-body).pages.contacts .contact-hero-card {
  align-self: center;
  gap: 10px;
  min-height: 0;
  height: auto;
  padding: 20px;
}

body:not(.admin-body).pages.contacts .contact-page .map-route-buttons,
body:not(.admin-body).pages.contacts .map-route-buttons {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  width: min(100%, 360px);
  gap: var(--space-3);
}

/* Кнопки навигаторов — рядом, а не друг под другом (когда колонка это позволяет) */
@media (min-width: 1200px) {
  body:not(.admin-body).pages.contacts .contact-page .map-route-buttons,
  body:not(.admin-body).pages.contacts .map-route-buttons {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }
  body:not(.admin-body).pages.contacts .contact-page .map-route-button,
  body:not(.admin-body).pages.contacts .map-route-button {
    padding-inline: 12px;
    text-align: left;
  }
}

body:not(.admin-body).pages.contacts .contact-page .map-route-button,
body:not(.admin-body).pages.contacts .map-route-button {
  width: 100%;
  min-height: 52px;
  justify-content: flex-start;
  padding-inline: var(--space-4);
  white-space: normal;
}

body:not(.admin-body) .contact-faq-list.contact-faq-list.contact-faq-list {
  width: 100%;
  max-width: none;
}

body:not(.admin-body) .contact-faq-item.contact-faq-item.contact-faq-item p {
  max-width: none;
}

@media (max-width: 767px) {
  body:not(.admin-body).pages.contacts .page-hero.contact-page-hero {
    padding-block: var(--space-6);
  }

  body:not(.admin-body).pages.contacts .contact-hero-card {
    padding: 20px;
  }

  body:not(.admin-body).pages.contacts .contact-page .map-route-buttons,
  body:not(.admin-body).pages.contacts .map-route-buttons {
    width: 100%;
  }
}

/* Stock page redesign: file-first B2B flow */
@media (min-width: 1080.02px) {
  body:not(.admin-body) .site-header .primary-nav {
    gap: 12px;
    font-size: 15px;
  }

  body:not(.admin-body) .site-header .primary-nav a,
  body:not(.admin-body) .site-header .nav-link {
    font-size: 15px;
    white-space: nowrap;
  }

  body:not(.admin-body) .site-header .header-inner {
    gap: 18px;
  }

  body:not(.admin-body) .site-header .header-actions {
    gap: 12px;
  }

  body:not(.admin-body) .site-header .header-phone {
    display: inline-flex;
    gap: 8px;
  }

  body:not(.admin-body) .site-header .header-phone-text > span {
    display: none;
  }

  body:not(.admin-body) .site-header .header-phone strong {
    font-size: 15px;
  }

  body:not(.admin-body) .site-header .header-phone-ico {
    width: 18px;
    height: 18px;
    flex-basis: 18px;
  }

  body:not(.admin-body) .site-header .header-cta {
    padding-inline: 18px;
  }
}

body:not(.admin-body) .page-stock {
  background:
    radial-gradient(circle at 0 16%, rgba(40, 126, 210, 0.10), transparent 30%),
    linear-gradient(180deg, #ffffff 0%, #f4f8fd 42%, #ffffff 100%);
  color: var(--color-text);
}

body:not(.admin-body) .stock-service-hero {
  padding: 56px 0 34px;
}

body:not(.admin-body) .stock-service-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.72fr);
  gap: clamp(40px, 6vw, 88px);
  align-items: start;
}

body:not(.admin-body) .stock-service-copy {
}

body:not(.admin-body) .page-stock .eyebrow {
  color: #1870BD;
}

body:not(.admin-body) .page-stock h1 {
  max-width: 760px;
  margin: 0;
  color: var(--color-primary);
  font-size: clamp(40px, 4vw, 56px);
  line-height: 1.1;
}

body:not(.admin-body) .page-stock .lead {
  max-width: 710px;
  margin-top: 20px;
  color: var(--color-text-muted);
  font-size: 18px;
  line-height: 1.55;
}

body:not(.admin-body) .stock-hero-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  max-width: 760px;
  margin: 36px 0 0;
  padding: 0;
  list-style: none;
}

body:not(.admin-body) .stock-hero-facts li {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  color: var(--color-text-muted);
}

body:not(.admin-body) .stock-hero-facts strong,
body:not(.admin-body) .stock-hero-facts small {
  display: block;
}

body:not(.admin-body) .stock-hero-facts strong {
  color: var(--color-primary);
  font-size: 14px;
  line-height: 1.25;
}

body:not(.admin-body) .stock-hero-facts small {
  margin-top: 2px;
  font-size: 12px;
  line-height: 1.35;
}body:not(.admin-body) .stock-mini-icon,
body:not(.admin-body) .stock-related-icon {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: #ffffff;
  color: #1870BD;
}

body:not(.admin-body) .stock-mini-icon {
  width: 38px;
  height: 38px;
}body:not(.admin-body) .stock-mini-icon::before,
body:not(.admin-body) .stock-related-icon::before,
body:not(.admin-body) .stock-mail-icon::before,
body:not(.admin-body) .download-mark::before {
  content: "";
  display: block;
  width: 18px;
  height: 18px;
  background: currentColor;
  -webkit-mask: var(--stock-icon) center / contain no-repeat;
  mask: var(--stock-icon) center / contain no-repeat;
}

body:not(.admin-body) .stock-mini-icon--box,
body:not(.admin-body) .stock-related-icon--catalog {
  --stock-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z'/%3E%3Cpath d='m3.3 7 8.7 5 8.7-5'/%3E%3Cpath d='M12 22V12'/%3E%3C/svg%3E");
}body:not(.admin-body) .stock-mini-icon--list,
body:not(.admin-body) .stock-related-icon--supply {
  --stock-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 6h13'/%3E%3Cpath d='M8 12h13'/%3E%3Cpath d='M8 18h13'/%3E%3Cpath d='M3 6h.01'/%3E%3Cpath d='M3 12h.01'/%3E%3Cpath d='M3 18h.01'/%3E%3C/svg%3E");
}

body:not(.admin-body) .stock-mini-icon--shield {
  --stock-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 13c0 5-3.5 7.5-8 9-4.5-1.5-8-4-8-9V5l8-3 8 3Z'/%3E%3Cpath d='m9 12 2 2 4-5'/%3E%3C/svg%3E");
}body:not(.admin-body) .download-mark {
  --stock-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3Cpath d='M12 15V3'/%3E%3C/svg%3E");
}

body:not(.admin-body) .stock-related-icon--delivery {
  --stock-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 17h4V5H2v12h3'/%3E%3Cpath d='M14 17h1'/%3E%3Cpath d='M20 17h2v-5l-3-5h-5'/%3E%3Ccircle cx='7.5' cy='17.5' r='2.5'/%3E%3Ccircle cx='17.5' cy='17.5' r='2.5'/%3E%3C/svg%3E");
}

body:not(.admin-body) .stock-related-icon--contacts,
body:not(.admin-body) .stock-mail-icon {
  --stock-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='m3 7 9 6 9-6'/%3E%3C/svg%3E");
}

body:not(.admin-body) .stock-file-card {
  padding: 42px 40px;
  border: 1px solid var(--color-border);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: var(--shadow-card);
}

body:not(.admin-body) .stock-file-head {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 18px;
  align-items: center;
}

body:not(.admin-body) .stock-file-icon {
  position: relative;
  display: inline-flex;
  width: 64px;
  height: 64px;
  align-items: flex-end;
  justify-content: center;
  padding-bottom: 8px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: linear-gradient(180deg, #f7fff9, #dff5e6);
  color: #129447;
  font-size: 10px;
  font-weight: 600;
}

body:not(.admin-body) .stock-file-icon::before {
  content: "";
  position: absolute;
  top: 12px;
  left: 18px;
  width: 27px;
  height: 34px;
  border: 2px solid currentColor;
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.7);
}

body:not(.admin-body) .stock-file-icon::after {
  content: "";
  position: absolute;
  top: 20px;
  left: 24px;
  width: 15px;
  height: 14px;
  border-top: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  box-shadow: 0 6px 0 currentColor;
}

body:not(.admin-body) .stock-file-icon--empty {
  color: var(--color-text-muted);
  border-color: var(--color-border);
  background: #f8fafc;
}body:not(.admin-body) .stock-workflow-card h2,
body:not(.admin-body) .stock-related h2 {
  margin: 0;
  color: var(--color-primary);
}

body:not(.admin-body) .stock-file-date {
  margin: 8px 0 0;
  color: #179444;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.35;
}

body:not(.admin-body) .stock-file-meta {
  margin-top: 24px;
  font-size: 15px;
}

body:not(.admin-body) .stock-file-download {
  width: 100%;
  margin-top: 28px;
}

body:not(.admin-body) .download-mark {
  display: inline-flex;
  color: currentColor;
}

body:not(.admin-body) .stock-workflow-section {
  padding: 0 0 36px;
}

body:not(.admin-body) .stock-workflow-card {
  padding: 40px 48px 48px;
  border: 1px solid var(--color-border);
  border-radius: 16px;
  background: #ffffff;
  box-shadow: var(--shadow-card);
}

body:not(.admin-body) .stock-workflow-card > h2 {
  font-size: 28px;
}

body:not(.admin-body) .stock-process-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(28px, 5vw, 72px);
  margin: 34px 0 0;
  padding: 0;
  list-style: none;
}

body:not(.admin-body) .stock-process-item {
  position: relative;
  display: grid;
  grid-template-columns: 42px 52px;
  gap: 14px 18px;
  align-items: center;
}body:not(.admin-body) .stock-process-num {
  display: inline-flex;
  width: 42px;
  height: 42px;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: #1870BD;
  color: #ffffff;
  font-size: 15px;
  font-weight: 600;
}

body:not(.admin-body) .stock-process-item h3 {
  grid-column: 1 / -1;
  margin: 2px 0 0;
  color: var(--color-primary);
  font-size: 18px;
  line-height: 1.35;
}

body:not(.admin-body) .stock-process-item p {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--color-text-muted);
  font-size: 15px;
  line-height: 1.55;
}

@media (max-width: 640px) {
}

body:not(.admin-body) .stock-sheet-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 5px;
}

body:not(.admin-body) .stock-sheet-grid i {
  display: block;
  height: 20px;
  border: 1px solid var(--color-border);
  background: #ffffff;
}

body:not(.admin-body) .stock-xlsx-badge {
  position: absolute;
  right: 0;
  bottom: 10px;
  padding: 9px 12px;
  border-radius: 8px;
  background: #17a453;
  color: #ffffff;
  font-size: 12px;
  font-weight: 600;
}

body:not(.admin-body) .stock-text-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 18px;
  margin-right: 18px;
  color: #1870BD;
  font-weight: 600;
  text-decoration: none;
}

body:not(.admin-body) .stock-text-link:hover {
  color: var(--color-primary);
}

body:not(.admin-body) .stock-send-or {
  color: var(--color-text-muted);
  font-weight: 600;
}

body:not(.admin-body) .stock-send-email {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  min-height: 64px;
  padding: 16px 20px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  background: #ffffff;
  color: var(--color-text-muted);
}

body:not(.admin-body) .stock-mail-icon {
  display: inline-flex;
  color: #1870BD;
}

body:not(.admin-body) .stock-send-email a {
  color: #1870BD;
  font-weight: 600;
  text-decoration: none;
}

body:not(.admin-body) .stock-related {
  margin-top: 42px;
}

body:not(.admin-body) .stock-related h2 {
  font-size: 24px;
}

body:not(.admin-body) .stock-related-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 22px;
  margin-top: 22px;
}

body:not(.admin-body) .stock-related-card {
  display: grid;
  gap: 12px;
  min-width: 0;
  padding: 22px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  background: #ffffff;
  color: inherit;
  text-decoration: none;
  transition: border-color var(--transition), box-shadow var(--transition), transform var(--transition);
}

body:not(.admin-body) .stock-related-card:hover {
  border-color: #1870BD;
  box-shadow: var(--shadow-card);
  transform: translateY(-1px);
}

body:not(.admin-body) .stock-related-icon {
  width: 36px;
  height: 36px;
}

body:not(.admin-body) .stock-related-card h3 {
  margin: 0;
  color: var(--color-primary);
  font-size: 17px;
  line-height: 1.35;
}

body:not(.admin-body) .stock-related-card p {
  margin: 0;
  color: var(--color-text-muted);
  font-size: 14px;
  line-height: 1.55;
}

@media (max-width: 1180px) {

  body:not(.admin-body) .stock-send-or,
  body:not(.admin-body) .stock-send-email {
    grid-column: 2 / -1;
  }

  body:not(.admin-body) .stock-related-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 920px) {
  body:not(.admin-body) .stock-service-hero {
    padding-top: 32px;
  }

  body:not(.admin-body) .stock-service-grid,

  body:not(.admin-body) .stock-hero-facts,
  body:not(.admin-body) .stock-process-list {
    grid-template-columns: 1fr;
  }body:not(.admin-body) .stock-workflow-card {
    padding: 28px 24px 32px;
  }

  body:not(.admin-body) .stock-send-or,
  body:not(.admin-body) .stock-send-email {
    grid-column: auto;
  }

  
  body:not(.admin-body) .stock-file-download {
    width: 100%;
  }
}

@media (max-width: 640px) {
  body:not(.admin-body) .page-stock h1 {
    font-size: 32px;
  }

  body:not(.admin-body) .stock-file-card,

  body:not(.admin-body) .stock-file-head {
    grid-template-columns: 54px minmax(0, 1fr);
  }

  body:not(.admin-body) .stock-file-icon {
    width: 54px;
    height: 54px;
  }

  body:not(.admin-body) .stock-related-grid {
    grid-template-columns: 1fr;
  }
}

/* Stock page compact tune: closer to the provided render proportions. */
body:not(.admin-body) .stock-service-hero {
  padding-top: 34px;
  padding-bottom: 26px;
}

body:not(.admin-body) .stock-service-grid {
  align-items: center;
}

body:not(.admin-body) .stock-file-card {
  padding: 28px;
}

body:not(.admin-body) .stock-file-head {
  grid-template-columns: 56px minmax(0, 1fr);
  gap: 16px;
}

body:not(.admin-body) .stock-file-icon {
  width: 56px;
  height: 56px;
  border-radius: 12px;
}

body:not(.admin-body) .stock-file-icon::before {
  top: 10px;
  left: 16px;
  width: 24px;
  height: 30px;
}

body:not(.admin-body) .stock-file-icon::after {
  top: 18px;
  left: 22px;
  width: 13px;
  height: 12px;
}

body:not(.admin-body) .stock-file-date {
  margin-top: 5px;
  font-size: 14px;
}

body:not(.admin-body) .stock-file-meta {
  margin-top: 18px;
  font-size: 14px;
}

body:not(.admin-body) .stock-file-download {
  margin-top: 20px;
}

body:not(.admin-body) .stock-workflow-card {
  padding-top: 32px;
}

body:not(.admin-body) .stock-process-list {
  align-items: start;
  gap: clamp(26px, 4vw, 56px);
  margin-top: 28px;
}

body:not(.admin-body) .stock-process-item {
  align-self: start;
  grid-template-columns: 38px 46px minmax(0, 1fr);
  grid-template-rows: auto auto auto;
  gap: 12px 16px;
  height: auto;
  min-height: 0;
}

body:not(.admin-body) .stock-process-num {
  width: 38px;
  height: 38px;
  font-size: 14px;
}

body:not(.admin-body) .stock-process-item h3 {
  margin-top: 0;
  font-size: 17px;
}

body:not(.admin-body) .stock-process-item p {
  font-size: 14px;
  line-height: 1.48;
}body:not(.admin-body) .stock-info-grid {
  margin-top: 38px;
}

body:not(.admin-body) .stock-related {
  margin-top: 34px;
}

body:not(.admin-body) .stock-related-card {
  padding: 20px;
}

@media (max-width: 920px) {
  body:not(.admin-body) .stock-service-hero {
    padding-top: 28px;
  }
}

/* Contacts compact reference layout */
body:not(.admin-body).pages.contacts {
  background: #F4F8FD;
}

body:not(.admin-body).pages.contacts .wrap {
  width: min(var(--container), calc(100% - 2 * var(--gutter)));
  max-width: var(--container);
}

body:not(.admin-body).pages.contacts .breadcrumbs {
  min-height: 48px;
  padding: 0;
  background: #ffffff;
  border-bottom: 1px solid var(--color-border);
}

body:not(.admin-body).pages.contacts .breadcrumbs .wrap {
  min-height: 48px;
  display: flex;
  align-items: center;
}

body:not(.admin-body).pages.contacts .breadcrumbs ol,
body:not(.admin-body).pages.contacts .breadcrumbs a,
body:not(.admin-body).pages.contacts .breadcrumbs span {
  color: #5C6E84;
  font-size: 14px;
  line-height: 20px;
}

body:not(.admin-body).pages.contacts .contact-page {
  background:
    radial-gradient(circle at 0 18%, rgba(37, 117, 190, 0.10), transparent 28%),
    linear-gradient(180deg, #ffffff 0%, #F4F8FD 36%, #F4F8FD 100%);
}

body:not(.admin-body).pages.contacts .contact-page > .section,
body:not(.admin-body).pages.contacts .contact-page > .section-compact {
  padding-block: 24px 0;
}

body:not(.admin-body).pages.contacts .page-hero.contact-page-hero {
  min-height: 0;
  padding-block: 32px;
  background: transparent;
}

body:not(.admin-body).pages.contacts .contact-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 520px;
  gap: 48px;
  align-items: center;
}

body:not(.admin-body).pages.contacts .contact-hero-copy {
  max-width: 580px;
}

body:not(.admin-body).pages.contacts .contact-page-hero .eyebrow {
  margin-bottom: 12px;
  font-size: 13px;
  font-weight: 600;
  line-height: 18px;
  letter-spacing: 0.08em;
}

body:not(.admin-body).pages.contacts .contact-page-hero h1 {
  max-width: 570px;
  margin: 0;
  color: #10233C;
  font-size: 42px;
  font-weight: 600;
  line-height: 1.15;
}

body:not(.admin-body).pages.contacts .contact-page .contact-hero-copy .lead {
  max-width: 560px;
  margin-top: 20px;
  color: #5C6E84;
  font-size: 17px;
  line-height: 1.55;
}

body:not(.admin-body).pages.contacts .contact-hero-card {
  width: 520px;
  align-self: center;
}

body:not(.admin-body).pages.contacts .contact-form-section,
body:not(.admin-body).pages.complex_supply .contact-form-section {
  padding-top: 24px;
  scroll-margin-top: 92px;
}

body:not(.admin-body).pages.contacts .contact-form-wrap .quote-form,
body:not(.admin-body).pages.quote .contact-form-wrap .quote-form,
body:not(.admin-body).pages.complex_supply .contact-form-wrap .quote-form {
  display: grid;
  gap: 0;
  padding: 32px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: #ffffff;
  box-shadow: 0 6px 20px rgba(13, 48, 82, 0.04);
}

body:not(.admin-body).pages.contacts .quote-form-copy,
body:not(.admin-body).pages.quote .quote-form-copy,
body:not(.admin-body).pages.complex_supply .quote-form-copy {
  margin: 0 0 24px;
}

body:not(.admin-body).pages.contacts .quote-form-copy .kicker,
body:not(.admin-body).pages.quote .quote-form-copy .kicker,
body:not(.admin-body).pages.complex_supply .quote-form-copy .kicker {
  margin-bottom: 8px;
  font-size: 13px;
  font-weight: 600;
  line-height: 18px;
  letter-spacing: 0.08em;
}

body:not(.admin-body).pages.contacts .quote-form-copy h2,
body:not(.admin-body).pages.quote .quote-form-copy h2,
body:not(.admin-body).pages.complex_supply .quote-form-copy h2 {
  margin: 0;
  max-width: 630px;
  font-size: 28px;
  font-weight: 600;
  line-height: 1.25;
}

body:not(.admin-body).pages.contacts .quote-form-copy p,
body:not(.admin-body).pages.quote .quote-form-copy p,
body:not(.admin-body).pages.complex_supply .quote-form-copy p {
  margin-top: 10px;
  color: #5C6E84;
  font-size: 14px;
  line-height: 1.5;
}

body:not(.admin-body).pages.contacts .quote-grid,
body:not(.admin-body).pages.quote .quote-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 24px;
}

body:not(.admin-body).pages.contacts .quote-form .field,
body:not(.admin-body).pages.quote .quote-form .field,
body:not(.admin-body).pages.complex_supply .quote-form .field {
  gap: 7px;
}

body:not(.admin-body).pages.contacts .quote-form label,
body:not(.admin-body).pages.contacts .quote-form .field-label-row label,
body:not(.admin-body).pages.quote .quote-form .field-label-row label,
body:not(.admin-body).pages.quote .quote-form label,
body:not(.admin-body).pages.complex_supply .quote-form label,
body:not(.admin-body).pages.complex_supply .quote-form .field-label-row label {
  color: #10233C;
  font-size: 14px;
  font-weight: 600;
  line-height: 20px;
}

body:not(.admin-body).pages.contacts .quote-form input,
body:not(.admin-body).pages.contacts .quote-form select,
body:not(.admin-body).pages.quote .quote-form select,
body:not(.admin-body).pages.quote .quote-form input,
body:not(.admin-body).pages.complex_supply .quote-form input,
body:not(.admin-body).pages.complex_supply .quote-form select {
  min-height: 48px;
  padding-inline: 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  color: #10233C;
  font-size: 15px;
  line-height: 1.3;
}

body:not(.admin-body).pages.contacts .contact-method-hint,
body:not(.admin-body).pages.quote .contact-method-hint,
body:not(.admin-body).pages.complex_supply .contact-method-hint {
  margin: -4px 0 0;
  color: #5C6E84;
  font-size: 13px;
  line-height: 18px;
}

body:not(.admin-body).pages.contacts .field-hint,
body:not(.admin-body).pages.quote .field-hint,
body:not(.admin-body).pages.complex_supply .field-hint {
  color: #5C6E84;
  font-size: 13px;
  line-height: 18px;
}

body:not(.admin-body).pages.contacts .quote-form .file-field,
body:not(.admin-body).pages.contacts .quote-form .field-message,
body:not(.admin-body).pages.quote .quote-form .field-message,
body:not(.admin-body).pages.quote .quote-form .file-field,
body:not(.admin-body).pages.complex_supply .quote-form .file-field,
body:not(.admin-body).pages.complex_supply .quote-form .field-message {
  min-height: 177px;
}

body:not(.admin-body).pages.contacts .quote-form .file-dropzone,
body:not(.admin-body).pages.quote .quote-form .file-dropzone,
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone {
  min-height: 150px;
  padding: 16px;
  border: 1px dashed var(--color-border);
  border-radius: var(--radius-control);
  background: #ffffff;
  gap: 6px;
  text-align: center;
}

body:not(.admin-body).pages.contacts .quote-form .file-dropzone::before,
body:not(.admin-body).pages.quote .quote-form .file-dropzone::before,
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone::before {
  content: "";
  width: 34px;
  height: 34px;
  margin-bottom: 2px;
  background: #1b6fb7;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpolyline points='17 8 12 3 7 8'/%3E%3Cline x1='12' y1='3' x2='12' y2='15'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpolyline points='17 8 12 3 7 8'/%3E%3Cline x1='12' y1='3' x2='12' y2='15'/%3E%3C/svg%3E") center / contain no-repeat;
}

body:not(.admin-body).pages.contacts .file-dropzone-title,
body:not(.admin-body).pages.quote .file-dropzone-title,
body:not(.admin-body).pages.complex_supply .file-dropzone-title {
  display: block;
  color: #10233C;
  font-size: 15px;
  font-weight: 400;
  line-height: 1.25;
}

body:not(.admin-body).pages.contacts .file-dropzone-subtitle,
body:not(.admin-body).pages.quote .file-dropzone-subtitle,
body:not(.admin-body).pages.complex_supply .file-dropzone-subtitle {
  color: #5C6E84;
  font-size: 13px;
  line-height: 1.35;
}

body:not(.admin-body).pages.contacts .file-select-button,
body:not(.admin-body).pages.quote .file-select-button {
  min-height: 40px;
  margin-top: 4px;
  padding-inline: 20px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  background: #ffffff;
  color: #10233C;
  font-size: 14px;
  font-weight: 600;
}

body:not(.admin-body).pages.contacts .file-dropzone-note,
body:not(.admin-body).pages.quote .file-dropzone-note,
body:not(.admin-body).pages.complex_supply .file-dropzone-note {
  margin-top: 2px;
  color: #5C6E84;
  font-size: 12px;
  line-height: 1.35;
}

body:not(.admin-body).pages.contacts .quote-file-hint,
body:not(.admin-body).pages.quote .quote-file-hint,
body:not(.admin-body).pages.complex_supply .quote-file-hint {
  display: none;
}

body:not(.admin-body).pages.contacts .quote-form textarea,
body:not(.admin-body).pages.quote .quote-form textarea,
body:not(.admin-body).pages.complex_supply .quote-form textarea {
  height: 150px;
  min-height: 150px;
  max-height: 260px;
  padding: 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  font-size: 15px;
  line-height: 1.5;
}

body:not(.admin-body).pages.contacts .quote-form .consent,
body:not(.admin-body).pages.quote .quote-form .consent,
body:not(.admin-body).pages.complex_supply .quote-form .consent {
  min-height: 44px;
  margin-top: 0;
  padding-block: 6px;
}

body:not(.admin-body).pages.contacts .quote-form .consent label,
body:not(.admin-body).pages.quote .quote-form .consent label,
body:not(.admin-body).pages.complex_supply .quote-form .consent label {
  color: #5C6E84;
  font-size: 13px;
  line-height: 1.5;
}

body:not(.admin-body).pages.contacts .quote-validation-summary,
body:not(.admin-body).pages.quote .quote-validation-summary {
  margin-top: 16px;
}

body:not(.admin-body).pages.contacts .quote-form-actions,
body:not(.admin-body).pages.quote .quote-form-actions,
body:not(.admin-body).pages.complex_supply .quote-form-actions {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 24px;
  margin-top: 20px;
}

body:not(.admin-body).pages.contacts .quote-form-actions .btn,
body:not(.admin-body).pages.quote .quote-form-actions .btn,
body:not(.admin-body).pages.complex_supply .quote-form-actions .btn {
  min-width: 260px;
  height: 48px;
  min-height: 48px;
  border-radius: var(--radius-control);
  background: #10233C;
  color: #ffffff;
  font-size: 15px;
  font-weight: 600;
}

body:not(.admin-body).pages.contacts .quote-form-actions .form-note,
body:not(.admin-body).pages.quote .quote-form-actions .form-note,
body:not(.admin-body).pages.complex_supply .quote-form-actions .form-note {
  margin: 0;
  color: #5C6E84;
  font-size: 13px;
  line-height: 1.45;
}

/* Без nowrap: на 768 строка с почтой (404px) не помещалась в 323px ряда
   и давала прокрутку страницы на 48px (аудит 16.09.2026) */
body:not(.admin-body).pages.contacts .quote-direct-email,
body:not(.admin-body).pages.quote .quote-direct-email {
  min-width: 0;
  text-align: right;
}

body:not(.admin-body).pages.contacts .quote-direct-email a,
body:not(.admin-body).pages.quote .quote-direct-email a {
  color: #10233C;
  font-size: inherit;
  font-weight: 600;
}

body:not(.admin-body).pages.contacts .contact-calc-section {
  padding-top: 24px;
}

body:not(.admin-body).pages.contacts .contact-calc-card {
  min-height: 170px;
  padding: 24px 32px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: #ffffff;
  box-shadow: 0 6px 20px rgba(13, 48, 82, 0.04);
}

body:not(.admin-body).pages.contacts .contact-calc-card h2 {
  margin: 0 0 20px;
  font-size: 22px;
  font-weight: 600;
  line-height: 1.3;
}

body:not(.admin-body).pages.contacts .contact-calc-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 40px;
  margin: 0;
  padding: 0;
  list-style: none;
}

body:not(.admin-body).pages.contacts .contact-calc-step {
  position: relative;
  min-height: 92px;
}

body:not(.admin-body).pages.contacts .contact-calc-step:not(:last-child)::after {
  content: "";
  position: absolute;
  top: 23px;
  right: -28px;
  width: 16px;
  height: 16px;
  border-top: 1px solid var(--color-border);
  border-right: 1px solid var(--color-border);
  transform: rotate(45deg);
}

body:not(.admin-body).pages.contacts .contact-calc-step-head {
  display: flex;
  align-items: center;
  gap: 14px;
}

body:not(.admin-body).pages.contacts .contact-calc-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: #1b6fb7;
  color: #ffffff;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
}

body:not(.admin-body).pages.contacts .contact-calc-step .icon-badge {
  width: 40px;
  height: 40px;
}

body:not(.admin-body).pages.contacts .contact-calc-step h3 {
  margin: 12px 0 0;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.3;
}

body:not(.admin-body).pages.contacts .contact-calc-step p {
  margin: 6px 0 0;
  color: #5C6E84;
  font-size: 13px;
  line-height: 1.45;
}

body:not(.admin-body).pages.contacts .contact-map-section {
  padding-top: 24px;
}

body:not(.admin-body).pages.contacts .map-panel {
  height: 340px;
  display: grid;
  grid-template-columns: 38% 62%;
  gap: 0;
  overflow: hidden;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: #ffffff;
  box-shadow: 0 6px 20px rgba(13, 48, 82, 0.04);
}

body:not(.admin-body).pages.contacts .map-panel-copy {
  display: block;
  padding: 24px 32px;
  background: #ffffff;
}

body:not(.admin-body).pages.contacts .map-panel-copy .eyebrow {
  margin: 0 0 8px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
}

body:not(.admin-body).pages.contacts .map-panel-copy h2 {
  margin: 0 0 18px;
  font-size: 26px;
  font-weight: 600;
  line-height: 1.25;
}

body:not(.admin-body).pages.contacts .map-contact-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  margin-top: 12px;
  color: #5C6E84;
  font-size: 14px;
  line-height: 1.45;
}

body:not(.admin-body).pages.contacts .map-contact-row .icon-badge {
  width: 28px;
  height: 28px;
  border-radius: var(--radius-control);
}

body:not(.admin-body).pages.contacts .map-contact-row .icon-badge::before {
  width: 16px;
  height: 16px;
}

body:not(.admin-body).pages.contacts .map-route-hint,
body:not(.admin-body).pages.complex_supply .map-route-hint {
  margin: 16px 0 0;
  color: #5C6E84;
  font-size: 13px;
  line-height: 1.4;
}

body:not(.admin-body).pages.contacts .map-route-buttons {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  width: 100%;
  margin-top: 12px;
}

body:not(.admin-body).pages.contacts .map-route-button {
  width: 100%;
  min-height: 44px;
  height: 44px;
  justify-content: center;
  padding-inline: 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  background: #ffffff;
  color: #10233C;
  font-size: 13px;
  font-weight: 600;
  text-align: center;
}

body:not(.admin-body).pages.contacts .map-panel-embed {
  position: relative;
  height: 100%;
  min-height: 307px;
  aspect-ratio: auto;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

body:not(.admin-body).pages.contacts .map-panel-embed img,
body:not(.admin-body).pages.contacts .map-panel-embed iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

body:not(.admin-body).pages.contacts .map-preview {
  object-fit: cover;
  filter: none;
}

body:not(.admin-body).pages.contacts .map-load {
  right: 20px;
  bottom: 20px;
  height: 42px;
  min-height: 42px;
  border-radius: var(--radius-control);
  font-size: 13px;
}

body:not(.admin-body).pages.contacts .contact-requisites-section {
  padding-top: 24px;
}

body:not(.admin-body).pages.contacts .contact-requisites {
  min-height: 190px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 240px;
  gap: 0 24px;
  padding: 24px 32px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: #ffffff;
  box-shadow: 0 6px 20px rgba(13, 48, 82, 0.04);
}

body:not(.admin-body).pages.contacts .contact-requisites-head {
  grid-column: 1 / -1;
  margin: 0 0 18px;
}

body:not(.admin-body).pages.contacts .contact-requisites-head .eyebrow {
  margin: 0 0 6px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
}

body:not(.admin-body).pages.contacts .contact-requisites-head h2 {
  margin: 0;
  font-size: 24px;
  font-weight: 600;
  line-height: 1.25;
}

body:not(.admin-body).pages.contacts .contact-requisites-grid {
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 0.8fr);
  gap: 18px 24px;
  margin: 0;
}

body:not(.admin-body).pages.contacts .contact-requisite dt {
  color: #5C6E84;
  /* 13, не 12: подписи полей реквизитов не мельче надзаголовков (К3) */
  font-size: 13px;
  line-height: 1.4;
}

body:not(.admin-body).pages.contacts .contact-requisite dd {
  margin-top: 4px;
  color: #10233C;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.35;
}

/* max-width: 760px убран (15.08.2026): адрес — обычный текст страницы, а не
   заголовок, и обрезать его по ширине нельзя. Строка обрывалась на 882px,
   хотя сетка реквизитов идёт до 1084 — справа оставалась пустая полоса
   в двести пикселей. Ширину задаёт сама сетка, grid-column: 1 / -1. */
body:not(.admin-body).pages.contacts .contact-requisite-address {
  grid-column: 1 / -1;
  margin-top: 0;
}

/* Кегль и интерлиньяж адреса задаются ниже, в правиле 15.08.2026:
   здесь остаётся только начертание, чтобы не спорить с ним двумя местами. */
body:not(.admin-body).pages.contacts .contact-requisite-address dd {
  font-weight: 400;
}

body:not(.admin-body).pages.contacts .contact-requisites-actions {
  grid-column: 2;
  grid-row: 2 / span 2;
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-self: start;
  margin: 0;
  padding: 0;
}

body:not(.admin-body).pages.contacts .requisites-action {
  width: 240px;
  height: 42px;
  min-height: 42px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: #ffffff;
  color: #10233C;
  font-size: 13px;
  font-weight: 600;
}

body:not(.admin-body).pages.contacts .contact-links-section {
  padding-top: 24px;
}
body:not(.admin-body).pages.contacts .contact-links-card,
body:not(.admin-body) .contact-faq-card.contact-faq-card.contact-faq-card,
body:not(.admin-body).pages.quote .contact-links-card,
body:not(.admin-body).pages.industries .contact-links-card,
body:not(.admin-body).pages.complex_supply .contact-links-card {
  padding: 24px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: #ffffff;
  box-shadow: 0 6px 20px rgba(13, 48, 82, 0.04);
}
body:not(.admin-body).pages.contacts .contact-links-card .eyebrow,
body:not(.admin-body) .contact-faq-card.contact-faq-card.contact-faq-card .eyebrow,
body:not(.admin-body).pages.quote .contact-links-card .eyebrow,
body:not(.admin-body).pages.industries .contact-links-card .eyebrow,
body:not(.admin-body).pages.complex_supply .contact-links-card .eyebrow {
  margin: 0 0 16px;
  font-size: 13px;
  font-weight: 600;
  line-height: 18px;
  letter-spacing: 0.08em;
}

body:not(.admin-body) .contact-faq-section.contact-faq-section.contact-faq-section {
  padding-top: 24px;
  padding-bottom: 24px;
}

body:not(.admin-body) .contact-faq-card.contact-faq-card.contact-faq-card .eyebrow {
  margin-bottom: 12px;
}

body:not(.admin-body) .contact-faq-list.contact-faq-list.contact-faq-list {
  display: grid;
  gap: 8px;
  width: 100%;
  max-width: none;
}

body:not(.admin-body) .contact-faq-item.contact-faq-item.contact-faq-item {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: #ffffff;
  overflow: hidden;
}

body:not(.admin-body) .contact-faq-item.contact-faq-item.contact-faq-item summary {
  min-height: 50px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0 16px;
  color: #10233C;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.35;
  cursor: pointer;
}

body:not(.admin-body) .contact-faq-item.contact-faq-item.contact-faq-item summary::-webkit-details-marker {
  display: none;
}

body:not(.admin-body) .contact-faq-item.contact-faq-item.contact-faq-item summary::after {
  content: "";
  width: 10px;
  height: 10px;
  flex: 0 0 10px;
  border-right: 2px solid #1870BD;
  border-bottom: 2px solid #1870BD;
  transform: rotate(45deg);
  transition: transform var(--mo-hover) ease;
}

body:not(.admin-body) .contact-faq-item.contact-faq-item.contact-faq-item[open] summary::after {
  content: "";
  transform: rotate(225deg);
}

body:not(.admin-body) .contact-faq-item.contact-faq-item.contact-faq-item p {
  max-width: none;
  margin: 0;
  padding: 0 16px 16px;
  color: #5C6E84;
  font-size: 13px;
  line-height: 1.55;
}

body:not(.admin-body) .contact-faq-item.contact-faq-item.contact-faq-item summary:focus-visible {
  outline: 2px solid #2f6fa6;
  outline-offset: 2px;
  box-shadow: none;
}

.site-toast {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 150;
  max-width: min(320px, calc(100% - 32px));
  padding: 12px 16px;
  border-radius: var(--radius-control);
  background: #10233C;
  color: #ffffff;
  box-shadow: 0 16px 36px rgba(6, 30, 56, 0.22);
  font-size: 14px;
  font-weight: 600;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity var(--mo-fast) ease, transform var(--mo-fast) ease;
}

.site-toast.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Погасшее уведомление не ловит нажатия, а спрятанное уходит со страницы
   совсем (правило [hidden] — ниже): display у уведомления с действием
   иначе перебивает атрибут hidden */
.site-toast:not(.is-visible) {
  pointer-events: none;
}

/* Уведомление с действием — «Добавлено в заявку»: позиция строкой ниже
   и ссылка на форму; такое уведомление шире и держится дольше (kabem.js) */
body:not(.admin-body) .site-toast.has-action {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  max-width: min(360px, calc(100% - 32px));
  text-align: left;
}

/* Идёт после .has-action: при равной силе селекторов побеждает поздний */
body:not(.admin-body) .site-toast[hidden] {
  display: none;
}

body:not(.admin-body) .site-toast-detail {
  font-weight: 400;
  opacity: 0.86;
  overflow-wrap: anywhere;
}

/* Ссылка 32px по виду, до 44 по нажатию добирает псевдоэлемент */
body:not(.admin-body) .site-toast-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  color: #BFDCF6;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}

body:not(.admin-body) .site-toast-link::after {
  content: "";
  position: absolute;
  inset: -6px -8px;
}

body:not(.admin-body) .site-toast-link:hover,
body:not(.admin-body) .site-toast-link:focus-visible {
  color: #ffffff;
}

/* Кнопка «В заявку» у позиции, которая уже в списке заявки */
body:not(.admin-body) .btn[data-quote-add].is-added {
  border-color: var(--color-border-strong);
  background: #EAF2FB;
  color: var(--color-primary);
}

body:not(.admin-body) .btn[data-quote-add].is-added::before {
  content: "✓";
  margin-right: 6px;
}

@media (hover: hover) {
  body:not(.admin-body) .btn[data-quote-add].is-added:hover {
    border-color: var(--color-primary);
    background: #EAF2FB;
    color: var(--color-primary);
  }
}

@media (min-width: 1600px) {
  body:not(.admin-body).pages.contacts .wrap {
    width: min(var(--container), calc(100% - 80px));
  }
}

@media (max-width: 1200px) {
  body:not(.admin-body).pages.contacts .contact-hero-grid {
    grid-template-columns: minmax(0, 1fr) 460px;
    gap: 32px;
  }

  body:not(.admin-body).pages.contacts .contact-page-hero h1 {
    font-size: 38px;
  }

  body:not(.admin-body).pages.contacts .contact-hero-card {
    width: 100%;
  }

  body:not(.admin-body).pages.contacts .contact-requisites {
    grid-template-columns: 1fr;
  }

  body:not(.admin-body).pages.contacts .contact-requisites-actions {
    grid-column: 1;
    grid-row: auto;
    flex-direction: row;
    margin-top: 16px;
  }
}

@media (max-width: 1023px) {
  body:not(.admin-body).pages.contacts .contact-hero-grid {
    grid-template-columns: 52% 48%;
    gap: 24px;
  }

  body:not(.admin-body).pages.contacts .contact-page-hero h1 {
    font-size: 36px;
  }

  body:not(.admin-body).pages.contacts .contact-hero-card .contact-line {
    grid-template-columns: 36px minmax(0, 1fr);
  }

body:not(.admin-body).pages.contacts .quote-form-actions,
body:not(.admin-body).pages.quote .quote-form-actions,
body:not(.admin-body).pages.complex_supply .quote-form-actions {
    grid-template-columns: auto minmax(0, 1fr);
  }

  body:not(.admin-body).pages.contacts .quote-direct-email,
body:not(.admin-body).pages.quote .quote-direct-email {
    grid-column: 1 / -1;
    text-align: left;
  }

  body:not(.admin-body).pages.contacts .map-panel {
    grid-template-columns: 42% 58%;
  }

  body:not(.admin-body).pages.contacts .contact-links-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body:not(.admin-body).pages.contacts .contact-requisites-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 767px) {
  body:not(.admin-body).pages.contacts .wrap {
    width: calc(100% - 32px);
  }

  body:not(.admin-body).pages.contacts .page-hero.contact-page-hero {
    padding-block: 24px;
  }

  body:not(.admin-body).pages.contacts .contact-hero-grid {
    display: block;
  }

  body:not(.admin-body).pages.contacts .contact-page-hero h1 {
    font-size: 32px;
    line-height: 1.2;
  }

  body:not(.admin-body).pages.contacts .contact-hero-card {
    max-height: none;
    margin-top: 24px;
    padding: 18px;
  }

body:not(.admin-body).pages.contacts .contact-form-wrap .quote-form,
body:not(.admin-body).pages.quote .contact-form-wrap .quote-form,
body:not(.admin-body).pages.complex_supply .contact-form-wrap .quote-form {
    padding: 24px;
  }

  body:not(.admin-body).pages.contacts .quote-grid,
  body:not(.admin-body).pages.contacts .contact-calc-steps,
  body:not(.admin-body).pages.contacts .map-panel,
body:not(.admin-body).pages.quote .quote-grid,
body:not(.admin-body).pages.quote .contact-calc-steps,
body:not(.admin-body).pages.quote .map-panel {
    grid-template-columns: 1fr;
  }

body:not(.admin-body).pages.contacts .quote-form .file-field,
body:not(.admin-body).pages.contacts .quote-form .field-message,
body:not(.admin-body).pages.quote .quote-form .field-message,
body:not(.admin-body).pages.quote .quote-form .file-field,
body:not(.admin-body).pages.complex_supply .quote-form .file-field,
body:not(.admin-body).pages.complex_supply .quote-form .field-message {
    min-height: 0;
  }

body:not(.admin-body).pages.contacts .quote-form .file-dropzone,
body:not(.admin-body).pages.quote .quote-form .file-dropzone,
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone {
    min-height: 140px;
  }

body:not(.admin-body).pages.contacts .quote-form textarea,
body:not(.admin-body).pages.quote .quote-form textarea,
body:not(.admin-body).pages.complex_supply .quote-form textarea {
    min-height: 140px;
  }

body:not(.admin-body).pages.contacts .quote-form-actions,
body:not(.admin-body).pages.quote .quote-form-actions,
body:not(.admin-body).pages.complex_supply .quote-form-actions {
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }

body:not(.admin-body).pages.contacts .quote-form-actions .btn,
body:not(.admin-body).pages.contacts .requisites-action,
body:not(.admin-body).pages.quote .quote-form-actions .btn,
body:not(.admin-body).pages.quote .requisites-action,
body:not(.admin-body).pages.complex_supply .quote-form-actions .btn,
body:not(.admin-body).pages.complex_supply .requisites-action {
    width: 100%;
  }

  body:not(.admin-body).pages.contacts .contact-calc-step:not(:last-child)::after {
    display: none;
  }

  body:not(.admin-body).pages.contacts .map-panel {
    height: auto;
  }

  body:not(.admin-body).pages.contacts .map-panel-copy {
    padding: 24px;
  }

  body:not(.admin-body).pages.contacts .map-panel-embed {
    height: 280px;
    min-height: 280px;
  }

  body:not(.admin-body).pages.contacts .contact-requisites {
    padding: 24px;
  }

  body:not(.admin-body).pages.contacts .contact-requisites-actions {
    flex-direction: column;
  }

  body:not(.admin-body).pages.contacts .contact-links-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

}

@media (max-width: 480px) {
  body:not(.admin-body).pages.contacts .wrap {
    width: calc(100% - 32px);
  }

  body:not(.admin-body).pages.contacts .contact-page-hero h1 {
    font-size: 30px;
  }

body:not(.admin-body).pages.contacts .contact-form-wrap .quote-form,
body:not(.admin-body).pages.quote .contact-form-wrap .quote-form,
body:not(.admin-body).pages.complex_supply .contact-form-wrap .quote-form {
    padding: 20px 16px;
  }

  body:not(.admin-body).pages.contacts .contact-hero-card .contact-line {
    grid-template-columns: 32px minmax(0, 1fr);
    row-gap: 4px;
  }

  body:not(.admin-body).pages.contacts .map-route-buttons,
  body:not(.admin-body).pages.contacts .contact-links-grid {
    grid-template-columns: 1fr;
  }

  body:not(.admin-body).pages.contacts .map-panel-embed {
    height: 260px;
    min-height: 260px;
  }

  .site-toast {
    right: 16px;
    bottom: 16px;
  }
}

/* Stock page final reference layout */
body:not(.admin-body).pages.stock {
  background: #F4F8FD;
}

body:not(.admin-body).pages.stock .wrap {
  width: min(var(--container), calc(100% - 2 * var(--gutter)));
  max-width: var(--container);
}

body:not(.admin-body).pages.stock .breadcrumbs {
  min-height: 48px;
  padding: 0;
  background: #ffffff;
  border-bottom: 1px solid var(--color-border);
}

body:not(.admin-body).pages.stock .breadcrumbs .wrap {
  min-height: 48px;
  display: flex;
  align-items: center;
}

body:not(.admin-body).pages.stock .breadcrumbs ol,
body:not(.admin-body).pages.stock .breadcrumbs a,
body:not(.admin-body).pages.stock .breadcrumbs span {
  color: #5C6E84;
  font-size: 14px;
  line-height: 20px;
}

body:not(.admin-body).pages.stock .page-stock {
  background: #F4F8FD;
  color: #10233c;
}

body:not(.admin-body).pages.stock .stock-service-hero {
  padding: 54px 0 32px;
}

/* Сетка и панель — как первый экран «Контактов»: колонка 560px,
   зазор 64px (просьба 19.08.2026 — блоки одного размера). */
body:not(.admin-body).pages.stock .stock-service-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 560px;
  gap: 64px;
  align-items: center;
}

body:not(.admin-body).pages.stock .stock-service-copy {
}

body:not(.admin-body).pages.stock .page-stock .eyebrow {
  margin-bottom: 14px;
  color: #1870bd;
  font-size: 13px;
  font-weight: 600;
  line-height: 18px;
  letter-spacing: 0.08em;
}

/* 32, не 42: единый H1 с «Контактами» (просьба 19.08.2026) */
body:not(.admin-body).pages.stock .page-stock h1 {
  max-width: 660px;
  margin: 0;
  color: #10233c;
  font-size: 32px;
  font-weight: 600;
  line-height: 1.2;
}

body:not(.admin-body).pages.stock .page-stock .lead {
  max-width: 620px;
  margin-top: 20px;
  color: #5C6E84;
  font-size: 17px;
  line-height: 1.55;
}

body:not(.admin-body).pages.stock .stock-hero-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
  max-width: 700px;
  margin: 30px 0 0;
  padding: 0;
  list-style: none;
}

body:not(.admin-body).pages.stock .stock-hero-facts li {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  color: #5C6E84;
}

body:not(.admin-body).pages.stock .stock-mini-icon {
  width: 32px;
  height: 32px;
  border: 0;
  border-radius: var(--radius-control);
  background: transparent;
  color: #1870BD;
}

body:not(.admin-body).pages.stock .stock-mini-icon::before {
  width: 23px;
  height: 23px;
}

body:not(.admin-body).pages.stock .stock-hero-facts strong {
  color: #5C6E84;
  font-size: 13px;
  font-weight: 400;
  line-height: 1.4;
}

body:not(.admin-body).pages.stock .stock-hero-facts small {
  margin-top: 0;
  color: #5C6E84;
  font-size: 13px;
  line-height: 1.4;
}

body:not(.admin-body).pages.stock .stock-file-panel {
  width: 430px;
}

body:not(.admin-body).pages.stock .stock-file-card {
  width: 100%;
  padding: 28px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: #ffffff;
  box-shadow: 0 8px 24px rgba(10, 44, 78, 0.04);
}

body:not(.admin-body).pages.stock .stock-file-head {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}

body:not(.admin-body).pages.stock .stock-file-icon {
  width: 54px;
  height: 54px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  background: #edf8f1;
  color: #16a34a;
}

body:not(.admin-body).pages.stock .stock-file-date {
  margin-top: 8px;
  color: #24a14b;
  font-size: 13px;
  font-weight: 400;
  line-height: 20px;
}

body:not(.admin-body).pages.stock .stock-file-meta {
  margin-top: 14px;
  color: #5C6E84;
  font-size: 14px;
  line-height: 1.4;
}

body:not(.admin-body).pages.stock .stock-file-download {
  width: 100%;
  height: 52px;
  min-height: 52px;
  gap: 12px;
  margin-top: 24px;
  border-radius: var(--radius-control);
  background: #10233C;
  color: #ffffff;
  font-size: 15px;
  font-weight: 400;
}

body:not(.admin-body).pages.stock .stock-file-download.is-loading {
  opacity: 0.82;
  pointer-events: none;
}

body:not(.admin-body).pages.stock .stock-file-download.is-loading .download-mark::before {
  width: 18px;
  height: 18px;
  border: 2px solid rgba(255, 255, 255, 0.35);
  border-top-color: #ffffff;
  border-radius: 50%;
  background: transparent;
  -webkit-mask: none;
  mask: none;
  animation: stock-spin 0.7s linear infinite;
}

@keyframes stock-spin {
  to { transform: rotate(360deg); }
}

body:not(.admin-body).pages.stock .stock-workflow-section {
  padding: 0 0 24px;
}

body:not(.admin-body).pages.stock .stock-workflow-card {
  padding: 32px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: #ffffff;
  box-shadow: 0 8px 24px rgba(10, 44, 78, 0.04);
}

body:not(.admin-body).pages.stock .stock-workflow-card > h2 {
  margin-bottom: 28px;
  color: #10233c;
  font-size: 24px;
  font-weight: 600;
  line-height: 1.3;
}

body:not(.admin-body).pages.stock .stock-process-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 56px;
  margin: 0;
  padding: 0;
  list-style: none;
}

body:not(.admin-body).pages.stock .stock-process-item {
  position: relative;
  min-height: 150px;
  display: grid;
  grid-template-columns: 34px 48px minmax(0, 1fr);
  grid-template-rows: auto auto auto;
  gap: 14px;
  align-items: center;
}body:not(.admin-body).pages.stock .stock-process-num {
  width: 34px;
  height: 34px;
  background: #1870BD;
  color: #ffffff;
  font-size: 12px;
  font-weight: 600;
}

body:not(.admin-body).pages.stock .stock-process-item h3 {
  grid-column: 1 / -1;
  margin: 2px 0 0;
  color: #10233c;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
}

body:not(.admin-body).pages.stock .stock-process-item p {
  grid-column: 1 / -1;
  margin: -6px 0 0;
  color: #5C6E84;
  font-size: 13px;
  line-height: 1.5;
}

body:not(.admin-body).pages.stock .stock-xlsx-badge {
  bottom: 6px;
}

body:not(.admin-body).pages.stock .stock-text-link {
  display: flex;
  width: fit-content;
  margin-top: 22px;
  margin-right: 0;
  color: #1870bd;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
}

body:not(.admin-body).pages.stock .stock-text-link + .stock-text-link {
  margin-top: 18px;
}

body:not(.admin-body).pages.stock .stock-send-or {
  display: none;
}

body:not(.admin-body).pages.stock .stock-send-email {
  width: 290px;
  min-height: 76px;
  grid-template-columns: 38px minmax(0, 1fr);
  gap: 12px;
  padding: 16px 18px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  background: #ffffff;
}

body:not(.admin-body).pages.stock .stock-mail-icon {
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #1870BD;
}

body:not(.admin-body).pages.stock .stock-mail-icon::before {
  width: 22px;
  height: 22px;
}

body:not(.admin-body).pages.stock .stock-send-email span:last-child {
  color: #5C6E84;
  font-size: 12px;
  line-height: 1.35;
}

body:not(.admin-body).pages.stock .stock-send-email a {
  display: block;
  margin-top: 2px;
  color: #1870bd;
  font-size: 14px;
  font-weight: 600;
}

body:not(.admin-body).pages.stock .stock-related {
  margin-top: 32px;
}

body:not(.admin-body).pages.stock .stock-related h2 {
  color: #10233c;
  font-size: 22px;
  font-weight: 600;
  line-height: 1.3;
}

body:not(.admin-body).pages.stock .stock-related-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-top: 20px;
}

body:not(.admin-body).pages.stock .stock-related-card {
  min-height: 160px;
  display: flex;
  flex-direction: column;
  padding: 18px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  background: #ffffff;
  box-shadow: none;
}

body:not(.admin-body).pages.stock .stock-related-icon {
  width: 34px;
  height: 34px;
  color: #1870BD;
}

body:not(.admin-body).pages.stock .stock-related-icon::before {
  width: 24px;
  height: 24px;
}

body:not(.admin-body).pages.stock .stock-related-card h3 {
  margin-top: 14px;
  color: #10233c;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.35;
}

body:not(.admin-body).pages.stock .stock-related-card p {
  margin-top: 8px;
  color: #5C6E84;
  font-size: 12px;
  line-height: 1.45;
}

@media (min-width: 1600px) {
  body:not(.admin-body).pages.stock .wrap {
    width: min(var(--container), calc(100% - 80px));
  }
}

@media (max-width: 1200px) {
  body:not(.admin-body).pages.stock .wrap {
    width: calc(100% - 48px);
  }

  body:not(.admin-body).pages.stock .stock-service-grid {
    grid-template-columns: minmax(0, 1fr) 390px;
    gap: 40px;
  }

  body:not(.admin-body).pages.stock .stock-file-panel {
    width: 100%;
  }

  body:not(.admin-body).pages.stock .stock-workflow-card {
    padding: 28px;
  }

  body:not(.admin-body).pages.stock .stock-send-email {
    grid-column: 2 / -1;
    width: 100%;
  }
}

@media (max-width: 1023px) {
  body:not(.admin-body).pages.stock .stock-service-grid {
    grid-template-columns: minmax(0, 55fr) minmax(0, 45fr);
    gap: 28px;
  }

  body:not(.admin-body).pages.stock .stock-hero-facts {
    gap: 16px;
  }

  body:not(.admin-body).pages.stock .stock-workflow-card {
    padding: 24px;
  }

  body:not(.admin-body).pages.stock .stock-related-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

}

@media (max-width: 767px) {
  body:not(.admin-body).pages.stock .wrap {
    width: calc(100% - 32px);
  }

  body:not(.admin-body).pages.stock .stock-service-hero {
    padding: 28px 0;
  }

  body:not(.admin-body).pages.stock .stock-service-grid {
    display: block;
  }

  body:not(.admin-body).pages.stock .page-stock h1 {
    font-size: 32px;
    line-height: 1.2;
  }

  body:not(.admin-body).pages.stock .stock-file-panel {
    margin-top: 28px;
  }

  body:not(.admin-body).pages.stock .stock-hero-facts,
  body:not(.admin-body).pages.stock .stock-process-list,

  body:not(.admin-body).pages.stock .stock-hero-facts {
    gap: 12px;
    margin-top: 24px;
  }

  body:not(.admin-body).pages.stock .stock-workflow-card {
    padding: 24px 20px;
  }

  body:not(.admin-body).pages.stock .stock-process-list {
    gap: 24px;
  }

  body:not(.admin-body).pages.stock .stock-process-item {
    min-height: auto;
    padding-bottom: 8px;
  }

  body:not(.admin-body).pages.stock .stock-send-email {
    grid-column: 1 / -1;
    width: 100%;
  }

  body:not(.admin-body).pages.stock .stock-related-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 480px) {
  body:not(.admin-body).pages.stock .wrap {
    width: calc(100% - 32px);
  }

  body:not(.admin-body).pages.stock .stock-file-card {
    padding: 20px;
  }

  body:not(.admin-body).pages.stock .stock-file-download{
    width: 100%;
    height: 48px;
    min-height: 48px;
  }

  body:not(.admin-body).pages.stock .stock-workflow-card,

  body:not(.admin-body).pages.stock .stock-workflow-card > h2 {
    font-size: 22px;
  }

  body:not(.admin-body).pages.stock .stock-related-grid {
    grid-template-columns: 1fr;
  }
}

/* Stock final height tune after visual measurement. */
body:not(.admin-body).pages.stock .stock-service-hero {
  padding-top: 34px;
  padding-bottom: 24px;
}

body:not(.admin-body).pages.stock .stock-workflow-card {
  padding: 24px 32px;
}

body:not(.admin-body).pages.stock .stock-workflow-card > h2 {
  margin-bottom: 20px;
}

body:not(.admin-body).pages.stock .stock-process-item {
  min-height: 124px;
  gap: 9px 14px;
}

body:not(.admin-body).pages.stock .stock-process-item h3 {
  margin-top: 0;
  line-height: 1.3;
}

body:not(.admin-body).pages.stock .stock-process-item p {
  margin-top: -4px;
  line-height: 1.42;
}

body:not(.admin-body).pages.stock .stock-xlsx-badge {
  padding: 7px 10px;
}

body:not(.admin-body).pages.stock .stock-related {
  margin-top: 24px;
}

body:not(.admin-body).pages.stock .stock-related-grid {
  margin-top: 16px;
}

body:not(.admin-body).pages.stock .stock-related-card {
  min-height: 118px;
  gap: 0;
  padding: 16px;
}

body:not(.admin-body).pages.stock .stock-related-icon {
  width: 32px;
  height: 32px;
}

body:not(.admin-body).pages.stock .stock-related-card h3 {
  margin-top: 10px;
}

body:not(.admin-body).pages.stock .stock-related-card p {
  margin-top: 6px;
  line-height: 1.35;
}/* Contacts final collision fixes after stock pass. */
body:not(.admin-body).pages.contacts .contact-hero-grid > .contact-hero-copy,
body:not(.admin-body).pages.contacts .contact-hero-grid > .contact-hero-card,
body:not(.admin-body).pages.contacts .map-panel > .map-panel-copy,
body:not(.admin-body).pages.contacts .map-panel > .map-panel-embed {
  grid-column: auto;
}

body:not(.admin-body).pages.contacts .contact-page-hero {
  min-height: 0;
}

body:not(.admin-body).pages.contacts .contact-form-wrap .quote-form,
body:not(.admin-body).pages.quote .contact-form-wrap .quote-form,
body:not(.admin-body).pages.complex_supply .contact-form-wrap .quote-form {
  padding: 28px;
}

body:not(.admin-body).pages.contacts .quote-form-copy,
body:not(.admin-body).pages.quote .quote-form-copy,
body:not(.admin-body).pages.complex_supply .quote-form-copy {
  margin-bottom: 18px;
}

body:not(.admin-body).pages.contacts .quote-form-copy p,
body:not(.admin-body).pages.quote .quote-form-copy p,
body:not(.admin-body).pages.complex_supply .quote-form-copy p {
  line-height: 1.45;
}

body:not(.admin-body).pages.contacts .quote-grid,
body:not(.admin-body).pages.quote .quote-grid {
  gap: 10px 24px;
}

body:not(.admin-body).pages.contacts .quote-form .field,
body:not(.admin-body).pages.quote .quote-form .field,
body:not(.admin-body).pages.complex_supply .quote-form .field {
  gap: 4px;
}

body:not(.admin-body).pages.contacts .quote-form label,
body:not(.admin-body).pages.contacts .quote-form .field-label-row label,
body:not(.admin-body).pages.quote .quote-form .field-label-row label,
body:not(.admin-body).pages.quote .quote-form label,
body:not(.admin-body).pages.complex_supply .quote-form label,
body:not(.admin-body).pages.complex_supply .quote-form .field-label-row label {
  font-size: 13px;
  line-height: 18px;
}

body:not(.admin-body).pages.contacts .quote-form input,
body:not(.admin-body).pages.contacts .quote-form select,
body:not(.admin-body).pages.quote .quote-form select,
body:not(.admin-body).pages.quote .quote-form input,
body:not(.admin-body).pages.complex_supply .quote-form input,
body:not(.admin-body).pages.complex_supply .quote-form select {
  height: 44px;
  min-height: 44px;
}

body:not(.admin-body).pages.contacts .quote-form .file-field,
body:not(.admin-body).pages.contacts .quote-form .field-message,
body:not(.admin-body).pages.quote .quote-form .field-message,
body:not(.admin-body).pages.quote .quote-form .file-field,
body:not(.admin-body).pages.complex_supply .quote-form .file-field,
body:not(.admin-body).pages.complex_supply .quote-form .field-message {
  min-height: 0;
}

body:not(.admin-body).pages.contacts .quote-form .file-dropzone input[type="file"],
body:not(.admin-body).pages.quote .quote-form .file-dropzone input[type="file"],
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone input[type="file"] {
  position: absolute;
  width: 1px;
  height: 1px;
  min-height: 0;
  padding: 0;
  border: 0;
  clip-path: inset(50%);
  overflow: hidden;
  white-space: nowrap;
}

body:not(.admin-body).pages.contacts .quote-form .file-dropzone:focus-within,
body:not(.admin-body).pages.quote .quote-form .file-dropzone:focus-within,
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone:focus-within {
  outline: 2px solid #1870BD;
  outline-offset: 2px;
}

body:not(.admin-body).pages.contacts .quote-form .file-dropzone,
body:not(.admin-body).pages.quote .quote-form .file-dropzone,
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone {
  min-height: 130px;
  height: 130px;
  padding: 12px;
}

body:not(.admin-body).pages.contacts .quote-form .file-dropzone::before,
body:not(.admin-body).pages.quote .quote-form .file-dropzone::before,
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone::before {
  width: 28px;
  height: 28px;
  margin-bottom: 0;
}

body:not(.admin-body).pages.contacts .file-dropzone-title,
body:not(.admin-body).pages.quote .file-dropzone-title,
body:not(.admin-body).pages.complex_supply .file-dropzone-title {
  font-size: 14px;
}

body:not(.admin-body).pages.contacts .file-dropzone-subtitle,
body:not(.admin-body).pages.quote .file-dropzone-subtitle,
body:not(.admin-body).pages.complex_supply .file-dropzone-subtitle {
  font-size: 12px;
}

body:not(.admin-body).pages.contacts .file-select-button,
body:not(.admin-body).pages.quote .file-select-button {
  min-height: 36px;
  margin-top: 2px;
  font-size: 13px;
}

body:not(.admin-body).pages.contacts .file-dropzone-note,
body:not(.admin-body).pages.quote .file-dropzone-note,
body:not(.admin-body).pages.complex_supply .file-dropzone-note {
  font-size: 11px;
}

body:not(.admin-body).pages.contacts .quote-form textarea,
body:not(.admin-body).pages.quote .quote-form textarea,
body:not(.admin-body).pages.complex_supply .quote-form textarea {
  height: 130px;
  min-height: 130px;
  max-height: 220px;
}

body:not(.admin-body).pages.contacts .quote-form .consent,
body:not(.admin-body).pages.quote .quote-form .consent,
body:not(.admin-body).pages.complex_supply .quote-form .consent {
  min-height: 44px;
  padding-block: 0;
}

body:not(.admin-body).pages.contacts .quote-form-actions,
body:not(.admin-body).pages.quote .quote-form-actions,
body:not(.admin-body).pages.complex_supply .quote-form-actions {
  min-height: 48px;
  margin-top: 16px;
}

body:not(.admin-body).pages.contacts .quote-form-actions .form-note,
body:not(.admin-body).pages.quote .quote-form-actions .form-note,
body:not(.admin-body).pages.complex_supply .quote-form-actions .form-note {
  line-height: 18px;
}

body:not(.admin-body).pages.contacts .contact-calc-card {
  min-height: 0;
  padding: 20px 28px;
}

body:not(.admin-body).pages.contacts .contact-calc-card h2 {
  margin-bottom: 12px;
}

body:not(.admin-body).pages.contacts .contact-calc-steps {
  gap: 32px;
}

body:not(.admin-body).pages.contacts .contact-calc-step {
  min-height: 92px;
}

body:not(.admin-body).pages.contacts .contact-calc-number {
  width: 28px;
  height: 28px;
}

body:not(.admin-body).pages.contacts .contact-calc-step .icon-badge {
  width: 34px;
  height: 34px;
}

body:not(.admin-body).pages.contacts .contact-calc-step h3 {
  margin-top: 8px;
  font-size: 14px;
}

body:not(.admin-body).pages.contacts .contact-calc-step p {
  margin-top: 4px;
  font-size: 12px;
  line-height: 1.35;
}

body:not(.admin-body).pages.contacts .contact-requisites {
  min-height: 0;
  padding: 20px 28px;
}

body:not(.admin-body).pages.contacts .contact-requisites-head {
  margin-bottom: 12px;
}

body:not(.admin-body).pages.contacts .contact-requisites-grid {
  gap: 12px 20px;
}

body:not(.admin-body).pages.contacts .contact-requisite dd {
  font-size: 14px;
}

/* Юридический адрес — тем же кеглем, что ИНН и остальные значения (14px),
   но обычным начертанием: это длинная строка, полужирный в ней читается
   тяжело. Интерлиньяж оставлен прежним в пикселях, а не в долях кегля:
   при 1.35 от 14px адрес стал бы на 6px выше и вырос бы весь блок
   реквизитов. С 16.2px он занимает те же две строки и ту же высоту —
   измерено 15.08.2026, блок 248px до и после. */
body:not(.admin-body).pages.contacts .contact-requisite-address dd {
  font-size: 14px;
  font-weight: 400;
  line-height: 16.2px;
}

/* Contacts compact final tune. */
body:not(.admin-body).pages.contacts .contact-hero-copy {
  max-width: 700px;
}

body:not(.admin-body).pages.contacts .contact-page-hero h1 {
  max-width: 700px;
}

body:not(.admin-body).pages.contacts .contact-page .contact-hero-copy .lead {
  max-width: 660px;
}

body:not(.admin-body).pages.contacts .contact-form-wrap .quote-form,
body:not(.admin-body).pages.quote .contact-form-wrap .quote-form,
body:not(.admin-body).pages.complex_supply .contact-form-wrap .quote-form {
  /* Верх 14px и низ 14px вместо 24: форма стала на 20px ниже — двумя
     просьбами по десять (15.08.2026). Правка именно здесь: это последнее
     и самое сильное правило поля формы, остальные четыре ему проигрывают. */
  padding: 14px 24px 14px;
}

body:not(.admin-body).pages.contacts .quote-form-copy,
body:not(.admin-body).pages.quote .quote-form-copy,
body:not(.admin-body).pages.complex_supply .quote-form-copy {
  margin-bottom: 14px;
}

body:not(.admin-body).pages.contacts .quote-form-copy p,
body:not(.admin-body).pages.quote .quote-form-copy p,
body:not(.admin-body).pages.complex_supply .quote-form-copy p {
  margin-top: 8px;
  line-height: 1.4;
}

body:not(.admin-body).pages.contacts .quote-grid,
body:not(.admin-body).pages.quote .quote-grid {
  gap: 8px 24px;
}

body:not(.admin-body).pages.contacts .quote-form input,
body:not(.admin-body).pages.contacts .quote-form select,
body:not(.admin-body).pages.quote .quote-form select,
body:not(.admin-body).pages.quote .quote-form input,
body:not(.admin-body).pages.complex_supply .quote-form input,
body:not(.admin-body).pages.complex_supply .quote-form select {
  height: 42px;
  min-height: 42px;
}

body:not(.admin-body).pages.contacts .quote-form .file-dropzone,
body:not(.admin-body).pages.quote .quote-form .file-dropzone,
body:not(.admin-body).pages.complex_supply .quote-form .file-dropzone {
  min-height: 120px;
  height: 120px;
}

body:not(.admin-body).pages.contacts .quote-form textarea,
body:not(.admin-body).pages.quote .quote-form textarea,
body:not(.admin-body).pages.complex_supply .quote-form textarea {
  height: 120px;
  min-height: 120px;
}

body:not(.admin-body).pages.contacts .quote-form-actions,
body:not(.admin-body).pages.quote .quote-form-actions,
body:not(.admin-body).pages.complex_supply .quote-form-actions {
  margin-top: 12px;
}

body:not(.admin-body).pages.contacts .contact-calc-card {
  padding: 18px 28px;
}

body:not(.admin-body).pages.contacts .contact-requisites {
  padding: 18px 24px;
}

body:not(.admin-body).pages.contacts .contact-requisites-head {
  margin-bottom: 10px;
}

body:not(.admin-body).pages.contacts .map-panel {
  height: auto;
  min-height: 307px;
  align-items: stretch;
}

body:not(.admin-body).pages.contacts .map-panel-copy,
body:not(.admin-body).pages.contacts .map-panel-embed {
  height: auto;
  min-height: 307px;
}

/* Contacts: map overlay button must stay readable on the light map card. */
body:not(.admin-body).pages.contacts .map-load,
body:not(.admin-body).pages.contacts .map-load .map-load-label,
body:not(.admin-body).pages.contacts .map-load .map-load-ico {
  color: #10233C;
}

body:not(.admin-body).pages.contacts .map-load {
  border-color: var(--color-border);
  background: rgba(255, 255, 255, 0.96);
}

body:not(.admin-body).pages.contacts .map-load:hover,
body:not(.admin-body).pages.contacts .map-load:focus-visible {
  border-color: #1870BD;
  background: #ffffff;
  color: #10233C;
}

/* Align consent text to the fixed checkbox position in compact quote forms. */
body:not(.admin-body) .quote-form .consent label {
  padding-top: 2px;
}

body:not(.admin-body) .quote-form-actions {
  align-items: center;
}

body:not(.admin-body) .quote-form-actions .btn {
  margin-top: 0;
}

body:not(.admin-body) .quote-form-actions .form-response-note,
body:not(.admin-body) .quote-form-actions .quote-direct-email {
  align-self: center;
  display: flex;
  align-items: center;
  min-height: 48px;
  margin: 0;
}

body:not(.admin-body) .quote-form-actions .quote-direct-email {
  justify-content: flex-end;
}

/* ============================================================
   Перенесено из 04-stock.css (файл удалён: 95 строк из 161 описывали
   несуществующие классы, к «Наличию» отношения не имели).
   ============================================================ */
/* Hero-лиды на светлых страницах — шире, чтобы длинные подзаголовки
   не ломались на половине ширины (фото-баннеры сохраняют свой узкий лид) */
body:not(.admin-body) .page-hero:not(.page-hero--photo) .lead,
body:not(.admin-body) .hero:not(.page-hero--photo) .lead {
  max-width: 1300px;
}

/* H1 на фото-баннерах: антиква оптически шире — уменьшаем кегль (~44px)
   и расширяем текстовую зону, чтобы длинные заголовки не ломались в 3 строки */
body:not(.admin-body) .page-hero--photo h1 {
  font-size: var(--fs-h1);
  max-width: 760px;
}

/* Мобильные телефоны: header-CTA прячем (капитель-пилюля шире и не влезает
   рядом с логотипом и бургером); CTA доступна в бургер-меню и в липкой панели */
@media (max-width: 640px) {
  body:not(.admin-body) .header-cta,
  .header-cta {
    display: none;
  }
}

/* ============================================================
   Единый зазор «хлебные крошки → надзаголовок первой секции» = 48px.
   Значения padding-top разные, потому что у страниц разный внутренний
   отступ первого блока; итоговое расстояние на всех страницах одинаковое — 28px.
   Фото-hero (.page-hero--photo, .cs-hero) сюда не входят: там контент
   лежит поверх снимка и отступ задаётся композицией кадра.
   ============================================================ */
body:not(.admin-body).pages.catalog main > section:first-of-type,
body:not(.admin-body).pages.industries main > section:first-of-type,
body:not(.admin-body).pages.projects main > section:first-of-type,
body:not(.admin-body).pages.materials main > section:first-of-type,
body:not(.admin-body).pages.product main > section:first-of-type,
body:not(.admin-body).pages.quote main > section:first-of-type {
  padding-top: 28px;
}

body:not(.admin-body).pages.stock main > section:first-of-type {
  padding-top: 28px;
}

/* «О компании»: сетка первого экрана съедает 12px, поэтому здесь 40 —
   итоговый зазор «крошки → H1» те же 28px, что и на остальных страницах
   меню (просьба 19.08.2026: заголовки не должны скакать при переходах) */
body:not(.admin-body).pages.about main > section:first-of-type {
  padding-top: 40px;
}

body:not(.admin-body).pages.privacy main > section:first-of-type,
body:not(.admin-body).pages.personal_data_consent main > section:first-of-type,
body:not(.admin-body).pages.user_agreement main > section:first-of-type {
  padding-top: 28px;
}

/* «Реквизиты»: свой первый блок добавляет 21px сверху — компенсируем,
   чтобы зазор «крошки → H1» был те же 28px */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body).pages.requisites main > section:first-of-type {
  padding-top: 7px;
}

/* «Проекты»: первый блок съедает 3px — добираем до общих 28px */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body).pages.projects main > section:first-of-type {
  padding-top: 31px;
}

/* Каталог и «Контакты» без надзаголовка над H1. Зазор «крошки → H1» —
   те же 28px, что и на остальных страницах меню (просьба 19.08.2026:
   один размер и одно расположение H1 везде, кроме Главной). */
/* Каталогу 29: при 28 его H1 вставал на 175 против 176 на «Контактах»
   — лишний пиксель набегал на крошках (просьба 24.08.2026). */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body).pages.catalog main > section:first-of-type {
  padding-top: 29px;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body).pages.contacts main > section:first-of-type {
  padding-top: 28px;
}

/* ============================================================
   Надзаголовок (.eyebrow / .kicker) — единый на всём сайте:
   Inter 600, 13px/18px, uppercase, letter-spacing 0.08em, #1870BD.
   На тёмных фото-hero цвет светлый — иначе текст не читается.
   ============================================================ */
body:not(.admin-body) main .eyebrow,
body:not(.admin-body) main .kicker,
body:not(.admin-body) main p.eyebrow,
body:not(.admin-body) main p.kicker,
body:not(.admin-body) main span.eyebrow,
body:not(.admin-body) main span.kicker {
  font-family: "Inter", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  font-size: 13px;
  line-height: 18px;
  font-weight: var(--fw-bold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #1870BD;
}

/* .cs-hero здесь больше нет: фото с «Комплексных поставок» убрано
   12.08.2026, первый экран стал светлым и надзаголовок на нём фирменный */
body:not(.admin-body) main .page-hero--photo .eyebrow,
body:not(.admin-body) main .hm-hero .eyebrow {
  color: #BFDCF6;
}

/* ============================================================
   ШКАЛА ЗАГОЛОВКОВ — ОДНА НА ВЕСЬ САЙТ (эталон «Наличие на складе»)
   H1 42 → заголовок раздела 26 → заголовок карточки/панели 20 → h3 17.
   Мобильный: 30 / 22 / 19 / 16. Везде Inter 600, letter-spacing normal.
   ============================================================ */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main h2 {
  font-size: 20px;
  line-height: 1.25;
  font-weight: 600;
  letter-spacing: var(--ls-h2);
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main h3 {
  font-size: 17px;
  line-height: 1.3;
  font-weight: 600;
  letter-spacing: var(--ls-h3);
}

@media (max-width: 767px) {
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main h2 {
    font-size: 19px;
  }

  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main h3 {
    font-size: 16px;
  }
}

/* ============================================================
   ЗАГОЛОВКИ РАЗДЕЛОВ — ОДИН СТАНДАРТ НА ВЕСЬ САЙТ
   Эталон — «Наличие на складе»: Inter 600, 26px/1.2, letter-spacing normal.
   Повторённый :not(.admin-body) поднимает специфичность выше постраничных
   правил — без !important и без отдельного файла-заплатки.
   ============================================================ */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .section-head h2,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section > .wrap > h2,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section > h2,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .cta-copy > h2,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .panel > h2,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .industries-intro-content > h2,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .hm-stock-copy > h2,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .quote-form-copy > h2,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .legal-section > h2,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main h2.cs-fit-title,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main h2.contact-faq-title {
  /* Табличные 24/30 для всех секционных H2: страницы разъезжались —
     «Отрасли», «О компании», «Каталог» и «Контакты» были переведены
     поштучно, а Главная, «Наличие», «Заявка» и «Проекты» оставались на
     26 (сверка единообразия 26.08.2026) */
  font-size: 24px;
  line-height: 30px;
  font-weight: 600;
  letter-spacing: var(--ls-h2);
}

@media (max-width: 767px) {
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .section-head h2,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section > .wrap > h2,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section > h2,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .cta-copy > h2,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .panel > h2,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .industries-intro-content > h2,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .final-copy > h2,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .hm-stock-copy > h2,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .quote-form-copy > h2,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main .legal-section > h2,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main h2.cs-fit-title,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main h2.contact-faq-title {
    font-size: 22px;
  }
}

/* ============================================================
   ПОДВАЛ (веб): высота на 20% меньше — 404px → ~323px.
   Мобильный аккордеон живёт по своим правилам.
   ============================================================ */
@media (min-width: 768px) {
  body:not(.admin-body) .site-footer {
    padding-block: 26px 18px;
  }
  body:not(.admin-body) .site-footer .footer-grid {
    padding-bottom: 12px;
  }
  body:not(.admin-body) .site-footer .footer-block {
    gap: 2px;
  }
  body:not(.admin-body) .site-footer .footer-bottom {
    padding-top: 12px;
  }
}

/* ============================================================
   ШАПКА — ОДИН ВИД НА ВСЕХ СТРАНИЦАХ
   Эталон — «Наличие на складе»: логотип 136px, пункты 13px,
   кнопка 44px с тёмной заливкой. Постраничных правил шапки быть не должно:
   из-за них навигация и логотип «прыгали» при переходе между страницами.
   ============================================================ */
/* Меню растянуто по центру шапки — между логотипом и действиями
   (просьба 19.08.2026, как на Главной) */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .primary-nav {
  flex: 1;
  justify-content: center;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  /* Полоса шапки и логотип на вебе крупнее на 20 % (просьба 13.08.2026):
     было 72px и 136px, стало 86px и 163px. Мобильная шапка не меняется —
     её размеры заданы отдельно ниже по брейкпоинтам. */
  min-height: 86px;
  border-bottom: 1px solid var(--color-border);
  background: #ffffff;
  box-shadow: none;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .header-inner,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header.is-compact .header-inner {
  min-height: 86px;
  gap: 20px;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .brand-logo,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header.is-compact .brand-logo {
  width: 163px;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .primary-nav {
  /* После увеличения шапки «Контакты» наезжали на телефон: пунктам нужен
     свой зазор и запас до телефонного блока */
  gap: 6px;
  margin-right: 28px;
}

/* Кегль пунктов меню — 15px: после увеличения полосы и логотипа 13px
   смотрелись мелко рядом с ними */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .primary-nav a {
  font-size: 15px;
}

/* Шапке даём больше ширины, чем остальному контенту: меню, телефон и
   кнопка — три блока в одну строку, им тесно в общих 1280px.
   Попытка свести к 1280 (24.08.2026) дала наложение логотипа на первый
   пункт меню на 21px при 1366 и 1470 — возвращено до решения по ширине. */
@media (min-width: 1200px) {
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .header-inner {
    /* width, а не только max-width: страничные правила (.pages.stock .wrap)
       держат контейнер на 1280 именно шириной */
    max-width: 1400px;
    width: min(1400px, 100% - 48px);
  }
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .primary-nav a,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .nav-link {
  min-height: 44px;
  color: #5C6E84;
  line-height: 20px;
  font-weight: 400;
  white-space: nowrap;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .primary-nav a.is-active,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .primary-nav .nav-link.is-active {
  color: #10233C;
  font-weight: 600;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .header-phone {
  gap: 8px;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .header-phone-text > span {
  display: none;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .header-phone strong {
  color: #10233C;
  font-size: 14px;
  font-weight: 600;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .header-cta,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header.is-compact .header-cta {
  min-width: 200px;
  height: 44px;
  min-height: 44px;
  padding-inline: 22px;
  border: 0;
  border-radius: var(--radius-control);
  background: #10233C;
  color: #ffffff;
  font-size: 14px;
  font-weight: 400;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .header-cta:hover {
  background: #10233C;
  color: #ffffff;
}

@media (max-width: 920px) {
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .header-inner,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header.is-compact .header-inner {
    min-height: 64px;
  }

  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .brand-logo,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header.is-compact .brand-logo {
    width: 122px;
  }

  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .header-cta {
    display: none;
  }

  /* После прокрутки шапка ужимается: страница длинная, каждый пиксель заметен */
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header.is-compact,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header.is-compact .header-inner {
    min-height: 58px;
  }

  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header.is-compact .brand-logo {
    width: 106px;
  }
}

/* Ширина пункта меню не зависит от того, активен он или нет: скрытая копия
   подписи жирным задаёт постоянную ширину — меню не съезжает при переходах. */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .primary-nav .nav-link-label {
  display: inline-flex;
  flex-direction: column;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .site-header .primary-nav .nav-link-label::after {
  content: attr(data-label);
  height: 0;
  overflow: hidden;
  visibility: hidden;
  font-weight: 600;
  pointer-events: none;
}

/* H1 на светлом фоне — один цвет на весь сайт (эталон «Наличия») */
/* Один H1 на всех страницах меню, кроме Главной (просьба 19.08.2026):
   32px/1.2, тёмный, без надзаголовка над ним. На Главной и фото-hero
   заголовок живёт по своим правилам — они исключены селектором. */
/* Пять :not, не шесть: с шестью это правило (0,8,3) перебивало мобильное
   30px (0,5,3) на всех страницах и при любой ширине — оно было мёртвым
   с момента написания (разбор Отраслей 21.08.2026, Б3) */
body:not(.admin-body):not(.admin-body):not(.pages.home) main:not(.hm) h1 {
  font-size: 32px;
  line-height: 1.2;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main h1 {
  color: #10233C;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .page-hero--photo h1,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .hm-hero h1,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .cbl-hero-panel h1,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .thanks-card-main h1 {
  color: #ffffff;
}

/* Первый экран — один ритм на всех страницах (эталон «Контакты»):
   H1 → 20px → лид 17px/1.55. Отступа под надзаголовком здесь больше нет:
   с 19.08.2026 надзаголовков над H1 не осталось ни на одной странице, кроме
   Главной, а у неё свой зазор задан в 24-home.css. */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section:first-of-type h1 {
  margin-top: 0;
  margin-bottom: 0;
}

/* H1 на мобильном — 26px везде, кроме Главной (просьба 28.08.2026: «на всех
   основных страницах кроме главной шрифт должен быть одинаковый h1»).
   26 — значение, к которому уже приведены «Заявка», «Каталог» и «Контакты»;
   30 не помещалось в строку заголовка заявки на 360px. Страница 404
   заморожена с 13.08.2026 и из правила исключена (число :not прежнее —
   специфичность не меняется). */
@media (max-width: 767px) {
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.not_found) main h1 {
    font-size: 26px;
    line-height: 1.16;
    letter-spacing: normal;
  }
}

/* ============================================================
   РИТМ БЛОКОВ — 10px НА ВСЁМ САЙТЕ (веб и мобильный)
   Первый блок не трогаем: за ним закреплён зазор от хлебных крошек.
   Полосы с собственным фоном (data-band) тоже вне ритма: их внутренние
   отступы — часть заливки, обнулять их значит прижимать текст к краю.
   ============================================================ */
/* Единая система 24.08.2026: зазор задаётся margin между секциями, а не
   padding. При padding к зазору прибавлялись внешние отступы первых детей,
   и на «Наличии» пары расходились 48 → 58 → 68. */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section:not(:first-of-type):not([data-band]) {
  /* flow-root: без него внешние отступы крайних детей протекают наружу,
     секция схлопывает край и зазор считается не от содержимого. На
     «О компании» так получалось 4px вместо 15. */
  display: flow-root;
  padding-top: 0;
  padding-bottom: 0;
  margin-top: var(--section-gap);
  margin-bottom: 0;
}

/* Воздух до подвала — одним правилом на весь сайт (31.08.2026). Держим его
   на main, а не на последней секции: постраничные нормализаторы обнуляют
   паддинги секций и перебивали бы этот хвост на половине страниц */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main {
  padding-bottom: 20px;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section > .wrap > *:first-child {
  margin-top: 0;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section > .wrap > *:last-child {
  margin-bottom: 0;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section:first-of-type {
  display: flow-root;
}

/* Зазор до подвала — 20px чистого фона, одинаково на всех страницах
   (решение 15.08.2026: сорока было много, часть страниц заметно отличалась
   от «Наличия», где стояло двадцать).
   :not([data-band]) здесь не ради полос, а ради специфичности: правило ритма
   выше получило этот же :not и стало на класс сильнее — без него зазор
   обнулялся ритмом и до подвала снова оставалось ноль.
   Второй селектор — на последний элемент, чем бы он ни был: на «Наличии»
   и «Спасибо» страница кончается не секцией, а карточкой, и правило до неё
   не доставало. */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section:last-of-type:not([data-band]) {
  padding-bottom: 20px;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > :last-child:not(section):not([data-band]) {
  margin-bottom: 20px;
}

/* Первый экран: весь зазор до следующего блока даёт этот блок, свои 10px */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) main > section:first-of-type:not(:last-of-type) {
  padding-bottom: 0;
}

/* Кегли карточек «Отраслей» задаёт файл страницы 12-industries-final.css —
   постраничным правилам в ядре не место (третий аудит «Отраслей», Д7). */

/* Тач-цели и переносы заголовков (аудит «Отраслей», P2-6 и P3-1) */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .quote-form .consent {
  align-items: center;
  min-height: 44px;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .quote-form .consent input[type="checkbox"] {
  width: 24px;
  min-width: 24px;
  height: 24px;
  flex: 0 0 24px;
  box-sizing: border-box;
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) .quote-form .file-select-button {
  min-height: 44px;
}

/* В заголовках недопустим перенос по слогам: «электрооборудова-ния».
   При этом «электрооборудования» на 30px требует 337px и не влезает в 328px
   контейнера на 360px — разрешаем перенос длинного слова без дефиса, как это
   уже сделано на «Отраслях», вместо уменьшения кегля H1. */
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) h1,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) h2,
body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) h3 {
  hyphens: none;
  -webkit-hyphens: none;
}

/* break-word, а не anywhere: разрыв только там, где слово реально не влезает.
   С anywhere «электрооборудования» рвалось посреди слова, хотя помещалось. */
@media (max-width: 480px) {
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) h1,
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body) h2 {
    overflow-wrap: break-word;
  }
}

/* Подгружены только Inter 400 и 600 при font-synthesis: none, поэтому
   браузерный дефолт strong/b (700) даёт не тот шрифт — приводим к 600. */
body:not(.admin-body) strong,
body:not(.admin-body) b {
  font-weight: 600;
}

/* Почта под формой — тач-цель 44px: ссылка идёт отдельной строкой,
   инлайновой её считать нельзя */
body:not(.admin-body) .quote-direct-email a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

/* ============================================================
   Карта: пока открыт виджет Яндекса, шапка идёт без размытия.
   backdrop-filter: blur(18px) у липкой шапки пересчитывается на каждом
   кадре прокрутки, и поверх тяжёлого iframe это давало заметные рывки.
   Вид шапки при этом не меняется: фон и так почти непрозрачный, здесь он
   просто становится сплошным. В обычном состоянии страницы всё как было —
   шапка утверждена и не переделывается.
   ============================================================ */
html.is-map-open body:not(.admin-body) .site-header {
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  background: #FFFFFF;
}

/* ============================================================
   Мобильная панель CTA: кнопки ниже и подпись мельче (просьба 16.08.2026).
   Было 52px высоты и 15–16px кегля — панель съедала 70px экрана. Стало
   44px (нижняя граница зоны нажатия) и 14px, панель ужалась до 62px.
   Файл общий: панель одна и та же на всех страницах.
   ============================================================ */
@media (max-width: 1023px) {
}

/* ============================================================
   «Подбор аналогов», планшет и узкий ноутбук: первый экран одной
   колонкой. При 1024 сетка отдавала тексту 500px, и длинный H1 42px
   разъезжался на пять строк (проверка ширин 16.08.2026). Правило
   ограничено этой страницей: на «О компании» та же сетка ведёт себя
   нормально — там заголовок короче.
   ============================================================ */
@media (min-width: 768px) and (max-width: 1199px) {
  body:not(.admin-body).pages.analog_selection .about-hero-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Возвращено 28.08.2026: карточка файла на «Наличии» — как до
   макета Stock Web (просьба заказчика) */

body:not(.admin-body) .stock-file-title-group h2 {
  margin: 0;
  color: var(--color-primary);
}

body:not(.admin-body) .stock-file-title-group h2 {
  font-size: 22px;
  line-height: 1.25;
}

body:not(.admin-body) .stock-file-warning {
  margin-top: 22px;
  font-size: 14px;
}

body:not(.admin-body) .stock-file-title-group h2 {
  font-size: 20px;
}

body:not(.admin-body) .stock-file-warning {
  margin-top: 18px;
  font-size: 13px;
  line-height: 1.5;
}

body:not(.admin-body).pages.stock .stock-file-title-group h2 {
  color: #10233c;
  font-size: 18px;
  font-weight: 600;
  line-height: 1.3;
}

body:not(.admin-body).pages.stock .stock-file-warning {
  margin-top: 18px;
  color: #5C6E84;
  font-size: 13px;
  line-height: 1.55;
}

/* ============================================================
   КАРТОЧКА СТАТЬИ (Главная и /stati, 16.09.2026)
   Ссылка на заголовке растянута на всю карточку псевдоэлементом
   ============================================================ */
body:not(.admin-body) .art-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin: 0;
  padding: 0;
  list-style: none;
}

body:not(.admin-body) .art-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 18px 18px 16px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: var(--color-bg);
  transition: border-color var(--mo-hover) var(--mo-ease);
}

body:not(.admin-body) .art-card-title {
  margin: 0;
}

body:not(.admin-body) .art-card-link {
  color: var(--color-text);
  text-decoration: none;
}

body:not(.admin-body) .art-card-link::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
}

body:not(.admin-body) .art-card-link:focus-visible {
  outline: none;
}

body:not(.admin-body) .art-card:has(.art-card-link:focus-visible) {
  outline: 2px solid #1870BD;
  outline-offset: 2px;
}

body:not(.admin-body) .art-card-text {
  margin: 0;
  color: var(--color-text-muted);
  font-size: 14px;
  line-height: 1.5;
}

body:not(.admin-body) .art-card-more {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: auto;
  padding-top: 6px;
  color: #1870BD;
  font-size: 15px;
  font-weight: var(--fw-bold);
  line-height: 1.4;
}

@media (hover: hover) {
  body:not(.admin-body) .art-card:hover {
    border-color: var(--color-border-strong);
  }

  body:not(.admin-body) .art-card:hover .contact-link-arrow {
    transform: translateX(3px);
  }
}

@media (max-width: 1023px) {
  body:not(.admin-body) .art-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 767px) {
  body:not(.admin-body) .art-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 10px;
  }

  body:not(.admin-body) .art-card {
    gap: 6px;
    padding: 14px 14px 13px;
  }
}
