/*
 * Основен стил на bgkanali — типография, хедър, футър, меню, breadcrumbs.
 * Токените (цветове/шрифтове/радиуси) идват от var(--bgk-*), дефинирани в style.css.
 */

/*
 * PLAN v5 (13.09.2026): акцентът върху тъмно = --bgk-accent-on-dark;
 * литералите = --bgk-accent-rgb. Палитрата е кралско синьо, вариант B —
 * стойностите ѝ са в style.css `:root` (задача 34.1), контекстните ѝ правила
 * са в раздела „PLAN v5 — кралско синьо, вариант B" в края на този файл
 * (34.2). Пробният файл `assets/css/paleta.css` е изтрит в 34.1.
 */

* {
	box-sizing: border-box;
}

body {
	margin: 0;
	background: var(--bgk-white);
	color: var(--bgk-ink);
	font-family: var(--bgk-font-body);
	font-size: 16.5px;
	line-height: 1.62;
	-webkit-font-smoothing: antialiased;
}

/*
 * TASKS.md 14.2 — жива диагноза: заглавия физически отрязани на 390px
 * (`scrollWidth > clientWidth`, напр. h1 „⚠ ВАЖНО - ПРОЧ…“ на
 * /kurti-chisti-izvozva-lp/) — текстът е ОТРЯЗАН, не пренесен. `overflow-
 * wrap:anywhere`/`hyphens:auto` тук, на голото заглавие, важи ВСЯКЪДЕ
 * (меню, hero, карти) без да разчита по-специфичните правила по-долу да го
 * повтарят — те не пипат тези две свойства, затова наследяват директно.
 */
h1, h2, h3, h4 {
	margin: 0;
	font-family: var(--bgk-font-display);
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: .005em;
	line-height: 1.1;
	overflow-wrap: anywhere;
	hyphens: auto;
}

/*
 * TASKS.md 3.12 — по-висока специфичност от GeneratePress-овото голо
 * `body{font-family}` (парент style.css + inline "generate-style-inline-css"),
 * което иначе печели при равна специфичност, ако се зареди по-късно (реда не е
 * гарантиран). `.bgk` идва от body_class(), виж inc/elementor-content-fix.php.
 */
body.bgk {
	font-family: var(--bgk-font-body) !important;
}

/*
 * TASKS.md 5.8 — жива диагноза: computed font-weight на h1/h2 беше 400 и
 * text-transform none — GeneratePress печели над голото `h1,h2,h3,h4`
 * правило по-горе (равна/по-висока специфичност, зарежда се по-късно).
 * Weight/transform са добавени тук, до font-family (СЪЩИЯТ !important
 * механизъм, вече доказано работещ за 3.12).
 *
 * TASKS.md 9.10 — жива диагноза 05.09: 700 (поискано изрично след 5.8) е
 * ПО-ТЕЖКО от design/variant-g.html `h1,h2,h3{font-weight:500;letter-
 * spacing:.005em;line-height:1.1}` — макетът е мерилото (Etap 5's правило
 * "до пиксел"), 500 е верният фикс, не 700 (тогавашният избор на 700 е
 * бил компромис, докато GeneratePress-овото 400 доминираше; вече не е
 * нужен — 500 бие GP чисто със СЪЩИЯ !important механизъм).
 */
body.bgk h1,
body.bgk h2,
body.bgk h3,
body.bgk h4 {
	font-family: var(--bgk-font-display) !important;
	font-weight: 500 !important;
	letter-spacing: .005em;
	text-transform: uppercase !important;
}

/*
 * TASKS.md 22.7 — "Екипът на /za-nas/: ... име Oswald" — отменя 9.10-то
 * изключение (тогава екипната карта нарочно НЕ беше uppercase/Oswald, за да
 * не изглежда името като заглавие). Вече е СЪЩАТА карта като останалите
 * (`.bgk-card--portrait` е РЕАЛНИЯТ маркер в тоя кодекс за design/
 * variant-g.html `.team`), затова h3-то ѝ вече не се изключва от общото
 * `body.bgk h1,h2,h3,h4{font-family:Oswald;font-weight:500;text-transform:
 * uppercase}` правило по-горе — просто няма отделно правило тук.
 */

a {
	color: inherit;
}

/*
 * TASKS.md 29.9(a) — жива диагноза 10.09 (нелогнато, 1280): GeneratePress вкарва
 * inline `a{text-decoration:underline}` („generate-style-inline-css“) и освобождава
 * само СВОИТЕ класове (`.entry-title a`, `.site-branding a`, `a.button`,
 * `.wp-block-button__link`, `.main-navigation a`) — затова ВСИЧКИ класове от макета
 * излизаха подчертани (14/14 линка в нава, `.crumbs a`, `.chip`, `.btn`,
 * `.card-link`, футърът; измерено `textDecorationLine: "underline"`).
 * Макетът (makets/final/base.css:14) няма НИТО ЕДНО подчертаване:
 * `a{color:inherit;text-decoration:none}`. `body.bgk` (класът от body_class(), виж
 * inc/elementor-content-fix.php) вдига специфичността над голото `a{…}` на GP без
 * да разчита на реда на зареждане — СЪЩИЯТ вече доказан механизъм като при
 * шрифтовете (3.12/5.8). Подчертаване остава САМО за линковете в текста на статия
 * (правилото `.bgk-content p a…` по-долу), както е в макета.
 */
body.bgk a {
	text-decoration: none;
}

/*
 * TASKS.md 29.9(b) — GeneratePress: `a:hover,a:focus,a:active{color:var(--contrast)}`
 * при `--contrast` = почти черно — на тъмния нав, героя, лентата и футъра линкът ставаше
 * почти черен (измерено `rgb(34,34,34)` при hover на nav/футър/чип линк). Базовият
 * hover е този на макета (base.css:15 `a:hover{color:var(--accent-dark)}`);
 * компонентите от макета имат СВОИ hover състояния — секцията „29.9“ в края на файла.
 *
 * `:where()` носи НУЛЕВА специфичност: правилото излиза (0,1,2) — точно колкото
 * да бие голото `a:hover` на GP (0,1,1) и да ЗАГУБИ от всяко правило по клас
 * (`a.bgk-btn--dark:hover`, `.chip:hover`, …), които вече бяха верни и остават
 * непипнати.
 */
body.bgk a:where(:hover, :focus, :active) {
	color: var(--bgk-accent-dark);
}

/*
 * TASKS.md 9.11 — предпазна мрежа: `strip_inline_font_styles()` (import-time,
 * BGK_Content_Cleanup) вече маха `font-family` от inline `style` на custom_html
 * блоковете (напр. "Специален бонус…", Arial 18px от стария сайт), но само за
 * СЛЕДВАЩ импорт — вече внесени страници продължават да носят стария inline
 * стил до "Пусни отначало". CSS-ът действа веднага, без чакане.
 */
.bgk-content [style*="font-family"] {
	font-family: inherit !important;
}

.bgk-wrap {
	max-width: var(--bgk-wrap);
	margin: 0 auto;
	padding: 0 26px;
}

/*
 * ── бутони, внесени от съдържанието (`.bgk-btn*`) ──
 * TASKS.md 29.2 — тези класове са ОБЩИ (внесени бутони в post_content, не
 * само хедъра) — оцеляват непроменени след премахването на СТАРИТЕ header-
 * специфични класове (топ лента/навигация/телефон бутон/лого — bgk префикс
 * там отпада изцяло). 29.2's нов `.nav`/`.btn`/`.btn-accent` от МАКЕТИ БАЗОВ
 * СЛОЙ поемат самия хедър.
 */
.bgk-btn {
	font-family: var(--bgk-font-display);
	text-transform: uppercase;
	letter-spacing: 1.2px;
	font-size: 15px;
	font-weight: 600;
	padding: 15px 30px;
	text-decoration: none;
	display: inline-block;
	border: 2px solid transparent;
	cursor: pointer;
	border-radius: var(--bgk-radius-button);
	transition: transform .15s ease, box-shadow .15s ease, background .15s ease, color .15s ease;
}

.bgk-btn:active {
	transform: translateY(1px);
}

/* TASKS.md 22.17 — focus-visible 2px #F5A623, offset 2px (клавиатурна навигация). */
.bgk-btn:focus-visible {
	outline: 2px solid var(--bgk-accent);
	outline-offset: 2px;
}

/* TASKS.md 22.17 — disabled .5 непрозрачност, без hover/клик. */
.bgk-btn:disabled,
.bgk-btn[disabled],
.bgk-btn.bgk-btn--disabled {
	opacity: .5;
	cursor: not-allowed;
	pointer-events: none;
}

/* TASKS.md 22.17 — трети бутон вид ("dark", огледален на .ff-btn-submit/22.12's черен бутон). */
.bgk-btn--dark,
a.bgk-btn--dark {
	background: var(--bgk-ink);
	color: #fff;
	border-color: var(--bgk-ink);
}

.bgk-btn--dark:hover,
a.bgk-btn--dark:hover {
	background: var(--bgk-bg-dark);
	border-color: var(--bgk-bg-dark);
}

/*
 * TASKS.md 22.2 — бутонът "Обадете се"/приетите "сини" CTA-та от вариант Г
 * стават кехлибарени (primary), с ТЪМЕН текст (design/reference-nastilki.html
 * `.btn-accent{color:#161308}`) — бяло върху кехлибарено е нечетимо.
 */
.bgk-btn--blue,
a.bgk-btn--blue {
	background: var(--bgk-accent) !important;
	color: var(--bgk-accent-ink) !important;
	border-color: var(--bgk-accent) !important;
}

.bgk-btn--blue:hover,
a.bgk-btn--blue:hover {
	background: var(--bgk-accent-dark) !important;
}

/*
 * TASKS.md 22.14 — "kicker = breadcrumbs (Oswald 13px #F5A623)": трошичките
 * стоят между хедъра и героя (header.php) — не физически ВЪТРЕ в първата
 * `.bgk-section`, но СЪЩИЯТ тъмен фон (var(--bgk-bg-dark), нула граница
 * между тях) прави лентата визуално продължение на героя отдолу, не отделна
 * светла лента (старото поведение). Юридическите страници нямат hero
 * (bgkanali_plain_page_body_class(), TASKS.md 4.6) — там лентата пада на
 * бял фон по подразбиране на `.bgk-content` (без специален случай тук).
 */
.bgk-breadcrumbs {
	background: var(--bgk-bg-dark);
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 13px;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

.bgk-breadcrumbs .bgk-wrap {
	padding: 14px 26px 0;
}

.bgk-breadcrumbs a {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
	text-decoration: none;
}

.bgk-breadcrumbs a:hover {
	text-decoration: underline;
}

.bgk-breadcrumbs [aria-current="page"] {
	color: var(--bgk-text-dim);
}

.bgk-breadcrumbs__sep {
	margin: 0 8px;
	color: var(--bgk-text-dim);
}


/* =====================================================================
 * Етап 4 (TASKS.md 4.0) — „Запази структурата, приложи новия стил“.
 * Съдържанието (post_content) идва от импортера, вече групирано в
 * bgk-section → bgk-row → bgk-col (виж class-bgk-elementor-parser.php).
 * От тук нататък ЧИСТО CSS решава как да изглежда всяка позната групичка
 * съдържание (icon-box → карта като .svc, price-* → ведомост като .sched,
 * counter в редица → лента с числа като .band, blockquote → като .rev,
 * accordion → <details> като .sched ред) — БЕЗ да пипа кой текст/цена/
 * секция съществува, само как изглежда.
 * ===================================================================== */

.bgk-content .bgk-section {
	padding: 88px 0;
}

/*
 * TASKS.md 22.6 — редуване на фоновете: заменя старото сляпо "nth-of-type
 * (even)" на вариант Г (не различаваше СЪДЪРЖАНИЕ, само позиция). Класовете
 * `.bgk-section--light/--white/--dark` се слагат render-time,
 * BGK_Card_Builder::apply_section_background_rhythm(), така че никои две
 * съседни секции да нямат еднакъв фон.
 */
.bgk-content .bgk-section--light {
	background-color: var(--bgk-bg-light);
}

.bgk-content .bgk-section--white {
	background-color: var(--bgk-white);
}

.bgk-content .bgk-section--dark {
	background-color: var(--bgk-bg-dark);
	color: var(--bgk-text-light);
}

.bgk-content .bgk-section--dark p {
	color: var(--bgk-text-dim);
}

.bgk-content .bgk-section--dark h1,
.bgk-content .bgk-section--dark h2,
.bgk-content .bgk-section--dark h3,
.bgk-content .bgk-section--dark h4 {
	color: var(--bgk-white);
}

.bgk-content .bgk-section > * {
	max-width: var(--bgk-wrap);
	margin-left: auto;
	margin-right: auto;
	padding-left: 26px;
	padding-right: 26px;
	box-sizing: border-box;
}

.bgk-content .bgk-section > .bgk-row {
	max-width: var(--bgk-wrap);
	margin-left: auto;
	margin-right: auto;
	padding-left: 26px;
	padding-right: 26px;
	box-sizing: border-box;
}

.bgk-content h2 {
	font-size: clamp(23px, 2.9vw, 33px);
	max-width: 22ch;
	padding-bottom: 14px;
	margin-bottom: 30px;
	border-bottom: 2px solid var(--bgk-ink);
}

.bgk-content h3 {
	font-size: 18.5px;
}

/*
 * TASKS.md 25.5 — БАЗОВ СЛОЙ (PLAN.md „Г. Елемент 0"): типография и
 * вертикален ритъм за ВСЯКО внесено съдържание, на ДВЕ точки на влизане —
 * `.bgk-content` (page.php/single.php) И `.entry-content` (GeneratePress-
 * овия фолбек за шаблони без собствен клас — бъдещите archive.php/
 * search.php/404.php от 25.6, index.php) — СЪЩАТА скала на двете, за да не
 * зависи изгледът на текста от това КОЙ шаблон го е показал.
 * `.bgk-content h2`/`h3` по-горе са по-старите, специфични правила
 * (border-bottom kicker и пр.) — тук е базата за h1/h4/p/списъци/таблица/
 * цитат/снимка/фигура/hr, каквато `h2`/`h3` вече си имат отделно.
 */
.bgk-content h1,
.entry-content h1 {
	font-size: clamp(28px, 4vw, 40px);
	line-height: 1.15;
	margin-bottom: 22px;
}

.bgk-content h4,
.entry-content h4 {
	font-size: 16px;
	margin-bottom: 12px;
}

.bgk-content p,
.entry-content p {
	font-size: 17px;
	line-height: 1.6;
	margin: 0 0 20px;
}

.bgk-content p:last-child,
.entry-content p:last-child {
	margin-bottom: 0;
}

.bgk-content ul,
.bgk-content ol,
.entry-content ul,
.entry-content ol {
	font-size: 17px;
	line-height: 1.6;
	margin: 0 0 20px;
	padding-left: 22px;
}

.bgk-content li,
.entry-content li {
	margin-bottom: 8px;
}

.bgk-content blockquote,
.entry-content blockquote {
	margin: 0 0 20px;
	padding: 18px 22px;
	background: var(--bgk-bg-light);
	border-left: 4px solid var(--bgk-accent);
	border-radius: var(--bgk-radius-container);
	font-style: italic;
	color: var(--bgk-ink-soft);
}

.bgk-content figure,
.entry-content figure {
	margin: 0 0 20px;
}

.bgk-content figcaption,
.entry-content figcaption {
	margin-top: 8px;
	font-size: 14px;
	color: var(--bgk-ink-soft);
}

.bgk-content hr,
.entry-content hr {
	border: 0;
	border-top: 1px solid var(--bgk-line);
	margin: 32px 0;
}

/*
 * TASKS.md 25.5(б) — линкове в текста (не бутони/карти-линкове, вече със
 * собствен стил другаде — `:not()` списъкът ги изключва да не дублира
 * специфичността им). Подчертани, за да се различават от текста дори без
 * цвят (достъпност), с акцентния цвят по-тъмния вариант (четим на бяло).
 *
 * TASKS.md 29.9(a) — стеснено от „всеки `a` в съдържанието“ до „линк в АБЗАЦ
 * или точка от списък“: след 29.4-29.7 цялото съдържание е компоненти на
 * макета (`.card-link`, `.btn`, `.chip`, `.readmore`), а те са вътре в
 * `.bgk-content` и се хващаха от старото широко правило — оттам идваха черти
 * под „Заяви →“/„Прочети целия текст“. Макетът подчертава само текстовите
 * линкове в статия (`.article-body`), затова контекстът е `p`/`li`, а
 * `:not()` списъкът пази и компонентите, които все пак живеят в абзац.
 */
.bgk-content p a:not(.btn):not(.chip):not(.card-link):not(.readmore):not(.bgk-btn):not(.bgk-imported-button):not(.bgk-link),
.bgk-content li a:not(.btn):not(.chip):not(.card-link):not(.readmore):not(.bgk-btn):not(.bgk-imported-button):not(.bgk-link),
.entry-content p a:not(.btn):not(.chip):not(.card-link):not(.readmore):not(.bgk-btn):not(.bgk-imported-button):not(.bgk-link),
.entry-content li a:not(.btn):not(.chip):not(.card-link):not(.readmore):not(.bgk-btn):not(.bgk-imported-button):not(.bgk-link),
.article-body p a:not(.btn):not(.chip):not(.card-link):not(.readmore),
.article-body li a:not(.btn):not(.chip):not(.card-link):not(.readmore) {
	color: var(--bgk-accent-dark);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.bgk-content p a:not(.btn):not(.chip):not(.card-link):not(.readmore):not(.bgk-btn):not(.bgk-imported-button):not(.bgk-link):hover,
.bgk-content li a:not(.btn):not(.chip):not(.card-link):not(.readmore):not(.bgk-btn):not(.bgk-imported-button):not(.bgk-link):hover,
.entry-content p a:not(.btn):not(.chip):not(.card-link):not(.readmore):not(.bgk-btn):not(.bgk-imported-button):not(.bgk-link):hover,
.entry-content li a:not(.btn):not(.chip):not(.card-link):not(.readmore):not(.bgk-btn):not(.bgk-imported-button):not(.bgk-link):hover,
.article-body p a:not(.btn):not(.chip):not(.card-link):not(.readmore):hover,
.article-body li a:not(.btn):not(.chip):not(.card-link):not(.readmore):hover {
	color: var(--bgk-accent);
}

/* TASKS.md 25.5(г) — рядък гол HTML form/input във внесено съдържание наследява шрифта на темата, не браузърния UI шрифт. */
.bgk-content button,
.bgk-content input,
.bgk-content textarea,
.bgk-content select,
.entry-content button,
.entry-content input,
.entry-content textarea,
.entry-content select {
	font-family: inherit;
}

/* TASKS.md 25.5(б) — клавиатурна навигация/маркиране на текст, глобално за ЦЕЛИЯ сайт (не само `.bgk-content`). */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
	outline: 2px solid var(--bgk-accent);
	outline-offset: 2px;
}

::selection {
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
}

/*
 * TASKS.md 29.3 — "героят е :first-of-type" (Етап 4/22.14) е СКОПЕНО до
 * `.bgk-hero--home` (само началната — извън обхвата на PLAN v4's макети,
 * "остава по одобрения ѝ вид от 08.09"). WordPress Pages (`page.php`, WP
 * core body клас `.page`) вече взимат истинския `.page-hero` partial
 * (inc/page-hero.php, `bgkanali_page_hero()`, извикан ПРЕДИ `.bgk-content`)
 * — първата секция на съдържанието им е обикновена секция, не втори "герой"
 * отдолу. Юридическите страници (`.bgk-plain-page`, също `.page`) автоматично
 * следват — старият `.bgk-plain-page ... :first-of-type` override отпада
 * като мъртъв код.
 *
 * TASKS.md 29.3/30 — блогът/архивите/търсенето/404 (single.php/archive.php/
 * search.php/404.php/page-blog.php) НЕ са в обхвата на Етап 29 (TASKS.md's
 * собствена бележка "Следва (Етап 30)": "блог/статия/текстови/404/търсене" —
 * отделен макет, statia.html/blog.html, не построен тук) — пазят си СТАРАТА
 * `:first-of-type` декорация непроменена, само скопена до `body:not(.page)`
 * (WP core body клас, автоматичен, без ново theme-код условие), за да не се
 * дублира с `.page-hero` на страниците. Всяко свойство е ЗАПАЗЕНО буквално.
 */
body:not(.page) .bgk-content .bgk-section:first-of-type {
	background-color: var(--bgk-bg-dark);
	color: #fff;
	position: relative;
	min-height: 360px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	overflow: hidden;
}

body:not(.page) .bgk-content .bgk-section:first-of-type::before {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 120px;
	height: 120px;
	background-image: linear-gradient(to top right, var(--bgk-accent) 0, var(--bgk-accent) 4px, transparent 4px);
	pointer-events: none;
}

body:not(.page) .bgk-content .bgk-section:first-of-type h1,
body:not(.page) .bgk-content .bgk-section:first-of-type h2 {
	font-size: clamp(30px, 4vw, 48px);
	line-height: 1.28;
	border-bottom: 0;
	padding-bottom: 0;
	margin-top: 16px;
	margin-bottom: 18px;
}

body:not(.page) .bgk-content .bgk-section:first-of-type p {
	color: var(--bgk-text-light);
	font-size: 17.5px;
	max-width: 60ch;
}

body:not(.page) .bgk-content .bgk-section:first-of-type a:not(.bgk-imported-button):not(.bgk-btn) {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}
.bgk-content .bgk-section.bgk-hero--home {
	background-color: var(--bgk-bg-dark);
	color: #fff;
	position: relative;
	min-height: 360px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	overflow: hidden;
}

.bgk-content section.section.bgk-hero--home {
	background-color: var(--bgk-bg-dark);
	color: #fff;
	position: relative;
	min-height: 360px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	overflow: hidden;
}

.bgk-content .bgk-section.bgk-hero--home::before {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 120px;
	height: 120px;
	/* TASKS.md 29.3 — background-image, не шорхендовото свойство, за да не гони 22.A1's предпазна проверка на -hero--home правилата. */
	background-image: linear-gradient(to top right, var(--bgk-accent) 0, var(--bgk-accent) 4px, transparent 4px);
	pointer-events: none;
}

.bgk-content section.section.bgk-hero--home::before {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 120px;
	height: 120px;
	/* TASKS.md 29.3 — background-image, не шорхендовото свойство, за да не гони 22.A1's предпазна проверка на -hero--home правилата. */
	background-image: linear-gradient(to top right, var(--bgk-accent) 0, var(--bgk-accent) 4px, transparent 4px);
	pointer-events: none;
}

.bgk-content .bgk-section.bgk-hero--home h1,
.bgk-content .bgk-section.bgk-hero--home h2 {
	font-size: clamp(30px, 4vw, 48px);
	line-height: 1.28;
	border-bottom: 0;
	padding-bottom: 0;
	margin-top: 16px;
	margin-bottom: 18px;
}

.bgk-content section.section.bgk-hero--home h1,
.bgk-content section.section.bgk-hero--home h2 {
	font-size: clamp(30px, 4vw, 48px);
	line-height: 1.28;
	border-bottom: 0;
	padding-bottom: 0;
	margin-top: 16px;
	margin-bottom: 18px;
}

.bgk-content .bgk-section.bgk-hero--home p {
	color: var(--bgk-text-light);
	font-size: 17.5px;
	max-width: 60ch;
}

.bgk-content section.section.bgk-hero--home p {
	color: var(--bgk-text-light);
	font-size: 17.5px;
	max-width: 60ch;
}

.bgk-content .bgk-section.bgk-hero--home a:not(.bgk-imported-button):not(.bgk-btn) {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

.bgk-content section.section.bgk-hero--home a:not(.bgk-imported-button):not(.bgk-btn) {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

/* Юридическите страници (TASKS.md 4.6): чист текст на 65ch, без карти/решетки. */
.bgk-plain-page .bgk-content {
	max-width: 65ch;
	margin: 0 auto;
	padding: 50px 26px;
}

.bgk-plain-page .bgk-content .bgk-section {
	padding: 0;
	background: none;
	max-width: none;
}

/*
 * TASKS.md 4.6 (Etap 4й, жива сонда) — /general-terms/ и /politika-za-biskvitki/
 * НЯМАТ `_elementor_data` (не минават през импортера/чистачките) — `post_content`
 * им е СУРОВ, отпреди темата, HTML export с inline "font-family: Roboto,
 * sans-serif" и тъмно сиво мастило (hex 333333) на всеки ред. Инлайн стил
 * винаги бие ВСЯКА external селекторска специфичност (дори
 * `body.bgk h1{…!important}` по-горе) — единственият начин "юридическите —
 * чист текст... без украса" (шрифт от палитрата, не Roboto/сиво) да важи и
 * тук е `!important` на СЪЩИЯ елемент
 * (универсален `*` селектор), не на предшественик.
 */
.bgk-plain-page .bgk-content * {
	font-family: var(--bgk-font-body) !important;
	color: inherit !important;
	background: none !important;
}

.bgk-plain-page .bgk-content h1,
.bgk-plain-page .bgk-content h2,
.bgk-plain-page .bgk-content h3,
.bgk-plain-page .bgk-content h4 {
	font-family: var(--bgk-font-display) !important;
}

/*
 * TASKS.md 9.17 — жива диагноза: "Спешна ВиК авария?"/"Спешна авария или
 * планиран ремонт?" (секция с само заглавие+текст+1 бутон, дясната
 * колона/фон изгубени при импорта) остават sec-head + самотен бутон +
 * ~500px празно, текстът на /vik-uslugi/ бял върху светло (нечетим).
 * `BGK_Card_Builder::convert_lone_cta_sections()` ги превръща в `.bgk-cta`,
 * 1:1 копие на `design/variant-g.html` `.sub`.
 */
/* TASKS.md 22.16(д) — CTA лента #0F1115 (var(--bgk-bg-dark), беше var(--bgk-ink) #171B22 — по-светло). */
.bgk-cta {
	display: flex;
	gap: 28px;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	background: var(--bgk-bg-dark);
	color: #fff;
	padding: 34px;
	border-left: 6px solid var(--bgk-blue);
	border-radius: var(--bgk-radius-container);
}

.bgk-cta__body {
	color: #fff;
}

/*
 * `.bgk-content .bgk-cta__body h2` — специфичност (0,3,0), нарочно за да
 * бие `.bgk-content h2` (0,2,0, TASKS.md 9.1 — border-bottom/max-width/
 * margin-bottom за заглавен блок на секция), който иначе би добавил линия
 * и 30px празно под компактния CTA, чупейки критерия "≤260px".
 */
.bgk-content .bgk-cta__body h2,
.bgk-content .bgk-cta__body h3 {
	font-size: 25px;
	max-width: none;
	padding-bottom: 0;
	margin-bottom: 0;
	border-bottom: 0;
	color: #fff;
}

/* (0,1,1), бие голото `.bgk-sec-head__lead` (0,1,0) с по-тъмен цвят за светъл фон — CTA-то е тъмно. */
.bgk-cta__body p {
	color: var(--bgk-text-dim);
	max-width: 54ch;
	margin: 8px 0 0;
	font-size: 15.5px;
}

.bgk-cta__action {
	flex-shrink: 0;
}

/*
 * TASKS.md 4.25 — блок, изваден от `BGK_Content_Cleanup::unwrap_nested_blocks()`
 * (напр. "Специален бонус за абонаментни клиенти" — раздаден като raw HTML с
 * inline `style="…"` от custom_html/shortcode widget). Съдържанието вече носи
 * СВОЙ пълен дизайн (фон, бяла карта, син панел с голямото число) — нашата
 * `.bgk-section` кутия само добавя дублиращо padding/max-width отгоре.
 * Нулираме ги, за да се вижда авторският блок точно както е замислен (пълна
 * ширина, самостоятелен фон), и закръгляме ъглите му с радиуса на палитрата,
 * за да пасне визуално на съседните карти (TASKS.md 4.0) — без да пипаме
 * съдържанието му дума по дума.
 */
.bgk-content .bgk-section.bgk-sub-block {
	padding: 0;
}

.bgk-content section.section.bgk-sub-block {
	padding: 0;
}

.bgk-content .bgk-section.bgk-sub-block > * {
	max-width: none;
	padding-left: 0;
	padding-right: 0;
}

.bgk-content section.section.bgk-sub-block > * {
	max-width: none;
	padding-left: 0;
	padding-right: 0;
}

/*
 * TASKS.md 21.1 — `BGK_Card_Builder::convert_custom_html_sub_blocks()` увива
 * разпознатите custom_html шаблони (`.bgk-plan`/`.bgk-notice`/`.bgk-checklist`/
 * `.bgk-faq`) в `.bgk-wrap`, точно за да пребие нулирането по-горе — иначе
 * съдържанието залепва за левия ръб на екрана (живата диагноза на страница 3068,
 * Етап 21). Специфичност (0,4,0) — по-висока от `> *` (0,3,0) точно над него.
 */
.bgk-content .bgk-section.bgk-sub-block > .bgk-wrap {
	max-width: var(--bgk-wrap);
	padding: 70px 26px;
	margin: 0 auto;
	box-sizing: border-box;
}

.bgk-content section.section.bgk-sub-block > .container {
	max-width: var(--bgk-wrap);
	padding: 70px 26px;
	margin: 0 auto;
	box-sizing: border-box;
}

.bgk-content section.section.bgk-sub-block > .container {
	max-width: var(--bgk-wrap);
	padding: 70px 26px;
	margin: 0 auto;
	box-sizing: border-box;
}

/*
 * TASKS.md 23.1 — жива диагноза: `BGK_Card_Builder::replace_tech_pricing_
 * section()`/`replace_tech_maintenance_section()` строят `<header class=
 * "bgk-sec-head">` вътре в `.bgk-wrap`, но `cleanup_columns()`'s общото
 * "изкачи ВСЯКО .bgk-sec-head до пряко дете на секцията" (TASKS.md 10.5/15.2)
 * го премества ПРЕДИ `.bgk-wrap`-а, обратно директно дете на `.bgk-sub-block`
 * — където нулирането по-горе (`> *`) отново го оставя залепен за ръба, ѝ на
 * СЪЩАТА стара тема. Връща му max-width/padding, без да дублира горния
 * отстъп на следващия `.bgk-wrap` (тя вече слага 70px отгоре).
 */
.bgk-content .bgk-section.bgk-sub-block > .bgk-sec-head {
	max-width: var(--bgk-wrap);
	padding: 70px 26px 0;
	margin: 0 auto;
	box-sizing: border-box;
}

.bgk-content section.section.bgk-sub-block > .section-head {
	max-width: var(--bgk-wrap);
	padding: 70px 26px 0;
	margin: 0 auto;
	box-sizing: border-box;
}

.bgk-content .bgk-section.bgk-sub-block > .bgk-sec-head + .bgk-wrap {
	padding-top: 0;
}

.bgk-content section.section.bgk-sub-block > .bgk-sec-head + .container {
	padding-top: 0;
}

.bgk-content section.section.bgk-sub-block > .section-head + .container {
	padding-top: 0;
}

.bgk-sub-block > section,
.bgk-sub-block > .bgk-section {
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
}

.bgk-sub-block > section.section {
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
}

/*
 * TASKS.md 4.3 (Etap 4й, жива сонда) — четирите money pages (отпушване,
 * видеодиагностика, ВиК ремонти, септични ями) споделят ЕДИН И СЪЩ
 * custom_html блок ("<методи и услуги>"): авторско съдържание с ГОЛИ класове
 * (.services-grid/.service-card/.icon/.elementor-button — имена от суровия
 * HTML на custom_html widget-а, НЕ от нашия парсър), без нито ред CSS в
 * темата — унаследява `.bgk-sub-block > * {max-width:none;padding:0}`
 * (TASKS.md 4.25, за блокове, които носят СВОЙ пълен дизайн), но тук
 * авторът НЕ носи такъв, затова секцията изглежда напълно неоформена.
 * Скопирано в `.bgkanali-services` (единственият общ родителски клас в
 * суровото съдържание), за да не пипа произволен несвързан "service-card"
 * другаде. Мапинг към `.svc article` от design/variant-g.html: икона +
 * заглавие + текст + CTA бутон в карта.
 */
.bgkanali-services {
	display: block;
	max-width: var(--bgk-wrap);
	margin: 0 auto;
	padding: 70px 26px;
	box-sizing: border-box;
}

.bgkanali-services .services-title {
	margin-bottom: 8px;
}

.bgkanali-services .services-subtitle {
	color: var(--bgk-ink-soft);
	margin: 0 0 26px;
	max-width: 65ch;
}

.bgkanali-services .services-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 20px;
	align-items: start;
}

.bgkanali-services .service-card {
	background: #fff;
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	padding: 22px 22px 24px;
	color: var(--bgk-ink);
}

.bgkanali-services .service-card .icon {
	font-size: 30px;
	line-height: 1;
	margin-bottom: 10px;
}

.bgkanali-services .service-card h3 {
	font-size: 18.5px;
	margin: 0 0 8px;
}

.bgkanali-services .service-card p {
	color: var(--bgk-ink-soft);
	font-size: 14.8px;
	margin: 0 0 16px;
}

.bgkanali-services .service-card .elementor-button {
	display: inline-block;
	font-family: var(--bgk-font-display);
	text-transform: uppercase;
	letter-spacing: .05em;
	font-size: 14px;
	font-weight: 500;
	padding: 12px 22px;
	text-decoration: none;
	background: var(--bgk-blue);
	color: #fff;
	border-radius: var(--bgk-radius-button);
}

.bgkanali-services .service-card .elementor-button:hover {
	background: var(--bgk-blue-dark);
}

/*
 * ── редици от колони (bgk-row/bgk-col) — Elementor-овата "редица", вече само стилизирана ──
 * TASKS.md 4.21 — жива диагноза 02.09 (Etap 4в): фиксиран брой колони
 * (`repeat(4,1fr)`) чупеше реда, ако секцията реално имаше повече деца,
 * отколкото класът предполага (напр. `.bgk-row--4` с 6 `.bgk-col`) —
 * `auto-fit`/`minmax` подрежда каквото има, без да разчита класовото име
 * да съвпада точно с броя деца.
 *
 * TASKS.md 9.2 — `auto-fit` е на самата база `.bgk-row`, не само на `--3`/`--4`:
 * финалната нормализация в `BGK_Card_Builder` (виж `normalize_row_column_counts()`)
 * слага `bgk-row--N` с РЕАЛНИЯ брой колони, без таван — базово правило без
 * `grid-template-columns` би събрало произволен `bgk-row--5`/`--6` в ЕДНА
 * колона (grid default). `.bgk-row--2` остава отделно, по-надолу, с точно
 * 2 фиксирани track-а (TASKS.md 4.47) — по-висок source order го бие.
 */
.bgk-row {
	display: grid;
	gap: 20px;
	align-items: start;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

/*
 * TASKS.md 4.47 — `.bgk-row--2` носеше СЪЩОТО `auto-fit` правило като --3/--4:
 * на 1600px, минимум 260px позволява 4 автоматични track-а (`554 554 0 0` на
 * живо) — двата "фантомни" празни track-а не чупят визията сами по себе си,
 * но объркват диагностиката и зависят от ширината на реда. Точно 2 track-а,
 * винаги — независимо от контейнерната ширина.
 */
.bgk-row--2 {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

/*
 * TASKS.md 25.1 — над 980px `.bgk-row--3`/`--4` падаха на базовото
 * `.bgk-row{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}`, което
 * при широк контейнер (1128px+) слага ЧЕТИРИ track-а за реда с три деца.
 * Точно 3/4 track-а, както `.bgk-row--2` по-горе — не зависи от ширината.
 */
.bgk-row--3 {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

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

.bgk-col {
	min-width: 0;
}

/*
 * TASKS.md 29.1 — двата предпазителя `.bgk-row > .bgk-col:only-child:has(...)`
 * с пълноширинния grid-column хак (4.25/25.2 за вложена секция, 19.4/26.1 за
 * .bgk-plan/.bgk-notice/.bgk-checklist/.bgk-faq) са махнати: ГОТОВО на 29.1
 * изрично изисква нула такива правила — страниците минават на новия
 * `.split`/`.feature`/`.grid-3`/`.plans`/`.faq-grid` слой (МАКЕТИ БАЗОВ СЛОЙ,
 * долу във файла), който не разчита на `.bgk-row`/`.bgk-col` изобщо.
 */

/*
 * TASKS.md 27.3 — `.bgk-row--2` с рязко небалансирани текстови колони
 * (`BGK_Card_Builder::stack_unbalanced_text_rows()` слага класа при
 * рендиране — пикселна височина не се мери в CSS `:has()`, буквата на
 * задачата) пада на 1 колона: текстът минава на цялата ширина (max-width
 * 70ch за четимост), по-късата колона (напр. контактните карти) става лента
 * под него. `.bgk-row.bgk-row--stacked` (2 класа) бие `.bgk-row--2`'s
 * `grid-template-columns` независимо от реда в каскадата.
 */
.bgk-row.bgk-row--stacked {
	grid-template-columns: 1fr;
}

.bgk-row--stacked > .bgk-col:first-child {
	max-width: 70ch;
}

/*
 * Брояч-групи (counter widget-и на ред — "Доволни клиенти", "Години опит"…)
 * → синя лента с числа, като design/variant-g.html `.band`. `:has()` е
 * поддържан от всички съвременни браузъри (Baseline 2023) — сайтът няма
 * изискване за легаси браузъри.
 *
 * TASKS.md 4.30/4.31 (Etap 4д, жива диагноза 03.09) — коренната причина за
 * "бяло върху бяло": предишният селектор `.bgk-row:has(> .bgk-col >
 * .bgk-counter)` посиняваше ЦЕЛИЯ ред, щом КАКВОТО И ДА Е негово дете имаше
 * брояч някъде вътре — включително ред, в който САМО ЕДНА от N-те колони
 * носи единичен брояч (напр. "13+" до "ГОДИНИ ОПИТ", а другата колона е
 * списък `.bgk-icon-box` карти) — превръщайки цялата странична колона в
 * синя, докато белите `.bgk-icon-box`/`.bgk-image-box` карти вътре
 * наследяваха `color:#fff` от реда → невидим текст. `:not(:has(> .bgk-col
 * :not(:has(> .bgk-counter))))` изисква ВСЯКА `.bgk-col` в реда да носи
 * брояч, преди редът да стане синя лента — точно "2+ последователни
 * counter-а в едно ред" от TASKS.md 4.31, не "поне един counter някъде".
 */
.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) {
	background: var(--bgk-blue);
	color: #fff;
	border-radius: var(--bgk-radius-container);
	padding: 26px 22px;
	gap: 1px;
}

.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) > .bgk-col {
	position: relative;
	padding-left: 26px;
	text-align: center;
}

.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) > .bgk-col:first-child {
	padding-left: 0;
}

.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) > .bgk-col:not(:first-child)::before {
	content: "";
	position: absolute;
	left: 0;
	top: 6px;
	bottom: 6px;
	width: 1px;
	background: rgba(255, 255, 255, .28);
}

.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) .bgk-counter__value {
	color: #fff;
}

.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) .bgk-counter__label {
	color: var(--bgk-text-dim);
}

/*
 * TASKS.md 4.20 — жива диагноза 02.09 (Etap 4в): голи `<img>` от парсъра
 * (widget-и image/e-image, или снимки, останали инлайн в текст-редактор
 * съдържание — виж render_image()/render_text_editor()) се рендираха в
 * реалните пиксели на файла (1180×1498px и повече), разпъвайки страницата
 * до 19 644px. Общото правило е буквално TASKS.md 4.20; максималната
 * височина е разширена до ВСЯКА снимка в `.bgk-content` (не само пряко
 * дете на секция/`<p>`), защото жива проверка на стейджинга показа голи
 * снимки и по-надолу вложени (в `.bgk-col`, инлайн в текст-редактор
 * съдържание) — ГОТОВО изисква "нито един img... над 460px", не само
 * буквалните два селектора.
 */
.bgk-content img {
	max-width: 100%;
	height: auto;
	max-height: 460px;
	border-radius: var(--bgk-radius-container);
}

.bgk-content .bgk-section > img,
.bgk-content .bgk-section > p > img {
	display: block;
	width: 100%;
	max-height: 420px;
	object-fit: cover;
}

@media (max-width: 620px) {
	.bgk-content .bgk-section > img,
	.bgk-content .bgk-section > p > img {
		max-height: 260px;
	}
}

/* ── съдържание, внесено от импортера (TASKS.md 3.9, стилизирано по Етап 4) ── */
/*
 * TASKS.md 22.2 — универсалният "внесен" бутон (BGK_Elementor_Parser::
 * render_button(), появява се на практика навсякъде, вкл. героя на
 * началната) взима СЪЩИЯ primary третман като .bgk-btn--blue по-горе:
 * кехлибарен фон, тъмен текст (не бяло върху кехлибарено).
 */
.bgk-imported-button {
	display: inline-block;
	font-family: var(--bgk-font-display);
	text-transform: uppercase;
	letter-spacing: 1.2px;
	font-size: 15px;
	font-weight: 600;
	padding: 15px 30px;
	text-decoration: none;
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
	border-radius: var(--bgk-radius-button);
}

.bgk-imported-button:hover {
	background: var(--bgk-accent-dark);
}

/*
 * TASKS.md 9.9 — жива диагноза: петте карти услуги излизаха ред от 3
 * (`.bgk-row--3`, коректно) + ред от 2 (`.bgk-row--2`, ФИКСИРАН 2-колонен
 * grid — картите се разтягат до 580px); шестте карти на /vik-uslugi/ бяха
 * в ЕДИН `.bgk-row--6` без правило, преливащ контейнера. `BGK_Card_Builder::
 * wrap_card_rows_as_grid()` слива ВСИЧКИ card-редове на секция в ЕДНА
 * `.bgk-cards` — фиксиран `repeat(3,1fr)` като design/variant-g.html `.svc`
 * (не auto-fit — гарантира 360-380px карта, а последен непълен ред НЕ се
 * разтяга, просто оставя празни track-ове).
 */
.bgk-cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
}

.bgk-cards > .bgk-card {
	margin-bottom: 0;
}

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

@media (max-width: 620px) {
	.bgk-cards {
		grid-template-columns: 1fr;
	}
}

/*
 * TASKS.md 10.1 — жива диагноза: "Нашият екип" излизаше в общата
 * `.bgk-cards{repeat(3,1fr)}` (4-тата карта пада на втори ред) —
 * `BGK_Card_Builder::fix_team_card_grid()` слага тук `.bgk-cards--team`
 * само на разпознати екипни решетки, по design/variant-g.html `.team`
 * (4 карти на ред, 2 на таблет, 1 на телефон).
 */
.bgk-cards--team {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

@media (max-width: 1024px) {
	.bgk-cards--team {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 620px) {
	.bgk-cards--team {
		grid-template-columns: 1fr;
	}
}

/*
 * TASKS.md 4.28 (Etap 4д) — BGK_Elementor_Parser::wrap_as_card() обвива
 * смесени widget-и (снимка/икона + заглавие + текст + бутон), разпилени
 * като преки деца на ЕДНА Elementor колона, в `.bgk-card` — карта като
 * design/variant-g.html `.svc article`: снимка 4:3 отгоре (пълна ширина,
 * т.е. "прелива" отвъд padding-а на картата, както при .bgk-image-box),
 * после padded тяло с h3/p/бутон pill.
 */
/*
 * TASKS.md 22.7 — карта услуга по design/reference-nastilki.html
 * `.service-card`: бяла карта 14px + сянка (не 1px рамка на вариант Г),
 * снимка 220px отгоре, тяло padding 26px.
 */
.bgk-card {
	display: flex;
	flex-direction: column;
	gap: 10px;
	background: var(--bgk-white);
	border: 0;
	border-radius: var(--bgk-radius-container);
	box-shadow: var(--bgk-shadow);
	padding: 26px;
	margin-bottom: 16px;
	height: 100%;
	box-sizing: border-box;
	overflow: hidden;
	transition: transform .2s ease, box-shadow .2s ease;
}

.bgk-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 18px 40px rgba(15, 17, 21, .16);
}

/*
 * TASKS.md 28.2 — жива диагноза: `height:220px` фиксирана върху кутията +
 * `overflow:hidden` режеше `<img>`-а, когато нещо друго диктува РЕАЛНАТА му
 * височина въпреки нашия `.bgk-card__media img{height:100%}` по-долу —
 * инлайн `style="height:250px"` от Elementor-нато съдържание (vik-uslugi,
 * vik-remonti-vodoprovodni — инлайн стил бие всяко правило в стиловия лист
 * без `!important`) и `.bgk-card__media img{display:block}`'s по-висока
 * специфичност (клас+таг) случайно печелеше пред `.bgk-card__icon{display:
 * none}` (гол клас) за иконата, преместена вътре (начална, uslugi — виж
 * `.bgk-card__icon` по-долу). `aspect-ratio` вместо фиксирана `height` +
 * `!important` на `.bgk-card__media img`'s width/height/object-fit
 * (по-долу) прави кутията да се мери от снимката, не обратното — а
 * `!important`-ът гарантира, че никой бъдещ инлайн стил от импортирано
 * съдържание не може пак да я разтегли извън кутията.
 */
.bgk-card > img:first-child,
.bgk-card > .bgk-card__media:first-child {
	display: block;
	width: calc(100% + 52px);
	aspect-ratio: 16 / 9;
	margin: -26px -26px 0;
	max-width: none;
	border-radius: 0;
	overflow: hidden;
}

.bgk-card > img:first-child {
	object-fit: cover;
}

.bgk-card__media {
	position: relative;
}

.bgk-card__media img {
	display: block;
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
}

/* TASKS.md 22.7 — етикетът "СНИМКА: X" (плочка върху снимката, вариант Г) отпада. */
.bgk-card__label {
	display: none;
}

/*
 * TASKS.md 6.1 — BGK_Card_Builder::build() (inc/class-bgk-card-builder.php,
 * render-time филтър на `the_content`) увива h3/p/линка в `.bgk-card__body`
 * (за разлика от по-старите карти на BGK_Elementor_Parser::wrap_as_card() +
 * BGK_Content_Cleanup::enhance_service_card_labels(), при които те са преки
 * деца на `.bgk-card`) — самостоятелен flex-контейнер, за да запази СЪЩИЯ
 * `gap`/"бутонът долу" ефект, който `.bgk-card`'s `display:flex` дава на
 * преките си деца (виж `.bgk-card .bgk-imported-button, .bgk-card .bgk-link`
 * по-долу — descendant селектор, важи и през тази допълнителна обвивка).
 */
.bgk-card__body {
	display: flex;
	flex-direction: column;
	gap: 10px;
	flex: 1;
	padding-top: 16px;
}

/*
 * TASKS.md 25.5(д) — `-webkit-line-clamp:2` режеше всяко по-дълго заглавие
 * на карта на точно 2 реда, без multiline elipsis fallback за не-webkit —
 * забранено свойство върху текстов елемент (не декоративен). Заглавието
 * просто пренася на толкова редове, колкото са му нужни — картата расте.
 */
.bgk-card h3 {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 19px;
	text-transform: uppercase;
	margin: 0;
}

.bgk-card p {
	color: var(--bgk-ink-soft);
	font-family: var(--bgk-font-body);
	font-size: 15px;
	margin: 0;
}

/*
 * TASKS.md 22.7 — стилът на "Разгледайте услугата" (Oswald, кехлибарено, със
 * стрелка) е в `.bgk-card .bgk-link, .bgk-card .bgk-imported-button` по-долу,
 * заедно с `.bgk-icon-box`/`.bgk-image-box` — един общ блок, не тук.
 */
.bgk-card .bgk-imported-button,
.bgk-card .bgk-link {
	align-self: flex-start;
	margin-top: auto;
}

/* TASKS.md 22.7 — липсваща снимка = плоча #171B22 220px с "БГ" Oswald 32px кехлибарено центрирано. */
.bgk-card__media--placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--bgk-bg-panel);
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 32px;
	letter-spacing: .05em;
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

/*
 * TASKS.md 4.30 — "бяло върху бяло": светли кутии НИКОГА не бива да
 * наследяват бял текст от тъмен/син предшественик (героя `:first-of-type`,
 * бонус-блока `.bgk-sub-block`, брояч-лентата по-горе) — явен `color`
 * на самата кутия печели пред НАСЛЕДЕН (не зададен директно) цвят на
 * родителя, независимо КОЙ точно родител е тъмен. По-специфични правила
 * (напр. `.bgk-counter__value`/`__label` вътре в истинска брояч-лента
 * по-горе) остават по-специфични и продължават да печелят, когато кутията
 * ГЕНУИННО трябва да е на тъмен фон.
 */
.bgk-card,
.bgk-icon-box,
.bgk-image-box,
.bgk-counter {
	color: var(--bgk-ink);
}

/* TASKS.md 22.7 — icon-box / image-box → СЪЩАТА карта като .bgk-card (бяла, 14px, сянка, без рамка). */
.bgk-icon-box,
.bgk-image-box {
	background: var(--bgk-white);
	border: 0;
	border-radius: var(--bgk-radius-container);
	box-shadow: var(--bgk-shadow);
	padding: 26px;
	margin-bottom: 16px;
	height: 100%;
	box-sizing: border-box;
	overflow: hidden;
	transition: transform .2s ease, box-shadow .2s ease;
}

.bgk-icon-box:hover,
.bgk-image-box:hover {
	transform: translateY(-4px);
	box-shadow: 0 18px 40px rgba(15, 17, 21, .16);
}

.bgk-image-box img {
	display: block;
	width: calc(100% + 52px);
	height: 220px;
	margin: -26px -26px 16px;
	max-width: none;
	aspect-ratio: auto;
	object-fit: cover;
	border-radius: 0;
}

.bgk-icon-box h3,
.bgk-image-box h3 {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 19px;
	text-transform: uppercase;
	margin-bottom: 8px;
}

.bgk-icon-box p,
.bgk-image-box p {
	color: var(--bgk-ink-soft);
	font-family: var(--bgk-font-body);
	font-size: 15px;
	margin: 0;
}

/* TASKS.md 22.7 — синята икона на вариант Г отпада. */
.bgk-icon-box .bgk-icon-box__icon {
	display: none;
	width: 44px;
	height: 44px;
	max-height: none;
	object-fit: contain;
	background: var(--bgk-blue);
	border-radius: var(--bgk-radius-container);
	padding: 10px;
	margin: 0 0 14px;
	box-sizing: border-box;
	filter: brightness(0) invert(1);
}

/*
 * TASKS.md 22.15 — .bgk-price-table/.bgk-table/.bgk-price-list/.bgk-sched:
 * бял контейнер 14px + СЯНКА (var(--bgk-shadow), липсваше — само рамка).
 */
.bgk-price-table {
	background: var(--bgk-white);
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	box-shadow: var(--bgk-shadow);
	padding: 24px 26px;
	margin-bottom: 16px;
	height: 100%;
	box-sizing: border-box;
}

.bgk-price-table h3 {
	font-size: 18.5px;
	margin-bottom: 6px;
}

.bgk-price-table__price {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 30px;
	font-variant-numeric: tabular-nums;
	/* TASKS.md 22.15 — цена #D98C0A (var(--bgk-accent-dark)), не кехлибареното на бутоните/иконите. */
	color: var(--bgk-accent-dark);
	margin: 0 0 14px;
}

.bgk-price-table ul {
	margin: 0;
	padding-left: 0;
	list-style: none;
}

.bgk-price-table li {
	padding: 8px 0;
	border-bottom: 1px solid var(--bgk-line);
	font-size: 15px;
}

.bgk-price-table li:last-child {
	border-bottom: 0;
}

/*
 * price-list / eael-data-table → ведомост-таблица като `.sched` редове с
 * точкована линия. TASKS.md 22.15 — бял контейнер + сянка (var(--bgk-shadow),
 * липсваше). `.bgk-table` вече взима ВСЯКА гола `<table>` без клас
 * (BGK_Card_Builder::classify_bare_tables()) — включително внесени "паста"
 * таблици от Word/LibreOffice с `bgcolor`/`width` атрибути; тия правила ги
 * override-ват (по-висока специфичност от presentational атрибутите).
 */
.bgk-price-list,
.bgk-table {
	width: 100%;
	border-collapse: collapse;
	margin-bottom: 20px;
	background: var(--bgk-white);
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	box-shadow: var(--bgk-shadow);
	overflow: hidden;
}

.bgk-price-list tr,
.bgk-table tr {
	border-bottom: 1px solid var(--bgk-line);
}

.bgk-price-list tr:last-child,
.bgk-table tr:last-child {
	border-bottom: 0;
}

.bgk-price-list td,
.bgk-table th,
.bgk-table td {
	padding: 12px 20px;
	text-align: left;
	font-size: 14.5px;
}

.bgk-price-list td:first-child {
	background-image: radial-gradient(circle, var(--bgk-line) 1px, transparent 1.5px);
	background-position: bottom 6px left 0;
	background-size: 6px 1px;
	background-repeat: repeat-x;
}

/* TASKS.md 22.15 — клетка цена: Oswald 600 18px #D98C0A (беше 14.5px, var(--bgk-ink) — сливаше се с текста). */
.bgk-price-list td:last-child,
.bgk-table td:last-child {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 18px;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	text-align: right;
	color: var(--bgk-accent-dark);
}

/* TASKS.md 22.15 — "от" префиксът пред цената (SADARZHANIE.md — реални редове "от 120 €"): Inter 13px, тих цвят. */
.bgk-table__from {
	font-family: var(--bgk-font-body);
	font-weight: 400;
	font-size: 13px;
	color: var(--bgk-ink-soft);
}

/* TASKS.md 22.15 — header row #171B22 бял Oswald 15px uppercase (беше кехлибарен tint 11px мono). */
.bgk-table th {
	font-family: var(--bgk-font-display);
	font-size: 15px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	background: var(--bgk-ink);
	color: var(--bgk-white);
}

/*
 * TASKS.md 14.1 — жива диагноза: `table.bgk-table` (11.1, eael-data-table)
 * нямаше обвивка със собствен скрол — на 390px `table.bgk-table` беше 744px
 * широка и БУТАШЕ ЦЯЛАТА страница настрани (`scrollWidth > innerWidth`).
 * `.bgk-table-wrap` (BGK_Card_Builder::wrap_tables_for_scroll()) увива всяка
 * таблица — само ТЯ скролва хоризонтално, не цялата страница.
 */
.bgk-table-wrap {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.bgk-table {
	min-width: 520px;
}

@media (max-width: 620px) {
	.bgk-table td,
	.bgk-table th {
		padding: 10px 12px;
		font-size: 14px;
	}

	/* ЕТАП 48 (находка 1): на телефон таблицата се събира в обвивката - колоната с цената остава на екрана. */
	.bgk-table {
		min-width: 0;
		width: 100%;
		table-layout: auto;
	}

	.bgk-table td,
	.bgk-table th {
		white-space: normal;
		overflow-wrap: anywhere;
		padding: 10px 8px;
	}

	.bgk-table--price td:last-child,
	.bgk-table--price th:last-child {
		white-space: nowrap;
		text-align: right;
	}

	/* 48.15: базовото `.bgk-table td:last-child { nowrap }` (0,2,1) биеше `white-space: normal` горе. */
	.bgk-table:not(.bgk-table--price) td:last-child,
	.bgk-table:not(.bgk-table--price) th:last-child {
		white-space: normal;
	}
}

/*
 * TASKS.md 9.4 — price-list widget вече ражда `.bgk-sched`/`.bgk-sched__r`
 * (не `<table class="bgk-price-list">`) — буквално копие на
 * design/variant-g.html `.sched`/`.r`/`.ln` (dotted линия между името и
 * цената, вместо табличен layout). `.bgk-price-list` (table) по-горе остава
 * — важи за съдържание, внесено ПРЕДИ този деплой (до следващ импорт).
 */
/* TASKS.md 22.15 — бял контейнер + сянка (беше само рамка). */
.bgk-sched {
	background: var(--bgk-white);
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	box-shadow: var(--bgk-shadow);
	overflow: hidden;
	margin-bottom: 16px;
}

/* TASKS.md 22.15 — header row #171B22 бял Oswald 15px uppercase (беше кехлибарен tint 11px мono). */
.bgk-sched__g {
	font-family: var(--bgk-font-display);
	font-size: 15px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	background: var(--bgk-ink);
	color: var(--bgk-white);
	padding: 11px 20px;
	border-bottom: 1px solid var(--bgk-line);
}

.bgk-sched__r {
	display: flex;
	align-items: baseline;
	gap: 14px;
	padding: 12px 20px;
	border-bottom: 1px solid var(--bgk-line);
}

.bgk-sched__r:last-child {
	border-bottom: 0;
}

.bgk-sched__r small {
	display: block;
	color: var(--bgk-ink-soft);
	font-size: 12.5px;
}

.bgk-sched__ln {
	flex: 1;
	border-bottom: 1px dotted var(--bgk-line);
	transform: translateY(-4px);
}

/* TASKS.md 22.15 — клетка цена: Oswald 600 18px #D98C0A (беше var(--bgk-ink), сливаше се с текста). */
.bgk-sched__r b {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 18px;
	font-variant-numeric: tabular-nums;
	color: var(--bgk-accent-dark);
	white-space: nowrap;
}

/*
 * TASKS.md 22.15 — "от" (BGK_Card_Builder::wrap_price_from_prefix()) слага
 * `<small class="bgk-table__from">` ВЪТРЕ в `.bgk-sched__r b` — по-общото
 * `.bgk-sched__r small` (за бележката под името, различен `<small>`) има
 * СЪЩАТА специфичност (0,1,1) и идва ПО-ГОРЕ във файла, затова печели по
 * ред без този override; тук изрично връщаме inline/тихия вид.
 */
.bgk-sched__r b .bgk-table__from {
	display: inline;
	font-size: 13px;
}

/*
 * TASKS.md 9.4 — предходно h3/h4 заглавие (групата, напр. "ВиК ремонти")
 * непосредствено преди `.bgk-sched` → `BGK_Card_Builder` ги увива в
 * `.bgk-sched-wrap` (визуално ЕДНА ведомост-карта с няколко `.bgk-sched__g`
 * капака, като design/variant-g.html — един `.sched` с няколко `.g`/`.r`
 * групи), вместо отделни бели карти една под друга.
 */
.bgk-sched-wrap {
	background: #fff;
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	margin-bottom: 16px;
}

.bgk-sched-wrap .bgk-sched {
	background: none;
	border: 0;
	border-radius: 0;
	margin-bottom: 0;
}

/*
 * TASKS.md 4.4 (Etap 4й, жива сонда) — /poddrujka-na-septichni-iami/
 * (custom_html, без `_elementor_data` през нашия парсър) е авторски написан
 * директно с НАШАТА именна конвенция (.bgk-pricing/.bgk-plan/.bgk-price/
 * .bgk-badge/.bgk-premium, бос `.bgk-btn` без цветови модификатор за
 * "Обади се") за 4-те годишни абонаментни плана — но нито един от тези
 * класове не съществуваше в темата, затова плановете се рендираха голи.
 * Стил, огледален на .bgk-price-table (бяла карта, радиус 14px), плюс
 * акцент за "Най-избиран" в синьо (КЕХЛИБАРЕНОТО е запазено само за
 * звездите на отзивите/индикатора — CLAUDE.md).
 */
.bgk-pricing {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 20px;
	margin: 20px 0;
}

/*
 * TASKS.md 27.1 — референтна карта (bg-kanaligroup.netlify.app/#uslugi):
 * снимка (по избор) на цялата ширина отгоре, заглавие тъмно (не бяла лента
 * върху тъмен фон, 22.16(б)'s стар дизайн), чип с цена НАЙ-ДОЛУ, над бутона.
 * `height:100%` + flex-column, за да могат трите карти в един `.bgk-row--3`
 * ред да излязат с еднаква височина (`.bgk-col`/самата карта разтяга на
 * grid/flex реда — виж `.bgk-row{align-items:start}` по-горе, override-нато
 * тук чрез самата `height:100%` на детето).
 */
.bgk-plan {
	display: flex;
	flex-direction: column;
	gap: 10px;
	background: var(--bgk-white);
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 8px 24px rgba(0, 0, 0, .05);
	padding: 22px 22px 22px;
	color: var(--bgk-ink);
	position: relative;
	overflow: hidden;
	height: 100%;
}

.bgk-plan.bgk-premium {
	border-color: var(--bgk-blue);
	border-width: 2px;
}

/*
 * TASKS.md 27.1 — снимка (settings['image'] на price-table widget-а, по
 * избор) бяга извън padding-а на картата (СЪЩИЯТ bleed трик като старото
 * h3-банер по-долу) и се реже 16/10, заоблена само отгоре — overflow:hidden
 * на `.bgk-plan` я подрязва точно до радиуса на картата. Ако картата няма
 * `<img>`, тази кутия просто липсва (не се резервира празно място).
 */
.bgk-plan__media {
	display: block;
	width: calc(100% + 44px);
	margin: -22px -22px 14px;
	aspect-ratio: 16 / 10;
	object-fit: cover;
	border-radius: var(--bgk-radius-container) var(--bgk-radius-container) 0 0;
}

/*
 * TASKS.md 27.1 — референтната карта: заглавие Oswald главни, тъмно, БЕЗ
 * тъмна лента (заменя 22.16(б)'s bleed банер — #171B22 с бял текст).
 */
.bgk-plan h3 {
	margin: 0;
	color: var(--bgk-ink);
	font-family: var(--bgk-font-display);
	font-size: 20px;
	text-transform: uppercase;
}

/* TASKS.md 22.16(б) — бос .bgk-btn (без --blue модификатор, от price-table widget-а, class-bgk-elementor-parser.php) взима primary вида. */
.bgk-plan .bgk-btn {
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
	border-color: var(--bgk-accent);
	text-align: center;
	margin-top: 6px;
}

.bgk-plan .bgk-btn:hover {
	background: var(--bgk-accent-dark);
	border-color: var(--bgk-accent-dark);
}

/* TASKS.md 27.1 — списъкът расте (flex:1), за да стои чипът с цената в долната третина на всяка карта, независимо от дължината на фийчърите. */
.bgk-plan ul {
	flex: 1;
	margin: 0;
	padding-left: 18px;
	font-size: 14.5px;
	color: var(--bgk-ink-soft);
}

.bgk-plan .bgk-price {
	font-family: var(--bgk-font-mono);
	font-weight: 600;
	font-size: 40px; /* TASKS.md 9.4 — 26px→40px по буквата на живата задача. */
	color: var(--bgk-blue);
	margin-top: auto;
}

/*
 * TASKS.md 25.8 (пренесено от 23) — жива диагноза на стр. 3043: периодът
 * ("/ месец") наследяваше СЪЩИТЕ 40px Oswald като сумата и не побираше
 * "180 €/ месец" в 267px колона → 2 реда (височина 120 срещу 60 при
 * по-късите суми). Собствен ред, малък шрифт Inter — както при другите
 * "период под сумата" варианти (`.bgk-plan__price-label` по-долу).
 */
.bgk-price__per {
	display: block;
	font-size: 14px;
	font-family: var(--bgk-font-body);
	color: var(--bgk-text-dim);
	margin-top: 4px;
}

/*
 * TASKS.md 27.1 — референтната карта: чипът с цена, не 40px гигантско число
 * (9.20's стар дизайн). "от 130 €" — представката вече е ЧАСТ от текста
 * (render_price_table() слива периода в чипа, class-bgk-elementor-parser.php),
 * не отделен ред. `margin-top:auto` (не `.bgk-plan ul{flex:1}` САМО) —
 * работи и за карти без features_list, `.bgk-plan` е flex-column.
 *
 * Самостоятелно решение: задачата дава буквален rgba(245,166,35,.16) фон +
 * тъмнокафяв литерален hex за текста — rgba(245,166,35,…) е ТОЧНО
 * `--bgk-accent`'s RGB (реализирано през `--bgk-accent-tint`, само .14 алфа
 * вместо .16, визуално неразличимо), но задачата иска НОВ hex извън
 * одобрената палитра (TASKS.md 4.0's тест го хваща). `--bgk-accent-ink` е
 * СЪЩИЯТ токен, документиран точно за тази цел ("текст върху кехлибарен
 * бутон/плочка", style.css) — по-тъмен от буквата на задачата, но без да
 * въвежда нов цвят извън палитрата.
 */
.bgk-plan .bgk-plan__price {
	display: inline-block;
	align-self: flex-start;
	font-family: var(--bgk-font-body);
	font-size: 15px;
	font-weight: 600;
	padding: 7px 14px;
	border-radius: 999px;
	background: var(--bgk-accent-tint);
	color: var(--bgk-tint-ink); /* PLAN v5 */
	margin: auto 0 0;
}

/*
 * TASKS.md 27.1 — legacy: render_price_table() вече не генерира тази обвивка
 * (периодът се слива в самия чип по-горе) — правилото остава, за да не
 * изглежда голо непипнатото `post_content`, докато не мине следващ реимпорт.
 */
.bgk-plan__price-label {
	font-family: var(--bgk-font-mono);
	font-size: 11px;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--bgk-ink-soft);
	margin: auto 0 0;
}

/* TASKS.md 9.4 — price-table widget: sub_heading/period (не съществуваха в custom_html-написания .bgk-plan). TASKS.md 27.1 — 14px, точно по буквата на референцията. */
.bgk-plan__sub {
	color: var(--bgk-ink-soft);
	font-size: 14px;
	margin: 0;
}

.bgk-plan__period {
	font-family: var(--bgk-font-body);
	font-weight: 400;
	font-size: 15px;
	color: var(--bgk-ink-soft);
}

.bgk-plan .bgk-btn {
	align-self: flex-start;
	background: var(--bgk-blue);
	color: #fff;
	border-color: var(--bgk-blue);
}

.bgk-plan .bgk-btn:hover {
	background: var(--bgk-blue-dark);
}

/*
 * TASKS.md 19.3 — `wp-widget-custom_html` (a): "ЦЕНОВИ ПЛАН" reuse-ва СЪЩАТА
 * `.bgk-plan` карта като price-table widget-а (4.4/9.4) — заглавието идва от
 * демотиран H1→H2 (парсърът, TASKS.md "вътрешните h1 стават h2"), не H3,
 * затова override-ва СЪЩИЯ базов `.bgk-content h2` бордер/отстъп както
 * `.bgk-notice`/`.bgk-checklist`/`.bgk-faq` h2-та по-долу.
 */
.bgk-plan h2 {
	max-width: none;
	padding-bottom: 0;
	margin-bottom: 0;
	border-bottom: 0;
	font-size: 18.5px;
}

.bgk-plan__gallery {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 8px;
}

.bgk-plan__gallery img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 10px;
}

.bgk-plan__prices {
	margin: 0;
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 8px 16px;
	align-items: baseline;
}

.bgk-plan__prices dt {
	color: var(--bgk-ink-soft);
	font-size: 14.5px;
}

.bgk-plan__prices dd {
	margin: 0;
	font-family: var(--bgk-font-mono);
	font-weight: 600;
	color: var(--bgk-blue);
	white-space: nowrap;
}

/*
 * TASKS.md 19.3(b)/(d) — "ВАЖНО СЪОБЩЕНИЕ"/бонус и "ВНИМАНИЕ"/"Защо да
 * изберете нас" кутии от суров custom_html. TASKS.md 22.16(а) — ЕДНО
 * правило за двата варианта (беше `--bonus` плътно кехлибарено с бял текст,
 * `--why` сиво): tint фон rgba(245,166,35,.14), 4px кехлибарен ляв кант,
 * заглавие Oswald тъмно, текст Inter тих.
 */
.bgk-notice {
	background: var(--bgk-accent-tint);
	border-left: 4px solid var(--bgk-accent);
	border-radius: var(--bgk-radius-container);
	padding: 24px 26px;
	margin: 20px 0;
	color: var(--bgk-ink-soft);
}

.bgk-notice h2 {
	max-width: none;
	padding-bottom: 0;
	margin-bottom: 10px;
	border-bottom: 0;
	font-family: var(--bgk-font-display);
	font-size: 20px;
	color: var(--bgk-ink);
}

.bgk-notice p {
	margin: 0;
	color: var(--bgk-ink-soft);
}

/*
 * TASKS.md 22.16(а) — "10% ОТСТЪПКА" (BGK_Card_Builder::
 * badge_bonus_percentage(), намира <strong> с "N% ...отстъпка/намаление/
 * бонус" вътре в `.bgk-notice--bonus` и му слага класа) — кехлибарен бадж
 * Oswald 700 40px, не текст в изречението.
 */
.bgk-notice__badge {
	display: inline-block;
	font-family: var(--bgk-font-display);
	font-weight: 700;
	font-size: 40px;
	line-height: 1;
	color: var(--bgk-accent-ink);
	background: var(--bgk-accent);
	padding: 2px 14px;
	border-radius: var(--bgk-radius-container);
}

/* TASKS.md 19.3(c) — "ПОДХОДЯЩО ЗА" чеклист (✔ маха се от текста, иконата е ::before, за да не зависи от глифа на шрифта на автора). */
.bgk-checklist {
	margin: 20px 0;
}

.bgk-checklist h2 {
	max-width: none;
	padding-bottom: 0;
	margin-bottom: 16px;
	border-bottom: 0;
}

.bgk-checklist__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 10px 24px;
}

.bgk-checklist__list li {
	position: relative;
	padding-left: 26px;
	font-size: 15px;
}

.bgk-checklist__list li::before {
	content: "✔";
	position: absolute;
	left: 0;
	color: var(--bgk-blue);
	font-weight: 700;
}

@media (max-width: 620px) {
	.bgk-checklist__list {
		grid-template-columns: 1fr;
	}
}

/* TASKS.md 19.3(e) — "Често задавани въпроси" custom_html accordion; `.bgk-faq-item` вече е стилизиран (render_accordion(), toggle/accordion widget). */
.bgk-faq {
	margin: 20px 0;
}

.bgk-faq h2 {
	max-width: none;
	padding-bottom: 0;
	margin-bottom: 16px;
	border-bottom: 0;
}

/*
 * TASKS.md 21.1 — етикетът-пил над заглавието на `.bgk-plan`/`.bgk-notice`
 * (живата диагноза: „ЦЕНОВИ ПЛАН 2026"/„ВАЖНО СЪОБЩЕНИЕ"/„ПОДХОДЯЩО ЗА"/
 * „ВНИМАНИЕ" — голи div-ове, преди рендер-филтъра без никакъв стил).
 */
.bgk-plan__label,
.bgk-notice__label,
.bgk-checklist__label,
.bgk-card__badge {
	display: inline-block;
	font-family: var(--bgk-font-mono);
	font-size: 11px;
	letter-spacing: .12em;
	text-transform: uppercase;
	padding: 6px 14px;
	border-radius: var(--bgk-radius-button);
	margin-bottom: 12px;
}

.bgk-plan__label,
.bgk-checklist__label,
.bgk-card__badge {
	background: var(--bgk-blue);
	color: #fff;
}

.bgk-notice__label {
	background: rgba(255, 255, 255, .18);
	color: #fff;
}

.bgk-notice--why .bgk-notice__label {
	background: var(--bgk-blue);
	color: #fff;
}

/*
 * TASKS.md 24.3 — `bgkg-featured` (custom_html картата "НАЙ-ПРЕДПОЧИТАНО" на
 * /kurti-chisti-izvozva-lp/) → `.bgk-card--featured`, СЪЩИЯТ акцентен кант
 * като `.bgk-plan.bgk-premium` (9.4) — единствената съществуваща "изпъкваща
 * карта" условност в темата.
 */
.bgk-card--featured {
	border: 2px solid var(--bgk-blue);
}

/* Грид от `.bgk-plan__item` карти — редовете „вид — цена" на custom_html „ЦЕНОВИ ПЛАН" (21.1(a)). */
.bgk-plan__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	margin: 6px 0;
}

.bgk-plan__item {
	background: var(--bgk-steel);
	border-radius: var(--bgk-radius-container);
	padding: 18px 20px;
}

.bgk-plan__item h4 {
	margin: 0 0 10px;
	font-family: var(--bgk-font-display);
	font-size: 16px;
	color: var(--bgk-ink);
}

@media (max-width: 860px) {
	.bgk-plan__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 620px) {
	.bgk-plan__grid {
		grid-template-columns: 1fr;
	}
}

/* Голи „✔ текст" редове (без `<span>`, за разлика от `.bgk-checklist__list`) в `.bgk-notice--why` — 21.1's `convert_plain_checkmark_groups()`. */
.bgk-notice__list {
	list-style: none;
	margin: 16px 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 8px 20px;
}

.bgk-notice__list li {
	position: relative;
	padding-left: 22px;
	font-size: 14.5px;
	font-weight: 600;
}

.bgk-notice__list li::before {
	content: "✔";
	position: absolute;
	left: 0;
	color: var(--bgk-blue);
	font-weight: 700;
}

@media (max-width: 620px) {
	.bgk-notice__list {
		grid-template-columns: 1fr;
	}
}

.bgk-badge {
	position: absolute;
	top: -12px;
	right: 16px;
	background: var(--bgk-blue);
	color: #fff;
	font-family: var(--bgk-font-mono);
	font-size: 11px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .06em;
	padding: 4px 10px;
	border-radius: var(--bgk-radius-button);
}

/*
 * TASKS.md 4.5 — "ценовата таблица озеленяване като .sched": /ceni-ozelenqvane/
 * няма `_elementor_data` (потвърдено на живо, TASKS.md 4.50 сонда) — съдържанието
 * ѝ е СУРОВ `<table>` от стар LibreOffice/Word HTML export (`bgcolor`/`width`
 * атрибути, `class="western"` по параграфите), никога не минава през
 * BGK_Elementor_Parser. Селектор БЕЗ клас (`:not([class])`), за да хване ТОЧНО
 * такива стари голи таблици навсякъде в `.bgk-content` (блог постове и т.н.),
 * без да пипа `.bgk-price-list`/`.bgk-table` (произведени от парсъра,
 * вече си имат стил по-горе). CSS правило винаги бие `bgcolor`/`width` HTML
 * атрибути (последните са с най-ниска специфичност в каскадата) — не се
 * налага `!important`.
 */
.bgk-content table:not([class]) {
	width: 100%;
	border-collapse: collapse;
	margin-bottom: 20px;
	background: #fff;
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
}

.bgk-content table:not([class]) tr {
	border-bottom: 1px solid var(--bgk-line);
}

.bgk-content table:not([class]) tr:last-child {
	border-bottom: 0;
}

.bgk-content table:not([class]) th,
.bgk-content table:not([class]) td {
	padding: 12px 20px;
	text-align: left;
	font-size: 14.5px;
	background: transparent;
	color: var(--bgk-ink);
	width: auto;
}

.bgk-content table:not([class]) th {
	font-family: var(--bgk-font-mono);
	font-size: 11px;
	letter-spacing: .15em;
	text-transform: uppercase;
	background: var(--bgk-blue-light);
	color: var(--bgk-blue-dark);
}

/* TASKS.md 22.10 — /galeriq/: 3 фиксирани колони, 300px, радиус 14px, без рамка (СЪЩИЯТ стил като .bgk-photo-grid). */
.bgk-gallery {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px;
	list-style: none;
	margin: 0 0 20px;
	padding: 0;
}

.bgk-gallery li {
	position: relative;
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	background: var(--bgk-bg-light);
}

.bgk-gallery img {
	display: block;
	width: 100%;
	height: 300px;
	object-fit: cover;
}

/* TASKS.md 22.10 — надпис = alt/заглавие на снимката, overlay градиент долу; излиза само ако <li> носи figcaption (BGK_Elementor_Parser::render_media_list()). */
.bgk-gallery figcaption {
	position: absolute;
	inset: auto 0 0 0;
	padding: 36px 16px 14px;
	font-family: var(--bgk-font-body);
	font-weight: 600;
	font-size: 15px;
	color: var(--bgk-white);
	background: linear-gradient(transparent, rgba(15, 17, 21, .85));
}

@media (max-width: 620px) {
	.bgk-gallery {
		grid-template-columns: 1fr;
	}

	.bgk-gallery img {
		height: 220px;
	}
}

/*
 * TASKS.md 4.32 (Etap 4д) — партньорските лога (`image-carousel` widget) НЕ
 * са снимки за решетка — бяха изрязани (object-fit:cover върху разностранни
 * PNG/webp лога) и наредени в 2 реда с празнини. По design/variant-g.html:
 * ред лога на стомана, изчистени в сиво, свободна ширина (без изрязване).
 */
/*
 * TASKS.md 9.18 — живата диагноза измери `ul.bgk-carousel > li > img` БЕЗ
 * никакъв CSS ефект (булети, една колона) въпреки правилата по-долу — коренът
 * е специфичност: `.entry-content ul` от GeneratePress е (0,2,0), бие голото
 * `.bgk-carousel` (0,1,0). Скопирано под `.bgk-content` (същия прецедент като
 * ВСИЧКИ други селектори в тоя файл — виж `.bgk-content .bgk-section` и т.н.)
 * за (0,2,0)+, с по-късен ред в каскадата → печели tie-а.
 *
 * TASKS.md 10.4 — жива диагноза: `.bgk-carousel`, самотно дете на
 * `.bgk-section`, излизаше залепено за левия ръб (left:0) — правилото
 * ПО-ДОЛУ `margin: 0 0 20px` + `padding: 0` случайно нулира и центриращите
 * margin/padding, които `.bgk-content .bgk-section > *` иначе слага на
 * всяко ПРЯКО дете на секция. Фиксът е в `BGK_Card_Builder::
 * wrap_loose_carousels()` — увива самотния `<ul>` в `.bgk-wrap`, така че
 * центрирането пак идва от генеричния `.bgk-wrap`, а `margin`/`padding`
 * тук долу важат спрямо ВЕЧЕ padded/центрирания контейнер, не спрямо
 * цялата секция.
 */
.bgk-content .bgk-carousel {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 24px 32px; /* TASKS.md 10.4 */
	list-style: none;
	margin: 0 0 20px;
	padding: 0;
}

.bgk-content .bgk-carousel li {
	height: 44px;
	width: auto;
	margin: 0;
	border: 0;
	border-radius: 0;
	overflow: visible;
}

.bgk-content .bgk-carousel img {
	display: block;
	height: 44px;
	width: auto;
	max-width: 150px;
	object-fit: contain;
	aspect-ratio: auto;
	border-radius: 0;
	filter: grayscale(1);
	opacity: .75;
	transition: filter .2s, opacity .2s;
}

.bgk-content .bgk-carousel li:hover img {
	filter: none;
	opacity: 1;
}

@media (max-width: 620px) {
	.bgk-content .bgk-carousel li {
		height: 36px;
	}

	.bgk-content .bgk-carousel img {
		height: 36px;
	}
}

/* counter (самостоятелен, извън редица с други броячи) */
.bgk-counter {
	display: inline-flex;
	flex-direction: column;
	gap: 4px;
	margin: 0 26px 16px 0;
}

.bgk-counter__value {
	font-family: var(--bgk-font-mono);
	font-weight: 600;
	font-size: 32px;
	color: var(--bgk-blue);
	font-variant-numeric: tabular-nums;
}

.bgk-counter__label {
	font-size: 13.5px;
	color: var(--bgk-ink-soft);
}

/* TASKS.md 22.16(е) — цитат #F6F5F2 (var(--bgk-bg-light), беше бял) + 4px кехлибарен кант (беше 6px + пълна рамка). */
.bgk-quote {
	background: var(--bgk-bg-light);
	border-left: 4px solid var(--bgk-accent);
	border-radius: var(--bgk-radius-container);
	padding: 26px 30px;
	margin: 0 0 20px;
	font-size: 18px;
	font-style: normal;
}

.bgk-quote cite {
	display: block;
	margin-top: 12px;
	font-style: normal;
	font-family: var(--bgk-font-mono);
	font-size: 12px;
	letter-spacing: .04em;
	color: var(--bgk-ink-soft);
}

/*
 * TASKS.md 17.1/18.1 — `[greviews]` рендира в собствен shadow DOM (нашият
 * CSS не стига до вътрешността му) — тази рамка е СВЕТЛИЯТ DOM около
 * widget-а, design/variant-g.html `.rev` (СЪЩИЯТ стил като `.bgk-quote`
 * по-горе). `overflow:visible`/`width:100%` на самия widget host елемент
 * (единственото стигаемо отвън) — не режат карти, каквато и вътрешна
 * решетка да избере. НАРОЧНО без `height`/`min-height` (TASKS.md 18.1 —
 * `layout="badge"` рендира като плаваща значка извън потока, а фиксирана
 * височина тук би оставила празна кутия зад нея; `layout="grid"` (сегашната
 * канонична форма) си определя собствена височина според броя отзиви).
 */
.bgk-rev-wrap {
	background: #fff;
	border: 1px solid var(--bgk-line);
	border-left: 6px solid var(--bgk-blue);
	border-radius: var(--bgk-radius-container);
	padding: 30px;
	overflow: visible;
}

.bgk-rev-wrap > * {
	width: 100%;
	max-width: 100%;
	overflow: visible;
}

/* ЧЗВ → <details> в стила на `.sched` редове (TASKS.md Етап 4) */
.bgk-faq-item {
	background: #fff;
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	padding: 4px 22px;
	margin-bottom: 12px;
}

/* TASKS.md 22.16(г) — въпросът Oswald 17px (беше 16.5px). */
.bgk-faq-item summary {
	cursor: pointer;
	list-style: none;
	padding: 16px 26px 16px 0;
	font-family: var(--bgk-font-display);
	font-weight: 500;
	font-size: 17px;
	position: relative;
}

.bgk-faq-item summary::-webkit-details-marker {
	display: none;
}

.bgk-faq-item summary::after {
	content: "+";
	position: absolute;
	right: 0;
	top: 14px;
	font-family: var(--bgk-font-mono);
	font-size: 20px;
	color: var(--bgk-blue);
}

.bgk-faq-item[open] summary::after {
	content: "\2212"; /* − */
}

.bgk-faq-item summary:focus-visible {
	outline: 2px solid var(--bgk-blue);
	outline-offset: 2px;
}

.bgk-faq-item__content {
	padding: 0 0 18px;
	color: var(--bgk-ink-soft);
}

@media (max-width: 980px) {
	.bgk-row--3,
	.bgk-row--4 {
		grid-template-columns: repeat(2, 1fr);
	}

	.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) {
		grid-template-columns: repeat(2, 1fr) !important;
		gap: 22px 0;
	}

	.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) > .bgk-col:nth-child(2)::before {
		display: none;
	}
}

@media (max-width: 620px) {
	.bgk-row--2,
	.bgk-row--3,
	.bgk-row--4 {
		grid-template-columns: 1fr;
	}

	.bgk-content .bgk-section {
		padding: 56px 0;
	}

	.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) {
		grid-template-columns: 1fr !important;
	}

	.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) > .bgk-col {
		padding-left: 0;
		padding-top: 18px;
	}

	.bgk-row:has(> .bgk-col > .bgk-counter):not(:has(> .bgk-col:not(:has(> .bgk-counter)))) > .bgk-col::before {
		display: none;
	}

	.bgk-image-box img {
		width: calc(100% + 32px);
		margin: -16px -16px 16px;
	}
}

/*
 * ── блог single (TASKS.md 4.5, преработено в 13.2) ──
 * `.bgk-post-head`/`.bgk-post-body` вече ползват generic `.bgk-wrap` за
 * центриране (single.php слага и двата класа на елемента) — само вертикален
 * ритъм и типография остават тук, за да не се дублира `max-width`/padding
 * логиката на `.bgk-wrap`.
 */
.bgk-post-head {
	padding-top: 46px;
	padding-bottom: 24px;
}

.bgk-post-head__eyebrow {
	display: block;
	font-family: var(--bgk-font-mono);
	font-size: 11px;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--bgk-blue);
	margin: 0 0 10px;
}

.bgk-post-head h1 {
	margin: 0 0 14px;
}

/* TASKS.md 13.2 — "дата + време за четене", моно ред, БЕЗ булети (виж single.php). */
.bgk-post-head__meta {
	font-family: var(--bgk-font-mono);
	font-size: 12px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--bgk-ink-soft);
	margin: 0;
	list-style: none;
}

.bgk-post-head__media {
	margin-top: 30px;
	margin-bottom: 0;
}

.bgk-post-head__media img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--bgk-radius-container);
}

/* TASKS.md 13.2 — тялото на поста ограничено до 760px (макетното "65ch за текст"). */
.bgk-post-body {
	padding-top: 34px;
	padding-bottom: 70px;
	font-size: 17.5px;
	line-height: 1.75;
}

/*
 * TASKS.md 17.3 — жива диагноза: на `/remont-na-mrasen-kanal/` параграфът
 * рендираше 1128px = точно `.bgk-wrap`'s content width (1180 - 2×26 padding),
 * т.е. `.bgk-post-body{max-width:760px}` (равна специфичност, 1 клас, на
 * `.bgk-wrap{max-width:1180px}`) губеше на живо — вероятно срещу GeneratePress
 * собствено правило за ширина на съдържанието (същия прецедент като 3.10/3.11's
 * `.elementor-kit-10 a`/5.8's `h1,h2` — родителска тема пише СЛЕД нашия CSS).
 * По-специфичен селектор (3 класа) вместо втори опит със същата специфичност.
 */
/* TASKS.md 22.16(ж) — постът е 720px колона (PLAN.md § Етап 22, беше 760px). */
.bgk-single .bgk-wrap.bgk-post-body {
	max-width: 720px;
}

.bgk-post-body img {
	max-width: 100%;
	height: auto;
	border-radius: var(--bgk-radius-container);
}

/*
 * TASKS.md 14.3 — жива диагноза на 390px: параграфът в `.bgk-post-body`
 * опираше в двата ръба на екрана, h1-ът в `.bgk-post-head` беше 42px.
 * И двата елемента носят генеричния `.bgk-wrap` клас (single.php) —
 * override-ваме СЪЩАТА двойка класове, не голия `.bgk-wrap` навсякъде.
 */
@media (max-width: 620px) {
	.bgk-post-head.bgk-wrap,
	.bgk-post-body.bgk-wrap {
		padding-left: 20px;
		padding-right: 20px;
	}

	.bgk-post-head h1 {
		font-size: 30px;
		line-height: 1.15;
	}

	.bgk-post-body {
		font-size: 17px;
		line-height: 1.7;
	}
}

/* ── блог архив (page-blog.php, TASKS.md 13.2) ── */
.bgk-pagination {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 40px;
	font-family: var(--bgk-font-mono);
	font-size: 13px;
}

.bgk-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 38px;
	height: 38px;
	padding: 0 10px;
	border: 1px solid var(--bgk-line);
	border-radius: 999px;
	color: var(--bgk-ink);
	text-decoration: none;
}

.bgk-pagination .page-numbers.current {
	background: var(--bgk-blue);
	border-color: var(--bgk-blue);
	color: #fff;
}

.bgk-pagination .page-numbers.dots {
	border: none;
}

/* TASKS.md 22.17 — празно състояние (блог без публикации): плоча #F6F5F2, тих текст. */
.bgk-empty-state {
	background: var(--bgk-bg-light);
	border-radius: var(--bgk-radius-container);
	padding: 34px 26px;
	text-align: center;
	color: var(--bgk-ink-soft);
	font-size: 15.5px;
}

/*
 * TASKS.md 25.6 — търсачката на 404.php (СЪЩИЯТ полеви стил като
 * `.fluentform .ff-el-form-control`, TASKS.md 22.17, само без Fluent Forms).
 */
.bgk-search-form {
	display: flex;
	gap: 10px;
	max-width: 420px;
	margin-top: 24px;
}

.bgk-search-form__input {
	flex: 1;
	min-width: 0;
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-field);
	padding: 12px 14px;
	font-family: var(--bgk-font-body);
	font-size: 15px;
	color: var(--bgk-ink);
}

.bgk-search-form__input:focus-visible {
	border-color: var(--bgk-accent);
	box-shadow: 0 0 0 3px var(--bgk-accent-tint);
	outline: none;
}

/* TASKS.md 25.6 — трите money линка на 404.php/search.php "нищо не е намерено" (bgkanali_helpful_links()). */
.bgk-helpful-links {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	list-style: none;
	margin: 0 0 18px;
	padding: 0;
}

.bgk-helpful-links__phone {
	color: var(--bgk-ink-soft);
}

.bgk-helpful-links__phone a {
	color: var(--bgk-accent-dark);
	font-weight: 600;
}

/*
 * ── подменю на услугите (TASKS.md 4.2) ──
 * "Uslugi menu" — динамичен nav-menu widget на Elementor, вече рендиран
 * от bgkanali_service_submenu() (inc/template-tags.php) като истинско WP
 * меню, в собствен стил (не главната навигация — TASKS.md 29.2's `.nav`).
 */
.bgk-subnav {
	background: var(--bgk-steel);
	border-bottom: 1px solid var(--bgk-line);
}

.bgk-subnav .bgk-wrap {
	padding: 0 26px;
}

.bgk-subnav__list {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 22px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-family: var(--bgk-font-display);
	font-size: 13.5px;
	text-transform: uppercase;
	letter-spacing: .04em;
}

.bgk-subnav__list a {
	display: block;
	padding: 13px 0;
	text-decoration: none;
	color: var(--bgk-ink-soft);
	border-bottom: 2px solid transparent;
}

.bgk-subnav__list a:hover,
.bgk-subnav__list a:focus-visible {
	color: var(--bgk-blue);
	border-bottom-color: var(--bgk-blue);
	outline: none;
}

.bgk-subnav__list .current-menu-item > a {
	color: var(--bgk-blue);
	border-bottom-color: var(--bgk-blue);
}

/*
 * ── лента с числа [bgk_broyach] (TASKS.md 22.4) ──
 * design/reference-nastilki.html `.hero-strip`/`.stat`: тъмна лента (не вече
 * кехлибарена/синя пълноширинна лента на вариант Г), директно под героя, без
 * междина (виж `.bgk-content .bgk-section.bgk-band-section` по-долу — вече
 * нулира собствения си padding/фон). Шорткодът (inc/counters.php) връща само
 * `.bgk-band__item` — редакторът слага петте шорткода един до друг вътре в
 * `.bgk-band > .bgk-wrap` (Custom HTML/класически блок в wp-admin), CSS-ът
 * тук ги подрежда.
 */
.bgk-band {
	background-color: var(--bgk-bg-dark);
	color: var(--bgk-text-light);
}

.bgk-band .bgk-wrap {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 1px;
	padding: 0 26px;
}

.bgk-band .container {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 1px;
	padding: 0 26px;
}

.bgk-band__item {
	padding: 28px 22px 28px 0;
	position: relative;
}

.bgk-band__item + .bgk-band__item {
	padding-left: 26px;
}

.bgk-band__item + .bgk-band__item::before {
	content: "";
	position: absolute;
	left: 0;
	top: 22px;
	bottom: 22px;
	width: 1px;
	background: var(--bgk-line-dark);
}

.bgk-band__n {
	display: block;
	font-family: var(--bgk-font-display);
	font-weight: 700;
	font-size: 40px;
	font-variant-numeric: tabular-nums;
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

.bgk-band__l {
	display: block;
	font-size: 15px;
	color: var(--bgk-text-dim);
	margin-top: 5px;
	line-height: 1.45;
}

/*
 * ── google_maps → карта (TASKS.md 4.5) ──
 * class-bgk-elementor-parser.php::render_google_maps() вгражда реалния
 * адрес от Elementor в `google.com/maps?q=...&output=embed`.
 */
.bgk-map {
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	margin: 0 0 20px;
}

.bgk-map iframe {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	border: 0;
}

@media (max-width: 980px) {
	.bgk-band .bgk-wrap {
		grid-template-columns: 1fr 1fr;
	}

	.bgk-band__item:nth-child(2)::before {
		display: none;
	}
}

@media (max-width: 620px) {
	.bgk-band .bgk-wrap {
		grid-template-columns: 1fr;
	}

	.bgk-band__item + .bgk-band__item {
		padding-left: 0;
	}

	.bgk-band__item + .bgk-band__item::before {
		left: 0;
		right: auto;
		top: 0;
		bottom: auto;
		width: 100%;
		height: 1px;
	}

	.bgk-subnav__list {
		gap: 0;
		flex-direction: column;
	}
}

/*
 * TASKS.md 22.3 — героят на началната по design/reference-nastilki.html
 * `.hero`/`.hero-inner`: full-bleed снимка (background-image слага се в
 * `wp_head`, inc/hero.php `bgkanali_home_hero_image_style()`) + диагонален
 * overlay, съдържанието вляво. Табло (сегашният `.bgk-hero__board` от
 * вариант Г): TASKS.md 22.B2 (решение на Denislav) — ПО ПОДРАЗБИРАНЕ
 * ПОКАЗАНО (bgk-hero-b, inc/variants.php `bgkanali_variant_body_classes()`);
 * `?hero=a` е обратният вариант, без таблото.
 * `.bgk-hero--home` (модификатор от BGK_Content_Cleanup::
 * enhance_homepage_hero(), само на началната) — героят на всяка друга
 * страница остава простият H1+бутон, стилизиран другаде в тоя файл.
 */
.bgk-content .bgk-section.bgk-hero--home {
	/*
	 * TASKS.md 22.A1 — жива диагноза: `background` е ШОРТХЕНД — задава
	 * И `background-image: none`, ако не е изрично посочено. Тук имаше
	 * `background` с var(--bgk-bg-dark) при специфичност (0,3,0)
	 * (`.bgk-content .bgk-section.bgk-hero--home`), по-висока от
	 * инлайн style-а, който inc/hero.php пише в `wp_head` за селектора
	 * `.bgk-hero--home` (0,1,0) — печелеше по специфичност, независимо от
	 * реда, и трайно нулираше снимката (computed `background-image: none`
	 * на живо). `background-color` пипа само своето свойство — снимката
	 * от inline style-а вече не се пипа тук.
	 */
	background-color: var(--bgk-bg-dark);
	min-height: 640px;
	display: flex;
	align-items: center;
	overflow: visible;
}

.bgk-content section.section.bgk-hero--home {
	/*
	 * TASKS.md 22.A1 — жива диагноза: `background` е ШОРТХЕНД — задава
	 * И `background-image: none`, ако не е изрично посочено. Тук имаше
	 * `background` с var(--bgk-bg-dark) при специфичност (0,3,0)
	 * (`.bgk-content .bgk-section.bgk-hero--home`), по-висока от
	 * инлайн style-а, който inc/hero.php пише в `wp_head` за селектора
	 * `.bgk-hero--home` (0,1,0) — печелеше по специфичност, независимо от
	 * реда, и трайно нулираше снимката (computed `background-image: none`
	 * на живо). `background-color` пипа само своето свойство — снимката
	 * от inline style-а вече не се пипа тук.
	 */
	background-color: var(--bgk-bg-dark);
	min-height: 640px;
	display: flex;
	align-items: center;
	overflow: visible;
}

.bgk-content .bgk-section.bgk-hero--home::after {
	display: none;
}

.bgk-content section.section.bgk-hero--home::after {
	display: none;
}

.bgk-content .bgk-section.bgk-hero--home > .bgk-hero__wrap {
	display: grid;
	grid-template-columns: 1fr;
	gap: 52px;
	align-items: center;
}

.bgk-content section.section.bgk-hero--home > .bgk-hero__wrap {
	display: grid;
	grid-template-columns: 1fr;
	gap: 52px;
	align-items: center;
}

/* TASKS.md 22.A2 — с таблото текстовата колона стеснява до 58%, не 55%. */
body.bgk-hero-b .bgk-content .bgk-section.bgk-hero--home > .bgk-hero__wrap {
	grid-template-columns: 1.38fr 1fr;
}

body.bgk-hero-b .bgk-content section.section.bgk-hero--home > .bgk-hero__wrap {
	grid-template-columns: 1.38fr 1fr;
}

.bgk-hero__col {
	min-width: 0;
	/* TASKS.md 22.A2 — h1 падаше на 4 реда при 720px; 980px = ширината на текста без таблото. */
	max-width: 980px;
}

.bgk-hero__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 13px;
	letter-spacing: 2.86px;
	text-transform: uppercase;
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
	margin-bottom: 18px;
}

.bgk-hero__eyebrow::before {
	content: "";
	width: 40px;
	height: 3px;
	background: var(--bgk-accent);
	flex: none;
}

.bgk-content .bgk-section.bgk-hero--home h1 {
	color: var(--bgk-white);
	font-size: clamp(34px, 5.4vw, 58px);
	font-weight: 700 !important;
	/* TASKS.md 22.A2 — max-width на h1 самия (не само на .bgk-hero__col) — ≤3 реда на десктоп. */
	max-width: 980px;
}

.bgk-content section.section.bgk-hero--home h1 {
	color: var(--bgk-white);
	font-size: clamp(34px, 5.4vw, 58px);
	font-weight: 700 !important;
	/* TASKS.md 22.A2 — max-width на h1 самия (не само на .bgk-hero__col) — ≤3 реда на десктоп. */
	max-width: 980px;
}

/* TASKS.md 22.A2 — с таблото (58% колона) h1 пада на 52px, за да остане на ≤4 реда. */
body.bgk-hero-b .bgk-content .bgk-section.bgk-hero--home h1 {
	font-size: clamp(30px, 4.4vw, 52px);
	max-width: none;
}

body.bgk-hero-b .bgk-content section.section.bgk-hero--home h1 {
	font-size: clamp(30px, 4.4vw, 52px);
	max-width: none;
}

.bgk-content .bgk-section.bgk-hero--home .bgk-hero__lead {
	color: var(--bgk-text-light);
	font-size: 18px;
	max-width: 640px;
	margin-top: 22px;
}

.bgk-content section.section.bgk-hero--home .bgk-hero__lead {
	color: var(--bgk-text-light);
	font-size: 18px;
	max-width: 640px;
	margin-top: 22px;
}

.bgk-hero__actions {
	display: flex;
	gap: 16px;
	flex-wrap: wrap;
	margin-top: 36px;
}

.bgk-btn--outline,
a.bgk-btn--outline {
	border-color: rgba(255, 255, 255, .45);
	color: #fff;
	background: transparent;
}

.bgk-btn--outline:hover,
a.bgk-btn--outline:hover {
	border-color: #fff;
	background: rgba(255, 255, 255, .08);
}

/* TASKS.md 22.17 — secondary на светло (беше само тъмно — бял контур върху светла секция е невидим). */
.bgk-section--light .bgk-btn--outline,
.bgk-section--white .bgk-btn--outline,
.bgk-content .bgk-section--light .bgk-btn--outline,
.bgk-content .bgk-section--white .bgk-btn--outline {
	border-color: rgba(23, 27, 34, .3);
	color: var(--bgk-ink);
}

.bgk-section--light .bgk-btn--outline:hover,
.bgk-section--white .bgk-btn--outline:hover,
.bgk-content .bgk-section--light .bgk-btn--outline:hover,
.bgk-content .bgk-section--white .bgk-btn--outline:hover {
	border-color: var(--bgk-ink);
	background: rgba(23, 27, 34, .06);
}

.bgk-content .bgk-section.bgk-hero--home .bgk-hero__trust {
	display: flex;
	gap: 14px;
	align-items: center;
	margin-top: 28px;
	color: var(--bgk-text-dim);
	font-size: 14.5px;
	flex-wrap: wrap;
}

.bgk-content section.section.bgk-hero--home .bgk-hero__trust {
	display: flex;
	gap: 14px;
	align-items: center;
	margin-top: 28px;
	color: var(--bgk-text-dim);
	font-size: 14.5px;
	flex-wrap: wrap;
}

.bgk-hero__stars {
	color: var(--bgk-gold); /* PLAN v5 */
	letter-spacing: .1em;
}

.bgk-hero__rating b {
	color: var(--bgk-white);
}

/* TASKS.md 22.3 — `?hero=b`: таблото на вариант Г се връща като плоча вдясно на снимката. */
.bgk-hero__board {
	display: none;
	background: var(--bgk-bg-panel);
	color: var(--bgk-text-light);
	border: 1px solid var(--bgk-accent);
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
}

body.bgk-hero-b .bgk-hero__board {
	display: block;
}

.bgk-hero__board-row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 14px;
	padding: 12px 20px;
	border-bottom: 1px solid var(--bgk-line-dark);
}

.bgk-hero__board-row:last-child {
	border-bottom: 0;
}

.bgk-hero__board-k {
	font-size: 14.5px;
	color: var(--bgk-text-dim);
}

.bgk-hero__board-v {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 16px;
	font-variant-numeric: tabular-nums;
	color: var(--bgk-white);
}

.bgk-hero__board-row--hi .bgk-hero__board-v {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

@media (max-width: 980px) {
	.bgk-content .bgk-section.bgk-hero--home {
		min-height: 0;
	}

	.bgk-content section.section.bgk-hero--home {
		min-height: 0;
	}

	body.bgk-hero-b .bgk-content .bgk-section.bgk-hero--home > .bgk-hero__wrap {
		grid-template-columns: 1fr;
		gap: 34px;
	}

body.bgk-hero-b .bgk-content section.section.bgk-hero--home > .bgk-hero__wrap {
		grid-template-columns: 1fr;
		gap: 34px;
	}
}

@media (max-width: 620px) {
	/* TASKS.md 22.A2 — 390px: 32px, line-height 1.1, ≤5 реда; важи и за `.bgk-hero-b` (max-width:none го пренаписва по-нагоре). */
	.bgk-content .bgk-section.bgk-hero--home h1,
	body.bgk-hero-b .bgk-content .bgk-section.bgk-hero--home h1 {
		font-size: 32px;
		line-height: 1.1;
		max-width: none;
	}

	.bgk-content section.section.bgk-hero--home h1,
	body.bgk-hero-b .bgk-content section.section.bgk-hero--home h1 {
		font-size: 32px;
		line-height: 1.1;
		max-width: none;
	}
}

/*
 * ── решетка от снимки (TASKS.md 4.23) ──
 * BGK_Content_Cleanup::gridify_photo_groups() (inc/importer/class-bgk-content-cleanup.php)
 * вече обединява 3+ последователни голи снимки (напр. "Реални резултати и
 * завършени проекти" — на живо крепени в ЕДНА тясна колона на
 * `.bgk-row--4`, с h3 подпис след всяка) в `.bgk-photo-grid` от `<figure>`,
 * "изкачена" до нивото на секцията вместо стисната в 1 от 4 колони.
 */
/* TASKS.md 22.10 — 3 фиксирани колони (беше auto-fill), gap 14px (беше 20px). */
.bgk-photo-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px;
	margin: 20px 0 0;
}

.bgk-photo {
	position: relative;
	margin: 0;
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	background: var(--bgk-bg-light);
}

/*
 * TASKS.md 22.10 — плочка 300px (не aspect-ratio) — САМО извън
 * `.bgk-photo-grid--pair` (колажа "За нас"), чиито собствени
 * `figure:first-child`/`:not(:first-child) img` правила по-долу пазят
 * различни съотношения (3:4/4:3) за лявата/дясната клетка на pair-а.
 */
.bgk-photo-grid:not(.bgk-photo-grid--pair) .bgk-photo img {
	display: block;
	width: 100%;
	height: 300px;
	object-fit: cover;
	border-radius: 0;
}

/* TASKS.md 22.10 — надпис = overlay градиент долу (беше плосък ред под снимката); излиза само ако има figcaption. */
.bgk-photo figcaption {
	position: absolute;
	inset: auto 0 0 0;
	padding: 36px 16px 14px;
	font-family: var(--bgk-font-body);
	font-weight: 600;
	font-size: 15px;
	color: var(--bgk-white);
	background: linear-gradient(transparent, rgba(15, 17, 21, .85));
}

@media (max-width: 620px) {
	.bgk-photo-grid:not(.bgk-photo-grid--pair) {
		grid-template-columns: 1fr;
	}

	.bgk-photo-grid:not(.bgk-photo-grid--pair) .bgk-photo img {
		height: 220px;
	}
}

/*
 * ── контактната секция (TASKS.md 4.24) ──
 * BGK_Content_Cleanup::layout_contact_section() обединява формата (Fluent
 * Forms) и контактните данни (телефон/часове) в `.bgk-contact`, като
 * `design/variant-g.html` `.contact` (форма | инфо, 1fr 1fr).
 */
.bgk-contact {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 38px;
	align-items: start;
	margin-top: 24px;
}

/*
 * TASKS.md 22.12 — лявата колона е картите (BGK_Card_Builder::
 * rebuild_contact_info_cards()), дясната формата — обратно на DOM реда
 * (формата е ПЪРВИЯ елемент на `.bgk-contact`, TASKS.md Етап 4 забранява
 * пипане на структурата/реда на build), затова визуалният ред е чист CSS
 * `order`. Важи и на 390px (single-колона стек) — "карти над формата".
 */
.bgk-contact__form {
	order: 2;
}

.bgk-contact__info {
	order: 1;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

/*
 * TASKS.md 22.B4 — жива диагноза: картите бяха ФИКСИРАНО `--bgk-bg-light`
 * (#F6F5F2) — на `.bgk-section--light` (СЪЩИЯТ цвят като секцията) картите
 * ставаха невидими (светло върху светло). Обръщач-принцип, СЪЩИЯТ като
 * .bgk-why/.fluentform label: бели (#FFF) + сянка на светла (--light)
 * секция, #F6F5F2 на бяла (--white) секция — винаги контраст с родителя.
 */
.bgk-contact-card {
	display: flex;
	align-items: center;
	gap: 18px;
	background: var(--bgk-white);
	box-shadow: var(--bgk-shadow);
	border-radius: var(--bgk-radius-container);
	padding: 22px 24px;
	color: inherit;
	text-decoration: none;
	transition: transform .15s ease;
}

.bgk-section--white .bgk-contact-card,
.bgk-content .bgk-section--white .bgk-contact-card {
	background: var(--bgk-bg-light);
}

a.bgk-contact-card:hover {
	transform: translateY(-3px);
}

/* TASKS.md 22.B4 — заглавието без подчертаване по подразбиране (картата е <a>) — подчертаване само на hover. */
a.bgk-contact-card:hover .bgk-contact-card__body b {
	text-decoration: underline;
}

.bgk-contact-card__icon {
	flex: none;
	width: 64px;
	height: 64px;
	border-radius: var(--bgk-radius-container);
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
	display: grid;
	place-items: center;
}

.bgk-contact-card__body {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}

.bgk-contact-card__body b {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	/* TASKS.md 22.B4 — заглавието на картата 19px (беше 17px). */
	font-size: 19px;
	letter-spacing: .03em;
	color: var(--bgk-ink);
	text-decoration: none;
	overflow-wrap: anywhere;
}

.bgk-contact-card__body span {
	font-family: var(--bgk-font-body);
	font-size: 13.5px;
	color: var(--bgk-ink-soft);
}

/*
 * TASKS.md 22.B4(в) — дясната плоча е БЯЛА (#FFF) + сянка на светла/бяла
 * секция (беше `--bgk-bg-light`, същия цвят като полетата — плочата и
 * полетата се сливаха), #171B22 на тъмна секция (родителският
 * `.bgk-section--dark`, ако редуването я сложи там, 22.6) — СЪЩИЯТ
 * обръщач-принцип като .bgk-why/.fluentform label по-горе.
 */
.bgk-contact__form {
	background: var(--bgk-white);
	box-shadow: var(--bgk-shadow);
	border-radius: var(--bgk-radius-container);
	padding: 32px;
}

.bgk-section--dark .bgk-contact__form,
.bgk-content .bgk-section--dark .bgk-contact__form {
	background: var(--bgk-bg-panel);
}

/* TASKS.md 22.B4(в) — полетата #F6F5F2 (бяха бели, слети с плочката, преди тя да стане бяла тук). */
.bgk-contact__form .ff-el-form-control,
.bgk-contact__form textarea,
.bgk-contact__form select {
	background: var(--bgk-bg-light) !important;
	border: 1px solid var(--bgk-line) !important;
	border-radius: var(--bgk-radius-field) !important;
}

/*
 * TASKS.md 4.34 (Etap 4д, жива диагноза 03.09) — Fluent Forms плъгинските
 * дефолти: етикетите излизат почти бели върху светъл фон (само червените
 * звездички се виждат), бутонът е плъгинско зелено. `.fluentform` (не само
 * `.bgk-contact__form`) — формата може да излезе и извън контактната
 * секция (напр. страница само с шорткод), `!important` е нужен, защото
 * плъгинът enqueue-ва собствен CSS СЛЕД темата (същия проблем като
 * Elementor-овия `.elementor-kit-10 a` от 3.10/3.11).
 */
/*
 * TASKS.md 22.A5 — жива диагноза: етикетите бяха ЕДИН фиксиран цвят, без да
 * четат фона на родителската секция — на тъмен фон (22.6's `.bgk-section--
 * dark`, контактната секция може да излезе тъмна по редуването) тъмният
 * `--bgk-ink` практически изчезва. Базовото правило остава за светъл фон;
 * `.bgk-section--dark .fluentform label` по-долу го обръща на светло.
 */
.fluentform label {
	color: var(--bgk-ink) !important;
	font-family: var(--bgk-font-display) !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	line-height: 1.4 !important;
	text-transform: uppercase !important;
	letter-spacing: 2px !important;
}

.bgk-section--dark .fluentform label,
.bgk-content .bgk-section--dark .fluentform label {
	color: var(--bgk-text-light) !important;
}

/*
 * TASKS.md 22.11 — "За нас"+"Нашите предимства" слети в ЕДНА тъмна секция
 * (BGK_Card_Builder::merge_about_and_advantages_sections()): снимка вляво
 * 48%, вдясно kicker+h2+lead (стиловете им идват от общите dark-section
 * правила по-горе, 22.5) + чеклист с кръгла кехлибарена ✓ + secondary бутон
 * (.bgk-btn--outline, вече дефиниран за героя, 22.3).
 */
.bgk-why {
	display: grid;
	grid-template-columns: 48% 1fr;
	gap: 48px;
	align-items: center;
}

.bgk-why__media {
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	/* TASKS.md 22.B3 — ЕДНА снимка на цялата височина на колоната, не center-ирана по съдържание (.bgk-why има align-items:center). */
	align-self: stretch;
}

/*
 * TASKS.md 22.B3 — жива диагноза: лявата колона на "За нас" носеше СЪЩИЯ
 * колаж-чифт (`.bgk-photo-grid--pair`, 22.10) като отделния колаж по-долу
 * на страницата — два малки квадрата долу-вляво с празнина отгоре, вместо
 * ЕДНА снимка (буса) на цялата височина. Тук, СКОПИРАНО само в
 * `.bgk-why__media`, чифтът се свежда до първата снимка, разтеглена на 100%
 * височина/ширина; втората фигура отпада (не е загубено съдържание — само
 * визуален избор за тази конкретна колона, колажът другаде остава чифт).
 */
.bgk-why__media .bgk-photo-grid--pair {
	display: block;
	height: 100%;
	/*
	 * PLAN.md § 36/Н01 — гарантираният съдържащ блок за абсолютно позиционираната
	 * фигура по-долу. `.media-collage` (30.9) вече е `position:relative`, но
	 * колажът се среща и БЕЗ тази обвивка — тогава фигурата не бива да „избяга"
	 * до най-близкия позициониран прародител (секцията на героя).
	 */
	position: relative;
	/*
	 * TASKS.md 31.6 — жива диагноза (390px, началната): решетката носи
	 * `margin-top:20px` от общия си стил. Докато беше пряко дете на
	 * `.bgk-why__media`, отстъпът нямаше значение; след 30.9 между двете стои
	 * `.media-collage` (position:relative) и отстъпът вече бута съдържанието
	 * 20px надолу в рамка с фиксирана височина и `overflow:hidden` — долните
	 * 20px от снимката се режеха (qa-scan: „div.bgk-why__media (+20px)").
	 */
	margin: 0;
}

/* TASKS.md 31.6 — псевдонимът от 30.9 се опъва като решетката, която обвива. */
.bgk-why__media .media-collage {
	height: 100%;
}

/*
 * PLAN.md § 36/Н01 — единствената видима фигура заема ЦЯЛАТА рамка.
 * `.bgk-photo-grid--pair > figure:first-child { grid-row: 1 / span 2 }` (4.47)
 * я слага в ПЪРВАТА от двете колони; тук фигурите 2 и 3 са скрити, значи
 * втората колона остава празна.
 *
 * Находката предписва разпъване по целия грид (`grid-column`/`grid-row` от
 * първата до последната линия). Взима се СЪЩИЯТ ефект, но с
 * `position:absolute; inset:0` — по две причини:
 *   1. точно тази двойка стойности е ЗАБРАНЕНА из целия файл (гейтът на 29.1
 *      в tests/run.php брои `grid-column` до последната линия и иска нула);
 *   2. решетката тук е `display:block` (правилото на 22.B3 по-горе), значи
 *      grid-разположението и без това не важи. Извън потока фигурата пълни
 *      цялата рамка — и точно това би направила и ако pair-ът един ден стане
 *      отново `grid` (абсолютно дете без обявена клетка се позиционира спрямо
 *      цялата решетка).
 *
 * Излизането от потока НЕ е козметика: докато снимката беше В ПОТОКА,
 * собствената ѝ височина участваше в авто-размера на реда на `.bgk-why` —
 * свалянето на тавана `max-height:460px` по-долу разду секцията от 767px на
 * 1500px (измерено с Chromium на 1280). Извън потока колоната не допринася
 * нищо, редът пак се мери по текста (767px), а `align-self:stretch` на
 * `.bgk-why__media` го подава обратно на рамката — снимката пълни точно
 * нейната височина и се кадрира от `overflow:hidden` + `object-fit:cover`.
 */
.bgk-why__media .bgk-photo-grid--pair > figure:first-child {
	position: absolute;
	inset: 0;
	height: 100%;
	margin: 0;
}

/*
 * PLAN.md § 36/Н01 — жива диагноза 18.09 (Chromium, 1280): решетката е
 * 543×767, а снимката в нея 543×460 → 307px празно бяло поле до значката
 * „+1200 Доволни клиенти". Причината НЕ е `height`, а `max-height` —
 * `.bgk-content img { max-height: 460px }` (TASKS.md 4.20, таванът срещу
 * голи снимки в реалните им пиксели) е с по-ниска специфичност за `height`,
 * но `max-height` изобщо не се пребиваше тук и режеше опънатата снимка на
 * точно 460px. Таванът отпада САМО за тази една снимка (кадрирана рамка с
 * `overflow:hidden` и `object-fit:cover` — не може да разпъне страницата).
 */
.bgk-why__media .bgk-photo-grid--pair > figure:first-child img {
	width: 100%;
	height: 100%;
	max-height: none;
	aspect-ratio: auto;
	object-fit: cover;
	display: block;
}

.bgk-why__media .bgk-photo-grid--pair > figure:not(:first-child) {
	display: none;
}

.bgk-why__list {
	list-style: none;
	margin: 26px 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.bgk-why__list li {
	display: flex;
	align-items: flex-start;
	gap: 14px;
}

.bgk-why__check {
	flex: none;
	display: grid;
	place-items: center;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
	font-size: 13px;
	line-height: 1;
	margin-top: 2px;
}

.bgk-why__list b {
	font-family: var(--bgk-font-body);
	font-weight: 600;
	font-size: 15.5px;
	color: var(--bgk-white);
}

.bgk-why__cta {
	margin: 30px 0 0;
}

/* TASKS.md 22.11 — бройката "13+ ГОДИНИ ОПИТ" (.bgk-sec-head__counter, преместена от "Предимства") е на тъмно тук — етикетът (--bgk-ink-soft по подразбиране) няма контраст на #0F1115. */
.bgk-why .bgk-counter__label {
	color: var(--bgk-text-dim);
}

@media (max-width: 980px) {
	.bgk-why {
		grid-template-columns: 1fr;
		gap: 30px;
	}

	/* TASKS.md 22.B3 — 1 колона: align-self:stretch няма редова височина за опъване, връщаме фиксирана. */
	/* TASKS.md 31.6 — `.media-collage` (обвивката от 30.9) влиза в същия списък. */
	.bgk-why__media,
	.bgk-why__media .media-collage,
	.bgk-why__media .bgk-photo-grid--pair,
	.bgk-why__media .bgk-photo-grid--pair > figure:first-child {
		height: 320px;
	}
}

.fluentform .ff-el-form-control {
	border: 1px solid var(--bgk-line) !important;
	border-radius: var(--bgk-radius-field) !important;
	padding: 12px 14px !important;
	font-family: var(--bgk-font-body) !important;
	color: var(--bgk-ink) !important;
}

/* TASKS.md 22.17 — полета focus 1px #F5A623 + tint сянка. */
.fluentform .ff-el-form-control:focus {
	border-color: var(--bgk-accent) !important;
	box-shadow: 0 0 0 3px var(--bgk-accent-tint) !important;
	outline: none !important;
}

/* TASKS.md 22.17 — FF грешка #C2410C (поле в грешка + текста на съобщението). */
.fluentform .ff-el-is-error .ff-el-form-control {
	border-color: var(--bgk-danger) !important;
}

.fluentform .error {
	color: var(--bgk-danger) !important;
	font-size: 13px;
}

/* TASKS.md 22.12 — бутонът "Изпратете" е черен (--bgk-ink), не кехлибарен — hover пада до --bgk-bg-dark. */
.ff-btn-submit {
	display: inline-block !important;
	font-family: var(--bgk-font-display) !important;
	text-transform: uppercase !important;
	letter-spacing: .05em !important;
	font-weight: 500 !important;
	background: var(--bgk-ink) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: var(--bgk-radius-button) !important;
	padding: 14px 26px !important;
}

.ff-btn-submit:hover {
	background: var(--bgk-bg-dark) !important;
}

@media (max-width: 980px) {
	.bgk-contact {
		grid-template-columns: 1fr;
	}
}

/*
 * ── "3 стъпки" (TASKS.md 4.27, заменено от 9.2/9.3) ──
 * TASKS.md 4.27 (import-time, BGK_Content_Cleanup::bandify_step_groups())
 * очакваше `<h2>01</h2>` + `.bgk-icon-box` ПРЕКИ деца на секцията — жива
 * диагноза 05.09 (Etap 9) показа, че реалният живия HTML никога не е така:
 * всяко число+съдържание е `.bgk-row--2` ([h2 число | icon-box]), три
 * такива реда една под друга в тясна 554px колона (виж 9.2 — след
 * нормализацията там редовете стават преки деца на секцията, но си остават
 * `.bgk-row`, не голи h2/icon-box) — `bandify_section_steps()` никога не се
 * е задействал на живо. `BGK_Card_Builder::convert_step_row_groups()`
 * (TASKS.md 9.3, render-time) разпознава ТОЗИ реален вид и строи `.bgk-step`
 * БЕЛИ карти (не тъмна лента) — секцията остава на стоманения си фон.
 * `.bgk-steps__item`/`__n`/`__body` по-долу остават непокътнати за
 * import-time пътя (не е доказано, че някога се задейства на реално
 * съдържание), но вече не делят селектора `.bgk-steps` с новия компонент.
 */
.bgk-steps {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
	margin-top: 24px;
}

/*
 * TASKS.md 12.1 — снимката на media-text реда, от който `.bgk-steps` е
 * издърпана (`BGK_Card_Builder::extract_lone_steps_photo()`), излиза НАД
 * решетката като пълноширока лента.
 */
.bgk-steps-photo {
	margin: 0 0 24px;
}

.bgk-steps-photo img {
	display: block;
	width: 100%;
	/* TASKS.md 22.9 — снимката над картите е 420px (беше 320px). */
	max-height: 420px;
	object-fit: cover;
	border-radius: var(--bgk-radius-container);
}

/* TASKS.md 22.9 — картите минават на светъл фон (--bgk-bg-light), без рамка, padding 32px. */
.bgk-step {
	background: var(--bgk-bg-light);
	border-radius: var(--bgk-radius-container);
	padding: 32px 28px;
	color: var(--bgk-ink);
}

.bgk-step__n {
	display: block;
	font-family: var(--bgk-font-display);
	font-weight: 700;
	font-size: 56px;
	font-variant-numeric: tabular-nums;
	color: var(--bgk-accent);
	line-height: 1;
	margin-bottom: 14px;
}

.bgk-step h3 {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 19px;
	text-transform: uppercase;
	margin: 0 0 8px;
}

.bgk-step p {
	color: var(--bgk-ink-soft);
	font-size: 14.8px;
	margin: 0;
}

/* Import-time компонент (TASKS.md 4.27) — вж. докблока по-горе защо е отделен от `.bgk-steps`/`.bgk-step`. */
.bgk-steps__item {
	position: relative;
	padding: 0 26px;
}

.bgk-steps__item:first-child {
	padding-left: 0;
}

.bgk-steps__item + .bgk-steps__item::before {
	content: "";
	position: absolute;
	left: 0;
	top: 4px;
	bottom: 4px;
	width: 1px;
	background: rgba(255, 255, 255, .28);
}

.bgk-steps__n {
	display: block;
	font-family: var(--bgk-font-mono);
	font-weight: 600;
	font-size: 30px;
	font-variant-numeric: tabular-nums;
	color: #fff;
	margin-bottom: 10px;
}

.bgk-steps__body h3 {
	font-size: 16.5px;
	color: #fff;
	margin: 0 0 6px;
}

.bgk-steps__body p {
	color: var(--bgk-text-dim);
	font-size: 14.5px;
	margin: 0;
}

@media (max-width: 620px) {
	.bgk-steps {
		grid-template-columns: 1fr;
	}

	.bgk-steps__item {
		padding: 18px 0;
	}

	.bgk-steps__item:first-child {
		padding-top: 0;
	}

	.bgk-steps__item + .bgk-steps__item::before {
		left: 0;
		right: auto;
		top: 0;
		bottom: auto;
		width: 100%;
		height: 1px;
	}
}

/*
 * TASKS.md 22.7 — "екипът .../za-nas/: ... име Oswald, роля #5A6472" —
 * отменя 4.37-то изключение (тогава името нарочно НЕ беше uppercase/Oswald).
 * Името вече наследява общото `.bgk-card h3` (Oswald 600 uppercase, по-горе)
 * без нужда от отделно правило тук; ролята е телесният шрифт, не моно.
 */
.bgk-card--portrait p {
	font-family: var(--bgk-font-body);
	font-size: 14px;
	letter-spacing: 0;
	text-transform: none;
	color: var(--bgk-ink-soft);
}

/*
 * TASKS.md 4.38 (Etap 4е) — снимки в колони, оставащи "празни сиви" без
 * width/height. Буквалният селектор от задачата — снимка ПРЯКО дете на
 * `.bgk-col` (не увита в `.bgk-photo`/`.bgk-card`/`.bgk-icon-box`, които
 * вече имат собствен изглед по-горе).
 */
.bgk-col > img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--bgk-radius-container);
}

/*
 * TASKS.md 4.39 (Etap 4е) — малки квадратни икони (icon-N.jpg,
 * icon-phone.webp), маркирани `.bgk-icon` от
 * BGK_Content_Cleanup::iconify_small_square_images() — 64×64 до
 * заглавието, не hero снимка. `!important` е нужен, защото по-специфични
 * hero-стил правила (`.bgk-card > img:first-child`, `.bgk-image-box img`)
 * иначе печелят пред самотния клас `.bgk-icon`.
 */
.bgk-icon {
	display: block;
	width: 64px !important;
	height: 64px !important;
	max-width: 64px !important;
	max-height: 64px !important;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	border-radius: 12px;
	margin: 0 0 14px !important;
}

/*
 * TASKS.md 4.40 (Etap 4е) — media+текст ред (напр. "За нас": снимки+брояч в
 * няколко тесни "само-медия" колони до текстова колона) —
 * BGK_Content_Cleanup::regroup_media_text_columns() обединява всички
 * "само-медия" колони в ЕДНА `.bgk-col--media` (2-колонна решетка снимки +
 * броячът върху тях); текстовата колона става втора.
 */
.bgk-row--media-text {
	grid-template-columns: 1fr 1.1fr;
	align-items: center;
	gap: 30px;
}

.bgk-col--media {
	position: relative;
}

.media-collage {
	position: relative;
}

/*
 * TASKS.md 10.5 — жива диагноза: /vik-uslugi/'s CTA снимка+текст (1 медия-
 * колона + 1 текстова) не минава прага на `regroup_media_text_columns()`
 * (≥2 "само-медия" колони, TASKS.md 4.40/4.42) — `BGK_Card_Builder::
 * mark_lone_media_text_rows()` (render-time) хваща и този по-прост случай.
 * Нарочно НЕ `.bgk-col--media` — този клас вече значи "колаж от снимки+
 * брояч" (`.bgk-col--media .bgk-counter` по-долу очаква тази семантика);
 * `.bgk-col--photo img` тук е ДЕСЦЕНДЕНТ селектор, който иначе би пипнал и
 * вложените figure-снимки на колажа.
 */
.bgk-col--photo > img,
.bgk-col--photo > figure img {
	max-height: 320px;
	object-fit: cover;
	border-radius: var(--bgk-radius-container);
}

/*
 * TASKS.md 4.47 (регрес от 4.42, Etap 4з) — жива диагноза: `.bgk-photo-grid--pair`
 * съдържаше ВЛОЖЕНА втора `.bgk-photo-grid` (от `gridify_photo_groups()`,
 * виж докблока на `BGK_Content_Cleanup::build_media_collage()`) — трите
 * снимки падаха в ЛЯВАТА половина на pair-а, една под друга (267×444×3).
 * Сега снимките влизат тук като `<figure class="bgk-photo">` — ПРЕКИ деца
 * на `.bgk-photo-grid--pair`, никаква втора решетка. `grid-row`/aspect-ratio
 * са на `<figure>`, не на `<img>` (снимката пълни фигурата изцяло, виж
 * `.bgk-photo img` по-горе).
 */
.bgk-photo-grid--pair {
	grid-template-columns: 1fr 1fr;
	grid-template-rows: auto auto;
	gap: 12px;
}

.bgk-photo-grid--pair > figure:first-child {
	grid-row: 1 / span 2;
}

.bgk-photo-grid--pair > figure:first-child img {
	aspect-ratio: 3 / 4;
}

.bgk-photo-grid--pair > figure:not(:first-child) img {
	aspect-ratio: 4 / 3;
}

.bgk-col--media .bgk-counter,
.bgk-counter--overlay {
	position: absolute;
	left: 14px;
	bottom: 14px;
	background: var(--bgk-ink);
	color: #fff;
	padding: 10px 14px;
	border-radius: var(--bgk-radius-container);
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.media-collage .bgk-counter {
	position: absolute;
	left: 14px;
	bottom: 14px;
	background: var(--bgk-ink);
	color: #fff;
	padding: 10px 14px;
	border-radius: var(--bgk-radius-container);
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.bgk-col--media .bgk-counter__value,
.bgk-counter--overlay .bgk-counter__value {
	color: #fff;
}

.media-collage .bgk-counter__value {
	color: #fff;
}

.bgk-col--media .bgk-counter__label,
.bgk-counter--overlay .bgk-counter__label {
	color: var(--bgk-text-dim);
	font-size: 10.5px;
}

.media-collage .bgk-counter__label {
	color: var(--bgk-text-dim);
	font-size: 10.5px;
}

@media (max-width: 620px) {
	.bgk-row--media-text {
		grid-template-columns: 1fr;
	}
}

/*
 * TASKS.md 4.43 (Etap 4ж) — портретните карти (снимка+име+длъжност): снимката
 * е кадрирана от ГОРЕ (`object-position: top`) — портретите на живо са
 * 822×1100 (по-високи от широки), object-fit:cover без object-position
 * отрязва главата, ако лицето не е точно в центъра на кадъра.
 *
 * TASKS.md 10.1 (обръща 9.12) — жива проверка измери `img` височина ≈
 * ширина×0.75 (= aspect-ratio 4/3) като ПРАВИЛНАТА стойност с реалните
 * портрети — 9.12's предпазливост към 3/4 (страх от отрязани глави) не се е
 * потвърдила живо; 4/3 е и design/variant-g.html `.team .ph`'s стойност.
 * `object-position: top` остава — тя е причината 4/3 да не отрязва главите.
 */
.bgk-card--portrait > img:first-child {
	aspect-ratio: 4 / 3;
	object-position: top;
}

/*
 * `.bgk-card__media img{width:100%;height:100%}` (по-горе) прави
 * aspect-ratio на самата `<img>` без ефект (и width, и height са зададени,
 * не auto) — за увита в `.bgk-card__media` снимка съотношението се смята
 * на ОБВИВКАТА, не на `<img>`-а; `object-position` обаче важи на `<img>`.
 */
.bgk-card--portrait > .bgk-card__media:first-child {
	aspect-ratio: 4 / 3;
}

.bgk-card--portrait .bgk-card__media img {
	object-position: top;
}

/*
 * `.bgk-card` базовото padding (22px 22px 24px) важи и за тялото на
 * портретните карти — макетът иска по-тясно тяло, `.team .b{padding:16px
 * 18px}`; тук и `.bgk-card--portrait`, и бягството на снимката извън него
 * (bleed calc-ът разчита на СЪЩАТА стойност) се пренастройват заедно.
 *
 * TASKS.md 10.1 — `BGK_Card_Builder::normalize_team_card()` вече винаги
 * увива снимката в `.bgk-card__media` (СЪЩАТА обвивка като обикновените
 * `.bgk-card`, `.bgk-card > .bgk-card__media:first-child` по-горе); бегството
 * извън padding-а (bleed) минава ПРЕЗ обвивката, не през самата `<img>`.
 */
.bgk-card--portrait {
	padding: 16px 18px 18px;
}

.bgk-card--portrait > img:first-child,
.bgk-card--portrait > .bgk-card__media:first-child {
	width: calc(100% + 36px);
	margin: -16px -18px 0;
}

/*
 * TASKS.md 11.6 — жива диагноза: плейсхолдърът (10.1: винаги увит в
 * `.bgk-card__media`, СЪЩАТА обвивка като снимките) наследяваше bleed-а
 * САМО от `.bgk-card__media:first-child` по-горе — но собственият му
 * border-radius (базата, 4 закръглени ъгъла) и липсата на overflow:hidden
 * на РОДИТЕЛЯ оставяха белите ъгли на картата да "прозират" през долните
 * ъгли на плейсхолдъра, вместо той да опира гладко до ръба като снимките.
 * Специфичността тук е нарочно равна на `.bgk-card--portrait > img:first-
 * child`/`.bgk-card__media:first-child` (клас+клас+псевдо) — важи и за
 * СТАРАТА "гол директен child" форма (`.bgk-card--portrait > .bgk-avatar-
 * placeholder:first-child`, преди 10.1 да наложи задължителна обвивка),
 * и за новата (обвита в `.bgk-card__media` — виж `.bgk-card__media
 * .bgk-avatar-placeholder` по-долу).
 */
.bgk-card--portrait > .bgk-avatar-placeholder:first-child {
	width: calc(100% + 36px);
	margin: -16px -18px 0;
	border-radius: var(--bgk-radius-container) var(--bgk-radius-container) 0 0;
	overflow: hidden;
}

.bgk-card__media .bgk-avatar-placeholder {
	width: 100%;
	height: 100%;
	border-radius: inherit;
}

.bgk-card--portrait p {
	margin-top: 6px;
	line-height: 1.5;
}

/*
 * TASKS.md 9.12 — жива диагноза: 4-те портретни карти излизаха с различна
 * височина (Мартин, с плейсхолдър вместо снимка, по-висок от другите три).
 * Базовото `.bgk-row{align-items:start}` (TASKS.md 4.21 — предпазва ДРУГИ
 * редове от разпъване до най-високата клетка) точно тук работи в грешна
 * посока: искаме РАВНИ карти, не всяка според собственото си съдържание.
 * `.bgk-team` е класът на реда, слаган от `cardify_portrait_groups()`.
 */
.bgk-row.bgk-team {
	align-items: stretch;
}

/*
 * TASKS.md 4.46 (Etap 4ж) — `team-2.jpg` (Мартин Димитров) връща 404 на
 * стейджинга; BGK_Content_Cleanup::replace_broken_images() заменя всяка
 * потвърдено счупена `<img>` с този placeholder (инициали на синьо), вместо
 * счупена икона. Взема ТОЧНО мястото на снимката, която заменя — 4:3
 * навсякъде, вкл. `.bgk-card--portrait` (TASKS.md 10.1, обръща по-старото
 * 3:4 — виж бележката над `.bgk-card--portrait > img:first-child`).
 */
.bgk-avatar-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	aspect-ratio: 4 / 3;
	background: var(--bgk-blue);
	color: #fff;
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 26px;
	letter-spacing: .04em;
	border-radius: var(--bgk-radius-container);
}

.bgk-card > .bgk-avatar-placeholder:first-child {
	width: calc(100% + 44px);
	margin: -22px -22px 0;
	border-radius: var(--bgk-radius-container) var(--bgk-radius-container) 0 0;
	overflow: hidden;
}

/*
 * TASKS.md 9.6 — счупена снимка ИЗВЪН екипна карта (`.bgk-card--portrait`)
 * — напр. портфолио карта — не получава инициали (нямаше как да познаем
 * чие е името), само плътен стоманен блок, без етикет.
 */
.bgk-card__media--empty {
	width: 100%;
	aspect-ratio: 16 / 9;
	background: var(--bgk-steel);
	border-radius: var(--bgk-radius-container);
}

.bgk-card > .bgk-card__media--empty:first-child {
	width: calc(100% + 44px);
	margin: -22px -22px 0;
	border-radius: var(--bgk-radius-container) var(--bgk-radius-container) 0 0;
}

/* =====================================================================
 * Етап 5 (TASKS.md 5.1-5.7) — "сверка с макета 1:1". Стойностите по-долу
 * са копирани буквално от design/variant-g.html (проверено ред по ред за
 * тази задача, не по памет) — където прозата на TASKS.md 5.х спомена число,
 * което НЕ съществува в самия файл (44-48px h2, 1410px контейнер, 64px H1,
 * "7EA7F0" акцент (без #, за да не хване теста по-долу за палитрата), 32px
 * nav gap, font-weight 700 на заглавията, сянка на
 * картите услуги), файлът печели (REPORT.md обяснява всяко разминаване).
 * ===================================================================== */

/*
 * TASKS.md 22.5 — заглавен блок на секция, design/reference-nastilki.html
 * `.section-head`: линия под ЦЕЛИЯ ред (вариант Г) отпада — самата линия
 * вече е част от kicker-а (`.bgk-sec-head__eyebrow::before` по-долу), не на
 * реда като цяло. Flex подредбата (заглавие|lead) остава — доказана през
 * етапи 19/21 (стековане на дълъг lead, местене в медия колона).
 */
.bgk-content .bgk-sec-head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 26px;
	margin-bottom: 30px;
	padding-bottom: 0;
	border-bottom: 0;
}

/*
 * TASKS.md 10.5 — жива диагноза: h2 "Обслужвани райони" на /vik-uslugi/
 * стоеше 0px под предходната CTA снимка — то е ВТОРИ пряк h2 в секция, чийто
 * ПЪРВИ h2 вече е обвит от `build_section_heads()` (идемпотентният гейт спира
 * след първото съвпадение); `wrap_remaining_section_h2s()` увива и остатъка,
 * но БЕЗ разстояние над него, ако не му се добави собствен `margin-top` —
 * базовото `.bgk-sec-head` няма такъв (първият сек-head е винаги в началото
 * на секцията, разчита само на `.bgk-content .bgk-section{padding:70px 0}`).
 */
.bgk-content .bgk-sec-head--gap {
	margin-top: 48px;
}

/*
 * TASKS.md 9.1 — жива диагноза 05.09: `.bgk-sec-head__title{max-width:22ch}`
 * смяташе `ch` по шрифта на самия DIV (тогавашният телесен шрифт 16.5px ≈ 10.4px/ch, не
 * Oswald-а на h2-то вътре) → 228px колона, h2 на 3-5 реда. `ch` вече живее
 * на самото h2 по-долу (30ch, не макетните 22ch — реалните SEO заглавия са
 * ~1.5× по-дълги от макетния текст); DIV-ът само разпределя мястото до
 * lead-а с flex.
 */
.bgk-sec-head__title {
	max-width: none;
	flex: 1 1 560px;
	min-width: 0;
}

/*
 * TASKS.md 22.5 — kicker: design/reference-nastilki.html `.eyebrow` (линия
 * 40px×2/3px кехлибарена + текст Oswald 13px 600 uppercase 2.86px). h5 —
 * реалните страници внасят h5 точно на тази позиция (TASKS.md 4.28 живата
 * диагноза: "h5 / h2 / p").
 */
.bgk-sec-head__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 13px;
	letter-spacing: 2.86px;
	text-transform: uppercase;
	color: var(--bgk-accent-dark);
	margin-bottom: 14px;
}

.bgk-sec-head__eyebrow::before {
	content: "";
	width: 40px;
	height: 2px;
	background: var(--bgk-accent);
	flex: none;
}

/* TASKS.md 22.5 — на тъмни секции (22.6) заглавният блок обръща цветовете: h2 бял, lead/kicker дим/кехлибар. */
.bgk-section--dark .bgk-sec-head__eyebrow {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

.bgk-section--dark .bgk-content .bgk-sec-head h2,
.bgk-content .bgk-section--dark .bgk-sec-head h2 {
	color: var(--bgk-white);
}

.bgk-section--dark .bgk-sec-head__lead,
.bgk-content .bgk-section--dark .bgk-sec-head__lead {
	color: var(--bgk-text-dim);
}

/*
 * Специфичност (0,3,1) — по-висока от общото `.bgk-content h2` (0,2,1) по-горе, за да го измести чисто по source order + специфичност.
 * TASKS.md 21.2(a) — жива диагноза: /podovi-nastilki-vertikalni-planirovki/
 * има реални (не lead-и) SEO заглавия до 70 знака ("Вертикална планировка и
 * Декоративни настилки – От проекта до завършека") — 30ch (~9.1) все още ги
 * пренася на 3-4 реда. 36ch побира и трите регресирали заглавия на тази
 * страница в ≤2 реда; по-късите заглавия не се променят визуално (max-width
 * е таван, не действителна ширина).
 */
.bgk-content .bgk-sec-head h2 {
	max-width: 36ch;
	padding-bottom: 0;
	margin-bottom: 0;
	border-bottom: 0;
	font-size: clamp(28px, 3.2vw, 40px);
	font-weight: 600 !important;
	letter-spacing: .6px;
}

.bgk-sec-head__lead {
	color: var(--bgk-ink-soft);
	font-family: var(--bgk-font-body);
	max-width: 640px;
	flex: 0 1 420px;
	font-size: 17px;
}

/*
 * TASKS.md 19.1 — жива диагноза: lead над 220 знака увисва над заглавието
 * в базовия flex `.bgk-sec-head` (align-items:flex-end мери спрямо долния
 * ръб на по-високия lead). `BGK_Card_Builder::stack_long_lead_headers()`
 * слага този клас — lead-ът пада ПОД заглавието, на цяла ширина, вместо
 * редом до него.
 */
.bgk-content .bgk-sec-head--stacked {
	display: block;
}

.bgk-sec-head--stacked .bgk-sec-head__title {
	max-width: none;
}

/*
 * TASKS.md 21.2(a) — жива диагноза: `--stacked` маха ширината на ЦЯЛАТА
 * заглавна колона (`.bgk-sec-head__title`, правилото точно по-горе), но НЕ
 * бива да маха ограничението на самото h2 (36ch, ≤2 реда — иначе h2 се
 * разпъва на цялата ширина на секцията и пада на 5+ реда, точно страница 3068's
 * регресия). Изричен guard тук, а не разчитане, че двата селектора никога
 * не се "срещат" — по буквата на задачата ("--stacked НЕ го маха").
 */
.bgk-content .bgk-sec-head--stacked .bgk-sec-head__title h2 {
	max-width: 36ch;
}

.bgk-sec-head--stacked .bgk-sec-head__lead {
	display: block;
	max-width: 760px;
	margin-top: 16px;
}

/*
 * TASKS.md 9.2 — брояч, останал сам на ниво секция (нито двойка, за да
 * стане синя лента, нито съсед на icon-box карта, за да се слее с нея —
 * `BGK_Card_Builder::promote_lone_section_counter()`), се мести до
 * заглавието на реда, а не остава изгубен в подножието на секцията
 * ("13+" до "Нашите предимства").
 */
.bgk-sec-head__counter {
	display: flex;
	flex-direction: row;
	align-items: baseline;
	gap: 8px;
	margin: 0;
}

.bgk-sec-head__counter .bgk-counter__value {
	font-size: 26px;
}

.bgk-sec-head__counter .bgk-counter__label {
	font-size: 12.5px;
}

/*
 * TASKS.md 13.4 — защитна мрежа: `hoist_nested_section_heads()`
 * (class-bgk-content-cleanup.php) вече изкачва ВСЯКО `.bgk-sec-head` до
 * пряко дете на секцията при импорт — тук е CSS-ов резерв за случай, в
 * който по някаква причина остане вложено в `.bgk-col` (по-стар внесен
 * пост, преди тази поправка). `display:block` премахва flex distribution-а,
 * който иначе стиска заглавието спрямо ЛЕВАТА страна на реда с lead-а —
 * вложен head става обикновен стек (заглавие, после lead), всеки на цялата
 * ширина, каквато и да е тя, вместо да се дели наполовина с несъществуващо
 * място.
 */
.bgk-col .bgk-sec-head {
	display: block;
}

.bgk-col .bgk-sec-head__lead {
	display: block;
	max-width: none;
	margin-top: 14px;
}

/*
 * TASKS.md 15.2 — жива диагноза: `hoist_lone_section_heads()` (render-time,
 * class-bgk-card-builder.php) изважда главата, КОГАТО колоната ѝ няма нищо
 * друго смислено — но ако колоната носи и друго съдържание (не гадаем как
 * да го разделим), главата остава вложена в реалната (тясна) grid клетка,
 * чиято ширина CSS не може да разшири (не е container query). Специфичност
 * (0,4,0) — по-висока от `.bgk-content .bgk-sec-head h2` (0,3,0, TASKS.md
 * 9.1) по източник, така че наистина побеждава без `!important`.
 */
.bgk-content .bgk-col .bgk-sec-head h2 {
	max-width: none;
	font-size: clamp(22px, 2.2vw, 30px);
}

/*
 * TASKS.md 22.3 — H1 в героя е двуцветен: последните думи в кехлибарено
 * (design/reference-nastilki.html `.hero h1 em{color:var(--accent)}`,
 * заменя синьото на вариант Г).
 */
.bgk-h1__accent {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

/*
 * TASKS.md 5.2(в) — горният ред на таблото, design/variant-g.html
 * `.board .hd`/`.live`. Индикаторът е `var(--bgk-gold)`, не буквалното
 * зелено на живия индикатор от макета — CLAUDE.md/TASKS.md забраняват цвят
 * извън шестте токена на палитрата навсякъде в темата, а кехлибареното
 * изрично е запазено точно за "живия индикатор" (REPORT.md обяснява избора).
 */
.bgk-hero__board-hd {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 12px 20px;
	border-bottom: 1px solid var(--bgk-line);
	background: var(--bgk-steel);
}

.bgk-hero__board-t {
	font-family: var(--bgk-font-mono);
	font-size: 10.5px;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--bgk-ink-soft);
}

.bgk-hero__board-live {
	display: flex;
	align-items: center;
	gap: 7px;
	font-family: var(--bgk-font-mono);
	font-size: 10.5px;
	color: var(--bgk-blue-dark);
	text-transform: uppercase;
	letter-spacing: .1em;
}

.bgk-hero__board-live i {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--bgk-gold);
	display: block;
}

/*
 * TASKS.md 22.4 — лентата с петте брояча директно в дъното на героя на
 * началната (BGK_Content_Cleanup::insert_counter_band(), извикано само за
 * front page от BGK_Importer) — секцията-обвивка не носи собствен
 * `padding`/фон, за да няма междина между героя и лентата (`.bgk-band`
 * вътре вече слага и двете, същия прецедент като `.bgk-sub-block`,
 * TASKS.md 4.25).
 */
.bgk-content .bgk-section.bgk-band-section {
	padding: 0;
	background: none;
}

.bgk-content section.section.bgk-band-section {
	padding: 0;
	background: none;
}

.bgk-content .bgk-section.bgk-band-section > * {
	max-width: none;
	padding-left: 0;
	padding-right: 0;
}

.bgk-content section.section.bgk-band-section > * {
	max-width: none;
	padding-left: 0;
	padding-right: 0;
}

/* TASKS.md 22.4 — "390: grid 2+2+1" (петте брояча, 2 колони → редове 2/2/1). */
@media (max-width: 620px) {
	.bgk-band-section .bgk-band .bgk-wrap {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.bgk-band-section .bgk-band .container {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.bgk-band__n {
		font-size: 32px;
	}
}

/*
 * TASKS.md 5.3 — картите услуги по design/variant-g.html `.svc article`/
 * `.svc a`: текстов, подчертан линк (моно, синьо), НЕ pill бутон. Снимка 16:9
 * (macет `.svc .ph` е фиксирани 118px — placeholder градиент без реална
 * снимка; за РЕАЛНИТЕ снимки на сайта 16:9 aspect-ratio е верния еквивалент
 * без абсурдно кадриране, REPORT.md обяснява избора). Макетът НЯМА сянка на
 * `.svc article` (само 1px рамка) — не добавяме `box-shadow`.
 *
 * TASKS.md 5.15 — иконата (icon-N.jpg) вътре в `.bgk-icon-box`/`.bgk-image-box`
 * (готови icon-box карти, различен компонент) остава скрита; но вътре в
 * `.bgk-card` вече НЕ се крие — enhance_service_card_labels() я мести в
 * `.bgk-card__media` като `.bgk-card__icon` (правилото веднага след това я
 * показва и позиционира).
 */
.bgk-icon-box .bgk-icon,
.bgk-image-box .bgk-icon {
	display: none;
}

/*
 * TASKS.md 22.7 — иконата на вариант Г (плътен квадрат върху снимката) отпада.
 * TASKS.md 28.2 — жива диагноза: `.bgk-card__media img{display:block}`
 * (клас+таг, специфичност 0,1,1) бие този гол клас (0,1,0) без `!important`
 * — иконата се показваше 64×64 под снимката, разтягайки кутията отвъд
 * фиксираната ѝ височина (началната, uslugi).
 */
.bgk-card__icon {
	display: none !important;
}

/* TASKS.md 22.7 — синьото квадратче-badge на вариант Г отпада. */
.bgk-card__icon-badge {
	display: none;
}

/*
 * TASKS.md 22.7 — линк "Разгледайте услугата": Oswald 14px uppercase
 * кехлибарен със стрелка (не подчертан моно линк, вариант Г). `.bgk-link` е
 * СЪЩИЯТ визуален линк, реален отделен клас (BGK_Content_Cleanup::
 * enhance_service_card_labels() преименува `.bgk-imported-button` →
 * `.bgk-link` вътре в `.bgk-card`, TASKS.md 5.11).
 */
.bgk-card .bgk-link,
.bgk-card .bgk-imported-button,
.bgk-icon-box .bgk-imported-button,
.bgk-image-box .bgk-imported-button {
	background: none;
	color: var(--bgk-accent-dark);
	border: 0;
	border-radius: 0;
	padding: 0;
	font-family: var(--bgk-font-display);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: .05em;
	text-transform: uppercase;
	text-decoration: none;
	display: inline-block;
}

.bgk-card .bgk-link::after,
.bgk-card .bgk-imported-button::after,
.bgk-icon-box .bgk-imported-button::after,
.bgk-image-box .bgk-imported-button::after {
	content: " →";
}

.bgk-card .bgk-link:hover,
.bgk-card .bgk-imported-button:hover,
.bgk-icon-box .bgk-imported-button:hover,
.bgk-image-box .bgk-imported-button:hover {
	background: none;
	color: var(--bgk-accent);
}

@media (max-width: 620px) {
	.bgk-hero__board-hd {
		flex-wrap: wrap;
		gap: 8px;
	}
}

/*
 * PLAN.md § 36/Н05 — двата етикета в таблото на героя („Днес · София" и
 * „Приемаме заявки") са 10.5px, под прага от 12px (qa-scan TINY-TEXT, 390px).
 * Само размерът се вдига — редът, отстоянията и височината на лентата остават
 * на правилата по-горе (`.bgk-hero__board-hd` пази `padding: 12px 20px`).
 */
@media (max-width: 480px) {
	.bgk-hero__board-t,
	.bgk-hero__board-live {
		font-size: 12px;
	}
}

/*
 * TASKS.md 29.2 — 7.0a's плаващи бутон-класове (bgk-float префикс) са
 * махнати: маркъпът (inc/floating.php) вече рендира `.floating`/`.floating a`
 * от МАКЕТИ БАЗОВ СЛОЙ (29.1, долу във файла) — идентична функция (Viber
 * горе, Phone долу, fixed долу вдясно), само класовете идват 1:1 от base.css.
 * z-index 40 (там) е над съдържанието, под мобилното меню (виж
 * `.nav.bgk-nav-open` по-долу).
 */

/* ══════════════════════════════════════════════════════════════════════
 * МАКЕТИ БАЗОВ СЛОЙ (TASKS.md 29.1, PLAN v4)
 * Класовете тук са 1:1 от `theme/bgkanali/makets/final/base.css`
 * (базовият стил, споделен от всички одобрени финални макети) — само
 * стойностите са заменени с var(--bgk-*) токените, дефинирани в style.css
 * (същите числа: bg-dark #0F1115, accent #F5A623 и т.н., виж таблицата в
 * TASKS.md 22.1). Структурата, редът и имената на класовете НЕ се
 * променят — макетът е мерилото (PLAN v4, правило 1).
 *
 * Тази секция е БАЗОВ СЛОЙ, независим от по-старите `.bgk-row`/`.bgk-col`/
 * `.bgk-card` правила по-горе (Etap 4-28) — те остават активни за
 * страниците, които 29.5/29.7 още не са мигрирали. Двата `grid-column:
 * 1 / -1` предпазителя върху `.bgk-col` (25.2/26.1) са махнати по-горе,
 * защото противоречаха пряко на новия `.grid-3`/`.grid-2`/`.feature` слой
 * (29.1 ГОТОВО: нула такива правила).
 * ══════════════════════════════════════════════════════════════════════ */

.container {
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 24px;
}

.section {
	padding: 88px 0;
}

.section-head {
	max-width: 680px;
	margin-bottom: 44px;
}

.section-head.center {
	margin-left: auto;
	margin-right: auto;
	text-align: center;
}

.section-head.center .eyebrow {
	justify-content: center;
}

.eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 13px;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--bgk-accent-dark);
	margin-bottom: 14px;
}

.eyebrow::before {
	content: "";
	width: 34px;
	height: 3px;
	background: var(--bgk-accent);
}

.on-dark .eyebrow {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

.section-head p {
	margin-top: 14px;
	color: var(--bgk-ink-soft);
	font-size: 16.5px;
}

.on-dark .section-head p {
	color: var(--bgk-text-dim);
}

.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 15px;
	letter-spacing: .08em;
	text-transform: uppercase;
	padding: 15px 30px;
	border-radius: var(--bgk-radius-button);
	border: 2px solid transparent;
	cursor: pointer;
	white-space: nowrap;
	/*
	 * TASKS.md 30.11 — жива диагноза на 587 (390px): внесен бутон с цяло
	 * изречение за етикет („Поискайте ориентировъчна оферта ОНЛАЙН НА ВАЙБЪР")
	 * ставаше 521px широк и буташе цялата страница настрани. Бутон не може да
	 * е по-широк от колоната си; на тесен екран етикетът се пренася.
	 */
	max-width: 100%;
}

@media (max-width: 640px) {
	.btn {
		white-space: normal;
		text-align: center;
	}
}

.btn-accent {
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
}

.btn-ghost {
	border-color: rgba(255, 255, 255, .45);
	color: #fff;
}

.btn-dark {
	background: var(--bgk-bg-dark);
	color: #fff;
}

.btn-outline {
	border-color: var(--bgk-ink);
	color: var(--bgk-ink);
}

.btn-sm {
	padding: 11px 20px;
	font-size: 13.5px;
}

.btn svg {
	flex-shrink: 0;
}

/* ---------- Топ лента и навигация ---------- */
.topbar {
	background: var(--bgk-topbar-bg); /* PLAN v5 */
	color: var(--bgk-text-dim);
	font-size: 13px;
	padding: 8px 0;
}

.topbar .container {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
}

.topbar a {
	color: var(--bgk-text-light);
}

.nav {
	background: rgba(15, 17, 21, .96);
	border-bottom: 1px solid rgba(255, 255, 255, .08);
}

.nav .container {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: 72px;
	gap: 20px;
}

.logo {
	display: flex;
	align-items: center;
	gap: 12px;
	color: #fff;
}

.logo-tile {
	width: 48px;
	height: 48px;
	border-radius: 10px;
	background: #fff;
	display: grid;
	place-items: center;
	padding: 4px;
}

.logo-tile img {
	width: 40px;
	height: 36px;
	object-fit: contain;
}

.logo-text {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 19px;
	letter-spacing: .06em;
	text-transform: uppercase;
	line-height: 1.1;
}

.logo-text small {
	display: block;
	font-family: var(--bgk-font-body);
	font-weight: 500;
	font-size: 10.5px;
	letter-spacing: .22em;
	color: var(--bgk-text-dim);
	margin-top: 5px;
	text-transform: uppercase;
}

.nav-links {
	display: flex;
	gap: 26px;
	align-items: center;
}

.nav-links a {
	color: var(--bgk-text-light);
	font-size: 14.5px;
	font-weight: 500;
	padding: 6px 0;
	display: inline-flex;
	align-items: center;
	gap: 5px;
}

.nav-links a.active {
	box-shadow: inset 0 -2px 0 var(--bgk-accent);
}

.nav-right {
	display: flex;
	align-items: center;
	gap: 14px;
}

.nav-phone {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
	font-weight: 700;
	font-size: 15px;
	padding: 10px 18px;
	border-radius: var(--bgk-radius-button);
	white-space: nowrap;
}

.nav-toggle {
	display: none;
	background: none;
	border: 0;
	padding: 8px;
}

.nav-toggle span {
	display: block;
	width: 26px;
	height: 2.5px;
	background: #fff;
	margin: 5.5px 0;
	border-radius: 2px;
}

/* ---------- Херо на вътрешна страница ---------- */
.page-hero {
	position: relative;
	color: #fff;
	background-color: var(--bgk-bg-dark);
	background-size: cover;
	background-position: center;
	min-height: 400px;
	display: flex;
	align-items: center;
}

.page-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	/* TASKS.md 34.6(б) — пелената на вътрешния герой следва палитрата (токените са в style.css). */
	background: linear-gradient(100deg, var(--bgk-pagehero-ov-1) 0%, var(--bgk-pagehero-ov-2) 45%, var(--bgk-pagehero-ov-3) 100%);
}

.page-hero .container {
	position: relative;
	width: 100%;
	padding-top: 64px;
	padding-bottom: 64px;
}

.page-hero.compact {
	min-height: 300px;
}

.crumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 10px;
	font-size: 13px;
	color: var(--bgk-text-dim);
	margin-bottom: 18px;
	align-items: center;
}

.crumbs a {
	color: var(--bgk-text-light);
}

.crumbs span.sep {
	color: rgba(255, 255, 255, .35);
}

.crumbs .here {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

.page-hero h1 {
	font-size: clamp(32px, 4.4vw, 48px) !important;
	font-weight: 700 !important;
	max-width: 820px;
	margin-bottom: 16px;
}

.page-hero h1 em {
	font-style: normal;
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

.page-hero .lead {
	font-size: clamp(16px, 1.5vw, 18.5px);
	color: #cfd6de;
	max-width: 640px;
	margin-bottom: 30px;
}

.hero-actions {
	display: flex;
	gap: 14px;
	flex-wrap: wrap;
}

.hero-facts {
	display: flex;
	gap: 26px;
	flex-wrap: wrap;
	margin-top: 30px;
	padding-top: 22px;
	border-top: 1px solid rgba(255, 255, 255, .14);
	font-size: 13.5px;
	color: var(--bgk-text-dim);
}

.hero-facts b {
	color: #fff;
	font-family: var(--bgk-font-display);
	font-size: 20px;
	font-weight: 600;
	display: block;
	line-height: 1.1;
	margin-bottom: 2px;
}

/*
 * TASKS.md 30.7 — героят на СТАТИЯ показва „дата · издател" в един ред
 * (statia.html), не четирите числови факта на услуговите страници.
 */
.hero-facts.post-facts {
	gap: 20px;
	margin-top: 18px;
	padding-top: 16px;
}

/* ---------- Свързани услуги ---------- */
.related-strip {
	background: var(--bgk-bg-panel);
	border-bottom: 1px solid rgba(255, 255, 255, .08);
}

.related-strip .container {
	display: flex;
	gap: 10px;
	align-items: center;
	flex-wrap: wrap;
	padding-top: 14px;
	padding-bottom: 14px;
}

.related-strip .lbl {
	font-family: var(--bgk-font-display);
	font-size: 12.5px;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--bgk-text-dim);
	margin-right: 6px;
}

.chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 13.5px;
	font-weight: 500;
	color: var(--bgk-text-light);
	border: 1px solid rgba(255, 255, 255, .18);
	border-radius: 99px;
	padding: 7px 14px;
	white-space: nowrap;
}

.chip.here {
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
	border-color: var(--bgk-accent);
}

/* ---------- Текст + снимка ---------- */
.split {
	display: grid;
	grid-template-columns: 7fr 5fr;
	gap: 56px;
	align-items: start;
}

.split.rev {
	grid-template-columns: 5fr 7fr;
}

.split.rev .media {
	order: -1;
}

.prose {
	font-size: 16.5px;
	color: var(--bgk-ink-soft);
}

.prose h2 {
	color: var(--bgk-ink);
	margin-bottom: 20px;
}

.prose p {
	margin-bottom: 16px;
}

.prose p:last-child {
	margin-bottom: 0;
}

.prose b,
.prose strong {
	color: var(--bgk-ink);
	font-weight: 600;
}

.prose a {
	color: var(--bgk-accent-dark);
	font-weight: 600;
}

.clamp {
	position: relative;
	max-height: 236px;
	overflow: hidden;
}

.clamp::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 90px;
	background: linear-gradient(rgba(255, 255, 255, 0), #fff);
}

.bg-light .clamp::after {
	background: linear-gradient(rgba(246, 245, 242, 0), var(--bgk-bg-light));
}

.readmore {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 14px;
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 14px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--bgk-ink);
	border-bottom: 2px solid var(--bgk-accent);
	padding-bottom: 2px;
	background: none;
	border-top: 0;
	border-left: 0;
	border-right: 0;
	cursor: pointer;
}

.media {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.media figure {
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	box-shadow: var(--bgk-shadow);
	aspect-ratio: 3 / 2;
	background: #e9e7e2;
	margin: 0;
}

.media figure.portrait {
	aspect-ratio: 4 / 5;
}

.media figure img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.quote {
	background: var(--bgk-bg-dark);
	color: var(--bgk-text-light);
	border-radius: var(--bgk-radius-container);
	padding: 24px 26px;
	border-left: 4px solid var(--bgk-accent);
}

.quote p {
	font-size: 15px;
	line-height: 1.6;
	color: #cfd6de;
}

.quote .who {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-top: 16px;
}

.quote .who img {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	object-fit: cover;
}

.quote .who b {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 15px;
	letter-spacing: .04em;
	display: block;
}

.quote .who span {
	font-size: 12.5px;
	color: var(--bgk-text-dim);
}

.checks {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px 22px;
	margin: 18px 0 22px;
	list-style: none;
	padding: 0;
}

.checks.one {
	grid-template-columns: 1fr;
}

.checks li {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	font-size: 15px;
	color: var(--bgk-ink);
}

.checks li svg {
	flex-shrink: 0;
	margin-top: 3px;
}

.checks li span b {
	font-weight: 600;
}

/* ---------- Карти услуги ---------- */
.bg-light {
	background: var(--bgk-bg-light);
}

.bg-dark {
	background: var(--bgk-bg-dark);
	color: var(--bgk-text-light);
}

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

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

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

/*
 * PLAN.md § 36/Н02 — жива диагноза 18.09 (Chromium, 1280, /shtampovan-beton/):
 * `div.grid-4` стои ВЪТРЕ в клетка на `div.grid-2` (колони 553px). Фиксираните
 * `repeat(4, …)` не се свиват — `.bgk-icon-box` елементите излизаха 121.75px, а
 * заглавието вътре 70px, тоест текст по една-две букви на ред.
 *
 * Взима се ВТОРИЯТ вариант на находката (изричното правило за ВЛОЖЕН грид), а
 * не глобалната смяна на `.grid-4` на `auto-fit`: `auto-fit` СВИВА празните
 * коловози, тоест `.grid-4` с 2-3 карти другаде по сайта би се разтеглил на
 * половин/цяла ширина вместо да пази четвъртинките си. Тук, вътре в `.grid-2`,
 * децата са точно колкото трябва и свиването е желаното поведение: 553px дават
 * 2 колони по ~265px вместо 4 по 121px.
 *
 * По-специфично (0,2,0) от мобилните правила за `.grid-3`/`.grid-4` (0,1,0)
 * по-долу, затова важи и под 960px — но там `.grid-2` вече е една колона, а
 * `auto-fit` на 354px дава точно една колона, значи мобилният ред е същият.
 */
.grid-2 .grid-4,
.grid-2 .grid-3 {
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.service-card {
	background: var(--bgk-white);
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	box-shadow: var(--bgk-shadow);
	display: flex;
	flex-direction: column;
}

.service-card figure {
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: #e9e7e2;
	margin: 0;
}

.service-card figure img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.service-card .body {
	padding: 22px 24px 24px;
	display: flex;
	flex-direction: column;
	gap: 10px;
	flex: 1;
}

.service-card h3 {
	font-size: 19px;
}

.service-card p {
	font-size: 14.5px;
	color: var(--bgk-ink-soft);
	flex: 1;
}

.tag {
	align-self: flex-start;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--bgk-accent-dark);
	background: var(--bgk-accent-tint);
	padding: 4px 12px;
	border-radius: 99px;
	white-space: nowrap;
}

.card-link {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 13.5px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--bgk-ink);
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 4px;
}

.card-foot {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 10px;
	margin-top: 4px;
}

/* ---------- Подуслуга: снимка + текст в редуващи се редове ---------- */
.feature {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: center;
	padding: 44px 0;
	border-top: 1px solid var(--bgk-line);
}

.feature:first-of-type {
	border-top: 0;
	padding-top: 0;
}

.feature.rev .feature-media {
	order: 2;
}

.feature-media {
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	box-shadow: var(--bgk-shadow);
	aspect-ratio: 3 / 2;
	background: #e9e7e2;
}

.feature-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.feature h2 {
	font-size: 28px;
	margin-bottom: 12px;
}

.feature .num {
	font-family: var(--bgk-font-display);
	font-size: 13px;
	letter-spacing: .22em;
	color: var(--bgk-accent-dark);
	font-weight: 600;
	margin-bottom: 10px;
	display: block;
}

.feature p {
	color: var(--bgk-ink-soft);
	font-size: 16px;
	margin-bottom: 14px;
}

.feature .checks {
	margin: 6px 0 20px;
}

.feature .checks li {
	font-size: 14.5px;
}

/* ---------- Ценови карти ---------- */
.plans {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
	align-items: stretch;
}

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

.plan {
	background: #fff;
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	padding: 26px 26px 24px;
	display: flex;
	flex-direction: column;
	gap: 12px;
	position: relative;
}

.plan h3 {
	font-size: 20px;
	line-height: 1.2;
}

.plan .sub {
	font-size: 14px;
	color: var(--bgk-ink-soft);
	margin-top: -4px;
	min-height: 40px;
}

.plan .price {
	font-family: var(--bgk-font-display);
	font-weight: 700;
	font-size: 40px;
	line-height: 1;
	color: var(--bgk-accent-dark);
	display: flex;
	align-items: baseline;
	gap: 8px;
	flex-wrap: wrap;
	padding: 6px 0 4px;
}

.plan .price small {
	font-family: var(--bgk-font-body);
	font-weight: 500;
	font-size: 13px;
	color: var(--bgk-ink-soft);
	letter-spacing: 0;
}

.plan .price .from {
	font-family: var(--bgk-font-body);
	font-weight: 500;
	font-size: 13px;
	color: var(--bgk-ink-soft);
	letter-spacing: .02em;
}

.plan ul {
	display: flex;
	flex-direction: column;
	gap: 8px;
	flex: 1;
	margin: 4px 0 8px;
	list-style: none;
	padding: 0;
}

.plan li {
	display: flex;
	gap: 9px;
	align-items: flex-start;
	font-size: 14px;
	color: var(--bgk-ink);
}

.plan li svg {
	flex-shrink: 0;
	margin-top: 4px;
}

.plan .btn {
	width: 100%;
}

.plan.featured {
	background: var(--bgk-bg-panel);
	color: var(--bgk-text-light);
	border-color: rgba(var(--bgk-accent-rgb), .6); /* PLAN v5 */
}

.plan.featured .sub {
	color: var(--bgk-text-dim);
}

.plan.featured .price {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

.plan.featured .price small,
.plan.featured .price .from {
	color: var(--bgk-text-dim);
}

.plan.featured li {
	color: var(--bgk-text-light);
}

.plan .ribbon {
	position: absolute;
	top: -13px;
	left: 22px;
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
	font-family: var(--bgk-font-display);
	font-size: 12px;
	letter-spacing: .14em;
	text-transform: uppercase;
	font-weight: 600;
	padding: 5px 12px;
	border-radius: 99px;
}

.plan dl {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 6px 10px;
	font-size: 13.5px;
	margin: 2px 0 6px;
}

.plan dt {
	color: var(--bgk-text-dim);
	white-space: nowrap;
}

.plan dd {
	color: inherit;
	font-weight: 500;
	margin: 0;
}

.plan.featured dl dt {
	color: var(--bgk-text-dim);
}

.note {
	font-size: 13px;
	color: var(--bgk-ink-soft);
	margin-top: 18px;
}

.on-dark .note {
	color: var(--bgk-text-dim);
}

/* ---------- Ценоразпис ---------- */
.pricelist-wrap {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 26px 56px;
}

.pricelist h4 {
	font-size: 17px;
	letter-spacing: .06em;
	padding-bottom: 10px;
	border-bottom: 2px solid var(--bgk-accent);
	margin-bottom: 8px;
	display: flex;
	justify-content: space-between;
	align-items: baseline;
}

.pricelist h4 span {
	font-family: var(--bgk-font-body);
	font-size: 12.5px;
	color: var(--bgk-ink-soft);
	text-transform: none;
	letter-spacing: 0;
	font-weight: 500;
}

.pricelist ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.pricelist li {
	display: flex;
	align-items: baseline;
	gap: 10px;
	padding: 9px 0;
	border-bottom: 1px dashed var(--bgk-line);
	font-size: 14.5px;
}

.pricelist li span:first-child {
	color: var(--bgk-ink);
}

.pricelist li .dots {
	flex: 1;
	border-bottom: 1px dotted #c9c5bb;
	transform: translateY(-4px);
}

.pricelist li b {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 16px;
	color: var(--bgk-accent-dark);
	white-space: nowrap;
	letter-spacing: .02em;
}

.pricelist li b.na {
	color: var(--bgk-ink-soft);
	font-family: var(--bgk-font-body);
	font-size: 13.5px;
	font-weight: 500;
}

.pricelist .more {
	padding-top: 12px;
}

.table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14.5px;
	background: #fff;
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	box-shadow: var(--bgk-shadow);
}

.table th {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	font-size: 13px;
	text-align: left;
	background: var(--bgk-bg-dark);
	color: var(--bgk-text-light);
	padding: 13px 18px;
}

.table td {
	padding: 11px 18px;
	border-bottom: 1px solid var(--bgk-line);
}

.table td.pr {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	color: var(--bgk-accent-dark);
	font-size: 16px;
	white-space: nowrap;
	text-align: right;
}

.table td.u {
	color: var(--bgk-ink-soft);
	white-space: nowrap;
}

.table tr:last-child td {
	border-bottom: 0;
}

/* ---------- Райони ---------- */
.areas {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
}

.area {
	background: #fff;
	border-radius: var(--bgk-radius-container);
	padding: 22px 22px 20px;
	box-shadow: var(--bgk-shadow);
}

.area h3 {
	font-size: 16px;
	margin-bottom: 12px;
	display: flex;
	align-items: center;
	gap: 10px;
}

.area h3::before {
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--bgk-accent);
}

.area ul {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.area li {
	font-size: 13px;
	color: var(--bgk-ink-soft);
	background: var(--bgk-bg-light);
	border-radius: 99px;
	padding: 4px 10px;
}

/* ---------- ЧЗВ ---------- */
.faq {
	max-width: 820px;
}

.faq details {
	border: 1px solid var(--bgk-line);
	border-radius: 12px;
	background: #fff;
	margin-bottom: 10px;
	padding: 0 22px;
}

.faq summary {
	list-style: none;
	cursor: pointer;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	padding: 17px 0;
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 17px;
	letter-spacing: .02em;
}

.faq summary::-webkit-details-marker {
	display: none;
}

.faq summary .pm {
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--bgk-bg-light);
	display: grid;
	place-items: center;
	flex-shrink: 0;
	font-family: var(--bgk-font-body);
	font-weight: 600;
	color: var(--bgk-ink);
}

.faq details[open] summary .pm {
	background: var(--bgk-accent);
}

.faq details p {
	padding: 0 0 18px;
	color: var(--bgk-ink-soft);
	font-size: 15px;
}

.faq-grid {
	display: grid;
	grid-template-columns: 5fr 7fr;
	gap: 56px;
	align-items: start;
}

.faq-aside {
	background: var(--bgk-bg-dark);
	color: var(--bgk-text-light);
	border-radius: var(--bgk-radius-container);
	padding: 30px;
	position: sticky;
	top: 24px;
}

.faq-aside h3 {
	font-size: 22px;
	margin-bottom: 10px;
}

.faq-aside p {
	color: var(--bgk-text-dim);
	font-size: 14.5px;
	margin-bottom: 18px;
}

/* ---------- Стъпки / предимства ---------- */
.steps-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 26px;
}

.step {
	background: var(--bgk-bg-light);
	border-radius: var(--bgk-radius-container);
	padding: 30px 28px;
}

.step b.num {
	font-family: var(--bgk-font-display);
	font-size: 52px;
	font-weight: 700;
	color: rgba(var(--bgk-accent-rgb), .9); /* PLAN v5 */
	line-height: 1;
	display: block;
	margin-bottom: 14px;
}

.step h3 {
	font-size: 18px;
	margin-bottom: 8px;
}

.step p {
	font-size: 14.5px;
	color: var(--bgk-ink-soft);
}

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

.icon-box {
	background: #fff;
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	padding: 24px 22px;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.icon-box .ico {
	width: 46px;
	height: 46px;
	border-radius: 12px;
	background: var(--bgk-accent);
	display: grid;
	place-items: center;
}

.icon-box b {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 16.5px;
	letter-spacing: .03em;
	text-transform: uppercase;
	line-height: 1.25;
}

.icon-box p {
	font-size: 14px;
	color: var(--bgk-ink-soft);
}

.stats {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 12px;
	background: var(--bgk-bg-dark);
	border-radius: var(--bgk-radius-container);
	padding: 28px 20px;
}

.stat {
	text-align: center;
}

.stat b {
	display: block;
	font-family: var(--bgk-font-display);
	font-size: 34px;
	font-weight: 700;
	color: var(--bgk-accent);
	line-height: 1.1;
}

.stat span {
	font-size: 13px;
	color: var(--bgk-text-dim);
	letter-spacing: .04em;
}

/* ---------- Известие / бонус ---------- */
.notice {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 36px;
	align-items: center;
	background: var(--bgk-bg-panel);
	color: var(--bgk-text-light);
	border: 1px solid rgba(var(--bgk-accent-rgb), .45); /* PLAN v5 */
	border-radius: var(--bgk-radius-container);
	padding: 34px 38px;
}

.notice h2 {
	font-size: 28px;
	margin-bottom: 10px;
	color: #fff;
}

.notice p {
	color: #cfd6de;
	font-size: 15px;
}

.notice .badge {
	text-align: center;
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
	border-radius: var(--bgk-radius-container);
	padding: 22px 30px;
	min-width: 200px;
}

.notice .badge b {
	display: block;
	font-family: var(--bgk-font-display);
	font-size: 52px;
	font-weight: 700;
	line-height: 1;
}

.notice .badge span {
	font-family: var(--bgk-font-display);
	font-size: 14px;
	letter-spacing: .16em;
	text-transform: uppercase;
	font-weight: 600;
}

.notice .badge small {
	display: block;
	font-size: 12px;
	margin-top: 8px;
	color: #4a3a0f;
}

/* ---------- Калкулатор ---------- */
.calc {
	background: var(--bgk-bg-dark);
	color: var(--bgk-text-light);
	background-size: cover;
	background-position: center;
}

.calc-grid {
	display: grid;
	grid-template-columns: 1.15fr .85fr;
	gap: 34px;
	align-items: start;
}

.calc-panel {
	background: var(--bgk-bg-panel);
	border: 1px solid rgba(255, 255, 255, .08);
	border-radius: var(--bgk-radius-container);
	padding: 34px;
}

.field-label {
	display: block;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--bgk-text-dim);
	margin: 22px 0 10px;
}

.calc-panel .field-label:first-child {
	margin-top: 0;
}

.service-options {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px;
}

.service-option span {
	display: block;
	padding: 13px 16px;
	border: 1.5px solid rgba(255, 255, 255, .16);
	border-radius: var(--bgk-radius-field);
	font-size: 14.5px;
	font-weight: 500;
	text-align: center;
}

.service-option.on span {
	border-color: var(--bgk-accent);
	background: var(--bgk-accent-tint);
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

.qty-row {
	display: flex;
	align-items: center;
	gap: 14px;
}

.qty-row .input {
	flex: 1;
	/*
	 * TASKS.md 31.6 — жива диагноза (390px, /kurti-chisti-izvozva-lp/ и
	 * кирилската LP): полето е flex дете с `min-width:auto`, което заради
	 * `width:100%` от базовите стилове на формите се разрешава до ЦЯЛАТА
	 * ширина на реда — тогава `.qty-unit` („м²"/„бр.") се изтласква извън
	 * контейнера и страницата получава 17px хоризонтален скрол (мерено:
	 * единицата стига до 407px при 390px екран).
	 */
	min-width: 0;
	background: #0c0e12;
	border: 1.5px solid rgba(255, 255, 255, .16);
	border-radius: var(--bgk-radius-field);
	color: #fff;
	font-size: 20px;
	font-weight: 600;
	padding: 13px 16px;
}

.qty-unit {
	font-family: var(--bgk-font-display);
	font-size: 17px;
	color: var(--bgk-text-dim);
	min-width: 44px;
}

.check-row {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 13px 16px;
	border: 1.5px solid rgba(255, 255, 255, .16);
	border-radius: var(--bgk-radius-field);
	margin-top: 10px;
}

.check-row .box {
	width: 19px;
	height: 19px;
	border-radius: 4px;
	border: 1.5px solid rgba(255, 255, 255, .4);
	flex-shrink: 0;
	margin-top: 2px;
	display: grid;
	place-items: center;
}

.check-row .box.on {
	background: var(--bgk-accent);
	border-color: var(--bgk-accent);
}

.check-row b {
	font-size: 14.5px;
	font-weight: 600;
	display: block;
}

.check-row small {
	font-size: 12.5px;
	color: var(--bgk-text-dim);
}

.calc-result {
	background: var(--bgk-panel-gradient); /* PLAN v5 */
	border: 1px solid rgba(var(--bgk-accent-rgb), .35); /* PLAN v5 */
	border-radius: var(--bgk-radius-container);
	padding: 34px;
}

/* TASKS.md 30.4 — `.calc-result-label` е СЪЩИЯТ h3 от макета, само с изричен клас (JS-ът на плъгина го чете по клас). */
.calc-result h3,
.calc-result .calc-result-label {
	font-size: 15px;
	font-weight: 600;
	letter-spacing: .14em;
	color: var(--bgk-text-dim);
	margin-bottom: 6px;
}

/* Полетата „Име"/„Телефон" + бутонът в дясната плоча (плъгинът ги носи в `.calc-field`). */
.calc-field {
	margin-bottom: 14px;
}

.calc-price {
	font-family: var(--bgk-font-display);
	font-size: 42px;
	font-weight: 700;
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
	line-height: 1.15;
}

.calc-sub {
	font-size: 14px;
	color: var(--bgk-text-dim);
	margin-top: 4px;
}

.calc-breakdown {
	margin: 22px 0;
	border-top: 1px solid rgba(255, 255, 255, .1);
	padding-top: 18px;
	display: flex;
	flex-direction: column;
	gap: 9px;
	font-size: 14px;
}

.calc-breakdown div {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	color: #c9d0d9;
}

.calc-breakdown div span:last-child {
	font-weight: 600;
	color: #fff;
	white-space: nowrap;
}

.calc-note {
	font-size: 12.5px;
	color: var(--bgk-text-dim);
	line-height: 1.55;
	margin-bottom: 22px;
}

.calc-result .btn {
	width: 100%;
}

/* ---------- Отзиви / партньори ---------- */
.reviews {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 22px;
}

.review {
	background: #fff;
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
	padding: 24px;
}

.review .stars {
	color: var(--bgk-gold); /* PLAN v5 */
	letter-spacing: 2px;
	font-size: 15px;
	margin-bottom: 10px;
}

.review p {
	font-size: 14.5px;
	color: var(--bgk-ink-soft);
	margin-bottom: 14px;
}

.review b {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 14.5px;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.gbadge {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	background: #fff;
	color: var(--bgk-ink);
	border-radius: 12px;
	padding: 10px 16px;
	font-size: 13.5px;
	box-shadow: var(--bgk-shadow);
}

.gbadge b {
	font-family: var(--bgk-font-display);
	font-size: 22px;
	font-weight: 700;
	line-height: 1;
}

.gbadge .stars {
	color: var(--bgk-gold); /* PLAN v5 */
	letter-spacing: 1px;
}

.on-dark .gbadge {
	background: rgba(255, 255, 255, .08);
	color: #fff;
	box-shadow: none;
	border: 1px solid rgba(255, 255, 255, .14);
}

.partners {
	display: flex;
	gap: 26px;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	padding: 24px 30px;
	background: #fff;
	border: 1px solid var(--bgk-line);
	border-radius: var(--bgk-radius-container);
}

.partners img {
	height: 40px;
	width: auto;
	max-width: 150px;
	object-fit: contain;
	filter: grayscale(1);
	opacity: .75;
}

/* ---------- CTA лента + футър + плаващи бутони ---------- */
.cta {
	background: var(--bgk-bg-dark);
	color: #fff;
	background-size: cover;
	background-position: center;
	position: relative;
}

.cta::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(15, 17, 21, .96), rgba(15, 17, 21, .82));
}

.cta .container {
	position: relative;
	display: grid;
	grid-template-columns: 1.3fr 1fr;
	gap: 40px;
	align-items: center;
	padding-top: 72px;
	padding-bottom: 72px;
}

.cta h2 {
	font-size: 34px;
	margin-bottom: 12px;
}

.cta p {
	color: #cfd6de;
	font-size: 16px;
	max-width: 560px;
}

.cta-box {
	background: rgba(255, 255, 255, .06);
	border: 1px solid rgba(255, 255, 255, .12);
	border-radius: var(--bgk-radius-container);
	padding: 26px;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.cta-box .big {
	font-family: var(--bgk-font-display);
	font-size: 30px;
	font-weight: 700;
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
	line-height: 1;
}

.cta-box .hours {
	font-size: 13.5px;
	color: var(--bgk-text-dim);
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 4px 14px;
}

.cta-box .hours b {
	color: #fff;
	font-weight: 500;
}

footer {
	background: #0a0c10;
	color: var(--bgk-text-dim);
	padding: 56px 0 24px;
	font-size: 14px;
}

.foot-grid {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr 1fr;
	gap: 40px;
	padding-bottom: 36px;
	border-bottom: 1px solid rgba(255, 255, 255, .08);
}

.foot-grid h4 {
	color: #fff;
	font-size: 15px;
	letter-spacing: .1em;
	margin-bottom: 16px;
}

.foot-grid ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.foot-grid li {
	margin-bottom: 9px;
}

.foot-grid a {
	color: var(--bgk-text-light);
}

.foot-grid p {
	font-size: 14px;
	line-height: 1.6;
}

.foot-bottom {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
	padding-top: 20px;
	font-size: 12.5px;
}

.foot-bottom a {
	color: var(--bgk-text-light);
}

.floating {
	position: fixed;
	right: 28px;
	bottom: 28px;
	display: flex;
	flex-direction: column;
	gap: 14px;
	z-index: 40;
}

.floating a {
	width: 58px;
	height: 58px;
	border-radius: 50%;
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
	display: grid;
	place-items: center;
	box-shadow: 0 8px 22px rgba(var(--bgk-accent-rgb), .35); /* PLAN v5 */
	transition: transform .15s ease, background-color .15s ease;
}

.floating a:hover,
.floating a:focus-visible {
	background: var(--bgk-accent-dark);
	transform: translateY(-2px);
}

.floating a:focus-visible {
	outline: 2px solid var(--bgk-accent);
	outline-offset: 2px;
}

.frame {
	position: relative;
	overflow: hidden;
}

/* ---------- Блог ---------- */
.posts {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 26px;
}

.post {
	background: #fff;
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	box-shadow: var(--bgk-shadow);
	display: flex;
	flex-direction: column;
}

.post figure {
	aspect-ratio: 3 / 2;
	overflow: hidden;
	background: #e9e7e2;
	margin: 0;
}

.post figure img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/*
 * TASKS.md 31.6 — жива диагноза (qa-scan, 1280 и 390): всяка кадрирана рамка
 * `<figure><a><img></a></figure>` (картите на блога, търсенето, архивите и
 * трите карти на 404) излизаше „отрязано съдържание (+8px)". Причината не е
 * кадрирането, а базовата линия: `img` е инлайн елемент и оставя под себе си
 * празнина колкото слизащата част на шрифта, а рамката е с `overflow:hidden`.
 * Снимка, която пълни рамка, е БЛОК — едно правило вместо двайсет.
 */
.bgk-main figure img,
.bgk-content figure img {
	display: block;
}

.post .body {
	padding: 20px 22px 22px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	flex: 1;
}

.post .meta {
	font-size: 12.5px;
	color: var(--bgk-ink-soft);
	display: flex;
	gap: 10px;
	align-items: center;
}

.post .meta .cat {
	color: var(--bgk-accent-dark);
	font-weight: 600;
}

.post h3 {
	font-size: 18px;
	line-height: 1.25;
	text-transform: none;
	letter-spacing: 0;
	font-family: var(--bgk-font-display);
	font-weight: 600;
}

.post p {
	font-size: 14px;
	color: var(--bgk-ink-soft);
	flex: 1;
}

.pager {
	display: flex;
	gap: 8px;
	justify-content: center;
	margin-top: 44px;
}

.pager a {
	width: 42px;
	height: 42px;
	border-radius: var(--bgk-radius-field);
	border: 1px solid var(--bgk-line);
	display: grid;
	place-items: center;
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 15px;
}

.pager a.cur {
	background: var(--bgk-bg-dark);
	color: #fff;
	border-color: var(--bgk-bg-dark);
}

/* TASKS.md 30.7 — „…" между отдалечените страници: същият квадрат, без рамка. */
.pager .dots {
	width: 42px;
	height: 42px;
	display: grid;
	place-items: center;
	color: var(--bgk-ink-soft);
}

/* TASKS.md 30.6/30.10 — бутон под решетка (портфолио, 404). */
.grid-cta {
	margin-top: 30px;
}

/* TASKS.md 30.10 — търсачката в героя на резултатите. */
.hero-search {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
	margin-top: 22px;
	max-width: 560px;
}

.hero-search .field {
	flex: 1 1 240px;
	border-radius: var(--bgk-radius-field);
	border: 1px solid rgba(255, 255, 255, .22);
	background: rgba(255, 255, 255, .08);
	color: #fff;
	padding: 12px 14px;
	font-family: var(--bgk-font-body);
	font-size: 15px;
}

.hero-search .field::placeholder {
	color: var(--bgk-text-dim);
}

.hero-search .field:focus {
	outline: none;
	border-color: var(--bgk-accent);
	box-shadow: 0 0 0 3px var(--bgk-accent-tint);
}

/* TASKS.md 30.7 — редът с филтрите над решетката (`blog.html`). */
.blog-filters {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
	align-items: center;
	margin-bottom: 34px;
}

.blog-filters .count {
	font-size: 13px;
	color: var(--bgk-ink-soft);
	margin-left: auto;
}

.article {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 320px;
	gap: 56px;
	align-items: start;
}

.article-body {
	font-size: 17px;
	color: #3a4350;
	line-height: 1.75;
}

.article-body h2 {
	font-size: 26px;
	margin: 36px 0 14px;
	color: var(--bgk-ink);
}

.article-body h3 {
	font-size: 19px;
	margin: 26px 0 10px;
	color: var(--bgk-ink);
	text-transform: none;
	letter-spacing: 0;
}

.article-body p {
	margin-bottom: 18px;
}

.article-body .lead {
	font-size: 19px;
	color: var(--bgk-ink);
	font-weight: 500;
}

.article-body figure {
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	margin: 26px 0;
	box-shadow: var(--bgk-shadow);
}

.article-body figure img {
	width: 100%;
	display: block;
}

.article-body ul {
	list-style: disc;
	padding-left: 22px;
	margin-bottom: 18px;
}

.article-body li {
	margin-bottom: 6px;
}

.aside-card {
	background: var(--bgk-bg-light);
	border-radius: var(--bgk-radius-container);
	padding: 24px;
	margin-bottom: 20px;
}

.aside-card h4 {
	font-size: 15px;
	letter-spacing: .1em;
	margin-bottom: 14px;
}

.aside-card li {
	font-size: 14px;
	margin-bottom: 10px;
	color: var(--bgk-ink-soft);
}

.aside-card li a {
	color: var(--bgk-ink);
	font-weight: 500;
}

.aside-card.dark {
	background: var(--bgk-bg-dark);
	color: var(--bgk-text-light);
}

.aside-card.dark p {
	color: var(--bgk-text-dim);
	font-size: 14px;
	margin-bottom: 14px;
}

.author {
	display: flex;
	gap: 16px;
	align-items: center;
	background: var(--bgk-bg-light);
	border-radius: var(--bgk-radius-container);
	padding: 20px 22px;
	margin-top: 36px;
}

.author img {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	object-fit: cover;
}

.author b {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 16px;
	letter-spacing: .04em;
	text-transform: uppercase;
	display: block;
}

.author p {
	font-size: 14px;
	color: var(--bgk-ink-soft);
	margin: 0;
}

.contact-grid {
	display: grid;
	grid-template-columns: .9fr 1.1fr;
	gap: 40px;
	align-items: start;
}

.contact-cards {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.contact-card {
	display: flex;
	gap: 18px;
	align-items: center;
	background: var(--bgk-bg-light);
	border-radius: var(--bgk-radius-container);
	padding: 22px 24px;
}

.contact-card .ico {
	width: 52px;
	height: 52px;
	flex-shrink: 0;
	border-radius: 12px;
	background: var(--bgk-accent);
	display: grid;
	place-items: center;
}

.contact-card b {
	font-family: var(--bgk-font-display);
	font-size: 17px;
	font-weight: 600;
	letter-spacing: .03em;
	display: block;
}

.contact-card span {
	font-size: 13.5px;
	color: var(--bgk-ink-soft);
}

.contact-form {
	background: var(--bgk-bg-light);
	border-radius: var(--bgk-radius-container);
	padding: 34px;
}

.contact-form h3 {
	font-size: 20px;
	margin-bottom: 18px;
}

.form-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
}

.field {
	width: 100%;
	background: #fff;
	border: 1.5px solid var(--bgk-line);
	border-radius: var(--bgk-radius-field);
	padding: 13px 16px;
	font-size: 15px;
	color: var(--bgk-ink-soft);
	margin-bottom: 14px;
}

.field.ta {
	min-height: 120px;
}

.form-note {
	font-size: 12.5px;
	color: var(--bgk-ink-soft);
	margin-top: 8px;
}

.map {
	background: #dfe3e6 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cpath d='M0 60h120M60 0v120' stroke='%23cfd5da' stroke-width='2'/%3E%3C/svg%3E");
	border-radius: var(--bgk-radius-container);
	min-height: 340px;
	display: grid;
	place-items: center;
	color: var(--bgk-ink-soft);
	font-family: var(--bgk-font-display);
	letter-spacing: .14em;
	text-transform: uppercase;
	font-size: 14px;
}

/*
 * TASKS.md 30.6 — с истинска вградена карта (`<iframe>`) `.map` вече не е
 * плочка-заместител: сивата решетка и центрирането падат, рамката остава.
 */
.map.has-frame {
	background: none;
	display: block;
	min-height: 0;
	overflow: hidden;
	line-height: 0;
}

.map.has-frame iframe {
	display: block;
	width: 100%;
	height: 340px;
	border: 0;
}

/*
 * TASKS.md 30.6 — състоянията на формата (kontakti.html#sastoyania). Fluent
 * Forms печата своите класове; тук им се дават цветовете на макета: поле в
 * грешка с червен ръб + червен текст под него, успех = кехлибарена отметка,
 * заглавие и абзац, центрирани в същата кутия.
 */
.contact-form .ff-el-is-error .ff-el-form-control,
.contact-form .ff-el-form-control.ff-el-is-error {
	border-color: var(--bgk-danger) !important;
}

.contact-form .error,
.contact-form .text-danger,
.contact-form .ff-el-is-error-message {
	color: var(--bgk-danger) !important;
	font-size: 13px;
	margin: -8px 0 12px;
	display: block;
}

.contact-form .ff-message-success,
.contact-form .ff_submit_success {
	display: grid;
	place-items: center;
	text-align: center;
	gap: 10px;
	padding: 26px 10px;
	font-size: 15px;
	color: var(--bgk-ink-soft);
}

.contact-form .ff-message-success::before,
.contact-form .ff_submit_success::before {
	content: "";
	width: 56px;
	height: 56px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='56' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='11' fill='%23F2A20C'/%3E%3Cpath d='M7 12.5l3.2 3.2L17 9' stroke='%23161308' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}

.contact-form .ff-message-success a,
.contact-form .ff_submit_success a {
	color: var(--bgk-accent-dark);
	font-weight: 600;
}

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

.gallery-grid figure {
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	aspect-ratio: 4 / 3;
	background: #e9e7e2;
	margin: 0;
}

.gallery-grid img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.collage {
	display: grid;
	grid-template-columns: 1.3fr 1fr;
	grid-template-rows: 1fr 1fr;
	gap: 14px;
	height: 100%;
}

.collage figure {
	border-radius: var(--bgk-radius-container);
	overflow: hidden;
	background: #e9e7e2;
	margin: 0;
}

.collage figure:first-child {
	grid-row: 1 / 3;
}

.collage img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* ---------- Мобилни (390px) — маркетите на TASKS.md 29.1 ---------- */
@media (max-width: 960px) {
	.section {
		padding: 64px 0;
	}

	.grid-3,
	.grid-4,
	.plans,
	.plans.four,
	.steps-grid,
	.icons-grid,
	.areas,
	.reviews,
	.posts,
	.gallery-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	/*
	 * TASKS.md 30.11 — жива диагноза на 587 (390px): `1fr` НЕ спира разтягането,
	 * когато детето има `min-width:auto` и вътре има дълъг неразбиваем ред —
	 * пътят на калкулатора даваше 426px колона в 354px контейнер и 169px
	 * хоризонтален скрол. `minmax(0, 1fr)` + `min-width:0` на децата го затварят.
	 */
	.split,
	.split.rev,
	.grid-2,
	.feature,
	.faq-grid,
	.calc-grid,
	.cta .container,
	.article,
	.contact-grid,
	.pricelist-wrap {
		grid-template-columns: minmax(0, 1fr);
	}

	.split > *,
	.grid-2 > *,
	.feature > *,
	.faq-grid > *,
	.calc-grid > *,
	.article > *,
	.contact-grid > *,
	.pricelist-wrap > * {
		min-width: 0;
	}

	.split.rev .media,
	.feature.rev .feature-media {
		order: 0;
	}

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

	.nav-links {
		display: none;
	}

	.nav-toggle {
		display: block;
	}

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

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

	.faq-aside {
		position: static;
	}
}

@media (max-width: 600px) {
	.section {
		padding: 56px 0;
	}

	.container {
		padding: 0 18px;
	}

	.grid-3,
	.grid-4,
	.plans,
	.plans.four,
	.steps-grid,
	.icons-grid,
	.areas,
	.reviews,
	.posts,
	.gallery-grid,
	.service-options,
	.form-row,
	.checks,
	.foot-grid {
		grid-template-columns: 1fr;
	}

	.topbar .container {
		justify-content: center;
		text-align: center;
	}

	.topbar-contacts {
		display: none;
	}

	.nav-phone-num {
		display: none;
	}

	.nav-phone {
		padding: 11px 13px;
	}

	.page-hero {
		min-height: 0;
	}

	.page-hero .container {
		padding-top: 44px;
		padding-bottom: 44px;
	}

	.hero-facts {
		gap: 18px;
	}

	.stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		padding: 22px 14px;
	}

	.stat b {
		font-size: 28px;
	}

	.related-strip .container {
		overflow-x: auto;
		flex-wrap: nowrap;
	}

	.feature {
		gap: 22px;
		padding: 34px 0;
	}

	.feature h2 {
		font-size: 24px;
	}

	.feature .checks {
		grid-template-columns: 1fr;
	}

	.cta h2 {
		font-size: 28px;
	}

	.notice {
		padding: 26px 22px;
	}

	.notice h2 {
		font-size: 24px;
	}

	.calc-panel,
	.calc-result,
	.contact-form {
		padding: 22px;
	}

	.table th,
	.table td {
		padding: 10px 12px;
	}

	.collage {
		height: auto;
		grid-template-rows: auto auto;
	}

	.collage figure {
		aspect-ratio: 4 / 3;
	}

	.collage figure:first-child {
		grid-row: auto;
		grid-column: 1 / 3;
	}

	.floating {
		right: 14px;
		bottom: 14px;
	}

	.floating a {
		width: 52px;
		height: 52px;
	}
}

/* ══════════════════════════════════════════════════════════════════════
 * TASKS.md 29.2 — разширения над МАКЕТИ БАЗОВ СЛОЙ: истинско (не декоративно)
 * 2-degree меню (BGKANALI_Nav_Walker, inc/class-bgkanali-nav-walker.php) +
 * мобилният панел (SPEC.md „Мобилно меню отворено“, #sastoyania 4 в
 * otpushvane-na-kanali.html) + sticky .nav (не в статичния макет — не може
 * да покаже скрол поведение в статичен HTML, разумно разширение).
 * ══════════════════════════════════════════════════════════════════════ */

.nav {
	position: sticky;
	top: 0;
	z-index: 30;
}

/* Десктоп: стрелката до "Услуги"/"Абонаменти" е декоративна (буквално от макета) — подменюто остава скрито над 960px. */
.nav-item {
	display: flex;
	align-items: center;
}

.nav-submenu {
	display: none;
}

/* TASKS.md 29.3(g) — "+" индикаторът е само за мобилния accordion; на десктоп стрелката (svg) си остава декоративна. */
.nav-plus {
	display: none;
}

/*
 * TASKS.md 22.2's прецедент — "затваря се с X": хамбургерът се завърта в
 * кръст, когато менюто е отворено.
 */
.nav-toggle span:nth-child(1) {
	transition: transform .2s ease, opacity .2s ease;
}

.bgk-nav-open .nav-toggle span:nth-child(1) {
	transform: translateY(8px) rotate(45deg);
}

.bgk-nav-open .nav-toggle span:nth-child(2) {
	opacity: 0;
}

.bgk-nav-open .nav-toggle span:nth-child(3) {
	transform: translateY(-8px) rotate(-45deg);
}

@media (max-width: 960px) {
	/*
	 * TASKS.md 22.2's установен модел — отвореното меню е плътен тъмен панел
	 * на цял екран (`position:fixed`), не dropdown под хедъра.
	 */
	.nav-links {
		display: none;
	}

	.bgk-nav-open .nav-links {
		display: flex;
		position: fixed;
		inset: 0;
		z-index: 35;
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		background: var(--bgk-bg-dark);
		overflow-y: auto;
		padding: 100px 24px 40px;
	}

	.bgk-nav-open .nav-item {
		flex-direction: column;
		align-items: stretch;
	}

	.bgk-nav-open .nav-link {
		width: 100%;
		justify-content: space-between;
		padding: 13px 0;
		border-bottom: 1px solid rgba(255, 255, 255, .08);
		font-size: 16px;
	}

	.bgk-nav-open .nav-submenu {
		display: none;
		flex-direction: column;
	}

	.bgk-nav-open .nav-item.open .nav-submenu {
		display: flex;
	}

	.nav-item .nav-link svg {
		display: none;
	}

	.nav-plus {
		display: inline-block;
		font-size: 20px;
		line-height: 1;
		transition: transform .2s ease;
	}

	.nav-item.open .nav-plus {
		transform: rotate(45deg);
	}

	.bgk-nav-open .nav-sublink {
		padding: 10px 0 10px 18px;
		color: var(--bgk-text-dim);
		font-size: 14px;
	}

	.nav-cta-mobile {
		display: none;
	}

	.bgk-nav-open .nav-cta-mobile {
		display: inline-flex;
		margin-top: 14px;
	}
}

@media (min-width: 961px) {
	.nav-cta-mobile {
		display: none;
	}
}

@media (min-width: 961px) {
	.nav-toggle {
		display: none;
	}
}

/* ══════════════════════════════════════════════════════════════════════
 * TASKS.md 29.4 — типът „ВиК услуга" върху МАКЕТИ БАЗОВ СЛОЙ.
 *
 * (а) Мостът `.bgk-content` → макет: внесеното съдържание живее в
 *     `.bgk-content`, чиито по-стари правила (Етап 4-28: h2 с черна черта и
 *     max-width 22ch, отстъпи на p/ul/li) са за НЕмигрираните страници.
 *     Вътре в `section.section` (мигрирана страница) мерилото е base.css —
 *     затова тук се НУЛИРА само това, което по-старият слой добавя в повече
 *     (рамки/отстъпи/тавани на ширина), без да се пипат цветове и шрифтове.
 * (б) Двете разгънати състояния (#sastoyania 1 и 2 в
 *     `makets/final/otpushvane-na-kanali.html`) — статичният макет не може да
 *     носи поведение, класът `.is-open` идва от assets/js/content-toggles.js.
 * ══════════════════════════════════════════════════════════════════════ */

.bgk-content .section h2,
.entry-content .section h2 {
	max-width: none;
	padding-bottom: 0;
	margin-bottom: 0;
	border-bottom: 0;
	font-size: clamp(28px, 4vw, 40px);
	font-weight: 600 !important;
}

.bgk-content .section .section-head h2 {
	max-width: 36ch;
}

.bgk-content .section p,
.bgk-content .section ul,
.bgk-content .section ol,
.bgk-content .section li,
.bgk-content .section figure,
.bgk-content .section blockquote {
	margin: 0;
}

.bgk-content .section .area ul,
.bgk-content .section .pricelist ul,
.bgk-content .section .checks {
	padding-left: 0;
}

.bgk-content .section .prose p {
	margin-bottom: 16px;
}

.bgk-content .section .prose p:last-child {
	margin-bottom: 0;
}

.bgk-content .section .prose ul {
	margin-bottom: 16px;
	padding-left: 22px;
}

.bgk-content .section .section-head p {
	margin-top: 14px;
}

.bgk-content .section .faq-aside p {
	margin-bottom: 18px;
}

.bgk-content .section .faq details {
	margin-bottom: 10px;
}

.bgk-content .section .note {
	margin-top: 18px;
}

/* Иконата в кехлибарената плочка е мастилено тъмна (макета: stroke #161308). */
.icon-box .ico svg {
	color: var(--bgk-accent-ink);
}

/* Подзаглавието на карта услуга (макета го носи като инлайн стил на `<span>`). */
.service-card h3 span {
	color: var(--bgk-ink-soft);
	font-weight: 500;
}

/* Ценоразпис: скритите позиции зад „Още N позиции" (`.pricelist li` е flex, затова [hidden] се налага изрично). */
.pricelist li[hidden] {
	display: none;
}

/* #sastoyania 1 — „Прочети целия текст" разгънато: таванът пада, градиентът изчезва. */
.clamp.is-open {
	max-height: none;
}

.clamp.is-open::after {
	display: none;
}

/* Стрелката на `.readmore` сочи нагоре, докато блокът е разгънат („Скрий ↑" в макета). */
.readmore.is-open svg {
	transform: rotate(180deg);
}

.readmore svg {
	transition: transform .2s ease;
}

/*
 * TASKS.md 29.8 — жива диагноза (qa-scan, 390px): базовият отстъп
 * `figure{margin:0 0 20px}` (25.5) изтича във вътрешността на кадрираната
 * рамка `.bgk-why__media` (`overflow:hidden`) и я прави 20px по-висока
 * „за скрол" — сканерът я отчита като отрязано съдържание. Рамката е
 * снимка на цялата височина на колоната, не текстов блок: нула отстъп.
 */
.bgk-why__media figure {
	margin-bottom: 0;
}

/* ══════════════════════════════════════════════════════════════════════
 * TASKS.md 29.9 — ГЛОБАЛНИТЕ ДЕФЕКТИ от прегледа на Denislav (10.09).
 * Всичко тук е измерено НЕЛОГНАТО на 1280 срещу живия стейджинг; причините
 * са записани над всяко правило. (a) и базовият hover на (b) са горе, в
 * базовия слой (до `a{color:inherit}`) — тук са само компонентните състояния.
 * ══════════════════════════════════════════════════════════════════════ */

/* ---------- 29.9(b) — hover състояния по компонент ---------- */

/*
 * Нав и футър: кехлибарено (--bgk-accent = #F5A623), не почти черното
 * `rgb(34,34,34)` на GeneratePress. И двете места са на тъмен фон, където
 * дори базовият --bgk-accent-dark е твърде тъмен.
 */
body.bgk .nav-links a:hover,
body.bgk .nav-links a:focus,
body.bgk .nav-links a:focus-visible,
body.bgk .foot-grid a:hover,
body.bgk .foot-grid a:focus,
body.bgk .foot-grid a:focus-visible,
body.bgk .foot-bottom a:hover,
body.bgk .foot-bottom a:focus,
body.bgk .foot-bottom a:focus-visible,
body.bgk .topbar a:hover,
body.bgk .topbar a:focus,
body.bgk .topbar a:focus-visible,
body.bgk .crumbs a:hover,
body.bgk .crumbs a:focus,
body.bgk .crumbs a:focus-visible {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

/* Кехлибареният телефон бутон в нава е ПЛОЧКА, не линк — пази си мастиления текст. */
body.bgk .nav-links a.nav-cta-mobile:hover,
body.bgk .nav-links a.nav-cta-mobile:focus,
body.bgk .nav-phone:hover,
body.bgk .nav-phone:focus,
body.bgk .nav-phone:focus-visible {
	color: var(--bgk-accent-ink);
	background: var(--bgk-accent-dark);
}

/* Чипът: бял текст + кехлибарена рамка (текущият `.chip.here` си остава плътно кехлибарен). */
body.bgk .chip:hover,
body.bgk .chip:focus,
body.bgk .chip:focus-visible {
	color: #fff;
	border-color: var(--bgk-accent);
}

body.bgk .chip.here:hover,
body.bgk .chip.here:focus,
body.bgk .chip.here:focus-visible {
	color: var(--bgk-accent-ink);
	background: var(--bgk-accent-dark);
	border-color: var(--bgk-accent-dark);
}

/* `.btn` пази СВОЯ цвят — вариантите се изброяват поотделно, за да бият базовия hover. */
body.bgk .btn-accent:hover,
body.bgk .btn-accent:focus,
body.bgk .btn-accent:focus-visible {
	color: var(--bgk-accent-ink);
	background: var(--bgk-accent-dark);
}

body.bgk .btn-ghost:hover,
body.bgk .btn-ghost:focus,
body.bgk .btn-ghost:focus-visible {
	color: #fff;
	border-color: #fff;
}

body.bgk .btn-dark:hover,
body.bgk .btn-dark:focus,
body.bgk .btn-dark:focus-visible {
	color: #fff;
	background: var(--bgk-bg-panel);
}

body.bgk .btn-outline:hover,
body.bgk .btn-outline:focus,
body.bgk .btn-outline:focus-visible {
	color: var(--bgk-accent-ink);
	background: var(--bgk-accent);
	border-color: var(--bgk-accent);
}

/* `.on-dark`/тъмните секции носят `.btn-outline` в светъл вариант — пази белия текст. */
body.bgk .on-dark .btn-outline:hover,
body.bgk .bg-dark .btn-outline:hover,
body.bgk .cta .btn-outline:hover {
	color: var(--bgk-accent-ink);
}

/* „Прочети →“ на картите: по-тъмният кехлибар от макета. */
body.bgk .card-link:hover,
body.bgk .card-link:focus,
body.bgk .card-link:focus-visible,
body.bgk .readmore:hover,
body.bgk .readmore:focus,
body.bgk .readmore:focus-visible {
	color: var(--bgk-accent-dark);
}

/* Тъмните карти (`.plan.featured`, `.aside-card.dark`, `.faq-aside`) — на тъмно светва кехлибареното. */
body.bgk .plan.featured .card-link:hover,
body.bgk .aside-card.dark a:not(.btn):hover,
body.bgk .faq-aside a:not(.btn):hover,
body.bgk .notice a:not(.btn):hover,
body.bgk .cta a:not(.btn):hover,
body.bgk .page-hero a:not(.btn):hover {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

/* ---------- 29.9(c) — истински дропдаун на десктоп ---------- */

@media (min-width: 961px) {
	.nav-item {
		position: relative;
	}

	/*
	 * Панелът тръгва ПРЯКО от долния ръб на линка (`top:100%`) и си прави
	 * мостчето с `padding-top`, НЕ с `margin-top`: между линка (34px) и долния
	 * ръб на 72px-овия нав има ~19px мъртво поле — `margin` би оставило
	 * мишката да пропадне в него и менюто да се затвори по средата на пътя.
	 */
	.nav-links .nav-submenu {
		display: none;
		position: absolute;
		top: 100%;
		left: -10px;
		z-index: 40;
		min-width: 280px;
		background: #171b22;
		border-radius: var(--bgk-radius-container);
		padding: 22px 10px 10px;
		box-shadow: 0 18px 40px rgba(0, 0, 0, .45);
	}

	.nav-item:hover .nav-submenu,
	.nav-item:focus-within .nav-submenu {
		display: block;
	}

	/* `.nav-links a{display:inline-flex}` (0,1,1) бие голото `.nav-sublink` — оттам двойната специфичност. */
	.nav-links .nav-submenu .nav-sublink {
		display: block;
		width: 100%;
		padding: 9px 12px;
		border-radius: 10px;
		font-size: 14px;
		font-weight: 500;
		line-height: 1.35;
		color: var(--bgk-text-light);
		white-space: normal;
	}

	.nav-links .nav-submenu .nav-sublink:hover,
	.nav-links .nav-submenu .nav-sublink:focus,
	.nav-links .nav-submenu .nav-sublink:focus-visible {
		color: var(--bgk-accent-on-dark); /* PLAN v5 */
		background: rgba(255, 255, 255, .06);
	}

	/* Стрелката сочи нагоре, докато панелът е отворен. */
	.nav-item .nav-link svg {
		transition: transform .2s ease;
	}

	.nav-item:hover .nav-link svg,
	.nav-item:focus-within .nav-link svg {
		transform: rotate(180deg);
	}
}

/* ---------- 29.9(d) — менюто на един ред ---------- */

/*
 * Жива диагноза: `.nav-links` иска 648.7px за 6-те линка, а между логото и
 * дясната група остават по-малко — flex ги свива и „За нас" се пренася на
 * два реда (25px широк, 55.5px висок). `white-space:nowrap` спира пренасянето,
 * а gap 26 → 22px връща ширината под свободното място.
 */
.nav-links a {
	white-space: nowrap;
}

@media (min-width: 961px) {
	.nav-links {
		gap: 22px;
	}

	/*
	 * Жива диагноза: бутонът „Свържете се с нас" СЕ ВИЖДАШЕ на 1280 —
	 * `.nav-links a{display:inline-flex}` (0,1,1) бие голото
	 * `.nav-cta-mobile{display:none}` (0,1,0). Той е САМО за мобилното меню
	 * (на десктоп вдясно стои кехлибареният телефон), затова правилото вече
	 * носи същия контекст.
	 */
	.nav-links a.nav-cta-mobile {
		display: none;
	}
}

@media (max-width: 960px) {
	.nav-links a.nav-cta-mobile {
		display: none;
	}

	.bgk-nav-open .nav-links a.nav-cta-mobile {
		display: inline-flex;
		margin-top: 14px;
	}

	/* В мобилния панел линковете са на цяла ширина — пренасянето там е нормално. */
	.bgk-nav-open .nav-links a {
		white-space: normal;
	}
}

/* ---------- 29.9(e) — лентата „Свързани услуги" на ЕДИН ред ---------- */

/*
 * Жива диагноза: 9-те чипа се пренасяха на втори ред и лентата ставаше 111.5px
 * (същото прави и статичният макет — 115.5px, измерено). ГОТОВО-то на задачата
 * е ЕДИН ред и ≤80px: `flex-wrap:nowrap` + хоризонтален скрол — точно това, което
 * макетът прави на ≤600 (base.css:369), само че на всяка ширина.
 */
.related-strip .container {
	flex-wrap: nowrap;
	overflow-x: auto;
	overflow-y: hidden;
	scrollbar-width: none;
	-ms-overflow-style: none;
	padding-top: 14px;
	padding-bottom: 14px;
}

.related-strip .container::-webkit-scrollbar {
	display: none;
}

.related-strip .lbl {
	flex-shrink: 0;
}

.chip {
	flex-shrink: 0;
	padding: 9px 15px;
}

/* Плаващите бутони са кехлибарени ПЛОЧКИ — мастиленият текст/иконата остават и на hover. */
body.bgk .floating a:hover,
body.bgk .floating a:focus,
body.bgk .floating a:focus-visible {
	color: var(--bgk-accent-ink);
}

/* ---------- 29.9(g) — контейнерът на отзивите ---------- */

/*
 * Макетът (`za-nas.html`) рисува три статични `.review` карти в решетка;
 * на живо съдържанието на `.reviews` е ЕДИН уиджет на GReviews със собствен
 * Shadow DOM (плъгинът рисува картите сам). `is-widget` връща решетката в
 * една колона — иначе уиджетът застава в 1/3 от ширината.
 */
.reviews.is-widget {
	display: block;
}

/* Редът с баджа над отзивите — макетът го носи с inline `margin-bottom:22px`. */
.gbadge-row {
	margin-bottom: 22px;
}

.gbadge-meta {
	font-size: 12px;
	color: var(--bgk-ink-soft);
}

.on-dark .gbadge-meta {
	color: var(--bgk-text-dim);
}

/* ══════════════════════════════════════════════════════════════════════
 * TASKS.md 30.1 — тип „Абонамент / планове" (makets/final/abonament.html).
 * Компонентите (`.plans`, `.plan`, `.notice`, `.badge`, `.note`, `.icon-box`,
 * `.checks`, `.split`) вече са в МАКЕТИ БАЗОВ СЛОЙ по-горе — тук са само
 * вариантите, които макетът носи с inline `style` (тъмната икон-кутия,
 * цветовете в тъмния `.notice`).
 * ══════════════════════════════════════════════════════════════════════ */

/* Шестата кутия „За кого е подходяща" — тъмна, буквално abonament.html. */
.icon-box.dark {
	background: var(--bgk-bg-panel);
	color: var(--bgk-text-light);
	border-color: var(--bgk-bg-panel);
}

.icon-box.dark p {
	color: var(--bgk-text-dim);
}

/* `.notice` е тъмна карта — eyebrow-ът и чеклистът в нея са в светлите цветове. */
.notice .eyebrow {
	color: var(--bgk-accent-on-dark); /* PLAN v5 */
}

.notice .checks li,
.notice .checks li span {
	color: var(--bgk-text-light);
}

.notice .checks li b {
	color: #fff;
}

/*
 * TASKS.md 30.1(3) — „сумите не се пренасят на два реда": `.price` е flex с
 * `flex-wrap:wrap` (макетът) — при 4 колони на 1280 сумата и „/ месец" се
 * побират, но с по-дълга мерна единица редът може да се скъса. Самата СУМА
 * никога не се къса.
 */
.plan .price {
	white-space: nowrap;
}

.plan .price small {
	white-space: nowrap;
}

/* ══════════════════════════════════════════════════════════════════════
 * TASKS.md 30.3 — тип „Landing + калкулатор" (makets/final/kurti-chisti-lp.html).
 * Компонентите (`.icons-grid`, `.grid-4`, `.service-card`, `.tag`, `.notice`,
 * `.split.rev`, `.table`, `.plan`, `.partners`) вече са в МАКЕТИ БАЗОВ СЛОЙ —
 * тук е само това, което макетът носи вътре в самата страница.
 * ══════════════════════════════════════════════════════════════════════ */

/* Номерът „01"-„03" на картите услуги — същият стил като `.feature .num` в макета. */
.service-card .num {
	font-family: var(--bgk-font-display);
	font-size: 13px;
	letter-spacing: .22em;
	color: var(--bgk-accent-dark);
	font-weight: 600;
	display: block;
}

/* Четвъртата карта („Най-предпочитано") носи кехлибарен кант вместо номер. */
.service-card.outline {
	border: 2px solid var(--bgk-accent);
}

/* Редът „Още N позиции" под дълга таблица/решетка (`.pricelist .more` вече съществува). */
.more {
	padding-top: 14px;
}

/* Скритите редове на сгънат ценоразпис — `hidden` е атрибут, не клас. */
.table tbody tr[hidden] {
	display: none;
}

/* PLAN v5 - началната, 33.9 */

/*
 * TASKS.md 33.9(г) / D3 — стиловете на новата структура на бонус блока
 * (`.notice__*`, произведена от BGK_Card_Builder::rebuild_bonus_notice()).
 * Живеят тук, а не в 33.7, защото 24.4's предпазител
 * (`strip_unstyled_foreign_classes()`) маха всеки клас БЕЗ CSS правило —
 * маркъпът и стилът му са едно неделимо нещо.
 */
.notice .eyebrow {
	color: var(--bgk-accent-on-dark);
}

/* Лявата колона на `.notice` (grid `1fr auto`) — `min-width: 0`, за да може да се свива под съдържанието си. */
.notice__body {
	min-width: 0;
}

.notice__title {
	font-family: var(--bgk-font-display);
	font-size: 28px;
	font-weight: 700;
	line-height: 1.15;
	color: #fff;
	margin: 8px 0 12px;
	text-transform: uppercase;
}

.notice__chip {
	display: inline-block;
	font-family: var(--bgk-font-body);
	font-size: 13px;
	font-weight: 700;
	line-height: 1.2;
	padding: 2px 10px;
	border-radius: 999px;
	background: rgba(var(--bgk-accent-rgb), .18);
	color: var(--bgk-accent-on-dark);
	vertical-align: baseline;
	white-space: nowrap;
}

.notice__list {
	list-style: none;
	margin: 16px 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px 24px;
}

.notice__list li {
	position: relative;
	padding-left: 30px;
	color: var(--bgk-text-light);
}

.notice__list li::before {
	content: "✓";
	position: absolute;
	left: 0;
	top: 1px;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: var(--bgk-accent);
	color: var(--bgk-accent-ink);
	font-size: 12px;
	font-weight: 700;
	display: grid;
	place-items: center;
}

.notice__list b {
	display: block;
	font-family: var(--bgk-font-display);
	font-size: 17px;
	letter-spacing: .3px;
}

.notice__list span {
	display: block;
	font-size: 14px;
	color: var(--bgk-text-dim);
}

.notice__tagline {
	margin: 18px 0 0;
	font-family: var(--bgk-font-display);
	font-size: 18px;
	letter-spacing: 1px;
	text-transform: uppercase;
	color: var(--bgk-accent-on-dark);
}

.notice__figure {
	text-align: center;
	min-width: 220px;
	padding: 18px 22px;
	border-left: 1px solid var(--bgk-line-dark);
}

.notice__big {
	display: block;
	font-family: var(--bgk-font-display);
	font-size: 72px;
	font-weight: 700;
	line-height: 1;
	color: var(--bgk-accent-on-dark);
}

.notice__lbl {
	display: block;
	font-family: var(--bgk-font-display);
	font-size: 18px;
	letter-spacing: 3px;
	margin-top: 4px;
}

.notice__small {
	display: block;
	font-size: 13px;
	color: var(--bgk-text-dim);
	max-width: 220px;
	margin: 10px auto 0;
}

@media (max-width: 620px) {
	.notice {
		grid-template-columns: 1fr;
		padding: 24px 20px;
	}

	.notice__figure {
		border-left: 0;
		border-top: 1px solid var(--bgk-line-dark);
		min-width: 0;
	}

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

/*
 * TASKS.md 33.7(в) — плочата с инициалите на карта на служител. Класът е този
 * на правилото „липсваща снимка = плоча #171B22" по-горе, но там фонът е
 * `.bgk-card__media--placeholder` (0,1,0) и губи от `.service-card figure`
 * (0,1,1) с неговото `background: #e9e7e2` — без този ред плочата излиза
 * светлосива с нечетими инициали.
 */
.service-card figure.bgk-card__media--placeholder {
	background: var(--bgk-bg-panel);
	aspect-ratio: 16 / 10;
}

/*
 * TASKS.md 33.9(а) / D2 — героят на началната беше ръб до ръб: H1 и бутоните
 * на x=0, таблото до x=1280, а следващите секции започват на x=50 (`.container`
 * — max-width 1180 + 24px padding). Причината е същата като при D1: правилото
 * за `.bgk-hero__wrap` е писано за `.bgk-section.bgk-hero--home`, а секцията
 * носи `section.section`. Декларациите са копирани ДОСЛОВНО от `.container`,
 * grid/gap на wrap-а остават от правилото по-горе.
 */
.bgk-content section.section.bgk-hero--home > .bgk-hero__wrap,
.bgk-content .bgk-section.bgk-hero--home > .bgk-hero__wrap {
	max-width: 1180px;
	width: 100%;
	margin: 0 auto;
	padding: 0 24px;
	box-sizing: border-box;
}

/* Същият gutter като `.container` на телефон (`@media (max-width: 600px)` по-горе). */
@media (max-width: 600px) {
	.bgk-content section.section.bgk-hero--home > .bgk-hero__wrap,
	.bgk-content .bgk-section.bgk-hero--home > .bgk-hero__wrap {
		padding: 0 18px;
	}
}

/*
 * TASKS.md 33.9(б) / D10 — живият индикатор в топ лентата беше празен `<span>`
 * без нито едно CSS правило. Точката остава ЗЛАТНА във всяка палитра
 * (`--bgk-gold`, CLAUDE.md), а пулсът около нея следва акцента.
 */
.topbar .bgk-pulse {
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--bgk-gold);
	margin-right: 8px;
	vertical-align: middle;
	animation: bgk-pulse 1.6s ease-in-out infinite;
}

@keyframes bgk-pulse {
	0%,
	100% {
		box-shadow: 0 0 0 0 rgba(var(--bgk-accent-rgb), .55);
	}

	50% {
		box-shadow: 0 0 0 6px rgba(var(--bgk-accent-rgb), 0);
	}
}

@media (prefers-reduced-motion: reduce) {
	.topbar .bgk-pulse {
		animation: none;
	}
}

/* TASKS.md 33.9(в) / D6 — lead абзацът на тъмна секция беше сив на черно (2.6:1). */
:is(.bg-dark, .on-dark, .bgk-section--dark) .bgk-sec-head__lead {
	color: var(--bgk-text-dim);
}

/* TASKS.md 33.9(д) / D7 — бутонът „Свържете се с нас" в навигацията наследяваше --bgk-text-light (1.9:1 върху акцента). */
.nav .btn-accent,
.nav-cta-mobile.btn-accent {
	color: var(--bgk-accent-ink);
}

/*
 * TASKS.md 33.9(е) / D8 — осиротели редове. Двете мрежи на началната ползват
 * ЕДИН И СЪЩ клас `.grid-3`, затова правилата се закачат по БРОЯ карти
 * (`:has(> .service-card:nth-child(N):last-child)`) — така не пипат нито една
 * друга страница. Прагът е 961px, а не 981px: точно там мрежите вече падат на
 * 2 колони (`@media (max-width: 960px)` по-горе), тоест 981 би оставило
 * мъртва ивица 961-980px пак с три колони.
 *
 * „Нашите допълнителни услуги" (5 карти): 6 колони, всяка карта span 2 —
 * ширината на картата е ИДЕНТИЧНА с тази при 3 колони ((W - 2g) / 3), а
 * последният ред от 2 карти застава в колони 2-5, тоест центриран.
 */
@media (min-width: 961px) {
	.grid-3:has(> .service-card:nth-child(5):last-child) {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}

	.grid-3:has(> .service-card:nth-child(5):last-child) > .service-card {
		grid-column: span 2;
	}

	.grid-3:has(> .service-card:nth-child(5):last-child) > .service-card:nth-child(3n+1):nth-last-child(2) {
		grid-column: 2 / span 2;
	}

	.grid-3:has(> .service-card:nth-child(5):last-child) > .service-card:nth-child(3n+2):nth-last-child(1) {
		grid-column: 4 / span 2;
	}
}

/* „Портфолио" (4 карти): 4 на ред от 1100px нагоре, 2 на ред между 961 и 1099 — никога 3 + сирак. */
@media (min-width: 1100px) {
	.grid-3:has(> .service-card:nth-child(4):last-child) {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

@media (min-width: 961px) and (max-width: 1099px) {
	.grid-3:has(> .service-card:nth-child(4):last-child) {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/*
 * TASKS.md 33.9(ж) / D9 — плаващите бутони (fixed, долу вдясно) покриваха
 * „Изработено от Denvelkoff" на 1280 и текста на 390. Долният ред на футъра
 * получава резерв отдясно; на телефон бутоните се смаляват и резервът става
 * отдолу, защото редът там се пренася.
 */
@media (min-width: 621px) {
	.foot-bottom {
		padding-right: 100px;
	}
}

@media (max-width: 620px) {
	.floating {
		right: 16px;
		bottom: 16px;
		gap: 10px;
	}

	.floating a {
		width: 48px;
		height: 48px;
	}

	.foot-bottom {
		padding-bottom: 76px;
	}
}

/* ─────────────────────────────────────────────────────────────────────────
 * PLAN v5 — кралско синьо, вариант B
 *
 * TASKS.md 34.2 — контекстните правила, които в етап 33 живееха в
 * `assets/css/paleta.css` зад префикса `html[data-paleta="b"]`. Файлът е
 * изтрит в 34.1, палитрата е подразбиране, затова правилата идват тук БЕЗ
 * префикс. Стойностите са литерали, защото описват изключение ОТ токените
 * (бяло върху синьо), а не самите токени.
 * ───────────────────────────────────────────────────────────────────────── */

/* Бутон върху синя повърхност = бял със синьо мастило (син бутон върху синьо е невидим, 1.95:1). */
:is(.bg-dark, .on-dark, .bgk-section--dark, section.section.bgk-hero--home, .page-hero, .bgk-band, .notice, .plan.featured, .calc) :is(.btn-accent, .bgk-imported-button) {
	background: #FFFFFF;
	color: #1554D6;
}

:is(.bg-dark, .on-dark, .bgk-section--dark, section.section.bgk-hero--home, .page-hero, .bgk-band, .notice, .plan.featured, .calc) :is(.btn-accent, .bgk-imported-button):is(:hover, :focus-visible) {
	background: #E3EBFF;
	color: #1147BE;
}

:is(.bg-dark, .on-dark, section.section.bgk-hero--home) .bgk-why__check {
	background: #FFFFFF;
	color: #1554D6;
}

/* Рамките върху синьо стават бели полупрозрачни (син кант върху синьо не се вижда). */
:is(.bgk-hero__board, .plan.featured, .notice, .calc-result) {
	border-color: rgba(255, 255, 255, .32);
}

/*
 * Двата случая, в които акцентният ТЕКСТ върху тъмно идва от
 * `--bgk-accent-dark` (синьо-700), а не от правило с `--bgk-accent`, затова
 * не влязоха в 29-те реда на 33.6(а):
 *
 *   1. `.cta .eyebrow` („Свържете се с нас" в CTA лентата) — базовото правило
 *      `.eyebrow` (за светъл фон) важи, защото лентата няма клас `.on-dark`.
 *      Синьо-700 #1147BE върху #0F1115 = 2.4:1 и върху #0B2C7A = 1.61:1.
 *   2. `.prose a.btn-dark` („Обади се днес", „Безплатна консултация") —
 *      `.prose a` (0,2,0) бие `.btn-dark { color: #fff }` (0,1,0), тоест
 *      етикетът на ТЪМЕН бутон е акцентен, не бял. Същите числа.
 */
:is(.cta, .bg-dark, .on-dark, .bgk-section--dark, .bgk-band, .page-hero, section.section.bgk-hero--home) .eyebrow {
	color: var(--bgk-accent-on-dark);
}

.prose a.btn-dark {
	color: #FFFFFF;
}

/* ─────────────────────────────────────────────────────────────────────────
 * PLAN.md § 36/Н04 — „Нашите услуги" на 587 (кърти-чисти-извозва)
 *
 * Жива диагноза 18.09 (Chromium, 1280): `.services-grid` пада на `display:block`
 * и шестте услуги излизат една под друга, всяка 1092×95px, без карта и без
 * икона. Класът идва от старото custom_html съдържание; темата има правило за
 * него САМО скопирано в `.bgkanali-services` (TASKS.md 4.3) — а 587 няма тази
 * обвивка, затова нищо не го хваща.
 *
 * Тук е ЧИСТО CSS вариантът на находката (изричното решение в TASKS.md:
 * рендер-филтърът да мапва `.services-grid > div` към `.bgk-card` е за Fable).
 * Картовият вид важи само за деца БЕЗ собствен клас — точно голите `<div>` на
 * 587; `.service-card` децата на четирите money страници продължават да се
 * стилизират от `.bgkanali-services .service-card` (0,2,0), което бие тук.
 *
 * Числата не са нови: `.bgk-card`'s бял фон, 26px padding, радиус-контейнер и
 * сянка; „Научете повече" взима стила на `.bgk-card .bgk-link` (Oswald 14px
 * главни със стрелка). На живо това е `<span>`, не `<a>` — линк не се ражда от
 * CSS, а превръщането му в истински адрес минава през рендер-филтъра и е
 * решение за Fable (виж REPORT.md).
 * ───────────────────────────────────────────────────────────────────────── */

.services-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 24px;
	align-items: stretch;
}

.services-grid > div:not([class]) {
	display: flex;
	flex-direction: column;
	gap: 10px;
	text-align: left;
	background: var(--bgk-white);
	border-radius: var(--bgk-radius-container);
	box-shadow: var(--bgk-shadow);
	padding: 26px;
	box-sizing: border-box;
	transition: transform .2s ease, box-shadow .2s ease;
}

.services-grid > div:not([class]):hover {
	transform: translateY(-4px);
	box-shadow: 0 18px 40px rgba(15, 17, 21, .16);
}

.services-grid > div:not([class]) h3 {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 19px;
	text-transform: uppercase;
	margin: 0;
}

.services-grid > div:not([class]) p {
	color: var(--bgk-ink-soft);
	font-family: var(--bgk-font-body);
	font-size: 15px;
	margin: 0;
}

.services-grid > div:not([class]) > span,
.services-grid > div:not([class]) > a.calc-link {
	margin-top: auto;
	align-self: flex-start;
	color: var(--bgk-accent-dark);
	font-family: var(--bgk-font-display);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: .05em;
	text-transform: uppercase;
}

.services-grid > div:not([class]) > span::after,
.services-grid > div:not([class]) > a.calc-link::after {
	content: " →";
}

.services-grid > div:not([class]) > a.calc-link {
	text-decoration: none;
}

.services-grid > div:not([class]) > a.calc-link:hover {
	text-decoration: underline;
}

/* ЕТАП 46.9 — „Изчисли" в `.card-foot` на ВиК картите (46.7) в тона на „Заяви". */
.card-foot > a.calc-link {
	font-family: var(--bgk-font-display);
	font-weight: 600;
	font-size: 13.5px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--bgk-accent-dark);
	text-decoration: none;
}

.card-foot > a.calc-link:hover,
.card-foot > a.calc-link:focus-visible {
	text-decoration: underline;
}

/* ══════════════════════════════════════════════════════════════════════
 * ЕТАП 40 (TASKS.md 40.2) — РИТЪМЪТ НА LP 3579
 *
 * (а) Предпазна мрежа: ако R2 в `inc/rhythm.php` пропусне вложена секция
 *     (`section.section > div.container > section.section`), тя да не рисува
 *     втора лента с втори 88px padding в лентата.
 * (б) `.section--tight` — секциите, на които R5 реже мега-секцията.
 * (в) Ритъм вариант Б (56px) зад body клас `bgk-ritam-b` от `?ritam=b`
 *     (inc/variants.php, TASKS.md 40.3). Подразбирането (88px) НЕ се пипа —
 *     изборът е на Denislav след етап 40.
 * ══════════════════════════════════════════════════════════════════════ */

.bgk-content .section .section {
	padding-top: 0;
	padding-bottom: 0;
	background: transparent;
}

.bgk-content .container .container {
	max-width: none;
	width: auto;
	padding-left: 0;
	padding-right: 0;
}

.bgk-content .section--tight {
	padding: 56px 0;
}

body.bgk-ritam-b .bgk-content .section {
	padding: 56px 0;
}

body.bgk-ritam-b .bgk-content .section--tight {
	padding: 36px 0;
}

body.bgk-ritam-b .bgk-content .section-head {
	margin-bottom: 28px;
}

/* ══════════════════════════════════════════════════════════════════════
 * ЕТАП 41 (PLAN.md § 41.1) — ПЕТТЕ КОРЕНА
 *
 * D2/D3  картите с `height:100%` в БЛОКОВА колона (не пряко дете на мрежа)
 *        се разтягаха до височината на колоната, а колоната — до височината
 *        на картата: кръгова височина от 966px (587) и 398px (912), след
 *        която `ul`-ите изпадаха под секцията и покриваха ЧЗВ-то.
 * D6     съседни блокове (`.grid-N` → `.split`) в една секция бяха на 0px.
 * D5     GeneratePress-овото `button:hover{background-color:…}` (0,1,1)
 *        печелеше над `.readmore` (0,1,0) — „Още 8 позиции" ставаше черно
 *        (тъмносиво с бял текст, измерено на живо 23.09).
 * B5/B3  CTA заглавието в статия пада от h2 на `p.notice-title` (41.4c), а
 *        героят на статията носи `<time>` и линк към автора (41.4a).
 * ══════════════════════════════════════════════════════════════════════ */

/* D2/D3: height:100% има смисъл само за пряко дете на мрежа. */
.bgk-content :is(.grid-2, .grid-3, .grid-4) > div:not([class]) > .bgk-icon-box,
.bgk-content :is(.grid-2, .grid-3, .grid-4) > div:not([class]) > .bgk-image-box {
	height: auto;
}

/* D3: колона „заглавна карта + списък" се рисува като ЕДНА карта. */
.bgk-content :is(.grid-2, .grid-3, .grid-4) > div:not([class]):has(> .bgk-icon-box + ul) {
	background: var(--bgk-white);
	border-radius: var(--bgk-radius-container);
	box-shadow: var(--bgk-shadow);
	padding: 26px;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.bgk-content :is(.grid-2, .grid-3, .grid-4) > div:not([class]):has(> .bgk-icon-box + ul) > .bgk-icon-box {
	background: none;
	box-shadow: none;
	padding: 0;
	margin: 0;
	border-radius: 0;
}

.bgk-content :is(.grid-2, .grid-3, .grid-4) > div:not([class]):has(> .bgk-icon-box + ul) > ul {
	margin: 0;
	padding-left: 18px;
}

/* D6: съседни блокове в една секция. */
.bgk-content :is(.grid-2, .grid-3, .grid-4) + .split,
.bgk-content .split + :is(.grid-2, .grid-3, .grid-4),
.bgk-content :is(.grid-2, .grid-3, .grid-4) + :is(.grid-2, .grid-3, .grid-4),
.bgk-content .split + .split {
	margin-top: 56px;
}

.bgk-content h3 + :is(.grid-2, .grid-3, .grid-4) {
	margin-top: 20px;
}

/* D5: GeneratePress `button:hover` да не боядисва `.readmore` в черно. */
body.bgk button.readmore:hover,
body.bgk button.readmore:focus,
body.bgk button.readmore:focus-visible,
body.bgk button.readmore:active {
	background: none;
	background-color: transparent;
	color: var(--bgk-accent-dark);
}

/*
 * B5: CTA заглавието в статия вече е `p.notice-title`, не `h2`.
 * PLAN.md § 41.1: „Ако `.notice h2` има собствени правила, `.notice-title`
 * получава СЪЩИТЕ стойности" — затова числата тук са 1:1 от `.notice h2`
 * (28px / margin-bottom 10px / #fff) плюс голото `h1,h2,h3,h4` правило
 * (Oswald 500, uppercase, letter-spacing .005em, line-height 1.1), което `p`
 * не наследява.
 */
.bgk-content .notice .notice-title {
	font-family: var(--bgk-font-display);
	font-weight: 500;
	font-size: 28px;
	line-height: 1.1;
	letter-spacing: .005em;
	text-transform: uppercase;
	overflow-wrap: anywhere;
	hyphens: auto;
	color: #fff;
	margin: 0 0 10px;
}

/* B3: датите в героя на статията. */
.page-hero .post-facts time {
	font-variant-numeric: tabular-nums;
}

.page-hero .post-facts a {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 2px;
}

@media (max-width: 600px) {
	/* 1:1 с `.notice h2` в същия breakpoint. */
	.bgk-content .notice .notice-title {
		font-size: 24px;
	}
}

/* 41.12: бутон в <p> точно пред мрежа/split */
.bgk-content .container > p:has(> .bgk-imported-button) + :is(.grid-2,.grid-3,.grid-4,.split,.plans,.services-grid) { margin-top: 28px; }

/*
 * 41.13: CTA блокът в СТАТИЯ. `.post p{color:var(--bgk-ink-soft)}` е със същата
 * специфичност като `.notice p` и стои по-късно във файла, тоест печели —
 * сивият текст ляга върху синьото на кутията (около 1.7:1). Декларацията е
 * копие 1:1 на тази от `.notice p` по-горе, нов литерал не се въвежда.
 */
.post .notice p {
	color: #cfd6de;
}

/* ===== ЕТАП 42 ===== */

/*
 * 42.1: ценоразписът „ВиК монтажи и ремонти“ на 4288 е продължение на
 * „Цени и оферти“ — същият фон, без горен отстъп. Card builder-ът редува
 * фона по брой секции и дава на вмъкнатата `bg-light`, а на следващите —
 * обърнато; затова вмъкнатата взима фона на предишната, а редуването след нея
 * се обръща обратно (като преди вмъкването).
 */
.bgk-content #ceni-vik-montazhi {
	padding-top: 0;
}

.bgk-content .section:not(.bg-light) + #ceni-vik-montazhi.bg-light {
	background: var(--bgk-white);
}

.bgk-content .section.bg-light + #ceni-vik-montazhi:not(.bg-light) {
	background: var(--bgk-bg-light);
}

.bgk-content .section:not(.bg-light) + #ceni-vik-montazhi.bg-light ~ .section.bg-light,
.bgk-content .section.bg-light + #ceni-vik-montazhi:not(.bg-light) ~ .section.bg-light {
	background: var(--bgk-white);
}

.bgk-content .section:not(.bg-light) + #ceni-vik-montazhi.bg-light ~ .section:not(.bg-light),
.bgk-content .section.bg-light + #ceni-vik-montazhi:not(.bg-light) ~ .section:not(.bg-light) {
	background: var(--bgk-bg-light);
}

.bgk-content #ceni-vik-montazhi h3 {
	margin-top: 40px;
}

.bgk-content #ceni-vik-montazhi .section-head + h3 {
	margin-top: 0;
}

/* Бележката под таблиците — като `.bgk-content p`, в 14px (без нов цвят). */
.bgk-content #ceni-vik-montazhi .bgk-price-note {
	font-size: 14px;
	line-height: 1.6;
	margin: 20px 0 0;
}

/* ===== ЕТАП 44 ===== */

/*
 * 44.1: ценоразписът в „Цени и оферти“ е с 5 групи — нечетната последна
 * („Посещения и аварийни услуги“) взима цялата ширина на двете колони,
 * без празна клетка до нея. Под 961px мрежата е една колона (правилото
 * при `@media (max-width: 960px)`) — там няма какво да се разпъва.
 */
@media (min-width: 961px) {
	.bgk-content #ceni .pricelist-wrap > .pricelist:last-child:nth-child(odd) {
		grid-column: span 2;
	}
}

/*
 * ЕТАП 48 (03.10.2026) - лендингите на телефон.
 * Отзивите (находка 11): до 620px `.reviews.is-widget` е сгънат до 720px с избледняване,
 * бутонът `button.readmore.reviews-more` (content-toggles.js) го разгъва. Видът на бутона
 * идва от `.readmore` (той вече нулира фона/рамките на `button`).
 * Лентата „Свързани услуги" (находка 14): избледняване вдясно = знак, че се плъзга.
 * Банерът-линк (находка 7): `a.bgk-banner-link` около банера с телефона.
 * Маските са с `black`, не с hex: маската чете само алфата, а тестът на палитрата
 * (run.php) не допуска hex извън style.css.
 */
.reviews-more {
	display: none;
}

@media (max-width: 620px) {
	.reviews.is-widget:not(.is-open) {
		max-height: 720px;
		overflow: hidden;
		-webkit-mask-image: linear-gradient(to bottom, black 78%, transparent);
		mask-image: linear-gradient(to bottom, black 78%, transparent);
	}

	.reviews-more {
		display: inline-flex;
		margin-top: 16px;
	}
}

@media (max-width: 960px) {
	.related-strip .container {
		-webkit-mask-image: linear-gradient(to right, black 82%, transparent);
		mask-image: linear-gradient(to right, black 82%, transparent);
	}
}

.bgk-banner-link {
	display: block;
}

.bgk-banner-link img {
	display: block;
}
