/* ============================================
 * Gravity Forms — TLM-styled
 *
 * Site-wide overrides for every Gravity Form, scoped to .gform_wrapper
 * so non-GF markup is untouched. Mirrors the TLM card pattern: cream
 * input surfaces, navy text, pink focus rings, navy pill submit button
 * (matches .tlm-button--primary-on-light).
 *
 * Tokens only — no hardcoded colours/radii/sizes.
 * ============================================ */

/* border-box everywhere inside the form so 100%-width fields/buttons
   never overrun the container (which caused sideways scroll on mobile). */
.gform_wrapper,
.gform_wrapper * {
  box-sizing: border-box;
}

.gform_wrapper {
  font-family: var(--font-sans);
  color: var(--color-navy);
}

/* ----- Layout: vertical stack of fields with consistent rhythm ----- */

.gform_wrapper .gform_fields {
  display: grid;
  gap: var(--space-md);
  list-style: none;
  padding: 0;
  margin: 0;
}

.gform_wrapper .gfield {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

/* Grouped fields (Name first/last, checkbox/radio groups) render as a
   <fieldset>, which carries a default browser border + inset padding.
   Strip it so collective fields read flat like the single inputs. */
.gform_wrapper fieldset.gfield {
  border: 0;
  margin: 0;
  padding: 0;
  min-width: 0;
}

/* ----- Labels ----- */

.gform_wrapper .gfield_label {
  font-size: var(--text-sm);
  font-weight: var(--weight-bold);
  color: var(--color-navy);
  line-height: var(--leading-normal);
  margin: 0;
}

.gform_wrapper .gfield_required {
  color: var(--color-pink-stop);
  margin-left: var(--space-2xs);
}

/* ----- Text / email / textarea / select ----- */

.gform_wrapper input[type="text"],
.gform_wrapper input[type="email"],
.gform_wrapper input[type="tel"],
.gform_wrapper input[type="url"],
.gform_wrapper input[type="number"],
.gform_wrapper input[type="password"],
.gform_wrapper textarea,
.gform_wrapper select {
  width: 100%;
  /* border-box so the 100% width INCLUDES padding + border; without it
     the fields overrun the container's right edge and the page scrolls
     sideways on mobile (Contact, Start a conversation). */
  box-sizing: border-box;
  padding: 14px var(--space-sm);    /* 14px vertical is a deliberate input-height value, not on the spacing scale */
  font-family: var(--font-sans);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  color: var(--color-navy);
  background: var(--color-cream);
  border: 1px solid var(--color-navy-divider);
  border-radius: var(--radius-md);
  appearance: none;
  transition: border-color 150ms ease, box-shadow 150ms ease, background-color 150ms ease;
}

.gform_wrapper input::placeholder,
.gform_wrapper textarea::placeholder {
  color: var(--color-navy-subtle);
  opacity: 1;
}

.gform_wrapper input:hover,
.gform_wrapper textarea:hover,
.gform_wrapper select:hover {
  border-color: var(--color-navy-muted);
}

.gform_wrapper input:focus,
.gform_wrapper textarea:focus,
.gform_wrapper select:focus {
  outline: none;
  border-color: var(--color-navy);
  background: var(--color-white);
  box-shadow: 0 0 0 3px var(--color-navy-tint);
}

.gform_wrapper textarea {
  min-height: 140px;
  resize: vertical;
}

/* ----- Name field (First / Last) -----
   GF's complex Name field stacks its two sub-inputs by default. Keep that
   stack on mobile, but lay First and Last side by side from tablet up.
   Each sub-field is a .name_first / .name_last column; the sub-label sits
   below its input (field_sublabel_below). */

.gform_wrapper .ginput_complex.ginput_container--name {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-xs);
}

.gform_wrapper .ginput_complex.ginput_container--name > span {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xs);
  /* GF's grid-col classes set flex sizing; reset so the grid drives width */
  width: auto;
  min-width: 0;
}

.gform_wrapper .ginput_complex.ginput_container--name .gform-field-label--type-sub {
  font-size: var(--text-xs);
  font-weight: var(--weight-regular);
  color: var(--color-navy-subtle);
  line-height: var(--leading-normal);
  margin: 0;
}

@media (min-width: 768px) {
  .gform_wrapper .ginput_complex.ginput_container--name {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-sm);
  }
}

/* ----- Description (helper text below input) ----- */

.gform_wrapper .gfield_description {
  font-size: var(--text-xs);
  color: var(--color-navy-subtle);
  line-height: var(--leading-normal);
  margin: 0;
}

/* ----- Validation states ----- */

.gform_wrapper .gfield_error input[type="text"],
.gform_wrapper .gfield_error input[type="email"],
.gform_wrapper .gfield_error input[type="tel"],
.gform_wrapper .gfield_error textarea,
.gform_wrapper .gfield_error select {
  border-color: var(--color-pink-stop);
  background: var(--color-white);
}

.gform_wrapper .gfield_validation_message,
.gform_wrapper .validation_message {
  font-size: var(--text-xs);
  color: var(--color-pink-stop);
  margin: var(--space-2xs) 0 0;
}

.gform_wrapper .gform_validation_errors {
  padding: var(--space-md);
  background: var(--color-cream);
  border-left: 3px solid var(--color-pink-stop);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-md);
}

.gform_wrapper .gform_validation_errors > h2 {
  font-size: var(--text-base);
  font-weight: var(--weight-bold);
  color: var(--color-navy);
  margin: 0 0 var(--space-xs);
}

/* ----- Checkbox / radio ----- */

.gform_wrapper .gfield_checkbox,
.gform_wrapper .gfield_radio {
  display: grid;
  gap: var(--space-xs);
  list-style: none;
  padding: 0;
  margin: 0;
}

.gform_wrapper .gchoice {
  display: flex;
  align-items: flex-start;
  gap: var(--space-xs);
}

.gform_wrapper .gfield_checkbox input[type="checkbox"],
.gform_wrapper .gfield_radio input[type="radio"] {
  appearance: none;
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  margin: 1px 0 0;
  background: var(--color-cream);
  border: 1px solid var(--color-navy-divider);
  cursor: pointer;
  transition: background-color 150ms ease, border-color 150ms ease, box-shadow 150ms ease;
}

.gform_wrapper .gfield_checkbox input[type="checkbox"] {
  border-radius: 4px;    /* deliberate small-control radius; --radius-sm (8px) is too round on a 20px box */
}

.gform_wrapper .gfield_radio input[type="radio"] {
  border-radius: 50%;
}

.gform_wrapper .gfield_checkbox input[type="checkbox"]:hover,
.gform_wrapper .gfield_radio input[type="radio"]:hover {
  border-color: var(--color-navy);
}

.gform_wrapper .gfield_checkbox input[type="checkbox"]:focus-visible,
.gform_wrapper .gfield_radio input[type="radio"]:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px var(--color-navy-tint);
}

.gform_wrapper .gfield_checkbox input[type="checkbox"]:checked {
  background: var(--color-navy);
  border-color: var(--color-navy);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='%23ffffff' stroke-width='3'%3E%3Cpolyline points='6,16 13,23 26,10'/%3E%3C/svg%3E");
  background-size: 14px 14px;
  background-position: center;
  background-repeat: no-repeat;
}

.gform_wrapper .gfield_radio input[type="radio"]:checked {
  background: var(--color-navy);
  border-color: var(--color-navy);
  box-shadow: inset 0 0 0 4px var(--color-cream);
}

.gform_wrapper .gchoice label {
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--color-navy);
  cursor: pointer;
}

/* ----- File upload ----- */

.gform_wrapper input[type="file"] {
  width: 100%;
  padding: var(--space-sm);
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  color: var(--color-navy);
  background: var(--color-cream);
  border: 1px dashed var(--color-navy-divider);
  border-radius: var(--radius-md);
  cursor: pointer;
}

.gform_wrapper input[type="file"]:hover {
  border-color: var(--color-navy-muted);
}

/* ----- Submit button — matches .tlm-button--primary-on-light ----- */

.gform_wrapper .gform_footer {
  margin-top: var(--space-md);
  padding-top: 0;
}

.gform_wrapper .gform_button {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  /* Full-width like the inputs above it; box-sizing + wrapping label so
     a long button text ("Send me the workbook") can never overflow the
     form card on mobile. */
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  white-space: normal;
  padding: 18px var(--space-md);
  font-family: var(--font-sans);
  font-size: var(--text-base);
  font-weight: var(--weight-bold);
  line-height: var(--leading-normal);
  text-transform: uppercase;
  letter-spacing: var(--tracking-button);
  text-decoration: none;
  color: var(--color-text-on-dark);
  background-color: var(--color-navy);
  border: 0;
  border-radius: var(--radius-pill);
  cursor: pointer;
  transition: background-color 150ms ease, color 150ms ease, opacity 150ms ease, box-shadow 200ms ease;
}

.gform_wrapper .gform_button:hover {
  opacity: 0.88;
  box-shadow: var(--shadow-button-hover);
}

.gform_wrapper .gform_button:focus-visible {
  outline: 2px solid var(--color-text-on-light);
  outline-offset: 4px;
}

@media (min-width: 1024px) {
  .gform_wrapper .gform_button {
    font-size: var(--text-lg);
  }
}

/* ----- Confirmation message ----- */

.gform_confirmation_message {
  padding: var(--space-md);
  background: var(--color-cream);
  border-radius: var(--radius-md);
  color: var(--color-navy);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
}

/* ----- Honeypot / hidden ----- */

.gform_wrapper .gform_validation_container {
  display: none !important;
}
