/* Unified form controls (public forms) */
.form__field,
input.form__field,
textarea.form__field,
select.form__field,
.form input.form__field,
.form textarea.form__field,
.form select.form__field,
.ajax_form .form__field,
.ap-abonement-form .form__field,
.ms2_form .form__field,
.form input[type="text"],
.form input[type="email"],
.form input[type="tel"],
.form input[type="number"],
.form input[type="date"],
.form input[type="password"],
.form textarea,
.form select,
.ajax_form input[type="text"],
.ajax_form input[type="email"],
.ajax_form input[type="tel"],
.ajax_form input[type="number"],
.ajax_form textarea,
.ajax_form select {
  font-family: inherit;
  font-size: 15px;
  font-weight: 400;
  line-height: 1.45;
  color: #333;
  background-color: #fff;
  border: 2px solid #e1e1e1;
  border-radius: 0;
  outline: none !important;
  box-shadow: none !important;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  transition: border-color .3s ease, box-shadow .3s ease;
}

.form__field::placeholder,
input.form__field::placeholder,
textarea.form__field::placeholder,
.form input::placeholder,
.form textarea::placeholder,
.ajax_form input::placeholder,
.ajax_form textarea::placeholder {
  font-family: inherit;
  font-size: 15px;
  font-weight: 400;
  color: #9ca3af;
  opacity: 1;
}

/* Empty required fields stay gray (not red) */
.form__field:invalid,
input.form__field:invalid,
textarea.form__field:invalid,
select.form__field:invalid,
.form input:invalid,
.form textarea:invalid,
.form select:invalid,
.ajax_form input:invalid,
.ajax_form textarea:invalid,
.ajax_form select:invalid {
  border-color: #e1e1e1;
  box-shadow: none;
}

/* Text fields focus: black, no yellow, no blue outline */
input.form__field:focus,
textarea.form__field:focus,
.form__field.form__message:focus,
input.form__field:focus-visible,
textarea.form__field:focus-visible,
.form input[type="text"]:focus,
.form input[type="email"]:focus,
.form input[type="tel"]:focus,
.form input[type="number"]:focus,
.form input[type="date"]:focus,
.form input[type="password"]:focus,
.form textarea:focus,
.ajax_form input[type="text"]:focus,
.ajax_form input[type="email"]:focus,
.ajax_form input[type="tel"]:focus,
.ajax_form input[type="number"]:focus,
.ajax_form textarea:focus {
  border: 2px solid #000 !important;
  outline: none !important;
  box-shadow: none !important;
}

/* Selects focus: yellow highlight */
select.form__field:focus,
select.form__field:focus-visible,
.form select:focus,
.ajax_form select:focus {
  border: 2px solid #fdd340 !important;
  outline: none !important;
  box-shadow: none !important;
}

/* Validation error */
.form__field.error,
.form__field.is-invalid,
.form__field.input-error,
.form__field.has-error,
input.form__field.error,
textarea.form__field.error,
select.form__field.error,
.form__field:user-invalid,
.form input.error,
.form textarea.error,
.form select.error,
.form .is-invalid,
.ajax_form .error,
.ajax_form .is-invalid {
  border: 2px solid #fd1717 !important;
  box-shadow: none !important;
}

input.form__field:focus:user-invalid,
textarea.form__field:focus:user-invalid,
.form input:focus:user-invalid,
.form textarea:focus:user-invalid {
  border: 2px solid #000 !important;
}
select.form__field:focus:user-invalid,
.form select:focus:user-invalid {
  border: 2px solid #fdd340 !important;
}

@media (max-width: 575.98px) {
  .form__field,
  input.form__field,
  textarea.form__field,
  select.form__field,
  .form input[type="text"],
  .form input[type="email"],
  .form input[type="tel"],
  .form input[type="number"],
  .form textarea,
  .form select,
  .ajax_form input[type="text"],
  .ajax_form input[type="email"],
  .ajax_form input[type="tel"],
  .ajax_form textarea,
  .ajax_form select {
    font-size: 14px;
  }
  .form__field::placeholder,
  input.form__field::placeholder,
  textarea.form__field::placeholder,
  .form input::placeholder,
  .form textarea::placeholder {
    font-size: 14px;
  }
}