/*
Theme Name: INOBUILD
Author: INOBUILD GmbH
Description: Block-Theme für inobuild.de. Basiert auf Twenty Twenty-Five (einmalig geklont, eigenständig weiterentwickelt).
Requires at least: 6.9
Tested up to: 7.1
Requires PHP: 8.1
Version: 0.4.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: inobuild
*/

/*
 * Nur was theme.json nicht abbildet. Farben, Größen und Abstände immer über
 * var(--wp--preset--…) / var(--wp--custom--…), nie als Literal.
 */

/*
 * Metrik-angepasste Ersatzschriften (Arial und metrisch gleiche Klone): Text belegt vor dem
 * Laden von Archivo/Mulish denselben Platz, der Schriftwechsel (font-display: swap) verschiebt
 * nichts (CLS). Werte aus den Schriftdateien berechnet (fontTools, gewichtete Zeichenbreite
 * deutscher Seitentexte), Archivo 500/700 gegen Arial/Arial Bold, Mulish 400/700 ebenso.
 */
@font-face {
	font-family: "Archivo Fallback";
	font-weight: 400;
	src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("Arimo");
	size-adjust: 100.47%;
	ascent-override: 87.39%;
	descent-override: 20.9%;
	line-gap-override: 0%;
}

@font-face {
	font-family: "Archivo Fallback";
	font-weight: 700;
	src: local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"), local("Arimo Bold");
	size-adjust: 98.67%;
	ascent-override: 88.98%;
	descent-override: 21.28%;
	line-gap-override: 0%;
}

@font-face {
	font-family: "Mulish Fallback";
	font-weight: 400;
	src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("Arimo");
	size-adjust: 103.19%;
	ascent-override: 97.39%;
	descent-override: 24.23%;
	line-gap-override: 0%;
}

@font-face {
	font-family: "Mulish Fallback";
	font-weight: 700;
	src: local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"), local("Arimo Bold");
	size-adjust: 99.6%;
	ascent-override: 100.9%;
	descent-override: 25.1%;
	line-gap-override: 0%;
}

/* Links: dünne, abgesetzte Unterstreichung (gutenberg#42319). */
a {
	text-decoration-thickness: 1px;
	text-underline-offset: 0.15em;
}

/* Sichtbarer Fokus für Links, Buttons und Felder (WCAG 2.4.7). currentColor bleibt auf jedem Untergrund sichtbar. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible,
:where(.wp-element-button, .wp-block-button__link):focus-visible {
	outline: 3px solid currentColor;
	outline-offset: 3px;
}

:where(input, select, textarea):focus-visible {
	outline-offset: 1px;
}

/* Zielgröße ≥ 24 × 24 px (WCAG 2.5.8) für alleinstehende Textlinks
 * (Bewertungen, Listen-Links, Brotkrumen, Links im Cookie-Banner von Complianz). */
.inobuild-cta__rating a,
.inobuild-crumbs a,
.wp-block-list.is-style-divided > li > a:first-child,
.cmplz-cookiebanner .cmplz-link {
	display: inline-flex;
	align-items: center;
	min-height: 1.5rem;
}

/* Formularfelder: Rahmen mit ≥ 3:1 (WCAG 1.4.11). */
:where(input:not([type="submit"], [type="button"], [type="checkbox"], [type="radio"]), select, textarea) {
	border: 1px solid var(--wp--preset--color--line-strong);
	border-radius: var(--wp--preset--border-radius--sm);
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--body);
	font: inherit;
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
}

:where(.wp-element-button, .wp-block-button__link) {
	transition: background-color 0.15s ease, color 0.15s ease;
}

/* Lange deutsche Komposita (z. B. „Haushaltsauflösung“) brechen statt überzulaufen. */
h1, h2, h3, h4, h5, h6 {
	overflow-wrap: break-word;
	hyphens: auto;
}

h1, h2, h3, h4, h5, h6, blockquote, caption, figcaption, p {
	text-wrap: pretty;
}

/* Bilder aus Classic-Inhalten (ohne Block-Wrapper) nie breiter als ihr Container. */
:where(img, video) {
	max-width: 100%;
	height: auto;
}

/* Fieldsets (z. B. Formidable) dürfen schrumpfen, sonst Überlauf bei 375 px. */
:where(fieldset) {
	min-width: 0;
}

:where(pre) {
	overflow-x: auto;
}

/* Sprungmarken (z. B. „Anfrage stellen“ → #anfrage) weich scrollen, nur ohne Wunsch nach reduzierter Bewegung. */
@media (prefers-reduced-motion: no-preference) {

	html {
		scroll-behavior: smooth;
	}
}

@media (prefers-reduced-motion: reduce) {

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* =========================================================================
 * Chrome: Header, Mega-Menü, Schnellkontakt-Leiste, Kontakt-Aufruf, Footer.
 * Desktop-Umbruch bei 1160px (Navigation und Kontakt passen in eine Zeile).
 * ====================================================================== */

/* Icons (Lucide, ISC; WhatsApp: offizielles Glyph nach Markenrichtlinie, Pfad Simple Icons CC0) als Maske,
 * Farbe folgt currentColor. Pseudo-Element = dekorativ, der Name steht im Link. */
.inobuild-btn {
	--inobuild-icon: none;
}

.inobuild-btn--phone {
	--inobuild-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E");
}

.inobuild-btn--whatsapp {
	--inobuild-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413Z'/%3E%3C/svg%3E");
}

.inobuild-btn--inquiry {
	--inobuild-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z'/%3E%3C/svg%3E");
}

.inobuild-btn--email {
	--inobuild-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E");
}

.inobuild-btn .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--wp--preset--spacing--20);
	min-height: 2.75rem;
}

.inobuild-btn .wp-block-button__link::before {
	content: "";
	flex: none;
	width: 1.15em;
	height: 1.15em;
	background-color: currentColor;
	-webkit-mask: var(--inobuild-icon) center / contain no-repeat;
	mask: var(--inobuild-icon) center / contain no-repeat;
}

/* Textlink-Variante (Footer). */
.inobuild-btn.is-text .wp-block-button__link,
.inobuild-btn.is-text .wp-block-button__link:hover {
	background: none;
	color: inherit;
	padding: 0;
	min-height: 1.75rem;
	font-family: inherit;
	font-weight: inherit;
}

.inobuild-btn.is-text .wp-block-button__link:hover {
	text-decoration: underline;
}

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

.inobuild-header {
	position: relative;
	border-bottom: 1px solid var(--wp--preset--color--line);
}

.inobuild-header__row {
	min-height: var(--wp--custom--chrome--header-height);
	gap: var(--wp--preset--spacing--50);
}

.inobuild-header__end {
	gap: var(--wp--preset--spacing--50);
}

.inobuild-header__contact {
	gap: var(--wp--preset--spacing--20);
}

.inobuild-header__contact .wp-block-button__link {
	white-space: nowrap;
	font-size: var(--wp--preset--font-size--small);
	padding: var(--wp--preset--spacing--20) var(--wp--preset--spacing--40);
}

.inobuild-header__contact .inobuild-btn--phone .wp-block-button__link {
	background: none;
	color: var(--wp--preset--color--contrast);
	padding-inline: var(--wp--preset--spacing--20);
}

.inobuild-header__contact .inobuild-btn--phone .wp-block-button__link:hover {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

/* Nur für Screenreader: Text bleibt im Accessibility-Baum, ist aber nicht sichtbar (Clip-Technik). */
.inobuild-visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* Schwebender WhatsApp-Knopf, nur ab 1160px (darunter übernimmt die Schnellkontakt-Leiste).
 * Name als visuell versteckter Text (.inobuild-visually-hidden), Glyph exakt mittig (gap 0, feste Box).
 * Grün abgedunkelt: weißes Glyph braucht 3:1 (WCAG 1.4.11), #25D366 hätte nur 2:1. */
.inobuild-wafloat.inobuild-wafloat {
	display: none;
}

@media (min-width: 1160px) {

	.inobuild-wafloat.inobuild-wafloat {
		display: block;
		position: fixed;
		right: max(var(--wp--preset--spacing--50), env(safe-area-inset-right));
		bottom: max(var(--wp--preset--spacing--50), env(safe-area-inset-bottom));
		z-index: var(--wp--custom--chrome--z-panel);
		margin: 0;
	}

	/* Seitenende: Footer-Links nie unter dem Knopf (Platz unten, rechte Kante der Rechtszeile frei). */
	.inobuild-footer.inobuild-footer {
		padding-bottom: calc(var(--wp--preset--spacing--50) + 4.5rem) !important;
	}

	.inobuild-footer__bottom {
		padding-inline-end: calc(3.5rem + var(--wp--preset--spacing--50));
	}

	/* Complianz-Reiter „Einwilligung verwalten“ sitzt unten rechts (auch aufgeklappt 50px hoch): Knopf darüber. */
	body:has(.cmplz-manage-consent.cmplz-show) .inobuild-wafloat {
		bottom: calc(max(var(--wp--preset--spacing--50), env(safe-area-inset-bottom)) + 3.25rem);
	}

	/* Complianz-Banner offen: Knopf ausblenden, damit er Banner und Knöpfe nie verdeckt. */
	body:has(.cmplz-cookiebanner.cmplz-show) .inobuild-wafloat {
		display: none;
	}
}

.inobuild-wafloat .wp-block-button__link {
	gap: 0;
	width: 3.5rem;
	height: 3.5rem;
	padding: 0;
	border-radius: 50%;
	line-height: 0;
	background-color: var(--wp--custom--brand--whatsapp-strong);
	color: var(--wp--preset--color--base);
	box-shadow: var(--wp--preset--shadow--md);
}

.inobuild-wafloat .wp-block-button__link::before {
	width: 1.75rem;
	height: 1.75rem;
}

.inobuild-wafloat .wp-block-button__link:hover {
	background-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
}

/* Doppelter Ring: sichtbar auf hellem Inhalt und auf dem dunklen Footer. */
.inobuild-wafloat .wp-block-button__link:focus-visible {
	outline: 3px solid var(--wp--preset--color--contrast);
	outline-offset: 3px;
	box-shadow: 0 0 0 3px var(--wp--preset--color--base), var(--wp--preset--shadow--md);
}

/* Menü- und Schließen-Knopf: Zielgröße 44 × 44 px. */
.inobuild-mainnav .wp-block-navigation__responsive-container-open,
.inobuild-mainnav .wp-block-navigation__responsive-container-close {
	padding: 0.625rem;
	margin: -0.625rem;
}

.inobuild-mainnav .wp-block-navigation__responsive-container-close {
	margin: 0;
}

/* Überlagerungs-Menü (unter 1160px). Deckend ohne Einblend-Animation, Mega-Panel ohne Opacity-Übergang:
 * nie halbtransparent über dem Seiteninhalt (Loop 1, P0.2). */
.inobuild-mainnav .wp-block-navigation__responsive-container.is-menu-open {
	animation: none;
	background-color: var(--wp--preset--color--base);
	padding: var(--wp--preset--spacing--40) var(--wp--style--root--padding-right) var(--wp--preset--spacing--60) var(--wp--style--root--padding-left);
}

.inobuild-mainnav .is-menu-open .wp-block-navigation__responsive-container-content {
	padding-top: calc(var(--wp--custom--chrome--header-height) - var(--wp--preset--spacing--40));
}

.inobuild-mainnav .is-menu-open .wp-block-navigation__container {
	gap: var(--wp--preset--spacing--50);
	width: 100%;
}

.inobuild-mainnav .is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	font-size: var(--wp--preset--font-size--large);
	font-weight: 600;
}

.inobuild-mainnav .is-menu-open .wp-block-navigation__submenu-container {
	gap: var(--wp--preset--spacing--10);
	width: 100%;
}

.inobuild-mainnav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding-block: var(--wp--preset--spacing--20);
}

.inobuild-mainnav.inobuild-mainnav .is-menu-open .wp-block-navigation__responsive-container-content,
.inobuild-mainnav.inobuild-mainnav .is-menu-open .wp-block-navigation__container,
.inobuild-mainnav.inobuild-mainnav .is-menu-open .wp-block-navigation__submenu-container,
.inobuild-mainnav.inobuild-mainnav .is-menu-open .wp-block-navigation-item {
	align-items: flex-start;
	text-align: left;
}

.inobuild-mainnav.inobuild-mainnav .is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container {
	padding-left: 0;
	padding-right: 0;
}

.inobuild-mainnav .is-menu-open .wp-block-navigation-submenu__toggle {
	color: var(--wp--preset--color--accent-text);
}

/* Titel und Untertitel je Eintrag (Beschreibung aus dem Menü). */
.inobuild-mainnav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	flex-direction: column;
	align-items: flex-start;
	gap: 0.125rem;
}

.inobuild-mainnav .wp-block-navigation-item__description {
	display: block;
	font-family: var(--wp--preset--font-family--mulish);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 400;
	line-height: 1.4;
	color: var(--wp--preset--color--muted);
}

.inobuild-mainnav .is-overview .wp-block-navigation-item__content {
	font-weight: 600;
	color: var(--wp--preset--color--accent-text);
}

/* Schnellkontakt-Leiste: unten, drei gleich breite Ziele, verdeckt nichts (Platz wird reserviert). */
.inobuild-contactbar {
	position: fixed;
	inset: auto 0 0;
	z-index: var(--wp--custom--chrome--z-sticky);
	margin: 0 !important;
	padding-bottom: env(safe-area-inset-bottom);
	background-color: var(--wp--preset--color--contrast);
}

.inobuild-contactbar .wp-block-buttons {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0;
}

.inobuild-contactbar .wp-block-button {
	width: 100%;
}

.inobuild-contactbar .wp-block-button + .wp-block-button {
	border-left: 1px solid var(--wp--preset--color--footer);
}

.inobuild-contactbar .wp-block-button__link {
	width: 100%;
	min-height: var(--wp--custom--chrome--bar-height);
	padding: 0 var(--wp--preset--spacing--20);
	border-radius: 0;
	background-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	font-size: var(--wp--preset--font-size--small);
}

.inobuild-contactbar .wp-block-button__link:hover {
	background-color: var(--wp--preset--color--footer);
	color: var(--wp--preset--color--base);
	text-decoration: underline;
}

.inobuild-contactbar .inobuild-btn--phone .wp-block-button__link {
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
}

.inobuild-contactbar .inobuild-btn--whatsapp .wp-block-button__link::before {
	background-color: var(--wp--custom--brand--whatsapp);
}

.inobuild-contactbar .wp-block-button__link:focus-visible {
	outline-offset: -6px;
}

/* Im Editor nicht festpinnen. */
.editor-styles-wrapper .inobuild-contactbar {
	position: static;
}

@media (max-width: 1159.98px) {

	.inobuild-header .inobuild-header__contact {
		display: none;
	}

	/* Core klappt erst unter 600px ein, hier bis 1160px. */
	.inobuild-mainnav.inobuild-mainnav .wp-block-navigation__responsive-container:not(.is-menu-open) {
		display: none;
	}

	.inobuild-mainnav.inobuild-mainnav .wp-block-navigation__responsive-container-open {
		display: flex;
	}

	body {
		padding-bottom: calc(var(--wp--custom--chrome--bar-height) + env(safe-area-inset-bottom));
	}

	html {
		scroll-padding-bottom: calc(var(--wp--custom--chrome--bar-height) + var(--wp--preset--spacing--40));
	}
}

@media (min-width: 1160px) {

	.inobuild-contactbar {
		display: none;
	}

	/* Schmaler Sticky-Header; scroll-padding hält fokussierte Elemente sichtbar (WCAG 2.4.11). */
	.wp-site-blocks > header.wp-block-template-part {
		position: sticky;
		top: var(--wp-admin--admin-bar--height, 0px);
		z-index: var(--wp--custom--chrome--z-sticky);
	}

	html {
		scroll-padding-top: calc(var(--wp--custom--chrome--header-height) + var(--wp-admin--admin-bar--height, 0px) + var(--wp--preset--spacing--40));
	}

	/* Mega-Panel: volle Breite unter dem Header, Inhalt auf wideSize. */
	.inobuild-mainnav.inobuild-mainnav,
	.inobuild-mainnav.inobuild-mainnav .wp-block-navigation__responsive-container,
	.inobuild-mainnav.inobuild-mainnav .wp-block-navigation__responsive-dialog,
	.inobuild-mainnav.inobuild-mainnav .wp-block-navigation__responsive-container-content,
	.inobuild-mainnav.inobuild-mainnav .wp-block-navigation__container,
	.inobuild-mainnav.inobuild-mainnav .has-child {
		position: static;
	}

	.inobuild-mainnav .wp-block-navigation__container {
		gap: var(--wp--preset--spacing--50);
	}

	.inobuild-mainnav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
		display: flex;
		align-items: center;
		min-height: 2.75rem;
		white-space: nowrap;
		text-underline-offset: 0.4em;
		text-decoration-thickness: 2px;
	}

	.inobuild-mainnav .wp-block-navigation-submenu__toggle[aria-expanded="true"],
	.inobuild-mainnav .current-menu-item > .wp-block-navigation-item__content,
	.inobuild-mainnav .has-child:has(.current-menu-item) > .wp-block-navigation-item__content {
		text-decoration: underline;
		text-decoration-color: var(--wp--preset--color--accent);
	}

	.inobuild-header .inobuild-mainnav.inobuild-mainnav .wp-block-navigation__container > .has-child > .wp-block-navigation__submenu-container {
		top: 100%;
		left: 0;
		right: 0;
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: var(--wp--preset--spacing--20) var(--wp--preset--spacing--50);
		padding: var(--wp--preset--spacing--50) calc(max(var(--wp--style--root--padding-left), (100% - var(--wp--style--global--wide-size)) / 2) - var(--wp--preset--spacing--40));
		border: 0;
		border-top: 1px solid var(--wp--preset--color--line);
		background-color: var(--wp--preset--color--base);
		color: var(--wp--preset--color--contrast);
		box-shadow: var(--wp--preset--shadow--lg);
		transition: none; /* Kein Opacity-Übergang (Core 0.1s): Panel ab dem ersten Frame deckend (Loop 1, P0.2). */
		z-index: var(--wp--custom--chrome--z-panel);
	}

	/* Bau hat viele Gewerke ohne Untertitel: vier Spalten, Überblick oben. */
	.inobuild-header .inobuild-mainnav.inobuild-mainnav .wp-block-navigation__container > .has-child:has(.is-overview) > .wp-block-navigation__submenu-container {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.inobuild-mainnav .is-overview {
		grid-column: 1 / -1;
	}

	/* Bau nach Gewerke-Gruppen wie /bau/: eine Spalte je Gruppe, Überschrift in Zeile 2,
	 * Einträge laufen darunter (Spaltenfluss, max. Überblick + Überschrift + 5 Einträge). */
	.inobuild-header .inobuild-mainnav.inobuild-mainnav .wp-block-navigation__container > .has-child:has(.is-group-heading) > .wp-block-navigation__submenu-container {
		grid-template-columns: repeat(5, minmax(0, 1fr));
		grid-template-rows: repeat(7, auto);
		grid-auto-flow: column;
		align-content: start;
		align-items: start;
	}

	.inobuild-mainnav .is-group-heading {
		grid-row-start: 2;
	}

	.inobuild-mainnav.inobuild-mainnav .wp-block-navigation__submenu-container > .wp-block-navigation-item > .wp-block-navigation-item__content {
		padding: var(--wp--preset--spacing--20) var(--wp--preset--spacing--40);
		border-radius: var(--wp--preset--border-radius--sm);
	}

	.inobuild-mainnav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
		background-color: var(--wp--preset--color--surface);
		text-decoration: none;
	}

	.inobuild-mainnav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover .wp-block-navigation-item__label {
		text-decoration: underline;
	}
}

/* Gruppen-Überschrift im Bau-Menü: Eintrag ohne Link, kein Hover. */
.inobuild-mainnav .is-group-heading {
	align-self: stretch;
	margin-block-start: var(--wp--preset--spacing--20);
	border-bottom: 1px solid var(--wp--preset--color--line);
}

.inobuild-mainnav.inobuild-mainnav .wp-block-navigation__submenu-container > .is-group-heading > .wp-block-navigation-item__content {
	padding-block: 0 var(--wp--preset--spacing--10);
	border-radius: 0;
	background: none;
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	text-decoration: none;
	cursor: default;
}

.inobuild-mainnav.inobuild-mainnav .is-group-heading .wp-block-navigation-item__label {
	text-decoration: none;
}

.inobuild-footernav .is-group-heading {
	display: none;
}

/* ---------- Kontakt-Aufruf vor dem Footer ---------- */

.wp-site-blocks > footer.wp-block-template-part {
	margin-block-start: 0;
}

.inobuild-cta__title {
	text-wrap: balance;
}

.inobuild-cta__actions {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
	align-self: center;
}

.inobuild-cta__actions .wp-block-buttons {
	gap: var(--wp--preset--spacing--30);
}

.inobuild-btn--phone.is-large .wp-block-button__link {
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 700;
	padding: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
	letter-spacing: -0.01em;
}

.wp-block-button.is-style-outline .wp-block-button__link {
	border: 2px solid currentColor;
	background: none;
	color: var(--wp--preset--color--contrast);
}

.wp-block-button.is-style-outline .wp-block-button__link:hover {
	background-color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
}

.inobuild-cta__rating {
	margin: 0;
}

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

.inobuild-footer {
	line-height: 1.7;
}

.inobuild-footer p {
	margin: 0;
}

.inobuild-footer__grid {
	display: grid;
	gap: var(--wp--preset--spacing--60);
}

.inobuild-footer__contact {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--20);
}

.inobuild-footer__company {
	font-family: var(--wp--preset--font-family--archivo);
	font-size: var(--wp--preset--font-size--large);
	font-weight: 700;
}

.inobuild-footer__links {
	gap: var(--wp--preset--spacing--10);
	margin-block: var(--wp--preset--spacing--30);
}

.inobuild-footer__label {
	margin-top: var(--wp--preset--spacing--30) !important;
	color: var(--wp--preset--color--footer-muted);
}

/* Leistungen aus dem Hauptmenü: nur die beiden Bereiche, immer aufgeklappt. */
.inobuild-footernav.inobuild-footernav .wp-block-navigation__container {
	display: grid;
	width: 100%;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--wp--preset--spacing--60);
	align-items: start;
}

.inobuild-footernav .wp-block-navigation__container > .wp-block-navigation-item:not(.has-child),
.inobuild-footernav .is-overview,
.inobuild-footernav .wp-block-navigation__submenu-icon,
.inobuild-footernav .wp-block-navigation-item__description {
	display: none;
}

.inobuild-footernav .wp-block-navigation__container > .has-child {
	display: block;
}

.inobuild-footernav .has-child > .wp-block-navigation-item__content {
	display: block;
	margin-bottom: var(--wp--preset--spacing--30);
	color: var(--wp--preset--color--accent);
	font-weight: 700;
}

.inobuild-footernav.inobuild-footernav .has-child > .wp-block-navigation__submenu-container {
	position: static;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 0 var(--wp--preset--spacing--50);
	visibility: visible;
	opacity: 1;
	width: auto;
	min-width: 0;
	height: auto;
	overflow: visible;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	transform: none;
}

.inobuild-footernav.inobuild-footernav .has-child:has(.is-overview) > .wp-block-navigation__submenu-container {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr));
}

.inobuild-footer .inobuild-footernav.inobuild-footernav .has-child .wp-block-navigation__submenu-container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	padding: var(--wp--preset--spacing--10) 0;
	font-family: var(--wp--preset--font-family--mulish);
	font-weight: 400;
}

.inobuild-footer__bottom {
	margin-top: var(--wp--preset--spacing--60) !important;
	padding-top: var(--wp--preset--spacing--50);
	border-top: 1px solid color-mix(in srgb, var(--wp--preset--color--base) 18%, transparent);
	gap: var(--wp--preset--spacing--30) var(--wp--preset--spacing--50);
	color: var(--wp--preset--color--footer-muted);
}

.inobuild-legalnav .wp-block-navigation__container {
	gap: var(--wp--preset--spacing--50);
}

.inobuild-legalnav .wp-block-navigation-item__content {
	padding-block: var(--wp--preset--spacing--10);
}

@media (min-width: 782px) {

	.inobuild-footer__grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
	}

	.inobuild-footernav.inobuild-footernav .wp-block-navigation__container {
		grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
	}
}

/* =========================================================================
 * Sektionen (Muster aus patterns/, Welle 4d). Ruhig, typografisch, ohne
 * Fotos tragfähig. Orange nur als Akzent (Striche, Marker, Telefon-Button).
 * ====================================================================== */

h1, h2, h3 {
	text-wrap: balance;
}

/* Landing-Templates: Sektionen bringen ihren eigenen Abstand mit. */
.inobuild-landing > .wp-block-post-content > :first-child {
	margin-block-start: 0;
}

.wp-block-post-content > .alignfull + .alignfull {
	margin-block-start: 0;
}

/* Abschnittskopf: Überschrift + Einleitung, lesbare Zeilenlänge. */
.inobuild-section__head > * {
	max-width: 40rem;
}

.inobuild-section__head + * {
	margin-block-start: var(--wp--preset--spacing--60);
}

.inobuild-lead {
	max-width: 38em;
	color: var(--wp--preset--color--contrast);
}

/* Einstieg: H1 mobil 3XL, ab 600px Display (höchstens 88px). */
.inobuild-hero__title {
	font-size: var(--wp--preset--font-size--xxx-large);
	max-width: 16ch;
}

@media (min-width: 600px) {
	.inobuild-hero__title {
		font-size: min(var(--wp--preset--font-size--display), 10.5vw);
	}
}

/* Mit Bild daneben (ab 782px nebeneinander): kleiner, damit „Bauunternehmen“ ungebrochen in die Textspalte passt. */
@media (min-width: 782px) {
	.inobuild-split:has(.inobuild-media-slot img) .inobuild-hero__title {
		font-size: min(var(--wp--preset--font-size--display), 5.4vw, 4.75rem);
	}
}

/* Optionaler Bild-Slot: leer = unsichtbar, der Text bekommt die volle Breite. */
.inobuild-split:not(:has(.inobuild-media-slot img)) > .inobuild-media-slot {
	display: none;
}

.inobuild-split:not(:has(.inobuild-media-slot img)) > .wp-block-column {
	flex-basis: 100% !important;
}

.inobuild-split:not(:has(.inobuild-media-slot img)) > .wp-block-column > :where(p, ul, ol) {
	max-width: 40rem;
}

.inobuild-media-slot .wp-block-image img {
	width: 100%;
}

/* Gestapelt (unter 782px): Einstiegsbild flacher, damit die Fakten-Zeile früher kommt. !important schlägt das Inline-Seitenverhältnis. */
@media (max-width: 781px) {
	.inobuild-hero .inobuild-media-slot .wp-block-image img {
		aspect-ratio: 4 / 3 !important;
	}
}

/* Akzentstrich (Blockstil Trennlinie). */
.wp-block-separator.is-style-accent {
	width: 3rem;
	max-width: 3rem;
	height: 0;
	margin-inline: 0 auto;
	border: 0;
	border-top: 4px solid var(--wp--preset--color--accent);
	opacity: 1;
}

/* Kicker: nur auf Leistungsseiten, Satzschreibung, kein Versal-Label. */
.inobuild-kicker {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--30);
	margin-block-end: 0;
	color: var(--wp--preset--color--accent-text);
	font-family: var(--wp--preset--font-family--archivo);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.inobuild-kicker::before {
	content: "";
	flex: none;
	width: 1.5rem;
	height: 3px;
	background-color: var(--wp--preset--color--accent);
}

.inobuild-kicker:empty {
	display: none;
}

.inobuild-kicker + .wp-block-post-title {
	margin-block-start: var(--wp--preset--spacing--30);
}

/* Brotkrumen. */
.inobuild-crumbs {
	gap: var(--wp--preset--spacing--20);
	margin-block-end: var(--wp--preset--spacing--60);
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

.inobuild-crumbs > * {
	margin: 0;
}

.inobuild-crumbs > * + *::before {
	content: "/";
	content: "/" / "";
	margin-inline-end: var(--wp--preset--spacing--20);
}

.inobuild-crumbs .wp-block-post-title {
	color: var(--wp--preset--color--muted);
	font-family: inherit;
	font-size: inherit;
	font-weight: 400;
	letter-spacing: 0;
}

/* Leistung: Kopfbereich mit „Das gehört dazu“ (Meta Features). */
.inobuild-leistung-hero__aside {
	padding: var(--wp--preset--spacing--50);
	border-radius: var(--wp--preset--border-radius--md);
	background-color: var(--wp--preset--color--surface);
}

.inobuild-leistung-hero__aside:not(:has(li)) {
	display: none;
}

.inobuild-leistung-hero__cols:not(:has(.inobuild-leistung-hero__aside li)) > .wp-block-column {
	flex-basis: 100% !important;
}

@media (min-width: 782px) {
	.inobuild-leistung-hero__aside {
		align-self: flex-start;
		margin-block-start: var(--wp--preset--spacing--60);
	}
}

/* Listenstil „Häkchen“. Marker dekorativ, der Text trägt die Aussage. */
.wp-block-list.is-style-check {
	--inobuild-check: 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' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
	padding-inline-start: 0;
	list-style: none;
}

.wp-block-list.is-style-check > li {
	position: relative;
	padding-inline-start: 2rem;
}

.wp-block-list.is-style-check > li + li {
	margin-block-start: var(--wp--preset--spacing--20);
}

.wp-block-list.is-style-check > li::before {
	content: "";
	position: absolute;
	top: 0.25em;
	left: 0;
	width: 1.2em;
	height: 1.2em;
	background-color: var(--wp--preset--color--accent-text);
	-webkit-mask: var(--inobuild-check) center / contain no-repeat;
	mask: var(--inobuild-check) center / contain no-repeat;
}

/* Listenstil „Mit Trennlinien“: Begriff (Link oder fett) + Erklärung. */
.wp-block-list.is-style-divided {
	padding-inline-start: 0;
	list-style: none;
	border-top: 1px solid var(--wp--preset--color--line);
}

.wp-block-list.is-style-divided > li {
	padding-block: var(--wp--preset--spacing--40);
	border-bottom: 1px solid var(--wp--preset--color--line);
	break-inside: avoid;
}

:where(.is-style-divided, .is-style-steps, .is-style-chain) > li > :is(strong, a):first-child {
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--archivo);
	font-size: var(--wp--preset--font-size--large);
	font-weight: 700;
	line-height: 1.3;
}

.is-style-divided > li > a:first-child {
	text-decoration: none;
}

.is-style-divided > li > a:first-child:hover {
	color: var(--wp--preset--color--accent-text);
	text-decoration: underline;
}

/* Listenstil „Schritte“: echte <ol>, Zähler statt Deko-Nummern. */
.wp-block-list.is-style-steps {
	padding-inline-start: 0;
	list-style: none;
	counter-reset: inobuild-step;
}

.wp-block-list.is-style-steps > li {
	position: relative;
	padding-block: var(--wp--preset--spacing--50);
	padding-inline-start: 4rem;
	border-top: 1px solid var(--wp--preset--color--line);
	counter-increment: inobuild-step;
}

.wp-block-list.is-style-steps > li::before {
	content: counter(inobuild-step);
	content: counter(inobuild-step) / "";
	position: absolute;
	top: var(--wp--preset--spacing--50);
	left: 0;
	width: 2.75rem;
	color: var(--wp--preset--color--accent-text);
	font-family: var(--wp--preset--font-family--archivo);
	font-size: var(--wp--preset--font-size--xx-large);
	font-weight: 700;
	line-height: 1;
	font-variant-numeric: tabular-nums;
}

/* Listenstil „Kette“: Räumen, Rückbauen, Renovieren, verbunden durch eine Linie. */
.wp-block-list.is-style-chain {
	display: grid;
	gap: var(--wp--preset--spacing--60);
	padding-inline-start: 0;
	list-style: none;
}

.wp-block-list.is-style-chain > li {
	position: relative;
	padding-inline-start: 2.25rem;
}

.wp-block-list.is-style-chain > li > strong:first-child {
	font-size: var(--wp--preset--font-size--x-large);
}

.wp-block-list.is-style-chain > li::before {
	content: "";
	position: absolute;
	top: 0.55em;
	left: 0;
	width: 0.875rem;
	height: 0.875rem;
	background-color: var(--wp--preset--color--accent);
}

.wp-block-list.is-style-chain > li:not(:last-child)::after {
	content: "";
	position: absolute;
	top: 1.6rem;
	bottom: calc(-1 * var(--wp--preset--spacing--60));
	left: calc(0.4375rem - 1px);
	width: 2px;
	background-color: var(--wp--preset--color--accent);
}

@media (min-width: 782px) {
	.wp-block-list.is-style-chain {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.wp-block-list.is-style-chain > li {
		padding-inline-start: 0;
		padding-block-start: 2.25rem;
	}

	.wp-block-list.is-style-chain > li::before {
		top: 0;
	}

	.wp-block-list.is-style-chain > li:not(:last-child)::after {
		top: calc(0.4375rem - 1px);
		right: calc(-1 * var(--wp--preset--spacing--60) + 0.5rem);
		bottom: auto;
		left: 1.375rem;
		width: auto;
		height: 2px;
	}
}

/* Leistungen: Bau als kompakte Linkliste in zwei Spalten. */
.inobuild-services__bau .is-style-divided {
	column-gap: var(--wp--preset--spacing--60);
	columns: 2 14rem;
}

.inobuild-services__bau .is-style-divided > li {
	padding-block: var(--wp--preset--spacing--30);
}

.inobuild-services__bau .is-style-divided > li > a:first-child {
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 600;
}

.inobuild-more a {
	font-family: var(--wp--preset--font-family--archivo);
	font-weight: 600;
}

.inobuild-more a::after {
	content: " →";
	content: " →" / "";
}

/* Bewertungen: Quelle und Wert als großer Textlink, keine Sterne. */
.inobuild-reviews .is-style-divided > li > a:first-child {
	font-size: var(--wp--preset--font-size--x-large);
	text-decoration: underline;
	text-decoration-thickness: 1px;
}

@media (min-width: 600px) {
	.inobuild-reviews .is-style-divided {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: var(--wp--preset--spacing--60);
	}
}

/* Einzugsgebiet als lesbarer Fließtext in groß. */
.inobuild-cities {
	max-width: 52rem;
	color: var(--wp--preset--color--body);
	font-family: var(--wp--preset--font-family--archivo);
	font-weight: 500;
	line-height: 1.45;
}

.inobuild-cities strong {
	color: var(--wp--preset--color--contrast);
	font-weight: 700;
}

/* FAQ: Details als ruhige Liste. */
.inobuild-faq .wp-block-details {
	padding-block: var(--wp--preset--spacing--40);
	border-bottom: 1px solid var(--wp--preset--color--line);
}

.inobuild-faq .wp-block-heading + .wp-block-details {
	border-top: 1px solid var(--wp--preset--color--line);
}

.inobuild-faq .wp-block-details + .wp-block-details {
	margin-block-start: 0;
}

.inobuild-faq summary {
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--archivo);
	font-size: var(--wp--preset--font-size--large);
	font-weight: 600;
	line-height: 1.35;
	cursor: pointer;
}

.inobuild-faq summary::marker {
	color: var(--wp--preset--color--accent-text);
}

.inobuild-faq .wp-block-details > p {
	max-width: 40rem;
	margin-block-start: var(--wp--preset--spacing--30);
}

/* Ansprechpartner: ohne Namen unsichtbar, Foto optional. */
.inobuild-team {
	margin-block-start: var(--wp--preset--spacing--60);
	padding-block-start: var(--wp--preset--spacing--60);
	border-top: 1px solid var(--wp--preset--color--line);
}

.inobuild-team__person:not(:has(h4:not(:empty))),
.inobuild-team:not(:has(.inobuild-team__person h4:not(:empty))) {
	display: none;
}

.inobuild-team__person > * {
	margin-block: 0;
}

.inobuild-team__person .wp-block-image {
	max-width: 10rem;
	margin-block-end: var(--wp--preset--spacing--40);
}

.inobuild-team__person p:empty {
	display: none;
}

/* Kontakt und Anfrage-Box: Formular auf ruhiger Fläche. Seiten mit Formular
 * zeigen den Kontakt-Aufruf vor dem Footer nicht doppelt, die Danke-Seite nach
 * dem Absenden auch nicht. */
body:has(.inobuild-has-form) .inobuild-cta,
body:has(.inobuild-thanks) .inobuild-cta {
	display: none;
}

.inobuild-form {
	padding: var(--wp--preset--spacing--60);
	border-radius: var(--wp--preset--border-radius--md);
	background-color: var(--wp--preset--color--surface);
}

/* Formidable an das Design-System binden (Schriftgrößen, Feldrahmen ≥ 3:1, Button wie Theme),
 * überall wo ein Formular steht, auch per Shortcode im Inhalt ohne .inobuild-form.
 * body + doppelte Klasse schlägt Formidables .frm_style_….with_frm_style (lädt danach). */
body .with_frm_style.with_frm_style {
	--font-size: var(--wp--preset--font-size--small);
	--base-font-size: var(--wp--preset--font-size--small);
	--field-font-size: var(--wp--preset--font-size--medium);
	--check-font-size: var(--wp--preset--font-size--small);
	--description-font-size: var(--wp--preset--font-size--small);
	--label-color: var(--wp--preset--color--contrast);
	--check-label-color: var(--wp--preset--color--body);
	--description-color: var(--wp--preset--color--muted);
	--text-color: var(--wp--preset--color--body);
	--border-color: var(--wp--preset--color--line-strong);
	--border-color-active: var(--wp--preset--color--contrast);
	--border-radius: var(--wp--preset--border-radius--sm);
	--required-color: var(--wp--preset--color--error);
	--border-color-error: var(--wp--preset--color--error);
	--error-text: var(--wp--preset--color--error);
	--submit-font-size: var(--wp--preset--font-size--medium);
	--submit-bg-color: var(--wp--preset--color--accent);
	--submit-border-color: var(--wp--preset--color--accent);
	--submit-text-color: var(--wp--preset--color--contrast);
	--submit-border-radius: var(--wp--preset--border-radius--sm);
	--submit-hover-bg-color: var(--wp--preset--color--contrast);
	--submit-hover-border-color: var(--wp--preset--color--contrast);
	--submit-hover-color: var(--wp--preset--color--base);
	--submit-active-bg-color: var(--wp--preset--color--contrast);
	--submit-active-border-color: var(--wp--preset--color--contrast);
	--submit-active-color: var(--wp--preset--color--base);
}

/* Formidable schreibt die Button-Farben zusätzlich fest (#003366) statt über Variablen. */
body .with_frm_style.with_frm_style .frm_submit :is(button, input[type="submit"], input[type="button"]) {
	min-height: 2.75rem;
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--50);
	border: 0;
	border-radius: var(--wp--preset--border-radius--sm);
	box-shadow: none;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--archivo);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 600;
	line-height: 1.25;
}

body .with_frm_style.with_frm_style .frm_submit :is(button, input[type="submit"], input[type="button"]):is(:hover, :active) {
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
}

/* Namensfeld (Vorname/Nachname): Beschriftung über dem Eingabefeld statt darunter.
 * Formidable Free rendert die Unterfeld-Beschreibung fest nach dem Input und bietet keine Einstellung dafür. */
body .with_frm_style.with_frm_style :is(.frm_form_subfield-first, .frm_form_subfield-last) {
	display: flex;
	flex-direction: column;
}

body .with_frm_style.with_frm_style :is(.frm_form_subfield-first, .frm_form_subfield-last) > .frm_description {
	order: -1;
	margin: 0 0 0.25rem;
	padding: 0;
}

/* Formidable setzt outline: none und einen blauen Schein (Selektoren bis 0,7,1 bzw. !important);
 * stattdessen der Theme-Fokusring (WCAG 2.4.7). !important nur hier, gegen Formidables !important. */
body .with_frm_style.with_frm_style :is(input, select, textarea, button):focus {
	box-shadow: none !important;
}

body .with_frm_style.with_frm_style :is(input, select, textarea, button):focus-visible {
	outline: 3px solid var(--wp--preset--color--contrast) !important;
	outline-offset: 1px;
}

/* Kontrollkästchen und Optionsfelder 24 × 24 px (WCAG 2.5.8); Formidable fixiert 16 px mit !important. */
body .with_frm_style.with_frm_style :is(.frm_checkbox input[type="checkbox"], .frm_radio input[type="radio"]) {
	width: 1.5rem !important;
	min-width: 1.5rem !important;
	height: 1.5rem !important;
}

body .with_frm_style.with_frm_style .frm_checkbox input[type="checkbox"]::before {
	background-size: 0.875rem !important;
}

body .with_frm_style.with_frm_style .frm_radio input[type="radio"]::before {
	width: 0.75rem;
	height: 0.75rem;
	margin: 0.3125rem;
}

.inobuild-lead-box .inobuild-form {
	background-color: var(--wp--preset--color--base);
}

/* Nach dem Sprung auf #anfrage zeigt ein Rahmen im Stil des Fokusrings, wo das Formular steht. */
.inobuild-has-form:target .inobuild-form {
	outline: 3px solid var(--wp--preset--color--accent-text);
	outline-offset: 3px;
}

.inobuild-contact__facts > * {
	margin-block: 0;
}

.inobuild-contact__facts > .inobuild-contact__label {
	margin-block-start: var(--wp--preset--spacing--50);
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

/* Übersicht mit Unterseiten (/bau/): Gewerke in Gruppen, Kachel = Bild, Titel, Auszug; ganze Kachel klickbar. */
.inobuild-bau-group {
	margin-block-start: var(--wp--preset--spacing--section);
}

.inobuild-bau-group > .wp-block-heading {
	margin-block-end: var(--wp--preset--spacing--40);
}

.inobuild-children .wp-block-post-template {
	gap: var(--wp--preset--spacing--40);
}

.inobuild-children__item {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--preset--border-radius--md);
	background-color: var(--wp--preset--color--surface);
}

.inobuild-children__item > * {
	margin: 0;
}

.inobuild-children__item .wp-block-post-featured-image img {
	display: block;
	width: 100%;
}

.inobuild-children__item:hover {
	border-color: var(--wp--preset--color--line-strong);
}

.inobuild-children__item:has(a:focus-visible) {
	outline: 3px solid var(--wp--preset--color--contrast);
	outline-offset: 2px;
}

.inobuild-children__item .wp-block-post-title {
	display: flex;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--30);
	padding: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50) 0;
	font-weight: 700;
	line-height: 1.3;
}

.inobuild-children__item .wp-block-post-excerpt {
	padding: var(--wp--preset--spacing--20) var(--wp--preset--spacing--50) var(--wp--preset--spacing--50);
	color: var(--wp--preset--color--muted);
}

.inobuild-children__item .wp-block-post-excerpt__excerpt {
	margin: 0;
}

.inobuild-children__item .wp-block-post-title a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.inobuild-children__item .wp-block-post-title a:focus-visible {
	outline: 0;
}

.inobuild-children__item .wp-block-post-title a::after {
	content: "";
	position: absolute;
	inset: 0;
}

.inobuild-children__item:hover .wp-block-post-title a {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.inobuild-children__item .wp-block-post-title::after {
	content: "→";
	content: "→" / "";
	flex: none;
	color: var(--wp--preset--color--accent-text);
	font-weight: 700;
}

/* Fakten-Zeile unter dem Einstieg (Startseite): belegbare Punkte mit Symbol, keine Zähler. */
.inobuild-facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
	gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
	margin: 0;
	padding: 0;
	list-style: none;
}

.inobuild-facts li {
	position: relative;
	padding-inline-start: 2.25rem;
	line-height: 1.45;
}

.inobuild-facts li::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 1.5rem;
	height: 1.5rem;
	background-color: var(--wp--preset--color--accent-text);
	-webkit-mask: var(--inobuild-fact-icon) center / contain no-repeat;
	mask: var(--inobuild-fact-icon) center / contain no-repeat;
}

.inobuild-facts .is-icon-pin {
	--inobuild-fact-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
}

.inobuild-facts .is-icon-partner {
	--inobuild-fact-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M22 21v-2a4 4 0 0 0-3-3.87'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'/%3E%3C/svg%3E");
}

.inobuild-facts .is-icon-price {
	--inobuild-fact-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z'/%3E%3Cpath d='M14 2v4a2 2 0 0 0 2 2h4'/%3E%3Cpath d='m9 15 2 2 4-4'/%3E%3C/svg%3E");
}

.inobuild-facts .is-icon-star {
	--inobuild-fact-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");
}

/* Einstieg mobil: Anruf steckt schon in der Schnellkontakt-Leiste, im Einstieg nur „Anfrage stellen“ (Loop 1, P1.1). */
@media (max-width: 1159px) {
	.inobuild-hero .inobuild-btn--phone {
		display: none;
	}
}

/* Blockstil „Ruhig“ für sensible Anlässe (Trauerfall, Seniorenumzug):
 * mehr Luft, kein Orange als Fläche oder Marker, Buttons als Umriss. */
.wp-block-group.is-style-calm {
	line-height: 1.75;
}

.wp-block-group.is-style-calm.has-accent-soft-background-color {
	background-color: var(--wp--preset--color--surface) !important;
}

.is-style-calm :where(h2, h3) {
	font-weight: 600;
}

.is-style-calm .wp-block-button:not(.is-style-outline) .wp-block-button__link {
	border: 2px solid var(--wp--preset--color--contrast);
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

.is-style-calm .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover {
	background-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
}

.is-style-calm .wp-block-list.is-style-steps > li::before,
.is-style-calm .inobuild-kicker {
	color: var(--wp--preset--color--muted);
}

.is-style-calm .wp-block-list.is-style-check > li::before,
.is-style-calm .wp-block-list.is-style-chain > li::before,
.is-style-calm .wp-block-list.is-style-chain > li::after,
.is-style-calm .inobuild-kicker::before {
	background-color: var(--wp--preset--color--line-strong);
}

.is-style-calm .wp-block-separator.is-style-accent {
	border-top-color: var(--wp--preset--color--line-strong);
}

.is-style-calm .wp-block-list.is-style-steps > li {
	padding-block: var(--wp--preset--spacing--60);
}

.is-style-calm .wp-block-list.is-style-steps > li::before {
	top: var(--wp--preset--spacing--60);
}

/* ---------- Slogan-Badge (Über uns) ---------- */

.inobuild-badge {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--wp--preset--spacing--10);
	box-sizing: border-box;
	width: 12.5rem;
	aspect-ratio: 1;
	padding: var(--wp--preset--spacing--40);
	border: 3px solid var(--wp--preset--color--accent);
	border-radius: 50%;
	outline: 1px solid var(--wp--preset--color--line-strong);
	outline-offset: -0.625rem;
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
	text-align: center;
}

/* Badge in der kürzeren Textspalte: mittig im Restraum statt allein am Spaltenende (nur nebeneinander). */
@media (min-width: 782px) {

	.wp-block-column:has(> .inobuild-badge) {
		display: flex;
		flex-direction: column;
	}

	.wp-block-column:has(> .inobuild-badge) > .inobuild-badge {
		align-self: center;
		margin-block: auto;
	}
}

.inobuild-badge__icon {
	flex: none;
	width: 2.25rem;
	height: 2.25rem;
}

.inobuild-badge p {
	margin: 0;
	line-height: 1.25;
}

.inobuild-badge__text {
	font-family: var(--wp--preset--font-family--archivo);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.02em;
}

.inobuild-badge__company {
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--muted);
}

/* ---------- Gewerke im Überblick (Startseite) ---------- */

.inobuild-trade > * {
	margin-block: 0;
}

.inobuild-trade__title {
	margin-top: var(--wp--preset--spacing--30) !important;
	font-family: var(--wp--preset--font-family--archivo);
	font-weight: 700;
}

.inobuild-trade .wp-block-image + .inobuild-trade__title + p {
	margin-top: var(--wp--preset--spacing--10);
}
