/* Акцент отдельной страницы — переопределение ТОКЕНА, а не CSS блоков.
   Подключается только там, где нужно (см. functions.php), и заскоуплено под <main>,
   чтобы шапка и подвал остались в фирменном зелёном — как в макете.

   B2B (Figma 2099:15044): дизайнер заменил зелёный бренд-акцент оранжевым по всей
   странице — акцентные слова заголовков («Frisches Obst», «drei Schritten», «unsere
   Kunden», «Fragen»…), кнопки, иконки преимуществ, стрелки карусели отзывов и
   счётчик «01/03» с линией. Тёмно-зелёный текст (contrast #153700) не меняется.

   Почему токеном: те же восемь блоков стоят на Home, About, Lieferanten, Catering,
   Liefergebiete, Genussboxen, Rezepte и Blog. Правка CSS блока переодела бы их все;
   переопределение переменной на одной странице не трогает соседей ПО ПОСТРОЕНИЮ —
   ни один файл блока не изменён. */

body.gp-page-b2b main {
	--wp--preset--color--primary: var(--wp--preset--color--orange);
	/* Ховер-акцент страницы (П27). Значения по умолчанию (зелёные) объявлены в
	   style.css у :root; здесь они уходят в оранжевую пару той же страницы.
	   Так ховер перестаёт быть зашитым в блоке: любой блок, который берёт
	   `--gp-hover-accent`, на этой странице сам становится оранжевым, а на
	   остальных остаётся зелёным — правки блока для этого не нужно.
	   `--gp-hover-soft` — мягкая заливка (у призрачной кнопки воронки это была
	   мятная `surface-mint`); её оранжевый двойник — токен `surface-peach` #fdf0e3,
	   собранный тем же правилом, что и мятный: 12 % акцента на белом
	   (#318100 12 % → #e9f5e5, #f18314 12 % → #fdf0e3).
	   ⛔ Именно токеном, а не `color-mix`: computed-значение color-mix приходит строкой
	   `color(srgb 0.99 0.94 0.89)`, и наши проверки цвета/контраста разбирают только
	   `rgb(...)` — такой узел они молча пропускают (поймано замером в этой же порции). */
	--gp-hover-accent: var(--wp--preset--color--orange-dark);
	--gp-hover-soft: var(--wp--preset--color--surface-peach);
	/* Кольцо фокуса (П39). ⛔ Обязано быть ТЕМНЕЕ акцента, а не равно ему: рамка поля в
	   покое здесь уже оранжевая (--gp-funnel-line), и кольцо цвета `primary` слилось бы
	   с ней — ровно тот дефект, который нашёл контролёр в К44. Тёмно-оранжевый #b35f0b
	   даёт 4.61:1 к белому полю против 2.47 у #f18314. Зелёный не возвращаем. */
	--gp-focus-ring: var(--wp--preset--color--orange-dark);
	/* Счётчик «01/03» и линия в секции «In drei Schritten ins Büro» залиты
	   бренд-градиентом, а не primary. В макете B2B они сплошного оранжевого —
	   поэтому на этой странице градиент вырождается в тот же токен. */
	--wp--custom--gradient--brand: linear-gradient(
		180deg,
		var(--wp--preset--color--orange) 0%,
		var(--wp--preset--color--orange) 100%
	);
}

/* Плавающая кнопка (floating-cta) живёт в part подвала, то есть ВНЕ <main>, — скоуп
   выше до неё не достаёт. Алекс просил её на B2B оранжевой (Loom 03.09, 0:11 и 0:31).
   Красим тем же токеном, а не новым цветом: текст и кружок иконки в `fab.css` уже
   берут `--wp--preset--color--primary`, поэтому достаточно переопределить переменную
   на самой кнопке. Шапка и подвал при этом остаются зелёными, как в макете. */
body.gp-page-b2b .gp-fab {
	--wp--preset--color--primary: var(--wp--preset--color--orange);
}

/* Ховер оранжевых кнопок — ТЁМНО-оранжевый, а не зелёный (Илья 03.09 13:14, кадр
   photo-1538; та же просьба у Алекса, Loom L1.14). Базовое правило кнопки красит ховер
   в `contrast` (#153700), и на оранжевой странице это выглядело сменой цвета, а не
   нажатием.
   Токен `orange-dark` = #b35f0b — это основной #f18314, затемнённый по светлоте HSL
   на 14 п.п. (hsl 30.1° 88.8% 51.2% → 37.2%); тон и насыщенность не тронуты. Контраст
   белого текста на нём 4.6 против 2.63 у покоя, то есть ховер даже проходит AA.
   ⚠️ Этот перечень нужен для кнопок, у которых СВОЕГО ховера нет вовсе (`gp-tp__btn`):
   правилу ниже нечего было бы перекрашивать. Охват оранжевых кнопок он больше НЕ
   определяет — это делает правило-признак следом.
   ⚠️ Плавающая кнопка (.gp-fab) сюда НЕ входит: она белая с оранжевым текстом, а не
   оранжевая заливкой — правило красило бы ей фон в тёмно-оранжевый и убивало надпись
   (поймано замером в П15: покой #ffffff → ховер #b35f0b). */
body.gp-page-b2b main :is(.gp-btn--primary, .gp-cta__btn--primary, .gp-abhero__btn--primary, .gp-tp__btn):hover {
	background: var(--wp--preset--color--orange-dark);
	border-color: var(--wp--preset--color--orange-dark);
}

/* ⛔ ПРИЗНАК вместо перечня классов (П18, доработка по вердикту К22).
   Перечень выше был точкой отказа: стрелки карусели отзывов красятся оранжевым не
   своим классом, а сквозным `primary := orange` — в список их никто не вписал, и на
   наведении они уходили в зелёный #153700.
   Признак такой: базовые правила темы красят ховер интерактивного элемента токеном
   `contrast` (`style.css:1267` у кнопок, `reviews/style.scss:200` у стрелок). Значит
   на этой странице подменяем сам ТОКЕН — и тёмно-оранжевым становится ЛЮБОЙ элемент,
   который так покрашен, в том числе тот, которого ещё нет.
   Скоуп — интерактивный узел с «кнопочным» именем класса (тот же признак, которым
   контролёр обходит страницу: a/button/input × btn|arrow|cta). Шире брать нельзя:
   custom property наследуется, и на `body.gp-page-b2b main a:hover` тёмно-зелёный
   ТЕКСТ внутри ссылки тоже уехал бы в оранжевый.
   Дочерние узлы: шеврон стрелки нарисован `currentColor` от `on-dark` (белый),
   подпись кнопки тоже `on-dark` — подмена `contrast` их не задевает. */
body.gp-page-b2b main :is( a, button, input ):is( [class*='btn'], [class*='arrow'], [class*='cta'] ):hover {
	--wp--preset--color--contrast: var(--wp--preset--color--orange-dark);
}

/* ⛔ Акцентное слово НА панели, залитой бренд-градиентом (Catering, секции «Warum Die
   Genusspartner» и «So funktioniert’s»).
   Ловушка: панель `.gp-flex__panel` залита `--wp--custom--gradient--brand`, а он выше
   вырожден в сплошной `orange` — и акцент заголовка, который красится `primary`,
   становится ровно цветом своей же подложки. Текст пропадает (замер: цвет текста
   #f18314 = цвет фона #f18314, разница ноль).
   В зелёном оригинале акцент был ТЕМНЕЕ панели: #318100 на #83b363 — контраст 2.02,
   то есть подцвет, а не читаемость AA. Оранжевая пара той же роли — `orange-dark`
   #b35f0b на #f18314: контраст 1.91, тот же уровень. Новых цветов не заводим.
   Светлота панели при этом не изменилась: #83b363 и #f18314 дают одинаковые 0.376,
   поэтому остальной текст на панели читается ровно как читался.
   ⚠️ Исключения обязательны: у вариантов `--list` (он стоит на B2B, «In drei Schritten
   ins Büro») и `--week` панель объявлена `background: none` — там акцент лежит на
   светлом фоне, и затемнять его нельзя, иначе правка catering переоденет B2B.
   ⚠️ Прицел именно в `__title`: тот же класс `__accent` носят заголовки карточек
   ВНУТРИ панели, а карточки белые — там акцент должен остаться обычным оранжевым
   (замер: на белом #f18314 даёт 2.63, затемнять незачем). */
body.gp-page-b2b main .gp-flex:not( .gp-flex--list ):not( .gp-flex--week ) .gp-flex__title .gp-flex__accent {
	color: var(--wp--preset--color--orange-dark);
}

/* ⛔ Читаемость заголовка на оранжевой панели (задание 68, Алекс 17.09: «Contrast Ratio aint good»,
   секция «Warum Die Genusspartner» на Catering). Класс `gp-flex--kontrast` ставится секции в содержимом
   страницы — правило выше и соседние секции не меняются.
   Замер на #f18314: orange-dark 1.75, muted 2.72, base (белый) 2.63, primary 1.87 — из токенов темы порог
   WCAG (крупный текст 3, обычный 4.5) проходит только contrast #153700: 5.07. Поэтому акцент и подзаголовок —
   им. Макета оранжевой панели нет (кадр Catering 989:1036 зелёный), акцент там — тот же тёмно-зелёный род. */
/* Те же :not(), что у правила выше: без них у него больше классов, и акцент оставался orange-dark (замер 17.09). */
body.gp-page-b2b main .gp-flex.gp-flex--kontrast:not( .gp-flex--list ):not( .gp-flex--week ) .gp-flex__title .gp-flex__accent,
body.gp-page-b2b main .gp-flex.gp-flex--kontrast:not( .gp-flex--list ):not( .gp-flex--week ) .gp-flex__subtitle {
	color: var(--wp--preset--color--contrast);
}

/* Декоративная зелень воронки «Gratis Vitaminwoche» (П30, решение Ильи 04.09
   «всё, что зелёное, там просто делай оранжевым»). Токен `primary` сюда не достаёт:
   это не акцент, а тонкая линия и мягкий фон.
   `--gp-funnel-line` — рамки восьми полей ввода и мятной плашки (было `leaf`);
   `--gp-funnel-soft` — заливка плашки «Eine Woche gratis testen» и выбранной опции
   (было `surface-mint`).
   ⛔ Селектор именно `.gp-funnel`, а не `main`: блок объявляет эти переменные на самом
   себе, и объявление НА элементе бьёт унаследованное сверху — с `main` значение до
   него не долетит. Та же ловушка ждёт любой блок, который заводит свои алиасы.
   На страницах без класса переменные остаются зелёными — их объявляет сам блок. */
body.gp-page-b2b .gp-funnel {
	--gp-funnel-line: var(--wp--preset--color--orange);
	--gp-funnel-soft: var(--wp--preset--color--surface-peach);
}

/* ⛔ ИКОНКИ (П20, правка Ильи по кадру секции «Warum es sich lohnt»).
   Акцентные иконки страницы — это `<img src="…svg">` из медиатеки, а внутри файла
   зашит бренд-градиент #b5d77c → #83b363 (проверено чтением всех 12 файлов).
   Ни токен, ни `currentColor` туда не достают: `<img>` рисует чужой документ.
   Поэтому единственный способ покрасить их из CSS — фильтр над готовым растром.
   Признак, а не перечень классов: обёртка иконки в этой теме всегда зовётся
   `…__icon` (gp-fsplit__icon, gp-how__icon, gp-faq__icon). Логотипы (`__logo`),
   отзывы и наклейка (`__sticker`) под него не попадают и остаются как есть —
   их перекрашивать нельзя, это чужие бренды.
   Число подобрано замером пикселя, а не на глаз: см. доклад П20. */
body.gp-page-b2b main [class*='__icon'] img {
	filter: hue-rotate(-56deg) saturate(2.4) brightness(0.99);
}

/* ⛔ Тот же случай, но класс висит на САМОЙ картинке (страница благодарности для фирм,
   строка 42 доски): `<img class="gp-danke__icon">` и `<img class="gp-danke__badge">`.
   Правило выше ищет картинку ВНУТРИ обёртки `…__icon` и до них не достаёт — иконки трёх
   шагов и галочка оставались зелёными на оранжевой странице.
   Фильтр тот же, что и выше (числа не пересчитывал). Прицел точечный, а не общий
   `img[class*='__icon']`: такой есть и у корзины в шапке (`gp-cart__icon`), её трогать
   нельзя. Листья-декор (`gp-danke__leaf`) намеренно остаются зелёными — это зелень. */
body.gp-page-b2b main :is( .gp-danke__badge, .gp-danke__icon ) {
	filter: hue-rotate(-56deg) saturate(2.4) brightness(0.99);
}

/* Выделенная карточка коробки (метка «Unser Bestseller») в сетке — коробки фирм на /b2b/ «wie bei B2C»
   (зад. 110 П3). Рамка и тень сетки зашиты токеном `leaf`, а не primary, и на оранжевой странице
   оставались зелёными. Цвета те же, что у прежнего скина подписки на этой странице. */
body.gp-page-b2b main .gp-box--grid .gp-box__card.is-featured {
	border-color: var(--wp--preset--color--orange);
	box-shadow: 0 16px 40px color-mix(in srgb, var(--wp--preset--color--orange) 32%, transparent);
}

/* Заголовок витрины клиента «Mehr als Obst – für Teeküche, Meetings & besondere Anlässe» (зад. 110 П4): тизер
   держит заголовок в 530 px под короткое «Dazu für die Teeküche» из макета, длинный там ложился в четыре строки.
   Ширина та же, что у подводки блока (830). «Saisonale Produkte» ниже короче и остаётся одной строкой. */
body.gp-page-b2b main .gp-box--teaser .gp-box__title { max-width: 830px; }

/* Телефон (зад. 110 П5, проход /b2b/ на 390): цели нажатия внутри страницы были меньше 44 px.
   - Выбор веса у коробок фирм 97×37 и пункты раскрытого списка 80×40 → высота 44.
   - Точки карусели отзывов 40×8 и 12×8 (стрелок на телефоне нет, точки — единственная навигация кроме свайпа):
     кнопка получает поле 18/16 px и такие же отрицательные поля — зона нажатия 44×44, а место в ряду и вид прежние.
     Полоска остаётся полоской: фон рисуется только по содержимому (background-clip), скругление поля
     уменьшается на толщину поля и у pill-радиуса остаётся pill.
   На /catering/ и /gratis-vitaminwoche/ (тот же класс body) ни выбора веса, ни отзывов нет — замер П5.
   ⛔ Зад. 120 П2: вширь поле было 16 при промежутке 8 — зоны соседних точек накрывали друг друга на 24 px, а верхней
   лежит следующая точка: тап по средней точке листал на третью, тап по первой — на вторую. Вширь поле = половина
   промежутка (4): зоны стыкуются край в край, весь ряд точек нажимается, каждая зона ведёт на свою точку. */
@media (max-width: 600px) {
	body.gp-page-b2b main :is( .gp-box__weight-toggle, .gp-box__weight-opt ) { min-height: 44px; box-sizing: border-box; }
	body.gp-page-b2b main .gp-reviews__dots button {
		box-sizing: content-box;
		padding: 18px 4px;
		margin: -18px -4px;
		background-clip: content-box;
	}
	/* Зад. 110 П6 (QA): до въезда в кадр карточка коробки сжата до 0.985 (въезд, choose-your-box style.scss),
	   и выбор веса мерился 43.3 при своих 44. Здесь въезд без сжатия — сдвиг и проявление те же, итоговый вид
	   и раскладка прежние. `:not(.is-in)`, чтобы не перебить состояние после въезда. */
	body.gp-page-b2b main .gp-box--grid.is-reveal .gp-box__card:not( .is-in ) { transform: translateY(28px); }
}

/* Финальный призыв площадкой с фото, как «Bereit für mehr Frische» на /fuer-zuhause/ (зад. 110 П4, Noted №1 п. 8).
   Там подложка — самый тёмный тон акцента (contrast), акцент светлый (leaf); здесь та же пара в оранжевом:
   `orange-dark` и `surface-peach`. Не чистый `orange`: белый текст на #f18314 даёт 2.63, на #b35f0b — 4.57 (AA),
   а контраст на оранжевой панели Алекс уже возвращал (зад. 68). Кнопка цвета `primary` (= orange) на такой
   подложке теряется, поэтому белая с тёмно-оранжевой надписью (4.57), ховер — мягкая персиковая заливка. */
body.gp-page-b2b main .gp-cta--photo .gp-cta__inner { background: var(--wp--preset--color--orange-dark); }
body.gp-page-b2b main .gp-cta--photo .gp-cta__accent { color: var(--wp--preset--color--surface-peach); }
body.gp-page-b2b main .gp-cta--photo .gp-cta__btn--primary,
body.gp-page-b2b main .gp-cta--photo .gp-cta__btn--primary:hover {
	background: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--orange-dark);
}
body.gp-page-b2b main .gp-cta--photo .gp-cta__btn--primary:hover {
	background: var(--wp--preset--color--surface-peach);
	border-color: var(--wp--preset--color--surface-peach);
}
