/* ==========================================================================
   Komponenten.
   Farben ausschließlich über die Token aus tokens.css – die geprüften
   Kombinationen stehen in tools/kontrast-pruefen.php.
   ========================================================================== */

/* --- Buttons ------------------------------------------------------------ */

.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-2xs);
	padding: var(--space-xs) var(--space-md);
	border: 2px solid var(--color-primary);
	border-radius: var(--radius-sm);
	background: var(--color-primary);
	color: var(--color-inverse-text);
	font-family: var(--font-display);
	font-size: var(--fs-sm);
	font-weight: var(--fw-medium);
	line-height: 1.3;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--transition-fast), border-color var(--transition-fast),
		transform var(--transition-fast), box-shadow var(--transition-fast);
}

.button:hover {
	background: var(--color-primary-hover);
	border-color: var(--color-primary-hover);
	color: var(--color-inverse-text);
	transform: translateY(-1px);
	box-shadow: var(--shadow-sm);
}

.button:active {
	transform: none;
	box-shadow: none;
}

.button--lg {
	padding: var(--space-sm) var(--space-lg);
	font-size: var(--fs-base);
}

.button--secondary {
	background: transparent;
	color: var(--color-primary-dark);
	border-color: var(--color-primary);
}

.button--secondary:hover {
	background: var(--color-primary-tint);
	border-color: var(--color-primary-hover);
	color: var(--color-primary-dark);
}

/* Auf dunklem Grund kehrt sich der Button um: heller Grund, dunkle Schrift. */
.button--onDark {
	background: var(--color-surface);
	border-color: var(--color-surface);
	color: var(--color-primary-dark);
}

.button--onDark:hover {
	background: var(--color-primary-tint);
	border-color: var(--color-primary-tint);
	color: var(--color-primary-dark);
}

.button--ghostOnDark {
	background: transparent;
	border-color: var(--color-primary-light);
	color: var(--color-inverse-text);
}

.button--ghostOnDark:hover {
	background: rgb(255 255 255 / 12%);
	border-color: var(--color-inverse-text);
	color: var(--color-inverse-text);
}

.button-row {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2xs) var(--space-sm);
	align-items: center;
}

/* --- Header ------------------------------------------------------------- */

.site-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: var(--color-surface);
	border-bottom: var(--rule);
}

/* Schmale Servicezeile über der Navigation: Erreichbarkeit auf einen Blick. */
.header-bar {
	background: var(--color-primary-dark);
	color: var(--color-inverse-text);
	font-size: var(--fs-xs);
}

.header-bar__inner {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: center;
	gap: var(--space-2xs) var(--space-md);
	padding-block: var(--space-3xs);
}

.header-bar__items {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2xs) var(--space-md);
	align-items: center;
}

.header-bar a {
	color: var(--color-inverse-text);
	font-weight: var(--fw-medium);
	text-decoration: none;
}

.header-bar a:hover {
	color: var(--color-primary-light);
	text-decoration: underline;
}

.header-bar__badge {
	display: inline-flex;
	align-items: center;
	gap: var(--space-3xs);
	color: var(--color-primary-light);
	font-weight: var(--fw-medium);
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

@media (max-width: 700px) {
	.header-bar__inner {
		justify-content: center;
	}

	.header-bar__badge {
		display: none; /* Auf kleinen Geräten zählt die Telefonnummer mehr. */
	}
}

/*
 * Reihenfolge im Markup: Logo, Aktionen, Navigation. Auf breiten Geräten holt
 * order die Navigation zwischen Logo und Button; auf schmalen bleibt sie hinten
 * und bricht als volle Zeile um.
 */
.site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-md);
	padding-block: var(--space-xs);
}

@media (min-width: 1101px) {
	.site-header__inner > .primary-nav {
		order: 1;
		margin-inline-start: auto;
	}

	.site-header__inner > .header-actions {
		order: 2;
	}
}

.site-logo {
	display: inline-flex;
	align-items: center;
	gap: var(--space-2xs);
	text-decoration: none;
}

.site-logo svg,
.site-logo img {
	width: auto;
	height: 52px;
	transition: transform var(--transition-base);
}

.site-logo:hover svg {
	transform: scale(1.03);
}

.site-logo__text {
	display: flex;
	flex-direction: column;
	font-family: var(--font-display);
	font-weight: var(--fw-black);
	font-size: var(--fs-md);
	color: var(--color-primary-dark);
	line-height: 1.05;
	letter-spacing: -0.01em;
}

.site-logo__claim {
	font-family: var(--font-accent);
	font-size: var(--fs-sm);
	font-weight: 600;
	color: var(--color-primary);
	letter-spacing: 0;
}

.header-actions {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
}

.nav-toggle {
	display: none;
	align-items: center;
	gap: var(--space-3xs);
	padding: var(--space-2xs) var(--space-xs);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	background: var(--color-surface);
	color: var(--color-primary-dark);
	font-family: var(--font-display);
	font-size: var(--fs-sm);
	font-weight: var(--fw-medium);
	cursor: pointer;
}

.nav-toggle__bars {
	display: grid;
	gap: 3px;
}

.nav-toggle__bars span {
	display: block;
	width: 18px;
	height: 2px;
	background: currentColor;
}

.primary-nav ul {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-md);
	margin: 0;
	padding: 0;
	list-style: none;
}

.primary-nav a {
	position: relative;
	display: block;
	padding-block: var(--space-3xs);
	font-family: var(--font-display);
	font-size: var(--fs-sm);
	font-weight: var(--fw-medium);
	text-decoration: none;
	color: var(--color-text);
}

/* Unterstreichung wächst aus der Mitte – ruhiger als ein Farbwechsel. */
.primary-nav a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 2px;
	background: var(--color-primary);
	transform: scaleX(0);
	transition: transform var(--transition-base);
}

/*
 * Menü und Button nie umbrechen. Bis 1100 px übernimmt das Burger-Menü, darüber
 * reicht der Platz für alle Punkte; zwischen 1101 und 1279 px enger setzen.
 */
.primary-nav a,
.header-actions .button {
	white-space: nowrap;
}

@media (min-width: 1101px) {
	.primary-nav ul {
		flex-wrap: nowrap;
	}
}

@media (min-width: 1101px) and (max-width: 1279px) {
	.primary-nav ul {
		gap: var(--space-sm);
	}

	.site-header__inner {
		gap: var(--space-sm);
	}
}

.primary-nav a:hover,
.primary-nav .current-menu-item > a {
	color: var(--color-primary-dark);
}

.primary-nav a:hover::after,
.primary-nav .current-menu-item > a::after {
	transform: scaleX(1);
}

@media (max-width: 1100px) {
	.nav-toggle {
		display: inline-flex;
	}

	.site-header__inner {
		flex-wrap: wrap;
	}

	.header-actions .button {
		display: none;
	}

	.primary-nav {
		display: none;
		width: 100%;
		border-top: var(--rule);
	}

	.primary-nav.is-open {
		display: block;
	}

	.primary-nav ul {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding-block: var(--space-2xs);
	}

	.primary-nav li + li {
		border-top: var(--rule);
	}

	.primary-nav a {
		padding-block: var(--space-xs);
		font-size: var(--fs-base);
	}

	.primary-nav a::after {
		display: none;
	}
}

/* --- Hero --------------------------------------------------------------- */

.hero {
	position: relative;
	display: grid;
	align-items: end;
	min-height: clamp(26rem, 22rem + 22vw, 40rem);
	overflow: hidden;
	background: var(--color-primary-dark);
	color: var(--color-inverse-text);
	isolation: isolate;
}

.hero__media {
	position: absolute;
	inset: 0;
	z-index: -2;
}

.hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	/*
	 * Etwas oberhalb der Mitte beschneiden. Bei Gebäudeaufnahmen liegt das
	 * Motiv fast immer im oberen Bildteil, unten ist Boden oder Gerüst.
	 * Für Querformat kaum ein Unterschied, für versehentlich hochkant
	 * hochgeladene Bilder deutlich besser als der Standard "center".
	 */
	object-position: center 38%;
}

/*
 * Der Verlauf sichert die Lesbarkeit unabhängig davon, wie hell das
 * hochgeladene Foto ist – Redakteure können kein Bild wählen, das den Text
 * unlesbar macht.
 */
.hero__overlay {
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(
			100deg,
			rgb(21 38 55 / 92%) 0%,
			rgb(21 38 55 / 78%) 42%,
			rgb(21 38 55 / 45%) 100%
		);
}

.hero__inner {
	padding-block: var(--space-2xl) var(--space-xl);
}

.hero__content {
	max-width: 46rem;
}

.hero__content > * + * {
	margin-top: var(--space-sm);
}

.hero .eyebrow {
	color: var(--color-primary-light);
}

.hero h1 {
	color: var(--color-inverse-text);
	text-shadow: 0 1px 2px rgb(0 0 0 / 25%);
}

.hero__text {
	font-size: var(--fs-md);
	max-width: 46ch;
	color: var(--color-primary-tint);
}

.hero__actions {
	margin-top: var(--space-md);
}

/* Ohne Bild bleibt der Hero eine ruhige Markenfläche. */
.hero--plain {
	background: linear-gradient(120deg, var(--color-primary-deep), var(--color-primary-dark) 65%, var(--color-primary-hover));
	min-height: auto;
}

.hero--plain .hero__inner {
	padding-block: var(--space-xl);
}

/* Kompakte Kopfzone für Unterseiten ohne eigenen Hero-Baustein. */
.page-head {
	background: var(--color-surface-alt);
	border-bottom: var(--rule);
	padding-block: var(--space-lg);
}

.page-head__inner > * + * {
	margin-top: var(--space-2xs);
}

/* --- Über uns: Zeitungsartikel ----------------------------------------- */

.about-article .about-intro {
	font-size: var(--fs-md);
	font-weight: var(--fw-medium);
	line-height: 1.6;
	color: var(--color-primary-dark);
	padding-bottom: var(--space-md);
	border-bottom: var(--rule);
}

/* Foto im Text mit Bildunterschrift, wie in der Zeitung. Auf dem Smartphone
   über die volle Breite, ab Tablet rechts im Text umflossen. */
.about-article .about-photo {
	margin: var(--space-md) calc(var(--container-pad) * -1);
}

.about-photo__img {
	display: block;
	width: 100%;
	height: auto;
}

.about-photo__caption {
	margin-top: var(--space-2xs);
	padding: 0 var(--container-pad) var(--space-2xs);
	border-bottom: 1px solid var(--color-border);
	font-size: var(--fs-sm);
	font-style: italic;
	line-height: 1.45;
	color: var(--color-text-muted);
}

@media (min-width: 768px) {
	.about-article .about-photo {
		float: right;
		width: 48%;
		margin: 0.35rem 0 var(--space-sm) var(--space-md);
	}

	.about-photo__img {
		border-radius: var(--radius-sm);
	}

	.about-photo__caption {
		padding-inline: 0;
	}
}

/* Initiale am Beginn der Geschichte. */
.about-dropcap::first-letter {
	float: left;
	margin: 0.08em 0.12em 0 0;
	font-family: var(--font-display);
	font-size: 3.4em;
	font-weight: var(--fw-black);
	line-height: 0.82;
	color: var(--color-primary);
}

/* Unterschrift in Handschrift (Caveat aus dem Logo-Slogan). */
.about-article .about-signature {
	clear: both;
	display: flex;
	flex-direction: column;
	padding-top: var(--space-xs);
}

.about-signature__name {
	font-family: var(--font-accent);
	font-size: 2.1rem;
	line-height: 1.1;
	color: var(--color-primary-dark);
}

.about-signature__role {
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

.about-article > h2 {
	clear: both;
}

/* Zeitstrahl. */
.about-article .timeline {
	list-style: none;
	padding: 0;
	border-left: 2px solid var(--color-primary-tint-strong);
}

.timeline li {
	position: relative;
	padding: 0 0 var(--space-md) var(--space-md);
}

.timeline li::before {
	content: "";
	position: absolute;
	left: -7px;
	top: 0.3em;
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background: var(--color-primary);
	box-shadow: 0 0 0 3px var(--color-surface, #fff);
}

.timeline__year {
	display: block;
	font-family: var(--font-display);
	font-size: var(--fs-sm);
	font-weight: var(--fw-black);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--color-primary);
}

.timeline li strong {
	display: block;
	color: var(--color-primary-dark);
}

.about-article .about-values {
	padding-left: 1.2em;
}

/* --- Vertrauensleiste --------------------------------------------------- */

.trust-bar {
	background: var(--color-surface);
	border-bottom: var(--rule);
}

.trust-bar__grid {
	display: grid;
	gap: var(--space-sm);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr));
	padding-block: var(--space-md);
}

.trust-item {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding-inline-start: var(--space-sm);
	border-inline-start: 3px solid var(--color-primary);
}

.trust-item__wert {
	font-family: var(--font-display);
	font-size: var(--fs-md);
	font-weight: var(--fw-black);
	color: var(--color-primary-dark);
	line-height: 1.2;
}

.trust-item__text {
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

.section--dark .trust-item {
	border-color: var(--color-primary-light);
}

.section--dark .trust-item__wert {
	color: var(--color-inverse-text);
}

.section--dark .trust-item__text {
	color: var(--color-primary-tint-strong);
}

/* --- Zertifizierungen --------------------------------------------------- */

.zert-strip {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--space-sm) var(--space-lg);
}

.zert-item {
	display: inline-flex;
	align-items: center;
	gap: var(--space-2xs);
	padding: var(--space-2xs) var(--space-sm);
	border: var(--rule);
	border-radius: var(--radius-pill);
	background: var(--color-surface);
	color: var(--color-primary-dark);
	font-family: var(--font-display);
	font-size: var(--fs-sm);
	font-weight: var(--fw-medium);
	text-decoration: none;
}

a.zert-item:hover {
	border-color: var(--color-primary);
	color: var(--color-primary-dark);
}

.zert-item img {
	height: 26px;
	width: auto;
}

/* Partner mit Logo: Logo gut sichtbar statt Mini-Symbol im Chip. */
.zert-item--logo {
	gap: var(--space-sm);
	padding: var(--space-xs) var(--space-md) var(--space-xs) var(--space-xs);
	border-radius: var(--radius-md);
}

.zert-item--logo img {
	height: 64px;
	width: auto;
	max-width: 160px;
	object-fit: contain;
}

/* --- Karten ------------------------------------------------------------- */

.card {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: var(--rule);
	border-radius: var(--radius-md);
	background: var(--color-surface);
	transition: border-color var(--transition-base), box-shadow var(--transition-base),
		transform var(--transition-base);
}

.card__media {
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--color-surface-alt);
}

.card__media--platzhalter {
	display: grid;
	place-items: center;
	background: linear-gradient(135deg, var(--color-primary-tint), var(--color-primary-tint-strong));
	color: var(--color-primary);
}

.card__media--portrait {
	aspect-ratio: 4 / 5;
}

.card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--transition-base);
}

.card__body {
	display: flex;
	flex-direction: column;
	gap: var(--space-2xs);
	padding: var(--space-md);
}

.card__title {
	font-size: var(--fs-md);
	font-weight: var(--fw-medium);
}

.card__title a {
	text-decoration: none;
	color: var(--color-primary-dark);
}

/* Ganze Karte klickbar, ohne verschachtelte Links im Markup. */
.card__title a::after {
	content: "";
	position: absolute;
	inset: 0;
}

.card--link:hover {
	border-color: var(--color-primary);
	box-shadow: var(--shadow-md);
	transform: translateY(-2px);
}

.card--link:hover .card__media img {
	transform: scale(1.04);
}

.card--link:has(a:focus-visible) {
	outline: var(--focus-ring);
	outline-offset: var(--focus-offset);
}

.card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-3xs);
	margin-top: auto;
	padding-top: var(--space-2xs);
	font-size: var(--fs-xs);
	color: var(--color-text-muted);
}

/* Meta-Angaben als Chips – trennt Ort, Objektart und Leistung sichtbar. */
.chip {
	display: inline-block;
	padding: 2px var(--space-2xs);
	border-radius: var(--radius-pill);
	background: var(--color-primary-tint);
	color: var(--color-primary-dark);
	font-size: var(--fs-xs);
	line-height: 1.6;
}

/* Mitarbeiterkarte mit rundem Porträt. */
.team-card {
	text-align: center;
}

.team-card__avatar {
	width: 168px;
	margin: var(--space-md) auto 0;
	padding: 4px;
	border-radius: 50%;
	background: var(--color-surface);
	box-shadow: 0 0 0 3px var(--color-primary-tint-strong), 0 6px 18px rgba(21, 38, 55, 0.12);
}

.team-card__avatar img {
	display: block;
	width: 160px;
	height: 160px;
	border-radius: 50%;
	object-fit: cover;
}

.team-card__avatar--initialen span,
.team-card__avatar--offen span {
	display: grid;
	place-items: center;
	width: 160px;
	height: 160px;
	border-radius: 50%;
	font-family: var(--font-display);
	font-weight: var(--fw-black);
}

.team-card__avatar--initialen span {
	background: var(--color-primary-tint);
	color: var(--color-primary-dark);
	font-size: 2.75rem;
	letter-spacing: 0.04em;
}

/* Freier Platz: gestrichelter Kreis statt Foto. */
.team-card--offen {
	border-style: dashed;
	background: var(--color-surface-alt);
}

.team-card__avatar--offen {
	background: transparent;
	box-shadow: none;
}

.team-card__avatar--offen span {
	border: 2px dashed var(--color-primary);
	color: var(--color-primary);
	font-size: 3.5rem;
	font-weight: var(--fw-regular);
}

/* Smartphone: Team zweispaltig mit kleineren Kreisen statt sechs Karten untereinander. */
@media (max-width: 599px) {
	.team-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--space-xs);
	}

	.team-card .card__body {
		padding: var(--space-xs) var(--space-2xs) var(--space-sm);
	}

	.team-card .card__title {
		font-size: var(--fs-sm);
	}

	.team-card .team-card__role,
	.team-card p {
		font-size: var(--fs-xs);
	}

	.team-card__avatar {
		width: 104px;
		margin-top: var(--space-sm);
		padding: 3px;
	}

	.team-card__avatar img,
	.team-card__avatar--initialen span,
	.team-card__avatar--offen span {
		width: 98px;
		height: 98px;
	}

	.team-card__avatar--initialen span {
		font-size: 1.75rem;
	}

	.team-card__avatar--offen span {
		font-size: 2.25rem;
	}
}

.team-card__role {
	font-family: var(--font-display);
	font-weight: var(--fw-medium);
	color: var(--color-primary);
}

.team-card__seit {
	font-size: var(--fs-xs);
	color: var(--color-text-muted);
}

/* --- Leistungsumfang ---------------------------------------------------- */

.feature-list {
	display: grid;
	gap: var(--space-md);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
	list-style: none;
	padding: 0;
	margin: 0;
}

.feature {
	display: flex;
	gap: var(--space-sm);
	align-items: flex-start;
	padding: var(--space-md);
	border: var(--rule);
	border-radius: var(--radius-md);
	background: var(--color-surface);
	transition: border-color var(--transition-base), box-shadow var(--transition-base);
}

.feature-list > li {
	display: flex;
}

.feature-list > li > .feature {
	flex: 1;
}

a.feature--link {
	color: inherit;
	text-decoration: none;
}

a.feature--link .feature__title::after {
	content: " →";
	color: var(--color-primary);
}

a.feature--link:focus-visible {
	outline: var(--focus-ring);
	outline-offset: var(--focus-offset);
}

.feature:hover {
	border-color: var(--color-primary);
	box-shadow: var(--shadow-sm);
}

.feature__icon {
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	width: 3rem;
	height: 3rem;
	border-radius: var(--radius-md);
	background: var(--color-primary-tint);
	color: var(--color-primary);
	overflow: hidden;
}

.feature__icon img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Beide als Block – sonst laufen Titel und Text bei kurzen Angaben
   in dieselbe Zeile, weil es im Markup Inline-Elemente sind. */
.feature__title {
	display: block;
	font-family: var(--font-display);
	font-size: var(--fs-base);
	font-weight: var(--fw-medium);
	color: var(--color-primary-dark);
	line-height: 1.3;
}

.feature__text {
	display: block;
	margin-top: var(--space-3xs);
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

/* --- Ablauf ------------------------------------------------------------- */

.steps {
	counter-reset: step;
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	gap: var(--space-lg);
}

.steps__item {
	position: relative;
	padding-inline-start: 4.5rem;
}

.steps__item::before {
	counter-increment: step;
	content: counter(step);
	position: absolute;
	inset-inline-start: 0;
	top: 0;
	display: grid;
	place-items: center;
	width: 3rem;
	height: 3rem;
	border-radius: 50%;
	background: var(--color-primary);
	color: var(--color-inverse-text);
	font-family: var(--font-display);
	font-size: var(--fs-md);
	font-weight: var(--fw-black);
	z-index: 1;
}

/* Verbindungslinie zwischen den Schritten, beim letzten ausgeblendet. */
.steps__item::after {
	content: "";
	position: absolute;
	inset-inline-start: calc(1.5rem - 1px);
	top: 3rem;
	bottom: calc(var(--space-lg) * -1);
	width: 2px;
	background: var(--color-primary-tint-strong);
}

.steps__item:last-child::after {
	display: none;
}

.steps__title {
	font-size: var(--fs-md);
	font-weight: var(--fw-medium);
	color: var(--color-primary-dark);
	padding-top: 0.35rem;
}

.steps__text {
	margin-top: var(--space-3xs);
	color: var(--color-text-muted);
}

/* --- Vorteilsliste mit Haken -------------------------------------------- */

.check-list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	gap: var(--space-2xs);
}

.check-list li {
	position: relative;
	padding-inline-start: 1.9rem;
}

.check-list li::before {
	content: "";
	position: absolute;
	inset-inline-start: 0;
	top: 0.42em;
	width: 1.15rem;
	height: 1.15rem;
	border-radius: 50%;
	background: var(--color-primary) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / 0.72rem no-repeat;
}

.section--dark .check-list li::before {
	background-color: var(--color-primary-light);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23123852' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
}

/* --- Preisrahmen -------------------------------------------------------- */

.price-table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--fs-sm);
}

.price-table caption {
	text-align: start;
	padding-bottom: var(--space-2xs);
	color: var(--color-text-muted);
}

.price-table th,
.price-table td {
	padding: var(--space-xs) var(--space-sm);
	text-align: start;
	border-bottom: var(--rule);
}

.price-table thead th {
	font-family: var(--font-display);
	font-size: var(--fs-xs);
	font-weight: var(--fw-medium);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--color-primary-dark);
	background: var(--color-primary-tint);
	border-bottom: 2px solid var(--color-primary);
}

.price-table tbody tr:nth-child(even) {
	background: var(--color-surface-alt);
}

.price-table td:last-child {
	font-family: var(--font-display);
	font-weight: var(--fw-medium);
	color: var(--color-primary-dark);
	white-space: nowrap;
}

.table-scroll {
	overflow-x: auto;
	border-radius: var(--radius-md);
	border: var(--rule);
}

/* Schmale Handys: Preis darf umbrechen, statt die Tabelle seitlich scrollen zu lassen. */
@media (max-width: 479px) {
	.price-table th,
	.price-table td {
		padding-inline: var(--space-xs);
	}

	.price-table td:last-child {
		white-space: normal;
	}
}

/* --- Akkordeon (FAQ, Gesetzliche Vorgaben) ------------------------------ */

.faq-list {
	border-top: var(--rule);
}

.faq-item {
	border-bottom: var(--rule);
}

.faq-item__question {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--space-sm);
	padding-block: var(--space-sm);
	font-family: var(--font-display);
	font-size: var(--fs-md);
	font-weight: var(--fw-medium);
	color: var(--color-primary-dark);
	cursor: pointer;
	list-style: none;
}

.faq-item__question::-webkit-details-marker {
	display: none;
}

.faq-item__question::after {
	content: "";
	flex: 0 0 auto;
	width: 1.25rem;
	height: 1.25rem;
	margin-top: 0.2em;
	background: currentColor;
	mask: 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.5' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform var(--transition-base);
}

.faq-item[open] .faq-item__question::after {
	transform: rotate(180deg);
}

.faq-item__question:hover {
	color: var(--color-primary);
}

.faq-item__answer {
	padding-bottom: var(--space-md);
	max-width: 70ch;
}

.faq-item__quelle {
	display: block;
	margin-top: var(--space-2xs);
	font-size: var(--fs-xs);
	color: var(--color-text-muted);
}

/* --- Bewertungen -------------------------------------------------------- */

.review {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	padding: var(--space-md);
	border: var(--rule);
	border-radius: var(--radius-md);
	background: var(--color-surface);
}

.review__stars {
	display: flex;
	gap: 2px;
	color: var(--color-warning);
	font-size: var(--fs-md);
	line-height: 1;
}

.review__text {
	flex: 1;
	color: var(--color-text);
}

.review__text::before {
	content: "„";
}

.review__text::after {
	content: "“";
}

.review__author {
	display: flex;
	align-items: center;
	gap: var(--space-2xs);
	padding-top: var(--space-2xs);
	border-top: var(--rule);
}

.review__avatar {
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 50%;
	overflow: hidden;
	background: var(--color-primary-tint);
	color: var(--color-primary-dark);
	font-family: var(--font-display);
	font-size: var(--fs-sm);
	font-weight: var(--fw-black);
}

.review__avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.review__name {
	font-weight: var(--fw-medium);
	color: var(--color-primary-dark);
}

.review__meta {
	font-size: var(--fs-xs);
	color: var(--color-text-muted);
}

/* --- Partner-Baustein --------------------------------------------------- */

.partner-logo {
	display: inline-grid;
	place-items: center;
	padding: var(--space-md);
	border-radius: var(--radius-md);
	background: var(--color-surface);
	box-shadow: var(--shadow-sm);
}

.partner-logo img {
	/* Das Sto-Signet bringt viel Weißraum mit – deshalb größer darstellen. */
	width: min(240px, 60vw);
	height: auto;
}

/* --- CTA ---------------------------------------------------------------- */

.cta-band {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	padding: var(--space-xl) var(--space-md);
	border-radius: var(--radius-lg);
	background: linear-gradient(120deg, var(--color-primary-deep), var(--color-primary-dark) 60%, var(--color-primary-hover));
	color: var(--color-inverse-text);
	text-align: center;
}

.cta-band__media {
	position: absolute;
	inset: 0;
	z-index: -2;
}

.cta-band__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cta-band__overlay {
	position: absolute;
	inset: 0;
	z-index: -1;
	background: rgb(21 38 55 / 86%);
}

.cta-band__inner {
	max-width: 52ch;
	margin-inline: auto;
}

.cta-band__inner > * + * {
	margin-top: var(--space-sm);
}

.cta-band h2 {
	color: var(--color-inverse-text);
}

.cta-band p {
	color: var(--color-primary-tint);
}

.cta-band .button-row {
	justify-content: center;
	margin-top: var(--space-md);
}

/* --- Filterleiste ------------------------------------------------------- */

.filter-bar {
	padding: var(--space-md);
	border: var(--rule);
	border-radius: var(--radius-md);
	background: var(--color-surface-alt);
}

.filter-bar__fields {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: var(--space-sm);
}

.filter-bar__field {
	display: flex;
	flex-direction: column;
	gap: var(--space-3xs);
	min-width: 180px;
	flex: 1 1 180px;
}

.filter-bar label {
	font-family: var(--font-display);
	font-size: var(--fs-xs);
	font-weight: var(--fw-medium);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--color-primary-dark);
}

.filter-bar__actions {
	display: flex;
	gap: var(--space-2xs);
	flex-wrap: wrap;
}

.result-count {
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

/* --- Formulare ---------------------------------------------------------- */

.search-form {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2xs);
	max-width: 34rem;
}

input[type="search"],
input[type="text"],
input[type="email"],
input[type="tel"],
textarea,
select {
	width: 100%;
	padding: var(--space-2xs) var(--space-xs);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	background: var(--color-surface);
	color: var(--color-text);
	font: inherit;
	font-size: var(--fs-sm);
	transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

input:focus,
textarea:focus,
select:focus {
	border-color: var(--color-primary);
	box-shadow: 0 0 0 3px var(--color-primary-tint-strong);
	outline: none;
}

input[type="search"] {
	flex: 1 1 12rem;
	min-width: 0;
	width: auto;
}

textarea {
	min-height: 9rem;
	resize: vertical;
}

.kontakt-layout {
	display: grid;
	gap: var(--space-lg);
	grid-template-columns: 1fr;
}

@media (min-width: 900px) {
	.kontakt-layout {
		grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
		gap: var(--space-xl);
	}
}

.kontakt-daten {
	align-self: start;
	padding: var(--space-lg);
	border-radius: var(--radius-md);
	background: var(--color-primary-tint);
	border: 1px solid var(--color-primary-tint-strong);
}

.kontakt-daten h2 {
	font-size: var(--fs-lg);
}

.kontakt-daten__item + .kontakt-daten__item {
	margin-top: var(--space-md);
	padding-top: var(--space-md);
	border-top: 1px solid var(--color-primary-tint-strong);
}

.kontakt-daten__label {
	display: block;
	font-family: var(--font-display);
	font-size: var(--fs-xs);
	font-weight: var(--fw-medium);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--color-primary);
	margin-bottom: 2px;
}

.kontakt-daten__wert {
	font-size: var(--fs-md);
	color: var(--color-primary-dark);
}

.kontakt-daten a {
	font-weight: var(--fw-medium);
}

.form-row {
	display: grid;
	gap: var(--space-sm);
	grid-template-columns: 1fr;
}

@media (min-width: 600px) {
	.form-row {
		grid-template-columns: 1fr 1fr;
	}
}

.form-field {
	display: flex;
	flex-direction: column;
	gap: var(--space-3xs);
}

.form-field label {
	font-size: var(--fs-sm);
	font-weight: var(--fw-medium);
	color: var(--color-primary-dark);
}

.form-field--check label {
	display: flex;
	gap: var(--space-2xs);
	align-items: flex-start;
	font-weight: var(--fw-regular);
	color: var(--color-text);
}

.form-field--check input {
	margin-top: 0.3em;
	flex: 0 0 auto;
	width: auto;
}

.form-field [aria-invalid="true"] {
	border-color: var(--color-error);
}

.form-error {
	color: var(--color-error);
	font-size: var(--fs-sm);
	font-weight: var(--fw-medium);
}

.form-notice {
	padding: var(--space-sm) var(--space-md);
	border-inline-start: 4px solid;
	border-radius: var(--radius-sm);
}

.form-notice--success {
	border-color: var(--color-success);
	background: color-mix(in srgb, var(--color-success) 10%, var(--color-surface));
}

.form-notice--error {
	border-color: var(--color-error);
	background: color-mix(in srgb, var(--color-error) 10%, var(--color-surface));
}

/* Honeypot: aus dem Blickfeld, aber nicht display:none –
   manche Bots erkennen und überspringen ausgeblendete Felder. */
.honeypot {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* --- Galerie ------------------------------------------------------------ */

.gallery-grid {
	display: grid;
	gap: var(--space-2xs);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr));
}

.gallery-grid img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--radius-sm);
}

/* Erstes Bild größer – gibt der Galerie einen Anker. */
@media (min-width: 700px) {
	.gallery-grid > :first-child {
		grid-column: span 2;
		grid-row: span 2;
	}

	.gallery-grid > :first-child img {
		aspect-ratio: 4 / 3;
		height: 100%;
	}
}

/* --- Paginierung -------------------------------------------------------- */

.pagination {
	margin-top: var(--space-lg);
}

/* paginate_links( type => list ) vergibt die Klasse "page-numbers" sowohl an
   die <ul> als auch an die einzelnen Links. Die Item-Regel wird deshalb über
   das <li> gescoped – sonst erbt die Liste selbst Rahmen und inline-block. */
.pagination ul.page-numbers {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-3xs);
	margin: 0;
	padding: 0;
	list-style: none;
}

.pagination li .page-numbers {
	display: inline-block;
	min-width: 2.5rem;
	padding: var(--space-2xs) var(--space-xs);
	border: var(--rule);
	border-radius: var(--radius-sm);
	font-family: var(--font-display);
	font-size: var(--fs-sm);
	font-weight: var(--fw-medium);
	text-align: center;
	text-decoration: none;
	color: var(--color-primary-dark);
}

.pagination li a.page-numbers:hover {
	border-color: var(--color-primary);
	background: var(--color-primary-tint);
}

.pagination li .page-numbers.current {
	background: var(--color-primary);
	border-color: var(--color-primary);
	color: var(--color-inverse-text);
}

/* --- Footer ------------------------------------------------------------- */

.site-footer {
	margin-top: var(--section-gap);
	padding-block: var(--space-xl) var(--space-md);
	background: var(--color-primary-dark);
	color: var(--color-inverse-text);
}

.site-footer a {
	color: var(--color-inverse-text);
	text-decoration: none;
}

.site-footer a:hover {
	color: var(--color-primary-light);
	text-decoration: underline;
}

/* Auf dem dunklen Grund muss der aufgehellte Markenton verwendet werden –
   --color-primary käme dort nur auf 2,04:1. */
.site-footer .eyebrow,
.site-footer .slogan {
	color: var(--color-primary-light);
}

.site-footer__grid {
	display: grid;
	gap: var(--space-lg);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr));
}

.site-footer__logo svg,
.site-footer__logo img {
	height: 64px;
	width: auto;
}

.site-footer ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-footer li + li {
	margin-top: var(--space-3xs);
}

.site-footer__col > * + * {
	margin-top: var(--space-2xs);
}

.footer-badge {
	display: inline-flex;
	align-items: center;
	gap: var(--space-3xs);
	margin-top: var(--space-2xs);
	padding: var(--space-3xs) var(--space-2xs);
	border: 1px solid var(--color-primary-light);
	border-radius: var(--radius-sm);
	color: var(--color-primary-light);
	font-family: var(--font-display);
	font-size: var(--fs-xs);
	font-weight: var(--fw-medium);
}

.site-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm) var(--space-md);
	justify-content: space-between;
	align-items: center;
	margin-top: var(--space-xl);
	padding-top: var(--space-md);
	border-top: 1px solid rgb(255 255 255 / 20%);
	font-size: var(--fs-sm);
}

.site-footer__bottom ul {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm);
}

.site-footer__bottom li + li {
	margin-top: 0;
}

/* Social-Links: 44 px Klickfläche (WCAG 2.5.5), Symbol erbt die Textfarbe. */
.footer-social {
	display: flex;
	gap: var(--space-2xs);
}

.site-footer .footer-social li + li {
	margin-top: 0;
}

.footer-social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border: 1px solid rgb(255 255 255 / 35%);
	border-radius: 50%;
	transition: border-color .2s, color .2s;
}

.footer-social a:hover,
.footer-social a:focus-visible {
	border-color: var(--color-primary-light);
	color: var(--color-primary-light);
}

.footer-social__icon {
	width: 22px;
	height: 22px;
}

/* --- Hinweise ----------------------------------------------------------- */

.notice-empty {
	padding: var(--space-lg);
	border: 1px dashed var(--color-border);
	border-radius: var(--radius-md);
	background: var(--color-surface-alt);
	color: var(--color-text-muted);
	text-align: center;
}

.breadcrumb {
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

.breadcrumb a {
	color: var(--color-primary-dark);
}

/* --- Fließtext (Ratgeber, Rechtstexte, einfache Seiten) ----------------- */

.prose > * + * {
	margin-top: var(--space-sm);
}

.prose > h2 {
	margin-top: var(--space-lg);
	font-size: var(--fs-lg);
}

.prose > h3 {
	margin-top: var(--space-md);
}

.prose li + li {
	margin-top: 0.35em;
}

.prose table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--fs-sm);
}

.prose :is(th, td) {
	padding: 0.5em 0.75em;
	border-bottom: 1px solid var(--color-border);
	text-align: left;
	vertical-align: top;
}

.prose figure {
	margin-block: var(--space-md);
}

/* --- Anfrageformular: Auswahlfelder und Foto-Upload ---------------------- */

@media (min-width: 900px) {
	.form-row--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

select {
	appearance: none;
	padding-inline-end: 2.25rem;
	background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
	background-position: calc(100% - 1.1rem) 50%, calc(100% - 0.75rem) 50%;
	background-size: 0.35rem 0.35rem;
	background-repeat: no-repeat;
}

input[type="file"] {
	width: 100%;
	padding: var(--space-xs);
	border: 1px dashed var(--color-border);
	border-radius: var(--radius-sm);
	background: var(--color-surface-alt);
	font-size: var(--fs-sm);
}

.form-hint {
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

.form-field label small {
	font-weight: var(--fw-regular);
	color: var(--color-text-muted);
}

/* --- Mobile Kontaktleiste ------------------------------------------------ */

.mobile-cta {
	display: none;
}

@media (max-width: 767px) {
	.mobile-cta {
		position: fixed;
		inset: auto 0 0 0;
		z-index: 50;
		display: flex;
		gap: var(--space-2xs);
		padding: var(--space-2xs) var(--space-sm) calc(var(--space-2xs) + env(safe-area-inset-bottom));
		background: var(--color-surface);
		box-shadow: 0 -2px 12px rgb(0 0 0 / 12%);
	}

	.mobile-cta__item {
		flex: 1 1 0;
		padding: 0.8rem var(--space-xs);
		border: 2px solid var(--color-primary-dark);
		border-radius: var(--radius-sm);
		color: var(--color-primary-dark);
		font-family: var(--font-display);
		font-weight: var(--fw-medium);
		text-align: center;
		text-decoration: none;
	}

	.mobile-cta__item--primary {
		background: var(--color-primary-dark);
		color: var(--color-surface);
	}

	/* Platz schaffen, damit die Leiste den Footer nicht verdeckt. */
	body:has(.mobile-cta) {
		padding-bottom: calc(4.25rem + env(safe-area-inset-bottom));
	}
}

.review-summary {
	margin-top: var(--space-lg);
	text-align: center;
	font-size: var(--fs-sm);
}

/* --- Logo (Rasterdatei bis zur Vektor-Lieferung) ------------------------- */

@media (max-width: 479px) {
	.site-logo img {
		height: 40px;
	}
}

/* Das Logo hat einen weißen Grund – im dunklen Footer auf heller Fläche. */
.site-footer__logo-plate {
	display: inline-block;
	padding: var(--space-2xs) var(--space-xs);
	border-radius: var(--radius-sm);
	background: var(--color-surface);
	line-height: 0;
}

.site-footer__logo-plate img {
	height: 56px;
	width: auto;
}

/* --- Bewertungs-Karussell ------------------------------------------------
   Reines CSS-Scroll-Snap: wischbar auf dem Handy, mit Shift+Mausrad oder
   Trackpad am Rechner. Die Pfeile (main.js) blättern um eine Karte. */

.review-carousel {
	position: relative;
}

.review-carousel__track {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 86%;
	gap: var(--space-sm);
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: 2px;
	padding: 2px 2px var(--space-sm);
	scrollbar-width: none;
}

.review-carousel__track::-webkit-scrollbar {
	display: none;
}

.review-carousel__track > .review,
.review-carousel__track > .card {
	scroll-snap-align: start;
}

/* Passen alle Karten nebeneinander, sind die Pfeile überflüssig (main.js). */
.review-carousel.is-statisch .review-carousel__nav {
	display: none;
}

@media (min-width: 640px) {
	.review-carousel__track {
		grid-auto-columns: calc((100% - var(--space-sm)) / 2);
	}
}

@media (min-width: 1000px) {
	.review-carousel__track {
		grid-auto-columns: calc((100% - 2 * var(--space-sm)) / 3);
	}
}

.review-carousel__nav {
	display: flex;
	justify-content: center;
	gap: var(--space-2xs);
	margin-top: var(--space-sm);
}

.review-carousel__btn {
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 2px solid var(--color-primary);
	border-radius: 50%;
	background: var(--color-surface);
	color: var(--color-primary);
	cursor: pointer;
	transition: background var(--transition-fast), color var(--transition-fast);
}

.review-carousel__btn:hover:not(:disabled) {
	background: var(--color-primary);
	color: var(--color-inverse-text);
}

.review-carousel__btn:disabled {
	opacity: 0.35;
	cursor: default;
}

/* --- Referenz: Projektkopf und Projekttagebuch -------------------------- */

.projekt-kopf {
	display: grid;
	gap: var(--space-lg);
	align-items: start;
}

@media (min-width: 900px) {
	.projekt-kopf {
		grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
	}
}

.projekt-kopf__bild {
	border-radius: var(--radius-md);
	overflow: hidden;
}

.projekt-kopf__bild img {
	width: 100%;
	max-height: 640px;
	object-fit: cover;
}

.projekt-fakten {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
	gap: var(--space-sm);
	margin: 0;
	padding: var(--space-md);
	border-radius: var(--radius-md);
	background: var(--color-primary-tint);
}

.projekt-fakten dt {
	font-family: var(--font-display);
	font-size: var(--fs-xs);
	font-weight: var(--fw-medium);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--color-primary);
}

.projekt-fakten dd {
	margin: 0;
	color: var(--color-primary-dark);
	font-weight: var(--fw-medium);
}

.tagebuch {
	margin-top: var(--space-xl);
}

.tagebuch__liste {
	margin: var(--space-lg) 0 0;
	padding: 0;
	list-style: none;
}

.tagebuch__eintrag {
	position: relative;
	display: grid;
	grid-template-columns: 2.75rem minmax(0, 1fr);
	gap: var(--space-sm);
	padding-bottom: var(--space-lg);
}

/* Verbindungslinie des Zeitstrahls */
.tagebuch__eintrag:not(:last-child)::before {
	content: "";
	position: absolute;
	top: 2.75rem;
	bottom: 0;
	left: calc(1.375rem - 1px);
	width: 2px;
	background: var(--color-primary-tint-strong);
}

.tagebuch__marke {
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 50%;
	background: var(--color-primary);
	color: var(--color-inverse-text);
	font-family: var(--font-display);
	font-weight: var(--fw-black);
}

.tagebuch__datum {
	display: block;
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

.tagebuch__inhalt h3 {
	margin-top: 0.15em;
}

.tagebuch__bilder {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
	gap: var(--space-2xs);
}

.tagebuch__bilder a {
	display: block;
	border-radius: var(--radius-sm);
	overflow: hidden;
}

.tagebuch__bilder img {
	width: 100%;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	transition: transform var(--transition-base);
}

.tagebuch__bilder a:hover img {
	transform: scale(1.03);
}

/* --- Karriere: Stellenanzeigen und Bewerbungsformular -------------------- */

.stelle-eckdaten {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2xs);
}

.stelle-abschnitt h2 {
	margin-bottom: 0;
}

.stelle-card .card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2xs);
}

.stelle-card__mehr {
	margin-top: auto;
	font-weight: var(--fw-semibold, 600);
	color: var(--color-primary);
}

.bewerbung-form__gruppe {
	margin: 0;
	padding: var(--space-sm);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	background: var(--color-surface, #fff);
}

.bewerbung-form__gruppe legend {
	padding-inline: var(--space-2xs);
	font-weight: var(--fw-bold, 700);
}

.bewerbung-form textarea {
	width: 100%;
}

.bewerbung-form input[type="file"] + textarea {
	margin-top: var(--space-2xs);
}

/* --- Hero mit Personenfoto ----------------------------------------------
 * Bild rechts neben dem Text statt dahinter: Der Text verdeckt keine
 * Gesichter, und das Foto wird nicht auf 1920 × 900 zugeschnitten, wobei
 * Köpfe oben verloren gingen. Auf dem Handy steht das Bild über dem Text.
 */

.hero--personen .hero__media img {
	object-position: 45% 22%;
}

@media (min-width: 900px) {
	.hero--personen .hero__media {
		inset: 0 0 0 auto;
		width: 58%;
	}

	.hero--personen .hero__overlay {
		background: linear-gradient(
			90deg,
			var(--color-primary-deep) 0%,
			var(--color-primary-deep) 42%,
			rgb(21 38 55 / 55%) 50%,
			rgb(21 38 55 / 0%) 62%
		);
	}

	.hero--personen .hero__content {
		max-width: 38rem;
	}
}

@media (max-width: 899px) {
	.hero--personen {
		display: flex;
		flex-direction: column;
		min-height: auto;
		background: var(--color-primary-deep);
	}

	.hero--personen .hero__media {
		position: relative;
		inset: auto;
		z-index: 0;
		width: 100%;
		max-height: 60vh;
		overflow: hidden;
		aspect-ratio: 3 / 2;
	}

	.hero--personen .hero__media img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}

	.hero--personen .hero__overlay {
		display: none;
	}

	.hero--personen .hero__inner {
		padding-block: var(--space-lg) var(--space-xl);
	}
}

/* --- Layout-Feinschliff (Prüfung 03.11.2026) ------------------------------ */

/* Lange deutsche Komposita („Wärmedämmverbundsystem“) dürfen am Handy nicht
   über den Rand laufen: trennen statt überstehen. */
h1,
h2,
h3,
.card__title,
.feature__title {
	overflow-wrap: break-word;
	hyphens: auto;
}

@media (min-width: 900px) {
	h1 {
		hyphens: manual;
	}
}

/* Leistungskacheln: drei Spalten statt 4 + 2. */
.feature-list {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
}

/* Zwei weiße Abschnitte hintereinander: Abstand nicht verdoppeln. */
.section:not(.section--alt):not(.section--dark):not(.section--tint) + .section:not(.section--alt):not(.section--dark):not(.section--tint) {
	padding-top: 0;
}

/* Endet die Seite mit einem Abschnitt, braucht der Footer keinen weiteren Abstand. */
main:has(> .section:last-child),
main:has(> section:last-child) {
	margin-bottom: 0;
}

main:has(> .section:last-child) + .site-footer,
main:has(> section:last-child) + .site-footer {
	margin-top: 0;
}

/* Referenzkarte: Leistungen als ruhige Textzeile. */
.card__leistungen {
	margin-top: var(--space-2xs);
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

/* Projektfakten: Leistung über die volle Breite, Rest zweispaltig. */
.projekt-fakten {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.projekt-fakten__breit {
	grid-column: 1 / -1;
	order: 9;
}

/* Hero am Handy: Buttons gleich breit untereinander. */
@media (max-width: 599px) {
	.hero__actions {
		flex-direction: column;
		align-items: stretch;
	}

	.hero__actions .button {
		width: 100%;
		justify-content: center;
		text-align: center;
	}
}

/* Hochformat-Fotos neben Text am Handy nicht bildschirmfüllend. */
@media (max-width: 899px) {
	.split img {
		aspect-ratio: 4 / 3;
		width: 100%;
		object-fit: cover;
	}
}

/* Karriere: zwei Stellen nebeneinander statt Lücke im Dreierraster. */
@media (min-width: 768px) {
	.stellen-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		max-width: 52rem;
	}
}

.stelle-eckdaten {
	margin-top: var(--space-xs);
}

/* --- Baustein „Text mit Bild“ -------------------------------------------- */

.bild-text__bild {
	margin: 0;
}

.bild-text__bild img {
	width: 100%;
	border-radius: var(--radius-md);
}

@media (min-width: 900px) {
	.bild-text__bild img {
		max-height: 38rem;
		object-fit: cover;
	}

	.bild-text--links .bild-text__bild {
		order: -1;
	}
}

.bild-text__bild figcaption {
	margin-top: var(--space-2xs);
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

/* Abschnitt ohne Bild: Text einspaltig in Lesebreite. */
@media (min-width: 900px) {
	.split--single {
		grid-template-columns: minmax(0, 48rem);
		justify-content: center;
	}
}
