/* ==========================================================================
   Tischlerei Enthammer – Mobile-/Tablet-/Kleinlaptop-Fixes
   Grundlage: Playwright-Audit, 16 Seiten x 11 Viewports + Sonderfaelle
   Einbinden: <link rel="stylesheet" href="/custom.css"> im Sitejet-Head,
              moeglichst als LETZTES Stylesheet.
   Eigenstaendig und rein additiv – ersetzt keine Sitejet-Datei.
   Sitejet-Breakpoints: <=575px Mobil | 576-975px Tablet | >=976px Desktop
   ========================================================================== */

/* --------------------------------------------------------------------------
   0. GLOBALE SICHERHEITSNETZE
   -------------------------------------------------------------------------- */

/* Kein horizontales Scrollen mehr. "clip" statt "hidden", damit
   position:sticky / position:fixed weiter funktionieren.
   Gemessen: /kontakt @1180px hatte scrollWidth 1274 statt 1180. */
html,
body {
  overflow-x: clip;
}

/* Lange zusammengesetzte Woerter ("mondphasengeschlaegertes",
   "Holz-Glas-Konstruktionen", E-Mail-Adressen) sprengen auf 320px die Spalte. */
p,
li,
dd,
dt,
td,
th,
label,
figcaption,
blockquote,
h1, h2, h3, h4, h5, h6,
.ed-text,
.ed-element a {
  overflow-wrap: break-word;
  word-break: normal;
}

@media screen and (max-width: 60.9375rem) {
  p,
  li,
  .ed-text {
    -webkit-hyphens: auto;
    hyphens: auto;
  }
}

/* Der Lazyload-Platzhalter des Logos ist ein SVG mit width="800"
   height="Infinity". Er sprengt den Footer-Container.
   Gemessen: +92px Ueberhang, 534px abgeschnittener Inhalt auf
   /moebel, /fenster, /news. */
.ed-logo,
.ed-logo img,
img.ed-lazyload[src^="data:image/svg+xml"] {
  max-width: 100% !important;
  height: auto !important;
}

/* Der Container .ed-logo selbst blieb 800px breit und wurde vom Footer-Kasten
   beschnitten – gemessen auf /moebel, /nur-holz-system und /unternehmen:
   Kasten 392px, Inhalt 800px, also 408px abgeschnitten. Deshalb steht
   .ed-logo oben mit in der Regel, nicht nur .ed-logo img. */

/* --------------------------------------------------------------------------
   1. HAUPTNAVIGATION 1650px bis 1919px – EINZEILIG NEBEN DEM LOGO

   HINWEIS ZUM UMSCHALTPUNKT: Sitejet hat ihn mit der Veroeffentlichung vom
   11.08.2026 verschoben. Gemessen:
     bis 1649px  -> Burger-Menue
     ab  1650px  -> Desktop-Navigation
   Der alte Block fuer 976-1300px ist damit hinfaellig und wurde entfernt.
   Er hat zuletzt sogar geschadet, weil er in 976-1649px die Schrift des
   Mobil-Overlays auf 16px verkleinert hat.

   Verbleibendes Problem: von 1650 bis 1719px passt die Navigation nicht
   neben das Logo und rutscht in eine zweite Zeile (Header waechst von
   116px auf 150px). Ab 1720px passt sie ohne Zutun.
   Gemessen: -5% Schriftgroesse allein reicht bei 1650px NICHT. Erst
   zusammen mit engerer Sperrung (1px -> 0.3px) bleibt es einzeilig.
   -------------------------------------------------------------------------- */

@media screen and (min-width: 1650px) and (max-width: 1919px) {
  #ed-644076629 > ul.menu-level-0 > li > a {
    /* 17.6px minus 5% */
    font-size: 16.72px !important;
    letter-spacing: 0.3px !important;
  }
}

/* --------------------------------------------------------------------------
   2. BURGER-/OVERLAY-MENUE (bis 1649px)
   Reichweite folgt dem Sitejet-Umschaltpunkt oben. Aendert Sitejet ihn
   erneut, hier und in Block 1 nachziehen.
   -------------------------------------------------------------------------- */

/* Burger-/Schliessen-Icon war 30x25px. Unsichtbare 48x48-Trefferflaeche
   ohne Layoutverschiebung. */
#ed-644076626 {
  position: relative !important;
}

#ed-644076626::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 48px;
  height: 48px;
}

/* Bei geoeffnetem Menue scrollte die Seite dahinter weiter.
   Gemessen: scrollY 0 -> 600 bei offenem Overlay. */
body.open-menu {
  overflow: hidden !important;
}

html:has(body.open-menu) {
  overflow: hidden !important;
}

@media screen and (max-width: 1649px) {

  /* Das Overlay-Menue stand 50px zu weit links. Ursache: die <nav> hat
     padding-right:100px, das Menue zentriert sich dadurch um 100/2 = 50px
     nach links versetzt. Gemessen bei 320px und 390px jeweils exakt -50px. */
  #ed-644076629 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }

  /* Hauptpunkte waren 34px hoch -> ca. 46px. */
  #ed-644076629 > ul.menu-level-0 > li > a {
    padding-top: 14px !important;
    padding-bottom: 14px !important;
  }

  /* Unterpunkte hatten 13,6px Schrift – zu klein zum Lesen und Treffen. */
  #ed-644076629 .sub ul.menu-level-1 > li > a {
    font-size: 1rem !important;
    line-height: 1.4 !important;
  }

  /* Aufklappbare Punkte hatten keinen Hinweis auf ein Untermenue.
     Pfeil, der sich beim Oeffnen dreht. */
  #ed-644076629 > ul.menu-level-0 > li.menu-sub > a.sub-trigger::after {
    content: "";
    display: inline-block;
    box-sizing: border-box;
    width: 0.42em;
    height: 0.42em;
    margin-left: 0.6em;
    margin-bottom: 0.15em;
    vertical-align: middle;
    background: none;
    /* Erst alle vier Kanten auf 0, sonst erbt das Pseudoelement die
       Rahmenbreite des Themes und wird zur gefuellten Raute. */
    border: 0 solid currentColor;
    border-right-width: 1.5px;
    border-bottom-width: 1.5px;
    transform: rotate(45deg);
    transform-origin: center;
    transition: transform 0.2s ease-in-out;
    opacity: 0.7;
  }

  #ed-644076629 > ul.menu-level-0 > li.menu-sub.open > a.sub-trigger::after {
    transform: rotate(-135deg);
    margin-bottom: 0;
  }

  /* Der aktive Menuepunkt war im Overlay unsichtbar: Textfarbe
     rgb(87,86,86) auf Hintergrund rgb(87,86,86), Kontrast 1:1.
     Reproduziert auf /kuechen, /kastenfenster, /nur-holz-system – im
     Burger-Menue fehlte auf jeder Unterseite genau der Eintrag der
     aktuellen Seite. Uebrige Eintraege liegen bei 7.32:1.
     Wieder weiss (7.32:1) plus goldene Unterstreichung als Markierung –
     nicht allein ueber Farbe, damit es auch bei Farbfehlsichtigkeit
     erkennbar bleibt. */
  #ed-644076629 li.active > a,
  #ed-644076629 a.active {
    color: #fff !important;
    text-decoration: underline !important;
    text-decoration-color: #ba9d5d !important;
    text-decoration-thickness: 2px !important;
    text-underline-offset: 0.25em !important;
  }
}

/* --------------------------------------------------------------------------
   3. TIPPZIELE (gemessen <44px)
   -------------------------------------------------------------------------- */

/* Telefon-Icon im Header: 25x18px. */
#ed-646545276 > a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 44px !important;
  min-height: 44px !important;
}

/* Slider-Punkte: 12x12px. Optik bleibt, Trefferflaeche wird 44x44. */
.slick-dots li {
  margin: 0 16px !important;
}

.slick-dots li button {
  position: relative !important;
}

.slick-dots li button::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 44px;
  height: 44px;
  text-indent: 0;
}

/* Social-Icons im Footer (Instagram, Facebook) sind 32x32px.
   Optik bleibt, unsichtbare 44x44-Trefferflaeche darueber. */
.ed-icon[class*="social"] a {
  position: relative !important;
}

.ed-icon[class*="social"] a::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 44px;
  height: 44px;
}

/* Footer-Rechtslinks (Datenschutzhinweis | Impressum | Fotonachweis)
   hatten 18px Trefferhoehe in einer Zeile. */
/* Grenze 1649px statt 975px: bis dahin laeuft das Burger-Menue, dort wird
   also mit dem Finger bedient. Tablets im Querformat (1024, 1180) hatten
   sonst weiter nur 18px hohe Rechtslinks. */
@media screen and (max-width: 1649px) {
  /* :not(.button) ist entscheidend – ohne den Ausschluss traf die Regel auch
     den CTA-Button im Footer und hat dessen Polsterung von 11.2px auf 6.4px
     GESENKT: 25.6px Zeilenhoehe + 2x6.4 = 38px statt 48px. */
  .footer-thrud-content a:not(.button),
  .footer-thrud-box a:not(.button) {
    display: inline-block;
    padding-top: 0.4rem;
    padding-bottom: 0.4rem;
  }
}

/* --------------------------------------------------------------------------
   4. KONTAKTFORMULAR
   -------------------------------------------------------------------------- */

/* Alle Textfelder mind. 48px hoch und mind. 16px Schrift – sonst zoomt
   iOS Safari beim Fokus in das Feld hinein. */
.ed-element form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.ed-element form textarea,
.ed-element form select {
  font-size: max(16px, 1rem) !important;
  min-height: 48px !important;
}

.ed-element form textarea {
  min-height: 120px !important;
}

/* Absenden-Button war 43px hoch. */
.ed-form-button > button {
  min-height: 48px !important;
}

/* Inhalts-Buttons sind je nach Breite unterschiedlich hoch – gemessen
   48px bei 820px, aber nur 38px bei 1180px Fensterbreite (Footer-Button,
   auf jeder Seite). Nur min-height, bewusst OHNE display-Wechsel:
   inline-flex aendert die Zeilenbox-Berechnung und hat den Button bei
   820px von 48 auf 44 VERKLEINERT. So hebt die Regel nur an. */
.ed-button a.button,
.ed-button button.button {
  min-height: 44px !important;
}

/* Datenschutz-Checkbox war 13x13px und an mehrzeiligem Text vertikal
   verrutscht. Hinweis: <input> rendert keine Pseudoelemente, die Box laesst
   sich also nicht unsichtbar auf 44px vergroessern. Dafuer ist das <label>
   per for-Attribut mitklickbar und deckt die volle Textbreite ab. */
.ed-form-checkbox ul.checkbox_list input[type="checkbox"],
.ed-form-radio ul.radio_list input[type="radio"] {
  width: 26px !important;
  height: 26px !important;
  min-width: 26px !important;
  min-height: 26px !important;
  flex: 0 0 auto !important;
  align-self: flex-start !important;
  margin-top: 0.15rem !important;
  margin-right: 0.5rem !important;
  accent-color: #ba9d5d;
  cursor: pointer;
}

.ed-form-checkbox ul.checkbox_list li,
.ed-form-radio ul.radio_list li {
  align-items: flex-start !important;
}

.ed-form-checkbox ul.checkbox_list li label,
.ed-form-radio ul.radio_list li label {
  cursor: pointer !important;
  padding-top: 0.4rem !important;
  padding-bottom: 0.4rem !important;
  min-height: 44px !important;
  display: flex !important;
  align-items: center !important;
}

/* Captcha: Eingabefeld war 100px breit, ohne Label und ohne Platzhalter.
   Auf dem Handy sah es aus wie ein Zierstrich, nicht wie ein Pflichtfeld. */
.ed-form-captcha {
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 0.75rem 1rem !important;
}

.ed-form-captcha > div.image {
  float: none !important;
  margin: 0 !important;
}

.ed-form-captcha > div.input {
  flex: 1 1 170px !important;
  min-width: 150px !important;
}

.ed-form-captcha > div.input::before {
  content: "Code eingeben";
  display: block;
  font-size: 0.8125rem;
  line-height: 1.2;
  margin-bottom: 0.25rem;
  opacity: 0.75;
}

.ed-form-captcha > div.input input[type="text"] {
  width: 100% !important;
  min-width: 0 !important;
  min-height: 48px !important;
  padding: 0 0.75rem !important;
  border: 1px solid rgba(255, 255, 255, 0.5) !important;
  border-radius: 6px !important;
}

/* "Neu laden"-Icon: 24px Box, Linktext hat font-size:0. */
.ed-form-captcha > div.regenerate {
  clear: none !important;
  margin-left: 0 !important;
}

.ed-form-captcha > div.regenerate > a.regenerate {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 44px !important;
  min-height: 44px !important;
}

/* Auf sehr schmalen Geraeten Captcha-Bild und Feld untereinander. */
@media screen and (max-width: 22.5rem) {
  .ed-form-captcha > div.input {
    flex: 1 1 100% !important;
  }
}

/* --------------------------------------------------------------------------
   5. HERO-TEXTSPALTE AUF KLEINEN DISPLAYS
   Die Textspalte war auf <=575px auf 80% Breite begrenzt und zusaetzlich
   um 5% eingerueckt – auf 320/360px blieben teils nur ~230px nutzbar.
   Klassenselektor .banner-content, damit alle Seiten erfasst sind.
   -------------------------------------------------------------------------- */

@media screen and (max-width: 35.9375rem) {
  .ed-container.banner-content > .inner {
    max-width: 100% !important;
    /* Der seitliche Abstand kam vorher aus margin-left:5% plus
       max-width:80%. Beides ist oben aufgehoben, sonst klebt der Text an
       beiden Kanten (gemessen: 1px Restabstand rechts bei 320/390/474).
       Deshalb hier als echte Polsterung, gleicher Gutter wie die
       uebrigen Abschnitte. Vertikale 40px bleiben erhalten. */
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }

  .ed-container.banner-content {
    margin-left: 0 !important;
    max-width: 100% !important;
  }

  /* HINWEIS, bewusst KEINE Regel hier:
     Zwei Abschnitte haben auf Mobil 0px Innenabstand in der Textspalte,
     der Fliesstext klebt an beiden Kanten:
       /nur-holz-system   #ed-1421896154  [fullwidth-5050]
       /tueren-treppen    #ed-1421860382  [fullwidth-5050]
     Gemessen ueber 15 Seiten – alle uebrigen Abschnitte bringen ihre
     20-24px selbst mit. Eine Regel auf das Preset wuerde bei denen 24px
     addieren (gemessen: aus 24 werden 48). Deshalb gehoert das an den
     beiden Abschnitten in Sitejet eingestellt, nicht hier. */
}

/* --------------------------------------------------------------------------
   5b. BILD-TEXT-ZWEISPALTER
   Betrifft die beiden Presets preset-unequal-columns-v2-basic-columns2er
   (12x) und preset-unequal-columns-v2-fullwidth-5050 (15x).
   Gemessen /kastenfenster: Textspalte 919px, Bildspalte 520px -> 399px
   Leerraum. Ueber 12 Seiten max. Hoehendifferenz 646px.
   Ursache: .inner{align-items:center} + img{object-fit:fill} mit fester
   Bildhoehe – das Bild schwebt mittig, der Rest ist Loch.
   -------------------------------------------------------------------------- */

/* 576px bis 1599px: einspaltig, Bild oben.
   <=575px bleibt unveraendert – dort stapelt Sitejet bereits selbst. */
/* Obergrenze 1649px, damit die Spaltenkante mit Sitejets Menuekante
   zusammenfaellt. Vorher lag sie bei 1599 – dazwischen gab es ein 50px
   breites Band mit zweispaltigem Inhalt, aber noch Burger-Menue. */
@media screen and (min-width: 36rem) and (max-width: 1649px) {
  [class*="preset-unequal-columns-v2-"] > .inner {
    flex-direction: column !important;
    align-items: stretch !important;
  }

  /* KEIN width:100% – die Section-.inner hat negative Aussenraender
     (gemessen -40..1144 bei vw=1104). 100% ergaebe 1136px Boxbreite mit
     rechter Kante bei 1160 und damit 56px Ueberhang. align-items:stretch
     der Spaltenrichtung setzt die Breite bereits korrekt. */
  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box {
    flex-basis: auto !important;
    width: auto !important;
    max-width: 100% !important;
  }

  /* Inhalt der Spalte auf volle Breite. Sitejet deckelt Textcontainer auf
     max-width:600px – gestapelt sah das aus wie eine halbbreite Box. */
  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box > .inner > *:not(figure) {
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  /* Figuren nur deckeln, Raender nicht anfassen – das dekorative figure
     sitzt per negativem Rand bewusst ueber der Bildkante. */
  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box > .inner > figure.ed-image:first-of-type {
    max-width: 100% !important;
  }

  /* Bildspalte immer nach oben, unabhaengig von der Reihenfolge im DOM.
     Noetig, weil .inner teils row-reverse nutzt und mal das Bild, mal der
     Text das erste Kind ist. */
  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box:has(img) {
    order: -1 !important;
  }

  /* WICHTIG – nur das ERSTE <figure> der Spalte ist das Hauptbild.
     Die Spalte enthaelt teils ein zweites, dekoratives figure.ed-image
     (Logo-Badge, goldener Halbkreis) mit eigener absoluter Position und
     z-index:2. Das darf nicht angefasst werden, sonst wird es auf
     Hauptbildgroesse aufgeblasen. */
  /* Lightbox-Wrapper: die Kette ist auf vielen Seiten figure > a > img.
     Ein Kindselektor "> img" greift dort nicht. Gemessen ohne diesen Fix:
     #ed-1421896052 blieb bei 800px in einer 976px-Spalte (1024px Fenster),
     #ed-1422767061 wurde 1326px hoch (1514px Fenster). */
  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box > .inner > figure.ed-image:first-of-type > a {
    display: block !important;
    line-height: 0 !important;
  }

  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box > .inner > figure.ed-image:first-of-type img {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    /* Ohne Deckel wird das Bild gestapelt bis zu 1326px hoch. 55vh haelt es
       in einem Bildschirm, die 640px verhindern das Ausufern auf hohen
       Fenstern. Kein erzwungenes Seitenverhaeltnis, nur Beschnitt oben und
       unten. Beide Werte sind Stellschrauben. */
    max-height: min(55vh, 640px) !important;
    object-fit: cover !important;
    object-position: center !important;
  }

  /* Der goldene Akzentblock ist .fm-img-block-*::after mit width:40%;
     height:40% des <figure>. Bei quadratischem Bild ergibt das ein Quadrat
     (gemessen 208x208 bei 520x521). Sobald das Bild auf volle Breite geht
     (1200x550), wird daraus ein flacher Streifen 480x220.
     Seitenverhaeltnis fixieren und Groesse deckeln. */
  [class*="preset-unequal-columns-v2-"] .fm-img-block-left-bottom::after,
  [class*="preset-unequal-columns-v2-"] .fm-img-block-right-bottom::after {
    width: min(40%, 208px) !important;
    height: auto !important;
    aspect-ratio: 1 / 1 !important;
  }

  [class*="preset-unequal-columns-v2-"] .fm-img-block-small-right-bottom::after {
    width: min(10%, 52px) !important;
    height: auto !important;
    aspect-ratio: 1 / 1 !important;
  }
}

/* Ab 1600px: zweispaltig, Bild vertikal mittig.

   WICHTIG – die Bilder haengen auf vielen Unterseiten in einem <a>
   (Lightbox/Zoom). Die Kette ist figure > a > img, nicht figure > img.
   Ein Kindselektor "> img" greift dort nicht. Deshalb ueberall
   Nachfahrenselektor plus display:block auf dem <a>.

   Das <figure> umschliesst das Bild eng (height:auto). Nur so sitzt das
   goldene Zierquadrat .fm-img-block-*::after (bottom:-6px) am unteren
   Bildrand statt am Boden der gestreckten Spalte.
   overflow bleibt sichtbar, sonst wird der 6px-Ueberstand abgeschnitten. */
@media screen and (min-width: 1650px) {
  [class*="preset-unequal-columns-v2-"] > .inner {
    align-items: center !important;
  }

  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box:has(img) {
    align-self: center !important;
    height: auto !important;
  }

  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box:has(img) > .inner {
    height: auto !important;
    align-items: center !important;
    justify-content: center !important;
  }

  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box > .inner > figure.ed-image:first-of-type {
    position: relative !important;
    height: auto !important;
    align-self: center !important;
    overflow: visible !important;
  }

  /* Lightbox-Wrapper darf keine Zeilenhoehe unter dem Bild erzeugen,
     sonst sitzt das Zierquadrat ein paar Pixel zu tief. */
  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box > .inner > figure.ed-image:first-of-type > a {
    display: block !important;
    line-height: 0 !important;
  }

  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box > .inner > figure.ed-image:first-of-type img {
    position: static !important;
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    /* Deckel fuer Desktop. Ohne ihn wird ein quadratisches Bild auf einem
       breiten Monitor absurd hoch – gemessen 1207px bei 2541px Fensterbreite,
       Textspalte daneben nur 547px.
       70vh haelt die Kombination in einem Bildschirm, die 820px verhindern,
       dass sie auf einem hohen Monitor trotzdem ausufert (70vh waeren bei
       1440px Fensterhoehe noch 1008px). Beschnitt oben/unten mittig, das
       Bild wird nicht gestaucht. Beide Werte sind Stellschrauben. */
    max-height: min(70vh, 820px) !important;
    object-fit: cover !important;
    object-position: center !important;
  }
}

/* 1600px bis 1919px: flache Bilder etwas hoeher ziehen.
   min-height statt aspect-ratio, damit ausschliesslich gestreckt und nie
   gestaucht wird – bereits hohe Bilder bleiben unveraendert.
   34vw ergibt 544px bei 1600 und 652px bei 1919. Gemessene Wirkung:
     breites Bild   476 -> 560 (1650), 559 -> 652 (1919)
     quadratisch    520 -> 560 (1650), 520 -> 652 (1919)
     hohes Bild     762 bzw. 897 bleiben unveraendert
   Ab 1920px greift die Regel nicht mehr, dort ist die Luecke ohnehin klein
   oder negativ. Wert 34vw ist die Stellschraube. */
@media screen and (min-width: 1650px) and (max-width: 1919px) {
  [class*="preset-unequal-columns-v2-"] > .inner > .unequal-columns-box > .inner > figure.ed-image:first-of-type img {
    min-height: 34vw !important;
  }
}

/* --------------------------------------------------------------------------
   5c. MEHRSPALTIGE TEXTBLOECKE – ABSAETZE NICHT ZERREISSEN
   15 .ed-text-Bloecke nutzen column-count:2 mit 64px Spaltenabstand und
   weisser column-rule. Absaetze standen auf break-inside:auto, dadurch
   riss ein Satz mitten durch: "... energieoptimiert," endete links,
   "schadstofffrei und langlebig." begann rechts oben.
   Gemessen: 8 bis 10 zerrissene Absaetze auf /, /nur-holz, /kuechen,
   /kastenfenster, /kaseinleim, /cnc-lohnarbeit – bei jeder Breite.
   break-inside greift nur in Fragmentierungskontexten (Mehrspalter, Druck),
   ausserhalb davon ist die Regel wirkungslos und damit gefahrlos.
   -------------------------------------------------------------------------- */

.ed-text p,
.ed-text ul,
.ed-text ol,
.ed-text li,
.ed-text blockquote,
.ed-text h1,
.ed-text h2,
.ed-text h3,
.ed-text h4,
.ed-text h5,
.ed-text h6 {
  -webkit-column-break-inside: avoid;
  page-break-inside: avoid;
  break-inside: avoid;
}

/* Falls ein einzelner Absatz laenger ist als eine Spalte, muss der Browser
   ihn doch teilen. Dann wenigstens nie mit einer einzelnen Restzeile. */
.ed-text p {
  orphans: 2;
  widows: 2;
}

/* Nach einer Ueberschrift nicht sofort umbrechen. */
.ed-text h1,
.ed-text h2,
.ed-text h3,
.ed-text h4,
.ed-text h5,
.ed-text h6 {
  -webkit-column-break-after: avoid;
  page-break-after: avoid;
  break-after: avoid;
}

/* --------------------------------------------------------------------------
   6. QUERFORMAT-HANDYS / SEHR FLACHE FENSTER
   Gemessen 844x390: fixer Header 108px = 28% der Hoehe, H1 lief unter die
   Kante.
   -------------------------------------------------------------------------- */

@media screen and (orientation: landscape) and (max-height: 30rem) {
  .menu-wrapper > .inner {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }

  .menu-wrapper .ed-logo img {
    max-height: 40px !important;
    width: auto !important;
  }

  .ed-element h1 {
    font-size: clamp(1.5rem, 4.2vw, 2.25rem) !important;
    line-height: 1.15 !important;
  }
}

/* --------------------------------------------------------------------------
   7. VIEWPORT-HOEHE AUF MOBILGERAETEN
   Der Hero nutzt height:94vh / min-height:90vh. Auf Mobilbrowsern zaehlt vh
   die eingeblendete URL-Leiste mit – Inhalt rutscht unter die Kante.
   Nur die Startseite setzt vh (per Inline-Style auf #ed-637352546). Setzt du
   in Sitejet auf einer weiteren Seite eine vh-Hoehe, hier ergaenzen.
   -------------------------------------------------------------------------- */

@supports (height: 100dvh) {
  @media screen and (max-width: 60.9375rem) {
    #ed-637352546 {
      height: 94dvh !important;
      min-height: 90dvh !important;
    }
  }
}

/* --------------------------------------------------------------------------
   8. KLEINIGKEITEN
   -------------------------------------------------------------------------- */

/* Sichtbarer Fokusring fuer Tastatur- und Screenreader-Bedienung. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid #ba9d5d !important;
  outline-offset: 2px !important;
}

/* Galerie-Thumbnails im Lightbox-Streifen waren 29px hoch. */
.ed-gallery-thumb li > a,
.ed-gallery-items li > a {
  min-height: 44px;
}

/* Reduzierte Bewegung respektieren. */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* --------------------------------------------------------------------------
   9. TEXTLINKS AUF FARBIGEM GRUND (.fm-text-white)
   -------------------------------------------------------------------------- */

/* Sitejet setzt global a:hover{color:#9a7120}. Auf dem goldenen Block
   (/kaseinleim, /cnc-lohnarbeit) verschwinden die Inline-Links dadurch
   im Hintergrund. In .fm-text-white bleiben sie weiss und werden beim
   Hover nur leicht abgesetzt. */
.fm-text-white p a,
.fm-text-white li a {
  color: #fff;
  transition: opacity 0.2s ease;
}

.fm-text-white p a:hover,
.fm-text-white p a:focus,
.fm-text-white p a:active,
.fm-text-white li a:hover,
.fm-text-white li a:focus,
.fm-text-white li a:active {
  color: #fff;
  opacity: 0.9;
  text-decoration: underline;
}
