/* --------------------------------------------------------------------------
   Yandex SmartCaptcha — состояния виджета.

   Подключается в tour/_base.html и lk/_base_login.html, то есть действует и на
   публичной стороне, и в личном кабинете.

   Высоту контейнера заранее не резервируем: виджет инициализируется отложенно
   (по первому взаимодействию с формой) и в момент отрисовки сам меняет высоту
   контейнера на 100px. Скачок вёрстки принят осознанно.
   -------------------------------------------------------------------------- */

.captcha-widget {
	margin-bottom: 1rem;
}

/* В формах-сетках (row g-3) вертикальные отступы задаёт сам бутстрап-гаттер */
[class*="col-"] > .captcha-widget {
	margin-bottom: 0;
}

/* Контейнер виджета. Класс намеренно не smart-captcha: используется расширенный
   метод подключения через window.smartCaptcha.render, автоскан Яндекса не должен
   трогать этот элемент. */
.captcha-slot:empty {
	display: none;
}

/* Состояние кнопки отправки до прохождения капчи. Атрибут disabled не используем:
   в lead-формах кнопкой уже управляет hx-disabled-elt, и htmx снимет disabled
   после ответа, ничего не зная про капчу. */
.captcha-locked {
	cursor: not-allowed;
	opacity: .65;
}

.captcha-status {
	display: flex;
	align-items: center;
	gap: .5rem;
	margin-top: .5rem;
	font-size: .875rem;
}

.captcha-status-text {
	color: #6c757d;
}

.captcha-error {
	margin-top: .5rem;
	font-size: .875rem;
	color: #dc3545;
}

.captcha-spinner {
	flex: 0 0 auto;
	width: 1rem;
	height: 1rem;
	border: 2px solid rgba(0, 0, 0, .15);
	border-top-color: currentColor;
	border-radius: 50%;
	animation: captcha-spin .7s linear infinite;
}

@keyframes captcha-spin {
	to {
		transform: rotate(360deg);
	}
}

/* Окно задания капчи должно быть поверх Bootstrap-модалок. Значения подобраны
   относительно z-index модалки (1055) и её backdrop (1050). */
.smart-captcha-popup,
[class*="smart-captcha"][class*="popup"],
iframe[src*="smartcaptcha"] {
	z-index: 1080 !important;
}
