/*!
 * Dr. Kusenack — widget-bridge.css
 *
 * Der Panzer des Packs gegen die drei ungelayerten Kaskaden-Ebenen im Wirt
 * (Elementor frontend.css + Kit-CSS, Host-Theme-Reset, Elementors `.elementor img`).
 * Lädt als LETZTE Pack-CSS (zeus.json assets.css[], nach Theme-/Component-CSS) und
 * wird vom Theme-Präfix-Build bewusst ausgenommen (bin/theme-prefix.conf).
 *
 * Was hierher gehört (Gates G12 / lint-components.php erzwingen es):
 *   - button.<klasse> / button[data-…] für jede Komponentenklasse, die auf einem
 *     nackten <button> gerendert wird (Host-Theme-Resets schlagen sonst 0,1,0-Klassen)
 *   - .zeus-section <selektor> { height: 100% } für Cover-Bilder (Elementors
 *     `.elementor img { height:auto }` klobbert jede Regel ≤ 0,1,1)
 *   - Für Widgets aus `theme_templates` (Kopf-/Fußzeile) NICHT `.zeus-section` als
 *     Vorfahre nehmen: Theme-Teile stehen außerhalb jeder Section, ein dort gescopter
 *     Panzer greift bei ihnen nie. Stattdessen die Theme-Teil-Klasse selbst, z. B.
 *     `.xx-header .xx-header__logo { height: 28px }` — auch (0,2,0), schlägt also
 *     ebenso `.elementor img`. G12 erkennt seit 10.09.2026 beide Formen.
 *     (Pilot place to be: die Wortmarke lief sonst auf 978×256 statt 107×28.)
 *   - Display-Utilities, die ein Komponenten-Panzer sonst überstimmt (EWH-Lektion)
 * Was NICHT hierher gehört: Look, Layout, Tokens — das ist Sache der Theme-/Component-CSS.
 */

/* Elementor-Container-Gap: Container sind flex-column mit 20 px Gap. Jedes Zeus-Widget
 * ist eine vollflächige <section> — der Gap wird als heller Streifen zwischen zwei
 * Flächen sichtbar. Das Kit schreibt seine Defaults als `.elementor-element{…}` (0,1,0)
 * in post-<kit>.css, deshalb hier (0,2,0); ein je Container gesetzter Gap (post-<ID>.css,
 * 0,3,0) behält Vorrang. Wirksame Variable ist versionsabhängig — alle drei setzen. */
.elementor-element.e-con {
    --widgets-spacing: 0px 0px;
    --widgets-spacing-row: 0px;
    --widgets-spacing-column: 0px;
}

/* Preflight-Parität (Kit-Quelle): zeus-base setzt :where(.zeus-section){line-height:1.5} — das entspricht der Zeilenhöhe des Prototyps
 * (html/body 1.5, Fließtext-Stufe .ku-body löst --body-lh selbst auf). Die Regel hält den Wert gegen Elementor-Kit und Wirt-Theme fest. */
.zeus-section[class*="ku-"] { line-height: 1.5; }

/* Flex-Grundgröße der Widget-Wrapper: Im Spalten-Container (.e-con, flex column) berechnet Chrome die Grundhöhe eines Widgets
 * ohne feste Breite mit anderer Inline-Größe — Wrapper wird mobil höher als seine Section (Lücke). Volle Breite macht es eindeutig
 * (Wissen: reference_zeus_widget_wrapper_flex_hoehe). */
.e-con > .elementor-widget[class*="elementor-widget-ku_"] { width: 100%; }

/* Kit-Containerbreite: Core `[data-zeus-container] > .zeus-section-inner { max-width:1568px }` (0,2,0) schlägt `.ku-container`
 * (0,1,0), liegt die Kit-Klasse auf demselben Element — Panzer (0,3,0) mit dem Kit-Token --container-max (1320 px). */
[data-zeus-container] > .ku-container.zeus-section-inner { max-width: var(--container-max); }
/* Breite Variante: derselbe Panzer kappte auch .ku-container--wide auf 1320 px (Soll-Ist 15.10.2026: Hero/Seitenkopf
 * 1320 statt 1440/1344 px). Gleiche Spezifität, später in der Kaskade → Kit-Token --container-wide (1560 px). */
[data-zeus-container] > .ku-container--wide.zeus-section-inner { max-width: var(--container-wide); }

/* Prose-Listen: zeus-base setzt list-style:none auf jedes ul/ol in .zeus-section (Core ≥ 0.6.0, Wissen: reference_zeus_elementor_fallen 12).
 * Das Kit verlässt sich auf die UA-Aufzählung nur dort, wo keine eigene Regel steht — bei der Planung je Prose-Liste gegen den Prototyp messen
 * (getComputedStyle(ul).listStyleType) und die Regel hier ergänzen. */

/* Paket 2 */
/* Paket 2 — G12-Panzer für ku_header, ku_footer und die Pack-Laufzeit (Schwebeknopf).
 * Theme-Teile stehen außerhalb jeder .zeus-section: Vorfahre ist die Theme-Teil-Klasse (.ku-header, .ku-footer, .ku-header__mega).
 * Werte 1:1 aus ku-theme.css bzw. dem Kit-Preflight; keine neuen Looks. */

/* Kopfzeile, Hauptmenü-Punkte mit Mega-Menü (button.ku-header__link): Host-Theme-Reset setzt Rahmen, Innenabstand, Farbe und
 * Hover-Fläche auf jeden [type=button] (0,1,0) — Werte aus .ku-header__link (padding-top/-bottom var(--space-2)) und Preflight. */
button[data-ku-fm-target] { padding: var(--space-2) 0; border: 0; border-radius: 0; background: none; color: inherit; font-family: inherit; font-weight: inherit; line-height: inherit; text-transform: none; }
button[data-ku-fm-target]:hover, button[data-ku-fm-target]:focus { background: none; color: inherit; }

/* Kopfzeile, Sprechzeiten-Knopf (button.ku-header__icon): Kreisfläche ohne Rahmen/Innenabstand — Werte aus .ku-header__icon und Preflight.
 * Hover-Fläche setzt ku-theme.css mit (0,3,0) selbst, darum hier nur die Grundfläche. */
button[data-ku-zeiten-knopf] { padding: 0; border: 0; border-radius: 9999px; background-color: transparent; }

/* Kopfzeile, Burger (button.ku-header__knopf): Werte aus .ku-header__knopf und Preflight. */
button[data-ku-burger] { padding: 0; border: 0; border-radius: 9999px; background-color: transparent; }
button[data-ku-burger]:hover, button[data-ku-burger]:focus { background-color: transparent; }

/* Mega-Menü, mobile Akkordeon-Köpfe (button.ku-header__mega-mobilkopf): Werte aus der Regel in @media (max-width: 1279.98px);
 * darüber ist der Knopf ausgeblendet (display: none aus der Klassenregel bleibt unberührt). */
@media (max-width: 1279.98px) {
  button[data-ku-fm-acc] { padding: 1.05rem 0; border: 0; border-bottom: 1px solid color-mix(in srgb, var(--ku-ink-900) 10%, transparent); border-radius: 0; background: none; color: var(--text-strong); font-family: 'Playfair Display', serif; font-weight: 500; font-size: 1.5rem; line-height: 1.2; text-transform: none; }
  button[data-ku-fm-acc]:hover, button[data-ku-fm-acc]:focus { background: none; color: var(--text-strong); }
}

/* Schwebeknopf der Startseite (button.ku-fab__haupt, Pack-Laufzeit wp_footer): Werte aus .ku-fab__haupt. */
button[data-ku-fab-knopf] { padding: 0; border: 0; border-radius: 999px; color: var(--ku-paper-50); }

/* Mega-Menü, Bildfeld: Cover-Bild (.ku-header__mega-bild height 100% / object-fit cover) gegen `.elementor img { height:auto }`. */
.ku-header__mega .ku-header__mega-bild { height: 100%; }

/* Logo-Emblem in Kopf- und Fußzeile gegen `.elementor img { height:auto }` — Werte aus :root .ku-logo__emblem bzw. :root .ku-logo--full .ku-logo__emblem. */
.ku-header .ku-logo__emblem { height: calc(var(--ku-logo-h) * 0.975); width: auto; }
.ku-footer .ku-logo--full .ku-logo__emblem { height: calc(var(--ku-logo-w) * 0.182); width: auto; }

/* Paket 3 */
/* Paket 3 — G12-Panzer (lint-components.php), zur Übernahme in pack/assets/css/widget-bridge.css */

/* ku_textkarte (Form Fazit, Autorkarte): Cover-Bild ku-theme.css:720 — Elementors `.elementor img { height:auto }`
 * schlägt (0,1,1), das Porträt füllt den Rahmen sonst nicht. Gilt auch für weitere Autorkarten (ku-autor). */

/* ku_seitenkopf (Form Kontakt): Hintergrundbild ku-theme.css:1539 — gleiche Ursache, das Bild deckt die Fläche sonst nicht ab. */
.zeus-section .ku-seitenkopf__medien > img,
.zeus-section .ku-seitenkopf__medien > picture > img { height: 100%; }

/* Paket 4 */
/* Paket 4/6: keine G12-Panzer nötig (keine Cover-/Höhenregeln in ku_karten, ku_kartenreihe, ku_teaser, ku_ratgeber, ku_inhalt). */

/* Paket 5 */
/* ---- Paket 5/6: ku_hero, ku_vollbild, ku_videos, ku_playlist, ku_textbild, ku_fotopaar (G12-Panzer) ---- */

/* Cover-Bild der Startseiten-Bühne: ku-theme.css:1382 setzt height:100% mit (0,1,1) — Elementors
   `.elementor img { height:auto }` schlägt das; ohne Panzer schrumpft das Porträt auf Eigenhöhe. */
.zeus-section .ku-hero__bild > img,
.zeus-section .ku-hero__bild > picture > img { height: 100%; }

/* Video-Fassaden (ku_videos): ku-theme.css:2394 .ku-vid img füllt die 16:9-Box absolut (height:100%). */
/* (Regel steht gesammelt bei Paket 6: .zeus-section .ku-vid img) */

/* Fotopaar: feste Bildhöhen aus ku-theme.css:1459/1460 und ab 640 px aus Z. 1466/1467 (Klasse am <img>, 0,1,0)
   gegen `.elementor img{height:auto}` — Breakpoint gespiegelt, sonst friert der Panzer die Mobilhöhe ein. */
.zeus-section .ku-fotopaar__bild { height: 280px; }
.zeus-section .ku-fotopaar__bild-klein { height: 220px; }
@media (min-width: 640px) {
  .zeus-section .ku-fotopaar__bild { height: 420px; }
  .zeus-section .ku-fotopaar__bild-klein { height: 280px; }
}

/* Text und Bild (Form mit Karten): feste Bildhöhe aus ku-theme.css:1717, ab 640 px Z. 1724 (Breakpoint gespiegelt). */
.zeus-section .ku-textbild__bild { height: 300px; }
@media (min-width: 640px) {
  .zeus-section .ku-textbild__bild { height: 380px; }
}

/* Playlist-Abspielknopf (button[data-ku-player-start].ku-playlist__haupt-play): Host-Theme-Resets färben
   und polstern nackte <button>; Werte wie Kit-Reset (ku-theme.css:449–455) + Komponentenregel (Z. 1877). */
button[data-ku-player-start] { margin: 0; padding: 0; border: 0; background: transparent; }

/* Playlist-Einträge (button[data-ku-id].ku-playlist__eintrag): Polster/Rahmen wie ku-theme.css:1889; der
   aktive Zustand [aria-current="true"] (0,3,0) bleibt stärker als dieser Panzer (0,1,1). */
button[data-ku-id] { margin: 0; padding: 0.55rem; border: 1px solid transparent; background: transparent; }

/* Abspielknopf der Video-Fassaden (ku-theme.css:2396): gleiche Theme-Reset-Gefahr wie oben, G12 erkennt den
   per String gebauten Knopf nicht — vorsorglich gepanzert. */
button.ku-vid__play { margin: 0; padding: 0; border: 0; background: none; }

/* Paket 6 */
/* ---- Paket 6 (ku_preise, ku_ablauf, ku_zeitleiste, ku_news, ku_anfrage): Panzer (G12) ---- */
/* Mehrschritt-Anfrage: Antwortkarten — Rahmen, Fläche, Innenabstand und Ausrichtung aus ku-theme.css (.ku-anfrage__option) gegen Host-Theme-Button-Resets */
button[data-ku-anfrage-option] { margin: 0; border: 1.5px solid color-mix(in srgb, var(--ku-ink-900) 10%, transparent); border-radius: 1rem; background: var(--ku-paper-50); padding: 1.05rem 1.1rem 1.1rem; color: inherit; text-align: left; }
/* Gewählte Antwort: Zustand aus ku-theme.css (.ku-anfrage__option[aria-checked="true"]) — der Panzer oben (0,1,1) würde ihn sonst überstimmen */
button[data-ku-anfrage-option][aria-checked="true"] { border-color: var(--ku-steel-600); background: #F4F9FB; }
/* Erreichbarkeits-Pillen: Werte aus .ku-anfrage__pille */
button[data-ku-anfrage-pille] { margin: 0; border: 1.5px solid color-mix(in srgb, var(--ku-ink-900) 12%, transparent); border-radius: 999px; background: var(--ku-paper-50); padding: var(--space-2) var(--space-3); color: var(--text-muted); }
button[data-ku-anfrage-pille][aria-checked="true"] { border-color: var(--ku-steel-600); background: #F4F9FB; color: var(--text-link); }
/* Zurück-Knopf: Werte aus .ku-anfrage__prev (Mobil-Innenabstand bleibt Sache der Kit-Regel, daher nur Rahmen/Fläche/Farbe) */
button[data-ku-anfrage-zurueck] { margin: 0; border: 1.5px solid color-mix(in srgb, var(--ku-steel-600) 30%, transparent); border-radius: 999px; background: var(--ku-paper-50); color: var(--text-link); }
/* Weiter-Knopf trägt .ku-btn--primary — nur Reset, die Optik setzt die Button-Regel des Kits */
button[data-ku-anfrage-weiter] { margin: 0; }
/* Zeitleiste: Pfeile (.ku-spur__btn) — Rahmen, Fläche und Farbe aus ku-theme.css */
button[data-ku-tl-prev],
button[data-ku-tl-next] { margin: 0; padding: 0; border: 1px solid color-mix(in srgb, var(--ku-steel-600) 16%, transparent); border-radius: 9999px; background: var(--ku-paper-50); color: var(--text-link); }
/* Cover-Bilder (Kit-Regeln 0,1,1 gegen Elementors .elementor img { height:auto }) — Videofassade (ku_ablauf, auch ku_videos/ku_playlist),
 * Newsletter-Bild (ku_news), Porträt der Autorenkarte (ku_ablauf, ggf. auch ku_inhalt) */
.zeus-section .ku-vid img,
.zeus-section .ku-news__bild,
.zeus-section .ku-autor__foto img { height: 100%; } /* auch Paket 3: ku_textkarte, Porträt der Autorenkarte (ku-theme.css:720); Paket 5: .ku-vid img der Video-Fassade in ku_videos (ku-theme.css:2394) */

/* Integration */
/* Teilen-Knopf (ku_inhalt, .ku-inhalt__teilen-btn): Werte aus ku-theme.css:2193 gegen Host-Theme-Button-Resets. */
button[data-ku-copy] { margin: 0; padding: 0; border: 1px solid color-mix(in srgb, var(--ku-steel-600) 16%, transparent); border-radius: 999px; background: var(--ku-toc-hover); color: var(--text-link); }
/* Filter-Pillen (ku_ratgeber, .ku-tabs__tab): Werte aus ku-theme.css:2327; der gewählte Zustand [aria-selected="true"] (0,3,0) bleibt stärker als dieser Panzer. */
button[data-ku-filter] { margin: 0; padding: 0 1.15rem; border: 1px solid color-mix(in srgb, var(--ku-ink-900) 12%, transparent); border-radius: 999px; background: var(--ku-paper-50); color: var(--text-strong); font-weight: 600; font-size: 0.95rem; }
/* Spur-Pfeile (ku_kartenreihe, ku_playlist, .ku-spur__btn): Werte aus ku-theme.css:2347. */
button[data-ku-spur-prev],
button[data-ku-spur-next] { margin: 0; padding: 0; border: 1px solid color-mix(in srgb, var(--ku-steel-600) 16%, transparent); border-radius: 9999px; background: var(--ku-paper-50); color: var(--text-link); }

/* HTML Forms */
/* Versand der Anfrage (ku_anfrage) und der Anmeldung zur E-Mail-Serie (ku_news) über HTML Forms (Ku_Formulare):
 * Das Plugin legt <form class="hf-form"> und div.hf-fields-wrap um die Widget-Felder — beide ohne Eigenabstand.
 * Servermeldungen (p.hf-message in .hf-messages) im Stil der Feldfehler; die leere Erfolgsmeldung der Anfrage bleibt unsichtbar. */
.ku-anfrage__formular,
.ku-anfrage__formular > .hf-fields-wrap { margin: 0; padding: 0; }
.ku-news__form > .hf-fields-wrap:not([hidden]) { margin: 0; padding: 0; }
/* Abstände der Formularzeilen wie .ku-news__form > … (ku-theme.css:1854), jetzt eine Ebene tiefer */
.ku-news__form > .hf-fields-wrap > :not([hidden]) ~ :not([hidden]) { margin-top: 1rem; margin-bottom: 0; }
.ku-anfrage__meldungen:empty,
.ku-news__meldungen:empty,
.hf-messages .hf-message-success:empty { display: none; }
/* Werte aus .ku-anfrage__fehler (ku-theme.css:1647) */
.ku-anfrage__meldungen { margin-top: 0.3rem; }
.ku-anfrage__meldungen .hf-message { margin: 0; font-size: 0.8rem; color: var(--ku-error-field); }
/* Werte aus .ku-field__error (ku-theme.css:826) */
.ku-news__meldungen .hf-message { margin: 0; font-size: var(--caption-size); font-weight: 600; line-height: 1.45; color: var(--ku-error-600); }
.hf-messages .hf-message-success { color: var(--text-body); }

/* Icon je Karte bzw. Schritt (Ku_Icon, 0.3.6, Größen 0.3.7/0.3.8) */
/* Optionales SVG aus dem Repeater-Feld „Icon (SVG, optional)“ — Elementor gibt den Dateiinhalt unverändert inline aus.
 * Keine Farbvorgaben am Slot: Füll- und Strichfarben bleiben exakt wie im Original; ein SVG mit currentColor erbt die
 * Textfarbe der Karte. Slot über dem Kartentitel bzw. der Schrittüberschrift, Größe aus „Icon-Größe“ (ku-icon--s … --xxl):
 * Karten 1.5/2/3/4/6rem, Schritte 1.25/1.75/2.75/3.75/5.5rem; XXL mobil (bis 767px) höchstens 4.5rem.
 * Abstand unten 0.75rem sichtbar: in den Info-Karten (Kartenkörper mit Kit-Abstand --card-gap) abzüglich dieses Abstands. */
:root :is(.ku-card__icon, .ku-schritt__icon) { display: block; flex: none; align-self: flex-start; width: 2rem; height: 2rem; margin: 0 0 0.75rem; line-height: 0; }
:root .ku-card__icon.ku-icon--s { width: 1.5rem; height: 1.5rem; }
:root .ku-card__icon.ku-icon--l { width: 3rem; height: 3rem; }
:root .ku-card__icon.ku-icon--xl { width: 4rem; height: 4rem; }
:root .ku-card__icon.ku-icon--xxl { width: 6rem; height: 6rem; }
:root .ku-schritt__icon { width: 1.75rem; height: 1.75rem; }
:root .ku-schritt__icon.ku-icon--s { width: 1.25rem; height: 1.25rem; }
:root .ku-schritt__icon.ku-icon--l { width: 2.75rem; height: 2.75rem; }
:root .ku-schritt__icon.ku-icon--xl { width: 3.75rem; height: 3.75rem; }
:root .ku-schritt__icon.ku-icon--xxl { width: 5.5rem; height: 5.5rem; }
@media (max-width: 767px) {
	:root :is(.ku-card__icon, .ku-schritt__icon).ku-icon--xxl { width: 4.5rem; height: 4.5rem; }
}
:root .ku-card--info .ku-card__body > :is(.ku-card__icon, .ku-schritt__icon) { margin-bottom: max(0px, calc(0.75rem - var(--card-gap, 0px))); }
:root :is(.ku-card__icon, .ku-schritt__icon) > svg { display: block; width: 100%; height: 100%; overflow: visible; }
/* Kontaktwege (ku_anfrage): ein hochgeladenes Icon ersetzt das automatische Symbol im Chip, Größe wie das Symbol (20 px),
 * Farben wie im Original. */
:root .ku-anfrage__icon > svg { width: 20px; height: 20px; }

/* Elementor-Editor */
/* Einblendungen und Sequenzen im Editor sofort im Endzustand: Elementor rendert Widgets im Vorschau-Frame per JS neu, der
 * IntersectionObserver der Kit-Laufzeit (Modul bewegung) erreicht die neuen Knoten nie — sie blieben auf opacity:0.
 * Werte wie der prefers-reduced-motion-Block in ku-theme.css; die Pack-Fassung von bewegung.js setzt dort zusätzlich
 * is-in/seq-run und stellt Zähler (data-ku-countup) sofort auf ihren Zielwert. */
body.elementor-editor-active [data-ku-reveal] { opacity: 1 !important; transform: none !important; clip-path: none !important; transition: none !important; }
body.elementor-editor-active [data-ku-seq]:not([data-ku-seq=""]),
body.elementor-editor-active :is(.ku-hero, .ku-seitenkopf__inner) :is([class^="seq-"], [class*=" seq-"]) { animation: none !important; opacity: 1 !important; transform: none !important; clip-path: none !important; }
