/* ==========================================================================
   Hero-Sektion (.hero)
   ========================================================================== */

.hero {
	overflow: hidden !important;
}

.hero .et_pb_image_wrap {
	width: 100% !important;
	display: block !important;
}

.hero .et_pb_image_wrap img {
	width: 100% !important;
	height: 500px !important;
	object-fit: cover !important;
	object-position: center 60% !important;
	display: block !important;
}

/* Über-uns: Teamfoto — Köpfe oben, daher top statt 60% */
.page-id-728 .hero .et_pb_image_wrap img {
	object-position: center 15% !important;
}

@media (max-width: 980px) {
	.hero .et_pb_image_wrap img {
		height: 360px !important;
	}
}

@media (max-width: 600px) {
	.hero .et_pb_image_wrap img {
		height: 240px !important;
	}
}

/* ==========================================================================
   Start-Hero — Typografische Einstiegssektion
   ========================================================================== */

.start-hero.et_pb_section {
	min-height: 60vh;
	display: flex !important;
	flex-direction: column !important;
	justify-content: center !important;
	padding-top: var(--space-16) !important;
	padding-bottom: var(--space-16) !important;
}

/* Column als Wrap-Grid: Module stapeln, Buttons nebeneinander */
.start-hero .et_pb_column {
	flex-direction: row !important;
	flex-wrap: wrap !important;
	align-items: flex-start !important;
	gap: 0 !important;
}

.start-hero-headline,
.start-hero-subline,
.start-hero-text {
	flex: 0 0 100% !important;
	width: 100% !important;
}

.start-hero .et_pb_button_module_wrapper {
	flex: 0 0 auto !important;
	width: auto !important;
	margin-right: var(--space-4) !important;
}

/* Modulabstände entfernen */
.start-hero-headline,
.start-hero-subline,
.start-hero-text {
	margin-top: 0 !important;
	margin-bottom: 0 !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	box-sizing: border-box;
}

.start-hero-headline .et_pb_heading_container,
.start-hero-subline .et_pb_heading_container {
	padding: 0 !important;
}

.start-hero-text .et_pb_text_inner p:last-child {
	padding-bottom: 0 !important;
	margin-bottom: 0 !important;
}

/* Hauptzeile: große Display-Headline */
.start-hero-headline .et_pb_module_header {
	font-family: var(--font-display) !important;
	font-size: clamp(40px, 6vw, 72px) !important;
	font-weight: var(--weight-semibold) !important;
	letter-spacing: var(--tracking-tight) !important;
	color: var(--color-primary) !important;
	line-height: var(--leading-tight) !important;
}

/* Subline: etwas kleiner, leichter */
.start-hero-subline .et_pb_module_header {
	font-family: var(--font-display) !important;
	font-size: clamp(22px, 3vw, 36px) !important;
	font-weight: var(--weight-light) !important;
	letter-spacing: var(--tracking-tight) !important;
	color: var(--color-primary) !important;
	line-height: var(--leading-tight) !important;
}

/* Fließtext: lesbare Breite, dezent */
.start-hero-text.et_pb_text {
	max-width: 640px;
}

.start-hero-text .et_pb_text_inner,
.start-hero-text .et_pb_text_inner p {
	font-size: 18px !important;
	font-weight: var(--weight-light) !important;
	line-height: var(--leading-body) !important;
	color: var(--color-text) !important;
}

@media (max-width: 980px) {
	.start-hero.et_pb_section {
		padding-top: var(--space-12) !important;
		padding-bottom: var(--space-12) !important;
	}
	.start-hero-subline .et_pb_module_header {
		font-size: clamp(32px, 7vw, 48px) !important;
	}
}

@media (max-width: 600px) {
	.start-hero.et_pb_section {
		padding-top: var(--space-8) !important;
		padding-bottom: var(--space-8) !important;
	}
}

/* ==========================================================================
   Hero-Elemente einzeln (Seitenkopf mit Foto + Verlauf, z. B. /bautraeger/)
   Klassen im Builder am jeweiligen Baustein unter "Advanced -> CSS Class" eintragen:
     hero-headline  Text-Baustein mit <p>,   Look einer h2, aber größer (28-48px, per --hero-headline-size änderbar)
     hero-eyebrow   Überschrift-Baustein h1, Erscheinungsbild wie .eyebrow, gleiche Farbe (--eyebrow-farbe)
     hero-subline   Text-Baustein mit <p>,   Erscheinungsbild wie normaler Absatz
   Alle drei weiß bzw. hell, da sie auf dem dunklen Verlauf über dem Foto liegen. Die globalen
   Regeln für h1/p (style.css) setzen vieles mit !important bzw. direkt am p-Element, daher hier
   mit höherer Spezifität (Klasse am Modul + Element).
   ========================================================================== */

/* Headline: <p> im Look einer h2 */
.et_pb_module.hero-headline .et_pb_text_inner,
.et_pb_module.hero-headline .et_pb_text_inner p {
	margin: 0;
	font-family: var(--font-heading);
	font-weight: var(--weight-light);
	font-size: var(--hero-headline-size, clamp(28px, 5vw, 48px));
	line-height: 1.15;
	letter-spacing: normal;
	text-transform: none;
	color: var(--color-surface);
}

/* Eyebrow: <h1> im Look von .eyebrow, Farbe zentral über --eyebrow-farbe (style.css) */
.et_pb_module.hero-eyebrow .et_pb_module_header,
.et_pb_module.hero-eyebrow h1 {
	margin: 0 !important;
	padding-bottom: 0 !important;
	font-family: var(--font-body) !important;
	font-weight: var(--weight-semibold) !important;
	font-size: clamp(12px, 3.7vw, 18px) !important;
	line-height: var(--leading-tight) !important;
	letter-spacing: var(--tracking-wide) !important;
	text-transform: uppercase !important;
	color: var(--eyebrow-farbe) !important;
}

/* Abstände im Hero (Divis Modulabstand von 30px wird per negativem margin-top auf die gewünschten
   Werte zurückgeholt). --hero-abstand-eyebrow = Lücke Headline -> Eyebrow, --hero-abstand-subline =
   Lücke Eyebrow -> Subline (jeweils zwischen den Modul-Boxen). */
.hero-eyebrow {
	--eyebrow-abstand: var(--hero-abstand-eyebrow, 16px);
}

.et_pb_module + .hero-eyebrow {
	margin-top: calc(var(--module-gutter, 30px) * -1 + var(--eyebrow-abstand));
}

.hero-eyebrow + .hero-subline {
	margin-top: calc(var(--module-gutter, 30px) * -1 + var(--hero-abstand-subline, 7px));
}

/* Subline: <p> im Look eines normalen Absatzes, hell auf dunklem Grund */
.et_pb_module.hero-subline .et_pb_text_inner,
.et_pb_module.hero-subline .et_pb_text_inner p {
	margin: 0;
	font-family: var(--font-body);
	font-weight: var(--weight-light);
	font-size: var(--text-body);
	line-height: var(--leading-body);
	letter-spacing: var(--tracking-wide);
	text-transform: none;
	color: var(--color-surface);
}

/* ==========================================================================
   Start-Hero-Buttons (Sallier-Blau, Farbe über --start-hero-btn-farbe änderbar): transparent mit Rand, erst beim Hover gefüllt (Muster von ".btn-secondary",
   style.css). Rand als inset box-shadow statt "border", damit sich die Größe zu den übrigen Buttons
   nicht ändert (die Grundregel setzt "border: none !important" beim Hover).
   ========================================================================== */

.start-hero .et_pb_button {
	background-color: transparent !important;
	color: var(--start-hero-btn-farbe, var(--color-primary)) !important;
	box-shadow: inset 0 0 0 1px var(--start-hero-btn-farbe, var(--color-primary));
}

.start-hero .et_pb_button:hover,
.start-hero .et_pb_button.is-aktiv:hover,
.start-hero .et_pb_button_module_wrapper .et_pb_button:hover {
	/* Im Start-Hero bewusst Sallier-Blau statt des Hover-Oranges der übrigen Buttons (Kundenwunsch) */
	background-color: var(--start-hero-btn-farbe, var(--color-primary)) !important;
	color: var(--color-surface) !important;
	box-shadow: inset 0 0 0 1px var(--start-hero-btn-farbe, var(--color-primary));
}

/* Aktiver Button im Start-Hero: gefüllt. "is-aktiv" setzt start-hero-buttons.js — anfangs der erste
   Button, danach immer der zuletzt überfahrene/fokussierte (springt beim Verlassen NICHT zurück).
   Fallback ohne JavaScript (Klasse "hero-btn-js" fehlt): erster Button gefüllt. */
.start-hero .et_pb_button.is-aktiv {
	background-color: var(--start-hero-btn-farbe, var(--color-primary)) !important;
	color: var(--color-surface) !important;
}

.start-hero:not(.hero-btn-js) .et_pb_button_module_wrapper:not(.et_pb_button_module_wrapper ~ .et_pb_button_module_wrapper) .et_pb_button {
	background-color: var(--start-hero-btn-farbe, var(--color-primary)) !important;
	color: var(--color-surface) !important;
}

/* Mobil: alle Start-Hero-Buttons gleich groß (volle Spaltenbreite, gleiche Höhe), untereinander mit
   engerem Abstand (Divi setzt pro Button 30px margin-top). Text zentriert. */
@media (max-width: 767px) {
	.start-hero .et_pb_button_module_wrapper {
		flex: 0 0 100% !important;
		width: 100% !important;
		margin-right: 0 !important;
	}

	.start-hero .et_pb_button_module_wrapper ~ .et_pb_button_module_wrapper {
		margin-top: 16px !important;
	}

	.start-hero .et_pb_button_module_wrapper .et_pb_button {
		display: block !important;
		width: 100% !important;
		max-width: none !important;
		box-sizing: border-box;
		text-align: center;
	}
}

/* Mobil: alle Start-Hero-Buttons durchgehend gefüllt (kein Hover auf Touchgeräten, daher keine
   Transparenz/"aktiv"-Logik). */
@media (max-width: 767px) {
	.start-hero .et_pb_button_module_wrapper .et_pb_button {
		background-color: var(--start-hero-btn-farbe, var(--color-primary)) !important;
		color: var(--color-surface) !important;
	}
}

/* Abstand Logo -> Buttons im Start-Hero: Divi addiert den Zeilenabstand der Section (60px) und den
   Margin-Top der Buttons (30px) zu 90px. Hier auf einen Wert zusammengeführt:
   --start-hero-abstand (Standard 30px) = Abstand zwischen den Zeilen der Section; der Margin-Top
   der Button-Wrapper entfällt. */
.start-hero.et_pb_section {
	row-gap: var(--start-hero-abstand, 30px) !important;
}

.start-hero .et_pb_button_module_wrapper {
	margin-top: 0 !important;
}

/* Start-Hero: Logo und Button-Reihe gleich breit und rechtsbündig abschließend. Gemeinsame Breite
   --start-hero-breite (Standard 700px, etwas mehr als die drei Buttons nebeneinander brauchen); auf
   schmalen Bildschirmen begrenzt auf die Spaltenbreite (dann sind Logo und die gestapelten,
   vollbreiten Buttons ebenfalls gleich breit). Die Buttons behalten ihre eigene Breite; der
   Restplatz verteilt sich gleichmäßig zwischen ihnen ("space-between"), Mindestabstand 16px. */
.start-hero {
	--start-hero-breite: 700px;
}

.start-hero .et_pb_row:not(:has(.et_pb_button_module_wrapper)) .et_pb_image {
	width: min(var(--start-hero-breite), 100%) !important;
	max-width: 100% !important;
}

.start-hero .et_pb_column:has(.et_pb_button_module_wrapper) {
	max-width: var(--start-hero-breite);
	justify-content: space-between;
	column-gap: var(--space-4) !important;
}

.start-hero .et_pb_button_module_wrapper {
	margin-right: 0 !important;
}

/* Das Logo-Bild füllt die Modulbreite (Divi setzt am Bild eine feste Höhe bei "width:auto", dadurch
   blieb es schmaler als das Modul). */
.start-hero .et_pb_row:not(:has(.et_pb_button_module_wrapper)) .et_pb_image .et_pb_image_wrap {
	width: 100% !important;
}

.start-hero .et_pb_row:not(:has(.et_pb_button_module_wrapper)) .et_pb_image .et_pb_image_wrap img {
	width: 100% !important;
	height: auto !important;
}

/* Unsichtbares (0 x 0 px) Duplikat-Logo in der Button-Reihe: zählt als Flex-Element samt Spaltenabstand
   und ließ den dritten Button in eine neue Zeile rutschen — ausgeblendet. */
.start-hero .et_pb_column:has(.et_pb_button_module_wrapper) > .et_pb_image {
	display: none !important;
}
