/**
 * Gecko Fun Forms - Structural + Base Styles
 *
 * Uses WordPress theme.json CSS custom properties for colors/spacing.
 * Override these styles in your theme CSS if needed.
 */

/* ==========================================================================
   CSS Custom Properties (Defaults - override in theme)
   ========================================================================== */

:root {
	--gf-btn-bg: var(--wp--preset--color--charcoal, #282828);
	--gf-btn-bg-hover: var(--wp--preset--color--golden-sun, #dbaa36);
	--gf-btn-bg-active: var(--wp--preset--color--golden-sun, #dbaa36);
	--gf-btn-border: var(--wp--preset--color--charcoal, #282828);
	--gf-btn-border-hover: var(--wp--preset--color--golden-sun, #dbaa36);
	--gf-btn-text: var(--wp--preset--color--ivory-birch, #ffffff);
	--gf-btn-text-active: var(--wp--preset--color--contrast, #171717);
	--gf-btn-radius: 0;
	--gf-btn-padding: var(--wp--preset--spacing--50, 1.5rem)
		var(--wp--preset--spacing--60, 2rem);
	--gf-btn-gap: var(--wp--preset--spacing--30, 0.5rem);
	--gf-btn-font-family: var(--wp--preset--font-family--figtree, sans-serif);
	--gf-btn-font-size: var(--wp--preset--font-size--base, 1.125rem);
	--gf-btn-font-weight: 600;
	--gf-btn-letter-spacing: 1px;
	--gf-btn-text-transform: uppercase;

	--gf-input-padding: var(--wp--preset--spacing--40, 1rem);
	--gf-input-font-size: var(--wp--preset--font-size--base, 1.125rem);

	--gf-label-font-family: var(--wp--preset--font-family--lust-text, serif);
}

/* ==========================================================================
   Button Group Layout
   ========================================================================== */

/* Remove margins/padding from the field wrapper itself */
.gfield.gf-fun-buttons {
	padding: 0 !important;
	margin: 0 !important;
}

/* Remove any margins from inner containers */
.gf-fun-buttons .ginput_container,
.gf-fun-buttons .ginput_container_radio,
.gf-fun-buttons .ginput_container_checkbox {
	margin: 0 !important;
	padding: 0 !important;
}

/* Target both the ul and container - use !important to override GF defaults */
.gf-fun-buttons .gfield_radio,
.gf-fun-buttons .gfield_checkbox,
.gf-fun-buttons ul.gfield_radio,
.gf-fun-buttons ul.gfield_checkbox {
	display: grid !important;
	grid-template-columns: repeat(var(--gf-btn-columns, 3), 1fr) !important;
	gap: 1rem !important;
	list-style: none !important;
	padding: 0 !important;
	margin: 0 !important;
	width: 100% !important;
}

.gf-fun-buttons .gchoice,
.gf-fun-buttons li.gchoice {
	min-width: 0;
	position: relative;
	display: flex !important;
	margin: 0 !important;
	padding: 0 !important;
}

/* Make labels fill height and center content */
.gf-fun-buttons .gchoice label {
	margin: 0 !important;
	max-width: 100% !important;
	flex: 1;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
}

/* ==========================================================================
   Hidden Native Inputs (Accessible)
   ========================================================================== */

.gf-fun-buttons input[type="radio"],
.gf-fun-buttons input[type="checkbox"] {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ==========================================================================
   Button Labels - Default State
   ========================================================================== */

.gform_wrapper.gf-has-fun-buttons .gf-fun-buttons label {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	padding: var(--gf-btn-padding);
	cursor: pointer;
	text-align: center;
	user-select: none;

	/* Typography - !important needed to override GF's hardcoded 15px on radio/checkbox labels */
	font-family: var(--gf-btn-font-family) !important;
	font-size: var(--gf-btn-font-size) !important;
	font-weight: var(--gf-btn-font-weight) !important;
	text-transform: var(--gf-btn-text-transform);
	letter-spacing: var(--gf-btn-letter-spacing);

	/* Visual */
	background-color: var(--gf-btn-bg);
	border: 2px solid var(--gf-btn-border);
	border-radius: var(--gf-btn-radius);
	color: var(--gf-btn-text);

	/* Transitions */
	transition:
		background-color 0.2s ease,
		border-color 0.2s ease,
		color 0.2s ease,
		transform 0.1s ease,
		box-shadow 0.2s ease;
}

/* ==========================================================================
   Button Labels - Hover State
   ========================================================================== */

.gform_wrapper.gf-has-fun-buttons .gf-fun-buttons label:hover {
	background-color: var(--gf-btn-bg-hover);
	border-color: var(--gf-btn-border-hover);
	color: var(--gf-btn-text-active);
}

/* ==========================================================================
   Button Labels - Focus State (Accessibility)
   ========================================================================== */

.gform_wrapper.gf-has-fun-buttons .gf-fun-buttons input:focus + label,
.gform_wrapper.gf-has-fun-buttons .gf-fun-buttons input:focus-visible + label,
.gform_wrapper.gf-has-fun-buttons .gf-fun-buttons label:focus {
	outline: 2px solid var(--gf-btn-border);
	outline-offset: 2px;
}

.gform_wrapper.gf-has-fun-buttons .gf-fun-buttons label:focus-visible {
	outline: 3px solid var(--wp--preset--color--golden-sun, #dbaa36);
	outline-offset: 2px;
}

/* Remove default focus outline since we're styling it */
.gform_wrapper.gf-has-fun-buttons
	.gf-fun-buttons
	label:focus:not(:focus-visible) {
	outline: none;
}

/* ==========================================================================
   Button Labels - Active/Pressed State
   ========================================================================== */

.gform_wrapper.gf-has-fun-buttons .gf-fun-buttons label:active {
	transform: scale(0.98);
	background-color: var(--gf-btn-bg-hover);
}

/* ==========================================================================
   Button Labels - Selected State
   ========================================================================== */

.gform_wrapper.gf-has-fun-buttons .gf-fun-buttons label.is-selected {
	background-color: var(--gf-btn-bg-active);
	border-color: var(--gf-btn-bg-active);
	color: var(--gf-btn-text-active);
}

.gform_wrapper.gf-has-fun-buttons .gf-fun-buttons label.is-selected:hover {
	background-color: var(--gf-btn-bg-hover);
	border-color: var(--gf-btn-border-hover);
	color: var(--gf-btn-text-active);
}

.gform_wrapper.gf-has-fun-buttons
	.gf-fun-buttons
	label.is-selected:focus-visible {
	outline: 3px solid var(--wp--preset--color--golden-sun, #dbaa36);
	outline-offset: 2px;
}

/* ==========================================================================
   Conditional Reveal
   ========================================================================== */

.gf-fun-buttons .gf-reveal-target {
	overflow: hidden;
	max-height: 0;
	opacity: 0;
	transition:
		max-height 0.3s ease,
		opacity 0.3s ease,
		margin 0.3s ease;
	margin-top: 0;
}

.gf-fun-buttons .gf-reveal-target.is-visible {
	max-height: 500px;
	opacity: 1;
	margin-top: 1rem;
}

/* ==========================================================================
   Inline Dropdown
   ========================================================================== */

/* Hide the original select field when using inline dropdown */
.gf-inline-dropdown.gf-visually-hidden {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Button with dropdown indicator */
.gf-fun-buttons label.has-dropdown {
	position: relative;
	padding-right: 2.5rem;
	flex-wrap: wrap !important;
}

.gf-fun-buttons label.has-dropdown::after {
	content: "";
	position: absolute;
	right: 1rem;
	top: 50%;
	transform: translateY(-50%);
	width: 0;
	height: 0;
	border-left: 5px solid transparent;
	border-right: 5px solid transparent;
	border-top: 5px solid currentColor;
	transition: transform 0.2s ease;
}

.gf-fun-buttons label.has-dropdown.is-dropdown-open::after {
	transform: translateY(-50%) rotate(180deg);
}

/* When dropdown is open, maintain selected state */
.gf-fun-buttons label.has-dropdown.is-dropdown-open {
	background-color: var(--gf-btn-bg-active);
	border-color: var(--gf-btn-bg-active);
	color: var(--gf-btn-text-active);
}

/* ==========================================================================
   Dropdown Menu
   ========================================================================== */

.gf-dropdown-menu {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	z-index: 100;
	margin-top: 4px;
	max-height: 0;
	overflow: hidden;
	opacity: 0;

	/* Visual - uses theme colors */
	background-color: var(--wp--preset--color--ivory-birch, #f4f0e6);
	border: 2px solid var(--gf-btn-border);
	border-radius: var(--gf-btn-radius);
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);

	/* Transitions */
	transition:
		max-height 0.2s ease,
		opacity 0.15s ease;
}

.gf-dropdown-menu.is-dropdown-open {
	max-height: 300px;
	overflow-y: auto;
	opacity: 1;
}

/* ==========================================================================
   Dropdown Items
   ========================================================================== */

.gf-dropdown-item {
	padding: 1.25rem 1.5rem;
	cursor: pointer;
	font-family: var(--gf-btn-font-family);
	font-size: var(--wp--preset--font-size--medium, 1.65rem) !important;
	font-weight: 500;
	color: var(--wp--preset--color--charcoal, #282828) !important;
	background-color: transparent;
	border-bottom: 1px solid var(--wp--preset--color--ivory-tan, #e9e2cf);
	transition:
		background-color 0.15s ease,
		color 0.15s ease;
}

.gf-dropdown-item:last-child {
	border-bottom: none;
}

.gf-dropdown-item:hover {
	background-color: var(--wp--preset--color--charcoal, #282828);
	color: var(--wp--preset--color--ivory-birch, #f4f0e6) !important;
}

.gf-dropdown-item:focus {
	background-color: var(--wp--preset--color--charcoal, #282828);
	color: var(--wp--preset--color--ivory-birch, #f4f0e6) !important;
	outline: none;
}

.gf-dropdown-item:focus-visible {
	outline: 3px solid var(--wp--preset--color--golden-sun, #dbaa36);
	outline-offset: -3px;
}

.gf-dropdown-item.is-selected:focus {
	background-color: var(--wp--preset--color--charcoal, #282828);
	color: var(--wp--preset--color--ivory-birch, #f4f0e6) !important;
}

.gf-dropdown-item.is-selected {
	font-weight: 700;
	background-color: var(--wp--preset--color--ivory-tan, #e9e2cf);
}

.gf-dropdown-item.is-selected:hover {
	background-color: var(--wp--preset--color--charcoal, #282828);
	color: var(--wp--preset--color--ivory-birch, #f4f0e6) !important;
}

/* ==========================================================================
   Selection Display (shows chosen value in button)
   ========================================================================== */

.gf-dropdown-selection {
	display: block !important;
	flex-basis: 100% !important;
	width: 100% !important;
	margin-top: 0.5rem !important;
	padding-top: 0.5rem !important;
	border-top: 1px solid currentColor !important;
	font-weight: 500 !important;
	font-size: 1em !important;
	text-align: center !important;
}

/* ==========================================================================
   Validation Error State
   ========================================================================== */

.gf-fun-buttons label.gf-validation-error {
	border-color: #c02b0a !important;
	animation: gf-shake 0.4s ease;
}

.gf-dropdown-error {
	color: #c02b0a;
	font-size: 0.875rem;
	margin-top: 0.5rem;
	padding: 0.5rem;
	background: rgba(192, 43, 10, 0.1);
	border-radius: 4px;
}

@keyframes gf-shake {
	0%,
	100% {
		transform: translateX(0);
	}
	20%,
	60% {
		transform: translateX(-5px);
	}
	40%,
	80% {
		transform: translateX(5px);
	}
}

/* ==========================================================================
   Disabled State
   ========================================================================== */

.gf-fun-buttons label.is-disabled,
.gf-fun-buttons input:disabled + label {
	opacity: 0.5;
	cursor: not-allowed;
	pointer-events: none;
}

/* ==========================================================================
   Loading State
   ========================================================================== */

.gf-fun-buttons label.is-loading {
	pointer-events: none;
	position: relative;
}

.gf-fun-buttons label.is-loading::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 1.25rem;
	height: 1.25rem;
	margin: -0.625rem 0 0 -0.625rem;
	border: 2px solid currentColor;
	border-top-color: transparent;
	border-radius: 50%;
	animation: gf-spin 0.8s linear infinite;
}

@keyframes gf-spin {
	to {
		transform: rotate(360deg);
	}
}

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

@media (max-width: 768px) {
	.gf-fun-buttons .gfield_radio,
	.gf-fun-buttons .gfield_checkbox,
	.gf-fun-buttons ul.gfield_radio,
	.gf-fun-buttons ul.gfield_checkbox {
		grid-template-columns: 1fr !important;
	}

	.gf-fun-buttons label {
		font-size: calc(var(--gf-btn-font-size) * 0.9);
	}
}

/* ==========================================================================
   Fun Form Input Styles
   Applied to forms containing fun-buttons via .gf-has-fun-buttons
   ========================================================================== */

/* --- Field Spacing --- */
.gform_wrapper.gf-has-fun-buttons .gfield {
	margin-bottom: var(--wp--preset--spacing--60, 2rem) !important;
}

/* --- Text Inputs --- */
.gform_wrapper.gf-has-fun-buttons .gfield input[type="text"],
.gform_wrapper.gf-has-fun-buttons .gfield input[type="email"],
.gform_wrapper.gf-has-fun-buttons .gfield input[type="tel"],
.gform_wrapper.gf-has-fun-buttons .gfield input[type="url"],
.gform_wrapper.gf-has-fun-buttons .gfield input[type="number"],
.gform_wrapper.gf-has-fun-buttons .gfield input[type="password"] {
	background-color: var(--gf-btn-bg);
	border: 2px solid var(--gf-btn-border);
	border-radius: var(--gf-btn-radius);
	color: var(--gf-btn-text);
	padding: var(--gf-input-padding);
	font-family: var(--gf-btn-font-family);
	font-size: var(--gf-input-font-size);
	font-weight: var(--gf-btn-font-weight);
	transition:
		outline-color 0.2s ease,
		outline-offset 0.2s ease;
}

/* --- Textareas --- */
.gform_wrapper.gf-has-fun-buttons .gfield textarea {
	background-color: var(--gf-btn-bg);
	border: 2px solid var(--gf-btn-border);
	border-radius: var(--gf-btn-radius);
	color: var(--gf-btn-text);
	padding: var(--gf-input-padding);
	font-family: var(--gf-btn-font-family);
	font-size: var(--gf-input-font-size);
	font-weight: var(--gf-btn-font-weight);
	transition:
		outline-color 0.2s ease,
		outline-offset 0.2s ease;
}

/* --- Select Dropdowns --- */
.gform_wrapper.gf-has-fun-buttons .gfield select {
	background-color: var(--gf-btn-bg);
	border: 2px solid var(--gf-btn-border);
	border-radius: var(--gf-btn-radius);
	color: var(--gf-btn-text);
	padding: var(--gf-input-padding);
	font-family: var(--gf-btn-font-family);
	font-size: var(--gf-input-font-size);
	font-weight: var(--gf-btn-font-weight);
	transition:
		outline-color 0.2s ease,
		outline-offset 0.2s ease;
}

/* --- Input Hover States --- */
.gform_wrapper.gf-has-fun-buttons .gfield input[type="text"]:hover,
.gform_wrapper.gf-has-fun-buttons .gfield input[type="email"]:hover,
.gform_wrapper.gf-has-fun-buttons .gfield input[type="tel"]:hover,
.gform_wrapper.gf-has-fun-buttons .gfield input[type="url"]:hover,
.gform_wrapper.gf-has-fun-buttons .gfield input[type="number"]:hover,
.gform_wrapper.gf-has-fun-buttons .gfield input[type="password"]:hover,
.gform_wrapper.gf-has-fun-buttons .gfield textarea:hover,
.gform_wrapper.gf-has-fun-buttons .gfield select:hover {
	outline: 2px solid var(--wp--preset--color--golden-sun, #dbaa36);
	outline-offset: 2px;
}

/* --- Input Focus States --- */
.gform_wrapper.gf-has-fun-buttons .gfield input[type="text"]:focus,
.gform_wrapper.gf-has-fun-buttons .gfield input[type="email"]:focus,
.gform_wrapper.gf-has-fun-buttons .gfield input[type="tel"]:focus,
.gform_wrapper.gf-has-fun-buttons .gfield input[type="url"]:focus,
.gform_wrapper.gf-has-fun-buttons .gfield input[type="number"]:focus,
.gform_wrapper.gf-has-fun-buttons .gfield input[type="password"]:focus,
.gform_wrapper.gf-has-fun-buttons .gfield textarea:focus,
.gform_wrapper.gf-has-fun-buttons .gfield select:focus {
	outline: 3px solid var(--wp--preset--color--golden-sun, #dbaa36);
	outline-offset: 2px;
}

/* --- Field Labels --- */
.gform_wrapper.gf-has-fun-buttons .gfield .gfield_label {
	display: block;
	margin: 0 0 var(--wp--preset--spacing--40) 0;
	font-family: var(--gf-label-font-family);
	font-size: var(--wp--preset--font-size--large);
}

/* --- Required Indicator --- */
.gform_wrapper.gravity-theme.gf-has-fun-buttons .gfield_required {
	font-family: var(--gf-label-font-family);
	font-size: var(--wp--preset--font-size--large);
}

/* --- Placeholders --- */
.gform_wrapper.gf-has-fun-buttons .gfield input::placeholder,
.gform_wrapper.gf-has-fun-buttons .gfield textarea::placeholder {
	/* TODO: Add placeholder styles */
}

/* --- Submit Button --- */
.gform_wrapper.gf-has-fun-buttons .gform_footer input[type="submit"],
.gform_wrapper.gf-has-fun-buttons .gform_footer button[type="submit"],
.gform_wrapper.gf-has-fun-buttons .gform_page_footer input[type="submit"],
.gform_wrapper.gf-has-fun-buttons .gform_page_footer button[type="submit"] {
	/* background-color: var(--gf-btn-bg); */
	background-color: var(--wp--preset--color--contrast, #171717);
	border: 2px solid var(--wp--preset--color--golden-sun, #dbaa36);
	border-radius: var(--gf-btn-radius);
	color: var(--gf-btn-text);
	padding: var(--gf-btn-padding);
	font-family: var(--gf-btn-font-family);
	font-size: var(--gf-btn-font-size);
	font-weight: var(--gf-btn-font-weight);
	text-transform: var(--gf-btn-text-transform);
	letter-spacing: var(--gf-btn-letter-spacing);
	cursor: pointer;
	transition:
		outline-color 0.2s ease,
		outline-offset 0.2s ease;
}

.gform_wrapper.gf-has-fun-buttons .gform_footer input[type="submit"]:hover,
.gform_wrapper.gf-has-fun-buttons .gform_footer button[type="submit"]:hover,
.gform_wrapper.gf-has-fun-buttons .gform_page_footer input[type="submit"]:hover,
.gform_wrapper.gf-has-fun-buttons
	.gform_page_footer
	button[type="submit"]:hover {
	outline: 2px solid var(--wp--preset--color--golden-sun, #dbaa36);
	outline-offset: 0px;
}
.gform_wrapper.gf-has-fun-buttons.gravity-theme .gform_validation_errors,
.gform_wrapper.gf-has-fun-buttons.gravity-theme .gfield_validation_message,
.gform_wrapper.gf-has-fun-buttons.gravity-theme .validation_message {
	background-color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--tart-red);
	color: var(--wp--preset--color--blushwood-pink);
}
.gform_wrapper.gf-has-fun-buttons.gravity-theme .gform_validation_errors * {
	color: var(--wp--preset--color--blushwood-pink);
}

.gform_wrapper.gf-has-fun-buttons .gform_footer input[type="submit"]:focus,
.gform_wrapper.gf-has-fun-buttons .gform_footer button[type="submit"]:focus,
.gform_wrapper.gf-has-fun-buttons .gform_page_footer input[type="submit"]:focus,
.gform_wrapper.gf-has-fun-buttons
	.gform_page_footer
	button[type="submit"]:focus {
	outline: 3px solid var(--wp--preset--color--golden-sun, #dbaa36);
	outline-offset: 0px;
}

/* ==========================================================================
   Print Styles
   ========================================================================== */

@media print {
	.gf-fun-buttons label {
		border: 1px solid #000 !important;
		background: transparent !important;
		color: #000 !important;
	}

	.gf-fun-buttons label.is-selected::before {
		content: "✓ ";
	}

	.gf-dropdown-menu {
		display: none !important;
	}
}
