/*
 * Формы заявок.
 *
 * Оформление своё — Contact Form 7 снят вместе со своими стилями,
 * которые грузились на каждой странице сайта.
 *
 * ☠️ Здесь были переменные --kp-* от kolodezprom, откуда модуль портирован:
 * на этом сайте их нет, поэтому в дело шли запасные значения чужой,
 * салатово-зелёной палитры — кнопка заявки была зелёной вместо фирменной.
 * Все цвета берём из токенов темы (--kv-*).
 */

.kvform {display: grid; gap: 14px;}
.kvform__title {font-size: 22px; font-weight: 800; line-height: 1.25; letter-spacing: -0.02em; color: var(--kv-ink);}
.kvform__lead {margin: -6px 0 0; font-size: 15px; line-height: 1.5; color: var(--kv-muted);}

.kvform__row {display: grid; gap: 7px;}
.kvform label {font-size: 14px; font-weight: 600; color: var(--kv-ink);}
.kvform .req {color: #c0392b;}

.kvform input[type="text"], .kvform input[type="tel"], .kvform textarea {width: 100%; padding: 14px 16px; border: 1.5px solid var(--kv-line); border-radius: var(--kv-radius-sm); background: #fff; color: var(--kv-ink); font: inherit; font-size: 16px; line-height: 1.4; transition: border-color var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kvform textarea {resize: vertical; min-height: 92px;}
.kvform input::placeholder, .kvform textarea::placeholder {color: #9aa8b0;}
.kvform input:focus, .kvform textarea:focus {outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 4px rgba(21, 126, 150, .14);}
.kvform input:user-invalid {border-color: #e0a0a0;}

/* ═══ Согласие ═════════════════════════════════════════════════════════ */
/* ☠️ Нативный флажок здесь не виден: в style.css у всех input стоит
   -webkit-appearance: none и белый фон, поэтому браузер не рисует ни рамки,
   ни галочки — на белом фоне модалки чекбокс пропадал совсем.
   Рисуем свой: квадрат с рамкой и галочкой. */
.kvform__consent {display: flex; align-items: flex-start; gap: 10px; font-size: 13px; font-weight: 400; line-height: 1.45; color: var(--kv-muted); cursor: pointer;}
.kvform__consent input {flex: none; position: relative; width: 20px; height: 20px; margin: 0; border: 1.5px solid var(--kv-line); border-radius: 5px; background: #fff; cursor: pointer; transition: background-color var(--kv-fast) var(--kv-ease), border-color var(--kv-fast) var(--kv-ease);}
.kvform__consent input::after {content: ""; position: absolute; left: 6px; top: 2px; width: 5px; height: 10px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg) scale(.4); opacity: 0; transition: opacity var(--kv-fast) var(--kv-ease), transform var(--kv-fast) var(--kv-ease);}
.kvform__consent input:checked {background: var(--kv-wood); border-color: var(--kv-wood);}
.kvform__consent input:checked::after {opacity: 1; transform: rotate(45deg) scale(1);}
.kvform__consent input:focus-visible {outline: 3px solid var(--kv-fresh); outline-offset: 2px;}
.kvform__consent input:user-invalid {border-color: #d98b8b;}
.kvform__consent a {color: var(--primary-color); text-decoration: underline;}
.kvform__consent a:hover {color: var(--hovercolor);}

/* ═══ Кнопка ═══════════════════════════════════════════════════════════ */
.kvform__btn {padding: 16px 30px; border: 0; border-radius: var(--kv-radius-sm); background: var(--kv-wood); color: #fff; font-family: inherit; font-size: 16px; font-weight: 700; line-height: 1; cursor: pointer; box-shadow: 0 2px 0 rgba(0, 0, 0, .06); transition: background-color var(--kv-fast) var(--kv-ease), transform var(--kv-fast) var(--kv-ease), box-shadow var(--kv-fast) var(--kv-ease);}
.kvform__btn:hover:not(:disabled) {background: var(--kv-wood-hover); transform: translateY(-1px); box-shadow: 0 6px 18px rgba(200, 129, 60, .28);}
.kvform__btn:active:not(:disabled) {transform: none; box-shadow: none;}
.kvform__btn:disabled {opacity: .65; cursor: default;}
.kvform__btn:focus-visible {outline: 3px solid var(--kv-fresh); outline-offset: 3px;}

/* Ловушка для ботов. Раньше уезжала на -9999px — проверка вёрстки каждый раз
   ругалась на «текст за плашкой», а на узких экранах такой приём иногда тянет
   за собой горизонтальную прокрутку. Прячем по-современному, на месте. */
.kvform__trap {position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;}

.kvform__msg {display: none; padding: 13px 16px; border-radius: var(--kv-radius-sm); font-size: 14.5px; line-height: 1.5;}
.kvform__msg.is-shown {display: block;}
.kvform__msg.is-ok {background: rgba(52, 179, 201, .14); color: #0f5a6b;}
.kvform__msg.is-err {background: #fdeceb; color: #a33228;}

/* В баннере на лендинге форма стоит на тёмной подложке. */
.kvform--dark .kvform__title {color: #fff;}
.kvform--dark .kvform__lead {color: rgba(255, 255, 255, .85);}
.kvform--dark label {color: #fff;}
.kvform--dark .kvform__consent {color: rgba(255, 255, 255, .75);}
.kvform--dark .kvform__consent a {color: var(--kv-fresh);}
.kvform--dark .kvform__consent input {border-color: rgba(255, 255, 255, .35); background: rgba(255, 255, 255, .08);}

/* ═══ Расчёт, приложенный к заявке ═════════════════════════════════════ */
/* Человек должен видеть, что его цифры уедут вместе с телефоном, — иначе
   он дублирует их в комментарии или не верит, что расчёт сохранился.
   Плашка появляется только если он действительно считал на этой странице. */
/* ☠️ `display: block` перебивал атрибут hidden, и плашка «К заявке приложим
   ваш расчёт» висела в форме на всех страницах без калькулятора — в блоге,
   контактах, отзывах. Человек ничего не считал, а сайт обещал приложить расчёт. */
.kvform__calc[hidden] {display: none !important;}
.kvform__calc {display: block; margin: 0 0 2px; padding: 12px 14px; border-radius: var(--kv-radius-sm); background: var(--kv-tint); border: 1px solid var(--kv-line);}
.kvform__calc b {display: block; font-size: 13px; font-weight: 600; color: var(--kv-ink);}
.kvform__calc [data-kvform-calc-sum] {display: block; margin: 2px 0 4px; font-size: 20px; font-weight: 800; letter-spacing: -0.02em; color: var(--kv-wood); line-height: 1.2;}
.kvform__calc small {display: block; font-size: 12px; line-height: 1.5; color: var(--kv-muted);}
.kvform__calc-drop {display: inline-block; margin-top: 6px; font-size: 12.5px; color: var(--kv-muted); text-decoration: underline; background: none; border: 0; padding: 0; cursor: pointer;}
.kvform__calc-drop:hover {color: var(--kv-ink);}

@media (max-width: 640px) {
	.kvform {gap: 12px;}
	.kvform__title {font-size: 19px;}
	.kvform input[type="text"], .kvform input[type="tel"], .kvform textarea {padding: 13px 14px;}
	.kvform__btn {width: 100%; padding: 15px 20px;}
}

/* ═══ Проверка «вы человек» от Wolf AntiSpam ═══════════════════════════ */
/* Плагин показывает пример на сложение при повторной отправке. Свою
   вёрстку он приносит с зелёной палитрой — приводим к виду формы.
   Сам плагин не трогаем: только оформление. */
.kvform .wolf-as-box, #za .wolf-as-box {margin: 12px 0 0; padding: 14px 16px; border-radius: var(--kv-radius-sm); background: var(--kv-tint) !important; border: 1.5px solid var(--kv-line) !important; display: grid; gap: 8px;}
.kvform .wolf-as-box label, #za .wolf-as-box label {display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 14px; font-weight: 600; color: var(--kv-ink);}
.kvform .wolf-as-label, #za .wolf-as-label {color: var(--kv-ink);}
.kvform .wolf-as-question, #za .wolf-as-question {color: var(--kv-wood); font-weight: 800;}
.kvform .wolf-as-answer, #za .wolf-as-answer {width: 96px; padding: 10px 12px; border: 1.5px solid var(--kv-line) !important; border-radius: var(--kv-radius-sm); background: #fff !important; font: inherit; font-size: 16px; color: var(--kv-ink);}
.kvform .wolf-as-answer:focus, #za .wolf-as-answer:focus {outline: none; border-color: var(--primary-color) !important; box-shadow: 0 0 0 4px rgba(21, 126, 150, .14);}
.kvform .wolf-as-box small, #za .wolf-as-box small {font-size: 12.5px; line-height: 1.45; color: var(--kv-muted);}
