/* =====================================================================
 * Residenz Premium – Haupt-Stylesheet
 * Design: „Rheinhessen-Weingut-Eleganz"
 * Display: Cormorant Garamond · Body: Mulish · Utility: Jost
 * Alle Farben kommen als CSS-Variablen aus dem Customizer (design-system.php).
 * ===================================================================== */

/* ---------- Design-Tokens / Fallbacks ---------- */
:root {
	--c-primary: #6E2433;
	--c-secondary: #2B1A24;
	--c-accent: #B68A4E;
	--c-button: #6E2433;
	--c-button-text: #FBF7F0;
	--c-hover: #B68A4E;
	--c-bg: #FBF7F0;
	--c-section: #F3ECE1;
	--c-header: #FBF7F0;
	--c-footer: #2B1A24;
	--c-hero: #2B1A24;
	--c-text: #2A2422;
	--c-heading: #2B1A24;
	--c-link: #6E2433;
	--c-menu: #2B1A24;
	--c-menu-hover: #B68A4E;
	--c-border: #E3D8C7;
	--logo-h: 56px;

	--ff-display: "Cormorant Garamond", "Times New Roman", serif;
	--ff-body: "Mulish", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	--ff-util: "Jost", var(--ff-body);

	--wrap: 1200px;
	--wrap-narrow: 760px;
	--space: clamp(3rem, 7vw, 6.5rem);
	--radius: 4px;
	--radius-lg: 10px;
	--shadow: 0 18px 50px -28px rgba(43, 26, 36, 0.45);
	--shadow-sm: 0 6px 20px -14px rgba(43, 26, 36, 0.5);
	--trans: 0.35s cubic-bezier(0.22, 0.61, 0.36, 1);
	--header-h: 84px;
}

/* ---------- Basis ---------- */
*,
*::before,
*::after { box-sizing: border-box; }

body {
	margin: 0;
	font-family: var(--ff-body);
	font-weight: 400;
	font-size: 1.0625rem;
	line-height: 1.7;
	color: var(--c-text);
	background: var(--c-bg);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

img,
video { max-width: 100%; height: auto; display: block; }

a {
	color: var(--c-link);
	text-decoration: none;
	transition: color var(--trans);
}
a:hover { color: var(--c-hover); }

h1, h2, h3, h4 {
	font-family: var(--ff-display);
	color: var(--c-heading);
	font-weight: 500;
	line-height: 1.12;
	letter-spacing: 0.01em;
	margin: 0 0 0.5em;
}

p { margin: 0 0 1.2em; }
ul, ol { margin: 0 0 1.2em; }

.rz-container {
	width: 100%;
	max-width: var(--wrap);
	margin-inline: auto;
	padding-inline: clamp(1.25rem, 5vw, 2.5rem);
}

.rz-eyebrow {
	font-family: var(--ff-util);
	font-size: 0.78rem;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--c-accent);
	margin: 0 0 0.9rem;
}
.rz-eyebrow--light { color: var(--c-accent); }

.rz-h3 { font-size: 1.6rem; }

.screen-reader-text,
.rz-skip {
	position: absolute;
	left: -9999px;
}
.rz-skip:focus {
	left: 1rem;
	top: 1rem;
	z-index: 1000;
	background: var(--c-primary);
	color: #fff;
	padding: 0.75rem 1.25rem;
	border-radius: var(--radius);
}

:focus-visible {
	outline: 2px solid var(--c-accent);
	outline-offset: 3px;
}

/* ---------- Buttons ---------- */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	font-family: var(--ff-util);
	font-size: 0.9rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	padding: 0.95rem 1.9rem;
	border-radius: var(--radius);
	border: 1px solid transparent;
	cursor: pointer;
	transition: background var(--trans), color var(--trans), border-color var(--trans), transform var(--trans);
	line-height: 1;
}
.btn--primary {
	background: var(--c-button);
	color: var(--c-button-text);
	border-color: var(--c-button);
}
.btn--primary:hover {
	background: var(--c-hover);
	border-color: var(--c-hover);
	color: var(--c-secondary);
	transform: translateY(-1px);
}
.btn--ghost {
	background: transparent;
	color: var(--c-primary);
	border-color: var(--c-border);
}
.btn--ghost:hover {
	border-color: var(--c-accent);
	color: var(--c-accent);
}
.btn--ghost-light {
	color: #fff;
	border-color: rgba(255, 255, 255, 0.55);
}
.btn--ghost-light:hover {
	color: var(--c-secondary);
	background: #fff;
	border-color: #fff;
}

/* ---------- Header ---------- */
.rz-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: color-mix(in srgb, var(--c-header) 92%, transparent);
	backdrop-filter: saturate(140%) blur(8px);
	border-bottom: 1px solid var(--c-border);
	transition: box-shadow var(--trans), background var(--trans);
}
.rz-header.is-scrolled {
	box-shadow: var(--shadow-sm);
}
.rz-header__inner {
	max-width: var(--wrap);
	margin-inline: auto;
	padding-inline: clamp(1.25rem, 5vw, 2.5rem);
	min-height: var(--header-h);
	display: flex;
	align-items: center;
	justify-content: space-between;
	/* Abstand Logo <-> Menü, im Customizer einstellbar */
	gap: var(--menu-gap, 1.5rem);
	flex-wrap: nowrap;
}
/* Aktionsbereich darf nie vom Menü überlagert werden */
.rz-header__actions { flex: 0 0 auto; }

.residenz-brand { display: inline-flex; align-items: center; flex: 0 0 auto; min-width: 0; }
.residenz-brand__img {
	height: var(--logo-h);
	width: auto;
	max-width: none;      /* verhindert Stauchen durch globale max-width-Regel */
	object-fit: contain;  /* Seitenverhältnis bleibt in jedem Fall erhalten */
	display: block;
}
.residenz-brand--text .residenz-brand__name {
	font-family: var(--ff-display);
	font-size: 1.65rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--c-heading);
}
.residenz-brand--mobile { display: none; }

.rz-nav {
	flex: 1 1 auto;
	display: flex;
	/* Position des Menüs: links / mittig / rechts (Customizer) */
	justify-content: var(--menu-justify, center);
	min-width: 0;
	/* KEIN overflow:hidden hier – es würde die aufklappenden
	   Untermenüs (position:absolute) unsichtbar abschneiden. */
}
.rz-menu {
	display: flex;
	align-items: center;
	gap: clamp(0.7rem, 1.4vw, 1.6rem);
	min-width: 0;
	max-width: 100%;
	list-style: none;
	margin: 0;
	padding: 0;
	flex-wrap: nowrap;          /* alles in einer Zeile */
	white-space: nowrap;
}
.rz-menu li { position: relative; min-width: 0; }
.rz-nav .rz-menu > li > a { overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.rz-menu a {
	font-family: var(--ff-util);
	font-size: 0.92rem;
	font-weight: 500;
	letter-spacing: 0.04em;
	color: var(--c-menu);
	padding: 0.4rem 0;
	position: relative;
	white-space: nowrap;
	/* Animierte Unterstreichung via Hintergrund (lässt ::after für den Pfeil frei) */
	background-image: linear-gradient(var(--c-accent), var(--c-accent));
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 0 1.5px;
	transition: background-size var(--trans), color var(--trans);
}
.rz-menu a:hover,
.rz-menu .current-menu-item > a { color: var(--c-menu-hover); }
.rz-menu a:hover,
.rz-menu .current-menu-item > a { background-size: 100% 1.5px; }

/* Pfeil bei Menüpunkten mit Untermenü */
.rz-nav .rz-menu .menu-item-has-children > a {
	display: inline-flex;
	align-items: center;
}
.rz-nav .rz-menu .menu-item-has-children > a::after {
	content: "";
	width: 0.42em;
	height: 0.42em;
	margin-left: 0.45em;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg) translateY(-0.12em);
	transition: transform var(--trans);
	background: none;
}
.rz-nav .rz-menu .menu-item-has-children:hover > a::after { transform: rotate(225deg) translateY(0.12em); }

/* Submenu */
.rz-nav .rz-menu .sub-menu {
	position: absolute;
	top: calc(100% + 0.6rem);
	left: 50%;
	transform: translateX(-50%) translateY(8px);
	min-width: 230px;
	background: var(--c-bg);
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	box-shadow: var(--shadow);
	list-style: none;
	margin: 0;
	padding: 0.5rem 0;
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--trans), transform var(--trans), visibility var(--trans);
	z-index: 50;
}
.rz-nav .rz-menu li:hover > .sub-menu,
.rz-nav .rz-menu li:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateX(-50%) translateY(0);
}
.rz-nav .rz-menu .sub-menu a {
	display: block;
	padding: 0.55rem 1.4rem;
	white-space: nowrap;
	background-image: none;
}
.rz-nav .rz-menu .sub-menu .menu-item-has-children > a::after { display: none; }

.rz-header__actions {
	display: flex;
	align-items: center;
	gap: 0.75rem;
}
.rz-header__actions .btn { padding: 0.7rem 1.3rem; }

/* Burger */
.rz-burger {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 46px; height: 46px;
	background: transparent;
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	cursor: pointer;
	padding: 0 11px;
}
.rz-burger span {
	display: block;
	height: 1.5px;
	background: var(--c-secondary);
	transition: transform var(--trans), opacity var(--trans);
}
.rz-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.rz-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.rz-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

/* Mobile-Nav */
.rz-mobile-nav {
	border-top: 1px solid var(--c-border);
	background: var(--c-bg);
	padding: 1rem clamp(1.25rem, 5vw, 2.5rem) 1.75rem;
}
.rz-mobile-nav .rz-menu--mobile {
	flex-direction: column;
	align-items: stretch;
	gap: 0;
}
.rz-mobile-nav .rz-menu--mobile > li { border-bottom: 1px solid var(--c-border); }
.rz-mobile-nav .rz-menu--mobile a { display: block; padding: 0.85rem 0; background-image: none; }

/* Zeile mit Pfeil-Button für aufklappbare Punkte */
.rz-mobile-nav .menu-item-has-children > a { display: inline-block; }
.rz-mobile-nav .menu-item-has-children { display: flex; flex-wrap: wrap; align-items: center; }
.rz-mobile-nav .menu-item-has-children > a { flex: 1; }
.rz-subtoggle {
	flex: 0 0 auto;
	width: 44px; height: 44px;
	display: inline-flex; align-items: center; justify-content: center;
	background: none; border: none; cursor: pointer; color: var(--c-menu);
}
.rz-subtoggle::after {
	content: "";
	width: 0.5em; height: 0.5em;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform var(--trans);
}
.rz-mobile-nav .menu-item-has-children.is-open > .rz-subtoggle::after { transform: rotate(225deg); }
.rz-mobile-nav .sub-menu {
	position: static;
	transform: none;
	opacity: 1;
	visibility: visible;
	box-shadow: none;
	border: none;
	background: transparent;
	padding: 0 0 0.5rem 1rem;
	min-width: 0;
	flex-basis: 100%;
	display: none;
}
.rz-mobile-nav .menu-item-has-children.is-open > .sub-menu { display: block; }

/* ---------- Arch-Signature (Gewölbebogen) ---------- */
.rz-hero__arch,
.rz-occasion__arch,
.rz-service__arch,
.rz-about__arch,
.rz-cta__arch { pointer-events: none; }

/* ---------- Hero ---------- */
.rz-hero {
	position: relative;
	display: flex;
	align-items: center;
	min-height: min(86vh, 760px);
	background: var(--c-hero);
	color: #fff;
	overflow: hidden;
	isolation: isolate;
}
.rz-hero--has-image::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: var(--hero-image);
	background-size: cover;
	background-position: center;
	z-index: -2;
}
.rz-hero__video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: -2;
}
.rz-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg,
		color-mix(in srgb, var(--c-hero) calc(var(--hero-overlay, 55%) * 0.72), transparent) 0%,
		color-mix(in srgb, var(--c-hero) var(--hero-overlay, 78%), transparent) 100%);
	z-index: -1;
}
.rz-hero:not(.rz-hero--has-image):not(.rz-hero--has-video)::after {
	background: radial-gradient(circle at 30% 20%, color-mix(in srgb, var(--c-primary) 60%, transparent), transparent 60%), var(--c-hero);
}
/* Gewölbebogen oben */
.rz-hero__arch {
	position: absolute;
	top: -1px; left: 50%;
	transform: translateX(-50%);
	width: min(90%, 900px);
	height: 220px;
	border: 1.5px solid rgba(255, 255, 255, 0.16);
	border-bottom: none;
	border-radius: 50% 50% 0 0 / 100% 100% 0 0;
	z-index: -1;
}
.rz-hero__inner { max-width: var(--wrap); }
.rz-hero__title {
	color: #fff;
	font-size: clamp(2.6rem, 6vw, 4.6rem);
	max-width: 16ch;
	margin-bottom: 0.4em;
}
.rz-hero__sub {
	font-size: clamp(1.05rem, 2vw, 1.25rem);
	max-width: 52ch;
	color: rgba(255, 255, 255, 0.88);
	margin-bottom: 2rem;
}
.rz-hero__actions { display: flex; flex-wrap: wrap; gap: 1rem; }

/* ---------- Sektionen ---------- */
.rz-section { padding-block: var(--space); }
.rz-section--services,
.rz-section--testimonials { background: var(--c-section); }
.rz-section__head { max-width: var(--wrap-narrow); margin: 0 auto clamp(2.5rem, 5vw, 3.5rem); text-align: center; }
.rz-section__title { font-size: clamp(1.9rem, 4vw, 2.9rem); }
.rz-section__title--light { color: #fff; }

/* Grids */
.rz-grid { display: grid; gap: 1.5rem; }
.rz-grid--occasions { grid-template-columns: repeat(3, 1fr); }
.rz-grid--services { grid-template-columns: repeat(4, 1fr); }
.rz-grid--cards { grid-template-columns: repeat(3, 1fr); }

/* Occasion-Karte */
.rz-occasion {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: 2.2rem 1.8rem 2rem;
	background: var(--c-bg);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-lg);
	overflow: hidden;
	transition: transform var(--trans), box-shadow var(--trans), border-color var(--trans);
}
.rz-occasion:hover {
	transform: translateY(-4px);
	box-shadow: var(--shadow);
	border-color: var(--c-accent);
}
.rz-occasion__arch {
	position: absolute;
	top: -40px; right: -40px;
	width: 130px; height: 130px;
	border: 1.5px solid var(--c-border);
	border-radius: 50% 50% 0 0 / 100% 100% 0 0;
	opacity: 0.5;
}
.rz-occasion__title { font-family: var(--ff-display); font-size: 1.55rem; color: var(--c-primary); margin-bottom: 0.4rem; }
.rz-occasion__text { color: var(--c-text); margin-bottom: 1.2rem; }
.rz-occasion__more {
	margin-top: auto;
	font-family: var(--ff-util);
	font-size: 0.82rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--c-accent);
}

/* Service-Karte */
.rz-service {
	position: relative;
	padding: 2rem 1.6rem;
	background: var(--c-bg);
	border-radius: var(--radius-lg);
	border: 1px solid var(--c-border);
}
.rz-service__arch {
	display: block;
	width: 54px; height: 28px;
	margin-bottom: 1.2rem;
	border: 1.5px solid var(--c-accent);
	border-bottom: none;
	border-radius: 50% 50% 0 0 / 100% 100% 0 0;
}
.rz-service__title { font-size: 1.35rem; }
.rz-service__text { font-size: 0.98rem; margin: 0; }

/* About */
.rz-about { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.rz-about__media {
	position: relative;
	aspect-ratio: 4 / 5;
	background: linear-gradient(160deg, var(--c-primary), var(--c-secondary));
	border-radius: 50% 50% 12px 12px / 28% 28% 4px 4px;
	overflow: hidden;
}
.rz-about__arch {
	position: absolute;
	inset: 14px;
	border: 1.5px solid rgba(255, 255, 255, 0.28);
	border-radius: 50% 50% 8px 8px / 28% 28% 3px 3px;
}
.rz-about__body { max-width: 46ch; }

/* Kulinarik */
.rz-section--kulinarik {
	background: var(--c-secondary);
	color: #fff;
}
.rz-kulinarik { max-width: var(--wrap-narrow); }
.rz-kulinarik__intro { color: rgba(255, 255, 255, 0.85); }
.rz-kulinarik__list {
	list-style: none;
	padding: 0;
	margin: 0 0 2rem;
	display: grid;
	gap: 0.75rem;
}
.rz-kulinarik__list li {
	position: relative;
	padding-left: 1.8rem;
	color: rgba(255, 255, 255, 0.92);
}
.rz-kulinarik__list li::before {
	content: "";
	position: absolute;
	left: 0; top: 0.55em;
	width: 16px; height: 8px;
	border: 1.5px solid var(--c-accent);
	border-bottom: none;
	border-radius: 50% 50% 0 0 / 100% 100% 0 0;
}

/* Testimonials / Reviews */
.rz-reviews { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.rz-review {
	background: var(--c-bg);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-lg);
	padding: 2rem 1.8rem;
}
.rz-review__stars { color: var(--c-accent); letter-spacing: 0.18em; margin-bottom: 0.8rem; }
.rz-review__text { font-family: var(--ff-display); font-size: 1.25rem; font-style: italic; color: var(--c-secondary); }
.rz-review__author { font-family: var(--ff-util); font-size: 0.85rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--c-accent); }

/* CTA */
.rz-section--cta { background: var(--c-section); }
.rz-cta {
	position: relative;
	text-align: center;
	max-width: var(--wrap-narrow);
	background: linear-gradient(160deg, var(--c-primary), var(--c-secondary));
	color: #fff;
	padding: clamp(3rem, 6vw, 5rem) 2rem;
	border-radius: var(--radius-lg);
	overflow: hidden;
}
.rz-cta__arch {
	position: absolute;
	top: -1px; left: 50%;
	transform: translateX(-50%);
	width: 70%; height: 120px;
	border: 1.5px solid rgba(255, 255, 255, 0.2);
	border-bottom: none;
	border-radius: 50% 50% 0 0 / 100% 100% 0 0;
}
.rz-cta__title { color: #fff; font-size: clamp(2rem, 4vw, 3rem); }
.rz-cta__text { color: rgba(255, 255, 255, 0.88); max-width: 48ch; margin-inline: auto; }
.rz-cta__actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; margin-top: 1.8rem; }
.rz-cta .btn--ghost { color: #fff; border-color: rgba(255, 255, 255, 0.5); }
.rz-cta .btn--ghost:hover { background: #fff; color: var(--c-secondary); border-color: #fff; }

/* ---------- Allgemeine Inhalte ---------- */
.rz-page-head {
	background: var(--c-section);
	padding-block: clamp(2.5rem, 6vw, 4rem);
	text-align: center;
	border-bottom: 1px solid var(--c-border);
}
.rz-page-head__title { font-size: clamp(2rem, 5vw, 3.2rem); }
.rz-prose { max-width: var(--wrap-narrow); margin-inline: auto; padding-block: clamp(2.5rem, 6vw, 4rem); }
.rz-prose img { border-radius: var(--radius-lg); margin-block: 1.5rem; }
.rz-page__media, .rz-single__media { margin-block: clamp(2rem, 5vw, 3rem); }
.rz-page__img, .rz-single__img { border-radius: var(--radius-lg); width: 100%; }

.rz-posts { display: grid; gap: 2rem; max-width: var(--wrap-narrow); margin-inline: auto; }
.rz-post { display: grid; grid-template-columns: 240px 1fr; gap: 1.5rem; align-items: center; }
.rz-post__img { border-radius: var(--radius); aspect-ratio: 4/3; object-fit: cover; width: 100%; }
.rz-post__title { font-size: 1.5rem; margin: 0.3rem 0 0.6rem; }
.rz-link { font-family: var(--ff-util); font-size: 0.85rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--c-accent); }

.rz-card {
	background: var(--c-bg);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-lg);
	overflow: hidden;
	transition: transform var(--trans), box-shadow var(--trans);
}
.rz-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.rz-card__link { display: flex; flex-direction: column; height: 100%; }
.rz-card__media { display: block; aspect-ratio: 4/3; overflow: hidden; background: var(--c-section); }
.rz-card__media--placeholder { background: linear-gradient(160deg, var(--c-section), var(--c-border)); }
.rz-card__img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--trans); }
.rz-card:hover .rz-card__img { transform: scale(1.05); }
.rz-card__body { padding: 1.4rem 1.5rem 1.7rem; display: flex; flex-direction: column; gap: 0.4rem; }
.rz-card__title { font-family: var(--ff-display); font-size: 1.4rem; color: var(--c-primary); }
.rz-card__excerpt { font-size: 0.95rem; color: var(--c-text); }

.rz-empty { text-align: center; color: var(--c-text); padding-block: 3rem; }
.rz-archive { padding-block: clamp(2.5rem, 6vw, 4rem); }

/* Pagination */
.pagination, .nav-links {
	display: flex;
	justify-content: center;
	gap: 0.5rem;
	margin-top: 3rem;
	flex-wrap: wrap;
}
.pagination .page-numbers, .nav-links .page-numbers {
	display: inline-flex;
	min-width: 44px; height: 44px;
	align-items: center; justify-content: center;
	padding: 0 0.8rem;
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	font-family: var(--ff-util);
	color: var(--c-secondary);
}
.pagination .current, .nav-links .current { background: var(--c-primary); color: #fff; border-color: var(--c-primary); }

/* Tags */
.rz-tags { list-style: none; display: flex; flex-wrap: wrap; gap: 0.5rem; padding: 0; margin-top: 2rem; }
.rz-tags li a {
	font-family: var(--ff-util);
	font-size: 0.8rem;
	padding: 0.3rem 0.8rem;
	background: var(--c-section);
	border-radius: 999px;
}

/* 404 */
.rz-404 { text-align: center; padding-block: clamp(4rem, 12vw, 8rem); max-width: var(--wrap-narrow); }
.rz-404__title { font-size: clamp(2.4rem, 6vw, 4rem); }
.rz-404__actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; margin: 2rem 0; }
.rz-404__search { max-width: 420px; margin-inline: auto; }

/* Suche */
.rz-search { display: flex; gap: 0.5rem; }
.rz-search__field {
	flex: 1;
	padding: 0.85rem 1.1rem;
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	font-family: var(--ff-body);
	background: var(--c-bg);
}

/* ---------- Anfrage / Formular-Shortcodes ---------- */
.rz-inquiry, .rz-form {
	display: grid;
	gap: 1rem;
	max-width: 640px;
}
.rz-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.rz-inquiry input,
.rz-inquiry select,
.rz-inquiry textarea,
.rz-field input,
.rz-field select,
.rz-field textarea {
	width: 100%;
	padding: 0.85rem 1rem;
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	font-family: var(--ff-body);
	font-size: 1rem;
	background: var(--c-bg);
	color: var(--c-text);
	transition: border-color var(--trans), box-shadow var(--trans);
}
.rz-inquiry input:focus,
.rz-inquiry select:focus,
.rz-inquiry textarea:focus,
.rz-field input:focus,
.rz-field select:focus,
.rz-field textarea:focus {
	outline: none;
	border-color: var(--c-accent);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-accent) 25%, transparent);
}
.rz-check {
	display: flex;
	align-items: flex-start;
	gap: 0.6rem;
	font-size: 0.92rem;
	line-height: 1.5;
}
.rz-check input { width: auto; margin-top: 0.2rem; }
.rz-form__msg { font-size: 0.92rem; margin: 0; min-height: 1.2em; }
.rz-form__msg.is-success { color: #2f6e3b; }
.rz-form__msg.is-error { color: #9b2226; }
.is-loading { opacity: 0.6; pointer-events: none; }

/* Budget-Rechner */
.rz-budget {
	max-width: 520px;
	background: var(--c-section);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-lg);
	padding: 2rem;
	display: grid;
	gap: 1rem;
}
.rz-budget__row { display: grid; grid-template-columns: 1fr 140px; align-items: center; gap: 1rem; }
.rz-budget__row input { padding: 0.6rem 0.8rem; border: 1px solid var(--c-border); border-radius: var(--radius); text-align: right; }
.rz-budget__result {
	display: flex; justify-content: space-between; align-items: baseline;
	border-top: 1.5px solid var(--c-border);
	margin-top: 0.5rem; padding-top: 1.2rem;
}
.rz-budget__result strong { font-family: var(--ff-display); font-size: 2rem; color: var(--c-primary); }
.rz-budget__hint { font-size: 0.85rem; color: var(--c-text); opacity: 0.8; margin: 0; }

/* FAQ */
.rz-faq { max-width: var(--wrap-narrow); display: grid; gap: 0.75rem; }
.rz-faq__item {
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	background: var(--c-bg);
	padding: 0 1.4rem;
}
.rz-faq__item summary {
	cursor: pointer;
	padding: 1.1rem 0;
	font-family: var(--ff-display);
	font-size: 1.25rem;
	color: var(--c-secondary);
	list-style: none;
	display: flex; justify-content: space-between; gap: 1rem;
}
.rz-faq__item summary::-webkit-details-marker { display: none; }
.rz-faq__item summary::after { content: "+"; color: var(--c-accent); font-size: 1.5rem; line-height: 1; }
.rz-faq__item[open] summary::after { content: "–"; }
.rz-faq__answer { padding-bottom: 1.2rem; margin: 0; }

/* Social */
.rz-social { display: flex; gap: 0.6rem; list-style: none; padding: 0; margin: 1rem 0 0; flex-wrap: wrap; }
.rz-social__link {
	display: inline-flex;
	width: 42px; height: 42px;
	align-items: center; justify-content: center;
	border: 1px solid currentColor;
	border-radius: 50%;
	opacity: 0.85;
	text-decoration: none;
	color: inherit;
	transition: opacity var(--trans), transform var(--trans), background var(--trans), color var(--trans);
}
.rz-social__link:hover { opacity: 1; transform: translateY(-2px); }
.rz-social__link svg { width: 20px; height: 20px; fill: currentColor; }
.rz-social__img { width: 20px; height: 20px; object-fit: contain; display: block; }

/* Kopfbereich: etwas kompakter, an die Menüfarbe angepasst */
.rz-social--header { margin: 0 0.5rem 0 0; }
.rz-social--header .rz-social__link { width: 36px; height: 36px; }

/* Kopfbereich über dem Hero: helle Icons, gefüllter Hover */
.rz-header-overlay .rz-header:not(.is-scrolled) .rz-social--header .rz-social__link { color: #fff; }
.rz-social--header .rz-social__link:hover { background: var(--c-primary); color: #fff; border-color: var(--c-primary); }

/* Mobil-Leiste unterhalb des Menüs */
.rz-social--mobile { justify-content: center; margin-top: 1.2rem; padding-top: 1rem; border-top: 1px solid rgba(255,255,255,0.15); }

/* Fußzeilen-Leiste: auf Mobil ausblendbar */
@media (max-width: 880px) {
	.rz-social-hide-mobile { display: none; }
	/* Header-Icons auf Mobil ausblenden – sie erscheinen im Menü/Fußzeile */
	.rz-social--header { display: none; }
}

/* ---------- Floating-Buttons & Modal ---------- */
.rz-floating {
	position: fixed;
	right: clamp(1rem, 3vw, 1.75rem);
	bottom: clamp(1rem, 3vw, 1.75rem);
	z-index: 200;
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}
.rz-floating__btn {
	width: 56px; height: 56px;
	border-radius: 50%;
	border: none;
	display: inline-flex;
	align-items: center; justify-content: center;
	box-shadow: var(--shadow);
	cursor: pointer;
	transition: transform var(--trans);
}
.rz-floating__btn:hover { transform: translateY(-3px) scale(1.04); }
.rz-floating__btn--wa { background: #25D366; color: #fff; }
.rz-floating__btn--call { background: var(--c-primary); color: var(--c-button-text); }
.rz-floating__btn svg { width: 26px; height: 26px; }

.rz-modal {
	position: fixed;
	inset: 0;
	z-index: 300;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.5rem;
	background: color-mix(in srgb, var(--c-secondary) 55%, transparent);
	backdrop-filter: blur(3px);
}
.rz-modal[hidden] { display: none; }
.rz-modal__box {
	position: relative;
	background: var(--c-bg);
	border-radius: var(--radius-lg);
	padding: 2.5rem;
	max-width: 440px;
	width: 100%;
	box-shadow: var(--shadow);
}
.rz-modal__box h3 { font-size: 1.7rem; }
.rz-modal__close {
	position: absolute;
	top: 0.8rem; right: 1rem;
	background: transparent;
	border: none;
	font-size: 1.8rem;
	line-height: 1;
	cursor: pointer;
	color: var(--c-secondary);
}
.rz-modal .rz-form { gap: 0.8rem; }

/* ---------- Footer ---------- */
.rz-footer {
	background: var(--c-footer);
	color: rgba(255, 255, 255, 0.78);
	padding-top: clamp(3rem, 6vw, 4.5rem);
}
.rz-footer a { color: rgba(255, 255, 255, 0.78); }
.rz-footer a:hover { color: var(--c-accent); }
.rz-footer__inner {
	max-width: var(--wrap);
	margin-inline: auto;
	padding-inline: clamp(1.25rem, 5vw, 2.5rem);
	display: grid;
	grid-template-columns: 1.2fr 2fr;
	gap: clamp(2rem, 5vw, 4rem);
	padding-bottom: 3rem;
}
/* Drei Spalten: Logo | Adresse | Links */
.rz-footer__inner--cols {
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.6fr);
	align-items: start;
}
.rz-footer__brand { display: grid; gap: 1.2rem; justify-items: start; }
.rz-footer__addr .rz-footer__contact { margin-top: 0; }
.rz-footer__brand .residenz-brand__name { color: #fff; }
.rz-footer__brand .residenz-brand--mobile { display: none; }
.rz-footer__contact { font-style: normal; display: grid; gap: 0.35rem; margin-top: 1.2rem; }
.rz-footer__widgets { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.rz-footer__title { color: #fff; font-size: 1.2rem; margin-bottom: 1rem; }
.rz-footer__menu, .rz-footer__legal { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.5rem; }
.rz-footer__bar { border-top: 1px solid rgba(255, 255, 255, 0.12); }
.rz-footer__bar-inner {
	max-width: var(--wrap);
	margin-inline: auto;
	padding: 1.5rem clamp(1.25rem, 5vw, 2.5rem);
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	flex-wrap: wrap;
	font-size: 0.85rem;
}
.rz-footer__copy { margin: 0; }
.rz-footer__legal { display: flex; gap: 1.2rem; }

/* ---------- Auth / Portal-Layout ---------- */
.rz-auth {
	min-height: calc(100vh - var(--header-h));
	display: flex;
	align-items: center;
	justify-content: center;
	padding: clamp(2rem, 6vw, 4rem) 1.25rem;
	background: var(--c-section);
}
.rz-auth__card {
	background: var(--c-bg);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow);
	padding: clamp(2rem, 5vw, 3rem);
	width: 100%;
	max-width: 440px;
}
.rz-auth__card--wide { max-width: 560px; }
.rz-auth__head { text-align: center; margin-bottom: 1.8rem; }
.rz-auth__title { font-size: 2rem; }
.rz-auth__sub { color: var(--c-text); margin: 0; }
.rz-form__submit { width: 100%; }
.rz-form__alt { text-align: center; font-size: 0.9rem; margin: 1rem 0 0; display: flex; gap: 0.6rem; justify-content: center; flex-wrap: wrap; }
.rz-field { display: grid; gap: 0.4rem; }
.rz-field label { font-family: var(--ff-util); font-size: 0.82rem; font-weight: 500; letter-spacing: 0.04em; color: var(--c-secondary); }
.rz-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }

/* Notice */
.rz-notice {
	border-radius: var(--radius);
	padding: 0.9rem 1.2rem;
	margin-bottom: 1.2rem;
	font-size: 0.95rem;
	border: 1px solid transparent;
}
.rz-notice.is-success { background: #e7f3ea; color: #245c34; border-color: #bcdcc4; }
.rz-notice.is-error { background: #fbe9ea; color: #8a2226; border-color: #f0c4c6; }

/* ---------- Gäste-Galerie ---------- */
.rz-guest { padding-bottom: clamp(3rem, 6vw, 5rem); }
.rz-guest__head { text-align: center; padding-block: clamp(2.5rem, 6vw, 4rem); }
.rz-guest__title { font-size: clamp(2rem, 5vw, 3.4rem); }
.rz-guest__date { font-family: var(--ff-util); letter-spacing: 0.08em; color: var(--c-accent); }
.rz-guest__gate { display: flex; justify-content: center; }
.rz-guest__upload { margin-bottom: 2rem; text-align: center; }
.rz-gallery__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: 0.75rem;
}
.rz-gallery__grid--guest { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1rem; }
.rz-media {
	position: relative;
	margin: 0;
	border-radius: var(--radius);
	overflow: hidden;
	background: var(--c-section);
	aspect-ratio: 4/3;
}
.rz-media__el { width: 100%; height: 100%; object-fit: cover; }
.rz-media__del {
	position: absolute; top: 6px; right: 6px;
	width: 30px; height: 30px;
	border-radius: 50%;
	border: none;
	background: rgba(43, 26, 36, 0.75);
	color: #fff;
	font-size: 1.2rem; line-height: 1;
	cursor: pointer;
	opacity: 0; transition: opacity var(--trans);
}
.rz-media:hover .rz-media__del { opacity: 1; }
.rz-media__dl {
	position: absolute; bottom: 0; left: 0; right: 0;
	background: color-mix(in srgb, var(--c-secondary) 80%, transparent);
	color: #fff;
	text-align: center;
	font-family: var(--ff-util);
	font-size: 0.78rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 0.5rem;
	opacity: 0; transition: opacity var(--trans);
}
.rz-media--guest:hover .rz-media__dl { opacity: 1; }

/* ---------- Reduced Motion ---------- */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.001ms !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
	.rz-grid--services { grid-template-columns: repeat(2, 1fr); }
	.rz-grid--occasions, .rz-grid--cards, .rz-reviews { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 880px) {
	.rz-nav { display: none; }
	.rz-burger { display: flex; }
	.rz-header__actions .btn--ghost { display: none; }
	.residenz-brand--desktop { display: none; }
	.residenz-brand--mobile { display: inline-flex; }
	.rz-footer__inner,
	.rz-footer__inner--cols { grid-template-columns: 1fr; }
	.rz-about { grid-template-columns: 1fr; }
	.rz-about__media { aspect-ratio: 16/10; max-width: 500px; }
}

@media (max-width: 640px) {
	.rz-grid--occasions, .rz-grid--cards, .rz-grid--services, .rz-reviews { grid-template-columns: 1fr; }
	.rz-field-row, .rz-form-row, .rz-budget__row { grid-template-columns: 1fr; }
	.rz-post { grid-template-columns: 1fr; }
	.rz-footer__widgets { grid-template-columns: 1fr; gap: 1.5rem; }
	.rz-footer__bar-inner { flex-direction: column; align-items: flex-start; }
	.rz-budget__row input { text-align: left; }
}

/* =====================================================================
 * Erweiterungen: Subhero, Angebote, Lead-Popup, Eventplaner
 * ===================================================================== */

/* ---------- Unterseiten-Hero ---------- */
.rz-subhero {
	position: relative;
	background: var(--c-hero);
	color: #fff;
	padding: clamp(3rem, 8vw, 6rem) 0 clamp(2.5rem, 6vw, 4rem);
	overflow: hidden;
	isolation: isolate;
	text-align: center;
}
.rz-subhero--media { min-height: clamp(280px, 42vh, 460px); display: flex; align-items: center; }
.rz-subhero.rz-subhero--media::before {
	content: "";
	position: absolute; inset: 0;
	background-image: var(--hero-image);
	background-size: cover; background-position: center;
	z-index: -2;
}
.rz-subhero::after {
	content: "";
	position: absolute; inset: 0;
	background: linear-gradient(180deg,
		color-mix(in srgb, var(--c-hero) calc(var(--hero-overlay, 50%) * 0.65), transparent),
		color-mix(in srgb, var(--c-hero) var(--hero-overlay, 80%), transparent));
	z-index: -1;
}
.rz-subhero:not(.rz-subhero--media)::after {
	background: radial-gradient(circle at 30% 20%, color-mix(in srgb, var(--c-primary) 55%, transparent), transparent 60%), var(--c-hero);
}
.rz-subhero__inner { position: relative; z-index: 1; }
.rz-subhero__title { font-size: clamp(2rem, 5vw, 3.4rem); margin: 0; color: #fff; }
.rz-subhero__sub { margin: 0.8rem auto 0; max-width: 60ch; color: rgba(255,255,255,0.85); }

/* ---------- Angebote-Aufzählung ---------- */
.rz-offerings { padding: clamp(2.5rem, 6vw, 4.5rem) 0; background: var(--c-section); }
.rz-offerings__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
	gap: clamp(1.5rem, 4vw, 3rem);
	align-items: center;
}
.rz-offerings--right .rz-offerings__inner { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); }
.rz-offerings--right .rz-offerings__media { order: 2; }
.rz-offerings--noimg .rz-offerings__inner { grid-template-columns: 1fr; }
.rz-offerings__img { width: 100%; height: 100%; object-fit: cover; border-radius: var(--radius); display: block; }
.rz-offerings__title { margin: 0 0 1.2rem; }
.rz-offerings__list {
	list-style: none; margin: 0; padding: 0;
	display: grid;
	grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr));
	gap: 0.9rem 1.6rem;
}
.rz-offering {
	position: relative;
	padding-left: 1.6rem;
	display: flex; flex-direction: column;
}
.rz-offering::before {
	content: "";
	position: absolute; left: 0; top: 0.45em;
	width: 0.7rem; height: 0.7rem;
	border: 1.5px solid var(--c-accent);
	border-radius: 999px 999px 999px 0;
	transform: rotate(45deg);
}
.rz-offering__t { font-weight: 600; color: var(--c-heading); }
.rz-offering__d { font-size: 0.9rem; color: color-mix(in srgb, var(--c-text) 80%, transparent); }

/* ---------- Lead-Popup ---------- */
.rz-popup {
	position: fixed; inset: 0;
	display: flex; align-items: center; justify-content: center;
	background: color-mix(in srgb, var(--c-secondary) 55%, transparent);
	z-index: 1000;
	padding: 1.2rem;
	opacity: 0;
	transition: opacity var(--trans);
}
.rz-popup.is-visible { opacity: 1; }
.rz-popup[hidden] { display: none; }
.rz-popup__box {
	position: relative;
	width: min(460px, 100%);
	max-height: 92vh; overflow: auto;
	background: var(--c-bg);
	border-radius: var(--radius);
	box-shadow: var(--shadow);
	padding: clamp(1.6rem, 4vw, 2.4rem);
	transform: translateY(12px) scale(0.98);
	transition: transform var(--trans);
}
.rz-popup.is-visible .rz-popup__box { transform: none; }
.rz-popup__close {
	position: absolute; top: 0.6rem; right: 0.8rem;
	background: none; border: none; font-size: 1.8rem; line-height: 1;
	cursor: pointer; color: var(--c-text);
}
.rz-popup__title { margin: 0 0 0.4rem; }
.rz-popup__text { margin: 0 0 1.1rem; color: color-mix(in srgb, var(--c-text) 85%, transparent); }
.rz-popup__form .rz-field-row { display: flex; gap: 0.7rem; }
.rz-popup__form input,
.rz-popup__form textarea { width: 100%; }
.rz-check--privacy { display: flex; gap: 0.5rem; align-items: flex-start; font-size: 0.86rem; margin: 0.4rem 0 0.2rem; }
.rz-check--privacy input { margin-top: 0.2rem; }
.rz-check--privacy a { color: var(--c-link); text-decoration: underline; }

/* ---------- Eventplaner ---------- */
.rz-planner__intro { max-width: 60ch; margin: 0 auto 1.8rem; text-align: center; }
.rz-planner__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.2rem;
	margin-bottom: 2rem;
}
.rz-pkg {
	position: relative;
	display: block;
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	padding: 1.4rem 1.3rem 1.5rem;
	cursor: pointer;
	background: var(--c-bg);
	transition: border-color var(--trans), box-shadow var(--trans), transform var(--trans);
}
.rz-pkg:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
.rz-pkg input { position: absolute; opacity: 0; pointer-events: none; }
.rz-pkg--featured { border-color: var(--c-accent); }
.rz-pkg:has(input:checked) { border-color: var(--c-primary); box-shadow: 0 0 0 2px var(--c-primary) inset; }
.rz-pkg__check {
	position: absolute; top: 1.1rem; right: 1.1rem;
	width: 1.1rem; height: 1.1rem; border-radius: 999px;
	border: 2px solid var(--c-border);
}
.rz-pkg:has(input:checked) .rz-pkg__check { border-color: var(--c-primary); background: var(--c-primary); }
.rz-pkg__title { display: block; font-family: var(--ff-display); font-size: 1.5rem; color: var(--c-heading); }
.rz-pkg__price { display: block; font-size: 0.9rem; color: var(--c-accent); margin-bottom: 0.8rem; }
.rz-pkg__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.45rem; }
.rz-pkg__list li { position: relative; padding-left: 1.3rem; font-size: 0.92rem; }
.rz-pkg__list li::before {
	content: ""; position: absolute; left: 0; top: 0.42em;
	width: 0.6rem; height: 0.32rem;
	border-left: 2px solid var(--c-accent); border-bottom: 2px solid var(--c-accent);
	transform: rotate(-45deg);
}
.rz-planner__contact { max-width: 640px; margin: 0 auto; display: grid; gap: 0.7rem; }
.rz-planner__contact .rz-field-row { display: flex; gap: 0.7rem; }
.rz-planner__contact input,
.rz-planner__contact textarea { width: 100%; }

@media (max-width: 880px) {
	.rz-offerings__inner,
	.rz-offerings--right .rz-offerings__inner { grid-template-columns: 1fr; }
	.rz-offerings--right .rz-offerings__media { order: 0; }
	.rz-planner__grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
	.rz-offerings__list { grid-template-columns: 1fr !important; }
	.rz-popup__form .rz-field-row,
	.rz-planner__contact .rz-field-row { flex-direction: column; }
}

/* ---------- Google Maps ---------- */
.rz-map { display: grid; gap: 0.9rem; }
.rz-map__frame { border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); }
.rz-map__frame iframe { display: block; width: 100%; }
.rz-map__consent {
	display: flex; flex-direction: column; gap: 0.8rem; align-items: flex-start;
	justify-content: center;
	background: var(--c-section);
	border: 1px dashed var(--c-border);
	border-radius: var(--radius);
	padding: clamp(1.4rem, 4vw, 2.4rem);
	min-height: 200px;
}
.rz-map__nav { justify-self: start; }

/* =====================================================================
 * Austauschbare Startseiten-Bilder
 * ===================================================================== */

/* Anlass-Kacheln mit Bild (aus dem Beitragsbild der Zielseite) */
.rz-occasion--img { padding-top: 0; }
.rz-occasion__media {
	display: block;
	height: 175px;
	margin: 0 -1.8rem 1.4rem;
	background-size: cover;
	background-position: center;
}
.rz-occasion--img .rz-occasion__arch { display: none; }

/* „Über die Location"-Bild */
.rz-about__media--img {
	background-size: cover !important;
	background-position: center !important;
}

/* Kulinarik mit Hintergrundbild */
.rz-section--kulinarik-img {
	background-image:
		linear-gradient(
			color-mix(in srgb, var(--c-secondary) 82%, transparent),
			color-mix(in srgb, var(--c-secondary) 88%, transparent)
		),
		var(--kulinarik-image);
	background-size: cover;
	background-position: center;
}

/* Abschluss-CTA mit Hintergrundbild (im CTA-Block) */
.rz-section--cta-img .rz-cta {
	background-image:
		linear-gradient(
			160deg,
			color-mix(in srgb, var(--c-primary) 82%, transparent),
			color-mix(in srgb, var(--c-secondary) 86%, transparent)
		),
		var(--cta-image);
	background-size: cover;
	background-position: center;
}

/* =====================================================================
 * Bewertungs-Formular & Sterne-Eingabe
 * ===================================================================== */
.rz-review-form { max-width: 640px; margin: 2.5rem auto 0; display: grid; gap: 0.8rem; background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius-lg); padding: clamp(1.4rem, 4vw, 2.2rem); }
.rz-review-form__title { margin: 0; }
.rz-review-form__note { font-size: 0.85rem; color: color-mix(in srgb, var(--c-text) 70%, transparent); margin: 0; }
.rz-review-login { text-align: center; margin-top: 2rem; }
.rz-stars-input { display: inline-flex; flex-direction: row-reverse; justify-content: flex-end; gap: 2px; }
.rz-stars-input input { position: absolute; opacity: 0; width: 0; height: 0; }
.rz-stars-input label { font-size: 1.9rem; line-height: 1; color: #d8cfc0; cursor: pointer; transition: color var(--trans); }
.rz-stars-input label:hover,
.rz-stars-input label:hover ~ label,
.rz-stars-input input:checked ~ label { color: var(--c-accent); }
.rz-stars-input input:focus-visible + label { outline: 2px solid var(--c-accent); outline-offset: 2px; }

/* =====================================================================
 * Community-Galerie
 * ===================================================================== */
.rz-cgal-wrap { display: grid; gap: 2rem; }
.rz-cgal__cover {
	position: relative;
	display: block;
	width: 100%;
	border: none;
	padding: 0;
	cursor: pointer;
	border-radius: var(--radius-lg);
	overflow: hidden;
	aspect-ratio: 16 / 7;
	background: var(--c-section);
}
.rz-cgal__cover-img { position: absolute; inset: 0; background-size: cover; background-position: center; transition: transform var(--trans); }
.rz-cgal__cover:hover .rz-cgal__cover-img { transform: scale(1.04); }
.rz-cgal__cover-label {
	position: absolute; inset: 0;
	display: flex; align-items: center; justify-content: center;
	background: color-mix(in srgb, var(--c-secondary) 45%, transparent);
	color: #fff;
	font-family: var(--ff-util);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	font-size: 0.95rem;
}
.rz-cgal.is-open .rz-cgal__cover { aspect-ratio: 21 / 6; }
.rz-cgal__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 1rem;
	margin-top: 1.2rem;
}
.rz-cgal__item { margin: 0; background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius); overflow: hidden; }
.rz-cgal__media { display: block; width: 100%; height: 200px; object-fit: cover; }
.rz-cgal__caption { padding: 0.6rem 0.8rem; font-size: 0.9rem; color: var(--c-heading); font-family: var(--ff-util); }
.rz-cgal-empty { text-align: center; color: color-mix(in srgb, var(--c-text) 70%, transparent); }

.rz-cgal-form { display: grid; gap: 0.8rem; max-width: 640px; margin: 0 auto; background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius-lg); padding: clamp(1.4rem, 4vw, 2.2rem); }
.rz-cgal-form__title { margin: 0; }
.rz-cgal-login { text-align: center; }
.rz-cgal-notice {
	background: color-mix(in srgb, var(--c-accent) 14%, var(--c-bg));
	border: 1px solid color-mix(in srgb, var(--c-accent) 40%, transparent);
	border-radius: var(--radius);
	padding: 0.9rem 1rem;
	font-size: 0.9rem;
	line-height: 1.5;
}

/* =====================================================================
 * Mehrstufige Menüs (alle Ebenen, alle Geräte)
 * ===================================================================== */

/* Desktop: Untermenüs ab Ebene 2 klappen seitlich auf */
.rz-nav .rz-menu .sub-menu .sub-menu {
	top: 0;
	left: 100%;
	transform: translateX(8px);
}
.rz-nav .rz-menu .sub-menu li:hover > .sub-menu,
.rz-nav .rz-menu .sub-menu li:focus-within > .sub-menu {
	transform: translateX(0);
}
/* Pfeil für Untermenüs ab Ebene 2: zeigt nach rechts */
.rz-nav .rz-menu .sub-menu .menu-item-has-children > a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.6rem;
}
.rz-nav .rz-menu .sub-menu .menu-item-has-children > a::after {
	content: "";
	display: block;
	width: 0.42em;
	height: 0.42em;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(-45deg);
	margin-left: 0;
}
.rz-nav .rz-menu .sub-menu .menu-item-has-children:hover > a::after { transform: rotate(-45deg); }

/* Mobile: alle Ebenen bleiben sichtbar und aufklappbar */
.rz-mobile-nav .menu-item-has-children > a::after { display: none; } /* nur der Toggle-Button zeigt den Pfeil */
.rz-mobile-nav .sub-menu .menu-item-has-children { display: flex; flex-wrap: wrap; align-items: center; }
.rz-mobile-nav .sub-menu .sub-menu {
	position: static;
	transform: none;
	opacity: 1;
	visibility: visible;
	box-shadow: none;
	border: none;
	background: transparent;
	min-width: 0;
	flex-basis: 100%;
	display: none;
	padding: 0 0 0.4rem 1rem;
	border-left: 1px solid var(--c-border);
	margin-left: 0.35rem;
}
.rz-mobile-nav .sub-menu .menu-item-has-children.is-open > .sub-menu { display: block; }
.rz-mobile-nav .sub-menu a { padding: 0.6rem 0; font-size: 0.95rem; }

/* =====================================================================
 * Medienverwaltung: Dropzone, Titel, Sortieren, Cover
 * ===================================================================== */
.rz-dropzone {
	border: 2px dashed var(--c-border);
	border-radius: var(--radius);
	padding: 1.4rem 1rem;
	text-align: center;
	color: color-mix(in srgb, var(--c-text) 70%, transparent);
	font-size: 0.92rem;
	margin-bottom: 1rem;
	transition: border-color var(--trans), background var(--trans);
}
.rz-dropzone.is-hover {
	border-color: var(--c-accent);
	background: color-mix(in srgb, var(--c-accent) 10%, transparent);
	color: var(--c-heading);
}
.rz-gallery__sorthint {
	font-size: 0.82rem;
	color: color-mix(in srgb, var(--c-text) 65%, transparent);
	margin: 0.6rem 0 0;
}
.rz-media { cursor: grab; }
.rz-media.is-dragging { opacity: 0.45; }
.rz-media.is-cover { outline: 2px solid var(--c-accent); outline-offset: 2px; }
.rz-media__cap {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	padding: 0.45rem 0.55rem;
	background: var(--c-bg);
	border-top: 1px solid var(--c-border);
}
.rz-media__title {
	font-size: 0.82rem;
	color: var(--c-heading);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.rz-media__actions { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.rz-media__act {
	background: none;
	border: 1px solid var(--c-border);
	border-radius: 999px;
	padding: 0.12rem 0.55rem;
	font-size: 0.72rem;
	cursor: pointer;
	color: var(--c-text);
	transition: border-color var(--trans), color var(--trans);
}
.rz-media__act:hover { border-color: var(--c-accent); color: var(--c-heading); }
.rz-media.is-cover .rz-media__cap::before {
	content: "★";
	position: absolute;
	top: 0.4rem; left: 0.5rem;
	color: var(--c-accent);
}

/* Freigabelink-Sperrseite / Passwort-Gate */
.rz-share-gate { text-align: center; }
.rz-share-gate__form { display: grid; gap: 0.7rem; max-width: 340px; margin: 1rem auto 0; }
.rz-share-gate__err { color: #b32d2e; font-size: 0.9rem; }

@media (max-width: 560px) {
	.rz-media__actions { gap: 0.3rem; }
	.rz-media__act { font-size: 0.68rem; padding: 0.1rem 0.45rem; }
	.rz-dropzone { padding: 1rem 0.8rem; font-size: 0.85rem; }
}

/* =====================================================================
 * MOBILE: Untermenüs zuverlässig im Sichtbereich
 * (Sicherheitsnetz gegen Desktop-Regeln – gilt für alle Ebenen)
 * ===================================================================== */
.rz-mobile-nav .sub-menu,
.rz-mobile-nav .sub-menu .sub-menu,
.rz-mobile-nav li:hover > .sub-menu,
.rz-mobile-nav li:focus-within > .sub-menu {
	position: static !important;
	top: auto !important;
	left: auto !important;
	right: auto !important;
	transform: none !important;
	opacity: 1 !important;
	visibility: visible !important;
	min-width: 0 !important;
	max-width: 100% !important;
	width: auto !important;
	box-shadow: none !important;
	border: none !important;
	background: transparent !important;
	z-index: auto !important;
}
/* Sichtbarkeit steuert ausschließlich der Aufklapp-Status */
.rz-mobile-nav .sub-menu { display: none !important; }
.rz-mobile-nav .menu-item-has-children.is-open > .sub-menu { display: block !important; }

.rz-mobile-nav { overflow-x: hidden; }
.rz-mobile-nav .rz-menu--mobile { flex-direction: column; align-items: stretch; flex-wrap: wrap; white-space: normal; }
.rz-mobile-nav .rz-menu--mobile > li { width: 100%; }
.rz-mobile-nav a { white-space: normal; word-break: break-word; }

/* =====================================================================
 * MOBILE-FEINSCHLIFF für die neuen Bausteine
 * ===================================================================== */
@media (max-width: 880px) {
	/* Hero / Subhero */
	.rz-subhero--media { min-height: clamp(220px, 38vh, 360px); }
	.rz-hero__video, .rz-subhero .rz-hero__video { object-position: center; }

	/* Eventplaner */
	.rz-planner__grid { grid-template-columns: 1fr; }
	.rz-pkg { padding: 1.1rem 1rem 1.2rem; }

	/* Community-Galerie */
	.rz-cgal__cover { aspect-ratio: 4 / 3; }
	.rz-cgal.is-open .rz-cgal__cover { aspect-ratio: 16 / 9; }
	.rz-cgal__grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 0.7rem; }
	.rz-cgal__media { height: 150px; }

	/* Medienverwaltung im Portal */
	.rz-gallery__bar { flex-wrap: wrap; gap: 0.6rem; }
	.rz-media { cursor: default; } /* Sortieren mobil über Pfeile statt Drag */

	/* Karten/Angebote */
	.rz-offerings__list { grid-template-columns: 1fr !important; }

	/* Tabellen im Frontend nicht sprengen */
	.rz-prose table { display: block; overflow-x: auto; }
}

@media (max-width: 560px) {
	/* Popup */
	.rz-popup { padding: 0.8rem; align-items: flex-end; }
	.rz-popup__box { max-height: 88vh; padding: 1.3rem 1.1rem; }

	/* Galerie */
	.rz-cgal__grid { grid-template-columns: repeat(2, 1fr); }
	.rz-cgal__media { height: 120px; }
	.rz-cgal__cover-label { font-size: 0.8rem; padding: 0 0.6rem; text-align: center; }

	/* Bewertungen */
	.rz-stars-input label { font-size: 1.6rem; }
	.rz-review-form, .rz-cgal-form { padding: 1.2rem 1rem; }

	/* Portal-Medien */
	.rz-gallery__grid { grid-template-columns: repeat(2, 1fr); }
	.rz-media__title { font-size: 0.75rem; }

	/* Buttons volle Breite für sichere Tap-Ziele */
	.rz-popup__form .btn,
	.rz-review-form .btn,
	.rz-cgal-form .btn,
	.rz-planner__contact .btn { width: 100%; }
}

/* Mindestgröße für Tap-Ziele (Barrierefreiheit/Mobil) */
@media (pointer: coarse) {
	.rz-media__act { padding: 0.35rem 0.7rem; font-size: 0.78rem; }
	.rz-media__del { width: 34px; height: 34px; }
	.rz-subtoggle { width: 48px; height: 48px; }
}

/* Bilder/Videos nie über den Viewport hinaus (Logo ausgenommen) */
img:not(.residenz-brand__img), video, iframe { max-width: 100%; }

/* Logo: Form/Seitenverhältnis bleibt bei jeder Pixelgröße erhalten.
   Die Höhe steuert die Größe, die Breite skaliert automatisch mit.
   object-fit:contain verhindert jedes Stauchen, max-width verhindert,
   dass ein großes Logo die Seite in die Breite zieht. */
.residenz-brand__img,
.residenz-brand--mobile .residenz-brand__img,
.residenz-brand--desktop .residenz-brand__img {
	height: var(--logo-h) !important;
	width: auto !important;
	max-width: 100% !important;
	object-fit: contain;
	object-position: left center;
}
/* Kopfbereich gibt dem Logo Platz, ohne die Seite zu sprengen */
.rz-header__brand { flex: 1 1 auto; min-width: 0; max-width: 100%; }
.residenz-brand { max-width: 100%; overflow: hidden; }

/* Seite kann durch ein großes Logo nicht mehr horizontal wachsen */
html, body { max-width: 100%; overflow-x: hidden; }
.rz-header, .rz-header__inner { max-width: 100%; min-width: 0; }
.rz-cgal__grid, .rz-gallery__grid, .rz-offerings__list { min-width: 0; }

/* Verschiebe-Buttons (Touch-Sortierung) */
.rz-media__act--move {
	font-size: 0.7rem;
	line-height: 1;
	padding: 0.2rem 0.5rem;
	min-width: 28px;
}
@media (pointer: coarse) {
	.rz-media__act--move { min-width: 38px; padding: 0.35rem 0.6rem; }
}

/* Galerie-Kategorien: Filter & Auszeichnung */
.rz-cgal__filters {
	grid-column: 1 / -1;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 0.4rem;
}
.rz-cgal__filter {
	background: none;
	border: 1px solid var(--c-border);
	border-radius: 999px;
	padding: 0.3rem 0.9rem;
	font-family: var(--ff-util);
	font-size: 0.82rem;
	cursor: pointer;
	color: var(--c-text);
	transition: border-color var(--trans), background var(--trans), color var(--trans);
}
.rz-cgal__filter:hover { border-color: var(--c-accent); }
.rz-cgal__filter.is-active {
	background: var(--c-primary);
	border-color: var(--c-primary);
	color: #fff;
}
.rz-cgal__cat {
	display: block;
	font-size: 0.75rem;
	color: var(--c-accent);
	margin-top: 0.15rem;
}
.rz-cgal-form__label {
	font-family: var(--ff-util);
	font-size: 0.85rem;
	color: var(--c-heading);
	margin-bottom: -0.4rem;
}
.rz-cgal-form select { width: 100%; }

/* Mobiler Menü-Abstand (Customizer) */
@media (max-width: 880px) {
	.rz-header__inner { gap: var(--menu-gap-mobile, 1rem); }
	.rz-mobile-nav { padding-top: var(--menu-gap-mobile, 1rem); }
}

/* =====================================================================
 * Gästebuch (private Glückwünsche)
 * ===================================================================== */
.rz-guestbook {
	max-width: 640px;
	margin: 0 auto clamp(2rem, 5vw, 3rem);
	background: var(--c-bg);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-lg);
	padding: clamp(1.4rem, 4vw, 2.2rem);
}
.rz-guestbook__title { margin: 0 0 0.5rem; }
.rz-guestbook__hint {
	font-size: 0.88rem;
	color: color-mix(in srgb, var(--c-text) 75%, transparent);
	margin: 0 0 1.1rem;
}
.rz-guestbook__form { display: grid; gap: 0.8rem; }
.rz-guestbook__form input,
.rz-guestbook__form textarea { width: 100%; }

/* Owner-Ansicht im Kundenportal */
.rz-gb-owner { margin-top: 1.6rem; }
.rz-gb-owner__count { color: var(--c-accent); font-size: 0.9rem; }
.rz-gb-owner__list { list-style: none; margin: 0.8rem 0 0; padding: 0; display: grid; gap: 0.8rem; }
.rz-gb-owner__item {
	background: var(--c-section);
	border: 1px solid var(--c-border);
	border-left: 3px solid var(--c-accent);
	border-radius: var(--radius);
	padding: 0.9rem 1rem;
}
.rz-gb-owner__meta {
	display: block;
	font-size: 0.82rem;
	color: color-mix(in srgb, var(--c-text) 70%, transparent);
	margin-bottom: 0.3rem;
}
.rz-gb-owner__text { margin: 0; }

/* =====================================================================
 * Frontend-Veranstaltungen: Upload
 * ===================================================================== */
.rz-fe-upload {
	max-width: 680px;
	margin: clamp(2rem, 5vw, 3rem) auto 0;
	background: var(--c-bg);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-lg);
	padding: clamp(1.4rem, 4vw, 2.2rem);
}
.rz-fe-upload__title { margin: 0 0 1rem; }
.rz-fe-upload__form { display: grid; gap: 0.8rem; }
.rz-fe-upload__label {
	font-family: var(--ff-util);
	font-size: 0.85rem;
	color: var(--c-heading);
	margin-bottom: -0.4rem;
}
.rz-fe-upload select,
.rz-fe-upload input[type="text"],
.rz-fe-upload input[type="date"],
.rz-fe-upload input[type="file"] { width: 100%; }
.rz-fe-upload .rz-field-row { display: flex; gap: 0.7rem; }
.rz-fe-upload .rz-field-row > * { flex: 1 1 0; min-width: 0; }
@media (max-width: 560px) {
	.rz-fe-upload .rz-field-row { flex-direction: column; }
	.rz-fe-upload .btn { width: 100%; }
	.rz-guestbook .btn { width: 100%; }
}

/* Menüpunkte ohne eigene Zielseite (öffnen nur das Untermenü) */
.rz-menu .rz-noclick > a { cursor: default; }
.rz-nav .rz-menu .rz-noclick > a:hover { background-image: none; }

/* Automatisch ergänzte Funktionsblöcke (Formular, Karte, Galerie) */
.rz-auto-blocks {
	display: grid;
	gap: clamp(1.6rem, 4vw, 2.6rem);
	margin-top: clamp(1.6rem, 4vw, 2.6rem);
}
.rz-auto-blocks .rz-map { margin-inline: auto; width: 100%; }
.rz-auto-blocks .rz-inquiry { max-width: 720px; margin-inline: auto; width: 100%; }

/* =====================================================================
 * Gästebuch (öffentlich, moderiert)
 * ===================================================================== */
.rz-gbook { max-width: 760px; margin-inline: auto; }
.rz-gbook__list { list-style: none; margin: 0 0 clamp(2rem, 5vw, 3rem); padding: 0; display: grid; gap: 1rem; }
.rz-gbook__item {
	background: var(--c-bg);
	border: 1px solid var(--c-border);
	border-left: 3px solid var(--c-accent);
	border-radius: var(--radius);
	padding: 1.1rem 1.3rem;
}
.rz-gbook__text { margin: 0 0 0.6rem; font-style: italic; }
.rz-gbook__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 0.9rem;
	align-items: baseline;
	font-size: 0.85rem;
	color: color-mix(in srgb, var(--c-text) 72%, transparent);
}
.rz-gbook__occasion { color: var(--c-accent); }
.rz-gbook-form-wrap {
	background: var(--c-section);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-lg);
	padding: clamp(1.4rem, 4vw, 2.2rem);
}
.rz-gbook__title { margin: 0 0 1rem; }
.rz-gbook-form { display: grid; gap: 0.8rem; }
.rz-gbook-form input, .rz-gbook-form textarea { width: 100%; }
.rz-gbook__login { text-align: center; }
@media (max-width: 560px) { .rz-gbook-form .btn { width: 100%; } }

/* =====================================================================
 * Kopfbereich über dem Hero-Medium (Überlagerung)
 * Am Seitenanfang transparent, beim Scrollen verkleinert und in Weiß.
 * ===================================================================== */

/* Grundzustand: Kopfbereich liegt über dem Hero, ohne eigenen Hintergrund */
.rz-header-overlay .rz-header {
	position: fixed;
	inset-inline: 0;
	top: 0;
	background: transparent;
	background-image: none;
	backdrop-filter: none;
	border-bottom: 1px solid rgba(255, 255, 255, 0.14);
	box-shadow: none;
	transition: min-height var(--trans), background var(--trans), border-color var(--trans);
}
.rz-header-overlay .rz-header__inner {
	min-height: var(--header-h);
	transition: min-height var(--trans);
}

/* Hero beginnt ganz oben – Inhalt rutscht unter den Kopfbereich.
   Der im Customizer eingestellte Abstand wird zur Höhe der Menüleiste
   addiert, damit die Kleinzeile nicht unter dem Logo klebt. */
.rz-header-overlay .rz-hero,
.rz-header-overlay .rz-subhero {
	padding-top: calc(var(--header-h) + var(--hero-pad-top, 0px));
}

/* Schrift und Logo hell, damit sie auf dem Medium lesbar bleiben */
.rz-header-overlay .rz-header .rz-menu > li > a,
.rz-header-overlay .rz-header .residenz-brand__name {
	color: #fff;
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.45);
}
.rz-header-overlay .rz-header .rz-menu > li > a::after { border-color: #fff; }
.rz-header-overlay .rz-header .rz-burger span { background: #fff; }
.rz-header-overlay .rz-header .btn--ghost {
	color: #fff;
	border-color: rgba(255, 255, 255, 0.65);
}
.rz-header-overlay .rz-header .btn--ghost:hover {
	background: rgba(255, 255, 255, 0.16);
	border-color: #fff;
}

/* ---------- Zustand: gescrollt ---------- */
.rz-header-overlay .rz-header.is-scrolled,
.rz-header.is-scrolled {
	/* Halbe Höhe (im Customizer einstellbar), bleibt sichtbar */
	min-height: calc(var(--header-h) * var(--header-scrolled-scale, 0.5));
}
.rz-header-overlay .rz-header.is-scrolled .rz-header__inner,
.rz-header.is-scrolled .rz-header__inner {
	min-height: calc(var(--header-h) * var(--header-scrolled-scale, 0.5));
}

/* Dunkler, halbtransparenter Grund – gilt auf ALLEN Seiten, damit die
   weiße Schrift überall lesbar bleibt (auch ohne Hero-Medium). */
.rz-header.is-scrolled {
	background: color-mix(in srgb, var(--c-hero, #2b1119) 88%, transparent);
	background-image: none;
	backdrop-filter: saturate(140%) blur(10px);
	border-bottom: 1px solid rgba(255, 255, 255, 0.18);
	box-shadow: 0 6px 24px rgba(0, 0, 0, 0.28);
}
.rz-header-overlay .rz-header.is-scrolled {
	background: color-mix(in srgb, var(--c-hero, #2b1119) 82%, transparent);
}

/* Alle Menüpunkte in Weiß */
.rz-header.is-scrolled .rz-menu > li > a,
.rz-header.is-scrolled .residenz-brand__name,
.rz-header.is-scrolled .rz-menu .menu-item-has-children > a {
	color: #fff;
}
.rz-header.is-scrolled .rz-menu > li > a::after { border-color: #fff; }
.rz-header.is-scrolled .rz-menu > li > a:hover,
.rz-header.is-scrolled .rz-menu .current-menu-item > a {
	color: var(--c-accent, #d8b26a);
}
.rz-header.is-scrolled .rz-burger span { background: #fff; }
.rz-header.is-scrolled .btn--ghost {
	color: #fff;
	border-color: rgba(255, 255, 255, 0.7);
}

/* Logo: verkleinert und in Weiß umgewandelt
   (eine eigene weiße Logo-Datei überschreibt den Filter, siehe Customizer) */
.rz-header.is-scrolled .residenz-brand__img {
	height: calc(var(--logo-h) * var(--header-scrolled-scale, 0.5)) !important;
	filter: brightness(0) invert(1);
	transition: height var(--trans), filter var(--trans);
}
.rz-header .residenz-brand__img { transition: height var(--trans), filter var(--trans); }

/* Untermenüs behalten ihren eigenen, gut lesbaren Hintergrund */
.rz-header-overlay .rz-nav .rz-menu .sub-menu,
.rz-header.is-scrolled .rz-nav .rz-menu .sub-menu {
	background: var(--c-bg);
	box-shadow: var(--shadow-md, 0 10px 30px rgba(0,0,0,.18));
}
.rz-header-overlay .rz-nav .rz-menu .sub-menu a,
.rz-header.is-scrolled .rz-nav .rz-menu .sub-menu a {
	color: var(--c-text);
	text-shadow: none;
}

/* Mobiles Menü braucht einen deckenden Grund */
.rz-header-overlay .rz-mobile-nav {
	background: color-mix(in srgb, var(--c-hero, #2b1119) 96%, transparent);
}
.rz-header-overlay .rz-mobile-nav a,
.rz-header-overlay .rz-mobile-nav .rz-subtoggle {
	color: #fff;
}
.rz-header-overlay .rz-mobile-nav .sub-menu { border-left-color: rgba(255,255,255,0.28); }

/* Sehr kleine Geräte: nicht zu stark schrumpfen, Bedienbarkeit erhalten */
@media (max-width: 560px) {
	.rz-header.is-scrolled,
	.rz-header.is-scrolled .rz-header__inner {
		min-height: max(52px, calc(var(--header-h) * var(--header-scrolled-scale, 0.5)));
	}
	.rz-header.is-scrolled .residenz-brand__img {
		height: max(28px, calc(var(--logo-h) * var(--header-scrolled-scale, 0.5))) !important;
	}
}

/* Bewegungsreduktion respektieren */
@media (prefers-reduced-motion: reduce) {
	.rz-header, .rz-header__inner, .residenz-brand__img { transition: none !important; }
}

/* =====================================================================
 * Hero: Schriftgrößen und Positionen (im Customizer einstellbar)
 * Fallbacks entsprechen der bisherigen, mitskalierenden Darstellung.
 * ===================================================================== */

/* Senkrechte Position des Inhalts */
.rz-hero { align-items: var(--hero-valign, center); }

/* Schriftgrößen – Desktop */
.rz-hero .rz-eyebrow {
	font-size: var(--hero-eyebrow-size, 0.95rem);
}
.rz-hero__title {
	/* min() verhindert Überlauf auf schmalen Desktop-Fenstern */
	font-size: min(var(--hero-title-size, 4.6rem), 9vw);
	line-height: 1.08;
}
.rz-hero__sub {
	font-size: var(--hero-sub-size, 1.25rem);
	/* Der Abstand zu den Buttons wird allein über --hero-btn-gap gesteuert */
	margin-bottom: 0;
}

/* Individuelle Abstände vor/nach jeder Hero-Zeile (Desktop & Mobil über Variablen) */
.rz-hero .rz-eyebrow {
	margin-top: var(--hero-eyebrow-mt, 0px);
	margin-bottom: var(--hero-eyebrow-mb, 0.75rem);
}
.rz-hero__title {
	margin-top: var(--hero-title-mt, 0px);
	margin-bottom: var(--hero-title-mb, 1rem);
}
.rz-hero__sub {
	margin-top: var(--hero-sub-mt, 0px);
	margin-bottom: var(--hero-sub-mb, 0px);
}

/* Abstand über den Buttons */
.rz-hero__actions {
	margin-top: var(--hero-btn-gap, 2rem);
	justify-content: flex-start;
}

/* ---------- Ausrichtung der Texte ---------- */
.rz-hero--text-left .rz-hero__inner { text-align: left; }

.rz-hero--text-center .rz-hero__inner { text-align: center; }
.rz-hero--text-center .rz-hero__title,
.rz-hero--text-center .rz-hero__sub { margin-inline: auto; }
.rz-hero--text-center .rz-hero__actions { justify-content: center; }

.rz-hero--text-right .rz-hero__inner { text-align: right; }
.rz-hero--text-right .rz-hero__title,
.rz-hero--text-right .rz-hero__sub { margin-inline: auto 0; }
.rz-hero--text-right .rz-hero__actions { justify-content: flex-end; }

/* ---------- Buttons abweichend positionieren ---------- */
.rz-hero--btn-left .rz-hero__actions { justify-content: flex-start; }
.rz-hero--btn-center .rz-hero__actions { justify-content: center; }
.rz-hero--btn-right .rz-hero__actions { justify-content: flex-end; }

/* ---------- Mobil: eigene Schriftgrößen ---------- */
@media (max-width: 880px) {
	.rz-hero__title {
		font-size: min(var(--hero-title-size-mobile, 3rem), 13vw);
		max-width: none;
	}
	.rz-hero__sub {
		font-size: var(--hero-sub-size-mobile, 1rem);
		max-width: none;
	}
}

/* Sehr schmale Geräte: Buttons volle Breite, damit sie gut treffbar sind */
@media (max-width: 480px) {
	.rz-hero__actions { flex-direction: column; align-items: stretch; }
	.rz-hero__actions .btn { width: 100%; text-align: center; }
}

/* =====================================================================
 * Hero: Innenabstände oben und unten (im Customizer einstellbar)
 * ===================================================================== */
.rz-hero {
	padding-top: var(--hero-pad-top, 0px);
	padding-bottom: var(--hero-pad-bottom, 0px);
}
.rz-subhero {
	padding-bottom: var(--hero-pad-bottom, 0px);
}

/* Der Bereich wächst mit, wenn Inhalt und Abstände mehr Platz brauchen –
   dadurch werden die Buttons unten nicht mehr abgeschnitten. */
.rz-hero { height: auto; }
.rz-hero__inner { width: 100%; }

/* =====================================================================
 * Partner-Button (Cross-Promotion) + Sichtbarkeitsklassen
 * ===================================================================== */

/* Sichtbarkeit getrennt für Desktop/Mobil (Breakpoint 880px wie Menü) */
@media (min-width: 881px) { .rz-hide-desktop { display: none !important; } }
@media (max-width: 880px) { .rz-hide-mobile { display: none !important; } }

.rz-partner-btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.7rem 1.4rem;
	font-weight: 600;
	font-size: 0.95rem;
	text-decoration: none;
	line-height: 1;
	overflow: visible;
	transition: transform 0.2s ease, filter 0.2s ease, box-shadow 0.2s ease;
	white-space: nowrap;
}
.rz-partner-btn:hover { transform: translateY(-1px); box-shadow: 0 8px 22px rgba(0,0,0,0.18); }

/* ---- Effekt: Blinken (sanftes Pulsieren) ---- */
.rz-partner-btn--blink {
	animation: rz-partner-blink var(--rz-partner-interval, 3s) ease-in-out infinite;
}
@keyframes rz-partner-blink {
	0%, 100% { opacity: 1; transform: scale(1); }
	46% { opacity: 1; }
	50% { opacity: 0.45; transform: scale(0.97); }
	54% { opacity: 1; }
}

/* ---- Effekt: Funkeln (Glanz-Sweep + kleine Sterne) ---- */
.rz-partner-btn--sparkle { isolation: isolate; }
.rz-partner-btn--sparkle::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: linear-gradient(115deg, transparent 30%, rgba(255,255,255,0.75) 50%, transparent 70%);
	background-size: 250% 100%;
	background-position: 150% 0;
	animation: rz-partner-shine var(--rz-partner-interval, 3s) ease-in-out infinite;
	pointer-events: none;
	mix-blend-mode: screen;
}
@keyframes rz-partner-shine {
	0% { background-position: 150% 0; }
	22% { background-position: -50% 0; }
	100% { background-position: -50% 0; }
}
.rz-partner-btn__spark {
	position: absolute;
	width: 8px; height: 8px;
	pointer-events: none;
	background:
		linear-gradient(#fff, #fff) center/100% 2px no-repeat,
		linear-gradient(#fff, #fff) center/2px 100% no-repeat;
	opacity: 0;
	top: -4px; right: 8px;
	animation: rz-partner-spark var(--rz-partner-interval, 3s) ease-in-out infinite;
}
.rz-partner-btn__spark--2 {
	top: auto; bottom: -3px; right: auto; left: 12px;
	width: 6px; height: 6px;
	animation-delay: calc(var(--rz-partner-interval, 3s) / 3);
}
@keyframes rz-partner-spark {
	0%, 100% { opacity: 0; transform: scale(0.4) rotate(0deg); }
	10% { opacity: 1; transform: scale(1) rotate(45deg); }
	20% { opacity: 0; transform: scale(0.4) rotate(90deg); }
}

/* Partner-Button im Mobilmenü: volle Breite */
.rz-partner-btn--mobile { display: inline-flex; margin-bottom: 0.9rem; justify-content: center; }

@media (prefers-reduced-motion: reduce) {
	.rz-partner-btn--blink,
	.rz-partner-btn--sparkle::before,
	.rz-partner-btn__spark { animation: none !important; }
	.rz-partner-btn--blink { opacity: 1 !important; }
}

/* =====================================================================
 * Hero-Slider (bis zu 4 Slides)
 * ===================================================================== */
.rz-hero--slider { position: relative; }
.rz-hero__slides { position: absolute; inset: 0; }
.rz-hero--slider .rz-hero__slide {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: var(--hero-valign, center);
	opacity: 0;
	visibility: hidden;
	transition: opacity 1s ease;
	isolation: isolate;
}
.rz-hero--slider .rz-hero__slide.is-active { opacity: 1; visibility: visible; z-index: 1; }

/* Medium-Ebenen je Slide: Bild/Video (0) < Scrim (1) < Text (2) */
.rz-hero__slide--has-image::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: var(--hero-image);
	background-size: cover;
	background-position: center;
	z-index: 0;
}
.rz-hero--slider .rz-hero__video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: 0;
}
.rz-hero__slide .rz-hero__scrim {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(180deg,
		color-mix(in srgb, var(--c-hero) calc(var(--hero-overlay, 55%) * 0.72), transparent) 0%,
		color-mix(in srgb, var(--c-hero) var(--hero-overlay, 78%), transparent) 100%);
}
.rz-hero__slide:not(.rz-hero__slide--has-image):not(.rz-hero__slide--has-video) .rz-hero__scrim {
	background: radial-gradient(circle at 30% 20%, color-mix(in srgb, var(--c-primary) 60%, transparent), transparent 60%), var(--c-hero);
}
.rz-hero--slider .rz-hero__inner { position: relative; z-index: 2; max-width: var(--wrap); }

/* Der Slider braucht eine Grundhöhe, da die Slides absolut liegen */
.rz-hero--slider { min-height: min(86vh, 760px); display: block; }

/* Navigations-Punkte */
.rz-hero__dots {
	position: absolute;
	left: 50%;
	bottom: 1.6rem;
	transform: translateX(-50%);
	display: flex;
	gap: 0.6rem;
	z-index: 5;
}
.rz-hero__dot {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	border: 1.5px solid rgba(255, 255, 255, 0.8);
	background: transparent;
	cursor: pointer;
	padding: 0;
	transition: background 0.3s ease, transform 0.3s ease;
}
.rz-hero__dot.is-active { background: #fff; transform: scale(1.2); }
.rz-hero__dot:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }

@media (prefers-reduced-motion: reduce) {
	.rz-hero--slider .rz-hero__slide { transition: none; }
}

/* =====================================================================
 * Terminkalender – öffentliche Liste (optional)
 * ===================================================================== */
.rz-cal-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.75rem; }
.rz-cal-list__item {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.6rem;
	padding: 1rem 1.2rem;
	background: color-mix(in srgb, var(--c-primary) 5%, #fff);
	border: 1px solid color-mix(in srgb, var(--c-primary) 12%, transparent);
	border-radius: 12px;
}
.rz-cal-list__date { font-weight: 700; color: var(--c-primary); }
.rz-cal-list__title { font-size: 1.05rem; }
.rz-cal-list__type { color: var(--c-muted, #6f665d); }
.rz-cal-empty { color: var(--c-muted, #6f665d); }

/* =====================================================================
 * Button-Gruppe (Anfrage + Partner): Reihenfolge, Größe, Rotation
 * ===================================================================== */
.rz-btn-group { display: inline-flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
.rz-btn-group__item { display: inline-flex; align-items: center; justify-content: center; }

/* Höhe/Breite kommen aus den Variablen (--rz-btn-h etc.), hier nur Grundlayout */
.rz-btn-group .btn,
.rz-btn-group .rz-partner-btn { box-sizing: border-box; }

/* Rotationsmodus: Buttons an derselben Stelle stapeln, JS blendet um */
.rz-btn-group--rotate { position: relative; }
.rz-btn-group--rotate .rz-btn-group__item { transition: opacity 0.4s ease; }
.rz-btn-group--rotate .rz-btn-group__item[hidden] { display: none; }

/* Im Mobilmenü: Buttons volle Breite und untereinander */
.rz-mobile-nav .rz-btn-group { display: flex; flex-direction: column; align-items: stretch; width: 100%; margin-bottom: 0.8rem; }
.rz-mobile-nav .rz-btn-group .btn,
.rz-mobile-nav .rz-btn-group .rz-partner-btn { width: 100%; justify-content: center; }

/* Mobil-Vollbreite (steuerbar) – gilt für Header-Gruppe unter 880px */
@media (max-width: 880px) {
	.rz-btn-group--mobile-full { display: flex; flex-direction: column; align-items: stretch; width: 100%; }
	.rz-btn-group--mobile-full .btn,
	.rz-btn-group--mobile-full .rz-partner-btn { width: 100%; justify-content: center; }
}

/* =====================================================================
 * Landing Pages
 * ===================================================================== */
.rz-lp {
	position: relative;
	min-height: 100vh;
	display: flex;
	align-items: center;
	color: #fff;
	overflow: hidden;
	isolation: isolate;
}
.rz-lp__media { position: absolute; inset: 0; z-index: 0; }
.rz-lp__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.rz-lp__slide {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
	opacity: 0;
	transition: opacity 1s ease;
}
.rz-lp__slide.is-active { opacity: 1; }
.rz-lp__slide--placeholder { background: linear-gradient(120deg, var(--c-hero, #2b2119), var(--c-primary, #6b4f2a)); opacity: 1; }
.rz-lp__scrim {
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(20,15,10,0.35), rgba(20,15,10,0.6));
}
.rz-lp__content { position: relative; z-index: 1; max-width: var(--wrap); width: 100%; text-align: center; padding-block: 4rem; }
.rz-lp__title { color: #fff; font-size: clamp(2.4rem, 6vw, 4.5rem); margin: 0 0 1rem; }
.rz-lp__sub { font-size: clamp(1.05rem, 2vw, 1.35rem); max-width: 60ch; margin: 0 auto 1.5rem; color: rgba(255,255,255,0.92); }
.rz-lp__text { max-width: 60ch; margin: 0 auto 1.5rem; }
.rz-lp__actions { margin-top: 1.5rem; }

@media (prefers-reduced-motion: reduce) {
	.rz-lp__slide { transition: none; }
}

/* =====================================================================
 * Ton-Schalter
 * ===================================================================== */
.rz-sound-toggle {
	position: fixed;
	right: clamp(1rem, 3vw, 1.75rem);
	/* Über der schwebenden Button-Gruppe (WhatsApp/Rückruf) platziert.
	   Der Abstand lässt Raum für einen bis zwei schwebende Buttons darunter. */
	bottom: calc(clamp(1rem, 3vw, 1.75rem) + 4.5rem);
	z-index: 201;
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.6rem 0.9rem;
	border: 0;
	border-radius: 999px;
	background: rgba(20,15,10,0.72);
	color: #fff;
	cursor: pointer;
	backdrop-filter: blur(6px);
	box-shadow: 0 6px 20px rgba(0,0,0,0.28);
	transition: background 0.25s ease, transform 0.25s ease;
}
.rz-sound-toggle:hover { transform: translateY(-2px); }
.rz-sound-toggle.is-on { background: var(--c-primary, #b08d57); }
.rz-sound-toggle__icon { display: inline-flex; }
.rz-sound-toggle__text { font-size: 0.85rem; font-weight: 600; }
.rz-sound-toggle:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }

/* =====================================================================
 * Newsletter-Anmeldung
 * ===================================================================== */
.rz-newsletter { max-width: 560px; margin: 0 auto; text-align: center; }
.rz-footer__newsletter { padding: 2rem 0 0.5rem; border-top: 1px solid rgba(255,255,255,0.12); margin-top: 1.5rem; }
.rz-newsletter__title { margin: 0 0 0.4rem; }
.rz-newsletter__text { margin: 0 0 1rem; opacity: 0.85; }
.rz-newsletter__row { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.rz-newsletter__input {
	flex: 1 1 220px;
	min-width: 0;
	padding: 0.7rem 0.9rem;
	border: 1px solid rgba(255,255,255,0.25);
	border-radius: 8px;
	background: rgba(255,255,255,0.06);
	color: inherit;
	font-size: 1rem;
}
.rz-newsletter__input::placeholder { color: rgba(255,255,255,0.55); }
.rz-newsletter__btn { flex: 0 0 auto; }
.rz-newsletter__consent {
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
	margin-top: 0.75rem;
	font-size: 0.85rem;
	text-align: left;
	opacity: 0.9;
}
.rz-newsletter__consent input { margin-top: 0.2rem; flex: 0 0 auto; }
.rz-newsletter__consent a { text-decoration: underline; color: inherit; }
.rz-newsletter__msg { margin: 0.75rem 0 0; min-height: 1.2em; font-size: 0.9rem; }
.rz-newsletter__msg.is-ok { color: #7bd88f; }
.rz-newsletter__msg.is-error { color: #ffb3b3; }

/* Designer-Credit in der Fußleiste */
.rz-footer__credit { opacity: 0.8; }
.rz-footer__credit a { color: inherit; text-decoration: underline; }

/* =====================================================================
 * Google-Bewertungen
 * ===================================================================== */
.rz-greviews { padding: clamp(3rem, 6vw, 5rem) 0; background: color-mix(in srgb, var(--c-primary) 4%, #fff); }
.rz-greviews__heading { text-align: center; margin: 0 0 1.5rem; }
.rz-greviews__summary {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.6rem;
	flex-wrap: wrap;
	margin-bottom: 2rem;
}
.rz-greviews__score { font-size: 1.6rem; font-weight: 700; color: var(--c-primary); }
.rz-greviews__count { color: var(--c-muted, #6f665d); }
.rz-greviews__glogo { display: inline-block; }

.rz-greview-stars { display: inline-flex; letter-spacing: 1px; }
.rz-greview-star { color: #dcdcdc; font-size: 1.05rem; line-height: 1; }
.rz-greview-star.is-full { color: #fbbc04; }
.rz-greview-star.is-half { position: relative; color: #dcdcdc; }
.rz-greview-star.is-half::before { content: "★"; position: absolute; left: 0; width: 50%; overflow: hidden; color: #fbbc04; }

.rz-greviews__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 1.2rem;
}
.rz-greview {
	background: #fff;
	border: 1px solid color-mix(in srgb, var(--c-primary) 10%, transparent);
	border-radius: 14px;
	padding: 1.3rem;
	box-shadow: 0 4px 16px rgba(0,0,0,0.04);
}
.rz-greview__head { display: flex; align-items: center; gap: 0.7rem; margin-bottom: 0.5rem; }
.rz-greview__avatar { border-radius: 50%; object-fit: cover; }
.rz-greview__author { display: block; font-weight: 600; }
.rz-greview__when { display: block; font-size: 0.82rem; color: var(--c-muted, #6f665d); }
.rz-greview__text { margin: 0.6rem 0 0; line-height: 1.55; }

/* Initial-Avatar (manuelle Bewertungen ohne Foto) */
.rz-greview__avatar--initial {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--c-primary, #b08d57);
	color: #fff;
	font-weight: 700;
	text-transform: uppercase;
}
.rz-greviews__embed { max-width: 1000px; margin: 0 auto; }

/* Mute-Button ausgeblendet (bleibt für das Auto-Ton-Skript im DOM, unsichtbar) */
.rz-sound-toggle--hidden {
	opacity: 0;
	pointer-events: none;
	visibility: hidden;
}

/* Wenn zwei schwebende Buttons (WhatsApp + Rückruf) da sind, Mute höher setzen */
.rz-floating:has(.rz-floating__btn--wa):has(.rz-floating__btn--call) ~ .rz-sound-toggle,
body:has(.rz-floating__btn--wa):has(.rz-floating__btn--call) .rz-sound-toggle {
	bottom: calc(clamp(1rem, 3vw, 1.75rem) + 8rem);
}

/* Eigenes WhatsApp-Icon (Bild statt SVG) */
.rz-floating__icon-img { width: 24px; height: 24px; object-fit: contain; display: block; }
