/* ────────────────────────────────────────────────────────────
   03-forms-gravity.css
   Global Gravity Forms field styles — scoped to .gform_wrapper
   so nothing bleeds outside the form context.

   This file covers the form skeleton: inputs, labels, choices,
   validation, and the submit button. Pattern-specific layouts
   (text-form-left, text-form-right, etc.) override on top.

   Load order: 03-* composite tier — auto-loaded by functions.php
   ──────────────────────────────────────────────────────────── */


/* ══════════════════════════════════════════════════════════════
   WRAPPER & HEADING
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper {
	font-family: var(--font-body);
	color: var(--color-text-body);
}

.gform_wrapper .gform_heading {
	margin-bottom: var(--spacing-lg);
}

.gform_wrapper .gform_title {
	font-family: var(--font-primary);
	font-size: var(--text-heading-lg);
	font-weight: var(--font-weight-bold);
	line-height: var(--line-height-tight);
	color: var(--color-text-heading);
	margin-bottom: var(--spacing-xs);
}

.gform_wrapper .gform_description {
	font-size: var(--text-body-base);
	line-height: var(--line-height-loose);
	color: var(--color-text-body);
	margin-bottom: 0;
}


/* ══════════════════════════════════════════════════════════════
   FIELD WRAPPER
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .gfield {
	margin-bottom: var(--spacing-xs);
}

.gform_wrapper .gfield:last-child {
	margin-bottom: 0;
}


/* ══════════════════════════════════════════════════════════════
   LABELS
   ══════════════════════════════════════════════════════════════ */

/* Primary field label — fieldsets use <legend>, singles use <label> */
.gform_wrapper .gfield_label,
.gform_wrapper legend.gfield_label {
	display: block;
	font-family: var(--font-primary);
	font-size: var(--text-label);
	font-weight: var(--font-weight-medium);
	color: var(--color-text-body);
	letter-spacing: 0.07em;
	line-height: var(--line-height-snug);
	margin-bottom: var(--spacing-xs);
	padding: 0;
}

/* Sub-labels: "First" / "Last" beneath the name inputs */
.gform_wrapper .gform-field-label--type-sub {
	display: block;
	font-family: var(--font-body);
	font-size: var(--text-label);
	font-weight: var(--font-weight-regular);
	color: var(--color-gray-medium);
	text-transform: none;
	letter-spacing: 0;
	margin-top: var(--spacing-xxs);
	margin-bottom: 0;
	line-height: var(--line-height-snug);
}

/* Required indicator */
.gform_wrapper .gfield_required {
	color: var(--color-red-primary);
	font-style: normal;
	margin-left: var(--spacing-xxs);
}

.gform_wrapper .gfield_required.gfield_required_text {
	font-size: var(--text-label);
	font-weight: var(--font-weight-regular);
	font-style: italic;
	text-transform: none;
	letter-spacing: 0;
	vertical-align: baseline;
}


/* ══════════════════════════════════════════════════════════════
   SHARED INPUT BASE
   Covers: text, email, tel, number, url, datepicker
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .ginput_container input[type="text"],
.gform_wrapper .ginput_container input[type="email"],
.gform_wrapper .ginput_container input[type="tel"],
.gform_wrapper .ginput_container input[type="number"],
.gform_wrapper .ginput_container input[type="url"],
.gform_wrapper .ginput_container input.datepicker {
	display: block;
	width: 100%;
	min-height: 48px;
	padding: var(--spacing-xs) var(--spacing-sm);
	font-family: var(--font-body);
	font-size: var(--text-body-base);
	font-weight: var(--font-weight-regular);
	line-height: var(--line-height-snug);
	color: var(--color-text-body);
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-stroke);
	border-radius: var(--radius-none);
	outline: none;
	appearance: none;
	-webkit-appearance: none;
	transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.gform_wrapper .ginput_container input[type="text"]:hover:not(:focus),
.gform_wrapper .ginput_container input[type="email"]:hover:not(:focus),
.gform_wrapper .ginput_container input[type="tel"]:hover:not(:focus),
.gform_wrapper .ginput_container input[type="number"]:hover:not(:focus),
.gform_wrapper .ginput_container input[type="url"]:hover:not(:focus),
.gform_wrapper .ginput_container input.datepicker:hover:not(:focus) {
	border-color: var(--color-blue-primary);
}

.gform_wrapper .ginput_container input[type="text"]:focus,
.gform_wrapper .ginput_container input[type="email"]:focus,
.gform_wrapper .ginput_container input[type="tel"]:focus,
.gform_wrapper .ginput_container input[type="number"]:focus,
.gform_wrapper .ginput_container input[type="url"]:focus,
.gform_wrapper .ginput_container input.datepicker:focus {
	border-color: var(--color-blue-primary);
	box-shadow: 0 0 0 3px rgba(0, 153, 204, 0.15);
}


/* ══════════════════════════════════════════════════════════════
   TEXTAREA
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .ginput_container textarea {
	display: block;
	width: 100%;
	min-height: 160px;
	padding: var(--spacing-xs) var(--spacing-sm);
	font-family: var(--font-body);
	font-size: var(--text-body-base);
	font-weight: var(--font-weight-regular);
	line-height: var(--line-height-loose);
	color: var(--color-text-body);
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-stroke);
	border-radius: var(--radius-none);
	outline: none;
	resize: vertical;
	transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.gform_wrapper .ginput_container textarea:hover:not(:focus) {
	border-color: var(--color-blue-primary);
}

.gform_wrapper .ginput_container textarea:focus {
	border-color: var(--color-blue-primary);
	box-shadow: 0 0 0 3px rgba(0, 153, 204, 0.15);
}


/* ══════════════════════════════════════════════════════════════
   SELECT / DROPDOWN
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .ginput_container select {
	display: block;
	width: 100%;
	min-height: 48px;
	padding: var(--spacing-xs) var(--spacing-xl) var(--spacing-xs) var(--spacing-sm);
	font-family: var(--font-body);
	font-size: var(--text-body-base);
	font-weight: var(--font-weight-regular);
	line-height: var(--line-height-snug);
	color: var(--color-text-body);
	background-color: var(--color-white);
	/* Chevron arrow */
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><path d='M4 6l4 4 4-4' stroke='%23374151' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
	background-repeat: no-repeat;
	background-position: right var(--spacing-sm) center;
	border: 1px solid var(--color-gray-stroke);
	border-radius: var(--radius-none);
	outline: none;
	appearance: none;
	-webkit-appearance: none;
	cursor: pointer;
	transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.gform_wrapper .ginput_container select:hover:not(:focus) {
	border-color: var(--color-blue-primary);
}

.gform_wrapper .ginput_container select:focus {
	border-color: var(--color-blue-primary);
	box-shadow: 0 0 0 3px rgba(0, 153, 204, 0.15);
}


/* ══════════════════════════════════════════════════════════════
   PLACEHOLDER TEXT
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper ::placeholder {
	color: var(--color-gray-stroke);
	font-style: italic;
	opacity: 1;
}


/* ══════════════════════════════════════════════════════════════
   CHECKBOX & RADIO — shared choice layout
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .gfield_checkbox,
.gform_wrapper .gfield_radio {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xs);
	margin: 0;
	padding: 0;
	list-style: none;
}

.gform_wrapper .gchoice {
	display: flex;
	align-items: center;
	gap: 10px;
}

/* Inline choice label (the text beside checkbox / radio) */
.gform_wrapper .gform-field-label--type-inline {
	font-family: var(--font-body);
	font-size: var(--text-body-base);
	font-weight: var(--font-weight-regular);
	color: var(--color-text-body);
	text-transform: none;
	letter-spacing: 0;
	line-height: var(--line-height-snug);
	margin-bottom: 0;
	cursor: pointer;
}


/* ══════════════════════════════════════════════════════════════
   CUSTOM CHECKBOXES
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .gfield-choice-input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	width: 20px;
	height: 20px;
	min-width: 20px;
	flex-shrink: 0;
	margin: 0;
	border: 2px solid var(--color-gray-stroke);
	border-radius: var(--radius-none);
	background-color: var(--color-white);
	cursor: pointer;
	position: relative;
	transition: border-color 0.15s ease-in-out, background-color 0.15s ease-in-out;
}

.gform_wrapper .gfield-choice-input[type="checkbox"]:hover:not(:checked) {
	border-color: var(--color-blue-primary);
}

.gform_wrapper .gfield-choice-input[type="checkbox"]:checked {
	background-color: var(--color-blue-dark);
	border-color: var(--color-blue-dark);
}

/* Checkmark drawn with border trick — no image dependency */
.gform_wrapper .gfield-choice-input[type="checkbox"]:checked::after {
	content: '';
	position: absolute;
	left: 5px;
	top: 2px;
	width: 6px;
	height: 10px;
	border-right: 2px solid var(--color-white);
	border-bottom: 2px solid var(--color-white);
	transform: rotate(45deg);
}

.gform_wrapper .gfield-choice-input[type="checkbox"]:focus-visible {
	outline: 2px solid var(--color-blue-primary);
	outline-offset: 2px;
}


/* ══════════════════════════════════════════════════════════════
   CUSTOM RADIO BUTTONS
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .gfield-choice-input[type="radio"] {
	appearance: none;
	-webkit-appearance: none;
	width: 20px;
	height: 20px;
	min-width: 20px;
	flex-shrink: 0;
	margin: 0;
	border: 2px solid var(--color-gray-stroke);
	border-radius: 50%;
	background-color: var(--color-white);
	cursor: pointer;
	position: relative;
	transition: border-color 0.15s ease-in-out, background-color 0.15s ease-in-out;
}

.gform_wrapper .gfield-choice-input[type="radio"]:hover:not(:checked) {
	border-color: var(--color-blue-primary);
}

.gform_wrapper .gfield-choice-input[type="radio"]:checked {
	border-color: var(--color-blue-dark);
	background-color: var(--color-white);
}

/* Filled dot */
.gform_wrapper .gfield-choice-input[type="radio"]:checked::after {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background-color: var(--color-blue-dark);
}

.gform_wrapper .gfield-choice-input[type="radio"]:focus-visible {
	outline: 2px solid var(--color-blue-primary);
	outline-offset: 2px;
}


/* ══════════════════════════════════════════════════════════════
   NAME FIELD (complex multi-column)
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .ginput_container--name.gform-grid-row {
	display: flex;
	gap: var(--spacing-md);
}

.gform_wrapper .ginput_container--name .gform-grid-col {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
}

/* Sub-label sits below its input (DOM order: input → label) */
.gform_wrapper .ginput_container--name .gform-grid-col input {
	order: 1;
}

.gform_wrapper .ginput_container--name .gform-grid-col .gform-field-label--type-sub {
	order: 2;
}

@media (max-width: 600px) {
	.gform_wrapper .ginput_container--name.gform-grid-row {
		flex-direction: column;
		gap: var(--spacing-sm);
	}
}


/* ══════════════════════════════════════════════════════════════
   CONSENT FIELD
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .ginput_container_consent {
	display: flex;
	align-items: flex-start;
	gap: 10px;
}

/* Nudge checkbox to sit flush with the first line of consent text */
.gform_wrapper .ginput_container_consent .gfield-choice-input[type="checkbox"] {
	margin-top: 2px;
}

.gform_wrapper .gfield_consent_label {
	font-family: var(--font-body);
	font-size: var(--text-body-sm);
	font-weight: var(--font-weight-regular);
	color: var(--color-gray-medium);
	text-transform: none;
	letter-spacing: 0;
	line-height: var(--line-height-loose);
	margin-bottom: 0;
	cursor: pointer;
}


/* ══════════════════════════════════════════════════════════════
   VALIDATION & ERROR STATES
   ══════════════════════════════════════════════════════════════ */

/* Error label */
.gform_wrapper .gfield_error .gfield_label,
.gform_wrapper .gfield_error legend.gfield_label {
	color: var(--color-red-primary);
}

/* Error border on inputs */
.gform_wrapper .gfield_error .ginput_container input[type="text"],
.gform_wrapper .gfield_error .ginput_container input[type="email"],
.gform_wrapper .gfield_error .ginput_container input[type="tel"],
.gform_wrapper .gfield_error .ginput_container input[type="number"],
.gform_wrapper .gfield_error .ginput_container input[type="url"],
.gform_wrapper .gfield_error .ginput_container input.datepicker,
.gform_wrapper .gfield_error .ginput_container textarea,
.gform_wrapper .gfield_error .ginput_container select {
	border-color: var(--color-red-primary);
}

.gform_wrapper .gfield_error .ginput_container input:focus,
.gform_wrapper .gfield_error .ginput_container textarea:focus,
.gform_wrapper .gfield_error .ginput_container select:focus {
	box-shadow: 0 0 0 3px rgba(163, 52, 57, 0.15);
}

/* Inline validation message */
.gform_wrapper .validation_message,
.gform_wrapper .gfield_validation_message {
	display: block;
	font-size: var(--text-body-sm);
	color: var(--color-red-primary);
	margin-top: var(--spacing-xxs);
	line-height: var(--line-height-snug);
}

/* Top-of-form validation summary */
.gform_wrapper .gform_validation_errors,
.gform_wrapper .validation_error {
	padding: var(--spacing-sm) var(--spacing-md);
	margin-bottom: var(--spacing-md);
	border-left: 4px solid var(--color-red-primary);
	background-color: rgba(163, 52, 57, 0.06);
	font-family: var(--font-body);
	font-size: var(--text-body-sm);
	font-weight: var(--font-weight-medium);
	color: var(--color-red-primary);
	line-height: var(--line-height-snug);
}

.gform_wrapper .gform_validation_errors h2 {
	font-size: var(--text-body-sm);
	font-weight: var(--font-weight-medium);
	color: var(--color-red-primary);
	margin: 0;
}


/* ══════════════════════════════════════════════════════════════
   FORM FOOTER & SUBMIT BUTTON
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .gform_footer,
.gform_wrapper .gform-footer {
	margin-top: var(--spacing-lg);
}

.gform_wrapper .gform_button,
.gform_wrapper input[type="submit"].gform_button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: var(--spacing-xs) var(--spacing-xl);
	font-family: var(--font-primary);
	font-size: var(--text-body-base);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-snug);
	color: var(--color-white);
	background-color: var(--color-orange-primary);
	border: 0;
	border-radius: var(--radius-none);
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	text-decoration: none;
	transition: background-color 0.2s ease-in-out;
}

.gform_wrapper .gform_button:hover,
.gform_wrapper input[type="submit"].gform_button:hover {
	background-color: #B74A1E;
}

.gform_wrapper .gform_button:active,
.gform_wrapper input[type="submit"].gform_button:active {
	background-color: #9A3F19;
}

.gform_wrapper .gform_button:focus-visible,
.gform_wrapper input[type="submit"].gform_button:focus-visible {
	outline: 2px solid var(--color-blue-primary);
	outline-offset: 2px;
}

.gform_wrapper .gform_button[disabled],
.gform_wrapper input[type="submit"].gform_button[disabled] {
	opacity: 0.5;
	cursor: not-allowed;
	pointer-events: none;
}


/* ══════════════════════════════════════════════════════════════
   CONFIRMATION MESSAGE
   ══════════════════════════════════════════════════════════════ */

.gform_wrapper .gform_confirmation_wrapper,
.gform_confirmation_wrapper {
	padding: var(--spacing-md) var(--spacing-lg);
	border-left: 4px solid var(--color-green-primary);
	background-color: rgba(0, 132, 61, 0.06);
	font-family: var(--font-body);
	font-size: var(--text-body-base);
	line-height: var(--line-height-loose);
	color: var(--color-text-body);
}
