/**
 * DSN Gravity Form widget — scoped styles.
 * Only applies inside the `.dsn-gf` wrapper, so other GF instances on the site stay untouched.
 * Visual tokens match the dashboard + login page rebuild (navy primary, soft gray fields, pill button).
 */

.dsn-gf {
	--dsn-gf-primary:        #1A4D8C;
	--dsn-gf-primary-hover:  #0E3163;
	--dsn-gf-field-bg:       #F3F4F6;
	--dsn-gf-field-bg-focus: #FFFFFF;
	--dsn-gf-text:           #0F1E37;
	--dsn-gf-text-muted:     #6B7280;
	--dsn-gf-label:          #1F2937;
	--dsn-gf-border:         #E5E7EB;
	--dsn-gf-border-focus:   var(--dsn-gf-primary);
	--dsn-gf-error:          #DC2626;
	--dsn-gf-success:        #2E7D32;
	--dsn-gf-radius:         10px;
	--dsn-gf-card-radius:    16px;
	--dsn-gf-shadow:         0 4px 24px rgba(15,30,55,0.06);

	color: var(--dsn-gf-text);
	font-family: inherit;
	max-width: 100%;
}

/* --- Presets --- */
.dsn-gf--card {
	background: #FFFFFF;
	border-radius: var(--dsn-gf-card-radius);
	box-shadow: var(--dsn-gf-shadow);
	padding: 40px;
}
@media (max-width: 767px) {
	.dsn-gf--card { padding: 28px 20px; }
}
.dsn-gf--minimal { padding: 24px 0; }
.dsn-gf--embedded { padding: 0; }

/* --- Reset the wrapper's GF defaults --- */
.dsn-gf .gform_wrapper {
	max-width: 100% !important;
	margin: 0 !important;
	font-family: inherit !important;
}
.dsn-gf .gform_heading { margin: 0 0 24px !important; padding: 0 !important; }
.dsn-gf .gform_title {
	color: var(--dsn-gf-text);
	font-size: 28px;
	font-weight: 800;
	margin: 0 0 8px;
	letter-spacing: -0.4px;
	line-height: 1.15;
}
.dsn-gf .gform_description {
	display: block;
	color: var(--dsn-gf-text-muted);
	font-size: 15px;
	margin: 0;
	line-height: 1.5;
}

/* --- Field list ---
   Flex row + wrap so half-width fields (gf_left_half / gf_right_half / gfield--width-half)
   pair up side-by-side automatically, the same way Elementor's form widget behaves.
   `align-items: flex-start` keeps fields top-aligned when one is taller than the next. */
.dsn-gf .gform_wrapper .gform_body .gform_fields,
.dsn-gf .gform_fields {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: wrap !important;
	align-items: flex-start !important;
	gap: 20px !important;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none !important;
}

/* Default: full row. Use flex-basis instead of width so gap math works correctly. */
.dsn-gf .gfield {
	flex: 0 0 100% !important;
	max-width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
}

/* Half-width fields share a row. Subtract half the gap (10px of 20px) per side. */
.dsn-gf .gfield--width-half,
.dsn-gf .gf_left_half,
.dsn-gf .gf_right_half {
	flex: 0 0 calc(50% - 10px) !important;
	max-width: calc(50% - 10px) !important;
}

/* Third-width fields */
.dsn-gf .gfield--width-third,
.dsn-gf .gf_left_third,
.dsn-gf .gf_middle_third,
.dsn-gf .gf_right_third {
	flex: 0 0 calc(33.333% - 14px) !important;
	max-width: calc(33.333% - 14px) !important;
}

/* Quarter / two-thirds for newer GF builds */
.dsn-gf .gfield--width-quarter {
	flex: 0 0 calc(25% - 15px) !important;
	max-width: calc(25% - 15px) !important;
}
.dsn-gf .gfield--width-three-quarter {
	flex: 0 0 calc(75% - 5px) !important;
	max-width: calc(75% - 5px) !important;
}
.dsn-gf .gfield--width-two-third {
	flex: 0 0 calc(66.666% - 7px) !important;
	max-width: calc(66.666% - 7px) !important;
}

/* Stack everything on phones */
@media (max-width: 600px) {
	.dsn-gf .gfield--width-half,
	.dsn-gf .gf_left_half,
	.dsn-gf .gf_right_half,
	.dsn-gf .gfield--width-third,
	.dsn-gf .gf_left_third,
	.dsn-gf .gf_middle_third,
	.dsn-gf .gf_right_third,
	.dsn-gf .gfield--width-quarter,
	.dsn-gf .gfield--width-three-quarter,
	.dsn-gf .gfield--width-two-third {
		flex: 0 0 100% !important;
		max-width: 100% !important;
	}
}

/* --- Labels --- */
.dsn-gf .gfield_label,
.dsn-gf .gform_wrapper .gfield_label {
	display: block !important;
	color: var(--dsn-gf-label) !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	margin: 0 0 6px !important;
	line-height: 1.3 !important;
}
.dsn-gf .gfield_required {
	color: var(--dsn-gf-error) !important;
	margin-left: 4px;
	font-weight: 700;
}

/* --- Inputs --- */
.dsn-gf input[type="text"],
.dsn-gf input[type="email"],
.dsn-gf input[type="tel"],
.dsn-gf input[type="url"],
.dsn-gf input[type="number"],
.dsn-gf input[type="password"],
.dsn-gf input[type="search"],
.dsn-gf select,
.dsn-gf textarea {
	width: 100% !important;
	background: var(--dsn-gf-field-bg) !important;
	border: 1px solid transparent !important;
	border-radius: var(--dsn-gf-radius) !important;
	padding: 12px 16px !important;
	font-size: 15px !important;
	font-family: inherit !important;
	color: var(--dsn-gf-text) !important;
	line-height: 1.4 !important;
	transition: background .15s ease, border-color .15s ease, box-shadow .15s ease !important;
	box-shadow: none !important;
	outline: none !important;
	box-sizing: border-box !important;
}

.dsn-gf textarea { min-height: 120px; resize: vertical; }

.dsn-gf input::placeholder,
.dsn-gf textarea::placeholder { color: #9CA3AF; opacity: 1; }

.dsn-gf input:focus,
.dsn-gf select:focus,
.dsn-gf textarea:focus {
	background: var(--dsn-gf-field-bg-focus) !important;
	border-color: var(--dsn-gf-border-focus) !important;
	box-shadow: 0 0 0 3px rgba(26,77,140,0.12) !important;
}

/* Custom select chevron */
.dsn-gf select {
	appearance: none !important;
	-webkit-appearance: none !important;
	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'><path fill='%236B7280' d='M3.2 5.6L8 10.4l4.8-4.8H3.2z'/></svg>") !important;
	background-repeat: no-repeat !important;
	background-position: right 14px center !important;
	background-size: 16px 16px !important;
	padding-right: 40px !important;
}

/* --- Checkboxes & radios --- */
.dsn-gf .gchoice { margin: 6px 0 !important; }
.dsn-gf .gfield_checkbox label,
.dsn-gf .gfield_radio label {
	font-weight: 500 !important;
	color: var(--dsn-gf-text) !important;
	font-size: 15px !important;
	cursor: pointer;
	display: inline-flex !important;
	align-items: center !important;
	gap: 8px !important;
}
.dsn-gf input[type="checkbox"],
.dsn-gf input[type="radio"] {
	accent-color: var(--dsn-gf-primary);
	width: 18px !important;
	height: 18px !important;
}

/* --- Field description (below) --- */
.dsn-gf .gfield_description {
	color: var(--dsn-gf-text-muted) !important;
	font-size: 13px !important;
	margin-top: 6px !important;
	line-height: 1.4 !important;
	padding: 0 !important;
}

/* --- Validation --- */
.dsn-gf .gfield_error input,
.dsn-gf .gfield_error select,
.dsn-gf .gfield_error textarea,
.dsn-gf .gfield--invalid input,
.dsn-gf .gfield--invalid select,
.dsn-gf .gfield--invalid textarea {
	border-color: var(--dsn-gf-error) !important;
	background: #FEF2F2 !important;
}
.dsn-gf .validation_message,
.dsn-gf .gfield_validation_message {
	color: var(--dsn-gf-error) !important;
	font-size: 13px !important;
	font-weight: 500 !important;
	margin-top: 6px !important;
	background: transparent !important;
	border: none !important;
	padding: 0 !important;
}
.dsn-gf .gform_validation_errors {
	background: #FEF2F2 !important;
	border: 1px solid rgba(220,38,38,0.2) !important;
	border-radius: var(--dsn-gf-radius) !important;
	color: var(--dsn-gf-error) !important;
	padding: 16px !important;
	margin: 0 0 24px !important;
	font-size: 14px !important;
}
.dsn-gf .gform_validation_errors h2,
.dsn-gf .gform_validation_errors > div > h2 {
	color: var(--dsn-gf-error) !important;
	font-size: 16px !important;
	margin: 0 0 8px !important;
	font-weight: 700 !important;
}
.dsn-gf .gform_validation_errors a { color: var(--dsn-gf-error) !important; }

/* --- Submit footer --- */
.dsn-gf .gform_footer,
.dsn-gf .gform_page_footer {
	display: flex !important;
	justify-content: flex-start !important;
	margin: 24px 0 0 !important;
	padding: 0 !important;
}

.dsn-gf .gform_button,
.dsn-gf input[type="submit"],
.dsn-gf button.gform_button {
	appearance: none !important;
	-webkit-appearance: none !important;
	background: var(--dsn-gf-primary) !important;
	color: #FFFFFF !important;
	border: none !important;
	border-radius: 100px !important;
	padding: 14px 32px !important;
	font-size: 14px !important;
	font-weight: 700 !important;
	letter-spacing: 0.3px !important;
	font-family: inherit !important;
	cursor: pointer !important;
	transition: background .15s ease, transform .15s ease, box-shadow .15s ease !important;
	box-shadow: 0 4px 12px rgba(26,77,140,0.18) !important;
	text-transform: none !important;
}
.dsn-gf .gform_button:hover,
.dsn-gf input[type="submit"]:hover {
	background: var(--dsn-gf-primary-hover) !important;
	transform: translateY(-1px);
	box-shadow: 0 6px 16px rgba(26,77,140,0.28) !important;
}
.dsn-gf .gform_button:focus,
.dsn-gf input[type="submit"]:focus {
	box-shadow: 0 0 0 3px rgba(26,77,140,0.24), 0 4px 12px rgba(26,77,140,0.18) !important;
}

@media (max-width: 600px) {
	.dsn-gf .gform_footer { justify-content: stretch !important; }
	.dsn-gf .gform_button,
	.dsn-gf input[type="submit"] { width: 100% !important; }
}

/* --- Success confirmation --- */
.dsn-gf .gform_confirmation_wrapper,
.dsn-gf div.gform_confirmation_wrapper {
	background: #ECFDF5 !important;
	border: 1px solid rgba(46,125,50,0.2) !important;
	border-radius: var(--dsn-gf-radius) !important;
	padding: 24px !important;
	color: var(--dsn-gf-success) !important;
	font-size: 16px !important;
	line-height: 1.5;
}

/* --- Editor / placeholder state --- */
.dsn-gf__empty {
	background: rgba(26,77,140,0.04);
	border: 1px dashed rgba(26,77,140,0.25);
	border-radius: 12px;
	color: var(--dsn-gf-text-muted);
	padding: 24px;
	text-align: center;
	font-size: 14px;
}

/* --- Honeypot field — keep hidden --- */
.dsn-gf .gform_validation_container { display: none !important; }

/* --- CAPTCHA / reCAPTCHA --- */
.dsn-gf .ginput_recaptcha,
.dsn-gf .gfield--type-captcha img { margin-top: 4px; }
.dsn-gf .gfield--type-captcha .ginput_container { display: flex; flex-direction: column; gap: 8px; }

/* --- Required-asterisk variant for newer GF builds --- */
.dsn-gf .gfield_required_text,
.dsn-gf .gfield_required_asterisk { color: var(--dsn-gf-error) !important; }
