/* Gravity Forms: Central Driveways design.
   Applies to any Gravity Form placed inside the theme's .callback (hero) and .quote (footer) containers, so it still works if the form's own CSS class is missing.
   Selectors are deliberately strengthened (body + .gform_wrapper.gform_wrapper) so they beat Gravity Forms' own stylesheet, which loads later in the footer.
   Layout is set explicitly here, so it works whether or not Gravity Forms' own framework CSS is loaded.
   Tested against the Gravity Forms 2.7+ markup (.gform_wrapper > form > .gform_body > .gform_fields > .gfield). */

:is(.callback, .quote) .gform_wrapper,
:is(.callback, .quote) .gform_confirmation_wrapper { margin: 0; padding: 0; }

body :is(.callback, .quote) .gform_wrapper.gform_wrapper form { margin: 0; }

body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_heading,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_required_legend,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_validation_container,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_ajax_spinner { display: none !important; }

body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_fields {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 1rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gfield { grid-column: 1 / -1; min-width: 0; margin: 0; padding: 0; }

/* labels */
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gfield_label,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper legend.gfield_label {
  display: block;
  margin: 0 0 .3rem;
  padding: 0;
  font: 600 .8125rem/1.3 var(--body);
  color: var(--ink);
}
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gfield_required { margin-left: .25rem; font-weight: 400; color: var(--muted); }
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gfield_required .gfield_required { margin-left: 0; }
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .ginput_container { margin: 0; }

/* controls */
body :is(.callback, .quote) .gform_wrapper.gform_wrapper input[type="text"],
body :is(.callback, .quote) .gform_wrapper.gform_wrapper input[type="tel"],
body :is(.callback, .quote) .gform_wrapper.gform_wrapper input[type="email"],
body :is(.callback, .quote) .gform_wrapper.gform_wrapper select,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper textarea {
  display: block;
  width: 100%;
  max-width: none;
  min-height: 48px;
  margin: 0;
  padding: .65rem .8rem;
  font: inherit;
  font-size: 1rem; /* 16px minimum stops iOS zooming on focus */
  line-height: 1.4;
  color: var(--ink);
  background: #fff;
  border: 1px solid rgba(20, 32, 46, .35);
  border-radius: 2px;
  box-shadow: none;
}
/* Gravity Forms prints rows="10" on textareas; set the height in CSS instead so the form stays compact. */
body :is(.callback, .quote) .gform_wrapper.gform_wrapper textarea { height: 7.5rem; min-height: 7.5rem; resize: vertical; }
body :is(.callback, .quote) .gform_wrapper.gform_wrapper input:focus,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper select:focus,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper textarea:focus { outline: 3px solid var(--blue); outline-offset: 0; border-color: var(--blue); }
body :is(.callback, .quote) .gform_wrapper.gform_wrapper ::placeholder { color: var(--muted); opacity: 1; }

/* submit: Gravity Forms' own framework/orbital CSS styles its default button with high-specificity rules and CSS variables
   (royal blue, rounded, mixed-case). !important is used here on purpose so the theme button always wins, whichever
   GF version or form theme is active, and whether GF prints a <button> or an <input type="submit">. */
body :is(.callback, .quote) .gform_wrapper.gform_wrapper.gform_wrapper :is(.gform_button, .gform-button, .gform-theme-button, input[type="submit"], button[type="submit"]) {
  -webkit-appearance: none !important;
  appearance: none !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  min-width: 48px !important;
  min-height: 48px !important;
  height: auto !important;
  margin: 0 !important;
  padding: .75rem 1.5rem !important;
  font-family: var(--body) !important;
  font-size: .8125rem !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  letter-spacing: .09em !important;
  text-transform: uppercase !important;
  text-decoration: none !important;
  color: #fff !important;
  background: var(--blue) !important;
  background-image: none !important;
  border: 2px solid transparent !important;
  border-radius: 2px !important;
  box-shadow: none !important;
  cursor: pointer;
  transition: background-color .2s, color .2s;
}
body :is(.callback, .quote) .gform_wrapper.gform_wrapper.gform_wrapper :is(.gform_button, .gform-button, .gform-theme-button, input[type="submit"], button[type="submit"]):hover {
  background: var(--blue-deep) !important;
  color: #fff !important;
}
body :is(.callback, .quote) .gform_wrapper.gform_wrapper.gform_wrapper :is(.gform_button, .gform-button, .gform-theme-button, input[type="submit"], button[type="submit"]):focus-visible {
  outline: 3px solid var(--blue) !important;
  outline-offset: 3px !important;
}

/* submit row */
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_footer,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_page_footer { display: flex; margin: .5rem 0 0; padding: 0; }

/* validation */
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_validation_errors {
  margin: 0 0 1rem;
  padding: .75rem 1rem;
  background: #fdecea;
  border: 1px solid #b3261e;
  border-radius: 2px;
  color: #7a1712;
  font-size: .9375rem;
}
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_validation_errors > h2 { margin: 0; font: 700 1rem/1.3 var(--body); letter-spacing: 0; }
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_validation_errors ol { margin: .4rem 0 0; padding-left: 1.2rem; }
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gform_validation_errors a { color: inherit; }
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gfield_error input,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gfield_error select,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gfield_error textarea { border-color: #b3261e; }
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .gfield_validation_message,
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .validation_message { margin: .3rem 0 0; font-size: .875rem; color: #b3261e; }

/* confirmation (replaces the form after a successful submit) */
.callback .gform_confirmation_message,
.quote .gform_confirmation_message {
  margin: 0;
  padding: 1rem 1.1rem;
  background: var(--grey);
  border-top: 3px solid var(--sky);
  font: 600 1.0625rem/1.5 var(--body);
  color: var(--ink);
}

/* ---- layout per form ---- */
body :is(.callback, .quote) .gform_wrapper.gform_wrapper .cdl-half { grid-column: span 12; }

@media (min-width: 600px) and (max-width: 899.98px) {
  /* hero card is wide enough for Name + Phone side by side */
  body .callback .gform_wrapper.gform_wrapper .cdl-half { grid-column: span 6; }
}

@media (min-width: 600px) {
  body .quote .gform_wrapper.gform_wrapper .cdl-half { grid-column: span 6; }
}

/* Footer quote form: on desktop the message box grows so the card matches the height of the footer's left column. */
@media (min-width: 900px) {
  .foot .quote { display: flex; flex-direction: column; }
  .foot .quote .gform_wrapper,
  .foot .quote .gform_wrapper > form,
  .foot .quote .gform_body { flex: 1; display: flex; flex-direction: column; min-height: 0; }
  .foot .quote .gform_fields { flex: 1; grid-template-rows: auto auto auto 1fr; }
  .foot .quote .gfield--type-textarea,
  .foot .quote .cdl-message { display: flex; flex-direction: column; }
  .foot .quote .cdl-message .ginput_container { flex: 1; display: flex; }
  .foot .quote .cdl-message textarea { flex: 1; height: 0; min-height: 7.5rem; resize: none; }
}
