/**
 * innotech Klickstrecke — Styles
 *
 * Bewusst mobil zuerst: rund 75 % des Traffics kommt vom Handy.
 * Zielgruppe sind ueberwiegend aeltere Immobilienbesitzer — deshalb grosse
 * Schrift, grosse Klickflaechen (min. 56 px hoch) und kraeftige Kontraste.
 * Kein grosses Logo im Funnel (Kundenwunsch 13.07.): der Funnel wird nativ
 * eingebettet, das Logo steht auf der Seite bereits oben links.
 *
 * Farben liegen als Custom Properties vor — beim Feinschliff mit dem Kunden
 * muessen nur diese Werte angefasst werden, nicht das ganze Stylesheet.
 */

/* Variablen bewusst auf ALLEN drei Wurzeln: Der Oeffner-Button und der
   <dialog> stehen im Modal-Modus AUSSERHALB von .innotech-ks und haetten
   sonst keinen Zugriff — der Button waere weiss auf weiss. */
.innotech-ks,
.innotech-ks-dialog,
.innotech-ks-oeffner {
	--ks-blau: #123a6b;
	--ks-blau-hell: #e8eef7;
	--ks-akzent: #0f8a4a;
	--ks-text: #1c2833;
	--ks-grau: #5a6672;
	--ks-rand: #d4dae1;
	--ks-fehler: #c0392b;
	--ks-radius: 10px;
}

.innotech-ks {
	max-width: 940px;
	margin: 0 auto;
	padding: 0;
	color: var(--ks-text);
	font-size: 17px;
	line-height: 1.5;
	box-sizing: border-box;
}

.innotech-ks *,
.innotech-ks *::before,
.innotech-ks *::after {
	box-sizing: inherit;
}

/* ---------------------------------------------------------------- Kopf */

.innotech-ks__kopf {
	text-align: center;
	margin-bottom: .9rem;
}

.innotech-ks__titel {
	margin: 0 0 .25rem;
	font-size: 1.35rem;
	line-height: 1.25;
	color: var(--ks-blau);
}

.innotech-ks__unterzeile {
	margin: 0;
	color: var(--ks-grau);
	font-size: 1rem;
}

/* --------------------------------------------------------- Fortschritt */

.innotech-ks__fortschritt {
	margin-bottom: 1.5rem;
}

.innotech-ks__balken {
	height: 8px;
	background: var(--ks-blau-hell);
	border-radius: 999px;
	overflow: hidden;
}

.innotech-ks__balken-fuell {
	display: block;
	height: 100%;
	width: 20%;
	background: var(--ks-blau);
	border-radius: 999px;
	transition: width .3s ease;
}

.innotech-ks__zaehler {
	margin: .5rem 0 0;
	text-align: center;
	font-size: .9rem;
	color: var(--ks-grau);
}

/* ------------------------------------------------------------ Schritte */

.innotech-ks__schritt {
	display: none;
	border: 0;
	margin: 0;
	padding: 0;
	min-width: 0; /* verhindert, dass fieldset das Grid aufblaeht */
}

.innotech-ks__schritt.ist-aktiv {
	display: block;
	animation: innotech-ks-ein .25s ease;
}

@keyframes innotech-ks-ein {
	from { opacity: 0; transform: translateY(6px); }
	to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.innotech-ks__schritt.ist-aktiv { animation: none; }
	.innotech-ks__balken-fuell { transition: none; }
}

.innotech-ks__frage {
	display: block;
	width: 100%;
	padding: 0;
	margin: 0 0 .3rem;
	font-size: 1.3rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--ks-blau);
}

.innotech-ks__hinweis {
	margin: 0 0 1.1rem;
	color: var(--ks-grau);
	font-size: .95rem;
}

/* ------------------------------------------------------------- Kacheln */

.innotech-ks__kacheln {
	display: grid;
	grid-template-columns: 1fr;
	gap: .6rem;
}

@media (min-width: 560px) {
	.innotech-ks__kacheln {
		grid-template-columns: 1fr 1fr;
	}
}

.innotech-ks__kachel {
	display: block;
	position: relative;
	cursor: pointer;
}

.innotech-ks__radio {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
}

.innotech-ks__kachel-inhalt {
	display: flex;
	align-items: center;
	gap: .8rem;
	min-height: 56px;
	padding: .85rem 1rem;
	border: 2px solid var(--ks-rand);
	border-radius: var(--ks-radius);
	background: #fff;
	font-size: 1.02rem;
	font-weight: 600;
	transition: border-color .15s ease, background .15s ease;
}

.innotech-ks__kachel:hover .innotech-ks__kachel-inhalt {
	border-color: var(--ks-blau);
	background: var(--ks-blau-hell);
}

/* Sichtbarer Fokus — Tastaturbedienung muss erkennbar bleiben. */
.innotech-ks__radio:focus-visible + .innotech-ks__kachel-inhalt {
	outline: 3px solid var(--ks-blau);
	outline-offset: 2px;
}

.innotech-ks__radio:checked + .innotech-ks__kachel-inhalt {
	border-color: var(--ks-blau);
	background: var(--ks-blau-hell);
}

.innotech-ks__icon {
	flex: 0 0 auto;
	display: inline-flex;
	width: 28px;
	height: 28px;
	color: var(--ks-blau);
}

.innotech-ks__icon svg {
	width: 100%;
	height: 100%;
}

.innotech-ks__icon--gross {
	width: 56px;
	height: 56px;
	color: var(--ks-akzent);
}

.innotech-ks__kachel-text {
	flex: 1 1 auto;
}

/* -------------------------------------------------------------- Upload */

.innotech-ks__upload {
	text-align: center;
	padding: 1.5rem 1rem;
	border: 2px dashed var(--ks-rand);
	border-radius: var(--ks-radius);
	background: #fbfcfd;
}

.innotech-ks__datei {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
}

.innotech-ks__upload-label {
	display: inline-flex;
	align-items: center;
	gap: .6rem;
	min-height: 52px;
	padding: .8rem 1.4rem;
	border: 2px solid var(--ks-blau);
	border-radius: var(--ks-radius);
	background: #fff;
	color: var(--ks-blau);
	font-weight: 600;
	cursor: pointer;
}

.innotech-ks__datei:focus-visible + .innotech-ks__upload-label {
	outline: 3px solid var(--ks-blau);
	outline-offset: 2px;
}

.innotech-ks__dateiname {
	margin: .8rem 0 0;
	font-size: .92rem;
	color: var(--ks-grau);
	word-break: break-word;
}

/* -------------------------------------------------------------- Felder */

.innotech-ks__felder {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1rem;
}

@media (min-width: 560px) {
	.innotech-ks__felder {
		grid-template-columns: 1fr 1fr;
	}
	.innotech-ks__feld--voll {
		grid-column: 1 / -1;
	}
}

.innotech-ks__feld label {
	display: block;
	margin-bottom: .3rem;
	font-weight: 600;
	font-size: .95rem;
}

.innotech-ks__optional {
	font-weight: 400;
	color: var(--ks-grau);
}

.innotech-ks__feld input[type="text"],
.innotech-ks__feld input[type="tel"],
.innotech-ks__feld input[type="email"],
.innotech-ks__feld input[type="number"],
.innotech-ks__feld select,
.innotech-ks__feld textarea {
	width: 100%;
	min-height: 52px;
	padding: .7rem .9rem;
	border: 2px solid var(--ks-rand);
	border-radius: var(--ks-radius);
	/* 16px verhindert, dass iOS beim Fokus in das Feld hineinzoomt. */
	font-size: 16px;
	font-family: inherit;
	color: var(--ks-text);
	background: #fff;
}

.innotech-ks__feld textarea {
	min-height: 90px;
	resize: vertical;
}

.innotech-ks__feld input:focus,
.innotech-ks__feld select:focus,
.innotech-ks__feld textarea:focus {
	outline: none;
	border-color: var(--ks-blau);
	box-shadow: 0 0 0 3px var(--ks-blau-hell);
}

.innotech-ks__feld input.hat-fehler,
.innotech-ks__feld select.hat-fehler,
.innotech-ks__feld textarea.hat-fehler {
	border-color: var(--ks-fehler);
}

.innotech-ks__helfer {
	margin: .35rem 0 0;
	font-size: .85rem;
	color: var(--ks-grau);
}

.innotech-ks__feldfehler,
.innotech-ks__formfehler {
	margin: .35rem 0 0;
	font-size: .9rem;
	font-weight: 600;
	color: var(--ks-fehler);
	min-height: 0;
}

.innotech-ks__formfehler:empty,
.innotech-ks__feldfehler:empty {
	margin: 0;
}

/* --------------------------------------------------------- Zustimmung */

.innotech-ks__checkbox {
	display: flex;
	align-items: flex-start;
	gap: .65rem;
	font-weight: 400 !important;
	font-size: .93rem;
	line-height: 1.45;
	cursor: pointer;
}

.innotech-ks__checkbox input {
	flex: 0 0 auto;
	width: 22px;
	height: 22px;
	margin-top: .1rem;
}

.innotech-ks__checkbox a {
	color: var(--ks-blau);
	text-decoration: underline;
}

/* Honeypot — fuer Menschen unsichtbar, aber nicht display:none,
   damit einfache Bots ihn trotzdem finden und ausfuellen. */
.innotech-ks__hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* ------------------------------------------------------------ Navigation */

.innotech-ks__navi {
	display: flex;
	flex-wrap: wrap;
	gap: .7rem;
	margin-top: 1.3rem;
}

.innotech-ks__zurueck,
.innotech-ks__weiter,
.innotech-ks__senden {
	min-height: 54px;
	padding: .85rem 1.5rem;
	border-radius: var(--ks-radius);
	font-size: 1rem;
	font-family: inherit;
	font-weight: 700;
	cursor: pointer;
	border: 2px solid transparent;
}

.innotech-ks__zurueck,
.innotech-ks__weiter {
	background: #fff;
	border-color: var(--ks-rand);
	color: var(--ks-grau);
}

.innotech-ks__zurueck:hover,
.innotech-ks__weiter:hover {
	border-color: var(--ks-blau);
	color: var(--ks-blau);
}

.innotech-ks__senden {
	flex: 1 1 auto;
	background: var(--ks-akzent);
	color: #fff;
}

.innotech-ks__senden:hover:not(:disabled) {
	filter: brightness(1.08);
}

.innotech-ks__senden:disabled {
	opacity: .65;
	cursor: not-allowed;
}

.innotech-ks__zurueck:focus-visible,
.innotech-ks__weiter:focus-visible,
.innotech-ks__senden:focus-visible {
	outline: 3px solid var(--ks-blau);
	outline-offset: 2px;
}

/* ---------------------------------------------------------------- Danke */

.innotech-ks__danke {
	display: none;
	text-align: center;
	padding: 2.5rem 1rem;
}

.innotech-ks__danke.ist-aktiv {
	display: block;
}

.innotech-ks__danke h3 {
	margin: 1rem 0 .5rem;
	font-size: 1.4rem;
	color: var(--ks-blau);
}

.innotech-ks__danke p {
	margin: 0;
	color: var(--ks-grau);
}

/* -------------------------------------------------- Bildkacheln (ab v1.1)
   Schritt 1 (Bereich) und 2 (Schadensbild) zeigen die Kundenzeichnungen aus
   der Mail vom 12.08. Die Bilder haben uneinheitliche Seitenverhaeltnisse
   (600x442 bis 482x600) — deshalb festes 4:3-Fenster + object-fit, sonst
   springen die Kacheln in der Hoehe.
   :has() steuert das Layout, damit Kacheln OHNE Bild ("Bin mir nicht sicher",
   Schritt 3) im selben Markup weiter als Zeile funktionieren. */

.innotech-ks__bild {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;	/* gleiches Verhaeltnis wie die aufbereiteten Bereichsbilder (800x600) */
	overflow: hidden;
	border-radius: calc(var(--ks-radius) - 2px);
	background: var(--ks-blau-hell);
}

.innotech-ks__bild img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.innotech-ks__kachel-inhalt:has(.innotech-ks__bild) {
	flex-direction: column;
	align-items: stretch;
	gap: .45rem;
	padding: .4rem .4rem .6rem;
	text-align: center;
	height: 100%;
}

/* Kachel ohne Bild in einem Bild-Schritt (z. B. "Bin mir nicht sicher"):
   mittig setzen, damit sie in der Rasterzeile nicht oben klebt. */
.innotech-ks__kacheln:has(.innotech-ks__bild) .innotech-ks__kachel-inhalt:not(:has(.innotech-ks__bild)) {
	justify-content: center;
	height: 100%;
}

@media (min-width: 700px) {
	.innotech-ks__kacheln:has(.innotech-ks__bild) {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* Select (Baujahr, ab v1.1): eigene Pfeil-Grafik, weil appearance:none den
   nativen Pfeil entfernt. Inline-SVG als data-URI ist hier unkritisch —
   es ist ein CSS-Hintergrund, kein <img>, den WP Rocket LazyLoad anfassen kann. */
.innotech-ks__feld select {
	appearance: none;
	-webkit-appearance: none;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right .8rem center;
	background-size: 1.1em;
	padding-right: 2.6rem;
	cursor: pointer;
}

/* ---------------------------------------------- Kompaktere Darstellung (v1.1.1)
   Ziel: der Funnel soll ohne Scrollen auf einen Bildschirm passen. Groesster
   Hebel sind die Bildkacheln — 5 Stueck in EINER Reihe statt 3+2 spart eine
   komplette Kachelhoehe. */

/* Zurueck auf 3 Spalten (19.08.): 5 nebeneinander waren zwar flacher, die
   Kacheln aber zu schmal — die Zeichnungen verlieren dabei ihre Wirkung.
   Die Bauhoehe loest stattdessen die Modal-Variante. */
@media (min-width: 700px) {
	.innotech-ks__kacheln:has(.innotech-ks__bild) {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* -------------------------------------------------------------- Modal (v1.1.1)
   Fuer die Einbindung auf der Startseite: Der Funnel liegt versteckt im
   <dialog>, ein CTA-Button oeffnet ihn. Native <dialog>-API, damit Fokusfalle,
   ESC-Taste und Backdrop ohne eigenes JS funktionieren. */

.innotech-ks-dialog {
	width: min(960px, 94vw);
	max-height: 92vh;
	padding: 0;
	border: 0;
	border-radius: var(--ks-radius);
	overflow: hidden;
	background: #fff;
}

.innotech-ks-dialog::backdrop {
	background: rgba(0, 0, 0, .55);
	backdrop-filter: blur(2px);
}

.innotech-ks-dialog__inner {
	max-height: 92vh;
	overflow-y: auto;
	padding: 1.4rem 1.4rem 1.8rem;
	-webkit-overflow-scrolling: touch;
}

.innotech-ks-dialog__zu {
	position: sticky;
	top: 0;
	float: right;
	z-index: 2;
	width: 38px;
	height: 38px;
	margin: -.4rem -.4rem 0 0;
	border: 0;
	border-radius: 50%;
	background: #f1f1f1;
	color: #333;
	font-size: 1.4rem;
	line-height: 1;
	cursor: pointer;
}

.innotech-ks-dialog__zu:hover {
	background: #e2e2e2;
}

.innotech-ks-oeffner {
	display: inline-block;
	padding: .9em 1.8em;
	border: 0;
	border-radius: var(--ks-radius);
	background: var(--ks-akzent);
	color: #fff;
	font-size: 1.05rem;
	font-weight: 700;
	cursor: pointer;
}

.innotech-ks-oeffner:hover {
	filter: brightness(.92);
}

/* Im Modal ist der Kopf ueberfluessig gross — der Nutzer hat gerade geklickt,
   er weiss, wo er ist. */
.innotech-ks-dialog .innotech-ks__kopf {
	margin-bottom: .7rem;
}

/* ==================================================================
   Angleichung an das Kontaktformular der Startseite (19.08.)
   Werte 1:1 aus den computed styles von Bit Form (.bf-field/.bf-btn)
   uebernommen, damit Funnel und Formular identisch wirken.
   Schriften kommen vom Theme (Open Sans / Barlow Semi Condensed) —
   nicht selbst laden, sonst doppelter Webfont-Download.
   ================================================================== */

.innotech-ks,
.innotech-ks-dialog,
.innotech-ks-oeffner {
	--ks-akzent: #d63200;          /* Button-Rot der Site */
	--ks-akzent-dunkel: #b32a00;
	--ks-rand: #ababab;            /* Feldrahmen Bit Form */
	--ks-text: #242424;
	--ks-radius: 11px;             /* Felder + Kacheln */
	--ks-radius-btn: 0;            /* Buttons der Site sind eckig */
	--ks-font: "Open Sans", -apple-system, BlinkMacSystemFont, sans-serif;
	--ks-font-headline: "Barlow Semi Condensed", "Open Sans", sans-serif;
}

.innotech-ks,
.innotech-ks-oeffner,
.innotech-ks-dialog {
	font-family: var(--ks-font);
}

/* Ueberschriften wie im Theme */
.innotech-ks__titel,
.innotech-ks__frage,
.innotech-ks__danke h3 {
	font-family: var(--ks-font-headline);
	font-weight: 600;
	color: #000;
}

.innotech-ks__titel {
	font-size: 1.7rem;
	line-height: 1.4;
}

.innotech-ks__frage {
	font-size: 1.35rem;
	line-height: 1.4;
}

/* Felder: exakt die Bit-Form-Masse */
.innotech-ks__feld label {
	font-family: var(--ks-font);
	font-size: 16px;
	font-weight: 600;
	color: var(--ks-text);
	line-height: 1.7;
}

.innotech-ks__feld input[type="text"],
.innotech-ks__feld input[type="tel"],
.innotech-ks__feld input[type="email"],
.innotech-ks__feld input[type="number"],
.innotech-ks__feld select,
.innotech-ks__feld textarea {
	font-family: var(--ks-font);
	font-size: 14px;
	padding: 6px 10px;
	min-height: 40px;
	border: 1px solid var(--ks-rand);
	border-radius: 11px;
	background: #fff;
	color: var(--ks-text);
}

.innotech-ks__feld textarea {
	min-height: 90px;
	padding-top: 10px;
}

/* Buttons: Bit-Form-Optik — eckig, kraeftiges Rot, 700er Schnitt */
.innotech-ks__senden,
.innotech-ks-oeffner {
	font-family: var(--ks-font);
	font-size: 16px;
	font-weight: 700;
	padding: 20px 48px;
	border: 0;
	border-radius: var(--ks-radius-btn);
	background: var(--ks-akzent);
	color: #fff;
	line-height: 1.2;
	cursor: pointer;
}

.innotech-ks__senden:hover,
.innotech-ks-oeffner:hover {
	background: var(--ks-akzent-dunkel);
	filter: none;
}

/* Sekundaere Buttons (Zurueck / Weiter ohne Foto): gleiche Form, dezent */
.innotech-ks__zurueck,
.innotech-ks__weiter {
	font-family: var(--ks-font);
	font-size: 16px;
	font-weight: 700;
	padding: 14px 28px;
	border: 2px solid var(--ks-rand);
	border-radius: var(--ks-radius-btn);
	background: #fff;
	color: var(--ks-text);
	line-height: 1.2;
	cursor: pointer;
}

.innotech-ks__zurueck:hover,
.innotech-ks__weiter:hover {
	border-color: var(--ks-akzent);
	color: var(--ks-akzent);
}

/* Kacheln: Feldrahmen-Optik statt eigener Blautoene */
.innotech-ks__kachel-inhalt {
	border-color: var(--ks-rand);
	border-width: 1px;
	border-radius: 11px;
	font-family: var(--ks-font);
	font-size: 16px;
	font-weight: 600;
	color: var(--ks-text);
}

.innotech-ks__kachel:hover .innotech-ks__kachel-inhalt,
.innotech-ks__radio:checked + .innotech-ks__kachel-inhalt {
	border-color: var(--ks-akzent);
	border-width: 2px;
	background: #fff;
}

/* Fortschrittsbalken in Markenfarbe */
.innotech-ks__balken-fuell {
	background: var(--ks-akzent);
}

/* ==================================================================
   Feinschliff 19.08. — Angleichung an Kontakt-Modal und -Formular
   ================================================================== */

/* --- Schliessen-X wie im Kontakt-Modal der Site: fett, dunkel, kein Kreis --- */
.innotech-ks-dialog__zu {
	position: sticky;
	top: 0;
	float: right;
	z-index: 2;
	width: 44px;
	height: 44px;
	margin: -.2rem -.3rem 0 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: #1a1a1a;
	font-family: var(--ks-font);
	font-size: 2rem;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
	transition: color .15s ease, transform .15s ease;
}

.innotech-ks-dialog__zu:hover {
	background: transparent;
	color: var(--ks-akzent);
	transform: scale(1.08);
}

/* --- Einblend-Effekt: Dialog und Backdrop kommen weich, nicht schlagartig --- */
.innotech-ks-dialog[open] {
	/* "backwards", not "both": a transform kept after the animation would make the
	   dialog the containing block for position: fixed and misplace the Google
	   suggestion list (.pac-container). */
	animation: itks-dialog-auf .22s ease-out backwards;
}

.innotech-ks-dialog[open]::backdrop {
	animation: itks-backdrop-auf .22s ease-out both;
}

@keyframes itks-dialog-auf {
	from { opacity: 0; transform: translateY(14px) scale(.99); }
	to   { opacity: 1; transform: none; }
}

@keyframes itks-backdrop-auf {
	from { opacity: 0; }
	to   { opacity: 1; }
}

/* Wer "reduzierte Bewegung" eingestellt hat, bekommt keine Animation. */
@media (prefers-reduced-motion: reduce) {
	.innotech-ks-dialog[open],
	.innotech-ks-dialog[open]::backdrop {
		animation: none;
	}
}

/* --- Nachrichtenfeld auf Formular-Groesse (war deutlich hoeher) --- */
.innotech-ks__feld textarea {
	min-height: 74px;
	height: 74px;
	resize: vertical;
}

/* --- DSGVO-Checkbox wie im Kontaktformular: Quadrat mit orangem Rand --- */
.innotech-ks__checkbox {
	display: flex;
	align-items: flex-start;
	gap: .7rem;
	cursor: pointer;
}

.innotech-ks__checkbox input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	flex: 0 0 auto;
	width: 24px;
	height: 24px;
	margin: 2px 0 0;
	border: 2px solid var(--ks-akzent);
	border-radius: 6px;
	background: #fff;
	cursor: pointer;
	transition: background .15s ease;
}

/* !important, weil Theme bzw. Bit-Form-CSS eine eigene Checkbox-Regel mitbringt,
   die sonst die Fuellfarbe zurueckdreht (Haken war sichtbar, Flaeche blieb weiss). */
.innotech-ks__checkbox input[type="checkbox"]:checked {
	background-color: var(--ks-akzent) !important;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 16px;
}

.innotech-ks__checkbox input[type="checkbox"]:focus-visible {
	outline: 3px solid var(--ks-akzent);
	outline-offset: 2px;
}

.innotech-ks__checkbox span {
	font-family: var(--ks-font);
	font-size: 16px;
	line-height: 1.5;
}

/* --- Titel in Theme-h2-Groesse (war zu klein fuer eine Ueberschrift) --- */
.innotech-ks__titel {
	font-size: 33px;
	line-height: 1.4;
	margin-bottom: .2rem;
}

@media (max-width: 600px) {
	.innotech-ks__titel {
		font-size: 26px;
	}
}

/* ==================================================================
   Kontaktschritt kompakter + Checkbox-Ausrichtung (19.08.)
   ================================================================== */

/* Die Checkbox lag oben statt mittig UND ohne Abstand zum Text: Schuld war
   .innotech-ks__feld label { display:block } — spezifischer als die
   Checkbox-Regel, hat das Flex-Layout ausgehebelt. Deshalb hier mit
   Element + Klasse nachgezogen. */
.innotech-ks__feld label.innotech-ks__checkbox,
.innotech-ks__zustimmung label {
	display: flex;
	align-items: center;
	gap: .7rem;
	margin-bottom: 0;
}

/* Engere Feldabstaende — 1 rem war grosszuegig fuer sechs Felder. */
.innotech-ks__felder {
	gap: .7rem 1rem;
}

.innotech-ks__feld label {
	margin-bottom: .2rem;
}

/* Adress-Hinweis dezenter und dichter am Feld */
.innotech-ks__helfer {
	margin: .2rem 0 0;
	font-size: 12px;
	line-height: 1.35;
	color: #6b6b6b;
}

/* Screenreader-Label (WordPress-Klasse ist im Theme evtl. nicht definiert) */
.innotech-ks .screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/* Im Modal ist jede Zeile Kopf teuer — Unterzeile dichter an den Titel */
.innotech-ks-dialog .innotech-ks__unterzeile {
	margin-bottom: .2rem;
}

.innotech-ks-dialog .innotech-ks__fortschritt {
	margin-bottom: .8rem;
}

/* ================================================================
   Schritt 4: Upload wie im Kontaktformular + Abstaende (19.08.)
   ================================================================ */

/* Schrittzaehler nur noch fuer Screenreader — der Balken genuegt. */
.innotech-ks__zaehler {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/* Upload: grauer Balken statt gestrichelter Flaeche */
.innotech-ks__upload {
	padding: 0;
	border: 0;
	background: none;
	text-align: left;
}

.innotech-ks__upload-titel {
	display: block;
	margin-bottom: .35rem;
	font-family: var(--ks-font);
	font-size: 16px;
	font-weight: 600;
	color: var(--ks-text);
}

.innotech-ks__upload-feld {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 52px;
	padding: 14px 16px;
	border: 1px solid transparent;
	border-radius: 8px;
	background: #e9e9e9;
	color: #3a3a3a;
	font-family: var(--ks-font);
	font-size: 15px;
	text-align: center;
	cursor: pointer;
	transition: background .15s, border-color .15s;
}

.innotech-ks__upload-feld:hover,
.innotech-ks__upload.ist-ueber .innotech-ks__upload-feld {
	background: #e0e0e0;
	border-color: var(--ks-akzent);
}

.innotech-ks__dateiname {
	margin: .5rem 0 0;
	font-size: 13.5px;
	color: #5a5a5a;
}

/* Abstand zwischen Upload und den Feldern darunter (Baujahr) */
.innotech-ks__upload + .innotech-ks__felder {
	margin-top: 1.4rem;
}

/* Leere Statuszeilen (Dateiname, Feldfehler) beanspruchen sonst Platz —
   dadurch stand das Baujahr-Feld unnoetig weit unter dem Upload. */
.innotech-ks__dateiname:empty,
.innotech-ks__feldfehler:empty {
	margin: 0;
	padding: 0;
	line-height: 0;
}

.innotech-ks__upload + .innotech-ks__felder {
	margin-top: .9rem;
}

/* Baujahr (seit v1.7.0 ein Zahlenfeld): Die Browser-Spinner laden zum Klicken
   ein, obwohl niemand von 1800 hochklickt – und in Safari verschieben sie das
   Feld gegenueber den uebrigen Eingaben. Deshalb weg. */
.innotech-ks__feld input[type="number"] {
	-moz-appearance: textfield;
	appearance: textfield;
}

.innotech-ks__feld input[type="number"]::-webkit-outer-spin-button,
.innotech-ks__feld input[type="number"]::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
