/* Shared site base: rules that were byte-identical in every site's site.css. One source in the engine;
   site.css loads after this file and keeps only what differs per site. */
/* --- Struktur-Resets ------------------------------------------------------ */
.wp-block-template-part { margin-block: 0; }

/* GLOBALE Skalierungs-Absicherung: border-box überall. Ohne das addiert
   content-box das Padding ZUSÄTZLICH zur width:100% → das Element wird breiter
   als sein Container und schwappt horizontal über (genau der Hero-CTA-Bug bei
   320px). border-box = width schließt Padding ein → nichts wird je zu breit.
   Zusammen mit fluidem clamp (Größen skalieren mit vw) = kein Überlauf mehr. */
*, *::before, *::after { box-sizing: border-box; }

/* Kein horizontales Wegscrollen: full-bleed 100vw-Elemente (Carousel/Hero)
   sind sonst um die Scrollbar-Breite breiter als der Viewport. clip statt
   hidden, damit position:sticky/anchor-scroll unangetastet bleiben. */
html, body { overflow-x: clip; max-width: 100%; }
.fyh-footer { max-width: none; margin-inline: 0; padding: clamp( 3rem, 6vw, 5rem ) 0 clamp( 1.5rem, 3vw, 2.25rem ); color: var(--wp--preset--color--on-dark, #fff); }
.fyh-footer__cols { display: grid !important; grid-template-columns: minmax( 20rem, 1.7fr ) repeat( 2, minmax( 10rem, .65fr ) ); gap: clamp( 2rem, 5vw, 5rem ) !important; margin: 0 0 clamp( 2.5rem, 5vw, 4rem ); }
.fyh-footer__cols > .wp-block-column { width: auto !important; min-width: 0 !important; margin: 0; flex-basis: auto !important; }
.fyh-footer__logo img { height: auto; filter: brightness( 0 ) invert( 1 ); opacity: .96; }
.fyh-footer__tag { max-width: 43ch; margin: 1rem 0 0; color: rgba( 255, 255, 255, .72 ); font-size: .9rem; line-height: 1.6; text-wrap: pretty; }
.fyh-footer__label { margin: 0 0 1rem; color: rgba( 255, 255, 255, .74 ); font-size: .7rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.fyh-footer__links, .fyh-footer__contact-lines { margin: 0; font-size: .88rem; line-height: 2.05; }
.fyh-footer__links a, .fyh-footer__contact-lines a { color: rgba( 255, 255, 255, .88 ); text-decoration: none; transition: color .18s ease, opacity .18s ease; }
.fyh-footer__links a:hover, .fyh-footer__contact-lines a:hover { color: #fff; }
.fyh-footer__links a:focus-visible, .fyh-footer__contact-lines a:focus-visible { outline: 2px solid #fff; outline-offset: 3px; border-radius: 3px; }
.fyh-footer__contact-lines { margin-top: .9rem; line-height: 1.75; }
.fyh-footer__contact-lines a[href^='mailto:'] { overflow-wrap: normal; word-break: normal; white-space: nowrap; }
.fyh-footer__address {
	display: flex;
	align-items: flex-start;
	gap: .65rem;
	width: fit-content;
	margin: 1.25rem 0 0;
	padding: .72rem .78rem;
	border: 1px solid rgba( 255, 255, 255, .16 );
	border-radius: var(--wp--custom--radius--md, 16px);
	background: rgba( 255, 255, 255, .06 );
	color: rgba( 255, 255, 255, .9 );
	font-size: .84rem;
	font-style: normal;
	line-height: 1.45;
}
.fyh-footer__address-icon {
	display: inline-flex;
	width: 32px;
	height: 32px;
	flex: 0 0 32px;
	align-items: center;
	justify-content: center;
	border: 1px solid rgba( 255, 255, 255, .16 );
	border-radius: 10px;
	background: rgba( 255, 255, 255, .08 );
	color: #fff;
}
.fyh-footer__address-icon svg { width: 16px; height: 16px; }
@media ( max-width: 1000px ) {
	.fyh-footer__cols { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); }
	.fyh-footer__brand { grid-column: 1 / -1; max-width: 42rem; }
}
@media ( max-width: 640px ) {
	.fyh-footer { padding-block-start: 3rem; }
	.fyh-footer__cols { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); gap: 2.25rem 1.25rem !important; }
	.fyh-footer__brand { grid-column: 1 / -1; }
	.fyh-footer__links { font-size: .82rem; }
}
@media ( max-width: 359px ) {
	.fyh-footer__cols { grid-template-columns: 1fr; }
	.fyh-footer__brand { grid-column: auto; }
}
.fyh-footer__bar { gap: .75rem; padding-top: clamp( 1.25rem, 3vw, 1.75rem ); border-top: 1px solid rgba( 255, 255, 255, .22 ); }
.fyh-footer__fine { margin: 0; color: rgba( 255, 255, 255, .78 ); font-size: .78rem; }

/* --- Navbar: theme overrides (the block stays generic) */
.sgui-nav { --sgui-nav-height: var(--fyh-nav-height); }
.sgui-nav__logo { height: clamp(2.4rem, 2.75vw, 3rem); max-width: min(15rem, 42vw); margin-left: 0; }
@media (max-width: 759px) { .sgui-nav__cta { display: inline-flex; padding-left: .9rem; padding-right: .9rem; } }

/* Homepage-Bloecke besitzen ihre Abstaende selbst. Der globale Gutenberg-
   Block-Gap erzeugt zwischen Full-Bleed-Sektionen sonst leere Zwischenbaender. */
body.home .entry-content > .alignfull { margin-block-start: 0; }

/* --- Objektbeschreibung: lesbare Prosa (Butterling-Pattern) -------------- */
.fyh-prose .wp-block-post-content {
	font-size: 1.0625rem;
	line-height: 1.75;
	color: color-mix( in srgb, var(--wp--preset--color--ink) 82%, transparent );
}
.fyh-prose .wp-block-post-content p { margin: 0 0 1.25rem; }
.fyh-prose .wp-block-post-content p:last-child { margin-bottom: 0; }
.fyh-prose .wp-block-post-content h2,
.fyh-prose .wp-block-post-content h3 {
	margin: 2rem 0 .75rem;
	font-weight: 600;
	letter-spacing: -.01em;
	color: var(--wp--preset--color--ink);
}
.fyh-prose .wp-block-post-content ul,
.fyh-prose .wp-block-post-content ol { margin: 0 0 1.25rem; padding-left: 1.25rem; }
.fyh-prose .wp-block-post-content li { margin: 0 0 .4rem; }
/* WP-Root-blockGap-Killer: main als zweites Root-Kind bekommt sonst 24px
   margin-block-start -> weisser Streifen ueber dem Ink-Band (Artikel-Lektion). */
.wp-site-blocks > .fyh-legalmain { margin-block-start: 0; }
.fyh-legalhero .fyh-legalhero__title {
	margin: 0;
	font-size: clamp( 2rem, 3.4vw, 2.8rem );
	font-weight: 600; letter-spacing: -.02em; line-height: 1.1;
	color: #fff;
}

/* Lage-Portraits (Hub): weisse Karten + Namens-Chips (Butterling-Muster). */
.fyh-lage-portraits {
	display: grid;
	gap: 1rem;
	margin: 1.25rem 0 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 760px) {
	.fyh-lage-portraits { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.fyh-lage-portrait h3 {
	margin: 0 0 .5rem;
	font-size: 1.05rem;
	font-weight: 600;
	letter-spacing: -.015em;
	color: var(--wp--preset--color--ink);
}

.fyh-lage-portrait p {
	margin: 0;
	font-size: .9rem;
	line-height: 1.65;
	color: color-mix( in srgb, var(--wp--preset--color--ink) 72%, #fff );
}

.fyh-lage-chips {
	display: flex;
	flex-wrap: wrap;
	gap: .4rem;
	margin-top: auto;
	padding-top: .9rem;
}

.fyh-lage-chips a {
	display: inline-flex;
	padding: .28rem .7rem;
	border: 1px solid var(--wp--preset--color--hairline);
	border-radius: 999px;
	background: var(--wp--preset--color--surface);
	font-size: .74rem;
	font-weight: 600;
	color: color-mix( in srgb, var(--wp--preset--color--ink) 80%, #fff );
	text-decoration: none;
	transition: border-color .18s ease, background .18s ease;
}

.fyh-lage-chips a:hover {
	border-color: color-mix( in srgb, var(--wp--preset--color--ink) 40%, transparent );
	background: var(--wp--preset--color--base);
}

/* Prose — gleiche Lesesprache wie artikel-prose, auf 760px contentSize. */
.fyh-legalprose { padding-top: var(--wp--preset--spacing--50); padding-bottom: var(--wp--preset--spacing--60); }
.fyh-legalprose p {
	margin: 1rem 0;
	color: color-mix( in srgb, var(--wp--preset--color--ink) 82%, #fff );
	font-size: clamp( .98rem, 1.2vw, 1.05rem ); line-height: 1.7;
}
.fyh-legalprose h2 {
	/* Kein Akzentbalken wie im Artikel: auf dichten Rechtsseiten wirkt der
	   Strich wie ein verirrter Gedankenstrich — ruhige Hairline stattdessen. */
	margin: 2.5rem 0 .9rem; padding-bottom: .45rem;
	border-bottom: 1px solid var(--wp--preset--color--hairline);
	font-size: clamp( 1.3rem, 1.9vw, 1.55rem ); font-weight: 600; letter-spacing: -.035em; line-height: 1.15;
	color: var(--wp--preset--color--ink); scroll-margin-top: 6.5rem;
}
.fyh-legalprose h3 {
	margin: 1.9rem 0 .6rem;
	font-size: clamp( 1.08rem, 1.5vw, 1.22rem ); font-weight: 600; letter-spacing: -.01em;
	color: var(--wp--preset--color--ink); scroll-margin-top: 6.5rem;
}
.fyh-legalprose > .wp-block-post-content > h2:first-child,
.fyh-legalprose > .wp-block-post-content > p:first-child,
.fyh-legalprose.wp-block-post-content > h2:first-child,
.fyh-legalprose.wp-block-post-content > p:first-child { margin-top: 0; }

/* --- Leistungsseiten: Landingpage-Hierarchie + Artikel-Lesbarkeit --------- */
.wp-site-blocks > .fyh-service-main { margin-block-start: 0; }
.fyh-lagehub__inner { max-width: 78rem; margin-inline: auto; }
.fyh-lagehub__breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; margin-bottom: 1.25rem; color: var(--wp--preset--color--muted); font-size: .78rem; }
.fyh-lagehub__breadcrumb a { color: var(--wp--preset--color--ink); font-weight: 600; text-decoration-color: var(--wp--preset--color--hairline); text-underline-offset: 3px; }
.fyh-lagehub__lead { max-width: 72ch; margin: 0; color: color-mix( in srgb, var(--wp--preset--color--ink) 76%, #fff ); font-size: clamp( 1rem, 1.35vw, 1.12rem ); line-height: 1.7; text-wrap: pretty; }
.fyh-lagehub-explorer { margin: 0; scroll-margin-top: calc( var(--fyh-nav-height) + 1.5rem ); }
.fyh-lagehub-explorer > .sgui-lagecards { margin: 0; }

.fyh-service-hero__title {
	max-width: 18ch;
	margin: 0;
	text-wrap: balance;
	color: #fff;
	font-size: clamp( 2.25rem, 5vw, 4.25rem );
	font-weight: 600;
	letter-spacing: -.04em;
	line-height: 1.03;
	text-shadow: var(--wp--custom--glow--title);
}

.fyh-service-hero__lead {
	max-width: 44rem;
	margin: 1rem 0 0;
	text-wrap: pretty;
	color: rgba( 255, 255, 255, .88 );
	font-size: clamp( 1rem, 1.35vw, 1.14rem );
	line-height: 1.65;
	filter: var(--wp--custom--glow--soft);
}

.fyh-service-hero__actions {
	margin-top: 1.5rem;
}

.fyh-service-body {
	padding-block: clamp( 2.25rem, 5vw, 4rem ) clamp( 2rem, 4vw, 3rem );
	padding-inline: var(--wp--custom--layout--gutter, clamp( 1.5rem, 5vw, 6rem ));
}

/* Der Abschluss-CTA braucht auf jeder Service-Seite einen sichtbaren,
   kontrollierten Auslauf zum Footer statt einer harten Dunkel-an-Dunkel-Kante. */
.fyh-service-main {
	padding-bottom: clamp( 1.5rem, 3vw, 2.25rem );
}

.fyh-service-layout {
	display: grid;
	grid-template-columns: minmax( 0, 1fr );
	gap: 2rem;
	width: 100%;
	max-width: 70rem;
	margin-inline: auto;
}

.fyh-service-content {
	width: 100%;
	min-width: 0;
	max-width: 47rem;
	margin-inline: auto;
}

.fyh-service-content,
.fyh-service-section,
.fyh-service-section > * {
	min-width: 0;
	max-width: 100%;
}

/* Wenn eine Seite bewusst kein Inhaltsverzeichnis hat, darf ihr einziger
   Content-Block nie in der für die TOC reservierten schmalen Spalte landen. */
.fyh-service-layout > .fyh-service-content:only-child {
	grid-column: 1 / -1;
	width: 100%;
	justify-self: center;
}

/* Seiten ohne TOC können trotzdem einen direkten Abschluss-CTA als zweites
   Kind besitzen. Der Content ist dann nicht :only-child, bleibt aber Besitzer
   der vollen ersten Zeile. */
.fyh-service-layout > .fyh-service-content:first-child {
	grid-column: 1 / -1;
	justify-self: center;
	margin-inline: auto;
}

.fyh-service-section {
	min-width: 0;
}

.fyh-service-section + .fyh-service-section {
	margin-top: var(--fyh-service-section-gap);
	padding-top: var(--fyh-service-section-gap);
	border-top: 1px solid var(--wp--preset--color--hairline);
}

/* Gemeinsamer Inhaltsrhythmus: Listen, Karten, Hinweise und Aktionen beginnen
   auf jeder Leistungsseite auf derselben Achse. Explizite Komponentenabstände
   bleiben Besitzer ihrer internen Geometrie; hier wird nur der Grundabstand
   vom vorausgehenden Text bzw. Titel gesetzt. */
.fyh-service-section > :is(
	.wp-block-list,
	.wp-block-columns,
	.wp-block-table,
	.wp-block-buttons,
	.fyh-service-points,
	.fyh-service-steps,
	.fyh-service-note,
	.fyh-service-links,
	.fyh-service-faq,
	.fyh-service-section__actions
) {
	margin-top: var(--fyh-service-content-gap);
}

.fyh-service-h2 {
	max-width: 25ch;
	margin: 0;
	text-wrap: balance;
	color: var(--wp--preset--color--ink);
	font-size: clamp( 1.875rem, 3vw, 2.75rem );
	font-weight: 600;
	letter-spacing: -.035em;
	line-height: 1.15;
	overflow-wrap: anywhere;
	scroll-margin-top: calc( var(--fyh-nav-height) + 2rem );
}

body.admin-bar .fyh-service-h2 {
	scroll-margin-top: calc( var(--fyh-nav-height) + 4rem );
}

.fyh-service-answer {
	max-width: 65ch;
	margin: 1rem 0 0;
	text-wrap: pretty;
	color: color-mix( in srgb, var(--wp--preset--color--ink) 78%, #fff );
	font-size: clamp( 1.04rem, 1.3vw, 1.14rem );
	line-height: 1.72;
}

.fyh-service-section > p:not([class]) {
	max-width: 68ch;
	margin: 1rem 0 0;
	text-wrap: pretty;
	color: color-mix( in srgb, var(--wp--preset--color--ink) 76%, #fff );
	font-size: 1rem;
	line-height: 1.72;
}

/* Typeset typography is owned by components/typography/typeset.css. */

.fyh-service-points {
	display: grid;
	border-top: 1px solid var(--wp--preset--color--hairline);
}

.fyh-service-point {
	display: grid;
	gap: .55rem;
	padding: 1.35rem 0;
	border-bottom: 1px solid var(--wp--preset--color--hairline);
}

.fyh-service-point h3,
.fyh-service-step h3,
.fyh-service-note h3 {
	margin: 0;
	color: var(--wp--preset--color--ink);
	font-size: 1.04rem;
	font-weight: 600;
	letter-spacing: -.015em;
}

.fyh-service-point p,
.fyh-service-step p,
.fyh-service-note p {
	margin: 0;
	color: var(--wp--preset--color--muted);
	font-size: .94rem;
	line-height: 1.65;
}

/* Objektart-Karten werden ab 640px zweispaltig. Nachfolgende Checklisten
   muessen die volle Kartenachse nutzen; Auto-Placement sperrt sie sonst in
   der schmalen 14rem-Ueberschriftenspalte ein. */
.fyh-service-point > .wp-block-list {
	grid-column: 1 / -1;
	width: 100%;
	margin-top: .45rem;
}

.fyh-service-steps {
	display: grid;
	border-top: 1px solid var(--wp--preset--color--hairline);
	counter-reset: service-step;
}

.fyh-service-step {
	display: grid;
	grid-template-columns: 3rem minmax( 0, 1fr );
	gap: .25rem 1.15rem;
	padding: 1.35rem 0;
	border-bottom: 1px solid var(--wp--preset--color--hairline);
	counter-increment: service-step;
}

.fyh-service-step::before {
	grid-row: 1 / span 2;
	content: counter( service-step, decimal-leading-zero );
	color: var(--wp--preset--color--ink);
	font-size: 1.75rem;
	font-weight: 600;
	letter-spacing: -.04em;
	line-height: 1;
}

.fyh-service-note {
	padding: 1.25rem 1.35rem;
	border: 1px solid var(--wp--preset--color--hairline);
	border-radius: 16px;
	background: var(--wp--preset--color--surface);
}

.fyh-service-note p {
	margin-top: .45rem;
}

.fyh-service-links {
	padding-top: 1.25rem;
	border-top: 1px solid var(--wp--preset--color--hairline);
}

.fyh-service-links p {
	margin: 0;
}

.fyh-service-faq {
	border-top: 1px solid var(--wp--preset--color--hairline);
}

.fyh-service-faq details {
	padding: 0;
	border-bottom: 1px solid var(--wp--preset--color--hairline);
}

.fyh-service-faq summary {
	position: relative;
	min-height: 3.5rem;
	padding: 1rem 2.25rem 1rem 0;
	cursor: pointer;
	color: var(--wp--preset--color--ink);
	font-weight: 600;
	list-style: none;
}

.fyh-service-faq summary::-webkit-details-marker {
	display: none;
}

.fyh-service-faq summary::after {
	position: absolute;
	top: 50%;
	right: .2rem;
	content: '+';
	color: var(--wp--preset--color--muted);
	font-size: 1.25rem;
	font-weight: 400;
	transform: translateY( -50% );
}

.fyh-service-faq details[open] summary::after {
	content: '−';
}

.fyh-service-faq summary:focus-visible {
	outline: 2px solid var(--wp--preset--color--ink);
	outline-offset: 3px;
}

.fyh-service-faq details p {
	margin: -.15rem 0 1.1rem;
	color: var(--wp--preset--color--muted);
}

.fyh-service-layout > .fyh-service-cta {
	grid-column: 1 / -1;
	justify-self: stretch;
}

.fyh-service-cta__copy {
	grid-area: copy;
}

@media ( min-width: 960px ) {

	.fyh-service-cta .wp-block-button__link {
		white-space: nowrap;
	}
}

@media ( min-width: 1280px ) {
	.fyh-service-layout {
		grid-template-columns: minmax( 13.5rem, 14rem ) minmax( 0, 1fr );
		gap: clamp( 2.5rem, 4vw, 3.5rem );
		align-items: start;
	}

	/* Erst im zweispaltigen Layout teilen sich TOC und Content die erste
	   Grid-Zeile. Unterhalb davon wahrt die DOM-Reihenfolge
	   TOC → Content → CTA den korrekten Lesefluss ohne leere Zwischenzeile. */
	.fyh-service-layout > .fyh-service-cta {
		grid-row: 2;
	}

	.fyh-service-layout > .fyh-service-toc,
	.fyh-service-layout > .fyh-service-content:not( :only-child ) {
		grid-row: 1;
	}

	.fyh-service-layout > .fyh-service-content:not( :only-child ) {
		justify-self: start;
		margin-inline: 0;
	}

}

@media ( max-width: 639px ) {

	.fyh-service-hero__actions .wp-block-button__link,
	.fyh-service-cta .wp-block-button__link {
		justify-content: center;
		text-align: center;
	}
}

/* objhead-BASIS (21.07.): lebte nur in immobilien/style.css — auf Seiten
   ohne immobilien-Block (z.B. Bewertungs-LP mit Rueckruf-Sektion) fehlte
   sie komplett. Geteilte Basis gehoert ins Theme (Lagen-Plugin-Lektion). */
.fyh-objhead { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; flex-wrap: wrap; }
.fyh-objhead__copy { display: flex; flex-direction: column; gap: 0.5rem; min-width: 0; }
.fyh-objhead__eyebrow { margin: 0; color: var(--wp--custom--ui--primary, var(--wp--preset--color--brand)); font-size: var(--wp--custom--type--label-size, .75rem); font-weight: var(--wp--custom--type--label-weight, 600); letter-spacing: var(--wp--custom--type--label-tracking, .08em); text-transform: uppercase; }
.fyh-objhead__title { margin: 0; font-size: var(--wp--custom--type--section-size, clamp(1.875rem, 3vw, 2.5rem)); line-height: var(--wp--custom--type--section-leading, 1.15); font-weight: var(--wp--custom--type--section-weight, 650); letter-spacing: var(--wp--custom--type--section-tracking, -.025em); color: var(--wp--preset--color--ink); text-wrap: balance; }
.fyh-h2soft { color: var(--wp--preset--color--muted); }

/* Sektions-Kopf-Absatz (objhead-System, 21.07.): grauer Intro-Text unter
   der zweizeiligen H2 — Leistungen-Muster fuer alle Sektions-Koepfe. */
.fyh-objhead__text { margin: .9rem 0 0; max-width: 54ch; font-size: clamp( 1rem, 1.35vw, 1.1rem ); line-height: 1.65; color: var(--wp--preset--color--muted); }

.fyh-legalhero > * {
	max-width: none;
	margin-left: 0 !important;
}

.fyh-imhero__h1 {
	font-size: clamp( 2.25rem, 4.4vw, 3.5rem );
	font-weight: 600;
	letter-spacing: -.04em;
	text-shadow: none;
}

/* Rechtstexte lesen in 760px, beginnen aber auf der gemeinsamen Kante. */
.fyh-legalprose > *,
.fyh-legalprose > .wp-block-post-content > * {
	margin-left: 0 !important;
}
