/* ------------------------------------------------------------------
   Brücke: Elementor-Container ↔ Designsystem

   styles.css bleibt unverändert. Alles, was nur nötig ist, weil die
   Seite jetzt in Elementor-Containern statt in nacktem Markup steht,
   steht hier — damit die Quelle der Wahrheit sauber bleibt.
   ------------------------------------------------------------------ */

/* 1. Elementor legt jedem Container eine eigene Breite und Polsterung
      an. Die Sektionen der Seite laufen über die volle Breite; das
      Maß macht .wrap. */
.elementor .e-con,
.elementor .e-con-inner{
  --container-default-padding-top:0;
  --container-default-padding-right:0;
  --container-default-padding-bottom:0;
  --container-default-padding-left:0;
}

/* 2. .wrap trägt Breite, Zentrierung und Gutter selbst. Elementor darf
      dem Element keine zweite Breite geben. */
.elementor .e-con.wrap,
.elementor .e-con.wrap > .e-con-inner{
  width:100%;
  max-width:var(--max);
  margin-inline:auto;
  padding-inline:var(--gutter);
}

/* 3. Elementor setzt jedem Widget display:block und eigene Ränder.
      Die Designklassen sollen unverändert greifen. */
.elementor-widget:where(.label,.lead,.note,.mark,.tag){margin:0}

/* 4. Hello Elementor rahmt den Inhalt mit einer eigenen Seitenbreite.
      Die Seite bringt ihre eigene mit. */
.hello-elementor-default .site-main,
body.elementor-page .site-main{max-width:none; padding:0; margin:0}

/* 5. Der klebende Kopf und der Fuß kommen aus dem Theme-Builder und
      sollen über die volle Breite laufen. */
.elementor-location-header,
.elementor-location-footer{width:100%}

/* 6. Bilder in Elementor-Bild-Widgets sollen sich wie die Bilder im
      Original verhalten: das figure-Element trägt die Gestalt, das
      Bild füllt es. */
.elementor-widget-image{line-height:0}
.elementor-widget-image .elementor-widget-container{height:100%}
.elementor-widget-image figure,
.elementor-widget-image a{height:100%; display:block}

/* ------------------------------------------------------------------
   7. Rasterkinder

   styles.css setzt die Spalte am Element selbst (.finding-item h3
   { grid-column:2 }). In Elementor ist das Rasterkind aber der
   Widget-Wrapper, nicht das h3 darin — die Regel liefe dort ins Leere.
   Deshalb hier dieselbe Zuweisung eine Ebene hoeher.
   ------------------------------------------------------------------ */
.finding-item > .elementor-widget-heading:not(.finding-no),
.finding-item > .elementor-widget-text-editor{grid-column:2}
.finding-item > .finding-no{grid-row:1}

/* Dieselbe Bauform auf der Kontaktseite: Nummer links, Titel und Text
   in der zweiten Spalte. */
.next-step > .elementor-widget-heading:not(.next-step-no),
.next-step > .elementor-widget-text-editor{grid-column:2}
.next-step > .next-step-no{grid-row:1}

/* Widget-Wrapper sollen die Gestalt ihres Inhalts nicht abschneiden:
   Der Textmarker ragt bewusst ueber die Satzkante hinaus. */
.elementor-widget-heading{overflow:visible}

/* ------------------------------------------------------------------
   8. Hero-Bild

   Die beiden Aufnahmen liegen deckungsgleich uebereinander; die obere
   traegt die zweite Rampe und ist ueber die rechte Haelfte maskiert.
   Als Elementor-Bild-Widgets stehen zwischen .hero-media und dem <img>
   zwei Wrapper — die Positionierung wandert deshalb an den Wrapper,
   die Bildhaltung bleibt am <img>.
   ------------------------------------------------------------------ */
.hero-media > .elementor-widget-image{position:absolute; inset:0; width:100%; height:100%; margin:0}
.hero-media > .elementor-widget-image .elementor-widget-container,
.hero-media > .elementor-widget-image figure{width:100%; height:100%; margin:0}
.hero-media > .elementor-widget-image img{width:100%; height:100%; display:block; object-fit:cover; object-position:78% 50%}

/* Die beiden Duotone-Rampen haengen in styles.css an .hero-img--roh und
   .hero-img--fertig. Das ist hier der Widget-Wrapper — ein SVG-Filter auf
   einem absolut gesetzten Wrapper wird von Chrome nicht gezeichnet, das Bild
   verschwindet dann ganz. Die Rampe gehoert deshalb an das <img> darin.
   Einzige Stelle, an der ein Gestaltwert doppelt steht; bei einer Aenderung
   der Rampe muessen beide Dateien angefasst werden. */
.hero-media > .elementor-widget-image{filter:none; -webkit-mask-image:none; mask-image:none}
.hero-media > .hero-img--roh img{filter:grayscale(1) contrast(.90) url(#duotone-roh)}
.hero-media > .hero-img--fertig img{
  filter:grayscale(1) contrast(1.2) brightness(1.05) url(#duotone-fertig);
  -webkit-mask-image:linear-gradient(90deg,transparent 38%,#000 50%);
          mask-image:linear-gradient(90deg,transparent 38%,#000 50%);
}

/* ------------------------------------------------------------------
   9. Der Pfeil im Knopf

   Im Original steht er als inline-SVG im Markup. Das Elementor-Knopf-Widget
   bringt nur Icon-Bibliotheken mit — eine davon zu laden hiesse, eine
   Schriftdatei fuer ein Zeichen zu holen. Der Pfeil kommt deshalb als Maske
   aus derselben Kontur und faehrt beim Ueberfahren mit, wie im Original
   (.btn:hover svg { transform: translateX(4px) }).
   ------------------------------------------------------------------ */
.btn.elementor-button::after{
  content:"";
  width:1em; height:1em; flex:none;
  background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M2 8h11m0 0L9 4m4 4-4 4' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M2 8h11m0 0L9 4m4 4-4 4' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
  transition:transform .25s var(--ease);
}
.btn.elementor-button:hover::after{transform:translateX(4px)}

/* Elementor gibt dem Knopf eigene Polsterung und Radien. Die Gestalt steht
   in styles.css (.btn, .btn--primary, .btn--sm). */
:where(.elementor-button.btn){padding:.95rem 1.7rem; border-radius:var(--r-pill); font-size:var(--t-body)}
:where(.elementor-button.btn.btn--sm){padding:.65rem 1.25rem; font-size:var(--t-small)}
.elementor-widget-button .elementor-button-content-wrapper{display:contents}
.elementor-widget-button .elementor-button-text{min-width:0}
/* Der Knopf im Schlussband ist auf 100% gesetzt; sein Text muss darin
   umbrechen duerfen, sonst laeuft er bei 375px aus der Seite. */
.elementor-button.btn .elementor-button-text{white-space:normal}

/* ------------------------------------------------------------------
   10. Bilder, die ihre Flaeche fuellen

   styles.css setzt diese Bilder absolut (position:absolute; inset:0),
   damit sie den Slot fuellen statt ihn aufzuspannen. In Elementor steht
   dazwischen der Widget-Wrapper: Er hat dann kein Kind mehr im Fluss,
   faellt auf Hoehe 0 zusammen und nimmt das Bild mit. Der Wrapper
   uebernimmt deshalb die Flaeche.
   ------------------------------------------------------------------ */
.final-stage > .elementor-widget-image,
.proc-figure > .elementor-widget-image{
  position:absolute; inset:0; width:100%; height:100%; margin:0;
}

/* ------------------------------------------------------------------
   11. Im Elementor-Editor ist alles sichtbar

   .reveal steht auf opacity:0, bis reveal.js beim Scrollen is-in setzt,
   und .mark auf scaleX(0). Im Editor laeuft der IntersectionObserver
   nicht zuverlaessig: Die Leinwand ist ein iframe, und neu eingefuegte
   Elemente werden nachgereicht, ohne dass sie je beobachtet werden.
   Der Editor zeigte deshalb leere Sektionen.

   Dieselbe Abkuerzung, die auch prefers-reduced-motion nimmt: sofort
   sichtbar, ohne Bewegung. Gilt nur im Editor, nicht im Frontend.
   ------------------------------------------------------------------ */
.elementor-editor-active .reveal,
.elementor-editor-preview .reveal{opacity:1; transform:none}
.elementor-editor-active .mark,
.elementor-editor-preview .mark{--mark-scale:1}
.elementor-editor-active .ico,
.elementor-editor-preview .ico{stroke-dashoffset:0}

/* ------------------------------------------------------------------
   12. Textlinks sind keine Knoepfe

   .textlink ist im Original ein <a> ohne Flaeche: nur Schrift, eine
   gelbe Unterlinie, ein Pfeil. Als Elementor-Knopf-Widget bringt es
   dessen Grundgestalt mit — Flaeche, Polster, Radius, eigene
   Schriftgroesse. Die wird hier wieder abgeraeumt, damit die Regeln
   aus styles.css (.textlink, .textlink--quiet) greifen.
   ------------------------------------------------------------------ */
.elementor-button.textlink{
  background:none;
  border-radius:0;
  padding:0 0 2px;
  font-size:var(--t-body);
  fill:currentColor;
}
.elementor-button.textlink:hover{background:none}
/* Der Pfeil des Textlinks ist kleiner als der des Knopfs. */
.btn.elementor-button::after{width:1em; height:1em}
.textlink.elementor-button::after{
  content:"";
  width:15px; height:15px; flex:none;
  background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M2 8h11m0 0L9 4m4 4-4 4' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M2 8h11m0 0L9 4m4 4-4 4' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* ------------------------------------------------------------------
   13. Der gelbe Knopf im Schlussband

   Beim Ueberfahren wechselt er auf Papierweiss — das ist die Vorgabe
   aus styles.css. Elementor setzt dabei aber seine eigene Hover-Farbe
   auf die Schrift, wodurch weisse Schrift auf weisser Flaeche stand.
   Die Schriftfarbe bleibt deshalb ausdruecklich bei --indigo-deep.
   ------------------------------------------------------------------ */
.elementor-button.btn--accent,
.elementor-button.btn--accent:hover,
.elementor-button.btn--accent:focus{color:var(--indigo-deep)}
.elementor-button.btn--primary,
.elementor-button.btn--primary:hover,
.elementor-button.btn--primary:focus{color:var(--paper)}

/* ------------------------------------------------------------------
   14. Das Eyebrow

   .label ist ein Flex-Container mit einem 26px-Strich als ::before.
   In Elementor sitzt der Text in einem eigenen Absatz darin; ohne
   Zeilenhoehe schrumpfte die Zeile von 20px auf 12px und der Strich
   sass dadurch nicht mehr auf der Mitte der Versalien.
   ------------------------------------------------------------------ */
.label .elementor-heading-title{
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  line-height: 1.62;
  color: inherit;
}

/* ------------------------------------------------------------------
   15. Das FAQ-Akkordeon

   Elementors Akkordeon der neuen Generation liefert genau die
   Auszeichnung, die die Vorlage verlangt — natives <details>/<summary>.
   Es bringt aber seine eigene Gestalt mit: 10px Polster, ein
   Font-Awesome-Zeichen und eine Flex-Zeile. Hier wird daraus die
   Gestalt aus styles.css (.faq summary, .faq-icon).

   Die Auszeichnung von Elementor:
     details.e-n-accordion-item
       summary.e-n-accordion-item-title
         span.e-n-accordion-item-title-header > div…-title-text
         span.e-n-accordion-item-title-icon > span.e-opened / span.e-closed
       div.e-con   (der Antwortcontainer)
   ------------------------------------------------------------------ */
.faq .e-n-accordion,
.faq .e-n-accordion-item{display:block; background:none; border:0; border-radius:0}

.faq .e-n-accordion-item{border-top:1px solid var(--rule)}
.faq .e-n-accordion-item:first-of-type{border-top:0}

.elementor-widget-n-accordion.faq .e-n-accordion-item-title{
  display:block; position:relative;
  padding:clamp(1.15rem, 1.8vw, 1.5rem) 4rem clamp(1.15rem, 1.8vw, 1.5rem) 0;
  background:none; border:0;
  font-family:var(--font-display); font-weight:700;
  font-size:clamp(1.02rem, .92rem + .28vw, 1.18rem);
  letter-spacing:-.015em; color:var(--indigo); line-height:1.35;
  transition:color .2s var(--ease);
}
.elementor-widget-n-accordion.faq .e-n-accordion-item-title:hover{color:var(--indigo-deep)}
.faq .e-n-accordion-item-title-header,
.faq .e-n-accordion-item-title-text{display:block; font:inherit; color:inherit; margin:0}

/* Das Zeichen rechts: die Pille aus styles.css statt des Icon-Fonts.
   Absolut gesetzt, damit es die Zeilenhoehe nicht diktiert — eine
   einzeilige Frage soll nicht hoeher sein als eine zweizeilige. */
.elementor-widget-n-accordion.faq .e-n-accordion-item-title-icon{
  position:absolute; right:0; top:50%; transform:translateY(-50%);
  width:2rem; height:2rem; flex:none;
  border-radius:var(--r-pill);
  background:var(--indigo-08);
  display:block; padding:0;
  transition:background-color .25s var(--ease);
}
/* Elementors Icon-Zeichen (Font Awesome Plus/Minus) verschwindet; die
   beiden Balken darueber zeichnet die Pille selbst. */
.elementor-widget-n-accordion.faq .e-n-accordion-item > .e-n-accordion-item-title .e-n-accordion-item-title-icon > span,
.elementor-widget-n-accordion.faq .e-n-accordion-item[open] > .e-n-accordion-item-title .e-n-accordion-item-title-icon > span{display:none}
.elementor-widget-n-accordion.faq .e-n-accordion-item-title-icon::before,
.elementor-widget-n-accordion.faq .e-n-accordion-item-title-icon::after{
  content:""; position:absolute; inset:50% 28% auto; height:2px; margin-top:-1px;
  background:var(--indigo);
  transition:transform .3s var(--ease);
}
.elementor-widget-n-accordion.faq .e-n-accordion-item-title-icon::after{transform:rotate(90deg)}
.faq details[open] .e-n-accordion-item-title-icon{
  background:color-mix(in srgb, var(--indigo) 16%, var(--paper));
}
.faq details[open] .e-n-accordion-item-title-icon::after{transform:rotate(0deg)}

/* Der Antwortcontainer traegt kein eigenes Polster; das steht am Absatz. */
.faq .e-n-accordion-item > .e-con{
  padding:0; border:0;
  --padding-top:0; --padding-bottom:0; --padding-left:0; --padding-right:0;
}

/* ------------------------------------------------------------------
   16. Wenn der Element-Selektor die Klasse schlaegt

   styles.css setzt an mehreren Stellen eine Grundgestalt ueber einen
   Element-Selektor (.final p, .head p, .case p) und zeichnet einzelne
   Absaetze darueber mit einer Klasse aus. Im Original sitzt die Klasse
   am <p> selbst und gewinnt. In Elementor sitzt sie am Widget, das <p>
   liegt darin — der Element-Selektor greift dann am <p> und die
   Auszeichnung laeuft ins Leere.

   Betroffen waren sechs Absaetze: Lead und Schlusssatz der Relevanz,
   die Fallzeile der Referenz sowie Panelkopf, Nachsatz und Mailzeile
   im Schlussband. Sie liefen auf 21px Lead-Groesse statt auf ihrer
   eigenen Stufe — die Mailzeile war dadurch groesser als der Belegtext
   darueber.
   ------------------------------------------------------------------ */
.elementor-widget.rel-lead p,
.elementor-widget.rel-close p,
.elementor-widget.case-meta p,
.elementor-widget.cta-direct p,
.elementor-widget.after p,
.elementor-widget.talk-head p{
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  max-width: none;
  margin: 0;
}


/* ------------------------------------------------------------------
   17. Listen, die eine Reihe sein sollen

   .assure und .agenda sind im Original das <ul> selbst. In Elementor
   traegt der Wrapper die Klasse, das <ul> liegt eine Ebene tiefer —
   die Flex-Reihe griff dadurch auf dem Wrapper mit nur einem Kind,
   und die Haekchen-Zeilen standen als Bloecke ueber die volle Breite.
   ------------------------------------------------------------------ */
.elementor-widget.assure ul{
  display:flex; flex-wrap:wrap;
  column-gap:.85rem; row-gap:.32rem;
  margin:0; padding:0; list-style:none;
}
.elementor-widget.assure li{display:flex; align-items:center; gap:.32rem; white-space:nowrap}
.elementor-widget.agenda ul{
  display:flex; flex-direction:column; gap:.5rem;
  margin:0; padding:0; list-style:none;
}

/* ------------------------------------------------------------------
   18. Der Knopf im CTA-Slot

   styles.css adressiert ihn als direktes Kind (.cta-slot > .btn). In
   Elementor liegt zwischen Slot und <a> der Widget-Wrapper, die Regel
   griff deshalb nicht und Elementors Standardpolster blieb stehen.
   ------------------------------------------------------------------ */
.cta-slot .btn.elementor-button{
  width:100%; justify-content:center;
  padding:1.05rem 1.1rem;
  font-size:1rem; font-weight:600; letter-spacing:-.005em; text-align:center;
}
.cta-slot .btn.elementor-button:hover{transform:translateY(-2px)}

/* ------------------------------------------------------------------
   19. Satzbreiten

   Elementor deckelt jedes Widget in einem Container pauschal auf
   `max-width:100%` (.elementor.elementor .e-con > .elementor-widget).
   Diese Regel ist spezifischer als jede Satzbreite aus styles.css und
   hat damit saemtliche Zeilenlaengen des Designsystems ausgehebelt —
   .head (56ch), .hero .lead (38ch), .rel-lead (42ch), .problem-claim
   (24ch), .outcome-lead (50ch), .final-lead (42ch), .services .note
   (62ch) und .faq-answer (46ch) liefen alle ueber die volle
   Containerbreite.

   Der Deckel wird hier aufgehoben, damit die dokumentierte Grenze von
   rund 65 Zeichen pro Zeile wieder gilt. Die Widgets bleiben ohne
   eigene Satzbreite so breit wie ihr Container — sie sind Blockboxen,
   der Deckel war fuer sie ohnehin wirkungslos.
   ------------------------------------------------------------------ */
/* --measure ist die Satzbreite, die styles.css neben jedem max-width
   mitfuehrt. Sie ist per @property als NICHT vererbend deklariert, damit
   ein Widget nicht die Breite seines Elternteils erbt; ohne eigenen Wert
   greift 100% — also genau Elementors bisheriges Verhalten. So bleibt die
   Zeilenlaenge an einer Stelle definiert: in styles.css. */
@property --measure{
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 100%;
}
.elementor.elementor .e-con > .elementor-widget,
.elementor.elementor .e-con > .e-con,
.e-con.e-con > .e-con-inner > .elementor-widget{max-width:var(--measure, 100%)}

/* ------------------------------------------------------------------
   20. Zeilenhoehe in Knoepfen und Textlinks

   Elementor setzt .elementor-button auf line-height:1. Im Original
   erben Knopf und Textlink die Zeilenhoehe des Fliesstexts (1,62) —
   der gelbe Knopf im Schlussband war dadurch 52 statt 62 Pixel hoch
   und der Textlink 21 statt 32.
   ------------------------------------------------------------------ */
.elementor-button.btn,
.elementor-button.textlink{line-height:inherit}

/* ------------------------------------------------------------------
   21. Die Formatspalten-Ueberschrift

   .format-area ist im Original das <dt> selbst: eine Flex-Zeile aus
   Zeichen und Text. In Elementor traegt der Wrapper die Klasse, und
   das Zeichen stand dadurch ueber statt neben dem Text. Die Reihe
   wandert deshalb auf das Ueberschriftenelement darin.
   ------------------------------------------------------------------ */
.elementor-widget.format-area .elementor-heading-title{
  display:flex; align-items:flex-start; gap:.6rem;
  font:inherit; color:inherit;
}

/* ------------------------------------------------------------------
   22. Der Abstand unter der "Fuer wen"-Zeile

   Elementor setzt jedem Widget margin:0. Die einzige Stelle, an der
   das einen dokumentierten Wert loescht, ist .services .service-for —
   ihre 1,05rem gehoeren zur dritten Zeile des Karten-Subgrids, die
   Karten waren dadurch 17px zu niedrig. Elementor raeumt den Abstand
   ueber margin-block-end auf .e-con .elementor-widget.elementor-widget
   ab — die Gegenregel braucht deshalb dieselbe Eigenschaft und eine
   Klasse mehr.
   ------------------------------------------------------------------ */
.e-con .elementor-widget.elementor-widget.service-for{margin-block-end:1.05rem}

/* ------------------------------------------------------------------
   23. Die Schiene des Zeitstrahls

   .process::before spannt sich ueber top:3rem/bottom:3rem auf — die
   Hoehe ergibt sich also aus beiden Kanten. Elementor legt jedem
   Container ein ::before fuer Hintergrund-Overlays an und gibt ihm
   height:100%; damit gewann die Hoehe gegen das Kantenpaar, und die
   Schiene lief unter Schritt 05 ins Leere statt in der Mitte des
   letzten Ziffernblocks zu enden.
   ------------------------------------------------------------------ */
.elementor .e-con.process::before{height:auto; width:1px}

/* ------------------------------------------------------------------
   24. Der Kopf auf schmalen Breiten

   styles.css blendet die Navigation ab 1000px ersatzlos aus
   (.nav{display:none}) — auf dem Telefon bliebe die Seite damit ohne
   Menue. Der Prototyp macht dazu keine weitere Vorgabe, deshalb hier
   eine eigene Loesung im System der Seite:

     ab 1000px   Logo · Umschalter · Knopf
     ab  640px   Logo · Umschalter  (der Knopf steht als letzter
                 Eintrag im Klapppanel, damit er nicht verlorengeht)

   Das Panel benutzt Elementors eigene Klappmechanik; gestaltet ist es
   mit den Mitteln der Seite: Canvas-Grund, Instrument Sans, die gelbe
   Unterlinie der Hauptnavigation als aktiver Zustand.
   ------------------------------------------------------------------ */
@media (max-width:1000px){
  .site-header .elementor-widget.nav{display:flex; justify-content:flex-end; margin:0}
  .site-header .nav .elementor-nav-menu--main{display:none}
  .site-header .elementor-menu-toggle{display:flex}

  .site-header .wrap{justify-content:space-between; flex-wrap:nowrap; gap:1rem}
  .site-header .btn.elementor-button{flex:none}
  /* Der Umschalter sitzt rechts. Das Widget haelt auch das Klapppanel,
     dessen Breite sonst die Zeile aufspannt — deshalb rechtsbuendig
     statt auf Inhaltsbreite. */
  .site-header .elementor-widget.nav{margin-inline-start:auto}
}

/* Der Umschalter: kein Kasten, nur das Zeichen in Indigo — als 44px
   grosses Ziel, damit er sich mit dem Daumen sicher treffen laesst. */
.site-header .elementor-menu-toggle{
  background:none; border:0; padding:0;
  width:44px; height:44px;
  align-items:center; justify-content:center;
  color:var(--indigo); font-size:1.5rem;
  border-radius:var(--r-input);
  transition:color .2s var(--ease);
}
.site-header .elementor-menu-toggle:hover{background:none; color:var(--indigo-deep)}
.site-header .elementor-menu-toggle svg{fill:currentColor; width:1em; height:1em}

/* Das Klapppanel haengt an Elementor am Menue-Widget und waere damit nur
   so breit wie der Umschalter — und begaenne auf dessen Oberkante, also
   im Kopf statt darunter. Es wird deshalb am Kopf verankert (der ist
   ohnehin position:sticky) und laeuft ueber die volle Breite. */
.site-header .elementor-widget.nav{position:static}
.site-header .elementor-nav-menu--dropdown{
  position:absolute; top:100%; left:0; right:0; width:auto;
  max-height:calc(100vh - 100%); overflow-y:auto;
}
.site-header .elementor-nav-menu--dropdown{
  background:color-mix(in srgb, var(--canvas) 97%, var(--paper));
  border-top:1px solid var(--line-soft);
  box-shadow:var(--shadow-card);
  padding-block:.5rem;
}
.site-header .elementor-nav-menu--dropdown .elementor-item{
  font-family:var(--body); font-size:var(--t-body); font-weight:500;
  color:var(--slate);
  padding:.9rem var(--gutter);
  border:0;
  transition:color .2s var(--ease), background-color .2s var(--ease);
}
.site-header .elementor-nav-menu--dropdown .elementor-item:hover,
.site-header .elementor-nav-menu--dropdown .elementor-item:focus,
.site-header .elementor-nav-menu--dropdown .elementor-item.elementor-item-active{
  color:var(--indigo);
  background:color-mix(in srgb, var(--indigo) 6%, transparent);
}

/* Der Knopf im Panel: dieselbe Pille wie im Kopf, ueber die volle Breite. */
/* Auf dem Desktop steht der Knopf im Kopf; im Menue waere er doppelt.
   Elementor gibt den Eintraegen display:flex mit drei Klassen — die
   Gegenregel braucht deshalb vier. */
.site-header .elementor-nav-menu--main .elementor-nav-menu > li.nav-cta{display:none}
.site-header .elementor-nav-menu--dropdown .nav-cta{
  margin:.6rem var(--gutter) .35rem;
}
.site-header .elementor-nav-menu--dropdown .nav-cta .elementor-item{
  justify-content:center;
  background:var(--indigo); color:var(--paper);
  border-radius:var(--r-pill);
  padding:.85rem 1.25rem;
  font-weight:600;
}
.site-header .elementor-nav-menu--dropdown .nav-cta .elementor-item:hover{
  background:var(--indigo-deep); color:var(--paper);
}

@media (max-width:640px){
  /* Drei Elemente passen bei 375px nicht nebeneinander (Logo 93 +
     Knopf 217 + Umschalter 34 gegen 335px Satzbreite). Der Knopf
     wandert deshalb ins Panel. */
  .site-header .btn.elementor-button{display:none}
}

/* Das Signet bringt nur eine viewBox mit, keine Breite. In einem
   Flex-Container loest `width:auto` dadurch zu 0 auf und die Wortmarke
   stand allein. Das Seitenverhaeltnis gibt ihm seine Breite zurueck. */
.logo svg{flex:none; aspect-ratio:181 / 237; width:auto}

/* ------------------------------------------------------------------
   25. Das Bildpanel im Schlussband auf schmalen Breiten

   Ab 1000px loest styles.css das Bild aus der Absolutsetzung
   (.final-stage img{position:relative}) — es traegt dort seine eigene
   Hoehe, und das Gespraechspanel schiebt sich mit negativem Rand
   darueber. Regel 10 setzt aber den Widget-Wrapper unbedingt absolut;
   das Bild verlor dadurch seine Hoehe und lag nur noch als schmaler
   Streifen hinter dem Panel.
   ------------------------------------------------------------------ */
@media (max-width:1000px){
  .final-stage > .elementor-widget-image{
    position:relative; inset:auto;
    width:100%; height:auto;
  }
  .final-stage > .elementor-widget-image img{height:auto}
}

/* ------------------------------------------------------------------
   26. Bezugsrahmen fuer absolut gesetzte Bilder

   styles.css gibt diesen Slots position:relative, damit das Bild darin
   (position:absolute; inset:0) genau sie ausfuellt. Elementor setzt die
   Widget-Wrapper auf position:static; das Bild bezog sich dadurch auf
   den naechsten positionierten Vorfahren — bei der Befundkarte auf
   .finding selbst. Einspaltig lag das Foto dadurch ueber der gesamten
   Karte und der Text darauf.
   ------------------------------------------------------------------ */
.elementor-widget.finding-shot,
.elementor-widget.proc-figure,
.e-con.final-stage,
.e-con.hero-media{position:relative}

/* ------------------------------------------------------------------
   27. Der Zeitstrahl auf schmalen Breiten

   Ab 640px stellt styles.css die Schritte einspaltig: die Ziffer steht
   ueber dem Text, nicht daneben. Die Schiene sitzt aber weiterhin auf
   der Ziffernmitte (left:1.63rem) und lief damit quer durch den
   Fliesstext. Ohne Ziffernspalte gibt es nichts mehr zu verbinden.
   ------------------------------------------------------------------ */
@media (max-width:640px){
  .process::before{display:none}
  .phase-no{background:none}
}

/* ------------------------------------------------------------------
   28. Ueberschriften auf schmalen Breiten

   Die Basisregel setzt h1-h4 auf text-wrap:balance und hyphens:auto.
   In einer 335px-Spalte arbeiten beide gegeneinander: Der Ausgleich
   sucht gleich lange Zeilen und nimmt dafuer Trennungen in Kauf, die
   gar nicht noetig waeren — "oft zu spaet rich-tig aktiviert." trennte
   ein siebenbuchstabiges Wort, das auf der naechsten Zeile Platz hat.

   Ohne Ausgleich trennt der Browser nur noch, wenn ein Wort wirklich
   breiter ist als die Spalte. Das ist bei deutschen Komposita
   (Unternehmensgeschichte) noetig und dort auch richtig.
   ------------------------------------------------------------------ */
@media (max-width:640px){
  h1, h2, h3, h4,
  .elementor-heading-title{text-wrap:wrap}
}

/* ------------------------------------------------------------------
   29. Der Fuss braucht kein Klappmenue

   Elementors Menue-Widget schaltet ab Tablet-Breite auf Umschalter —
   im Fuss also ein Burger fuer vier kurze Links. Die Liste bleibt
   deshalb auf allen Breiten sichtbar und bricht einfach um; die
   Gestalt steht in styles.css (.footer-links).
   ------------------------------------------------------------------ */
.site-footer .elementor-menu-toggle,
.site-footer .elementor-nav-menu--dropdown{display:none !important}
.site-footer .elementor-nav-menu--main{display:block !important}

/* .footer-links ist im Original das <nav> selbst; in Elementor traegt
   der Wrapper die Klasse und die Liste liegt darin. */
.site-footer .footer-links .elementor-nav-menu{
  display:flex; flex-wrap:wrap;
  gap:.75rem 1.5rem;
  margin:0; padding:0; list-style:none;
}
.site-footer .footer-links .elementor-nav-menu li{display:block}
.site-footer .footer-links .elementor-item{
  font-family:var(--body); font-size:var(--t-small); font-weight:400;
  color:var(--on-dark);
  padding:0; border:0; background:none;
  transition:color .2s var(--ease);
}
.site-footer .footer-links .elementor-item:hover,
.site-footer .footer-links .elementor-item:focus,
.site-footer .footer-links .elementor-item.elementor-item-active{
  color:var(--accent); background:none;
}
