/**
 * Form validation feedback (additive; does not alter the design).
 */
.field-error {
	display: block;
	margin-top: 6px;
	font-size: 13px;
	line-height: 1.3;
	color: #d33;
}

.rv-contact-form .is-invalid,
.rv-newsletter-form .is-invalid {
	border-color: #d33 !important;
}

.form-status {
	margin-top: 14px;
	font-size: 14px;
}

.form-status.is-success {
	color: #1f7a3d;
}

.form-status.is-error {
	color: #d33;
}

/* Spinner (shared: forms, search, load-more) */
@keyframes rv-spin {
	to { transform: rotate( 360deg ); }
}
.rv-spinner {
	display: inline-block;
	width: 20px;
	height: 20px;
	border: 2px solid rgba( 22, 92, 51, 0.25 );
	border-top-color: #165c33;
	border-radius: 50%;
	animation: rv-spin 0.6s linear infinite;
	vertical-align: middle;
}

.search-suggest-loading {
	padding: 18px 6px;
	text-align: center;
}

/* Button loading state (contact/newsletter/load-more buttons) */
.cta_btn.is-loading,
.footer_form button.is-loading {
	position: relative;
	pointer-events: none;
	opacity: 0.85;
}
.cta_btn.is-loading .btn_text,
.cta_btn.is-loading .btn_icon,
.footer_form button.is-loading img {
	visibility: hidden;
}
.cta_btn.is-loading::after,
.footer_form button.is-loading::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 18px;
	height: 18px;
	margin: -9px 0 0 -9px;
	border: 2px solid rgba( 22, 92, 51, 0.35 );
	border-top-color: #165c33;
	border-radius: 50%;
	animation: rv-spin 0.6s linear infinite;
}
