/* ЗАПАСНЫЕ НАЧЕРТАНИЯ С ПОДОГНАННЫМИ МЕТРИКАМИ.
   Замер 06.09 (tools/bfc_gal_cls.js + probe): у всех начертаний контура
   font-display:swap, а кириллические подмножества приезжают около 1,1 c. В этот
   момент строки пересобираются: крошки 46 -> 19 px, h1 154 -> 123 px, и всё ниже
   уезжает вверх — сдвиг 0,18 при бюджете 0,1. Ширина строки в реальном начертании
   и в системном запасном измерена на живой странице одной и той же фразой в 28 px:
   Roboto Condensed / Arial = 0.8452, Onest / Arial = 1.0290. Эти два числа и стоят
   в size-adjust, поэтому до подмены текст занимает столько же места, сколько после.
   Ratio считан на Windows-сборке; на другой платформе local() возьмёт другой файл и
   подгонка станет приблизительной — но хуже, чем без неё, не будет. */
@font-face {
  font-family: 'BFC RC fallback';
  src: local('Arial'), local('Helvetica Neue'), local('Liberation Sans');
  font-weight: 100 900;
  size-adjust: 84.52%;
  ascent-override: 105%;
  descent-override: 27%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'BFC Onest fallback';
  src: local('Arial'), local('Helvetica Neue'), local('Liberation Sans');
  font-weight: 100 900;
  size-adjust: 102.90%;
  ascent-override: 100%;
  descent-override: 25%;
  line-gap-override: 0%;
}

/* GALLERY-V2-0609 (+ V3-1309: лайтбокс, рендеры, схемы, шаги, документы, подгалереи) — хаб /gallery/ и сегменты /resheniya/<slug>/.
   Мобайл-ферст: базовые правила = 360 px, дальше три брейкпоинта вверх.
   Токены бренда: #f6921e (акцент), #1a1a1a (текст). Скруглений < 20 px у карточек нет
   (И-91): радиус картинки равен радиусу её карточки, прямых углов в компоненте нет.
   Шрифты самохост контура (assets/css/bfc-fonts.css): Roboto Condensed + Onest,
   своих @font-face и внешних запросов нет. */

.bfc-gv2 {
  --gv2-accent: #f6921e;
  --gv2-accent-dark: #d97b12;
  --gv2-ink: #1a1a1a;
  --gv2-ink-2: #3d3d3d;
  --gv2-mute: #8a8a8a;
  --gv2-line: #e8e8e8;
  --gv2-soft: #fff4ea;
  --gv2-r: 22px;      /* медиа и контейнеры, канон 20–24 */
  --gv2-r-card: 18px; /* карточки-ссылки, канон 16–20 */
  --gv2-r-sm: 12px;   /* кнопки и мелкие плашки, канон 12 */
  font-family: 'Roboto Condensed', 'BFC RC fallback', system-ui, -apple-system, sans-serif;
  color: var(--gv2-ink);
  max-width: 1240px;
  margin: 0 auto;
  padding: 16px 0 36px;
}
.bfc-gv2 *, .bfc-gv2 *::before, .bfc-gv2 *::after { box-sizing: border-box; }
.bfc-gv2 a { color: var(--gv2-ink); text-decoration: none; }
.bfc-gv2 a:hover { color: var(--gv2-accent-dark); }
.bfc-gv2 :focus-visible { outline: 2px solid var(--gv2-accent); outline-offset: 3px; border-radius: var(--gv2-r-sm); }
.bfc-gv2 img { max-width: 100%; height: auto; display: block; }

/* --- шапка страницы --- */
.bfc-gv2__crumbs { margin: 0 0 20px; font-size: 13px; color: var(--gv2-mute); }
/* nowrap + свой скролл: перенос крошек менял их высоту на 27 px при подмене
   шрифта и тянул за собой всю страницу. Одна строка не может стать двумя. */
.bfc-gv2__crumbs ol { list-style: none; display: flex; flex-wrap: nowrap; gap: 8px;
  margin: 0; padding: 0 0 2px; overflow-x: auto; -webkit-overflow-scrolling: touch;
  scrollbar-width: none; }
.bfc-gv2__crumbs ol::-webkit-scrollbar { display: none; }
.bfc-gv2__crumbs li { white-space: nowrap; }
.bfc-gv2__crumbs li + li::before { content: '→'; margin-right: 8px; color: var(--gv2-line); }
.bfc-gv2__crumbs a { color: var(--gv2-mute); }
.bfc-gv2__kicker { margin: 0 0 10px; font-size: 13px; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--gv2-accent); }
.bfc-gv2__h1 { margin: 0 0 16px; font-weight: 700; font-size: 28px; line-height: 1.1;
  letter-spacing: -.01em; }
.bfc-gv2__lead { margin: 0 0 32px; max-width: 820px; font-family: Onest, 'BFC Onest fallback', sans-serif;
  font-size: 16px; line-height: 1.6; color: var(--gv2-ink-2); }
.bfc-gv2__h2 { margin: 0 0 6px; font-size: 20px; font-weight: 700; letter-spacing: .01em;
  text-transform: uppercase; }
 /* L-04. Замер 08.09: до правки последняя секция давала 44 px своего margin
   ПЛЮС 48/64 padding контейнера — 92 px на мобиле и 108 на 1280 подряд пустотой
   перед «// контакты». Здесь ритм приведён к канону (32–40 мобайл, 48–64 десктоп),
   а у последней секции margin снят: интервал до контактов остаётся ровно один —
   нижний padding контейнера. */
.bfc-gv2 section { margin: 0 0 36px; }
.bfc-gv2 > section:last-child { margin-bottom: 0; }
.bfc-gv2__h2 + * { margin-top: 18px; }
.bfc-gv2 section > .bfc-gv2__h2::after { content: ''; display: block; width: 44px; height: 3px;
  background: var(--gv2-accent); margin: 10px 0 0; border-radius: 2px; }

/* --- карточки сегментов --- */
.bfc-gv2__seg-grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
.bfc-gv2__seg { display: flex; flex-direction: column; overflow: hidden;
  border: 1px solid var(--gv2-line); border-radius: var(--gv2-r); background: #fff;
  transition: border-color 180ms ease, transform 180ms ease; }
.bfc-gv2__seg:hover { border-color: var(--gv2-accent); transform: translateY(-2px); }
.bfc-gv2__seg-shot { display: block; aspect-ratio: 3 / 2; overflow: hidden;
  border-radius: var(--gv2-r) var(--gv2-r) 0 0; background: #f2f2f2; }
.bfc-gv2__seg-shot img { width: 100%; height: 100%; object-fit: cover; }
.bfc-gv2__seg-body { display: block; padding: 16px 18px 18px; }
.bfc-gv2__seg-name { display: block; font-size: 18px; font-weight: 700; line-height: 1.2; }
.bfc-gv2__seg-n { display: inline-block; margin: 8px 0 6px; padding: 3px 10px;
  border-radius: 999px; background: var(--gv2-soft); color: var(--gv2-accent-dark);
  font-size: 13px; font-weight: 700; }
.bfc-gv2__seg-for { display: block; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 14px;
  line-height: 1.5; color: var(--gv2-ink-2); }

/* --- фильтры --- */
.bfc-gv2__filters { display: flex; flex-direction: column; gap: 10px; padding: 14px;
  background: var(--gv2-soft); border: 1px solid #f6d7b4; border-radius: var(--gv2-r);
  margin-bottom: 16px; }
 /* L-06. < 1024 — свайп БЕЗ видимой полосы; следующий чип виден краем сам собой,
   потому что ряд не переносится и обрезается по правому краю панели. */
.bfc-gv2__frow { display: flex; align-items: center; gap: 8px; overflow-x: auto;
  padding-bottom: 2px; -webkit-overflow-scrolling: touch; scrollbar-width: none;
  -ms-overflow-style: none; }
.bfc-gv2__frow::-webkit-scrollbar { display: none; }
/* Кромка-подсказка. Замер 08.09: «следующий чип виден краем» сам по себе НЕ
   гарантирован — он зависит от того, попадает ли граница ряда внутрь чипа, а это
   арифметика ширин. Из девяти рядов (3 ряда x 360/390/412) в семи чип кромку
   пересекал, а в двух (360 «Изделие», 390 «Объект») последний чип заканчивался
   в 2 и в -1 px от кромки, и ряд выглядел законченным, хотя прокрутка есть.
   Растворение правых 28 px даёт подсказку независимо от ширин: край всегда
   выглядит обрезанным. Ряды на <1024 переполнены все девять, так что маска
   никогда не висит над рядом, который целиком помещается. */
@media (max-width: 1023.98px) {
  .bfc-gv2__frow {
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
    mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
  }
}
.bfc-gv2__flab { flex: none; font-size: 12px; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--gv2-mute); }
.bfc-gv2__chip { flex: none; display: inline-flex; align-items: center; height: 34px;
  padding: 0 14px; border-radius: 999px; border: 1px solid var(--gv2-line); background: #fff;
  color: var(--gv2-ink); font-family: inherit; font-size: 14px; font-weight: 600;
  white-space: nowrap; cursor: pointer; transition: 180ms ease; }
 /* L-05 и для чипов: чип — это <button>, поэтому `.bfc-gv2 a` его не трогает и
   объявления здесь ЖИВЫЕ, а значит их числа настоящие. Замер 08.09: активный чип
   давал #fff по #f6921e = 2.32:1, ховерный — #d97b12 по #fff = 3.09:1, оба ниже
   порога 4.5:1. Канон на оранжевой заливке прямо называет #1a1a1a: активный чип
   7.50:1, ховерный 17.40:1; акцент при этом никуда не делся — его держит рамка. */
.bfc-gv2__chip:hover { border-color: var(--gv2-accent); color: var(--gv2-ink); }
.bfc-gv2__chip.is-on { border-color: var(--gv2-accent); background: var(--gv2-accent); color: var(--gv2-ink); }
.bfc-gv2__count { margin: 0 0 14px; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 14px; color: var(--gv2-mute); }
 /* L-10: пустой фильтр — текст, три ближайших кадра и сброс. */
.bfc-gv2__empty { margin: 8px 0 0; }
.bfc-gv2__empty-t { margin: 0 0 16px; font-family: Onest, 'BFC Onest fallback', sans-serif;
  font-size: 15px; line-height: 1.55; color: var(--gv2-ink-2); }
.bfc-gv2__empty-near { margin: 0 0 18px; }
.bfc-gv2__empty-near:empty { display: none; }
 /* L-05: #d97b12 по белому = 3.09:1 — ниже порога, поэтому текст ink (17.40:1),
   акцент держит рамка. На ховере ink по #f6921e = 7.50:1. */
.bfc-gv2__btn--reset { border: 1px solid var(--gv2-accent); color: var(--gv2-ink);
  background: #fff; cursor: pointer; font-family: inherit; }
.bfc-gv2__btn--reset:hover { background: var(--gv2-accent); color: var(--gv2-ink); }

/* --- сетка кадров --- */
.bfc-gv2__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.bfc-gv2__card { margin: 0; display: flex; flex-direction: column;
  border: 1px solid var(--gv2-line); border-radius: var(--gv2-r); overflow: hidden; background: #fff; }
.bfc-gv2__card[hidden] { display: none; }
.bfc-gv2__shot { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden;
  background: #f2f2f2; border-radius: var(--gv2-r) var(--gv2-r) 0 0; }
.bfc-gv2__shot img { width: 100%; height: 100%; object-fit: cover;
  transition: transform 240ms ease; }
.bfc-gv2__shot:hover img { transform: scale(1.03); }
/* L-03: кадр kind=render — не фотография, кроп у него срезает изделие.
   contain на белом; ключ тот же data-kind, что уже стоял на карточке. */
.bfc-gv2__card[data-kind="render"] .bfc-gv2__shot { background: #fff; }
.bfc-gv2__card[data-kind="render"] .bfc-gv2__shot img { object-fit: contain; }
/* Бейдж «рендер». pointer-events:none — иначе плашка перехватывает клик по кадру
   и лайтбокс не открывается в левом верхнем углу карточки. */
.bfc-gv2__badge { position: absolute; left: 10px; top: 10px; z-index: 2;
  padding: 3px 8px; border-radius: 8px; background: rgba(26, 26, 26, .7); color: #fff;
  font-family: 'Roboto Condensed', 'BFC RC fallback', sans-serif; font-size: 11px;
  font-weight: 700; letter-spacing: .06em; text-transform: uppercase; line-height: 1.5;
  pointer-events: none; }
.bfc-gv2__cap { padding: 10px 12px 12px; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 13px;
  line-height: 1.45; color: var(--gv2-ink-2); }
.bfc-gv2__tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.bfc-gv2__tag { display: inline-flex; align-items: center; padding: 2px 9px; border-radius: 999px;
  background: #f5f5f5; color: var(--gv2-mute); font-family: 'Roboto Condensed', 'BFC RC fallback', sans-serif;
  font-size: 12px; font-weight: 600; }
.bfc-gv2__more { margin: 16px 0 0; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 15px; }
.bfc-gv2__more a { color: var(--gv2-accent-dark); font-weight: 600; }

/* --- списки-ссылки (что понадобится / документы / полезное / также) --- */
.bfc-gv2__need-list, .bfc-gv2__docs-list, .bfc-gv2__useful-list, .bfc-gv2__also-list {
  list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr; gap: 10px; }
.bfc-gv2__need-list a, .bfc-gv2__docs-list a, .bfc-gv2__useful-list a, .bfc-gv2__also-list a {
  display: block; padding: 14px 16px; border: 1px solid var(--gv2-line);
  border-radius: var(--gv2-r-card); background: #fff; transition: 180ms ease; }
.bfc-gv2__need-list a:hover, .bfc-gv2__docs-list a:hover,
.bfc-gv2__useful-list a:hover, .bfc-gv2__also-list a:hover { border-color: var(--gv2-accent); }
.bfc-gv2__need-t, .bfc-gv2__useful-t { display: block; font-size: 16px; font-weight: 700; line-height: 1.25; }
.bfc-gv2__need-d, .bfc-gv2__useful-d { display: block; margin-top: 3px; font-family: Onest, 'BFC Onest fallback', sans-serif;
  font-size: 14px; line-height: 1.45; color: var(--gv2-mute); }

/* --- схема --- */
.bfc-gv2__scheme-fig { margin: 0; border: 1px solid var(--gv2-line); border-radius: var(--gv2-r);
  overflow: hidden; background: #fff; max-width: 560px; }
.bfc-gv2__scheme-fig img { width: 100%; height: auto; }
.bfc-gv2__scheme-fig figcaption { padding: 12px 16px 14px; font-family: Onest, 'BFC Onest fallback', sans-serif;
  font-size: 13px; line-height: 1.45; color: var(--gv2-ink-2); border-top: 1px solid var(--gv2-line); }

/* --- шаги --- */
.bfc-gv2__steps-list { margin: 0; padding: 0; list-style: none; counter-reset: gv2step;
  display: grid; gap: 10px; }
.bfc-gv2__steps-list li { counter-increment: gv2step; position: relative;
  padding: 12px 16px 12px 52px; border: 1px solid var(--gv2-line); border-radius: var(--gv2-r-card);
  background: #fff; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 15px; line-height: 1.5;
  color: var(--gv2-ink-2); }
.bfc-gv2__steps-list li::before { content: counter(gv2step); position: absolute; left: 14px; top: 12px;
  width: 26px; height: 26px; border-radius: 999px; background: var(--gv2-accent); color: #fff;
  font-family: 'Roboto Condensed', 'BFC RC fallback', sans-serif; font-weight: 700; font-size: 14px;
  display: flex; align-items: center; justify-content: center; }
.bfc-gv2__steps-note { margin: 14px 0 0; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 14px; color: var(--gv2-mute); }
.bfc-gv2__steps-note a { color: var(--gv2-accent-dark); font-weight: 600; }

/* --- FAQ --- */
.bfc-gv2__faq-list { border-top: 1px solid var(--gv2-line); }
.bfc-gv2__faq-item { border-bottom: 1px solid var(--gv2-line); }
.bfc-gv2__faq-item > summary { list-style: none; cursor: pointer; display: flex; gap: 12px;
  align-items: flex-start; min-height: 48px; padding: 14px 0; }
.bfc-gv2__faq-item > summary::-webkit-details-marker { display: none; }
.bfc-gv2__faq-item > summary::after { content: '⌄'; margin-left: auto; color: var(--gv2-accent);
  font-size: 20px; line-height: 1; transition: transform 180ms ease; }
.bfc-gv2__faq-item[open] > summary::after { transform: rotate(180deg); }
.bfc-gv2__faq-q { font-size: 16px; font-weight: 700; line-height: 1.3; }
.bfc-gv2__faq-a { padding: 0 0 16px; }
.bfc-gv2__faq-a p { margin: 0; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 15px; line-height: 1.6;
  color: var(--gv2-ink-2); }

/* --- CTA --- */
.bfc-gv2__cta { border-radius: var(--gv2-r); background: #1e2a3a; color: #fff; overflow: hidden; }
.bfc-gv2__cta-in { padding: 24px 20px 26px; }
.bfc-gv2__cta-h { margin: 0 0 8px; font-size: 20px; font-weight: 700; line-height: 1.2;
  text-transform: uppercase; letter-spacing: .01em; }
.bfc-gv2__cta-p { margin: 0 0 18px; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 15px;
  line-height: 1.55; color: #cfd6df; max-width: 620px; }
.bfc-gv2__cta-row { display: flex; flex-wrap: wrap; gap: 10px; }
.bfc-gv2__btn { display: inline-flex; align-items: center; justify-content: center;
  min-height: 48px; padding: 0 22px; border-radius: 999px; font-size: 15px; font-weight: 700;
  line-height: 1.2; text-align: center; transition: 180ms ease; }
 /* L-05, и ПОЧЕМУ СЕЛЕКТОР С `a`.
   Замер 08.09 на живой странице: у «Запросить прайс» объявленный color:#fff был
   МЁРТВ — computed отдавал rgb(26,26,26). Причина не в кнопке, а в соседе:
   `.bfc-gv2 a` (0,1,1) перебивает `.bfc-gv2__btn--ghost` (0,1,0), и текст брал
   ink. Фактический контраст был 1.20:1 при пороге 4.5:1 — то есть надпись почти
   сливалась с тёмным блоком, хотя в исходнике стояло правильное значение.
   То же и на ховере: `.bfc-gv2 a:hover` (0,2,1) забирал #d97b12, из-за чего у
   оранжевой кнопки текст и фон на ховере совпадали (1.00:1, надпись исчезала).
   Поэтому селекторы ниже подняты до (0,2,1)/(0,3,1) — своим `a`, без !important.
   Контрасты после: #1a1a1a по #f6921e = 7.50:1, по #d97b12 = 5.63:1;
   #fff по #1e2a3a = 14.51:1; #f6921e по #1e2a3a = 6.25:1; рамка .6 = 6.20:1. */
.bfc-gv2 a.bfc-gv2__btn--main { background: var(--gv2-accent); color: var(--gv2-ink); }
.bfc-gv2 a.bfc-gv2__btn--main:hover { background: var(--gv2-accent-dark); color: var(--gv2-ink); }
.bfc-gv2 a.bfc-gv2__btn--ghost { border: 1px solid rgba(255, 255, 255, .6); color: #fff; }
.bfc-gv2 a.bfc-gv2__btn--ghost:hover { border-color: var(--gv2-accent); color: var(--gv2-accent); }

/* --- О компании в фото --- */
.bfc-gv2__legacy-p { margin: 0 0 16px; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 15px;
  line-height: 1.55; color: var(--gv2-ink-2); }
.bfc-gv2__legacy-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.bfc-gv2__legacy-item { display: flex; flex-direction: column; border: 1px solid var(--gv2-line);
  border-radius: var(--gv2-r); overflow: hidden; background: #fff; transition: 180ms ease; }
.bfc-gv2__legacy-item:hover { border-color: var(--gv2-accent); }
.bfc-gv2__legacy-shot { display: block; aspect-ratio: 3 / 2; overflow: hidden; background: #f2f2f2;
  border-radius: var(--gv2-r) var(--gv2-r) 0 0; }
.bfc-gv2__legacy-shot img { width: 100%; height: 100%; object-fit: cover; }
.bfc-gv2__legacy-name { display: block; padding: 12px 14px 14px; font-size: 15px; font-weight: 700;
  line-height: 1.25; }

/* --- V3-2: «Что понадобится» — рендер изделия слева (contain, #fff, r16) --- */
.bfc-gv2__need-list--v3 a { display: flex; gap: 14px; align-items: center; padding: 12px 14px 12px 12px; }
.bfc-gv2__need-shot { position: relative; flex: none; width: 96px; height: 96px; border-radius: 16px;
  background: #fff; border: 1px solid var(--gv2-line); overflow: hidden; display: flex; align-items: center; justify-content: center; }
.bfc-gv2__need-shot img { width: 100%; height: 100%; object-fit: contain; padding: 6px; }
.bfc-gv2__need-shot .bfc-gv2__ico { width: 56px; height: 56px; }
.bfc-gv2__need-body { display: block; min-width: 0; }
.bfc-gv2__badge--sm { left: 6px; top: 6px; padding: 2px 6px; font-size: 10px; border-radius: 6px; }
.bfc-gv2__debt { display: block; margin-top: 4px; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 12px; color: var(--gv2-mute); }
.bfc-gv2__ico { display: block; width: 48px; height: 48px; }

/* --- V3-5: схема монтажа — взрыв-схема + легенда узла --- */
.bfc-gv2__scheme-row { display: grid; grid-template-columns: 1fr; gap: 16px; align-items: start; }
.bfc-gv2__scheme-fig { margin: 0; border: 1px solid var(--gv2-line); border-radius: 24px; overflow: hidden; background: #fff; max-width: 560px; }
.bfc-gv2__scheme-shot { position: relative; display: block; background: #fff; }
.bfc-gv2__scheme-shot img { width: 100%; height: auto; object-fit: contain; display: block; }
.bfc-gv2__scheme-fig figcaption { padding: 12px 16px 14px; font-family: Onest, 'BFC Onest fallback', sans-serif;
  font-size: 13px; line-height: 1.45; color: var(--gv2-ink-2); border-top: 1px solid var(--gv2-line); }
.bfc-gv2__scheme-legend { padding: 16px 18px; border: 1px solid var(--gv2-line); border-radius: 20px; background: #fafafa; }
.bfc-gv2__scheme-legend-t { margin: 0 0 10px; font-size: 14px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--gv2-ink); }
.bfc-gv2__scheme-legend ol { margin: 0; padding: 0 0 0 22px; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 15px; line-height: 1.5; color: var(--gv2-ink-2); display: grid; gap: 8px; }
.bfc-gv2__scheme-legend li::marker { color: var(--gv2-accent-dark); font-weight: 700; }
/* тема гасит маркеры ol — возвращаем номера явно (замер 13.09: список без цифр) */
.bfc-gv2__scheme-legend li { display: list-item; list-style: decimal; }
.bfc-gv2__scheme-more { display: grid; grid-template-columns: 1fr; gap: 12px; margin-top: 16px; }
.bfc-gv2__scheme-fig--sm { max-width: 420px; }
.bfc-gv2__scheme-fig--sm figcaption { font-size: 12px; }

/* --- V3-3: шаги монтажа — визуал на каждом шаге --- */
.bfc-gv2__steps-list--v3 li { position: relative; display: grid; grid-template-columns: 88px 1fr; gap: 12px; align-items: center; padding: 10px 14px 10px 10px; }
.bfc-gv2__steps-list--v3 li::before { display: none; }
.bfc-gv2__step-shot { position: relative; display: block; width: 88px; height: 88px; border-radius: 14px; overflow: hidden;
  background: #f2f2f2; border: 1px solid var(--gv2-line); }
.bfc-gv2__step-shot img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bfc-gv2__step-shot img[data-fit="contain"] { object-fit: contain; background: #fff; padding: 4px; }
.bfc-gv2__step-shot .bfc-gv2__ico { width: 100%; height: 100%; padding: 14px; background: #fff; }
.bfc-gv2__step-n { position: absolute; left: 14px; top: 14px; width: 26px; height: 26px; border-radius: 999px;
  background: var(--gv2-accent); color: var(--gv2-ink); font-family: 'Roboto Condensed', 'BFC RC fallback', sans-serif;
  font-weight: 700; font-size: 14px; display: flex; align-items: center; justify-content: center; z-index: 2;
  box-shadow: 0 2px 8px rgba(26, 26, 26, .18); }
.bfc-gv2__step-t { display: block; }

/* --- V3-4: документы / смотрите также / полезное — превью на карточке --- */
.bfc-gv2__docs-list--v3 a { display: flex; gap: 14px; align-items: center; padding: 12px 14px 12px 12px; }
.bfc-gv2__doc-shot { flex: none; width: 96px; height: 72px; border-radius: 12px; overflow: hidden; background: #f2f2f2;
  border: 1px solid var(--gv2-line); display: flex; align-items: center; justify-content: center; }
.bfc-gv2__doc-shot img { width: 100%; height: 100%; object-fit: cover; object-position: top; display: block; }
.bfc-gv2__doc-shot--icon { background: #fff; }
.bfc-gv2__doc-shot .bfc-gv2__ico { width: 44px; height: 44px; }
.bfc-gv2__also-list--v3 a, .bfc-gv2__useful-list--v3 a { padding: 0 0 14px; overflow: hidden; }
.bfc-gv2__link-shot { display: block; aspect-ratio: 16 / 9; overflow: hidden; background: #f2f2f2;
  border-radius: 16px 16px 0 0; margin-bottom: 10px; }
.bfc-gv2__link-shot img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bfc-gv2__link-shot--icon { display: flex; align-items: center; justify-content: center; background: #fff4eb; }
.bfc-gv2__also-list--v3 .bfc-gv2__need-body, .bfc-gv2__useful-list--v3 .bfc-gv2__need-body { display: block; padding: 0 14px; }

/* --- V3-8: подгалереи и обложки альбомов на хабе --- */
.bfc-gv2__legacy-grid--albums { grid-template-columns: repeat(2, minmax(0, 1fr)); }
/* L-08: карточки одной высоты в ряду — явный stretch (замер 13.09: у albums ряд рвался на 6 px) */
.bfc-gv2__legacy-grid { align-items: stretch; }
.bfc-gv2__legacy-item { height: 100%; }
.bfc-gv2__legacy-n { display: block; margin-top: 4px; font-family: Onest, 'BFC Onest fallback', sans-serif; font-size: 12px; font-weight: 400; color: var(--gv2-mute); }
.bfc-gv2--sub .bfc-gv2__card, .bfc-gv2--sub .bfc-gv2__legacy-item { border-color: var(--gv2-line); box-shadow: 0 14px 40px rgba(26, 26, 26, .08); }
/* L-01: пиктограмма вопроса в FAQ */
.bfc-gv2__faq-item > summary .bfc-gv2__ico { flex: none; width: 28px; height: 28px; margin-top: -2px; }
.bfc-gv2--sub .bfc-gv2__shot { aspect-ratio: 4 / 3; }
.bfc-gv2__legacy-p { margin: 0 0 10px; font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--gv2-mute); }
.bfc-gv2__legacy-grid + .bfc-gv2__legacy-p { margin-top: 20px; }

/* --- 700+ --- */
@media (min-width: 700px) {
  .bfc-gv2__h1 { font-size: 34px; }
  .bfc-gv2__h2 { font-size: 22px; }
  .bfc-gv2__seg-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .bfc-gv2__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
  .bfc-gv2__need-list, .bfc-gv2__docs-list, .bfc-gv2__useful-list, .bfc-gv2__also-list {
    grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bfc-gv2__legacy-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .bfc-gv2__legacy-grid--albums { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .bfc-gv2__need-shot { width: 120px; height: 120px; }
  .bfc-gv2__scheme-more { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bfc-gv2__steps-list--v3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bfc-gv2__cta-in { padding: 30px 32px 32px; }
  .bfc-gv2__filters { flex-direction: column; }
}

 /* --- L-06: десктоп >= 1024 — ряды чипов переносятся, горизонтальной прокрутки нет --- */
@media (min-width: 1024px) {
  .bfc-gv2__frow { flex-wrap: wrap; overflow-x: visible; row-gap: 8px; padding-bottom: 0; }
  /* V3-5: две колонки — схема max 560 + легенда справа */
  .bfc-gv2__scheme-row { grid-template-columns: minmax(0, 560px) minmax(280px, 1fr); gap: 24px; }
  .bfc-gv2__scheme-more { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 1000px; }
  .bfc-gv2__legacy-grid--albums { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

/* --- V3-1: лайтбокс fancyBox 3.5.7 под дизайн-токены ----------------------------
   Оверлей монтируется в <body>, ВНЕ .bfc-gv2 — var(--gv2-*) там мёртвы (ловушка §7),
   поэтому ниже только литералы. Селекторы двухклассовые и выше: у темы есть
   `[class*="gallery"] img` (0,1,1) и свои правила на .fancybox-button — одноклассовое
   объявление проигрывает молча (замер 06.09, тот же класс, что G01).
   Что скрыто: zoom / slideShow / thumbs / fullScreen / share (и через defaults в JS,
   и здесь — на случай, если чужой скрипт откроет лайтбокс со своими кнопками).
   Контрасты (число, не ощущение): #fff по rgba(26,26,26,.85) поверх белого кадра =
   10.4:1; #1a1a1a по #f6921e (ховер) = 7.5:1; #fff по плашке rgba(26,26,26,.6)
   поверх белого = 4.54:1 (граница 4.5, поверх тёмного фона оверлея — 15:1). */
.fancybox-container { z-index: 2147483600; font-family: 'Roboto Condensed', 'BFC RC fallback', Arial, sans-serif; }
.fancybox-container .fancybox-bg { background: #1a1a1a; }
.fancybox-container.fancybox-is-open .fancybox-bg { opacity: .92; }
.fancybox-container .fancybox-toolbar { top: 12px; right: 12px; padding: 0; background: transparent; }
.fancybox-container .fancybox-button,
.fancybox-container .fancybox-navigation .fancybox-button {
  width: 44px; height: 44px; padding: 10px; margin: 0; border: 0; border-radius: 50%;
  background: rgba(26, 26, 26, .85); color: #fff; box-shadow: 0 6px 20px rgba(0, 0, 0, .25);
  transition: background 160ms ease, color 160ms ease; cursor: pointer; }
.fancybox-container .fancybox-button svg { width: 24px; height: 24px; }
.fancybox-container .fancybox-button svg path { fill: currentColor; stroke: none; }
.fancybox-container .fancybox-button:hover,
.fancybox-container .fancybox-button:focus-visible { background: #f6921e; color: #1a1a1a; }
.fancybox-container .fancybox-button:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.fancybox-container .fancybox-button[disabled],
.fancybox-container .fancybox-button[disabled]:hover { background: rgba(26, 26, 26, .45); color: rgba(255, 255, 255, .5); cursor: default; }
.fancybox-container .fancybox-button--zoom,
.fancybox-container .fancybox-button--play,
.fancybox-container .fancybox-button--pause,
.fancybox-container .fancybox-button--thumbs,
.fancybox-container .fancybox-button--fullscreen,
.fancybox-container .fancybox-button--share,
.fancybox-container .fancybox-thumbs { display: none !important; }
/* стрелки — те же круги у краёв, вертикально по центру */
.fancybox-container .fancybox-navigation { pointer-events: none; }
.fancybox-container .fancybox-navigation .fancybox-button {
  position: absolute; top: 50%; transform: translateY(-50%); opacity: 1; visibility: visible; pointer-events: auto; z-index: 99998; }
.fancybox-container.fancybox-is-idle .fancybox-toolbar,
.fancybox-container.fancybox-is-idle .fancybox-navigation .fancybox-button,
.fancybox-container.fancybox-is-idle .fancybox-infobar { opacity: 1; visibility: visible; }
.fancybox-container .fancybox-navigation .fancybox-button div { padding: 0; }
.fancybox-container .fancybox-navigation .fancybox-button--arrow_left { left: 12px; right: auto; }
.fancybox-container .fancybox-navigation .fancybox-button--arrow_right { right: 12px; left: auto; }
/* счётчик «65 / 67» — плашка радиус 12 */
.fancybox-container .fancybox-infobar {
  top: 12px; left: 12px; height: auto; min-width: 0; padding: 8px 14px; line-height: 1;
  border-radius: 12px; background: rgba(26, 26, 26, .6); color: #fff; opacity: 1;
  font-family: 'Roboto Condensed', 'BFC RC fallback', Arial, sans-serif; font-weight: 500; font-size: 15px;
  letter-spacing: .04em; mix-blend-mode: normal; pointer-events: none; }
/* кадр — радиус 24, скругление режет и картинку (L-02); рендер — на #fafafa, contain (L-03) */
.fancybox-container .fancybox-slide--image .fancybox-content,
.fancybox-container .fancybox-image,
.fancybox__container .fancybox__content,
.fancybox__container .fancybox__image { border-radius: 24px; overflow: hidden; }
.fancybox-container .fancybox-slide--image .fancybox-content { background: transparent; }
.fancybox-container .fancybox-slide--image .fancybox-content.bfc-lb-render { background: #fafafa; }
.fancybox-container .fancybox-content.bfc-lb-render .fancybox-image { object-fit: contain; background: #fafafa; }
/* подпись — плашка радиус 16, не белым по белому */
.fancybox-container .fancybox-caption { padding: 0 12px 16px; background: transparent; }
.fancybox-container .fancybox-caption::before { display: none; }
.fancybox-container .fancybox-caption__body {
  display: inline-block; max-width: 720px; padding: 10px 16px; border-radius: 16px;
  background: rgba(26, 26, 26, .75); color: #fff; font-size: 15px; line-height: 1.4;
  font-family: 'Roboto Condensed', 'BFC RC fallback', Arial, sans-serif; text-align: left; }
.fancybox-container .fancybox-caption a { color: #f6921e; }
/* мобиль (L-11): X в зоне большого пальца — правый нижний угол над подписью;
   свайп — штатный touch-обработчик fancyBox, включён в JS (touch.vertical). */
@media (max-width: 699.98px) {
  .fancybox-container .fancybox-toolbar { top: auto; bottom: 96px; right: 12px; }
  .fancybox-container .fancybox-infobar { top: 12px; left: 12px; }
  .fancybox-container .fancybox-caption { padding-bottom: 20px; padding-right: 68px; }
  .fancybox-container .fancybox-navigation .fancybox-button--arrow_left { left: 8px; }
  .fancybox-container .fancybox-navigation .fancybox-button--arrow_right { right: 8px; }
}

/* --- 1100+ --- */
@media (min-width: 1100px) {
  .bfc-gv2 { padding: 24px 0 56px; }
  .bfc-gv2 section { margin: 0 0 56px; }
  .bfc-gv2__h1 { font-size: 40px; }
  .bfc-gv2__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .bfc-gv2__useful-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .bfc-gv2__also-list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .bfc-gv2__cta-h { font-size: 24px; }
}

@media (prefers-reduced-motion: reduce) {
  .bfc-gv2 *, .bfc-gv2 *::before, .bfc-gv2 *::after { transition: none !important; }
  .bfc-gv2__shot:hover img { transform: none; }
}

/* --- L-02 FIX (волна GALLERY-V3-FIX-1309, 13.09): радиус НА САМОЙ КАРТИНКЕ -------
   Замечание владельца 13.09 (повтор L-02 = дефект процесса, И-330): рендеры с
   оранжевым градиентом в сетках не обрезаются скруглением. Корень: радиус стоял
   ТОЛЬКО на контейнере, а у <img> радиуса не было. Для object-fit:cover это не
   видно — картинка заполняет контейнер и его overflow:hidden режет её углы. Для
   object-fit:contain картинка МЕНЬШЕ контейнера (letterbox), её углы до границы
   контейнера не доходят, резать нечего — и градиент показывает прямой угол.
   overflow:hidden на контейнерах остаётся (страховка при hover-масштабе).

   Значение радиуса (D-GALLERY-V3-FIX-1309-01): не литерал, а СОВПАДЕНИЕ с углом
   контейнера. cover-медиа — border-radius:inherit (точное совпадение, ноль риска
   получить уголок фона между картинкой и рамкой). contain-медиа с padding —
   радиус контейнера МИНУС padding, иначе скругление картинки не ляжет на
   скругление рамки. Нижние углы карточек, продолжающихся подписью, остаются 0 —
   там контейнер прямой, и скруглять картинку значило бы порвать стык (L-13).

   Специфичность (0,2,1) — у темы есть `[class*="gallery"] img` (0,1,1), при
   равной специфичности она бы выиграла порядком. Проверять computed, не grep. */
.bfc-gv2 .bfc-gv2__shot img,
.bfc-gv2 .bfc-gv2__seg-shot img,
.bfc-gv2 .bfc-gv2__legacy-shot img,
.bfc-gv2 .bfc-gv2__link-shot img,
.bfc-gv2 .bfc-gv2__doc-shot img,
.bfc-gv2 .bfc-gv2__step-shot img { border-radius: inherit; }
/* ВАЖНО, ЗАМЕР 13.09. Одного border-radius на <img> для contain-медиа МАЛО.
   При object-fit:contain бокс картинки равен контейнеру, а пиксели вписаны внутрь
   него с полями: рендер 480x480 в кадре 296x222 даёт содержимое 222x222 и поля по
   37 px слева и справа. Углы РЕНДЕРА лежат в 37 px от углов бокса, а радиус 22
   режет только зону 22 px в углу — до углов картинки он не достаёт, и залитый угол
   остаётся прямым (замер: у zabor-23-slozhnyj-vynos-machty-480.webp верхний левый
   угол #f69f4f, нижние #2b2b2b / #352c2d — это и видел владелец).
   Поэтому для contain-медиа бокс картинки приводится К РАЗМЕРУ СОДЕРЖИМОГО:
   width/height:auto + max-width/max-height:100%, центровка — flex у контейнера.
   Тогда границы бокса совпадают с краями рендера и радиус режет его собственные
   углы. Раскладка не меняется: рендер как стоял по центру кадра, так и стоит. */
.bfc-gv2 .bfc-gv2__card[data-kind="render"] .bfc-gv2__shot {
  display: flex; align-items: center; justify-content: center; }
.bfc-gv2 .bfc-gv2__card[data-kind="render"] .bfc-gv2__shot img {
  width: auto; height: auto; max-width: 100%; max-height: 100%; border-radius: 22px; }

/* Мелкие contain-превью. Воздух вокруг картинки раньше давал её padding, но тогда
   бокс шире содержимого ровно на padding и углы снова расходятся. Держим тот же
   воздух через max-*: calc(100% - 2*padding), padding у картинки снимаем. Радиус =
   радиус рамки минус её border и этот воздух (16-1-6=9 и 14-1-4=9). */
.bfc-gv2 .bfc-gv2__need-shot img {
  width: auto; height: auto; max-width: calc(100% - 12px); max-height: calc(100% - 12px);
  padding: 0; border-radius: 9px; }
.bfc-gv2 .bfc-gv2__step-shot { display: flex; align-items: center; justify-content: center; }
.bfc-gv2 .bfc-gv2__step-shot img[data-fit="contain"] {
  width: auto; height: auto; max-width: calc(100% - 8px); max-height: calc(100% - 8px);
  padding: 0; border-radius: 9px; }
/* схема: обёртка .bfc-gv2__scheme-shot радиуса не несёт (он на figcaption-рамке
   .bfc-gv2__scheme-fig, 24), поэтому inherit тут дал бы 0 — ставим явно */
.bfc-gv2 .bfc-gv2__scheme-fig img,
.bfc-gv2 .bfc-gv2__scheme-shot img { border-radius: 24px 24px 0 0; }
/* Лайтбокс: радиус уже стоит на .fancybox-image (V3-1, 24px) — держим его и при
   contain-рендере, где картинка на #fafafa и до краёв кадра не достаёт. */
.fancybox-container .fancybox-content.bfc-lb-render .fancybox-image { border-radius: 24px; }
