/*
Theme Name: Hello Elementor Child (artelis)
Theme URI: https://artelis.ima.vc/
Description: Child theme of Hello Elementor for artelis.ima.vc. Custom styles, buttons, language dropdown, CPT.
Template: hello-elementor
Version: 1.0.0
Text Domain: hello-elementor-child
*/

/* =========================================================
   Custom classes (ported from vsev2)
   ========================================================= */
/* Icon-List-Links bei Hover teal (Klasse "kontakt-links" aufs Widget) — ported from vsev2 */
.kontakt-links .elementor-icon-list-item a:hover,
.kontakt-links .elementor-icon-list-item a:hover .elementor-icon-list-text {
  color: #009BA5 !important;
}

/* =========================================================
   Language Dropdown
   ========================================================= */
/* Language Dropdown - Desktop */
#language-dropdown {
  opacity: 0;
  position: absolute;
  top: 48px;
  right: -100px;
  min-width: 240px;
  width: 240px;
  border-radius: 0px 0px 10px 10px;
  background: #FEFEFE;
  transition: all 0.2s ease;
  transform: translateY(10px);
  z-index: 999;
  pointer-events: none;
  padding: 5px;
  overflow: hidden;
  gap: 0 !important;
  row-gap: 0 !important;
}

/* Language dropdown: closer to the edge on tablet & phone (<=1024px) */
@media (max-width: 1024px) {
  #language-dropdown {
    right: -20px;
  }
}

#language-dropdown.is-active {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;   /* FIX: Hover/Klick erst dadurch möglich */
}

/* --- Language dropdown: Karten-Zeilen (1:1 zum Design) --- */
#language-dropdown > .e-child {
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 12px !important;
  padding: 8px 12px !important;
  position: relative;
  cursor: pointer;
  border-radius: 6px;
  transition: background 0.15s ease;
}

/* Hover-Band wie im Design (leichtes Teal) */
#language-dropdown > .e-child:hover {
  background: #F2FAFA;
}

/* Flagge – gefüllter grauer Kreis (1:1 zum Design), Flagge zentriert */
#language-dropdown .elementor-widget-icon {
  width: auto !important;
}
#language-dropdown .elementor-widget-icon .elementor-icon {
  width: 28px !important;
  height: 28px !important;
  background: #f0f2f3 !important;
  border: none !important;
  border-radius: 50%;
  display: flex !important;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
}
#language-dropdown .elementor-widget-icon .elementor-icon svg {
  width: 14px !important;
  height: 14px !important;
  border-radius: 50%;
  overflow: hidden;
}

/* Sprachname – groß & fett (Satoshi 700, 22px) wie im Design */
#language-dropdown .elementor-widget-heading .elementor-heading-title {
  font-family: "Satoshi 700", sans-serif !important;
  font-weight: 700 !important;
  font-size: 16px !important;
  line-height: 1.1 !important;
  color: #101923 !important;
}

/* Sprachkürzel (DE/FR/EN) per CSS ergänzt — an DOM-Reihenfolge gebunden */
#language-dropdown .elementor-widget-heading .elementor-heading-title::after {
  display: block;
  font-family: "Menlo", monospace;
  font-weight: 400;
  font-size: 12px;
  color: #9aa4a6;
  margin-top: 1px;
}
#language-dropdown > .e-child:nth-child(1) .elementor-heading-title::after { content: "DE"; }
#language-dropdown > .e-child:nth-child(2) .elementor-heading-title::after { content: "FR"; }
#language-dropdown > .e-child:nth-child(3) .elementor-heading-title::after { content: "EN"; }

/* Französisch ans Ende der Liste (nur visuell, DOM-Reihenfolge bleibt) */
#language-dropdown > .e-child:nth-child(2) { order: 1; }

/* Teal-Punkt an der aktiven Sprache: standardmäßig Deutsch (1. Zeile);
   für andere Sprache Klasse "current-lang" an die Zeile geben */
#language-dropdown > .e-child.current-lang::after,
#language-dropdown > .e-child:first-child:not(.current-lang-off)::after {
  content: "";
  position: absolute;
  right: 12px;
  top: 17px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #009BA5;
}

#language-trigger {
  cursor: pointer;
}
/* ^ ported from vsev2 (Language Dropdown) — artelis */

/* =========================================================
   Buttons — button_type variants (ported from vsev2)
   ========================================================= */
.elementor-button-s-circle .elementor-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 9999px;
  font-family: "Satoshi", sans-serif;
  font-weight: 700;
  line-height: 20px;
  cursor: pointer;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.elementor-button-s-circle .elementor-button-content-wrapper,
.elementor-button-s-circle .elementor-button-text {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
.elementor-button-s-circle .elementor-button-text::after {
  content: "";
  display: inline-block;
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  background-size: 16px 16px;
  background-repeat: no-repeat;
  background-position: center;
  transition: background-color 0.3s ease, transform 0.3s ease;
}
.elementor-button-s-circle .elementor-button {
  height: 40px;
  padding: 0 24px;
}
.elementor-button-s-circle .elementor-button {
  padding-right: 6px;
}
.elementor-button-s-circle .elementor-button-text::after {
  width: 28px;
  height: 28px;
  border-radius: 9999px;
  background-size: 14px 14px;
}
/* Red family: bg red -> dark, white text */

.elementor-button-s-circle .elementor-button {
  background-color: #E3000B;
  color: #F8F9FA;
}
.elementor-button-s-circle .elementor-button:hover {
  background-color: #222222;
}
.elementor-button-s-circle .elementor-button-text::after {
  background-color: #F8F9FA;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='%23E3000B' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h15'/%3E%3Cpath d='M13 6l6 6-6 6'/%3E%3C/svg%3E");
}
/* Full-width: Elementor "Justify" alignment stretches the button */

.elementor-button-s-circle.elementor-align-justify .elementor-button {
  width: 100%;
  justify-content: center;
}
/* ── Pfeile, Farbe wählbar ─ text + arrow, colour follows the Elementor button text colour (currentColor) ── */
.elementor-button-text-arrow .elementor-button {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}
.elementor-button-text-arrow .elementor-button-content-wrapper {
  display: flex;
  align-items: center;
}
.elementor-button-text-arrow .elementor-button-text {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.elementor-button-text-arrow .elementor-button-text::after {
  content: "";
  width: 22px;
  height: 22px;
  flex: 0 0 auto;
  display: inline-block;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h15'/%3E%3Cpath d='M13 6l6 6-6 6'/%3E%3C/svg%3E") no-repeat center / contain;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h15'/%3E%3Cpath d='M13 6l6 6-6 6'/%3E%3C/svg%3E") no-repeat center / contain;
  transition: transform .2s ease;
}
.elementor-button-text-arrow .elementor-button:hover .elementor-button-text::after {
  transform: translateX(4px);
}


/* =========================================================
   Kontaktformular-Submit im s-circle-Look (rot) — page 447
   Applies to the Elementor Form submit button via custom
   class .form-button on the form widget. Text left, red
   arrow circle right (space-between).
   ========================================================= */
.form-button .elementor-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  width: 100%;
  height: 48px;
  padding: 0 6px 0 24px;
  border: 0;
  border-radius: 9999px;
  background-color: #E3000B;
  color: #F8F9FA;
  font-family: "Satoshi", sans-serif;
  font-weight: 700;
  line-height: 20px;
  cursor: pointer;
  transition: background-color .3s ease, color .3s ease;
}
.form-button .elementor-button:hover {
  background-color: #222222;
  color: #F8F9FA;
}
/* form's own FontAwesome icon hidden — arrow rendered as ::after circle */
.form-button .elementor-button-icon { display: none !important; }
.form-button .elementor-button-content-wrapper {
  display: flex !important;
  flex-direction: row !important;
  width: 100% !important;
  align-items: center;
  justify-content: space-between !important;   /* text left, circle right */
  gap: 12px;
}
.form-button .elementor-button-text { order: 1; }
.form-button .elementor-button-content-wrapper::after { order: 2; }
.form-button .elementor-button-content-wrapper::after {
  content: "";
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 9999px;
  background-color: #F8F9FA;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 18px 18px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='%23E3000B' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h15'/%3E%3Cpath d='M13 6l6 6-6 6'/%3E%3C/svg%3E");
  transition: transform .3s ease;
}


/* =========================================================
   Author box (Blog) — custom styling via class .author-box
   on the Elementor Author Box widget
   ========================================================= */
/* Rahmen (Radius 20px) sitzt am Widget-Wrapper, das Foto darin bleibt rund.
   Ein einzelnes <img> kann nicht zwei Radien haben - border-radius rundet
   Rahmen und Bildbeschnitt immer gemeinsam. Deshalb Rahmen aussen, Kreis innen.
   Die Klasse .author-box liegt auch auf zwei Author-Box-Widgets, daher die
   Einschraenkung auf .elementor-widget-image. */
.author-box.elementor-widget-image {
  border: 2px solid #005f6935;
  border-radius: 20px;
  width: fit-content;
}
/* Kein border-radius hier: die runden 100px kommen aus den Widget-Einstellungen
   in Elementor. display:block entfernt den Inline-Spalt unter dem Bild. */
.author-box.elementor-widget-image img {
  display: block;
}
/* Nur fuer das Author-Box-Widget gedacht - wuerde sonst den Rahmen am
   Image-Widget auf Desktop wieder entfernen. */
@media (min-width: 1025px) {
  .author-box.elementor-widget-author-box {
    background: transparent !important;
    border: none !important;
  }
}

/* =========================================================
   WPML language switcher — visual match of the hand-built
   #language-dropdown card above.

   Scoped to .elementor-widget-wpml-language-switcher and the
   stable .wpml-ls-* classes only (no elementor-element-XXXX
   IDs), so it survives moving the header into a Theme Builder
   template.

   All design values (240px card, #FEFEFE, radius 0 0 10 10,
   5px card padding, 28px flag circle on #f0f2f3, 8px/12px row
   padding, 12px gap, Satoshi 700 16px #101923, Menlo 12px
   #9aa4a6, 6px teal dot #009BA5, hover #F2FAFA) are taken 1:1
   from the #language-dropdown rules above. Only addition: a
   soft drop shadow, because the WPML card floats over page
   content instead of hanging off the header bar.

   Works with two WPML switcher styles
   (WPML > Languages > Language switcher options >
    "Custom language switchers" > "Language switcher style"):

   a) "Vertical list" / "Horizontal list" — REQUIRED for the
      target design. WPML renders all three languages, so the
      card shows three rows plus the teal dot on the active
      language. Opened by hover / keyboard focus on the round
      flag trigger.
   b) "Dropdown" (WPML default) — WPML deliberately omits the
      current language from the sub menu, so the card can only
      ever show the two other languages and there is no row to
      put the teal dot on. Styled here so it does not look
      broken, but it is not the target design.
   ========================================================= */

/* --- 1. let the card escape the widget box --- */
.elementor-widget-wpml-language-switcher,
.elementor-widget-wpml-language-switcher > .elementor-widget-container,
.elementor-widget-wpml-language-switcher .wpml-elementor-ls,
.elementor-widget-wpml-language-switcher .wpml-ls {
  overflow: visible !important;
}
.elementor-widget-wpml-language-switcher .wpml-elementor-ls {
  line-height: 0; /* kills the inline-block gap under the trigger */
}

/* --- 2. rows (shared by every switcher style) --- */
.elementor-widget-wpml-language-switcher .wpml-ls ul {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0;
  margin: 0 !important;
  list-style: none;
}
.elementor-widget-wpml-language-switcher .wpml-ls li {
  padding: 0;
  margin: 0;
  list-style: none;
}
/* Visual order Deutsch / Englisch / Französisch, independent of
   the WPML "Order of languages" setting. */
.elementor-widget-wpml-language-switcher .wpml-ls-item-de { order: 1; }
.elementor-widget-wpml-language-switcher .wpml-ls-item-en { order: 2; }
.elementor-widget-wpml-language-switcher .wpml-ls-item-fr { order: 3; }

.elementor-widget-wpml-language-switcher .wpml-ls a {
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 12px;
  padding: 8px 12px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  text-decoration: none;
  line-height: 1;
  cursor: pointer;
  transition: background 0.15s ease;
}
.elementor-widget-wpml-language-switcher .wpml-ls a:hover,
.elementor-widget-wpml-language-switcher .wpml-ls a:focus {
  background: #F2FAFA;
}

/* --- 3. round flag in a filled grey circle ---
   WPML's own rectangular flag image is hidden and the flag is
   painted on the link instead. The three SVGs of the old icon
   widgets (media IDs 70/71/72) are inlined as 28px PNGs, so the
   artwork is identical — including the US flag for English —
   without pulling their ~1 MB source files. */
.elementor-widget-wpml-language-switcher .wpml-ls-flag {
  display: none !important;
}
.elementor-widget-wpml-language-switcher .wpml-ls a::before {
  content: "";
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background-color: #f0f2f3;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 14px 14px;
}
.elementor-widget-wpml-language-switcher .wpml-ls-item-de > a::before {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHKADAAQAAAABAAAAHAAAAABkvfSiAAABd2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE0IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgqipH0cAAAEZ0lEQVRIDbVWX0xbVRg/37nn3tJSRykbNXOCrJ01MbpEsywxPviHkRmTZTHRxL3MRH0zJpj4zruJS4wPI4pxLy7iizMMZWuozRQehoTJZBZWkBFGKJVCqGt77z3n8zuXQhgiDimnOefenvt93+/7d77vAPuP0dvbG+1LJFoLy8tH5+bm4sMjN2K5XC6ESrKaQO3SE/H47YA/MO5KZ6QpFkt8feFCZjuRsNXHZDIpgsFw9Pz5T9/p70+czi4shF3HMRHRlFIKLoQBDJhUKIGhyxBd4GD7A4HFAw37L7W1nfgsEolkOjo63M3y/wHY09NTn06nW7u6ut6fn5+PFQqFRikVRyAImnp4T3pF/UcpvXrvqFAJDtlAbTCzv/HAJ37Lujo6Opr3CCrLfYCdnZ1NQ0NDzw0MDJydnZ19eaXwl7aKATcY55pUTw9mowzvHWlfSUUUSLSGY5qin4PxpZTOz8VicWaNwVh70ZalUqkXbt787czw8C+vlm3b4MLUzGTRGtW/P7WLOecevevYhuM4MaXQYpa59Eg8fnc5my1pbqGX7u5uYyydfil17dpbv4+NndSWmKZFumprtrZI8201NI+wTPI0Mtd1Tvlcbjr5vI7ltzSlx9OXSj0ajEQGua9G+w+ZaRGXufvJSRZwBYY5ePjJZ5s0mGfh95cvf+BTqsUm11n79nmR8jTZ5aLd7EoXKLNbcjOZdhLXDsXJyeYbZ85eLeVyUQWUGj4f7e/MjdvppZOOI6oaZmSOh0InhEok2x4fz4SFZXGuwWT1wFYV0XlLmMoOLxfvtQnn9uQxKJV93DRXXSlX47qd1jv9ppOcpPqoUBwTauqPuPRZphQUzgfJ/52iVegpe006NnGBk1MtEKgVzOD/U9SDsQHlPLn2MYF/5sNMENoeWldRSVvUwJmiM7n3YGtuUJz5/YtU7RXNtc29euoqn+f80KEpLJVdtgfZuVFzpBoAgNOCNTSkWbH0DPKAT1e1vRpUdRxmQFrwutB1V/HXwOZBJA9XPZ6VTkMRKwtLXRfY2HyF1T/8ISvb9QwEp4ytrpEaUNHPZYulO6rPwy90tZ7jpYk3GZcRNKwqAxIEsnm0+cXgexPtXrfgJ5/+2O9PHWfMbfR8WnFDVZB1g0SYZEvWOS3PA+w5OHP39Wz8I3lv+l2QK68g6DNapcrD2Q9UYz43Dhdn1wHfgG/k0vTzPwbtDLUMcKRSp1Zb1O7iaQD/TqL8yuAySbXF6wqehRo51PxTHjP+QYkcUAEFElvp3OiKrj/vbNDtgvpgPxPyosHkADSz9ZvbOqCWCNHiHfy1bkVapI1hP8RUOUons5G0q/h3e3CipWqCC4xDhk7dF8yUVzaCeRhbqY5JJuyDT8U43HqbND1NlT5MFzKTVKKLDkUEmedr7SZSwdX3JUoNm+6rixT+S7wEXSxnT8CLtL9pbK8yEeNEXdRxV1oNA44iQlwBHqHWEtJyqAAv0Q15ggGOg+QjXPAEHClnNmHc9/dvnW3k9GITP7AAAAAASUVORK5CYII=");
}
.elementor-widget-wpml-language-switcher .wpml-ls-item-en > a::before {
  background-image: url("data:image/png;base64,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");
}
.elementor-widget-wpml-language-switcher .wpml-ls-item-fr > a::before {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAIAAAD9b0jDAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHKADAAQAAAABAAAAHAAAAABkvfSiAAAC52lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOklwdGM0eG1wRXh0PSJodHRwOi8vaXB0Yy5vcmcvc3RkL0lwdGM0eG1wRXh0LzIwMDgtMDItMjkvIj4KICAgICAgICAgPHBob3Rvc2hvcDpDcmVkaXQ+TWFkZSB3aXRoIEdvb2dsZSBBSTwvcGhvdG9zaG9wOkNyZWRpdD4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnaXRhbFNvdXJjZUZpbGVUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VGaWxlVHlwZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cp6mSPIAAAQ3SURBVEgNdZZfiFdFFMdn5s7v3ru0G9tDbQ+mUIhQy2ogLC4IsRU+/B7W6qGHiMiVMHVJoQwK1IR6yIhSXIpapIfIF7GSfUkkyVw0iszFf4T9wYJ1exBdc+/93bl3+p6ZO3Pv7/ez+V3uPXPmnM85c+7M/C4vtGa42hvn3CryPC+KAvc0TaGJoigIAiEE7tZA38mXF7rgrER4cpKqL76+GIZ6/ePL0lQhpg1DCM5EGPFvv4syFTfX8SjyXj6M6FCh+833v6999tCGrdM/XZiXASJSs2ZG4joQrYuXFra9fv35jenM6W5CGxSl2L3vVHPDlz+em2dxI5TlHDvdNBOyEcRxce7CzU2v3Jr8pKMIFbQo9MSe42+9N6Mww9CVjHidFS+rhTlEodB88YMDN9/Zq4vCx66gew7MTE79zHpCzNcPOwncGppEJGc0gos4Tj/7/NbHU96rhB479cfb+86wngZl4UjkSoa+77ilgh5QaVQ6im9Pfpqc/oHMGROYxGKS7Xj3pFL0jq3W39v76BHEhjIydQrcBOcq+/f9/RorD8sD/keO/Xr27ByL7vBaXG7tUTiyY1iJwFkDRONhqH6ZXTx+AlkKlObg4fNMVMX1AAguU/ekMSAZNxl7Ae/IrGCefDUNoPhrbuHM7Dxr1NKspVcTa1zCUrN3GtBIHck2stnzau6amL38z8L1hKqJWLCiyxqTW41E3bLRtqou4qFHKqFv3FBXrojf/l5g2IfW29uSN6ErPGlcs5laF0t37jzP1Z9X5cHDl1lDGG83q3INkKFzdDj7NKHsfCBSfdGsadhQR46KnCpskge4i/F/mfrjAB72AhbGFAmH2PgzK1hLlfP00ctxG6WLTKNVcj4VomctOdaUDy65m+HggMIU3FvYjdDFI5axqagUAu62BYFc+oAYWnFv3z0xK2jIjXQ8vYfTuz1lHWjYSkXB+/sbyx8SS+7vGx66j2V59x51jK6niYLtJGwm2KXIHnKm5ODDwcAANi1/8elHylD1nEx964qKDX/a4PR6YUBkPEjS8VgTQNqdTz25fNWqAdbKKzeSPBBe7c2SzAoEzlA4a2XBysF49DFYYwa6J5Z7d6yV0mwq726YjueedhQ9ZwuRDir8pOzdvhVnK/Itz5EnRpa9OTHMFt3acmiXrc3NoZGded+oIw1oXSRJz8sbozXD1q86nHZuWbN5/FGWZGYllFSHQRfuLgRyM9UkI/yvgfjCc72bxksfTL+SBN+/c3T3qyMoA9XX8AzGsbwpBLOq8laKU/WubVv63niN1w5Pu+tLcyyFXRMj01PrV68cYKnKVPVfVgdSxirTaSKHBvs/+rB380t4V3UDjg+QDhWG8TFx6OglfEyMjS6FDI21sX92Ior4iZNRK4ua6yDXcZBhQ9AOrUdAUErhm6f+2SOlpM8eWiumQva4qCEA/Q9N4bixlmCUpQAAAABJRU5ErkJggg==");
}

/* --- 4. label column: bold German name + small grey code ---
   WPML renders "English(Englisch)" via nested spans, which is
   unusable for this layout, so its text is collapsed and both
   lines are set per language. Needs WPML's "Language name in
   native language" to stay switched on — that span is the host
   of the two lines. */
.elementor-widget-wpml-language-switcher .wpml-ls .wpml-ls-native {
  display: block;
  margin: 0;
  font-size: 0;
  line-height: 0;
}
.elementor-widget-wpml-language-switcher .wpml-ls .wpml-ls-display,
.elementor-widget-wpml-language-switcher .wpml-ls .wpml-ls-bracket {
  display: none;
}
.elementor-widget-wpml-language-switcher .wpml-ls .wpml-ls-native::before {
  display: block;
  font-family: "Satoshi 700", sans-serif;
  font-weight: 700;
  font-size: 16px;
  line-height: 1.1;
  color: #101923;
}
.elementor-widget-wpml-language-switcher .wpml-ls .wpml-ls-native::after {
  display: block;
  margin-top: 1px;
  font-family: "Menlo", monospace;
  font-weight: 400;
  font-size: 12px;
  line-height: 1.1;
  text-transform: uppercase;
  color: #9aa4a6;
}
.elementor-widget-wpml-language-switcher .wpml-ls-item-de > a .wpml-ls-native::before { content: "Deutsch"; }
.elementor-widget-wpml-language-switcher .wpml-ls-item-de > a .wpml-ls-native::after  { content: "DE"; }
.elementor-widget-wpml-language-switcher .wpml-ls-item-en > a .wpml-ls-native::before { content: "Englisch"; }
.elementor-widget-wpml-language-switcher .wpml-ls-item-en > a .wpml-ls-native::after  { content: "EN"; }
.elementor-widget-wpml-language-switcher .wpml-ls-item-fr > a .wpml-ls-native::before { content: "Französisch"; }
.elementor-widget-wpml-language-switcher .wpml-ls-item-fr > a .wpml-ls-native::after  { content: "FR"; }

/* --- 5. teal dot on the active language --- */
.elementor-widget-wpml-language-switcher .wpml-ls-current-language > a::after {
  content: "";
  position: absolute;
  right: 12px;
  top: 17px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #009BA5;
}

/* =========================================================
   6. "Vertical list" / "Horizontal list" — the target design
   ========================================================= */
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical,
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal {
  display: block;
  position: relative;
  width: 28px;
  max-width: none;
  padding: 0;
  border: 0;
}
/* trigger: round flag of the current language */
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical::before,
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal::before {
  content: "";
  display: block;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 16px 16px;
  cursor: pointer;
}
.elementor-widget-wpml-language-switcher .wpml-ls:has(.wpml-ls-item-de.wpml-ls-current-language)::before {
  background-image: url("data:image/png;base64,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");
}
.elementor-widget-wpml-language-switcher .wpml-ls:has(.wpml-ls-item-en.wpml-ls-current-language)::before {
  background-image: url("data:image/png;base64,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");
}
.elementor-widget-wpml-language-switcher .wpml-ls:has(.wpml-ls-item-fr.wpml-ls-current-language)::before {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAIAAAD9b0jDAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHKADAAQAAAABAAAAHAAAAABkvfSiAAAC52lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOklwdGM0eG1wRXh0PSJodHRwOi8vaXB0Yy5vcmcvc3RkL0lwdGM0eG1wRXh0LzIwMDgtMDItMjkvIj4KICAgICAgICAgPHBob3Rvc2hvcDpDcmVkaXQ+TWFkZSB3aXRoIEdvb2dsZSBBSTwvcGhvdG9zaG9wOkNyZWRpdD4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnaXRhbFNvdXJjZUZpbGVUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VGaWxlVHlwZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cp6mSPIAAAQ3SURBVEgNdZZfiFdFFMdn5s7v3ru0G9tDbQ+mUIhQy2ogLC4IsRU+/B7W6qGHiMiVMHVJoQwK1IR6yIhSXIpapIfIF7GSfUkkyVw0iszFf4T9wYJ1exBdc+/93bl3+p6ZO3Pv7/ez+V3uPXPmnM85c+7M/C4vtGa42hvn3CryPC+KAvc0TaGJoigIAiEE7tZA38mXF7rgrER4cpKqL76+GIZ6/ePL0lQhpg1DCM5EGPFvv4syFTfX8SjyXj6M6FCh+833v6999tCGrdM/XZiXASJSs2ZG4joQrYuXFra9fv35jenM6W5CGxSl2L3vVHPDlz+em2dxI5TlHDvdNBOyEcRxce7CzU2v3Jr8pKMIFbQo9MSe42+9N6Mww9CVjHidFS+rhTlEodB88YMDN9/Zq4vCx66gew7MTE79zHpCzNcPOwncGppEJGc0gos4Tj/7/NbHU96rhB479cfb+86wngZl4UjkSoa+77ilgh5QaVQ6im9Pfpqc/oHMGROYxGKS7Xj3pFL0jq3W39v76BHEhjIydQrcBOcq+/f9/RorD8sD/keO/Xr27ByL7vBaXG7tUTiyY1iJwFkDRONhqH6ZXTx+AlkKlObg4fNMVMX1AAguU/ekMSAZNxl7Ae/IrGCefDUNoPhrbuHM7Dxr1NKspVcTa1zCUrN3GtBIHck2stnzau6amL38z8L1hKqJWLCiyxqTW41E3bLRtqou4qFHKqFv3FBXrojf/l5g2IfW29uSN6ErPGlcs5laF0t37jzP1Z9X5cHDl1lDGG83q3INkKFzdDj7NKHsfCBSfdGsadhQR46KnCpskge4i/F/mfrjAB72AhbGFAmH2PgzK1hLlfP00ctxG6WLTKNVcj4VomctOdaUDy65m+HggMIU3FvYjdDFI5axqagUAu62BYFc+oAYWnFv3z0xK2jIjXQ8vYfTuz1lHWjYSkXB+/sbyx8SS+7vGx66j2V59x51jK6niYLtJGwm2KXIHnKm5ODDwcAANi1/8elHylD1nEx964qKDX/a4PR6YUBkPEjS8VgTQNqdTz25fNWqAdbKKzeSPBBe7c2SzAoEzlA4a2XBysF49DFYYwa6J5Z7d6yV0mwq726YjueedhQ9ZwuRDir8pOzdvhVnK/Itz5EnRpa9OTHMFt3acmiXrc3NoZGded+oIw1oXSRJz8sbozXD1q86nHZuWbN5/FGWZGYllFSHQRfuLgRyM9UkI/yvgfjCc72bxksfTL+SBN+/c3T3qyMoA9XX8AzGsbwpBLOq8laKU/WubVv63niN1w5Pu+tLcyyFXRMj01PrV68cYKnKVPVfVgdSxirTaSKHBvs/+rB380t4V3UDjg+QDhWG8TFx6OglfEyMjS6FDI21sX92Ior4iZNRK4ua6yDXcZBhQ9AOrUdAUErhm6f+2SOlpM8eWiumQva4qCEA/Q9N4bixlmCUpQAAAABJRU5ErkJggg==");
}
/* The card. Its 28px transparent top padding is the gap to the
   trigger AND the hover bridge, so the pointer can travel down
   without the card closing. The visible card chrome therefore
   sits on ::before, inset by that padding. */
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical > ul,
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal > ul {
  position: absolute;
  top: 15px;
  right: -20px;
  width: 240px;
  padding: 33px 5px 5px;   /* 28px hover bridge + 5px inner top, matching the sides */
  opacity: 0;
  transform: translateY(10px);
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
  z-index: 999;
}
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical > ul::before,
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal > ul::before {
  content: "";
  position: absolute;
  inset: 28px 0 0 0;
  border-radius: 0 0 10px 10px;
  background: #FEFEFE;
  box-shadow: 0 10px 30px rgba(16, 25, 35, 0.10);
  z-index: -1;
}
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical:hover > ul,
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical:focus-within > ul,
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal:hover > ul,
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal:focus-within > ul {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

/* =========================================================
   7. "Dropdown" style (WPML default) — fallback look
   ========================================================= */
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown {
  width: auto;
  max-width: none;
}
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown > ul {
  position: relative;
}
/* toggle = trigger: round flag only, no label, no caret, no dot */
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-item-toggle {
  width: 28px;
  padding: 0;
  border-radius: 50%; /* round hover highlight instead of a rounded square */
}
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-item-toggle .wpml-ls-native,
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-item-toggle::after {
  display: none;
}
/* sub menu = the card, same padding/chrome trick as above */
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu {
  top: 100%;
  left: auto;
  right: -20px;
  width: 240px;
  padding: 33px 5px 5px;   /* 28px hover bridge + 5px inner top, matching the sides */
  border: 0;
  z-index: 999;
}
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu::before {
  content: "";
  position: absolute;
  inset: 28px 0 0 0;
  border-radius: 0 0 10px 10px;
  background: #FEFEFE;
  box-shadow: 0 10px 30px rgba(16, 25, 35, 0.10);
  z-index: -1;
}

/* =========================================================
   8. Tablet & phone (Elementor nav-menu burger breakpoint):
   flat row list inside the opened mobile menu instead of an
   overlay card.
   ========================================================= */
@media (max-width: 1024px) {
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical,
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal,
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-item-toggle {
    width: 100%;
  }
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical::before,
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal::before,
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical > ul::before,
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal > ul::before,
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu::before {
    display: none;
  }
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical > ul,
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal > ul,
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu {
    position: static;
    visibility: visible;
    width: 100%;
    padding: 0;
    opacity: 1;
    transform: none;
    pointer-events: auto;
  }
  /* in the burger menu the current language is a row as well */
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-item-toggle {
    padding: 8px 12px;
  }
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-item-toggle .wpml-ls-native {
    display: block;
  }
  .elementor-widget-wpml-language-switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language > a::after {
    display: block;
  }
}

/* WPML ships its own stylesheet for the list templates
   (templates/language-switchers/legacy-list-horizontal/style.min.css). With the
   widget pointed at the footer slot, that file adds spacing and centring meant
   for a real footer switcher, which shifts the card layout above. Reset only
   those declarations; the extra class raises specificity past WPML's. */
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal.wpml-ls-statics-footer,
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical.wpml-ls-statics-footer {
  margin: 0;
  padding: 0;
  border: 0;
  clear: none;
}
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-horizontal.wpml-ls-statics-footer > ul,
.elementor-widget-wpml-language-switcher .wpml-ls-legacy-list-vertical.wpml-ls-statics-footer > ul {
  text-align: left;
}
.elementor-widget-wpml-language-switcher .wpml-ls .wpml-ls-flag + span {
  margin-left: 0;
}

/* =========================================================
   Off-canvas menu (the mobile/tablet menu widget)
   Panel background is #F8F9FA, menu text #101923. The switcher inside the
   panel renders the same legacy-list-horizontal markup as the header one, so
   the card styling above has to be undone here: flat centred row of flags,
   no trigger, no labels, ring instead of the dot on the active language.
   Scoped to .e-off-canvas__content rather than a breakpoint, so it holds
   regardless of when the panel is opened.
   ========================================================= */
.e-off-canvas__content .elementor-widget-nav-menu .elementor-item {
  border-bottom: 1px solid #00000014;
}

.e-off-canvas__content .elementor-widget-wpml-language-switcher .wpml-ls {
  width: auto;
}
.e-off-canvas__content .elementor-widget-wpml-language-switcher .wpml-ls::before,
.e-off-canvas__content .elementor-widget-wpml-language-switcher .wpml-ls > ul::before {
  display: none;
}
.e-off-canvas__content .elementor-widget-wpml-language-switcher .wpml-ls > ul {
  position: static;
  flex-direction: row;
  justify-content: center;
  gap: 18px;
  width: auto;
  padding: 0;
  opacity: 1;
  transform: none;
  pointer-events: auto;
}
.e-off-canvas__content .elementor-widget-wpml-language-switcher .wpml-ls-item > a {
  width: auto;
  padding: 0;
  background: none;
}
.e-off-canvas__content .elementor-widget-wpml-language-switcher .wpml-ls-native {
  display: none;
}
.e-off-canvas__content .elementor-widget-wpml-language-switcher .wpml-ls-item > a::before {
  margin: 0;
  width: 18px;
  height: 18px;
  background-color: transparent;
  background-size: 18px 18px;
}
.e-off-canvas__content .elementor-widget-wpml-language-switcher .wpml-ls-current-language > a::before {
  outline: 2px solid #009BA5;
  outline-offset: 2px;
}
.e-off-canvas__content .elementor-widget-wpml-language-switcher .wpml-ls-current-language > a::after {
  display: none;
}


/* ===== Animierter Glow-Hintergrund =====
   Klasse "glow-bg" auf eine (dunkle) Sektion legen. Zwei Leuchten
   (rot + tuerkis) bewegen sich und blenden abwechselnd auf/ab.
   Hinweis: die Sektion darf KEIN Elementor-Background-Overlay nutzen -
   das belegt ebenfalls ::before. */
.glow-bg {
  position: relative;
  overflow: hidden;
  background-color: #0a0b0d;
  isolation: isolate;
}
.glow-bg::before,
.glow-bg::after {
  content: "";
  position: absolute;
  width: 55vw;
  max-width: 680px;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  filter: blur(90px);
  pointer-events: none;
  z-index: 0;
  will-change: transform, opacity;
}
/* blau-tuerkises Leuchten - links */
.glow-bg::before {
  background: radial-gradient(circle, rgba(0, 170, 205, .5), rgba(0, 170, 205, 0) 70%);
  top: -18%;
  left: -8%;
  animation: glowRed 14s ease-in-out infinite;
}
/* rotes Leuchten - rechts */
.glow-bg::after {
  background: radial-gradient(circle, rgba(227, 0, 11, .55), rgba(227, 0, 11, 0) 70%);
  bottom: -22%;
  right: -6%;
  animation: glowCyan 14s ease-in-out infinite;
}
.glow-bg > * {
  position: relative;
  z-index: 1;
}
@keyframes glowRed {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: .2; }
  50%      { transform: translate(22%, 18%) scale(1.35); opacity: .85; }
}
@keyframes glowCyan {
  0%, 100% { transform: translate(0, 0) scale(1.3); opacity: .85; }
  50%      { transform: translate(-22%, -16%) scale(1); opacity: .2; }
}
@media (prefers-reduced-motion: reduce) {
  .glow-bg::before,
  .glow-bg::after { animation: none; }
}
/* Nur Desktop: ab Tablet abwaerts entfallen die beiden Leuchten. Zwei Flaechen
   mit blur(90px) und Dauer-Animation kosten auf kleinen Geraeten Rechenzeit,
   bringen bei der schmalen Spalte aber kaum Wirkung. Der dunkle Grund
   (#0a0b0d) BLEIBT - der Text in diesen Sektionen ist weiss und waere sonst
   nicht mehr lesbar. */
@media (max-width: 1024px) {
  .glow-bg::before,
  .glow-bg::after {
    display: none;
  }
}


/* ===== foto-background =====
   Absolut positionierter Foto-Layer, der die volle Breite des Elternelements
   einnimmt. left/right:0 statt width:100vw - 100vw rechnet die Scrollbar mit
   und erzeugt sonst horizontales Scrollen. Volle Bildschirmbreite ergibt sich,
   wenn der Layer direktes Kind des AEUSSEREN Elementor-Containers (.e-con) ist:
   der ist bereits full-width, nur .e-con-inner ist geboxt.
   Hoehe kommt von aussen (Elementor Hoehe/Min-Hoehe) - ohne Hoehe ist der
   Layer 0px hoch und damit unsichtbar. */
.foto-background {
  position: absolute;
  inset: 0;
  z-index: 0;
}
/* Elementor setzt am Image-Widget nur top/left, nicht right/bottom - der Widget-
   Kasten ist deshalb so hoch wie das Bild, nicht wie der Container. inset:0 oben
   deckt das ab. Die feste Pixel-Hoehe (Hoehe-Feld im Image-Widget, je Breakpoint
   1000/500/600px) schreibt Elementor per Element-ID-Selektor - hoehere
   Spezifitaet, daher !important. Saubere Alternative: das Hoehe-Feld im Widget
   auf allen drei Breakpoints leeren, dann faellt Elementors Regel weg. */
.foto-background img {
  display: block;
  width: 100%;
  height: 100% !important;
  object-fit: cover;
}


/* ==========================================================================
   Sticky Section - bleibt oben kleben, sobald sie den oberen Viewportrand
   erreicht. Verwendung: CSS-Klasse "sticky-section" am Container setzen
   (Elementor: Erweitert -> CSS-Klassen).
   ========================================================================== */

.sticky-section {
  --sticky-offset: 0px;        /* Hoehe eines darueberliegenden fixen Headers */
  position: -webkit-sticky;
  position: sticky;
  top: var(--sticky-offset);
  z-index: 100;
  transition: box-shadow .25s ease, padding .25s ease, background-color .25s ease;
}

/* Elementor kapselt Container - sticky bricht in overflow/transform-Eltern */
.sticky-section,
.sticky-section > .e-con-inner {
  overflow: visible !important;
}

/* Zustand: Sektion klebt gerade oben (Klasse setzt script.js).
   Bewusst ohne Groessenaenderung - Hoehe und Innenabstaende kommen aus den
   Elementor-Einstellungen des Containers und sollen sich beim Kleben nicht
   verschieben (sonst "springt" die Leiste). Nur Hintergrund + Schatten. */
.sticky-section.is-stuck {
  background-color: #fff;
  box-shadow: 0 2px 16px rgba(0, 0, 0, .08);
}

/* WP-Adminbar nur beruecksichtigen, solange sie wirklich fixiert ist.
   WordPress setzt #wpadminbar bis 600px auf position:absolute - die Leiste
   scrollt dort mit weg. Ein Offset wuerde eingeloggten Nutzern auf dem Handy
   eine dauerhaft leere Lucke ueber der Sektion hinterlassen. */
@media screen and (min-width: 601px) and (max-width: 782px) {
  .admin-bar .sticky-section { top: calc(var(--sticky-offset) + 46px); }
}
@media screen and (min-width: 783px) {
  .admin-bar .sticky-section { top: calc(var(--sticky-offset) + 32px); }
}
