/* ============================================================
   Rührberger Hof · Hauptseite
   Editorial Hospitality CI · seit 1902
   ============================================================ */

:root {
  /* ---- Farbwelt ---- */
  --bg-canvas:       #FAF7F2;          /* Creme */
  --bg-canvas-deep:  #F5EFE4;          /* Creme, tiefer */
  --bg-surface:      #FFFFFF;
  --bg-paper:        #FBF6EC;
  --bg-ink:          #1C1814;          /* fast-schwarz, warm */
  --bg-ink-soft:     #2A241F;

  --border-hair:     #EAE0CF;
  --border-soft:     #E2D6BF;
  --border-strong:   #CDB995;

  --ink-display:     #1E1A16;
  --ink-primary:     #2A2420;
  --ink-secondary:   #453D35;
  --ink-muted:       #7A6E61;
  --ink-faint:       #A59A89;

  --accent:          #8A6A3E;          /* Kupfer */
  --accent-deep:     #6B4F2A;
  --accent-hair:     #C9A56A;
  --accent-wash:     #F3EBDA;
  --accent-glow:     #F7EFDB;

  /* ---- Spacing-Tokens (kondensiert) ---- */
  --space-3xs: 4px;
  --space-2xs: 8px;
  --space-xs:  12px;
  --space-sm:  16px;
  --space-md:  24px;
  --space-lg:  36px;
  --space-xl:  56px;
  --space-2xl: 80px;
  --space-3xl: 112px;
  --space-4xl: 152px;

  /* ---- Typografie ---- */
  --font-display: "Cormorant Garamond", "Playfair Display", Georgia, "Times New Roman", serif;
  --font-ui:      "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Tahoma, Arial, sans-serif;

  --text-xs:   clamp(11px, 0.72rem, 12px);
  --text-sm:   clamp(13px, 0.86rem, 14px);
  --text-base: clamp(15.5px, 1rem, 16px);
  --text-lg:   clamp(17px, 1.12rem, 18.5px);
  --text-xl:   clamp(19px, 1.35rem, 22px);

  --display-xs: clamp(22px, 2.2vw + 14px, 30px);
  --display-sm: clamp(28px, 2.6vw + 16px, 40px);
  --display-md: clamp(36px, 3.4vw + 18px, 56px);
  --display-lg: clamp(46px, 4.4vw + 22px, 82px);
  --display-xl: clamp(56px, 5.8vw + 24px, 108px);

  /* ---- Radien & Schatten ---- */
  --radius-sm:   3px;
  --radius:      6px;
  --radius-lg:   10px;

  --shadow-1: 0 1px 2px rgba(20, 14, 6, .04), 0 0 0 1px rgba(20, 14, 6, .04);
  --shadow-2: 0 4px 14px rgba(20, 14, 6, .06), 0 1px 0 rgba(20, 14, 6, .03);
  --shadow-3: 0 18px 50px rgba(20, 14, 6, .10), 0 2px 8px rgba(20, 14, 6, .05);
  --shadow-img: 0 28px 70px rgba(20, 14, 6, .18);

  /* ---- Transitions ---- */
  --ease: cubic-bezier(.22, .61, .36, 1);
  --t-quick: 160ms var(--ease);
  --t-soft:  320ms var(--ease);
  --t-slow:  560ms var(--ease);
}

/* ============================================================
   Base · premium polish
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }
html {
  scroll-behavior: smooth;
  scroll-padding-top: 120px; /* f\u00fcr sticky headers beim anchor-jump */
}
html, body {
  margin: 0; padding: 0;
  font-family: var(--font-ui);
  background: var(--bg-canvas);
  color: var(--ink-primary);
  font-size: var(--text-base);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-variant-numeric: lining-nums tabular-nums;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1;
  text-size-adjust: 100%;
}
img, svg { max-width: 100%; display: block; }
a { color: var(--accent); text-decoration: none; }
button { font-family: inherit; }

/* Selection-Color · warmer Akzent */
::selection {
  background: rgba(201, 165, 106, .32);
  color: var(--ink-display);
}
::-moz-selection {
  background: rgba(201, 165, 106, .32);
  color: var(--ink-display);
}

/* Scrollbar · subtil, edel */
@supports (scrollbar-color: auto) {
  html { scrollbar-color: var(--accent-hair) var(--bg-canvas-deep); scrollbar-width: thin; }
}
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--bg-canvas-deep); }
::-webkit-scrollbar-thumb {
  background: var(--accent-hair); border-radius: 999px;
  border: 2px solid var(--bg-canvas-deep);
}
::-webkit-scrollbar-thumb:hover { background: var(--accent); }

/* Focus-Ring · konsistent elegant */
:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
  border-radius: 2px;
}
:focus:not(:focus-visible) { outline: none; }

/* Auto-Anchor-Hover f\u00fcr interne Links im Content */
.prose a,
.portal-hero-scroll,
.link-arrow { transition: color .2s var(--ease), border-color .2s var(--ease); }

/* ============================================================
   Layout-Container
   ============================================================ */
.container      { max-width: 1260px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 56px); }
.container-wide { max-width: 1440px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 56px); }
.container-tight{ max-width: 860px;  margin: 0 auto; padding: 0 clamp(20px, 4vw, 40px); }
.container-prose{ max-width: 720px;  margin: 0 auto; padding: 0 clamp(20px, 4vw, 40px); }

/* ============================================================
   Typografie
   ============================================================ */
h1, h2, h3, h4 {
  font-family: var(--font-display); font-weight: 500;
  color: var(--ink-display);
  margin: 0 0 var(--space-sm); letter-spacing: -.005em;
  line-height: 1.08;
  text-wrap: balance;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "dlig" 1;
}
h1 { font-size: var(--display-lg); letter-spacing: -.01em; }
h2 { font-size: var(--display-md); line-height: 1.12; }
h3 { font-size: var(--display-sm); line-height: 1.18; }
h4 { font-size: var(--display-xs); line-height: 1.25; }

p  { margin: 0 0 var(--space-sm); text-wrap: pretty; }

.eyebrow {
  display: inline-block;
  text-transform: uppercase; letter-spacing: .22em; font-size: 10.5px;
  color: var(--accent); font-weight: 600;
  font-family: var(--font-ui);
}
.eyebrow-line {
  display: inline-flex; align-items: center; gap: 14px;
  text-transform: uppercase; letter-spacing: .24em; font-size: 10.5px;
  color: var(--accent); font-weight: 600;
  font-feature-settings: "ss01";
}
.eyebrow-line::before {
  content: ""; width: 36px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent-hair));
}

.lead {
  color: var(--ink-secondary); font-size: var(--text-lg); line-height: 1.65;
  max-width: 58ch; font-weight: 400;
}
.lead.center { margin-left: auto; margin-right: auto; }
.muted { color: var(--ink-muted); }

.script {
  font-family: var(--font-display); font-style: italic;
  font-weight: 400; color: var(--ink-display);
}

.drop-cap::first-letter {
  font-family: var(--font-display); font-weight: 500;
  font-size: 4.2em; float: left;
  line-height: .9; padding-right: 12px; padding-top: 6px;
  color: var(--accent);
}

.center { text-align: center; }

hr.rule,
.rule {
  display: block; border: none; width: 48px; height: 1px;
  background: var(--accent-hair); margin: var(--space-md) auto;
}
.rule.vert { width: 1px; height: 56px; margin: 0 auto; }
.rule.wide { width: 88px; }

/* ============================================================
   Portal · Dachmarke "Familie Düster"
   ============================================================ */

/* Floating Portal-R\u00fcckkehr-Button · IMMER sichtbar, unabh\u00e4ngig vom Scroll */
.portal-return-fab {
  position: fixed;
  right: clamp(16px, 2vw, 28px);
  bottom: clamp(16px, 2vw, 28px);
  z-index: 90;
  display: inline-flex; align-items: center; gap: 10px;
  padding: 13px 20px 13px 16px;
  background: var(--bg-ink); color: #fff;
  border: 1px solid rgba(201, 165, 106, .4);
  border-radius: 999px;
  font-family: var(--font-ui); font-size: 11px;
  letter-spacing: .22em; text-transform: uppercase; font-weight: 600;
  text-decoration: none;
  box-shadow: 0 12px 32px rgba(20, 14, 6, .28), 0 2px 8px rgba(20, 14, 6, .18);
  transition: all .3s var(--ease);
  opacity: 1;
}
.portal-return-fab:hover {
  background: var(--accent); color: #fff;
  border-color: var(--accent);
  transform: translateY(-2px);
  box-shadow: 0 18px 40px rgba(138, 106, 62, .4), 0 4px 10px rgba(20, 14, 6, .2);
  gap: 14px;
}
.portal-return-fab svg { color: var(--accent-hair); transition: color .3s var(--ease); }
.portal-return-fab:hover svg { color: #fff; }
@keyframes portalFabEnter {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}
.portal-return-fab-label { display: inline-block; }
@media (max-width: 540px) {
  .portal-return-fab {
    padding: 10px 14px 10px 12px;
    font-size: 10px; letter-spacing: .18em;
  }
  .portal-return-fab-label { display: none; }
  .portal-return-fab-short { display: inline; }
}
.portal-return-fab-short { display: none; }

/* Portal-Context-Bar · sticky oben, IMMER sichtbar auf R\u00fchrberger-Hof-Unterseiten */
.portal-bar {
  background: var(--bg-ink);
  color: rgba(250, 247, 242, .82);
  border-bottom: 1px solid rgba(201, 165, 106, .28);
  position: sticky; top: 0; z-index: 62;
  box-shadow: 0 1px 0 rgba(0, 0, 0, .2);
}
/* Topbar sitzt unter der Portal-Bar (Portal-Bar Desktop ~40px) */
body:has(.portal-bar) .topbar { top: 40px; }
/* Hero auf RH-Hauptseite bleedet unter beide Bars (Desktop: 40+91 = 131) */
body:has(.portal-bar) .hero { margin-top: calc(-1 * (var(--portal-bar-h, 40px) + var(--topbar-h, 91px))); }
/* Wenn Portal-Bar vorhanden: Topbar-Dark transparenter, damit kein doppel-dunkler Streifen entsteht */
body:has(.portal-bar) .topbar.is-dark {
  /* Leichte dunkle Tönung + starker Blur: Hero-Content bleibt sichtbar,
     Text hinter Topbar wird weichgezeichnet (kein Durchbluten-Effekt
     mit Brand-Überschrift, aber kein harter Cutoff der h1 beim Scrollen). */
  background: rgba(28, 24, 20, .38);
  backdrop-filter: saturate(1.15) blur(16px);
  -webkit-backdrop-filter: saturate(1.15) blur(16px);
  border-bottom-color: transparent;
}
/* Mobile: Portal-Bar STICKY (damit "zurück zum Portal" jederzeit sichtbar).
   Portal-Bar oben (kompakt) · Topbar sticky direkt darunter.
   Bei offenem Drawer: Portal-Bar versteckt UND Topbar rückt top:0,
   damit oben keine Lücke entsteht. */
@media (max-width: 820px) {
  .portal-bar {
    position: sticky; top: 0; z-index: 61;
    min-height: 36px;
  }
  /* Topbar dockt sticky exakt unter Portal-Bar an (JS misst --portal-bar-h);
     dadurch verschiebt sich der Abstand zwischen beiden beim Scrollen nicht. */
  body:has(.portal-bar) .topbar { top: var(--portal-bar-h, 36px); z-index: 60; }
  body:has(.portal-bar) .hero { margin-top: calc(-1 * (var(--topbar-h, 64px) + var(--portal-bar-h, 36px))); }
  /* Drawer offen: Topbar nach oben holen, Portal-Bar weg → keine Lücke */
  body:has(.portal-bar).nav-open .topbar { top: 0 !important; }
  body.nav-open .portal-bar { display: none; }
}
.portal-bar-inner {
  display: flex; justify-content: space-between; align-items: center;
  padding: 10px 0; gap: 16px;
  font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase;
  font-weight: 500;
}
.portal-bar-label { color: var(--accent-hair); font-weight: 600; }
.portal-bar-family {
  display: inline-flex; align-items: center; gap: 16px;
  color: rgba(250, 247, 242, .7);
}
.portal-bar-family a {
  color: rgba(250, 247, 242, .92); text-decoration: none;
  transition: color .2s var(--ease);
}
.portal-bar-family a:hover { color: var(--accent-hair); }
.portal-bar-family .divider { color: rgba(201, 165, 106, .45); }

/* Portal-spezifische Stilistik nur auf der Startseite aktiv */
body.is-portal {
  background: var(--bg-canvas);
}

/* Portal-Topbar · minimalistisch, nicht dunkel über Hero */
body.is-portal .topbar { background: rgba(250, 247, 242, .94); }
body.is-portal .brand-wordmark::after {
  content: "· Portal"; font-family: var(--font-ui);
  font-size: 10px; letter-spacing: .24em; text-transform: uppercase;
  color: var(--accent); margin-left: 12px; font-weight: 600;
  vertical-align: 3px;
}

/* Portal-Hero · editorial premium, kompakt f\u00fcr above-fold-Cards */
.portal-hero {
  position: relative; overflow: hidden;
  padding: clamp(56px, 6vw, 88px) 0 clamp(32px, 4vw, 56px);
  text-align: center; isolation: isolate;
}
.portal-hero::before {
  content: ""; position: absolute; inset: 0; z-index: -2;
  background:
    radial-gradient(ellipse 90% 60% at 50% 30%, rgba(138, 106, 62, .08), transparent 62%),
    radial-gradient(ellipse 60% 40% at 50% 100%, rgba(201, 165, 106, .12), transparent 70%),
    linear-gradient(180deg, var(--bg-canvas-deep) 0%, var(--bg-canvas) 85%, var(--bg-canvas) 100%);
}
.portal-hero::after {
  content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: min(88%, 1200px); height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent-hair), transparent);
  opacity: .8;
}

/* Ambient Ruehri-Mark, sehr subtil, hinter dem Text */
.portal-hero-mark {
  position: absolute; left: 50%; top: 42%;
  transform: translate(-50%, -50%);
  width: clamp(260px, 36vw, 520px); height: clamp(360px, 50vw, 720px);
  background-color: var(--accent-hair);
  -webkit-mask: url("assets/brand/ruehri.svg") center/contain no-repeat;
          mask: url("assets/brand/ruehri.svg") center/contain no-repeat;
  opacity: .045;
  z-index: -1;
  pointer-events: none;
}
.portal-hero-inner {
  max-width: 920px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 56px);
  position: relative; z-index: 1;
}
.portal-hero-inner::before {
  content: ""; display: block;
  width: 1px; height: clamp(32px, 4vw, 56px);
  background: linear-gradient(180deg, transparent, var(--accent-hair));
  margin: 0 auto clamp(18px, 2vw, 28px);
}
.portal-hero .eyebrow-line {
  justify-content: center; margin: 0 auto var(--space-lg);
}
.portal-hero .eyebrow-line::before,
.portal-hero .eyebrow-line::after {
  content: ""; width: 42px; height: 1px; background: var(--accent-hair);
}
.portal-hero h1 {
  font-size: clamp(42px, 4.4vw + 14px, 84px);
  letter-spacing: -.02em; line-height: 1.02;
  margin: 0 auto var(--space-md);
  text-wrap: balance;
  font-weight: 500;
}
.portal-hero h1 em {
  font-style: italic; font-weight: 400;
  color: var(--accent); display: block;
  letter-spacing: -.015em;
}
.portal-hero .lead {
  font-size: clamp(16px, .6vw + 12px, 19px);
  color: var(--ink-secondary);
  max-width: 52ch; margin: 0 auto;
  line-height: 1.7;
  text-wrap: pretty;
}
.portal-hero-locations {
  display: inline-flex; gap: clamp(20px, 2.4vw, 42px); flex-wrap: wrap;
  justify-content: center; align-items: center;
  margin-top: clamp(20px, 2.6vw, 32px);
  padding-top: var(--space-sm);
  font-size: 10.5px; letter-spacing: .28em; text-transform: uppercase;
  color: var(--ink-muted); font-weight: 600;
  position: relative;
}
.portal-hero-locations::before {
  content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: 28px; height: 1px; background: var(--accent-hair);
}
.portal-hero-locations span { position: relative; }
.portal-hero-locations span + span::before {
  content: ""; position: absolute; left: calc(-1 * clamp(12px, 1.5vw, 28px)); top: 50%;
  transform: translateY(-50%);
  width: 3px; height: 3px; border-radius: 50%; background: var(--accent-hair);
  opacity: .7;
}

/* Scroll-Hinweis unter dem Hero */
.portal-hero-scroll {
  display: inline-flex; flex-direction: column; align-items: center; gap: 8px;
  margin-top: clamp(24px, 3vw, 40px);
  color: var(--ink-muted);
  font-size: 9.5px; letter-spacing: .3em; text-transform: uppercase;
  font-weight: 600;
  text-decoration: none;
  transition: color .3s var(--ease);
}
.portal-hero-scroll svg {
  color: var(--accent-hair);
  animation: portalScrollHint 2.4s ease-in-out infinite;
}
.portal-hero-scroll:hover { color: var(--accent); }
@keyframes portalScrollHint {
  0%, 100% { transform: translateY(0); opacity: .8; }
  50%      { transform: translateY(3px); opacity: 1; }
}

/* ---- Portal-Grid · Premium Logo-first Cards ---- */
.portal-grid {
  padding: 0 clamp(16px, 2.4vw, 40px) clamp(56px, 6vw, 96px);
  max-width: 1560px; margin: 0 auto;
  position: relative;
}
@media (min-width: 1920px) {
  .portal-grid { max-width: 1680px; }
  .portal-grid-inner { gap: clamp(20px, 1.6vw, 36px); }
}
.portal-grid::before {
  content: ""; display: block;
  width: 1px; height: clamp(40px, 5vw, 72px);
  background: linear-gradient(180deg, var(--accent-hair), transparent);
  margin: 0 auto clamp(40px, 4.5vw, 72px);
}
.portal-grid-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(14px, 1.6vw, 28px);
}

.portal-card {
  position: relative; overflow: hidden;
  text-decoration: none;
  display: flex; flex-direction: column;
  background: #fff;
  border: 1px solid var(--border-hair);
  border-radius: 2px;
  box-shadow: 0 2px 8px rgba(20, 14, 6, .02), 0 12px 32px rgba(20, 14, 6, .04);
  transition: transform .5s var(--ease), box-shadow .5s var(--ease), border-color .5s var(--ease);
  isolation: isolate;
  will-change: transform;
}
/* subtle inner rule oberhalb Footer für edle Trennung */
.portal-card::before {
  content: ""; position: absolute; left: 0; right: 0;
  bottom: var(--footer-h, 0); height: 1px;
  background: linear-gradient(90deg, transparent, rgba(20, 14, 6, .04) 20%, rgba(20, 14, 6, .04) 80%, transparent);
  z-index: 2; pointer-events: none;
}
.portal-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 28px 64px rgba(20, 14, 6, .12), 0 3px 8px rgba(20, 14, 6, .04);
  border-color: var(--haus-color, var(--accent-hair));
}

/* Römische Ordnungs-Nummer als Ambient-Mark */
.portal-card-num {
  position: absolute; top: clamp(20px, 2.4vw, 36px); left: clamp(22px, 2.6vw, 40px);
  z-index: 3;
  font-family: var(--font-display); font-style: italic; font-weight: 400;
  font-size: clamp(22px, 1.4vw + 10px, 34px);
  color: var(--haus-color, var(--accent));
  line-height: 1;
  letter-spacing: -.01em;
  opacity: .75;
  transition: opacity .4s var(--ease), transform .5s var(--ease);
}
.portal-card:hover .portal-card-num {
  opacity: 1;
  transform: translateX(2px);
}
.portal-card-num::after {
  content: ""; position: absolute; left: 0; bottom: -6px;
  width: 22px; height: 1px; background: currentColor;
  opacity: .6;
}

/* Visual-Bereich · atmospheric tint + radial depth */
.portal-card-visual {
  flex: 1;
  aspect-ratio: 5 / 4;
  display: flex; align-items: center; justify-content: center;
  background: var(--haus-tint, var(--bg-canvas-deep));
  padding: clamp(36px, 4vw, 72px);
  position: relative; overflow: hidden;
  transition: background .5s var(--ease);
}
/* Radiale Tiefe: hellerer Kern oben, warmer Akzent unten */
.portal-card-visual::before {
  content: ""; position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 85% 65% at 50% 28%, rgba(255, 255, 255, .65), transparent 62%),
    radial-gradient(ellipse 110% 80% at 50% 105%, var(--haus-deep, rgba(20, 14, 6, .12)), transparent 55%);
  opacity: .8;
  z-index: 0;
  pointer-events: none;
}
/* Accent-Glow auf Hover · kräftiger */
.portal-card-visual::after {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(ellipse 110% 80% at 50% 100%, var(--haus-deep, var(--accent)), transparent 72%);
  opacity: 0; transition: opacity .6s var(--ease);
  mix-blend-mode: multiply;
  z-index: 0;
  pointer-events: none;
}
.portal-card:hover .portal-card-visual::after { opacity: .32; }

.portal-card-logo {
  width: auto; height: auto;
  /* Unified logo presence: vertikale H\u00f6he als Norm */
  max-width: 82%;
  max-height: clamp(180px, 26vw, 320px);
  object-fit: contain;
  position: relative; z-index: 1;
  transition: transform .6s var(--ease);
  filter: drop-shadow(0 4px 18px rgba(20, 14, 6, .10));
}
.portal-card:hover .portal-card-logo { transform: scale(1.05) translateY(-2px); }

/* R\u00fchrberger Hof · Signet (SVG, hochformatig) \u2192 etwas h\u00f6her */
.portal-card-logo--photo {
  max-width: 42%;
  max-height: clamp(160px, 22vw, 260px);
  filter: drop-shadow(0 4px 14px rgba(20, 14, 6, .12));
}

/* ---- Footer-Bereich ---- */
.portal-card-footer {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-md);
  padding: clamp(20px, 2.2vw, 30px) clamp(22px, 2.6vw, 36px);
  background: #fff;
  border-top: 1px solid var(--border-hair);
  position: relative;
}
/* Hairline-Akzent oben bei Hover */
.portal-card-footer::before {
  content: ""; position: absolute; top: -1px; left: 0; width: 0;
  height: 2px; background: var(--haus-color, var(--accent));
  transition: width .5s var(--ease);
  z-index: 2;
}
.portal-card:hover .portal-card-footer::before { width: 100%; }

.portal-card-text { min-width: 0; flex: 1; }
.portal-card-eyebrow {
  display: block;
  font-size: 10px; letter-spacing: .24em; text-transform: uppercase;
  color: var(--haus-color, var(--accent));
  font-weight: 600;
  margin-bottom: 8px;
}
.portal-card-footer h3 {
  font-family: var(--font-display); font-weight: 500;
  color: var(--ink-display);
  font-size: clamp(22px, 1.4vw + 12px, 30px);
  line-height: 1.1; letter-spacing: -.005em;
  margin: 0 0 5px;
  transition: color .3s var(--ease);
}
.portal-card:hover .portal-card-footer h3 { color: var(--haus-color, var(--accent)); }
.portal-card-footer p {
  font-size: 11.5px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--ink-muted);
  margin: 0;
  font-weight: 500;
}
.portal-card-arrow {
  flex: 0 0 auto;
  width: 48px; height: 48px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--border-strong);
  color: var(--ink-display);
  transition: all .4s var(--ease);
  background: transparent;
}
.portal-card:hover .portal-card-arrow {
  background: var(--haus-color, var(--accent));
  border-color: var(--haus-color, var(--accent));
  color: #fff;
}
.portal-card--hof:hover .portal-card-arrow {
  transform: translateX(4px);
}
.portal-card--gupi:hover .portal-card-arrow,
.portal-card--blumen:hover .portal-card-arrow,
.portal-card--waldrain:hover .portal-card-arrow {
  transform: rotate(-6deg) translate(2px, -2px);
}

/* ---- Marken-Tints (Background der Visual-Zone) ---- */
.portal-card--hof      { --haus-tint: #E7D9B3; --haus-deep: #C9A56A; }
.portal-card--gupi     { --haus-tint: #D1DBE1; --haus-deep: #6F8492; }
.portal-card--blumen   { --haus-tint: #DBCDA3; --haus-deep: #8F7A3E; }
.portal-card--waldrain { --haus-tint: #B8CBB1; --haus-deep: #4E6A45; }

/* ============================================================
   Rührberger Blumen · Dahlien hinter dem Original-Logo
   ============================================================
   Das Logo bleibt unverändert, sitzt aber dominant im Fenster.
   Die Blumen liegen als weicher, warm getönter Hintergrund
   dahinter — ruhig genug, damit das coralfarbene Wordmark klar
   führt, lebendig genug, dass der Garten spürbar ist.
   ============================================================ */
.portal-card--blumen .portal-card-visual {
  background-color: var(--haus-tint);
  background-image:
    linear-gradient(180deg, rgba(219, 205, 163, .62) 0%, rgba(143, 122, 62, .58) 100%),
    url("assets/images/blumen-feld.webp");
  background-size: cover;
  background-position: center 45%;
  background-repeat: no-repeat;
  padding: clamp(20px, 2.8vw, 48px);
}
/* Heller Lichtkern hinter dem Logo · hält das Coral strahlend */
.portal-card--blumen .portal-card-visual::before {
  background:
    radial-gradient(ellipse 78% 62% at 50% 50%,
      rgba(253, 248, 235, .70) 0%,
      rgba(253, 248, 235, .38) 40%,
      rgba(253, 248, 235, .10) 68%,
      transparent 82%),
    radial-gradient(ellipse 120% 85% at 50% 108%,
      rgba(76, 58, 28, .35), transparent 60%);
  opacity: 1;
}
/* Ruhige Ken-Burns-Atmosphäre beim Hover */
.portal-card--blumen .portal-card-visual {
  transition: background-size 1.6s var(--ease), background-position 1.6s var(--ease);
}
.portal-card--blumen:hover .portal-card-visual {
  background-size: 110%;
  background-position: center 40%;
}
/* Original-Logo wird dominant präsentiert · Größe + warme Aura */
.portal-card--blumen .portal-card-logo {
  max-width: 92%;
  max-height: clamp(200px, 30vw, 360px);
  filter:
    drop-shadow(0 0 28px rgba(255, 250, 238, .95))
    drop-shadow(0 0 60px rgba(255, 244, 218, .60))
    drop-shadow(0 8px 22px rgba(92, 52, 28, .22));
}

/* ============================================================
   Waldrain · eigene Akzent-Farbe (Tannen-Dunkelgr\u00fcn)
   ============================================================ */
body.is-waldrain {
  --accent:      #2D3B26;   /* Tannengr\u00fcn */
  --accent-deep: #1F2E19;   /* noch dunkler (hover) */
  --accent-hair: #6B7D5F;   /* moosig, dezent */
  --accent-glow: #E6EADD;   /* sehr heller Wash */
  --accent-wash: #D3DCC6;
  --bg-canvas-deep: #F0ECE0;
}
/* Waldrain Topbar + Mark · dunkel-grün */
body.is-waldrain .brand-mark {
  -webkit-mask-image: url("assets/brand/waldrain-mark.svg");
          mask-image: url("assets/brand/waldrain-mark.svg");
  background-color: var(--accent);
  width: 40px; height: 56px;
}
body.is-waldrain .brand-wordmark { font-size: 20px; }
body.is-waldrain .topbar nav a.is-active { color: var(--accent); }
body.is-waldrain ::selection { background: rgba(107, 125, 95, .28); color: var(--accent-deep); }

/* Page-Hero Varianten-Farben (dezent, nicht im Overlay) */
.page-hero--waldrain {
  background: linear-gradient(180deg, #E6EADD 0%, var(--bg-canvas) 100%);
  border-bottom: 1px solid rgba(45, 59, 38, .22);
}
.page-hero--waldrain::before { background: #6B7D5F; opacity: .6; }

/* ==================================================================== */
/* Waldrain Hero · Editorial / Typografisch mit Emblem                   */
/* ==================================================================== */
.hero-editorial {
  position: relative;
  min-height: clamp(580px, 88vh, 820px);
  margin-top: -131px;
  padding: calc(131px + clamp(16px, 2vw, 32px)) clamp(32px, 6vw, 96px) clamp(20px, 2.5vw, 40px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  background:
    /* Fein-körnige Textur */
    radial-gradient(ellipse 120% 90% at 50% 35%, rgba(45, 59, 38, .18), transparent 60%),
    radial-gradient(ellipse 80% 60% at 20% 100%, rgba(12, 20, 10, .6), transparent 70%),
    radial-gradient(ellipse 60% 50% at 85% 0%, rgba(20, 30, 18, .5), transparent 70%),
    linear-gradient(160deg, #1F2E19 0%, #1A251A 45%, #131F12 100%);
  color: #FAF7F2;
  overflow: hidden;
  isolation: isolate;
}

/* Giant Emblem im Zentrum/Hintergrund */
.hero-editorial-emblem {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: clamp(400px, 58vw, 820px);
  height: clamp(560px, 81vw, 1148px);
  background-color: #BFCDA9;
  -webkit-mask: url("assets/brand/waldrain-mark.svg") center/contain no-repeat;
          mask: url("assets/brand/waldrain-mark.svg") center/contain no-repeat;
  opacity: .045;
  z-index: 0;
  pointer-events: none;
}

/* Dekorative Eck-Ornamente (feine gr\u00fcne L-Winkel) */
.hero-editorial-ornament {
  position: absolute;
  width: clamp(60px, 7vw, 100px);
  height: clamp(60px, 7vw, 100px);
  z-index: 1;
  pointer-events: none;
}
.hero-editorial-ornament--tl {
  top: calc(131px + clamp(32px, 4vw, 60px));
  left: clamp(32px, 6vw, 96px);
  border-top: 1px solid rgba(191, 205, 169, .45);
  border-left: 1px solid rgba(191, 205, 169, .45);
}
.hero-editorial-ornament--br {
  bottom: clamp(32px, 4vw, 64px);
  right: clamp(32px, 6vw, 96px);
  border-bottom: 1px solid rgba(191, 205, 169, .45);
  border-right: 1px solid rgba(191, 205, 169, .45);
}

/* Nav-Row oben: Breadcrumb links, Koordinaten rechts */
.hero-editorial-nav-row {
  position: relative;
  z-index: 3;
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: clamp(24px, 3.5vh, 48px);
  padding: 0 clamp(10px, 1vw, 24px);
  flex-wrap: wrap;
  gap: 16px;
}
.hero-editorial-nav-row .breadcrumb--light { margin-bottom: 0; }

/* Zentrales Text-Inhalts-Fenster */
.hero-editorial-inner {
  position: relative;
  z-index: 3;
  max-width: 900px;
  margin: 0 auto;
  text-align: center;
  padding: 0 clamp(8px, 2vw, 24px);
}

.hero-editorial-eyebrow {
  justify-content: center;
  color: #BFCDA9;
  margin-bottom: clamp(20px, 2vw, 32px);
}
.hero-editorial-eyebrow::before { background: rgba(191, 205, 169, .75); width: 36px; }
.hero-editorial-eyebrow .eyebrow-dot {
  width: 4px; height: 4px; border-radius: 50%;
  background: #C5D4B0;
  display: inline-block;
  margin-right: 10px;
  box-shadow: 0 0 0 3px rgba(197, 212, 176, .2);
  animation: waldrainPulse 2.4s ease-in-out infinite;
}

.hero-editorial-title {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(48px, 5.4vw + 10px, 104px);
  line-height: .98;
  letter-spacing: -.02em;
  color: #FAF7F2;
  margin: 0 0 clamp(20px, 2.5vw, 40px);
}
.hero-editorial-title-line {
  display: block;
}
.hero-editorial-title-accent {
  position: relative;
}
.hero-editorial-title-accent::after {
  content: "";
  display: block;
  width: clamp(60px, 8vw, 120px);
  height: 1px;
  background: rgba(191, 205, 169, .5);
  margin: clamp(14px, 1.6vw, 24px) auto 0;
}
.hero-editorial-title em {
  display: block;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(22px, 1.5vw + 10px, 36px);
  color: #C5D4B0;
  margin-top: clamp(16px, 1.8vw, 28px);
  letter-spacing: 0;
}

.hero-editorial-lead {
  font-size: clamp(15.5px, .45vw + 13px, 19px);
  line-height: 1.72;
  color: rgba(250, 247, 242, .82);
  max-width: 58ch;
  margin: 0 auto clamp(28px, 3.2vw, 44px);
}
.hero-editorial-lead-accent {
  display: block;
  margin-top: 10px;
  color: #E6EADD;
  font-weight: 500;
  letter-spacing: .01em;
}

.hero-editorial-actions {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: clamp(12px, 1.4vw, 20px);
  flex-wrap: wrap;
}
.hero-editorial-actions .btn { min-width: 200px; justify-content: center; }

/* Subtiler Status-Hinweis unter den Buttons */
.hero-editorial-status {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin-top: clamp(18px, 2vw, 28px);
  font-size: 10.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: rgba(191, 205, 169, .72);
  font-weight: 600;
}
.hero-editorial-status strong { color: #E6EADD; }
.hero-editorial-status-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: #C5D4B0;
  box-shadow: 0 0 0 3px rgba(197, 212, 176, .22);
  animation: waldrainPulse 2.4s ease-in-out infinite;
}

/* btn-primary & btn-outline-light im Hero-Kontext */
.hero-editorial .btn-primary {
  background: #FAF7F2;
  color: var(--accent-deep);
  border-color: #FAF7F2;
  box-shadow: 0 6px 18px rgba(0, 0, 0, .25);
}
.hero-editorial .btn-primary:hover {
  background: #fff;
  color: var(--accent-deep);
  box-shadow: 0 12px 28px rgba(0, 0, 0, .32);
  transform: translateY(-1px);
}
.hero-editorial .btn-outline-light {
  color: #FAF7F2;
  border-color: rgba(250, 247, 242, .55);
  background: transparent;
}
.hero-editorial .btn-outline-light:hover {
  border-color: #FAF7F2;
  background: rgba(250, 247, 242, .08);
  color: #fff;
}

/* Footline ganz unten (Magazin-Strip) */
.hero-editorial-footline {
  position: relative;
  z-index: 3;
  display: flex; justify-content: center; align-items: center;
  gap: clamp(10px, 1.4vw, 22px);
  margin-top: clamp(24px, 4vh, 48px);
  padding: clamp(12px, 1.4vw, 20px) 0;
  border-top: 1px solid rgba(191, 205, 169, .16);
  font-size: 10px; letter-spacing: .26em; text-transform: uppercase;
  color: rgba(191, 205, 169, .62); font-weight: 600;
  flex-wrap: wrap;
}
.hero-editorial-footline-sep {
  width: 5px; height: 5px;
  background: rgba(191, 205, 169, .3);
  border-radius: 50%;
  display: inline-block;
}

/* Scroll-Hint rechts unten */
.hero-scroll--light {
  color: rgba(191, 205, 169, .5);
}

/* Responsive */
@media (max-width: 720px) {
  .hero-editorial {
    padding-left: clamp(20px, 5vw, 40px);
    padding-right: clamp(20px, 5vw, 40px);
    min-height: clamp(560px, 88vh, 760px);
  }
  .hero-editorial-emblem {
    opacity: .06;
    width: 140vw; height: 196vw;
  }
  .hero-editorial-ornament { display: none; }
  .hero-editorial-nav-row { margin-bottom: 32px; }
  .hero-editorial-coord { display: none; }
  .hero-editorial-title-accent::after { margin-top: 16px; }
  .hero-editorial-footline {
    gap: 10px;
    font-size: 9px;
    letter-spacing: .22em;
  }
}

/* ==================================================================== */
/* Waldrain Hero · Warm-Editorial · Creme-Papier mit Emblem             */
/* ==================================================================== */
.hero-paper {
  position: relative;
  min-height: clamp(560px, 82vh, 760px);
  margin-top: -131px;
  padding: calc(131px + clamp(28px, 3.5vw, 56px)) clamp(24px, 6vw, 88px) clamp(80px, 9vw, 120px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  color: var(--ink-display);
  background:
    /* Subtiler Lichteinfall oben rechts */
    radial-gradient(ellipse 70% 60% at 88% 0%, rgba(211, 220, 198, .55), transparent 60%),
    /* Papierwärme unten links */
    radial-gradient(ellipse 60% 55% at 8% 100%, rgba(243, 235, 218, .9), transparent 70%),
    /* Grund: warmes Creme mit ganz leichtem Verlauf */
    linear-gradient(170deg, #FBF6EC 0%, #F3EEDF 60%, #EDE7D6 100%);
  overflow: hidden;
  isolation: isolate;
  border-bottom: 1px solid rgba(45, 59, 38, .12);
}

/* Emblem als Papier-Wasserzeichen — ruhig, kein Techy-Akzent */
.hero-paper-emblem {
  position: absolute;
  top: 52%; left: 50%;
  transform: translate(-50%, -50%);
  width: clamp(360px, 52vw, 720px);
  height: clamp(504px, 73vw, 1008px);
  background-color: var(--accent);
  -webkit-mask: url("assets/brand/waldrain-mark.svg") center/contain no-repeat;
          mask: url("assets/brand/waldrain-mark.svg") center/contain no-repeat;
  opacity: .055;
  z-index: 0;
  pointer-events: none;
}

/* Bergkamm-Silhouette am unteren Rand — organisch, nicht geometrisch */
.hero-paper-ridge {
  position: absolute;
  left: 0; right: 0; bottom: -1px;
  width: 100%;
  height: clamp(48px, 6vw, 78px);
  color: var(--accent);
  opacity: .14;
  z-index: 1;
  pointer-events: none;
}

/* Kopfzeile: Breadcrumb links, „Est."-Zeile rechts */
.hero-paper-nav {
  position: relative;
  z-index: 3;
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: clamp(32px, 5vh, 72px);
  gap: 16px; flex-wrap: wrap;
}
.hero-paper-nav .breadcrumb { margin-bottom: 0; }
.hero-paper-est {
  font-size: 10.5px;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--accent-hair);
  font-weight: 600;
  font-family: var(--font-body);
}

/* Zentraler Text */
.hero-paper-inner {
  position: relative;
  z-index: 3;
  max-width: 860px;
  margin: 0 auto;
  text-align: center;
  padding: 0 clamp(8px, 2vw, 24px);
}

.hero-paper-eyebrow {
  justify-content: center;
  color: var(--accent);
  margin-bottom: clamp(18px, 2vw, 28px);
}
.hero-paper-eyebrow::before {
  background: var(--accent-hair);
  width: 42px;
}

.hero-paper-title {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(46px, 5.2vw + 10px, 104px);
  line-height: .98;
  letter-spacing: -.015em;
  color: var(--accent-deep);
  margin: 0 0 clamp(22px, 2.5vw, 40px);
}
.hero-paper-title-overline {
  display: block;
  font-family: var(--font-body);
  font-size: 11px;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--accent-hair);
  font-weight: 600;
  margin-bottom: clamp(16px, 2vw, 28px);
}
.hero-paper-title-line {
  display: block;
  font-style: normal;
}
.hero-paper-title-accent {
  position: relative;
  font-style: italic;
  color: var(--accent);
}
.hero-paper-title-accent::after {
  content: "";
  display: block;
  width: clamp(56px, 7vw, 110px);
  height: 1px;
  background: var(--accent-hair);
  margin: clamp(14px, 1.6vw, 22px) auto 0;
  opacity: .7;
}
.hero-paper-title em {
  display: block;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(18px, 1vw + 10px, 26px);
  color: var(--ink-secondary);
  margin-top: clamp(16px, 1.8vw, 26px);
  letter-spacing: 0;
  max-width: 32ch;
  margin-left: auto; margin-right: auto;
  line-height: 1.45;
}

.hero-paper-lead {
  font-size: clamp(15.5px, .4vw + 13.5px, 19px);
  line-height: 1.72;
  color: var(--ink-secondary);
  max-width: 58ch;
  margin: 0 auto clamp(28px, 3vw, 40px);
}

.hero-paper-actions {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: clamp(18px, 2vw, 28px);
  flex-wrap: wrap;
}
.hero-paper-actions .btn { min-width: 220px; justify-content: center; }
.hero-paper-actions .link-arrow {
  font-size: 13px;
  letter-spacing: .02em;
}

/* Footline: drei ruhige Info-Spalten statt techy-Strip */
.hero-paper-footline {
  position: relative;
  z-index: 3;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(16px, 3vw, 48px);
  margin: clamp(48px, 6vh, 72px) auto 0;
  max-width: 780px;
  padding: clamp(18px, 2vw, 28px) clamp(12px, 3vw, 32px) 0;
  border-top: 1px solid rgba(45, 59, 38, .18);
  text-align: center;
}
.hero-paper-footline-col {
  display: flex; flex-direction: column; gap: 6px;
}
.hero-paper-footline-label {
  font-size: 10px;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--ink-muted);
  font-weight: 600;
}
.hero-paper-footline-value {
  font-family: var(--font-display);
  font-size: clamp(15px, .4vw + 12px, 19px);
  color: var(--accent-deep);
  font-weight: 500;
  letter-spacing: .005em;
}

/* Responsive */
@media (max-width: 860px) {
  .hero-paper {
    padding-top: calc(131px + 24px);
    padding-left: clamp(20px, 5vw, 40px);
    padding-right: clamp(20px, 5vw, 40px);
  }
  .hero-paper-nav { margin-bottom: 24px; }
  .hero-paper-est { display: none; }
  .hero-paper-emblem { opacity: .07; width: 130vw; height: 182vw; }
  .hero-paper-footline {
    grid-template-columns: 1fr;
    gap: 14px;
    text-align: left;
    max-width: 360px;
  }
  .hero-paper-footline-col {
    flex-direction: row; align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    padding-bottom: 10px;
    border-bottom: 1px solid rgba(45, 59, 38, .08);
  }
  .hero-paper-footline-col:last-child { border-bottom: 0; padding-bottom: 0; }
  .hero-paper-title-accent::after { margin-top: 14px; }
}

/* ==================================================================== */
/* Press-Clipping · Zeitungsausschnitt für „Die Übernahme"              */
/* ==================================================================== */
.welt--press .welt-text .welt-meta { margin-top: clamp(24px, 3vw, 40px); }

.welt-quote {
  position: relative;
  margin: clamp(20px, 2.5vw, 32px) 0 clamp(24px, 3vw, 36px) !important;
  padding: clamp(16px, 1.8vw, 24px) 0 clamp(16px, 1.8vw, 24px) clamp(18px, 2vw, 28px);
  border-left: 2px solid var(--accent-hair);
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(17px, .4vw + 14px, 21px) !important;
  line-height: 1.55 !important;
  color: var(--accent-deep) !important;
}
.welt-quote-mark {
  font-family: var(--font-display);
  font-style: normal;
  color: var(--accent-hair);
  margin: 0 2px;
}
.welt-quote-src {
  display: block;
  margin-top: 10px;
  font-family: var(--font-body);
  font-style: normal;
  font-size: 12.5px;
  letter-spacing: .02em;
  color: var(--ink-muted);
  line-height: 1.5;
}

.press-clipping {
  position: relative;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: clamp(14px, 1.5vw, 20px);
}

.press-clipping-label {
  display: flex; flex-direction: column; gap: 6px;
  padding-bottom: clamp(10px, 1vw, 14px);
  border-bottom: 1px solid var(--border-hair);
}
.press-clipping-label-eyebrow {
  font-size: 10px;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 700;
}
.press-clipping-label-title {
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(18px, .8vw + 14px, 24px);
  color: var(--ink-display);
  line-height: 1.25;
}
.press-clipping-label-source {
  font-size: 12px;
  color: var(--ink-muted);
  letter-spacing: .02em;
}

.press-clipping-frame {
  position: relative;
  display: block;
  background: #FDFCF6;
  padding: clamp(14px, 1.8vw, 26px);
  border: 1px solid rgba(107, 79, 42, .1);
  box-shadow:
    0 1px 2px rgba(30, 26, 22, .04),
    0 10px 28px -12px rgba(30, 26, 22, .22),
    0 24px 56px -24px rgba(30, 26, 22, .18);
  transform: rotate(-.6deg);
  transform-origin: center top;
  transition: transform var(--t-slow), box-shadow var(--t-slow);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
}
.press-clipping-frame::before {
  /* feine Papier-Körnung über dem Bild */
  content: "";
  position: absolute; inset: 0;
  background:
    radial-gradient(circle at 30% 20%, rgba(201, 165, 106, .06), transparent 60%),
    radial-gradient(circle at 80% 90%, rgba(45, 59, 38, .05), transparent 55%);
  pointer-events: none;
  z-index: 2;
}
.press-clipping-frame img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 780px;
  object-fit: contain;
  object-position: top center;
  position: relative;
  z-index: 1;
  filter: saturate(.95) contrast(1.02);
}
.press-clipping-frame:hover {
  transform: rotate(-.2deg) translateY(-2px);
  box-shadow:
    0 2px 4px rgba(30, 26, 22, .06),
    0 16px 36px -14px rgba(30, 26, 22, .28),
    0 32px 72px -28px rgba(30, 26, 22, .22);
}
.press-clipping-zoom {
  position: absolute;
  right: clamp(14px, 1.8vw, 26px);
  bottom: clamp(14px, 1.8vw, 26px);
  z-index: 3;
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--accent-deep);
  background: rgba(251, 246, 236, .92);
  padding: 8px 12px;
  border: 1px solid rgba(107, 79, 42, .22);
  opacity: 0;
  transition: opacity var(--t-med), transform var(--t-med);
  transform: translateY(4px);
}
.press-clipping-frame:hover .press-clipping-zoom,
.press-clipping-frame:focus-visible .press-clipping-zoom {
  opacity: 1;
  transform: translateY(0);
}

.press-clipping-caption {
  font-size: 12.5px;
  color: var(--ink-muted);
  line-height: 1.55;
  padding: 0 4px;
}
.press-clipping-caption .muted { color: var(--ink-faint); font-style: italic; }

@media (max-width: 960px) {
  .welt--press { grid-template-columns: 1fr; }
  .welt.flip.welt--press .welt-text  { order: 1; }
  .welt.flip.welt--press .press-clipping { order: 2; }
  .press-clipping-frame { transform: rotate(0); padding: 12px; }
  .press-clipping-frame img { max-height: 620px; }
  .press-clipping-zoom { opacity: 1; transform: none; }
}

/* Legacy Split-Hero h\u00fcllen (falls Styles zur\u00fcckgerollt werden) */
.hero-split {
  display: grid;
  grid-template-columns: minmax(420px, 5fr) minmax(0, 7fr);
  min-height: clamp(560px, 88vh, 820px);
  height: clamp(560px, 88vh, 820px);
  margin-top: -131px; /* bleedet unter Portal-Bar + Topbar */
  background: #0F1A0E;
  position: relative;
  overflow: hidden;
}

/* --- Linke Text-Seite --- */
.hero-split-text {
  position: relative;
  padding: calc(131px + clamp(28px, 3.5vw, 52px)) clamp(32px, 4vw, 64px) clamp(32px, 4vw, 56px);
  background:
    linear-gradient(180deg, #1F2E19 0%, #1A251A 60%, #141E13 100%);
  color: #FAF7F2;
  display: flex; flex-direction: column; justify-content: space-between;
  z-index: 2;
  overflow: hidden;
}
.hero-split-text::after {
  /* Rechte Kante: feine helle Linie als Rahmen-Ton */
  content: "";
  position: absolute; top: 15%; bottom: 15%; right: 0;
  width: 1px;
  background: linear-gradient(180deg, transparent, rgba(191, 205, 169, .35), transparent);
  z-index: 3;
}

/* Ornamentaler Waldrain-Mark dezent links oben */
.hero-split-mark {
  position: absolute; top: calc(131px + 40px); left: clamp(32px, 5vw, 80px);
  width: 52px; height: 72px;
  background-color: #BFCDA9;
  -webkit-mask: url("assets/brand/waldrain-mark.svg") center/contain no-repeat;
          mask: url("assets/brand/waldrain-mark.svg") center/contain no-repeat;
  opacity: .55;
}

.hero-split-text-inner {
  max-width: 480px;
  margin-top: clamp(36px, 5vh, 64px);
  flex: 1 1 auto;
}

.hero-split-eyebrow {
  color: #BFCDA9;
}
.hero-split-eyebrow::before { background: rgba(191, 205, 169, .75); }

.hero-split-title {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(38px, 3.2vw + 10px, 62px);
  line-height: 1.03;
  letter-spacing: -.015em;
  color: #FAF7F2;
  margin: var(--space-md) 0 var(--space-md);
}
.hero-split-title em {
  font-style: italic;
  color: #C5D4B0;
  display: block;
  margin-top: 0.18em;
  font-weight: 400;
}
.hero-split-lead {
  font-size: clamp(14.5px, .3vw + 13px, 17px);
  line-height: 1.68;
  color: rgba(250, 247, 242, .82);
  max-width: 44ch;
  margin: 0 0 clamp(20px, 2.5vw, 36px);
}
.hero-split-actions {
  display: flex; align-items: center; flex-wrap: wrap;
  gap: var(--space-md) var(--space-lg);
}
.waldrain-status--dark {
  background: rgba(191, 205, 169, .10);
  border: 1px solid rgba(191, 205, 169, .32);
  color: #E6EADD;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  margin-top: 0;
}
.waldrain-status--dark .waldrain-status-text strong { color: #C5D4B0; }
.waldrain-status--dark .waldrain-status-dot {
  background: #C5D4B0;
  box-shadow: 0 0 0 4px rgba(197, 212, 176, .22);
}

/* Meta-Zeile unten in der Text-Spalte */
.hero-split-meta {
  display: flex; align-items: center;
  gap: 14px;
  margin-top: clamp(32px, 4vw, 56px);
  font-size: 10px;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: rgba(191, 205, 169, .62);
  font-weight: 600;
}
.hero-split-meta-sep {
  width: 20px; height: 1px;
  background: rgba(191, 205, 169, .32);
  display: inline-block;
}

/* --- Rechte Bild-Seite --- */
.hero-split-image {
  position: relative;
  overflow: hidden;
  background: #0F1A0E;
}
.hero-split-image-inner {
  position: absolute; inset: 0;
  background-image: url("assets/brand/logo-waldrain.jpeg");
  background-size: cover;
  background-position: center 50%;
  filter: saturate(1) contrast(1.04);
  animation: waldrainHeroKenSlow 34s ease-in-out infinite alternate;
}
@keyframes waldrainHeroKenSlow {
  0%   { transform: scale(1.03) translate3d(0, 0, 0); }
  100% { transform: scale(1.08) translate3d(-0.8%, -0.6%, 0); }
}
/* Feine gr\u00fcne Tint auf dem Bild, damit es zur CI passt */
.hero-split-image::before {
  content: "";
  position: absolute; inset: 0;
  background:
    linear-gradient(90deg, rgba(15, 24, 14, .28) 0%, transparent 14%),
    linear-gradient(180deg, transparent 0%, transparent 65%, rgba(12, 20, 10, .55) 100%),
    linear-gradient(135deg, rgba(45, 59, 38, .14) 0%, transparent 60%);
  z-index: 2;
  pointer-events: none;
}
/* Untere Fade f\u00fcr Caption */
.hero-split-image-caption {
  position: absolute;
  bottom: clamp(18px, 2vw, 28px);
  right: clamp(18px, 2vw, 32px);
  display: inline-flex; align-items: center; gap: 12px;
  padding: 9px 18px;
  background: rgba(15, 24, 14, .78);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: #E6EADD;
  font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase;
  font-weight: 600;
  z-index: 3;
}
.hero-split-image-caption-line {
  width: 22px; height: 1px;
  background: #BFCDA9;
  display: inline-block;
}

/* Breadcrumb-Hell (wird \u00fcberall wiederverwendet) */
.breadcrumb--light {
  color: rgba(250, 247, 242, .72);
  font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase;
  margin-bottom: var(--space-md); font-weight: 500;
}
.breadcrumb--light a { color: rgba(250, 247, 242, .92); text-decoration: none; }
.breadcrumb--light a:hover { color: #BFCDA9; }
.breadcrumb--light .sep { color: rgba(191, 205, 169, .55); margin: 0 10px; }

/* Waldrain Topbar:
   - DEFAULT (kein .is-dark): heller cream-Topbar, Text dunkel (wenn User gescrollt hat)
   - .is-dark: transparent/dunkel \u00fcber dem Hero, weisser Text
   main.js togglet .is-dark je nach Scroll-Position. */
body.is-waldrain .topbar {
  background: rgba(250, 247, 242, .94);
  border-bottom: 1px solid rgba(45, 59, 38, .10);
  backdrop-filter: saturate(1.2) blur(14px);
  -webkit-backdrop-filter: saturate(1.2) blur(14px);
}
body.is-waldrain .topbar .brand-wordmark { color: var(--ink-display); }
body.is-waldrain .topbar nav a { color: var(--ink-secondary); }
body.is-waldrain .topbar nav a:hover { color: var(--accent); }
body.is-waldrain .topbar nav a.is-active { color: var(--accent); }
body.is-waldrain .topbar .nav-toggle { color: var(--ink-display); border-color: var(--border-strong); }

/* Dark-State \u00fcber dem Hero (wird via JS getoggelt) */
body.is-waldrain .topbar.is-dark {
  background: linear-gradient(180deg, rgba(15, 24, 14, .55), rgba(15, 24, 14, 0));
  border-bottom-color: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
body.is-waldrain .topbar.is-dark .brand-wordmark { color: #FAF7F2; }
body.is-waldrain .topbar.is-dark nav a { color: rgba(250, 247, 242, .85); }
body.is-waldrain .topbar.is-dark nav a:hover { color: #FAF7F2; }
body.is-waldrain .topbar.is-dark .nav-toggle {
  color: #FAF7F2;
  border-color: rgba(250, 247, 242, .4);
}
body.is-waldrain .topbar.is-dark .waldrain-nav-status {
  background: rgba(191, 205, 169, .18);
  border: 1px solid rgba(191, 205, 169, .45);
  color: #FAF7F2;
}
body.is-waldrain .topbar.is-dark .waldrain-nav-status::before {
  background: #C5D4B0;
}
/* Wenn Portal-Bar vorhanden ist: dark-State noch durchsichtiger, damit nicht doppelt abdunkelt */
body:has(.portal-bar).is-waldrain .topbar.is-dark {
  background: rgba(15, 24, 14, .38);
  backdrop-filter: saturate(1.15) blur(16px);
  -webkit-backdrop-filter: saturate(1.15) blur(16px);
}
/* Mobile-Drawer offen: alles wieder hell */
body.is-waldrain .topbar.is-dark.is-drawer-open {
  background: var(--bg-canvas);
  border-bottom: 1px solid var(--border-hair);
}
body.is-waldrain .topbar.is-dark.is-drawer-open .brand-wordmark,
body.is-waldrain .topbar.is-dark.is-drawer-open nav a,
body.is-waldrain .topbar.is-dark.is-drawer-open .nav-toggle {
  color: var(--ink-display);
}

/* Responsive: Mobile stack */
@media (max-width: 900px) {
  .hero-split {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto;
  }
  .hero-split-text {
    padding-top: calc(131px + 32px);
    order: 2;
  }
  .hero-split-image {
    order: 1;
    min-height: 360px;
    aspect-ratio: 4 / 3;
  }
  .hero-split-mark {
    top: calc(131px + 24px);
  }
  .hero-split-text::after { display: none; }
  .hero-split-text-inner { margin-top: clamp(24px, 4vh, 48px); }
}
@media (max-width: 600px) {
  .hero-split-image { min-height: 280px; aspect-ratio: 1 / 1; }
}

/* Status-Badge (Wiederer\u00f6ffnung) */
.waldrain-status {
  display: inline-flex; align-items: center; gap: 12px;
  margin-top: var(--space-lg);
  padding: 10px 22px;
  background: rgba(74, 90, 61, .08);
  border: 1px solid rgba(74, 90, 61, .28);
  border-radius: 999px;
  font-size: 12px; letter-spacing: .16em; text-transform: uppercase;
  font-weight: 600; color: var(--ink-display);
}
.waldrain-status-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 4px rgba(74, 90, 61, .2);
  animation: waldrainPulse 2.4s ease-in-out infinite;
}
.waldrain-status-text strong { color: var(--accent); margin-left: 2px; }
@keyframes waldrainPulse {
  0%, 100% { box-shadow: 0 0 0 4px rgba(74, 90, 61, .15); }
  50%      { box-shadow: 0 0 0 10px rgba(74, 90, 61, 0); }
}

/* Waldrain · grüne Section-Backgrounds für mehr CI */
body.is-waldrain .section-deep {
  background: #E6EADD;
  position: relative;
}
body.is-waldrain .section-deep::before {
  content: ""; position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 80% 60% at 20% 0%, rgba(45, 59, 38, .08), transparent 60%),
    radial-gradient(ellipse 70% 50% at 80% 100%, rgba(107, 125, 95, .12), transparent 60%);
  pointer-events: none;
}
body.is-waldrain .section-deep > * { position: relative; z-index: 1; }

/* Waldrain-Watermark in section-deep Blöcken */
body.is-waldrain .section-deep::after {
  content: ""; position: absolute; right: -4%; bottom: -20%;
  width: clamp(180px, 24vw, 360px);
  height: clamp(250px, 33vw, 504px);
  background-color: var(--accent);
  -webkit-mask: url("assets/brand/waldrain-mark.svg") center/contain no-repeat;
          mask: url("assets/brand/waldrain-mark.svg") center/contain no-repeat;
  opacity: .05;
  z-index: 0; pointer-events: none;
}

/* Waldrain · Welt-Split dunkel-grün Akzente */
body.is-waldrain .welt-index { color: var(--accent-hair); }
body.is-waldrain .welt-index::after { background: var(--accent-hair); }
body.is-waldrain .welt-meta dt { color: var(--ink-muted); }
body.is-waldrain .welt-meta dd { color: var(--accent-deep); }

/* Waldrain · Info-Tile stärker akzentuiert */
body.is-waldrain .info-tile {
  background: var(--bg-surface);
  border: 1px solid rgba(45, 59, 38, .15);
  padding: clamp(20px, 2vw, 28px);
  border-radius: 2px;
  transition: all .4s var(--ease);
}
body.is-waldrain .info-tile:hover {
  border-color: var(--accent);
  transform: translateY(-3px);
  box-shadow: 0 18px 40px rgba(20, 30, 18, .10);
}

/* Waldrain · Step Cards etwas grüner */
body.is-waldrain .step-num { color: var(--accent-hair); }

/* Waldrain · Prologue Paragraph first-letter */
body.is-waldrain .prologue p:not(.prologue-sign)::first-letter {
  font-family: var(--font-display); font-weight: 500;
  color: var(--accent);
  font-size: 1.15em;
}

/* Waldrain · Quote section akzentuiert */
body.is-waldrain .quote-editorial::before {
  color: var(--accent-hair);
  opacity: .35;
}

/* Waldrain · Nav-Status-Badge (Legacy, ungenutzt) */
.waldrain-nav-status {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 12px 22px;
  font-size: 10.5px; letter-spacing: .2em; text-transform: uppercase;
  font-weight: 600;
  color: var(--accent);
  background: transparent;
  border: 1px solid var(--accent-hair);
  border-radius: 2px;
}

/* ==================== TEASER-Sektion "Ausblick" ==================== */
.waldrain-teaser {
  padding: clamp(72px, 9vw, 120px) 0;
  position: relative;
}
.waldrain-teaser-head {
  max-width: 780px; margin: 0 auto clamp(40px, 5vw, 64px);
  text-align: center;
  padding: 0 clamp(20px, 4vw, 56px);
}
.waldrain-teaser-head .eyebrow-line {
  justify-content: center;
  color: var(--accent);
}
.waldrain-teaser-head .eyebrow-line::before { background: var(--accent-hair); }
.waldrain-teaser-head .eyebrow-line::after {
  content: ""; width: 36px; height: 1px; background: var(--accent-hair);
}
.waldrain-teaser-head h2 { color: var(--ink-display); margin: var(--space-md) 0; }
.waldrain-teaser-head .lead { margin: 0 auto; }

.waldrain-teaser-grid {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: clamp(20px, 2vw, 32px);
  max-width: 1080px;
  margin: 0 auto;
  padding: 0 clamp(20px, 4vw, 56px);
}
.waldrain-teaser-card {
  background: var(--bg-surface);
  border: 1px solid rgba(45, 59, 38, .15);
  border-radius: 2px;
  padding: clamp(32px, 4vw, 48px);
  position: relative; overflow: hidden;
  transition: transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease);
}
.waldrain-teaser-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: var(--accent);
  transform: scaleX(0); transform-origin: left;
  transition: transform .5s var(--ease);
}
.waldrain-teaser-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 22px 50px rgba(20, 30, 18, .12);
  border-color: var(--accent-hair);
}
.waldrain-teaser-card:hover::before { transform: scaleX(1); }
.waldrain-teaser-num {
  display: block;
  font-family: var(--font-display); font-style: italic; font-weight: 400;
  font-size: clamp(28px, 2.2vw + 10px, 40px);
  color: var(--accent);
  line-height: 1;
  margin-bottom: var(--space-sm);
  opacity: .85;
}
.waldrain-teaser-card h3 {
  font-size: clamp(22px, 1.4vw + 10px, 28px);
  color: var(--ink-display);
  margin: 0 0 var(--space-xs);
}
.waldrain-teaser-card p {
  font-size: var(--text-base);
  color: var(--ink-secondary);
  line-height: 1.7;
  margin: 0;
  max-width: 44ch;
}

@media (max-width: 720px) {
  .waldrain-teaser-grid { grid-template-columns: 1fr; }
}

/* ==================================================================== */
/* Welt-Media · Caption für das Waldrain-Foto                             */
/* ==================================================================== */
.welt-media--waldrain {
  position: relative;
}
.welt-media--waldrain .welt-media-inner {
  background-size: cover;
  background-position: center 55%;
  filter: saturate(0.92) contrast(1.03);
  transition: filter .6s var(--ease), transform .8s var(--ease);
}
.welt-media--waldrain:hover .welt-media-inner {
  filter: saturate(1) contrast(1.05);
  transform: scale(1.015);
}
.welt-media-caption {
  position: absolute;
  bottom: clamp(14px, 1.6vw, 22px);
  left: clamp(18px, 2vw, 28px);
  display: inline-flex; align-items: center; gap: 12px;
  padding: 9px 16px;
  background: rgba(20, 30, 18, .78);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: #E6EADD;
  font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase;
  font-weight: 600;
  border-radius: 2px;
  z-index: 2;
}
.welt-media-caption-line {
  width: 22px; height: 1px; background: #BFCDA9;
  display: inline-block;
}

/* ==================================================================== */
/* Waldrain Feature · Full-Bleed Parallax-Showcase                       */
/* ==================================================================== */
.waldrain-feature {
  position: relative;
  min-height: clamp(520px, 72vh, 760px);
  display: flex; align-items: center;
  overflow: hidden;
  color: #FAF7F2;
  padding: clamp(80px, 10vw, 140px) 0;
}
.waldrain-feature-image {
  position: absolute; inset: 0;
  background-image: url("assets/brand/logo-waldrain.jpeg");
  background-size: cover;
  background-position: center 50%;
  background-attachment: fixed;
  filter: saturate(0.82) contrast(1.06) brightness(0.95);
  z-index: 0;
  animation: waldrainFeatureKen 32s ease-in-out infinite alternate;
}
@keyframes waldrainFeatureKen {
  0%   { transform: scale(1.02) translate3d(0, 0, 0); }
  100% { transform: scale(1.08) translate3d(1%, -0.5%, 0); }
}
.waldrain-feature-overlay {
  position: absolute; inset: 0;
  background:
    linear-gradient(90deg,
      rgba(15, 24, 14, .94) 0%,
      rgba(20, 30, 18, .82) 32%,
      rgba(20, 30, 18, .40) 62%,
      rgba(20, 30, 18, .22) 100%),
    linear-gradient(180deg,
      rgba(15, 24, 14, .55) 0%,
      transparent 18%,
      transparent 80%,
      rgba(12, 20, 10, .75) 100%);
  z-index: 1;
}
@media (hover: none), (max-width: 900px) {
  .waldrain-feature-image { background-attachment: scroll; }
  .waldrain-feature-overlay {
    background:
      linear-gradient(180deg,
        rgba(15, 24, 14, .78) 0%,
        rgba(20, 30, 18, .55) 45%,
        rgba(12, 20, 10, .82) 100%);
  }
}
.waldrain-feature-inner {
  position: relative; z-index: 2;
}
.waldrain-feature-content {
  max-width: 620px;
  padding-left: clamp(8px, 2vw, 24px);
}
.waldrain-feature-content .eyebrow-line--light {
  color: #BFCDA9;
  text-shadow: 0 1px 12px rgba(0, 0, 0, .5);
}
.waldrain-feature-content .eyebrow-line--light::before { background: rgba(191, 205, 169, .8); }
.waldrain-feature-title {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(36px, 4.4vw + 8px, 74px);
  line-height: 1.02; letter-spacing: -.01em;
  color: #FAF7F2;
  margin: var(--space-md) 0 var(--space-md);
  text-shadow: 0 2px 28px rgba(0, 0, 0, .45);
}
.waldrain-feature-title em {
  font-style: italic; color: #C5D4B0; display: block;
  font-weight: 400;
}
.waldrain-feature-lead {
  font-size: clamp(16px, .6vw + 13px, 19px);
  line-height: 1.7;
  color: rgba(250, 247, 242, .88);
  max-width: 54ch;
  margin: 0 0 var(--space-xl);
  text-shadow: 0 1px 12px rgba(0, 0, 0, .4);
}
.waldrain-feature-meta {
  display: grid; grid-template-columns: repeat(3, auto);
  gap: clamp(24px, 3vw, 48px);
  padding-top: var(--space-md);
  border-top: 1px solid rgba(191, 205, 169, .25);
  max-width: 540px;
}
.waldrain-feature-meta > div {
  display: flex; flex-direction: column; gap: 6px;
}
.waldrain-feature-meta-eyebrow {
  font-size: 10px; letter-spacing: .24em; text-transform: uppercase;
  color: #BFCDA9; font-weight: 600;
}
.waldrain-feature-meta-val {
  font-family: var(--font-display); font-size: clamp(15px, .5vw + 12px, 18px);
  color: #FAF7F2;
}
@media (max-width: 640px) {
  .waldrain-feature-meta { grid-template-columns: 1fr; gap: 16px; }
}

/* Decorative Waldrain-Mark im Feature (rechts) */
.waldrain-feature-mark {
  position: absolute;
  right: -6%; top: 50%;
  transform: translateY(-50%);
  width: clamp(280px, 34vw, 520px);
  height: clamp(380px, 47vw, 728px);
  background-color: #E6EADD;
  -webkit-mask: url("assets/brand/waldrain-mark.svg") center/contain no-repeat;
          mask: url("assets/brand/waldrain-mark.svg") center/contain no-repeat;
  opacity: .06;
  z-index: 2;
  pointer-events: none;
}
@media (max-width: 900px) {
  .waldrain-feature-mark { display: none; }
}

/* Eyebrow-Line auf hellem Hintergrund (Feature-Variante) */
.eyebrow-line--light {
  color: rgba(250, 247, 242, .72);
}
.eyebrow-line--light::before { background: rgba(250, 247, 242, .5); }

/* ==================================================================== */
/* Extra gr\u00fcne CI: Section-Transition-Dividers f\u00fcr Waldrain-Seite       */
/* ==================================================================== */
body.is-waldrain .section + .section:not(.section-deep):not(.waldrain-feature)::before,
body.is-waldrain .prologue + .welt::before {
  content: none;
}

/* Gr\u00fcner Akzent-Streifen am Section-Top */
body.is-waldrain .prologue {
  position: relative;
  background: linear-gradient(180deg, var(--bg-canvas) 0%, #F3F1E8 100%);
}
body.is-waldrain .prologue::before {
  content: "";
  position: absolute; top: 0; left: 50%;
  transform: translateX(-50%);
  width: 48px; height: 2px;
  background: var(--accent);
}

/* Gr\u00fcne Akzent-Border am unteren Section-Rand */
body.is-waldrain .welt::after {
  content: "";
  position: absolute; bottom: 0; left: 50%;
  transform: translateX(-50%);
  width: 100px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent-hair), transparent);
}

/* Gr\u00fcne Linie oben im Konzept */
body.is-waldrain #konzept { position: relative; }
body.is-waldrain #konzept::before {
  content: "";
  position: absolute; top: 0; left: 50%;
  transform: translateX(-50%);
  width: 1px; height: 48px;
  background: linear-gradient(180deg, transparent, var(--accent-hair));
}

/* Step-Cards mit subtilem gr\u00fcnen Hover-Akzent */
body.is-waldrain .step {
  position: relative;
  transition: transform .4s var(--ease);
}
body.is-waldrain .step::before {
  content: "";
  position: absolute; top: 0; left: 0;
  width: 0; height: 2px;
  background: var(--accent);
  transition: width .5s var(--ease);
}
body.is-waldrain .step:hover { transform: translateY(-2px); }
body.is-waldrain .step:hover::before { width: 100%; }

/* Gr\u00fcner Hintergrund-Tint f\u00fcr Benachrichtigungs-Sektion */
body.is-waldrain #benachrichtigen {
  background: linear-gradient(180deg, var(--bg-canvas) 0%, rgba(230, 234, 221, .42) 100%);
  position: relative;
}
body.is-waldrain #benachrichtigen::after {
  content: "";
  position: absolute; bottom: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(45, 59, 38, .18), transparent);
}

/* Gr\u00fcner CTA-Button-Glow f\u00fcr Waldrain */
body.is-waldrain .btn-primary {
  background: var(--accent);
  color: #FAF7F2;
  border: 1px solid var(--accent);
  position: relative;
  overflow: hidden;
  transition: all .35s var(--ease);
}
body.is-waldrain .btn-primary::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(120deg, transparent 30%, rgba(197, 212, 176, .28) 50%, transparent 70%);
  transform: translateX(-100%);
  transition: transform .7s var(--ease);
}
body.is-waldrain .btn-primary:hover {
  background: var(--accent-deep);
  border-color: var(--accent-deep);
  transform: translateY(-1px);
  box-shadow: 0 14px 30px rgba(20, 30, 18, .28);
}
body.is-waldrain .btn-primary:hover::after { transform: translateX(100%); }

/* Footer auf Waldrain dunkelgr\u00fcn getintet */
body.is-waldrain .footer {
  background: linear-gradient(180deg, #1A251A 0%, #0F1A0E 100%);
  color: #D3DCC6;
}
body.is-waldrain .footer-brand .brand-mark {
  background-color: #BFCDA9;
}
body.is-waldrain .footer-brand-name { color: #FAF7F2; }
body.is-waldrain .footer-tagline { color: rgba(230, 234, 221, .68); }
body.is-waldrain .footer-col h4 { color: #E6EADD; }
body.is-waldrain .footer-col a,
body.is-waldrain .footer-col span { color: rgba(230, 234, 221, .78); }
body.is-waldrain .footer-col a:hover { color: #FAF7F2; }
body.is-waldrain .footer-col .muted-line { color: rgba(230, 234, 221, .5); }
body.is-waldrain .footer-bottom {
  border-top: 1px solid rgba(191, 205, 169, .14);
  color: rgba(230, 234, 221, .55);
}
body.is-waldrain .footer-legal a { color: rgba(230, 234, 221, .72); }
body.is-waldrain .footer-legal a:hover { color: #FAF7F2; }

/* Hirschen-Truck \u00dcbergangs-Block (ungenutzt, bleibt als Fallback) */
.waldrain-truck {
  padding: clamp(64px, 8vw, 112px) 0;
}
.waldrain-truck-inner {
  background: var(--bg-surface);
  border: 1px solid var(--border-hair);
  border-radius: 2px;
  padding: clamp(32px, 4vw, 56px);
  position: relative; overflow: hidden;
}
.waldrain-truck-inner::before {
  content: ""; position: absolute; top: 0; left: 0; width: 4px; height: 100%;
  background: linear-gradient(180deg, var(--accent), var(--accent-deep));
}
.waldrain-truck-head {
  margin-bottom: var(--space-lg);
}
.waldrain-truck-head .eyebrow-line { color: var(--accent); }
.waldrain-truck-head .eyebrow-line::before { background: var(--accent-hair); }
.waldrain-truck-head h2 {
  font-size: clamp(28px, 2.4vw + 14px, 42px);
  margin: var(--space-sm) 0 0;
}
.waldrain-truck p {
  font-size: clamp(15.5px, .6vw + 13px, 17.5px);
  line-height: 1.75; color: var(--ink-secondary);
  max-width: 62ch;
  margin: 0 0 var(--space-lg);
}
.waldrain-truck-meta {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 2vw, 36px);
  padding-top: var(--space-md);
  border-top: 1px solid var(--border-hair);
}
.waldrain-truck-meta > div {
  display: flex; flex-direction: column; gap: 4px;
}
.waldrain-truck-meta .eyebrow {
  font-size: 10px; letter-spacing: .22em; text-transform: uppercase;
  color: var(--accent); font-weight: 600;
}
.waldrain-truck-meta .val {
  font-family: var(--font-display); font-size: clamp(15px, .5vw + 12px, 18px);
  color: var(--ink-display);
}
@media (max-width: 640px) {
  .waldrain-truck-meta { grid-template-columns: 1fr; gap: 14px; }
}

/* Partner-Badge auf Waldrain-Card */
.portal-card-badge {
  position: absolute; top: clamp(20px, 2.4vw, 36px); right: clamp(22px, 2.6vw, 40px);
  z-index: 3;
  padding: 4px 10px;
  background: rgba(250, 247, 242, .96);
  color: var(--haus-color, var(--accent));
  font-family: var(--font-ui); font-size: 9px;
  letter-spacing: .28em; text-transform: uppercase; font-weight: 700;
  border-radius: 999px;
  border: 1px solid var(--haus-color, var(--accent));
}

/* ---- Catering-CTA · elegante Service-Zeile ---- */
.portal-cta-catering {
  display: block;
  max-width: 1480px; margin: clamp(40px, 5vw, 88px) auto 0;
  background: var(--bg-ink);
  color: rgba(250, 247, 242, .92);
  border-radius: 2px; overflow: hidden;
  text-decoration: none;
  position: relative; isolation: isolate;
  transition: transform .45s var(--ease), box-shadow .45s var(--ease);
}
/* gradient overlay */
.portal-cta-catering::before {
  content: ""; position: absolute; inset: 0; z-index: 0;
  background:
    radial-gradient(ellipse 60% 100% at 100% 50%, rgba(138, 106, 62, .55), transparent 65%),
    radial-gradient(ellipse 40% 60% at 0% 0%, rgba(201, 165, 106, .12), transparent 50%),
    linear-gradient(90deg, var(--bg-ink) 0%, var(--bg-ink-soft) 100%);
  opacity: .95; transition: opacity .5s var(--ease);
}
/* subtle ruehri watermark rechts */
.portal-cta-catering::after {
  content: ""; position: absolute; right: -40px; top: 50%;
  transform: translateY(-50%);
  width: 220px; height: 300px; z-index: 0;
  background-color: var(--accent-hair);
  -webkit-mask: url("assets/brand/ruehri.svg") center/contain no-repeat;
          mask: url("assets/brand/ruehri.svg") center/contain no-repeat;
  opacity: .06;
  pointer-events: none;
}
.portal-cta-catering:hover {
  transform: translateY(-3px);
  box-shadow: 0 28px 60px rgba(20, 14, 6, .22);
}
.portal-cta-catering:hover::before { opacity: 1; }

.portal-cta-catering-inner {
  position: relative; z-index: 1;
  display: grid; grid-template-columns: 1fr auto;
  align-items: center;
  gap: clamp(28px, 4vw, 64px);
  padding: clamp(32px, 3.5vw, 56px) clamp(28px, 3vw, 56px);
}
.portal-cta-left { display: flex; flex-direction: column; gap: 4px; max-width: 64ch; }
.portal-cta-left .portal-card-eyebrow {
  color: var(--accent-hair); margin-bottom: 4px; letter-spacing: .26em;
}
.portal-cta-left h3 {
  font-family: var(--font-display); font-weight: 500;
  color: #fff;
  font-size: clamp(26px, 1.6vw + 14px, 40px);
  margin: 0 0 8px; line-height: 1.1; letter-spacing: -.005em;
}
.portal-cta-left p {
  color: rgba(250, 247, 242, .78);
  font-size: clamp(13.5px, .4vw + 12px, 15.5px);
  line-height: 1.65;
  margin: 0;
}
.portal-cta-right {
  display: flex; flex-direction: column; align-items: flex-end;
  gap: 14px;
}
.portal-cta-badge {
  font-size: 9.5px; letter-spacing: .32em; text-transform: uppercase;
  color: var(--accent-hair); font-weight: 700;
  padding: 5px 14px;
  border: 1px solid rgba(201, 165, 106, .4);
  border-radius: 999px;
}
.portal-cta-action {
  display: inline-flex; align-items: center; gap: 14px;
  font-size: 12px; letter-spacing: .24em; text-transform: uppercase;
  font-weight: 600; color: #fff;
  padding: 16px 30px;
  background: var(--accent); border-radius: 2px;
  transition: all .32s var(--ease);
  box-shadow: 0 4px 14px rgba(138, 106, 62, .3);
}
.portal-cta-action svg { transition: transform .32s var(--ease); }
.portal-cta-catering:hover .portal-cta-action {
  background: var(--accent-deep); gap: 18px;
  box-shadow: 0 8px 24px rgba(138, 106, 62, .45);
}
.portal-cta-catering:hover .portal-cta-action svg { transform: translateX(4px); }

/* Portal-Mini-Section (Intro / Verbindungstext) */
.portal-intro {
  padding: clamp(60px, 7vw, 110px) 0;
  text-align: center;
  max-width: 760px; margin: 0 auto;
  padding-left: clamp(20px, 4vw, 56px); padding-right: clamp(20px, 4vw, 56px);
}
.portal-intro p {
  font-family: var(--font-display); font-size: clamp(20px, 1.2vw + 14px, 28px);
  color: var(--ink-secondary); line-height: 1.6;
  margin: 0;
}
.portal-intro p em { font-style: italic; color: var(--accent); font-weight: 500; }

/* ---- Haus-Card · eine Marke pro Editorial-Row ---- */
.haus {
  max-width: 1260px; margin: 0 auto;
  display: grid; grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: center;
  padding: clamp(80px, 10vw, 160px) clamp(20px, 4vw, 56px);
  position: relative;
}
.haus + .haus { border-top: 1px solid var(--border-hair); }
.haus.flip .haus-text { order: 2; }
.haus.flip .haus-media { order: 1; }

.haus-media {
  position: relative; overflow: hidden;
  aspect-ratio: 5 / 4;
  background: var(--bg-canvas-deep);
  border-radius: 2px;
  box-shadow: var(--shadow-img);
}
.haus-media::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(150deg, var(--bg-canvas-deep), var(--bg-paper));
}
.haus-media-inner {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform .8s var(--ease);
}
.haus:hover .haus-media-inner { transform: scale(1.04); }
.haus-media::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(28, 24, 20, .22) 100%);
  pointer-events: none;
}
/* Marken-Farb-Akzent · oben als dünne Leiste */
.haus-media .haus-tag {
  position: absolute; top: 18px; left: 18px; z-index: 2;
  padding: 6px 14px;
  background: rgba(250, 247, 242, .96); color: var(--haus-color, var(--accent));
  font-size: 10px; letter-spacing: .22em; text-transform: uppercase;
  font-weight: 700;
  border-radius: 2px;
}

.haus-index {
  display: inline-flex; align-items: baseline; gap: 14px;
  font-family: var(--font-display); font-style: italic; font-weight: 400;
  font-size: clamp(44px, 4.5vw + 14px, 84px);
  color: var(--haus-color, var(--accent-hair));
  line-height: .85;
  opacity: .9;
  margin-bottom: var(--space-sm);
}
.haus-index::after {
  content: ""; flex: 0 0 auto;
  width: 64px; height: 1px;
  background: var(--haus-color, var(--accent-hair));
  opacity: .5; align-self: center; margin-left: 4px;
}

.haus-eyebrow {
  display: inline-block;
  font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase;
  font-weight: 600;
  color: var(--haus-color, var(--accent));
  margin-bottom: var(--space-sm);
}
.haus-text h2 {
  font-size: clamp(36px, 3.6vw + 14px, 64px);
  margin: 0 0 var(--space-md);
  color: var(--ink-display);
  letter-spacing: -.01em; line-height: 1.02;
}
.haus-text p {
  font-size: clamp(15.5px, .6vw + 13px, 17.5px);
  color: var(--ink-secondary);
  line-height: 1.75;
  max-width: 52ch;
  margin: 0 0 var(--space-md);
}
.haus-text p strong {
  color: var(--ink-display); font-weight: 500;
  font-family: var(--font-display);
  font-size: 1.08em;
}

.haus-meta {
  margin-top: var(--space-md); padding-top: var(--space-md);
  border-top: 1px solid var(--border-hair);
  display: flex; gap: clamp(22px, 3vw, 44px); flex-wrap: wrap;
}
.haus-meta-item {
  display: flex; flex-direction: column; gap: 4px;
}
.haus-meta-label {
  font-size: 10px; text-transform: uppercase; letter-spacing: .22em;
  color: var(--ink-muted); font-weight: 600;
}
.haus-meta-value {
  font-family: var(--font-display); font-size: var(--text-lg);
  color: var(--ink-display);
}

.haus-cta {
  display: inline-flex; align-items: center; gap: 10px;
  margin-top: var(--space-lg);
  padding: 14px 28px;
  border: 1px solid var(--haus-color, var(--accent));
  color: var(--haus-color, var(--accent));
  font-family: var(--font-ui); font-size: 11px;
  text-transform: uppercase; letter-spacing: .2em;
  font-weight: 600; text-decoration: none;
  border-radius: 2px;
  transition: all .24s var(--ease);
}
.haus-cta:hover {
  background: var(--haus-color, var(--accent));
  color: #fff;
  gap: 14px;
}
.haus-cta.external::after { content: " ↗"; font-size: 12px; }

/* Individuelle Farbakzente pro Haus */
.haus--hof     { --haus-color: #8A6A3E; }
.haus--gupi    { --haus-color: #6E2E35; }
.haus--blumen  { --haus-color: #5A6B4C; }
.haus--waldrain{ --haus-color: #3F4A37; }

/* Portal-CTA / Familie */
.portal-family {
  background: var(--bg-ink); color: rgba(250, 247, 242, .9);
  padding: clamp(64px, 7vw, 100px) 0;
  text-align: center;
  position: relative; overflow: hidden;
}
.portal-family::before {
  content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: min(82%, 1060px); height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent-hair), transparent);
  opacity: .6;
}
.portal-family-inner {
  max-width: 720px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 56px);
}

/* Portal-Hosts · Felix & Christoph hoch oben, vor dem Heritage-Band */
.portal-hosts {
  background: var(--bg-paper);
  padding: clamp(56px, 6vw, 96px) 0 clamp(48px, 5vw, 80px);
  text-align: center;
  border-bottom: 1px solid var(--border-hair);
}
.portal-hosts-inner {
  max-width: 560px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 56px);
}
.portal-hosts-portrait {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px;
  width: min(360px, 90%);
  aspect-ratio: 5 / 4;
  margin: 0 auto clamp(20px, 2vw, 28px);
  border-radius: 2px;
  overflow: hidden;
  box-shadow: 0 22px 46px rgba(20,14,6,.14), 0 0 0 1px rgba(138,106,62,.12);
  background: var(--bg-canvas-deep);
}
.portal-hosts-person {
  position: relative;
  background-size: cover;
  background-position: center 22%;
  overflow: hidden;
  transition: transform 1.2s var(--ease);
}
.portal-hosts-portrait:hover .portal-hosts-person { transform: scale(1.03); }
.portal-hosts-person::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 58%, rgba(20,14,6,.55) 100%);
  pointer-events: none;
}
.portal-hosts-person-name {
  position: absolute; bottom: 12px; left: 14px;
  color: #fff;
  font-family: var(--font-display);
  font-style: italic;
  font-size: 15px;
  letter-spacing: .02em;
  text-shadow: 0 2px 10px rgba(20,14,6,.85);
}
.portal-hosts-caption {
  margin: 0;
  display: flex; flex-direction: column; gap: 6px;
  align-items: center;
}
.portal-hosts-caption-name {
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(20px, 1.1vw + 14px, 26px);
  color: var(--ink-display);
  letter-spacing: .01em;
}
.portal-hosts-caption-role {
  font-size: 11px;
  letter-spacing: .22em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--ink-muted);
}

.portal-family-portrait {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px;
  width: min(340px, 80%);
  aspect-ratio: 5 / 4;
  margin: 0 auto clamp(28px, 3vw, 44px);
  border-radius: 2px;
  overflow: hidden;
  box-shadow: 0 32px 64px rgba(0,0,0,.5), 0 0 0 1px rgba(201,165,106,.18);
}
.portal-family-person {
  position: relative;
  background-size: cover;
  background-position: center 22%;
  background-color: #000;
  overflow: hidden;
  transition: transform 1.2s var(--ease);
}
.portal-family-portrait:hover .portal-family-person { transform: scale(1.03); }
.portal-family-person::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 55%, rgba(0,0,0,.55) 100%);
  pointer-events: none;
}
.portal-family-person-name {
  position: absolute; bottom: 10px; left: 12px;
  color: #fff;
  font-family: var(--font-display);
  font-style: italic;
  font-size: 14px;
  letter-spacing: .02em;
  text-shadow: 0 2px 10px rgba(0,0,0,.9);
}
.portal-family .eyebrow-line {
  justify-content: center; color: var(--accent-hair); margin-bottom: var(--space-md);
}
.portal-family .eyebrow-line::before,
.portal-family .eyebrow-line::after {
  content: ""; width: 36px; height: 1px; background: rgba(201, 165, 106, .55);
}
.portal-family h2 {
  color: #fff;
  font-size: clamp(28px, 2.6vw + 14px, 48px);
  line-height: 1.18; margin: 0 auto var(--space-lg);
  text-wrap: balance;
}
.portal-family p {
  color: rgba(250, 247, 242, .78);
  font-size: clamp(15.5px, .6vw + 13px, 17.5px); line-height: 1.75;
  max-width: 56ch; margin: 0 auto;
}
.portal-family-sign {
  margin-top: var(--space-lg);
  font-family: var(--font-display); font-style: italic;
  font-size: clamp(20px, 1.4vw + 12px, 26px);
  color: #fff;
  position: relative; padding-top: var(--space-md);
  display: inline-block;
}
.portal-family-sign::before {
  content: ""; position: absolute; top: 0; left: 50%;
  transform: translateX(-50%);
  width: 40px; height: 1px; background: var(--accent-hair);
  opacity: .5;
}

/* Portal-Footer · kuratiert */
.portal-footer {
  background: var(--bg-canvas-deep);
  border-top: 1px solid var(--border-hair);
  color: var(--ink-muted);
  font-size: 13px;
}
.portal-footer--full {
  padding: clamp(48px, 5vw, 72px) 0 var(--space-lg);
}
.portal-footer-top {
  max-width: 1400px; margin: 0 auto;
  padding: 0 clamp(20px, 4vw, 56px) clamp(32px, 4vw, 56px);
  display: grid; grid-template-columns: 1.1fr 2.4fr;
  gap: clamp(32px, 4vw, 72px);
  border-bottom: 1px solid var(--border-hair);
}
.portal-footer-brand {
  display: flex; align-items: flex-start; gap: 16px;
}
.portal-footer-brand .brand-mark {
  color: var(--accent);
  width: 44px; height: 60px;
  flex-shrink: 0;
}
.portal-footer-brand-text { display: flex; flex-direction: column; gap: 4px; }
.portal-footer-brand-name {
  font-family: var(--font-display); font-weight: 500;
  font-size: 22px; color: var(--ink-display); letter-spacing: 0;
  line-height: 1;
}
.portal-footer-brand-sub {
  font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase;
  color: var(--accent); font-weight: 600;
  margin-top: 6px;
}
.portal-footer-cols {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(24px, 3vw, 48px);
}
.portal-footer-col {
  display: flex; flex-direction: column; gap: 8px;
}
.portal-footer-col h4 {
  font-family: var(--font-ui);
  font-size: 10px; letter-spacing: .24em; text-transform: uppercase;
  color: var(--accent); font-weight: 600;
  margin: 0 0 8px;
}
.portal-footer-col a {
  color: var(--ink-secondary); text-decoration: none;
  transition: color .2s var(--ease);
}
.portal-footer-col a:hover { color: var(--accent); }
.portal-footer-col span { color: var(--ink-muted); }
.portal-footer-bottom {
  max-width: 1400px; margin: 0 auto;
  padding: var(--space-lg) clamp(20px, 4vw, 56px) 0;
  display: flex; justify-content: space-between; align-items: center;
  flex-wrap: wrap; gap: 12px;
  font-size: 12px;
}
.portal-footer-bottom a { color: var(--ink-secondary); text-decoration: none; }
.portal-footer-bottom a:hover { color: var(--accent); }
.portal-footer-legal { color: var(--ink-muted); }

/* Alte Minimal-Variante bleibt kompatibel falls genutzt */
.portal-footer-inner {
  display: flex; justify-content: space-between; align-items: center;
  flex-wrap: wrap; gap: 12px;
  padding: 0 clamp(20px, 4vw, 56px); max-width: 1260px; margin: 0 auto;
}

@media (max-width: 820px) {
  .portal-footer--full { padding: 40px 0 24px; }
  .portal-footer-top { grid-template-columns: 1fr; gap: 28px; padding-bottom: 28px; }
  .portal-footer-cols { grid-template-columns: 1fr 1fr; gap: 20px; }
  .portal-footer-brand { gap: 12px; }
  .portal-footer-brand .brand-mark { width: 36px; height: 50px; }
  .portal-footer-col { gap: 6px; font-size: 12px; }
  .portal-footer-col h4 { margin-bottom: 4px; }
  .portal-footer-bottom { flex-direction: column; align-items: flex-start; padding-top: 20px; font-size: 11px; }
  .portal-family { padding: 40px 0 !important; }
  .portal-family h2 { font-size: clamp(22px, 5.6vw, 32px); }
  .portal-family p { font-size: 14px; line-height: 1.6; }
}
@media (max-width: 540px) {
  .portal-footer-cols { grid-template-columns: 1fr; gap: 18px; }
  .portal-footer-brand-name { font-size: 20px; }
}

@media (max-width: 820px) {
  /* Portal-Bar auf RH-Unterseiten · auf Mobile minimiert (nur Back-Link)
     Jetzt als deutlich sichtbarer Button gestaltet (User-Feedback: zu unauffällig) */
  .portal-bar-inner {
    flex-direction: row; gap: 10px; padding: 0;
    font-size: 10.5px; align-items: center;
    flex-wrap: nowrap; justify-content: flex-start;
    min-height: 36px;
  }
  .portal-bar-family { display: none; }
  .portal-bar .lang-switch { display: none !important; }
  .portal-bar-label {
    font-size: 10.5px !important;
    letter-spacing: .18em !important;
    font-weight: 700 !important;
    padding: 8px 14px 8px 0 !important;
    min-height: 36px !important;
    color: var(--accent-hair) !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 4px;
    position: relative;
  }
  .portal-bar-label::after {
    content: "";
    position: absolute; right: 0; top: 50%;
    transform: translateY(-50%);
    width: 1px; height: 18px;
    background: rgba(201, 165, 106, .4);
  }
  /* Wenn Drawer offen, Portal-Bar ganz ausblenden damit Drawer Vollbild wirkt */
  body.nav-open .portal-bar { display: none; }

  /* Portal-Hero · kompakter auf Mobile, damit Cards schneller erreichbar */
  .portal-hero { padding: clamp(48px, 10vw, 72px) 0 clamp(32px, 7vw, 48px) !important; }
  .portal-hero h1 { font-size: clamp(36px, 9vw, 48px) !important; }
  .portal-hero-locations { gap: 14px !important; font-size: 9.5px !important; margin-top: 24px !important; }
  .portal-hero-scroll { margin-top: 28px !important; }
  .portal-hero-mark { opacity: .035; }

  /* Cards · 1-Spalte, 4:3 aspect, kompakter Footer */
  .portal-grid { padding: 0 16px 48px; }
  .portal-grid-inner { grid-template-columns: 1fr; gap: 14px; }
  .portal-card-visual { aspect-ratio: 4 / 3; padding: clamp(28px, 7vw, 44px); }
  .portal-card-num { font-size: 26px; top: 16px; left: 18px; }
  .portal-card-footer { padding: 18px 20px; flex-wrap: nowrap; }
  .portal-card-footer h3 { font-size: clamp(19px, 5vw, 24px); }
  .portal-card-footer p { font-size: 10.5px; }
  .portal-card-eyebrow { font-size: 9px; margin-bottom: 6px; }
  .portal-card-arrow { width: 40px; height: 40px; }

  /* Catering-CTA mobile · vertikal gestapelt */
  .portal-cta-catering { margin: 14px 16px 0; }
  .portal-cta-catering-inner { grid-template-columns: 1fr; gap: 18px; padding: 28px 24px; }
  .portal-cta-left h3 { font-size: clamp(22px, 5.6vw, 28px); }
  .portal-cta-right { align-items: flex-start; flex-direction: row; justify-content: space-between; width: 100%; flex-wrap: wrap; gap: 12px; }
  .portal-cta-catering::after { display: none; }

  /* Portal-Family mobile · kompakt */
  .portal-family { padding: 48px 0; }
  .portal-family h2 { font-size: clamp(22px, 5.6vw, 30px); }

  /* Footer */
  .portal-footer-inner { flex-direction: column; align-items: flex-start; gap: 10px; padding: 0 20px; }

  /* Brand-Wordmark · Suffix ausblenden */
  body.is-portal .brand-wordmark::after { display: none; }

  /* Haus-Layout (Legacy) */
  .haus { grid-template-columns: 1fr; gap: var(--space-lg); }
  .haus.flip .haus-text, .haus.flip .haus-media { order: initial; }
  .haus-media { aspect-ratio: 4 / 3; max-width: 640px; margin: 0 auto; width: 100%; }
}

@media (max-width: 540px) {
  /* Kleines Mobile (iPhone SE etc.) */
  .portal-bar-inner { font-size: 9.5px; padding: 7px 0; }
  .portal-bar-label { font-size: 9.5px; }
  .portal-bar-family { gap: 8px; }

  .portal-card-visual { aspect-ratio: 3 / 2; }
  .portal-card-logo { max-width: 68%; max-height: 68%; }
  .portal-card-footer { padding: 16px 18px; gap: 12px; }
  .portal-card-footer h3 { font-size: 22px; }
  .portal-card-arrow { width: 38px; height: 38px; }
  .portal-card-num { font-size: 24px; top: 14px; left: 16px; }
  .portal-card-num::after { width: 16px; }

  .portal-hero h1 { font-size: 38px !important; line-height: 1.05; }
  .portal-hero .lead { font-size: 15px !important; }
  .portal-hero-locations { font-size: 9px !important; gap: 10px !important; }
}

/* ============================================================
   Topbar · refined editorial
   ============================================================ */
.topbar {
  position: sticky; top: 0; z-index: 60;
  background: rgba(250, 247, 242, .84);
  backdrop-filter: saturate(1.2) blur(14px);
  -webkit-backdrop-filter: saturate(1.2) blur(14px);
  border-bottom: 1px solid rgba(201, 165, 106, .14);
  transition: background .4s var(--ease), border-color .4s var(--ease);
}
.topbar-inner {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: clamp(16px, 3vw, 40px);
  padding: 20px 0;
  min-height: 84px;
}

/* --- Brand (kompakt, ohne Caption) --- */
.brand {
  display: inline-flex; align-items: center; gap: 12px;
  color: var(--ink-display); text-decoration: none;
  line-height: 1;
  transition: color .4s var(--ease);
}
.brand-mark {
  display: inline-block;
  width: 36px; height: 50px;
  background-color: currentColor;
  -webkit-mask: url("assets/brand/ruehri.svg") center/contain no-repeat;
          mask: url("assets/brand/ruehri.svg") center/contain no-repeat;
  transition: background-color .4s var(--ease);
  flex-shrink: 0;
}
.brand-wordmark {
  font-family: var(--font-display); font-weight: 500;
  font-size: 22px; letter-spacing: 0;
  line-height: 1.15;
}

/* --- Haupt-Navigation (mittig, editorial) --- */
.primary-nav {
  display: flex; align-items: center; justify-content: center;
  gap: clamp(20px, 3vw, 44px);
}
/* Desktop: drawer-only elements hidden */
.primary-nav .nav-cta-mobile,
.primary-nav .drawer-contact { display: none; }
.primary-nav a {
  position: relative;
  color: var(--ink-secondary);
  text-decoration: none;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .22em;
  font-weight: 600;
  padding: 10px 2px;
  transition: color .24s var(--ease);
}
.primary-nav a::after {
  content: ""; position: absolute; left: 2px; right: 2px; bottom: 2px;
  height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: center;
  transition: transform .32s var(--ease);
}
.primary-nav a:hover { color: var(--accent); }
.primary-nav a:hover::after,
.primary-nav a.is-active::after { transform: scaleX(1); }
.primary-nav a.is-active { color: var(--accent); }

/* --- CTA (rechts) --- */
.topbar .nav-cta {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 12px 22px;
  font-family: var(--font-ui); font-size: 10.5px;
  text-transform: uppercase; letter-spacing: .2em;
  font-weight: 600;
  color: var(--ink-display); background: transparent;
  border: 1px solid var(--border-strong); border-radius: 2px;
  text-decoration: none;
  transition: all .24s var(--ease);
  white-space: nowrap;
}
.topbar .nav-cta:hover {
  border-color: var(--accent); color: var(--accent);
  background: rgba(138, 106, 62, .04);
}

/* --- Dark state (über Hero) --- */
.topbar.is-dark {
  background: linear-gradient(180deg, rgba(28, 24, 20, .48), rgba(28, 24, 20, 0));
  border-bottom-color: transparent;
  backdrop-filter: none; -webkit-backdrop-filter: none;
}
.topbar.is-dark .brand { color: #fff; }
@media (min-width: 821px) {
  .topbar.is-dark .primary-nav a { color: rgba(250, 247, 242, .82); }
  .topbar.is-dark .primary-nav a:hover { color: #fff; }
  .topbar.is-dark .primary-nav a.is-active { color: var(--accent-hair); }
}
.topbar.is-dark .nav-cta {
  color: rgba(250, 247, 242, .96);
  border-color: rgba(250, 247, 242, .5);
  background: transparent;
}
.topbar.is-dark .nav-cta:hover {
  background: rgba(250, 247, 242, .12);
  border-color: rgba(250, 247, 242, .95);
  color: #fff;
}
.topbar.is-dark .nav-toggle {
  color: #fff; border-color: rgba(250, 247, 242, .4);
}

/* --- Mobile toggle --- */
.nav-toggle {
  display: none; align-items: center; justify-content: center;
  width: 44px; height: 44px; background: transparent;
  border: 1px solid var(--border-strong); border-radius: 2px;
  cursor: pointer; color: var(--ink-display); padding: 0;
  transition: all .24s var(--ease);
}
.nav-toggle svg { width: 18px; height: 14px; }
.nav-toggle[aria-expanded="true"] { background: var(--ink-display); color: #fff; border-color: var(--ink-display); }

/* ============================================================
   Buttons
   ============================================================ */
.btn {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 15px 30px; border-radius: var(--radius-sm);
  border: 1px solid transparent; background: transparent;
  font-size: 11.5px; letter-spacing: .18em; text-transform: uppercase;
  cursor: pointer; text-decoration: none; font-weight: 600;
  font-family: var(--font-ui);
  transition: background .24s var(--ease), color .24s var(--ease),
              border-color .24s var(--ease), box-shadow .24s var(--ease),
              transform .24s var(--ease), gap .24s var(--ease);
  white-space: nowrap;
  position: relative;
}
.btn:hover { gap: 13px; }
.btn-primary {
  background: var(--accent); color: #fff;
  box-shadow: 0 4px 14px rgba(138, 106, 62, .25);
}
.btn-primary:hover {
  background: var(--accent-deep);
  box-shadow: 0 10px 28px rgba(138, 106, 62, .40);
  transform: translateY(-1px);
}
.btn-secondary { color: var(--ink-display); border-color: var(--border-strong); }
.btn-secondary:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-glow); }
.btn-ghost {
  color: var(--ink-display); padding: 6px 0; border-radius: 0;
  border-bottom: 1px solid var(--ink-display);
  letter-spacing: .12em; text-transform: uppercase;
}
.btn-ghost:hover { color: var(--accent); border-color: var(--accent); }
.btn-light {
  background: rgba(250, 247, 242, .96); color: var(--ink-display);
  box-shadow: 0 4px 14px rgba(0, 0, 0, .2);
}
.btn-light:hover {
  background: #fff;
  box-shadow: 0 10px 28px rgba(0, 0, 0, .3);
  transform: translateY(-1px);
}
.btn-outline-light {
  color: #fff; border-color: rgba(255, 255, 255, .55);
}
.btn-outline-light:hover { border-color: #fff; background: rgba(255, 255, 255, .1); }

/* In-text arrow link · refined */
.link-arrow {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--font-ui); font-size: 12px;
  text-transform: uppercase; letter-spacing: .18em;
  font-weight: 600; color: var(--ink-display);
  padding: 6px 0;
  position: relative;
  transition: color var(--t-quick), gap .3s var(--ease);
}
.link-arrow::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0;
  height: 1px; background: currentColor;
  transform: scaleX(1); transform-origin: right;
  transition: transform .45s var(--ease);
}
.link-arrow:hover::after { transform: scaleX(0); }
.link-arrow::before {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0;
  height: 1px; background: var(--accent);
  transform: scaleX(0); transform-origin: left;
  transition: transform .45s var(--ease) .05s;
}
.link-arrow:hover::before { transform: scaleX(1); }
.link-arrow:hover { color: var(--accent); gap: 14px; }
.link-arrow.light { color: #fff; }
.link-arrow.light::after { background: rgba(255, 255, 255, .6); }
.link-arrow.light:hover { color: var(--accent-hair); }
.link-arrow.light::before { background: var(--accent-hair); }

/* ============================================================
   Section primitives
   ============================================================ */
.section     { padding: var(--space-3xl) 0; }
.section-sm  { padding: var(--space-2xl) 0; }
.section-xs  { padding: var(--space-xl) 0; }
.section-deep    { background: var(--bg-canvas-deep); }
.section-ink     { background: var(--bg-ink); color: rgba(250, 247, 242, .92); }
.section-ink h2, .section-ink h3, .section-ink h4 { color: rgba(250, 247, 242, .98); }
.section-ink .lead, .section-ink p { color: rgba(250, 247, 242, .8); }
.section-ink .eyebrow, .section-ink .eyebrow-line { color: var(--accent-hair); }
.section-ink .eyebrow-line::before { background: rgba(201, 165, 106, .55); }
.section-ink hr.rule, .section-ink .rule { background: rgba(201, 165, 106, .45); }

.section-head {
  text-align: center; max-width: 780px; margin: 0 auto var(--space-2xl);
}
.section-head .eyebrow-line {
  justify-content: center; margin-bottom: var(--space-md);
}
.section-head .eyebrow-line::after {
  content: ""; width: 36px; height: 1px; background: var(--accent-hair);
}
.section-head h2 { margin: 0 auto var(--space-md); }
.section-head .lead { margin: 0 auto; }

/* ============================================================
   HERO · cinematic · editorial
   ============================================================ */
.hero {
  position: relative; min-height: clamp(680px, 95vh, 1000px);
  display: flex; flex-direction: column; justify-content: flex-end;
  overflow: hidden; isolation: isolate;
  padding: 0;
  margin-top: calc(-1 * var(--topbar-h, 84px)); /* bleeds under sticky topbar */
  color: #fff;
}
.hero-image {
  position: absolute; inset: 0; z-index: -3;
  background-image: url("assets/brand/hotel-hero.webp");
  background-size: cover;
  background-position: center 50%;
  transform: scale(1.04);
  animation: hero-drift 32s ease-in-out infinite alternate;
}
@keyframes hero-drift {
  0%   { transform: scale(1.04) translate3d(0, 0, 0); }
  100% { transform: scale(1.10) translate3d(-1.2%, -1.4%, 0); }
}

/* zwei Layer für saubere Text-Lesbarkeit: vertikaler Gradient + radiale Vignette */
.hero-overlay {
  position: absolute; inset: 0; z-index: -2; pointer-events: none;
  background:
    linear-gradient(180deg,
      rgba(20, 16, 12, .72) 0%,
      rgba(20, 16, 12, .38) 12%,
      rgba(20, 16, 12, .08) 40%,
      rgba(20, 16, 12, .30) 68%,
      rgba(20, 16, 12, .88) 100%);
}
.hero-vignette {
  position: absolute; inset: 0; z-index: -2; pointer-events: none;
  background:
    radial-gradient(ellipse 120% 80% at 50% 30%,
      transparent 40%, rgba(20, 16, 12, .55) 100%);
}
.hero-grain {
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  opacity: .08; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='.6'/></svg>");
}

/* Accent-Hairline Top für noble Abgrenzung */
.hero::after {
  content: ""; position: absolute; left: 0; right: 0;
  bottom: 0; height: 1px; z-index: 1;
  background: linear-gradient(90deg, transparent, rgba(201, 165, 106, .45) 50%, transparent);
}

.hero-inner {
  position: relative; z-index: 1;
  padding: 0 0 clamp(72px, 9vw, 130px);
  display: flex; align-items: end;
}
.hero-content { max-width: 720px; }
.hero-content .eyebrow-line {
  color: var(--accent-hair); margin-bottom: var(--space-md);
  text-shadow: 0 1px 12px rgba(0, 0, 0, .4);
}
.hero-content .eyebrow-line::before { background: rgba(201, 165, 106, .85); }
.hero-content h1 {
  color: #fff;
  font-size: clamp(48px, 5.8vw + 18px, 112px);
  font-weight: 500; letter-spacing: -.015em;
  line-height: 1.02;
  margin: 0 0 var(--space-md);
  text-wrap: balance;
  text-shadow: 0 2px 30px rgba(0, 0, 0, .35);
}
.hero-content h1 em {
  display: block;
  font-style: italic; font-weight: 400;
  color: rgba(255, 255, 255, .92);
  margin-top: 4px;
}
.hero-content .lead {
  color: rgba(250, 247, 242, .92); max-width: 52ch;
  font-size: clamp(15px, .9vw + 10px, 19px);
  line-height: 1.6;
  text-shadow: 0 1px 14px rgba(0, 0, 0, .45);
  margin-bottom: 0;
}
.hero-actions {
  display: flex; align-items: center; gap: var(--space-lg);
  margin-top: clamp(var(--space-lg), 3vw, var(--space-xl));
  flex-wrap: wrap;
}
.hero-actions .btn-primary {
  padding: 16px 32px; font-size: 12px;
  background: var(--accent);
  box-shadow: 0 12px 40px rgba(0, 0, 0, .35);
}
.hero-actions .btn-primary:hover { background: var(--accent-deep); transform: translateY(-1px); }

.hero-scroll {
  position: absolute; left: 50%; bottom: 24px; transform: translateX(-50%);
  z-index: 2; color: rgba(250, 247, 242, .55);
  font-size: 9.5px; letter-spacing: .32em; text-transform: uppercase;
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  pointer-events: none; font-weight: 500;
}
.hero-scroll::after {
  content: ""; width: 1px; height: 36px;
  background: linear-gradient(180deg, rgba(250, 247, 242, .55), transparent);
  animation: scroll-hint 2.4s ease-in-out infinite;
}
@keyframes scroll-hint {
  0%, 100% { transform: scaleY(1); transform-origin: top; opacity: .5; }
  50%      { transform: scaleY(.3); transform-origin: top; opacity: 1; }
}

/* ============================================================
   Page Hero · subpages
   ============================================================ */
.page-hero {
  position: relative; overflow: hidden;
  padding: clamp(72px, 8vw, 120px) 0 clamp(44px, 5vw, 72px);
  background: linear-gradient(180deg, var(--bg-canvas-deep) 0%, var(--bg-canvas) 100%);
  border-bottom: 1px solid var(--border-hair);
}
.page-hero::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: var(--accent-hair); opacity: .55;
}
.page-hero-inner { max-width: 820px; margin: 0 auto; text-align: center; }
.page-hero .eyebrow-line { justify-content: center; margin-bottom: var(--space-md); }
.page-hero .eyebrow-line::after {
  content: ""; width: 36px; height: 1px; background: var(--accent-hair);
}
.page-hero h1 {
  font-size: var(--display-lg); margin: 0 auto var(--space-md);
  text-wrap: balance;
}
.page-hero .lead { margin: 0 auto; }

.breadcrumb {
  font-size: 10.5px; color: var(--ink-muted); letter-spacing: .22em;
  text-transform: uppercase; margin-bottom: var(--space-lg);
  font-weight: 500;
}
.breadcrumb a { color: var(--ink-muted); text-decoration: none; }
.breadcrumb a:hover { color: var(--accent); }
.breadcrumb .sep { margin: 0 10px; color: var(--accent-hair); }

/* ============================================================
   Quick-Book · 3 prominente CTAs (Home)
   ============================================================ */
.quick-book {
  padding: clamp(56px, 6vw, 88px) 0;
  background: var(--bg-canvas-deep);
  border-top: 1px solid var(--border-hair);
  border-bottom: 1px solid var(--border-hair);
  position: relative;
}
.quick-book::before {
  content: ""; position: absolute; top: 0; left: 50%;
  transform: translateX(-50%);
  width: min(82%, 1060px); height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent-hair), transparent);
  opacity: .7;
}
.quick-book-head {
  text-align: center; margin-bottom: clamp(32px, 4vw, 52px);
  max-width: 720px; margin-left: auto; margin-right: auto;
  padding: 0 clamp(20px, 4vw, 56px);
}
.quick-book-head .eyebrow-line { justify-content: center; margin-bottom: var(--space-md); }
.quick-book-head .eyebrow-line::after {
  content: ""; width: 36px; height: 1px; background: var(--accent-hair);
}
.quick-book-head h2 {
  font-size: clamp(28px, 2.6vw + 14px, 46px);
  margin: 0;
}
.quick-book-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(18px, 1.6vw, 28px);
  padding: 0 clamp(20px, 4vw, 56px);
  max-width: 1260px; margin: 0 auto;
}
.quick-book-card {
  position: relative; overflow: hidden;
  background: var(--bg-surface);
  border: 1px solid var(--border-hair);
  padding: clamp(30px, 3vw, 48px);
  text-decoration: none; color: var(--ink-display);
  display: flex; flex-direction: column; gap: var(--space-sm);
  transition: transform .45s var(--ease), box-shadow .45s var(--ease), border-color .45s var(--ease);
  will-change: transform;
}
.quick-book-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0;
  height: 2px; background: var(--accent);
  transform: scaleX(0); transform-origin: left;
  transition: transform .45s var(--ease);
}
.quick-book-card::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(ellipse 100% 60% at 50% 120%, rgba(138, 106, 62, .06), transparent 60%);
  opacity: 0; transition: opacity .4s var(--ease);
}
.quick-book-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 28px 60px rgba(20, 14, 6, .12), 0 4px 10px rgba(20, 14, 6, .06);
  border-color: var(--accent-hair);
}
.quick-book-card:hover::before { transform: scaleX(1); }
.quick-book-card:hover::after { opacity: 1; }

.qb-num {
  font-family: var(--font-display); font-style: italic; font-weight: 400;
  font-size: clamp(32px, 2.6vw + 10px, 44px);
  color: var(--accent-hair); line-height: .85;
  margin-bottom: 4px;
}
.qb-eyebrow {
  font-size: 10.5px; color: var(--accent); text-transform: uppercase;
  letter-spacing: .22em; font-weight: 600;
}
.quick-book-card h3 {
  font-size: clamp(22px, 1.6vw + 10px, 30px);
  margin: 0 0 var(--space-xs);
  line-height: 1.15; letter-spacing: -.005em;
}
.quick-book-card p {
  color: var(--ink-muted);
  font-size: 14px; line-height: 1.65;
  margin: 0 0 var(--space-md);
  flex: 1;
}
.qb-cta {
  display: inline-flex; align-items: center; gap: 8px;
  padding-top: var(--space-sm);
  margin-top: auto;
  border-top: 1px solid var(--border-hair);
  font-size: 11px; text-transform: uppercase; letter-spacing: .2em;
  color: var(--accent); font-weight: 600;
  transition: gap .24s var(--ease), color .24s var(--ease);
}
.quick-book-card:hover .qb-cta { gap: 12px; color: var(--accent-deep); }

/* ============================================================
   Heritage · Geschichte (Home)
   ============================================================ */
.heritage {
  padding: clamp(64px, 8vw, 112px) 0;
  position: relative;
}
.heritage-top {
  text-align: center; max-width: 760px;
  margin: 0 auto clamp(40px, 5vw, 64px);
}
.heritage-top .eyebrow-line { justify-content: center; margin-bottom: var(--space-md); }
.heritage-top .eyebrow-line::after {
  content: ""; width: 36px; height: 1px; background: var(--accent-hair);
}
.heritage-top h2 {
  font-size: clamp(30px, 3.2vw + 14px, 56px);
  margin: 0 auto;
  text-wrap: balance;
}

.heritage-split {
  display: grid; grid-template-columns: .9fr 1.1fr;
  gap: clamp(36px, 4vw, 72px);
  align-items: center;
  margin-bottom: clamp(44px, 5vw, 80px);
}
.heritage-portrait {
  position: relative; aspect-ratio: 4 / 5;
  background: var(--bg-canvas-deep);
  overflow: hidden; border-radius: 2px;
  box-shadow: var(--shadow-img), 0 0 0 1px rgba(138, 106, 62, .08);
  transition: transform .8s var(--ease), box-shadow .8s var(--ease);
}
.heritage-portrait:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-img), 0 0 0 1px rgba(138, 106, 62, .2), 0 32px 60px rgba(20, 14, 6, .12);
}
.heritage-portrait-inner { transition: transform 1.2s var(--ease); }
.heritage-portrait:hover .heritage-portrait-inner { transform: scale(1.03); }
.heritage-portrait::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(160deg, var(--bg-canvas-deep), var(--bg-paper));
}
.heritage-portrait-inner {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
}
/* Duo-Variant: two portraits side-by-side (Felix & Christoph) */
.heritage-portrait--duo {
  aspect-ratio: 5 / 4;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px;
  background: var(--bg-paper);
}
.heritage-portrait--duo::before { display: none; }
.heritage-portrait-person {
  position: relative;
  overflow: hidden;
  background-size: cover;
  background-position: center 25%;
  background-color: var(--bg-canvas-deep);
  transition: transform 1.2s var(--ease);
}
.heritage-portrait--duo:hover .heritage-portrait-person { transform: scale(1.02); }
.heritage-portrait-person::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 55%, rgba(20,14,6,.55) 100%);
  pointer-events: none;
}
.heritage-portrait-person-name {
  position: absolute; bottom: 14px; left: 16px;
  color: #fff;
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(14px, 0.8vw + 10px, 17px);
  letter-spacing: .02em;
  text-shadow: 0 2px 10px rgba(20,14,6,.85);
  z-index: 1;
}

.heritage-portrait-badge {
  position: absolute; left: -12px; top: 32px;
  padding: 10px 18px 10px 24px;
  background: var(--bg-ink); color: #fff;
  font-family: var(--font-display); font-style: italic;
  font-size: 15px; letter-spacing: .02em;
  z-index: 2;
  box-shadow: var(--shadow-2);
}
.heritage-portrait-badge::before {
  content: ""; position: absolute; left: 0; bottom: -8px;
  width: 12px; height: 8px;
  background: var(--accent-deep);
  clip-path: polygon(100% 0, 0 0, 100% 100%);
}

.heritage-prose p {
  font-size: clamp(15.5px, .6vw + 14px, 17.5px);
  line-height: 1.8; color: var(--ink-secondary);
  max-width: 58ch; margin: 0 0 var(--space-md);
}
.heritage-prose p:first-child::first-letter {
  font-family: var(--font-display); font-weight: 500;
  font-size: 4.4em; float: left;
  line-height: .88; padding: 6px 14px 0 0;
  color: var(--accent);
}
.heritage-sign {
  margin-top: var(--space-lg); padding-top: var(--space-md);
  border-top: 1px solid var(--border-hair);
}
.heritage-sign-name {
  font-family: var(--font-display); font-style: italic;
  font-size: clamp(20px, 1.2vw + 12px, 24px);
  color: var(--ink-display); display: block;
}
.heritage-sign-role {
  font-size: 10.5px; color: var(--ink-muted);
  text-transform: uppercase; letter-spacing: .22em;
  font-weight: 600; margin-top: 6px; display: block;
}

/* Timeline: 4 Meilensteine horizontal */
.heritage-timeline {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 0;
  padding-top: clamp(28px, 3vw, 48px);
  border-top: 1px solid var(--border-hair);
  position: relative;
}
.heritage-timeline::before {
  content: ""; position: absolute; top: -1px; left: 0;
  width: 80px; height: 3px; background: var(--accent);
}
.timeline-item {
  padding: 8px 28px 0 0;
  border-right: 1px solid var(--border-hair);
}
.timeline-item:last-child { border-right: none; padding-right: 0; }
.timeline-item + .timeline-item { padding-left: 28px; }
.timeline-year {
  display: block;
  font-family: var(--font-display); font-weight: 500;
  font-size: clamp(34px, 2.8vw + 12px, 56px);
  color: var(--accent); line-height: 1;
  letter-spacing: -.01em;
  margin-bottom: var(--space-xs);
  font-feature-settings: "lnum" 1, "tnum" 1;
  position: relative;
  display: inline-block;
}
.timeline-item { position: relative; transition: transform .4s var(--ease); }
.timeline-item:hover { transform: translateY(-2px); }
.timeline-item:hover .timeline-year { color: var(--accent-deep); }
.timeline-text {
  font-size: 13.5px; color: var(--ink-secondary);
  line-height: 1.55; max-width: 24ch;
}

/* ============================================================
   Editorial prologue (home intro)
   ============================================================ */
.prologue {
  padding: clamp(72px, 8vw, 120px) 0 clamp(52px, 6vw, 88px);
  text-align: center;
}
.prologue .eyebrow-line { justify-content: center; margin-bottom: var(--space-md); }
.prologue .eyebrow-line::after {
  content: ""; width: 36px; height: 1px; background: var(--accent-hair);
}
.prologue h2 {
  font-size: clamp(32px, 3.6vw + 14px, 62px);
  max-width: 18ch; margin: 0 auto var(--space-lg);
  text-wrap: balance;
}
.prologue p {
  font-family: var(--font-display); font-size: var(--text-xl);
  color: var(--ink-secondary); max-width: 62ch; margin: 0 auto var(--space-md);
  line-height: 1.55; font-weight: 400;
}
.prologue .prologue-sign {
  margin-top: var(--space-lg);
  font-family: var(--font-display);
  font-style: italic; font-weight: 500;
  color: var(--ink-secondary);
  font-size: clamp(20px, 1.4vw + 12px, 26px);
  letter-spacing: -.005em;
  position: relative; padding-top: var(--space-md);
}
.prologue .prologue-sign::before {
  content: ""; position: absolute; top: 0; left: 50%;
  transform: translateX(-50%);
  width: 36px; height: 1px; background: var(--accent-hair);
}

/* ============================================================
   Editorial welt-modules (three worlds)
   ============================================================ */
.welt {
  max-width: 1260px; margin: 0 auto;
  display: grid; grid-template-columns: 1fr 1fr;
  gap: clamp(32px, 4vw, 72px); align-items: center;
  padding: clamp(56px, 6vw, 104px) clamp(20px, 4vw, 56px);
  position: relative;
}
.welt + .welt {
  border-top: 1px solid var(--border-hair);
}
.welt.flip .welt-text  { order: 2; }
.welt.flip .welt-media { order: 1; }

.welt-media {
  position: relative; overflow: hidden;
  aspect-ratio: 5 / 4;
  background: var(--bg-canvas-deep);
  border-radius: 2px;
  box-shadow: var(--shadow-img);
}
.welt-media::before {
  /* paper-grain placeholder so empty slot looks intentional */
  content: ""; position: absolute; inset: 0;
  background:
    radial-gradient(circle at 30% 20%, rgba(201, 165, 106, .18), transparent 60%),
    linear-gradient(150deg, var(--bg-canvas-deep) 0%, var(--bg-paper) 100%);
  z-index: 0;
}
.welt-media[data-img]::before { opacity: 0; }
.welt-media-inner {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform var(--t-slow);
  z-index: 1;
}
.welt:hover .welt-media-inner { transform: scale(1.03); }
.welt-media::after {
  content: ""; position: absolute; inset: 0; z-index: 2;
  background: linear-gradient(180deg, transparent 60%, rgba(28, 24, 20, .18) 100%);
  pointer-events: none;
}

.welt-index {
  display: inline-flex; align-items: baseline; gap: 12px;
  font-family: var(--font-display); font-style: italic;
  font-size: clamp(44px, 4.5vw + 14px, 80px);
  color: var(--accent-hair); line-height: .85;
  margin-bottom: var(--space-sm);
  font-weight: 400;
  position: relative;
}
.welt-index::after {
  content: ""; flex: 0 0 auto; width: 52px; height: 1px;
  background: var(--accent-hair); align-self: center;
  margin-left: 4px; opacity: .7;
}
.welt-text h2 {
  font-size: clamp(32px, 3.2vw + 14px, 52px);
  margin: 0 0 var(--space-md);
  text-wrap: balance; max-width: 14ch;
}
.welt-text p {
  color: var(--ink-secondary); font-size: var(--text-lg);
  line-height: 1.7; max-width: 52ch;
  margin: 0 0 var(--space-md);
}
.welt-text .link-arrow { margin-top: var(--space-md); }
.welt-meta {
  margin-top: var(--space-lg); padding-top: var(--space-md);
  border-top: 1px solid var(--border-hair);
  display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-md) var(--space-lg);
  font-size: var(--text-sm);
}
.welt-meta dt {
  font-size: 10px; text-transform: uppercase; letter-spacing: .2em;
  color: var(--ink-muted); font-weight: 600; margin-bottom: 2px;
}
.welt-meta dd { margin: 0; color: var(--ink-display); font-family: var(--font-display); font-size: var(--text-lg); }

/* ============================================================
   Gastgeber (split-portrait + text)
   ============================================================ */
.hosts-split {
  display: grid; grid-template-columns: 1fr 1.1fr;
  gap: clamp(32px, 4vw, 80px); align-items: center;
  padding: clamp(56px, 6vw, 104px) 0;
}
.hosts-portrait {
  position: relative; aspect-ratio: 4 / 5;
  background: var(--bg-canvas-deep);
  border-radius: 2px; overflow: hidden;
  box-shadow: var(--shadow-img);
}
.hosts-portrait::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(160deg, var(--bg-canvas-deep), var(--bg-paper));
}
.hosts-portrait-inner {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
}
.hosts-text h2 { max-width: 14ch; margin-bottom: var(--space-md); }
.hosts-text p {
  font-size: var(--text-lg); color: var(--ink-secondary);
  line-height: 1.75; max-width: 54ch; margin: 0 0 var(--space-md);
}
.hosts-sign {
  margin-top: var(--space-lg); padding-top: var(--space-md);
  border-top: 1px solid var(--border-hair);
  display: flex; flex-direction: column; gap: 4px;
}
.hosts-sign-name {
  font-family: var(--font-display); font-style: italic;
  font-size: var(--text-xl); color: var(--ink-display);
}
.hosts-sign-role {
  font-size: 10.5px; color: var(--ink-muted);
  text-transform: uppercase; letter-spacing: .22em; font-weight: 600;
}

/* ============================================================
   Editorial Quote
   ============================================================ */
.quote-editorial {
  padding: clamp(64px, 8vw, 112px) 0;
  text-align: center; position: relative;
}
.quote-editorial::before {
  content: "»"; position: absolute; left: 50%; top: 40px;
  font-family: var(--font-display); font-weight: 400; font-style: italic;
  font-size: clamp(80px, 10vw, 160px);
  color: var(--accent-hair); transform: translateX(-50%);
  opacity: .28; line-height: 1;
}
.quote-editorial blockquote {
  font-family: var(--font-display);
  font-size: clamp(26px, 3vw + 10px, 46px);
  line-height: 1.3; color: var(--ink-display);
  max-width: 26ch; margin: 0 auto var(--space-md);
  font-style: italic; font-weight: 500;
  text-wrap: balance;
}
.quote-editorial cite {
  display: block; font-style: normal;
  font-size: 10.5px; color: var(--ink-muted);
  letter-spacing: .28em; text-transform: uppercase; font-weight: 600;
}

/* ============================================================
   CATERING · Bild-Bänder + Porträt-Zitat
   ============================================================ */
.catering-band, .media-band {
  position: relative;
  height: clamp(320px, 42vw, 540px);
  width: 100%;
  margin: 0;
  overflow: hidden;
  background: var(--bg-canvas-deep);
}
.catering-band-inner, .media-band-inner {
  position: absolute; inset: 0;
  background-size: cover;
  background-position: center;
  transform: scale(1.01);
  transition: transform 1.8s var(--ease);
}
.catering-band:hover .catering-band-inner,
.media-band:hover .media-band-inner { transform: scale(1.04); }
.catering-band::after, .media-band::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(20,14,6,0) 0%, rgba(20,14,6,0) 55%, rgba(20,14,6,.35) 100%);
  pointer-events: none;
}
.catering-band-caption, .media-band-caption {
  position: absolute; left: clamp(24px, 6vw, 72px); bottom: clamp(20px, 3vw, 40px);
  padding: 12px 20px;
  background: rgba(20, 14, 6, .78);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  color: #fff;
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(15px, 1.6vw, 20px);
  letter-spacing: .01em;
  max-width: min(720px, calc(100% - clamp(48px, 12vw, 144px)));
  border-left: 2px solid var(--accent);
}
@media print {
  .catering-band, .media-band { display: none !important; }
}

/* Quote mit Porträt (Catering) */
.quote-editorial.quote-editorial--portrait {
  padding: clamp(80px, 10vw, 140px) 0;
}
.quote-editorial.quote-editorial--portrait::before { display: none; }
.quote-editorial--portrait .container-tight {
  display: grid;
  grid-template-columns: minmax(200px, 280px) 1fr;
  gap: clamp(36px, 6vw, 80px);
  align-items: center;
  text-align: left;
  max-width: 960px;
}
.quote-editorial--portrait .heritage-portrait {
  aspect-ratio: 4/5;
  width: 100%;
  margin: 0;
}
.quote-editorial--portrait blockquote {
  text-align: left;
  max-width: 24ch;
  margin: 0 0 var(--space-md);
}
.quote-editorial--portrait cite {
  text-align: left;
}
@media (max-width: 760px) {
  .quote-editorial--portrait .container-tight {
    grid-template-columns: 1fr;
    text-align: center;
  }
  .quote-editorial--portrait .heritage-portrait {
    max-width: 220px;
    margin: 0 auto;
  }
  .quote-editorial--portrait blockquote {
    text-align: center;
    margin-left: auto; margin-right: auto;
  }
  .quote-editorial--portrait cite { text-align: center; }
}

/* ============================================================
   Meta-strip (location / hours / phone)
   ============================================================ */
.meta-strip {
  padding: clamp(60px, 8vw, 120px) 0;
  border-top: 1px solid var(--border-hair);
  border-bottom: 1px solid var(--border-hair);
}
.meta-strip-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(32px, 5vw, 80px); text-align: center;
}
.meta-strip-item .eyebrow { display: block; margin-bottom: var(--space-sm); }
.meta-strip-item-value {
  font-family: var(--font-display); font-size: var(--text-xl);
  color: var(--ink-display); margin-bottom: var(--space-xs);
  display: block;
}
.meta-strip-item-value a { color: var(--ink-display); }
.meta-strip-item-value a:hover { color: var(--accent); }
.meta-strip-item-sub { font-size: var(--text-sm); color: var(--ink-muted); }

/* ============================================================
   Final CTA (editorial)
   ============================================================ */
.final-cta {
  padding: clamp(120px, 14vw, 200px) 0;
  text-align: center; position: relative;
}
.final-cta .eyebrow-line { justify-content: center; margin-bottom: var(--space-md); }
.final-cta .eyebrow-line::after {
  content: ""; width: 36px; height: 1px; background: var(--accent-hair);
}
.final-cta h2 {
  font-size: clamp(36px, 4vw + 16px, 72px);
  max-width: 18ch; margin: 0 auto var(--space-lg);
  text-wrap: balance;
}
.final-cta p {
  color: var(--ink-secondary); max-width: 52ch; margin: 0 auto var(--space-lg);
  font-size: var(--text-lg);
}
.final-cta-actions {
  display: inline-flex; align-items: center; gap: var(--space-md);
  flex-wrap: wrap; justify-content: center;
}

/* ============================================================
   Zimmer (Hotel)
   ============================================================ */
.rooms {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: clamp(40px, 5vw, 88px) clamp(32px, 4vw, 56px);
  margin-top: var(--space-2xl);
}
.room {
  display: flex; flex-direction: column; gap: var(--space-md);
  transition: transform .4s var(--ease);
}
.room:hover { transform: translateY(-3px); }
.room-media {
  position: relative; overflow: hidden;
  aspect-ratio: 5 / 4;
  background: var(--bg-canvas-deep);
  border-radius: 2px;
  box-shadow: 0 0 0 1px rgba(20, 14, 6, .03);
  transition: box-shadow .4s var(--ease);
}
.room:hover .room-media {
  box-shadow: 0 0 0 1px rgba(138, 106, 62, .2), 0 22px 44px rgba(20, 14, 6, .12);
}
.room-media::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(140deg, var(--bg-canvas-deep), var(--bg-paper));
}
.room-media-inner {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform var(--t-slow);
}
.room:hover .room-media-inner { transform: scale(1.04); }
.room-media::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 70%, rgba(28, 24, 20, .12) 100%);
  pointer-events: none;
}
.room-badge {
  position: absolute; top: 16px; left: 16px; z-index: 2;
  background: rgba(250, 247, 242, .94); color: var(--accent);
  padding: 6px 12px; border-radius: 999px;
  font-size: 10px; letter-spacing: .2em; text-transform: uppercase;
  font-weight: 700;
}
.room-head {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: var(--space-md); flex-wrap: wrap;
}
.room-head h3 {
  font-size: clamp(22px, 1.6vw + 14px, 30px); margin: 0;
}
.room-head-sub {
  font-size: 11px; color: var(--accent); text-transform: uppercase;
  letter-spacing: .18em; font-weight: 600;
}
.room-text {
  color: var(--ink-secondary); font-size: var(--text-base); line-height: 1.7;
  margin: 0; max-width: 50ch;
}
.room-facts {
  display: flex; gap: var(--space-lg) var(--space-md); flex-wrap: wrap;
  margin-top: var(--space-xs); padding-top: var(--space-md);
  border-top: 1px solid var(--border-hair);
}
.room-fact {
  display: flex; flex-direction: column; gap: 2px;
  min-width: 78px;
}
.room-fact-label {
  font-size: 10px; text-transform: uppercase; letter-spacing: .2em;
  color: var(--ink-muted); font-weight: 600;
}
.room-fact-value {
  font-family: var(--font-display); font-size: var(--text-lg);
  color: var(--ink-display);
}

/* ============================================================
   Restaurant-Räume
   ============================================================ */
.spaces {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: clamp(36px, 4vw, 72px) clamp(32px, 4vw, 56px);
  margin-top: var(--space-2xl);
}
.space {
  display: flex; flex-direction: column; gap: var(--space-md);
}
.space-media {
  position: relative; overflow: hidden;
  aspect-ratio: 4 / 3;
  background: var(--bg-canvas-deep); border-radius: 2px;
}
.space-media::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(135deg, var(--bg-canvas-deep), var(--bg-paper));
}
.space-media-inner {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform var(--t-slow);
}
.space:hover .space-media-inner { transform: scale(1.03); }
.space-capacity {
  font-size: 10.5px; color: var(--accent); text-transform: uppercase;
  letter-spacing: .22em; font-weight: 600;
}
.space h3 { margin: 0; font-size: clamp(22px, 1.6vw + 14px, 30px); }
.space p { margin: 0; color: var(--ink-secondary); font-size: var(--text-base); line-height: 1.7; max-width: 48ch; }

/* ============================================================
   Menu downloads (editorial book-row)
   ============================================================ */
.menu-row {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: clamp(20px, 2vw, 32px);
  margin-top: var(--space-xl);
}
.menu-tile {
  display: flex; align-items: stretch; gap: var(--space-md);
  padding: var(--space-lg); background: var(--bg-surface);
  border: 1px solid var(--border-hair); border-radius: 2px;
  text-decoration: none; color: var(--ink-display);
  transition: transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease);
  position: relative; overflow: hidden;
}
.menu-tile::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: var(--accent-hair); opacity: .6;
  transition: background .4s var(--ease), opacity .4s var(--ease), width .4s var(--ease);
}
.menu-tile:hover {
  border-color: var(--accent-hair);
  box-shadow: 0 18px 40px rgba(20, 14, 6, .1);
  transform: translateY(-3px);
}
.menu-tile:hover::before { background: var(--accent); opacity: 1; width: 4px; }
.menu-tile-num {
  font-family: var(--font-display); font-size: 42px;
  color: var(--accent-hair); line-height: .8;
  font-style: italic; font-weight: 400;
  min-width: 40px;
}
.menu-tile-body h3 { font-size: var(--text-xl); margin: 0 0 2px; }
.menu-tile-body span { font-size: var(--text-sm); color: var(--ink-muted); }
.menu-tile-arrow {
  margin-left: auto; align-self: center;
  font-size: 20px; color: var(--ink-muted);
  transition: all var(--t-quick);
}
.menu-tile:hover .menu-tile-arrow { color: var(--accent); transform: translateX(4px); }

/* ============================================================
   Info-Grid
   ============================================================ */
.info-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(32px, 4vw, 56px);
  margin-top: var(--space-2xl);
}
.info-tile { transition: transform .4s var(--ease); }
.info-tile:hover { transform: translateY(-2px); }
.info-tile h4 {
  font-family: var(--font-ui); font-size: 10.5px;
  text-transform: uppercase; letter-spacing: .24em;
  color: var(--accent); font-weight: 600;
  margin: 0 0 var(--space-md); padding-bottom: var(--space-xs);
  border-bottom: 1px solid var(--border-hair);
  position: relative;
}
.info-tile h4::after {
  content: ""; position: absolute; left: 0; bottom: -1px;
  width: 28px; height: 1px; background: var(--accent);
  transition: width .4s var(--ease);
}
.info-tile:hover h4::after { width: 48px; }
.info-tile p, .info-tile li {
  font-size: var(--text-base); color: var(--ink-secondary); line-height: 1.75;
  margin: 0;
}
.info-tile ul { list-style: none; padding: 0; margin: 0; }
.info-tile li + li { margin-top: 8px; }
.info-tile a { color: var(--ink-display); font-weight: 500; }
.info-tile a:hover { color: var(--accent); }
.info-tile .muted { color: var(--ink-muted); font-size: var(--text-sm); }

/* ============================================================
   Three-step (catering)
   ============================================================ */
.steps {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(32px, 4vw, 72px);
  margin-top: var(--space-2xl);
}
.step {
  display: flex; flex-direction: column; gap: var(--space-sm);
}
.step-num {
  font-family: var(--font-display); font-style: italic; font-weight: 400;
  font-size: 56px; color: var(--accent-hair); line-height: .9;
  margin-bottom: var(--space-xs);
}
.step h3 {
  font-size: clamp(22px, 1.4vw + 14px, 28px); margin: 0 0 var(--space-xs);
}
.step p {
  color: var(--ink-secondary); font-size: var(--text-base); line-height: 1.7;
  margin: 0; max-width: 36ch;
}

/* ============================================================
   Prose (Impressum / Datenschutz)
   ============================================================ */
.prose { max-width: 720px; margin: 0 auto; padding: var(--space-2xl) 0 var(--space-3xl); }
.prose h2 {
  font-size: clamp(22px, 1.6vw + 12px, 30px);
  margin: var(--space-xl) 0 var(--space-sm);
}
.prose h2:first-child { margin-top: 0; }
.prose h3 {
  font-family: var(--font-ui); font-size: 11px; text-transform: uppercase;
  letter-spacing: .2em; color: var(--accent); font-weight: 600;
  margin: var(--space-lg) 0 var(--space-xs);
}
.prose p {
  font-size: var(--text-base); color: var(--ink-secondary); line-height: 1.8;
  margin: 0 0 var(--space-md);
}
.prose ul, .prose ol { padding-left: 22px; margin: 0 0 var(--space-md); }
.prose li {
  font-size: var(--text-base); color: var(--ink-secondary); line-height: 1.75;
  margin-bottom: 8px;
}
.prose a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
.prose a:hover { color: var(--accent-deep); }
.prose small { color: var(--ink-muted); font-size: var(--text-sm); }
.prose hr { border: none; border-top: 1px solid var(--border-hair); margin: var(--space-xl) 0; }

/* ============================================================
   Footer
   ============================================================ */
.footer {
  background: var(--bg-ink); color: rgba(250, 247, 242, .7);
  padding: clamp(80px, 8vw, 120px) 0 var(--space-lg);
  font-size: var(--text-sm);
  position: relative;
}
.footer::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: var(--accent-hair); opacity: .5;
}
.footer-grid {
  display: grid; grid-template-columns: 1.8fr 1fr 1fr 1fr 1.1fr;
  gap: clamp(24px, 3vw, 44px);
  padding-bottom: var(--space-2xl);
  border-bottom: 1px solid rgba(201, 165, 106, .25);
  align-items: start;
}
.footer-brand { display: flex; flex-direction: column; gap: var(--space-md); max-width: 320px; }
.footer-brand .brand-mark { color: var(--bg-canvas); width: 44px; height: 60px; }

.footer-social {
  display: flex; gap: 10px; margin-top: 4px;
}
.footer-social a {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px;
  border: 1px solid rgba(201, 165, 106, .28);
  border-radius: 50%;
  color: rgba(250, 247, 242, .78);
  transition: all .3s var(--ease);
  text-decoration: none;
}
.footer-social a:hover {
  background: var(--accent); color: #fff; border-color: var(--accent);
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(138, 106, 62, .35);
}
.footer-social svg { display: block; }

.footer-newsletter .newsletter-intro {
  font-size: 12.5px; color: rgba(250, 247, 242, .6); line-height: 1.6;
  margin: 0 0 var(--space-sm);
  font-family: var(--font-ui); font-weight: 400;
}
.newsletter-form {
  display: flex; align-items: stretch;
  border: 1px solid rgba(201, 165, 106, .3);
  border-radius: 2px;
  background: rgba(255, 255, 255, .04);
  transition: border-color var(--t-quick);
}
.newsletter-form:focus-within { border-color: var(--accent-hair); }
.newsletter-form input {
  flex: 1; padding: 11px 14px;
  background: transparent; border: none;
  color: rgba(250, 247, 242, .96);
  font-family: var(--font-ui); font-size: 13px;
  min-width: 0;
}
.newsletter-form input:focus { outline: none; }
.newsletter-form input::placeholder { color: rgba(250, 247, 242, .4); }
.newsletter-form button {
  background: transparent; border: none; cursor: pointer;
  padding: 0 14px; color: var(--accent-hair);
  display: inline-flex; align-items: center; justify-content: center;
  transition: color var(--t-quick), background var(--t-quick);
}
.newsletter-form button:hover { color: #fff; background: var(--accent); }
.newsletter-form svg { display: block; }
.newsletter-note {
  font-size: 11px; color: rgba(250, 247, 242, .4); margin: 8px 0 0;
  letter-spacing: 0;
}

.sr-only {
  position: absolute !important; left: -10000px !important; top: auto !important;
  width: 1px !important; height: 1px !important; overflow: hidden !important;
}
.footer-brand-name {
  font-family: var(--font-display); font-size: 22px; color: #fff;
  line-height: 1.25;
}
.footer-tagline {
  color: rgba(250, 247, 242, .6); line-height: 1.7; margin: 0;
  font-size: var(--text-sm);
}
.footer-col h4 {
  font-family: var(--font-ui);
  font-size: 10.5px; text-transform: uppercase; letter-spacing: .22em;
  color: var(--accent-hair); margin: 8px 0 var(--space-md); font-weight: 600;
}
.footer-col { display: flex; flex-direction: column; gap: 10px; }
.footer-col a { color: rgba(250, 247, 242, .85); text-decoration: none; transition: color var(--t-quick); }
.footer-col a:hover { color: var(--accent-hair); }
.footer-col span { color: rgba(250, 247, 242, .6); }
.footer-col span.muted-line { font-size: 12px; color: rgba(250, 247, 242, .45); }

.footer-bottom {
  display: flex; justify-content: space-between; align-items: center;
  padding-top: var(--space-lg); font-size: 11.5px;
  color: rgba(250, 247, 242, .5); flex-wrap: wrap; gap: 8px;
}
.footer-bottom .footer-legal a {
  color: rgba(250, 247, 242, .75); margin: 0 8px; text-decoration: none;
}
.footer-bottom .footer-legal a:hover { color: var(--accent-hair); }

/* ============================================================
   Utilities + A11y
   ============================================================ */
.skip-link {
  position: absolute; left: 0; top: 0;
  background: var(--ink-display); color: #fff;
  padding: 12px 18px; font-size: 13px;
  transform: translateY(-120%);
  transition: transform var(--t-quick);
  z-index: 1000;
}
.skip-link:focus-visible { transform: translateY(0); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 2px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .hero-image { animation: none !important; }
}

/* Reveal-on-scroll */
[data-reveal] {
  opacity: 0; transform: translateY(18px);
  transition: opacity .9s var(--ease), transform .9s var(--ease);
}
[data-reveal].is-visible { opacity: 1; transform: none; }

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 1080px) {
  .welt { grid-template-columns: 1fr; gap: var(--space-lg); }
  .welt.flip .welt-text, .welt.flip .welt-media { order: initial; }
  .welt-media { aspect-ratio: 4 / 3; max-width: 720px; width: 100%; margin: 0 auto; }
  .hosts-split { grid-template-columns: 1fr; gap: var(--space-lg); }
  .hosts-portrait { aspect-ratio: 4 / 3; max-width: 680px; margin: 0 auto; width: 100%; }
  .info-grid { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1.6fr 1fr 1fr; gap: clamp(24px, 3vw, 36px); }
  .footer-brand { grid-column: span 3; max-width: 520px; }
}
@media (max-width: 820px) {
  .section { padding: clamp(70px, 12vw, 110px) 0; }
  .hero { min-height: clamp(560px, 88vh, 760px); margin-top: -84px; }
  .hero-top { font-size: 10px; padding-top: 28px; }
  .hero-meta { display: none; }
  .hero-grid { grid-template-columns: 1fr; padding-bottom: var(--space-xl); }
  /* Hero-Inner bekommt padding-top = Topbar + Portal-Bar Höhe + Puffer,
     damit die Überschrift 'Ein Haus, drei Welten' nicht oben am
     Topbar-Rand angeschnitten/überlappt wird. */
  .hero-inner {
    padding: calc(var(--portal-bar-h, 40px) + var(--topbar-h, 64px) + 24px) 0 clamp(40px, 8vw, 60px);
  }
  .hero-content h1 { font-size: clamp(40px, 10vw, 68px) !important; line-height: 1.05; }
  .hero-content .lead { font-size: 15px; }
  .hero-actions { gap: var(--space-md); flex-direction: column; align-items: flex-start; }
  .hero-actions .btn { width: 100%; justify-content: center; padding: 16px 28px; }
  .hero-actions .link-arrow { font-size: 11px; }

  .prologue h2 { font-size: clamp(30px, 6vw + 10px, 44px); }
  .prologue p { font-size: var(--text-lg); }

  .quick-book-grid { grid-template-columns: 1fr; gap: var(--space-md); }
  .quick-book-card { padding: 28px 26px; }
  .heritage-split { grid-template-columns: 1fr; gap: var(--space-xl); }
  .heritage-portrait { aspect-ratio: 4 / 3; max-width: 560px; margin: 0 auto; width: 100%; }
  .heritage-timeline { grid-template-columns: 1fr 1fr; gap: var(--space-md) 0; }
  .heritage-timeline .timeline-item:nth-child(2) { border-right: none; }
  .heritage-timeline .timeline-item:nth-child(3) { border-top: 1px solid var(--border-hair); padding-top: var(--space-md); }
  .heritage-timeline .timeline-item:nth-child(4) { border-top: 1px solid var(--border-hair); padding-top: var(--space-md); }
  .rooms, .spaces, .menu-row { grid-template-columns: 1fr; gap: var(--space-xl); }
  .info-grid { grid-template-columns: 1fr; gap: var(--space-lg); }
  .steps { grid-template-columns: 1fr; gap: var(--space-xl); }
  .meta-strip-grid { grid-template-columns: 1fr; gap: var(--space-lg); text-align: left; }
  .meta-strip-item { padding-bottom: var(--space-md); border-bottom: 1px solid var(--border-hair); }
  .meta-strip-item:last-child { border-bottom: none; padding-bottom: 0; }

  .quote-editorial::before { top: 40px; font-size: 100px; }

  .footer-grid { grid-template-columns: 1fr 1fr; gap: var(--space-lg); }
  .footer-brand { grid-column: span 2; }
  .footer-bottom { flex-direction: column; align-items: flex-start; gap: 12px; }

  /* Mobile topbar + drawer */
  .nav-toggle { display: inline-flex; }
  .topbar .nav-cta.desktop-only,
  .topbar .desktop-only { display: none !important; }
  .topbar-inner {
    grid-template-columns: auto auto;
    justify-content: space-between;
    min-height: 68px;
    padding: 14px 0;
  }
  .primary-nav {
    position: fixed; inset: 0;
    width: 100%;
    min-height: 100dvh;
    max-height: 100dvh;
    background: var(--bg-canvas);
    display: flex; flex-direction: column;
    align-items: center; justify-content: flex-start;
    gap: var(--space-sm);
    padding: calc(var(--topbar-h, 64px) + var(--space-md)) var(--space-lg) calc(var(--space-xl) + env(safe-area-inset-bottom, 0px));
    opacity: 0; pointer-events: none;
    visibility: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    transition: opacity .2s var(--ease), visibility 0s linear .2s;
    z-index: 59;
  }
  .primary-nav.is-open {
    opacity: 1 !important;
    pointer-events: auto !important;
    visibility: visible !important;
    transition: opacity .2s var(--ease), visibility 0s linear 0s;
  }
  /* Drawer-Text immer dunkel, egal welche Topbar-Variante aktiv ist */
  .primary-nav.is-open a,
  body.nav-open .primary-nav a,
  body.nav-open .topbar.is-dark .primary-nav a {
    color: var(--ink-display) !important;
  }
  body.nav-open .topbar.is-dark .brand,
  body.nav-open .topbar.is-dark .nav-toggle {
    color: var(--ink-display) !important;
  }
  .primary-nav a {
    font-family: var(--font-display); font-weight: 500;
    font-size: clamp(30px, 8vw, 44px);
    text-transform: none; letter-spacing: 0;
    color: var(--ink-display);
    padding: 14px 0;
  }
  .primary-nav a::after {
    bottom: 6px; left: 50%; right: auto;
    width: 40px; transform: translateX(-50%) scaleX(0);
  }
  .primary-nav a:hover::after,
  .primary-nav a.is-active::after { transform: translateX(-50%) scaleX(1); }
  .primary-nav .nav-cta-mobile {
    display: inline-flex; align-items: center; justify-content: center;
    margin-top: var(--space-lg);
    padding: 16px 36px;
    background: var(--accent); color: #fff;
    font-family: var(--font-ui); font-size: 11.5px;
    font-weight: 600; text-transform: uppercase; letter-spacing: .22em;
    border: 1px solid var(--accent); border-radius: 2px;
    text-decoration: none;
    transition: background .24s var(--ease);
  }
  .primary-nav .nav-cta-mobile:hover { background: var(--accent-deep); }
  .primary-nav .nav-cta-mobile::after { display: none; }

  .primary-nav .drawer-contact {
    margin-top: var(--space-xl); padding-top: var(--space-lg);
    border-top: 1px solid var(--border-hair);
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    font-size: 13px; color: var(--ink-muted);
    font-family: var(--font-ui); letter-spacing: 0; text-transform: none;
    width: min(320px, 80vw);
  }
  /* Impressum/Datenschutz im Drawer (kleiner Footer) */
  .primary-nav .drawer-legal {
    margin-top: var(--space-md);
    display: flex; align-items: center; gap: 10px;
    font-family: var(--font-ui);
    font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase;
    color: var(--ink-muted);
  }
  .primary-nav .drawer-legal a {
    color: var(--ink-muted) !important;
    font-family: var(--font-ui) !important;
    font-size: 10.5px !important;
    font-weight: 500 !important;
    letter-spacing: .14em !important;
    text-transform: uppercase !important;
    padding: 8px 4px !important;
    min-height: 36px;
    display: inline-flex; align-items: center;
    text-decoration: none;
  }
  .primary-nav .drawer-legal a:hover { color: var(--ink-display) !important; }
  .primary-nav .drawer-legal a::after { display: none !important; }
  .primary-nav .drawer-legal span { color: var(--border-strong); }

  /* Familie-Düster-Sektion im Drawer (cross-brand navigation) */
  .primary-nav .drawer-family {
    margin-top: var(--space-lg);
    padding: var(--space-md) 0 0;
    border-top: 1px solid var(--border-hair);
    display: flex; flex-direction: column; align-items: center; gap: 4px;
    width: min(320px, 82vw);
    text-align: center;
  }
  .primary-nav .drawer-family-label {
    font-family: var(--font-ui);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--ink-muted);
    margin-bottom: 6px;
  }
  .primary-nav .drawer-family a {
    font-family: var(--font-display) !important;
    font-size: 18px !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    color: var(--ink-display) !important;
    padding: 10px 0 !important;
    min-height: 40px;
    display: inline-flex; align-items: center;
    text-decoration: none;
  }
  .primary-nav .drawer-family a:hover { color: var(--accent) !important; }
  .primary-nav .drawer-family a::after { display: none !important; }
  .primary-nav .drawer-contact a {
    color: var(--ink-display); text-decoration: none;
    font-family: var(--font-display); font-size: 18px;
  }
  .primary-nav .drawer-contact a::after { display: none; }
  .primary-nav .drawer-contact span { text-align: center; }

  /* Hamburger → X animation */
  .nav-toggle svg { transition: transform .3s var(--ease); }
  .nav-toggle .bar { transform-origin: center; transition: transform .3s var(--ease), opacity .2s var(--ease); }
  .nav-toggle[aria-expanded="true"] .bar-1 { transform: translateY(6px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] .bar-2 { opacity: 0; }
  .nav-toggle[aria-expanded="true"] .bar-3 { transform: translateY(-6px) rotate(-45deg); }

  body.nav-open { overflow: hidden; }

  /* Topbar im Drawer-Modus: hell + solid (kein durchscheinen) + kein
     Transparency-Override von body:has(.portal-bar).is-waldrain-Regeln */
  body.nav-open .topbar,
  .topbar.is-drawer-open,
  .topbar.is-dark.is-drawer-open {
    background: var(--bg-canvas) !important;
    border-bottom: 1px solid var(--border-hair);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  body.nav-open .topbar .brand,
  body.nav-open .topbar .brand-wordmark,
  body.nav-open .topbar .nav-toggle,
  .topbar.is-dark.is-drawer-open .brand,
  .topbar.is-dark.is-drawer-open .brand-wordmark,
  .topbar.is-dark.is-drawer-open .nav-toggle {
    color: var(--ink-display) !important;
    border-color: var(--border-strong);
  }

  .page-hero { padding: clamp(80px, 14vw, 120px) 0 clamp(50px, 8vw, 80px); }
  .page-hero h1 { font-size: clamp(32px, 8vw, 52px); }

  .prose { padding: var(--space-xl) 0 var(--space-2xl); }
}
@media (max-width: 520px) {
  .footer-grid { grid-template-columns: 1fr; }
  .footer-brand { grid-column: span 1; }
}

/* Print-Stylesheet · elegant reduziert */
@media print {
  .topbar, .portal-bar, .portal-return-fab, .portal-hero-scroll,
  .hero-scroll, .footer, .portal-footer, .nav-toggle,
  .primary-nav, .nav-cta, [data-reveal] { display: none !important; }
  *, *::before, *::after {
    background: #fff !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  body { font-size: 11pt; line-height: 1.5; }
  h1, h2, h3, h4 { page-break-after: avoid; }
  p { orphans: 3; widows: 3; }
  a[href]::after { content: " (" attr(href) ")"; font-size: 9pt; color: #555 !important; }
  a[href^="#"]::after, a[href^="tel:"]::after, a[href^="mailto:"]::after { content: ""; }
  .hero, .portal-hero, .page-hero { min-height: auto !important; padding: 20pt 0 !important; }
  .hero-image, .hero-overlay, .hero-vignette, .hero-grain, .portal-hero-mark { display: none !important; }
  .portal-card-visual, .welt-media, .heritage-portrait, .room-media, .space-media { display: none !important; }
}

/* Reduce-Motion · alle Animationen still */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
  .hero-image { animation: none !important; }
  .portal-hero-mark { animation: none !important; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
}

/* ============================================================
   Sprachumschalter · DE · EN · FR · editorial
   ============================================================ */
.lang-switch {
  display: inline-flex; align-items: center;
  gap: 8px;
  font-family: var(--font-ui);
  letter-spacing: .22em;
  text-transform: uppercase;
  font-size: 10.5px; font-weight: 600;
  line-height: 1;
}
.lang-switch .lang-btn {
  appearance: none; background: transparent; border: 0;
  padding: 6px 2px;
  color: rgba(250, 247, 242, .52);
  letter-spacing: inherit; text-transform: inherit;
  font-size: inherit; font-weight: inherit; font-family: inherit;
  cursor: pointer;
  position: relative;
  transition: color .2s var(--ease);
}
.lang-switch .lang-btn::after {
  content: "";
  position: absolute; left: 2px; right: 2px; bottom: 2px;
  height: 1px; background: var(--accent-hair);
  transform: scaleX(0); transform-origin: center;
  transition: transform .26s var(--ease);
}
.lang-switch .lang-btn:hover { color: rgba(250, 247, 242, .92); }
.lang-switch .lang-btn.is-active {
  color: var(--accent-hair);
}
.lang-switch .lang-btn.is-active::after { transform: scaleX(1); }
.lang-switch .lang-btn:focus-visible { outline: 2px solid var(--accent-hair); outline-offset: 3px; border-radius: 2px; }
.lang-switch .lang-sep {
  color: rgba(201, 165, 106, .42);
  pointer-events: none; user-select: none;
  font-weight: 400;
}

/* Portal-bar placement: kompaktes Trio links neben Family-Links */
.portal-bar .lang-switch {
  margin-left: auto;
  padding: 0 14px 0 0;
  border-right: 1px solid rgba(201, 165, 106, .22);
  margin-right: 14px;
}

/* Light-Variante für helle Topbars (Portal, Restaurant, Hotel, Catering) */
.lang-switch-portal .lang-btn { color: var(--ink-muted); }
.lang-switch-portal .lang-btn:hover { color: var(--ink-display); }
.lang-switch-portal .lang-btn.is-active { color: var(--accent); }
.lang-switch-portal .lang-btn::after { background: var(--accent); }
.lang-switch-portal .lang-sep { color: var(--border-strong); }

/* Drawer-Variante · im mobilen Menü, luftiger & heller */
.primary-nav .lang-switch {
  display: none;
  justify-content: flex-start;
  gap: 14px;
  margin: 8px 0 28px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--border-hair);
  font-size: 11.5px;
}
.primary-nav .lang-switch .lang-btn {
  color: var(--ink-muted);
  padding: 8px 0;
  min-width: 26px;
  text-align: left;
}
.primary-nav .lang-switch .lang-btn::after { background: var(--accent); }
.primary-nav .lang-switch .lang-btn:hover { color: var(--ink-display); }
.primary-nav .lang-switch .lang-btn.is-active { color: var(--accent); }
.primary-nav .lang-switch .lang-sep { color: var(--border-strong); }

@media (max-width: 820px) {
  /* Mobile: portal-bar Switcher versteckt (oft zu eng), drawer übernimmt */
  .portal-bar .lang-switch { display: none; }
  .primary-nav .lang-switch { display: inline-flex; }
}
/* Waldrain / helle Topbar: Drawer-Switcher soll ebenfalls erscheinen */
.topbar .primary-nav .lang-switch { }

/* Breadcrumb: aktuelle Seite visuell hervorheben */
.breadcrumb .breadcrumb-current {
  color: var(--ink-display);
  font-weight: 600;
}

/* Waldrain Portal-Card: prominentes 'Juni 2026'-Status-Badge */
.portal-card--waldrain .portal-card-eyebrow {
  position: relative;
  color: var(--accent);
  font-weight: 700;
  letter-spacing: .22em;
}
.portal-card--waldrain .portal-card-eyebrow::after {
  content: " · AB JUNI 2026";
  color: rgba(45, 59, 38, .7);
  font-weight: 500;
}

/* ============================================================
   Dish-Gallery · Speisen-Fotos im Restaurant
   ============================================================ */
.dish-gallery {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: clamp(16px, 2.4vw, 28px);
  max-width: 1160px;
  margin: 0 auto;
}
/* 4-Bilder-Variante: großes Lead-Bild links, 3 kleinere rechts gestapelt */
.dish-gallery--four {
  grid-template-columns: 1.4fr 0.9fr;
  grid-template-rows: auto auto auto;
  grid-auto-flow: column;
  gap: clamp(14px, 2vw, 24px);
}
.dish-gallery--four .dish-card--lead {
  grid-row: 1 / span 3;
}
.dish-gallery--four .dish-card:not(.dish-card--lead) .dish-media { aspect-ratio: 4 / 3; }
.dish-card {
  position: relative;
  margin: 0;
  display: flex; flex-direction: column;
  gap: 14px;
}
.dish-media {
  position: relative;
  overflow: hidden;
  aspect-ratio: 3 / 2;
  background: var(--bg-canvas-deep);
  border-radius: 2px;
}
.dish-card--lead .dish-media { aspect-ratio: 4 / 3; }
.dish-media img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transform: scale(1.01);
  transition: transform 1.4s var(--ease);
}
.dish-card:hover .dish-media img { transform: scale(1.05); }
.dish-caption {
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(14px, 1.1vw + 6px, 17px);
  color: var(--ink-secondary);
  line-height: 1.45;
  padding-left: 14px;
  border-left: 2px solid var(--accent);
  max-width: 42ch;
}

@media (max-width: 820px) {
  .dish-gallery,
  .dish-gallery--four {
    grid-template-columns: 1fr;
    grid-template-rows: none;
    grid-auto-flow: row;
    gap: 20px;
  }
  .dish-gallery--four .dish-card--lead { grid-row: auto; }
  .dish-card--lead .dish-media,
  .dish-media,
  .dish-gallery--four .dish-card:not(.dish-card--lead) .dish-media { aspect-ratio: 16 / 10; }
  .dish-caption { font-size: 14px; padding-left: 12px; max-width: 100%; }
}

/* ============================================================
   MOBILE FINE-TUNING · iPhone SE → iPhone 15 Pro Max
   Ergänzungen zum bestehenden 820px-Block: Touch-Targets,
   Safe-Area-Insets, Tight-Fit bei ≤ 480 px, Micro-Adjustments
   für ≤ 380 px (iPhone SE / kleines Android).
   ============================================================ */

/* ---- Safe-Area / horizontal overflow guard ---- */
@media (max-width: 820px) {
  html, body { overflow-x: clip; }
  html {
    scroll-padding-top: 76px;
    /* iOS: Rubber-Band-Bounce am Seitenende begrenzen, damit Topbar-Inhalt
       während overscroll nicht optisch abgeschnitten wirkt */
    overscroll-behavior-y: contain;
  }
  body { overscroll-behavior-y: contain; }
  .topbar-inner,
  .portal-bar-inner,
  .container,
  main .hero-inner,
  .portal-footer-inner,
  .footer-inner {
    padding-left: max(20px, env(safe-area-inset-left, 0px));
    padding-right: max(20px, env(safe-area-inset-right, 0px));
  }
  /* Hero-Bild-Parallax darf Viewport nicht überschreiten */
  .hero-image { max-width: 100vw; }
  /* Sehr lange Wörter nicht über den Rand ballern */
  h1, h2, h3, h4 { overflow-wrap: break-word; word-break: normal; hyphens: auto; }
}

/* ---- Tight Mobile · ≤ 480 px ---- */
@media (max-width: 480px) {
  /* Scroll-Anchor-Abstand an kleinere Topbar */
  html { scroll-padding-top: 72px; }

  /* Kompakter Topbar — aber genug Höhe damit brand-mark (34x48) nicht clippt
     und Logo/Text bei Overscroll nicht oben angeschnitten wirken */
  .topbar-inner { min-height: 64px; padding: 12px 0; align-items: center; }
  .brand { font-size: 15px; gap: 10px; }
  .brand-mark { width: 28px; height: 40px; }
  .brand-wordmark { line-height: 1.15; padding: 2px 0; }
  .nav-toggle { width: 44px; height: 44px; }

  /* Touch-Targets · allgemein */
  .portal-bar-inner { padding: 10px 0; gap: 8px; }
  .portal-bar-label,
  .portal-bar-family a {
    padding: 10px 4px;
    min-height: 40px;
    display: inline-flex; align-items: center;
  }
  .portal-bar-label { padding-left: 0; }

  .lang-switch .lang-btn {
    padding: 12px 6px;
    min-width: 40px; min-height: 40px;
    display: inline-flex; align-items: center; justify-content: center;
  }
  .primary-nav .lang-switch .lang-btn { padding: 12px 10px; min-width: 44px; }

  .link-arrow {
    padding: 10px 0;
    min-height: 44px;
    display: inline-flex; align-items: center;
  }

  /* Drawer-Links: komfortable Tap-Fläche, kleinere Schrift */
  .primary-nav a { font-size: clamp(22px, 6.4vw, 32px); padding: 8px 0; }
  .primary-nav .nav-cta-mobile { padding: 13px 26px; min-height: 44px; margin-top: var(--space-md); }
  .primary-nav .drawer-contact { font-size: 12px; width: min(320px, 90vw); margin-top: var(--space-md); padding-top: var(--space-sm); }
  .primary-nav .drawer-contact a { font-size: 15px; padding: 6px 0; }
  .primary-nav .drawer-family { margin-top: var(--space-sm); padding-top: var(--space-sm); }
  .primary-nav .drawer-family a { font-size: 16px !important; padding: 7px 0 !important; min-height: 36px; }
  .primary-nav .drawer-family-label { font-size: 9.5px; margin-bottom: 4px; }

  /* Section-Padding enger */
  .section { padding: clamp(52px, 13vw, 90px) 0; }
  .page-hero { padding: clamp(76px, 20vw, 120px) 0 clamp(36px, 10vw, 64px); }
  .page-hero h1 { font-size: clamp(30px, 9vw, 48px); line-height: 1.08; }

  /* Hero-Headline tighter — kleiner min-height auf Mobile damit Content näher */
  .hero-content h1 { font-size: clamp(36px, 11vw, 56px) !important; line-height: 1.03; }
  .hero-content .lead { font-size: 14px; line-height: 1.55; }
  .hero { min-height: clamp(480px, 72svh, 680px); }
  .hero-editorial, .hero-paper, .hero-split { min-height: clamp(460px, 70svh, 640px); }
  .page-hero { min-height: auto; padding: clamp(72px, 18vw, 110px) 0 clamp(36px, 10vw, 60px); }

  /* Steps-Grid (Catering-Seite) · 1-Spalte, kompakte Zahlen */
  .steps { grid-template-columns: 1fr !important; gap: var(--space-md) !important; }
  .step-num { font-size: clamp(32px, 9vw, 48px) !important; }

  /* Prolog / Welt-Text */
  .prologue h2 { font-size: clamp(26px, 6vw + 8px, 38px); line-height: 1.12; }
  .prologue p, .welt-text p { font-size: 15.5px; line-height: 1.62; }
  .welt-text h2 { font-size: clamp(24px, 6vw + 6px, 34px); line-height: 1.14; }

  /* Buttons · Touch-konform, Text bricht bei Bedarf — aber Max-Width für Lesbarkeit */
  .btn {
    padding: 14px 18px;
    min-height: 48px;
    font-size: 10.5px;
    letter-spacing: .18em;
    white-space: normal;
    text-align: center;
    line-height: 1.25;
    max-width: 100%;
    word-break: normal;
    hyphens: auto;
  }
  .hero-actions { gap: 10px; width: 100%; }
  .hero-actions .btn { width: 100%; padding: 15px 18px; }
  .portal-cta-right .btn { width: 100%; }

  /* Portal-Hero · noch enger */
  .portal-hero { padding: clamp(40px, 10vw, 60px) 0 clamp(28px, 7vw, 44px) !important; }
  .portal-hero h1 { font-size: clamp(34px, 10vw, 46px) !important; }

  /* Portal-Cards: Bild schlanker, Footer größer lesbar */
  .portal-card-visual { aspect-ratio: 16 / 10; padding: clamp(22px, 6vw, 36px); }
  .portal-card-logo { max-width: 60%; max-height: 60%; }
  .portal-card-footer { padding: 16px 18px; gap: 10px; }
  .portal-card-footer h3 { font-size: 21px; }
  .portal-card-footer p { font-size: 10px; letter-spacing: .14em; }
  .portal-card-arrow { width: 38px; height: 38px; flex-shrink: 0; }
  .portal-card-num { font-size: 22px; top: 12px; left: 14px; }

  /* Portal-CTA Catering */
  .portal-cta-catering-inner { padding: 24px 20px; }
  .portal-cta-left h3 { font-size: clamp(20px, 5.4vw, 26px); }
  .portal-cta-right .btn { flex: 1; min-width: 0; }

  /* Info-Grid / Meta-Strip · luftig */
  .info-grid { gap: var(--space-md); }
  .info-grid .info-item { padding: 18px 0; }
  .info-tile a, .info-grid a { padding: 8px 2px; display: inline-block; min-height: 36px; line-height: 1.4; }

  /* Room / Space / Quick-Book-Cards */
  .quick-book-card { padding: 22px 20px; }
  .quick-book-card h3 { font-size: 20px; }
  .room-card, .space-card { padding: 0; }
  .room-media, .space-media { aspect-ratio: 16 / 10; }
  .room-body, .space-body { padding: 20px 18px; }
  .room-title, .space-title { font-size: 20px; line-height: 1.15; }
  .room-facts { gap: 8px 16px; }
  .room-fact { min-width: 0; font-size: 10px; }

  /* Heritage · Portrait-Paar schlanker */
  .heritage-portrait { aspect-ratio: 16 / 10; }
  .heritage-timeline { grid-template-columns: 1fr; }
  .heritage-timeline .timeline-item { border-right: none !important; border-top: 1px solid var(--border-hair); padding: 14px 0; }
  .heritage-timeline .timeline-item:first-child { border-top: none; padding-top: 0; }

  /* Formulare (Newsletter, Kontakt, Catering-Teaser) */
  input, select, textarea {
    font-size: 16px; /* iOS zoomt sonst beim Fokus */
    padding: 12px 14px;
    min-height: 48px;
    width: 100%;
    box-sizing: border-box;
  }
  textarea { min-height: 120px; }
  label { font-size: 13px; }

  /* Breadcrumbs · Touch-freundlich */
  .breadcrumb a { padding: 8px 4px; min-height: 36px; display: inline-flex; align-items: center; }
  .breadcrumb a:first-child { padding-left: 0; }

  /* Tel/Mailto-Links in Fließtexten als Touch-Target */
  p a[href^="tel:"], p a[href^="mailto:"], .muted a[href^="tel:"], .muted a[href^="mailto:"] {
    padding: 8px 2px; display: inline-block; min-height: 36px; line-height: 1.4;
  }

  /* Prose / Impressum / Datenschutz lesbar halten */
  .prose { padding: var(--space-lg) 0 var(--space-xl); font-size: 15px; line-height: 1.7; }
  .prose h1 { font-size: clamp(28px, 8vw, 40px); }
  .prose h2 { font-size: clamp(20px, 5.5vw, 26px); margin-top: 1.8em; }
  .prose h3 { font-size: 17px; }
  .prose a { padding: 6px 0; display: inline-block; min-height: 36px; line-height: 1.4; word-break: break-word; }

  /* Footer · Kompakt */
  .footer { padding: var(--space-xl) 0 calc(var(--space-lg) + env(safe-area-inset-bottom, 0px)); }
  .footer-grid { gap: var(--space-md); }
  .footer-col h4 { font-size: 11px; margin-bottom: 10px; }
  .footer-col a { padding: 10px 0; display: inline-flex; align-items: center; min-height: 40px; }
  .footer a[href^="tel:"], .footer a[href^="mailto:"] { padding: 12px 0; min-height: 44px; }
  .footer-bottom { font-size: 11px; text-align: left; gap: 8px; padding-top: var(--space-md); }

  /* Portal-Footer ebenfalls */
  .portal-footer--full { padding: 32px 0 calc(24px + env(safe-area-inset-bottom, 0px)); }
  .portal-footer-cols { grid-template-columns: 1fr; gap: 20px; }
  .portal-footer-col a { padding: 10px 0; min-height: 40px; display: inline-flex; align-items: center; }
  .portal-footer a[href^="tel:"], .portal-footer a[href^="mailto:"] { padding: 12px 0; min-height: 44px; }
  .portal-footer-legal, .footer-legal { display: flex; flex-wrap: wrap; gap: 4px 16px; }
  .portal-footer-legal a, .footer-legal a { padding: 10px 0; min-height: 40px; display: inline-flex; align-items: center; }

  /* Presse / Zitate / Band-Medien · Aspect anpassen */
  .media-band-inner { aspect-ratio: 16 / 10; }
  .quote-editorial { padding: var(--space-xl) var(--space-md); }
  .quote-editorial blockquote { font-size: clamp(18px, 5.4vw, 26px); line-height: 1.3; }

  /* Waldrain-Heritage-Portraits */
  .heritage-portrait-person { aspect-ratio: 4 / 5; }

  /* FAB (portal-return) kleiner */
  .portal-return-fab { right: 14px; bottom: calc(14px + env(safe-area-inset-bottom, 0px)); padding: 10px 14px; font-size: 10px; }

  /* Portal-Card Footer h3 Mindestgröße (war zu klein wegen clamp-Basis) */
  .portal-card-footer h3 { font-size: clamp(20px, 5.6vw, 26px) !important; line-height: 1.18; }
  .portal-card-eyebrow {
    display: block;
    font-size: 9px;
    margin-bottom: 8px;
    white-space: normal;
  }
  .portal-card-eyebrow::before,
  .portal-card-eyebrow::after { display: none; }

  /* Dish-Gallery Lead auf Mobile ebenfalls 16:10 (einheitlich mit kleinen) */
  .dish-card--lead .dish-media { aspect-ratio: 16 / 10; }

  /* ---- Mobile Polish (Audit #4+): Drop-Cap, Link-Arrow, Quick-Book-Cards ---- */
  .drop-cap::first-letter {
    font-size: 2.6em !important;
    padding: 4px 8px 0 0 !important;
    line-height: .9 !important;
  }
  .link-arrow { flex-wrap: wrap; gap: 6px; }
  .quick-book-card h3 { font-size: 20px !important; line-height: 1.25; margin-bottom: 8px; }
  .quick-book-card p { font-size: 14px; line-height: 1.55; }

  /* ---- Section-Rhythmus straffen auf Mobile ---- */
  .section { padding: clamp(52px, 11vw, 80px) 0 !important; }
  .prologue { padding: clamp(48px, 10vw, 70px) 0 !important; }
  .page-hero { padding: clamp(72px, 16vw, 110px) 0 clamp(32px, 8vw, 56px) !important; }

  /* ---- Typografie-Hierarchie auf Mobile klarer
     Mindest-Abstand zwischen h1/h2/h3 erzwingen, damit Skala nicht
     flach wird oder invertiert (h3 > h2 Problem). ---- */
  h1 { font-size: clamp(32px, 9vw, 48px) !important; line-height: 1.08; }
  h2 { font-size: clamp(24px, 6vw + 6px, 34px) !important; line-height: 1.14; margin-top: .2em; }
  h3 { font-size: clamp(17px, 3.2vw + 4px, 22px) !important; line-height: 1.22; }
  .lead, p.lead { font-size: 15px; line-height: 1.6; }

  /* ---- Room-Facts kompakter auf schmalen Phones ---- */
  .room-facts { gap: 6px 14px !important; }
  .room-fact { min-width: 0; font-size: 10.5px; }

  /* ---- Buttons: mehr Atem ---- */
  .btn { padding: 14px 22px !important; letter-spacing: .18em; }
  .btn-primary { padding: 15px 22px !important; }
  .link-arrow { font-size: 11px; letter-spacing: .14em; }

  /* ---- Hosts/Portrait flex zu column ---- */
  .hosts-split { grid-template-columns: 1fr !important; gap: var(--space-lg); }
  .hosts-portrait { aspect-ratio: 4 / 3; }

  /* ---- Welt-Text Inner-Padding ---- */
  .welt-text { padding: var(--space-md) 0; }
  .welt-text h2 { margin-bottom: 16px; }

  /* ---- Footer-Rhythmus ---- */
  .footer { padding: var(--space-lg) 0 calc(var(--space-md) + env(safe-area-inset-bottom, 0px)); }
  .footer-col h4 { font-size: 10.5px; margin-bottom: 10px; letter-spacing: .2em; }
  .footer-col a { font-size: 14px; }

  /* ---- Media-Band-Caption etwas dezenter ---- */
  .media-band-caption, .catering-band-caption {
    font-size: 13px !important;
    padding: 10px 14px !important;
    max-width: calc(100% - 24px) !important;
  }

  /* ---- Forms (Catering-Seite): größere Touch-Felder, klarere Labels ---- */
  .cta-form label, .form-label { font-size: 13px; margin-bottom: 6px; letter-spacing: .08em; }
  .cta-form input, .cta-form select, .cta-form textarea { font-size: 16px !important; padding: 14px 16px !important; }
  fieldset { padding: 12px 0; margin: 0; border: 0; }
  .cta-form fieldset legend { font-size: 13px; padding: 0; margin-bottom: 10px; font-weight: 600; }

  /* ---- Page-Hero Lead (unter H1) ---- */
  .page-hero .lead { font-size: 15px; max-width: 100%; line-height: 1.6; }
  .page-hero .breadcrumb { font-size: 10.5px; }

  /* ---- Portal-Bar-Label: niemals umbrechen, sauber clippen ---- */
  .portal-bar-label {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: calc(100vw - 40px);
  }
}

/* ---- Mikro-Mobile · ≤ 380 px (iPhone SE 1st gen, Galaxy S8) ---- */
@media (max-width: 380px) {
  .topbar-inner { min-height: 60px; padding: 10px 0; }
  .brand { font-size: 14px; }
  .brand-mark { width: 26px; height: 36px; }
  .hero-content h1 { font-size: clamp(32px, 10vw, 46px) !important; }
  .portal-hero h1 { font-size: clamp(30px, 9vw, 40px) !important; }
  .page-hero h1 { font-size: clamp(26px, 8.5vw, 38px); }
  .prologue h2, .welt-text h2 { font-size: clamp(22px, 6.2vw, 30px); }
  .btn { font-size: 10px; letter-spacing: .16em; padding: 13px 18px; }
  .portal-bar-family a,
  .portal-bar-label { font-size: 10px; padding: 8px 2px; }
  .portal-card-footer h3 { font-size: 19px; }
  .portal-card-footer p { font-size: 9.5px; }
  .portal-cta-right { flex-direction: column; align-items: stretch; gap: 10px; }
  .portal-cta-right .btn { width: 100%; }
  .primary-nav a { font-size: clamp(22px, 7vw, 32px); }
}

/* Short mobile (Landscape Phone · Height < 520) — Drawer darf scrollen */
@media (max-width: 820px) and (max-height: 520px) {
  .primary-nav { justify-content: flex-start; padding-top: var(--space-md); }
  .primary-nav a { font-size: 22px; padding: 10px 0; }
  .primary-nav .nav-cta-mobile { margin-top: var(--space-md); padding: 12px 24px; }
}

/* ============================================================
   DRAWER OVERRIDES · höchste Priorität, letzter Eintrag im Stylesheet
   Garantiert sichtbaren Drawer auf allen Seiten, unabhängig von
   topbar.is-dark oder anderen Kontexten.
   ============================================================ */
body.nav-open .primary-nav.is-open {
  transform: translateY(0) !important;
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
}
body.nav-open .primary-nav.is-open a,
body.nav-open .topbar.is-dark .primary-nav.is-open a,
body.nav-open .topbar:not(.is-dark) .primary-nav.is-open a {
  color: #1E1A16 !important;
}
body.nav-open .primary-nav.is-open a:hover {
  color: var(--accent) !important;
}
body.nav-open .topbar.is-dark .brand,
body.nav-open .topbar.is-dark .nav-toggle {
  color: #1E1A16 !important;
  border-color: rgba(30, 26, 22, .24) !important;
}


