/* Onda 31 - formularios e estados interativos */
:root {
  --sfy-field-height: 52px;
  --sfy-field-radius: 14px;
  --sfy-field-border: rgba(73, 96, 121, .25);
  --sfy-field-focus: #0a76a4;
  --sfy-field-invalid: #b42318;
  --sfy-field-valid: #087044;
}
[data-contact-form] :where(label, legend),
.event-search-panel label {
  margin-bottom: .38rem;
  color: var(--sfy-text);
  font-size: .86rem;
  font-weight: 800;
  line-height: 1.35;
}
[data-contact-form] :where(.form-control, .form-select),
.event-search-panel :where(.form-control, .form-select) {
  min-height: var(--sfy-field-height);
  padding: .78rem .9rem;
  border: 1px solid var(--sfy-field-border);
  border-radius: var(--sfy-field-radius);
  background-color: #fff;
  color: var(--sfy-text);
  font-size: 1rem;
  line-height: 1.35;
  transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}
[data-contact-form] textarea.form-control { min-height: 120px; resize: vertical; }
[data-contact-form] :where(.form-control, .form-select):focus,
.event-search-panel :where(.form-control, .form-select):focus {
  border-color: var(--sfy-field-focus);
  box-shadow: 0 0 0 .24rem rgba(13, 167, 216, .14);
  outline: 0;
}
[data-contact-form][data-validation-attempted="true"] :where(.form-control, .form-select):invalid,
[data-contact-form] :where(.form-control, .form-select)[aria-invalid="true"] {
  border-color: var(--sfy-field-invalid);
  background-color: rgba(180, 35, 24, .025);
  box-shadow: 0 0 0 .2rem rgba(180, 35, 24, .09);
}
[data-contact-form][data-validation-attempted="true"] :where(.form-control, .form-select):valid:not(:placeholder-shown) {
  border-color: rgba(8, 112, 68, .55);
}
[data-contact-form] :where(.form-text, .form-hint) {
  margin-top: .35rem;
  color: var(--sfy-text-muted-accessible);
  font-size: .82rem;
  line-height: 1.45;
}
[data-contact-form] .consent-check {
  min-height: 44px;
  align-items: flex-start;
  padding: .55rem .65rem;
  border: 1px solid rgba(73, 96, 121, .14);
  border-radius: 14px;
  background: rgba(248, 252, 255, .8);
}
[data-contact-form] .form-check-input {
  width: 1.2rem;
  height: 1.2rem;
  min-height: 1.2rem;
  flex: 0 0 1.2rem;
}
[data-contact-form][aria-busy="true"] :where(input, select, textarea) {
  opacity: .72;
}
[data-contact-form] button[type="submit"].is-loading {
  position: relative;
  cursor: wait;
}
[data-contact-form] button[type="submit"].is-loading::before {
  content: "";
  width: 1rem;
  height: 1rem;
  margin-right: .55rem;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: sfy-form-spin .7s linear infinite;
}
@keyframes sfy-form-spin { to { transform: rotate(360deg); } }
[data-form-feedback] { margin-top: .75rem; scroll-margin-top: 7rem; }
[data-form-feedback] .alert {
  padding: .85rem .95rem;
  border-width: 1px;
  border-radius: 14px;
  line-height: 1.45;
}
[data-form-feedback] .alert-success { border-color: rgba(8, 112, 68, .2); background: #effaf5; color: #075b39; }
[data-form-feedback] .alert-danger { border-color: rgba(180, 35, 24, .18); background: #fff4f2; color: #8f1d14; }
[data-contact-form] :disabled { cursor: not-allowed; opacity: .68; }

@media (prefers-reduced-motion: reduce) {
  [data-contact-form] button[type="submit"].is-loading::before { animation-duration: 1.4s; }
}
@media (max-width: 767.98px) {
  [data-contact-form] :where(.form-control, .form-select) { width: 100%; }
  [data-contact-form] button[type="submit"] { width: 100%; }
  [data-form-feedback] .alert { padding: .8rem; }
}
/* Fim Onda 31 */
