/* Gravity Forms inside stjohn-form — restyle to match Figma.
   Layout: labels above fields, 14px gap; fields are 1px black border, 10px radius,
   14/16 padding. Submit becomes our .btn-filled. Theme-aware via CSS vars. */

.stjohn-form .gform_wrapper {
  --gf-color-primary: var(--theme-primary-dark);
  --gf-color-primary-contrast: #fff;
  --gf-color-out-ctrl-light: #000;
  font-family: var(--font-body, "Open Sans", system-ui, sans-serif);
  color: var(--theme-primary-dark);
}

.stjohn-form .gform_wrapper .gform_heading,
.stjohn-form .gform_wrapper .gform_title,
.stjohn-form .gform_wrapper .gform_description {
  display: none;
}

.stjohn-form .gform_wrapper .gform_fields {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 34px;
}

.stjohn-form .gform_wrapper .gfield {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

@media (min-width: 768px) {
  .stjohn-form .gform_wrapper .gfield--width-half {
    grid-column: span 6;
  }
  .stjohn-form .gform_wrapper .gfield--width-third {
    grid-column: span 4;
  }
  .stjohn-form .gform_wrapper .gfield--width-two-thirds {
    grid-column: span 8;
  }
  .stjohn-form .gform_wrapper .gfield--width-quarter {
    grid-column: span 3;
  }
  .stjohn-form .gform_wrapper .gfield--width-three-quarters {
    grid-column: span 9;
  }
}

.stjohn-form .gform_wrapper .gfield_label {
  font-weight: 600;
  font-size: 1rem;
  line-height: 1.4;
  letter-spacing: 0.01em;
  color: #000;
  margin: 0;
}
.stjohn-form .gform_wrapper .gfield_required {
  color: #000;
  margin-left: 2px;
}

.stjohn-form .gform_wrapper input[type="text"],
.stjohn-form .gform_wrapper input[type="email"],
.stjohn-form .gform_wrapper input[type="tel"],
.stjohn-form .gform_wrapper input[type="url"],
.stjohn-form .gform_wrapper input[type="number"],
.stjohn-form .gform_wrapper input[type="password"],
.stjohn-form .gform_wrapper input[type="date"],
.stjohn-form .gform_wrapper input[type="datetime-local"],
.stjohn-form .gform_wrapper input[type="time"],
.stjohn-form .gform_wrapper select,
.stjohn-form .gform_wrapper textarea {
  width: 100%;
  border: 1px solid #000;
  border-radius: 10px;
  background-color: transparent;
  padding: 14px 16px;
  font-family: inherit;
  font-size: 1rem;
  line-height: 1.6;
  /* Gravity's framework theme pins controls to block-size/line-height 38px,
     which assumes zero vertical padding. Ours is 14px, so without this reset
     the 38px line box overflows a 10px content box and clips <select> text. */
  height: auto;
  min-height: 0;
  color: #000;
  box-shadow: none;
  transition:
    border-color 150ms ease,
    box-shadow 150ms ease;
}

.stjohn-form .gform_wrapper textarea {
  min-height: 128px;
  resize: vertical;
}

.stjohn-form .gform_wrapper input::placeholder,
.stjohn-form .gform_wrapper textarea::placeholder {
  color: rgb(0 0 0 / 0.55);
}

.stjohn-form .gform_wrapper input:focus,
.stjohn-form .gform_wrapper select:focus,
.stjohn-form .gform_wrapper textarea:focus {
  outline: none;
  border-color: var(--theme-primary-dark);
  box-shadow: 0 0 0 2px rgb(from var(--theme-primary-dark) r g b / 0.25);
}

.stjohn-form .gform_wrapper select {
  appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%23000' stroke-width='1.5'><path d='M1 1.5l5 5 5-5'/></svg>");
  background-repeat: no-repeat;
  background-position: right 16px center;
  background-size: 12px 8px;
  padding-right: 40px;
}

/* Checkbox / radio grids — match the Figma's horizontal radio row */
.stjohn-form .gform_wrapper .gfield_checkbox,
.stjohn-form .gform_wrapper .gfield_radio {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.stjohn-form .gform_wrapper .gchoice {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
}
.stjohn-form .gform_wrapper .gchoice input[type="checkbox"],
.stjohn-form .gform_wrapper .gchoice input[type="radio"] {
  width: 18px;
  height: 18px;
  accent-color: var(--theme-primary-dark);
  margin: 0;
}
.stjohn-form .gform_wrapper .gchoice label {
  font-size: 0.875rem;
  line-height: 1.6;
  letter-spacing: 0.01em;
  color: #000;
  margin: 0;
}

/* Description / sub-label */
.stjohn-form .gform_wrapper .gfield_description {
  font-size: 0.875rem;
  line-height: 1.6;
  color: rgb(0 0 0 / 0.7);
  padding: 0;
  margin: 0;
}

/* Validation states */
.stjohn-form .gform_wrapper .gfield_error input,
.stjohn-form .gform_wrapper .gfield_error select,
.stjohn-form .gform_wrapper .gfield_error textarea {
  border-color: #b00020;
}
.stjohn-form .gform_wrapper .validation_message,
.stjohn-form .gform_wrapper .gfield_validation_message {
  color: #b00020;
  font-size: 0.875rem;
  margin: 0;
}
.stjohn-form .gform_wrapper .gform_validation_errors {
  margin: 0 0 24px 0;
  padding: 14px 16px;
  border: 1px solid #b00020;
  border-radius: 10px;
  background-color: rgb(176 0 32 / 0.05);
  color: #b00020;
}

/* Submit footer */
.stjohn-form .gform_wrapper .gform_footer {
  margin: 24px 0 0;
  padding: 0;
  display: flex;
  align-items: center;
  gap: 14px;
}
.stjohn-form .gform_wrapper .gform_footer .gform_button,
.stjohn-form .gform_wrapper .gform_footer input[type="submit"],
.stjohn-form .gform_wrapper .gform_footer button[type="submit"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 9999px;
  padding: 14px 20px;
  font-weight: 600;
  font-size: 1rem;
  line-height: 1.4;
  letter-spacing: 0.01em;
  background-color: var(--theme-primary-dark);
  color: #fff;
  border: 1.5px solid var(--theme-primary-dark);
  cursor: pointer;
  transition:
    background-color 150ms ease,
    border-color 150ms ease,
    color 150ms ease;
  width: auto;
}
.stjohn-form .gform_wrapper .gform_footer .gform_button:hover,
.stjohn-form .gform_wrapper .gform_footer input[type="submit"]:hover,
.stjohn-form .gform_wrapper .gform_footer button[type="submit"]:hover {
  background-color: var(--theme-primary-light);
  border-color: var(--theme-primary-light);
}

/* AJAX spinner */
.stjohn-form .gform_wrapper .gform_ajax_spinner {
  width: 20px;
  height: 20px;
}

/* Confirmation message after submit */
.stjohn-form .gform_confirmation_message {
  border: 1px solid var(--theme-primary-dark);
  border-radius: 10px;
  padding: 14px 16px;
  color: var(--theme-primary-dark);
  font-weight: 600;
}

/* Author-only placeholder shown when no form is selected */
.stjohn-form .stjohn-form__placeholder {
  border: 1px dashed rgb(0 0 0 / 0.3);
  border-radius: 10px;
  padding: 24px;
  text-align: center;
  color: rgb(0 0 0 / 0.6);
  margin: 0;
}

/* Inline icon spans in contact list */
.stjohn-form__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  color: var(--theme-primary-dark);
  flex-shrink: 0;
}
