/*
Theme Name: RSFA (Hello Elementor Child)
Template: hello-elementor
Version: 1.0.0
Text Domain: rsfa
*/

/* Keep photos and tile proportions stable on ultrawide displays. */
@media screen and (min-width: 2561px) {
	body { --space-gutter: 9rem; }
	#content, .elementor-location-footer {
		position: relative;
		width: 100%;
		max-width: 2560px;
		margin-inline: auto;
	}
	.rs-header, .rsfa-header { max-width: 2560px; margin-inline: auto; box-sizing: border-box; }
	:is(#content, .elementor-location-footer)::before,
	:is(#content, .elementor-location-footer)::after {
		content: "";
		display: block;
		position: absolute;
		inset-block: 0;
		width: clamp(0px, calc((100vw - 2560px) / 2), 55px);
		z-index: 5;
		pointer-events: none;
	}
	:is(#content, .elementor-location-footer)::before {
		left: 0;
		background: linear-gradient(to right, var(--color-bg, #111111), transparent);
	}
	:is(#content, .elementor-location-footer)::after {
		right: 0;
		background: linear-gradient(to left, var(--color-bg, #111111), transparent);
	}
	.rsfa-gallery--bleed .rsfa-gallery__grid {
		width: 2560px;
		max-width: 2560px;
		margin-inline: calc(50% - 1280px);
	}
}

/* ==== RSFA base (tokens come from Elementor variables: --color-*, --fs-*, --space-*, --radius) ==== */
:root { color-scheme: dark; }
html, body { background-color: var(--color-bg, #111111); color: var(--color-text, #ffffff); }
body {
	font-family: var(--font-sans, 'DM Sans'), 'Helvetica Neue', Arial, sans-serif;
	font-size: var(--fs-body, 1.25rem); font-weight: 300; line-height: 1.618;
	-webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
::selection { background: var(--color-gold, #c8a97e); color: var(--color-gold-ink, #111111); }
/* Headings keep their role weight; <em> supplies the gold italic accent. */
/* Balanced wrapping applies to matching heading roles in both Elementor and custom widgets. */
:is(.rs-h1, .rs-h2, .rs-h3, .rs-card-title) { text-wrap: balance; }
.elementor .rs-card-title { font-weight: 400 !important; }
.elementor .rs-btn-gold { font-weight: 400 !important; }
.rs-h1 em, .rs-h2 em, .rs-h3 em, .rs-card-title em, .rs-lead em { color: var(--color-gold, #c8a97e); font-style: italic; font-weight: 300; }
.rs-h1 strong, .rs-h2 strong, .rs-h3 strong, .rs-card-title strong { font-weight: inherit; }
/* Mixed weights inside buttons/logo (Figma: "per <b>E-Mail</b>", "RAINER SCHMIDTKE <thin>PHOTOART</thin>") */
.rs-btn strong, .rs-btn b { font-weight: 600; }
/* The button is a flex box: bold text becomes its own flex item and the flex gap splits it from the plain text. Close the gap, use a natural word space instead. */
.rs-btn { gap: 0 !important; border-width: 1px !important; }
.rs-btn strong, .rs-btn b { margin-inline-start: 0; }
.rs-logo strong, .rs-logo b { font-weight: 700; }
/* FAQ accordion (native <details>): open item gets the gold frame and gold title; +/x marker on the question text.
   NOTE: Elementor uses .e-accordion-item-title-base::before as the click area, do not style it. */
details.rs-faq-item { border-radius: var(--radius, 0.625rem); }
details.rs-faq-item[open] { border-color: var(--color-gold, #c8a97e) !important; }
details.rs-faq-item[open] .rs-faq-title { color: var(--color-gold, #c8a97e) !important; }
details.rs-faq-item > summary { list-style: none; cursor: pointer; }
details.rs-faq-item > summary::-webkit-details-marker { display: none; }
/* +/x marker sits on the RIGHT of the row, question text left (desktop + mobile). */
details.rs-faq-item > summary { padding-inline: 0 !important; display: flex; align-items: center; justify-content: space-between; gap: var(--space-3, 1.3125rem); text-align: left; }
details.rs-faq-item > summary::after {
	content: "+"; flex: none; width: 1.5rem; text-align: center; font-size: 1.75rem; font-weight: 300; line-height: 1; color: var(--color-text, #fff); transition: color 0.25s ease, transform 0.3s ease;
}
details.rs-faq-item[open] > summary::after { content: "\00d7"; color: var(--color-gold, #c8a97e); }
/* The +/x marker is the only indicator: hide Elementor's chevron (it also stole width from the question on phones). */
details.rs-faq-item .e-accordion-item-icon-base { display: none; }
details.rs-faq-item .e-accordion-item-title-base { flex: 1 1 auto; min-width: 0; }
details.rs-faq-item [class*="accordion-item-content"] { padding-left: 0; padding-right: calc(1.5rem + var(--space-3, 1.3125rem)); }

/* Form fields */
textarea.rs-input { min-height: 12rem; resize: vertical; display: block; }
.rs-input::placeholder { color: var(--color-text-muted, #a8a39c); opacity: 0.8; }

/* Teaser hover: slow zoom on the photo */
.rs-teaser:hover .rs-teaser-img { transform: scale(1.04); }
@media (prefers-reduced-motion: reduce) { .rs-teaser:hover .rs-teaser-img { transform: none; } }

/* Mixed weight inside light links */
.rs-link-light strong, .rs-link-light b { font-weight: 600; }

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

/* ==== Accessibility base ==== */
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, [tabindex]:focus-visible {
	outline: 2px solid var(--color-gold, #c8a97e); outline-offset: 3px; border-radius: 0.125rem;
}
.rsfa-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }

/* ==== Mobile teaser slider (markup/behaviour: slider.js). Below 768px the teasers become one swipeable row, flush with the left screen edge, the next card peeks in from the right as a swipe hint. ==== */
.rs-slider-ui { display: none; }
@media (max-width: 767px) {
	.rs-slider-on {
		display: flex !important; flex-direction: row !important; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none;
		gap: 0 !important; margin-inline: calc(-1 * var(--space-gutter, 1.3125rem)); padding: 0 !important; -webkit-overflow-scrolling: touch;
	}
	.rs-slider-on::-webkit-scrollbar { display: none; }
	.rs-slider-on > .rs-teaser { flex: 0 0 86% !important; width: 86% !important; border-radius: 0 !important; aspect-ratio: 4 / 5; min-height: 0 !important; scroll-snap-align: start; scroll-snap-stop: always; }
	/* No visible dots / pause button (owner's decision). They stay in the DOM for keyboard + screen-reader users and appear only on keyboard focus. */
	.rs-slider-ui { display: block; position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
	.rs-slider-ui:focus-within { position: static; width: auto; height: auto; overflow: visible; clip-path: none; display: flex; justify-content: space-between; margin-top: var(--space-2, 0.8125rem); }
	.rs-slider-ui[hidden] { display: none; }
	.rs-slider-dots { display: flex; gap: 0.25rem; }
	.rs-slider-dot, .rs-slider-pause {
		-webkit-appearance: none; appearance: none; background: transparent; border: 0; box-shadow: none; padding: 0; cursor: pointer;
		min-width: 2.75rem; min-height: 2.75rem; display: inline-flex; align-items: center; justify-content: center; color: var(--color-text, #fff);
	}
	.rs-slider-dot::before { content: ""; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--color-line, #2f2f2f); box-shadow: inset 0 0 0 1px var(--color-text-muted, #a8a39c); }
	.rs-slider-dot[aria-current="true"]::before { width: 1.5rem; border-radius: 0.25rem; background: var(--color-gold, #c8a97e); box-shadow: none; }
	.rs-slider-pause::before { content: "II"; font-weight: 700; letter-spacing: 0.1em; }
	.rs-slider-pause:not(.is-playing)::before { content: "▶"; }
}

/* NOTE: the Galerie and Preise widgets ship their own stylesheet: mu-plugins/rsfa-gallery/widgets.css (Elementor only outputs
   global-class CSS for classes used in the page data, so widget markup must not depend on global classes). */

/* DM Sans (SIL Open Font License 1.1) - self-hosted variable font, downloaded once from Google Fonts. No runtime requests to Google. */
@font-face{font-family:'DM Sans';font-style:italic;font-weight:100 1000;font-display:swap;src:url('fonts/dm-sans-latin-ext-italic.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'DM Sans';font-style:italic;font-weight:100 1000;font-display:swap;src:url('fonts/dm-sans-latin-italic.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:100 1000;font-display:swap;src:url('fonts/dm-sans-latin-ext-normal.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:100 1000;font-display:swap;src:url('fonts/dm-sans-latin-normal.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}

/* Contact CTA over the photo: a stronger, wider dark veil behind the form so inputs keep contrast on desktop (mobile is already dark enough). */
.e-con:has(.rsfa-ask) > .rs-overlay-left {
	background: linear-gradient(90deg, rgba(17, 17, 17, 0.96) 0%, rgba(17, 17, 17, 0.9) 50%, rgba(17, 17, 17, 0.62) 80%, rgba(17, 17, 17, 0.4) 100%) !important;
}

/* Teaser text lines up with the page text: the outer cards are full-bleed photos, so their text gets the page gutter on the outer side.
   Phones (slider): every card's text starts at the page gutter. */
@media (min-width: 768px) {
	.rs-grid-3 > .rs-teaser:first-child { padding-left: var(--space-gutter, 1.3125rem) !important; }
	.rs-grid-3 > .rs-teaser:last-child { padding-right: var(--space-gutter, 1.3125rem) !important; }
}
@media (max-width: 767px) {
	.rs-slider-on > .rs-teaser { padding-inline: var(--space-gutter, 1.3125rem) !important; }
}

/* Process steps: two columns on phones (space is enough), tighter items. */
@media (max-width: 767px) {
	.e-con:has(> .e-con > .rs-step-number) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; column-gap: var(--space-3, 1.3125rem) !important; row-gap: var(--space-3, 1.3125rem) !important; }
	.e-con:has(> .e-con > .rs-step-number) .rs-step-number { font-size: 2.75rem !important; }
	.e-con:has(> .e-con > .rs-step-number) > .e-con { padding-block: 0 var(--space-3, 1.3125rem) !important; padding-inline: 0 var(--space-3, 1.3125rem) !important; gap: var(--space-1, 0.5rem) !important; min-height: 0 !important; }
	.e-con:has(> .e-con > .rs-step-number) .rs-card-title { font-size: var(--fs-body, 1.25rem) !important; line-height: 1.25; overflow-wrap: anywhere; hyphens: auto; }
	.e-con:has(> .e-con > .rs-step-number) .e-paragraph-base:not(.rs-step-number) { font-size: var(--fs-small, 1rem) !important; line-height: 1.5 !important; }
}

/* Touch targets: text links get a comfortable 44px hit area on touch devices (WCAG 2.5.8 asks 24px, Apple/Google recommend 44px). */
@media (pointer: coarse) {
	a.e-paragraph-link-base { display: inline-flex; align-items: center; min-height: 2.75rem; }
}

/* Tablet: an odd last teaser spans the full row instead of leaving an empty half. */
@media (min-width: 768px) and (max-width: 1024px) {
	.rs-grid-3 > .rs-teaser:last-child:nth-child(odd) { grid-column: 1 / -1; }
}

/* Sticky site header: transparent gradient over the hero, blurred dark bar once scrolled, hides on scroll down and returns on scroll up (header.js). */
.rs-header { position: fixed !important; top: 0; left: 0; right: 0; z-index: 100; transition: background-color 0.35s ease, padding 0.35s ease, transform 0.4s cubic-bezier(0.22, 0.61, 0.36, 1), box-shadow 0.35s ease;
	background-image: linear-gradient(180deg, rgba(17, 17, 17, 0.7) 0%, rgba(17, 17, 17, 0) 100%); }
.admin-bar .rs-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .rs-header { top: 46px; } }
.rs-header.is-stuck { background-color: rgba(17, 17, 17, 0.82); background-image: none; -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); box-shadow: 0 1px 0 var(--color-line, #2f2f2f); padding-block: var(--space-2, 0.8125rem) !important; }
.rs-header.is-hidden:not(:focus-within) { transform: translateY(-110%); }
@media (prefers-reduced-motion: reduce) { .rs-header { transition: none; } }

/* Design language: every button ends with the arrow (same as the links). */
.rs-btn::after { content: "\2192"; margin-left: 0.4em; display: inline-block; transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); }
.rs-btn:hover::after, .rs-btn:focus-visible::after { transform: translateX(0.25em); }
@media (prefers-reduced-motion: reduce) { .rs-btn:hover::after { transform: none; } }

/* Steps grid (all sizes): no dash/hairline; instead big, quiet numbers and generous spacing. */
.e-con:has(> .e-con > .rs-step-number) > .e-con { border-top: 0 !important; position: relative; padding-top: 0 !important; padding-bottom: var(--space-4, 2.125rem) !important; gap: var(--space-2, 0.8125rem) !important; }
.e-con:has(> .e-con > .rs-step-number) > .e-con::before { content: none !important; }
.e-con:has(> .e-con > .rs-step-number) .rs-step-number { font-size: clamp(3rem, 2.2rem + 3vw, 5rem) !important; line-height: 1 !important; font-weight: 200 !important; color: rgba(200, 169, 126, 0.55) !important; opacity: 1 !important; margin-bottom: var(--space-2, 0.8125rem); letter-spacing: -0.02em; }
.e-con:has(> .e-con > .rs-step-number) { row-gap: var(--space-4, 2.125rem) !important; }

/* Phones: buttons never exceed the screen; primary buttons use the full content width (same as the form and footer buttons). */
@media (max-width: 767px) {
	.rs-btn { width: 100% !important; max-width: 100% !important; align-self: stretch !important; justify-content: center; text-align: center; white-space: normal; }
}

/* Hero CTA on phones: primary = gold outline (unchanged look), secondary link = full-width white outline button underneath, same height and radius. Labels flow as one line of text. */
@media (max-width: 767px) {
	.rs-btn { display: block !important; padding: calc((3.4375rem - 2px - 1.3em) / 2) 1rem !important; font-size: 1rem !important; line-height: 1.3 !important; min-height: 3.4375rem; box-sizing: border-box; }
	.rs-hero .rs-row { flex-direction: column !important; align-items: stretch !important; gap: var(--space-2, 0.8125rem) !important; }
	.rs-hero .rs-link-light { width: 100%; margin: 0; }
	.rs-hero .rs-link-light a.e-paragraph-link-base { display: block; width: 100%; box-sizing: border-box; padding: calc((3.4375rem - 2px - 1.3em) / 2) 1rem; min-height: 3.4375rem; border: 1px solid rgba(255, 255, 255, 0.55); border-radius: var(--radius, 0.625rem); text-align: center; text-decoration: none; font-size: 1rem; line-height: 1.3; transition: border-color 0.3s ease, color 0.3s ease; }
	.rs-hero .rs-link-light a.e-paragraph-link-base:hover, .rs-hero .rs-link-light a.e-paragraph-link-base:focus-visible { border-color: var(--color-gold, #c8a97e); color: var(--color-gold, #c8a97e); }
}
/* Big photo box on phones: the second link looks like the hero's secondary CTA (full width, white outline, centred) */
@media (max-width: 767px) {
	.rs-container > .rs-btn ~ .rs-link-light { width: 100%; margin: 0; }
	.rs-container > .rs-btn ~ .rs-link-light a.e-paragraph-link-base { display: block; width: 100%; box-sizing: border-box; padding: calc((3.4375rem - 2px - 1.3em) / 2) 1rem; min-height: 3.4375rem; border: 1px solid rgba(255, 255, 255, 0.55); border-radius: var(--radius, 0.625rem); text-align: center; text-decoration: none; font-size: 1rem; line-height: 1.3; color: #fff; transition: border-color 0.3s ease, color 0.3s ease; }
	.rs-container > .rs-btn ~ .rs-link-light a.e-paragraph-link-base:hover, .rs-container > .rs-btn ~ .rs-link-light a.e-paragraph-link-base:focus-visible { border-color: var(--color-gold, #c8a97e); color: var(--color-gold, #c8a97e); }
}

/* Eyebrows: one style everywhere (small gold caps, tracked), also on phones. */
@media (max-width: 767px) {
	.rs-eyebrow { font-size: 0.8125rem !important; letter-spacing: 0.16em !important; line-height: 1.4 !important; }
}

/* Desktop buttons: label is ONE inline text flow (natural word spaces, no flex items with gaps), centred by line-height. */
@media (min-width: 768px) {
	.rs-btn { display: inline-block !important; box-sizing: border-box; height: 3.4375rem; line-height: calc(3.4375rem - 2px) !important; padding-block: 0 !important; text-align: center; white-space: nowrap; }
}

/* Single-column photo boxes (big box, portrait box) get the same generous height and vertical padding as the compact page hero. */
@media (min-width: 768px) {
	.rs-section:not(.rs-hero):has(> .rs-hero-img, > .rs-side-img) { min-height: clamp(34rem, 46vw, 46rem); padding-block: var(--space-7, 9rem) !important; display: flex; flex-direction: column; justify-content: center; box-sizing: border-box; }
}

/* Home checklist photo: keep heading and teaser in the dark area beside the couple. */
@media (max-width: 767px) {
	.home .rs-section:not(.rs-hero):has(> .rs-hero-img) {
		--rs-photo-height: 52svh;
		min-height: 0 !important;
		padding-top: 38svh !important;
		padding-bottom: var(--space-5, 3.4375rem) !important;
	}
	.home .rs-section:not(.rs-hero) > .rs-hero-img {
		inset: 0 0 auto;
		width: 100%;
		height: var(--rs-photo-height);
		object-position: 65% 25%;
		-webkit-mask-image: linear-gradient(to bottom, #000 45%, transparent 100%);
		mask-image: linear-gradient(to bottom, #000 45%, transparent 100%);
	}
	.home .rs-section:not(.rs-hero):has(> .rs-hero-img) > .rs-overlay-left {
		inset: 0 0 auto;
		height: var(--rs-photo-height);
		background: linear-gradient(to bottom, rgba(17, 17, 17, 0.08), rgba(17, 17, 17, 0.25) 45%, rgba(17, 17, 17, 0.65) 75%, var(--color-bg, #111111)) !important;
	}
}

@media (min-width: 1025px) {
	.home .rs-section:not(.rs-hero):has(> .rs-hero-img) > .rs-container > :is(.e-heading-base, p.e-paragraph-base) {
		max-width: min(42rem, 48%);
	}
}

/* Tablet photo cards: reserve the upper image for the people, blend into the copy below.
   Include compact landscape tablets; full desktop composition starts at 1200px. */
@media (min-width: 768px) and (max-width: 1199px) {
	.home .rs-section:has(> .rs-hero-img, > .rs-side-img) {
		--rs-tablet-photo-height: clamp(22rem, 52vw, 36rem);
		min-height: 0 !important;
		padding-top: calc(var(--rs-tablet-photo-height) - var(--space-6, 5.5rem)) !important;
		padding-bottom: var(--space-5, 3.4375rem) !important;
	}
	.home .rs-section > :is(.rs-hero-img, .rs-side-img) {
		inset: 0 0 auto !important;
		width: 100% !important;
		height: var(--rs-tablet-photo-height) !important;
		object-fit: cover;
		-webkit-mask-image: linear-gradient(to bottom, #000 45%, transparent 100%) !important;
		mask-image: linear-gradient(to bottom, #000 45%, transparent 100%) !important;
	}
	.home .rs-section:has(> .rs-hero-img, > .rs-side-img) > :is(.rs-overlay-left, .rs-overlay-left-soft) {
		inset: 0 0 auto !important;
		height: var(--rs-tablet-photo-height) !important;
		background: linear-gradient(to bottom, rgba(17, 17, 17, 0.08), rgba(17, 17, 17, 0.2) 45%, rgba(17, 17, 17, 0.65) 75%, var(--color-bg, #111)) !important;
	}
	.home .rs-section:has(> .rs-hero-img, > .rs-side-img) > .rs-container > :is(.e-heading-base, p.e-paragraph-base) {
		width: 100%;
		max-width: 46rem !important;
	}
	.home .rs-section:not(.rs-hero):has(> .rs-hero-img, > .rs-side-img) .e-heading-base { font-size: var(--fs-h3, 2rem) !important; }
	.home .rs-hero:has(> .rs-hero-img) .e-heading-base { font-size: clamp(2.5rem, 4.7vw, 3.5rem) !important; }
	.home .rs-section:has(> .rs-hero-img, > .rs-side-img) .rs-row { flex-wrap: wrap !important; }
	.home .rs-section:has(> .rs-hero-img, > .rs-side-img) .rs-btn { max-width: 100%; height: auto; min-height: 3.4375rem; padding: calc((3.4375rem - 2px - 1.3em) / 2) var(--space-4, 2.125rem) !important; line-height: 1.3 !important; white-space: normal; }
	.home .rs-section > .rs-container:has(> .rs-btn + .rs-link-light) { display: grid !important; grid-template-columns: auto minmax(0, 1fr); column-gap: var(--space-3, 1.3125rem); align-items: center; }
	.home .rs-section > .rs-container:has(> .rs-btn + .rs-link-light) > :is(.e-heading-base, p.e-paragraph-base:not(.rs-link-light)) { grid-column: 1 / -1; }
	.home .rs-section > .rs-container > .rs-btn + .rs-link-light { margin: 0 !important; }
}

/* Text sections (guides, intro texts): readable body copy, calmer H2, gold links. The section carries an id from the page builder (inhalt, intro …). */
[id^="txt-"] .e-heading-base { font-size: var(--fs-h3, 2rem) !important; line-height: 1.2 !important; max-width: 40rem; margin: var(--space-5, 3.4375rem) 0 var(--space-2, 0.8125rem) !important; }
[id^="txt-"] .e-heading-base:first-of-type { margin-top: 0 !important; }
[id^="txt-"] p.e-paragraph-base { font-size: var(--fs-body, 1.25rem) !important; line-height: 1.7 !important; font-weight: 300 !important; color: #e9e6e1 !important; max-width: var(--reading-max, 51rem); margin: 0 0 var(--space-3, 1.3125rem) !important; }
[id^="txt-"] p.e-paragraph-base strong { font-weight: 500; color: var(--color-text, #fff); }
[id^="txt-"] .rsfa-facts { margin-block: var(--space-4, 2.125rem) var(--space-4, 2.125rem); }
.e-paragraph-base a:not(.e-paragraph-link-base) { color: var(--color-gold, #c8a97e); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.2em; transition: color 0.25s ease; }
.e-paragraph-base a:not(.e-paragraph-link-base):hover, .e-paragraph-base a:not(.e-paragraph-link-base):focus-visible { color: var(--color-gold-hover, #d9bd95); }

/* Wide screens: text sections and FAQ lists use the full width as an editorial two-column layout (heading beside its text) instead of one narrow column with empty space on the right. */
@media (min-width: 1024px) {
	[id^="txt-"] > div:first-child { max-width: none !important; width: 100% !important; display: grid !important; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); column-gap: var(--space-6, 5.5rem); row-gap: 0; align-items: start; }
	[id^="txt-"] > div:first-child > * { grid-column: 2; }
	[id^="txt-"] > div:first-child > .e-heading-base { grid-column: 1; margin-top: var(--space-5, 3.4375rem) !important; }
	[id^="txt-"] > div:first-child > .e-heading-base + p.e-paragraph-base { margin-top: calc(var(--space-5, 3.4375rem) + 0.45em) !important; }
	[id^="txt-"] > div:first-child > .e-heading-base:first-child { margin-top: 0 !important; }
	[id^="txt-"] > div:first-child > .e-heading-base:first-child + p.e-paragraph-base { margin-top: 0.45em !important; }
	[id^="txt-"] > div:first-child > .elementor-widget, [id^="txt-"] > div:first-child > [data-elementor-type], [id^="txt-"] > div:first-child > :has(.rsfa-facts), [id^="txt-"] > div:first-child > :has(.rsfa-todo) { grid-column: 1 / -1; }
	[id^="txt-"] > div:first-child > a { grid-column: 2; }
	#faq > div:first-child { max-width: none !important; width: 100% !important; display: grid !important; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); column-gap: var(--space-6, 5.5rem); align-items: start; }
	#faq > div:first-child > * { grid-column: 1; }
	#faq > div:first-child > div { grid-column: 2; grid-row: 1 / span 2; }
}

/* Pakete: the extras belong to the price cards, so they follow them closely under a hairline instead of starting a new section. */
#pakete { padding-bottom: var(--space-4, 2.125rem) !important; }
#extras { padding-top: 0 !important; }
#extras > div:first-child { border-top: 1px solid var(--color-line, #2f2f2f); padding-top: var(--space-5, 3.4375rem); }

/* FAQ lists (wide screens): eyebrow and headline stay together at the top, the questions run beside them. */
@media (min-width: 1024px) {
	#faq > div:first-child { grid-template-rows: auto auto 1fr; row-gap: var(--space-2, 0.8125rem); }
	#faq > div:first-child > div { grid-row: 1 / span 3; }
}

/* Guides and text pages: calmer and clearer. One hairline instead of gold dashes in the fact grids, smaller numbers, plain titles, tighter rhythm between sections. */
[id^="txt-"] { padding-block: var(--space-5, 3.4375rem) !important; }
[id^="txt-"] .rsfa-facts { border-top: 1px solid var(--color-line, #2f2f2f); margin-block: var(--space-4, 2.125rem); }
[id^="txt-"] .rsfa-facts__item { padding: var(--space-4, 2.125rem) var(--space-4, 2.125rem) var(--space-4, 2.125rem) 0 !important; }
[id^="txt-"] .rsfa-facts__item::before { content: none !important; }
[id^="txt-"] .rsfa-facts__value { font-size: var(--fs-h3, 2rem) !important; }
[id^="txt-"] .rsfa-facts__title { font-size: 1rem !important; letter-spacing: 0 !important; text-transform: none !important; font-weight: 500 !important; color: var(--color-text, #fff) !important; }
[id^="txt-"] .rsfa-facts__text { font-size: 0.9375rem !important; line-height: 1.6 !important; color: var(--color-text-muted, #a8a39c) !important; }
[id^="txt-"] p.e-paragraph-base { color: #d9d5cf !important; }
@media (min-width: 1024px) {
	[id^="txt-"] > div:first-child > .e-heading-base { margin-top: var(--space-4, 2.125rem) !important; }
	[id^="txt-"] > div:first-child > .e-heading-base + p.e-paragraph-base { margin-top: calc(var(--space-4, 2.125rem) + 0.45em) !important; }
	[id^="txt-"] > div:first-child > .e-heading-base:first-child { margin-top: 0 !important; }
	[id^="txt-"] > div:first-child > .e-heading-base:first-child + p.e-paragraph-base { margin-top: 0.45em !important; }
}

/* Centered timeline section: eyebrow and headline above the timeline are centered with it. */
#schritte .rs-eyebrow, #schritte .e-heading-base { text-align: center; justify-content: center; margin-inline: auto; }
#schritte .rs-eyebrow { display: block; }

/* Text pages and FAQ lists: one calm centered column (same logic as the timeline) instead of heading-left / text-right with empty space. */
@media (min-width: 768px) {
	[id^="txt-"] > div:first-child { display: flex !important; flex-direction: column; max-width: 58rem !important; width: 100% !important; margin-inline: auto !important; }
	[id^="txt-"] > div:first-child > .e-heading-base, [id^="txt-"] > div:first-child > p.e-paragraph-base, [id^="txt-"] > div:first-child > a { width: 100%; max-width: 42rem; margin-inline: auto !important; grid-column: auto; }
	[id^="txt-"] > div:first-child > .e-heading-base { margin-top: var(--space-5, 3.4375rem) !important; }
	[id^="txt-"] > div:first-child > .e-heading-base + p.e-paragraph-base { margin-top: 0 !important; }
	[id^="txt-"] > div:first-child > .e-heading-base:first-child { margin-top: 0 !important; }
	#faq > div:first-child { display: flex !important; flex-direction: column; align-items: center; text-align: center; max-width: 58rem !important; width: 100% !important; margin-inline: auto !important; }
	#faq > div:first-child > * { grid-column: auto; grid-row: auto; text-align: center; }
	#faq > div:first-child > div { width: 100%; max-width: 46rem; margin-top: var(--space-4, 2.125rem); text-align: left; }
	#faq > div:first-child > .e-paragraph-link-base, #faq > div:first-child > p { margin-inline: auto; }
}

/* Focal points: crops (heroes, teasers, photo boxes) must never cut off heads. Position = where the heads are in each photo (computed for the 3:1 hero banner, safe for cards and boxes). */
img[src*="rs-1005"] { object-position: 50% 13% !important; }
img[src*="rai3995-2"] { object-position: 50% 13% !important; }
img[src*="rai5082"] { object-position: 50% 0% !important; }
img[src*="rai3737"] { object-position: 50% 30% !important; }
img[src*="rs-1015"] { object-position: 55% 23% !important; }
img[src*="dsc3279"] { object-position: 31% 0% !important; }
img[src*="dsc3442"] { object-position: 50% 0% !important; }
img[src*="rai4134"] { object-position: 45% 0% !important; }
img[src*="dsc3345"] { object-position: 62% 26% !important; }
img[src*="dsc3455-mirrored"] { object-position: 55% 12% !important; }
img[src*="rainer-schmidtke-portrait"] { object-position: 70% 6% !important; }

/* Über mich: the photographer is the subject, so the hero is taller and the portrait stays in view (also on phones). */
#hero-rainer { min-height: min(46rem, 82svh) !important; }
img[src*="rainer-schmidtke-portrait"] { object-position: 72% 0% !important; }
@media (max-width: 767px) { #hero-rainer { min-height: 36rem !important; } img[src*="rainer-schmidtke-portrait"] { object-position: 86% 0% !important; } }


/* Portfolio: the pictures start right under the hero (no filter tabs, no big gap). */
#galerie { padding-top: var(--space-1, 0.5rem) !important; margin-top: 0 !important; }

/* Fact inserts inside text pages: a quiet list in the text column (value | title + text, hairlines between rows) instead of a wide 3-column grid that breaks the axis. */
[id^="txt-"] .rsfa-facts { display: block !important; max-width: 42rem; margin: var(--space-4, 2.125rem) auto !important; border-top: 1px solid var(--color-line, #2f2f2f); }
[id^="txt-"] .rsfa-facts__item { display: grid !important; grid-template-columns: 9.5rem minmax(0, 1fr); column-gap: var(--space-4, 2.125rem); row-gap: 0.25rem; align-items: baseline; padding: var(--space-3, 1.3125rem) 0 !important; border-bottom: 1px solid var(--color-line, #2f2f2f); }
[id^="txt-"] .rsfa-facts__value { grid-column: 1; grid-row: 1 / span 2; font-size: var(--fs-lead, 1.625rem) !important; line-height: 1.15 !important; }
[id^="txt-"] .rsfa-facts__title { grid-column: 2; grid-row: 1; }
[id^="txt-"] .rsfa-facts__text { grid-column: 2; grid-row: 2; margin: 0 !important; max-width: none !important; }
@media (min-width: 768px) {
	[id^="txt-"] > div:first-child > :has(.rsfa-facts), [id^="txt-"] > div:first-child > :has(.rsfa-todo) { width: 100%; max-width: 42rem; margin-inline: auto !important; }
	[id^="txt-"] > div:first-child > :has(.rsfa-todo) { max-width: 58rem; }
}
@media (max-width: 767px) {
	[id^="txt-"] .rsfa-facts__item { grid-template-columns: minmax(0, 1fr); }
	[id^="txt-"] .rsfa-facts__value, [id^="txt-"] .rsfa-facts__title, [id^="txt-"] .rsfa-facts__text { grid-column: 1; grid-row: auto; }
}
#galerie { padding-bottom: var(--space-1, 0.5rem) !important; }
#galerie .rsfa-gallery__grid::after { display: none !important; } /* last row fills the width instead of leaving an empty block on the right */

/* Hover/Fokus nie im Theme-Standardrosa (#c36): Buttons bleiben transparent, nur Rand und Text werden Gold */
button:hover, button:focus, [type="button"]:hover, [type="button"]:focus, [type="submit"]:hover, [type="submit"]:focus { background-color: transparent; color: var(--color-gold, #c8a97e); border-color: var(--color-gold, #c8a97e); }
a:hover, a:active { color: var(--color-gold, #c8a97e); }

/* Scroll-Reveal (reveal.js setzt .rs-reveal nur bei erlaubter Bewegung; Animation statt Transition, damit Hover-Effekte unberührt bleiben) */
@keyframes rs-rv { from { opacity: 0; transform: translateY(1rem); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: no-preference) {
	.rs-reveal { opacity: 0; }
	.rs-reveal.is-in { opacity: 1; animation: rs-rv 0.7s cubic-bezier(0.22, 0.61, 0.36, 1) var(--rs-rv-d, 0ms) backwards; }
}
img[src*="rai2594"] { object-position: 50% 30% !important; }

/* Aktualisierungsdatum am Seitenende */
.rs-updated { margin: 0; padding: var(--space-4, 2.125rem) var(--space-gutter, 1.3125rem) var(--space-5, 3.4375rem); text-align: center; font-size: 0.9375rem; font-weight: 300; color: var(--color-text-muted, #a8a39c); background: var(--color-bg, #111); }

/* Only the checklist teaser requested in the owner's feedback. */
#checklist-teaser { min-height: clamp(32rem, 48vw, 45rem); padding-block: var(--space-6); }
#checklist-teaser .rs-container { position: relative; z-index: 2; max-width: none; width: 100%; }
#checklist-teaser h2 { max-width: 17ch; font-size: var(--fs-h2); line-height: 1.2; }
#checklist-teaser p { max-width: 40ch; color: var(--color-text); font-size: var(--fs-lead); line-height: 1.618; }
#checklist-teaser .e-button-base { display: inline-flex; width: auto; min-height: 55px; padding: var(--space-2) var(--space-4); font-size: var(--fs-body); }
#checklist-teaser img { object-position: 50% 40%; }
@media (max-width: 767px) { #checklist-teaser { padding-block: var(--space-5); } #checklist-teaser .e-button-base { width: 100%; white-space: normal; } }

/* Home planning actions share one row on desktop and stack on mobile. */
/* Action pairs use 21px side by side and 13px when stacked; text keeps the 34px content rhythm. */
.elementor .rs-hero .rs-row { margin-block-start: 0 !important; }
#home-planning > .rs-container { display: grid !important; grid-template-columns: max-content minmax(0, 1fr); column-gap: var(--space-3, 1.3125rem); align-items: center; }
#home-planning > .rs-container > :is(.e-heading-base, p.e-paragraph-base:not(.rs-link-light)) { grid-column: 1 / -1; }
#home-planning > .rs-container > .rs-link-light { margin: 0 !important; min-width: 0; }
@media (max-width: 767px) {
 #home-planning > .rs-container { grid-template-columns: minmax(0, 1fr); }
 #home-planning > .rs-container > .rs-link-light { margin-top: calc(var(--space-2, 0.8125rem) - var(--space-4, 2.125rem)) !important; }
 #home-planning .rs-btn { min-width: 0; white-space: normal; height: auto; align-self: stretch; }
 #home-planning .rs-link-light a { height: 100%; }
}
