/**
 * Gravity Forms Theme Integration
 *
 * Styling to integrate Gravity Forms with the 3MW Core theme design system.
 * Supports both Orbital theme (GF 2.5+) and legacy gravity-theme.
 * Uses theme CSS variables for consistent styling across the site.
 *
 * This file provides:
 * - Form field styling (inputs, textareas, selects)
 * - Label and description styling
 * - Submit button theming (inherits btn-primary styles)
 * - Validation and error states
 * - Multi-column/row layout support
 * - Accessibility enhancements
 *
 * @package 3MW_Core_Child
 * @since 1.0.0
 * @version 2.0.0 - Added Orbital theme support (GF 2.5+)
 */

/* ============================================
   Orbital Theme CSS Variable Overrides (GF 2.5+)
   ============================================ */

.gform_wrapper.gform-theme--orbital {
	/* Typography - Labels */
	--gf-label-font-family: var(--font-family-body);
	--gf-label-font-size: var(--font-size-body);
	--gf-label-font-weight: 300;
	--gf-label-color: var(--color-text-primary);

	/* Typography - Controls */
	--gf-ctrl-font-family: var(--font-family-body);
	--gf-ctrl-font-size: var(--font-size-body);
	--gf-ctrl-color: var(--color-text-primary);

	/* Typography - Descriptions */
	--gf-desc-font-size: var(--font-size-small);
	--gf-desc-color: var(--color-text-primary);

	/* Form Controls */
	--gf-ctrl-border-color: var(--color-border);
	--gf-ctrl-border-radius: var(--input-radius);
	--gf-ctrl-bg-color: var(--color-white);
	--gf-ctrl-padding-x: var(--space-md);
	--gf-ctrl-padding-y: var(--space-sm);

	/* Focus States */
	--gf-ctrl-focus-border-color: var(--color-primary);
	--gf-ctrl-focus-shadow: 0 0 0 3px var(--color-primary-transparent);

	/* Buttons - Primary */
	--gf-btn-primary-bg-color: var(--btn-primary-bg);
	--gf-btn-primary-border-color: var(--btn-primary-border-color);
	--gf-btn-primary-color: var(--btn-primary-text-color);
	--gf-btn-primary-bg-color-hover: var(--btn-primary-hover-bg);
	--gf-btn-primary-border-color-hover: var(--btn-primary-hover-border-color);
	--gf-btn-primary-color-hover: var(--btn-primary-hover-text-color);
	--gf-btn-border-radius: var(--radius-button);
	--gf-btn-font-family: var(--font-family-body);
	--gf-btn-font-size: var(--font-size-button);
	--gf-btn-font-weight: var(--font-weight-medium);
	--gf-btn-padding-x: var(--space-xl);
	--gf-btn-padding-y: var(--space-md);

	/* Buttons - Secondary */
	--gf-btn-secondary-bg-color: var(--btn-secondary-bg);
	--gf-btn-secondary-border-color: var(--btn-secondary-border-color);
	--gf-btn-secondary-color: var(--btn-secondary-text-color);
	--gf-btn-secondary-bg-color-hover: var(--btn-secondary-hover-bg);
	--gf-btn-secondary-border-color-hover: var(--btn-secondary-hover-border-color);
	--gf-btn-secondary-color-hover: var(--btn-secondary-hover-text-color);

	/* Error States */
	--gf-ctrl-error-border-color: var(--color-error);
	--gf-field-error-bg-color: transparent;
	--gf-validation-msg-color: var(--color-error);

	/* Radio/Checkbox */
	--gf-ctrl-choice-accent-color: var(--color-primary);
	--gf-ctrl-choice-size: 18px;

	/* Progress Bar */
	--gf-progress-bar-bg-color: var(--color-bg-secondary);
	--gf-progress-bar-fill-color: var(--btn-primary-bg);

	/* File Upload */
	--gf-file-upload-bg-color: var(--color-bg-secondary);
	--gf-file-upload-border-color: var(--color-border);

	/* Spacing */
	--gf-field-margin-bottom: var(--space-md);
}

/* ============================================
   Form Container - Both Themes
   ============================================ */

.gform_wrapper.gform-theme--orbital,
.gform_wrapper.gravity-theme {
	font-family: var(--font-family-body);
}

/* Legacy theme variable overrides */
.gform_wrapper.gravity-theme {
	--gf-ctrl-border-color: var(--color-border);
	--gf-ctrl-border-radius: var(--input-radius);
	--gf-ctrl-bg-color: var(--color-white);
	--gf-ctrl-font-size: var(--font-size-body);
	--gf-label-font-size: var(--font-size-body);
	--gf-label-font-weight: 300;
	--gf-ctrl-padding: var(--space-sm) var(--space-md);
}

/* ============================================
   Form Fields - Inputs, Textareas, Selects
   ============================================ */

.gform_wrapper.gform-theme--orbital input:not([type="radio"], [type="checkbox"], [type="submit"], [type="button"], [type="image"], [type="file"]),
.gform_wrapper.gform-theme--orbital select,
.gform_wrapper.gform-theme--orbital textarea,
.gform_wrapper.gravity-theme input:not([type="radio"], [type="checkbox"], [type="submit"], [type="button"], [type="image"], [type="file"]),
.gform_wrapper.gravity-theme select,
.gform_wrapper.gravity-theme textarea {
	border: 1px solid var(--wp--preset--color--sea-blue);
	border-radius: 5px;
	background-color: var(--color-white);
	color: var(--gf-label-color);
	font-family: var(--font-family-body);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-normal);
	padding: var(--space-sm) var(--space-md);
	transition: border-color var(--transition-base), box-shadow var(--transition-base);
	width: 100%;
}

.field_sublabel_above .gform-field-label--type-sub {
	color: var(--gf-label-color);
	font-weight: var(--gf-label-font-weight);
}

/* Focus states */
.gform_wrapper.gform-theme--orbital input:not([type="radio"], [type="checkbox"], [type="submit"], [type="button"], [type="image"], [type="file"]):focus,
.gform_wrapper.gform-theme--orbital select:focus,
.gform_wrapper.gform-theme--orbital textarea:focus,
.gform_wrapper.gravity-theme input:not([type="radio"], [type="checkbox"], [type="submit"], [type="button"], [type="image"], [type="file"]):focus,
.gform_wrapper.gravity-theme select:focus,
.gform_wrapper.gravity-theme textarea:focus {
	border-color: var(--color-border);
	box-shadow: none;
	border-width: 2px;
	outline: none;
}

/* Placeholder styling */
.gform_wrapper.gform-theme--orbital input::placeholder,
.gform_wrapper.gform-theme--orbital textarea::placeholder,
.gform_wrapper.gravity-theme input::placeholder,
.gform_wrapper.gravity-theme textarea::placeholder {
	color: var(--color-input);
	opacity: 1;
}

/* Textarea specific */
.gform_wrapper.gform-theme--orbital textarea,
.gform_wrapper.gravity-theme textarea {
	min-height: 120px;
	resize: vertical;
}

/* Select dropdown arrow and text alignment */
.gform_wrapper.gform-theme--orbital select,
.gform_wrapper.gravity-theme select {
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M6 8.825L1.175 4 2.238 2.938 6 6.7l3.763-3.762L10.825 4z'/%3E%3C/svg%3E");
	background-position: right var(--space-md) center;
	background-repeat: no-repeat;
	background-size: 12px;
	padding-right: calc(var(--space-md) * 2 + 12px);
	height: auto;
	min-height: 44px;
	line-height: 44px;
	padding-top: 0;
	padding-bottom: 0;
}

/* ============================================
   Labels and Descriptions
   ============================================ */

.gform_wrapper.gform-theme--orbital .gfield_label,
.gform_wrapper.gform-theme--orbital .gform_heading .gform_title,
.gform_wrapper.gravity-theme .gfield_label,
.gform_wrapper.gravity-theme .gform_heading .gform_title {
	color: var(--color-text-primary);
	font-family: var(--font-family-body);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-light);
	margin-bottom: var(--space-xs);
}

/* Required indicator */
.gform_wrapper.gform-theme--orbital .gfield_required,
.gform_wrapper.gravity-theme .gfield_required {
	color: var(--color-error);
}

/* Field descriptions */
.gform_wrapper.gform-theme--orbital .gfield_description,
.gform_wrapper.gform-theme--orbital .instruction,
.gform_wrapper.gravity-theme .gfield_description,
.gform_wrapper.gravity-theme .instruction {
	color: var(--color-text-primary);
	font-size: var(--font-size-small);
	margin-top: var(--space-2xs);
}

/* Form description */
.gform_wrapper.gform-theme--orbital .gform_heading .gform_description,
.gform_wrapper.gravity-theme .gform_heading .gform_description {
	color: var(--color-text-primary);
	font-size: var(--font-size-body);
	margin-bottom: var(--space-lg);
}

/* ============================================
   Submit Button - Inherits Theme Button Styles
   ============================================ */

/* Target all Gravity Forms buttons with high specificity to override GF defaults */
.gform_wrapper input[type="submit"],
.gform_wrapper button[type="submit"],
.gform_wrapper .gform_button,
.gform_wrapper input.gform_button,
.gform_wrapper.gform-theme--orbital .gform_footer input[type="submit"],
.gform_wrapper.gform-theme--orbital .gform_page_footer input[type="submit"],
.gform_wrapper.gform-theme--orbital .gform_footer button[type="submit"],
.gform_wrapper.gform-theme--orbital .gform_page_footer button[type="submit"],
.gform_wrapper.gravity-theme .gform_footer input[type="submit"],
.gform_wrapper.gravity-theme .gform_page_footer input[type="submit"],
.gform_wrapper.gravity-theme .gform_footer button[type="submit"],
.gform_wrapper.gravity-theme .gform_page_footer button[type="submit"] {
	/*
	 * Inherit primary button styles from parent theme buttons.css
	 * Using !important to override Gravity Forms Orbital theme high-specificity styles
	 */
	background: var(--btn-primary-bg) !important;
	border-color: var(--btn-primary-border-color) !important;
	border-radius: var(--radius-button) !important;
	border-style: var(--btn-primary-border-style) !important;
	border-width: var(--btn-primary-border-width) !important;
	color: var(--btn-primary-text-color) !important;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--font-family-body);
	font-size: var(--font-size-button) !important;
	font-weight: var(--gf-label-font-weight) !important;
	text-transform: var(--btn-text-transform, none) !important;
	gap: var(--space-xs);
	height: auto !important;  /* Reset Orbital's fixed height */
	min-height: auto !important;  /* Reset Orbital's min-height */
	line-height: 1 !important;
	padding: 12px 20px !important;  /* Match child theme button padding */
	text-decoration: none;
	transition: background var(--transition-base),
	            color var(--transition-base),
	            border-color var(--transition-base),
	            box-shadow var(--transition-base);
}

/* Submit button hover state */
.gform_wrapper input[type="submit"]:hover,
.gform_wrapper input[type="submit"]:focus,
.gform_wrapper button[type="submit"]:hover,
.gform_wrapper button[type="submit"]:focus,
.gform_wrapper .gform_button:hover,
.gform_wrapper .gform_button:focus,
.gform_wrapper.gform-theme--orbital .gform_footer input[type="submit"]:hover,
.gform_wrapper.gform-theme--orbital .gform_footer input[type="submit"]:focus,
.gform_wrapper.gform-theme--orbital .gform_page_footer input[type="submit"]:hover,
.gform_wrapper.gform-theme--orbital .gform_page_footer input[type="submit"]:focus,
.gform_wrapper.gform-theme--orbital .gform_footer button[type="submit"]:hover,
.gform_wrapper.gform-theme--orbital .gform_footer button[type="submit"]:focus,
.gform_wrapper.gform-theme--orbital .gform_page_footer button[type="submit"]:hover,
.gform_wrapper.gform-theme--orbital .gform_page_footer button[type="submit"]:focus,
.gform_wrapper.gravity-theme .gform_footer input[type="submit"]:hover,
.gform_wrapper.gravity-theme .gform_footer input[type="submit"]:focus,
.gform_wrapper.gravity-theme .gform_page_footer input[type="submit"]:hover,
.gform_wrapper.gravity-theme .gform_page_footer input[type="submit"]:focus,
.gform_wrapper.gravity-theme .gform_footer button[type="submit"]:hover,
.gform_wrapper.gravity-theme .gform_footer button[type="submit"]:focus,
.gform_wrapper.gravity-theme .gform_page_footer button[type="submit"]:hover,
.gform_wrapper.gravity-theme .gform_page_footer button[type="submit"]:focus {
	background: var(--btn-primary-hover-bg) !important;
	border-color: var(--btn-primary-hover-border-color) !important;
	color: var(--btn-primary-hover-text-color) !important;
}

/* Focus visible for keyboard navigation */
.gform_wrapper.gform-theme--orbital .gform_footer input[type="submit"]:focus-visible,
.gform_wrapper.gform-theme--orbital .gform_page_footer input[type="submit"]:focus-visible,
.gform_wrapper.gravity-theme .gform_footer input[type="submit"]:focus-visible,
.gform_wrapper.gravity-theme .gform_page_footer input[type="submit"]:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;
}

/* Previous button (multi-page forms) - Secondary style */
.gform_wrapper.gform-theme--orbital .gform_page_footer .gform_previous_button,
.gform_wrapper.gravity-theme .gform_page_footer .gform_previous_button {
	background: var(--btn-secondary-bg) !important;
	border-color: var(--btn-secondary-border-color) !important;
	border-radius: var(--radius-button) !important;
	border-style: var(--btn-secondary-border-style) !important;
	border-width: var(--btn-secondary-border-width) !important;
	color: var(--btn-secondary-text-color) !important;
	cursor: pointer;
	font-family: var(--font-family-body);
	font-size: var(--font-size-button);
	font-weight: var(--font-weight-medium);
	text-transform: var(--btn-text-transform, none) !important;
	padding: 15px 30px;  /* Match parent theme .btn padding exactly */
	transition: background var(--transition-base),
	            color var(--transition-base),
	            border-color var(--transition-base);
}

.gform_wrapper.gform-theme--orbital .gform_page_footer .gform_previous_button:hover,
.gform_wrapper.gform-theme--orbital .gform_page_footer .gform_previous_button:focus,
.gform_wrapper.gravity-theme .gform_page_footer .gform_previous_button:hover,
.gform_wrapper.gravity-theme .gform_page_footer .gform_previous_button:focus {
	background: var(--btn-secondary-hover-bg) !important;
	border-color: var(--btn-secondary-hover-border-color) !important;
	color: var(--btn-secondary-hover-text-color) !important;
}

/* Next button (multi-page forms) - Primary style */
.gform_wrapper.gform-theme--orbital .gform_page_footer .gform_next_button,
.gform_wrapper.gravity-theme .gform_page_footer .gform_next_button {
	background: var(--btn-primary-bg) !important;
	border-color: var(--btn-primary-border-color) !important;
	border-radius: var(--radius-button) !important;
	border-style: var(--btn-primary-border-style) !important;
	border-width: var(--btn-primary-border-width) !important;
	color: var(--btn-primary-text-color) !important;
	cursor: pointer;
	font-family: var(--font-family-body);
	font-size: var(--font-size-button);
	font-weight: var(--font-weight-medium);
	text-transform: var(--btn-text-transform, none) !important;
	padding: 15px 30px;  /* Match parent theme .btn padding exactly */
	transition: background var(--transition-base),
	            color var(--transition-base),
	            border-color var(--transition-base);
}

.gform_wrapper.gform-theme--orbital .gform_page_footer .gform_next_button:hover,
.gform_wrapper.gform-theme--orbital .gform_page_footer .gform_next_button:focus,
.gform_wrapper.gravity-theme .gform_page_footer .gform_next_button:hover,
.gform_wrapper.gravity-theme .gform_page_footer .gform_next_button:focus {
	background: var(--btn-primary-hover-bg) !important;
	border-color: var(--btn-primary-hover-border-color) !important;
	color: var(--btn-primary-hover-text-color) !important;
}

/* ============================================
   Validation and Error States
   ============================================ */

/* Field with error */
.gform_wrapper.gform-theme--orbital .gfield_error input:not([type="radio"], [type="checkbox"], [type="submit"], [type="button"]),
.gform_wrapper.gform-theme--orbital .gfield_error select,
.gform_wrapper.gform-theme--orbital .gfield_error textarea,
.gform_wrapper.gravity-theme .gfield_error input:not([type="radio"], [type="checkbox"], [type="submit"], [type="button"]),
.gform_wrapper.gravity-theme .gfield_error select,
.gform_wrapper.gravity-theme .gfield_error textarea {
	border-color: var(--color-error);
}

.gform_wrapper.gform-theme--orbital .gfield_error input:not([type="radio"], [type="checkbox"], [type="submit"], [type="button"]):focus,
.gform_wrapper.gform-theme--orbital .gfield_error select:focus,
.gform_wrapper.gform-theme--orbital .gfield_error textarea:focus,
.gform_wrapper.gravity-theme .gfield_error input:not([type="radio"], [type="checkbox"], [type="submit"], [type="button"]):focus,
.gform_wrapper.gravity-theme .gfield_error select:focus,
.gform_wrapper.gravity-theme .gfield_error textarea:focus {
	box-shadow: 0 0 0 3px var(--color-error-transparent);
}

/* Validation message */
.gform_wrapper.gform-theme--orbital .gfield_error .gfield_validation_message,
.gform_wrapper.gform-theme--orbital .validation_message,
.gform_wrapper.gravity-theme .gfield_error .gfield_validation_message,
.gform_wrapper.gravity-theme .validation_message {
	background-color: transparent;
	border: none;
	color: var(--color-error);
	font-size: var(--font-size-small);
	margin-top: var(--space-2xs);
	padding: 0;
}

/* Form validation error box */
.gform_wrapper.gform-theme--orbital .gform_validation_errors,
.gform_wrapper.gravity-theme .gform_validation_errors {
	background-color: var(--color-error-bg);
	border: 1px solid var(--color-error);
	border-radius: var(--radius-card);
	margin-bottom: var(--space-lg);
	padding: var(--space-md);
}

.gform_wrapper.gform-theme--orbital .gform_validation_errors h2,
.gform_wrapper.gravity-theme .gform_validation_errors h2 {
	color: var(--color-error);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-semibold);
	margin: 0;
}

/* ============================================
   Checkboxes and Radio Buttons
   ============================================ */

.gform_wrapper.gform-theme--orbital .gfield_checkbox label,
.gform_wrapper.gravity-theme .gfield_checkbox label {
	color: var(--color-text-primary);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-normal);
}

.gform_wrapper.gform-theme--orbital .gfield_radio label,
.gform_wrapper.gravity-theme .gfield_radio label {
	color: var(--color-text-primary);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-light);
}

/* Choice label line-height */
.gform_wrapper.gform-theme--orbital .gchoice label,
.gform_wrapper.gravity-theme .gchoice label {
	line-height: 16px;
}

.gform_wrapper.gform-theme--orbital .gchoice,
.gform_wrapper.gravity-theme .gchoice {
	margin-bottom: var(--space-xs);
}

/* Framework theme - radio buttons in row layout */
.gform-theme--framework .gfield--type-choice .gfield_radio {
	flex-flow: row;
}

/* Custom checkbox/radio styling - Override Orbital theme colors */
.gform_wrapper.gform-theme--orbital input[type="checkbox"],
.gform_wrapper.gform-theme--orbital input[type="radio"],
.gform_wrapper.gravity-theme input[type="checkbox"],
.gform_wrapper.gravity-theme input[type="radio"] {
	accent-color: var(--color-primary);
	height: 18px;
	width: 18px;
}

.gform_wrapper.gform-theme--orbital input[type="radio"] {
	border: 1px solid var(--color-black);
}

/* Override Orbital's custom radio/checkbox focus and checked states */
.gform_wrapper.gform-theme--orbital input[type="checkbox"]:focus,
.gform_wrapper.gform-theme--orbital input[type="radio"]:focus {
	box-shadow: 0 0 0 3px var(--color-primary-transparent) !important;
	outline: none !important;
}

/* Checkbox checked state - fill with primary color and show white checkmark */
.gform_wrapper.gform-theme--orbital input[type="checkbox"]:checked {
	background-color: var(--color-primary) !important;
	border-color: var(--color-primary) !important;
	position: relative !important;
}

/* Checkbox checkmark - white checkmark on primary background */
.gform_wrapper.gform-theme--orbital input[type="checkbox"]:checked::before {
	content: '' !important;
	display: block !important;
	position: absolute !important;
	top: 50% !important;
	left: 50% !important;
	width: 5px !important;
	height: 9px !important;
	border: solid var(--color-white) !important;
	border-width: 0 2px 2px 0 !important;
	transform: translate(-50%, -60%) rotate(45deg) !important;
	background: transparent !important;
}

/* Radio checked state - white background with black border, inner dot shows selection */
.gform_wrapper.gform-theme--orbital input[type="radio"]:checked {
	background-color: var(--color-white) !important;
	border-color: var(--color-black) !important;
	position: relative !important;
}

/* Override Orbital's ::before pseudo-element for radio checked state indicator (inner dot) */
.gform_wrapper.gform-theme--orbital input[type="radio"]:checked::before {
	content: '' !important;
	display: block !important;
	background-color: var(--wp--preset--color--coral) !important;
	color: var(--color-primary) !important;
	width: 10px !important;
	height: 10px !important;
	border-radius: 50% !important;
	position: absolute !important;
	top: 50% !important;
	left: 50% !important;
	transform: translate(-50%, -50%) !important;
	border: none !important;
}

/* ============================================
   "Other" Choice Option Styling
   ============================================ */

/* Make the "Other" choice container use flexbox for inline layout */
.gform_wrapper.gform-theme--orbital .gchoice:has(input[value="gf_other_choice"]),
.gform_wrapper.gravity-theme .gchoice:has(input[value="gf_other_choice"]) {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-xs);
}

/* Hide the <br> that Gravity Forms adds between label and text input */
.gform_wrapper.gform-theme--orbital .gchoice:has(input[value="gf_other_choice"]) > br,
.gform_wrapper.gravity-theme .gchoice:has(input[value="gf_other_choice"]) > br {
	display: none;
}

/* Style the "Other" text input to appear inline */
.gform_wrapper.gform-theme--orbital .gchoice_other_control,
.gform_wrapper.gravity-theme .gchoice_other_control {
	flex: 1;
	min-width: 150px;
	max-width: 300px;
	margin-top: 0 !important;
}

/* ============================================
   Layout and Spacing
   ============================================ */

/* Field spacing */
.gform_wrapper.gform-theme--orbital .gfield,
.gform_wrapper.gravity-theme .gfield {
	margin-bottom: var(--space-md);
}

/* Multi-column layouts */
.gform_wrapper.gform-theme--orbital .gform_fields,
.gform_wrapper.gravity-theme .gform_fields {
	gap: var(--space-sm);
}

/* Section breaks */
.gform_wrapper.gform-theme--orbital .gsection,
.gform_wrapper.gravity-theme .gsection {
	border-bottom: 1px solid var(--color-border);
	margin-bottom: var(--space-xl);
	padding-bottom: var(--space-md);
}

.gform_wrapper.gform-theme--orbital .gsection_title,
.gform_wrapper.gravity-theme .gsection_title {
	color: var(--color-text-primary);
	font-size: var(--font-size-lead);
	font-weight: var(--font-weight-semibold);
	margin-bottom: var(--space-xs);
}

.gform_wrapper.gform-theme--orbital .gsection_description,
.gform_wrapper.gravity-theme .gsection_description {
	color: var(--color-text-primary);
	font-size: var(--font-size-body);
}

/* Footer alignment */
.gform_wrapper.gform-theme--orbital .gform_footer,
.gform_wrapper.gravity-theme .gform_footer {
	margin-top: var(--space-md);
	padding-top: var(--space-sm);
}

/* ============================================
   File Upload
   ============================================ */

.gform_wrapper.gform-theme--orbital .gform_drop_area,
.gform_wrapper.gravity-theme .gform_drop_area {
	background-color: var(--color-bg-secondary);
	border: 2px dashed var(--color-border);
	border-radius: var(--radius-card);
	padding: var(--space-xl);
	text-align: center;
	transition: border-color var(--transition-base), background-color var(--transition-base);
}

.gform_wrapper.gform-theme--orbital .gform_drop_area:hover,
.gform_wrapper.gravity-theme .gform_drop_area:hover {
	border-color: var(--color-primary);
}

/* Override Orbital's upload icon color (uses gform-icons-orbital font via ::before) */
.gform_wrapper.gform-theme--orbital .gform_drop_area::before {
	color: var(--color-primary) !important;
}

.gform_wrapper.gform-theme--orbital .gform_drop_area .gform_drop_instructions,
.gform_wrapper.gravity-theme .gform_drop_area .gform_drop_instructions {
	color: var(--color-text-primary);
	font-size: var(--font-size-body);
}

.gform_wrapper.gform-theme--orbital .gform_drop_area .button,
.gform_wrapper.gform-theme--orbital .gform_drop_area .gform_button_select_files,
.gform_wrapper.gform-theme--orbital .gform-theme-button--control,
.gform_wrapper.gravity-theme .gform_drop_area .button {
	background: var(--btn-primary-bg) !important;
	border-color: var(--btn-primary-border-color) !important;
	border-radius: var(--radius-button) !important;
	border-style: var(--btn-primary-border-style) !important;
	border-width: var(--btn-primary-border-width) !important;
	color: var(--btn-primary-text-color) !important;
	cursor: pointer;
	font-family: var(--font-family-body);
	font-size: var(--font-size-small);
	font-weight: var(--font-weight-medium);
	margin-top: var(--space-sm);
	padding: var(--space-xs) var(--space-md) !important;
	transition: background var(--transition-base), color var(--transition-base), border-color var(--transition-base);
}

/* File upload button hover state */
.gform_wrapper.gform-theme--orbital .gform_drop_area .button:hover,
.gform_wrapper.gform-theme--orbital .gform_drop_area .button:focus,
.gform_wrapper.gform-theme--orbital .gform_drop_area .gform_button_select_files:hover,
.gform_wrapper.gform-theme--orbital .gform_drop_area .gform_button_select_files:focus,
.gform_wrapper.gform-theme--orbital .gform-theme-button--control:hover,
.gform_wrapper.gform-theme--orbital .gform-theme-button--control:focus,
.gform_wrapper.gravity-theme .gform_drop_area .button:hover,
.gform_wrapper.gravity-theme .gform_drop_area .button:focus {
	background: var(--btn-primary-hover-bg) !important;
	border-color: var(--btn-primary-hover-border-color) !important;
	color: var(--btn-primary-hover-text-color) !important;
}

/* ============================================
   Progress Bar (Multi-page Forms)
   ============================================ */

.gform_wrapper.gform-theme--orbital .gf_progressbar,
.gform_wrapper.gravity-theme .gf_progressbar {
	background-color: var(--color-bg-secondary);
	border-radius: var(--radius-full);
	height: 8px;
	margin-bottom: var(--space-lg);
	overflow: hidden;
}

.gform_wrapper.gform-theme--orbital .gf_progressbar_percentage,
.gform_wrapper.gravity-theme .gf_progressbar_percentage {
	background: var(--btn-primary-bg);
	border-radius: var(--radius-full);
	height: 100%;
	transition: width var(--transition-base);
}

/* ============================================
   Confirmation Message
   ============================================ */

.gform_wrapper.gform-theme--orbital .gform_confirmation_message,
.gform_wrapper.gravity-theme .gform_confirmation_message {
	background-color: var(--color-success-bg);
	border: 1px solid var(--color-success);
	border-radius: var(--radius-card);
	color: var(--color-text-primary);
	padding: var(--space-lg);
}

/* ============================================
   Required Message
   ============================================ */

.gform_required_legend {
	margin-bottom: 2em;
	font-size: var(--font-size-small);
	font-style: italic;
}

/* ============================================
   Accessibility Enhancements
   ============================================ */

/* Screen reader text */
.gform_wrapper.gform-theme--orbital .gfield_visibility_hidden,
.gform_wrapper.gravity-theme .gfield_visibility_hidden {
	clip-path: inset(50%);
	height: 1px;
	overflow: hidden;
	position: absolute;
	width: 1px;
}

/* High contrast mode */
@media (prefers-contrast: more) {
	.gform_wrapper.gform-theme--orbital input:not([type="radio"], [type="checkbox"], [type="submit"], [type="button"]),
	.gform_wrapper.gform-theme--orbital select,
	.gform_wrapper.gform-theme--orbital textarea,
	.gform_wrapper.gravity-theme input:not([type="radio"], [type="checkbox"], [type="submit"], [type="button"]),
	.gform_wrapper.gravity-theme select,
	.gform_wrapper.gravity-theme textarea {
		border-width: 2px;
	}
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
	.gform_wrapper.gform-theme--orbital input,
	.gform_wrapper.gform-theme--orbital select,
	.gform_wrapper.gform-theme--orbital textarea,
	.gform_wrapper.gform-theme--orbital button,
	.gform_wrapper.gform-theme--orbital .gf_progressbar_percentage,
	.gform_wrapper.gravity-theme input,
	.gform_wrapper.gravity-theme select,
	.gform_wrapper.gravity-theme textarea,
	.gform_wrapper.gravity-theme button,
	.gform_wrapper.gravity-theme .gf_progressbar_percentage {
		transition: none;
	}
}

/* ============================================
   Address Field Layout Fixes
   ============================================ */

/*
 * Fix Country dropdown being too narrow in address fields.
 * Gravity Forms address fields use a grid layout that constrains
 * the country dropdown. This ensures the country select is properly
 * sized to display full country names while maintaining the
 * side-by-side layout with other fields like ZIP code.
 */

/* Country select dropdown - ensure adequate width for country names */
.gform_wrapper.gform-theme--orbital .ginput_container_address .ginput_address_country select,
.gform_wrapper.gravity-theme .ginput_container_address .ginput_address_country select {
	width: 100%;
	min-width: 180px;
}

/* Country field container - allow it to grow to fit content */
.gform_wrapper.gform-theme--orbital .ginput_container_address .ginput_address_country,
.gform_wrapper.gravity-theme .ginput_container_address .ginput_address_country {
	flex: 1 1 auto;
	min-width: 180px;
}

/* ============================================
   Responsive Adjustments
   ============================================ */

@media (width <= 768px) {
	.gform_wrapper.gform-theme--orbital .gform_footer input[type="submit"],
	.gform_wrapper.gform-theme--orbital .gform_page_footer input[type="submit"],
	.gform_wrapper.gravity-theme .gform_footer input[type="submit"],
	.gform_wrapper.gravity-theme .gform_page_footer input[type="submit"] {
		width: 100%;
	}

	.gform_wrapper.gform-theme--orbital .gform_page_footer,
	.gform_wrapper.gravity-theme .gform_page_footer {
		flex-direction: column;
		gap: var(--space-sm);
	}

	.gform_wrapper.gform-theme--orbital .gform_page_footer .gform_previous_button,
	.gform_wrapper.gform-theme--orbital .gform_page_footer .gform_next_button,
	.gform_wrapper.gravity-theme .gform_page_footer .gform_previous_button,
	.gform_wrapper.gravity-theme .gform_page_footer .gform_next_button {
		width: 100%;
	}
}
