/**
 * EP Verbrauchsausweis Online – Styles
 * Nutzt die CI-Variablen von energie-planwerk.com (--ep-*), mit Fallbacks.
 * Alles ist unter .ep-va gekapselt, damit nichts mit Theme/Divi kollidiert.
 */
.ep-va {
	--va-primary: var(--ep-green, #2e7d4f);
	--va-primary-dark: var(--ep-green-dark, #1f5c39);
	--va-accent: var(--ep-gold, #c9a227);
	--va-text: var(--ep-text, #1f2a24);
	--va-muted: #5f6b64;
	--va-border: #d5ddd8;
	--va-bg: #ffffff;
	--va-bg-soft: #f4f7f5;
	--va-error: #b3261e;
	--va-warn-bg: #fff7e0;
	--va-warn-border: #e2b93b;
	--va-ok-bg: #e9f5ee;
	--va-no-bg: #fdecea;
	--va-radius: 10px;
	--va-font: var(--ep-font-body, inherit);
	--va-font-display: var(--ep-font-display, inherit);

	/* Abstand zur Navigation oben und zum Footer unten, seitlich Luft am Handy */
	--va-space-top: clamp(48px, 7vw, 96px);
	--va-space-bottom: clamp(64px, 9vw, 120px);

	max-width: 852px; /* 820px Inhalt + 2 × 16px Rand */
	margin: 0 auto;
	padding: var(--va-space-top) 16px var(--va-space-bottom);
	color: var(--va-text);
	font-family: var(--va-font);
	line-height: 1.5;
}
.ep-va *, .ep-va *::before, .ep-va *::after { box-sizing: border-box; }

/* Fortschritt */
.ep-va-progress {
	display: flex;
	gap: 8px;
	list-style: none;
	margin: 0 0 28px;
	padding: 0;
}
.ep-va-progress li {
	flex: 1;
	font-size: 13px;
	color: var(--va-muted);
	border-top: 4px solid var(--va-border);
	padding-top: 8px;
	margin: 0;
}
.ep-va-progress li.is-done { border-color: var(--va-primary); color: var(--va-text); }
.ep-va-progress li.is-active { border-color: var(--va-accent); color: var(--va-text); font-weight: 600; }

/* Steps */
.ep-va-step { background: var(--va-bg); }
.ep-va-step-title {
	font-family: var(--va-font-display);
	font-size: clamp(22px, 3vw, 28px);
	margin: 0 0 8px;
}
.ep-va-lead { color: var(--va-muted); margin: 0 0 24px; }
.ep-va-sub {
	font-family: var(--va-font-display);
	font-size: 19px;
	margin: 32px 0 12px;
	padding-top: 20px;
	border-top: 1px solid var(--va-border);
}

/* Felder */
.ep-va-field { border: 0; margin: 0 0 20px; padding: 0; min-width: 0; }
.ep-va-field > label,
.ep-va-field > legend {
	display: block;
	font-weight: 600;
	margin-bottom: 6px;
	padding: 0;
}
.ep-va .req { color: var(--va-error); }
.ep-va .opt { color: var(--va-muted); font-weight: 400; font-size: 0.9em; }
.ep-va-help { font-size: 14px; color: var(--va-muted); margin: 4px 0 10px; }

.ep-va input[type="text"],
.ep-va input[type="email"],
.ep-va input[type="tel"],
.ep-va input[type="number"],
.ep-va input[type="date"],
.ep-va select,
.ep-va textarea {
	width: 100%;
	padding: 12px 14px;
	font: inherit;
	font-size: 16px; /* verhindert iOS-Zoom */
	color: var(--va-text);
	background: var(--va-bg);
	border: 1px solid var(--va-border);
	border-radius: var(--va-radius);
	transition: border-color .15s, box-shadow .15s;
}
.ep-va input:focus,
.ep-va select:focus,
.ep-va textarea:focus {
	outline: none;
	border-color: var(--va-primary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--va-primary) 20%, transparent);
}

/* Auswahl-Kacheln */
.ep-va-choices { display: flex; flex-wrap: wrap; gap: 10px; }
.ep-va-choices--stack { flex-direction: column; }
.ep-va-choice { position: relative; cursor: pointer; flex: 1 1 180px; }
.ep-va-choice input { position: absolute; opacity: 0; pointer-events: none; }
.ep-va-choice > span {
	display: block;
	height: 100%;
	padding: 12px 14px;
	border: 1px solid var(--va-border);
	border-radius: var(--va-radius);
	background: var(--va-bg);
	transition: border-color .15s, background .15s;
}
.ep-va-choice small { color: var(--va-muted); }
.ep-va-choice:hover > span { border-color: var(--va-primary); }
.ep-va-choice input:checked + span {
	border-color: var(--va-primary);
	background: var(--va-ok-bg);
	box-shadow: inset 0 0 0 1px var(--va-primary);
}
.ep-va-choice input:focus-visible + span { box-shadow: 0 0 0 3px color-mix(in srgb, var(--va-primary) 30%, transparent); }

/* Checkbox */
.ep-va-check { display: flex; gap: 10px; align-items: flex-start; margin: 0 0 16px; cursor: pointer; }
.ep-va-check input { width: 18px; height: 18px; margin-top: 3px; accent-color: var(--va-primary); flex-shrink: 0; }

/* Raster */
.ep-va-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 0 16px; }
.ep-va-col-4 { grid-column: span 4; }
.ep-va-col-6 { grid-column: span 6; }
.ep-va-col-8 { grid-column: span 8; }
.ep-va-col-12 { grid-column: span 12; }
@media (max-width: 640px) {
	.ep-va-grid > [class*="ep-va-col-"] { grid-column: span 12; }
	.ep-va-progress li span { display: none; }
	.ep-va-progress li.is-active span { display: inline; }
}

/* Fehler */
.ep-va-field.is-invalid input,
.ep-va-field.is-invalid select,
.ep-va-field.is-invalid .ep-va-choice > span { border-color: var(--va-error); }
.ep-va-field.is-invalid::after {
	content: "Bitte ausfüllen bzw. prüfen.";
	display: block;
	font-size: 13px;
	color: var(--va-error);
	margin-top: 4px;
}

/* Ergebnis Vorprüfung */
.ep-va-result {
	padding: 16px 18px;
	border-radius: var(--va-radius);
	border-left: 5px solid;
	margin: 8px 0 24px;
}
.ep-va-result p { margin: 0 0 8px; }
.ep-va-result p:last-child { margin: 0; }
.ep-va-result--ok { background: var(--va-ok-bg); border-color: var(--va-primary); }
.ep-va-result--hinweis { background: var(--va-warn-bg); border-color: var(--va-warn-border); }
.ep-va-result--nein { background: var(--va-no-bg); border-color: var(--va-error); }
.ep-va-result .ep-va-btn { margin-top: 8px; }

/* Buttons */
.ep-va-nav {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	margin-top: 32px;
	flex-wrap: wrap;
}
.ep-va-nav [data-next]:only-child { margin-left: auto; }
.ep-va-btn {
	display: inline-block;
	padding: 13px 24px;
	font: inherit;
	font-weight: 600;
	border-radius: var(--va-radius);
	border: 2px solid transparent;
	cursor: pointer;
	text-decoration: none;
	transition: background .15s, border-color .15s, opacity .15s;
}
.ep-va-btn--primary { background: var(--va-primary); color: #fff; }
.ep-va-btn--primary:hover { background: var(--va-primary-dark); color: #fff; }
.ep-va-btn--ghost { background: transparent; color: var(--va-text); border-color: var(--va-border); }
.ep-va-btn--ghost:hover { border-color: var(--va-primary); }
.ep-va-btn[disabled] { opacity: .45; cursor: not-allowed; }

/* Honeypot */
.ep-va-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

.ep-va [hidden] { display: none !important; }

/* ---------- Abschnitt 2: Gebäude & Verbrauch ---------- */
.ep-va-sub--first { border-top: 0; padding-top: 0; margin-top: 8px; }
.ep-va-info {
	background: var(--va-bg-soft);
	border-radius: var(--va-radius);
	padding: 14px 16px;
	margin: 24px 0 0;
	font-size: 15px;
}

/* Energieträger-Blöcke */
.ep-va-system {
	border: 1px solid var(--va-border);
	border-radius: var(--va-radius);
	padding: 18px 18px 6px;
	margin: 0 0 16px;
	background: var(--va-bg-soft);
}
.ep-va-system-head {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 14px;
}
.ep-va-link {
	background: none;
	border: 0;
	padding: 0;
	color: var(--va-error);
	font: inherit;
	font-size: 14px;
	text-decoration: underline;
	cursor: pointer;
}
.ep-va-btn--small { padding: 9px 16px; font-size: 15px; }

/* Verbrauchstabelle */
.ep-va-table { margin: 4px 0 14px; }
.ep-va-tr {
	display: grid;
	grid-template-columns: minmax(170px, 1.2fr) 1fr;
	gap: 10px;
	align-items: center;
	margin-bottom: 8px;
}
.ep-va-tr:has(> [data-show-if="ww_gemessen=ja"]:not([hidden])) { grid-template-columns: minmax(170px, 1.2fr) 1fr 1fr; }
.ep-va-th { font-weight: 600; font-size: 14px; margin-bottom: 4px; }
.ep-va-th em { font-style: normal; color: var(--va-muted); font-weight: 400; }
.ep-va-tr .ep-va-field { margin: 0; }
.ep-va-period { font-size: 15px; font-variant-numeric: tabular-nums; }
@media (max-width: 640px) {
	.ep-va-tr { grid-template-columns: 1fr; }
	.ep-va-tr:has(> [data-show-if="ww_gemessen=ja"]:not([hidden])) { grid-template-columns: 1fr 1fr; }
	.ep-va-tr .ep-va-period { grid-column: 1 / -1; margin-bottom: -4px; font-weight: 600; }
	.ep-va-th > span:first-child { display: none; }
}

.ep-va input[type="file"] {
	width: 100%;
	padding: 10px;
	border: 1px dashed var(--va-border);
	border-radius: var(--va-radius);
	background: var(--va-bg);
	font: inherit;
	font-size: 15px;
}

/* ---------- Abschnitt 3: Übersicht, Bestellung, Zahlung ---------- */
.ep-va-summary { display: grid; gap: 14px; margin: 0 0 24px; }
.ep-va-summary-box {
	border: 1px solid var(--va-border);
	border-radius: var(--va-radius);
	padding: 16px 18px;
}
.ep-va-summary-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 8px; }
.ep-va-summary-head h3 { margin: 0; font-family: var(--va-font-display); font-size: 17px; }
.ep-va-link--edit { color: var(--va-primary); }
.ep-va-summary dl {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
	gap: 6px 16px;
	margin: 0;
	font-size: 14px;
}
.ep-va-summary dt { color: var(--va-muted); }
.ep-va-summary dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 640px) {
	.ep-va-summary dl { grid-template-columns: 1fr; gap: 0; }
	.ep-va-summary dd { margin-bottom: 8px; }
}

.ep-va-price {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	background: var(--va-ok-bg);
	border-radius: var(--va-radius);
	padding: 16px 18px;
	margin: 0 0 24px;
}
.ep-va-price small { color: var(--va-muted); }
.ep-va-price-sum { font-size: 26px; font-weight: 700; text-align: right; white-space: nowrap; line-height: 1.1; }
.ep-va-price-sum small { display: block; font-size: 12px; font-weight: 400; }

.ep-va-consents { margin: 8px 0 8px; }
.ep-va-consents .ep-va-check { font-size: 15px; }
.ep-va-consents a { color: var(--va-primary); }
.ep-va-check.is-invalid span { color: var(--va-error); }
.ep-va-check.ep-va-field.is-invalid::after { display: none; }
.ep-va-center { text-align: center; margin-top: 12px; }

#ep-va-submit[disabled] { cursor: progress; }

/* Danke + Zahlung */
.ep-va-done { text-align: center; outline: none; }
.ep-va-done-icon {
	width: 64px; height: 64px; line-height: 64px;
	margin: 0 auto 16px;
	border-radius: 50%;
	background: var(--va-primary);
	color: #fff;
	font-size: 32px;
}
.ep-va-pay {
	background: var(--va-bg-soft);
	border-radius: var(--va-radius);
	padding: 24px 20px;
	margin: 8px 0 24px;
}
.ep-va-btn--paypal { font-size: 18px; padding: 15px 32px; margin: 4px 0 8px; }
.ep-va-next { text-align: left; max-width: 560px; margin: 0 auto; padding-left: 20px; }
.ep-va-next li { margin-bottom: 8px; }
