/**
 * Contact Form 7 — shared form system.
 *
 * This file owns the visual contract shared by every CF7 form in the theme:
 * controls, focus and error states, submit actions, consents and file uploads.
 * Page styles may define composition only (grid, surrounding panel, spacing).
 */

:root {
  --conarium-form-ink: var(--dark-color);
  --conarium-form-muted: var(--grey-color);
  --conarium-form-surface: var(--white-color);
  --conarium-form-soft: #f4f8fe;
  --conarium-form-line: rgb(9 34 64 / 22%);
  --conarium-form-focus: var(--blue-color);
  --conarium-form-error: #a63b3b;
  --conarium-form-submit: #fad657;
  --conarium-form-disabled: #e7edf5;
  --conarium-form-control-radius: 8px;
}

form.wpcf7-form {
  color: var(--conarium-form-ink);
  font-family: var(--home-font-text);
}

form.wpcf7-form .wpcf7-form-control-wrap {
  display: block;
  min-width: 0;
}

form.wpcf7-form .cf7-form-field,
form.wpcf7-form .cf7-form-section,
form.wpcf7-form .cf7-upload-field {
  min-width: 0;
}

/* Semantic labels in CF7 form markup. Invisible accessibility labels remain
 * invisible unless a form explicitly chooses to display a label. */
form.wpcf7-form .cf7-form-field > label,
form.wpcf7-form .cf7-field-label {
  display: block;
  color: var(--conarium-form-ink);
  font-family: var(--home-font-text);
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.4;
}

/* CF7 turns formatting line breaks in the editor into DOM nodes. Layout is
 * controlled with gap and margins, so those nodes must not create blank rows. */
form.wpcf7-form .cf7-form-field > label > br,
form.wpcf7-form .cf7-upload-field > br {
  display: none;
}

form.wpcf7-form .cf7-form-field > label > .wpcf7-form-control-wrap {
  margin-top: 0.25rem;
}

form.wpcf7-form :is(
  input.wpcf7-form-control:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="submit"]),
  select.wpcf7-form-control,
  textarea.wpcf7-form-control
) {
  width: 100%;
  min-height: 3rem;
  padding: 0.75rem 1rem;
  border: 1px solid var(--conarium-form-line) !important;
  border-radius: var(--conarium-form-control-radius);
  background: var(--conarium-form-surface) !important;
  color: var(--conarium-form-ink) !important;
  font: 400 1rem / 1.4 var(--home-font-text) !important;
  transition: border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease;
}

form.wpcf7-form textarea.wpcf7-form-control {
  min-height: 7rem;
  resize: vertical;
}

form.wpcf7-form :is(input, textarea)::placeholder {
  color: var(--conarium-form-muted);
  opacity: 1;
}

form.wpcf7-form :is(
  input.wpcf7-form-control:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="submit"]),
  select.wpcf7-form-control,
  textarea.wpcf7-form-control,
  input[type="file"],
  input[type="checkbox"],
  input[type="radio"],
  input[type="submit"],
  button
):focus-visible {
  border-color: var(--conarium-form-focus) !important;
  outline: 3px solid rgb(29 129 248 / 30%);
  outline-offset: 2px;
  box-shadow: none;
}

form.wpcf7-form input.wpcf7-submit,
form.wpcf7-form .wpcf7cf_add,
form.wpcf7-form .wpcf7cf_remove {
  min-height: 3.1875rem;
  padding: 1rem 2rem;
  border: 1px solid transparent;
  border-radius: var(--home-radius-control);
  background: var(--conarium-form-submit) !important;
  color: var(--conarium-form-ink) !important;
  font-family: var(--home-font-heading) !important;
  font-size: 0.875rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.03em;
  line-height: 19px;
  text-transform: uppercase;
  transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease;
}

form.wpcf7-form input.wpcf7-submit {
  width: 100%;
  cursor: pointer;
}

form.wpcf7-form .wpcf7cf_add {
  border-color: var(--conarium-form-focus);
  background: var(--conarium-form-surface) !important;
  color: var(--conarium-form-focus) !important;
  cursor: pointer;
}

form.wpcf7-form .wpcf7cf_remove {
  border-color: var(--home-color-error);
  background: var(--conarium-form-surface) !important;
  color: var(--home-color-error) !important;
  cursor: pointer;
}

@media (hover: hover) and (pointer: fine) {
  form.wpcf7-form input.wpcf7-submit:hover,
  form.wpcf7-form .wpcf7cf_add:hover,
  form.wpcf7-form .wpcf7cf_remove:hover {
    transform: translateY(-1px);
  }

  form.wpcf7-form input.wpcf7-submit:hover {
    filter: brightness(0.96);
  }
}

form.wpcf7-form input.wpcf7-submit:disabled {
  cursor: not-allowed;
  border-color: transparent;
  background: var(--conarium-form-disabled) !important;
  color: var(--conarium-form-muted) !important;
  filter: none;
  opacity: 1;
  transform: none;
}

form.wpcf7-form .wpcf7cf_repeater_controls {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0.75rem 0 1rem;
}

form.wpcf7-form .wpcf7cf_repeater_controls > span {
  display: block;
}

/* Reusable section and upload primitives for long CF7 forms. */
form.wpcf7-form .cf7-form-section {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem 1rem;
  margin: 0.25rem 0 0;
  padding: 1rem 0 0;
  border: 0;
  border-top: 1px solid var(--conarium-form-line);
}

form.wpcf7-form .cf7-form-section legend {
  grid-column: 1 / -1;
  width: 100%;
  margin: 0 0 0.125rem;
  padding: 0;
  color: var(--conarium-form-ink);
  font-family: var(--home-font-heading);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.4;
}

form.wpcf7-form .cf7-form-section > p {
  min-width: 0;
  margin: 0;
}

form.wpcf7-form .cf7-upload-field {
  display: block;
  margin: 0.25rem 0 0;
  padding: 1rem;
  border: 1px dashed rgb(29 129 248 / 38%);
  border-radius: var(--home-radius-control);
  background: var(--conarium-form-soft);
}

form.wpcf7-form .cf7-upload-field .cf7-field-label {
  margin-bottom: 0.375rem;
}

form.wpcf7-form .cf7-upload-field input[type="file"] {
  width: 100%;
  min-height: 2.625rem;
  padding: 0.25rem 0 0;
  border: 0 !important;
  border-radius: 0;
  background: transparent !important;
  color: var(--conarium-form-ink);
  font: 400 1rem / 1.4 var(--home-font-text);
}

form.wpcf7-form .cf7-upload-field input[type="file"]::file-selector-button {
  min-height: 2.25rem;
  margin-right: 0.75rem;
  padding: 0.5rem 0.875rem;
  border: 1px solid var(--conarium-form-focus);
  border-radius: 8px;
  background: var(--conarium-form-surface);
  color: var(--conarium-form-focus);
  font-family: var(--home-font-heading);
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  transition: background-color 160ms ease, color 160ms ease;
}

@media (hover: hover) and (pointer: fine) {
  form.wpcf7-form .cf7-upload-field input[type="file"]::file-selector-button:hover {
    background: rgb(29 129 248 / 8%);
  }
}

form.wpcf7-form .cf7-form-hint {
  display: block;
  margin-top: 0.375rem;
  color: var(--conarium-form-muted);
  font-family: var(--home-font-text);
  font-size: 0.8125rem;
  font-weight: 400;
  line-height: 1.4;
}

/* Validation is quiet until the visitor makes a real submit attempt. */
form.wpcf7-form .wpcf7-not-valid-tip {
  display: block;
  margin: 0.25rem 0 0;
  color: var(--conarium-form-error);
  font-family: var(--home-font-text);
  font-size: 0.8125rem;
  font-weight: 500;
  line-height: 1.4;
}

form.wpcf7-form .wpcf7-form-control.wpcf7-not-valid {
  border-color: var(--conarium-form-error) !important;
  border-width: 1px !important;
}

form.wpcf7-form:not([data-conarium-submit-attempted="true"]) .wpcf7-not-valid-tip {
  display: none !important;
}

form.wpcf7-form:not([data-conarium-submit-attempted="true"]) .wpcf7-form-control.wpcf7-not-valid {
  border-color: var(--conarium-form-line) !important;
}

form.wpcf7-form .cf7-upload-field:has(.wpcf7-not-valid) {
  border-color: var(--conarium-form-error);
  border-style: solid;
  background: rgb(166 59 59 / 5%);
}

form.wpcf7-form .u_have_a_quest_acceptance_full {
  display: grid;
  gap: 0.5rem;
  margin: 0.5rem 0 0;
}

form.wpcf7-form .u_have_a_quest_acceptance_full > p,
form.wpcf7-form .wpcf7-acceptance .wpcf7-list-item {
  margin: 0;
}

form.wpcf7-form .wpcf7-acceptance label {
  display: grid;
  grid-template-columns: 1.25rem minmax(0, 1fr);
  align-items: center;
  gap: 0.75rem;
  max-width: 50rem;
  color: var(--conarium-form-muted);
  font-family: var(--home-font-text);
  font-size: 0.8125rem;
  font-weight: 400;
  line-height: 1.45;
}

form.wpcf7-form .wpcf7-acceptance .cf_accept__text_black {
  color: var(--conarium-form-muted) !important;
}

form.wpcf7-form .wpcf7-acceptance :is(.cf_accept__text_black, .wpcf7-list-item-label) a {
  color: inherit !important;
  text-decoration: underline !important;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.15em;
}

form.wpcf7-form .wpcf7-acceptance input[type="checkbox"] {
  width: 1.25rem;
  height: 1.25rem;
  margin: 0;
}

form.wpcf7-form .cf7-consent-hint {
  margin: 0.25rem 0 0;
  color: var(--conarium-form-muted);
  font-family: var(--home-font-text);
  font-size: 0.8125rem;
  font-weight: 400;
  line-height: 1.45;
}

form.wpcf7-form .cf7-consent-hint.is-ready {
  color: var(--conarium-form-ink);
}

form.wpcf7-form .wpcf7-response-output:not(:empty) {
  margin: 1rem 0 0;
  padding: 0.75rem 1rem;
  border: 1px solid var(--conarium-form-line);
  border-radius: var(--home-radius-control);
  background: var(--conarium-form-soft);
  color: var(--conarium-form-ink);
  font-family: var(--home-font-text);
  font-size: 0.875rem;
  line-height: 1.45;
}

@media screen and (max-width: 768px) {
  form.wpcf7-form .cf7-form-section {
    grid-template-columns: 1fr;
  }

  form.wpcf7-form :is(
    input.wpcf7-form-control:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="submit"]),
    select.wpcf7-form-control,
    textarea.wpcf7-form-control
  ) {
    font-size: 1rem !important;
  }
}
