/*
 * Оформление собственного интерфейса темы «Колодец Всем».
 *
 * Здесь только то, что раньше приезжало из чужих библиотек:
 * структура карусели (owl.carousel.min.css), показ модалки (bootstrap),
 * просмотрщик фотографий (easy-fancybox) и окно выбора города (select2).
 * Внешний вид блоков остаётся в style.css темы — его не дублируем.
 */

/* ═══ Модальные окна ═══════════════════════════════════════════════════ */
/*
 * ☠️ Одного display мало. В style.css из старой темы живёт правило
 * `.fade:not(.show) {opacity: 0}`, а у всех окон стоит класс `fade`.
 * Bootstrap снимал прозрачность, добавляя `show`; наш ui.js ставит
 * `is-open` — и окно открывалось полностью прозрачным. Выглядело так,
 * будто кнопки не работают: окно есть, но его не видно.
 */
.modal.is-open {display: block; opacity: 1;}
.modal {background-color: rgba(9, 30, 40, .55); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px);}
.modal.is-open .modal-dialog {animation: kv-slide .26s var(--kv-ease, cubic-bezier(.2,.8,.3,1));}
@keyframes kv-slide {from {transform: translateX(40px); opacity: 0;} to {transform: none; opacity: 1;}}

/* ═══ Карусель ═════════════════════════════════════════════════════════ */
/* Классы owl оставлены специально: под них уже написано оформление в style.css. */
.owl-carousel {position: relative;}
.owl-carousel.kpc {display: block; visibility: visible;}
.owl-stage-outer {overflow: hidden; width: 100%;}
.owl-stage {display: flex; align-items: stretch; will-change: transform; transition: transform .45s cubic-bezier(.22, .61, .36, 1);}
.owl-item {flex: 0 0 100%; min-width: 0; padding: 0 15px; box-sizing: border-box;}
.owl-item > * {height: 100%;}
.owl-nav[hidden], .owl-dots[hidden] {display: none !important;}
.owl-dots {display: inline-flex; flex-wrap: wrap; justify-content: center; align-items: center; margin-top: 16px; vertical-align: middle;}
.owl-dots button {padding: 0; border: 0; background: none; cursor: pointer;}
.kpc {cursor: grab;}
.kpc.is-dragging {cursor: grabbing; user-select: none;}
.kpc.is-dragging .owl-stage {transition: none;}
.kpc img {-webkit-user-drag: none; user-select: none;}
.kpc .owl-nav, .kpc .owl-dots {cursor: default;}
.owl-carousel {text-align: center;}
.owl-carousel .owl-stage-outer {text-align: left;}
@media (max-width: 767px) {.owl-item {padding: 0 8px;}}

/* Стрелки: раньше их рисовал owl своими SVG из настроек — теперь рисуем сами.
   ☠️ Вид кнопки был задан только для галереи работ, поэтому в остальных
   каруселях (отзывы, услуги) стрелки выглядели как голые символы «‹ ›»
   в рамке. Базовый вид теперь общий, галерея его лишь дополняет. */
/* Стрелки и точки — в одну строку: стрелки слева, точки следом. Раньше
   стояли друг под другом, и до точек приходилось тянуться отдельно. */
.owl-nav {display: inline-flex; align-items: center; justify-content: center; gap: 10px; margin: 16px 14px 0 0; vertical-align: middle;}
.owl-nav button {display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; background: #fff; border: 1px solid var(--kv-line); color: var(--primary-color); cursor: pointer; transition: border-color var(--kv-fast) var(--kv-ease), background-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease);}
.owl-nav button:hover {border-color: var(--primary-color); background: var(--primary-color); color: #fff;}
.owl-nav button:disabled {opacity: .4; cursor: default;}
.owl-nav button:disabled:hover {background: #fff; border-color: var(--kv-line); color: var(--primary-color);}
.owl-nav button::before {content: ""; width: 9px; height: 9px; border-left: 2px solid currentColor; border-bottom: 2px solid currentColor;}
.owl-nav .owl-prev::before {transform: rotate(45deg); margin-left: 3px;}
.owl-nav .owl-next::before {transform: rotate(-135deg); margin-right: 3px;}

/* ═══ Широкие таблицы ══════════════════════════════════════════════════ */
.table-wrapper {overflow-x: auto; -webkit-overflow-scrolling: touch; margin-bottom: 20px;}

/* ═══ Просмотрщик фотографий ═══════════════════════════════════════════ */
.lb {position: fixed; inset: 0; z-index: 99999; display: none; align-items: center; justify-content: center; background: rgba(15,18,22,.92); opacity: 0; transition: opacity .2s ease;}
.lb.is-open {display: flex; opacity: 1;}
.lb__stage {margin: 0; max-width: 92vw; max-height: 92vh; display: flex; flex-direction: column; align-items: center; gap: 12px;}
.lb__img {max-width: 92vw; max-height: 82vh; object-fit: contain; border-radius: 4px; background: #fff; cursor: zoom-in; transition: transform .25s ease; box-shadow: 0 20px 60px rgba(0,0,0,.45);}
.lb__img.is-zoomed {transform: scale(1.7); cursor: zoom-out;}
.lb__cap {color: #e8eaed; font-size: 15px; line-height: 1.45; text-align: center; max-width: 760px; padding: 0 12px;}
.lb__counter {position: absolute; top: 18px; left: 22px; color: #c8ccd2; font-size: 14px;}
.lb__close {position: absolute; top: 10px; right: 14px; width: 44px; height: 44px; border: 0; background: transparent; color: #fff; font-size: 34px; line-height: 1; cursor: pointer; opacity: .75; transition: opacity .15s ease;}
.lb__close:hover {opacity: 1;}
.lb__nav {position: absolute; top: 50%; transform: translateY(-50%); width: 52px; height: 52px; border: 0; border-radius: 50%; background: rgba(255,255,255,.1); color: #fff; font-size: 34px; line-height: 1; cursor: pointer; transition: background .15s ease;}
.lb__nav:hover {background: rgba(255,255,255,.22);}
.lb__prev {left: 16px;}
.lb__next {right: 16px;}
.lb.is-loading .lb__img {opacity: .35;}
body.lb-open {overflow: hidden;}
a[data-lb] img, a[data-fancybox] img, a.fancybox img {transition: filter .15s ease;}
a[data-lb]:hover img, a[data-fancybox]:hover img, a.fancybox:hover img {filter: brightness(1.05);}
a[data-lb], a[data-fancybox], a.fancybox {cursor: zoom-in;}
@media (max-width: 767px) {
	.lb__nav {width: 44px; height: 44px; font-size: 28px;}
	.lb__prev {left: 6px;}
	.lb__next {right: 6px;}
	.lb__img {max-height: 74vh;}
	.lb__cap {font-size: 14px;}
}

/* ═══ Выбор города ═════════════════════════════════════════════════════ */
/* Карточка по центру вместо панели во весь экран: список из 66 адресов
   удобнее читать колонками, разложенными по регионам. */
.kv-city .modal-dialog {position: relative; right: auto; height: auto; max-width: 1060px; width: calc(100% - 32px); margin: 5vh auto; background: transparent; padding: 0;}
.kv-city .modal-content {background: #fff; border-radius: 18px; box-shadow: 0 30px 80px rgba(9,30,40,.35); overflow: hidden; max-height: 90vh; display: flex; flex-direction: column;}
.kv-city .modal-body {padding: 0; display: flex; flex-direction: column; min-height: 0;}

.kv-city__head {display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 26px 30px 18px; border-bottom: 1px solid var(--kv-line);}
.kv-city__title {font-size: 26px; font-weight: 800; letter-spacing: -0.025em; color: var(--kv-ink); line-height: 1.15;}
.kv-city__sub {margin-top: 6px; font-size: 15px; color: var(--kv-muted);}
.kv-city__close {flex: 0 0 auto; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; border: 0; background: var(--kv-bg); color: var(--kv-muted); border-radius: 10px; cursor: pointer; transition: background-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease);}
.kv-city__close:hover {background: var(--kv-deep); color: #fff;}

.kv-city__search {position: relative; padding: 18px 30px; border-bottom: 1px solid var(--kv-line); background: #fff;}
.kv-city__search svg {position: absolute; left: 46px; top: 50%; transform: translateY(-50%); color: var(--kv-muted); pointer-events: none;}
.kv-city .city-search {width: 100%; padding: 14px 18px 14px 46px; font-size: 17px; font-family: inherit; color: var(--kv-ink); border: 1.5px solid var(--kv-line); border-radius: 10px; outline: none; background: #fff; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-city .city-search::placeholder {color: #9aa4ad;}
.kv-city .city-search:focus {border-color: var(--primary-color); box-shadow: 0 0 0 4px rgba(21,126,150,.12);}

.kv-city__body {padding: 22px 30px 30px; overflow-y: auto; overscroll-behavior: contain; min-height: 0;}
.kv-city__group + .kv-city__group {margin-top: 26px;}
.kv-city__group[hidden] {display: none;}
.kv-city__region {display: flex; align-items: center; gap: 10px; font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--primary-color); margin: 0 0 12px; padding: 0;}
.kv-city__region span {display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 20px; padding: 0 6px; border-radius: 999px; background: var(--kv-tint); color: var(--primary-color); font-size: 11px; letter-spacing: 0;}

.kv-city .city-list {list-style: none; margin: 0; padding: 0; columns: 4; column-gap: 26px;}
.kv-city .city-list li {break-inside: avoid; margin-bottom: 2px;}
.kv-city .city-list a {display: block; padding: 8px 12px; font-size: 15.5px; color: var(--kv-ink); border-radius: 8px; transition: background-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease);}
.kv-city .city-list a:hover {background: var(--kv-tint); color: var(--primary-color);}
.kv-city .city-list a.is-current {font-weight: 700; color: var(--primary-color); background: var(--kv-tint);}
.kv-city .city-list a.is-current::after {content: "вы здесь"; margin-left: 8px; font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--kv-wood);}

.kv-city .city-empty {display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; padding: 34px 20px;}
.kv-city .city-empty strong {font-size: 18px; color: var(--kv-ink);}
.kv-city .city-empty span {color: var(--kv-muted);}
.kv-city .city-empty .button {margin-top: 8px;}

@media (max-width: 1199px) {.kv-city .city-list {columns: 3;}}
@media (max-width: 767px) {
	.kv-city .modal-dialog {width: 100%; margin: 0; max-width: none; height: 100%;}
	.kv-city .modal-content {border-radius: 0; max-height: 100%; height: 100%;}
	.kv-city__head {padding: 18px 18px 14px;}
	.kv-city__title {font-size: 21px;}
	.kv-city__sub {font-size: 13.5px;}
	.kv-city__search {padding: 14px 18px;}
	.kv-city__search svg {left: 34px;}
	.kv-city__body {padding: 16px 18px 24px;}
	.kv-city .city-list {columns: 2; column-gap: 12px;}
	.kv-city .city-list a {padding: 9px 8px; font-size: 14.5px;}
	.kv-city .city-list a.is-current::after {display: none;}
}
@media (max-width: 400px) {.kv-city .city-list {columns: 1;}}

/* ═══ Согласие на обработку данных в формах ════════════════════════════ */
.kv-consent {display: flex; align-items: flex-start; gap: 10px; margin: 0 0 18px; font-size: 13px; line-height: 1.45; color: #6c7178; text-align: left;}
.kv-consent input[type="checkbox"] {-webkit-appearance: auto; appearance: auto; width: 17px; height: 17px; margin: 2px 0 0; flex: 0 0 auto; accent-color: var(--primary-color, #51a8ce); cursor: pointer;}
.kv-consent a {color: var(--primary-color, #51a8ce); text-decoration: underline;}
.kv-consent .wpcf7-not-valid-tip {display: block; margin-top: 4px;}

/* ═══ Кнопка «наверх» ══════════════════════════════════════════════════ */
/* Раньше показ и скрытие делал jQuery через fadeIn/fadeOut прямо в подвале.
   Теперь состояние — один класс от assets/ui.js, анимация — на CSS. */
.btn-back-top {visibility: hidden; transition: opacity .25s ease, visibility .25s ease;}
.btn-back-top.is-visible {visibility: visible; opacity: .8;}

/* ═══ Цифры доверия под первым экраном ═════════════════════════════════ */
/* На первом экране не было ни одного числа: ни стажа, ни объёма работ,
   ни условий оплаты. Полоса ставится сразу под hero, до фотогалереи. */
.kv-trust {padding-top: 0 !important;}
/* Пунктов шесть. С `auto-fit` их раскладывало по пять в ряд, а шестой уезжал
   на вторую строку и рядом оставалась пустая половина полосы — недоделанный
   вид. Поэтому сетка жёсткая: три колонки в два ряда. */
.kv-trust__grid {display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border: 1px solid #e3e9ee; border-radius: 12px; overflow: hidden; background: #fff;}
.kv-trust__item {padding: 26px 28px; border-right: 1px solid #e3e9ee; border-bottom: 1px solid #e3e9ee;}
.kv-trust__item:nth-child(3n) {border-right: 0;}
.kv-trust__item:nth-last-child(-n+3) {border-bottom: 0;}
.kv-trust__num {font-size: 38px; line-height: 1.1; font-weight: 700; color: var(--primary-color, #51a8ce); display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;}
.kv-trust__unit {font-size: 17px; font-weight: 500; color: #2c2c2c;}
.kv-trust__label {margin-top: 10px; font-size: 15px; line-height: 1.45; color: #6c7178;}
@media (max-width: 991px) {
	.kv-trust__grid {grid-template-columns: 1fr 1fr;}
	.kv-trust__item {border-bottom: 1px solid #e3e9ee;}
	.kv-trust__item:nth-child(2n) {border-right: 0;}
	.kv-trust__item:nth-last-child(-n+2) {border-bottom: 0;}
	.kv-trust__num {font-size: 30px;}
}
@media (max-width: 575px) {
	.kv-trust__item {padding: 18px 16px;}
	.kv-trust__num {font-size: 26px;}
	.kv-trust__label {font-size: 14px;}
}

/* ═══ Логотип ══════════════════════════════════════════════════════════ */
/* Знак — инлайновый SVG, название набрано шрифтом сайта.
   Раньше это была картинка с латиницей «Kolodec-Vsem» на русском сайте. */
.kv-logo {display: inline-flex; align-items: center; gap: 12px; text-decoration: none; color: inherit;}
.kv-logo:hover {text-decoration: none;}
.kv-logo__mark {flex: 0 0 auto; line-height: 0;}
.kv-logo__mark svg {width: 46px; height: 46px; display: block; transition: transform .25s ease;}
.kv-logo:hover .kv-logo__mark svg {transform: rotate(-8deg);}
.kv-logo__ring {stroke: var(--kv-deep);}
.kv-logo__text {display: flex; flex-direction: column; gap: 2px; min-width: 0;}
.kv-logo__name {font-size: 23px; font-weight: 800; line-height: 1; letter-spacing: -0.035em; color: var(--kv-deep); white-space: nowrap;}
.kv-logo__accent {color: var(--kv-wood);}
.kv-logo__tag {font-size: 11.5px; font-weight: 500; line-height: 1.2; letter-spacing: .01em; color: var(--kv-muted); white-space: nowrap;}

/* На тёмном фоне подвала */
.kv-logo--light .kv-logo__ring {stroke: #fff;}
.kv-logo--light .kv-logo__name {color: #fff;}
.kv-logo--light .kv-logo__tag {color: rgba(255,255,255,.65);}

@media (max-width: 991px) {
	.kv-logo {gap: 10px;}
	.kv-logo__mark svg {width: 38px; height: 38px;}
	.kv-logo__name {font-size: 19px;}
	.kv-logo__tag {font-size: 10.5px;}
}
@media (max-width: 359px) {
	.kv-logo__tag {display: none;}
}

/* ═══ Плавающий блок связи ═════════════════════════════════════════════ */
/* Был набор голых круглых иконок с двумя пульсирующими кольцами: на телефоне
   раскрывался сам и закрывал текст, а куда ведёт иконка — понималось только
   по цвету. Стало: карточка с подписями, что даёт каждый канал. */
/* ☠️ Контейнер сквозной для кликов: свёрнутая панель связи занимает место
   над кнопкой и своей невидимой площадью перехватывала клики по кнопке
   «наверх» — та была видна, но не нажималась. Клики ловят только
   сама кнопка и раскрытая панель. */
.kv-dock {position: fixed; right: 18px; bottom: calc(18px + var(--kv-cookie-h, 0px)); z-index: 9998; display: flex; flex-direction: column; align-items: flex-end; gap: 12px; pointer-events: none; opacity: 0; transition: opacity var(--kv-slow) var(--kv-ease);}
/* Показываем панель и кнопку «наверх» только после того, как измерили
   плашку cookie: до этого их перемещение засчитывалось как скачок вёрстки. */
html.kv-floats-ready .kv-dock {opacity: 1;}
.kv-dock__toggle {pointer-events: auto;}
.kv-dock__panel {pointer-events: none;}
.kv-dock.is-open .kv-dock__panel {pointer-events: auto;}

.kv-dock__toggle {width: 58px; height: 58px; border: 0; border-radius: 50%; background: var(--kv-deep); color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: 0 8px 24px rgba(13,63,82,.32); transition: background-color var(--kv-fast) var(--kv-ease), transform var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-dock__toggle:hover {background: var(--primary-color); transform: translateY(-2px); box-shadow: 0 12px 30px rgba(13,63,82,.38);}
.kv-dock__toggle:focus-visible {outline: 3px solid var(--kv-fresh); outline-offset: 3px;}
.kv-dock__toggle-close {display: none;}
.kv-dock.is-open .kv-dock__toggle-open {display: none;}
.kv-dock.is-open .kv-dock__toggle-close {display: block;}
.kv-dock.is-open .kv-dock__toggle {background: var(--kv-muted);}

.kv-dock__panel {width: 306px; max-width: calc(100vw - 36px); background: #fff; border-radius: 16px; box-shadow: 0 18px 50px rgba(9,30,40,.22); overflow: hidden; opacity: 0; visibility: hidden; transform: translateY(10px) scale(.98); transform-origin: bottom right; transition: opacity var(--kv-slow) var(--kv-ease), transform var(--kv-slow) var(--kv-ease), visibility var(--kv-slow);}
.kv-dock.is-open .kv-dock__panel {opacity: 1; visibility: visible; transform: none;}

.kv-dock__head {padding: 16px 18px 12px; background: var(--kv-deep); color: #fff;}
.kv-dock__title {display: block; font-size: 16px; font-weight: 700; letter-spacing: -0.015em;}
.kv-dock__note {display: block; margin-top: 3px; font-size: 12.5px; color: rgba(255,255,255,.7);}

.kv-dock__row {display: flex; align-items: center; gap: 12px; padding: 12px 18px; border-bottom: 1px solid var(--kv-line); transition: background-color var(--kv-fast) var(--kv-ease);}
.kv-dock__row:last-child {border-bottom: 0;}
.kv-dock__row:hover {background: var(--kv-tint);}
.kv-dock__ico {flex: 0 0 auto; width: 38px; height: 38px; border-radius: 10px; background: var(--kv-tint); color: var(--primary-color); display: flex; align-items: center; justify-content: center;}
.kv-dock__ico img {width: 34px; height: 34px; border-radius: 8px;}
.kv-dock__row--call .kv-dock__ico {background: var(--kv-wood); color: #fff;}
.kv-dock__text {display: flex; flex-direction: column; min-width: 0;}
.kv-dock__text strong {font-size: 15px; font-weight: 700; color: var(--kv-ink); letter-spacing: -0.01em; white-space: nowrap;}
.kv-dock__text small {font-size: 12.5px; color: var(--kv-muted); line-height: 1.3;}

/* Кнопка «наверх» встаёт над блоком связи, а не поверх него. */
.btn-back-top {right: 18px !important; bottom: calc(88px + var(--kv-cookie-h, 0px)) !important; z-index: 9997; transition: opacity .25s ease, visibility .25s ease;}

@media (max-width: 767px) {
	.kv-dock {right: 12px; bottom: calc(12px + var(--kv-cookie-h, 0px));}
	.kv-dock__toggle {width: 52px; height: 52px;}
	.kv-dock__panel {width: 290px;}
	.btn-back-top {right: 12px !important; bottom: calc(76px + var(--kv-cookie-h, 0px)) !important; width: 42px; height: 42px;}
}

/* ═══ География работы ═════════════════════════════════════════════════ */
/* Было 66 названий серым текстом в четыре колонки на фоне карты всей России,
   при том что работа идёт по Подмосковью и соседним областям. */
.kv-geo {background: var(--kv-bg);}
.kv-geo__head {display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin-bottom: 28px;}
.kv-geo__title {margin: 0 !important; padding: 0 !important; font-size: 34px;}
.kv-geo__sub {margin: 10px 0 0; max-width: 62ch; color: var(--kv-muted); font-size: 16px; line-height: 1.55;}
.kv-geo__pick {display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; padding: 12px 20px; border: 1.5px solid var(--primary-color); border-radius: var(--kv-radius-sm); color: var(--primary-color) !important; font-weight: 600; background: #fff; transition: background-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease);}
.kv-geo__pick:hover {background: var(--primary-color); color: #fff !important;}

.kv-geo__main {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 22px 24px;}
.kv-geo__region {display: flex; align-items: center; gap: 9px; margin: 0 0 14px; padding: 0; font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--primary-color);}
.kv-geo__region span {display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 20px; padding: 0 6px; border-radius: 999px; background: var(--kv-tint); font-size: 11px; letter-spacing: 0;}
.kv-geo__list {display: flex; flex-wrap: wrap; gap: 8px;}
.kv-geo__list a {display: inline-block; padding: 7px 14px; font-size: 15px; color: var(--kv-ink) !important; background: var(--kv-bg); border: 1px solid transparent; border-radius: 999px; transition: background-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease), border-color var(--kv-fast) var(--kv-ease);}
.kv-geo__list a:hover {background: var(--primary-color); color: #fff !important;}
.kv-geo__list a.is-current {background: var(--kv-tint); border-color: var(--primary-color); color: var(--primary-color) !important; font-weight: 600;}

.kv-geo__rest {display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 18px; margin-top: 18px; align-items: start;}
.kv-geo__col {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 18px 20px;}
.kv-geo__col .kv-geo__list a {font-size: 14.5px; padding: 6px 12px;}

.kv-geo__more {display: inline-block; margin-top: 22px; font-weight: 600; color: var(--primary-color) !important; border-bottom: 1.5px solid transparent; transition: border-color var(--kv-fast) var(--kv-ease);}
.kv-geo__more:hover {border-bottom-color: var(--primary-color);}

@media (max-width: 767px) {
	.kv-geo__head {margin-bottom: 20px;}
	.kv-geo__title {font-size: 26px;}
	.kv-geo__sub {font-size: 15px;}
	.kv-geo__pick {width: 100%; justify-content: center;}
	.kv-geo__main, .kv-geo__col {padding: 16px 16px;}
	.kv-geo__list a {font-size: 14px; padding: 6px 12px;}
}

/* ═══ Страница «Районы выезда» ═════════════════════════════════════════ */
.kv-geopage {padding: 28px 0 60px;}
.kv-geopage__hero {max-width: 860px; margin-bottom: 30px;}
.kv-geopage h1 {font-size: 42px; margin-bottom: 16px !important;}
.kv-geopage__lead {font-size: 19px; line-height: 1.6; color: #33424b; margin: 0;}
.kv-geopage__lead strong {color: var(--kv-ink); font-weight: 700;}

.kv-geopage__facts {display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; margin-top: 26px; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); overflow: hidden; background: #fff;}
.kv-geopage__facts > div {padding: 18px 20px; border-right: 1px solid var(--kv-line);}
.kv-geopage__facts > div:last-child {border-right: 0;}
.kv-geopage__facts strong {display: block; font-size: 24px; font-weight: 800; color: var(--kv-wood); letter-spacing: -0.02em;}
.kv-geopage__facts span {display: block; margin-top: 4px; font-size: 14.5px; color: var(--kv-muted); line-height: 1.4;}

.kv-geopage__search {position: relative; margin: 0 0 30px;}
.kv-geopage__search svg {position: absolute; left: 18px; top: 50%; transform: translateY(-50%); color: var(--kv-muted); pointer-events: none;}
.kv-geopage__search input {width: 100%; max-width: 620px; padding: 15px 18px 15px 48px; font-size: 17px; font-family: inherit; color: var(--kv-ink); background: #fff; border: 1.5px solid var(--kv-line); border-radius: 10px; outline: none; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-geopage__search input:focus {border-color: var(--primary-color); box-shadow: 0 0 0 4px rgba(21,126,150,.12);}

.kv-geopage__group {margin-bottom: 26px;}
.kv-geopage__group[hidden] {display: none;}
.kv-geopage__group h2 {display: flex; align-items: center; gap: 10px; font-size: 15px !important; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--primary-color); margin: 0 0 14px !important; padding: 0 !important;}
.kv-geopage__group h2 span {display: inline-flex; align-items: center; justify-content: center; min-width: 24px; height: 22px; padding: 0 7px; border-radius: 999px; background: var(--kv-tint); font-size: 12px; letter-spacing: 0;}
.kv-geopage__list {display: flex; flex-wrap: wrap; gap: 8px;}
.kv-geopage__list a {display: inline-block; padding: 9px 16px; font-size: 15.5px; color: var(--kv-ink) !important; background: #fff; border: 1px solid var(--kv-line); border-radius: 999px; transition: background-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease), border-color var(--kv-fast) var(--kv-ease);}
.kv-geopage__list a:hover {background: var(--primary-color); border-color: var(--primary-color); color: #fff !important;}
.kv-geopage__list a.is-current {background: var(--kv-tint); border-color: var(--primary-color); color: var(--primary-color) !important; font-weight: 600;}
.kv-geopage__list a[hidden] {display: none;}

.kv-geopage__empty[hidden] {display: none;}
.kv-geopage__empty {display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; padding: 34px 20px; background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); margin-bottom: 26px;}
.kv-geopage__empty strong {font-size: 19px;}
.kv-geopage__empty span {color: var(--kv-muted);}

.kv-geopage__services {margin: 44px 0 40px; padding: 28px 30px; background: var(--kv-tint); border-radius: var(--kv-radius);}
.kv-geopage__services h2 {font-size: 28px !important; margin: 0 0 8px !important; padding: 0 !important;}
.kv-geopage__services p {margin: 0 0 18px; color: var(--kv-muted);}
.kv-geopage__svc {display: flex; flex-wrap: wrap; gap: 10px;}
.kv-geopage__svc a {display: inline-block; padding: 11px 18px; background: #fff; border-radius: var(--kv-radius-sm); font-weight: 600; color: var(--primary-color) !important; border: 1px solid transparent; transition: background-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease), border-color var(--kv-fast) var(--kv-ease);}
.kv-geopage__svc a:hover {background: var(--primary-color); color: #fff !important;}

.kv-geopage__faq h2 {font-size: 30px !important; margin: 0 0 18px !important; padding: 0 !important;}

@media (max-width: 767px) {
	.kv-geopage {padding: 18px 0 44px;}
	.kv-geopage h1 {font-size: 28px;}
	.kv-geopage__lead {font-size: 16.5px;}
	.kv-geopage__facts {grid-template-columns: 1fr;}
	.kv-geopage__facts > div {border-right: 0; border-bottom: 1px solid var(--kv-line);}
	.kv-geopage__facts > div:last-child {border-bottom: 0;}
	.kv-geopage__list a {font-size: 14.5px; padding: 8px 14px;}
	.kv-geopage__services {padding: 20px 18px; margin: 32px 0 30px;}
	.kv-geopage__services h2 {font-size: 22px !important;}
	.kv-geopage__faq h2 {font-size: 24px !important;}
}

/* ═══ Блок преимуществ ═════════════════════════════════════════════════ */
/* Было: три пункта, огромные «01 02 03» цветом ссылки и мелкий текст
   рядом — цифра перетягивала внимание на себя, а читать надо было текст.
   Стало: цифра становится спокойной меткой, текст — главным. */
.order-section__bg {box-shadow: 0 2px 8px rgba(13,63,82,.05), 0 18px 44px rgba(13,63,82,.08) !important; border: 1px solid var(--kv-line); border-radius: var(--kv-radius) !important;}
.order-section__title {letter-spacing: -0.02em;}
.order-section__item {transition: transform var(--kv-fast) var(--kv-ease);}
.order-section__wrap {display: flex; align-items: flex-start; gap: 16px;}
.order-section__num {font-size: 15px !important; font-weight: 800 !important; letter-spacing: .02em; color: #fff !important; background: var(--kv-wood); width: 38px; height: 38px; min-width: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center; line-height: 1;}
.order-section__text {margin-left: 0 !important; font-size: 16.5px !important; line-height: 1.55 !important; color: #2b3840;}
.order-section__text strong, .order-section__text b {color: var(--kv-ink); font-weight: 700;}

/* ═══ Карточки услуг и «Рекомендуем посмотреть» ════════════════════════ */
/* Карточки услуг были с одинаковой галочкой у каждой — иконка ничего
   не сообщала. Убираем её вес, поднимаем цену и название. */
#prem .item {border: 1px solid var(--kv-line) !important; box-shadow: 0 2px 8px rgba(13,63,82,.05) !important; border-radius: var(--kv-radius) !important; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease), transform var(--kv-fast) var(--kv-ease);}
#prem .item:hover {border-color: var(--primary-color) !important; box-shadow: 0 8px 26px rgba(13,63,82,.12) !important; transform: translateY(-2px);}
#prem .item .title {font-size: 19px; font-weight: 700; letter-spacing: -0.015em; color: var(--kv-ink);}
#prem .price {font-size: 20px !important; font-weight: 800 !important; color: var(--kv-wood) !important; letter-spacing: -0.02em;}
#prem img {opacity: .85;}

/* Теги «Рекомендуем посмотреть»: сплошная заливка цветом ссылки читалась
   как ряд кнопок одинаковой важности. */
#tags a {background-color: #fff !important; color: var(--primary-color) !important; border: 1px solid var(--kv-line); font-weight: 600; border-radius: 999px !important; padding: 11px 20px !important;}
#tags a:hover {background-color: var(--kv-wood) !important; border-color: var(--kv-wood); color: #fff !important; transform: translateY(-1px);}
.kv-tags {display: flex; flex-wrap: wrap; gap: 10px;}
.kv-tags a {display: inline-flex !important; align-items: center; white-space: nowrap;}
@media (max-width: 575px) {.kv-tags a {white-space: normal;}}

/* ═══ Первый экран: карточки-обещания ══════════════════════════════════ */
/* Были две коробки с чёрной рамкой в 1 px и радиусом 5 px — выглядели как
   набросок вёрстки. Стали карточки с галочкой и выделенным первым словом. */
#slider .inf {gap: 14px; margin-top: 26px;}
#slider .items-slider {margin-top: 0 !important; border: 1px solid var(--kv-line) !important; border-radius: var(--kv-radius) !important; padding: 18px 20px 18px 50px !important; background: #fff; position: relative; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
#slider .items-slider:hover {border-color: var(--primary-color) !important; box-shadow: 0 6px 20px rgba(13,63,82,.08);}
#slider .items-slider::before {content: ""; position: absolute; left: 18px; top: 20px; width: 20px; height: 20px; border-radius: 50%; background: var(--kv-tint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23157e96' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12.5l5.5 5.5L20 7'/%3E%3C/svg%3E") center/13px 13px no-repeat;}
#slider .items-slider .text {font-size: 15.5px; line-height: 1.5; color: #33424b;}
/* ☠️ Плитки в две колонки: длинное слово («Энергонезависимые») задавало min-content и растягивало весь первый экран за край телефона. */
#slider .items-slider {min-width: 0;}
#slider .items-slider .text {overflow-wrap: anywhere; hyphens: auto;}
#slider .items-slider .text strong, #slider .items-slider .text b {display: block; margin-bottom: 3px; color: var(--kv-ink); font-weight: 700; font-size: 16px;}

/* Телефон и мессенджеры под карточками */
.contact-socials {margin-top: 24px !important; gap: 12px !important; padding: 14px 18px; background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); display: inline-flex !important;}
.contact-socials .msg-item img {width: 30px; height: 30px; border-radius: 8px;}
.telephone {font-size: 22px !important; font-weight: 800; letter-spacing: -0.02em; color: var(--kv-ink) !important; margin-left: 4px;}
.telephone:hover {color: var(--primary-color) !important;}

a.url-gallery {display: inline-flex; align-items: center; gap: 7px; margin-top: 16px; font-weight: 600; color: var(--primary-color) !important; border-bottom: 1.5px solid transparent; text-decoration: none !important; transition: border-color var(--kv-fast) var(--kv-ease);}
a.url-gallery::after {content: "→"; font-size: 17px; line-height: 1;}
a.url-gallery:hover {border-bottom-color: var(--primary-color);}

/* ═══ Преимущества: полноценные карточки ═══════════════════════════════ */
/* Три пункта в ряд без разделителей читались как сплошной текст. */
.order-section__list {gap: 0 !important;}
.order-section__item {padding: 4px 26px; border-left: 1px solid var(--kv-line);}
.order-section__item:first-child {border-left: 0; padding-left: 0;}
.order-section__title {font-size: 30px; margin-bottom: 22px !important;}
@media (max-width: 991px) {
	.order-section__item {border-left: 0; padding: 0 0 18px; border-bottom: 1px solid var(--kv-line);}
	.order-section__item:last-child {border-bottom: 0; padding-bottom: 0;}
	.order-section__item + .order-section__item {padding-top: 18px;}
}

/* ═══ Цены под ключ ════════════════════════════════════════════════════ */
#prem {background: var(--kv-bg) !important;}
#prem .item {padding: 26px 26px 24px !important; display: flex !important; flex-direction: column; gap: 0;}
#prem .item img {width: 44px; height: 44px; margin-bottom: 14px !important;}
#prem .item .title {margin-bottom: auto; padding-bottom: 18px;}
#prem .col-pc-2 {margin-top: 0 !important; padding-top: 18px; border-top: 1px solid var(--kv-line); gap: 12px;}
#prem .item .button {padding: 11px 22px !important; font-size: 15px;}

/* ═══ «Задайте любой вопрос» ═══════════════════════════════════════════ */
#form .title {font-size: 36px !important; font-weight: 800; letter-spacing: -0.03em; line-height: 1.12; color: var(--kv-ink); margin-bottom: 14px;}
#form .st {font-size: 18px; line-height: 1.55; color: var(--kv-muted); margin-bottom: 26px; max-width: 46ch;}
#form .button {padding: 16px 36px !important; font-size: 17px;}
#form .call {margin-top: 30px; padding-top: 24px; border-top: 1px solid var(--kv-line);}
#form .call .t {font-size: 15px !important; font-weight: 600; color: var(--kv-muted); margin-bottom: 14px;}
#form #soc_icons {align-items: center; gap: 18px !important;}
#form .call a[href^="tel"], #form .call .phone {font-size: 26px; font-weight: 800; letter-spacing: -0.02em; color: var(--kv-ink) !important;}
#form .call a[href^="tel"]:hover {color: var(--primary-color) !important;}
#form .call a[href^="mailto"] {color: var(--primary-color) !important; font-weight: 600;}
#form .call img {width: 30px; height: 30px; border-radius: 8px;}

/* ═══ «Свяжитесь с нами прямо сейчас» ══════════════════════════════════ */
/* ☠️ Заголовок был чёрным на бирюзовом: общее правило цвета заголовков
   перебило белый. Кнопка была чёрной — вне палитры. */
#forma2 .grid {padding: 34px 38px !important; border-radius: var(--kv-radius) !important; background: linear-gradient(135deg, var(--kv-deep) 0%, var(--primary-color) 100%) !important; align-items: center;}
#forma2 h2 {color: #fff !important; border-right: 1px solid rgba(255,255,255,.28) !important; padding-right: 30px !important; padding-top: 0 !important; padding-bottom: 0 !important; margin: 0 !important; font-size: 30px !important; line-height: 1.15;}
#forma2 p {color: rgba(255,255,255,.85) !important; margin: 0; font-size: 17px; line-height: 1.5;}
#forma2 .button {background-color: var(--kv-wood) !important; margin-bottom: 0 !important; padding: 15px 32px !important; font-size: 16px;}
#forma2 .button:hover {background-color: var(--kv-wood-hover) !important;}
#forma2 .btn {display: flex; flex-direction: column; align-items: flex-start; gap: 14px;}
#forma2 .soc {display: flex; gap: 10px;}
#forma2 img {width: 34px !important; height: 34px; border-radius: 9px;}
@media (max-width: 991px) {
	#forma2 .grid {padding: 24px 20px !important; gap: 18px;}
	#forma2 h2 {border-right: 0 !important; padding-right: 0 !important; font-size: 24px !important;}
	#forma2 .btn {align-items: stretch;}
	#forma2 .button {text-align: center;}
	#forma2 .soc {justify-content: center;}
	#form .title {font-size: 26px !important;}
	#form .st {font-size: 16px;}
	#slider .items-slider {padding: 16px 16px 16px 46px !important;}
}

/* Одинаковая галочка на всех трёх карточках цен ничего не сообщала —
   место лучше отдать названию и цене. */
#prem .item img {display: none;}
#prem .item .title {font-size: 20px; line-height: 1.35;}
#prem .price {font-size: 22px !important;}

/* Блок «Задайте вопрос»: контакты собраны в карточку, чтобы колонка
   не заканчивалась пустотой рядом с макетом телефона. */
#form .call {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 20px 22px; margin-top: 28px;}
#form .call .t {margin-bottom: 16px;}
#form #soc_icons {display: flex !important; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px !important;}
#form #soc_icons > * {display: flex; align-items: center; gap: 12px;}
#form .call a[href^="mailto"] {font-size: 16px;}
@media (max-width: 767px) {
	#form #soc_icons {justify-content: flex-start;}
	#form .call a[href^="tel"], #form .call .phone {font-size: 22px;}
}

/* ═══ Мобильное меню ═══════════════════════════════════════════════════ */
/* Было: логотип, плоский список и мелкий блок контактов — всё одного веса.
   Стало: сверху звонок, ниже разделы, ниже мессенджеры и город. */
.kv-mm .modal-dialog {position: relative !important; right: auto !important; width: 100% !important; max-width: none !important; height: 100% !important; margin: 0 !important; padding: 0 !important; background: #fff;}
.kv-mm .modal-content {height: 100%; display: flex; flex-direction: column; border: 0;}
.kv-mm .modal-body {padding: 0 !important; display: flex; flex-direction: column; min-height: 0; height: 100%;}

.kv-mm__head {display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 18px; border-bottom: 1px solid var(--kv-line); flex: 0 0 auto;}
.kv-mm__close {width: 42px; height: 42px; flex: 0 0 auto; display: flex; align-items: center; justify-content: center; border: 0; background: var(--kv-bg); color: var(--kv-muted); border-radius: 11px; cursor: pointer; transition: background-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease);}
.kv-mm__close:hover {background: var(--kv-deep); color: #fff;}

.kv-mm__body {padding: 16px 18px 28px; overflow-y: auto; overscroll-behavior: contain; flex: 1 1 auto; min-height: 0;}

.kv-mm__cta {display: flex; align-items: center; gap: 13px; padding: 14px 16px; background: var(--kv-deep); border-radius: var(--kv-radius); color: #fff !important; margin-bottom: 18px;}
.kv-mm__cta-ico {width: 40px; height: 40px; flex: 0 0 auto; border-radius: 11px; background: var(--kv-wood); display: flex; align-items: center; justify-content: center;}
.kv-mm__cta-text {display: flex; flex-direction: column; min-width: 0;}
.kv-mm__cta-text strong {font-size: 19px; font-weight: 800; letter-spacing: -0.02em; white-space: nowrap;}
.kv-mm__cta-text small {font-size: 12.5px; color: rgba(255,255,255,.72); margin-top: 2px;}

.kv-mm__nav .nav {list-style: none; margin: 0; padding: 0;}
.kv-mm__nav .nav > li {border-bottom: 1px solid var(--kv-line); position: relative;}
.kv-mm__nav .nav > li > a {display: block; padding: 15px 42px 15px 0; font-size: 17.5px; font-weight: 600; color: var(--kv-ink) !important; letter-spacing: -0.015em;}
.kv-mm__nav .nav > li.current-menu-item > a, .kv-mm__nav .nav > li.current_page_item > a {color: var(--primary-color) !important;}
.kv-mm__nav .menu-closed {position: absolute; right: 0; top: 8px; width: 34px; height: 34px; border-radius: 9px; background: var(--kv-bg); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background-color var(--kv-fast) var(--kv-ease), transform var(--kv-slow) var(--kv-ease);}
.kv-mm__nav .menu-closed::before {content: ""; width: 9px; height: 9px; border-right: 2px solid var(--kv-muted); border-bottom: 2px solid var(--kv-muted); transform: rotate(45deg); margin-top: -4px;}
.kv-mm__nav .menu-closed.menu-open {background: var(--kv-tint); transform: rotate(180deg);}
.kv-mm__nav .sub-menu {list-style: none; margin: 0 0 12px; padding: 0 0 0 14px; border-left: 2px solid var(--kv-tint);}
.kv-mm__nav .sub-menu.hide {display: none;}
.kv-mm__nav .sub-menu a {display: block; padding: 10px 0; font-size: 15.5px; color: var(--kv-muted) !important;}
.kv-mm__nav .sub-menu a:hover {color: var(--primary-color) !important;}

.kv-mm__msg {display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 20px 0 14px;}
.kv-mm__msg a {display: flex; flex-direction: column; align-items: center; gap: 7px; padding: 14px 6px; background: var(--kv-bg); border-radius: var(--kv-radius-sm); font-size: 13px; font-weight: 600; color: var(--kv-ink) !important; transition: background-color var(--kv-fast) var(--kv-ease);}
.kv-mm__msg a:hover {background: var(--kv-tint);}
.kv-mm__msg img {width: 34px; height: 34px; border-radius: 9px;}
.kv-mm__mail-ico {width: 34px; height: 34px; border-radius: 9px; background: var(--primary-color); color: #fff; display: flex; align-items: center; justify-content: center;}

.kv-mm__city {display: flex; align-items: center; gap: 9px; padding: 13px 16px; border: 1px solid var(--kv-line); border-radius: var(--kv-radius-sm); color: var(--kv-ink) !important; font-size: 14.5px;}
.kv-mm__city svg {flex: 0 0 auto; color: var(--primary-color);}
.kv-mm__city span {flex: 1 1 auto;}
.kv-mm__city em {font-style: normal; font-weight: 600; color: var(--primary-color); border-bottom: 1px dashed currentColor;}

/* ═══ Хлебные крошки ═══════════════════════════════════════════════════ */
/* Свои вместо Yoast: крошки не должны исчезнуть вместе с плагином. */
.kv-crumbs {display: flex; flex-wrap: wrap; align-items: center; gap: 7px; font-size: 14px; color: var(--kv-muted); margin-bottom: 14px;}
.kv-crumbs a {color: var(--kv-muted) !important; transition: color var(--kv-fast) var(--kv-ease);}
.kv-crumbs a:hover {color: var(--primary-color) !important;}
.kv-crumbs__sep {color: #b6c1c9;}
.kv-crumbs [aria-current] {color: var(--kv-ink);}

/* ═══ Отзывы ═══════════════════════════════════════════════════════════ */
.kv-rev {padding: 26px 0 60px;}
.kv-rev h1 {font-size: 42px; margin-bottom: 24px !important;}
.kv-rev__note {padding: 14px 18px; border-radius: var(--kv-radius-sm); margin-bottom: 24px; font-size: 16px;}
.kv-rev__note--ok {background: var(--kv-tint); color: var(--kv-deep); border-left: 4px solid var(--primary-color);}
.kv-rev__note--err {background: #fdf1e7; color: #8a4a12; border-left: 4px solid var(--kv-wood);}
.kv-rev__summary {display: grid; grid-template-columns: 220px 1fr; gap: 30px; align-items: center; padding: 26px 30px; background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); margin-bottom: 26px;}
.kv-rev__score {text-align: center;}
.kv-rev__avg {font-size: 56px; font-weight: 800; line-height: 1; letter-spacing: -0.04em; color: var(--kv-ink);}
.kv-rev__count {margin-top: 8px; font-size: 14px; color: var(--kv-muted);}
.kv-rev__bars {display: grid; gap: 7px;}
.kv-rev__bar {display: grid; grid-template-columns: 44px 1fr 34px; align-items: center; gap: 12px; font-size: 14px; color: var(--kv-muted);}
.kv-rev__bar-track {height: 8px; background: var(--kv-bg); border-radius: 999px; overflow: hidden;}
.kv-rev__bar-fill {display: block; height: 100%; background: var(--kv-wood); border-radius: 999px;}
.kv-rev__bar-v {text-align: right;}
.kv-stars {display: inline-flex; gap: 2px; font-size: 18px; line-height: 1;}
.kv-stars--sm {font-size: 14px;}
.kv-star {color: #dbe3e8;}
.kv-star.is-on {color: var(--kv-wood);}
.kv-rev__filter {display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px;}
.kv-rev__filter a {display: inline-flex; align-items: center; gap: 7px; padding: 9px 16px; background: #fff; border: 1px solid var(--kv-line); border-radius: 999px; font-size: 15px; color: var(--kv-ink) !important; transition: background-color var(--kv-fast) var(--kv-ease), border-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease);}
.kv-rev__filter a span {font-size: 12px; color: var(--kv-muted); background: var(--kv-bg); border-radius: 999px; padding: 1px 7px;}
.kv-rev__filter a:hover {border-color: var(--primary-color); color: var(--primary-color) !important;}
.kv-rev__filter a.is-on {background: var(--kv-deep); border-color: var(--kv-deep); color: #fff !important;}
.kv-rev__filter a.is-on span {background: rgba(255,255,255,.18); color: #fff;}
/* Карточки тянутся на всю высоту ряда: при `align-items: start` короткий отзыв
   давал карточку в две строки, а под ней зияла дыра до следующего ряда. */
.kv-rev__list {display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 18px; align-items: stretch;}
.kv-rev__item {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 22px 24px; display: flex; flex-direction: column; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-rev__item:hover {border-color: var(--primary-color); box-shadow: 0 8px 26px rgba(13,63,82,.08);}
.kv-rev__item[hidden] {display: none;}
.kv-rev__head {display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 14px;}
.kv-rev__who {display: flex; align-items: center; gap: 12px; min-width: 0;}
.kv-rev__ava {flex: 0 0 auto; width: 48px; height: 48px; border-radius: 50%; overflow: hidden; display: flex; align-items: center; justify-content: center;}
.kv-rev__ava img {width: 100%; height: 100%; object-fit: cover;}
.kv-rev__ava--letter {background: var(--kv-tint); color: var(--primary-color); font-size: 21px; font-weight: 800;}
.kv-rev__meta {display: flex; flex-direction: column; min-width: 0;}
.kv-rev__meta strong {font-size: 17px; font-weight: 700; color: var(--kv-ink);}
.kv-rev__meta small {font-size: 13px; color: var(--kv-muted); margin-top: 2px;}
.kv-rev__text {font-size: 15.5px; line-height: 1.6; color: #33424b;}
.kv-rev__text p {margin: 0 0 10px;}
.kv-rev__text p:last-child {margin-bottom: 0;}
.kv-rev__photos {display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px;}
.kv-rev__photos a {display: block; width: 84px; height: 84px; border-radius: 10px; overflow: hidden;}
.kv-rev__photos img {width: 100%; height: 100%; object-fit: cover;}
.kv-rev__src {margin-top: auto; padding-top: 14px; border-top: 1px solid var(--kv-line); font-size: 13px; color: var(--kv-muted);}
.kv-rev__src a {color: var(--primary-color) !important;}
.kv-rev__more {display: block; margin: 26px auto 0;}
.kv-rev__empty {padding: 40px 24px; text-align: center; background: #fff; border: 1px dashed var(--kv-line); border-radius: var(--kv-radius); display: flex; flex-direction: column; gap: 8px;}
.kv-rev__empty strong {font-size: 19px;}
.kv-rev__empty span {color: var(--kv-muted);}
.kv-rev__form {margin-top: 44px; padding: 30px 32px; background: var(--kv-tint); border-radius: var(--kv-radius);}
.kv-rev__form h2 {font-size: 28px !important; margin: 0 0 6px !important; padding: 0 !important;}
.kv-rev__form > p {color: var(--kv-muted); margin: 0 0 22px;}
.kv-rev__grid {display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; margin-bottom: 16px;}
.kv-rev__form label {display: flex; flex-direction: column; gap: 6px; font-size: 14.5px; font-weight: 600; color: var(--kv-ink);}
.kv-rev__form label span {color: var(--kv-wood);}
.kv-rev__form input[type=text], .kv-rev__form select, .kv-rev__form textarea {width: 100%; padding: 12px 14px; font-family: inherit; font-size: 16px; font-weight: 400; color: var(--kv-ink); background: #fff; border: 1.5px solid var(--kv-line); border-radius: var(--kv-radius-sm); outline: none; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-rev__form input:focus, .kv-rev__form select:focus, .kv-rev__form textarea:focus {border-color: var(--primary-color); box-shadow: 0 0 0 4px rgba(21,126,150,.12);}
.kv-rev__area {margin-bottom: 16px;}
.kv-rev__rate {border: 0; padding: 0; margin: 0; display: flex; flex-direction: row; flex-wrap: wrap; gap: 8px; align-items: center;}
.kv-rev__rate legend {width: 100%; font-size: 14.5px; font-weight: 600; padding: 0; margin-bottom: 6px;}
.kv-rev__rate-item {display: inline-flex; align-items: center; gap: 5px; padding: 8px 12px; background: #fff; border: 1.5px solid var(--kv-line); border-radius: 999px; cursor: pointer; font-size: 14px; font-weight: 600; transition: border-color var(--kv-fast) var(--kv-ease), background-color var(--kv-fast) var(--kv-ease);}
.kv-rev__rate-item input {-webkit-appearance: auto; appearance: auto; margin: 0; accent-color: var(--kv-wood);}
.kv-rev__rate-item:has(input:checked) {border-color: var(--kv-wood); background: #fff8f1;}
.kv-rev__consent {margin: 4px 0 18px;}
.kv-rev__consent label {flex-direction: row; font-weight: 400; font-size: 13px; color: var(--kv-muted);}
.kv-rev__trap, .kvform__trap {position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden;}
@media (max-width: 767px) {
	.kv-rev h1 {font-size: 28px;}
	.kv-rev__summary {grid-template-columns: 1fr; gap: 20px; padding: 20px 18px;}
	.kv-rev__avg {font-size: 44px;}
	.kv-rev__list {grid-template-columns: 1fr;}
	.kv-rev__item {padding: 18px 16px;}
	.kv-rev__form {padding: 22px 18px;}
	.kv-rev__form h2 {font-size: 23px !important;}
}

/* Звёздочка обязательного поля уезжала на отдельную строку: подпись
   выложена в колонку, и span вставал под текстом. */
.kv-rev__form label {position: relative;}
.kv-rev__form label > span {position: absolute; left: auto; top: 0; margin-left: 2px; display: inline;}
.kv-rev__form label {gap: 6px;}
.kv-rev__form > form label:not(.kv-rev__rate-item) > span {position: static;}
.kv-rev__form label:not(.kv-rev__rate-item) {display: block;}
.kv-rev__form label:not(.kv-rev__rate-item) > span {display: inline;}
.kv-rev__form label:not(.kv-rev__rate-item) input,
.kv-rev__form label:not(.kv-rev__rate-item) select,
.kv-rev__form label:not(.kv-rev__rate-item) textarea {margin-top: 6px;}
/* Пять кнопок оценки должны помещаться в один ряд. */
.kv-rev__rate-item {padding: 7px 10px; gap: 4px; font-size: 13.5px;}
.kv-rev__rate {gap: 6px;}

/* ═══ Страница «Вопрос — ответ» ════════════════════════════════════════ */
.kv-faq {padding: 26px 0 60px;}
.kv-faq h1 {font-size: 40px; margin-bottom: 16px !important;}
.kv-faq__lead {font-size: 18px; line-height: 1.6; color: #33424b; max-width: 70ch; margin: 0 0 26px;}
.kv-faq__facts {display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--kv-line); border-radius: var(--kv-radius); background: #fff; overflow: hidden; margin-bottom: 30px;}
.kv-faq__facts > div {padding: 18px 20px; border-right: 1px solid var(--kv-line);}
.kv-faq__facts > div:last-child {border-right: 0;}
.kv-faq__facts strong {display: block; font-size: 21px; font-weight: 800; color: var(--kv-wood); letter-spacing: -0.02em;}
.kv-faq__facts span {display: block; margin-top: 4px; font-size: 14px; color: var(--kv-muted); line-height: 1.4;}
.kv-faq__cols {display: grid; grid-template-columns: 1fr 320px; gap: 26px; align-items: start;}
.kv-faq__card, .kv-faq__links {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 22px 24px;}
.kv-faq__card {display: flex; flex-direction: column; gap: 8px; position: sticky; top: 20px;}
.kv-faq__card strong {font-size: 19px; letter-spacing: -0.015em;}
.kv-faq__card span {font-size: 14.5px; color: var(--kv-muted); line-height: 1.5;}
.kv-faq__phone {font-size: 25px; font-weight: 800; letter-spacing: -0.02em; color: var(--kv-ink) !important; margin-top: 4px;}
.kv-faq__phone:hover {color: var(--primary-color) !important;}
.kv-faq__card small {font-size: 13px; color: var(--kv-muted);}
.kv-faq__card .button {margin-top: 10px; text-align: center;}
.kv-faq__links {margin-top: 18px;}
.kv-faq__links strong {display: block; font-size: 15px; margin-bottom: 12px;}
.kv-faq__links ul {list-style: none; margin: 0; padding: 0; display: grid; gap: 2px;}
.kv-faq__links a {display: block; padding: 8px 10px; margin-left: -10px; border-radius: 8px; font-size: 15px; color: var(--kv-ink) !important; transition: background-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease);}
.kv-faq__links a:hover {background: var(--kv-tint); color: var(--primary-color) !important;}
@media (max-width: 991px) {
	.kv-faq__cols {grid-template-columns: 1fr;}
	.kv-faq__card {position: static;}
	.kv-faq__facts {grid-template-columns: 1fr 1fr;}
	.kv-faq__facts > div:nth-child(2n) {border-right: 0;}
	.kv-faq__facts > div:nth-child(-n+2) {border-bottom: 1px solid var(--kv-line);}
}
@media (max-width: 575px) {
	.kv-faq h1 {font-size: 27px;}
	.kv-faq__lead {font-size: 16px;}
	.kv-faq__facts {grid-template-columns: 1fr;}
	.kv-faq__facts > div {border-right: 0; border-bottom: 1px solid var(--kv-line);}
	.kv-faq__facts > div:last-child {border-bottom: 0;}
}

/* ═══ Прайс-таблица ════════════════════════════════════════════════════ */
/* Была серая зебра с отступами по 30 px: строки читались как таблица
   из отчёта, а не как прайс. Делаем карточкой с аккуратной сеткой. */
/* ☠️ Здесь стоял overflow: hidden ради скруглённых углов — и он перебивал
   overflow-x: auto из style.css: на телефоне широкий прайс просто обрезался
   по краю, прокрутить его было нельзя. Скругление держим на клипе фона. */
/* ☠️ Рамку вокруг прайса убрали (Михаил, 10.09.2026: «не надо в рамку вгонять,
   смотрится стрёмно»). Таблица уже контейнера, поэтому справа внутри рамки
   оставалась пустая полоса — блок выглядел недоделанным. Прокрутку на узком
   экране оставляем, но без коробки: скругление и линии несёт сама таблица. */
#price .scrol {overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch;}
/* ☠️ Карточки прайса (#usl): сетка 3×1fr без min-width:0 растягивалась
   под цену с white-space:nowrap («35 000 руб. с установкой») — третья
   карточка уезжала за экран и давала горизонтальный скролл. */
#usl .item, #prem .item {min-width: 0;}
#usl .price, #prem .price {white-space: normal;}
#usl .item .text-center img {border-radius: calc(var(--kv-radius) - 4px);}
/* ☠️ `overflow: hidden` на таблице обрезал её содержимое, и контейнер
   переставал видеть переполнение — на телефоне прайс не прокручивался,
   а колонка с ценой уезжала за экран. Скругление углов держим на ячейках. */
#price table {width: auto; min-width: 100%; border-collapse: separate; border-spacing: 0; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); background: #fff;}
#price thead th:first-child {border-top-left-radius: var(--kv-radius);}
#price thead th:last-child {border-top-right-radius: var(--kv-radius);}
#price tbody tr:last-child td:first-child {border-bottom-left-radius: var(--kv-radius);}
#price tbody tr:last-child td:last-child {border-bottom-right-radius: var(--kv-radius);}
#price table {margin-bottom: 0 !important;}
#price th {background: var(--kv-deep) !important; color: #fff; font-weight: 600 !important; font-size: 15px !important; letter-spacing: .02em; text-transform: uppercase; padding: 16px 22px !important; border-radius: 0 !important;}
#price td {padding: 15px 22px !important; border-top: 1px solid var(--kv-line) !important; font-size: 16px; vertical-align: middle;}
#price tbody tr:nth-of-type(odd) {background: transparent !important;}
#price tbody tr:hover {background: var(--kv-tint) !important;}
#price td:first-child {width: 62px; color: var(--kv-muted); font-size: 14px;}
#price td:last-child {font-weight: 700; color: var(--kv-wood); white-space: nowrap;}
#price .button {padding: 11px 22px !important; border-radius: var(--kv-radius-sm) !important; border: 0 !important; background: var(--kv-wood) !important; color: #fff !important;}
#price .button:hover {background: var(--kv-wood-hover) !important; color: #fff !important;}
@media (max-width: 767px) {
	#price th, #price td {padding: 12px 14px !important; font-size: 14.5px;}
	#price td:first-child {width: 42px;}
}

/* ═══ Этапы работ ══════════════════════════════════════════════════════ */
/* Карточки были с рамкой цвета ссылки и радиусом 8 px, картинка с padding
   в 5 px внутри — рамка просвечивала по краю фотографии. */
.cards-block {background: var(--kv-bg) !important; padding: 60px 0 !important;}
.cards-block .block-title {font-size: 34px !important; font-weight: 700 !important; letter-spacing: -0.02em; color: var(--kv-ink) !important; text-align: left !important; margin-bottom: 28px !important;}
.cards-grid {gap: 20px !important;}
.cards-block .card {border: 1px solid var(--kv-line) !important; border-radius: var(--kv-radius) !important; overflow: hidden; background: #fff; display: flex; flex-direction: column; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease), transform var(--kv-fast) var(--kv-ease);}
.cards-block .card:hover {border-color: var(--primary-color) !important; box-shadow: 0 10px 30px rgba(13,63,82,.10); transform: translateY(-2px);}
.cards-block .card-image {height: 210px !important; position: relative;}
.cards-block .card-image img {padding: 0 !important; border-radius: 0 !important; transition: transform var(--kv-slow) var(--kv-ease);}
.cards-block .card:hover .card-image img {transform: scale(1.035);}
.cards-block .card-content {padding: 22px 24px !important; flex: 1 1 auto;}
.cards-block .card-content .title {font-size: 18px !important; font-weight: 700 !important; letter-spacing: -0.015em; margin-bottom: 10px !important; color: var(--kv-ink);}
.cards-block .card-content .content {color: #55636c !important; font-size: 15px !important; line-height: 1.6 !important;}
/* Номер шага поверх фотографии — сразу видно последовательность. */
.cards-block .card-image::after {counter-increment: kv-step; content: counter(kv-step); position: absolute; left: 14px; top: 14px; width: 34px; height: 34px; border-radius: 10px; background: var(--kv-wood); color: #fff; font-size: 15px; font-weight: 800; display: flex; align-items: center; justify-content: center;}
.cards-grid {counter-reset: kv-step;}

/* ═══ Галерея работ ════════════════════════════════════════════════════ */
.works-gallery__title {font-size: 34px !important; letter-spacing: -0.02em; color: var(--kv-ink) !important;}
.works-gallery__item {height: 300px !important; border-radius: var(--kv-radius) !important; border: 1px solid var(--kv-line) !important;}
.works-gallery .owl-nav button {border: 1px solid var(--kv-line) !important; box-shadow: 0 6px 20px rgba(13,63,82,.12) !important; width: 48px !important; height: 48px !important;}
.works-gallery .owl-nav button:hover {background: var(--kv-deep) !important; border-color: var(--kv-deep) !important;}
.works-gallery .owl-nav button::before {border-color: var(--primary-color);}
.works-gallery .owl-nav button:hover::before {border-color: #fff;}

/* ═══ Табы «Выбор типа колодца» ════════════════════════════════════════ */
#tabs .nav-link {border: 1px solid var(--kv-line) !important; color: var(--kv-ink) !important; background: #fff; font-weight: 600; border-radius: 999px !important; padding: 11px 20px !important;}
#tabs .nav-link:hover {border-color: var(--primary-color) !important; background: #fff !important; color: var(--primary-color) !important;}
#tabs .nav-link.active {background: var(--kv-deep) !important; border-color: var(--kv-deep) !important; color: #fff !important;}
#tabs .tab-content {border: 1px solid var(--kv-line) !important; border-radius: var(--kv-radius) !important; padding: 26px 28px !important; background: #fff;}
#tabs .tab-content .title {font-size: 20px !important; letter-spacing: -0.015em;}

/* ═══ Сертификаты ══════════════════════════════════════════════════════ */
/* Шесть сканов в ряд без рамок висели в воздухе. Ставим на карточки
   с подписью-подсказкой, что документ открывается. */
#lic .grid, .lic-grid {gap: 14px;}
#lic a, .lic a {display: block; border: 1px solid var(--kv-line); border-radius: var(--kv-radius-sm); padding: 10px; background: #fff; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease), transform var(--kv-fast) var(--kv-ease);}
#lic a:hover, .lic a:hover {border-color: var(--primary-color); box-shadow: 0 8px 24px rgba(13,63,82,.10); transform: translateY(-2px);}
#lic img, .lic img {border-radius: 4px;}

/* ═══ Слои ═════════════════════════════════════════════════════════════ */
/* ☠️ Плавающий блок связи (z-index 9998) лежал выше модальных окон
   (1050 из старой темы) и перехватывал клики: кнопка «Отправить заявку»
   в открытом окне не нажималась. Окна поднимаем над плавающими
   элементами, а сами плавающие при открытом окне убираем. */
.modal {z-index: 10050;}
body.modal-open .kv-dock, body.modal-open .btn-back-top {opacity: 0; visibility: hidden; pointer-events: none;}
body.lb-open .kv-dock, body.lb-open .btn-back-top {opacity: 0; visibility: hidden; pointer-events: none;}

/* ═══ Наведение: одна манера на весь сайт ══════════════════════════════ */
/* Было вперемешку: где-то мгновенный скачок цвета, где-то `all .2s`,
   где-то зум фотографии за четверть секунды. Теперь фотографии
   приближаются мягко и долго, а цвет и тень меняются коротко. */
.card-image img, .cards-block .card-image img, #lic a img, .lic a img,
.gallary img, .item img.img-fluid, .kv-rev__photos img {transition: transform var(--kv-photo) var(--kv-ease-soft) !important;}
.cards-block .card:hover .card-image img, .gallary a:hover img, .kv-rev__photos a:hover img {transform: scale(1.04);}

/* Ссылка-фотография показывает, что откроется просмотрщик. */
.gallary a, .kv-rev__photos a, #lic a, .lic a {display: block; overflow: hidden; border-radius: var(--kv-radius-sm); position: relative;}
.gallary a::after, .kv-rev__photos a::after {content: ""; position: absolute; inset: 0; background: rgba(13,63,82,.18); opacity: 0; transition: opacity var(--kv-slow) var(--kv-ease); pointer-events: none;}
.gallary a:hover::after, .kv-rev__photos a:hover::after {opacity: 1;}

/* ═══ «Особенности услуги»: структура вместо сплошной заливки ═══════════ */
/* Была одна большая плашка среднего бирюзового — цвет ложился ровным
   прямоугольником на пол-экрана. Теперь тёмная вода как фон и отдельные
   карточки поверх: плоскость перестаёт читаться как заливка. */
.prem2 .items {background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.10); border-radius: var(--kv-radius); padding: 22px 22px 24px; transition: background-color var(--kv-slow) var(--kv-ease), border-color var(--kv-slow) var(--kv-ease), transform var(--kv-slow) var(--kv-ease);}
.prem2 .items:hover {background: rgba(255,255,255,.08); border-color: rgba(200,129,60,.45); transform: translateY(-2px);}
.prem2 .grid {gap: 18px;}
.prem2 .block__title, .prem2 h2 {margin-bottom: 26px;}
@media (max-width: 575px) {
	/* ☠️ Карточки с рамкой и внутренними отступами не влезали в две колонки:
	   на 390 px сетка вылезала за экран на три пикселя и давала
	   горизонтальную прокрутку. В один столбец и читается лучше. */
	.prem2 .grid {grid-template-columns: 1fr; gap: 12px;}
	.prem2 .items {padding: 18px; min-width: 0;}
}

/* ═══ Место под плашку cookie ══════════════════════════════════════════ */
/* Пока согласие не дано, панель закрывает низ экрана: подвал со ссылками
   на политику и регионы физически нельзя нажать. Добавляем странице
   отступ на высоту панели — контент прокручивается выше неё. */
body {padding-bottom: var(--kv-cookie-h, 0px);}

/* ═══ Модалка заявки ═══════════════════════════════════════════════════ */
/* Крестик закрытия наезжал на заголовок: на телефоне «Оставьте свои
   контакты» переносилось на две строки и упиралось прямо в него. */
#za .title {padding-right: 54px; font-size: 26px; font-weight: 800; letter-spacing: -0.025em; line-height: 1.15; color: var(--kv-ink);}
#za .text {margin-top: 8px; font-size: 15px; line-height: 1.5; color: var(--kv-muted);}
#za .grid {gap: 0;}
#za .kvform {margin-top: 18px;}
.modal .close svg {width: 26px; height: 26px;}
.modal .close {width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: transparent; border: 0; transition: background-color var(--kv-fast) var(--kv-ease);}
.modal .close:hover {background: var(--kv-tint);}
@media (max-width: 575px) {
	#za .title {font-size: 22px; padding-right: 46px;}
	.modal .close {top: 12px !important; right: 12px !important;}
}

/* Вопрос-заголовок в аккордеоне: тег сменился на h2, размеры оставляем прежние. */
.kv-faq__q {margin: 0; font-size: inherit; font-weight: inherit; line-height: inherit;}
.kv-faq__q .title {display: block;}

/* ═══ Блок отзывов на страницах услуг ══════════════════════════════════ */
/* Отзывы на самой странице услуги Яндекс учитывает отдельно от страницы
   «Отзывы» — это коммерческий фактор, а не украшение. */
.kv-revblock {padding: 56px 0; background: var(--kv-bg);}
.kv-revblock__head {display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 24px; flex-wrap: wrap;}
.kv-revblock__title {margin: 0 0 8px; font-size: 32px; font-weight: 800; letter-spacing: -0.025em; color: var(--kv-ink);}
.kv-revblock__score {display: flex; align-items: center; gap: 10px; font-size: 14.5px; color: var(--kv-muted);}
.kv-revblock__score b {font-size: 18px; color: var(--kv-ink);}
.kv-revblock__all {flex: none;}

.kv-revblock__item {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 20px 22px; display: flex; flex-direction: column; gap: 12px; height: 100%; transition: border-color var(--kv-slow) var(--kv-ease), box-shadow var(--kv-slow) var(--kv-ease);}
.kv-revblock__item:hover {border-color: var(--kv-tint); box-shadow: 0 10px 30px rgba(13,63,82,.08);}
.kv-revblock__item header {display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px;}
.kv-revblock__ava {width: 48px; height: 48px; border-radius: 50%; overflow: hidden; flex: none; background: var(--kv-tint);}
.kv-revblock__ava img {width: 100%; height: 100%; object-fit: cover;}
.kv-revblock__ava--letter {display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 700; color: var(--primary-color);}
.kv-revblock__who {display: flex; flex-direction: column; min-width: 0;}
.kv-revblock__who strong {font-size: 15.5px; font-weight: 700; color: var(--kv-ink); line-height: 1.25;}
.kv-revblock__who small {font-size: 12.5px; color: var(--kv-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.kv-revblock__text {margin: 0; font-size: 14.5px; line-height: 1.6; color: var(--kv-ink);}
.kv-revblock__photos {display: flex; gap: 8px; flex-wrap: wrap;}
.kv-revblock__photos a {width: 72px; height: 72px; border-radius: var(--kv-radius-sm); overflow: hidden; display: block;}
.kv-revblock__photos img {width: 100%; height: 100%; object-fit: cover;}
.kv-revblock__item footer {margin-top: auto; padding-top: 10px; border-top: 1px solid var(--kv-line); display: flex; justify-content: space-between; gap: 10px; font-size: 12.5px; color: var(--kv-muted);}
.kv-revblock__item footer a {color: var(--primary-color);}

.kv-revblock__cta {margin-top: 26px; display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; padding: 20px 24px; border-radius: var(--kv-radius); background: #fff; border: 1px solid var(--kv-line);}
.kv-revblock__cta span {font-size: 15px; color: var(--kv-ink);}

.kv-revblock .owl-stage {display: flex; align-items: stretch;}
.kv-revblock .owl-item {display: flex;}
.kv-revblock .owl-item > * {width: 100%;}

@media (max-width: 767px) {
	.kv-revblock {padding: 36px 0;}
	.kv-revblock__title {font-size: 24px;}
	.kv-revblock__head {flex-direction: column; align-items: stretch;}
	.kv-revblock__all {align-self: flex-start;}
	.kv-revblock__cta {flex-direction: column; align-items: stretch; text-align: center;}
}

/* Правая граница у последнего в ряду не нужна — при переносе она висела в воздухе. */
.kv-trust__item {border-bottom: 1px solid #e3e9ee;}
.kv-trust__grid {border-bottom: 0;}

/* ═══ Галерея работ: вертикальные снимки ═══════════════════════════════ */
/* Живые фото с телефона вертикальные, а окно слайда горизонтальное:
   при обрезке по центру у домика оставалась одна крыша. Смещаем фокус
   к верхней трети — там и стоит сам объект. */
/* Кадр показываем целиком: снимки с телефона вертикальные, и любая обрезка
   срезала у домика либо крышу, либо основание. Поля закрашиваем фоном
   секции — это честнее, чем показывать половину работы. */
.works-gallery__item img {object-fit: contain; background: var(--kv-bg);}
@media (min-width: 992px) {
	.works-gallery__item {height: 420px;}
}

/* ═══ Видео от заказчика ═══════════════════════════════════════════════ */
/* Снято на телефон, кадр вертикальный: на всю ширину секции его растягивать
   нельзя — получится полоса в полтора экрана высотой. */
#video .video {display: flex; justify-content: center;}
.kv-video {max-width: 420px; width: 100%; height: auto; border-radius: var(--kv-radius); background: #000; display: block;}

/* ═══ Наши работы ══════════════════════════════════════════════════════
   Карточка объекта: слева снимок с участка, справа что делали и из чего
   собрано. Горизонтальная раскладка выбрана из-за текста — в узкой
   плитке описание работы читать неудобно. */
.kv-works__intro {max-width: 820px; color: var(--kv-muted); font-size: 17px; line-height: 1.6; margin-bottom: 26px;}
.kv-works__tabs {display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 26px;}
.kv-works__tab {display: inline-flex; align-items: center; gap: 8px; padding: 9px 18px; border: 1px solid var(--kv-line); border-radius: 999px; color: var(--kv-ink) !important; text-decoration: none; font-size: 15px; background: #fff; transition: border-color var(--kv-fast) var(--kv-ease), background var(--kv-fast) var(--kv-ease);}
.kv-works__tab:hover {border-color: var(--primary-color); color: var(--primary-color) !important;}
.kv-works__tab span {font-size: 12px; color: var(--kv-muted); background: var(--kv-bg); border-radius: 999px; padding: 1px 7px;}
.kv-works__tab.is-on {background: var(--kv-deep); border-color: var(--kv-deep); color: #fff !important;}
.kv-works__tab.is-on span {background: rgba(255,255,255,.18); color: #fff;}
.kv-works__list {display: grid; gap: 22px;}
.kv-works__item {display: grid; grid-template-columns: minmax(0, 420px) minmax(0, 1fr); gap: 26px; background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 22px; align-items: start; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-works__item:hover {border-color: var(--primary-color); box-shadow: 0 8px 26px rgba(13,63,82,.08);}
.kv-works__shot {display: block; border-radius: 10px; overflow: hidden; background: var(--kv-bg);}
.kv-works__shot img {display: block; width: 100%; height: 300px; object-fit: cover; transition: transform var(--kv-slow) var(--kv-ease);}
.kv-works__shot:hover img {transform: scale(1.03);}
.kv-works__title {margin: 0 0 8px; font-size: 22px; line-height: 1.3;}
.kv-works__meta {margin: 0 0 14px; font-size: 14px; color: var(--kv-muted);}
.kv-works__text {font-size: 16px; line-height: 1.6;}
.kv-works__text p {margin: 0 0 12px;}
.kv-works__facts {display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px 18px; margin: 16px 0 0; padding: 16px 0 0; border-top: 1px solid var(--kv-line);}
.kv-works__facts div {min-width: 0;}
.kv-works__facts dt {font-size: 13px; color: var(--kv-muted); margin: 0 0 2px;}
.kv-works__facts dd {margin: 0; font-size: 16px; font-weight: 600; color: var(--kv-ink);}
.kv-works__link {margin: 16px 0 0; font-size: 15px;}
.kv-works__cta {margin-top: 34px;}
.kv-works__empty {color: var(--kv-muted);}
@media (max-width: 991px) {
	.kv-works__item {grid-template-columns: 1fr; gap: 18px;}
	.kv-works__shot img {height: 240px;}
	.kv-works__title {font-size: 20px;}
}
@media (max-width: 575px) {
	.kv-works__item {padding: 14px;}
	.kv-works__shot img {height: 200px;}
	.kv-works__title {font-size: 18px;}
	.kv-works__text {font-size: 15px;}
}

/* ═══ Блок «Наши работы» на страницах услуг ════════════════════════════ */
.kv-wblock__head {display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-bottom: 22px;}
.kv-wblock__title {margin: 0 !important; padding: 0 !important;}
.kv-wblock__all {flex: 0 0 auto;}
.kv-wblock__grid {display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;}
.kv-wblock__item {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 16px; display: flex; flex-direction: column; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-wblock__item:hover {border-color: var(--primary-color); box-shadow: 0 8px 26px rgba(13,63,82,.08);}
.kv-wblock__shot {display: block; border-radius: 10px; overflow: hidden; margin-bottom: 14px; background: var(--kv-bg);}
.kv-wblock__shot img {display: block; width: 100%; height: 210px; object-fit: cover; transition: transform var(--kv-photo) var(--kv-ease-soft);}
.kv-wblock__shot:hover img {transform: scale(1.04);}
.kv-wblock__name {margin: 0 0 8px; font-size: 18px; line-height: 1.35;}
.kv-wblock__text {margin: 0 0 12px; font-size: 15px; line-height: 1.55; color: var(--kv-muted);}
.kv-wblock__facts {margin: auto 0 0; padding-top: 12px; border-top: 1px solid var(--kv-line); font-size: 13px; color: var(--kv-muted);}
.kv-wblock--posts .kv-wblock__name a {color: inherit; text-decoration: none;}
.kv-wblock--posts .kv-wblock__name a:hover {color: var(--primary-color);}
@media (max-width: 991px) {
	.kv-wblock__grid {grid-template-columns: 1fr 1fr;}
	.kv-wblock__grid .kv-wblock__item:last-child {display: none;}
}
@media (max-width: 575px) {
	.kv-wblock__grid {grid-template-columns: 1fr;}
	.kv-wblock__grid .kv-wblock__item:last-child {display: flex;}
	.kv-wblock__shot img {height: 190px;}
}

/* ═══ Факты о районе на городском поддомене ════════════════════════════
   Единственный блок, где текст города действительно свой. Слева рассказ,
   справа карточка с цифрами — её читают те, кто текст пропускает. */
.kv-geo2__title {margin: 0 0 22px !important; padding: 0 !important;}
.kv-geo2__grid {display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 360px); gap: 30px; align-items: start;}
.kv-geo2__text p {margin: 0 0 14px; font-size: 17px; line-height: 1.62;}
.kv-geo2__text p:last-child {margin-bottom: 0;}
.kv-geo2__card {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 20px 22px; position: sticky; top: 20px;}
.kv-geo2__row {display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--kv-line);}
.kv-geo2__row span {flex: 0 0 auto; font-size: 14px; color: var(--kv-muted);}
.kv-geo2__row strong {text-align: right; font-size: 15px; line-height: 1.4;}
.kv-geo2__cta {display: block; width: 100%; margin-top: 18px; text-align: center;}
@media (max-width: 991px) {
	.kv-geo2__grid {grid-template-columns: 1fr; gap: 22px;}
	.kv-geo2__card {position: static;}
	.kv-geo2__text p {font-size: 16px;}
}
@media (max-width: 575px) {
	.kv-geo2__card {padding: 16px;}
	.kv-geo2__row {padding: 10px 0;}
}

/* ═══ Оформление текстовых блоков ══════════════════════════════════════
   Сплошная простыня из абзацев и списков разложена по карточкам:
   вводная часть крупнее, каждый заголовок со своим содержимым — своя
   карточка, списки — плитки с галочками или кликабельные ссылки. */
/* Цвет наследуем: этот же блок выводится и на тёмной секции, где текст белый. */
.kv-rich__lead {font-size: 19px; line-height: 1.6; margin-bottom: 26px;}
.kv-rich__lead p {margin: 0 0 14px;}
.kv-rich__lead p:last-child {margin-bottom: 0;}
.kv-rich__sec {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 26px 30px; margin-bottom: 18px;}
.kv-rich__sec:last-child {margin-bottom: 0;}
.kv-rich__h {position: relative; margin: 0 0 16px !important; padding: 0 0 0 16px !important; font-size: 26px !important; line-height: 1.25 !important; text-align: left !important;}
.kv-rich__h::before {content: ""; position: absolute; left: 0; top: 4px; bottom: 4px; width: 4px; border-radius: 4px; background: var(--kv-wood);}
.kv-rich__body p {margin: 0 0 14px; font-size: 17px; line-height: 1.62;}
.kv-rich__body p:last-child {margin-bottom: 0;}
.kv-rich__list {display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; margin: 18px 0 !important; padding: 0 !important; list-style: none !important;}
/* ☠️ Обнулять padding и ::before у всех li нельзя: сами плитки — это li,
   и такое правило съедало у них и отступы, и галочку. Гасим только маркер. */
.kv-rich__list > li {margin: 0 !important; list-style: none !important;}
.kv-rich__list > li::marker {content: "";}
.kv-rich__list > li.kv-rich__card, .kv-rich__list a.kv-rich__card {display: flex; align-items: flex-start; gap: 12px; min-height: 100%; padding: 16px 18px; background: var(--kv-bg); border: 1px solid transparent; border-radius: var(--kv-radius-sm); font-size: 16px; line-height: 1.5; color: var(--kv-ink) !important; text-decoration: none; transition: background-color var(--kv-fast) var(--kv-ease), border-color var(--kv-fast) var(--kv-ease), transform var(--kv-fast) var(--kv-ease);}
.kv-rich__list > li.kv-rich__card--check::before {content: "" !important; flex: 0 0 22px; height: 22px; margin-top: 1px; border-radius: 50%; background: var(--primary-color) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E") center/13px no-repeat;}
.kv-rich__list--links > li.kv-rich__card, .kv-rich__list a.kv-rich__card {background: #fff; border-color: var(--kv-line);}
a.kv-rich__card::after {content: "→"; margin-left: auto; padding-left: 10px; color: var(--primary-color); font-size: 18px; line-height: 1.4; transition: transform var(--kv-fast) var(--kv-ease);}
a.kv-rich__card:hover {border-color: var(--primary-color); background: var(--kv-tint); color: var(--primary-color) !important;}
a.kv-rich__card:hover::after {transform: translateX(3px);}
@media (max-width: 991px) {
	.kv-rich__lead {font-size: 17px;}
	.kv-rich__sec {padding: 20px 20px;}
	.kv-rich__h {font-size: 22px !important;}
	.kv-rich__body p {font-size: 16px;}
}
@media (max-width: 575px) {
	.kv-rich__sec {padding: 16px 14px;}
	.kv-rich__h {font-size: 20px !important; padding-left: 12px !important;}
	.kv-rich__list {grid-template-columns: 1fr; gap: 10px;}
	.kv-rich__card {padding: 13px 14px; font-size: 15px;}
}

.kv-rich__list--links > li.kv-rich__card--check::before {display: none;}

/* На узком экране колонка с ценой стоит в одну строку и вылезала за край:
   даём таблице минимальную ширину, чтобы контейнер получил прокрутку. */
@media (max-width: 767px) {
	/* Подсказка, что таблицу можно потянуть вбок: без неё колонка с ценой
	   просто обрывается у края и выглядит как обрезанная вёрстка. */
	#price .scrol {position: relative; -webkit-mask-image: linear-gradient(to right, #000 88%, rgba(0,0,0,.35)); mask-image: linear-gradient(to right, #000 88%, rgba(0,0,0,.35));}
	#price table {min-width: 520px;}
	#price th, #price td {padding: 12px 14px !important;}
	#price td:last-child {white-space: nowrap;}
}

/* ═══ Блог ═════════════════════════════════════════════════════════════
   Записей на сайте не было вовсе, а информационный спрос в нише кратно
   больше коммерческого. Статья свёрстана как материал, который читают
   до конца: узкая колонка текста, оглавление, форма рядом. */
.kv-blog__intro {max-width: 780px; font-size: 18px; line-height: 1.6; color: var(--kv-muted); margin-bottom: 28px;}
.kv-blog__list {display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px;}
.kv-blog__item {display: flex; flex-direction: column; background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); overflow: hidden; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-blog__item:hover {border-color: var(--primary-color); box-shadow: 0 8px 26px rgba(13,63,82,.08);}
.kv-blog__item--big {grid-column: 1 / -1; flex-direction: row;}
.kv-blog__item--big .kv-blog__shot {flex: 0 0 46%; max-width: 46%;}
.kv-blog__item--big .kv-blog__name {font-size: 28px;}
.kv-blog__shot {display: block; background: var(--kv-bg);}
.kv-blog__shot img {display: block; width: 100%; height: 210px; object-fit: cover; transition: transform var(--kv-photo) var(--kv-ease-soft);}
/* Высоту большой карточки держим фиксированной: при коротком анонсе
   растянутое на всю карточку фото оставляло справа полполосы пустоты. */
.kv-blog__item--big .kv-blog__shot img {height: 340px; min-height: 0;}
.kv-blog__item--big .kv-blog__body {justify-content: center;}
.kv-blog__shot:hover img {transform: scale(1.04);}
.kv-blog__body {display: flex; flex-direction: column; padding: 18px 20px 20px; flex: 1 1 auto;}
.kv-blog__meta {margin: 0 0 8px; font-size: 13px; color: var(--kv-muted);}
.kv-blog__name {margin: 0 0 10px; font-size: 20px; line-height: 1.3;}
.kv-blog__name a {color: var(--kv-ink) !important;}
.kv-blog__name a:hover {color: var(--primary-color) !important;}
.kv-blog__excerpt {margin: 0 0 14px; font-size: 15.5px; line-height: 1.55; color: var(--kv-muted);}
.kv-blog__more {margin-top: auto; font-size: 15px;}
.kv-blog__empty {color: var(--kv-muted);}

.kv-post__head {margin-bottom: 18px;}
.kv-post__meta {margin: 10px 0 0; display: flex; gap: 8px; font-size: 14px; color: var(--kv-muted);}
.kv-post__cover {margin: 0 0 28px;}
.kv-post__cover img {display: block; width: 100%; max-height: 460px; object-fit: cover; border-radius: var(--kv-radius);}
.kv-post__cover figcaption {margin-top: 8px; font-size: 14px; color: var(--kv-muted);}
/* ☠️ min-width: 0 обязателен: у grid-элемента ширина по умолчанию считается
   по содержимому, и широкая таблица в статье распирала колонку за экран —
   на 390 появлялся горизонтальный скролл всей страницы. */
.kv-post__grid {display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 340px); gap: 34px; align-items: start;}
.kv-post__main, .kv-post__side {min-width: 0;}
.kv-post__table {overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 22px 0;}
.kv-post__table table {margin: 0; min-width: 480px;}
.kv-post__toc {background: var(--kv-tint); border-radius: var(--kv-radius); padding: 18px 22px; margin-bottom: 26px;}
.kv-post__toc-title {display: block; font-weight: 600; margin-bottom: 8px;}
.kv-post__toc ol {margin: 0; padding-left: 20px;}
.kv-post__toc li {margin-bottom: 5px; font-size: 15.5px;}
.kv-post__text {font-size: 17.5px; line-height: 1.68;}
.kv-post__text > * {max-width: 760px;}
.kv-post__text p {margin: 0 0 18px;}
.kv-post__text h2 {margin: 34px 0 14px !important; font-size: 28px !important; line-height: 1.25 !important; text-align: left !important; scroll-margin-top: 90px;}
.kv-post__text h3 {margin: 26px 0 10px; font-size: 21px; line-height: 1.3;}
.kv-post__text ul, .kv-post__text ol {margin: 0 0 18px; padding-left: 22px;}
.kv-post__text li {margin-bottom: 8px;}
.kv-post__text img {max-width: 100%; height: auto; border-radius: var(--kv-radius); margin: 8px 0;}
.kv-post__text figure {margin: 24px 0;}
.kv-post__text figcaption {margin-top: 8px; font-size: 14px; color: var(--kv-muted);}
.kv-post__text table {width: 100%; margin: 22px 0; border-collapse: collapse;}
.kv-post__text th {background: var(--kv-deep); color: #fff; text-align: left; padding: 12px 16px; font-weight: 600;}
.kv-post__text td {padding: 12px 16px; border-top: 1px solid var(--kv-line);}
.kv-post__text blockquote {margin: 24px 0; padding: 18px 22px; background: var(--kv-tint); border-left: 4px solid var(--kv-wood); border-radius: 0 var(--kv-radius) var(--kv-radius) 0;}
.kv-post__text blockquote p:last-child {margin-bottom: 0;}
.kv-post__faq {margin-top: 40px;}
.kv-post__side {position: sticky; top: 20px;}
.kv-post__cta {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 22px;}
.kv-post__cta strong {display: block; font-size: 19px; line-height: 1.3; margin-bottom: 8px;}
.kv-post__cta p {margin: 0 0 16px; font-size: 15px; line-height: 1.5; color: var(--kv-muted);}
.kv-post__rel {margin-top: 46px;}
.kv-post__rel-grid {display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px;}
.kv-post__rel-item {display: flex; flex-direction: column; gap: 12px; color: var(--kv-ink) !important;}
.kv-post__rel-shot img {display: block; width: 100%; height: 170px; object-fit: cover; border-radius: var(--kv-radius);}
.kv-post__rel-name {font-size: 16px; line-height: 1.4; font-weight: 600;}
.kv-post__rel-item:hover .kv-post__rel-name {color: var(--primary-color);}
@media (max-width: 991px) {
	.kv-blog__list {grid-template-columns: 1fr 1fr;}
	.kv-blog__item--big {flex-direction: column;}
	.kv-blog__item--big .kv-blog__shot {flex: 0 0 auto; max-width: 100%;}
	.kv-blog__item--big .kv-blog__shot img {height: 240px; min-height: 0;}
	.kv-blog__item--big .kv-blog__name {font-size: 22px;}
	.kv-post__grid {grid-template-columns: 1fr; gap: 26px;}
	.kv-post__side {position: static;}
	.kv-post__text {font-size: 16.5px;}
	.kv-post__text h2 {font-size: 24px !important;}
	.kv-post__rel-grid {grid-template-columns: 1fr 1fr;}
}
@media (max-width: 575px) {
	.kv-blog__list {grid-template-columns: 1fr;}
	.kv-post__text {font-size: 16px;}
	.kv-post__text h2 {font-size: 21px !important; margin-top: 26px !important;}
	.kv-post__rel-grid {grid-template-columns: 1fr;}
	.kv-post__cover img {max-height: 240px;}
}

/* Вопросы под статьёй. Стили темы завязаны на #accordion, поэтому у блога
   свой набор: без него вопросы стояли в упор к рамке. */
.kv-post__faq h2 {margin: 0 0 16px !important;}
.kv-post__faq .card {border: 1px solid var(--kv-line); border-radius: var(--kv-radius); background: #fff; margin-bottom: 10px; overflow: hidden;}
.kv-post__faq .card:last-child {margin-bottom: 0;}
.kv-post__faq .title {display: block; position: relative; padding: 16px 52px 16px 20px; font-size: 17px; font-weight: 600; line-height: 1.4; color: var(--kv-ink) !important; text-decoration: none; cursor: pointer; transition: color var(--kv-fast) var(--kv-ease);}
.kv-post__faq .title:hover {color: var(--primary-color) !important;}
.kv-post__faq .title::after {content: ""; position: absolute; right: 20px; top: 50%; width: 11px; height: 11px; margin-top: -7px; border-right: 2px solid var(--primary-color); border-bottom: 2px solid var(--primary-color); transform: rotate(45deg); transition: transform var(--kv-fast) var(--kv-ease);}
.kv-post__faq .title:not(.collapsed)::after {transform: rotate(-135deg); margin-top: -3px;}
.kv-post__faq .collapse {padding: 0 20px;}
.kv-post__faq .collapse.show {padding-bottom: 18px;}
.kv-post__faq .collapse p {margin: 0 0 10px; font-size: 16px; line-height: 1.6; color: var(--kv-muted);}
.kv-post__faq .collapse p:last-child {margin-bottom: 0;}
@media (max-width: 575px) {
	.kv-post__faq .title {padding: 14px 44px 14px 16px; font-size: 16px;}
	.kv-post__faq .collapse {padding: 0 16px;}
}

/* ═══ Контакты ═════════════════════════════════════════════════════════
   Было четыре простыни текста подряд. Стало: способы связи карточками,
   что уточнить — плитками с номерами, порядок работы — шагами. */
.kv-cont__top {display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 420px); gap: 26px; align-items: start; margin-bottom: 44px;}
.kv-cont__ways {display: grid; gap: 12px;}
.kv-cont__way {display: flex; align-items: flex-start; gap: 16px; padding: 18px 20px; background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); color: var(--kv-ink) !important; text-decoration: none; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-cont__way:hover {border-color: var(--primary-color); box-shadow: 0 8px 26px rgba(13,63,82,.08);}
.kv-cont__ico {flex: 0 0 46px; height: 46px; display: flex; align-items: center; justify-content: center; border-radius: 12px; background: var(--kv-tint); color: var(--primary-color);}
.kv-cont__ico--wa {background: #e7f6ec; color: #1faa53;}
.kv-cont__ico--tg {background: #e6f3fb; color: #2aa3e0;}
.kv-cont__body {min-width: 0;}
.kv-cont__body b {display: block; font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--kv-muted);}
.kv-cont__body strong {display: block; margin: 2px 0 4px; font-size: 20px; line-height: 1.25; word-break: break-word;}
.kv-cont__body small {display: block; font-size: 14px; line-height: 1.45; color: var(--kv-muted);}
.kv-cont__way--main .kv-cont__body strong {font-size: 26px; letter-spacing: -0.01em;}
.kv-cont__form {background: var(--kv-tint); border-radius: var(--kv-radius); padding: 24px;}
.kv-cont__form-title {display: block; font-size: 21px; line-height: 1.3; margin-bottom: 6px;}
.kv-cont__form-lead {margin: 0 0 16px; font-size: 15px; line-height: 1.5; color: var(--kv-muted);}
.kv-cont__sec {margin-bottom: 44px;}
.kv-cont__sec h2 {margin: 0 0 12px !important; text-align: left !important;}
.kv-cont__lead {max-width: 820px; margin: 0 0 20px; font-size: 17px; line-height: 1.6; color: var(--kv-muted);}
.kv-cont__cards {display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px;}
.kv-cont__card {background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 22px;}
.kv-cont__num {display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; background: var(--kv-wood); color: #fff; font-weight: 700; margin-bottom: 12px;}
.kv-cont__card b {display: block; font-size: 18px; margin-bottom: 6px;}
.kv-cont__card p {margin: 0; font-size: 15.5px; line-height: 1.55; color: var(--kv-muted);}
.kv-cont__steps {counter-reset: kvstep; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px;}
.kv-cont__steps li {counter-increment: kvstep; position: relative; padding: 22px 20px 20px; background: var(--kv-bg); border-radius: var(--kv-radius);}
.kv-cont__steps li::before {content: counter(kvstep); position: absolute; top: -12px; left: 20px; width: 30px; height: 30px; border-radius: 50%; background: var(--kv-deep); color: #fff; font-weight: 700; font-size: 15px; display: flex; align-items: center; justify-content: center;}
.kv-cont__steps b {display: block; margin: 6px 0 6px; font-size: 17px;}
.kv-cont__steps span {font-size: 15px; line-height: 1.55; color: var(--kv-muted);}
.kv-cont__links {display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px;}
.kv-cont__link {display: block; padding: 20px; background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); color: var(--kv-ink) !important; text-decoration: none; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-cont__link:hover {border-color: var(--primary-color); box-shadow: 0 8px 26px rgba(13,63,82,.08);}
.kv-cont__link b {display: block; margin-bottom: 6px; font-size: 17px;}
.kv-cont__link span {font-size: 15px; line-height: 1.5; color: var(--kv-muted);}
@media (max-width: 991px) {
	.kv-cont__top {grid-template-columns: 1fr;}
	.kv-cont__cards, .kv-cont__links {grid-template-columns: 1fr 1fr;}
	.kv-cont__steps {grid-template-columns: 1fr 1fr; gap: 24px 18px;}
}
@media (max-width: 575px) {
	.kv-cont__cards, .kv-cont__links, .kv-cont__steps {grid-template-columns: 1fr;}
	.kv-cont__way {padding: 14px 16px; gap: 12px;}
	.kv-cont__ico {flex: 0 0 40px; height: 40px;}
	.kv-cont__way--main .kv-cont__body strong {font-size: 22px;}
	.kv-cont__form {padding: 18px 16px;}
}

/* ═══ О компании ═══════════════════════════════════════════════════════
   Было: слева простыня текста, справа четыре цифры, под ними полэкрана
   пустоты. Стало: лид на всю ширину, услуги плитками, общая полоса цифр
   и три карточки с тем, что отличает компанию. */
.kv-about__lead {max-width: 900px; font-size: 19px; line-height: 1.6; margin: 0 0 28px;}
.kv-about__what {display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 12px;}
.kv-about__item {position: relative; padding: 20px 20px 20px 54px; background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius);}
.kv-about__item::before {content: ""; position: absolute; left: 20px; top: 21px; width: 22px; height: 22px; border-radius: 50%; background: var(--primary-color) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E") center/13px no-repeat;}
.kv-about__item b {display: block; font-size: 17px; margin-bottom: 4px;}
.kv-about__item span {font-size: 15px; line-height: 1.5; color: var(--kv-muted);}
#aboutpage .kv-trust {padding: 0 !important; margin-bottom: 28px;}
#aboutpage .kv-trust .container {padding-left: 0; padding-right: 0; max-width: none;}
.kv-about__facts {display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-bottom: 24px;}
.kv-about__fact {padding: 22px; background: var(--kv-bg); border-radius: var(--kv-radius);}
.kv-about__fact b {display: block; font-size: 18px; margin-bottom: 8px; color: var(--kv-deep);}
.kv-about__fact p {margin: 0; font-size: 15.5px; line-height: 1.6; color: var(--kv-muted);}
.kv-about__note {max-width: 900px; margin: 0; font-size: 17px; line-height: 1.6; color: var(--kv-muted);}
@media (max-width: 991px) {
	.kv-about__what, .kv-about__facts {grid-template-columns: 1fr 1fr;}
	.kv-about__lead {font-size: 17px;}
}
@media (max-width: 575px) {
	.kv-about__what, .kv-about__facts {grid-template-columns: 1fr;}
	.kv-about__item {padding: 16px 16px 16px 48px;}
	.kv-about__item::before {left: 16px; top: 17px;}
}

/* ☠️ Отступ под h1 на своих шаблонах. На страницах темы его давали общие
   стили, а в новых разделах заголовок прилипал вплотную к первому блоку:
   на контактах зазор был ровно 0 (Михаил, 11.09.2026). */
.kv-cont h1, .kv-works h1, .kv-blog h1 {margin: 0 0 24px !important;}
@media (max-width: 575px) {
	.kv-cont h1, .kv-works h1, .kv-blog h1 {margin: 0 0 18px !important;}
}

/* ═══ «Работать с нами — просто» ═══════════════════════════════════════
   Было четыре кружка со SVG прямо в разметке: три белых и один залитый
   чужим синим, линии трёх разных цветов, диван вместо иконки расчёта.
   Стало: одинаковые кружки, номер шага, одна соединительная линия. */
.kv-how__list {counter-reset: kvhow; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 26px;}
.kv-how__step {counter-increment: kvhow; position: relative; padding-top: 4px;}
.kv-how__ico {position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; width: 68px; height: 68px; border-radius: 50%; background: var(--kv-tint); color: var(--primary-color); margin-bottom: 16px;}
.kv-how__ico::after {content: counter(kvhow); position: absolute; right: -4px; bottom: -4px; width: 26px; height: 26px; border-radius: 50%; background: var(--kv-wood); color: #fff; font-size: 14px; font-weight: 700; display: flex; align-items: center; justify-content: center; border: 3px solid #fff;}
/* Линия связывает шаги: тянем её от кружка вправо, у последнего убираем. */
.kv-how__step::before {content: ""; position: absolute; top: 38px; left: 78px; right: -26px; height: 2px; background: var(--kv-line);}
.kv-how__step:last-child::before {display: none;}
.kv-how__step b {display: block; font-size: 19px; margin-bottom: 8px;}
.kv-how__step p {margin: 0; font-size: 15.5px; line-height: 1.6; color: var(--kv-muted);}
@media (max-width: 991px) {
	.kv-how__list {grid-template-columns: 1fr 1fr; gap: 28px 24px;}
	.kv-how__step:nth-child(2n)::before {display: none;}
}
@media (max-width: 575px) {
	.kv-how__list {grid-template-columns: 1fr; gap: 22px;}
	.kv-how__step::before {display: none !important;}
	.kv-how__ico {width: 56px; height: 56px; margin-bottom: 12px;}
	.kv-how__step b {font-size: 18px;}
}

/* ═══ Юридические страницы ═════════════════════════════════════════════
   Текст шёл во всю ширину контейнера: строка в 1200 пикселей читается
   плохо, а на политике под заголовком стоял второй, ещё крупнее. */
.kv-legal__wrap {max-width: 800px;}
.kv-legal__wrap h1 {margin: 0 0 10px !important;}
.kv-legal__date {margin: 0 0 26px; font-size: 15px; color: var(--kv-muted);}
.kv-legal__toc {background: var(--kv-tint); border-radius: var(--kv-radius); padding: 18px 22px; margin-bottom: 28px;}
.kv-legal__toc > span {display: block; font-weight: 600; margin-bottom: 8px;}
.kv-legal__toc ul {margin: 0; padding: 0; list-style: none; columns: 2; column-gap: 26px;}
.kv-legal__toc ul li {break-inside: avoid;}
.kv-legal__toc li {margin-bottom: 5px; font-size: 15.5px;}
.kv-legal__text {font-size: 16.5px; line-height: 1.7;}
.kv-legal__text p {margin: 0 0 14px;}
.kv-legal__text h2 {margin: 30px 0 12px !important; font-size: 23px !important; line-height: 1.3 !important; text-align: left !important; scroll-margin-top: 90px;}
.kv-legal__text h3 {margin: 22px 0 8px; font-size: 19px;}
.kv-legal__text ul, .kv-legal__text ol {margin: 0 0 16px; padding-left: 22px;}
.kv-legal__text li {margin-bottom: 7px;}
.kv-legal__more {margin-top: 40px; padding-top: 24px; border-top: 1px solid var(--kv-line);}
.kv-legal__more-title {display: block; font-weight: 600; margin-bottom: 12px;}
.kv-legal__links {display: flex; flex-wrap: wrap; gap: 10px;}
.kv-legal__links a {display: inline-flex; padding: 9px 16px; border: 1px solid var(--kv-line); border-radius: 999px; background: #fff; font-size: 15px; color: var(--kv-ink) !important; transition: border-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease);}
.kv-legal__links a:hover {border-color: var(--primary-color); color: var(--primary-color) !important;}

/* ═══ 404 ══════════════════════════════════════════════════════════════ */
.kv-404 {padding: 40px 0 56px;}
.kv-404__head {max-width: 720px; margin-bottom: 34px;}
.kv-404__code {display: inline-block; font-size: 58px; font-weight: 800; line-height: 1; color: var(--kv-wood); letter-spacing: -0.03em; margin-bottom: 10px;}
.kv-404__head h1 {margin: 0 0 12px !important;}
.kv-404__head p {margin: 0 0 22px; font-size: 17.5px; line-height: 1.6; color: var(--kv-muted);}
.kv-404__act {display: flex; flex-wrap: wrap; gap: 12px;}
.kv-404__grid {display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;}
.kv-404__link {display: block; padding: 16px 18px; background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); font-size: 16px; color: var(--kv-ink) !important; transition: border-color var(--kv-fast) var(--kv-ease), color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-404__link:hover {border-color: var(--primary-color); color: var(--primary-color) !important; box-shadow: 0 8px 26px rgba(13,63,82,.08);}
@media (max-width: 991px) {
	.kv-404__grid {grid-template-columns: 1fr 1fr;}
	.kv-404__code {font-size: 46px;}
}
@media (max-width: 575px) {
	.kv-404__grid {grid-template-columns: 1fr;}
	.kv-404__act .button {width: 100%; text-align: center;}
	/* Две колонки в оглавлении на узком экране распирали страницу. */
	.kv-legal__toc ul {columns: 1;}
	.kv-legal__text {font-size: 16px;}
	.kv-legal__text h2 {font-size: 20px !important;}
}

/* ☠️ Длинные слова в заголовках распирали страницу: «конфиденциальности»
   при крупном кегле шире экрана телефона, и появлялась горизонтальная
   прокрутка всей страницы. Разрешаем перенос по слогам и по символам. */
h1, h2, h3, .kv-legal__wrap h1, .kv-post__head h1 {overflow-wrap: break-word; word-break: normal; hyphens: auto;}
@media (max-width: 575px) {
	.kv-legal__wrap h1 {font-size: 28px !important; line-height: 1.2 !important;}
}

/* ═══ Квиз ═════════════════════════════════════════════════════════════
   Четыре шага и результат. Варианты — крупные карточки, по клику сразу
   следующий шаг; полоса прогресса сверху. */
.kv-quiz__box {background: var(--kv-deep); color: #fff; border-radius: 16px; padding: 38px 42px;}
.kv-quiz__head {max-width: 760px; margin-bottom: 22px;}
.kv-quiz__title {margin: 0 0 10px !important; color: #fff !important; text-align: left !important;}
.kv-quiz__lead {margin: 0; font-size: 17px; line-height: 1.55; color: rgba(255,255,255,.78);}
.kv-quiz__bar {height: 4px; border-radius: 4px; background: rgba(255,255,255,.14); margin-bottom: 26px; overflow: hidden;}
.kv-quiz__bar span {display: block; height: 100%; width: 20%; background: var(--kv-wood); border-radius: 4px; transition: width var(--kv-slow) var(--kv-ease);}
.kv-quiz__step {display: none; border: 0; margin: 0; padding: 0; min-width: 0;}
.kv-quiz__step.is-on {display: block;}
.kv-quiz__step.is-err .kv-quiz__opt, .kv-quiz__step.is-err .kv-quiz__select {border-color: #e0714f;}
.kv-quiz__q {display: block; width: 100%; padding: 0; margin: 0 0 16px; font-size: 22px; font-weight: 700; line-height: 1.3; color: #fff; float: none;}
.kv-quiz__opts {display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px;}
.kv-quiz__opt {position: relative; display: block; cursor: pointer; margin: 0;}
.kv-quiz__opt input {position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none;}
.kv-quiz__opt span {display: block; padding: 16px 18px 16px 48px; background: rgba(255,255,255,.07); border: 1.5px solid rgba(255,255,255,.16); border-radius: 12px; transition: background-color var(--kv-fast) var(--kv-ease), border-color var(--kv-fast) var(--kv-ease);}
.kv-quiz__opt span::before {content: ""; position: absolute; left: 18px; top: 19px; width: 18px; height: 18px; border-radius: 50%; border: 2px solid rgba(255,255,255,.45); background: transparent; transition: border-color var(--kv-fast) var(--kv-ease), background-color var(--kv-fast) var(--kv-ease);}
.kv-quiz__opt b {display: block; font-size: 16.5px; margin-bottom: 3px; color: #fff;}
.kv-quiz__opt small {display: block; font-size: 13.5px; line-height: 1.4; color: rgba(255,255,255,.65);}
.kv-quiz__opt:hover span {border-color: rgba(255,255,255,.5); background: rgba(255,255,255,.11);}
.kv-quiz__opt input:checked + span {border-color: var(--kv-wood); background: rgba(200,129,60,.16);}
.kv-quiz__opt input:checked + span::before {border-color: var(--kv-wood); background: var(--kv-wood); box-shadow: inset 0 0 0 4px var(--kv-deep);}
.kv-quiz__opt input:focus-visible + span {outline: 2px solid #fff; outline-offset: 2px;}
.kv-quiz__field {max-width: 420px;}
.kv-quiz__select {width: 100%; padding: 14px 16px; font: inherit; font-size: 16px; color: var(--kv-ink); background: #fff; border: 1.5px solid transparent; border-radius: 12px;}
.kv-quiz__nav {display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 24px;}
.kv-quiz__back {background: none; border: 0; color: rgba(255,255,255,.7); font: inherit; font-size: 15px; cursor: pointer; padding: 8px 0;}
.kv-quiz__back:hover {color: #fff;}
.kv-quiz__next {margin-left: auto;}
.kv-quiz__res-grid {display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 380px); gap: 30px; align-items: start;}
.kv-quiz__res-label {display: block; font-size: 13px; letter-spacing: .05em; text-transform: uppercase; color: rgba(255,255,255,.6); margin-bottom: 8px;}
.kv-quiz__res-sum {display: block; font-size: 38px; line-height: 1.1; font-weight: 800; letter-spacing: -0.02em; color: var(--kv-wood); margin-bottom: 14px;}
.kv-quiz__res-text {margin: 0 0 14px; font-size: 17px; line-height: 1.55;}
.kv-quiz__res-list {margin: 0 0 16px; padding: 0; list-style: none;}
.kv-quiz__res-list li {position: relative; padding-left: 24px; margin-bottom: 7px; font-size: 15.5px; color: rgba(255,255,255,.85);}
.kv-quiz__res-list li::before {content: ""; position: absolute; left: 0; top: 6px; width: 12px; height: 7px; border-left: 2px solid var(--kv-wood); border-bottom: 2px solid var(--kv-wood); transform: rotate(-45deg);}
.kv-quiz__res-note {margin: 0 0 16px; font-size: 14px; line-height: 1.55; color: rgba(255,255,255,.6);}
.kv-quiz__again {background: none; border: 0; padding: 0; color: rgba(255,255,255,.7); text-decoration: underline; font: inherit; font-size: 14px; cursor: pointer;}
/* Под результатом — три шага, чтобы левая колонка не оставалась пустой
   рядом с высокой формой. */
.kv-quiz__steps {display: grid; gap: 12px; margin-top: 26px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.14);}
.kv-quiz__steps div {display: flex; align-items: flex-start; gap: 12px; font-size: 15px; line-height: 1.5; color: rgba(255,255,255,.85);}
.kv-quiz__steps b {flex: 0 0 26px; height: 26px; border-radius: 50%; background: var(--kv-wood); color: #fff; font-size: 13px; display: flex; align-items: center; justify-content: center;}
.kv-quiz__res-form {background: #fff; color: var(--kv-ink); border-radius: 14px; padding: 22px;}
.kv-quiz__res-form > strong {display: block; font-size: 19px; margin-bottom: 6px;}
.kv-quiz__res-form > p {margin: 0 0 14px; font-size: 14.5px; line-height: 1.5; color: var(--kv-muted);}
@media (max-width: 991px) {
	.kv-quiz__box {padding: 28px 24px;}
	.kv-quiz__res-grid {grid-template-columns: 1fr;}
	.kv-quiz__res-sum {font-size: 32px;}
}
@media (max-width: 575px) {
	.kv-quiz__box {padding: 22px 16px; border-radius: 12px;}
	.kv-quiz__q {font-size: 19px;}
	.kv-quiz__opts {grid-template-columns: 1fr; gap: 10px;}
	.kv-quiz__opt span {padding: 14px 14px 14px 44px;}
	.kv-quiz__opt span::before {left: 14px; top: 17px;}
	.kv-quiz__nav {flex-wrap: wrap;}
	.kv-quiz__next {width: 100%; margin-left: 0; text-align: center;}
	.kv-quiz__res-sum {font-size: 28px;}
}

/* ═══ Сводная страница цен ═══════════════════════════════════════════
   Цифры собираются с карточек услуг, здесь только раскладка. */
.kv-prices {padding: 24px 0 56px;}
.kv-prices h1 {margin: 0 0 16px !important;}
.kv-prices__group {margin-top: 34px;}
.kv-prices__group h2 {margin: 0 0 18px !important; padding: 0 !important;}
.kv-prices__grid {display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px;}
.kv-prices__card {display: flex; flex-direction: column; min-width: 0; background: #fff; border: 1px solid var(--kv-line); border-radius: var(--kv-radius); padding: 20px 22px; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kv-prices__pic-link {display: block; margin: -20px -22px 16px; border-radius: var(--kv-radius) var(--kv-radius) 0 0; overflow: hidden; aspect-ratio: 16 / 9; background: var(--kv-bg);}
.kv-prices__pic {display: block; width: 100%; height: 100%; object-fit: cover; transition: transform var(--kv-photo) var(--kv-ease-soft);}
.kv-prices__card:hover .kv-prices__pic {transform: scale(1.04);}
.kv-prices__card:hover {border-color: var(--primary-color); box-shadow: 0 8px 26px rgba(13,63,82,.08);}
.kv-prices__card h3 {margin: 0 0 12px; font-size: 19px; line-height: 1.3;}
.kv-prices__card h3 a {color: var(--kv-ink); text-decoration: none;}
.kv-prices__card h3 a:hover {color: var(--primary-color);}
.kv-prices__card table {width: 100%; border-collapse: collapse; margin: 0 0 14px;}
.kv-prices__card td {padding: 9px 0; border-top: 1px solid var(--kv-line); font-size: 15px; line-height: 1.45; vertical-align: top;}
.kv-prices__card td:last-child {text-align: right; white-space: nowrap; padding-left: 12px; font-weight: 700; color: var(--primary-color);}
.kv-prices__more {margin-top: auto; font-size: 15px; font-weight: 600; text-decoration: none; color: var(--primary-color);}
.kv-prices__note {margin-top: 44px; padding: 30px 32px; border-radius: var(--kv-radius); background: var(--kv-tint);}
.kv-prices__note h2 {margin: 0 0 18px !important; padding: 0 !important;}
.kv-prices__cols {display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px;}
.kv-prices__cols h3 {margin: 0 0 8px; font-size: 18px;}
.kv-prices__cols p {margin: 0; font-size: 15.5px; line-height: 1.6;}
.kv-prices__cta {margin: 24px 0 0 !important;}
@media (max-width: 991px) {
	.kv-prices__grid, .kv-prices__cols {grid-template-columns: 1fr 1fr;}
}
@media (max-width: 575px) {
	.kv-prices__grid, .kv-prices__cols {grid-template-columns: 1fr;}
	.kv-prices__note {padding: 22px 18px;}
	.kv-prices__card td:last-child {white-space: normal;}
}

/* ═══ Прайс: секции kv_rich с таблицей — без рамки, ступени цены карточками ═══ */
.kv-rich__sec--plain {background: transparent; border: 0; padding: 0; margin-bottom: 30px;}
.kv-rich__sec--plain .kv-rich__h {font-size: 30px !important;}
#price .kv-rich__lead h2 {text-align: left; margin: 0 0 16px !important;}
#price .kv-rich__body table {margin-top: 6px;}
.kv-ladder {display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 380px); gap: 22px; align-items: start; margin: 20px 0 8px;}
.kv-ladder__steps {display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; align-self: start;}
.kv-ladder__step {display: flex; flex-direction: column; justify-content: flex-start; gap: 2px; padding: 18px 14px 30px; border-radius: var(--kv-radius); background: #fff; border: 1px solid var(--kv-line); position: relative; overflow: hidden;}
.kv-ladder__step::before {content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 6px; background: var(--primary-color);}
.kv-ladder__step:nth-child(2)::before {height: 10px; opacity: .8;}
.kv-ladder__step:nth-child(3)::before {height: 14px; opacity: .6;}
.kv-ladder__step:nth-child(4)::before {height: 18px; opacity: .45;}
.kv-ladder__step:nth-child(5)::before {height: 22px; opacity: .3;}
.kv-ladder__step > * {position: relative; z-index: 1;}
.kv-ladder__n {font-size: 24px; font-weight: 800; line-height: 1; color: var(--kv-deep); letter-spacing: -.02em;}
.kv-ladder__l {font-size: 12px; color: var(--kv-muted); text-transform: uppercase; letter-spacing: .05em;}
.kv-ladder__p {display: block; margin-top: 10px; font-size: 19px; font-weight: 800; color: var(--kv-wood); white-space: nowrap;}
.kv-ladder__step.is-first {background: var(--kv-deep); border-color: var(--kv-deep);}
.kv-ladder__step.is-first .kv-ladder__n, .kv-ladder__step.is-first .kv-ladder__l {color: #fff;}
.kv-ladder__step.is-first .kv-ladder__l {opacity: .7;}
.kv-ladder__step.is-first::before {background: var(--kv-wood); opacity: 1;}
.kv-ladder__calc {padding: 22px 24px; border-radius: var(--kv-radius); background: var(--kv-tint);}
.kv-ladder__tag {display: inline-block; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--primary-color); margin-bottom: 12px;}
.kv-ladder__lines {list-style: none !important; margin: 0 0 14px !important; padding: 0 !important;}
.kv-ladder__lines li {display: flex; justify-content: space-between; gap: 14px; padding: 9px 0; border-bottom: 1px solid rgba(13,63,82,.12); font-size: 15px; margin: 0 !important;}
.kv-ladder__lines li::marker {content: "";}
.kv-ladder__lines li b {white-space: nowrap; color: var(--kv-deep);}
.kv-ladder__lines li.is-total {border-bottom: 0; font-size: 17px; font-weight: 700;}
.kv-ladder__lines li.is-total b {font-size: 24px; color: var(--kv-wood);}
.kv-ladder__quick {display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px;}
.kv-ladder__quick span {padding: 7px 12px; border-radius: 999px; background: #fff; font-size: 13.5px; color: var(--kv-muted);}
.kv-ladder__quick b {color: var(--kv-deep);}
.kv-ladder__note {margin: 0 !important; font-size: 14px !important; line-height: 1.55 !important; color: var(--kv-muted);}
@media (max-width: 1199px) {
	.kv-ladder {grid-template-columns: 1fr;}
	.kv-ladder__p {font-size: 17px;}
}
@media (max-width: 767px) {
	.kv-ladder__steps {grid-template-columns: repeat(2, minmax(0, 1fr));}
	.kv-ladder__step.is-first {grid-column: 1 / -1;}
	.kv-rich__sec--plain .kv-rich__h {font-size: 24px !important;}
	.kv-ladder__calc {padding: 18px 16px;}
}

/* ═══ «О компании»: фотополоса с объектов ═══ */
.kv-about__photos {display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin: 6px 0 28px;}
@media (max-width: 991px) {.kv-about__photos {grid-template-columns: repeat(2, minmax(0, 1fr));}}
.kv-about__photo {position: relative; display: block; border-radius: var(--kv-radius); overflow: hidden; background: var(--kv-bg); aspect-ratio: 4 / 3;}
.kv-about__photo img {display: block; width: 100%; height: 100%; object-fit: cover; transition: transform var(--kv-photo) var(--kv-ease-soft);}
.kv-about__photo:hover img {transform: scale(1.04);}
.kv-about__photo span {position: absolute; left: 0; right: 0; bottom: 0; padding: 26px 14px 12px; font-size: 13.5px; line-height: 1.4; color: #fff; background: linear-gradient(to top, rgba(13,63,82,.85), rgba(13,63,82,0));}
@media (max-width: 767px) {
	.kv-about__photos {grid-template-columns: 1fr; gap: 12px;}
}

/* ═══ kv_rich: секция с фотографией и плитки с жирным зачином ═══ */
.kv-rich__sec--media {display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 380px); grid-template-areas: "h m" "b m"; column-gap: 28px; align-items: start;}
.kv-rich__sec--media.kv-rich__sec--flip {grid-template-columns: minmax(0, 380px) minmax(0, 1fr); grid-template-areas: "m h" "m b";}
.kv-rich__sec--media .kv-rich__h {grid-area: h;}
.kv-rich__sec--media .kv-rich__body {grid-area: b;}
.kv-rich__media {grid-area: m; margin: 0; align-self: stretch; display: flex; flex-direction: column;}
.kv-rich__media a {display: block; flex: 1 1 auto; min-height: 220px; border-radius: var(--kv-radius-sm); overflow: hidden; background: var(--kv-bg);}
.kv-rich__media img {display: block; width: 100%; height: 100%; object-fit: cover; transition: transform var(--kv-photo) var(--kv-ease-soft);}
.kv-rich__media a:hover img {transform: scale(1.04);}
.kv-rich__media figcaption {margin-top: 8px; font-size: 13.5px; line-height: 1.45; color: var(--kv-muted);}
.kv-rich__list--lead > li.kv-rich__card {display: block; padding-left: 50px; position: relative;}
.kv-rich__list--lead > li.kv-rich__card--check::before {position: absolute; left: 18px; top: 17px;}
.kv-rich__list--lead strong, .kv-rich__list--lead b {display: block; margin-bottom: 4px; font-size: 16.5px; color: var(--kv-deep);}
@media (max-width: 991px) {
	.kv-rich__sec--media, .kv-rich__sec--media.kv-rich__sec--flip {grid-template-columns: 1fr; grid-template-areas: "h" "m" "b";}
	.kv-rich__media {margin-bottom: 16px;}
	.kv-rich__media a {min-height: 0; aspect-ratio: 4 / 3;}
}

/* Меню между 992 и 1199: восемь пунктов по 18px не влезают в строку и «Цены» уезжали на вторую (замечено 15.09.2026 при ширине 1024). */
@media (min-width: 992px) and (max-width: 1199px) {
	#menu .nav {gap: 12px;}
	#menu .nav > li > a {font-size: 15.5px;}
}
