/* =========================================================
   Общие стили полей форм (form-field) — используются и в блоке
   "Как с нами связаться" (feedback-form.css), и во всплывающей
   форме тарифов (tariffs.css), и в любых будущих формах.

   ВАЖНО ДЛЯ ИНТЕГРАЦИИ: разметка полей максимально простая и
   стандартная (label + input/textarea), чтобы её можно было
   напрямую подставить в шорткод/виджет стороннего плагина форм
   (например Contact Form 7 / WPForms при переносе на WordPress,
   или веб-форму Битрикс24) — просто оборачиваем существующий
   виджет формы в .form-field, сохраняя внешний вид.
   ========================================================= */

.form-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: var(--space-3);
}

.form-field__label {
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--color-text);
}

.form-field__label .required {
  color: var(--color-danger);
}

.form-field__label .form-field__optional {
  font-weight: 400;
  color: var(--color-text-muted);
  font-size: 0.8em;
}

.form-field__control {
  width: 100%;
  padding: 13px 16px;
  border-radius: var(--radius-s);
  border: 1.5px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text);
  transition: border-color 0.15s ease;
}

.form-field__control:focus {
  outline: none;
  border-color: var(--color-navy);
}

textarea.form-field__control {
  min-height: 110px;
  resize: vertical;
}

/* Варианты выбора — в столбик */
.form-field--radio-group {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.form-radio {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: var(--fs-small);
  cursor: pointer;
}

/* Чекбокс слева абсолютно, текст течёт обычным абзацем и переносится
   как единый блок (иначе на узких экранах слова «разлетаются» столбиками) */
.form-checkbox {
  display: block;
  position: relative;
  padding-left: 30px;
  font-size: var(--fs-small);
  line-height: 1.5;
  color: var(--color-text-muted);
  cursor: pointer;
}

.form-checkbox + .form-checkbox {
  margin-top: 10px;
}

.form-checkbox a {
  text-decoration: underline;
  color: var(--color-text);
}

/* ---------- Кастомные чекбоксы и радио-кнопки ---------- */
.form-checkbox input[type="checkbox"],
.form-radio input[type="radio"] {
  appearance: none;
  -webkit-appearance: none;
  flex: none;
  width: 20px;
  height: 20px;
  margin: 0;
  border: 2px solid var(--color-border);
  background: var(--color-surface);
  cursor: pointer;
  position: relative;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.form-checkbox input[type="checkbox"] {
  position: absolute;
  left: 0;
  top: 1px;
  border-radius: 6px;
}

.form-radio input[type="radio"] {
  border-radius: 50%;
}

.form-checkbox input[type="checkbox"]:hover,
.form-radio input[type="radio"]:hover {
  border-color: var(--color-accent);
}

.form-checkbox input[type="checkbox"]:checked,
.form-radio input[type="radio"]:checked {
  border-color: var(--color-accent);
  background: var(--color-accent);
}

/* Галочка чекбокса — по центру */
.form-checkbox input[type="checkbox"]:checked::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 46%;
  width: 5px;
  height: 9px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: translate(-50%, -50%) rotate(45deg);
}

/* Точка радио-кнопки — по центру */
.form-radio input[type="radio"]:checked::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #fff;
  transform: translate(-50%, -50%);
}

.form-checkbox input:focus-visible,
.form-radio input:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

.form-note {
  font-size: var(--fs-small);
  color: var(--color-text-muted);
  margin-top: var(--space-2);
}

[data-form-status] {
  margin-top: var(--space-3);
  padding: 12px 14px;
  border-radius: var(--radius-s);
  font-size: var(--fs-small);
  line-height: 1.45;
}

[data-form-status][hidden] {
  display: none;
}

[data-form-status][data-state="loading"] {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--color-text-muted);
  background: rgba(37, 45, 67, 0.06);
}

[data-form-status][data-state="loading"]::before {
  content: "";
  flex: none;
  width: 16px;
  height: 16px;
  border: 2px solid rgba(37, 45, 67, 0.18);
  border-top-color: var(--color-accent);
  border-radius: 50%;
  animation: form-status-spin 0.75s linear infinite;
}

[data-form-status][data-state="success"] {
  color: var(--color-success);
  background: rgba(46, 139, 87, 0.08);
}

[data-form-status][data-state="error"] {
  color: var(--color-danger);
  background: rgba(192, 57, 43, 0.08);
}

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