/* Contact Form 7 — каркас форм (слой 1). Подключается только при активном CF7, его собственные стили отключены.
   Поля получают классы cab-input / cab-btn (inc/Integrations/Cf7.php) — оформление в скине.
   Служебные элементы CF7 (wpcf7-*) оформляются здесь нейтрально через роли цветов;
   скин может уточнить их селекторами вида .cab-form .wpcf7-not-valid-tip. */

.cab-form {
  display: flex;
  flex-direction: column;
  gap: var(--cab-space-4);
}

/* Рекомендуемая разметка: <div class="cab-form__grid"> + <div class="cab-field [cab-field--full]"> */
.cab-form__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--cab-space-4);
}
@media (min-width: 720px) {
  .cab-form__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .cab-form__grid .cab-field--full {
    grid-column: 1 / -1;
  }
}
.cab-form__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--cab-space-3);
}

/* CF7 оборачивает каждое поле в span — растягиваем его на ширину колонки */
.cab-form .wpcf7-form-control-wrap {
  display: block;
  position: relative;
}
.cab-form textarea.cab-input {
  height: 8.5rem;
  min-height: 5rem;
  resize: vertical;
}
/* CF7 6 кладёт скрытые служебные поля в fieldset — без рамки и места (значения всё равно отправляются) */
.cab-form .hidden-fields-container {
  display: none;
}

/* Чекбоксы, радио, согласие */
.cab-form .wpcf7-checkbox,
.cab-form .wpcf7-radio,
.cab-form .wpcf7-acceptance {
  display: flex;
  flex-wrap: wrap;
  gap: var(--cab-space-2) var(--cab-space-5);
}
.cab-form .wpcf7-list-item {
  display: inline-flex;
  margin: 0;
}
.cab-form .wpcf7-list-item label {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--cab-space-2);
  cursor: pointer;
}
.cab-form .wpcf7-list-item input {
  flex: 0 0 auto;
  margin-top: 0.25em;
  accent-color: var(--cab-color-accent);
}

/* Служебное: ответ, ошибки, спиннер, скрытый ответ для скринридеров */
.wpcf7 .screen-reader-response {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.cab-form .wpcf7-not-valid-tip {
  display: block;
  margin-top: var(--cab-space-1);
  color: #d63638;
  font-size: 0.875em;
}
.cab-form .wpcf7-not-valid {
  border-color: #d63638;
}
.cab-form .wpcf7-response-output {
  margin: 0;
  padding: var(--cab-space-3) var(--cab-space-4);
  border: 1px solid var(--cab-color-line);
  border-radius: var(--cab-radius-sm);
  font-size: 0.95em;
}
.cab-form .wpcf7-response-output:empty,
.cab-form.init .wpcf7-response-output,
.cab-form.resetting .wpcf7-response-output,
.cab-form.submitting .wpcf7-response-output {
  display: none;
}
.cab-form.sent .wpcf7-response-output {
  border-color: #2e9e5b;
}
.cab-form.invalid .wpcf7-response-output,
.cab-form.unaccepted .wpcf7-response-output,
.cab-form.failed .wpcf7-response-output,
.cab-form.spam .wpcf7-response-output,
.cab-form.aborted .wpcf7-response-output {
  border-color: #d63638;
}

.cab-form .wpcf7-spinner {
  display: inline-block;
  visibility: hidden;
  width: 20px;
  height: 20px;
  margin: 0 var(--cab-space-2);
  border: 2px solid var(--cab-color-line);
  border-top-color: var(--cab-color-accent);
  border-radius: 50%;
  vertical-align: middle;
  animation: cab-spin 0.8s linear infinite;
}
.cab-form.submitting .wpcf7-spinner {
  visibility: visible;
}
.cab-form .wpcf7-submit:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}
@keyframes cab-spin {
  to {
    transform: rotate(360deg);
  }
}
@media (prefers-reduced-motion: reduce) {
  .cab-form .wpcf7-spinner {
    animation-duration: 2s;
  }
}
