/* RS Web One – Basis-Styles (Vorbild Layout: sandrorenk.com) */
@font-face {
  font-family: "Inter";
  src: url("../assets/fonts/Inter-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Manrope";
  src: url("../assets/fonts/Manrope-regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Manrope";
  src: url("../assets/fonts/Manrope-700.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Manrope";
  src: url("../assets/fonts/Manrope-800.woff2") format("woff2");
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}
:root {
  --accent: #718a18;
  --accent-hover: #5f7514;
  --accent-soft: #98a84a;
  --ink: #2a2a24;
  --muted: #5c5a52;
  --white: #ffffff;
  --off: #f5f2ea;
  --warm: #faf7f0;
  --sand: #e8e0d2;
  --taupe: #b9ae96;
  --dark: #1c1f14;
  --olive-deep: #2a3218;
  --header-bg: rgba(245, 242, 234, 0.88);
  --header-bg-scrolled: rgba(250, 247, 240, 0.96);
  --line: rgba(42, 42, 36, 0.1);
  --container: 1240px;
  --narrow: 667px;
  --header-offset: 19px;
  /* Desktop defaults (solid start bar); phone/tablet override below only */
  --header-h: 76px;
  --header-h-scrolled: 64px;
  --radius: 12px;
  --btn-radius: 5px;
  --font: "Inter", "Segoe UI", sans-serif;
  --display: "Manrope", "Segoe UI", sans-serif;
  --mid: "Manrope", "Segoe UI", sans-serif;
  --cookie-overlay: rgba(42, 50, 24, 0.28);
  --cookie-card-bg: #f5f2ea;
  --cookie-ink: #2a2a24;
  --cookie-line: rgba(42, 42, 36, 0.1);
  --cookie-muted: #5c5a52;
}

*,
*::before,
*::after {
  box-sizing: border-box;
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}

html {
  scroll-behavior: smooth;
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
  /* Chrome/Safari: 100%. Firefox Android: only "none" disables font inflation. */
  -webkit-text-size-adjust: 100%;
  -moz-text-size-adjust: none;
  text-size-adjust: 100%;
}

body {
  margin: 0;
  color: var(--ink);
  background:
    radial-gradient(ellipse 80% 50% at 10% -10%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 55%),
    radial-gradient(ellipse 60% 40% at 100% 0%, color-mix(in srgb, var(--taupe) 25%, transparent), transparent 50%),
    var(--warm);
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
  -webkit-text-size-adjust: 100%;
  -moz-text-size-adjust: none;
  text-size-adjust: 100%;
}

/* Keine Auto-Silbentrennung (UA/lang=de) — inkl. Prosa, Leads, Zitate, FAQ */
p,
li,
h1, h2, h3, h4, h5, h6,
.lead,
.prose,
.prose p,
.eyebrow,
blockquote,
blockquote p,
summary,
details,
figcaption,
.btn,
.btn-text,
.escape-copy,
.escape-block-prose,
.escape-kicker,
#auszeit-teaser {
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
  overflow-wrap: normal;
  word-break: normal;
}

button,
input,
select,
textarea {
  font: inherit;
  -moz-text-size-adjust: none;
}

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4, p { margin: 0; }

.skip {
  position: absolute;
  left: 12px;
  top: -48px;
  z-index: 10000;
  padding: 8px 12px;
  background: var(--accent);
  color: var(--ink);
}
.skip:focus { top: 12px; }

.wrap {
  width: min(var(--container), calc(100% - 48px));
  margin-inline: auto;
}
.narrow { max-width: var(--narrow); }

/* ---------- Buttons ---------- */
.btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: var(--accent);
  color: #fff;
  font-family: var(--mid);
  font-weight: 700;
  font-size: 0.9rem;
  line-height: 1.2;
  padding: 0.55em 1em;
  border-radius: var(--btn-radius);
  border: 0;
  cursor: pointer;
  transition: background 0.3s ease, transform 0.25s ease;
  z-index: 1;
}
.btn:hover { background: var(--accent-hover); }
.btn-text { position: relative; z-index: 2; }
.btn-ghost {
  background: transparent;
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.55);
}
.btn-ghost:hover {
  background: rgba(255, 255, 255, 0.08);
  color: #fff;
}
/* Shine: same left-sweep as sandrorenk.com (works on the phones where transform-shine stayed invisible) */
.btn-shimmer {
  position: absolute;
  top: 0;
  left: -150%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
  transform: skewX(-25deg);
  animation: shimmer 5s infinite;
  z-index: 0;
  pointer-events: none;
}
.btn:hover .btn-shimmer {
  animation-duration: 2s;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.5), transparent);
}
@keyframes shimmer {
  0% { left: -150%; }
  50% { left: 150%; }
  100% { left: 150%; }
}
@media (pointer: coarse), (max-width: 900px) {
  .btn-shimmer {
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.55), transparent);
    animation-duration: 2.4s;
    animation-name: shimmer;
    animation-timing-function: ease-in-out;
    animation-iteration-count: infinite;
  }
}

/* ---------- Header: Floating (default, sandrorenk) ---------- */
body[data-header="floating"] .site-header {
  position: fixed;
  z-index: 1000;
  top: var(--header-offset);
  left: var(--header-offset);
  right: var(--header-offset);
  height: var(--header-h);
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 0 22px 0 18px;
  background: var(--header-bg);
  border-radius: var(--radius);
  overflow: hidden;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid color-mix(in srgb, var(--accent) 18%, transparent);
  box-shadow: 0 10px 30px rgba(42, 42, 36, 0.1);
  color: var(--ink);
  transition:
    height 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    background 0.35s ease,
    box-shadow 0.35s ease,
    border-color 0.35s ease,
    padding 0.35s ease;
}
body[data-header="floating"] .site-header.is-scrolled {
  height: var(--header-h-scrolled);
  background: var(--header-bg-scrolled);
  border-color: color-mix(in srgb, var(--accent) 28%, transparent);
  box-shadow: 0 14px 36px rgba(42, 42, 36, 0.14);
}
body[data-header="floating"] .mobile-nav-slot {
  position: fixed;
  z-index: 999;
  top: calc(var(--header-offset) + var(--header-h) + 8px);
  left: var(--header-offset);
  right: var(--header-offset);
}
body[data-header="floating"] .site-header.is-scrolled ~ .mobile-nav-slot {
  top: calc(var(--header-offset) + var(--header-h-scrolled) + 8px);
}

/* ---------- Header: Standard bar ---------- */
body[data-header="bar"] .site-header {
  z-index: 1000;
  display: flex;
  align-items: center;
  gap: 18px;
  height: 72px;
  padding: 0 20px;
  background: var(--header-bg);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  color: #f7f7f7;
}
body[data-header="bar"][data-header-fixed="true"] .site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
}
body[data-header="bar"][data-header-fixed="false"] .site-header {
  position: relative;
}
body[data-header="bar"] .mobile-nav-slot {
  position: absolute;
  z-index: 999;
  left: 0;
  right: 0;
  top: 100%;
}
body[data-header="bar"][data-header-fixed="true"] .mobile-nav-slot {
  position: fixed;
  top: 72px;
}

.scroll-progress {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 3px;
  width: auto;
  transform: scaleX(0);
  transform-origin: left center;
  background: linear-gradient(90deg, var(--accent) 0%, color-mix(in srgb, var(--accent) 55%, white) 100%);
  border-radius: 0;
  pointer-events: none;
  z-index: 2;
}

.logo {
  flex: 0 0 auto;
  width: 112px;
  display: block;
  transition: width 0.35s cubic-bezier(0.22, 1, 0.36, 1);
  color: var(--ink);
  font-family: var(--display);
  font-weight: 700;
  font-size: 1.05rem;
  letter-spacing: -0.02em;
}
.logo img {
  width: 112px;
  max-height: none;
  height: auto;
  display: block;
  object-fit: contain;
}
body[data-header="floating"] .site-header.is-scrolled .logo,
body[data-header="floating"] .site-header.is-scrolled .logo img {
  width: 98px;
  max-height: none;
}
/* Phone ONLY: modest bar shrink — never crush logo with tiny max-height */
@media (max-width: 899px) {
  :root {
    --header-offset: 12px;
    --header-h: 66px;
    --header-h-scrolled: 60px;
  }
  body[data-header="floating"] .site-header {
    padding: 0 12px 0 10px;
  }
  .logo,
  .logo img {
    width: 94px;
    max-height: none;
    height: auto;
    object-fit: contain;
  }
  body[data-header="floating"] .site-header.is-scrolled .logo,
  body[data-header="floating"] .site-header.is-scrolled .logo img {
    width: 88px;
    max-height: none;
  }
}
/* Tablet ONLY (hamburger still visible <980px) */
@media (min-width: 900px) and (max-width: 979px) {
  :root {
    --header-offset: 14px;
    --header-h: 74px;
    --header-h-scrolled: 64px;
  }
  body[data-header="floating"] .site-header {
    padding: 0 16px 0 14px;
  }
  .logo,
  .logo img {
    width: 108px;
    max-height: none;
    height: auto;
    object-fit: contain;
  }
  body[data-header="floating"] .site-header.is-scrolled .logo,
  body[data-header="floating"] .site-header.is-scrolled .logo img {
    width: 98px;
    max-height: none;
  }
}
/* Desktop reinforcement — phone max-height must never leak here */
@media (min-width: 980px) {
  :root {
    --header-offset: 19px;
    --header-h: 76px;
    --header-h-scrolled: 64px;
  }
  .logo,
  .logo img {
    width: 112px;
    max-height: none;
  }
  body[data-header="floating"] .site-header.is-scrolled .logo,
  body[data-header="floating"] .site-header.is-scrolled .logo img {
    width: 98px;
    max-height: none;
  }
}

.nav {
  margin-left: auto;
  display: none;
  align-items: center;
  min-width: 0;
}
.nav ul {
  display: flex;
  align-items: center;
  gap: 4px;
}
.nav a {
  display: inline-flex;
  align-items: center;
  color: var(--ink);
  font-size: 1.05rem;
  line-height: 1;
  padding: 10px 8px;
  white-space: nowrap;
  position: relative;
  transition: color 0.25s ease;
}
.nav a::after {
  content: "";
  position: absolute;
  left: 8px;
  right: 8px;
  bottom: 4px;
  height: 1.5px;
  border-radius: 2px;
  background: var(--accent);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.nav a:hover,
.nav a.is-active { color: var(--accent); }
.nav a:hover::after,
.nav a.is-active::after { transform: scaleX(1); }

.header-cta { display: none; flex: 0 0 auto; }

.nav-toggle {
  display: grid;
  place-items: center;
  margin-left: auto;
  width: 44px;
  height: 44px;
  border: 0;
  background: transparent;
  cursor: pointer;
  position: relative;
}
.nav-toggle-lines {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  width: 22px;
}
.nav-toggle-lines span {
  display: block;
  height: 2px;
  background: var(--ink);
  border-radius: 2px;
  transform-origin: center;
  transition: transform 0.3s ease, opacity 0.25s ease;
}
.nav-toggle.is-open .nav-toggle-lines span:nth-child(1) {
  transform: translateY(8px) rotate(45deg);
}
.nav-toggle.is-open .nav-toggle-lines span:nth-child(2) { opacity: 0; }
.nav-toggle.is-open .nav-toggle-lines span:nth-child(3) {
  transform: translateY(-8px) rotate(-45deg);
}

@media (min-width: 980px) {
  .nav { display: flex; }
  .header-cta { display: inline-flex; margin-left: auto; }
  .nav-toggle { display: none; }
  body[data-header="floating"] .nav {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    margin-left: 0;
  }
}

.mobile-nav {
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  transform: translateY(-14px);
  transition:
    max-height 0.38s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.3s ease,
    transform 0.3s ease;
  pointer-events: none;
}
.mobile-nav.is-open { pointer-events: auto; }
.mobile-nav[hidden] { display: block !important; }
.mobile-nav-inner {
  display: grid;
  gap: 4px;
  padding: 14px 16px 18px;
  border-radius: var(--radius);
  background: var(--header-bg-scrolled);
  border: 1px solid color-mix(in srgb, var(--accent) 20%, transparent);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 16px 40px rgba(42, 42, 36, 0.16);
}
.mobile-nav a {
  color: var(--ink);
  padding: 12px 10px;
  border-radius: 8px;
  font-size: 1rem;
}
.mobile-nav a:hover { background: color-mix(in srgb, var(--accent) 10%, transparent); color: var(--accent-hover); }
.mobile-nav .btn { margin-top: 8px; width: 100%; }

body[data-header="bar"] .mobile-nav-inner {
  border-radius: 0;
  border-left: 0;
  border-right: 0;
}

/* ---------- Hero / Sections ---------- */
.hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  /* Offset floating header via tokens — stays correct when --header-h changes per breakpoint */
  padding: calc(var(--header-offset) + var(--header-h) + 40px) 0 72px;
  background: var(--olive-deep);
  color: #fff;
  overflow: hidden;
}
.hero--photo {
  background-color: var(--olive-deep);
}
.hero--photo .hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-size: cover;
  background-position: center 42%;
  /* JS owns transform (sandrorenk cinema) — no CSS transition fighting scroll rAF */
  transform: translate3d(0, 0, 0) scale(1.12);
  will-change: transform;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
.hero--photo::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(105deg, rgba(18, 22, 14, 0.72) 0%, rgba(18, 22, 14, 0.42) 42%, rgba(18, 22, 14, 0.18) 68%, transparent 100%),
    linear-gradient(180deg, rgba(28, 31, 20, 0.22) 0%, rgba(28, 31, 20, 0.38) 38%, rgba(20, 24, 14, 0.9) 100%),
    radial-gradient(ellipse 46% 42% at 88% 12%, color-mix(in srgb, var(--accent) 32%, transparent), transparent 72%);
  pointer-events: none;
}
.hero .wrap,
.hero-grid {
  position: relative;
  z-index: 2;
}
body[data-header="bar"][data-header-fixed="true"] .hero {
  padding-top: 120px;
}
.hero-grid {
  width: min(var(--container), calc(100% - 48px));
  margin-inline: auto;
  display: grid;
  gap: 28px;
  align-items: center;
}
.hero-brand {
  display: block;
  width: min(300px, 72vw);
  height: auto;
  margin-bottom: 1.35rem;
  filter: brightness(0) invert(1) drop-shadow(0 10px 28px rgba(0, 0, 0, 0.35));
}
.eyebrow {
  margin: 0 0 14px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--accent-soft);
}
.hero h1,
.hero-title {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(2.35rem, 5.2vw, 3.85rem);
  line-height: 1.06;
  letter-spacing: -0.035em;
  max-width: 12ch;
  text-shadow: 0 2px 28px rgba(0, 0, 0, 0.35);
}
.hero-title {
  position: relative;
  display: block;
}
/* Stagger on H1 itself would fight line motion — H1 stays put */
[data-hero-stagger] > .hero-title {
  opacity: 1;
  transform: none;
  transition: none;
}
.hero-title-line {
  display: block;
  will-change: transform, opacity;
}
.hero-title-letter {
  display: inline-block;
}
.hero-title-space {
  display: inline-block;
  width: 0.28em;
}
.js-ready [data-hero]:not(.is-hero-title-done) .hero-title-line {
  opacity: 0;
  transform: translate3d(0, 12px, 0);
}
/* Calm fade+rise for visual lines */
.js-ready [data-hero].is-hero-ready:not(.is-hero-title-done) .hero-title-line:nth-child(1) {
  animation: hero-title-line-in 1.55s cubic-bezier(0.22, 1, 0.36, 1) 0.12s both;
}
.js-ready [data-hero].is-hero-ready:not(.is-hero-title-done) .hero-title-line:nth-child(2) {
  animation: hero-title-line-in 1.6s cubic-bezier(0.22, 1, 0.36, 1) 0.5s both;
}
.js-ready [data-hero].is-hero-ready:not(.is-hero-title-done) .hero-title-line:nth-child(3) {
  animation: hero-title-line-in 1.65s cubic-bezier(0.22, 1, 0.36, 1) 0.88s both;
}
/* One continuous letter-draw wave (DOM order) — no bar sheen */
.js-ready [data-hero].is-hero-ready:not(.is-hero-title-done) .hero-title-letter {
  opacity: 0.28;
  animation: hero-letter-draw 0.58s ease-out both;
  animation-delay: calc(0.85s + (var(--i, 0) * 55ms));
}
[data-hero].is-hero-title-done .hero-title-line {
  opacity: 1;
  transform: none;
  animation: none;
  will-change: auto;
}
[data-hero].is-hero-title-done .hero-title-letter {
  opacity: 1;
  animation: none;
  text-shadow: none;
}
@keyframes hero-title-line-in {
  from {
    opacity: 0;
    transform: translate3d(0, 12px, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}
@keyframes hero-letter-draw {
  0% {
    opacity: 0.22;
    text-shadow: 0 0 0 transparent;
  }
  45% {
    opacity: 1;
    text-shadow: 0 0 14px rgba(255, 255, 255, 0.45);
  }
  100% {
    opacity: 1;
    text-shadow: none;
  }
}
.hero .lead {
  margin-top: 1.15rem;
  max-width: 38ch;
  color: rgba(255, 255, 255, 0.9);
  font-size: clamp(1.02rem, 1.5vw, 1.14rem);
  line-height: 1.55;
  text-shadow: 0 1px 16px rgba(0, 0, 0, 0.28);
}
.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 14px;
  margin-top: 1.85rem;
}
.hero .btn { margin-top: 0; }
.hero .btn-ghost {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.72);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.hero .btn-ghost:hover {
  background: rgba(255, 255, 255, 0.16);
}
.hero-media {
  display: none;
}

[data-hero-stagger] > * {
  opacity: 1;
  transform: translate3d(0, 26px, 0);
  transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}
[data-hero].is-hero-ready [data-hero-stagger] > *:nth-child(1) { transition-delay: 0.08s; transform: none; }
[data-hero].is-hero-ready [data-hero-stagger] > *:nth-child(2) { transition-delay: 0.2s; transform: none; }
[data-hero].is-hero-ready [data-hero-stagger] > *:nth-child(3) { transition-delay: 0.32s; transform: none; }
[data-hero].is-hero-ready [data-hero-stagger] > *:nth-child(4) { transition-delay: 0.44s; transform: none; }

.section {
  padding: clamp(64px, 10vw, 110px) 0;
}
.section .eyebrow {
  margin: 0 0 1.1rem;
}
.section h2 {
  font-family: var(--display);
  font-size: clamp(1.8rem, 3.2vw, 2.6rem);
  line-height: 1.15;
  letter-spacing: -0.02em;
}
.section h2 + .lead,
.section h2 + .prose,
.section h2 + p {
  margin-top: 1.65rem;
}
.section .lead + .prose,
.section .lead + .pillar-grid,
.section .lead + .reasons-grid,
.section .lead + .property-grid,
.section .lead + .quote-grid,
.section .lead + .specialty-grid,
.section .lead + .faq,
.section .lead + .stat-row,
.section .prose + .places-band,
.section .prose + .stat-row,
.section .prose + .faq,
.section h2 + .pillar-grid,
.section h2 + .property-grid,
.section h2 + .quote-grid,
.section h2 + .specialty-grid,
.section h2 + .faq,
.section h2 + .stat-row,
.section h2 + .cta-band {
  margin-top: 2rem;
}
.section .lead {
  margin-top: 1.65rem;
  color: var(--muted);
  max-width: 46ch;
  font-size: 1.05rem;
}
.section h3 {
  font-family: var(--display);
  margin-bottom: 0.85rem;
}
.section h3 + p,
.section h3 + .prose {
  margin-top: 0.35rem;
}
.section-dark {
  background:
    radial-gradient(ellipse 50% 60% at 90% 10%, color-mix(in srgb, var(--accent) 18%, transparent), transparent 60%),
    var(--dark);
  color: #f2f2f2;
}
.section-dark .lead { color: rgba(242, 242, 242, 0.78); }
.section-warm {
  background: color-mix(in srgb, var(--off) 70%, white);
}
.section-sand {
  background: linear-gradient(180deg, var(--warm), var(--sand));
}

.page-main {
  padding: 140px 0 80px;
}
body[data-header="bar"] .page-main {
  padding-top: 100px;
}
.legal section { margin-top: 2.5rem; }
.legal h2 {
  font-size: 1.15rem;
  margin-bottom: 0.85rem;
}
.legal p { color: var(--muted); max-width: 52ch; }
.back-link {
  display: inline-block;
  margin-top: 2.5rem;
  color: var(--accent);
  font-weight: 600;
}

/* ---------- Footer ---------- */
.site-footer {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--olive-deep) 40%, #111), #111);
  color: rgba(255, 255, 255, 0.82);
  padding: 56px 0 0;
}
.footer-grid {
  display: grid;
  gap: 32px;
}
@media (min-width: 768px) {
  .footer-grid { grid-template-columns: 1.4fr 1fr 1fr 1fr; }
}
@media (max-width: 767px) {
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .footer-brand { grid-column: 1 / -1; }
}
.footer-brand img {
  width: 160px;
  max-width: 100%;
  height: auto;
  display: block;
}
.footer-brand p {
  margin-top: 12px;
  max-width: 32ch;
  color: rgba(255, 255, 255, 0.65);
  font-size: 0.95rem;
}
.footer-col h4 {
  margin-bottom: 12px;
  font-size: 0.8rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #fff;
}
.footer-col a {
  display: inline-block;
  padding: 4px 0;
  color: rgba(255, 255, 255, 0.7);
}
.footer-col a:hover { color: var(--accent); }
.footer-bottom {
  margin-top: 40px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  padding: 18px 0;
  font-size: 0.85rem;
}
.footer-bottom-inner {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  justify-content: space-between;
  align-items: center;
  width: min(var(--container), calc(100% - 48px));
  margin-inline: auto;
}
.footer-bottom a { color: rgba(255, 255, 255, 0.55); }
.footer-bottom a:hover { color: var(--accent); }

/* ---------- Cookie (einheitliches Agentur-Layout; Farben/Logo kundenspezifisch) ---------- */
.cookie-modal {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: grid;
  place-items: center;
  padding: 1.25rem;
  background: var(--cookie-overlay);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
}
.cookie-modal[hidden] { display: none; }
.cookie-card {
  width: min(520px, 100%);
  max-width: 520px;
  max-height: min(85vh, 640px);
  overflow: auto;
  padding: 1.35rem;
  border-radius: 1.15rem;
  border: 1px solid var(--cookie-line);
  background: var(--cookie-card-bg);
  color: var(--cookie-ink);
  box-shadow: 0 24px 80px rgba(0, 0, 0, 0.18);
}
/* Own sizing — must NOT inherit .logo / header logo rules */
.cookie-card .cookie-brand {
  width: 3.5rem;
  height: 3.5rem;
  max-width: 56px;
  max-height: 56px;
  margin: 0 auto 0.5rem;
  object-fit: contain;
  display: block;
}
.cookie-card h2 {
  margin: 0 0 1rem;
  text-align: center;
  font-family: var(--display);
  font-size: 1.75rem;
  font-weight: 700;
}
.cookie-copy {
  max-height: 150px;
  overflow: auto;
  padding: 0.85rem;
  border-radius: 0.5rem;
  background: #fff;
  box-shadow: inset 0 0 0 1px rgba(42, 31, 40, 0.06);
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--cookie-muted);
}
.cookie-copy p { margin: 0 0 0.5rem; }
.cookie-copy p:last-child { margin-bottom: 0; }
.cookie-links {
  display: flex;
  justify-content: center;
  gap: 1rem;
  margin: 0.85rem 0;
  font-size: 0.875rem;
}
.cookie-links a {
  text-decoration: underline;
  text-underline-offset: 2px;
}
.cookie-actions {
  display: grid;
  gap: 0.65rem;
}
@media (min-width: 640px) {
  .cookie-actions { grid-template-columns: 1fr 1fr; }
}
.cookie-actions .btn {
  width: 100%;
  padding-block: 0.9em;
  padding-inline: 1.1em;
}
.cookie-settings-btn {
  display: block;
  margin: 0.85rem auto 0;
  border: 0;
  background: none;
  color: var(--cookie-muted);
  cursor: pointer;
  font-size: 0.875rem;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.cookie-settings {
  display: grid;
  gap: 0.5rem;
  margin-top: 0.85rem;
  font-size: 0.875rem;
}
.cookie-settings[hidden] { display: none; }
.cookie-settings label {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.7rem 0.85rem;
  border-radius: 0.5rem;
  border: 1px solid var(--cookie-line);
  background: #fff;
}
.cookie-note {
  margin: 0.85rem 0 0;
  text-align: center;
  font-size: 0.75rem;
  color: rgba(92, 74, 86, 0.8);
}
.cookie-note a { text-decoration: none; }
.cookie-note a:hover { color: var(--accent); }
.cookie-reopen {
  position: fixed;
  left: 1rem;
  bottom: 1rem;
  z-index: 90;
  display: none;
  border: 0;
  border-radius: 999px;
  padding: 0.55rem 1rem;
  background: var(--accent);
  color: #fff;
  font-size: 0.875rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: 0 10px 28px color-mix(in srgb, var(--accent) 35%, transparent);
}
.cookie-reopen.is-on { display: inline-flex; }

.to-top {
  position: fixed;
  right: 1rem;
  bottom: 1.25rem;
  z-index: 90;
  width: 3rem;
  height: 3rem;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 999px;
  background: #111;
  color: #fff;
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  transform: translateY(0.75rem);
  transition: 0.3s ease;
}
.to-top.is-on {
  opacity: 1;
  pointer-events: auto;
  transform: none;
}

/* ---------- Reveal (sandrorenk: opacity + transform on ALL viewports) ---------- */
.js-ready .reveal {
  opacity: 0;
  transform: translate3d(0, 1.75rem, 0);
  transition:
    opacity 0.8s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}
.js-ready .reveal.is-in {
  opacity: 1;
  transform: none;
  will-change: auto;
}
.js-ready .reveal-delay-1 { transition-delay: 0.08s; }
.js-ready .reveal-delay-2 { transition-delay: 0.16s; }
/* FAQ items use same .is-in reveal — no ≤900px / coarse override that kills opacity motion */
.js-ready .faq details.faq-item {
  opacity: 0;
  transform: translate3d(0, 1.75rem, 0);
  transition:
    opacity 0.8s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
}
.js-ready .faq details.faq-item.is-in {
  opacity: 1;
  transform: none;
}

/* ---------- Firefox Mobile Tip (sandrorenk.com) ---------- */
.browser-tip {
  position: fixed;
  left: 12px;
  right: 12px;
  bottom: 72px;
  z-index: 950;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  max-width: 420px;
  margin-inline: auto;
  padding: 12px 12px 12px 14px;
  border-radius: 12px;
  background: rgba(18, 18, 18, 0.96);
  border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent);
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.35);
  color: rgba(255, 255, 255, 0.9);
  opacity: 0;
  transform: translate3d(0, 12px, 0);
  pointer-events: none;
  transition: opacity 0.3s ease, transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);
}
.browser-tip.is-on {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}
.browser-tip-text {
  margin: 0;
  flex: 1 1 auto;
  font-size: 13px;
  line-height: 1.4;
}
.browser-tip-close {
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  margin: -2px -2px 0 0;
  border: 0;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
  color: #fff;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  /* sandrorenk.com schaltet Shine, Reveal und Parallaxe hier nicht ab.
     Dieselben Android-Geräte melden reduce und bewegen dort trotzdem. */
  .mobile-nav { transition-duration: 0.2s !important; }
}

/*
 * Firefox Android: Font-Inflation ignoriert %-text-size-adjust.
 * Kritische Größen in px pinnen + Horizontal-Overflow verhindern.
 * Vorbild: sandrorenk.com / RS-ReDesign01
 */
@supports (-moz-appearance: none) {
  @media (max-width: 900px) {
    html,
    body,
    button,
    input,
    select,
    textarea {
      -moz-text-size-adjust: none !important;
      text-size-adjust: none !important;
    }
    html,
    body {
      overflow-x: clip;
    }
    body { font-size: 15px; }
    .hero h1 {
      font-size: 26px !important;
      max-width: 100%;
      line-height: 1.18;
    }
    .hero .lead,
    .section .lead {
      font-size: 15px !important;
    }
    .section h2 {
      font-size: 26px !important;
    }
    .eyebrow {
      font-size: 11px !important;
    }
    .btn {
      font-size: 0.84rem;
    }
    .wrap,
    .hero-grid {
      max-width: 100%;
      min-width: 0;
      box-sizing: border-box;
    }
  }
}

/* ========== Casa Calabria – Komponenten ========== */
.prose {
  max-width: 62ch;
}
.prose p + p,
.prose ul { margin-top: 1.25rem; }
.prose ul {
  padding-left: 1.2rem;
  list-style: disc;
}
.prose li { margin: 0.45rem 0; }
.prose strong { font-weight: 700; }

.section-intro {
  position: relative;
  background:
    radial-gradient(ellipse 48% 55% at 92% 18%, color-mix(in srgb, var(--accent) 11%, transparent), transparent 62%),
    linear-gradient(165deg, #fbf9f4 0%, var(--warm) 48%, color-mix(in srgb, var(--sand) 55%, white) 100%);
  overflow: hidden;
}
.section-intro::before {
  content: "";
  position: absolute;
  right: -12%;
  top: 12%;
  width: 38%;
  height: 70%;
  border-radius: 50%;
  background: color-mix(in srgb, var(--accent) 6%, transparent);
  pointer-events: none;
}
.intro-layout {
  position: relative;
  z-index: 1;
  display: grid;
  gap: clamp(2rem, 4vw, 3rem);
  align-items: center;
}
@media (min-width: 900px) {
  .intro-layout {
    grid-template-columns: 1.08fr 0.92fr;
    gap: clamp(40px, 5.5vw, 72px);
  }
}
.intro-copy h2 {
  max-width: 14ch;
}
.intro-copy .prose {
  margin-top: 1.35rem;
  max-width: 48ch;
}
.intro-copy .prose p {
  font-size: 1.02rem;
  line-height: 1.65;
}
.intro-copy .prose p + p {
  margin-top: 1.05rem;
}
.places-label {
  margin: 1.75rem 0 0.7rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
}
.intro-copy .places-band {
  margin-top: 0;
}
.intro-portrait {
  position: relative;
  margin: 0;
  justify-self: center;
  width: min(100%, 420px);
  border-radius: 22px;
  overflow: hidden;
  box-shadow:
    0 28px 64px rgba(42, 42, 36, 0.18),
    0 0 0 1px color-mix(in srgb, var(--accent) 16%, transparent);
}
@media (min-width: 900px) {
  .intro-portrait {
    justify-self: end;
    width: 100%;
    max-width: 460px;
  }
}
.intro-portrait img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: center 18%;
}
.places-band {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 10px;
  margin-top: 2rem;
}
.places-band span {
  display: inline-flex;
  padding: 0.35rem 0.75rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--accent) 12%, white);
  border: 1px solid color-mix(in srgb, var(--accent) 22%, transparent);
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--olive-deep);
}

.section-offer {
  background:
    radial-gradient(ellipse 55% 50% at 8% 0%, color-mix(in srgb, var(--accent) 9%, transparent), transparent 60%),
    linear-gradient(180deg, #fbf9f4 0%, var(--warm) 100%);
}
.section-properties {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--sand) 70%, white) 0%, var(--warm) 100%);
}
.section-life {
  background:
    radial-gradient(ellipse 48% 55% at 100% 0%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 58%),
    linear-gradient(180deg, color-mix(in srgb, var(--off) 65%, white) 0%, var(--warm) 100%);
}
.section-escape {
  padding-top: clamp(6rem, 12vw, 9.5rem);
  background:
    radial-gradient(ellipse 50% 40% at 0% 8%, color-mix(in srgb, var(--accent) 10%, transparent), transparent 58%),
    linear-gradient(180deg, #fbf9f4 0%, var(--warm) 45%, color-mix(in srgb, var(--sand) 50%, white) 100%);
}
/* Intro: full-width 2-col — dichter Text links, Karte rechts stretch */
.escape-top-cluster {
  width: 100%;
  max-width: 100%;
  margin-bottom: clamp(5rem, 9vw, 7.5rem);
}
.escape-intro {
  display: grid;
  grid-template-columns: minmax(0, 36ch) minmax(360px, 1fr);
  gap: 1rem;
  align-items: stretch;
  width: 100%;
}
.escape-intro-main {
  min-width: 0;
}
.escape-head {
  margin-bottom: 0.4rem;
}
.section-escape .escape-head .eyebrow {
  margin: 0 0 0.3rem;
}
.escape-head h2 {
  margin: 0;
  max-width: 18ch;
  line-height: 1.1;
}
.section-escape .escape-head h2 + .escape-kicker {
  margin: 0.35rem 0 0;
}
.escape-kicker {
  max-width: 24ch;
  font-family: var(--display);
  font-size: clamp(1.15rem, 2vw, 1.45rem);
  font-weight: 700;
  line-height: 1.18;
  letter-spacing: -0.025em;
  color: color-mix(in srgb, var(--ink, #2a2a24) 92%, var(--accent));
  border-left: 3px solid var(--accent);
  padding-left: 0.7rem;
}
.escape-copy--lede {
  margin: 2rem 0 0;
}
.escape-copy--lede p {
  margin: 0;
  color: var(--muted);
  font-size: clamp(0.98rem, 1.1vw, 1.04rem);
  line-height: 1.48;
  max-width: 36ch;
}
.section-escape .escape-copy--lede p + p {
  margin-top: 0.45rem;
}
.escape-map {
  position: relative;
  margin: 0;
  min-height: 0;
  align-self: stretch;
  border-radius: 14px;
  overflow: hidden;
  background: transparent;
  line-height: 0;
}
.escape-map img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 42% 48%;
  transform: scale(1.22);
  transform-origin: 42% 48%;
}
.section-escape .escape-sea.section-parallax {
  min-height: clamp(280px, 48vh, 520px);
  margin: 0;
  padding: 0;
}
/* Stories: gleiche Wrap-Breite & Rhythmus wie Intro (Klasse .wrap bleibt maßgeblich) */
.escape-stories {
  padding-top: clamp(2.5rem, 5vw, 4rem);
  display: grid;
  gap: clamp(2.75rem, 5vw, 4rem);
}
.escape-block--climate {
  width: 100%;
  max-width: 100%;
}
.escape-block h3,
.escape-copy h3 {
  font-family: var(--display);
  font-size: clamp(1.28rem, 2.2vw, 1.6rem);
  line-height: 1.2;
  letter-spacing: -0.02em;
  margin: 0 0 0.75rem;
  max-width: 18ch;
}
.escape-block--climate h3 {
  margin-bottom: 0.9rem;
  max-width: none;
  width: 100%;
}
.escape-block--climate .escape-block-prose {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.35rem;
  width: 100%;
}
.escape-block-prose p,
.escape-copy p {
  color: var(--muted);
  font-size: clamp(0.98rem, 1.1vw, 1.04rem);
  line-height: 1.5;
  max-width: none;
  margin: 0;
}
.escape-block-prose p + p,
.escape-copy p + p {
  margin-top: 0.45rem;
}
.escape-block--climate .escape-block-prose p + p {
  margin-top: 0;
}
@media (max-width: 799px) {
  .escape-block--climate .escape-block-prose {
    grid-template-columns: 1fr;
    gap: 0.75rem;
  }
}
/* Split: gleiches 2-col-System wie .escape-intro */
.escape-block--split {
  display: grid;
  grid-template-columns: minmax(0, 36ch) minmax(360px, 1fr);
  gap: 1rem;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
}
.escape-block--split > .escape-copy {
  min-width: 0;
}
.escape-block--split > .escape-shot {
  position: relative;
  width: 100%;
  min-height: 0;
  align-self: stretch;
  margin: 0;
  border-radius: 14px;
  overflow: hidden;
  background: transparent;
  line-height: 0;
}
.escape-block--flip {
  grid-template-columns: minmax(360px, 1fr) minmax(0, 36ch);
}
.escape-block--flip > .escape-shot {
  grid-column: 1;
  grid-row: 1;
}
.escape-block--flip > .escape-copy {
  grid-column: 2;
  grid-row: 1;
}
.escape-shot {
  margin: 0;
  border-radius: 14px;
  overflow: hidden;
  background: transparent;
  line-height: 0;
}
.escape-block--split > .escape-shot img,
.escape-shot--tall img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 28%;
}
.escape-block--duo {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  width: 100%;
  max-width: 100%;
  align-items: start;
}
.escape-duo-item {
  display: grid;
  gap: 0.9rem;
  min-width: 0;
  align-content: start;
}
.escape-duo-item .escape-shot {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 3;
  background: transparent;
}
.escape-duo-item .escape-shot img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
/* Abschluss-Zitat: zentriert, Typwriter */
.escape-closing {
  margin: clamp(3.5rem, 8vw, 6.5rem) 0 clamp(4rem, 9vw, 7.5rem);
  padding: 0;
  display: flex;
  justify-content: center;
  text-align: center;
}
.escape-quote {
  margin: 0;
  max-width: 36ch;
  padding-top: 1.35rem;
  border-top: 2px solid color-mix(in srgb, var(--accent) 55%, transparent);
}
.escape-quote-text {
  margin: 0;
  font-family: var(--display);
  font-size: clamp(1.2rem, 2.4vw, 1.55rem);
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: -0.02em;
  color: color-mix(in srgb, var(--ink, #2a2a24) 92%, var(--accent));
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}
/* Typewriter caret — nur am Textknoten */
[data-typewriter].is-typing::after,
[data-typewriter-target].is-typing::after {
  content: "";
  display: inline-block;
  width: 0.08em;
  height: 0.95em;
  margin-left: 0.1em;
  vertical-align: -0.08em;
  background: currentColor;
  animation: typewriter-caret 0.85s steps(1) infinite;
}
[data-typewriter].is-done::after,
[data-typewriter-target].is-done::after {
  display: none;
}
@keyframes typewriter-caret {
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  [data-typewriter].is-typing::after,
  [data-typewriter-target].is-typing::after {
    display: none;
    animation: none;
  }
}
@media (max-width: 799px) {
  .escape-intro {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
  .escape-intro-main {
    max-width: none;
  }
  .escape-map {
    width: 100%;
    aspect-ratio: 4 / 3;
    justify-self: stretch;
  }
  .escape-block--split,
  .escape-block--flip {
    grid-template-columns: 1fr;
  }
  .escape-block--flip > .escape-shot,
  .escape-block--flip > .escape-copy {
    grid-column: auto;
    grid-row: auto;
  }
  .escape-block--split > .escape-shot {
    width: 100%;
    aspect-ratio: 4 / 3;
  }
  .escape-block--duo {
    grid-template-columns: 1fr;
  }
}
.section-head {
  max-width: 28ch;
  margin-bottom: 0.25rem;
}
.section-head h2 {
  margin-top: 0;
}
.prose--narrow {
  max-width: 58ch;
}
.pillar-grid {
  display: grid;
  gap: 28px;
  margin-top: 2.75rem;
}
@media (min-width: 800px) {
  .pillar-grid { grid-template-columns: repeat(3, 1fr); }
  .pillar-grid--visual { gap: 32px; }
  .pillar-grid--topics { gap: 0; }
}
.pillar {
  padding: 0;
  background: transparent;
}
.pillar-media {
  border-radius: 16px;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  margin-bottom: 1.25rem;
  box-shadow: 0 18px 40px rgba(42, 42, 36, 0.12);
}
.pillar-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
}
.pillar:hover .pillar-media img { transform: scale(1.05); }
.pillar h3,
.pillar h4 {
  font-family: var(--display);
  font-size: 1.25rem;
  margin-bottom: 0.85rem;
}
.pillar p { color: var(--muted); font-size: 0.98rem; }
.pillar-link {
  margin-top: 0.85rem !important;
}
.pillar-link a {
  color: var(--accent);
  font-weight: 700;
  text-decoration: none;
  transition: color 0.2s ease;
}
.pillar-link a:hover {
  color: var(--accent-hover);
}
.pillar--topic {
  padding: 0 0 1.5rem;
  border-bottom: 1px solid color-mix(in srgb, var(--taupe) 40%, transparent);
}
@media (min-width: 800px) {
  .pillar--topic {
    padding: 0 1.75rem;
    border-bottom: 0;
    border-right: 1px solid color-mix(in srgb, var(--taupe) 40%, transparent);
  }
  .pillar--topic:first-child { padding-left: 0; }
  .pillar--topic:last-child {
    padding-right: 0;
    border-right: 0;
  }
}
.pillar--topic h3 {
  font-size: clamp(1.2rem, 2vw, 1.4rem);
  margin-bottom: 0.95rem;
}

/* Leben: Dolce Vita + Neustart — equal editorial stories, alternating sides */
.leben-story-section:has(+ .leben-story-section) {
  padding-bottom: clamp(2.25rem, 4.5vw, 3.25rem);
}
.leben-story-section + .leben-story-section {
  padding-top: clamp(2.25rem, 4.5vw, 3.25rem);
}
.leben-story {
  display: grid;
  gap: 1.75rem;
  align-items: center;
}
.leben-story__media {
  margin: 0;
  border-radius: 16px;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  box-shadow: 0 22px 48px rgba(42, 42, 36, 0.14);
  background: color-mix(in srgb, var(--sand) 55%, #fff);
}
.leben-story__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.85s cubic-bezier(0.22, 1, 0.36, 1);
}
.leben-story:hover .leben-story__media img {
  transform: scale(1.03);
}
.leben-story__copy {
  min-width: 0;
}
.leben-story__copy h2 {
  margin-bottom: 1rem;
  max-width: 18ch;
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}
.leben-story__copy .prose {
  max-width: 40rem;
}
.leben-story__copy .prose p {
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
  overflow-wrap: normal;
  word-break: normal;
}
.leben-story__cta {
  margin: 1.5rem 0 0;
}
@media (min-width: 900px) {
  .leben-story {
    grid-template-columns: 1.12fr 0.88fr;
    gap: clamp(2.5rem, 4vw, 3.75rem);
  }
  .leben-story--flip {
    grid-template-columns: 0.88fr 1.12fr;
  }
  .leben-story--flip > .leben-story__media {
    order: 2;
  }
  .leben-story__media {
    aspect-ratio: 5 / 4;
    min-height: 360px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .leben-story:hover .leben-story__media img {
    transform: none;
  }
}

/* Leben: equal three-column reasons (image + copy under each) */
.reasons-grid {
  display: grid;
  gap: 2.25rem;
  margin-top: 2.75rem;
}
@media (min-width: 800px) {
  .reasons-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 2.5rem;
  }
}
.reasons-index {
  margin: 0 0 0.35rem;
  font-family: var(--display);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--accent);
}
.reasons-item {
  padding: 0;
  background: transparent;
}
.reasons-item__media {
  margin: 0 0 1.15rem;
  border-radius: 14px;
  overflow: hidden;
  aspect-ratio: 4 / 3;
}
.reasons-item__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
}
.reasons-item:hover .reasons-item__media img {
  transform: scale(1.04);
}
.reasons-item h3 {
  font-family: var(--display);
  font-size: 1.28rem;
  margin: 0.25rem 0 0.75rem;
}
.reasons-item > p:not(.reasons-index) {
  color: var(--muted);
  font-size: 0.98rem;
  line-height: 1.6;
  margin: 0;
  max-width: 38ch;
}

/* Leben: Familie | Ruhestand — equal two-column (image on top) */
.themes-grid {
  display: grid;
  gap: 2.25rem;
}
@media (min-width: 800px) {
  .themes-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 2.75rem;
  }
}
.themes-item {
  padding: 0;
  background: transparent;
  min-width: 0;
}
.themes-item__media {
  margin: 0 0 1.15rem;
  border-radius: 16px;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  box-shadow: 0 22px 48px rgba(42, 42, 36, 0.14);
  background: color-mix(in srgb, var(--sand) 55%, #fff);
}
.themes-item__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.85s cubic-bezier(0.22, 1, 0.36, 1);
}
.themes-item:hover .themes-item__media img {
  transform: scale(1.03);
}
.themes-item .eyebrow {
  margin: 0 0 0.35rem;
}
.themes-item h3 {
  font-family: var(--display);
  font-size: clamp(1.35rem, 2.2vw, 1.65rem);
  margin: 0.15rem 0 0.85rem;
  max-width: 22ch;
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}
.themes-item .prose {
  max-width: 42ch;
}
.themes-item .prose p {
  color: var(--muted);
  font-size: 0.98rem;
  line-height: 1.65;
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}
@media (prefers-reduced-motion: reduce) {
  .themes-item:hover .themes-item__media img {
    transform: none;
  }
}

.split {
  display: grid;
  gap: 28px;
  align-items: center;
}
#auszeit-teaser .split + .split {
  margin-top: 3rem;
}
#auszeit-teaser .split--intro {
  margin-top: 2rem;
}
@media (min-width: 900px) {
  .split { grid-template-columns: 1.05fr 0.95fr; gap: 48px; }
  .split--flip > :first-child { order: 2; }
  #auszeit-teaser .split + .split {
    margin-top: 4.75rem;
  }
  #auszeit-teaser .split--intro {
    margin-top: 2.75rem;
  }
}
.split-media {
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 24px 50px rgba(42, 42, 36, 0.14);
}
.split-media img {
  width: 100%;
  height: 100%;
  min-height: 280px;
  object-fit: cover;
}
/* Compact media column for text-heavy split sections */
@media (min-width: 900px) {
  .split--media-sm {
    grid-template-columns: minmax(0, 1fr) clamp(320px, 30vw, 380px);
  }
  .split--media-sm.split--flip {
    grid-template-columns: clamp(320px, 30vw, 380px) minmax(0, 1fr);
  }
}
.split--media-sm .split-media img {
  min-height: 0;
  aspect-ratio: 4 / 5;
}
/* Editorial duo: text + media, shrink-wrap, clear gutter */
.editorial-duo {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 2.25rem;
  width: fit-content;
  max-width: 100%;
  justify-content: flex-start;
}
.editorial-duo--center {
  align-items: center;
}
.editorial-duo__copy {
  flex: 0 1 min(38rem, 100%);
  min-width: min(100%, 16rem);
}
.editorial-duo__copy .prose {
  max-width: none;
}
.editorial-duo__media {
  flex: 0 0 clamp(320px, 28vw, 380px);
  width: clamp(320px, 28vw, 380px);
  max-width: 100%;
  margin: 0;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 14px 32px rgba(42, 42, 36, 0.12);
}
.editorial-duo__media img {
  display: block;
  width: 100%;
  height: auto;
  min-height: 0;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}
/* Residenz Anmeldung: larger media, vertically centered to tall req-list */
#wohnsitz .editorial-duo {
  align-items: center;
}
#wohnsitz .editorial-duo__media {
  flex: 0 0 clamp(340px, 32vw, 400px);
  width: clamp(340px, 32vw, 400px);
}
#balance .editorial-duo__media {
  flex: 0 0 clamp(340px, 32vw, 400px);
  width: clamp(340px, 32vw, 400px);
}
@media (max-width: 699px) {
  .editorial-duo {
    gap: 1.5rem;
  }
  .editorial-duo__media {
    flex: 0 1 auto;
    width: min(380px, 100%);
  }
  #wohnsitz .editorial-duo__media {
    width: min(400px, 100%);
  }
}
.split-media--map {
  box-shadow:
    0 24px 50px rgba(42, 42, 36, 0.12),
    0 0 0 1px color-mix(in srgb, var(--accent) 14%, transparent);
  background: #fff;
}
.split-media--map img {
  object-fit: contain;
  background: #fff;
  min-height: 240px;
  padding: 1.35rem 1.25rem;
}

.img-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  min-height: 280px;
  width: 100%;
  height: 100%;
  padding: 1.5rem;
  text-align: center;
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--accent) 12%, var(--sand)) 0%, var(--warm) 55%, color-mix(in srgb, var(--olive-deep) 8%, white) 100%);
  border: 1px dashed color-mix(in srgb, var(--accent) 45%, transparent);
  color: var(--ink);
}
.img-placeholder strong {
  font-family: var(--display);
  font-size: 0.95rem;
  letter-spacing: 0.02em;
}
.img-placeholder span {
  max-width: 28ch;
  font-size: 0.88rem;
  line-height: 1.45;
  color: var(--muted);
}
.property-media .img-placeholder,
.pillar-media .img-placeholder {
  min-height: 0;
  aspect-ratio: 4 / 3;
}
.hero-bg--placeholder {
  background-image: none !important;
  background-color: #3a4528;
  background-image:
    radial-gradient(ellipse 70% 60% at 70% 40%, color-mix(in srgb, var(--accent) 45%, transparent), transparent 60%),
    linear-gradient(160deg, #2f3820 0%, #5a6b32 45%, #8a9a55 100%) !important;
}

.cta-band {
  position: relative;
  overflow: hidden;
  border-radius: 18px;
  padding: clamp(28px, 5vw, 44px);
  background:
    radial-gradient(ellipse 60% 80% at 100% 0%, color-mix(in srgb, var(--accent) 35%, transparent), transparent 55%),
    var(--olive-deep);
  color: #fff;
  box-shadow: 0 22px 50px rgba(42, 50, 24, 0.22);
}
.cta-band--with-photo {
  display: grid;
  gap: 1.5rem;
  align-items: center;
  padding: 0;
}
.cta-band--with-photo .cta-band-copy {
  padding: clamp(28px, 5vw, 44px);
  padding-bottom: clamp(24px, 4vw, 36px);
}
.cta-band--with-photo .cta-band-photo {
  position: relative;
  min-height: 240px;
  overflow: hidden;
}
.cta-band--with-photo .cta-band-photo img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 260px;
  object-fit: cover;
  object-position: center 18%;
}
.cta-band--with-photo .cta-band-copy p + p {
  margin-top: 0.85rem;
}
.cta-band--with-photo .cta-band-copy .btn {
  margin-top: 1.75rem;
}
@media (min-width: 860px) {
  .cta-band--with-photo {
    grid-template-columns: 1.15fr 0.85fr;
    gap: 0;
    min-height: 340px;
  }
  .cta-band--with-photo .cta-band-copy {
    padding: clamp(32px, 4.5vw, 48px);
  }
  .cta-band--with-photo .cta-band-photo {
    align-self: stretch;
    min-height: 100%;
  }
  .cta-band--with-photo .cta-band-photo img {
    position: absolute;
    inset: 0;
    min-height: 0;
  }
}
/* Parallax bands — bleed + overflow:hidden required; see docs/MOTION-CANON.md */
.section-parallax,
.section-cta-photo {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: #1a2430;
}
.section.section-parallax,
.section-parallax {
  padding: 0;
  /* Etwas höher: mehr Scroll-Strecke = sichtbarer Parallax (Desktop + Mobile) */
  min-height: clamp(300px, 62vh, 680px);
}
/* Auszeit-Meer: eigenes Band-Maß (nicht die Content-Bühne von früher) */
.section-escape .escape-sea.section-parallax {
  min-height: clamp(280px, 48vh, 520px);
  padding: 0;
}
.section-cta-photo {
  padding-block: clamp(64px, 10vw, 112px);
}
.parallax-bg,
.cta-photo-bg {
  position: absolute;
  left: -10%;
  right: -10%;
  /* Großzügiger Bleed: Stick-Math braucht Höhe > Band, sonst kein sichtbarer Travel */
  top: -70%;
  width: 120%;
  height: 240%;
  z-index: 0;
  background-size: cover;
  background-position: center 42%;
  background-repeat: no-repeat;
  will-change: transform;
  transform: translate3d(0, 0, 0) scale(1.14);
  transform-origin: center center;
  pointer-events: none;
}
/* img-Variante: zuverlässigeres Compositing auf iOS/Android als nur background-image */
.parallax-bg > img,
.cta-photo-bg > img {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center 42%;
  pointer-events: none;
  -webkit-user-select: none;
  user-select: none;
}
@media (max-width: 900px) {
  .section.section-parallax,
  .section-parallax {
    min-height: clamp(340px, 68vh, 640px);
  }
  .section-escape .escape-sea.section-parallax {
    min-height: clamp(300px, 58vh, 560px);
  }
  /* Desktop bleed only. Under 1100px JS uses .parallax-fixed-layer instead. */
  .parallax-bg,
  .cta-photo-bg {
    left: -18%;
    right: -18%;
    top: -90%;
    width: 136%;
    height: 280%;
  }
}
/* Phone/tablet stick — literal sandrorenk .parallax-fixed-layer (background-image, not a transformed img) */
.parallax-fixed-layer {
  display: none;
}
@media (max-width: 1100px) {
  .section-parallax,
  .section-cta-photo,
  .parallax-band {
    overflow: hidden;
  }
  .has-fixed-layer > .parallax-fixed-layer.is-on {
    display: block;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    z-index: 0;
    pointer-events: none;
    will-change: transform;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center center;
  }
  .has-fixed-layer > .parallax-bg {
    visibility: hidden;
  }
}
.parallax-veil {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(28, 32, 20, 0.18) 0%, rgba(28, 32, 20, 0.08) 45%, rgba(28, 32, 20, 0.28) 100%);
}
.section-cta-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(20, 28, 22, 0.28) 0%, rgba(20, 28, 22, 0.12) 45%, rgba(20, 28, 22, 0.35) 100%);
}
.section-cta-photo .wrap {
  position: relative;
  z-index: 2;
  display: flex;
  justify-content: center;
}
.cta-band--glass {
  background: rgba(255, 255, 255, 0.14);
  backdrop-filter: blur(14px) saturate(1.15);
  -webkit-backdrop-filter: blur(14px) saturate(1.15);
  border: 1px solid rgba(255, 255, 255, 0.38);
  box-shadow:
    0 18px 48px rgba(16, 24, 20, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.28);
  color: #fff;
}
.cta-band--glass.cta-band--with-photo {
  background: rgba(255, 255, 255, 0.12);
}
.cta-band--glass .cta-band-photo {
  isolation: isolate;
}
.cta-band--glass .cta-band-photo::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 28%;
  z-index: 2;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0.1), transparent);
  pointer-events: none;
}
.cta-band--glass .cta-band-photo img {
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 18%, #000 100%);
  mask-image: linear-gradient(90deg, transparent 0%, #000 18%, #000 100%);
}
.cta-band--glass-portrait {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 1.5rem;
  width: fit-content;
  max-width: min(100%, 720px);
  margin-inline: auto;
  padding: 1.85rem 2rem;
  background: rgba(255, 255, 255, 0.18);
}
.cta-band--glass-portrait .cta-band-copy {
  padding: 0.25rem 0;
  min-width: 0;
  flex: 0 1 auto;
  max-width: 22rem;
}
.cta-band--glass-portrait .cta-band-copy h2 {
  max-width: 15ch;
  font-size: clamp(1.5rem, 2.5vw, 1.95rem);
  line-height: 1.2;
}
.cta-band--glass-portrait .cta-band-copy p {
  margin-top: 0.9rem;
  max-width: none;
  font-size: 1.05rem;
  line-height: 1.55;
}
.cta-band--glass-portrait .cta-band-copy .btn {
  margin-top: 1.25rem;
}
.cta-band--glass-portrait .cta-band-photo {
  position: relative;
  flex: 0 0 auto;
  width: 200px;
  margin: 0;
  border-radius: 16px;
  overflow: hidden;
  box-shadow:
    0 14px 32px rgba(16, 24, 20, 0.32),
    0 0 0 1px rgba(255, 255, 255, 0.3);
}
.cta-band--glass-portrait .cta-band-photo::before {
  display: none;
}
.cta-band--glass-portrait .cta-band-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 5;
  height: auto;
  min-height: 0;
  object-fit: cover;
  object-position: center 15%;
  -webkit-mask-image: none;
  mask-image: none;
}
@media (min-width: 640px) {
  .cta-band--glass-portrait {
    flex-wrap: nowrap;
    padding: 2.1rem 2.25rem;
    gap: 1.65rem;
  }
  .cta-band--glass-portrait .cta-band-photo {
    width: 228px;
  }
  .cta-band--glass-portrait .cta-band-copy {
    max-width: 24rem;
  }
}
.cta-band--glass h2,
.cta-band--glass h3 {
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.25);
}
.cta-band--glass p {
  color: rgba(255, 255, 255, 0.9);
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.2);
}
@supports (-moz-appearance: none) {
  .cta-band--glass {
    background: rgba(32, 42, 28, 0.55);
  }
  .cta-band--glass.cta-band--with-photo,
  .cta-band--glass-portrait {
    background: rgba(32, 42, 28, 0.52);
  }
}
.cta-band h2,
.cta-band h3 {
  font-family: var(--display);
  font-size: clamp(1.45rem, 2.6vw, 2rem);
  line-height: 1.2;
  max-width: 22ch;
}
.cta-band p {
  margin-top: 1.15rem;
  max-width: 48ch;
  color: rgba(255, 255, 255, 0.82);
}
.cta-band .btn { margin-top: 1.5rem; }
.cta-meta {
  margin-top: 0.85rem;
  font-size: 0.9rem;
  color: rgba(255, 255, 255, 0.7);
}

.property-grid {
  display: grid;
  gap: 28px;
  margin-top: 2.25rem;
}
.property-grid--editorial {
  margin-top: 2.75rem;
  gap: 32px;
}
@media (min-width: 800px) {
  .property-grid { grid-template-columns: repeat(3, 1fr); }
  .property-grid--editorial { gap: 36px; }
  .property-grid--editorial:has(> :nth-child(4)) {
    grid-template-columns: repeat(2, 1fr);
  }
}
.property {
  display: grid;
  gap: 12px;
}
.property-media {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: var(--sand);
  box-shadow: 0 20px 44px rgba(42, 42, 36, 0.12);
}
.property-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 55%, rgba(20, 24, 14, 0.22));
  opacity: 0;
  transition: opacity 0.45s ease;
  pointer-events: none;
}
.property:hover .property-media::after { opacity: 1; }
.property-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.85s cubic-bezier(0.22, 1, 0.36, 1);
}
.property:hover .property-media img { transform: scale(1.05); }
.property-price {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(2.35rem, 5vw, 3.35rem) !important;
  line-height: 1.05;
  letter-spacing: -0.035em;
  color: var(--accent) !important;
  margin: 0.55rem 0 0.15rem;
}
.property-price--sold {
  font-size: clamp(1.35rem, 2.6vw, 1.85rem) !important;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--taupe) !important;
}
.property h3 {
  font-family: var(--display);
  font-size: 1.12rem;
  margin: 0.35rem 0 0.5rem;
}
.property p:not(.property-price) {
  color: var(--muted);
  font-size: 0.92rem;
}
.property .btn { margin-top: 0.75rem; width: fit-content; }
.section-cta-center {
  display: flex;
  justify-content: center;
  margin-top: 2.75rem;
  text-align: center;
}
@media (min-width: 900px) {
  .section-cta-center {
    margin-top: 4.75rem;
  }
}

.section-quotes {
  background: linear-gradient(180deg, var(--warm) 0%, #fbf9f4 100%);
}
.quote-grid {
  display: grid;
  gap: 22px;
  margin-top: 2.5rem;
}
@media (min-width: 900px) {
  .quote-grid { grid-template-columns: repeat(3, 1fr); gap: 26px; }
}
.quote {
  padding: 1.5rem 1.45rem 1.55rem;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.62);
  border: 1px solid color-mix(in srgb, var(--taupe) 38%, transparent);
  box-shadow: 0 12px 32px rgba(42, 42, 36, 0.06);
}
.quote p {
  font-family: var(--display);
  font-size: 1.02rem;
  color: var(--ink);
  line-height: 1.55;
  letter-spacing: -0.01em;
}
.quote footer {
  margin-top: 1.15rem;
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--accent-hover);
}

.specialty-grid {
  display: grid;
  gap: 22px;
  margin-top: 2.5rem;
}
@media (min-width: 800px) {
  .specialty-grid { grid-template-columns: repeat(3, 1fr); gap: 26px; }
}
.specialty {
  overflow: hidden;
  border-radius: 16px;
  background: #fff;
  border: 1px solid var(--line);
  box-shadow: 0 14px 34px rgba(42, 42, 36, 0.07);
  transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.45s ease;
}
.specialty:hover {
  transform: translateY(-3px);
  box-shadow: 0 20px 44px rgba(42, 42, 36, 0.11);
}
.specialty img {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  transition: transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
}
.specialty:hover img { transform: scale(1.04); }
.specialty-body { padding: 1.3rem 1.25rem 1.45rem; }
.specialty h3 {
  font-family: var(--display);
  font-size: 1.12rem;
  margin-bottom: 0.75rem;
}
.specialty ul {
  padding-left: 1.1rem;
  list-style: disc;
  color: var(--muted);
  font-size: 0.92rem;
}

.eyebrow--faq {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin: 0 0 1.25rem !important;
  padding: 0.45rem 1rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--accent) 14%, #fff);
  border: 1px solid color-mix(in srgb, var(--accent) 38%, transparent);
  color: var(--accent-hover);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  box-shadow: 0 8px 22px color-mix(in srgb, var(--accent) 16%, transparent);
}
.eyebrow--faq::before {
  content: "";
  display: inline-block;
  flex: 0 0 auto;
  width: 0.42rem;
  height: 0.42rem;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent);
}

.faq-block {
  width: min(720px, 100%);
  margin-inline: auto;
  text-align: left;
}
.faq-block > .eyebrow--faq {
  display: inline-flex;
  width: fit-content;
  margin-inline: auto !important;
}
.faq-block > h2 {
  text-align: center;
  margin-inline: auto;
  max-width: 18ch;
}

.faq {
  margin-top: 2rem;
  display: grid;
  gap: 12px;
}
.faq details {
  border-radius: 14px;
  border: 1px solid color-mix(in srgb, var(--taupe) 40%, transparent);
  background: rgba(255, 255, 255, 0.82);
  padding: 0 1.15rem;
  box-shadow: 0 10px 28px rgba(42, 42, 36, 0.06);
  transition:
    border-color 0.3s ease,
    box-shadow 0.35s ease,
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    background 0.3s ease;
  overflow: hidden;
}
.faq details:hover {
  border-color: color-mix(in srgb, var(--accent) 35%, transparent);
  box-shadow: 0 14px 34px rgba(42, 50, 24, 0.1);
}
.faq details.is-open,
.faq details[open] {
  border-color: color-mix(in srgb, var(--accent) 48%, transparent);
  background: #fff;
  box-shadow: 0 16px 40px rgba(113, 138, 24, 0.14);
}
.faq summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.15rem 0;
  font-family: var(--display);
  font-weight: 700;
  font-size: 1.02rem;
  line-height: 1.35;
  color: var(--ink);
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "";
  flex: 0 0 auto;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 50%;
  background:
    linear-gradient(var(--accent), var(--accent)) center / 0.7rem 2px no-repeat,
    linear-gradient(var(--accent), var(--accent)) center / 2px 0.7rem no-repeat,
    color-mix(in srgb, var(--accent) 12%, #fff);
  border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent);
  transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1), background-color 0.25s ease;
}
.faq details.is-open summary::after,
.faq details[open] summary::after {
  transform: rotate(45deg);
  background-color: color-mix(in srgb, var(--accent) 18%, #fff);
}
.faq-panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}
.faq details.is-open .faq-panel {
  grid-template-rows: 1fr;
}
.faq-panel-inner {
  overflow: hidden;
  min-height: 0;
  opacity: 0;
  transform: translate3d(0, -0.65rem, 0);
  transition:
    opacity 0.4s ease,
    transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.faq details.is-open .faq-panel-inner {
  opacity: 1;
  transform: none;
  transition-delay: 0.08s;
}
.faq-panel-inner > *:first-child { margin-top: 0; }
.faq details p,
.faq-panel-inner p {
  padding: 0 0 1.2rem;
  color: var(--muted);
  line-height: 1.65;
}
.js-ready .faq details.faq-item {
  opacity: 0;
  transform: translate3d(0, 1.1rem, 0);
  transition:
    opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.7s cubic-bezier(0.22, 1, 0.36, 1),
    border-color 0.3s ease,
    box-shadow 0.35s ease,
    background 0.3s ease;
}
.js-ready .faq details.faq-item.is-in {
  opacity: 1;
  transform: none;
}
.js-ready .faq details.faq-item:nth-child(1) { transition-delay: 0.02s; }
.js-ready .faq details.faq-item:nth-child(2) { transition-delay: 0.08s; }
.js-ready .faq details.faq-item:nth-child(3) { transition-delay: 0.14s; }
.js-ready .faq details.faq-item:nth-child(4) { transition-delay: 0.2s; }
.js-ready .faq details.faq-item:nth-child(5) { transition-delay: 0.26s; }
.js-ready .faq details.faq-item:nth-child(6) { transition-delay: 0.32s; }
.js-ready .faq details.faq-item:nth-child(7) { transition-delay: 0.38s; }
.js-ready .faq details.faq-item:nth-child(8) { transition-delay: 0.44s; }

.page-hero {
  position: relative;
  min-height: 58vh;
  display: flex;
  align-items: flex-end;
  padding: calc(var(--header-offset) + var(--header-h) + 56px) 0 70px;
  color: #fff;
  overflow: hidden;
  background: var(--olive-deep);
}
.page-hero--cinematic {
  min-height: min(78vh, 820px);
  padding: calc(var(--header-offset) + var(--header-h) + 66px) 0 88px;
}
.page-hero .hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  /* JS cinema owns transform (sandrorenk) */
  transform: translate3d(0, 0, 0) scale(1.12);
  will-change: transform;
}
.page-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(28,31,20,.22), rgba(28,31,20,.78));
}
.page-hero .wrap { position: relative; z-index: 1; max-width: 720px; }
.page-hero .hero-brand--page {
  width: min(200px, 58vw);
  margin-bottom: 1.1rem;
}
.page-hero .eyebrow {
  color: rgba(255, 255, 255, 0.75);
}
.page-hero h1,
.page-hero .hero-title {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(2.15rem, 4.4vw, 3.35rem);
  line-height: 1.1;
  max-width: 14em;
  color: #fff;
  letter-spacing: -0.025em;
  text-shadow: 0 2px 24px rgba(0, 0, 0, 0.4);
}
.page-hero .hero-title-line {
  display: block;
}
.page-hero .lead {
  margin-top: 14px;
  max-width: 42ch;
  color: rgba(255,255,255,.86);
}
.page-hero [data-hero-stagger] > .hero-actions {
  margin-top: 1.35rem;
}
.caution-grid {
  display: grid;
  gap: 14px;
  margin-top: 2rem;
}
@media (min-width: 700px) {
  .caution-grid { grid-template-columns: repeat(4, 1fr); gap: 16px; }
}
.caution-item {
  padding: 1.15rem 1.2rem;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.72);
  border: 1px solid color-mix(in srgb, var(--accent) 18%, var(--line));
  box-shadow: 0 12px 28px rgba(42, 42, 36, 0.06);
}
.caution-item strong {
  display: block;
  font-family: var(--display);
  font-size: 1.05rem;
  margin-bottom: 0.35rem;
  color: var(--ink);
}
.caution-item span {
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.4;
}
.caution-note {
  margin-top: 1.5rem;
  max-width: 42ch;
  font-size: 1.05rem;
}

.stat-row {
  display: grid;
  gap: 16px;
  margin-top: 2.25rem;
}
.stat-row--wow {
  margin-top: 3rem;
  gap: 18px;
}
@media (min-width: 700px) {
  .stat-row { grid-template-columns: repeat(3, 1fr); }
  .stat-row--wow { gap: 22px; }
}
.stat {
  padding: 1.2rem 1.25rem;
  border-radius: 14px;
  background: rgba(255,255,255,.55);
  border: 1px solid var(--line);
}
.stat-row--wow .stat {
  padding: 1.55rem 1.4rem 1.45rem;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.72);
  border: 1px solid color-mix(in srgb, var(--accent) 16%, var(--line));
  box-shadow: 0 16px 36px rgba(42, 42, 36, 0.07);
  text-align: center;
}
.stat strong {
  display: block;
  font-family: var(--display);
  font-size: clamp(1.6rem, 3vw, 2.1rem);
  color: var(--accent);
  line-height: 1.1;
}
.stat-row--wow .stat strong {
  font-size: clamp(2.2rem, 4.2vw, 3.1rem);
  letter-spacing: -0.03em;
  margin-bottom: 0.35rem;
}
.stat span { color: var(--muted); font-size: 0.92rem; }
.stat-row--wow .stat span {
  font-size: 0.9rem;
  font-weight: 600;
}

.about-portrait {
  border-radius: 18px;
  overflow: hidden;
  max-width: 420px;
  box-shadow: 0 24px 50px rgba(42,42,36,.16);
}
.about-portrait img {
  width: 100%;
  display: block;
  object-fit: cover;
}

.section-about {
  position: relative;
  background:
    radial-gradient(ellipse 55% 70% at 100% 20%, color-mix(in srgb, var(--accent) 10%, transparent), transparent 60%),
    linear-gradient(180deg, var(--warm) 0%, var(--sand) 100%);
  overflow: hidden;
}
.section-about::before {
  content: "";
  position: absolute;
  left: -8%;
  bottom: -18%;
  width: 42%;
  height: 55%;
  border-radius: 50%;
  background: color-mix(in srgb, var(--accent) 8%, transparent);
  pointer-events: none;
}
.about-layout {
  position: relative;
  z-index: 1;
  display: grid;
  gap: 2rem;
  align-items: center;
}
@media (min-width: 900px) {
  .about-layout {
    grid-template-columns: 1.05fr 0.95fr;
    gap: clamp(36px, 5vw, 64px);
  }
}
.about-copy h2 {
  max-width: 16ch;
}
.about-hello {
  margin-top: 1.35rem;
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(1.35rem, 2.4vw, 1.75rem);
  color: var(--accent);
  letter-spacing: -0.02em;
}
.about-copy .prose {
  margin-top: 1.15rem;
  max-width: 52ch;
}
.about-bridge {
  margin: 1.75rem 0 0.85rem;
  max-width: 28ch;
  font-family: var(--display);
  font-size: clamp(1.02rem, 1.5vw, 1.12rem);
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: -0.015em;
  color: color-mix(in srgb, var(--accent) 72%, var(--ink, #2a2a24));
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}
.about-cta {
  margin-top: 0;
}
.about-copy .prose + .about-cta {
  margin-top: 1.75rem;
}
.about-cta .btn {
  padding: 0.72em 1.15em;
}
.about-copy .prose p + p {
  margin-top: 1.1rem;
}
.about-portrait {
  position: relative;
  margin: 0;
  max-width: 460px;
  justify-self: center;
  border-radius: 22px;
  overflow: hidden;
  box-shadow:
    0 28px 60px rgba(42, 42, 36, 0.18),
    0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent);
}
@media (min-width: 900px) {
  .about-portrait {
    justify-self: end;
    width: 100%;
  }
}
.about-portrait::before {
  content: "";
  position: absolute;
  inset: 14px;
  border: 1px solid rgba(255, 255, 255, 0.45);
  border-radius: 14px;
  z-index: 2;
  pointer-events: none;
}
.about-portrait img {
  width: 100%;
  aspect-ratio: 4 / 5;
  display: block;
  object-fit: cover;
  object-position: center top;
}
.legal .prose,
.legal p { max-width: 62ch; color: var(--muted); }
.legal h2 { margin-top: 1.75rem; }

/* Auswandern editorial extras */
.info-callout {
  margin-top: 1.25rem;
  padding: 1rem 1.15rem;
  border-radius: 12px;
  background: color-mix(in srgb, var(--accent) 12%, #fff);
  border: 1px solid color-mix(in srgb, var(--accent) 28%, transparent);
}
.info-callout strong {
  display: block;
  margin-bottom: 0.35rem;
  font-size: 0.78rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent-hover);
}
.info-callout p {
  margin: 0;
  color: var(--ink);
  font-size: 0.98rem;
  line-height: 1.5;
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}
.checklist-pair {
  display: grid;
  gap: 1.15rem;
  margin-top: 1.5rem;
  align-items: stretch;
}
@media (min-width: 700px) {
  .checklist-pair { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}

/* Abmeldung: intro full width → stable cards | photo stage */
.abmelde-intro {
  max-width: 62ch;
}
.abmelde-stage {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  gap: 2.5rem;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
  margin-top: 1.75rem;
}
.abmelde-stage__cards {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 1.15rem;
  align-items: stretch;
  min-width: 0;
  margin: 0;
}
.abmelde-stage__media {
  position: relative;
  margin: 0;
  min-width: 0;
  min-height: 0;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 14px 32px rgba(42, 42, 36, 0.12);
  align-self: stretch;
}
.abmelde-stage__media img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
@media (max-width: 899px) {
  .abmelde-stage {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }
  .abmelde-stage__cards {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
  .abmelde-stage__media {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 5;
    max-height: 420px;
  }
}
@media (max-width: 599px) {
  .abmelde-stage__cards {
    grid-template-columns: 1fr;
  }
  .abmelde-stage__media {
    max-height: none;
  }
}
.checklist-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-width: 0;
  padding: 1.35rem 1.4rem 1.45rem;
  border-radius: 12px;
  background: #fff;
  border: 1px solid color-mix(in srgb, var(--taupe) 36%, transparent);
  box-shadow: 0 10px 28px rgba(42, 42, 36, 0.06);
}
.checklist-card h3 {
  margin: 0 0 0.75rem;
  font-size: 0.95rem;
  color: var(--accent);
}
.checklist-card ul {
  margin: 0;
  padding: 0;
  list-style: none;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
.checklist-card li {
  position: relative;
  margin: 0;
  padding-left: 1.5rem;
  color: var(--ink);
  line-height: 1.45;
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
  overflow-wrap: break-word;
}
.checklist-card li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.28em;
  width: 0.85rem;
  height: 0.85rem;
  background-color: var(--accent);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.2 8.2l3.2 3.2L12.8 4.2' stroke='%23000' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.2 8.2l3.2 3.2L12.8 4.2' stroke='%23000' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}
.req-list {
  margin: 0.85rem 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 8px;
}
.req-list li {
  position: relative;
  padding: 0.65rem 0.85rem 0.65rem 2.1rem;
  border-radius: 10px;
  background: color-mix(in srgb, var(--sand, #f4f0e8) 70%, #fff);
  border: 1px solid color-mix(in srgb, var(--taupe) 28%, transparent);
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}
.req-list li::before {
  content: "";
  position: absolute;
  left: 0.85rem;
  top: 1.05rem;
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: var(--accent);
}

/* Immobilien: Kaufprozess — rich steps (typography-led) */
.process-intro {
  max-width: 48ch;
  margin-bottom: 0;
}
.process-steps {
  list-style: none;
  margin: 2.5rem 0 0;
  padding: 0;
  display: grid;
  gap: 1.35rem;
  counter-reset: none;
}
@media (min-width: 800px) {
  .process-steps {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.75rem;
    margin-top: 3rem;
  }
}
.process-step {
  position: relative;
  display: grid;
  gap: 1rem;
  padding: 0 0 0 0.15rem;
  min-width: 0;
}
@media (min-width: 800px) {
  .process-step {
    padding: 0;
    gap: 1.15rem;
  }
  .process-step:not(:last-child)::after {
    content: "";
    position: absolute;
    top: 1.15rem;
    left: calc(2.85rem + 0.65rem);
    right: -0.9rem;
    height: 1px;
    background: linear-gradient(
      90deg,
      color-mix(in srgb, var(--accent) 55%, transparent),
      color-mix(in srgb, var(--taupe) 35%, transparent)
    );
    pointer-events: none;
  }
}
@media (max-width: 799px) {
  .process-step {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 1rem 1.15rem;
    padding: 0.15rem 0 1.35rem 0;
    border-left: 1px solid color-mix(in srgb, var(--accent) 28%, transparent);
    margin-left: 1.05rem;
    padding-left: 1.35rem;
  }
  .process-step:last-child {
    padding-bottom: 0;
    border-left-color: transparent;
  }
  .process-step__num {
    position: absolute;
    left: -1.05rem;
    transform: translateX(-50%);
  }
}
.process-step__num {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.85rem;
  height: 2.85rem;
  border-radius: 50%;
  font-family: var(--display);
  font-weight: 800;
  font-size: 1.15rem;
  letter-spacing: -0.02em;
  color: #fff;
  background: var(--accent);
  box-shadow: 0 10px 24px color-mix(in srgb, var(--accent) 28%, transparent);
  flex-shrink: 0;
}
.process-step__body h3 {
  margin: 0.15rem 0 0.55rem;
  font-family: var(--display);
  font-size: clamp(1.15rem, 2.2vw, 1.35rem);
  letter-spacing: -0.02em;
  color: var(--ink);
}
.process-step__body p {
  margin: 0;
  color: var(--muted);
  font-size: 0.98rem;
  line-height: 1.55;
  max-width: 36ch;
}
@media (min-width: 800px) {
  .process-step__body p { max-width: none; }
}

/* Immobilien: Auswahl intro — editorial duo before property grid */
.auswahl-intro {
  display: grid;
  gap: 1.75rem;
  align-items: center;
  margin-bottom: 0.5rem;
}
@media (min-width: 800px) {
  .auswahl-intro {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    gap: 2.75rem;
    margin-bottom: 0.75rem;
  }
}
.auswahl-intro__copy .lead {
  max-width: 42ch;
}
.auswahl-intro__copy .prose {
  max-width: 48ch;
  margin-top: 0.85rem;
}
.auswahl-intro__copy .prose p {
  margin: 0;
}
.auswahl-intro__media {
  margin: 0;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 18px 40px rgba(42, 42, 36, 0.12);
  position: relative;
}
.auswahl-intro__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--accent) 12%, transparent) 0%,
    transparent 42%
  );
  pointer-events: none;
}
.auswahl-intro__media img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 240px;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
@media (min-width: 800px) {
  .auswahl-intro__media img {
    min-height: 320px;
    aspect-ratio: 5 / 4;
  }
}
/* Edle Trennung: Intro → Immobilienraster (hairline + olive diamond) */
.auswahl-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.9rem;
  margin: 2.85rem 0 2.65rem;
  padding: 0.5rem 0;
  border: 0;
}
.auswahl-divider::before,
.auswahl-divider::after {
  content: "";
  width: min(7.25rem, 28vw);
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    color-mix(in srgb, var(--olive-deep) 22%, transparent) 30%,
    color-mix(in srgb, var(--accent) 55%, transparent)
  );
}
.auswahl-divider::after {
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--accent) 55%, transparent),
    color-mix(in srgb, var(--olive-deep) 22%, transparent) 70%,
    transparent
  );
}
.auswahl-divider__mark {
  width: 5px;
  height: 5px;
  flex-shrink: 0;
  background: var(--accent);
  transform: rotate(45deg);
  opacity: 0.88;
}
.section-properties .property-grid--editorial {
  margin-top: 2.25rem;
}

.js-ready .reveal-delay-3 { transition-delay: 0.24s; }
.js-ready .reveal-delay-4 { transition-delay: 0.32s; }
