/* =====================================================================
   CMS-Ergänzungen zum Original-Design
   – ersetzt die WordPress-Plugin-Skripte (Sticky, Menü, Lightbox, Consent …)
   – Bewegung nach Emil Kowalski: nur transform/opacity, starke ease-out-Kurven,
     kurze Dauern, Druck-Feedback, prefers-reduced-motion respektiert
   ===================================================================== */
:root {
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
  --ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
  --cms-bg: #181818;
  --cms-fg: #F0F0F0;
  --cms-line: #F0F0F0;
}
html { scroll-behavior: smooth; scroll-padding-top: var(--cms-header-h, 120px); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; -webkit-font-smoothing: antialiased; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }
/* „Zum Inhalt springen“ nur bei Tastaturbedienung sichtbar – nie nach Mausklick/Touch oder programmatischem Fokus */
.skip-link:focus:not(:focus-visible) { clip: rect(0,0,0,0); clip-path: inset(50%); width: 1px; height: 1px; padding: 0; overflow: hidden; position: absolute; top: -10000em; }
.skip-link:focus-visible { clip: auto; clip-path: none; width: auto; height: auto; z-index: 100000; top: 8px; left: 8px; padding: 10px 16px; background: #fff; color: #000; }
main#content { display: block; }

/* ---------- Sticky Header (vorher: jquery.sticky) ---------- */
header.elementor-location-header { position: sticky; top: 0; z-index: 99; }
body.admin-bar header.elementor-location-header { top: 0; }

/* ---------- Hauptmenü: Untermenü (vorher: SmartMenus) ---------- */
.elementor-nav-menu--main .elementor-nav-menu li.menu-item-has-children { position: relative; }
.elementor-nav-menu--main .elementor-nav-menu > li > ul.sub-menu {
  display: none; top: 100%; left: 0; min-width: 12em; z-index: 100;
  opacity: 0; transform: translateY(-6px) scale(0.98); transform-origin: top left;
  transition: opacity 120ms var(--ease-out), transform 120ms var(--ease-out), display 120ms allow-discrete;
}
.elementor-nav-menu--main .elementor-nav-menu > li.cms-open > ul.sub-menu {
  display: block; opacity: 1; transform: none;
  transition: opacity 160ms var(--ease-out), transform 200ms var(--ease-out), display 0s allow-discrete;
}
@starting-style {
  .elementor-nav-menu--main .elementor-nav-menu > li.cms-open > ul.sub-menu { opacity: 0; transform: translateY(-6px) scale(0.98); }
}
/* Ausklappmenü mobil: Untermenüs */
.elementor-nav-menu--dropdown .elementor-nav-menu li.cms-open > ul.sub-menu { display: block; }
.elementor-nav-menu--dropdown .sub-arrow { padding: 0 6px; cursor: pointer; }
.elementor-nav-menu--dropdown .sub-arrow i { transition: transform 200ms var(--ease-out); }
.elementor-nav-menu--dropdown li.cms-open > a .sub-arrow i { transform: rotate(180deg); }
.elementor-menu-toggle { transition: transform 120ms var(--ease-out); }
.elementor-menu-toggle:active { transform: scale(0.94); }

/* ---------- Druck-Feedback für alles Klickbare ---------- */
.elementor-button, .elementor-cta__button, .wHelp__send-message, .cms-btn, .cc-btn, .wHelpButtons {
  transition: transform 160ms var(--ease-out), background-color 200ms ease, color 200ms ease, border-color 200ms ease;
}
.elementor-button:active, .elementor-cta__button:active, .wHelp__send-message:active, .cms-btn:active, .cc-btn:active, .wHelpButtons:active { transform: scale(0.97); }

/* ---------- Bewegungseffekt Hero (vorher: Motion FX) ---------- */
.cms-parallax > .elementor-motion-effects-container { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
.cms-parallax > .elementor-motion-effects-container > .elementor-motion-effects-layer { width: 100%; will-change: transform; transition: none; }
.cms-parallax > *:not(.elementor-motion-effects-container) { position: relative; z-index: 1; }
@media (prefers-reduced-motion: reduce) { .cms-parallax .elementor-motion-effects-layer { height: 100% !important; transform: none !important; } }

/* ---------- Swiper-Feinschliff ---------- */
.elementor-swiper-button { transition: opacity 200ms ease, transform 160ms var(--ease-out); }
.elementor-swiper-button:active { transform: translateY(-50%) scale(0.92) !important; }
.elementor-slides .swiper-slide-contents { opacity: 0; transform: translateY(16px); transition: opacity 600ms var(--ease-out) 200ms, transform 600ms var(--ease-out) 200ms; }
.elementor-slides .swiper-slide-active .swiper-slide-contents { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .elementor-slides .swiper-slide-contents { transform: none; } .elementor-ken-burns { animation: none !important; transform: none !important; } }

/* ---------- Galerie (Blocksatz-Layout, vorher: e-gallery) ---------- */
.elementor-gallery__container.cms-justified { display: flex; flex-wrap: wrap; gap: var(--cms-gap, 10px); padding-bottom: 0 !important; }
.elementor-gallery__container.cms-justified .e-gallery-item { position: relative !important; top: auto !important; left: auto !important; overflow: hidden; }
.elementor-gallery__container.cms-justified .e-gallery-image { height: 100%; background-size: cover; background-position: center; transition: transform 500ms var(--ease-out); }
@media (hover: hover) and (pointer: fine) { .elementor-gallery__container.cms-justified .e-gallery-item:hover .e-gallery-image { transform: scale(1.03); } }
.elementor-gallery-item__overlay { pointer-events: none; }

/* ---------- Lightbox ---------- */
.cms-lightbox { position: fixed; inset: 0; z-index: 100001; display: flex; align-items: center; justify-content: center; background: rgba(12,12,12,.94); opacity: 0; transition: opacity 220ms var(--ease-out); touch-action: none; }
.cms-lightbox.is-open { opacity: 1; }
.cms-lightbox.is-closing { opacity: 0; transition-duration: 150ms; }
.cms-lightbox__stage { position: relative; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }
.cms-lightbox__img { max-width: calc(100vw - 120px); max-height: calc(100vh - 120px); object-fit: contain; user-select: none; -webkit-user-drag: none;
  transform: scale(0.96); opacity: 0; transition: transform 260ms var(--ease-out), opacity 200ms var(--ease-out); }
.cms-lightbox.is-open .cms-lightbox__img.is-ready { transform: none; opacity: 1; }
.cms-lightbox__img.is-dragging { transition: none; }
@media (max-width: 767px) { .cms-lightbox__img { max-width: 100vw; max-height: calc(100vh - 140px); } }
.cms-lightbox button { position: absolute; background: none; border: 0; color: #fff; cursor: pointer; padding: 14px; font-size: 22px; line-height: 1; opacity: .8; transition: opacity 150ms ease, transform 140ms var(--ease-out); }
@media (hover: hover) and (pointer: fine) { .cms-lightbox button:hover { opacity: 1; } }
.cms-lightbox button:active { transform: scale(0.92); }
.cms-lightbox__close { top: 10px; right: 12px; }
.cms-lightbox__prev { left: 8px; top: 50%; margin-top: -26px; }
.cms-lightbox__next { right: 8px; top: 50%; margin-top: -26px; }
.cms-lightbox__count { position: absolute; top: 20px; left: 22px; color: #fff; font: 400 14px/1 Montserrat, sans-serif; letter-spacing: 1px; opacity: .7; }
.cms-lightbox__title { position: absolute; bottom: 22px; left: 0; right: 0; text-align: center; color: #fff; font: 400 14px/1.4 Montserrat, sans-serif; letter-spacing: 1px; opacity: .8; padding: 0 20px; }
body.cms-noscroll { overflow: hidden; }

/* ---------- Vorher/Nachher (Twentytwenty, clip-path statt clip) ---------- */
.twentytwenty-container.cms-ba { position: relative; overflow: hidden; touch-action: pan-y; user-select: none; cursor: ew-resize; }
.twentytwenty-container.cms-ba img { display: block; width: 100%; height: auto; -webkit-user-drag: none; pointer-events: none; }
.twentytwenty-container.cms-ba img.twentytwenty-after { position: relative; }
.twentytwenty-container.cms-ba img.twentytwenty-before { position: absolute; inset: 0; height: 100%; object-fit: cover; z-index: 2; clip-path: inset(0 calc(100% - var(--ba-pos, 50%)) 0 0); clip: auto !important; }
.twentytwenty-container.cms-ba .twentytwenty-handle { left: var(--ba-pos, 50%) !important; z-index: 4; }
.twentytwenty-container.cms-ba .twentytwenty-overlay { z-index: 3; }
.twentytwenty-container.cms-ba.is-animating img.twentytwenty-before { transition: clip-path 420ms var(--ease-in-out); }
.twentytwenty-container.cms-ba.is-animating .twentytwenty-handle { transition: left 420ms var(--ease-in-out); }

/* ---------- 360°-Panorama ---------- */
.cms-panorama { width: 100%; background: #0e0e0e; position: relative; }
.cms-panorama .pnlm-container { background: #0e0e0e; }

/* ---------- Kontaktformular-Rückmeldung ---------- */
.elementor-form .cms-form-msg { width: 100%; margin-top: 12px; font: 400 15px/1.5 Montserrat, sans-serif; letter-spacing: 1px; color: #F0F0F0; opacity: 0; transform: translateY(-4px); transition: opacity 200ms var(--ease-out), transform 200ms var(--ease-out); }
.elementor-form .cms-form-msg.is-visible { opacity: 1; transform: none; }
.elementor-form .cms-form-msg:empty { display: none; }
.elementor-form .cms-form-msg.is-error { color: #ff8a80; }
.elementor-form button[type=submit][aria-busy=true] { opacity: .7; pointer-events: none; }
.cms-hp { position: absolute !important; left: -10000px !important; width: 1px; height: 1px; overflow: hidden; }

/* ---------- Google Maps / externe Inhalte: Platzhalter ---------- */
.cms-consent-ph { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; text-align: center; padding: 24px; background: #212121 url('/uploads/Logo_ME_1c_schwarz.svg') no-repeat center / 0; color: #F0F0F0; font: 400 15px/1.5 Montserrat, sans-serif; letter-spacing: .5px; }
.elementor-custom-embed { position: relative; }
.cms-consent-ph p { margin: 0; max-width: 420px; opacity: .85; }
.cms-consent-ph .cms-btn { margin-top: 4px; }

/* ---------- Datenschutz-Dialog (optisch wie zuvor LEGALWEB) ---------- */
.cc-overlay { position: fixed; inset: 0; z-index: 100002; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(0,0,0,.45); opacity: 0; transition: opacity 220ms var(--ease-out); }
.cc-overlay.is-open { opacity: 1; }
.cc-overlay.is-closing { opacity: 0; transition-duration: 150ms; }
.cc-dialog, .cc-dialog * { letter-spacing: 0 !important; word-spacing: 0 !important; text-transform: none; }
.cc-dialog { width: 100%; max-width: 380px; max-height: calc(100vh - 32px); overflow: auto; background: #fff; color: #333; border-radius: 6px; box-shadow: 0 10px 40px rgba(0,0,0,.35); font: 400 11px/1.45 "Roboto", Roboto, Helvetica, "Helvetica Neue", Verdana, Arial, sans-serif; transform: scale(0.96); opacity: 0; transition: transform 240ms var(--ease-out), opacity 200ms var(--ease-out); }
.cc-overlay.is-open .cc-dialog { transform: none; opacity: 1; }
.cc-overlay.is-closing .cc-dialog { transform: scale(0.98); }
.cc-head { display: flex; align-items: center; gap: 10px; padding: 14px 16px 6px; position: relative; }
.cc-head svg { flex: none; }
.cc-head h2 { margin: 0; font-size: 15px; font-weight: 700; color: #222; letter-spacing: 0; line-height: 1.2; text-transform: none; font-family: inherit; }
.cc-head .cc-links { font-size: 10px; color: #666; }
.cc-head .cc-links a { color: #666; text-decoration: none; font-size: 10px; font-family: inherit; }
.cc-x { position: absolute; top: 10px; right: 12px; background: none; border: 0; font-size: 18px; line-height: 1; color: #222; cursor: pointer; padding: 4px; }
.cc-body { padding: 4px 16px 10px; }
.cc-body > p { margin: 8px 0 12px; font-size: 10.5px; color: #444; }
.cc-group { background: #f2f2f2; border-radius: 4px; padding: 8px 10px; }
.cc-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 0; }
.cc-row + .cc-row { border-top: 1px solid #e3e3e3; }
.cc-row strong { display: block; font-size: 11.5px; color: #222; }
.cc-row small { display: block; font-size: 9.5px; color: #777; }
.cc-switch { position: relative; flex: none; width: 42px; height: 18px; }
.cc-switch input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; z-index: 1; }
.cc-switch span { position: absolute; inset: 0; border-radius: 10px; background: #fff; border: 1px solid #ccc; transition: background-color 200ms ease, border-color 200ms ease; }
.cc-switch span::before { content: ""; position: absolute; top: 2px; left: 2px; width: 12px; height: 12px; border-radius: 50%; background: #bbb; transition: transform 200ms var(--ease-out), background-color 200ms ease; }
.cc-switch span::after { content: "NEIN"; position: absolute; right: 5px; top: 3px; font-size: 7.5px; font-weight: 700; color: #999; }
.cc-switch input:checked + span { background: #1e6b3a; border-color: #1e6b3a; }
.cc-switch input:checked + span::before { transform: translateX(24px); background: #fff; }
.cc-switch input:checked + span::after { content: "JA"; right: auto; left: 7px; color: #fff; }
.cc-switch input:focus-visible + span { outline: 2px solid #1e6b3a; outline-offset: 2px; }
.cc-foot { display: flex; justify-content: space-between; gap: 8px; padding: 10px 16px 14px; flex-wrap: wrap; }
.cc-btn { border: 0; border-radius: 12px; padding: 7px 12px; font-size: 11px; font-weight: 500; line-height: 1; cursor: pointer; font-family: inherit; }
.cc-btn--ghost { background: #3a3a3a; color: #fff; }
.cc-btn--primary { background: #1e6b3a; color: #fff; }
.cc-btn--light { background: #e6e6e6; color: #222; }

/* ---------- WhatsApp-Widget (Verhalten, Optik aus Original-Plugin-CSS) ---------- */
.wHelp .wHelp-bubble { transition: transform 160ms var(--ease-out); }
.wHelp .wHelp-bubble:active { transform: scale(0.94); }
.wHelp .wHelp__popup { transform-origin: bottom right; }

/* ---------- Bausteine aus dem Editor (.cms-block) – im Stil der Website ---------- */
.cms-block { --pad-x: 3%; color: #F0F0F0; font-family: "Montserrat", Sans-serif; font-size: 18px; line-height: 25px; letter-spacing: 1px; }
.cms-block .cms-inner { max-width: 1240px; margin: 0 auto; padding: 50px var(--pad-x); box-sizing: border-box; }
.cms-block p { margin: 0 0 14px; }
.cms-block a { color: #F0F0F0; }
.cms-block .cms-h1 { font-family: "Montserrat", Sans-serif; font-size: 95px; font-weight: 800; line-height: 105px; letter-spacing: -0.28px; text-transform: uppercase; color: #F0F0F0; margin: 0; text-align: center; }
.cms-block .cms-h2 { font-family: "Montserrat", Sans-serif; font-size: 30px; font-weight: 700; line-height: 38px; text-transform: uppercase; color: #F0F0F0; margin: 0 0 30px; letter-spacing: 0; }
.cms-block .cms-h3 { font-family: "Montserrat", Sans-serif; font-size: 20px; font-weight: 700; line-height: 26px; text-transform: uppercase; color: #F0F0F0; margin: 0 0 14px; }
.cms-block .cms-divider { width: 220px; height: 2px; background: #F0F0F0; margin: 15px auto 25px; }
.cms-title .cms-inner { padding-top: 60px; padding-bottom: 40px; }
.cms-split .cms-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; align-items: center; }
.cms-split--reverse .cms-media { order: 2; }
.cms-media { margin: 0; }
.cms-media img { display: block; width: 100%; height: auto; }
.cms-media figcaption { font-size: 14px; opacity: .7; margin-top: 10px; }
.cms-cols .cms-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }
.cms-gallery .cms-inner { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.cms-gallery__item { display: block; overflow: hidden; aspect-ratio: 3/2; }
.cms-gallery__item img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 500ms var(--ease-out); }
@media (hover: hover) and (pointer: fine) { .cms-gallery__item:hover img { transform: scale(1.03); } }
.cms-quote blockquote { margin: 0 auto; max-width: 820px; border-left: 2px solid #F0F0F0; padding: 6px 0 6px 28px; }
.cms-quote blockquote p { font-size: 24px; line-height: 34px; }
.cms-quote cite { font-style: normal; font-size: 14px; opacity: .75; }
.cms-cta .cms-inner { text-align: center; }
.cms-btn, a.cms-btn { display: inline-block; padding: 15px 30px; border: 1px solid #F0F0F0; color: #F0F0F0; background: transparent; font: 700 18px/1 "Montserrat", sans-serif; text-decoration: underline; letter-spacing: 0; cursor: pointer; }
@media (hover: hover) and (pointer: fine) { .cms-btn:hover { background: #F0F0F0; color: #181818; } }
.cms-link { color: #F0F0F0; text-decoration: none; border-bottom: 1px solid currentColor; padding-bottom: 2px; }
.cms-spacer .cms-inner { padding: 0; height: 80px; }
.cms-embed { position: relative; aspect-ratio: 16/9; background: #0e0e0e; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; }
.cms-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.cms-embed__note { font-size: 12px; opacity: .6; margin: 0 !important; }
.cms-notfound .cms-inner { text-align: center; padding: 120px 3%; }
@media (max-width: 1024px) {
  .cms-block .cms-h1 { font-size: 60px; line-height: 66px; }
}
@media (max-width: 767px) {
  .cms-block { font-size: 16px; line-height: 23px; }
  .cms-block .cms-h1 { font-size: 40px; line-height: 46px; }
  .cms-block .cms-h2 { font-size: 24px; line-height: 30px; }
  .cms-split .cms-inner, .cms-cols .cms-inner { grid-template-columns: 1fr; }
  .cms-split--reverse .cms-media { order: 0; }
  .cms-gallery .cms-inner { grid-template-columns: 1fr 1fr; }
}

/* ---------- Rechtstexte (Impressum/Datenschutz) ---------- */
.cms-legal { color: #F0F0F0; font-family: "Montserrat", Sans-serif; letter-spacing: 1px; }
.cms-legal > *:not(.cms-block) , .cms-legal .legalweb-imprint, .elementor-3 .elementor-shortcode { max-width: 1240px; margin-left: auto; margin-right: auto; padding-left: 3%; padding-right: 3%; box-sizing: border-box; font-size: 16px; line-height: 25px; color: #F0F0F0; }
.cms-legal .legalweb-imprint { padding-top: 10px; padding-bottom: 80px; }
.elementor-3 .elementor-shortcode h2, .cms-legal h2 { font: 700 26px/1.3 "Montserrat", sans-serif; text-transform: uppercase; color: #F0F0F0; margin: 40px 0 14px; letter-spacing: 0; }
.elementor-3 .elementor-shortcode h3, .cms-legal h3 { font: 700 18px/1.3 "Montserrat", sans-serif; color: #F0F0F0; margin: 26px 0 10px; letter-spacing: 0; }
.elementor-3 .elementor-shortcode a, .cms-legal a { color: #F0F0F0; font: inherit; letter-spacing: inherit; }
.elementor-3 .elementor-shortcode { padding-bottom: 80px; }
.elementor-3 .e-con-inner { max-width: 100%; }

/* WhatsApp-Button (Kontaktseite) – Abstand wie im Original-Plugin */
.elementor-widget-ctw-buttons .button-wrapper { margin-bottom: 16px; }

/* Untermenüs: im Original weiß auf weiß (unsichtbar) bzw. gar nicht aufklappbar – hier im Stil der Seite lesbar gemacht */
header.elementor-location-header .elementor-nav-menu--main .sub-menu { background-color: #212121 !important; box-shadow: 0 12px 30px rgba(0,0,0,.35); padding: 8px 0; width: max-content !important; min-width: 15em; max-width: 90vw; }
header.elementor-location-header .elementor-nav-menu--main .sub-menu li, header.elementor-location-header .elementor-nav-menu--main .sub-menu a.elementor-sub-item { white-space: nowrap; }
header.elementor-location-header .elementor-nav-menu--main .sub-menu a.elementor-sub-item { color: #F0F0F0 !important; background: transparent !important; font-size: 15px !important; padding: 11px 26px 11px 22px !important; letter-spacing: .5px; border-left: 0 !important; transition: background-color 150ms ease, color 150ms ease; }
@media (hover: hover) and (pointer: fine) { header.elementor-location-header .elementor-nav-menu--main .sub-menu a.elementor-sub-item:hover { background: #2f2f2f !important; color: #fff !important; } }
header.elementor-location-header nav.elementor-nav-menu--dropdown { background-color: #212121 !important; }
header.elementor-location-header nav.elementor-nav-menu--dropdown a { color: #F0F0F0 !important; background-color: transparent !important; }
header.elementor-location-header nav.elementor-nav-menu--dropdown a.elementor-item-active, header.elementor-location-header nav.elementor-nav-menu--dropdown a:active { background-color: #3a3a3a !important; }
header.elementor-location-header nav.elementor-nav-menu--dropdown .sub-menu { background-color: #1a1a1a !important; }

/* ---------- Logo-Intro (einmal pro Besuch, überspringbar) ----------
   Choreografie: Bildmarke öffnet sich kreisförmig → Schriftzug wird von links geschrieben →
   Slogan + Linie erscheinen → Vorhang zieht nach oben weg. Nur transform/opacity/clip-path. */
.cms-intro { display: none; }
html.cms-intro-on { overflow: hidden; }
html.cms-intro-on .cms-intro { display: flex; }
.cms-intro { position: fixed; inset: 0; z-index: 100005; align-items: center; justify-content: center; background: #181818;
  clip-path: inset(0 0 0 0); }
.cms-intro::before { content: ""; position: absolute; inset: 0; background: radial-gradient(60% 50% at 50% 45%, rgba(196,138,82,.10), transparent 70%); opacity: 0; animation: cmsIntroGlow 1600ms var(--ease-out) 200ms forwards; }
.cms-intro__inner { position: relative; display: flex; flex-direction: column; align-items: center; gap: 22px; }
.cms-intro__logo { width: min(300px, 62vw); height: auto; overflow: visible; display: block; }
.cms-intro__mark { transform-box: fill-box; transform-origin: 50% 50%; clip-path: circle(0% at 50% 50%) fill-box;
  animation: cmsIntroMark 900ms var(--ease-in-out) 120ms forwards, cmsIntroMarkScale 1100ms var(--ease-out) 120ms both; }
.cms-intro__word { clip-path: inset(-10% 100% -10% 0) fill-box; animation: cmsIntroWipe 700ms var(--ease-in-out) 700ms forwards; }
.cms-intro__slogan { opacity: 0; transform: translateY(6px); transform-box: fill-box; animation: cmsIntroUp 500ms var(--ease-out) 1250ms forwards; }
.cms-intro__line { width: 120px; height: 2px; background: #F0F0F0; transform: scaleX(0); transform-origin: center; animation: cmsIntroLine 600ms var(--ease-in-out) 1250ms forwards; }
.cms-intro__skip { position: absolute; right: 22px; bottom: 20px; background: none; border: 0; color: rgba(240,240,240,.55); font: 500 13px/1 Montserrat, sans-serif; letter-spacing: 1px; padding: 10px 6px; cursor: pointer; opacity: 0; animation: cmsIntroFade 300ms ease 500ms forwards; transition: color 150ms ease; }
@media (hover: hover) and (pointer: fine) { .cms-intro__skip:hover { color: #F0F0F0; } }
.cms-intro__skip:focus-visible { outline: 1px solid #F0F0F0; outline-offset: 2px; }
/* Abgang: Inhalt hebt sich, Vorhang zieht nach oben */
.cms-intro.is-leaving .cms-intro__inner { animation: cmsIntroOut 320ms var(--ease-out) forwards; }
.cms-intro.is-leaving { animation: cmsIntroCurtain 760ms var(--ease-drawer) 120ms forwards; }
.cms-intro.is-skipped { transition: opacity 220ms var(--ease-out); opacity: 0; }
.cms-intro.is-skipped * { animation-play-state: paused; }
@keyframes cmsIntroMark { to { clip-path: circle(75% at 50% 50%) fill-box; } }
@keyframes cmsIntroMarkScale { from { transform: scale(0.86) rotate(-8deg); } to { transform: none; } }
@keyframes cmsIntroWipe { to { clip-path: inset(-10% 0% -10% 0) fill-box; } }
@keyframes cmsIntroUp { to { opacity: 1; transform: none; } }
@keyframes cmsIntroLine { to { transform: scaleX(1); } }
@keyframes cmsIntroFade { to { opacity: 1; } }
@keyframes cmsIntroGlow { to { opacity: 1; } }
@keyframes cmsIntroOut { to { opacity: 0; transform: translateY(-14px) scale(0.98); } }
@keyframes cmsIntroCurtain { to { clip-path: inset(0 0 100% 0); } }

/* Ruhige Intro-Variante bei „Bewegung reduzieren“: nur Ein-/Ausblenden, keine Bewegung */
html.cms-intro-calm .cms-intro__mark, html.cms-intro-calm .cms-intro__word, html.cms-intro-calm .cms-intro__slogan, html.cms-intro-calm .cms-intro__line { animation: none; clip-path: none; transform: none; opacity: 1; }
html.cms-intro-calm .cms-intro__inner { opacity: 0; animation: cmsIntroFade 500ms ease 100ms forwards; }
html.cms-intro-calm .cms-intro.is-leaving, html.cms-intro-calm .cms-intro.is-leaving .cms-intro__inner { animation: none; transition: opacity 400ms ease; opacity: 0; }

/* ---------- Kopfbereich beim Scrollen: kleiner, nur runde Bildmarke „ME“ ---------- */
header.elementor-location-header .elementor-element-16cfb8e img {
  height: calc(150px * 297.91 / 276.09); object-fit: cover; object-position: 50% 0;
  transition: width 280ms var(--ease-out), max-width 280ms var(--ease-out), height 280ms var(--ease-out);
}
header.elementor-location-header .elementor-element-2ab89f1 { transition: padding 280ms var(--ease-out); }
header.elementor-location-header.cms-scrolled .elementor-element-16cfb8e img {
  /* nur der obere Teil (Kreis mit „ME“) bleibt sichtbar – der Schriftzug wird abgeschnitten */
  width: 66px; max-width: 66px; height: calc(66px * 230 / 276.09);
}
header.elementor-location-header.cms-scrolled .elementor-element-2ab89f1 { --padding-top: 8px; --padding-bottom: 8px; --overlay-opacity: 0.97; }
header.elementor-location-header.cms-scrolled .elementor-element-ace6a28 { --justify-content: center; }
@media (max-width: 767px) {
  header.elementor-location-header .elementor-element-16cfb8e img { height: auto; }
  header.elementor-location-header.cms-scrolled .elementor-element-16cfb8e img { width: 52px; max-width: 52px; height: calc(52px * 230 / 276.09); }
}
@media (prefers-reduced-motion: reduce) { header.elementor-location-header .elementor-element-16cfb8e img { transition: none; } }

/* ---------- Schwebende Knöpfe ---------- */
.cms-fab { --fab: 50px; all: unset; box-sizing: border-box; width: var(--fab); height: var(--fab); border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
  background: #212121; color: #F0F0F0; border: 1px solid rgba(240,240,240,.16); box-shadow: 0 6px 20px rgba(0,0,0,.28);
  transition: transform 160ms var(--ease-out), background-color 150ms ease, border-color 150ms ease, opacity 200ms var(--ease-out); -webkit-tap-highlight-color: transparent; }
.cms-fab svg { width: 24px; height: 24px; }
.cms-fab:active { transform: scale(0.94); }
.cms-fab:focus-visible { outline: 2px solid #F0F0F0; outline-offset: 3px; }
@media (hover: hover) and (pointer: fine) { .cms-fab:hover { background: #2e2e2e; border-color: rgba(240,240,240,.35); } }
.cms-fab[aria-expanded="true"] { background: #F0F0F0; color: #181818; }
.cms-fabs-left { position: fixed; left: 30px; bottom: 25px; z-index: 998; display: flex; flex-direction: column; gap: 12px; }
.cms-fab--totop { --fab: 44px; position: fixed; right: 33px; bottom: 87px; z-index: 998; opacity: 0; transform: translateY(8px) scale(0.96); pointer-events: none; }
.cms-fab--totop.cms-fab--alone { bottom: 25px; }
.cms-fab--totop.is-visible { opacity: 1; transform: none; pointer-events: auto; }
.cms-fab--totop.is-visible:active { transform: scale(0.94); }
.cms-hdr-tools { display: none; }
@media (prefers-reduced-motion: reduce) { .cms-fab, .cms-fab--totop { transition: opacity 150ms ease; transform: none !important; } }

/* ---------- Handy/Tablet: Logo links, Knöpfe + Menü-Knopf rechts in einer Reihe ---------- */
@media (max-width: 1024px) {
  .cms-fabs-left { display: none; }
  header.elementor-location-header .elementor-element-2ab89f1 { --flex-direction: row; --flex-wrap: nowrap; --align-items: center; --justify-content: space-between; flex-wrap: nowrap !important; position: relative; }
  header.elementor-location-header .elementor-element-c1cbad2 { --width: auto; width: auto !important; flex: 0 0 auto; }
  header.elementor-location-header .elementor-element-16cfb8e { text-align: start; }
  header.elementor-location-header .elementor-element-ace6a28 { --width: auto; width: auto !important; flex: 1 1 auto; --justify-content: center; position: static; }
  header.elementor-location-header .elementor-element-9852325, header.elementor-location-header .elementor-element-9852325 > .elementor-widget-container { position: static; }
  header.elementor-location-header .cms-has-tools > .elementor-widget-container { display: flex; flex-direction: row !important; flex-wrap: nowrap; align-items: center; justify-content: flex-end; gap: 10px; }
  .cms-hdr-tools { display: flex; gap: 10px; align-items: center; position: relative; z-index: 2; }
  header.elementor-location-header .elementor-menu-toggle { position: relative; z-index: 2; }
  header.elementor-location-header .elementor-element-c1cbad2 { position: relative; z-index: 2; }
  .cms-hdr-tools .cms-fab, header.elementor-location-header .elementor-menu-toggle { --fab: 42px; width: 42px; height: 42px; border-radius: 50%; box-shadow: none; background: rgba(240,240,240,.07); border: 1px solid rgba(240,240,240,.16); color: #F0F0F0; padding: 0; margin: 0 !important; display: inline-flex; align-items: center; justify-content: center; }
  header.elementor-location-header .elementor-menu-toggle { font-size: 22px; }
  .cms-hdr-tools .cms-fab svg { width: 22px; height: 22px; }
  /* Ausklappmenü volle Breite unter dem Kopfbereich */
  header.elementor-location-header nav.elementor-nav-menu--dropdown { position: absolute; left: 0; right: 0; top: 100%; width: 100%; margin-top: 0 !important; z-index: 100; }
  .cms-fab--totop { right: 33px; }
}
@media (max-width: 767px) {
  header.elementor-location-header .elementor-element-16cfb8e img { width: 118px; max-width: 118px; }
  .cms-fab--totop { --fab: 42px; right: 34px; }
}

/* ---------- Barrierefreiheits-Menü ---------- */
.cms-a11y { position: fixed; left: 30px; bottom: 140px; z-index: 100003; width: 340px; max-width: calc(100vw - 24px); max-height: calc(100vh - 160px); overflow: auto;
  background: #fff; color: #1b1b1b; border-radius: 14px; box-shadow: 0 16px 50px rgba(0,0,0,.4); padding: 16px;
  font: 400 14px/1.4 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; letter-spacing: 0;
  transform-origin: bottom left; opacity: 0; transform: scale(0.96) translateY(6px); transition: opacity 180ms var(--ease-out), transform 220ms var(--ease-out); }
.cms-a11y.cms-a11y--top { left: auto; right: 12px; bottom: auto; transform-origin: top right; transform: scale(0.96) translateY(-6px); max-height: calc(100vh - 120px); }
.cms-a11y.is-open { opacity: 1; transform: none; }
.cms-a11y.is-closing { opacity: 0; transition-duration: 140ms; }
.cms-a11y * { box-sizing: border-box; letter-spacing: 0 !important; font-family: inherit !important; }
.cms-a11y__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.cms-a11y__head h2 { margin: 0; font-size: 16px; font-weight: 700; color: #1b1b1b; text-transform: none; line-height: 1.2; }
.cms-a11y__x { all: unset; cursor: pointer; font-size: 24px; line-height: 1; width: 32px; height: 32px; text-align: center; border-radius: 8px; color: #1b1b1b; }
.cms-a11y__x:focus-visible, .cms-a11y button:focus-visible { outline: 2px solid #a7774a; outline-offset: 2px; }
.cms-a11y__zoom { display: flex; align-items: center; justify-content: space-between; background: #f4f2ee; border-radius: 10px; padding: 8px 10px; margin-bottom: 10px; font-weight: 600; }
.cms-a11y__zoom div { display: flex; align-items: center; gap: 6px; }
.cms-a11y__zoom button { all: unset; cursor: pointer; width: 38px; height: 34px; border-radius: 8px; background: #fff; border: 1px solid #ddd8d0; text-align: center; font-weight: 700; transition: transform 140ms var(--ease-out); }
.cms-a11y__zoom button:active { transform: scale(0.94); }
.cms-a11y__zoom output { min-width: 52px; text-align: center; font-variant-numeric: tabular-nums; }
.cms-a11y__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.cms-a11y__opt { all: unset; box-sizing: border-box; cursor: pointer; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 11px 12px; min-height: 76px; border-radius: 10px; border: 1.5px solid #e4e0d9; background: #fff; font-weight: 600; font-size: 13px; color: #1b1b1b;
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease, transform 140ms var(--ease-out); }
.cms-a11y__opt svg { width: 22px; height: 22px; }
.cms-a11y__opt:active { transform: scale(0.97); }
@media (hover: hover) and (pointer: fine) { .cms-a11y__opt:hover { border-color: #b9b2a6; } }
.cms-a11y__opt[aria-pressed="true"] { background: #1b1b1b; border-color: #1b1b1b; color: #fff; }
.cms-a11y__foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 12px; flex-wrap: wrap; }
.cms-a11y__reset { all: unset; cursor: pointer; font-weight: 600; font-size: 13px; text-decoration: underline; text-underline-offset: 3px; }
.cms-a11y__foot small { color: #6d6a66; font-size: 11.5px; }
@media (prefers-reduced-motion: reduce) { .cms-a11y { transform: none !important; } }

/* ---------- Wirkung der Barrierefreiheits-Optionen ---------- */
html.a11y-zoom-110 :is(#content, header.elementor-location-header, footer.elementor-location-footer) { zoom: 1.1; }
html.a11y-zoom-125 :is(#content, header.elementor-location-header, footer.elementor-location-footer) { zoom: 1.25; }
html.a11y-zoom-140 :is(#content, header.elementor-location-header, footer.elementor-location-footer) { zoom: 1.4; }
html.a11y-contrast { --a11y-c: contrast(1.3) brightness(1.08); --e-global-color-primary: #ffffff; }
html.a11y-gray { --a11y-g: grayscale(1); }
html.a11y-contrast :is(#content, header.elementor-location-header, footer.elementor-location-footer),
html.a11y-gray :is(#content, header.elementor-location-header, footer.elementor-location-footer) { filter: var(--a11y-c, ) var(--a11y-g, ); }
html.a11y-contrast body { color: #fff; }
html.a11y-links :is(#content, footer) a:not(.elementor-button):not(.elementor-cta):not(.e-gallery-item):not([data-elementor-open-lightbox]) { text-decoration: underline !important; text-underline-offset: 3px; text-decoration-thickness: 2px !important; background: rgba(255, 216, 77, .16); outline: 1px dashed rgba(255, 216, 77, .7); outline-offset: 2px; }
html.a11y-links a:focus-visible { outline: 3px solid #ffd84d !important; outline-offset: 3px; }
html.a11y-font :is(#content, header.elementor-location-header, footer.elementor-location-footer) :not(i):not([class*="fa-"]):not([class*="eicon"]) { font-family: Verdana, Tahoma, "Segoe UI", Arial, sans-serif !important; letter-spacing: .02em !important; }
html.a11y-spacing :is(#content, footer.elementor-location-footer) :is(p, li, dd, blockquote, .elementor-widget-text-editor) { line-height: 1.9 !important; word-spacing: .12em; }
html.a11y-still *, html.a11y-still *::before, html.a11y-still *::after { animation-duration: 0s !important; animation-delay: 0s !important; transition-duration: 0s !important; scroll-behavior: auto !important; }
html.a11y-cursor, html.a11y-cursor * { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 24 24'%3E%3Cpath d='M4 2l15 8-6.5 1.8L10 19z' fill='%23000' stroke='%23fff' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") 4 2, auto !important; }
html.a11y-images #content :is(img, .elementor-cta__bg, .e-gallery-image, .swiper-slide-bg) { opacity: .06 !important; }
html.a11y-images #content :is(section, .e-con, .elementor-column, .elementor-widget-wrap)[style*="background"], html.a11y-images #content .elementor-motion-effects-layer { background-image: none !important; }

/* ---------- Häufige Fragen (FAQ) – im Stil der Website ---------- */
.cms-faq .cms-inner { max-width: 900px; padding-top: 40px; padding-bottom: 90px; }
.cms-faq__list { border-top: 1px solid rgba(240,240,240,.18); }
.cms-faq__item { border-bottom: 1px solid rgba(240,240,240,.18); }
.cms-faq__item summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 22px 0; cursor: pointer; }
.cms-faq__item summary::-webkit-details-marker { display: none; }
.cms-faq__item summary:focus-visible { outline: 2px solid #F0F0F0; outline-offset: 4px; }
.cms-faq__q { margin: 0; font: 700 18px/1.4 "Montserrat", sans-serif; letter-spacing: .5px; color: #F0F0F0; text-transform: none; }
.cms-faq__icon { position: relative; flex: none; width: 18px; height: 18px; }
.cms-faq__icon::before, .cms-faq__icon::after { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 2px; margin-top: -1px; background: #F0F0F0; transition: transform 220ms var(--ease-out); }
.cms-faq__icon::after { transform: rotate(90deg); }
.cms-faq__item[open] .cms-faq__icon::after { transform: rotate(0deg); }
.cms-faq__a { padding: 0 40px 22px 0; }
.cms-faq__a p { margin: 0; font-size: 17px; line-height: 27px; opacity: .9; }
.cms-faq__item[open] .cms-faq__a { animation: cmsFaqIn 260ms var(--ease-out); }
@keyframes cmsFaqIn { from { opacity: 0; transform: translateY(-4px); } }
@media (hover: hover) and (pointer: fine) { .cms-faq__item summary:hover .cms-faq__q { opacity: .8; } }
@media (max-width: 767px) { .cms-faq__q { font-size: 16px; } .cms-faq__a { padding-right: 0; } .cms-faq__a p { font-size: 15.5px; line-height: 24px; } }

/* ---------- Kontaktformular: Datenschutz-Hakerl + Captcha ---------- */
.elementor-form .cms-form-extra { display: flex; flex-direction: column; gap: 14px; margin: 6px 0 14px; }
.cms-check { display: flex; align-items: flex-start; gap: 12px; cursor: pointer; font: 400 14px/1.55 Montserrat, sans-serif; letter-spacing: .3px; color: #F0F0F0; text-align: left; -webkit-tap-highlight-color: transparent; }
.cms-check input { position: absolute; opacity: 0; width: 22px; height: 22px; margin: 0; pointer-events: none; }
.cms-check__mark { position: relative; flex: none; width: 22px; height: 22px; margin-top: 0; border: 1.5px solid rgba(240,240,240,.7); border-radius: 4px; background: transparent; transition: background-color 160ms ease, border-color 160ms ease, transform 120ms var(--ease-out); }
.cms-check__mark::after { content: ""; position: absolute; left: 6px; top: 2px; width: 6px; height: 11px; border: solid #1d1d1d; border-width: 0 2.5px 2.5px 0; transform: rotate(45deg) scale(.6); opacity: 0; transition: opacity 140ms ease, transform 180ms var(--ease-out); }
.cms-check input:checked + .cms-check__mark { background: #F0F0F0; border-color: #F0F0F0; }
.cms-check input:checked + .cms-check__mark::after { opacity: 1; transform: rotate(45deg) scale(1); }
.cms-check input:focus-visible + .cms-check__mark { outline: 2px solid #F0F0F0; outline-offset: 3px; }
.cms-check:active .cms-check__mark { transform: scale(.94); }
.cms-check a { color: #F0F0F0; text-decoration: underline; text-underline-offset: 3px; }
.cms-privacy > span:last-child { padding-top: 1px; }

.cms-captcha { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding: 14px 16px; border: 1px solid rgba(240,240,240,.28); border-radius: 6px; background: rgba(255,255,255,.03); max-width: 420px; }
.cms-captcha__main { align-items: center; font-weight: 500; }
.cms-captcha__info { display: inline-flex; align-items: center; gap: 6px; font: 400 11.5px/1.3 Montserrat, sans-serif; letter-spacing: .4px; color: rgba(240,240,240,.6); }
.cms-captcha__info svg { width: 16px; height: 16px; }
.cms-captcha[data-state="busy"] .cms-check__mark { border-color: transparent; border-top-color: #F0F0F0; border-right-color: #F0F0F0; border-radius: 50%; animation: cmsSpin 700ms linear infinite; }
.cms-captcha[data-state="busy"] .cms-captcha__main { cursor: progress; }
.cms-captcha[data-state="done"] { border-color: rgba(129,199,132,.65); }
.cms-captcha[data-state="done"] .cms-check input:checked + .cms-check__mark { background: #81c784; border-color: #81c784; }
.cms-captcha[data-state="error"] { border-color: #ff8a80; }
@keyframes cmsSpin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .cms-captcha[data-state="busy"] .cms-check__mark { animation-duration: 2s; } }
.elementor-form .elementor-field-group.cms-form-extra { flex-direction: column !important; align-items: flex-start !important; flex-wrap: nowrap !important; }
.elementor-form .cms-form-extra > label.cms-check { color: #F0F0F0 !important; font-size: 14px !important; line-height: 1.55 !important; letter-spacing: .3px !important; padding: 0 !important; text-transform: none !important; width: 100%; }
.elementor-form .cms-form-extra .cms-captcha { width: 100%; }
.elementor-form .cms-form-extra .cms-captcha .cms-check { color: #F0F0F0 !important; }
.elementor-form .cms-form-extra a { font: inherit !important; letter-spacing: inherit !important; color: #F0F0F0 !important; }
.elementor-form .elementor-field-group.cms-form-extra { margin-bottom: 18px !important; }

/* Kopfbereich: Platz bleibt gleich groß, nur die sichtbare Leiste schrumpft (kein Hin-und-her-Springen) */
header.elementor-location-header.cms-hdr-fixed { pointer-events: none; overflow-anchor: none; }
header.elementor-location-header.cms-hdr-fixed > * { pointer-events: auto; }
header.elementor-location-header.cms-measure, header.elementor-location-header.cms-measure * { transition: none !important; }
