/*
 * kazpe — кастомные стили темы.
 * Базовые токены и стили каркаса (шапка, подвал, компоненты) + секции главной (S4).
 * Палитра бренда — реальные значения из живого CSS kazpe.kz (S4, решение п.8).
 * Шрифт — системный sans-serif (дефолтный стек Bootstrap), внешние шрифты не тянем.
 */
:root {
    --kazpe-brand-blue: #03A8E1;
    --kazpe-brand-blue-hover: #0291c2; /* затемнение фирменного голубого ~10% (hover/active фонов) */
    --kazpe-brand-dark: #010122;
    --kazpe-text: #151515;
    --kazpe-border: #dadada;
    /* S10, ADR-0013: бренд-синий как цвет ТЕКСТА не проходит WCAG AA (2.73:1).
       Для ссылок/текстовых акцентов — затемнённые токены (≥4.5:1 на белом и #f6f8fb). */
    --kazpe-link: #0277A8;
    --kazpe-link-hover: #015F86;
}

/* Связываем акценты Bootstrap: фоны — бренд-синий, ссылки — контрастный токен. */
:root {
    --bs-primary: var(--kazpe-brand-blue);
    --bs-primary-rgb: 3, 168, 225;
    --bs-link-color: var(--kazpe-link);
    --bs-link-color-rgb: 2, 119, 168;
    --bs-link-hover-color: var(--kazpe-link-hover);
    --bs-link-hover-color-rgb: 1, 95, 134;
}

.btn-primary {
    --bs-btn-bg: var(--kazpe-brand-blue);
    --bs-btn-border-color: var(--kazpe-brand-blue);
    --bs-btn-hover-bg: var(--kazpe-brand-blue-hover);
    --bs-btn-hover-border-color: var(--kazpe-brand-blue-hover);
    --bs-btn-active-bg: var(--kazpe-brand-blue-hover);
    --bs-btn-active-border-color: var(--kazpe-brand-blue-hover);
    --bs-btn-color: var(--kazpe-brand-dark);
    --bs-btn-hover-color: var(--kazpe-brand-dark);
    --bs-btn-active-color: var(--kazpe-brand-dark);
}

/* Skip-link — фокус выводит ссылку из-за края экрана. */
.kazpe-skip-link {
    position: absolute;
    z-index: 1080;
    top: 0.5rem;
    left: 0.5rem;
}

/* Компенсация sticky-шапки для якорного скролла (#main, #services):
   цель перехода не уходит под прилипшую шапку. Значение ≥ высоты навбара. */
html {
    scroll-padding-top: 5rem;
}

/* Шапка / навбар. Sticky + лёгкая тень после прокрутки (S5, T-010). */
.site-header {
    position: sticky;
    top: 0;
    z-index: 1030;
    background-color: #fff;
    border-bottom: 1px solid rgba(0, 0, 0, 0.075);
    transition: box-shadow 0.2s ease;
}

.site-header.is-scrolled {
    box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.12);
}

.site-brand {
    text-decoration: none;
    font-weight: 700;
    font-size: 1.25rem;
    line-height: 1;
}

.site-brand__accent {
    color: var(--kazpe-brand-blue);
}

/* Акцент вордмарка в шапке — на белом фоне бренд-синий #03A8E1 даёт 2.73:1
   (ниже AA). Затемняем до токена ссылок #0277A8 (4.99:1) ТОЛЬКО в шапке: в
   подвале (тёмный фон) бренд-синий остаётся и проходит AA (7.48:1).
   S10/ADR-0013: бренд-синий как цвет текста на светлом фоне → контрастный токен. */
.site-navbar .site-brand__accent {
    color: var(--kazpe-link);
}

.site-brand__base {
    color: var(--kazpe-brand-dark);
}

/* Бренд-марка: и <img> (custom-logo), и инлайн-SVG (ADR-0008).
   max-height на inline-span не действует — задаём его на вложенном <svg>. */
.site-brand__image {
    display: inline-flex;
    align-items: center;
    height: auto;
    max-height: 2.5rem;
    width: auto;
}

.site-brand__image svg {
    display: block;
    height: auto;
    max-height: 2.5rem;
    width: auto;
}

/* Контраст нейтральных штрихов SVG (currentColor) per-фон.
   Бренд-синий #03A8E1 запечён и неизменен на обоих фонах. */
.site-navbar .site-brand__image {
    color: var(--kazpe-brand-dark);
}

.site-footer .site-brand__image {
    color: #fff;
}

/* T-017: вордмарк подвала на тёмном фоне — светлый, читаемый.
   Бренд-синий .site-brand__accent остаётся фирменным на обоих фонах. */
.site-footer .site-brand__base {
    color: #fff;
}

.site-navbar .nav-link.active {
    font-weight: 600;
    color: var(--kazpe-link);
}

/* S26: на десктопе меню центрировано (mx-lg-auto) в области после логотипа;
   модест-интервал между пунктами, чтобы кластер не выглядел тесным. Только
   ≥992px — мобильный бургер (collapse, стопка) не затрагивается.
   S27/T27.1: кегль пунктов чуть крупнее (17px), чтобы меню читалось заметнее.
   Только десктоп — мобильный бургер и подвал не затрагиваются. */
@media (min-width: 992px) {
    .site-navbar .navbar-nav {
        column-gap: 0.5rem;
    }

    .site-navbar .nav-link {
        font-size: 1.0625rem; /* 17px — крупнее пунктов меню */
    }
}

/* CTA «Написать в WhatsApp». S13/T13.3: фирменный синий, как у прочих CTA
   сайта (на live зелёного не было). Белый текст #fff на фирменном #0277A8
   даёт 4.99:1 (AA); hover/active #015F86 ≈7:1 (AAA). */
.site-cta {
    --bs-btn-bg: var(--kazpe-link);
    --bs-btn-border-color: var(--kazpe-link);
    --bs-btn-hover-bg: var(--kazpe-link-hover);
    --bs-btn-hover-border-color: var(--kazpe-link-hover);
    --bs-btn-active-bg: var(--kazpe-link-hover);
    --bs-btn-active-border-color: var(--kazpe-link-hover);
    --bs-btn-color: #fff;
    --bs-btn-hover-color: #fff;
    --bs-btn-active-color: #fff;
}

/* Хлебные крошки. */
.kazpe-breadcrumbs-wrap {
    background-color: #f6f8fb;
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

.kazpe-breadcrumbs .breadcrumb {
    font-size: 0.875rem;
}

/* Подвал. */
.site-footer {
    background-color: var(--kazpe-brand-dark);
    color: #cfd8e3;
}

.site-footer a {
    color: #cfd8e3;
    text-decoration: none;
}

.site-footer a:hover,
.site-footer a:focus {
    color: #fff;
    text-decoration: underline;
}

/* WhatsApp-CTA в подвале — кнопка (.btn) с белым текстом #fff на
   фирменном #0277A8 (4.99:1, AA; hover #015F86 ≈7:1, AAA). Правило
   .site-footer a красит ссылку в #cfd8e3 и побеждает .btn по специфичности —
   возвращаем белый текст кнопки и снимаем подчёркивание. */
.site-footer .site-cta,
.site-footer .site-cta:hover,
.site-footer .site-cta:focus {
    color: #fff;
    text-decoration: none;
}

/* Копирайт подвала: утилита .text-body-secondary даёт тёмный текст
   (rgba(33,37,41,.75)) — нечитаемый на тёмном фоне (1.2:1). Возвращаем
   светлый базовый цвет подвала (14.18:1). */
.site-footer .footer-copyright {
    color: #cfd8e3 !important;
}

.footer-nav li {
    margin-bottom: 0.5rem;
}

.footer-totop {
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, 0.1);
    color: #fff;
    transition: background-color 0.2s ease;
}

.footer-totop:hover,
.footer-totop:focus {
    background-color: var(--kazpe-link);
    color: #fff;
    text-decoration: none;
}

/* Плавающая WhatsApp-кнопка. */
.kazpe-whatsapp-float {
    position: fixed;
    right: 1.25rem;
    bottom: 1.25rem;
    /* Ниже sticky-шапки (1030), чтобы шапка была выше при пересечениях (S5). */
    z-index: 1025;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 50%;
    /* S13/T13.3: фирменный синий вместо зелёного; белый значок #fff
       на #0277A8 (4.99:1, AA; hover #015F86 ≈7:1, AAA). */
    background-color: var(--kazpe-link);
    color: #fff;
    font-size: 1.75rem;
    box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.25);
    transition: transform 0.2s ease, background-color 0.2s ease;
}

.kazpe-whatsapp-float:hover,
.kazpe-whatsapp-float:focus {
    background-color: var(--kazpe-link-hover);
    color: #fff;
    transform: scale(1.05);
}

/* ======================================================================
 * Главная (S4): hero, услуги, о компании, контакты. Mobile-first.
 * ====================================================================== */

/* --- Hero --- */
.home-hero {
    position: relative;
    min-height: 70vh;
    padding-block: 4rem;
    overflow: hidden;
    background-color: var(--kazpe-brand-dark);
}

.home-hero__media {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.home-hero__poster,
.home-hero__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.home-hero__video {
    z-index: 1;
}

.home-hero__overlay {
    position: absolute;
    inset: 0;
    z-index: 2;
    background-color: rgba(1, 1, 34, 0.55);
}

.home-hero__inner {
    z-index: 3;
}

.home-hero__badge {
    background-color: var(--kazpe-brand-blue);
    color: var(--kazpe-brand-dark);
    font-size: 0.95rem;
    padding: 0.5rem 1rem;
}

.home-hero__title {
    text-shadow: 0 1px 12px rgba(0, 0, 0, 0.4);
}

.home-hero__lead {
    max-width: 42rem;
    margin-inline: auto;
}

.home-hero__scroll {
    z-index: 3;
    bottom: 1.25rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 50%;
    color: #fff;
    font-size: 1.5rem;
    background-color: rgba(255, 255, 255, 0.15);
    transition: background-color 0.2s ease, transform 0.2s ease;
}

.home-hero__scroll:hover,
.home-hero__scroll:focus {
    color: #fff;
    background-color: var(--kazpe-link);
    transform: translateX(-50%) translateY(-3px);
}

@media (min-width: 992px) {
    .home-hero__lead {
        margin-inline: 0;
    }
}

/* --- Услуги --- */
.home-services {
    background-color: #f6f8fb;
}

.home-services__title {
    color: var(--kazpe-text);
}

/* .home-services__all несёт класс Bootstrap .link-primary, который красит
   ссылку в --bs-primary-rgb (бренд-синий) через !important. Перебиваем его
   контрастным токеном — иначе текстовая ссылка остаётся 2.56:1 (ниже AA). */
.home-services__all.link-primary {
    color: var(--kazpe-link) !important;
}

.home-services__all.link-primary:hover,
.home-services__all.link-primary:focus {
    color: var(--kazpe-link-hover) !important;
}

.home-services__carousel {
    position: relative;
}

.service-card {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    border: 1px solid var(--kazpe-border);
}

.service-card:hover,
.service-card:focus-within {
    transform: translateY(-4px);
    box-shadow: 0 0.75rem 1.5rem rgba(1, 1, 34, 0.12) !important;
}

.service-card__img {
    aspect-ratio: 16 / 10;
    object-fit: cover;
}

.service-card__title {
    color: var(--kazpe-text);
}

.service-card__more {
    color: var(--kazpe-link);
}

/* Стрелки каруселей (общий класс для всех 4: услуги, фотогалерея,
   сертификаты, партнёры). S13/T13.1: вид как на оригинале kazpe.kz —
   мелкие тёмно-серые стрелки без круглой подложки и яркого фона.
   Иконка — оригинальные SVG live (assets/img/arrow_left|right.svg,
   fill #333333, 14×12), а не белая Bootstrap-иконка.
   Тач-цель добирается прозрачным padding (≥ 24×24px, WCAG 2.5.8),
   видимая стрелка остаётся мелкой; кнопка узкая и прижата к краю —
   её кликзона не перехватывает клики по карточкам и плиткам лайтбокса
   (переопределяем Bootstrap-дефолт .carousel-control-* width: 15%). */
.home-services__control {
    width: 1.75rem;
    height: 1.75rem;
    top: 50%;
    transform: translateY(-50%);
    padding: 0.25rem;
    background-color: transparent;
    border: 0;
    opacity: 0.7;
    transition: opacity 0.2s ease;
}

.home-services__control:hover,
.home-services__control:focus {
    opacity: 1;
    background-color: transparent;
}

/* Заменяем белую Bootstrap-иконку (fill #fff + filter: invert) на тёмную
   стрелку live. Размер видимой стрелки ≈16px (мелкая, как на оригинале);
   фон по content-box — стрелка рисуется внутри тач-padding'а. */
.home-services__control .carousel-control-prev-icon,
.home-services__control .carousel-control-next-icon {
    width: 1rem;
    height: 1rem;
    filter: none;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}

.home-services__control .carousel-control-prev-icon {
    background-image: url("../img/arrow_left.svg");
}

.home-services__control .carousel-control-next-icon {
    background-image: url("../img/arrow_right.svg");
}

/* Прижимаем стрелки к краям трека (без выноса за его пределы) — не наезжают
   на карточки/контент ни на мобильных, ни на десктопе. */
.home-services__control.carousel-control-prev {
    left: 0;
}

.home-services__control.carousel-control-next {
    right: 0;
}

/* Партнёры и сертификаты на live используют свой вариант стрелки —
   квадратная рамка #B5B5B5 со стрелкой #25313B (partners_left|right.svg).
   Переопределяем только background-image поверх общего класса. */
.home-partners__control .carousel-control-prev-icon,
.home-certificates__control .carousel-control-prev-icon {
    background-image: url("../img/partners_left.svg");
}

.home-partners__control .carousel-control-next-icon,
.home-certificates__control .carousel-control-next-icon {
    background-image: url("../img/partners_right.svg");
}

.home-services__indicators {
    margin-bottom: 0;
}

.home-services__indicators [data-bs-target] {
    /* Видимая точка — 12px, но габарит кнопки 24×24px за счёт прозрачного
       padding: тач-цель ≥ 24px (WCAG 2.5.8) без изменения вида. Сбрасываем
       дефолтные border-top/bottom и width Bootstrap, заливку клипуем по
       content-box (точка только внутри отступов). */
    box-sizing: border-box;
    flex: 0 0 auto;
    width: 1.5rem;
    height: 1.5rem;
    padding: 0.375rem;
    margin-right: 0.25rem;
    margin-left: 0.25rem;
    border: 0;
    border-radius: 50%;
    text-indent: 0;
    background-color: #6c757d;
    background-clip: content-box;
    opacity: 1;
}

.home-services__indicators .active {
    background-color: var(--kazpe-link);
    background-clip: content-box;
}

/* Скрываем элементы управления, пока услуг мало (один слайд) — задаётся JS. */
.home-services__carousel.is-single-slide .home-services__control,
.home-services__carousel.is-single-slide .home-services__indicators {
    display: none;
}

/* S13/T13.2: устранение «дёрганья» высоты при листании карусели услуг.
   Bootstrap-карусель берёт высоту активного слайда; h-100 ровняет только
   внутри слайда, поэтому слайды с более длинным текстом задавали скачок.
   Фиксируем высоту ТЕКСТОВОЙ части карточки (фото-зона у всех едина,
   aspect-ratio 16/10): заголовок — ровно 2 строки, описание — ровно 3,
   через line-clamp + min-height в долях line-height (без пиксельных
   «магических» констант). Правило ограничено каруселью главной —
   карточки на /services, related и single (не карусель) не затронуты. */
.home-services__carousel .service-card__title {
    line-height: 1.3;
}

.home-services__carousel .service-card__link {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    min-height: calc(1.3em * 2);
    overflow: hidden;
}

.home-services__carousel .service-card__excerpt {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    min-height: calc(1.5em * 3);
    line-height: 1.5;
    overflow: hidden;
}

/* --- О компании --- */
.home-about__title {
    color: var(--kazpe-text);
}

.home-about__text {
    color: var(--kazpe-text);
}

.home-about__image {
    width: 100%;
    object-fit: cover;
}

/* Кнопка «Узнать подробнее»: белый текст на углублённом фирменном синем
   (#0277A8) для контраста. Тёмный текст на ярком #03A8E1 заказчик счёл
   неконтрастным; чистый белый на #03A8E1 = 2.73:1 (ниже AA), поэтому фон
   углублён до --kazpe-link: белый/ #0277A8 = 4.99:1 (AA), hover 7.04:1 (AAA) —
   как у CTA-кнопок (T13.5). Скоуп — только эта кнопка. */
.home-about__btn {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--kazpe-link);
    --bs-btn-border-color: var(--kazpe-link);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--kazpe-link-hover);
    --bs-btn-hover-border-color: var(--kazpe-link-hover);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--kazpe-link-hover);
    --bs-btn-active-border-color: var(--kazpe-link-hover);
}

/* --- Контакты --- */
.home-contacts__title {
    color: var(--kazpe-text);
}

.home-contacts__icon {
    color: var(--kazpe-brand-blue);
    font-size: 1.25rem;
}

.home-contacts__link:hover,
.home-contacts__link:focus {
    color: var(--kazpe-link);
}

.home-contacts__cta {
    background-color: var(--kazpe-brand-dark);
    color: #fff;
}

.home-contacts__cta-text {
    color: rgba(255, 255, 255, 0.85);
}

/* ==========================================================================
   S10a — Доводка главной: обучение, фотогалерея, сертификаты, партнёры.
   Карусели переиспользуют контролы .home-services__control и индикаторы
   .home-services__indicators (классы добавлены в разметке партиалов).
   Mobile-first: базовые правила — мобильные, десктоп — в @media (min-width).
   ========================================================================== */

/* --- Обучение и аттестация --- */
.home-training {
    background-color: #f6f8fb;
}

.home-training__title {
    color: var(--kazpe-text);
}

.home-training__card {
    border: 1px solid var(--kazpe-border);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.home-training__card:hover,
.home-training__card:focus-within {
    transform: translateY(-4px);
    box-shadow: 0 0.75rem 1.5rem rgba(1, 1, 34, 0.12) !important;
}

.home-training__icon {
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 50%;
    background-color: rgba(3, 168, 225, 0.1);
}

.home-training__icon .bi {
    font-size: 1.75rem;
    line-height: 1;
    color: var(--kazpe-brand-blue);
}

.home-training__card-title {
    color: var(--kazpe-text);
}

/* .home-training__more (S10a) несёт .link-primary — перебиваем бренд-синий
   контрастным токеном через !important, как у .home-services__all. */
.home-training__more.link-primary {
    color: var(--kazpe-link) !important;
}

.home-training__more.link-primary:hover,
.home-training__more.link-primary:focus {
    color: var(--kazpe-link-hover) !important;
}

/* --- Карусели медиа (фотогалерея, сертификаты, партнёры) --- */
.home-gallery__carousel,
.home-certificates__carousel,
.home-partners__carousel {
    position: relative;
}

/* Слайды галереи/сертификатов — фикс-пропорция, чтобы высота слайдов
   совпадала и карусель не «прыгала» при перелистывании. */
.home-gallery__item,
.home-certificates__item {
    overflow: hidden;
    border: 1px solid var(--kazpe-border);
    background-color: #fff;
}

.home-gallery__img {
    aspect-ratio: 16 / 9;
    object-fit: cover;
    transition: transform 0.3s ease;
}

.home-gallery__item:hover .home-gallery__img,
.home-gallery__item:focus-visible .home-gallery__img {
    transform: scale(1.04);
}

/* Сертификаты — вертикальные сканы, показываем целиком (contain). */
.home-certificates__img {
    aspect-ratio: 3 / 4;
    object-fit: contain;
    background-color: #fff;
}

/* --- Партнёры — строка логотипов (мельче, ч/б → цвет на hover) --- */
.home-partners__item {
    height: 6rem;
    padding: 0.5rem;
}

.home-partners__img {
    max-height: 100%;
    width: auto;
    object-fit: contain;
    filter: grayscale(1);
    opacity: 0.75;
    transition: filter 0.2s ease, opacity 0.2s ease;
}

.home-partners__item:hover .home-partners__img {
    filter: grayscale(0);
    opacity: 1;
}

/* Снимаем hover-трансформации/анимации при prefers-reduced-motion. */
@media (prefers-reduced-motion: reduce) {
    .home-training__card,
    .home-gallery__img,
    .home-partners__img {
        transition: none;
    }

    .home-training__card:hover,
    .home-training__card:focus-within {
        transform: none;
    }

    .home-gallery__item:hover .home-gallery__img,
    .home-gallery__item:focus-visible .home-gallery__img {
        transform: none;
    }
}

/* ==========================================================================
   S6 — Услуги: page-header, тело single, CTA, related, иконочная медиа-зона.
   Mobile-first: базовые правила — мобильные, десктоп — в @media (min-width).
   ========================================================================== */

/* --- Шапка страницы (page-header): общие правила --- */
/* Белый текст, лид и крошки внутри шапки; mobile-first. Хлебные крошки теперь
   живут ВНУТРИ page-header (S14), поэтому светлая «коробка» .kazpe-breadcrumbs-wrap
   тут не используется — крошки стилизуются как .page-header .kazpe-breadcrumbs. */
.page-header {
    position: relative;
    color: #fff;
}

.page-header__inner {
    position: relative;
    z-index: 2;
    padding-top: 1.5rem;
    padding-bottom: 1.5rem;
}

.page-header .page-title {
    color: #fff;
}

.page-header__eyebrow {
    color: #fff;
    font-size: 0.875rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.page-header__lead {
    color: rgba(255, 255, 255, 0.95);
    max-width: 60ch;
}

/* Хлебные крошки внутри шапки: светлые, без светлой подложки.
   Текст непрозрачно-белый — гарантирует ≥4.5:1 над оверлеем hero и над светлым
   углом брендового градиента (раньше 0.8/0.85 давали 3.6–4.1:1 — ниже WCAG AA). */
.page-header .kazpe-breadcrumbs {
    margin-bottom: 1rem;
}

.page-header .breadcrumb {
    margin-bottom: 0;
    font-size: 0.875rem;
}

.page-header .breadcrumb-item,
.page-header .breadcrumb-item.active,
.page-header .breadcrumb-item a {
    color: #fff;
}

.page-header .breadcrumb-item a {
    text-decoration: none;
}

.page-header .breadcrumb-item a:hover,
.page-header .breadcrumb-item a:focus {
    color: #fff;
    text-decoration: underline;
}

.page-header .breadcrumb-item + .breadcrumb-item::before {
    color: rgba(255, 255, 255, 0.75);
}

/* --- Фолбэк-режим: брендовый диагональный градиент (#010122 → #0277A8) --- */
.page-header--brand {
    background-image: linear-gradient(135deg, #010122 0%, #0277A8 100%);
    background-color: var(--kazpe-brand-dark); /* фолбэк, если градиент не поддержан */
}

/* --- HERO-режим: фоновое фото + тёмный градиент-оверлей --- */
.page-header--hero {
    background-color: var(--kazpe-brand-dark); /* фон до загрузки фото */
    overflow: hidden;
}

.page-header__media {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.page-header__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

/* Тёмный оверлей отдельным слоем — гарантирует контраст белого текста (≥ 4.5:1)
   поверх любого фото. S15/T15.4: плоский rgba(23,23,23,0.651) как live .banner::after
   (вместо брендового градиента); text-shadow ниже остаётся страховкой контраста. */
.page-header__overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background-color: rgba(23, 23, 23, 0.651);
    background-image: none;
}

/* Лёгкая тень текста в HERO — локальный контраст поверх любого участка фото
   (страховка к оверлею: крошки в верхней зоне над светлым небом/документами). */
.page-header--hero .page-header__inner {
    text-shadow: 0 1px 3px rgba(1, 1, 34, 0.55);
}

/* Высота HERO: полноэкранный баннер как на live (.banner height:calc(100vh-88px)).
   Контент (крошки + H1 + лид) центрирован по вертикали. Наш sticky-хедер ~80px. */
.page-header--hero .page-header__inner {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: calc(100vh - 80px);
    padding-top: 1.5rem;
    padding-bottom: 1.5rem;
}

.page-header--hero .page-header__content {
    margin-top: 1.25rem;
    max-width: 820px; /* заголовок переносится в 2 строки, не на всю ширину (как live .banner__title-all) */
}

/* S15/T15.4: H1 баннера услуг/about/center — UPPERCASE, увеличенный кегль (echo
   live .banner__title). Скоуп строго к hero-режиму: брендовый режим (новости/
   акции/архивы/контакты — .page-header--brand) не затрагивается. Перекрывает
   утилиту .h2 в разметке за счёт более высокой специфичности. */
.page-header--hero .page-title {
    text-transform: uppercase;
    font-weight: 600;
    font-size: clamp(1.75rem, 4vw, 3rem);
    line-height: 1.1;
}

@media (min-width: 768px) {
    .page-header__inner {
        padding-top: 2rem;
        padding-bottom: 2rem;
    }
}

@media (min-width: 992px) {
    .page-header--brand .page-header__inner {
        padding-top: 3rem;
        padding-bottom: 3rem;
    }

    /* S15/T15.4: hero услуг/about/center — полноэкранный (как live .banner). */
    .page-header--hero .page-header__inner {
        padding-top: 2rem;
        padding-bottom: 2rem;
    }

    /* Крупнее H1 на десктопе — ближе к live .banner__title (53px). */
    .page-header--hero .page-title {
        font-size: clamp(2.5rem, 4vw, 3.25rem);
    }
}

/* --- Иконочная медиа-зона карточки услуги (третья ветка источника) ---
   Фикс-высота + центрирование: карточки карусели главной (row g-4 + h-100)
   соседствуют со слайдами с <img> (aspect-ratio 16/10). Без фикс-высоты
   иконочная зона схлопнулась бы по контенту и слайды разъехались по высоте. */
.service-card__media--icon {
    height: 10rem;
    background-color: #f6f8fb;
    border-bottom: 1px solid var(--kazpe-border);
}

.service-card__icon {
    font-size: 3.5rem;
    line-height: 1;
    color: var(--kazpe-brand-blue);
}

/* --- Тело детальной страницы (услуга / статья / акция) --- */
.service-single__content,
.entry-content {
    color: var(--kazpe-text);
    line-height: 1.7;
}

.service-single__content h2,
.entry-content h2 {
    margin-top: 2rem;
    margin-bottom: 1rem;
    font-size: 1.5rem;
    color: var(--kazpe-brand-dark);
}

.service-single__content h2:first-child,
.entry-content h2:first-child {
    margin-top: 0;
}

.service-single__content h3,
.entry-content h3 {
    margin-top: 1.5rem;
    margin-bottom: 0.75rem;
    font-size: 1.25rem;
    color: var(--kazpe-brand-dark);
}

.service-single__content p,
.service-single__content ul,
.service-single__content ol,
.entry-content p,
.entry-content ul,
.entry-content ol {
    margin-bottom: 1rem;
}

.service-single__content li,
.entry-content li {
    margin-bottom: 0.375rem;
}

/* --- Тело статьи: двухколоночная раскладка (S27) ---
   Контент-колонка (.novost-single__main, col-lg-8) выравнивается с H1/крошками
   page-header; ширину строки задаёт сетка Bootstrap. Правый сайдбар
   (.novost-single__sidebar, col-lg-4) заполняет правую часть. Mobile-first:
   на мобильных колонки складываются стопкой штатной сеткой Bootstrap. */

/* Сайдбар: на десктопе прилипает ЕДИНЫМ блоком (весь <aside>), чтобы карточка
   консультации и «Другие статьи» двигались вместе и не наезжали друг на друга
   при прокрутке. align-self:flex-start обязателен — иначе колонка растягивается
   на высоту row (align-items:stretch) и sticky не срабатывает. На мобильных
   (<992px) — обычный поток, без sticky. */
@media (min-width: 992px) {
    .novost-single__sidebar {
        position: sticky;
        /* 5rem — высота липкой шапки (как scroll-padding-top), + 1.5rem зазор,
           чтобы сайдбар не заезжал под шапку с меню при прокрутке. */
        top: calc(5rem + 1.5rem);
        align-self: flex-start;
    }
}

/* Карточка консультации в сайдбаре: фон/паддинг/радиус в стиле карточек темы. */
.novost-sidebar__cta {
    background-color: #f6f8fb;
    border: 1px solid var(--kazpe-border);
    border-radius: 0.5rem;
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}

.novost-sidebar__cta-title {
    color: var(--kazpe-brand-dark);
}

.novost-sidebar__cta-text {
    color: var(--kazpe-text);
    font-size: 0.9375rem;
}

.novost-sidebar__phone {
    color: var(--kazpe-link);
}

.novost-sidebar__phone:hover,
.novost-sidebar__phone:focus {
    color: var(--kazpe-link-hover);
}

/* Список «Другие статьи»: отступы и разделители между пунктами. */
.novost-sidebar__others-title {
    color: var(--kazpe-brand-dark);
}

.novost-sidebar__item {
    padding-bottom: 0.75rem;
    margin-bottom: 0.75rem;
    border-bottom: 1px solid var(--kazpe-border);
}

.novost-sidebar__item:last-child {
    padding-bottom: 0;
    margin-bottom: 0;
    border-bottom: 0;
}

.novost-sidebar__link {
    color: var(--kazpe-brand-dark);
    font-weight: 600;
}

.novost-sidebar__link:hover,
.novost-sidebar__link:focus {
    color: var(--kazpe-link);
}

.novost-sidebar__date {
    font-size: 0.875rem;
    margin-top: 0.25rem;
}

/* --- Дата статьи (карточка и single) --- */
.novost-card__date,
.novost-single__date {
    font-size: 0.9375rem;
}

/* --- Featured-изображение детальной (статья / акция) --- */
.novost-single__media,
.offer-single__media {
    margin-left: 0;
    margin-right: 0;
}

.novost-single__img,
.offer-single__img {
    width: 100%;
    height: auto;
    object-fit: cover;
}

@media (min-width: 768px) {
    .novost-single__img,
    .offer-single__img {
        max-height: 28rem;
    }
}

/* --- Бейдж скидки акции (карточка и single) и срок --- */
.offer-card__badge,
.offer-single__badge {
    background-color: var(--kazpe-brand-blue);
    color: var(--kazpe-brand-dark);
    font-size: 0.9375rem;
    font-weight: 600;
}

.offer-single__valid {
    font-size: 0.9375rem;
}

/* --- CTA-блок связи (обобщён из service-cta) --- */
.contact-cta {
    background-color: var(--kazpe-brand-dark);
    color: #fff;
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
}

.contact-cta__title {
    color: #fff;
}

.contact-cta__lead {
    color: rgba(255, 255, 255, 0.85);
}

.contact-cta__phone.btn-outline-light {
    --bs-btn-hover-color: var(--kazpe-brand-dark);
}

/* --- Блок «другие записи» (обобщён из related-services) --- */
.related-posts {
    padding-top: 2.5rem;
    padding-bottom: 3rem;
    background-color: #f6f8fb;
}

.related-posts__title {
    color: var(--kazpe-brand-dark);
}

/* ==========================================================================
   S8 — Статические страницы: реквизиты «Контактов», карта, раскладка
   core/media-text (about) и core/columns форм обучения (center).
   Раскладку блоков базово даёт ядровый block-library; тема задаёт палитру
   и складывание на мобильных. Mobile-first.
   ========================================================================== */

/* --- Реквизиты на странице «Контакты» (палитра как у home-contacts) --- */
.contact-info__icon {
    color: var(--kazpe-brand-blue);
    font-size: 1.25rem;
}

.contact-info__link:hover,
.contact-info__link:focus {
    color: var(--kazpe-link);
}

.contact-info__text {
    color: var(--kazpe-text);
}

/* --- Адаптивная обёртка карты --- */
.map__frame {
    position: relative;
    width: 100%;
    overflow: hidden;
    border: 1px solid var(--kazpe-border);
    border-radius: 0.375rem;
}

.map__frame iframe {
    display: block;
    width: 100%;
    height: 320px;
    border: 0;
}

@media (min-width: 768px) {
    .map__frame iframe {
        height: 420px;
    }
}

/* --- Раскладка core/media-text (about + услуги): на мобильных — стек,
   медиа над текстом. Базовое правило общее (S8); крупное фото и отступы тела
   услуги расширяются в секции S14 ниже. --- */
.entry-content .wp-block-media-text {
    margin-top: 2.5rem;
    margin-bottom: 2.5rem;
}

@media (max-width: 767.98px) {
    .entry-content .wp-block-media-text {
        display: block;
    }

    .entry-content .wp-block-media-text .wp-block-media-text__media {
        margin-bottom: 1.25rem;
    }

    .entry-content .wp-block-media-text .wp-block-media-text__media img {
        width: 100%;
        height: auto;
    }
}

.entry-content .wp-block-media-text img {
    border-radius: 0.375rem;
}

/* --- Карточки «Формы обучения» (center): core/columns --- */
@media (max-width: 767.98px) {
    .entry-content .wp-block-columns:not(.is-not-stacked-on-mobile) {
        display: block;
    }

    .entry-content .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column {
        margin-bottom: 1.5rem;
    }
}

.entry-content .training-form {
    height: 100%;
    padding: 1.5rem;
    background-color: #f6f8fb;
    border: 1px solid var(--kazpe-border);
    border-radius: 0.375rem;
    text-align: center;
}

.entry-content .training-form__icon {
    display: block;
    margin-bottom: 0.75rem;
    font-size: 2.5rem;
    line-height: 1;
    color: var(--kazpe-brand-blue);
}

.entry-content .training-form__text {
    margin-bottom: 0;
    color: var(--kazpe-text);
}

/* ==========================================================================
   S14 — Тело услуги: секции на всю ширину (media-text/cover), без узкой колонки.
   .service-single .entry-content рендерится без .container, поэтому обычные
   блоки центрируем своим контейнером, а media-text/cover делаем выразительными
   секциями. Mobile-first; правила about/center не затрагиваются (они под
   .page-static .entry-content внутри .container). prefers-reduced-motion — ниже.
   S15: типографика заголовков/текста, пропорции фото и оверлеи доведены ниже —
   значения этого блока, перекрытые S15, помечены в комментариях S15.
   ========================================================================== */

/* Контейнер тела услуги: обычные блоки (h2/p/ul) центрируем и ограничиваем по
   ширине; вертикальные отступы между секциями. */
.service-single .entry-content {
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
}

/* Обычные блоки текста — в центрированную колонку контейнера. Секционные блоки
   (media-text, cover) исключаются: они идут на всю ширину. */
.service-single .entry-content > *:not(.wp-block-media-text):not(.wp-block-cover) {
    width: 100%;
    max-width: 720px;
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--bs-gutter-x, 1.5rem);
    padding-right: var(--bs-gutter-x, 1.5rem);
}

/* ==========================================================================
   S15 — Визуальная верность услуг + О компании + Учебный центр под оригинал
   kazpe.kz (типографика секционных заголовков, пропорции фото-секций, плоские
   оверлеи cover/about). ШРИФТ системный (S4): фиделити через размеры/регистр/
   цвета/раскладку, а не подключение Geologica/Onest. Эталон —
   info_docs/reference-live-services.css. Скоуп строго: .service-single,
   .page-about, .page-center — новости/акции/архивы/контакты/главная не затронуты.
   Mobile-first; контраст AA (плоский 65%-оверлей обеспечивает белый ≥4.5:1).
   ========================================================================== */

/* --- T15.1 Секционные заголовки h2 (live .title): 40px UPPERCASE, weight 400,
   #333, акцентное подчёркивание ::after 64×2px снизу слева. На мобильных 30px.
   Скоуп — только тела услуг/about/center; новости (.novost-single) и акции
   (.offer-single) сохраняют базовый .entry-content h2 (1.5rem brand-dark). --- */
.service-single .entry-content h2,
.page-about .entry-content h2,
.page-center .entry-content h2 {
    margin-top: 2.5rem;
    margin-bottom: 1.25rem;
    font-size: 1.875rem; /* 30px — мобильный базис live .title (≤480px) */
    line-height: 1.25;
    font-weight: 400;
    text-transform: uppercase;
    color: #333;
    position: relative;
    padding-bottom: 0.9375rem; /* 15px — место под подчёркивание ::after */
}

.service-single .entry-content h2:first-child,
.page-about .entry-content h2:first-child,
.page-center .entry-content h2:first-child {
    margin-top: 0;
}

.service-single .entry-content h2::after,
.page-about .entry-content h2::after,
.page-center .entry-content h2::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 64px;
    height: 2px;
    background-color: #333;
}

@media (min-width: 768px) {
    .service-single .entry-content h2,
    .page-about .entry-content h2,
    .page-center .entry-content h2 {
        font-size: 2.5rem; /* 40px — десктоп live .title */
        line-height: 1.25; /* ~50px при 40px */
    }
}

/* --- T15.2 Фото-секции media-text под live (.description/.list): фото — БОЛЬШИЙ
   блок, текст-колонка уже фото и justify. Базовый стек на мобильных задаёт S8.
   Зебра (#f6f8fb) убрана — на live секции на белом фоне. Скоуп — услуги/about/
   center. Ограничение по ширине ~1246px (live ._container) даёт правило ниже. --- */
.service-single .entry-content .wp-block-media-text,
.page-about .entry-content .wp-block-media-text,
.page-center .entry-content .wp-block-media-text {
    grid-template-columns: 56% 44%; /* фото больше текста (live 656/469) */
    align-items: center;
    margin-top: 0;
    margin-bottom: 0;
    padding-top: 2.5rem;
    padding-bottom: 2.5rem; /* вертикальный ритм 5rem между секциями (2×2.5rem) */
}

.service-single .entry-content .wp-block-media-text.has-media-on-the-right,
.page-about .entry-content .wp-block-media-text.has-media-on-the-right,
.page-center .entry-content .wp-block-media-text.has-media-on-the-right {
    grid-template-columns: 44% 56%;
}

/* Текст-колонка узкая (live max-width 469px), горизонтальные паддинги. */
.service-single .entry-content .wp-block-media-text .wp-block-media-text__content,
.page-about .entry-content .wp-block-media-text .wp-block-media-text__content,
.page-center .entry-content .wp-block-media-text .wp-block-media-text__content {
    padding-left: clamp(1.5rem, 4vw, 3rem);
    padding-right: clamp(1.5rem, 4vw, 3rem);
}

.service-single .entry-content .wp-block-media-text .wp-block-media-text__content > *,
.page-about .entry-content .wp-block-media-text .wp-block-media-text__content > *,
.page-center .entry-content .wp-block-media-text .wp-block-media-text__content > * {
    max-width: 469px;
}

.service-single .entry-content .wp-block-media-text .wp-block-media-text__media,
.page-about .entry-content .wp-block-media-text .wp-block-media-text__media,
.page-center .entry-content .wp-block-media-text .wp-block-media-text__media {
    margin-left: clamp(1rem, 3vw, 2rem);
}

.service-single .entry-content .wp-block-media-text.has-media-on-the-right .wp-block-media-text__media,
.page-about .entry-content .wp-block-media-text.has-media-on-the-right .wp-block-media-text__media,
.page-center .entry-content .wp-block-media-text.has-media-on-the-right .wp-block-media-text__media {
    margin-left: 0;
    margin-right: clamp(1rem, 3vw, 2rem);
}

/* Фото — натуральные пропорции (без вертикальной обрезки): ландшафтные показываются
   широкими, портретные — высокими, как на live (.description__image-place 656×410,
   .list__image-place 495×596). Перекрывает height:auto базового S8-правила. */
.service-single .entry-content .wp-block-media-text img,
.page-about .entry-content .wp-block-media-text img,
.page-center .entry-content .wp-block-media-text img {
    width: 100%;
    height: auto;
    border-radius: 0.5rem;
}

/* Текст фото-секций: 18px / line-height 26px, #555, justify (live .description__
   text / .list__text). Скоупим к содержимому media-text, чтобы не трогать cover. */
.service-single .entry-content .wp-block-media-text :is(p, li),
.page-about .entry-content .wp-block-media-text :is(p, li),
.page-center .entry-content .wp-block-media-text :is(p, li) {
    font-size: 1.125rem;
    line-height: 1.45;
    color: #555;
    text-align: justify;
}

/* На мобильных — секция складывается в стек (медиа над текстом). Базовый стек
   для .entry-content .wp-block-media-text задан в S8; здесь убираем боковые
   отступы медиа/контента и переводим текст на left для читабельности. */
@media (max-width: 767.98px) {
    .service-single .entry-content .wp-block-media-text,
    .page-about .entry-content .wp-block-media-text,
    .page-center .entry-content .wp-block-media-text {
        padding-top: 1.25rem;
        padding-bottom: 1.25rem; /* ритм 2.5rem (2×1.25rem) на мобильных */
    }

    .service-single .entry-content .wp-block-media-text .wp-block-media-text__media,
    .page-about .entry-content .wp-block-media-text .wp-block-media-text__media,
    .page-center .entry-content .wp-block-media-text .wp-block-media-text__media {
        margin-left: 0;
        margin-right: 0;
    }

    .service-single .entry-content .wp-block-media-text .wp-block-media-text__content,
    .page-about .entry-content .wp-block-media-text .wp-block-media-text__content,
    .page-center .entry-content .wp-block-media-text .wp-block-media-text__content {
        padding-left: var(--bs-gutter-x, 1.5rem);
        padding-right: var(--bs-gutter-x, 1.5rem);
    }

    .service-single .entry-content .wp-block-media-text .wp-block-media-text__content > *,
    .page-about .entry-content .wp-block-media-text .wp-block-media-text__content > *,
    .page-center .entry-content .wp-block-media-text .wp-block-media-text__content > * {
        max-width: none;
    }

    .service-single .entry-content .wp-block-media-text :is(p, li),
    .page-about .entry-content .wp-block-media-text :is(p, li),
    .page-center .entry-content .wp-block-media-text :is(p, li) {
        text-align: left;
    }
}

/* --- T15.5 Контейнер: секции «фото+текст» (media-text) ограничиваем по
   содержимому ~1246px (live ._container) и центрируем. Тёмная about-секция
   (cover) — НА ВСЮ ШИРИНУ (full-bleed, как live .about): фон во весь экран,
   а её внутренний контейнер ограничен 1246px (правило ниже). about/center уже
   внутри .container py-5, поэтому здесь — только .service-single. --- */
.service-single .entry-content .wp-block-media-text {
    max-width: 1246px;
    margin-left: auto;
    margin-right: auto;
}

/* --- T15.3 Cover/about-секция под live (.about): плоский оверлей
   rgba(23,23,23,0.651), контент центрирован по вертикали, текст 20px/28px
   #e7e7e7, заголовок белый + белое подчёркивание (см. T15.1). Выше min-height,
   но не строго 100vh — ради UX списка услуг. Скоуп — услуги/about/center. --- */
.service-single .entry-content .wp-block-cover,
.page-about .entry-content .wp-block-cover,
.page-center .entry-content .wp-block-cover {
    margin-top: 0;
    margin-bottom: 5rem;
    min-height: calc(100vh - 80px) !important; /* перебить инлайн style="min-height:360px" ядрового cover; live .about = 100vh */
    padding: 3rem clamp(1.5rem, 5vw, 4rem);
    align-items: center; /* контент по вертикали по центру (live .about) */
    color: #fff;
}

.service-single .entry-content .wp-block-cover .wp-block-cover__background,
.page-about .entry-content .wp-block-cover .wp-block-cover__background,
.page-center .entry-content .wp-block-cover .wp-block-cover__background {
    /* S15: плоский нейтральный оверлей live .about::after = rgba(23,23,23,0.651). */
    background-color: rgb(23, 23, 23) !important; /* перебить инлайн #010122 ядрового core/cover */
    opacity: 0.651;                                /* перебить has-background-dim-60 (0.6) → как live .about::after */
}

.service-single .entry-content .wp-block-cover :is(h2, h3, p, li, a),
.page-about .entry-content .wp-block-cover :is(h2, h3, p, li, a),
.page-center .entry-content .wp-block-cover :is(h2, h3, p, li, a) {
    color: #fff;
}

/* Текст cover/about: 20px / 28px, #e7e7e7 (live .about__text). */
.service-single .entry-content .wp-block-cover :is(p, li),
.page-about .entry-content .wp-block-cover :is(p, li),
.page-center .entry-content .wp-block-cover :is(p, li) {
    font-size: 1.25rem;
    line-height: 1.75;
    color: #e7e7e7;
}

/* Заголовок в cover/about — белый + белое подчёркивание (live .about__title). */
.service-single .entry-content .wp-block-cover h2::after,
.page-about .entry-content .wp-block-cover h2::after,
.page-center .entry-content .wp-block-cover h2::after {
    background-color: #fff;
}

/* Внутренний контейнер тёмной секции — по ширине контейнера live (1246px) и
   центрирован, а сам текст/заголовок/список прижат ВЛЕВО и ограничен ~730px
   (live .about__title-service 730px / .about__text-service 700px). */
.service-single .entry-content .wp-block-cover .wp-block-cover__inner-container,
.page-about .entry-content .wp-block-cover .wp-block-cover__inner-container,
.page-center .entry-content .wp-block-cover .wp-block-cover__inner-container {
    width: 100%;
    max-width: 1246px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 15px;
    padding-right: 15px;
}

.service-single .entry-content .wp-block-cover .wp-block-cover__inner-container > *,
.page-about .entry-content .wp-block-cover .wp-block-cover__inner-container > *,
.page-center .entry-content .wp-block-cover .wp-block-cover__inner-container > * {
    max-width: 730px;
    margin-left: 0;
    margin-right: auto;
}

/* ==========================================================================
   S16 (T16.4) — Текстовые секции услуг без фото как намеренные блоки.
   У части услуг не хватает профильных фото, поэтому отдельные разделы тела
   рендерятся без media-text/cover — обычными core/heading + core/paragraph/list
   (прямые дети .service-single .entry-content). Без выравнивания они «обрывают»
   дизайн: базовая типографика .entry-content (цвет/кегль) отличается от фото-
   секций (18px/#555/ритм, см. T15.2). Центрированную колонку ~720px этим секциям
   уже задаёт пре-существующее S14-правило (.entry-content > *:not(media-text):not(cover),
   см. выше); здесь только согласуем типографику абзацев/списков и вертикальный ритм
   с фото-секциями, чтобы текстовые разделы не «обрывали» дизайн. Скоуп строго
   .service-single (about/center уже в .container и под
   собственными S8/S15-правилами; новости/акции/архивы/контакты/главная не
   затрагиваются). Mobile-first; контраст AA (#555 на белом ≈ 7.5:1).
   ========================================================================== */

/* Абзацы и пункты списков текстовых секций — единая с фото-секциями типографика
   (live .description__text/.list__text: 18px / 26px / #555). На мобильных текст
   слева; на десктопе ровный край (justify), как в фото-секциях. */
.service-single .entry-content > p,
.service-single .entry-content > :is(ul, ol) li {
    font-size: 1.125rem; /* 18px */
    line-height: 1.45;
    color: #555;
}

/* Вертикальный ритм между текстовыми секциями: отступ перед заголовком раздела
   согласован с фото-секциями (5rem суммарно ≈ 2×2.5rem). Первый заголовок без
   верхнего отступа задаёт S15 (h2:first-child). h3 внутри текстовой секции
   (например, «Цели аудита», «Наша компания…» у консалтинга) — компактнее h2. */
.service-single .entry-content > h2 {
    margin-top: 5rem;
}

.service-single .entry-content > h3 {
    margin-top: 2rem;
    margin-bottom: 1rem;
    font-size: 1.375rem; /* 22px — подзаголовок раздела, мельче секционного h2 */
    line-height: 1.3;
    font-weight: 600;
    color: #333;
}

/* Завершающий абзац/список секции не липнет к следующему разделу. */
.service-single .entry-content > :is(p, ul, ol) {
    margin-bottom: 1.25rem;
}

.service-single .entry-content > :is(ul, ol) li {
    margin-bottom: 0.5rem;
}

@media (min-width: 768px) {
    /* Десктоп: ровный край абзацев — как в фото-секциях (live justify). */
    .service-single .entry-content > p {
        text-align: justify;
    }
}

@media (max-width: 767.98px) {
    /* Мобайл: убавляем межсекционный отступ под общий ритм 2.5rem. */
    .service-single .entry-content > h2 {
        margin-top: 2.5rem;
    }
}

/* ==========================================================================
   S10 — доступность: пагинация и prefers-reduced-motion (ADR-0013).
   ========================================================================== */

/* Активная страница пагинации Bootstrap: фон по умолчанию --bs-primary (2.73:1
   под белым текстом) — заменяем на контрастный токен ссылок. */
.pagination {
    --bs-pagination-active-bg: var(--kazpe-link);
    --bs-pagination-active-border-color: var(--kazpe-link);
}

/* reduced-motion: отключаем декоративные трансформации и переходы темы.
   Hero-видео отключает JS (initHeroVideo), карусель — штатный блок Bootstrap. */
@media (prefers-reduced-motion: reduce) {
    .site-header,
    .footer-totop,
    .kazpe-whatsapp-float,
    .home-hero__scroll,
    .service-card {
        transition: none;
    }

    .kazpe-whatsapp-float:hover,
    .kazpe-whatsapp-float:focus,
    .service-card:hover,
    .service-card:focus-within {
        transform: none;
    }

    /* Базовый сдвиг центрирования сохраняем, убираем только подскок. */
    .home-hero__scroll:hover,
    .home-hero__scroll:focus {
        transform: translateX(-50%);
    }
}
