/* BFC ORGANS v1 — КАНОН ОРГАНОВ ЛЕНТ (S76-GAL, D-27082026-02, 27.08.2026)
 *
 * ЗАЧЕМ. У лент портала органы управления были собраны вразнобой: у одной есть
 * точки, у другой нет, счётчика нет почти нигде, рамка карточки то оранжевая,
 * то серая, то никакая. Мандат владельца задаёт ОДИН набор органов на КАЖДУЮ
 * ленту сайта: оранжевая рамка карточки · круглые кнопки 44 ВНУТРИ границ
 * ленты · точки снизу по центру · счётчик N/M при M>5.
 *
 * ЭТАЛОН — левая колонка «Объекты на монтаже» на /proektirovshchikam/
 * (компонент bfc-construct): кадр в рамке 1.6px #f6921e с радиусом 16,
 * круглая кнопка в полосе, счётчик «1 / 10» рядом. Числа облика ниже взяты
 * оттуда, а НЕ придуманы заново.
 *
 * ГРАНИЦЫ. Кнопки рисует galbtn v5 (/assets/js/bfc-galbtn.js, И-231) — здесь
 * его не переопределяют: облик кнопки, её размер и место остаются за ним.
 * Этот лист добавляет ровно то, чего у компонента нет: рамку карточки, полосу
 * точек/счётчика и починку СТОЙКИ там, где кнопка вылезала за кадр.
 *
 * ТОЧКИ намеренно носят классы galbtn (.bfcgb-dots/.bfcgb-dot): так новый ряд
 * получает канонный облик из bfc-galbtn.css без правки компонента.
 */

/* ── полоса органов: точки по центру + счётчик ────────────────────────────── */
.bfcorg-bar{
  display:flex; align-items:center; justify-content:center; gap:12px;
  margin:10px 0 0; padding:0; list-style:none;
}
/* Ширину на всю строку берёт только САМОСТОЯТЕЛЬНАЯ полоса. Тот же селектор
   с --inline проигрывал бы по равной специфичности в зависимости от порядка
   листов (на боевом их два: свой и внедрённый), и счётчик в чужой строке
   раздувался до ширины кадра — замер 27.08: бар 468 px в полосе 468 px,
   точки выдавливало на 50 px левее кадра. Условие в селекторе снимает спор. */
.bfcorg-bar:not(.bfcorg-bar--inline){width:100%}
.bfcorg-bar[hidden]{display:none}
.bfcorg-dots{display:flex; align-items:center; justify-content:center; gap:8px; margin:0; padding:0}
/* точка своя, но облик — общий с компонентом (.bfcgb-dot из bfc-galbtn.css).
   Значения ниже — фолбэк на случай, если лист компонента не доехал. */
.bfcorg-dots .bfcorg-dot{
  width:8px; height:8px; border-radius:50%; border:0; padding:0; cursor:pointer;
  background:rgba(26,26,26,.22); transition:background .15s, transform .15s;
}
.bfcorg-dots .bfcorg-dot.is-bfcgb-cur{background:#f6921e; transform:scale(1.15)}
.bfcorg-count{
  font:600 13px/1 "Roboto Condensed", "Onest", system-ui, sans-serif;
  color:#5a6478; min-width:52px; text-align:center; white-space:nowrap;
}
/* на тёмной секции точка-невыбранная белёсая — как у компонента */
.bfcd .bfcorg-dots .bfcorg-dot,
[data-theme="dark"] .bfcorg-dots .bfcorg-dot{background:rgba(255,255,255,.28)}

/* ── РАМКА КАРТОЧКИ v2 (S78-ORG, D-27082026-08 + И-276) ────────────────────
 * ЧТО БЫЛО НЕ ТАК. v1 вешала border прямо на МЕДИА-узел кадра (img/video/
 * iframe) и всегда, без вопроса «а есть ли рамка у карточки». Итог на боевом
 * (снимок before_options_1280_prod, 27.08): у «Различных вариантов установок»
 * ДВЕ рамки — родная оранжевая 2px r15 вокруг карточки «кадр + подпись» и
 * наша вокруг одной картинки, с почти прямыми углами и прямым низом над
 * подписью. Эталон — та же лента на test2, где компонента нет: ОДНА рамка.
 *
 * ЧТО ТЕПЕРЬ. Рамку рисует ::after на КАРТОЧКЕ (узле, который обнимает кадр и
 * подпись), а не border на медиа. Три следствия, все нужные:
 *   1) карточка с родной рамкой её и сохраняет — класс просто не ставится;
 *   2) над <video> рамка ВИДНА: медиа — замещённый элемент и красит поверх
 *      собственного border (И-276), а ::after — отдельная коробка карточки;
 *   3) z-index не поднимаем (И-276): isolation:isolate замыкает слой внутри
 *      карточки, а позиционированный ::after и так красится после содержимого.
 * Радиус НЕ константа: наследуется от карточки, а карточке его ставит скрипт
 * из вычисленного стиля родного компонента (её собственный, иначе — кадра).
 */
.bfcorg-frame{position:relative; isolation:isolate}
.bfcorg-frame::after{
  content:''; position:absolute;
  /* длинная форма первой — на случай браузера без inset (Safari до 14.1);
     inset ниже перекрывает её там, где поддержан. Стоит четыре строки, зато
     рамка не пропадает молча на старом телефоне. */
  top:0; right:0; bottom:0; left:0;
  inset:0;
  border:2px solid #f6921e;
  border-radius:inherit;
  pointer-events:none;
}

/* ── ОРГАН СНЯТ: ЛЕНТА НЕ ПРОКРУЧИВАЕТСЯ (S78-ORG, И-294, D-27082026-07) ───
 * Замер 27.08 на боевом: у «Крепление, которое перестаёт быть проблемой» и
 * «Готовые варианты монтажа» на 1280 трек отдаёт scrollWidth 1152 при
 * clientWidth 1152 — это СЕТКА, все карточки видны сразу, а обе круглые
 * стрелки нарисованы и ничего не двигают. На 412 у тех же блоков трек
 * 1860/380 — лента живая, органы обязаны остаться. Поэтому не «спрятать
 * навсегда», а класс, который скрипт снимает и ставит по факту замера.
 * Отдельный класс на САМ ОРГАН, а не правило по семейству: органы у лент
 * лежат в разных местах разметки, и перечислять их в листе значило бы
 * держать второй реестр рядом с реестром скрипта. */
.bfcorg-off{display:none !important}

/* ── СТОЙКА кнопок у «Устройства в деталях» (взрыв-схемы) ──────────────────
 * ДЕФЕКТ (замер 27.08, 1280): у правой колонки «Взрыв-схемы устройства»
 * кнопка «вперёд» стояла на x≈1155..1199 при правом крае КАДРА 1123 — то есть
 * целиком за лентой, а «назад» прижималась к левому краю КОЛОНКИ, а не кадра.
 * ПРИЧИНА не в компоненте: galbtn ставит кружок на 8 px внутрь СТОЙКИ, а
 * стойкой здесь становится вся колонка сетки (1fr ≈ 560), тогда как кадр —
 * var(--cxs) ≈ 468. Разница 92/2 = 46 px и есть вылет.
 * ЛЕЧИМ ПРИЧИНУ: приводим ширину колонки к ширине кадра. Тогда стойка и кадр
 * совпадают, и правило «8 px внутрь» само ставит обе кнопки внутрь ленты.
 * min() — чтобы на узком вьюпорте колонка не вылезла за ячейку сетки.
 */
.bfc-exploded .bfc-exp-col{width:min(var(--cxs), 100%)}

/* ── бейдж «нет органа» для приёмки волны (только по data-атрибуту) ──────── */
[data-bfcorg-debug] .bfcorg-bar{outline:1px dashed rgba(246,146,30,.5)}

/* Счётчик, вставший в ЧУЖУЮ полосу органов (‹ точки › у «Устройства в деталях»
 * и у карусели патентов): полоса — flex-строка фиксированной ширины, и бар на
 * width:100% растянул бы её. Внутри строки бар ведёт себя как ещё один орган. */
.bfcorg-bar--inline{margin:0; flex:0 0 auto}
