/**
 * Solaris theme Contact Form styles.
 *
 * @package Solaris
 */

.solaris-contact-form-container input[type="text"],
.solaris-contact-form-container input[type="email"],
.solaris-contact-form-container input[type="tel"],
.solaris-contact-form-container input[type="url"],
.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="url"] {
	width: 100%;
	min-height: var(--control-height-md);
	padding: var(--control-padding-y) var(--control-padding-x);
	border: 1px solid var(--theme-outline-variant);
	border-radius: var(--control-radius);
	background: var(--theme-surface-surface);
	color: var(--theme-surface-on-surface);
	font: inherit;
	-webkit-appearance: none;
	appearance: none;
	box-shadow: none;
	transition: border-color 0.3s var(--ease-out-cubic), box-shadow 0.3s var(--ease-out-cubic);
}

.solaris-contact-form-container input[type="text"]:hover:not(:focus),
.solaris-contact-form-container input[type="email"]:hover:not(:focus),
.solaris-contact-form-container input[type="tel"]:hover:not(:focus),
.solaris-contact-form-container input[type="url"]:hover:not(:focus),
.wpcf7 input[type="text"]:hover:not(:focus),
.wpcf7 input[type="email"]:hover:not(:focus),
.wpcf7 input[type="tel"]:hover:not(:focus),
.wpcf7 input[type="url"]:hover:not(:focus) {
	border-color: var(--theme-outline);
}

.solaris-contact-form-container input[type="text"]:focus,
.solaris-contact-form-container input[type="email"]:focus,
.solaris-contact-form-container input[type="tel"]:focus,
.solaris-contact-form-container input[type="url"]:focus,
.wpcf7 input[type="text"]:focus,
.wpcf7 input[type="email"]:focus,
.wpcf7 input[type="tel"]:focus,
.wpcf7 input[type="url"]:focus {
	outline: none;
	border-color: var(--theme-interaction-accent-on-surface);
	box-shadow: 0 0 0 4px var(--theme-interaction-accent-focus-ring);
}

.solaris-contact-form-container input:-webkit-autofill,
.solaris-contact-form-container input:-webkit-autofill:hover,
.solaris-contact-form-container input:-webkit-autofill:focus,
.wpcf7 input:-webkit-autofill,
.wpcf7 input:-webkit-autofill:hover,
.wpcf7 input:-webkit-autofill:focus {
	-webkit-text-fill-color: var(--theme-surface-on-surface);
	box-shadow: 0 0 0 1000px var(--theme-surface-surface) inset;
	transition: background-color 9999s ease-out 0s;
}

.solaris-contact-form-container textarea,
.wpcf7 textarea {
	width: 100%;
	min-height: 9rem;
	padding: var(--control-padding-y) var(--control-padding-x);
	border: 1px solid var(--theme-outline-variant);
	border-radius: var(--control-radius-multiline);
	background: var(--theme-surface-surface);
	color: var(--theme-surface-on-surface);
	font: inherit;
	-webkit-appearance: none;
	appearance: none;
	resize: vertical;
	box-shadow: none;
	transition: border-color 0.3s var(--ease-out-cubic), box-shadow 0.3s var(--ease-out-cubic);
}

.solaris-contact-form-container textarea:hover:not(:focus),
.wpcf7 textarea:hover:not(:focus) {
	border-color: var(--theme-outline);
}

.solaris-contact-form-container textarea:focus,
.wpcf7 textarea:focus {
	outline: none;
	border-color: var(--theme-interaction-accent-on-surface);
	box-shadow: 0 0 0 4px var(--theme-interaction-accent-focus-ring);
}

/* -------------------------------------------------------------------------
   Contact page layout
   ------------------------------------------------------------------------- */

.solaris-contact-layout {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--space-2xl);
	margin-bottom: var(--space-4xl);
}

@media (min-width: 992px) {
	.solaris-contact-layout {
		grid-template-columns: 5fr 7fr;
		gap: var(--space-3xl);
	}
}

.solaris-contact-info {
	display: flex;
	flex-direction: column;
	gap: var(--space-lg);
	align-self: start;
}

.solaris-contact-cards-list {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--space-lg);
	grid-auto-rows: 1fr;
}

.solaris-contact-card {
	--contact-card-min-height: 6rem;

	display: flex;
	align-items: center;
	gap: var(--space-md);
	min-height: var(--contact-card-min-height);
	padding: var(--space-lg);
	border: 1px solid var(--theme-outline-variant);
	border-radius: var(--shape-corner-lg);
	background: var(--theme-card-surface);
}

.solaris-contact-card__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	flex-shrink: 0;
	border-radius: var(--shape-corner-rounded);
	background: var(--theme-surface-surface-container);
	color: var(--theme-surface-on-surface);
	font-size: var(--lg-size);
}

@media (prefers-color-scheme: dark) {
	.solaris-contact-card__icon {
		background: var(--theme-surface-surface-container-high);
	}
}

.solaris-contact-card__content {
	flex-grow: 1;
	min-width: 0;
}

.solaris-contact-card__title {
	margin: 0 0 var(--space-xs);
	font-size: var(--sm-size);
	line-height: var(--sm-line-height);
	font-weight: var(--font-weight-semibold);
	color: var(--theme-surface-on-surface-variant);
	text-transform: uppercase;
	letter-spacing: 0.05em;
}

.solaris-contact-card__text {
	margin: 0;
	font-size: var(--base-size);
	line-height: var(--base-line-height);
	color: var(--theme-surface-on-surface);
}

.solaris-contact-card__text a {
	color: inherit;
	text-decoration: none;
	font-weight: var(--font-weight-medium);
}

.solaris-contact-card__text a:hover,
.solaris-contact-card__text a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.solaris-contact-directions {
	margin-top: var(--space-xl);
}

.solaris-contact-socials {
	margin-top: var(--space-xl);
}

.solaris-contact-socials__title {
	font-size: var(--h5-size);
	margin-bottom: var(--space-md);
	font-weight: var(--font-weight-semibold);
}

.solaris-contact-socials__links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm);
	row-gap: var(--space-sm);
}

.solaris-contact-social-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	border-radius: var(--shape-corner-rounded);
	background-color: var(--theme-primary-container);
	color: var(--theme-primary-on-container);
	text-decoration: none;
	font-size: var(--lg-size);
	transition: background-color 0.2s var(--ease-out-cubic), color 0.2s var(--ease-out-cubic), transform 0.2s var(--ease-out-cubic);
}

.solaris-contact-social-link:hover {
	background-color: var(--theme-primary-primary);
	color: var(--theme-primary-on-primary);
}

.solaris-contact-form-container,
.wpcf7 {
	align-self: start;
	padding: var(--space-md);
	border: 1px solid var(--theme-outline-variant);
	border-radius: var(--shape-corner-lg);
	background: var(--theme-surface-surface-container);
}

/* Prevent double nesting borders/padding if CF7 is inside solaris-contact-form-container */
.solaris-contact-form-container .wpcf7 {
	padding: 0;
	border: none;
	background: transparent;
	border-radius: 0;
	align-self: auto;
}

.solaris-contact-fallback {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--space-2xl);
	border: 1px dashed var(--theme-outline);
	border-radius: var(--shape-corner-md);
	text-align: center;
}

.solaris-contact-fallback__msg {
	margin: 0;
	color: var(--theme-on-surface-subtle);
	font-size: var(--sm-size);
}

.solaris-contact-form-container input::placeholder,
.solaris-contact-form-container textarea::placeholder,
.wpcf7 input::placeholder,
.wpcf7 textarea::placeholder {
	color: var(--theme-on-surface-subtle);
	opacity: 0.85;
}

@media (prefers-color-scheme: dark) {

	.solaris-contact-form-container input::placeholder,
	.solaris-contact-form-container textarea::placeholder,
	.wpcf7 input::placeholder,
	.wpcf7 textarea::placeholder {
		color: var(--theme-on-surface-muted);
		opacity: 0.55;
	}
}

/* Contact Form 7 Form Styling inside theme */
.solaris-contact-form-container form,
.wpcf7-form {
	display: grid;
	gap: var(--space-md);
}

.solaris-contact-form-container form p,
.wpcf7-form p {
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
	position: relative;
}

.solaris-contact-form-container label,
.wpcf7-form label {
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
	font-size: var(--sm-size);
	font-weight: var(--font-weight-medium);
	color: var(--theme-surface-on-surface-variant);
}

.solaris-contact-form-container label br,
.wpcf7-form label br {
	display: none !important;
}

/* CF7 acceptance/checkbox — grid row: touch column + label text. */
.solaris-contact-form-container .wpcf7-acceptance label,
.solaris-contact-form-container .wpcf7-checkbox label,
.wpcf7-form .wpcf7-acceptance label,
.wpcf7-form .wpcf7-checkbox label {
	--solaris-choice-visual-size: 1.125rem;
	--solaris-choice-align-offset: calc((var(--sm-size) * var(--sm-line-height) - var(--solaris-choice-visual-size)) / 2);
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	column-gap: var(--space-md);
	align-items: start;
	font-weight: var(--font-weight-regular);
	color: var(--theme-surface-on-surface-variant);
	font-size: var(--sm-size);
	line-height: var(--sm-line-height);
	cursor: pointer;
}

.solaris-contact-form-container .wpcf7-radio label,
.wpcf7-form .wpcf7-radio label {
	--solaris-choice-align-offset: calc((var(--sm-size) * var(--sm-line-height) - var(--touch-target-md)) / 2);
	display: flex;
	flex-direction: row;
	align-items: flex-start;
	gap: var(--space-sm);
	font-weight: var(--font-weight-regular);
	color: var(--theme-surface-on-surface-variant);
	font-size: var(--sm-size);
	line-height: var(--sm-line-height);
	cursor: pointer;
}

.solaris-contact-form-container .wpcf7-acceptance input[type="checkbox"],
.solaris-contact-form-container .wpcf7-checkbox input[type="checkbox"],
.wpcf7-form .wpcf7-acceptance input[type="checkbox"],
.wpcf7-form .wpcf7-checkbox input[type="checkbox"],
.solaris-comment-form .comment-form-cookies-consent input[type="checkbox"] {
	grid-column: 1;
	grid-row: 1;
	justify-self: start;
	width: var(--solaris-choice-visual-size);
	height: var(--solaris-choice-visual-size);
	margin: var(--solaris-choice-align-offset) 0 0;
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
	position: relative;
	-webkit-appearance: none;
	appearance: none;
}

.solaris-contact-form-container .wpcf7-radio input[type="radio"],
.wpcf7-form .wpcf7-radio input[type="radio"] {
	flex: 0 0 var(--touch-target-md);
	width: var(--touch-target-md);
	height: var(--touch-target-md);
	margin: var(--solaris-choice-align-offset, 0) 0 0;
	padding: 0;
	font: inherit;
	cursor: pointer;
	accent-color: var(--theme-interaction-accent-on-surface);
}

.solaris-contact-form-container .wpcf7-acceptance input[type="checkbox"]::before,
.solaris-contact-form-container .wpcf7-checkbox input[type="checkbox"]::before,
.wpcf7-form .wpcf7-acceptance input[type="checkbox"]::before,
.wpcf7-form .wpcf7-checkbox input[type="checkbox"]::before,
.solaris-comment-form .comment-form-cookies-consent input[type="checkbox"]::before {
	content: "";
	position: absolute;
	inset: 0;
	border: 1.5px solid var(--theme-outline);
	border-radius: var(--shape-corner-xs);
	background: var(--theme-surface-surface);
	box-sizing: border-box;
	transition:
		border-color 0.2s var(--ease-out-cubic),
		background-color 0.2s var(--ease-out-cubic),
		box-shadow 0.2s var(--ease-out-cubic);
}

/* Invisible 44px hit area — layout size stays compact. */
.solaris-contact-form-container .wpcf7-acceptance input[type="checkbox"]::after,
.solaris-contact-form-container .wpcf7-checkbox input[type="checkbox"]::after,
.wpcf7-form .wpcf7-acceptance input[type="checkbox"]::after,
.wpcf7-form .wpcf7-checkbox input[type="checkbox"]::after,
.solaris-comment-form .comment-form-cookies-consent input[type="checkbox"]::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: var(--touch-target-md);
	height: var(--touch-target-md);
	transform: translate(-50%, -50%);
}

.solaris-contact-form-container .wpcf7-acceptance input[type="checkbox"]:checked::before,
.solaris-contact-form-container .wpcf7-checkbox input[type="checkbox"]:checked::before,
.wpcf7-form .wpcf7-acceptance input[type="checkbox"]:checked::before,
.wpcf7-form .wpcf7-checkbox input[type="checkbox"]:checked::before,
.solaris-comment-form .comment-form-cookies-consent input[type="checkbox"]:checked::before {
	border-color: var(--theme-interaction-accent-on-surface);
	background-color: var(--theme-interaction-accent-on-surface);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 10' fill='none'%3E%3Cpath stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M1 5.5 4 8.5 11 1.5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 0.65em;
}

.solaris-contact-form-container .wpcf7-acceptance input[type="checkbox"]:focus-visible::before,
.solaris-contact-form-container .wpcf7-checkbox input[type="checkbox"]:focus-visible::before,
.wpcf7-form .wpcf7-acceptance input[type="checkbox"]:focus-visible::before,
.wpcf7-form .wpcf7-checkbox input[type="checkbox"]:focus-visible::before,
.solaris-comment-form .comment-form-cookies-consent input[type="checkbox"]:focus-visible::before {
	box-shadow: 0 0 0 4px var(--theme-interaction-accent-focus-ring);
}

.solaris-contact-form-container .wpcf7-list-item,
.wpcf7-form .wpcf7-list-item {
	margin: 0;
}

.solaris-contact-form-container .wpcf7-list-item-label,
.wpcf7-form .wpcf7-list-item-label {
	grid-column: 2;
	grid-row: 1;
	min-width: 0;
}

.solaris-contact-form-container .wpcf7-acceptance a,
.solaris-contact-form-container .wpcf7-list-item-label a,
.wpcf7-form .wpcf7-acceptance a,
.wpcf7-form .wpcf7-list-item-label a {
	color: var(--theme-interaction-accent-on-surface);
	font-weight: var(--font-weight-medium);
	text-decoration: none;
}

.solaris-contact-form-container .wpcf7-acceptance a:hover,
.solaris-contact-form-container .wpcf7-acceptance a:focus-visible,
.solaris-contact-form-container .wpcf7-list-item-label a:hover,
.solaris-contact-form-container .wpcf7-list-item-label a:focus-visible,
.wpcf7-form .wpcf7-acceptance a:hover,
.wpcf7-form .wpcf7-acceptance a:focus-visible,
.wpcf7-form .wpcf7-list-item-label a:hover,
.wpcf7-form .wpcf7-list-item-label a:focus-visible {
	color: var(--theme-interaction-accent-on-surface);
	text-decoration: none;
	opacity: 0.88;
}

.solaris-contact-form-container .wpcf7-form-control-wrap,
.wpcf7-form .wpcf7-form-control-wrap {
	display: block;
	width: 100%;
}

.solaris-contact-form-container button.wpcf7-submit,
.wpcf7-submit {
	width: 100%;
	margin-top: var(--space-xs);
	box-shadow: 0 4px 12px var(--theme-outline-variant);
	transition: background 0.3s var(--ease-out-cubic), color 0.3s var(--ease-out-cubic);
}

.solaris-contact-map {
	position: relative;
	overflow: hidden;
	border: 1px solid var(--theme-outline-variant);
	border-radius: var(--shape-corner-lg);
	box-shadow: 0 10px 30px var(--theme-outline-variant);
}

.solaris-contact-directions-overlay {
	position: absolute;
	top: var(--space-md);
	right: var(--space-md);
	z-index: 10;
}

.solaris-contact-map iframe {
	display: block;
	width: 100%;
}

@media (prefers-color-scheme: dark) {
	.solaris-contact-map iframe {
		filter: invert(90%) hue-rotate(180deg);
	}
}


/* -------------------------------------------------------------------------
   Contact Form 7 — alerts, validation, spinner
   ------------------------------------------------------------------------- */
.wpcf7 .hidden-fields-container {
	display: none !important;
	border: 0;
	margin: 0;
	padding: 0;
	min-width: 0;
}

.wpcf7 .screen-reader-response {
	position: absolute;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	width: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	word-wrap: normal !important;
	word-break: normal !important;
}

.wpcf7 form .wpcf7-response-output {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: var(--sm-size);
	font-weight: var(--font-weight-medium);
	line-height: 1.45;
	color: var(--theme-surface-on-surface);
	background: transparent;
}

.wpcf7 form.init .wpcf7-response-output,
.wpcf7 form.resetting .wpcf7-response-output,
.wpcf7 form.submitting .wpcf7-response-output,
.wpcf7 form[data-status="init"] .wpcf7-response-output,
.wpcf7 form[data-status="resetting"] .wpcf7-response-output,
.wpcf7 form[data-status="submitting"] .wpcf7-response-output,
.wpcf7 form .wpcf7-response-output:empty {
	display: none;
	margin: 0;
	padding: 0;
	border: 0;
}

.wpcf7 form.sent .wpcf7-response-output,
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output,
.wpcf7 form.spam .wpcf7-response-output,
.wpcf7 form .wpcf7-response-output.wpcf7-mail-sent-ok,
.wpcf7 form .wpcf7-response-output.wpcf7-validation-errors,
.wpcf7 form .wpcf7-response-output.wpcf7-mail-sent-ng {
	display: block;
	margin: var(--space-md) 0 0;
	padding: var(--space-sm) var(--space-md);
	border: 1px solid var(--theme-outline-variant);
	border-radius: var(--shape-corner-md);
	background: var(--theme-surface-surface);
}

.wpcf7 form.sent .wpcf7-response-output,
.wpcf7 form .wpcf7-response-output.wpcf7-mail-sent-ok {
	border-color: var(--theme-status-success-border);
	color: var(--theme-status-success-on-surface);
	background: var(--theme-status-success-surface);
}

.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output,
.wpcf7 form .wpcf7-response-output.wpcf7-validation-errors {
	border-color: var(--theme-status-error-border);
	color: var(--theme-status-error-on-surface);
	background: var(--theme-status-error-surface);
}

.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output,
.wpcf7 form .wpcf7-response-output.wpcf7-mail-sent-ng {
	border-color: var(--theme-status-error-border);
	color: var(--theme-status-error-on-surface);
	background: var(--theme-status-error-surface);
}

.wpcf7 form.spam .wpcf7-response-output {
	border-color: var(--theme-status-warning-border);
	color: var(--theme-status-warning-on-surface);
	background: var(--theme-status-warning-surface);
}

.wpcf7-not-valid-tip {
	display: block;
	margin-top: var(--space-xs);
	font-size: var(--xs-size);
	font-weight: var(--font-weight-medium);
	line-height: 1.4;
	color: var(--theme-status-error-on-surface);
}

.wpcf7 .use-floating-validation-tip .wpcf7-not-valid-tip {
	position: relative;
	top: auto;
	left: auto;
	z-index: 1;
	width: auto;
	max-width: 100%;
	margin-top: var(--space-xs);
	padding: var(--space-xs) var(--space-sm);
	border: 1px solid var(--theme-status-error-border);
	border-radius: var(--shape-corner-sm);
	background: var(--theme-status-error-surface);
	color: var(--theme-status-error-on-surface);
}

.wpcf7 input.wpcf7-not-valid,
.wpcf7 select.wpcf7-not-valid,
.wpcf7 textarea.wpcf7-not-valid {
	border-color: var(--theme-status-error-on-surface) !important;
	box-shadow: 0 0 0 4px var(--theme-status-error-focus);
}

.wpcf7 [inert] {
	opacity: 0.55;
}

.wpcf7-spinner {
	visibility: hidden;
	display: inline-block;
	vertical-align: middle;
	background-color: var(--theme-on-surface-subtle);
	opacity: 0.85;
	width: 20px;
	height: 20px;
	border: none;
	border-radius: var(--shape-corner-rounded);
	padding: 0;
	margin: 0;
	position: absolute;
	right: var(--space-md);
	top: 50%;
	transform: translateY(-50%);
	z-index: 10;
}

form.submitting .wpcf7-spinner {
	visibility: visible;
}

.wpcf7-spinner::before {
	content: "";
	position: absolute;
	background-color: var(--theme-surface-surface);
	top: 3px;
	left: 3px;
	width: 5px;
	height: 5px;
	border: none;
	border-radius: var(--shape-corner-rounded);
	transform-origin: 7px 7px;
	animation-name: solaris-wpcf7-spin;
	animation-duration: 1000ms;
	animation-timing-function: linear;
	animation-iteration-count: infinite;
}

.wpcf7 .wpcf7-submit:disabled {
	cursor: not-allowed;
	opacity: 0.72;
}

@keyframes solaris-wpcf7-spin {
	from {
		transform: rotate(0deg);
	}

	to {
		transform: rotate(360deg);
	}
}

@media (prefers-reduced-motion: reduce) {
	.wpcf7-spinner::before {
		animation-name: solaris-wpcf7-blink;
		animation-duration: 2000ms;
	}
}

@keyframes solaris-wpcf7-blink {
	from {
		opacity: 1;
	}

	to {
		opacity: 0.25;
	}
}
