/**
 * Unified PINT & Gravity Forms Styling (`assets/css/forms.css`)
 *
 * Provides a single source of truth for form controls across custom PINT
 * components (`pint-*`), standard WordPress/theme templates, and Gravity Forms
 * (Orbital / Theme Framework in preparation for Gravity Forms v4).
 *
 * Visual Language:
 * - Text & Select controls: Pill inputs matching `/fleet-program/` (`#registerModal`)
 *   (`1px solid #7170b8`, `border-radius: 99px`, `padding: 10px 16px`, `min-block-size: 42px`).
 * - Textarea controls: Taller rounded container (`border-radius: 20px`, `min-block-size: 140px`)
 *   sharing the same `#7170b8` border, typography, and focus ring.
 * - File inputs: Clean borderless wrapper with dark pill `::file-selector-button`
 *   matching `/halloween-contest/` (`background: #424143`, `hover: #2d2c2d`, `border-radius: 25px`).
 */

@layer tags, attributes, classes;

/* ==========================================================================
   1. DESIGN TOKENS (`--theme-form-*`) & GRAVITY FORMS API (`--gf-*`)
   ========================================================================== */

:root {
  /* Colors (oklch + hex fallback comments per PINT CSS standards) */
  --theme-form-input-bg: oklch(100% 0 0); /* #ffffff */
  --theme-form-input-bg-disabled: oklch(96.7% 0.003 264.54); /* #f3f4f6 */
  --theme-form-text-color: oklch(37.45% 0.004 325.6); /* #424143 */
  --theme-form-label-color: oklch(37.45% 0.004 325.6); /* #424143 */
  --theme-form-placeholder-color: oklch(56.24% 0 0); /* #757575 */
  --theme-form-border-color: oklch(57.86% 0.088 282.61); /* #7170b8 */
  --theme-form-border-color-hover: oklch(53.47% 0.12 231.18); /* #0376a8 */
  --theme-form-border-color-focus: oklch(53.47% 0.12 231.18); /* #0376a8 */
  --theme-form-focus-ring: oklch(53.47% 0.12 231.18 / 0.22); /* rgba(3, 118, 168, 0.22) */
  --theme-form-accent-color: oklch(53.47% 0.12 231.18); /* #0376a8 */
  --theme-form-error-color: oklch(54.17% 0.198 26.85); /* #c12c27 */
  --theme-form-error-bg: oklch(97.7% 0.013 17.38); /* #fef2f2 */
  --theme-form-success-color: oklch(52.7% 0.154 150.07); /* #16a34a */

  /* Submit & Primary Action Button Tokens */
  --theme-form-submit-bg: oklch(54.17% 0.198 26.85); /* #c12c27 */
  --theme-form-submit-bg-hover: oklch(46.54% 0.175 27.24); /* #a2190c */
  --theme-form-submit-text: oklch(100% 0 0); /* #ffffff */
  --theme-form-submit-radius: 99px;

  /* File Upload Button Tokens (matching /halloween-contest/) */
  --theme-form-file-btn-bg: oklch(37.45% 0.004 325.6); /* #424143 */
  --theme-form-file-btn-bg-hover: oklch(29.26% 0.003 325.6); /* #2d2c2d */
  --theme-form-file-btn-text: oklch(100% 0 0); /* #ffffff */
  --theme-form-file-btn-radius: 25px;
  --theme-form-file-btn-font: 'DINNext', 'Poppins SemiBold', 'Poppins', sans-serif;

  /* Typography (using px/vw so legacy pages with html { font-size: 62.5% } render identically) */
  --theme-form-font-family: 'Poppins Regular', 'Poppins', sans-serif;
  --theme-form-label-font-family: 'Poppins SemiBold', 'Poppins', sans-serif;
  --theme-form-font-size: clamp(15px, 14.5px + 0.15vw, 16px);
  --theme-form-label-font-size: 14px;
  --theme-form-letter-spacing: 0.04em;

  /* Sizing, Spacing & Radii */
  --theme-form-border-width: 1px;
  --theme-form-input-height: 42px;
  --theme-form-input-radius: 99px;
  --theme-form-input-padding-block: 10px;
  --theme-form-input-padding-inline: 16px;
  --theme-form-textarea-min-height: 140px;
  --theme-form-textarea-radius: 20px;
  --theme-form-textarea-padding-block: 12px;
  --theme-form-textarea-padding-inline: 16px;
  --theme-form-grid-gap-row: 22px;
  --theme-form-grid-gap-col: 20px;
  --theme-form-label-gap: 8px;
  --theme-form-sublabel-gap: 6px;
  --theme-form-select-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23424143' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

@media (prefers-color-scheme: dark) {
  :root {
    /* Maintain high-contrast light form surfaces on light cards/modals */
    --theme-form-input-bg: oklch(100% 0 0); /* #ffffff */
    --theme-form-text-color: oklch(37.45% 0.004 325.6); /* #424143 */
    --theme-form-border-color: oklch(57.86% 0.088 282.61); /* #7170b8 */
  }
}

/* Prevent iOS Safari zoom on input focus at narrow viewports */
@media (max-width: 768px) {
  :root {
    --theme-form-font-size: 16px;
  }
}

/* ==========================================================================
   2. TAC LAYERED DEFAULTS (@layer tags, attributes, classes)
   ========================================================================== */

@layer tags {
  :where(main, .site-content, .modal, form, .gform_wrapper)
    :is(
      input:not(
        [type='checkbox'],
        [type='radio'],
        [type='file'],
        [type='submit'],
        [type='button'],
        [type='reset'],
        [type='hidden'],
        [type='image'],
        [type='range'],
        [type='color'],
        .search-input,
        .email-input,
        .quantity-selector__input,
        .amount-selector__custom-input,
        .gc-custom-amount-input
      ),
      select
    ) {
    box-sizing: border-box;
    inline-size: 100%;
    block-size: var(--theme-form-input-height);
    min-block-size: var(--theme-form-input-height);
    padding-block: var(--theme-form-input-padding-block);
    padding-inline: var(--theme-form-input-padding-inline);
    background-color: var(--theme-form-input-bg);
    border: var(--theme-form-border-width) solid var(--theme-form-border-color);
    border-radius: var(--theme-form-input-radius);
    color: var(--theme-form-text-color);
    font-family: var(--theme-form-font-family);
    font-size: var(--theme-form-font-size);
    font-weight: 400;
    letter-spacing: var(--theme-form-letter-spacing);
    line-height: 1.25;
    box-shadow: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
  }

  :where(main, .site-content, .modal, footer, form, .gform_wrapper) textarea {
    box-sizing: border-box;
    inline-size: 100%;
    block-size: auto;
    min-block-size: var(--theme-form-textarea-min-height);
    padding-block: var(--theme-form-textarea-padding-block);
    padding-inline: var(--theme-form-textarea-padding-inline);
    background-color: var(--theme-form-input-bg);
    border: var(--theme-form-border-width) solid var(--theme-form-border-color);
    border-radius: var(--theme-form-textarea-radius);
    color: var(--theme-form-text-color);
    font-family: var(--theme-form-font-family);
    font-size: var(--theme-form-font-size);
    font-weight: 400;
    letter-spacing: var(--theme-form-letter-spacing);
    line-height: 1.5;
    resize: vertical;
    box-shadow: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
  }

  :where(main, .site-content, .modal, footer, form, .gform_wrapper) select {
    appearance: none;
    background-image: var(--theme-form-select-chevron);
    background-repeat: no-repeat;
    background-position: right 1rem center;
    background-size: 12px 8px;
    padding-inline-end: 2.5rem;
    cursor: pointer;
  }
}

@layer attributes {
  input[type='checkbox'],
  input[type='radio'] {
    accent-color: var(--theme-form-accent-color);
    cursor: pointer;
  }

  input[type='file'] {
    border: 0;
    border-radius: 0;
    background-color: transparent;
    padding: 0;
    block-size: auto;
    min-block-size: 0;
    box-shadow: none;
    color: var(--theme-form-text-color);
    font-family: var(--theme-form-font-family);
    font-size: 0.875rem;
  }

  [data-field-state='invalid'] :is(input, select, textarea),
  :is(input, select, textarea)[aria-invalid='true'],
  :is(input, select, textarea):user-invalid {
    border-color: var(--theme-form-error-color);
  }
}

/* ==========================================================================
   3. UNIFIED FORM CONTROLS (GRAVITY FORMS v3/v4 ORBITAL + PINT COMPONENTS)
   ========================================================================== */

/* Gravity Forms Theme Framework / Orbital CSS Custom Properties */
.gform_wrapper.gform-theme,
.gform-theme--framework,
.gform-theme--orbital,
#registerModal .gform_wrapper {
  --gf-color-primary: var(--theme-form-accent-color);
  --gf-color-primary-rgb: 3, 118, 168;
  --gf-color-primary-contrast: var(--theme-form-submit-text);
  --gf-color-primary-contrast-rgb: 255, 255, 255;
  --gf-color-primary-darker: #025c84;
  --gf-color-primary-lighter: #1ba0da;
  --gf-color-danger: var(--theme-form-error-color);
  --gf-color-danger-rgb: 193, 44, 39;
  --gf-radius: var(--theme-form-input-radius);
  --gf-padding-x: var(--theme-form-input-padding-inline);
  --gf-padding-y: var(--theme-form-input-padding-block);
  --gf-font-family-base: var(--theme-form-font-family);
  --gf-font-family-primary: var(--theme-form-font-family);
  --gf-font-family-secondary: var(--theme-form-label-font-family);
  --gf-font-size-primary: var(--theme-form-font-size);
  --gf-font-size-secondary: var(--theme-form-label-font-size);
  --gf-font-size-tertiary: 0.8125rem;
  --gf-letter-spacing-primary: var(--theme-form-letter-spacing);
  --gf-ctrl-size: var(--theme-form-input-height);
  --gf-ctrl-bg-color: var(--theme-form-input-bg);
  --gf-ctrl-border-color: var(--theme-form-border-color);
  --gf-ctrl-border-color-hover: var(--theme-form-border-color-hover);
  --gf-ctrl-border-color-focus: var(--theme-form-border-color-focus);
  --gf-ctrl-border-color-error: var(--theme-form-error-color);
  --gf-ctrl-border-width: var(--theme-form-border-width);
  --gf-ctrl-radius: var(--theme-form-input-radius);
  --gf-ctrl-color: var(--theme-form-text-color);
  --gf-ctrl-shadow: none;
  --gf-ctrl-placeholder-color: var(--theme-form-placeholder-color);
  --gf-ctrl-label-color-primary: var(--theme-form-label-color);
  --gf-ctrl-label-color-secondary: var(--theme-form-label-color);
  --gf-ctrl-textarea-height: var(--theme-form-textarea-min-height);
  --gf-ctrl-textarea-radius: var(--theme-form-textarea-radius);
  --gf-ctrl-textarea-padding-y: var(--theme-form-textarea-padding-block);
  --gf-ctrl-textarea-line-height: 1.5;
  --gf-ctrl-file-btn-radius: var(--theme-form-file-btn-radius);
  --gf-ctrl-file-btn-padding-x: 1.875rem;
  --gf-ctrl-file-btn-font-family: var(--theme-form-file-btn-font);
  --gf-ctrl-file-btn-font-size: 0.9375rem;
  --gf-ctrl-file-btn-letter-spacing: 0.0625rem;
  --gf-ctrl-file-btn-text-transform: uppercase;
  --gf-ctrl-btn-bg-color-primary: var(--theme-form-submit-bg);
  --gf-ctrl-btn-bg-color-hover-primary: var(--theme-form-submit-bg-hover);
  --gf-ctrl-btn-color-primary: var(--theme-form-submit-text);
  --gf-ctrl-btn-radius: var(--theme-form-submit-radius);
  --gf-ctrl-btn-shadow: none;
  --gf-form-gap-x: var(--theme-form-grid-gap-col);
  --gf-form-gap-y: var(--theme-form-grid-gap-row);
}

/* Text-like Inputs & Selects (Gravity Forms, Modal Forms, & Custom PINT Forms) */
.gform_wrapper.gform-theme
  :is(
    input:not(
      [type='checkbox'],
      [type='radio'],
      [type='file'],
      [type='submit'],
      [type='button'],
      [type='reset'],
      [type='hidden'],
      [type='image'],
      [type='range'],
      [type='color']
    ),
    select
  ),
.gform_wrapper
  :is(
    input:not(
      [type='checkbox'],
      [type='radio'],
      [type='file'],
      [type='submit'],
      [type='button'],
      [type='reset'],
      [type='hidden'],
      [type='image'],
      [type='range'],
      [type='color']
    ),
    select
  ),
#registerModal
  :is(
    input:not(
      [type='checkbox'],
      [type='radio'],
      [type='file'],
      [type='submit'],
      [type='button'],
      [type='reset'],
      [type='hidden'],
      [type='image'],
      [type='range'],
      [type='color']
    ),
    select
  ),
:is(
    pint-newsletter-signup,
    pint-membership-checkout,
    pint-single-wash-checkout,
    pint-gift-card-checkout,
    pint-membership-cancellation,
    pint-account-dashboard,
    pint-amp-disabled-fallback,
    .cancel-form-wrapper,
    .drb-form
  )
  :is(
    input:not(
      [type='checkbox'],
      [type='radio'],
      [type='file'],
      [type='submit'],
      [type='button'],
      [type='reset'],
      [type='hidden'],
      [type='image'],
      [type='range'],
      [type='color'],
      .quantity-selector__input,
      .amount-selector__custom-input,
      .gc-custom-amount-input
    ),
    select
  ) {
  box-sizing: border-box;
  inline-size: 100%;
  block-size: var(--theme-form-input-height);
  min-block-size: var(--theme-form-input-height);
  padding-block: var(--theme-form-input-padding-block);
  padding-inline: var(--theme-form-input-padding-inline);
  background-color: var(--theme-form-input-bg);
  border: var(--theme-form-border-width) solid var(--theme-form-border-color);
  border-radius: var(--theme-form-input-radius);
  color: var(--theme-form-text-color);
  font-family: var(--theme-form-font-family);
  font-size: var(--theme-form-font-size);
  font-weight: 400;
  letter-spacing: var(--theme-form-letter-spacing);
  line-height: 1.25;
  box-shadow: none;
  margin-block: 0;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

/* Select Dropdown Chevron Normalization */
.gform_wrapper.gform-theme select:not([multiple]),
.gform_wrapper select:not([multiple]),
#registerModal select:not([multiple]),
:is(
    pint-newsletter-signup,
    pint-membership-checkout,
    pint-single-wash-checkout,
    pint-gift-card-checkout,
    pint-membership-cancellation,
    pint-account-dashboard,
    pint-amp-disabled-fallback,
    .cancel-form-wrapper,
    .drb-form
  )
  select:not([multiple], .no-chevron) {
  appearance: none;
  background-image: var(--theme-form-select-chevron);
  background-repeat: no-repeat;
  background-position: right 16px center;
  background-size: 12px 8px;
  padding-inline-end: 40px;
  cursor: pointer;
}

/* Textarea Controls (Taller with matching #7170b8 border and 20px radius) */
.gform_wrapper.gform-theme textarea,
.gform_wrapper textarea,
#registerModal textarea,
:is(
    pint-newsletter-signup,
    pint-membership-checkout,
    pint-single-wash-checkout,
    pint-gift-card-checkout,
    pint-membership-cancellation,
    pint-account-dashboard,
    pint-amp-disabled-fallback
  )
  textarea {
  box-sizing: border-box;
  inline-size: 100%;
  block-size: auto;
  min-block-size: var(--theme-form-textarea-min-height);
  padding-block: var(--theme-form-textarea-padding-block);
  padding-inline: var(--theme-form-textarea-padding-inline);
  background-color: var(--theme-form-input-bg);
  border: var(--theme-form-border-width) solid var(--theme-form-border-color);
  border-radius: var(--theme-form-textarea-radius);
  color: var(--theme-form-text-color);
  font-family: var(--theme-form-font-family);
  font-size: var(--theme-form-font-size);
  font-weight: 400;
  letter-spacing: var(--theme-form-letter-spacing);
  line-height: 1.5;
  resize: vertical;
  box-shadow: none;
  margin-block: 0;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

/* Focus & Hover States for Text Inputs, Selects, and Textareas */
.gform_wrapper.gform-theme
  :is(
    input:not([type='checkbox'], [type='radio'], [type='file'], [type='submit'], [type='button'], [type='reset'], [type='hidden']),
    select,
    textarea
  ):is(:focus, :focus-visible),
#registerModal
  :is(
    input:not([type='checkbox'], [type='radio'], [type='file'], [type='submit'], [type='button'], [type='reset'], [type='hidden']),
    select,
    textarea
  ):is(:focus, :focus-visible),
:is(
    pint-newsletter-signup,
    pint-membership-checkout,
    pint-single-wash-checkout,
    pint-gift-card-checkout,
    pint-membership-cancellation,
    pint-account-dashboard,
    pint-amp-disabled-fallback
  )
  :is(
    input:not([type='checkbox'], [type='radio'], [type='file'], [type='submit'], [type='button'], [type='reset'], [type='hidden'], .quantity-selector__input, .amount-selector__custom-input, .gc-custom-amount-input),
    select,
    textarea
  ):is(:focus, :focus-visible) {
  border-color: var(--theme-form-border-color-focus);
  outline: 2px solid var(--theme-form-focus-ring);
  outline-offset: 1px;
  box-shadow: none;
}

/* Composite Currency Input Wrapper (Gift Card Checkout) */
pint-gift-card-checkout .gc-custom-amount-input-box {
  border: var(--theme-form-border-width) solid var(--theme-form-border-color);
  border-radius: var(--theme-form-input-radius);
  min-block-size: var(--theme-form-input-height);
  padding-block: 0.375rem;
  padding-inline: var(--theme-form-input-padding-inline);
  background-color: var(--theme-form-input-bg);
}

pint-gift-card-checkout .gc-custom-amount-input-box:focus-within {
  border-color: var(--theme-form-border-color-focus);
  outline: 2px solid var(--theme-form-focus-ring);
  outline-offset: 1px;
  box-shadow: none;
}

/* Disabled State */
:is(.gform_wrapper, #registerModal, form) :is(input, select, textarea):disabled {
  background-color: var(--theme-form-input-bg-disabled);
  color: var(--theme-form-placeholder-color);
  cursor: not-allowed;
  opacity: 0.75;
}

/* Placeholder Typography */
:is(.gform_wrapper, #registerModal, form) :is(input, textarea)::placeholder {
  color: var(--theme-form-placeholder-color);
  font-family: var(--theme-form-font-family);
  letter-spacing: var(--theme-form-letter-spacing);
  opacity: 1;
}

/* ==========================================================================
   4. FILE INPUTS & UPLOAD BUTTONS (Matching /halloween-contest/)
   ========================================================================== */

.gform_wrapper.gform-theme input[type='file'],
.gform_wrapper input[type='file'],
input[type='file'] {
  border: 0;
  border-radius: 0;
  background-color: transparent;
  padding: 0;
  block-size: auto;
  min-block-size: 0;
  inline-size: 100%;
  box-shadow: none;
  outline: none;
  color: var(--theme-form-text-color);
  font-family: var(--theme-form-font-family);
  font-size: 14px;
  line-height: 1.5;
}

.gform_wrapper.gform-theme input[type='file']::file-selector-button,
.gform_wrapper input[type='file']::file-selector-button,
input[type='file']::file-selector-button,
.gform_wrapper .gform_drop_area .gform_button_select_files {
  display: inline-block;
  font-family: var(--theme-form-file-btn-font);
  background-color: var(--theme-form-file-btn-bg);
  color: var(--theme-form-file-btn-text);
  text-transform: uppercase;
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 1px;
  line-height: 1.2;
  block-size: auto;
  padding-block: 14px 12px;
  padding-inline: 30px;
  margin-inline-end: 14px;
  border: 0;
  border-radius: var(--theme-form-file-btn-radius);
  box-shadow: none;
  cursor: pointer;
  transition: background-color 0.25s ease, transform 0.15s ease;
}

.gform_wrapper.gform-theme input[type='file']:hover::file-selector-button,
.gform_wrapper.gform-theme input[type='file']:focus-visible::file-selector-button,
.gform_wrapper input[type='file']:hover::file-selector-button,
.gform_wrapper input[type='file']:focus-visible::file-selector-button,
input[type='file']:hover::file-selector-button,
input[type='file']:focus-visible::file-selector-button,
.gform_wrapper .gform_drop_area .gform_button_select_files:hover,
.gform_wrapper .gform_drop_area .gform_button_select_files:focus-visible {
  background-color: var(--theme-form-file-btn-bg-hover);
  color: var(--theme-form-file-btn-text);
}

/* ==========================================================================
   5. GRAVITY FORMS LAYOUT, LABELS, TURNSTILE, CONSENT & SUBMIT BUTTONS
   ========================================================================== */

/* Gravity Forms 12-Column Grid & Responsive Half-Width Field Pairing */
.gform_wrapper.gform-theme .gform_fields,
.gform_wrapper .gform_fields {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  row-gap: var(--theme-form-grid-gap-row, 22px);
  column-gap: var(--theme-form-grid-gap-col, 20px);
  inline-size: 100%;
  list-style: none;
  padding: 0;
  margin: 0;
}

.gform_wrapper.gform-theme .gfield,
.gform_wrapper .gfield {
  grid-column: 1 / -1;
  min-inline-size: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

/* Neutralize legacy float classes so CSS Grid controls column placement */
.gform_wrapper :is(.half-left, .half-right, .gf_left_half, .gf_right_half, .form-row-start, .form-row-end) {
  float: none;
  inline-size: auto;
  padding-inline-end: 0;
  clear: none;
}

@media (min-width: 641px) {
  .gform_wrapper.gform-theme
    :is(.gfield--width-half, .half-left, .half-right, .gf_left_half, .gf_right_half, .form-row-start, .form-row-end),
  .gform_wrapper
    :is(.gfield--width-half, .half-left, .half-right, .gf_left_half, .gf_right_half, .form-row-start, .form-row-end) {
    grid-column: span 6;
  }
}

@media (max-width: 640px) {
  .gform_wrapper.gform-theme
    :is(.gfield--width-half, .half-left, .half-right, .gf_left_half, .gf_right_half, .form-row-start, .form-row-end),
  .gform_wrapper
    :is(.gfield--width-half, .half-left, .half-right, .gf_left_half, .gf_right_half, .form-row-start, .form-row-end) {
    grid-column: 1 / -1;
  }
}

/* Complex Multi-Input Fields (Name, Address, Multi-Select Date) */
.gform_wrapper.gform-theme :is(.ginput_container--name, .ginput_complex, .gform-grid-row),
.gform_wrapper :is(.ginput_container--name, .ginput_complex, .gform-grid-row) {
  display: flex;
  flex-flow: row wrap;
  row-gap: 16px;
  column-gap: var(--theme-form-grid-gap-col, 20px);
  inline-size: 100%;
  margin: 0;
  padding: 0;
}

.gform_wrapper.gform-theme :is(.ginput_container--name, .ginput_complex, .gform-grid-row) > :is(span, div, .gform-grid-col),
.gform_wrapper :is(.ginput_container--name, .ginput_complex, .gform-grid-row) > :is(span, div, .gform-grid-col) {
  margin: 0;
  padding: 0;
  min-inline-size: 0;
  box-sizing: border-box;
}

.gform_wrapper .gf_clear {
  display: none;
}

/* Full-width sub-fields inside complex containers (Street Address, Address Line 2) */
.gform_wrapper.gform-theme .ginput_complex > .ginput_full,
.gform_wrapper .ginput_complex > .ginput_full {
  flex: 1 1 100%;
  inline-size: 100%;
}

/* Half-width sub-fields inside complex containers (First/Last Name, City/State/ZIP) */
.gform_wrapper.gform-theme .ginput_complex > :is(.ginput_left, .ginput_right),
.gform_wrapper .ginput_complex > :is(.ginput_left, .ginput_right),
.gform_wrapper.gform-theme .ginput_container--name > span,
.gform_wrapper .ginput_container--name > span {
  flex: 1 1 calc(50% - 10px);
  min-inline-size: 180px;
}

/* 3-column date dropdown sub-fields (Month, Day, Year) */
.gform_wrapper.gform-theme .gfield--type-date .ginput_complex > .ginput_container_date,
.gform_wrapper .gfield--type-date .ginput_complex > .ginput_container_date {
  flex: 1 1 calc(33.333% - 14px);
  min-inline-size: 80px;
}

@media (max-width: 640px) {
  .gform_wrapper.gform-theme .ginput_complex > :is(.ginput_left, .ginput_right, .ginput_full),
  .gform_wrapper .ginput_complex > :is(.ginput_left, .ginput_right, .ginput_full),
  .gform_wrapper.gform-theme .ginput_container--name > span,
  .gform_wrapper .ginput_container--name > span {
    flex: 1 1 100%;
    inline-size: 100%;
  }
}

/* Primary Field Labels & Legends */
.gform_wrapper.gform-theme
  .gfield:not(.hidden_label)
  > :is(.gfield_label, legend.gfield_label, .gform-field-label):not(
    .gform-field-label--type-sub,
    .gform-field-label--type-inline,
    .gfield_consent_label,
    .screen-reader-text
  ),
.gform_wrapper
  .gfield:not(.hidden_label)
  > :is(.gfield_label, legend.gfield_label, .gform-field-label):not(
    .gform-field-label--type-sub,
    .gform-field-label--type-inline,
    .gfield_consent_label,
    .screen-reader-text
  ) {
  display: block;
  inline-size: 100%;
  color: var(--theme-form-label-color);
  font-family: var(--theme-form-label-font-family);
  font-size: var(--theme-form-label-font-size);
  font-weight: 600;
  line-height: 1.4;
  margin-block: 0 var(--theme-form-label-gap, 8px);
  padding: 0;
}

/* Sub-labels (First, Last, Street Address, City, State, ZIP) */
.gform_wrapper.gform-theme
  :is(.gform-field-label--type-sub, .ginput_complex label):not(.hidden_sub_label, .screen-reader-text),
.gform_wrapper
  :is(.gform-field-label--type-sub, .ginput_complex label):not(.hidden_sub_label, .screen-reader-text) {
  display: block;
  color: var(--theme-form-text-color);
  font-family: var(--theme-form-font-family);
  font-size: 13px;
  font-weight: 400;
  line-height: 1.35;
  margin-block: var(--theme-form-sublabel-gap, 6px) 0;
  padding-inline-start: 6px;
}

/* Field Descriptions */
.gform_wrapper.gform-theme .gfield_description:not(.validation_message),
.gform_wrapper .gfield_description:not(.validation_message) {
  color: var(--theme-form-text-color);
  font-family: var(--theme-form-font-family);
  font-size: 13px;
  line-height: 1.45;
  margin-block: 8px 0;
  padding: 0;
}

/* Radio & Checkbox Choice Lists */
.gform_wrapper.gform-theme :is(.gfield_radio, .gfield_checkbox),
.gform_wrapper :is(.gfield_radio, .gfield_checkbox) {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-block: 4px 0;
  padding: 0;
  list-style: none;
}

.gform_wrapper.gform-theme .gchoice,
.gform_wrapper .gchoice {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 0;
  padding: 0;
}

.gform_wrapper.gform-theme .gchoice input:is([type='checkbox'], [type='radio']),
.gform_wrapper .gchoice input:is([type='checkbox'], [type='radio']) {
  margin-block-start: 3px;
  flex-shrink: 0;
}

.gform_wrapper.gform-theme .gchoice label,
.gform_wrapper .gchoice label {
  color: var(--theme-form-text-color);
  font-family: var(--theme-form-font-family);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.45;
  margin: 0;
  cursor: pointer;
}

/* Cloudflare Turnstile & Captcha — Always Stacked on Its Own Line Above Submit Button */
.gform_wrapper.gform-theme
  :is(.gfield--type-turnstile, .gfield--type-captcha, .cf-turnstile, .pint-gf-turnstile, .pint-turnstile-bypass-badge),
.gform_wrapper
  :is(.gfield--type-turnstile, .gfield--type-captcha, .cf-turnstile, .pint-gf-turnstile, .pint-turnstile-bypass-badge),
.pint-turnstile-container {
  grid-column: 1 / -1;
  inline-size: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  margin-block: 4px;
}

/* Gravity Forms Footer — Stack Turnstile Above Submit Button (Never Inline) */
.gform_wrapper.gform-theme :is(.gform_footer, .gform-footer, .gform_page_footer),
.gform_wrapper :is(.gform_footer, .gform-footer, .gform_page_footer) {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 16px;
  inline-size: 100%;
  margin-block-start: 16px;
  padding-block: 0;
}

/* Centered Footer & Turnstile Contexts (Modals, Landing Pages, Contest Forms) */
:is(#registerModal, .registermodal-main, .landing-page-content, .soapy-tunnel-voting-form, .personal-information-popup)
  .gform_wrapper
  :is(
    .gform_footer,
    .gform-footer,
    .gform_page_footer,
    .gfield--type-turnstile,
    .gfield--type-captcha,
    .cf-turnstile,
    .pint-gf-turnstile,
    .pint-turnstile-bypass-badge
  ) {
  align-items: center;
  text-align: center;
}

/* Gravity Forms Submit Buttons */
.gform_wrapper.gform-theme .gform_footer input[type='submit'],
.gform_wrapper.gform-theme .gform_footer .gform_button,
.gform_wrapper.gform-theme .gform_page_footer .gform_button,
.gform_wrapper .gform_footer input[type='submit'],
.gform_wrapper .gform_footer .gform_button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-block-size: 44px;
  padding-block: 12px;
  padding-inline: 36px;
  background-color: var(--theme-form-submit-bg);
  color: var(--theme-form-submit-text);
  border: 0;
  border-radius: var(--theme-form-submit-radius);
  font-family: 'Poppins SemiBold', 'Poppins', sans-serif;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  cursor: pointer;
  box-shadow: none;
  transition: background-color 0.2s ease;
}

.gform_wrapper.gform-theme .gform_footer input[type='submit']:is(:hover, :focus-visible),
.gform_wrapper.gform-theme .gform_footer .gform_button:is(:hover, :focus-visible),
.gform_wrapper .gform_footer input[type='submit']:is(:hover, :focus-visible),
.gform_wrapper .gform_footer .gform_button:is(:hover, :focus-visible) {
  background-color: var(--theme-form-submit-bg-hover);
  color: var(--theme-form-submit-text);
}

/* Consent Field & SMS Terms Dialog (Replaces inline <style> blocks in GF HTML fields) */
.gform_wrapper .fieldgroup-consent,
.gform_wrapper .sms-opt-in {
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--theme-form-text-color);
}

.gform_wrapper .fieldgroup-consent .ginput_container_consent,
.gform_wrapper .sms-opt-in .gchoice {
  display: flex;
  align-items: flex-start;
  gap: 0.625rem;
}

.gform_wrapper .fieldgroup-consent input[type='checkbox'],
.gform_wrapper .sms-opt-in input[type='checkbox'] {
  margin-block-start: 0.2rem;
  flex-shrink: 0;
}

.gform_wrapper .fieldgroup-consent .gfield_consent_label a,
.gform_wrapper .sms-opt-in label a {
  color: var(--theme-form-accent-color);
  text-decoration: underline;
}

#smsdialog {
  max-inline-size: min(90vw, 40rem);
  padding: 1.5rem;
  border: 1px solid var(--theme-form-border-color);
  border-radius: var(--theme-form-textarea-radius);
  background-color: var(--theme-form-input-bg);
  color: var(--theme-form-text-color);
  box-shadow: 0 20px 40px oklch(0% 0 0 / 0.2);
}

#smsdialog::backdrop {
  background-color: oklch(0% 0 0 / 0.5);
}

/* HTML Content Blocks inside Gravity Forms */
.gform_wrapper .gfield--type-html h2 {
  font-size: clamp(1.25rem, 1.1rem + 0.75vw, 1.625rem);
  margin-block-end: 0.5rem;
  text-align: center;
  text-wrap: balance;
}

.gform_wrapper .gfield--type-html p {
  font-size: 1rem;
  line-height: 1.5;
  color: var(--theme-form-text-color);
}

/* Validation Error Messages */
.gform_wrapper .gfield_validation_message,
.gform_wrapper .validation_message {
  color: var(--theme-form-error-color);
  background-color: transparent;
  border: 0;
  padding-block: 0.25rem 0;
  padding-inline: 0.5rem;
  font-family: var(--theme-form-font-family);
  font-size: 0.8125rem;
}

/* Print Styles */
@media print {
  :is(.gform_wrapper, form) :is(input, select, textarea) {
    border: 1px solid #000000;
    background: #ffffff;
    color: #000000;
    box-shadow: none;
  }

  :is(.gform_wrapper, form) :is(input[type='submit'], button[type='submit']) {
    display: none;
  }
}
