/* =============================================
   WIDGET-STYLES – Landhotel „Zum Hirsch“
   Alle Sektions-Styles gebündelt an einer Stelle.
   Geteilte Blöcke (Flatpickr, Booking-Bar, Formulare)
   sind bewusst nur einmal definiert.
   ============================================= */

/* ---------------------------------------------
   HOME-HERO
   --------------------------------------------- */
.hero { position:relative; height:88vh; min-height:580px; max-height:920px; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.hero-bg { position:absolute; inset:0; background:linear-gradient(180deg,rgba(30,26,21,0.74) 0%,rgba(30,26,21,0.55) 35%,rgba(30,26,21,0.82) 100%) center/cover no-repeat; }
.hero-content { position:relative; z-index:2; text-align:center; padding:0 var(--space-md); max-width:820px; }
.hero-label { font-family:var(--font-body); font-weight:400; font-size:var(--text-sm); letter-spacing:0.35em; text-transform:uppercase; color:var(--gold-400); margin-bottom:var(--space-md); display:block; opacity:0; transform:translateY(20px); animation:fadeUp 0.8s var(--ease-out) 0.3s forwards; }
.hero-title { font-family:var(--font-display); font-weight:300; font-size:var(--heading-xl); line-height:1.06; color:var(--white); letter-spacing:0.015em; margin-bottom:var(--space-md); opacity:0; transform:translateY(30px); animation:fadeUp 1s var(--ease-out) 0.5s forwards; }
.hero-subtitle { font-family:var(--font-body); font-weight:300; font-size:var(--text-lg); color:rgba(255,255,255,0.8); line-height:1.7; max-width:560px; margin:0 auto var(--space-lg); opacity:0; transform:translateY(20px); animation:fadeUp 0.8s var(--ease-out) 0.7s forwards; }
.hero-actions { display:flex; gap:var(--space-sm); justify-content:center; flex-wrap:wrap; opacity:0; transform:translateY(20px); animation:fadeUp 0.8s var(--ease-out) 0.9s forwards; }

/* ---------------------------------------------
   BUCHUNGS-LEISTE (oben überlappend + inline)
   --------------------------------------------- */
.booking-bar { position:relative; z-index:10; text-align:left; }
.booking-bar--overlap { margin-top:-38px; }
.booking-bar-inner { max-width:940px; width:100%; margin:0 auto; background:var(--white); box-shadow:0 16px 48px rgba(0,0,0,0.1),0 2px 6px rgba(0,0,0,0.04); display:flex; align-items:stretch; }
.booking-field { flex:1; padding:1.3rem 2rem; display:flex; flex-direction:column; gap:0.35rem; border-right:1px solid var(--forest-100); }
.booking-field:last-of-type { border-right:none; }
.booking-field label { font-size:0.7rem; letter-spacing:0.22em; text-transform:uppercase; color:var(--forest-400); font-weight:500; }
.booking-field input { font-family:var(--font-display); font-size:var(--text-lg); font-weight:500; color:var(--forest-800); border:none; outline:none; background:transparent; width:100%; cursor:pointer; }
.booking-btn { display:inline-flex; align-items:center; justify-content:center; gap:0.6rem; background:var(--gold-500); color:var(--white); font-family:var(--font-body); font-weight:500; font-size:0.78rem; letter-spacing:0.2em; text-transform:uppercase; padding:1.3rem 2.4rem; white-space:nowrap; transition:background var(--dur-fast); }
.booking-btn [data-lucide] { width:18px; height:18px; }
.booking-btn:hover { background:var(--gold-600); }
.booking-secondary { display:flex; gap:var(--space-sm); justify-content:center; flex-wrap:wrap; margin-top:var(--space-lg); }

/* Flatpickr (Datumsauswahl) – geteilt */
.flatpickr-calendar { font-family:var(--font-body); border:none; box-shadow:0 16px 48px rgba(0,0,0,0.12); }
.flatpickr-months .flatpickr-month { background:var(--forest-800); color:var(--white); height:48px; }
.flatpickr-current-month { font-family:var(--font-display); font-size:1.15rem; font-weight:500; color:var(--white); }
.flatpickr-current-month .flatpickr-monthDropdown-months,.flatpickr-current-month input.cur-year { background:var(--forest-800); color:var(--white); font-family:var(--font-display); }
.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month { fill:var(--gold-400); color:var(--gold-400); }
span.flatpickr-weekday { color:var(--forest-500); font-weight:500; font-size:0.75rem; }
.flatpickr-day { color:var(--forest-800); }
.flatpickr-day:hover { background:var(--gold-100); border-color:var(--gold-200); }
.flatpickr-day.selected,.flatpickr-day.selected:hover { background:var(--gold-500); border-color:var(--gold-500); color:var(--white); }
.flatpickr-day.today { border-color:var(--gold-400); }
.flatpickr-day.inRange { background:var(--gold-100); border-color:var(--gold-100); box-shadow:-5px 0 0 var(--gold-100),5px 0 0 var(--gold-100); }
.flatpickr-day.startRange,.flatpickr-day.endRange { background:var(--gold-500); border-color:var(--gold-500); color:var(--white); }
.flatpickr-day.disabled,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay { color:var(--forest-200); }

/* ---------------------------------------------
   FEATURES-GRID (3 Karten)
   --------------------------------------------- */
.features-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--forest-100); }
.feature-card { position:relative; height:560px; overflow:hidden; cursor:pointer; }
.feature-card-bg { position:absolute; inset:0; background-size:cover; background-position:center; transition:transform 0.8s var(--ease-out); }
.feature-card:hover .feature-card-bg { transform:scale(1.05); }
.feature-card-overlay { position:absolute; inset:0; background:linear-gradient(180deg,rgba(30,26,21,0.25) 0%,rgba(30,26,21,0.88) 100%); transition:background var(--dur-normal); }
.feature-card:hover .feature-card-overlay { background:linear-gradient(180deg,rgba(30,26,21,0.35) 0%,rgba(30,26,21,0.92) 100%); }
.feature-card-content { position:absolute; bottom:0; left:0; right:0; padding:var(--space-xl) var(--space-lg); z-index:2; }
.feature-card-label { color:var(--gold-400); margin-bottom:var(--space-xs); display:block; }
.feature-card-title { font-family:var(--font-display); font-weight:400; font-size:var(--heading-sm); color:var(--white); margin-bottom:var(--space-xs); }
.feature-card-text { font-size:var(--text-base); color:rgba(255,255,255,0.75); line-height:1.65; max-width:340px; opacity:0; transform:translateY(10px); transition:all var(--dur-normal) var(--ease-out); }
.feature-card:hover .feature-card-text { opacity:1; transform:translateY(0); }
.feature-card-arrow { display:inline-flex; align-items:center; gap:0.5rem; margin-top:var(--space-md); font-size:var(--text-sm); letter-spacing:0.2em; text-transform:uppercase; color:var(--gold-400); font-weight:500; opacity:0; transform:translateY(10px); transition:all var(--dur-normal) var(--ease-out) 0.05s; }
.feature-card:hover .feature-card-arrow { opacity:1; transform:translateY(0); }
.feature-card-arrow [data-lucide] { width:18px; height:18px; transition:transform var(--dur-fast); }
.feature-card-arrow:hover [data-lucide] { transform:translateX(4px); }

/* ---------------------------------------------
   TEXT + MEDIA (Über uns / Atmosphäre)
   --------------------------------------------- */
.text-media-section { padding:var(--section-py) 0; position:relative; overflow:hidden; }
.text-media-section.is-dark { background:var(--forest-900); color:var(--white); }
.text-media-section.is-dark::before { content:''; position:absolute; top:-200px; right:-200px; width:600px; height:600px; border-radius:50%; background:radial-gradient(circle,rgba(182,159,107,0.06) 0%,transparent 70%); pointer-events:none; }
.text-media-grid { display:grid; grid-template-columns:1fr 1fr; gap:clamp(3rem,6vw,7rem); align-items:center; position:relative; z-index:2; }
.text-media-content .section-label { color:var(--gold-400); margin-bottom:var(--space-md); display:block; }
.text-media-section:not(.is-dark) .text-media-content .section-label { color:var(--gold-500); }
.text-media-content .heading-section { margin-bottom:var(--space-lg); }
.text-media-section.is-dark .text-media-content .heading-section { color:var(--white); }
.text-media-content p { font-size:var(--text-lg); line-height:1.85; color:var(--forest-500); margin-bottom:var(--space-md); }
.text-media-section.is-dark .text-media-content p { color:rgba(255,255,255,0.65); }
.text-media-content p strong { color:var(--forest-800); font-weight:500; }
.text-media-section.is-dark .text-media-content p strong { color:var(--gold-300); }
.text-media-quote { margin-top:var(--space-xl); padding-left:var(--space-md); border-left:2px solid var(--gold-500); }
.text-media-quote blockquote { font-family:var(--font-display); font-style:italic; font-size:var(--text-xl); color:var(--forest-700); line-height:1.55; margin-bottom:var(--space-xs); }
.text-media-section.is-dark .text-media-quote blockquote { color:rgba(255,255,255,0.8); }
.text-media-quote cite { font-style:normal; font-size:var(--text-sm); color:var(--gold-600); letter-spacing:0.06em; }
.text-media-section.is-dark .text-media-quote cite { color:var(--gold-400); }
.text-media-image { position:relative; }
.text-media-image img { width:100%; aspect-ratio:4/5; object-fit:cover; }
.text-media-section.image-left .text-media-image { order:-1; }

/* ---------------------------------------------
   EVENTS (Termine & Feste) – geteilt
   --------------------------------------------- */
.events-section { padding:var(--section-py) 0; }
.events-section.no-top-pad { padding-top:0; }
.events-header { text-align:center; margin-bottom:var(--space-2xl); }
.events-header .section-label { color:var(--gold-500); margin-bottom:var(--space-md); display:block; }
.events-header .heading-section { margin-bottom:var(--space-md); }
.events-header-text { max-width:580px; margin:0 auto; font-size:var(--text-lg); line-height:1.7; color:var(--forest-500); }
.events-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-lg); }
.event-card { background:var(--white); overflow:hidden; box-shadow:0 4px 24px rgba(0,0,0,0.06); transition:transform var(--dur-normal) var(--ease-out),box-shadow var(--dur-normal); display:flex; flex-direction:column; }
.event-card:hover { transform:translateY(-8px); box-shadow:0 24px 60px rgba(0,0,0,0.12); }
.event-card-image { aspect-ratio:4/3; overflow:hidden; position:relative; }
.event-card-image img { width:100%; height:100%; object-fit:cover; transition:transform var(--dur-slow) var(--ease-out); }
.event-card:hover .event-card-image img { transform:scale(1.06); }
.event-card-badge { position:absolute; top:1rem; left:1rem; z-index:3; background:var(--white); padding:0.55rem 0.85rem 0.6rem; display:flex; flex-direction:column; align-items:center; box-shadow:0 8px 20px rgba(0,0,0,0.18); min-width:64px; transition:transform var(--dur-normal) var(--ease-out); }
.event-card:hover .event-card-badge { transform:translateY(-3px); }
.event-badge-day { font-family:var(--font-display); font-weight:600; font-size:1.35rem; line-height:1; color:var(--forest-800); margin-bottom:0.15rem; }
.event-badge-month { font-family:var(--font-body); font-weight:600; font-size:0.7rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--gold-600); }
.event-card-body { padding:var(--space-lg); display:flex; flex-direction:column; flex:1; }
.event-card-title { font-family:var(--font-display); font-weight:500; font-size:var(--heading-sm); color:var(--forest-800); margin-bottom:var(--space-xs); line-height:1.2; }
.event-card-text { font-size:var(--text-base); color:var(--forest-500); line-height:1.65; margin-bottom:var(--space-md); }
.event-card-meta { display:flex; flex-direction:column; gap:0.55rem; flex:1; }
.event-meta-row { display:flex; align-items:center; gap:0.65rem; font-size:0.88rem; color:var(--forest-600); }
.event-meta-row [data-lucide] { width:16px; height:16px; color:var(--gold-500); flex-shrink:0; stroke-width:1.7; }
.events-cta { text-align:center; margin-top:var(--space-xl); }

/* Info-Bar CTA-Button (unter Öffnungszeiten) */
.info-bar-cta { text-align:center; margin-top:var(--space-xl); }

/* ---------------------------------------------
   KONTAKT-CTA (Bild-Hintergrund)
   --------------------------------------------- */
.cta-section { position:relative; padding:var(--section-py) 0; overflow:hidden; }
.cta-bg { position:absolute; inset:0; background:linear-gradient(180deg,rgba(30,26,21,0.78) 0%,rgba(30,26,21,0.9) 100%) center/cover no-repeat; }
.cta-content { position:relative; z-index:2; text-align:center; max-width:660px; margin:0 auto; }
.cta-content .section-label { color:var(--gold-300); margin-bottom:var(--space-md); display:block; }
.cta-content .heading-section { color:var(--white); margin-bottom:var(--space-md); }
.cta-content p { color:rgba(255,255,255,0.7); font-size:var(--text-lg); line-height:1.7; margin-bottom:var(--space-lg); }
.cta-actions { display:flex; gap:var(--space-sm); justify-content:center; flex-wrap:wrap; }

/* Buchungs-CTA-Kopf (Erweiterung zu main.css) */
.booking-cta-actions { display:flex; gap:var(--space-sm); justify-content:center; flex-wrap:wrap; margin-top:var(--space-md); }

/* ---------------------------------------------
   ZIMMER (Hotel)
   --------------------------------------------- */
.rooms-section { padding:0 0 var(--section-py); }
.rooms-grid { display:flex; flex-direction:column; gap:var(--space-2xl); }
.room { display:grid; grid-template-columns:1.15fr 1fr; gap:clamp(2rem,5vw,5rem); align-items:center; }
.room:nth-child(even) { grid-template-columns:1fr 1.15fr; }
.room:nth-child(even) .room-image { order:2; }
.room:nth-child(even) .room-content { order:1; }
.room-image { position:relative; aspect-ratio:4/5; overflow:hidden; }
.room-image img { width:100%; height:100%; object-fit:cover; transition:transform 1s var(--ease-out); }
.room:hover .room-image img { transform:scale(1.04); }
.room-content { padding:var(--space-md) 0; }
.room-title { font-family:var(--font-display); font-weight:400; font-size:clamp(2rem,2.5vw,2.8rem); line-height:1.1; color:var(--forest-800); margin-bottom:var(--space-md); }
.room-divider { width:40px; height:1.5px; background:var(--gold-400); margin-bottom:var(--space-md); }
.room-description { font-size:var(--text-base); line-height:1.85; color:var(--forest-500); margin-bottom:var(--space-md); }
.room-specs { display:flex; flex-wrap:wrap; gap:var(--space-md) var(--space-lg); margin-bottom:var(--space-md); padding:var(--space-md) 0; border-top:1px solid var(--forest-100); border-bottom:1px solid var(--forest-100); }
.room-spec { display:flex; align-items:center; gap:0.6rem; }
.room-spec [data-lucide] { width:22px; height:22px; color:var(--gold-500); flex-shrink:0; stroke-width:1.5; }
.room-spec-info { display:flex; flex-direction:column; line-height:1.2; }
.room-spec-label { font-size:0.65rem; letter-spacing:0.2em; text-transform:uppercase; color:var(--forest-400); font-weight:500; margin-bottom:0.1rem; }
.room-spec-value { font-family:var(--font-display); font-size:1.05rem; font-weight:500; color:var(--forest-800); }
.room-amenities { display:flex; flex-wrap:wrap; gap:0.6rem; margin-bottom:var(--space-lg); }
.room-amenity { display:inline-flex; align-items:center; gap:0.5rem; padding:0.5rem 0.95rem; background:var(--cream-warm); font-size:0.8rem; color:var(--forest-700); transition:background var(--dur-fast); }
.room-amenity:hover { background:var(--gold-100); }
.room-amenity [data-lucide] { width:15px; height:15px; color:var(--gold-600); stroke-width:1.6; }
.room-actions { display:flex; gap:var(--space-sm); flex-wrap:wrap; }

/* ---------------------------------------------
   INFO-STRIP (Check-in etc.) – Variante zu .info-bar
   --------------------------------------------- */
.info-strip { background:var(--forest-800); color:var(--white); padding:clamp(3rem,5vw,4rem) 0; }
.info-strip-grid { display:grid; grid-template-columns:repeat(4,1fr); }
.info-strip-item { padding:var(--space-md); text-align:center; border-right:1px solid rgba(182,159,107,0.18); }
.info-strip-item:last-child { border-right:none; }
.info-strip-icon { width:34px; height:34px; margin:0 auto var(--space-sm); color:var(--gold-400); stroke-width:1.5; display:block; }
.info-strip-label { font-size:0.7rem; letter-spacing:0.24em; text-transform:uppercase; color:var(--gold-400); margin-bottom:var(--space-xs); font-weight:500; }
.info-strip-value { font-family:var(--font-display); font-size:1.4rem; color:rgba(255,255,255,0.95); line-height:1.25; }

/* ---------------------------------------------
   KÜCHEN-GRID (Restaurant)
   --------------------------------------------- */
.kitchens-section { padding:0; }
.kitchens-grid { display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--forest-100); }
.kitchen-card { position:relative; min-height:580px; overflow:hidden; cursor:pointer; }
.kitchen-card-bg { position:absolute; inset:0; background-size:cover; background-position:center; transition:transform 0.8s var(--ease-out); }
.kitchen-card:hover .kitchen-card-bg { transform:scale(1.05); }
.kitchen-card-overlay { position:absolute; inset:0; background:linear-gradient(180deg,rgba(30,26,21,0.3) 0%,rgba(30,26,21,0.85) 100%); transition:background var(--dur-normal); }
.kitchen-card:hover .kitchen-card-overlay { background:linear-gradient(180deg,rgba(30,26,21,0.4) 0%,rgba(30,26,21,0.9) 100%); }
.kitchen-card-content { position:absolute; bottom:0; left:0; right:0; padding:var(--space-xl); z-index:2; color:var(--white); }
.kitchen-card-label { color:var(--gold-400); margin-bottom:var(--space-sm); display:block; }
.kitchen-card-title { font-family:var(--font-display); font-weight:400; font-size:clamp(2rem,2.5vw,2.8rem); margin-bottom:var(--space-sm); line-height:1.1; letter-spacing:0.01em; }
.kitchen-card-text { font-size:var(--text-base); color:rgba(255,255,255,0.8); line-height:1.7; max-width:480px; margin-bottom:var(--space-md); }
.kitchen-card-specialties { display:flex; flex-wrap:wrap; align-items:center; gap:0.55rem 0.85rem; font-family:var(--font-body); font-weight:400; font-size:0.78rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--gold-300); }
.kitchen-card-specialties span { position:relative; padding-right:0.85rem; }
.kitchen-card-specialties span::after { content:''; position:absolute; right:0; top:50%; transform:translateY(-50%); width:3px; height:3px; background:var(--gold-400); border-radius:50%; opacity:0.7; }
.kitchen-card-specialties span:last-child { padding-right:0; }
.kitchen-card-specialties span:last-child::after { display:none; }

/* ---------------------------------------------
   SPEISEKARTE (Restaurant)
   --------------------------------------------- */
.menu-section { padding:var(--section-py) 0; background:var(--cream); }
.menu-header { text-align:center; margin-bottom:var(--space-xl); }
.menu-header .section-label { color:var(--gold-500); margin-bottom:var(--space-md); display:block; }
.menu-header .section-divider { margin-top:var(--space-md); }
.menu-tabs { display:flex; justify-content:center; flex-wrap:wrap; gap:0.5rem; margin-bottom:var(--space-xl); }
.menu-tab { display:inline-flex; align-items:center; gap:0.55rem; padding:0.85rem 1.5rem; font-family:var(--font-body); font-weight:500; font-size:var(--text-sm); letter-spacing:0.18em; text-transform:uppercase; border:1.5px solid var(--gold-300); background:transparent; color:var(--forest-600); cursor:pointer; transition:all var(--dur-fast); }
.menu-tab [data-lucide] { width:16px; height:16px; }
.menu-tab:hover { border-color:var(--gold-500); color:var(--gold-600); }
.menu-tab.active { background:var(--gold-500); border-color:var(--gold-500); color:var(--white); }
.menu-panel { display:none; }
.menu-panel.active { display:block; }
.menu-grid { display:grid; grid-template-columns:1fr 1fr; gap:var(--space-lg) var(--space-2xl); max-width:1080px; margin:0 auto; }
.menu-item { display:flex; gap:var(--space-md); padding-bottom:var(--space-md); border-bottom:1px dashed var(--forest-200); }
.menu-item-content { flex:1; }
.menu-item-row { display:flex; align-items:baseline; gap:0.5rem; margin-bottom:0.25rem; }
.menu-item-name { font-family:var(--font-display); font-weight:500; font-size:var(--text-xl); color:var(--forest-800); flex:1; }
.menu-item-price { font-family:var(--font-display); font-weight:500; font-size:var(--text-lg); color:var(--gold-600); white-space:nowrap; }
.menu-item-desc { font-size:0.9rem; color:var(--forest-500); line-height:1.55; }
.menu-item-tag { display:inline-block; margin-top:0.4rem; padding:0.15rem 0.55rem; background:var(--gold-100); color:var(--gold-700); font-size:0.65rem; letter-spacing:0.12em; text-transform:uppercase; font-weight:500; }
.menu-footer { text-align:center; margin-top:var(--space-xl); padding:var(--space-md); background:var(--cream-warm); }
.menu-footer p { font-size:0.85rem; color:var(--forest-500); line-height:1.6; }

/* ---------------------------------------------
   AKTIVITÄTEN + KARTE (Natur erleben)
   --------------------------------------------- */
.explore-section { padding:0 0 var(--section-py); }
.filter-bar { display:flex; justify-content:center; flex-wrap:wrap; gap:0.5rem; margin-bottom:var(--space-lg); }
.filter-btn { display:inline-flex; align-items:center; gap:0.55rem; padding:0.85rem 1.5rem; font-family:var(--font-body); font-weight:500; font-size:var(--text-sm); letter-spacing:0.18em; text-transform:uppercase; border:1.5px solid var(--gold-300); background:transparent; color:var(--forest-600); cursor:pointer; transition:all var(--dur-fast); }
.filter-btn [data-lucide] { width:16px; height:16px; }
.filter-btn:hover { border-color:var(--gold-500); color:var(--gold-600); }
.filter-btn.active { background:var(--gold-500); border-color:var(--gold-500); color:var(--white); }
.explore-layout { display:grid; grid-template-columns:1.05fr 1fr; gap:var(--space-md); align-items:stretch; }
.explore-map-col { position:relative; display:flex; }
.explore-map-wrap { position:sticky; top:100px; height:calc(100vh - 130px); width:100%; background:var(--white); box-shadow:0 8px 32px rgba(0,0,0,0.08); align-self:flex-start; }
.lh-map { width:100%; height:100%; }
.map-legend { position:absolute; top:1rem; right:1rem; background:rgba(255,255,255,0.97); padding:0.7rem 0.85rem; box-shadow:0 4px 16px rgba(0,0,0,0.1); z-index:1000; font-size:0.78rem; }
.map-legend-title { font-family:var(--font-body); font-weight:500; font-size:0.62rem; letter-spacing:0.2em; text-transform:uppercase; color:var(--forest-500); margin-bottom:0.45rem; }
.map-legend-item { display:flex; align-items:center; gap:0.45rem; color:var(--forest-700); margin-bottom:0.2rem; }
.map-legend-item:last-child { margin-bottom:0; }
.map-legend-dot { width:11px; height:11px; border-radius:50%; flex-shrink:0; }
.map-legend-dot.dot-hotel { background:var(--gold-500); border:2px solid var(--white); box-shadow:0 0 0 1px var(--gold-500); }
.map-legend-dot.dot-sehenswert { background:var(--gold-400); }
.map-legend-dot.dot-wandern { background:var(--forest-600); }
.map-legend-dot.dot-rad { background:var(--forest-400); }
.explore-cards { display:flex; flex-direction:column; gap:0.6rem; }
.activity-card { background:var(--white); display:flex; gap:0; cursor:pointer; box-shadow:0 2px 12px rgba(0,0,0,0.04); transition:transform var(--dur-fast),box-shadow var(--dur-fast),background var(--dur-fast),color var(--dur-fast); overflow:hidden; }
.activity-card:hover { transform:translateX(2px); box-shadow:inset 3px 0 0 var(--gold-500),0 8px 24px rgba(0,0,0,0.1); }
.activity-card.is-active { background:var(--gold-500); color:var(--white); transform:translateX(2px); box-shadow:inset 3px 0 0 var(--gold-600),0 12px 32px rgba(182,159,107,0.4); }
.activity-card.is-active .activity-card-title,.activity-card.is-active .activity-card-text,.activity-card.is-active .activity-meta-item,.activity-card.is-active .activity-card-link { color:var(--white); }
.activity-card.is-active .activity-meta-item [data-lucide],.activity-card.is-active .activity-card-link [data-lucide] { color:rgba(255,255,255,0.9); }
.activity-card.is-active .activity-category { background:rgba(0,0,0,0.2); color:var(--white); backdrop-filter:blur(4px); }
.activity-card.hidden { display:none; }
.activity-card-image { width:140px; flex-shrink:0; aspect-ratio:1/1; overflow:hidden; position:relative; }
.activity-card-image img { width:100%; height:100%; object-fit:cover; transition:transform var(--dur-normal); }
.activity-card:hover .activity-card-image img { transform:scale(1.08); }
.activity-category { position:absolute; top:0.5rem; left:0.5rem; z-index:3; background:rgba(255,255,255,0.95); padding:0.25rem 0.5rem; display:inline-flex; align-items:center; gap:0.3rem; font-family:var(--font-body); font-weight:500; font-size:0.6rem; letter-spacing:0.16em; text-transform:uppercase; color:var(--gold-600); }
.activity-category [data-lucide] { width:11px; height:11px; }
.activity-card-body { padding:var(--space-md); display:flex; flex-direction:column; flex:1; min-width:0; }
.activity-card-title { font-family:var(--font-display); font-weight:500; font-size:1.25rem; color:var(--forest-800); margin-bottom:0.35rem; line-height:1.2; }
.activity-card-text { font-size:0.86rem; color:var(--forest-500); line-height:1.55; margin-bottom:var(--space-xs); display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.activity-meta { display:flex; flex-wrap:wrap; gap:0.85rem; margin-top:auto; padding-top:var(--space-xs); }
.activity-meta-item { display:inline-flex; align-items:center; gap:0.35rem; font-size:0.74rem; color:var(--forest-600); }
.activity-meta-item [data-lucide] { width:13px; height:13px; color:var(--gold-500); stroke-width:1.7; }
.activity-card-link { display:inline-flex; align-items:center; gap:0.45rem; margin-top:var(--space-sm); padding-top:var(--space-sm); font-family:var(--font-body); font-weight:500; font-size:0.74rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--gold-600); transition:color var(--dur-fast),gap var(--dur-fast); border-top:1px solid var(--forest-100); }
.activity-card-link [data-lucide] { width:14px; height:14px; transition:transform var(--dur-fast); }
.activity-card-link:hover { color:var(--gold-700); gap:0.65rem; }
.activity-card-link:hover [data-lucide] { transform:translateX(3px); }
.leaflet-popup-content-wrapper { border-radius:2px; }
.leaflet-popup-content { font-family:var(--font-body); margin:0.75rem 0.95rem; }
.popup-title { font-family:var(--font-display); font-weight:500; font-size:1.1rem; color:var(--forest-800); margin-bottom:0.2rem; }
.popup-cat { font-size:0.66rem; letter-spacing:0.16em; text-transform:uppercase; color:var(--gold-600); }

/* ---------------------------------------------
   TAGESAUSFLÜGE (Natur)
   --------------------------------------------- */
.daytrips-section { padding:var(--section-py) 0; }
.daytrips-header { text-align:center; max-width:760px; margin:0 auto var(--space-xl); }
.daytrips-header .section-label { color:var(--gold-500); margin-bottom:var(--space-md); display:block; }
.daytrips-header .heading-section { margin-bottom:var(--space-md); }
.daytrips-header .section-divider { margin-top:var(--space-md); }
.daytrips-header p { color:var(--forest-500); font-size:var(--text-lg); line-height:1.8; margin-top:var(--space-md); }
.daytrips-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-lg); }
.daytrip-card { background:var(--white); overflow:hidden; box-shadow:0 4px 20px rgba(0,0,0,0.05); transition:transform var(--dur-normal) var(--ease-out),box-shadow var(--dur-normal); }
.daytrip-card:hover { transform:translateY(-6px); box-shadow:0 20px 50px rgba(0,0,0,0.1); }
.daytrip-image { aspect-ratio:16/10; overflow:hidden; position:relative; }
.daytrip-image img { width:100%; height:100%; object-fit:cover; transition:transform var(--dur-slow); }
.daytrip-card:hover .daytrip-image img { transform:scale(1.05); }
.daytrip-tag { position:absolute; top:1rem; left:1rem; z-index:3; background:rgba(255,255,255,0.95); padding:0.4rem 0.85rem; font-size:0.65rem; letter-spacing:0.22em; text-transform:uppercase; color:var(--gold-600); font-weight:500; }
.daytrip-body { padding:var(--space-lg); }
.daytrip-title { font-family:var(--font-display); font-weight:500; font-size:1.5rem; color:var(--forest-800); margin-bottom:var(--space-sm); }
.daytrip-stops { list-style:none; display:flex; flex-direction:column; gap:0.5rem; margin-bottom:var(--space-md); }
.daytrip-stops li { display:flex; gap:0.65rem; align-items:flex-start; font-size:0.92rem; color:var(--forest-600); line-height:1.45; }
.daytrip-stops li::before { content:''; display:block; width:6px; height:6px; background:var(--gold-500); border-radius:50%; flex-shrink:0; margin-top:0.55rem; }
.daytrip-meta { display:flex; gap:var(--space-md); padding-top:var(--space-sm); border-top:1px solid var(--forest-100); font-size:0.82rem; color:var(--forest-500); }
.daytrip-meta-item { display:inline-flex; align-items:center; gap:0.4rem; }
.daytrip-meta-item [data-lucide] { width:14px; height:14px; color:var(--gold-500); }

/* ---------------------------------------------
   JAHRESZEITEN (Natur)
   --------------------------------------------- */
.seasons-section { padding:var(--section-py) 0; background:var(--forest-900); color:var(--white); position:relative; overflow:hidden; }
.seasons-section::before { content:''; position:absolute; top:-200px; left:-200px; width:600px; height:600px; border-radius:50%; background:radial-gradient(circle,rgba(182,159,107,0.06) 0%,transparent 70%); pointer-events:none; }
.seasons-section > .container { position:relative; z-index:2; }
.seasons-header { text-align:center; max-width:760px; margin:0 auto var(--space-xl); }
.seasons-header .section-label { color:var(--gold-400); margin-bottom:var(--space-md); display:block; }
.seasons-header .heading-section { color:var(--white); margin-bottom:var(--space-md); }
.seasons-header .section-divider { margin-top:var(--space-md); }
.seasons-header p { color:rgba(255,255,255,0.7); font-size:var(--text-lg); line-height:1.8; margin-top:var(--space-md); }
.seasons-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:var(--space-md); }
.season-card { padding:var(--space-lg); background:rgba(255,255,255,0.04); backdrop-filter:blur(6px); border:1px solid rgba(182,159,107,0.15); transition:background var(--dur-normal),border-color var(--dur-normal),transform var(--dur-normal); }
.season-card:hover { background:rgba(255,255,255,0.08); border-color:var(--gold-400); transform:translateY(-4px); }
.season-icon { display:flex; align-items:center; gap:0.65rem; font-family:var(--font-body); font-weight:500; font-size:0.72rem; letter-spacing:0.22em; text-transform:uppercase; color:var(--gold-300); margin-bottom:var(--space-md); }
.season-icon [data-lucide] { width:20px; height:20px; color:var(--gold-400); stroke-width:1.5; }
.season-title { font-family:var(--font-display); font-weight:500; font-size:1.5rem; color:var(--white); margin-bottom:var(--space-sm); }
.season-list { list-style:none; display:flex; flex-direction:column; gap:0.55rem; }
.season-list li { display:flex; gap:0.65rem; align-items:flex-start; font-size:0.92rem; color:rgba(255,255,255,0.75); line-height:1.45; }
.season-list li::before { content:''; display:block; width:5px; height:5px; background:var(--gold-400); border-radius:50%; flex-shrink:0; margin-top:0.55rem; }

/* ---------------------------------------------
   PANORAMAWEG (Natur)
   --------------------------------------------- */
.panorama-section { padding:var(--section-py) 0; background:var(--cream-warm); position:relative; }
.panorama-hero { max-width:1100px; margin:0 auto var(--space-2xl); aspect-ratio:21/9; overflow:hidden; position:relative; box-shadow:0 16px 48px rgba(0,0,0,0.12); }
.panorama-hero img { width:100%; height:100%; object-fit:cover; }
.panorama-hero-overlay { position:absolute; inset:0; background:linear-gradient(180deg,transparent 40%,rgba(30,26,21,0.75) 100%); display:flex; align-items:flex-end; padding:var(--space-xl); }
.panorama-hero-caption { color:var(--white); font-family:var(--font-display); font-weight:400; font-size:clamp(1.4rem,2.5vw,2.2rem); letter-spacing:0.02em; line-height:1.2; max-width:600px; }
.panorama-hero-caption small { display:block; font-family:var(--font-body); font-weight:500; font-size:0.7rem; letter-spacing:0.28em; text-transform:uppercase; color:var(--gold-300); margin-bottom:0.5rem; }
.panorama-header { text-align:center; margin:0 auto var(--space-xl); max-width:760px; }
.panorama-header .section-label { color:var(--gold-500); margin-bottom:var(--space-md); display:block; }
.panorama-header .heading-section { margin-bottom:var(--space-md); }
.panorama-header .section-divider { margin-top:var(--space-md); }
.panorama-header p { color:var(--forest-500); font-size:var(--text-lg); line-height:1.8; margin-top:var(--space-md); }
.stages-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--forest-100); max-width:1100px; margin:0 auto; }
.stage-card { background:var(--white); padding:var(--space-md); text-align:center; transition:background var(--dur-fast); }
.stage-card:hover { background:var(--cream); }
.stage-number { font-family:var(--font-display); font-weight:600; font-size:1.7rem; color:var(--gold-500); line-height:1; margin-bottom:0.5rem; }
.stage-route { font-family:var(--font-display); font-weight:500; font-size:1.05rem; color:var(--forest-800); line-height:1.3; margin-bottom:0.45rem; min-height:2.6em; }
.stage-meta { display:flex; justify-content:center; gap:0.85rem; font-size:0.78rem; color:var(--forest-500); }
.stage-meta span { display:inline-flex; align-items:center; gap:0.3rem; }
.stage-meta [data-lucide] { width:13px; height:13px; color:var(--gold-500); }
.panorama-total { display:flex; justify-content:center; gap:var(--space-lg); margin-top:var(--space-xl); flex-wrap:wrap; }
.panorama-stat { text-align:center; }
.panorama-stat-value { font-family:var(--font-display); font-weight:500; font-size:2rem; color:var(--gold-600); line-height:1; margin-bottom:0.25rem; }
.panorama-stat-label { font-family:var(--font-body); font-weight:500; font-size:0.72rem; letter-spacing:0.22em; text-transform:uppercase; color:var(--forest-500); }

/* ---------------------------------------------
   E-BIKE (Natur)
   --------------------------------------------- */
.ebike-section { color:var(--white); padding:var(--section-py) 0; position:relative; overflow:hidden; background:linear-gradient(rgba(30,26,21,0.78),rgba(30,26,21,0.88)) center/cover no-repeat fixed; }
.ebike-section > .container { position:relative; z-index:2; }
.ebike-grid { display:grid; grid-template-columns:1fr 1.2fr; gap:clamp(2.5rem,5vw,5rem); align-items:start; }
.ebike-content .section-label { color:var(--gold-400); margin-bottom:var(--space-md); display:block; }
.ebike-content .heading-section { color:var(--white); margin-bottom:var(--space-lg); }
.ebike-content p { color:rgba(255,255,255,0.75); font-size:var(--text-lg); line-height:1.8; margin-bottom:var(--space-md); }
.ebike-features { display:flex; flex-direction:column; gap:0.85rem; margin-top:var(--space-lg); }
.ebike-feature { display:flex; align-items:center; gap:0.85rem; color:rgba(255,255,255,0.85); font-size:var(--text-base); }
.ebike-feature [data-lucide] { width:20px; height:20px; color:var(--gold-400); flex-shrink:0; stroke-width:1.7; }

/* ---------------------------------------------
   PRIVATE ANLÄSSE (Veranstaltungen)
   --------------------------------------------- */
.private-section { color:var(--white); padding:var(--section-py) 0; position:relative; overflow:hidden; background:linear-gradient(rgba(30,26,21,0.7),rgba(30,26,21,0.85)) center/cover no-repeat fixed; }
.private-section > .container { position:relative; z-index:2; }
.private-header { text-align:center; max-width:720px; margin:0 auto var(--space-2xl); }
.private-header .section-label { color:var(--gold-400); margin-bottom:var(--space-md); display:block; }
.private-header .heading-section { color:var(--white); margin-bottom:var(--space-md); }
.private-divider { width:50px; height:1.5px; background:var(--gold-400); margin:0 auto var(--space-md); }
.private-header p { color:rgba(255,255,255,0.78); font-size:var(--text-lg); line-height:1.8; }
.private-features { display:grid; grid-template-columns:repeat(4,1fr); gap:var(--space-md); margin-bottom:var(--space-xl); }
.private-feature { padding:var(--space-lg) var(--space-md); background:rgba(255,255,255,0.06); backdrop-filter:blur(8px); border:1px solid rgba(182,159,107,0.18); text-align:center; transition:background var(--dur-normal),transform var(--dur-normal),border-color var(--dur-normal); }
.private-feature:hover { background:rgba(255,255,255,0.1); transform:translateY(-4px); border-color:var(--gold-400); }
.private-feature [data-lucide] { width:32px; height:32px; color:var(--gold-400); margin:0 auto var(--space-md); display:block; stroke-width:1.5; }
.private-feature-title { font-family:var(--font-body); font-weight:500; font-size:0.85rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--gold-300); margin-bottom:var(--space-xs); }
.private-feature-desc { font-size:0.92rem; color:rgba(255,255,255,0.7); line-height:1.55; }
.private-actions { display:flex; gap:var(--space-sm); flex-wrap:wrap; justify-content:center; }

/* ---------------------------------------------
   KAPAZITÄTEN (Veranstaltungen)
   --------------------------------------------- */
.capacity-section { padding:var(--section-py) 0; background:var(--cream-warm); }
.capacity-header { text-align:center; margin-bottom:var(--space-2xl); }
.capacity-header .section-label { color:var(--gold-500); margin-bottom:var(--space-md); display:block; }
.capacity-header .section-divider { margin-top:var(--space-md); }
.capacity-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-lg); }
.capacity-card { background:var(--white); padding:var(--space-xl) var(--space-lg); text-align:center; transition:transform var(--dur-normal) var(--ease-out),box-shadow var(--dur-normal); }
.capacity-card:hover { transform:translateY(-4px); box-shadow:0 12px 32px rgba(0,0,0,0.06); }
.capacity-icon-wrap { display:inline-flex; align-items:center; justify-content:center; width:64px; height:64px; background:var(--cream-warm); margin-bottom:var(--space-md); transition:background var(--dur-normal); }
.capacity-card:hover .capacity-icon-wrap { background:var(--gold-100); }
.capacity-icon-wrap [data-lucide] { width:28px; height:28px; color:var(--gold-500); stroke-width:1.5; }
.capacity-card-title { font-family:var(--font-display); font-weight:500; font-size:var(--heading-sm); color:var(--forest-800); margin-bottom:var(--space-xs); }
.capacity-card-number { font-family:var(--font-display); font-weight:500; font-size:2.2rem; color:var(--gold-600); margin-bottom:var(--space-xs); line-height:1; }
.capacity-card-text { font-size:var(--text-base); color:var(--forest-500); line-height:1.6; }

/* ---------------------------------------------
   FORMULARE (E-Bike + Anfrage) – geteilt
   --------------------------------------------- */
.lh-form-section { padding:var(--section-py) 0; background:var(--cream-warm); }
.lh-form-section.is-plain { background:transparent; padding:0; }
.lh-form { background:var(--white); border-top:4px solid var(--gold-500); padding:var(--space-xl); box-shadow:0 16px 48px rgba(0,0,0,0.25); }
.lh-form.is-wide { max-width:820px; margin:0 auto; box-shadow:0 16px 48px rgba(0,0,0,0.08); }
.form-header { margin-bottom:var(--space-lg); }
.form-title { font-family:var(--font-display); font-weight:500; font-size:1.6rem; color:var(--forest-800); margin-bottom:0.4rem; letter-spacing:0.01em; }
.form-subtitle { font-size:0.9rem; color:var(--forest-500); }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:var(--space-sm); margin-bottom:var(--space-sm); }
.form-field { display:flex; flex-direction:column; gap:0.4rem; margin-bottom:var(--space-sm); }
.form-field-half { display:flex; flex-direction:column; gap:0.4rem; }
.form-label { font-family:var(--font-body); font-weight:500; font-size:0.7rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--gold-600); }
.form-input,.form-select,.form-textarea { font-family:var(--font-body); font-size:var(--text-base); color:var(--forest-800); background:var(--cream); border:1px solid var(--forest-200); padding:0.85rem 1rem; transition:border-color var(--dur-fast),background var(--dur-fast); outline:none; line-height:1.4; min-height:3.1rem; box-sizing:border-box; }
.form-input:focus,.form-select:focus,.form-textarea:focus { border-color:var(--gold-500); background:var(--white); }
.form-input::placeholder,.form-textarea::placeholder { color:var(--forest-400); }
.form-textarea { min-height:100px; resize:vertical; font-family:var(--font-body); }
.form-select { appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%239E8959' d='M6 8L0 0h12z'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 1rem center; padding-right:2.5rem; cursor:pointer; }
.form-select option { background:var(--white); color:var(--forest-800); }
.form-checkbox-field { margin-top:var(--space-md); margin-bottom:var(--space-md); padding:var(--space-sm) var(--space-md); background:var(--cream); border-left:3px solid var(--gold-400); }
.form-checkbox-label { display:flex; gap:0.85rem; align-items:flex-start; font-size:0.85rem; color:var(--forest-700); line-height:1.6; cursor:pointer; user-select:none; position:relative; }
.form-checkbox-label input[type="checkbox"] { position:absolute; opacity:0; pointer-events:none; width:0; height:0; }
.form-checkmark { width:22px; height:22px; border:1.5px solid var(--forest-300); background:var(--white); flex-shrink:0; position:relative; transition:all var(--dur-fast); margin-top:1px; }
.form-checkmark::after { content:''; position:absolute; top:50%; left:50%; transform:translate(-55%,-60%) rotate(45deg) scale(0); width:6px; height:11px; border:solid var(--white); border-width:0 2px 2px 0; transition:transform 0.18s var(--ease-out); }
.form-checkbox-label:hover .form-checkmark { border-color:var(--gold-500); }
.form-checkbox-label input:checked ~ .form-checkmark { background:var(--gold-500); border-color:var(--gold-500); }
.form-checkbox-label input:checked ~ .form-checkmark::after { transform:translate(-55%,-60%) rotate(45deg) scale(1); }
.form-checkbox-label input:focus-visible ~ .form-checkmark { box-shadow:0 0 0 3px rgba(182,159,107,0.3); }
.form-checkbox-text { flex:1; }
.form-checkbox-text a { color:var(--gold-600); text-decoration:underline; font-weight:500; }
.form-checkbox-text a:hover { color:var(--gold-700); }
.form-submit { width:100%; margin-top:var(--space-sm); justify-content:center; }
.lh-form-status { margin-top:var(--space-sm); font-size:0.9rem; }

/* ---------------------------------------------
   RESPONSIV
   --------------------------------------------- */
@media (max-width:1100px) {
  .booking-bar-inner { flex-direction:column; }
  .booking-field { border-right:none; border-bottom:1px solid var(--forest-100); }
  .booking-btn { padding:1.3rem; text-align:center; }
}
@media (max-width:1024px) {
  .features-grid { grid-template-columns:1fr; }
  .feature-card { height:420px; }
  .text-media-grid { grid-template-columns:1fr; gap:var(--space-xl); }
  .text-media-image { order:-1; max-width:520px; margin:0 auto; }
  .events-grid { grid-template-columns:1fr 1fr; }
  .ebike-grid { grid-template-columns:1fr; }
  .stages-grid { grid-template-columns:repeat(2,1fr); }
  .daytrips-grid { grid-template-columns:1fr; }
  .seasons-grid { grid-template-columns:repeat(2,1fr); }
  .private-features { grid-template-columns:repeat(2,1fr); }
  .capacity-grid { grid-template-columns:1fr; }
}
@media (max-width:900px) {
  .room,.room:nth-child(even) { grid-template-columns:1fr; gap:var(--space-md); }
  .room:nth-child(even) .room-image,.room:nth-child(even) .room-content { order:initial; }
  .info-strip-grid { grid-template-columns:repeat(2,1fr); }
  .info-strip-item:nth-child(2) { border-right:none; }
  .info-strip-item:nth-child(-n+2) { border-bottom:1px solid rgba(182,159,107,0.18); }
  .kitchens-grid { grid-template-columns:1fr; }
  .kitchen-card { min-height:480px; }
  .menu-grid { grid-template-columns:1fr; gap:var(--space-md); }
  .explore-layout { grid-template-columns:1fr; }
  .explore-map-wrap { position:relative; top:0; height:440px; }
}
@media (max-width:700px) {
  .events-grid { grid-template-columns:1fr; }
  .form-row { grid-template-columns:1fr; }
  .ebike-section,.private-section { background-attachment:scroll; }
  .stages-grid { grid-template-columns:1fr; }
  .seasons-grid { grid-template-columns:1fr; }
  .private-features { grid-template-columns:1fr; }
  .map-legend { display:none; }
}
@media (max-width:600px) {
  .info-strip-grid { grid-template-columns:1fr; }
  .info-strip-item,.info-strip-item:nth-child(2) { border-right:none; border-bottom:1px solid rgba(182,159,107,0.18); }
  .info-strip-item:last-child { border-bottom:none; }
}
