/* C 14.08 (tasks/006-contacts-callback.md) — перестилизация под токены phoenix_v1.
   Только визуал: имена классов не менялись — это хуки script.js/ajax.php (AJAX-отправка,
   валидация, показ ошибок, капча), их трогать нельзя. Цветовая/шрифтовая/отступная система —
   та же, что у формы оформления заказа в корзине (header.php, .phx-checkout-form/.phx-field). */

.webFormDw form{
	transition: all 0.2s ease-in-out;
	font-family: var(--font-body);
}

.webFormDw form.loading{
	pointer-events: none;
	opacity: 0.8;
}

.webFormHeading{
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--step-1);
	color: var(--tink);
	margin: 0;
}

.webFormDescription{
	margin: var(--sp-2) 0 0 0;
	max-width: 800px;
	color: var(--mut);
}

/* 1500F 02.09 — было display:table + две ячейки по 50%.
   Вторую ячейку открывал сам template.php, как только доходил до поля типа textarea, из-за
   чего «Ваше имя» и «Ваше сообщение» вставали рядом, а «Ваш телефон» и «Тема вопроса»
   оставались под «Именем»: порядок чтения расходился с видимым (замер 02.09 — DOM
   имя→телефон→тема→сообщение, глазами имя→сообщение→телефон→тема). Разрыв убран из шаблона,
   здесь остаётся один поток на всех ширинах, а не только на мобильной.
   Имена классов сохранены намеренно: на .webFormItemsColumn висит высота textarea ниже, а
   переименование любого webForm*-класса — риск задеть script.js. */
.webFormItemsColumns{
	display: block;
	width: 100%;
}

.webFormItemsColumns .webFormItem{
	margin-top: var(--sp-2);
}

.webFormItemsColumn{
	display: block;
	width: 100%;
	padding: 0;
}

.webFormItemsColumn .webFormItemField textarea{
	height: 200px;
}

.webFormItem{
	margin-top: var(--sp-2);
}

.webFormItemCaption{
	font-family: var(--font-body);
	font-weight: 600;
	font-size: var(--step--1);
	color: var(--mut);
	margin-bottom: 6px;
	line-height: 1.4;
}

.webFormItemImage{
	vertical-align: middle;
	display: inline-block;
	padding-right: 6px;
}

.webFormItemLabel{
	vertical-align: middle;
	display: inline-block;
	color: var(--mut);
}

.webFormItemRequired{
	display: inline-block;
	padding-left: 4px;
	color: var(--danger);
}

.webFormItemFieldVariant{
	display: inline-block;
	margin-left: var(--sp-2);
}

.webFormItemFieldVariant:first-child{
	margin-left: 0px;
}

/* 1500F — в один поток поле растянулось бы на всю ширину карточки, и телефон во всю строку
   читается как ошибка вёрстки. Потолок 460px бьёт только на десктопе: на 390 карточка уже, и
   width:100% остаётся сильнее.
   Потолок один и тот же для однострочных полей И для textarea — сознательно, после разбора
   visual-critic: сначала textarea оставалась на 100%, и она оказывалась шире соседних полей на
   несколько десятков пикселей. Правый край колонки «прыгал», и это читалось не как замысел, а
   как опечатка. Единственное исключение — поле капчи (max-width 300px ниже): там короткий код,
   и узкое поле подсказывает длину ввода. */
.webFormItemField input[type="password"],
.webFormItemField input[type="text"],
.webFormItemField select{
	transition: border-color 0.2s ease-in-out;
	box-sizing: border-box;
	font-family: var(--font-body);
	border: 1px solid var(--line);
	border-radius: 10px;
	padding: 0 14px;
	max-width: 460px;
	font-size: var(--step--1);
	color: var(--ink);
	background: hsl(0 0% 100%);
	outline: none;
	height: 48px;
	width: 100%;
}

.webFormItemField textarea{
	transition: border-color 0.2s ease-in-out;
	box-sizing: border-box;
	font-family: var(--font-body);
	border: 1px solid var(--line);
	border-radius: 10px;
	padding: 12px 14px;
	max-width: 460px;
	font-size: var(--step--1);
	color: var(--ink);
	background: hsl(0 0% 100%);
	height: 200px;
	outline: none;
	width: 100%;
}

.webFormItemField input[id*="form_date_"]{
	margin-bottom: 6px;
}

.webFormItemField input[type="text"]:focus,
.webFormItemField input[type="password"]:focus,
.webFormItemField textarea:focus{
	border-color: var(--acc-text);
}

/* 1508F 02.09 — находка web-design-guidelines (vercel-labs/web-interface-guidelines): "outline:
   none без замены фокуса" запрещено. Общее `outline: none` строкой выше (105-121) не про этот
   select — на него у соседей есть замена (border-color:focus), а у select её не было вовсе:
   замер сайта до правки (getComputedStyle с реальным .focus(), check1508F_subnote.mjs, фаза
   focus-before) — outlineStyle:"none", borderColor не менялся. Сайтовый общий фокус
   (css/main.css:84, `input:focus-visible{outline:2px solid var(--acc-text)}`) на select не
   распространяется вовсе — селектор не включает select. */
.webFormItemField select:focus-visible{
	border-color: var(--acc-text);
	outline: 2px solid var(--acc-text);
	outline-offset: 2px;
}

.webFormItemField input[type="checkbox"] + label,
.webFormItemField input[type="radio"] + label {
	cursor: pointer;
	color: var(--mut);
	font-size: var(--step--1);
}

.webFormItemField input[type="checkbox"]:not(checked),
.webFormItemField input[type="radio"]:not(checked) {
  position: absolute;
  opacity: 0;
}

.webFormItemField input[type="checkbox"]:not(checked) + label,
.webFormItemField input[type="radio"]:not(checked) + label {
	position: relative;
	padding-left: 28px;
}

.webFormItemField input[type="checkbox"].error + label:before{
	border: 1px solid var(--danger) !important;
}

.webFormItemField input[type="checkbox"] + label:before {
	background: url(images/checkBox.png) 0 0 no-repeat transparent;
}

.webFormItemField input[type="radio"] + label:before {
	background: url(images/radio.png) 0 0 no-repeat transparent;
}

.webFormItemField input[type="checkbox"]:not(checked) + label:before,
.webFormItemField input[type="radio"]:not(checked) + label:before {
	position: absolute;
	content: " ";
    height: 17px;
	width: 17px;
	left: 0;
	top: 0px;
}

.webFormItemField input[type="checkbox"]:not(checked) + label:hover:before,
.webFormItemField input[type="radio"]:not(checked) + label:hover:before {
	background-position: 0 -17px;
}

.webFormItemField input[type="checkbox"]:checked + label:before,
.webFormItemField input[type="radio"]:checked + label:before {
	background-position: 0 -34px;
}

.webFormItemField input[type="checkbox"]:checked + label:hover:before,
.webFormItemField input[type="radio"]:checked + label:hover:before {
	background-position: 0 -51px;
}

.webFormItemField input[type="checkbox"]:disabled + label,
.webFormItemField input[type="radio"]:disabled + label {
	cursor: default;
}

.webFormItemField input[type="checkbox"]:disabled + label:before,
.webFormItemField input[type="radio"]:disabled + label:before {
	background-position: 0 -68px !important;
}

/* B32 15.08 (tasks/032-consent-checkbox-touch.md) — реальный <input type="checkbox">
   согласия занимал ровно свой нативный размер (~13×13px — замер отчёта 030), а подпись
   в <label> при переносе на узких экранах визуально растягивалась почти на всю строку
   (181×42.8px), из-за чего попадание в галочку было лотереей между двумя перекрывающимися
   зонами. Правило проекта — не меньше 44×44px на элемент касания.
   Решение: не увеличиваем сам значок (только это и просила задача не делать), а даём
   настоящему input свою явную позиционированную область 44×44 в левом верхнем углу
   .webFormItemField, и отдельно резервируем под неё же слева 44px в самом <label>
   (display:block — отступ действует на ВСЕ строки текста при переносе, не только на
   первую, как было бы при обычном inline-label). Так текст/ссылка физически не могут
   попасть в зону галочки ни на одной строке — это два не пересекающихся тап-таргета,
   а не один размытый. Текст "Я согласен на" по-прежнему переключает галочку — это
   встроенное поведение браузера у <label for="...">, здесь ничего не меняется. Ссылка
   "обработку персональных данных" внутри label сохраняет свой клик и target="_blank"
   (B22, задача 030) — при клике по ссылке событие не всплывает до переключения чекбокса,
   так уже работает нативно. Область действия — только .personalInfo, чтобы не задеть
   другие чекбоксы/радио этого компонента (их сейчас нет, но общий селектор их бы тоже
   зацепил без этого сужения). */
.personalInfo .webFormItemField{
	position: relative;
}

.personalInfo .webFormItemField input[type="checkbox"]{
	position: absolute;
	top: 0;
	left: 0;
	width: 44px;
	height: 44px;
	margin: 0;
	cursor: pointer;
}

.personalInfo .webFormItemField input[type="checkbox"]:not(checked) + label{
	display: block;
	padding-left: 44px;
	min-height: 44px;
}

.personalInfo .webFormItemField input[type="checkbox"]:not(checked) + label:before{
	top: 13px;
	left: 14px;
}

.webFormItemField img.calendar-icon {
    vertical-align: middle !important;
    margin: 0 0 0 0px !important;
    border: 0 !important;
}

.webFormItemField [multiple]{
	line-height: 120px;
	height: 120px;
	padding: 12px;
}

.webFormCaptchaPicture{
	margin-top: var(--sp-2);
}

.webFormCaptchaPicture img{
	vertical-align: middle;
	max-width: 100%;
	border-radius: 8px;
}

.webFormCaptchaLabel{
	margin-bottom: 6px;
	margin-top: var(--sp-2);
	font-size: var(--step--1);
	color: var(--mut);
}

.webFormItemField input.captcha_word{
	max-width: 300px;
}

.webFormTools{
	margin-top: var(--sp-3);
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--sp-2);
}

/* Единая CTA — та же визуальная система, что .btn/.btn-cta по всему сайту (header.php),
   класс не меняем (sendWebFormDw — хук script.js), только фон/форма/типографика. */
.webFormTools input[type="submit"]{
	transition: background-color 0.15s ease-in-out;
	box-sizing: border-box;
	font-family: var(--font-body);
	border-radius: var(--btn-radius);
	border: none;
	text-align: center;
	font-weight: 600;
	font-size: var(--btn-fs-main);
	max-width: 260px;
	cursor: pointer;
	background: var(--cta);
	color: var(--white);
	outline: none;
	height: 48px;
	padding: 0 22px;
	width: auto;
}

.webFormTools input[type="submit"]:hover{
	background: var(--cta-d);
}

.webFormTools input[type="submit"]:active{
	position: relative;
	top: 1px;
}

.webFormTools input[type="submit"].loading{
	background-image: url(images/loading.gif);
	background-color: var(--mut) !important;
	background-position: 50% 50%;
	background-repeat: no-repeat;
	pointer-events: none;
	color: transparent;
	opacity: 0.6;
}

.webFormTools input[type="reset"]{
	box-sizing: border-box;
	font-family: var(--font-body);
	border: 1px solid var(--line);
	border-radius: var(--btn-radius);
	background-color: transparent;
	text-align: center;
	font-size: var(--btn-fs-main);
	max-width: 200px;
	cursor: pointer;
	color: var(--mut);
	outline: none;
	height: 48px;
	padding: 0 18px;
	width: auto;
}

.webFormTools input[type="reset"]:hover{
	border-color: var(--acc-text);
	color: var(--acc-text);
}

.webFormTools input[type="reset"]:active{
	position: relative;
	top: 1px;
}

/* 1508F 02.09 — тот же пробел, что у select выше: `outline: none` (строки 314 и 363) без замены.
   Замер до правки (focus-before): outlineStyle:"none" на обеих кнопках, фон/цвет на :focus не
   меняются вовсе (только на :hover/:active) — клавиатурный фокус физически невидим. Токен и
   геометрия — те же, что у сайтового общего правила css/main.css:84
   (`input:focus-visible{outline:2px solid var(--acc-text)}`), которое сюда не доезжает: локальный
   `outline:none` этого файла специфичнее и глушит его молча. */
.webFormTools input[type="submit"]:focus-visible,
.webFormTools input[type="reset"]:focus-visible{
	outline: 2px solid var(--acc-text);
	outline-offset: 2px;
}

.webFormTools p{
	margin: 0;
	font-size: var(--step--1);
	color: var(--mut);
}

/* 1508F 02.09 — было `style="margin:8px 0 0;color:var(--muted,#666);font-size:13px"` инлайном в
   template.php: raw-hex #666 фолбэком на случай отсутствия --muted (в проекте tokens.css грузится
   всегда, --muted — алиас --mut, tokens.css:113 — фолбэк не рендерился ни разу живьём, честно
   проверено замером before.json: цвет уже #5d6065) и font-size:13px, не связанный ни с одной
   ступенью шкалы --step, тогда как весь остальной компонент уже говорит токенами (--mut,
   var(--step--1)). Правка — источник значения, а не новый вид: цвет не меняется, font-size
   переходит с жёсткого 13px на var(--step--1) (~12.8–14.4px по ширине вьюпорта, тот же паттерн,
   что уже используют соседние правила этого файла). */
.webFormSubnote{
	margin: var(--sp-1) 0 0;
	color: var(--mut);
	font-size: var(--step--1);
}

.webFormItemError,
.webFormError{
	font-family: var(--font-body);
	margin-bottom: var(--sp-1);
	font-size: 12.5px;
	color: var(--danger);
	display: none;
}

.webFormError{
	margin-bottom: 0px;
	margin-top: var(--sp-2);
}

.webFormItemError.visible,
.webFormError.visible{
	display: block;
}

.webFormItemField .error{
	border: 1px solid var(--danger) !important;
}

.webFormMessage{
	transition: 0.1s all ease-in-out;
    background: hsl(210 6% 13% / .5);
    line-height: 250px;
    position: fixed;
    overflow: auto;
    display: none;
    z-index: 1000;
    height: 100%;
    width: 100%;
    left: 0px;
    top: 0px;
}

.webFormMessageContainer{
	box-shadow: var(--shadow);
	background-color: hsl(0 0% 100%);
	box-sizing: border-box;
	margin-left: -225px;
	position: absolute;
	text-align: center;
	margin-top: -125px;
	border-radius: 16px;
	padding: 0px var(--sp-3);
	height: 250px;
	width: 450px;
	left: 50%;
	top: 50%;
}

.webFormMessageMiddle{
	vertical-align: middle;
	display: inline-block;
	line-height: 1.5;
}

.webFormMessageHeading{
	margin-bottom: var(--sp-2);
	text-align: center;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--step-1);
	color: var(--tink);
}

.webFormMessageDescription{
	text-align: center;
	color: var(--mut);
}

.webFormMessageExit{
	transition: background-color 0.15s ease-in-out;
	background-color: var(--cta);
	text-decoration: none;
	display: inline-block;
	text-align: center;
	font-weight: 600;
	border-radius: var(--btn-radius);
	font-size: var(--btn-fs-main);
	line-height: 40px;
	margin-top: var(--sp-2);
	padding: 0 var(--sp-2);
	color: var(--white);
	height: 40px;
}

.webFormMessageExit:hover{
	background-color: var(--cta-d);
}

.webFormMessageExit:active{
	position: relative;
	top: 1px;
}

@media all and (max-width: 650px) {

	/* 1500F — правило «колонка в блок» отсюда убрано: с 02.09 это базовое поведение на всех
	   ширинах, а не мобильное исключение. Осталась только высота textarea. */
	.webFormItemsColumn .webFormItemField textarea{
		height: 150px;
	}

	.webFormItemField input[id*="form_date_"]{
		margin-bottom: var(--sp-2);
	}


	.webFormItemField img.calendar-icon{
		margin-left: 0px !important;
	}

	.webFormTools input[type="reset"]{
		margin-bottom: 0px;
	}

}

@media all and (max-width: 500px){

	.webFormMessageContainer{
		margin-left: -160px;
		width: calc(100vw - 48px);
		max-width: 320px;
	}

}

@media all and (max-width: 400px) {
	.webFormTools{
		flex-direction: column;
		align-items: stretch;
	}
	.webFormTools input[type="submit"],
	.webFormTools input[type="reset"]{
		max-width: 100%;
		width: 100%;
	}
}
