/* JARZAVIA — WordPress-/Contact-Form-7-Anpassungen.
   Additiv: gleicht das CF7-Markup an das Original-Design an, ohne es zu verändern. */

/* CF7-Wrapper neutralisieren, damit .field-Layouts unverändert greifen */
.wpcf7-form-control-wrap { display: block; width: 100%; }

/* Validierungshinweise im Stil der Seite */
.wpcf7-not-valid-tip {
  display: block;
  margin-top: 6px;
  font-size: .85rem;
  color: #B4423A;
}
.wpcf7-form-control.wpcf7-not-valid { border-color: #B4423A; }

/* Statusmeldung unter dem Formular */
.wpcf7 form .wpcf7-response-output {
  margin: 18px 0 0;
  padding: 14px 16px;
  border: 1px solid var(--line, #D8DEE4);
  border-radius: 10px;
  font-size: .92rem;
}
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output {
  border-color: #E4C0BD;
  background: #FBF1F0;
  color: #8A2F28;
}
.wpcf7 form.sent .wpcf7-response-output { display: none; }
.wpcf7 form.init .wpcf7-response-output { display: none; }

/* Ladeindikator neben dem Absenden-Knopf */
.wpcf7-spinner { margin: 0 0 0 12px; vertical-align: middle; }

/* Einwilligung (acceptance) im Stil der .checkline */
.checkline .wpcf7-form-control-wrap { display: block; width: auto; flex: 1; }
.wpcf7-acceptance .wpcf7-list-item { margin: 0; display: block; }
.wpcf7-acceptance .wpcf7-list-item label {
  display: flex;
  gap: 11px;
  align-items: flex-start;
  font-family: inherit;
  text-transform: none;
  letter-spacing: 0;
  font-size: .92rem;
  color: var(--tx2, #4A5B68);
}
.wpcf7-acceptance input[type="checkbox"] {
  width: 20px; height: 20px; min-height: 20px; flex: 0 0 auto; margin-top: 2px;
}

/* Datei-Feld: Hinweistext unterhalb */
.wpcf7 input[type="file"] { padding: 11px 14px; }

/* Absenden-Knopf: identisch zu .btn .btn-p (Eingabeelement statt Link) */
.wpcf7-submit { width: auto; min-height: 52px; cursor: pointer; }

/* Admin-Bar nicht über den Header legen */
body.admin-bar .hdr { top: 32px; }
@media (max-width: 782px) { body.admin-bar .hdr { top: 46px; } }

/* ---------- Native Elementor-Elemente ----------
   Die Seiten bestehen aus Elementor-Containern, die die Original-CSS-Klassen
   tragen. Diese Brücken stellen sicher, dass Elementors Basis-Styles das
   Theme-Design nicht verändern. */

/* Sektions-Container erhalten den Original-Seitenabstand */
main section.e-con { padding: var(--sect) 0; }
main section.e-con.hero { padding: 0; }

/* Elementors Heading-Reset (margin:0/line-height:1) auf Theme-Werte zurückholen.
   Bewusst niedrige Spezifität (0,1,0), damit kontextuelle Regeln wie
   .hero h1 oder .promise h3 weiterhin gewinnen. */
.elementor-heading-title { margin: 0 0 .45em; line-height: 1.08; padding: 0; }

/* Bild-Widgets nicht zentrieren — das Theme layoutet selbst */
.elementor-widget-image { text-align: inherit; }

/* Bilder in festen Seitenverhältnis-Rahmen (.thumb 16:10, .refimg): das Widget
   absolut setzen, damit hohe Bilder den Rahmen nicht aufdrücken (object-fit cover) */
.thumb > .elementor-widget-image,
.refimg > .elementor-widget-image { position: absolute; inset: 0; }
.thumb > .elementor-widget-image img,
.refimg > .elementor-widget-image img { width: 100%; height: 100%; object-fit: cover; }

/* Kein Standard-Abstand zwischen Widgets — Abstände kommen aus dem Theme-CSS */
.elementor-widget:not(:last-child) { margin-block-end: 0; }

/* Flex-Container kollabieren keine Margins: die margin-bottom des letzten
   Absatzes zählte im Original (Block-Layout) NICHT zur Containerhöhe.
   Nur dort entfernen, wo der Container selbst einen größeren Abstand mitbringt
   (.sect-head: margin-bottom 26–44px) — sonst blieb die Absatz-Margin im
   Original als Abstand wirksam. */
main .e-con.sect-head > .elementor-widget-text-editor:last-child :is(p, ul, ol):last-child { margin-bottom: 0; }
main .e-con.sect-head > .elementor-widget-heading:last-child .elementor-heading-title { margin-bottom: 0; }

/* Geschwister-Margin-Collapse nachbilden: Absatz-margin-bottom vor einem
   Element mit größerem margin-top (z. B. .btns mit 26px) kollabierte im
   Original zu max(a,b) — zwischen Widgets addieren sie sich sonst. */
.elementor-widget:has(+ .elementor-widget .btns) :is(p, ul, ol):last-child { margin-bottom: 0; }
.elementor-widget:has(+ .elementor-widget .btns) ul:last-child > li:last-child { margin-bottom: 0; }
.elementor-widget:has(+ .elementor-widget .note) :is(p, ul, ol):last-child { margin-bottom: 0; }
/* Kleinere margin-tops (chipsrow 12px): kollabierten im Original immer in den
   größeren Vorgänger-Abstand — im Widget-Wrapper deshalb neutralisieren */
.elementor-widget > .chipsrow { margin-top: 0; }
/* Absatz vor einem .note-Container: margin kollabierte im Original in den note-margin-top */
.elementor-widget:has(+ .e-con.note) :is(p, ul, ol):last-child { margin-bottom: 0; }
/* Absatz vor "Was schwierig war"-Überschrift (h4.hard, margin-top 18px) */
.elementor-widget:has(+ .elementor-widget .hard) :is(p, ul, ol):last-child { margin-bottom: 0; }

/* Türen-Kacheln: der Hintergrund-Widget-Wrapper darf kein Flex-Item sein,
   und Elementors flex-direction:column darf die Zeilenausrichtung nicht kippen */
.door > .elementor-widget-html { position: absolute; inset: 0; }
main .e-con.door { flex-direction: row; }

/* Container, deren Theme-Klasse eine Flex-ZEILE ist (Elementor stellt Container
   standardmäßig auf column) */
main .e-con:is(.fl-top, .cc) { flex-direction: row; }
/* Breite der Kind-Widgets in Zeilen-Containern: Inhaltsbreite statt 100 % */
main .e-con:is(.fl-top, .cc) > .elementor-widget { width: auto; }

/* Karten: Preiszeile ans Kartenende (wie .price { margin-top:auto } im Flex-Body) */
.card .body > .elementor-widget-text-editor:last-child:has(.price) { margin-top: auto; }

/* Mehrspaltiger Fließtext: column-count wirkt nicht auf Flex-Container */
main .e-con.cols2 { display: block; }

/* Elementor-Editor: Elementor rendert den Inhalt nach dem Laden neu, wodurch
   die vom Scroll-Reveal-Script gesetzte .in-Klasse verloren geht und .rv-Elemente
   unsichtbar (opacity:0) blieben. Im Editor daher immer sichtbar. */
body.elementor-editor-active .rv { opacity: 1; transform: none; transition: none; }

/* Ehemalige Inline-Styles der statischen Seite */
.jz-mb0 { margin-bottom: 0; }
.jz-mb20 { margin-bottom: 20px; }
.jz-mt6 { margin-top: 6px; }
.jz-mt18 { margin-top: 18px; }
.jz-mt24 { margin-top: 24px; }
.jz-mt34 { margin-top: 34px; }
.jz-cursor-default { cursor: default; }
.jz-card-navy { background: #12405F; border-color: #2A5B7D; }
.jz-card-steel { border-color: var(--steel); border-width: 2px; }
