/*
Theme Name: RDM Child
Description: Child Theme for Divi by RD Media
Version: 1.0.0
Author: RD Media
Author URI: https://robindoerr.de
Theme URI: 
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Template: Divi
*/

/* =========================================================================
   INHALT
   01  Variablen
   02  Global: Seitenrahmen, Scrollleiste, Überschriften mobil, Nach-oben-Button
   03  Buttons: kein Hover auf Touch-Geräten
   04  Header-Leiste (Logo · Menü-Button · Telefon)
   05  Overlay-Menü
   06  Hero / Bento-Slider (Startseite + Unterseiten)
   07  Imagefilm-Sektion (Startseite)
   08  Zeilen-Layouts (alle Seiten)
   09  Startseite: "Das können wir" – Akkordeon mobil als Karten
   10  Startseite: Leistungs-Laufband
   11  Mobil: einheitliche Sektionsbreite
   12  Footer
   13  Tabellen in Textmodulen
   14  Sonstiges
   15  Schriften lokal (Playfair Display, Georama)
   16  Scroll-Einblendung der Sektionen
   17  Altlasten aus Woody-Snippet 268
   18  Unterseiten-Bausteine (Bildformate, gleich hohe Karten, Listen)
   19  Seiten-Button "Termin vereinbaren" (rechts, mittig)
   20  Karriere: Stellenkarten + gestaffeltes Einblenden
   21  Coming-Soon-Seite
   ========================================================================= */


/* =========================================================================
   01  Variablen
   ========================================================================= */
:root {
	--pw-gap: clamp(8px, 1vw, 14px);                  /* Außenrand Header, Hero, Video, Sektionen (mobil siehe unten) */
	--pw-bar: clamp(64px, 6.45vw, 80px);              /* Höhe der weißen Header-Leiste */
	--pw-hdr-h: calc(var(--pw-bar) + 2 * var(--pw-gap));
	--pw-ink: var(--gcid-primary-color, #2E4057);     /* Navy = globale Textfarbe */
	--pw-peach: #E9B49A;
	--pw-ease-io: cubic-bezier(.645, .045, .355, 1);  /* power3.inOut wie im Slider-Revolution-Original */
	--pw-ease-out: cubic-bezier(.22, 1, .36, 1);
}
/* Mobil: einheitlich 16px Außenrand für Header, Hero, Video und alle Sektionen */
@media (max-width: 767px) {
	:root { --pw-gap: 16px; }
}


/* =========================================================================
   02  Global
   ========================================================================= */
/* Sticky (Imagefilm) braucht einen Seiten-Container ohne eigenen Scrollbereich.
   overflow-x:clip schneidet seitlich ab, erzeugt aber – anders als hidden – keinen Scroll-Container. */
#page-container { overflow-x: clip !important; overflow-y: visible !important; }
body { overflow-x: clip; }

/* Scrollleiste behält ihren Platz, auch wenn das Overlay-Menü html{overflow:hidden} setzt –
   sonst springt die Seite samt fixiertem Header beim Öffnen/Schließen. */
html { scrollbar-gutter: stable; }

/* Überschriften in Textmodulen: Desktop-Größe 50px ist auf 375px Breite zu groß */
@media (max-width: 767px) {
	#et-main-area .et_pb_text h1 { font-size: clamp(32px, 9.6vw, 40px) !important; line-height: 1.1 !important; }
	#et-main-area .et_pb_text h2 { font-size: clamp(28px, 8.4vw, 36px) !important; line-height: 1.15 !important; }
}

/* Divi "Nach oben"-Button vorerst aus (dauerhaft: Divi → Theme-Optionen → Back To Top Button) */
.et_pb_scroll_top { display: none !important; }


/* =========================================================================
   03  Buttons: kein Hover auf Touch-Geräten
   iOS/Android halten :hover nach dem Tippen fest. Hier wird der Hover-Zustand
   pro Preset auf den Normalzustand zurückgesetzt (Farben siehe Divi-Presets).
   ========================================================================= */
@media (hover: none) {
	html body #page-container .et_pb_section a.et_pb_button:hover { padding-left: 1em !important; padding-right: 1em !important; }
	html body #page-container .et_pb_section a.et_pb_button:hover::after { opacity: 0 !important; }
	/* Preset "Button Navy" (= Standard-Preset, rendert auch als ...--default) */
	html body #page-container .et_pb_section a.preset--module--divi-button--d63b402b-be09-45c4-afe8-72c26a2f062a:hover,
	html body #page-container .et_pb_section a.preset--module--divi-button--default:hover {
		background-color: var(--gcid-primary-color) !important; border-color: var(--gcid-primary-color) !important; color: #fff !important;
	}
	/* Preset "Button Peach" */
	html body #page-container .et_pb_section a.preset--module--divi-button--7jxfjx4dv4:hover {
		background-color: var(--gcid-secondary-color) !important; border-color: var(--gcid-secondary-color) !important; color: var(--gcid-primary-color) !important;
	}
	/* Preset "Button Hell" */
	html body #page-container .et_pb_section a.preset--module--divi-button--gvnpkjaafl:hover {
		background-color: #fff !important; border-color: #fff !important; color: var(--gcid-primary-color) !important;
	}
	/* Hero-Pfeile bleiben Peach mit Navy-Chevron */
	html body #page-container .pw-hero a.et_pb_button.pw-prev:hover,
	html body #page-container .pw-hero a.et_pb_button.pw-next:hover { background-color: #E9B49A !important; }
	html body #page-container .pw-hero a.et_pb_button.pw-prev:hover { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15 5l-7 7 7 7' fill='none' stroke='%232E4057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important; }
	html body #page-container .pw-hero a.et_pb_button.pw-next:hover { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 5l7 7-7 7' fill='none' stroke='%232E4057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important; }
}


/* =========================================================================
   04  Header-Leiste (Theme-Builder-Header, Layout 61)
   Maße aus dem Slider-Revolution-Original, skaliert auf das 1240px-Raster.
   JS (Overlay, Smart Sticky, Scroll-Einblendung, Hero-Loops) im Code-Modul "Header · Logik (JS) …".
   ========================================================================= */
/* Vergleichsseite mit altem Slider Revolution bringt eigenen Header mit */
body.page-id-458 .et-l--header { display: none !important; }

/* Smart Sticky: fixed statt sticky (Divi setzt overflow auf #page-container/body, daran scheitert sticky).
   Klassen pw-is-scrolled / pw-is-hidden setzt das Header-JS. */
.et-l--header {
	position: fixed;
	top: var(--wp-admin--admin-bar--height, 0px);
	left: 0;
	right: 0;
	z-index: 1000;
	transition: transform .45s var(--pw-ease-io);
}
body.et-tb-has-header:not(.page-id-458) #et-main-area { padding-top: var(--pw-hdr-h); }
.et-l--header.pw-is-hidden { transform: translate3d(0, -110%, 0); }

.pw-header.et_pb_section { padding: var(--pw-gap) !important; background: transparent !important; }
.pw-header .et_pb_module { margin: 0 !important; }
.pw-header-code { display: none !important; }

/* Weiße Leiste: Logo | Menü-Button | Telefon */
.pw-header .pw-bar.et_pb_row {
	display: grid !important;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	width: 100% !important;
	max-width: none !important;
	height: var(--pw-bar);
	margin: 0 !important;
	padding: 0 clamp(14px, 1.6vw, 20px) !important;
	background: #fff;
	border-radius: 8px;
	transition: box-shadow .3s ease;
}
.et-l--header.pw-is-scrolled .pw-bar.et_pb_row { box-shadow: 0 8px 30px rgba(19, 47, 64, .08); }
.pw-header .pw-bar > .et_pb_column { width: auto !important; margin: 0 !important; }
.pw-header .pw-bar-right { justify-self: end; text-align: right; }

.pw-logo {
	display: inline-flex;
	align-items: center;
	gap: clamp(6px, .8vw, 12px);
	font-family: 'Playfair Display', serif;
	font-weight: 700;
	font-size: clamp(22px, 2.42vw, 30px);
	line-height: 1;
	color: var(--pw-ink) !important;
	white-space: nowrap;
}
.pw-logo img { width: clamp(40px, 4.84vw, 60px); height: auto; transition: transform .5s var(--pw-ease-out); }
.pw-logo:hover img { transform: rotate(-8deg) scale(1.05); }

.pw-phone {
	font-family: 'Georama', sans-serif;
	font-weight: 500;
	font-size: clamp(16px, 1.61vw, 20px);
	letter-spacing: -.05em;
	color: var(--pw-ink) !important;
	transition: color .25s ease;
}
.pw-phone:hover { color: var(--gcid-secondary-color, #E9B49A) !important; }

/* Menü-Button: 3 Linien, wird beim Öffnen zum X */
.pw-burger {
	position: relative;
	display: block;
	width: clamp(56px, 6vw, 80px);
	height: clamp(44px, 4.5vw, 56px);
	padding: 0;
	border: 0;
	background: none;
	color: var(--pw-ink);
	cursor: pointer;
}
.pw-burger span {
	position: absolute;
	inset: 0;
	width: clamp(34px, 3.63vw, 45px);
	height: 2px;
	margin: auto;
	background: currentColor;
	border-radius: 2px;
	transition: transform .4s var(--pw-ease-io), opacity .3s ease;
}
.pw-burger span:nth-child(1) { transform: translateY(-8px); }
.pw-burger span:nth-child(3) { transform: translateY(8px); }
.pw-burger:hover span:nth-child(1) { transform: translateY(-10px); }
.pw-burger:hover span:nth-child(2) { transform: scaleX(.55); }
.pw-burger:hover span:nth-child(3) { transform: translateY(10px); }
.pw-menu-open .pw-burger span:nth-child(1) { transform: rotate(45deg) scaleX(.8); }
.pw-menu-open .pw-burger span:nth-child(2) { transform: scaleX(0); opacity: 0; }
.pw-menu-open .pw-burger span:nth-child(3) { transform: rotate(-45deg) scaleX(.8); }
.pw-menu-open .pw-burger:hover span:nth-child(1) { transform: rotate(135deg) scaleX(.8); }
.pw-menu-open .pw-burger:hover span:nth-child(3) { transform: rotate(45deg) scaleX(.8); }
.pw-burger:focus-visible { outline: 2px solid var(--pw-peach); outline-offset: 4px; border-radius: 6px; }

/* Mobil: Telefon wandert ins Overlay, Menü-Button nach rechts.
   Leiste bekommt eigene (kleinere) Außen-/Innenabstände statt --pw-gap,
   damit zwischen Logo und Burger mehr Luft bleibt (beide Seiten weiterhin gleich). */
@media (max-width: 767px) {
	.pw-header.et_pb_section { padding: 12px !important; }
	/* column-gap explizit statt Divis eigenem 5.5%-Gap: der volle freigewordene Platz aus der
	   Innen-/Außenabstands-Reduktion landete sonst im 1fr-Logo-Track statt im sichtbaren Abstand. */
	.pw-header .pw-bar.et_pb_row { grid-template-columns: 1fr auto; column-gap: 24px !important; padding: 0 10px !important; }
	.pw-header .pw-bar-right { display: none !important; }
}


/* =========================================================================
   05  Overlay-Menü (Zeile "Overlay-Menü" im Header-Layout)
   Navy 95 % + 5px Blur unterhalb der Leiste. Links Menü, rechts Kontaktspalte.
   Desktop: Menü "Haupt" (lange Titel), Tablet/Mobil: Menü "Haupt (kurz, Tablet/Mobil)" (Divi-Sichtbarkeit).
   ========================================================================= */
html.pw-menu-open { overflow: hidden; }

.pw-header .pw-menu.et_pb_row {
	position: fixed !important;
	z-index: 999;
	top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--pw-hdr-h));
	right: var(--pw-gap);
	bottom: var(--pw-gap);
	left: var(--pw-gap);
	display: flex !important;
	align-items: flex-end;
	justify-content: space-between;
	gap: 40px;
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 40px clamp(28px, 8vw, 100px) clamp(28px, 8vw, 100px) !important;
	overflow-y: auto;
	background: rgba(19, 47, 64, .95);
	-webkit-backdrop-filter: blur(5px);
	backdrop-filter: blur(5px);
	border-radius: 8px;
	opacity: 0;
	visibility: hidden;
	transition: opacity .35s var(--pw-ease-io), visibility 0s linear .35s;
}
.pw-menu-open .pw-header .pw-menu.et_pb_row {
	opacity: 1;
	visibility: visible;
	transition: opacity .5s var(--pw-ease-io), visibility 0s;
}
.pw-header .pw-menu > .et_pb_column { width: auto !important; margin: 0 !important; }

/* Divi-Menümodul als große Linkliste (auch mobil, ohne Divi-Hamburger) */
.pw-menu .et_pb_menu,
.pw-menu .et_pb_menu_inner_container,
.pw-menu .et_pb_menu__wrap { background: transparent !important; padding: 0 !important; }
.pw-menu .et_pb_menu__menu { display: block !important; }
.pw-menu .et_mobile_nav_menu { display: none !important; }
.pw-menu .et-menu {
	display: flex !important;
	flex-direction: column;
	align-items: flex-start;
	margin: 0 !important;
	padding: 0 !important;
}
.pw-menu .et-menu > li {
	margin: 0 !important;
	padding: 0 !important;
	opacity: 0;
	transform: translate3d(0, 40px, 0);
	transition: opacity .2s ease, transform .2s ease;
}
.pw-menu .et-menu > li > a {
	display: block;
	padding: 0 0 12px !important;
	font-family: 'Playfair Display', serif !important;
	font-weight: 600 !important;
	font-size: clamp(40px, 4.84vw, 60px) !important;
	line-height: 1.08 !important;
	letter-spacing: -.05em;
	color: rgba(242, 242, 242, .8) !important;
	opacity: 1 !important;
	transition: color .3s ease, transform .4s var(--pw-ease-out);
}
.pw-menu .et-menu > li > a:hover,
.pw-menu .et-menu > li > a:focus-visible { color: var(--pw-peach) !important; transform: translateX(10px); }
.pw-menu .et-menu > li.current-menu-item > a { color: var(--pw-peach) !important; }

/* Desktop: lange Menünamen kleiner und luftiger */
@media (min-width: 981px) {
	.pw-menu .pw-menu-nav--long .et-menu > li > a {
		font-size: clamp(32px, 3.4vw, 46px) !important;
		line-height: 1.2 !important;
		padding: 0 0 clamp(14px, 1.4vw, 20px) !important;
	}
}

/* Gestaffeltes Einblenden: Links nacheinander, Kontaktspalte zuletzt */
.pw-menu-open .pw-menu .et-menu > li {
	opacity: 1;
	transform: none;
	transition: opacity .6s var(--pw-ease-out), transform .8s var(--pw-ease-out);
}
.pw-menu-open .pw-menu .et-menu > li:nth-child(1) { transition-delay: .12s; }
.pw-menu-open .pw-menu .et-menu > li:nth-child(2) { transition-delay: .18s; }
.pw-menu-open .pw-menu .et-menu > li:nth-child(3) { transition-delay: .24s; }
.pw-menu-open .pw-menu .et-menu > li:nth-child(4) { transition-delay: .30s; }
.pw-menu-open .pw-menu .et-menu > li:nth-child(5) { transition-delay: .36s; }
.pw-menu-open .pw-menu .et-menu > li:nth-child(6) { transition-delay: .42s; }

/* Kontaktspalte: Adresse (+ Telefon mobil) oben, darunter Doctolib- und Instagram-Icon.
   Grid-Breite = Adressbreite; die beiden Icons sitzen bündig links und rechts darunter. */
.pw-menu .pw-menu-aside {
	display: grid !important;
	grid-template-columns: auto auto;
	justify-content: space-between;
	align-items: center;
	text-align: right;
	opacity: 0;
	transform: translate3d(0, 20px, 0);
	transition: opacity .2s ease, transform .2s ease;
}
.pw-menu-open .pw-menu .pw-menu-aside {
	opacity: 1;
	transform: none;
	transition: opacity .6s var(--pw-ease-out) .4s, transform .8s var(--pw-ease-out) .4s;
}
.pw-menu-aside > .et_pb_module:first-child { grid-column: 1 / -1; justify-self: end; }
.pw-menu-aside p { padding: 0 0 20px !important; }
.pw-menu-aside a {
	font-family: 'Georama', sans-serif;
	font-weight: 500;
	font-size: clamp(17px, 1.61vw, 20px);
	line-height: 1.5;
	letter-spacing: -.05em;
	color: rgba(242, 242, 242, .8) !important;
	transition: color .3s ease;
}
.pw-menu-aside a:hover { color: var(--pw-peach) !important; }
.pw-menu-aside .pw-aside-phone { display: none; }

/* Doctolib-Icon (Textmodul "Overlay · Termin"): SVG als Maske, übernimmt die Linkfarbe – normal hell, Hover Peach.
   Gleiche Größe wie das Instagram-Icon. Datei: Mediathek doctolib-icon.svg */
.pw-menu-termin.et_pb_text { margin: 0 !important; padding: 0 !important; justify-self: start; }
.pw-menu-termin p { padding: 0 !important; }
.pw-menu-aside a.pw-termin { display: block; line-height: 0; }
.pw-doctolib {
	display: block;
	width: clamp(34px, 4vw, 50px);
	height: clamp(34px, 4vw, 50px);
	background: currentColor;
	-webkit-mask: url("/wp-content/uploads/2026/10/doctolib-icon.svg") center / contain no-repeat;
	        mask: url("/wp-content/uploads/2026/10/doctolib-icon.svg") center / contain no-repeat;
	transition: transform .4s var(--pw-ease-out);
}
.pw-menu-aside a.pw-termin:hover .pw-doctolib { transform: scale(1.08); }

/* Instagram-Icon ohne Divi-Kachel */
.pw-menu-social.et_pb_social_media_follow { display: flex; justify-content: flex-end; justify-self: end; margin: 0 !important; padding: 0 !important; }
.pw-menu-social li,
.pw-menu-social a.icon { margin: 0 !important; background: transparent !important; border-radius: 0 !important; }
.pw-menu-social a.icon { width: auto !important; height: auto !important; }
.pw-menu-social a.icon::before {
	position: static !important;
	display: block;
	width: auto !important;
	height: auto !important;
	font-size: clamp(34px, 4vw, 50px) !important;
	line-height: 1 !important;
	color: rgba(242, 242, 242, .8) !important;
	transition: color .3s ease, transform .4s var(--pw-ease-out);
}
.pw-menu-social a.icon:hover::before { color: var(--pw-peach) !important; transform: scale(1.08); }

/* Mobil: Inhalte untereinander. Kontaktspalte spannt die volle Panel-Breite auf
   (sonst schrumpft sie auf Inhaltsbreite und "Andocken rechts unten" geht nicht):
   Adresse+Telefon unten links, Doctolib/Instagram übereinander unten rechts, größer. */
@media (max-width: 767px) {
	.pw-header .pw-menu.et_pb_row {
		flex-direction: column;
		align-items: flex-start;
		justify-content: flex-end;
		gap: 28px;
		padding: 28px !important;
	}
	/* Kleiner + mehr Luft zwischen den Punkten, seit die Labels länger geworden sind
	   ("Was wir können" etc.) – geprüft per Breiten-Messung, bricht bei keinem Label um. */
	.pw-menu .et-menu > li > a { font-size: clamp(26px, 8vw, 34px) !important; padding-bottom: 20px !important; }
	.pw-header .pw-menu > .et_pb_column { width: 100% !important; }
	.pw-menu .pw-menu-aside {
		width: 100%;
		grid-template-columns: 1fr auto;
		grid-template-rows: auto auto;
		justify-content: space-between;
		align-items: end;
		gap: 10px;
		text-align: left;
	}
	.pw-menu-aside > .et_pb_module:first-child {
		grid-column: 1;
		grid-row: 1 / span 2;
		justify-self: start;
		align-self: end;
	}
	.pw-menu-termin.et_pb_text { grid-column: 2; grid-row: 1; justify-self: end !important; }
	.pw-menu-social.et_pb_social_media_follow { grid-column: 2; grid-row: 2; justify-self: end !important; }
	.pw-doctolib { width: 46px !important; height: 46px !important; }
	.pw-menu-social a.icon::before { font-size: 46px !important; }
	.pw-menu-aside .pw-aside-phone { display: block; }
	/* Abstand Adresse→Telefon = Abstand zwischen den Icons (10px); Telefon ohne
	   eigenen Unterabstand, damit seine Unterkante mit dem Instagram-Icon fluchtet. */
	.pw-menu-aside .pw-aside-addr { padding-bottom: 10px !important; }
	.pw-menu-aside .pw-aside-phone { padding-bottom: 0 !important; }
}

@media (prefers-reduced-motion: reduce) {
	.et-l--header,
	.pw-burger span,
	.pw-header .pw-menu.et_pb_row,
	.pw-menu .et-menu > li,
	.pw-menu .pw-menu-aside { transition: none !important; }
}


/* =========================================================================
   06  Hero / Bento-Slider (Startseite "Hero · Bento-Slider"; Unterseiten: statische Kopie einer Slide, gleiche Höhe)
   Layout + Animation. Schrift, Farben, Abstände, Bilder, Bildposition und Weißverlauf
   kommen aus den Divi-Modulen. JS: Slider-Logik im Code-Modul der Startseite, Video-Loops im Header-JS.
   ========================================================================= */
.pw-hero {
	--pw-ease: cubic-bezier(.455, .03, .515, .955);
	--pw-arrow: 48px;                     /* = Höhe des CTA-Buttons (Preset), auf allen Geräten */
	--pw-glow: min(900px, 72.6vw);
	position: relative;
	overflow: hidden;
	padding: 0 var(--pw-gap, 10px) var(--pw-gap, 10px) !important;
}
.pw-hero .pw-hero-code { display: none !important; }

/* Slides: Bildschirmhöhe minus Header (inkl. Admin-Bar), unten gleicher Rand wie seitlich */
.pw-hero .pw-hero-slide {
	display: none !important;
	grid-template-columns: 24fr 50fr 24fr;
	gap: var(--pw-gap, 10px);
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
	height: calc(100vh - var(--pw-hdr-h, 100px) - var(--pw-gap, 10px) - var(--wp-admin--admin-bar--height, 0px));
	height: calc(100svh - var(--pw-hdr-h, 100px) - var(--pw-gap, 10px) - var(--wp-admin--admin-bar--height, 0px));
	min-height: 480px;
}
.pw-hero .pw-hero-slide.is-active,
.pw-hero .pw-hero-slide.is-leaving { display: grid !important; }
/* width:auto – sonst gewinnt width:100% gegen "right" und der Slide ragt beim Wechsel rechts heraus */
.pw-hero .pw-hero-slide.is-leaving { position: absolute; top: 0; left: var(--pw-gap, 10px); right: var(--pw-gap, 10px); width: auto !important; z-index: 1; pointer-events: none; }
.pw-hero .pw-hero-slide.is-active { position: relative; z-index: 2; }
.pw-hero .pw-hero-slide > .et_pb_column { width: auto !important; margin: 0 !important; display: flex; flex-direction: column; gap: var(--pw-gap, 10px); min-height: 0; }

/* Kacheln – Hintergrund (Bild, Größe, Position) bewusst NICHT hier, sonst wird die Divi-Einstellung überschrieben */
.pw-hero .pw-tile { flex: 1 1 0; min-height: 0; margin: 0 !important; overflow: hidden; }
.pw-hero .pw-tile-main,
.pw-hero .pw-tile-text { display: flex; flex-direction: column; justify-content: flex-end; }
.pw-hero .pw-tile-text { justify-content: center; }
/* Textlink in Kacheln ("… →"): Navy, Regular (Divi-Modul setzt 600), Hover-Linie wie Footer-Menü in Linkfarbe */
.pw-hero .pw-tile-link a { position: relative; display: inline-block; padding-bottom: 4px; color: var(--pw-ink); font-weight: 400 !important; text-decoration: none; }
.pw-hero .pw-tile-link a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 2px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 320ms cubic-bezier(.22, .61, .36, 1);
}
.pw-hero .pw-tile-link a:hover::after,
.pw-hero .pw-tile-link a:focus-visible::after { transform: scaleX(1); }

/* CTA links, Pfeile rechts – eine Zeile */
.pw-hero .pw-hero-actions { display: flex !important; flex-direction: row !important; flex-wrap: nowrap; justify-content: space-between; align-items: center; gap: 12px; }
.pw-hero .pw-hero-actions > * { margin: 0 !important; width: auto !important; }
.pw-hero a.pw-hero-cta { white-space: nowrap; }
.pw-hero .pw-hero-arrows { display: flex !important; flex-direction: row !important; gap: clamp(6px, .8vw, 10px); flex-shrink: 0; }
.pw-hero .pw-hero-arrows > * { margin: 0 !important; flex: 0 0 var(--pw-arrow) !important; width: var(--pw-arrow) !important; }

/* Pfeile: Chevron als SVG-Hintergrund (Navy, Hover weiß); Kreis + Farben aus Divi */
body #page-container .pw-hero a.et_pb_button.pw-prev,
body #page-container .pw-hero a.et_pb_button.pw-next {
	display: block !important;
	width: var(--pw-arrow) !important;
	height: var(--pw-arrow) !important;
	min-width: 0 !important;
	max-width: none !important;
	padding: 0 !important;
	font-size: 0 !important;
	line-height: 0 !important;
	color: transparent !important;
	background-repeat: no-repeat !important;
	background-position: center !important;
	background-size: 40% !important;
}
body #page-container .pw-hero a.et_pb_button.pw-prev { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15 5l-7 7 7 7' fill='none' stroke='%232E4057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important; }
body #page-container .pw-hero a.et_pb_button.pw-next { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 5l7 7-7 7' fill='none' stroke='%232E4057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important; }
body #page-container .pw-hero a.et_pb_button.pw-prev:hover { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15 5l-7 7 7 7' fill='none' stroke='%23FFFFFF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important; }
body #page-container .pw-hero a.et_pb_button.pw-next:hover { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 5l7 7-7 7' fill='none' stroke='%23FFFFFF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important; }
body #page-container .pw-hero a.et_pb_button.pw-prev::before,
body #page-container .pw-hero a.et_pb_button.pw-next::before,
.pw-hero a.pw-prev::after,
.pw-hero a.pw-next::after { display: none !important; }

/* Animation erst starten, wenn Bilder + Schriften von Slide 1 bereit sind (kein Ruckeln beim Laden).
   Unterseiten: Klasse is-ready steht fest an der Sektion → Kacheln fliegen direkt beim Laden ein. */
.pw-hero:not(.is-ready) .is-active .pw-tile { opacity: 0; }
.pw-hero .is-active .pw-tile,
.pw-hero .is-leaving .pw-tile { will-change: transform, opacity; }
.pw-hero.is-ready .is-active .pw-tile { animation: pwTileIn 1s var(--pw-ease) both; }
.pw-hero .is-active > .et_pb_column:nth-child(1) .pw-tile:nth-child(1) { animation-delay: 50ms; }
.pw-hero .is-active > .et_pb_column:nth-child(1) .pw-tile:nth-child(2) { animation-delay: 100ms; }
.pw-hero .is-active > .et_pb_column:nth-child(2) .pw-tile { animation-delay: 150ms; }
.pw-hero .is-active > .et_pb_column:nth-child(3) .pw-tile:nth-child(1) { animation-delay: 200ms; }
.pw-hero .is-active > .et_pb_column:nth-child(3) .pw-tile:nth-child(2) { animation-delay: 250ms; }
.pw-hero.is-ready .is-active .pw-tile-main > * { animation: pwTextIn 1s var(--pw-ease) both; }
.pw-hero .is-active .pw-tile-main > *:nth-child(1) { animation-delay: 180ms; }
.pw-hero .is-active .pw-tile-main > *:nth-child(2) { animation-delay: 240ms; }
.pw-hero .is-active .pw-tile-main > *:nth-child(3) { animation-delay: 310ms; }
.pw-hero .is-leaving .pw-tile { animation: pwTileOut .8s cubic-bezier(.645, .045, .355, 1) both; }
@keyframes pwTileIn  { from { transform: translate3d(110vw, 0, 0); } to { transform: translate3d(0, 0, 0); } }
@keyframes pwTextIn  { from { transform: translate3d(100%, 0, 0); opacity: 0; } to { transform: translate3d(0, 0, 0); opacity: 1; } }
@keyframes pwTileOut { to { transform: scale(.8) translate3d(12%, 12%, 0); opacity: 0; } }

/* Cursor-Licht wie im Original (Add-on Mousetrap): weißer Radialverlauf, Mischmodus Overlay, nur Desktop mit Maus */
.pw-hero-glow { position: absolute; left: 0; top: 0; z-index: 5; width: var(--pw-glow); height: var(--pw-glow); margin: calc(var(--pw-glow) / -2) 0 0 calc(var(--pw-glow) / -2); pointer-events: none; mix-blend-mode: overlay; will-change: transform; }
.pw-hero-glow::before { content: ""; position: absolute; inset: 0; border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.3) 0%, rgba(255,255,255,0) 59%); transform: scale(0); opacity: 0; }
.pw-hero.is-ready .pw-hero-glow::before { animation: pwGlowIn 1s var(--pw-ease) .88s both; }
@keyframes pwGlowIn { to { transform: scale(1); opacity: 1; } }

/* Stille Video-Loops in Kacheln mit data-loop: Video per JS eingefügt, blendet erst ein, wenn es läuft */
.pw-hero [data-loop] { position: relative; overflow: hidden; }
.pw-tile-loop { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .6s ease; pointer-events: none; border-radius: inherit; }
.pw-tile-loop.is-on { opacity: 1; }

/* Tablet/Mobil: nur Hauptkachel, wie im Original */
@media (max-width: 980px) {
	.pw-hero .pw-hero-slide { grid-template-columns: minmax(0, 1fr); min-height: 420px; }
	.pw-hero .pw-hero-side { display: none !important; }
}
/* Mobil: Preset-CTA (20px) + Pfeile passen nicht in eine Zeile – CTA im Hero kompakter, ohne Icon */
@media (max-width: 767px) {
	.pw-hero .pw-hero-actions { gap: 10px; }
	.pw-hero .pw-hero-arrows { gap: 6px; }
	body #page-container .pw-hero a.et_pb_button.pw-hero-cta,
	body #page-container .pw-hero a.et_pb_button.pw-hero-cta:hover { font-size: 15px !important; line-height: 1.5 !important; padding: 11px 18px !important; }
	body #page-container .pw-hero a.et_pb_button.pw-hero-cta::after { display: none !important; }
}
@media (prefers-reduced-motion: reduce) {
	.pw-hero * { animation: none !important; }
	.pw-hero:not(.is-ready) .is-active .pw-tile { opacity: 1; }
}

/* Visual Builder (Divi 5 setzt html.et-vb-app-ancestor): alle Slides statisch untereinander */
html.et-vb-app-ancestor .pw-hero .pw-hero-slide { display: grid !important; position: relative !important; height: 720px; }
html.et-vb-app-ancestor .pw-hero .pw-hero-slide + .pw-hero-slide { margin-top: var(--pw-gap, 10px) !important; }
html.et-vb-app-ancestor .pw-hero .pw-tile,
html.et-vb-app-ancestor .pw-hero .pw-tile-main > * { opacity: 1 !important; animation: none !important; transform: none !important; }
html.et-vb-app-ancestor .pw-hero .pw-hero-code { display: block !important; }
html.et-vb-app-ancestor .pw-hero-glow { display: none !important; }


/* =========================================================================
   07  Imagefilm-Sektion (Startseite, #praxis-video)
   Desktop: Karte → Vollbild (mit schmalem Rand) → Karte beim Scrollen.
   Mobil / reduzierte Bewegung: einfache Karte. Logik im Code-Modul "Imagefilm · Player".
   ========================================================================= */
.pw-film-section.et_pb_section { margin: 0 !important; padding: 0 !important; height: auto !important; min-height: 0 !important; background: none !important; border-radius: 0 !important; overflow: visible !important; transform: none !important; opacity: 1 !important; }
.pw-film-section .et_pb_row,
.pw-film-section .et_pb_column { width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; }
.pw-film-section .et_pb_code,
.pw-film-section .et_pb_code_inner { margin: 0 !important; padding: 0 !important; }

.pw-film { --pw-film-top: var(--pw-hdr-h, 96px); position: relative; }
.pw-film-stage { position: relative; margin: var(--pw-gap, 10px); aspect-ratio: 16 / 9; border-radius: 15px; overflow: hidden; background: #132F40; }
.pw-film-frame { position: absolute; inset: 0; cursor: pointer; will-change: clip-path; }
.pw-film-frame video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.pw-film-main { opacity: 0; visibility: hidden; transition: opacity .4s ease; background: #000; object-fit: contain !important; }
.pw-film.is-playing .pw-film-main { opacity: 1; visibility: visible; }
.pw-film.is-playing .pw-film-frame { cursor: auto; }

/* Desktop-Effekt: lange Scrollstrecke, Bühne klebt, Clip-Path wächst (JS) */
.pw-film.pw-film--fx { height: 260vh; }
.pw-film.pw-film--fx .pw-film-stage { position: sticky; top: 0; height: 100vh; height: 100svh; margin: 0; aspect-ratio: auto; border-radius: 0; background: none; }
.pw-film.pw-film--fx .pw-film-frame { background: #132F40; }

/* Bildunterschrift, Verlauf, Play-Button "Film ab" */
.pw-film-caption { position: absolute; left: clamp(18px, 3vw, 40px); bottom: clamp(16px, 3vw, 36px); z-index: 2; font-family: 'Georama', sans-serif; font-size: clamp(14px, 1.2vw, 17px); color: #fff; letter-spacing: .02em; text-shadow: 0 1px 12px rgba(0,0,0,.35); pointer-events: none; transition: opacity .3s; }
.pw-film-caption span { display: block; font-family: 'Playfair Display', serif; font-weight: 600; font-size: clamp(24px, 2.6vw, 38px); letter-spacing: -.02em; margin-bottom: 2px; }
.pw-film-frame::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(0deg, rgba(19,47,64,.45) 0%, rgba(19,47,64,0) 40%); transition: opacity .3s; }
.pw-film-play { position: absolute; left: 50%; top: 50%; z-index: 3; width: clamp(110px, 10vw, 140px); aspect-ratio: 1; margin: 0; padding: 0; border: 0; border-radius: 50%; transform: translate(-50%, -50%); background: var(--gcid-secondary-color, #E9B49A); color: var(--gcid-primary-color, #2E4057); font-family: 'Georama', sans-serif; font-weight: 500; font-size: clamp(17px, 1.4vw, 20px); cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; box-shadow: 0 12px 40px rgba(19,47,64,.25); transition: transform .35s var(--pw-ease-out), opacity .3s, background .25s; }
.pw-film-play::before { content: ""; width: 0; height: 0; border-style: solid; border-width: 9px 0 9px 15px; border-color: transparent transparent transparent currentColor; margin-left: 4px; }
.pw-film-play:hover { transform: translate(-50%, -50%) scale(1.06); }
.pw-film-play:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
.pw-film.is-playing .pw-film-play,
.pw-film.is-playing .pw-film-caption,
.pw-film.is-playing .pw-film-frame::after { opacity: 0; pointer-events: none; }

/* Cursor-Ring "Film ab" (nur Maus) */
.pw-film-cursor { position: fixed; left: 0; top: 0; z-index: 1001; width: 110px; height: 110px; margin: -55px 0 0 -55px; border: 1.5px solid rgba(255,255,255,.9); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-family: 'Georama', sans-serif; font-weight: 500; font-size: 16px; letter-spacing: .02em; background: rgba(255,255,255,.1); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); pointer-events: none; opacity: 0; scale: .6; transition: opacity .25s ease, scale .35s var(--pw-ease-out); }
.pw-film.has-cursor .pw-film-cursor { opacity: 1; scale: 1; }
@media (hover: hover) and (pointer: fine) {
	.pw-film:not(.is-playing) .pw-film-frame { cursor: none; }
	.pw-film.has-cursor:not(.is-playing) .pw-film-play { opacity: 0; }
}

/* Visual Builder: Sektion statisch */
html.et-vb-app-ancestor .pw-film { height: auto !important; }
html.et-vb-app-ancestor .pw-film-stage { position: relative !important; height: auto !important; aspect-ratio: 16 / 9 !important; }


/* =========================================================================
   08  Zeilen-Layouts (alle Seiten)
   pw-row-center: zwei Spalten vertikal zentriert, nur Desktop.
   pw-row-stack:  Headline + Button; Desktop nebeneinander mittig, mobil untereinander.
   ========================================================================= */
@media (min-width: 981px) {
	.pw-row-center.et_pb_row { display: flex !important; align-items: center; }
	.pw-row-stack.et_pb_row { align-items: center !important; }
	.pw-row-stack .et_pb_text h1,
	.pw-row-stack .et_pb_text h2 { padding-bottom: 0 !important; }
}
@media (max-width: 767px) {
	.pw-row-stack.et_pb_row { display: flex !important; flex-direction: column !important; align-items: stretch !important; }
	.pw-row-stack.et_pb_row > .et_pb_column { width: 100% !important; margin: 0 0 20px !important; }
	.pw-row-stack.et_pb_row > .et_pb_column:last-child { margin-bottom: 0 !important; }
	.pw-row-stack .et_pb_button_module_wrapper { text-align: left !important; }
	.pw-row-stack .et_pb_text h1,
	.pw-row-stack .et_pb_text h2 { padding-bottom: 0 !important; }
}
/* "Mehr erfahren" (Tablet/Mobil) unter dem Laufband */
.pw-btn-after-cards { margin-top: 24px !important; }


/* =========================================================================
   09  Startseite: "Das können wir" – Akkordeon mobil als Karten
   Desktop-Akkordeon: Woody-Snippet "rdm-image-accordion".
   Mobil: Bild oben (Gruppen-Hintergrund), helle Textfläche darunter (umfunktioniertes ::before-Overlay).
   ========================================================================= */
@media (max-width: 767px) {
	#labor .et_pb_row:has(.rdm-image-accordion) { box-shadow: none !important; border-radius: 0 !important; padding-bottom: 0 !important; }
	.rdm-image-accordion .rdm-ia-panel,
	.rdm-image-accordion .rdm-ia-panel:hover {
		min-height: 0 !important;
		height: auto !important;
		padding: 236px 22px 26px !important;
		justify-content: flex-start !important;
		background-position: center top !important;
		border-radius: 15px !important;
		box-shadow: none !important;
		cursor: default;
	}
	.rdm-image-accordion .rdm-ia-panel::before { top: 220px !important; opacity: 1 !important; background: #F8EEE8 !important; }
	.rdm-image-accordion .rdm-ia-copy { width: 100% !important; margin: 0 !important; text-align: left !important; }
	/* Divi setzt den Titel weiß + zentriert mit !important – daher die lange Selektorkette */
	.rdm-image-accordion .rdm-ia-panel .rdm-ia-title,
	.rdm-image-accordion .rdm-ia-panel .rdm-ia-title .et_pb_heading_container h3 { margin: 0 !important; padding: 0 !important; }
	.rdm-image-accordion .rdm-ia-panel .rdm-ia-title .et_pb_heading_container h3 { font-size: 26px !important; line-height: 1.15 !important; color: var(--pw-ink) !important; text-align: left !important; }
	.rdm-image-accordion .rdm-ia-panel .rdm-ia-text { margin-top: 6px !important; }
	.rdm-image-accordion .rdm-ia-panel .rdm-ia-text .et_pb_text_inner,
	.rdm-image-accordion .rdm-ia-panel .rdm-ia-text p { color: var(--pw-ink) !important; font-size: 17px !important; line-height: 1.5 !important; text-align: left !important; }
}


/* =========================================================================
   10  Startseite: Leistungs-Laufband (Code-Modul "Leistungen · Tag-Laufband")
   Zeile 1 läuft nach links, Zeile 2 nach rechts. Inhalt 4× im Track, Animation um -50 %.
   Abstände per margin statt gap, damit -50 % exakt eine halbe Strecke ist (kein Ruckler).
   Randlos: Zeile gleicht den Sektionsrand mit negativem margin aus (100vw würde die Scrollleiste einrechnen).
   ========================================================================= */
#labor { overflow: visible !important; }
#main-content #labor .pw-tags-rowwrap.et_pb_row {
	width: calc(100% + 40px) !important;
	max-width: none !important;
	padding: 0 !important;
	margin: clamp(32px, 4vw, 56px) -20px !important;
}
.pw-tags-rowwrap .et_pb_column,
.pw-tags-rowwrap .et_pb_code,
.pw-tags-rowwrap .et_pb_code_inner { width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; }

.pw-tags { --pw-tags-speed: 110s; display: flex; flex-direction: column; gap: 4px; width: 100%; min-width: 0; overflow: hidden; }
.pw-tags > * { min-width: 0; max-width: 100%; }  /* Zeilen dürfen nicht auf Track-Breite (max-content) anwachsen */
.pw-tags-row { overflow: hidden; }
.pw-tags-track { display: flex; width: max-content; margin: 0 !important; padding: 0 !important; list-style: none !important; animation: pwTagsRun var(--pw-tags-speed) linear infinite; will-change: transform; }
.pw-tags-row--rev .pw-tags-track { animation-direction: reverse; }
@keyframes pwTagsRun { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(-50%, 0, 0); } }

/* Typo: Playfair mit Peach-Punkten als Trenner */
.pw-tags-track li { display: flex; align-items: center; flex: none; margin: 0; padding: 0; list-style: none !important; white-space: nowrap; font-family: 'Playfair Display', serif; font-weight: 600; font-size: clamp(24px, 2.5vw, 38px); line-height: 1.2; letter-spacing: -.02em; color: var(--pw-ink); }
.pw-tags-track li::marker { content: ""; }
.pw-tags-track li::after { content: ""; width: .2em; height: .2em; margin: 0 .5em; border-radius: 50%; background: var(--gcid-secondary-color, #E9B49A); }

@media (max-width: 767px) {
	#main-content #labor .pw-tags-rowwrap.et_pb_row { width: calc(100% + 2 * var(--pw-gap)) !important; margin-left: calc(-1 * var(--pw-gap)) !important; margin-right: calc(-1 * var(--pw-gap)) !important; }
	.pw-tags { --pw-tags-speed: 70s; }
	.pw-tags-track li { font-size: 27px; }
}
/* Reduzierte Bewegung: statische, umbrechende Liste ohne Duplikate */
@media (prefers-reduced-motion: reduce) {
	.pw-tags-track { animation: none; width: auto; flex-wrap: wrap; justify-content: center; row-gap: 10px; }
	.pw-tags-track li[aria-hidden="true"] { display: none; }
}


/* =========================================================================
   11  Mobil: einheitliche Sektionsbreite (alle Seiten + Footer)
   Außenrand = --pw-gap (mobil 16px) wie Header, Hero und Video, Inhalt 20px eingerückt.
   Nur Startseite: Sektionen ohne Hintergrund (#labor, #team) – Karten/Bilder volle Breite, nur Texte eingerückt.
   ========================================================================= */
@media (max-width: 767px) {
	#main-content .et_pb_section:not(.pw-hero):not(.pw-film-section),
	.et-l--footer .et_pb_section { margin-left: var(--pw-gap) !important; margin-right: var(--pw-gap) !important; width: auto !important; max-width: none !important; }
	#main-content .et_pb_section:not(.pw-hero):not(.pw-film-section) > .et_pb_row,
	.et-l--footer .et_pb_section > .et_pb_row { width: calc(100% - 40px) !important; max-width: none !important; }

	body.home #main-content #labor.et_pb_section > .et_pb_row:not(.pw-tags-rowwrap),
	body.home #main-content #team.et_pb_section > .et_pb_row { width: 100% !important; }
	body.home #labor .et_pb_text,
	body.home #labor .et_pb_button_module_wrapper,
	body.home #team .et_pb_text,
	body.home #team .et_pb_button_module_wrapper { padding-left: 20px !important; padding-right: 20px !important; }
	body.home #labor .rdm-image-accordion .et_pb_text { padding-left: 0 !important; padding-right: 0 !important; }
}


/* =========================================================================
   12  Footer (Theme-Builder-Footer, Layout 110)
   ========================================================================= */
/* Footer-Menüs (Klasse rdm-footermenu): Linkliste untereinander mit animierter Hover-Linie */
.rdm-footermenu .et_pb_menu_inner_container,
.rdm-footermenu .et_pb_menu__wrap,
.rdm-footermenu .et_pb_menu__menu,
.rdm-footermenu .et-menu-nav { width: 100%; }
.rdm-footermenu .et_pb_menu__wrap { justify-content: flex-start !important; }
.rdm-footermenu .et_pb_menu__menu { display: block !important; }   /* auch Tablet/Mobil als Liste */
.rdm-footermenu .et_mobile_nav_menu { display: none !important; }
.rdm-footermenu .et-menu { display: flex !important; flex-direction: column !important; align-items: flex-start !important; gap: 8px; padding: 0 !important; margin: 0 !important; }
.rdm-footermenu .et-menu > li { display: block !important; width: auto !important; max-width: 100%; padding: 0 !important; margin: 0 !important; }

/* Gemeinsamer Link-Stil: Footer-Menüs + Impressum/Datenschutz */
.rdm-footermenu .et-menu > li > a,
.pw-legal a {
	position: relative;
	display: inline-block;
	padding: 0 0 4px 0 !important;
	color: var(--gcid-body-color, #2E4057) !important;
	text-decoration: none !important;
	text-align: left !important;
	white-space: normal !important;   /* lange Einträge (Adresse) dürfen umbrechen */
	line-height: 1.35em !important;
	transition: color 250ms ease;
}
.rdm-footermenu .et-menu > li > a { font-size: 16px; }
.rdm-footermenu .et-menu > li > a::after,
.pw-legal a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 2px;
	background: #fff;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 320ms cubic-bezier(.22, .61, .36, 1);
}
.rdm-footermenu .et-menu > li > a:hover,
.rdm-footermenu .et-menu > li > a:focus-visible,
.pw-legal a:hover,
.pw-legal a:focus-visible { color: #fff !important; }
.rdm-footermenu .et-menu > li > a:hover::after,
.rdm-footermenu .et-menu > li > a:focus-visible::after,
.pw-legal a:hover::after,
.pw-legal a:focus-visible::after { transform: scaleX(1); }

/* Divi-5-Flex-Abstand zwischen Spaltenüberschrift und Menü */
.et_pb_column_1_tb_footer,
.et_pb_column_2_tb_footer { --vertical-gap: 10px; row-gap: 10px; }

/* Zahn links, Öffnungszeiten rechts – der Zahn steht auf der hellen Linie der Copyright-Zeile */
.pw-footer-hours.et_pb_row { align-items: flex-end !important; padding-bottom: 0 !important; margin-bottom: 0 !important; }
.pw-footer-hours .et_pb_column { margin-bottom: 0 !important; }
.pw-footer-hours + .et_pb_row { margin-top: 0 !important; }
.pw-footer-tooth.et_pb_image { margin: 0 !important; line-height: 0; }
.pw-footer-tooth .et_pb_image_wrap,
.pw-footer-tooth img { display: block; margin-right: auto; }

/* Copyright-Zeile: Impressum · Datenschutz */
.pw-legal { display: inline-flex; flex-wrap: wrap; gap: 14px; margin-left: 14px; }
@media (max-width: 980px) {
	.pw-legal { display: flex; justify-content: center; width: 100%; margin: 6px 0 0; }
}
@media (max-width: 767px) {
	.pw-footer-tooth img { width: 72px !important; }
}


/* =========================================================================
   13  Tabellen in Divi-Textmodulen – ruhiger, linienloser Stil (Kontakt, Referenzen)
   ========================================================================= */
.et_pb_text table:not(.variations) {
	width: 100% !important;
	margin: 0 !important;
	border: 0 !important;
	border-collapse: separate !important;
	border-spacing: 0 10px !important;
	background: transparent !important;
	table-layout: auto;
}
.et_pb_text table:not(.variations) tr,
.et_pb_text table:not(.variations) tbody,
.et_pb_text table:not(.variations) thead { border: 0 !important; background: transparent !important; }
.et_pb_text table:not(.variations) th,
.et_pb_text table:not(.variations) td {
	width: auto !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	color: var(--gcid-body-color, #2E4057);
	font: inherit;
	font-weight: 400 !important;
	line-height: 1.45;
	text-align: left;
	vertical-align: top;
}
/* Erste Spalte als ruhiges Label, zweite flexibel */
.et_pb_text table:not(.variations) tr > :first-child {
	width: 1% !important;
	padding-right: 40px !important;
	white-space: nowrap;
	color: color-mix(in srgb, var(--gcid-body-color, #2E4057) 58%, white);
}
/* Wrapper der Referenz-Tabelle ohne Divi-Standardabstand */
.et_pb_text .case-meta,
.et_pb_text .case-meta dt { margin: 0 !important; padding: 0 !important; }
@media (max-width: 767px) {
	.et_pb_text table:not(.variations) { border-spacing: 0 8px !important; }
	.et_pb_text table:not(.variations) tr > :first-child { padding-right: 20px !important; }
}


/* =========================================================================
   14  Sonstiges
   ========================================================================= */
/* Doctolib-Button (Klasse doctolib_btn) */
.doctolib_btn { background-color: #2e4057 !important; }

/* Rechtstexte: Hinweis "Entwurf" bis zur finalen Freigabe */
.pw-legal-note { padding: 14px 18px !important; margin-bottom: 28px; border-left: 3px solid var(--pw-peach); background: #F8EEE8; }


/* =========================================================================
   15  Schriften lokal (DSGVO: keine Verbindung zu Google)
   Variable Fonts aus der Mediathek (2026/10), nur Latin + Latin-ext, nur normaler Schnitt.
   Voraussetzung: Divi → Theme-Optionen → Allgemein → "Google Fonts verwenden" AUS.
   ========================================================================= */
@font-face {
	font-family: 'Playfair Display';
	font-style: normal;
	font-weight: 400 900;
	font-display: swap;
	src: url("/wp-content/uploads/2026/10/playfair-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'Playfair Display';
	font-style: normal;
	font-weight: 400 900;
	font-display: swap;
	src: url("/wp-content/uploads/2026/10/playfair-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'Georama';
	font-style: normal;
	font-weight: 100 900;
	font-stretch: 62.5% 150%;
	font-display: swap;
	src: url("/wp-content/uploads/2026/10/georama-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'Georama';
	font-style: normal;
	font-weight: 100 900;
	font-stretch: 62.5% 150%;
	font-display: swap;
	src: url("/wp-content/uploads/2026/10/georama-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* =========================================================================
   16  Scroll-Einblendung: jede Sektion gleitet beim Reinscrollen von unten ein
   JS (Header-Code-Modul) setzt html.pw-reveal und pro Sektion .pw-in, sobald sie ins Bild kommt
   (+ alle Sektionen davor); verlässt sie den Bildschirm nach unten, wird .pw-in entfernt → erneutes Einblenden.
   Ohne JS / bei reduzierter Bewegung ist alles sofort sichtbar. Ausgenommen: Hero und Imagefilm.
   WICHTIG: Einblend-Regel braucht dieselbe Spezifität wie die Verstecken-Regel (gleiche :not()-Kette).
   Divis eigene Animationen und Scroll-Effekte bitte nicht mehr verwenden.
   ========================================================================= */
html.pw-reveal #main-content .et_pb_section:not(.pw-hero):not(.pw-film-section),
html.pw-reveal .et-l--footer .et_pb_section:not(.pw-hero):not(.pw-film-section) {
	opacity: 0;
	transform: translate3d(0, 90px, 0);
	transition: opacity .9s ease, transform 1.2s var(--pw-ease-out);
}
html.pw-reveal #main-content .et_pb_section.pw-in:not(.pw-hero):not(.pw-film-section),
html.pw-reveal .et-l--footer .et_pb_section.pw-in:not(.pw-hero):not(.pw-film-section) { opacity: 1; transform: none; }


/* =========================================================================
   17  Altlasten aus Woody-Snippet 268 "Unterseiten - Style"
   Snippet 268 ist deaktiviert, Leistungen ist neu gebaut. Block kann raus, sobald keine Seite
   mehr pw-page / pw-kicker / pw-eyebrow-quote nutzt.
   ========================================================================= */
.pw-page h2 { font-size: clamp(28px, 3.2vw, 44px); letter-spacing: -.01em; line-height: 1.1; }
.pw-page h3 { font-size: clamp(20px, 1.6vw, 26px); letter-spacing: -.01em; line-height: 1.15; }
.pw-kicker { display: inline-block; margin-bottom: 18px; font-size: 12px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: #6B7587; }
.pw-eyebrow-quote { max-width: 820px; margin: 0 auto; font-size: clamp(22px, 2vw, 30px); font-weight: 600; line-height: 1.4; text-align: center; }


/* =========================================================================
   18  Unterseiten-Bausteine
   Sektionen als Karte: Divi-Sektions-Presets "Karte Weiß / Creme / Peach / Navy" (kein CSS nötig).
   Hier nur, was Divi nicht nativ kann.
   ========================================================================= */
/* Hero auf Unterseiten: eine statische Slide (Klassen pw-hero pw-hero--sub is-ready).
   Höhe wie Startseite (100 % minus Header, Abschnitt 06) – deshalb hier keine eigene Regel. */

/* Feste Bildformate für Bild-Module (Klasse am Modul): Foto füllt das Format, Ausschnitt oben/mittig */
.pw-img-45 img,
.pw-img-11 img,
.pw-img-43 img { display: block; width: 100% !important; height: auto; object-fit: cover; }
.pw-img-45 img { aspect-ratio: 4 / 5; object-position: center top; }
.pw-img-11 img { aspect-ratio: 1 / 1; object-position: center top; }
.pw-img-43 img { aspect-ratio: 4 / 3; }
.pw-img-45 .et_pb_image_wrap,
.pw-img-11 .et_pb_image_wrap,
.pw-img-43 .et_pb_image_wrap { display: block; width: 100%; }

/* Gruppen mit Hintergrundbild in festem Format (z. B. Porträt mit Name im Verlauf) */
.pw-ratio-45 { aspect-ratio: 4 / 5; }
.pw-ratio-11 { aspect-ratio: 1 / 1; }

/* Karten in einer Zeile gleich hoch: Klasse an der Zeile */
.pw-equal.et_pb_row > .et_pb_column { display: flex !important; flex-direction: column; }
.pw-equal.et_pb_row > .et_pb_column > .et_pb_module:last-child { flex: 1 1 auto; }

/* Listen in Textmodulen: Peach-Punkte; auf der Peach-Karte Navy, sonst unsichtbar */
#main-content .et_pb_text ul li::marker { color: var(--gcid-secondary-color, #E9B49A); }
#main-content .preset--module--divi-section--f22bd764-7790-44c0-9169-e5d88573c486 .et_pb_text ul li::marker { color: var(--gcid-primary-color, #2E4057); }

/* Profilkarten (Über uns): Doctolib-Icon wie im Overlay-Menü, immer unten links in der Karte.
   Absatz mit Klasse pw-profil-termin im Textmodul der Namenskarte; Textmodul füllt die Karte, Icon rutscht nach unten. */
.et_pb_group > .et_pb_text:has(.pw-profil-termin) { flex: 1 1 auto; display: flex; flex-direction: column; }
.et_pb_text:has(.pw-profil-termin) .et_pb_text_inner { flex: 1 1 auto; display: flex; flex-direction: column; }
.pw-profil-termin { margin-top: auto !important; padding: 18px 0 0 !important; line-height: 0; }
.pw-profil-termin a.pw-termin { display: inline-block; color: var(--pw-ink); border-radius: 50%; }
.pw-profil-termin a.pw-termin:hover .pw-doctolib { transform: scale(1.08); }
.pw-profil-termin a.pw-termin:focus-visible { outline: 2px solid var(--pw-ink); outline-offset: 4px; }


/* =========================================================================
   19  Seiten-Button "Termin vereinbaren" (alle Seiten)
   Element wird vom Header-Code-Modul (Layout 61) direkt in <body> gesetzt –
   im Header/in Sektionen würde position:fixed durch deren transform brechen.
   Link-Ziel dort ändern (aktuell /kontakt/). Zu: nur das Doctolib-"D";
   Hover/Tastatur-Fokus: fährt nach links aus und zeigt den Text.
   ========================================================================= */
.pw-side-termin {
	position: fixed;
	right: 0;
	top: 50%;
	z-index: 990;
	display: flex;
	align-items: center;
	padding: 18px 22px 18px 18px;
	border-radius: 999px 0 0 999px;
	background: var(--pw-ink);
	color: #fff !important;
	text-decoration: none !important;
	line-height: 1;
	box-shadow: 0 8px 28px rgba(46, 64, 87, .25);
	transform: translateY(-50%);
	transition: padding 1s var(--pw-ease-out), opacity .3s ease, visibility .3s;
}
.pw-side-termin .pw-doctolib { flex: 0 0 auto; width: 34px; height: 34px; }
.pw-side-termin__label {
	max-width: 0;
	margin-left: 0;
	overflow: hidden;
	white-space: nowrap;
	opacity: 0;
	font-size: 18px;
	font-weight: 700;
	letter-spacing: .01em;
	transition: max-width 1s var(--pw-ease-out), margin 1s var(--pw-ease-out), opacity .7s ease .15s;
}

/* Ausfahren: Maus (nur echte Hover-Geräte) und Tastatur */
@media (hover: hover) {
	.pw-side-termin:hover { padding-right: 28px; }
	.pw-side-termin:hover .pw-side-termin__label { max-width: 14em; margin-left: 14px; opacity: 1; }
}
.pw-side-termin:focus-visible { padding-right: 28px; outline: 2px solid var(--gcid-secondary-color, #E9B49A); outline-offset: 3px; }
.pw-side-termin:focus-visible .pw-side-termin__label { max-width: 14em; margin-left: 14px; opacity: 1; }

/* Overlay-Menü offen: Button weg (Menü hat eigenen Doctolib-Link) */
html.pw-menu-open .pw-side-termin { opacity: 0; visibility: hidden; pointer-events: none; }

@media (max-width: 767px) {
	.pw-side-termin { padding: 13px 15px 13px 13px; }
	.pw-side-termin .pw-doctolib { width: 26px; height: 26px; }
}
@media (prefers-reduced-motion: reduce) {
	.pw-side-termin,
	.pw-side-termin__label { transition: none; }
}
@media print { .pw-side-termin { display: none; } }


/* =========================================================================
   20  Karriere: Stellenkarten + gestaffeltes Einblenden
   pw-stagger (Klasse an der Zeile): Spalten blenden nacheinander ein, sobald die Sektion
   per Scroll-Einblendung (Abschnitt 16) .pw-in bekommt. Wiederverwendbar auf allen Seiten.
   pw-job (Klasse an der Spalte): Stellenkarte mit leichtem Anheben + Bildzoom bei Hover.
   ========================================================================= */
html.pw-reveal .pw-stagger.et_pb_row > .et_pb_column {
	opacity: 0;
	transform: translate3d(0, 40px, 0);
	transition: opacity .8s ease, transform 1s var(--pw-ease-out), translate .5s var(--pw-ease-out), box-shadow .5s ease;
}
html.pw-reveal .pw-in .pw-stagger.et_pb_row > .et_pb_column { opacity: 1; transform: none; }
html.pw-reveal .pw-in .pw-stagger.et_pb_row > .et_pb_column:nth-child(2) { transition-delay: .12s, .12s, 0s, 0s; }
html.pw-reveal .pw-in .pw-stagger.et_pb_row > .et_pb_column:nth-child(3) { transition-delay: .24s, .24s, 0s, 0s; }
html.pw-reveal .pw-in .pw-stagger.et_pb_row > .et_pb_column:nth-child(4) { transition-delay: .36s, .36s, 0s, 0s; }

/* Stellenkarte: Button immer unten, Bild mit Zoom */
.pw-job.et_pb_column { transition: translate .5s var(--pw-ease-out), box-shadow .5s ease; }
.pw-job.et_pb_column > .et_pb_text { flex: 1 1 auto; }
.pw-equal.et_pb_row > .pw-job.et_pb_column > .et_pb_module:last-child { flex: 0 0 auto; }
.pw-job .et_pb_image_wrap { overflow: hidden; border-radius: 10px; }
.pw-job .et_pb_image img { transition: transform .9s var(--pw-ease-out); }
@media (hover: hover) {
	.pw-job.et_pb_column:hover { translate: 0 -6px; box-shadow: 0 16px 40px rgba(46, 64, 87, .12); }
	.pw-job.et_pb_column:hover .et_pb_image img { transform: scale(1.05); }
}

/* Stichworte (Vollzeit/Teilzeit) als kleine Pillen */
.pw-job-tags { display: flex; flex-wrap: wrap; gap: 6px; padding-bottom: 12px !important; }
.pw-tag { display: inline-block; padding: 4px 12px; border-radius: 999px; background: var(--gcid-693bee31-3a66-4d52-aa0a-9e00058942ae, #F9F6F4); font-size: 14px; line-height: 1.4; color: var(--pw-ink); }

/* Kleiner Hinweistext (z. B. Datenschutz bei Bewerbungen) */
.pw-small { font-size: 14px; opacity: .85; }

@media (prefers-reduced-motion: reduce) {
	html.pw-reveal .pw-stagger.et_pb_row > .et_pb_column { opacity: 1; transform: none; transition: none; }
	.pw-job.et_pb_column,
	.pw-job .et_pb_image img { transition: none; }
}

/* =========================================================================
   21  Coming-Soon-Seite (/coming-soon/, Sektion .pw-cs)
   Ohne Header, Footer und Seiten-Button; Inhalt mittig auf voller Fensterhöhe.
   ========================================================================= */
body:has(.pw-cs) .et-l--header,
body:has(.pw-cs) .et-l--footer,
body:has(.pw-cs) .pw-side-termin { display: none !important; }
body:has(.pw-cs) #et-main-area { padding-top: 0 !important; }

/* Volle Höhe abzüglich des 20px-Rands, den alle Sektionen haben */
.pw-cs.et_pb_section { min-height: calc(100vh - 40px); min-height: calc(100svh - 40px); display: flex; align-items: center; padding: 60px 0 !important; }
.pw-cs .pw-cs-row.et_pb_row { max-width: 680px; }
.pw-cs .pw-cs-row .et_pb_column { align-items: center; }
.pw-cs .et_pb_text,
.pw-cs .et_pb_text_inner { text-align: center !important; }
.pw-cs .pw-cs-logo { padding-bottom: 28px !important; }
.pw-cs .pw-cs-logo img { width: 110px; height: auto; display: inline-block; }
.pw-cs h1 { padding-bottom: 18px; }
.pw-cs .et_pb_button_module_wrapper { margin: 28px 0 32px; }
.pw-cs .pw-cs-kontakt a,
.pw-cs .pw-cs-legal a { color: inherit; text-decoration: none; }
@media (hover: hover) {
	.pw-cs .pw-cs-kontakt a:hover,
	.pw-cs .pw-cs-legal a:hover { text-decoration: underline; }
}
.pw-cs .pw-cs-legal { padding-top: 24px; }
