/* MSG Forms: neutral styles that inherit the theme's fonts and colours. */
.msgf-wrap {
	--msgf-accent: #2271b1;
	--msgf-error: #d63638;
	--msgf-border: #c3c4c7;
	--msgf-radius: 4px;
	margin: 0 0 1.5em;
}
.msgf-form .msgf-fields {
	display: flex;
	flex-wrap: wrap;
	gap: 0 4%;
}
.msgf-field {
	flex: 0 0 100%;
	margin: 0 0 1.1em;
	min-width: 0;
}
.msgf-field.msgf-w-half {
	flex-basis: 48%;
}
@media (max-width: 600px) {
	.msgf-field.msgf-w-half {
		flex-basis: 100%;
	}
}
.msgf-field > label,
.msgf-field legend,
.msgf-field .msgf-label {
	display: block;
	font-weight: 600;
	margin: 0 0 0.35em;
	padding: 0;
}
.msgf-field fieldset {
	border: 0;
	margin: 0;
	padding: 0;
	min-width: 0;
}
.msgf-req {
	color: var(--msgf-error);
}
.msgf-form input[type="text"],
.msgf-form input[type="email"],
.msgf-form input[type="tel"],
.msgf-form input[type="url"],
.msgf-form input[type="number"],
.msgf-form input[type="date"],
.msgf-form input[type="time"],
.msgf-form select,
.msgf-form textarea {
	width: 100%;
	box-sizing: border-box;
	padding: 0.6em 0.75em;
	border: 1px solid var(--msgf-border);
	border-radius: var(--msgf-radius);
	background: #fff;
	color: inherit;
	font: inherit;
	line-height: 1.4;
}
.msgf-form input:focus,
.msgf-form select:focus,
.msgf-form textarea:focus {
	outline: 2px solid var(--msgf-accent);
	outline-offset: 1px;
}
.msgf-has-error input,
.msgf-has-error select,
.msgf-has-error textarea {
	border-color: var(--msgf-error);
}
.msgf-error {
	color: var(--msgf-error);
	font-size: 0.9em;
	margin-top: 0.3em;
}
.msgf-error:empty {
	display: none;
}
.msgf-description,
.msgf-hint {
	font-size: 0.9em;
	opacity: 0.8;
	margin: 0 0 0.4em;
}
.msgf-hint {
	margin: 0.3em 0 0;
}
.msgf-choices {
	list-style: none;
	margin: 0;
	padding: 0;
}
.msgf-choices li {
	margin: 0 0 0.3em;
	padding: 0;
	list-style: none;
}
.msgf-choices label,
.msgf-consent label {
	font-weight: normal;
	display: inline;
}
.msgf-parts {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6em 4%;
}
.msgf-part {
	flex: 1 1 48%;
	min-width: 0;
}
.msgf-part-street,
.msgf-part-line2 {
	flex-basis: 100%;
}
.msgf-sublabel {
	display: block;
	font-size: 0.85em;
	opacity: 0.8;
	margin-top: 0.2em;
}
.msgf-section-title {
	margin: 0.6em 0 0.2em;
	padding-bottom: 0.3em;
	border-bottom: 1px solid var(--msgf-border);
}
.msgf-hp {
	position: absolute !important;
	left: -10000px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}
.msgf-summary {
	display: none;
	border-left: 4px solid var(--msgf-error);
	background: rgba(214, 54, 56, 0.07);
	padding: 0.7em 1em;
	margin: 0 0 1em;
}
.msgf-summary.is-visible {
	display: block;
}
.msgf-progress {
	font-weight: 600;
	margin: 0 0 0.8em;
}
.msgf-turnstile {
	margin: 0 0 1em;
}
.msgf-nav {
	display: flex;
	gap: 0.6em;
	margin-top: 0.4em;
}
.msgf-form button {
	cursor: pointer;
	padding: 0.7em 1.6em;
	border: 0;
	border-radius: var(--msgf-radius);
	background: var(--msgf-accent);
	color: #fff;
	font: inherit;
	font-weight: 600;
}
.msgf-form button.msgf-prev {
	background: transparent;
	color: inherit;
	border: 1px solid var(--msgf-border);
}
.msgf-form button[disabled] {
	opacity: 0.6;
	cursor: wait;
}
.msgf-confirmation {
	border-left: 4px solid #00a32a;
	background: rgba(0, 163, 42, 0.07);
	padding: 1em 1.2em;
}
.msgf-confirmation:focus {
	outline: none;
}
/* Without JavaScript every step shows and only the submit button is useful. */
.msgf-wrap:not(.msgf-js) .msgf-prev,
.msgf-wrap:not(.msgf-js) .msgf-next,
.msgf-wrap:not(.msgf-js) .msgf-save,
.msgf-wrap:not(.msgf-js) .msgf-progress {
	display: none;
}
.msgf-wrap [hidden] {
	display: none !important;
}

/* Steps and progress */
.msgf-step-title {
	margin: 0 0 0.8em;
}
.msgf-progress {
	margin: 0 0 1.2em;
}
.msgf-progress-label {
	font-weight: 600;
	margin: 0 0 0.4em;
}
.msgf-progress-bar {
	height: 8px;
	border-radius: 8px;
	background: rgba(0, 0, 0, 0.08);
	overflow: hidden;
}
.msgf-progress-bar span {
	display: block;
	height: 100%;
	background: var(--msgf-accent);
	border-radius: 8px;
	transition: width 0.3s ease;
}
.msgf-steps {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4em 1.2em;
	list-style: none;
	margin: 0;
	padding: 0;
	counter-reset: none;
}
.msgf-steps li {
	display: flex;
	align-items: center;
	gap: 0.45em;
	margin: 0;
	padding: 0;
	opacity: 0.6;
	font-size: 0.95em;
}
.msgf-steps li.is-current {
	opacity: 1;
	font-weight: 600;
}
.msgf-steps li.is-done {
	opacity: 0.85;
}
.msgf-step-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.8em;
	height: 1.8em;
	border-radius: 50%;
	border: 2px solid var(--msgf-accent);
	font-size: 0.85em;
	font-weight: 700;
	color: var(--msgf-accent);
}
.msgf-steps li.is-current .msgf-step-num,
.msgf-steps li.is-done .msgf-step-num {
	background: var(--msgf-accent);
	color: #fff;
}
.msgf-nav {
	flex-wrap: wrap;
	align-items: center;
}
.msgf-form button.msgf-save {
	background: transparent;
	color: var(--msgf-accent);
	padding-left: 0.4em;
	padding-right: 0.4em;
	text-decoration: underline;
	font-weight: normal;
	margin-left: auto;
}

/* Save and continue */
.msgf-notice {
	border-left: 4px solid var(--msgf-accent);
	background: rgba(34, 113, 177, 0.07);
	padding: 0.7em 1em;
	margin: 0 0 1em;
}
.msgf-saved {
	border: 1px solid var(--msgf-border);
	border-left: 4px solid var(--msgf-accent);
	border-radius: var(--msgf-radius);
	padding: 1em 1.2em;
}
.msgf-saved:focus {
	outline: none;
}
.msgf-saved h3 {
	margin: 0 0 0.4em;
}
.msgf-saved-link,
.msgf-saved-row {
	display: flex;
	gap: 0.5em;
	margin: 0.6em 0;
}
.msgf-saved input {
	flex: 1;
	min-width: 0;
	box-sizing: border-box;
	padding: 0.6em 0.75em;
	border: 1px solid var(--msgf-border);
	border-radius: var(--msgf-radius);
	font: inherit;
}
.msgf-saved button {
	cursor: pointer;
	padding: 0.6em 1.2em;
	border: 0;
	border-radius: var(--msgf-radius);
	background: var(--msgf-accent);
	color: #fff;
	font: inherit;
	font-weight: 600;
}
.msgf-saved button.msgf-back {
	background: transparent;
	color: var(--msgf-accent);
	padding-left: 0;
	text-decoration: underline;
	font-weight: normal;
}
.msgf-saved-email {
	margin-top: 1em;
}
.msgf-saved-msg {
	font-size: 0.9em;
}

/* Preview mode (admins only) */
.msgf-preview-banner {
	background: #fcf9e8;
	border-left: 4px solid #dba617;
	padding: 0.6em 1em;
	margin: 0 0 1em;
	font-size: 0.92em;
}
.msgf-preview-note {
	font-size: 0.9em;
	opacity: 0.8;
}
