/* The "Ich bin kein Roboter" proof-of-work widget (inc/captcha-widget.php,
   js/captcha.js) and the form around it: the homepage contact form and the
   booking form. */
.contact-form input[type="hidden"] {
	display: none;
}
.contact-form {
	container-type: inline-size;
}
/* Until the captcha is solved, Senden is a disabled secondary
   (white, hairline, muted label), not a faded primary. Same
   specificity as styles.css's submit :hover; later wins. */
.contact-form button[data-gv-contact-submit]:disabled {
	background: var(--white);
	border-color: var(--line);
	color: var(--ink-3);
	cursor: not-allowed;
}
.gv-contact-captcha {
	width: 100%;
	box-sizing: border-box;
	display: grid;
	grid-template-columns: 2.35rem minmax(0, 1fr) auto;
	align-items: center;
	gap: 0.75rem;
	border: 1px solid var(--line);
	border-radius: var(--radius-s);
	background: var(--white);
	color: var(--ink);
	padding: 0.8rem 0.85rem;
}
.gv-contact-captcha[data-state="verified"] {
	border-color: var(--ok);
	background: #f3faf6;
}
.gv-contact-captcha[data-state="error"] {
	border-color: #d5a0a0;
}
.contact-form .gv-contact-captcha-box {
	width: 2rem;
	height: 2rem;
	display: grid;
	place-items: center;
	border: 2px solid rgba(25, 22, 51, 0.5); /* 3.4:1, as the inputs */
	border-radius: 0.3rem;
	background: var(--white);
	color: inherit;
	cursor: pointer;
	padding: 0;
	margin: 0;
}
.contact-form .gv-contact-captcha-box:hover,
.contact-form .gv-contact-captcha-box:focus-visible {
	border-color: var(--blue);
	outline: 3px solid rgba(0, 100, 162, 0.2);
	outline-offset: 2px;
}
/* The faint hover ring is too light to mark keyboard focus (WCAG 1.4.11). */
.contact-form .gv-contact-captcha-box:focus-visible {
	outline-color: var(--navy);
}
.contact-form .gv-contact-captcha-box:disabled {
	cursor: wait;
}
.gv-contact-captcha[data-state="verified"] .gv-contact-captcha-box:disabled {
	cursor: default;
}
.gv-contact-captcha-check,
.gv-contact-captcha-spinner {
	display: none;
}
.gv-contact-captcha[data-state="verifying"] .gv-contact-captcha-spinner {
	display: block;
	width: 1.05rem;
	height: 1.05rem;
	border: 2px solid rgba(25, 22, 51, 0.2);
	border-top-color: var(--blue);
	border-radius: 999px;
	animation: gvContactCaptchaSpin 0.8s linear infinite;
}
.gv-contact-captcha[data-state="verified"] .gv-contact-captcha-box {
	border-color: #2f7d3b;
	background: #2f7d3b;
}
.gv-contact-captcha[data-state="verified"] .gv-contact-captcha-check {
	display: block;
	width: 0.95rem;
	height: 0.55rem;
	border-left: 3px solid #fff;
	border-bottom: 3px solid #fff;
	transform: rotate(-45deg) translate(1px, -1px);
}
.gv-contact-captcha-copy {
	min-width: 0;
	overflow-wrap: anywhere;
}
.gv-contact-captcha-title {
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.25;
}
.gv-contact-captcha-status-line {
	margin-top: 0.12rem;
	font-size: 0.85rem;
	line-height: 1.3;
	color: var(--ink-2);
}
.gv-contact-captcha[data-state="verified"] .gv-contact-captcha-status-line {
	color: #2f7d3b;
}
.gv-contact-captcha[data-state="error"] .gv-contact-captcha-status-line {
	color: #8d3434;
}
.gv-contact-captcha-brand {
	display: grid;
	gap: 0.15rem;
	justify-items: center;
	color: var(--ink-3);
	font-size: 0.75rem;
	font-weight: 500;
	line-height: 1.2;
	white-space: nowrap;
}
.gv-contact-captcha-brand-mark {
	width: 1.9rem;
	height: 1.9rem;
	display: block;
	color: var(--ink-3);
}
.gv-contact-captcha-brand-shield {
	fill: var(--paper);
	stroke: currentColor;
	stroke-width: 2;
	stroke-linejoin: round;
}
.gv-contact-captcha-brand-check {
	fill: none;
	stroke: var(--ink-2);
	stroke-width: 2.4;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.gv-contact-captcha noscript {
	grid-column: 1 / -1;
	color: #8d3434;
	font-size: 0.85rem;
}
@keyframes gvContactCaptchaSpin {
	to {
		transform: rotate(360deg);
	}
}
@container (max-width: 420px) {
	.gv-contact-captcha {
		grid-template-columns: 2.35rem minmax(0, 1fr);
	}
	.gv-contact-captcha-brand {
		display: none;
	}
}
@media (max-width: 420px) {
	.gv-contact-captcha {
		grid-template-columns: 2.35rem minmax(0, 1fr);
	}
	.gv-contact-captcha-brand {
		display: none;
	}
}
