/* ==========================================================================
   Contact Form 7 – Statusmeldungen, Feldfehler, Fallback
   Scoped auf .wpcf7. Alle Werte ueber Custom Properties ueberschreibbar.
   ========================================================================== */

.wpcf7 {
	/* Farben – im Theme ueberschreibbar, z.B. .wpcf7 { --cf7-error: #a12; } */
	--cf7-error: #b3261e;
	--cf7-warning: #8a5300;
	--cf7-success: #1c6b40;
	--cf7-text: currentColor;
	--cf7-border: #d4d4d4;
	--cf7-border-focus: #1a1a1a;

	/* Geometrie */
	--cf7-radius: 4px;
	--cf7-gap: 0.75rem;
	--cf7-pad-y: 0.875rem;
	--cf7-pad-x: 1rem;

	/* Wird pro Status gesetzt */
	--cf7-state: var(--cf7-error);
	--cf7-icon: none;
}

/* --------------------------------------------------------------------------
   Statusmeldung
   -------------------------------------------------------------------------- */

.wpcf7 form .wpcf7-response-output {
	display: none;
	margin: 1.5rem 0 0;
	padding: var(--cf7-pad-y) var(--cf7-pad-x);
	border: 0;
	border-left: 3px solid var(--cf7-state);
	border-radius: 0 var(--cf7-radius) var(--cf7-radius) 0;
	background: #f6f6f6;
	background: color-mix(in srgb, var(--cf7-state) 8%, transparent);
	color: var(--cf7-state);
	font-size: 0.9375rem;
	line-height: 1.5;
}

/* CF7 setzt die Statusklasse auf das form-Element. */
.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.spam .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output {
	display: grid;
	grid-template-columns: 1.25rem 1fr;
	align-items: start;
	gap: var(--cf7-gap);
}

.wpcf7 form .wpcf7-response-output::before {
	content: "";
	width: 1.25rem;
	height: 1.25rem;
	margin-top: 0.0625rem;
	background-color: currentColor;
	-webkit-mask: var(--cf7-icon) center / contain no-repeat;
	mask: var(--cf7-icon) center / contain no-repeat;
}

/* Erfolg */
.wpcf7 form.sent {
	--cf7-state: var(--cf7-success);
	--cf7-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M8 12.2l2.8 2.8L16 9.5'/%3E%3C/svg%3E");
}

/* Korrigierbare Eingabefehler */
.wpcf7 form.invalid,
.wpcf7 form.unaccepted,
.wpcf7 form.payment-required {
	--cf7-state: var(--cf7-warning);
	--cf7-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5'/%3E%3Cpath d='M12 16.6v.01'/%3E%3C/svg%3E");
}

/* Blockiert oder technisch fehlgeschlagen */
.wpcf7 form.spam,
.wpcf7 form.failed {
	--cf7-state: var(--cf7-error);
	--cf7-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M15 9l-6 6M9 9l6 6'/%3E%3C/svg%3E");
}

/* --------------------------------------------------------------------------
   Fallback-Kontaktweg – nur sichtbar, wenn das Formular nicht durchkommt
   -------------------------------------------------------------------------- */

.wpcf7 .cf7as-fallback {
	display: none;
}

.wpcf7 form.spam .cf7as-fallback,
.wpcf7 form.failed .cf7as-fallback {
	display: block;
	margin: 0.75rem 0 0;
	padding: var(--cf7-pad-y) var(--cf7-pad-x);
	border-radius: var(--cf7-radius);
	background: #f6f6f6;
	background: color-mix(in srgb, var(--cf7-error) 5%, transparent);
	font-size: 0.9375rem;
}

.wpcf7 .cf7as-fallback__text {
	margin: 0 0 0.375rem;
}

.wpcf7 .cf7as-fallback__links {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.5rem;
	margin: 0;
	font-weight: 600;
}

.wpcf7 .cf7as-fallback__links a {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

/* --------------------------------------------------------------------------
   Feldfehler
   -------------------------------------------------------------------------- */

.wpcf7 .wpcf7-form-control-wrap {
	position: relative;
	display: block;
}

.wpcf7 input.wpcf7-not-valid,
.wpcf7 textarea.wpcf7-not-valid,
.wpcf7 select.wpcf7-not-valid {
	border-color: var(--cf7-error);
	box-shadow: inset 0 0 0 1px var(--cf7-error);
}

.wpcf7 .wpcf7-not-valid-tip {
	display: block;
	margin-top: 0.375rem;
	color: var(--cf7-error);
	font-size: 0.8125rem;
	line-height: 1.4;
}

/* Checkbox-/Acceptance-Fehler sitzen im Label, nicht am Input */
.wpcf7 .wpcf7-acceptance .wpcf7-list-item-label {
	transition: color 0.15s ease;
}

.wpcf7 form.unaccepted .wpcf7-acceptance .wpcf7-list-item-label {
	color: var(--cf7-error);
}

/* --------------------------------------------------------------------------
   Eingabefelder & Fokus
   -------------------------------------------------------------------------- */

.wpcf7 input[type="text"]:focus-visible,
.wpcf7 input[type="tel"]:focus-visible,
.wpcf7 input[type="email"]:focus-visible,
.wpcf7 textarea:focus-visible,
.wpcf7 select:focus-visible {
	outline: 2px solid var(--cf7-border-focus);
	outline-offset: 2px;
}

.wpcf7 ::placeholder {
	color: #6b6b6b;
	opacity: 1;
}

/* Pflichtfeld-Markierung sichtbar halten, auch ohne Label */
.wpcf7 [aria-required="true"]::placeholder {
	color: #5a5a5a;
}

/* --------------------------------------------------------------------------
   Absenden
   -------------------------------------------------------------------------- */

.wpcf7 .wpcf7-submit[disabled],
.wpcf7 form.submitting .wpcf7-submit {
	cursor: progress;
	opacity: 0.6;
}

.wpcf7 .wpcf7-spinner {
	margin: 0 0 0 0.75rem;
	vertical-align: middle;
}

/* --------------------------------------------------------------------------
   Honeypots zuverlaessig aus dem Blickfeld halten
   -------------------------------------------------------------------------- */

.wpcf7 .cf7as-hp,
.wpcf7 .cf7apps-honeypot-wrap {
	position: absolute !important;
	left: -9999px !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
}

/* --------------------------------------------------------------------------
   Bewegungsreduktion
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	.wpcf7 * {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
	}
}