/*
Theme Name: HerzART Child
Theme URI: https://herzart.ch
Description: Divi Child-Theme für HerzART mit zentralem Designsystem, Buchungsablauf und kundenspezifischen Funktionen.
Author: aKreate
Template: Divi
Version: 0.9.56
Text Domain: herzart-child
*/

/* Design-Tokens liegen in assets/css/tokens.css und werden zuerst geladen.
   Komponenten- und Bereichsstile folgen hier oder unter assets/css/. */

/* ============================================================
   Buttons — site-wide (matches the React design system)
   Every Divi button uses the HerzART clay-brown primary style. No Divi arrow.
   ============================================================ */
.et_pb_button {
	font-family: var(--ha-font-body) !important;
	font-size: var(--ha-text-sm) !important;
	font-weight: 500 !important;
	line-height: 1.2 !important;
	letter-spacing: normal !important;
	border-radius: var(--ha-radius) !important;
	padding: 0.75rem 1.35rem !important;
	background: var(--ha-primary) !important;
	color: var(--ha-primary-foreground) !important;
	border: 1px solid var(--ha-primary) !important;
	transition: background-color var(--ha-dur-base) var(--ha-ease-standard),
		color var(--ha-dur-base) var(--ha-ease-standard),
		border-color var(--ha-dur-base) var(--ha-ease-standard) !important;
}
.et_pb_button:hover {
	background: var(--ha-primary-hover) !important;
	border-color: var(--ha-primary-hover) !important;
	color: var(--ha-primary-foreground) !important;
	padding: 0.75rem 1.35rem !important; /* no icon padding shift */
	letter-spacing: normal !important;
}
/* kill Divi's hover arrow everywhere */
.et_pb_button:before,
.et_pb_button:after { content: none !important; display: none !important; }

/* Large size (React `lg`: ~52px, text-base, px-6) */
.et_pb_button.ha-btn-lg,
.et_pb_button.ha-btn-lg:hover {
	font-size: var(--ha-text-base) !important;
	padding: 0.95rem 1.5rem !important;
}
@media (prefers-reduced-motion: reduce) {
	.et_pb_button { transition: none !important; }
}

/* ============================================================
   Header — warm surface bg + primary accents (no Divi blue)
   ============================================================ */
#main-header,
.et-fixed-header #main-header {
	background-color: var(--ha-surface) !important;
}
/* dropdown accent line + submenu background */
#main-header .nav li ul,
#et-top-navigation .et-menu li ul.sub-menu {
	border-top-color: var(--ha-primary) !important;
	background-color: var(--ha-surface) !important;
}
/* menu links: hover + active -> primary (was Divi blue) */
#top-menu li a:hover,
#top-menu li.current-menu-item > a,
#top-menu li.current_page_item > a,
#top-menu li.current-menu-ancestor > a,
#top-menu li li a:hover {
	color: var(--ha-primary) !important;
}
/* mobile menu accents */
#et_mobile_nav_menu .et_mobile_menu,
#et_mobile_nav_menu .et_mobile_menu li a:hover {
	border-color: var(--ha-primary) !important;
}
#et_mobile_nav_menu .et_mobile_menu li a:hover { color: var(--ha-primary) !important; }

/* ============================================================
   Homepage — Hero
   ============================================================ */

/* Slim cinematic banner (crop the fullwidth image) */
.ha-banner .et_pb_fullwidth_image img {
	width: 100%; height: 30vh; min-height: 9rem;
	object-fit: cover; display: block;
}
@media (max-width: 980px) { .ha-banner .et_pb_fullwidth_image img { height: 22vh; } }

/* Warm band (token surface, matches Visitor-Paths gradient top -> seamless) */
.ha-hero-band { background-color: var(--ha-surface) !important; }

/* Headline + lede */
.ha-hero-copy h1 {
	font-family: var(--ha-font-display);
	font-size: var(--ha-text-display);
	line-height: 1.05;
	font-weight: 500;
	color: var(--ha-foreground);
	margin: 0 0 0.6em;
}
.ha-hero-copy p {
	font-size: var(--ha-text-lead);
	line-height: 1.5;
	color: var(--ha-muted-foreground);
	max-width: 42ch;
	margin: 0;
}

/* hero-only: inline spacing between the two CTAs */
.ha-hero-band .ha-cta { display: inline-block; margin: 0.75rem 0.75rem 0 0; }

/* Layered image composition */
.ha-hero-media {
	position: relative;
	max-width: 28rem;
	margin: 0 0 0 auto;
	padding: 0 0 2.5rem 2.5rem;
}
.ha-hero-media::before {
	content: "";
	position: absolute;
	top: -1.25rem; right: 0;
	width: 82%; height: 80%;
	background: var(--ha-accent, oklch(0.905 0.03 72));
	background: oklch(0.905 0.03 72);
	border-radius: var(--ha-radius-lg);
	z-index: 0;
}
.ha-hero-feature {
	position: relative; z-index: 1;
	width: 100%; aspect-ratio: 4/5; object-fit: cover;
	border-radius: var(--ha-radius-lg);
	box-shadow: var(--ha-shadow-md);
	display: block;
}
.ha-hero-inset {
	position: absolute; z-index: 2;
	bottom: 0; left: 0;
	width: 46%; aspect-ratio: 1/1; object-fit: cover;
	border-radius: var(--ha-radius-lg);
	box-shadow: var(--ha-shadow-lg);
	outline: 5px solid var(--ha-surface);
}
.ha-hero-caption {
	display: flex; align-items: center; gap: 0.5rem;
	justify-content: flex-end;
	margin: 1.25rem 0 0;
	font-size: var(--ha-text-xs);
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--ha-muted-foreground);
}
.ha-hero-caption span.dot { color: var(--ha-primary); }

@media (max-width: 980px) {
	.ha-hero-media { margin: 0 auto; }
	.ha-hero-caption { justify-content: center; }
}

/* ============================================================
   Homepage — Visitor paths (3 borderless tiles)
   ============================================================ */
.ha-paths {
	background: linear-gradient(to bottom, var(--ha-surface) 0%, var(--ha-background) 55%) !important;
}
.ha-path-tile { display: flex; flex-direction: column; gap: 0.9rem; text-decoration: none; }
.ha-path-tile__img {
	display: block; position: relative; overflow: hidden;
	border-radius: var(--ha-radius); aspect-ratio: 3 / 2;
}
.ha-path-tile__img img {
	width: 100%; height: 100%; object-fit: cover; display: block;
	transition: transform var(--ha-dur-slow) var(--ha-ease-standard);
}
.ha-path-tile:hover .ha-path-tile__img img { transform: scale(1.03); }
.ha-path-tile h3 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h3);
	line-height: 1.2; font-weight: 500; color: var(--ha-foreground); margin: 0;
}
.ha-path-tile p {
	font-size: var(--ha-text-sm); line-height: 1.5;
	color: var(--ha-muted-foreground); margin: 0.4rem 0 0;
}
.ha-path-cta {
	display: inline-flex; align-items: center; gap: 0.4rem; margin-top: 0.55rem;
	font-size: var(--ha-text-sm); font-weight: 600; color: var(--ha-primary);
}
.ha-path-cta::after {
	content: "\2192"; /* → */
	transition: transform var(--ha-dur-base) var(--ha-ease-standard);
}
.ha-path-tile:hover .ha-path-cta::after { transform: translateX(4px); }
@media (prefers-reduced-motion: reduce) {
	.ha-path-tile__img img, .ha-path-cta::after { transition: none !important; }
}

/* ============================================================
   Section divider (hand-drawn wave + clay motif)
   ============================================================ */
.ha-divider {
	display: flex; align-items: center; gap: 1rem;
	max-width: var(--container-content, 75rem); margin: 0 auto;
	padding: 0.5rem clamp(1.25rem, 5vw, 3rem);
	color: var(--ha-border);
}
.ha-divider svg.ha-wave { flex: 1 1 auto; height: 10px; width: 100%; }
.ha-divider .ha-motif { flex: 0 0 auto; width: 16px; height: 16px; color: var(--ha-primary); opacity: 0.7; }
.ha-divider .ha-wave--flip { transform: scaleX(-1); }

/* ============================================================
   Homepage — Collections ("Stücke mit Charakter")
   ============================================================ */
.ha-collections {
	background: linear-gradient(to bottom, var(--ha-background), var(--ha-surface) 50%, var(--ha-background)) !important;
}
.ha-coll-head { max-width: 48ch; margin: 0 auto 3rem !important; text-align: center !important; }
.ha-coll-head .et_pb_text_inner { text-align: center !important; }
.ha-coll-head h2 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h2);
	line-height: 1.15; font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.6rem;
}
.ha-coll-head p { color: var(--ha-muted-foreground); font-size: var(--ha-text-base); margin: 0; }
.ha-coll-tile { display: flex; flex-direction: column; gap: 0.85rem; text-decoration: none; }
.ha-coll-tile__img {
	position: relative; overflow: hidden;
	border-radius: var(--ha-radius); aspect-ratio: 4 / 5;
}
.ha-coll-tile__img img {
	width: 100%; height: 100%; object-fit: cover; display: block;
	transition: transform var(--ha-dur-slow) var(--ha-ease-standard);
}
.ha-coll-tile:hover .ha-coll-tile__img img { transform: scale(1.03); }
.ha-coll-tile__overlay {
	position: absolute; inset: 0;
	display: flex; flex-direction: column; justify-content: flex-end;
	padding: 1.25rem;
	background: linear-gradient(to top, oklch(0.2 0.01 60 / 0.82), oklch(0.2 0.01 60 / 0.32) 45%, transparent);
	opacity: 0; transition: opacity var(--ha-dur-base) var(--ha-ease-standard);
}
.ha-coll-tile:hover .ha-coll-tile__overlay { opacity: 1; }
.ha-coll-tile__overlay ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 0.1rem; }
.ha-coll-tile__overlay li { color: oklch(0.98 0.004 85); font-size: var(--ha-text-sm); font-weight: 500; }
.ha-coll-tile__title { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.ha-coll-tile__title h3 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h4);
	font-weight: 600; color: var(--ha-foreground); margin: 0;
}
.ha-coll-tile__title .arr { flex: 0 0 auto; color: var(--ha-primary); transition: transform var(--ha-dur-base) var(--ha-ease-standard); }
.ha-coll-tile:hover .ha-coll-tile__title .arr { transform: translateX(4px); }
.ha-coll-shopbtn { text-align: center; margin-top: 2.5rem; }
@media (prefers-reduced-motion: reduce) {
	.ha-coll-tile__img img, .ha-coll-tile__overlay, .ha-coll-tile__title .arr { transition: none !important; }
}

/* ============================================================
   Homepage — Experiences ("Selber kreativ werden")
   ============================================================ */
.ha-exp-copy h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h2); line-height: 1.15; font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.6rem; }
.ha-exp-copy .ha-lede { font-size: var(--ha-text-lead); line-height: 1.5; color: var(--ha-muted-foreground); margin: 0 0 0.8rem; max-width: 46ch; }
.ha-exp-copy .ha-price { font-size: var(--ha-text-sm); font-weight: 600; color: var(--ha-foreground); margin: 0; }
.ha-exp-media img { border-radius: var(--ha-radius) !important; aspect-ratio: 4 / 3; object-fit: cover; width: 100%; display: block; }
.ha-offer-tile { display: flex; flex-direction: column; gap: 1rem; text-decoration: none; }
.ha-offer-tile__img { position: relative; overflow: hidden; border-radius: var(--ha-radius); aspect-ratio: 3 / 2; }
.ha-offer-tile__img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--ha-dur-slow) var(--ha-ease-standard); }
.ha-offer-tile:hover .ha-offer-tile__img img { transform: scale(1.03); }
.ha-offer-tile h3 { display: flex; align-items: center; gap: 0.5rem; font-family: var(--ha-font-display); font-size: var(--ha-text-h4); font-weight: 600; color: var(--ha-foreground); margin: 0; transition: color var(--ha-dur-base); }
.ha-offer-tile:hover h3 { color: var(--ha-primary); }
.ha-offer-tile h3 .arr { color: var(--ha-primary); transition: transform var(--ha-dur-base); }
.ha-offer-tile:hover h3 .arr { transform: translateX(3px); }
.ha-offer-tile p { font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); margin: 0.3rem 0 0; }
.ha-brenn-media img { border-radius: var(--ha-radius) !important; aspect-ratio: 3 / 2; object-fit: cover; width: 100%; display: block; }
.ha-brenn-copy h2, .ha-brenn-copy h3 { font-family: var(--ha-font-display); font-size: var(--ha-text-h2); line-height: 1.15; font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.6rem; }
.ha-brenn-copy .ha-lede { font-size: var(--ha-text-lead); line-height: 1.5; color: var(--ha-muted-foreground); margin: 0 0 1rem; max-width: 46ch; }

/* ============================================================
   Homepage — Collections bento (asymmetric: 1 lead + 2 stacked)
   ============================================================ */
#page-container .ha-coll-bento {
	display: grid; grid-template-columns: 1.25fr 1fr;
	gap: clamp(1rem, 2vw, 1.5rem); align-items: stretch;
}
#page-container .ha-coll-stack { display: flex; flex-direction: column; gap: clamp(1rem, 2vw, 1.5rem); }
#page-container .ha-coll-bento .ha-coll-tile { height: 100%; }
/* lead tile: image fills the full column height next to the stack */
#page-container .ha-coll-tile--lead .ha-coll-tile__img { aspect-ratio: auto; flex: 1 1 auto; min-height: 22rem; }
#page-container .ha-coll-stack .ha-coll-tile__img { aspect-ratio: 16 / 10; }
@media (max-width: 820px) {
	#page-container .ha-coll-bento { grid-template-columns: 1fr; }
	#page-container .ha-coll-tile--lead .ha-coll-tile__img { aspect-ratio: 4 / 3; min-height: 0; flex: none; }
	#page-container .ha-coll-stack .ha-coll-tile__img { aspect-ratio: 3 / 2; }
}

/* ============================================================
   Homepage — Anlässe focus band (lead image + list, warm gradient)
   ============================================================ */
.ha-anlass-focus { background: linear-gradient(to bottom, var(--ha-background), var(--ha-surface) 50%, var(--ha-background)) !important; }
#page-container .ha-anl-row { display: flex !important; align-items: center; flex-wrap: wrap; }
#page-container .ha-anl-row > .et_pb_column { float: none !important; }
.ha-anl-media { display: block; overflow: hidden; border-radius: var(--ha-radius-lg); }
#page-container .ha-anl-media img { width: 100% !important; aspect-ratio: 4 / 5; object-fit: cover; display: block; }
.ha-anl-panel { display: flex; flex-direction: column; align-items: flex-start; gap: 0.9rem; }
.ha-anl-panel h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h2); line-height: 1.15; font-weight: 500; color: var(--ha-foreground); margin: 0; }
.ha-anl-lede { font-size: var(--ha-text-lead); line-height: 1.5; color: var(--ha-muted-foreground); margin: 0; max-width: 44ch; }
.ha-anl-list { list-style: none; margin: 0.4rem 0; padding: 0; width: 100%; }
#page-container .ha-anl-panel .ha-anl-list {
	margin: 0.4rem 0 !important;
	padding: 0 !important;
	list-style: none !important;
}
#page-container .ha-anl-list, #page-container .ha-anl-list li { list-style: none !important; }
#page-container .ha-anl-list li::marker { content: none; }
.ha-anl-list li { margin: 0 !important; padding: 0 !important; border-top: 1px solid var(--ha-border); }
.ha-anl-list li:last-child { border-bottom: 1px solid var(--ha-border); }
.ha-anl-list a { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 0.15rem 1rem; width: 100%; padding: 1rem 0; text-decoration: none; }
.ha-anl-list .t { grid-column: 1; font-family: var(--ha-font-display); font-size: var(--ha-text-h4); font-weight: 600; color: var(--ha-foreground); transition: color var(--ha-dur-base); }
.ha-anl-list .d { grid-column: 1; font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); }
.ha-anl-list .arr { grid-column: 2; grid-row: 1 / span 2; align-self: center; color: var(--ha-primary); transition: transform var(--ha-dur-base); }
.ha-anl-list a:hover .t { color: var(--ha-primary); }
.ha-anl-list a:hover .arr { transform: translateX(3px); }
.ha-anl-note {
	max-width: 46ch;
	margin: 0.25rem 0 0;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-base);
	line-height: 1.6;
}
.ha-anl-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 0.6rem; }
.ha-anl-panel .ha-anfrage-btn { margin-top: 0.6rem; }
.ha-anl-panel .ha-anl-actions .ha-anfrage-btn { margin-top: 0; }
@media (prefers-reduced-motion: reduce) { .ha-anl-list .t, .ha-anl-list .arr { transition: none !important; } }

/* ============================================================
   Homepage — Story ("Zwei Handwerke, ein Herz")
   ============================================================ */
.ha-story { background: linear-gradient(to bottom, var(--ha-background), var(--ha-surface) 50%, var(--ha-background)) !important; }
.ha-story-head, .ha-story-head .et_pb_text_inner { text-align: center !important; }
.ha-story-head { max-width: 48ch; margin: 0 auto 3rem !important; }
.ha-story-head h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h2); font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.6rem; }
.ha-story-head p { color: var(--ha-muted-foreground); font-size: var(--ha-text-base); margin: 0; }
.ha-duo-layout { display: flex; flex-direction: column; gap: clamp(2rem, 5vw, 4rem); }
.ha-duo-placeholder {
	display: grid;
	place-items: center;
	min-height: clamp(18rem, 45vw, 34rem);
	margin: 0;
	padding: clamp(2rem, 6vw, 4rem);
	border: 1px solid var(--ha-border);
	border-radius: var(--ha-radius-lg);
	background:
		radial-gradient(circle at 32% 42%, var(--ha-secondary) 0 12%, transparent 12.5%),
		radial-gradient(circle at 68% 42%, var(--ha-muted) 0 12%, transparent 12.5%),
		linear-gradient(135deg, var(--ha-muted), var(--ha-surface));
	color: var(--ha-muted-foreground);
	text-align: center;
}
.ha-duo-placeholder__label {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	max-width: 28ch;
	padding: 0.7rem 1rem;
	border-radius: var(--ha-radius-pill);
	background: var(--ha-background);
	box-shadow: var(--ha-shadow-sm);
	font-size: var(--ha-text-sm);
	font-weight: 600;
}
.ha-duo-photo {
	margin: 0;
	overflow: hidden;
	border-radius: var(--ha-radius-lg);
	background: var(--ha-muted);
}
.ha-duo-photo img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	object-position: center;
}
.ha-duo-bios { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.ha-maker { display: flex; flex-direction: column; gap: 1rem; }
.ha-maker__img img { border-radius: var(--ha-radius) !important; aspect-ratio: 4 / 5; object-fit: cover; width: 100%; display: block; }
.ha-maker__name { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.5rem; }
.ha-maker__name h3 { font-family: var(--ha-font-display); font-size: var(--ha-text-h3); font-weight: 500; color: var(--ha-foreground); margin: 0; }
.ha-maker__name .disc { font-size: var(--ha-text-sm); font-weight: 600; color: var(--ha-primary); }
.ha-maker p { font-size: var(--ha-text-base); line-height: 1.6; color: var(--ha-muted-foreground); margin: 0.4rem 0 0; }
.ha-center-btn { text-align: center; margin-top: 2.5rem; }
@media (max-width: 767px) {
	.ha-duo-bios { grid-template-columns: 1fr; }
	.ha-duo-placeholder { min-height: 18rem; }
}

/* ============================================================
   Homepage — Locations
   ============================================================ */
.ha-loc { display: flex; flex-direction: column; gap: 1rem; }
.ha-loc__img img { border-radius: var(--ha-radius) !important; aspect-ratio: 16 / 10; object-fit: cover; width: 100%; display: block; }
.ha-loc > h3 { font-family: var(--ha-font-display); font-size: var(--ha-text-h3); font-weight: 500; color: var(--ha-foreground); margin: 0; }
.ha-loc__name { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.5rem; }
.ha-loc__name h3 { font-family: var(--ha-font-display); font-size: var(--ha-text-h3); font-weight: 500; color: var(--ha-foreground); margin: 0; }
.ha-loc__name .role { font-size: var(--ha-text-sm); font-weight: 600; color: var(--ha-primary); }
.ha-loc p { font-size: var(--ha-text-base); color: var(--ha-muted-foreground); margin: 0.3rem 0 0; }
.ha-loc a.ha-loc__link { display: inline-flex; align-items: center; gap: 0.4rem; margin-top: 0.6rem; font-size: var(--ha-text-sm); font-weight: 600; color: var(--ha-primary); text-decoration: none; }
.ha-loc a.ha-loc__link::after { content: "\2192"; transition: transform var(--ha-dur-base); }
.ha-loc a.ha-loc__link:hover::after { transform: translateX(4px); }

/* ============================================================
   Homepage — Commissions ("Auf Wunsch")
   ============================================================ */
.ha-comm { background: linear-gradient(to bottom, var(--ha-background), var(--ha-surface) 50%, var(--ha-background)) !important; }
.ha-comm-media img { border-radius: var(--ha-radius) !important; aspect-ratio: 3 / 2; object-fit: cover; width: 100%; display: block; }
.ha-comm-copy h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h2); line-height: 1.15; font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.6rem; }
.ha-comm-copy .ha-lede { font-size: var(--ha-text-lead); line-height: 1.5; color: var(--ha-muted-foreground); margin: 0 0 1rem; max-width: 46ch; }

/* ============================================================
   Homepage — Gutschein + Memorial
   ============================================================ */
.ha-gutschein, .ha-gutschein .et_pb_text_inner { text-align: center !important; }
.ha-gutschein { max-width: 46ch; margin: 0 auto !important; }
.ha-gutschein h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h2); font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.6rem; }
.ha-gutschein p { color: var(--ha-muted-foreground); font-size: var(--ha-text-base); margin: 0 0 1.25rem; }
.ha-memorial { background: var(--ha-muted); border-radius: var(--ha-radius-lg); padding: clamp(2rem,4vw,3rem); text-align: center; }
.ha-memorial p.intro { font-size: var(--ha-text-lead); color: var(--ha-foreground); margin: 0 0 1rem; max-width: 52ch; margin-inline: auto; }
.ha-memorial ul { list-style: none; margin: 0 0 1.25rem; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem 1.25rem; }
.ha-memorial li { font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); }
.ha-memorial a.ha-mem-link { display: inline-flex; align-items: center; gap: 0.4rem; font-size: var(--ha-text-sm); font-weight: 600; color: var(--ha-foreground); text-decoration: underline; text-underline-offset: 0.2em; }

/* ============================================================
   Footer (Divi Theme Builder) — rebrand grey -> warm HerzART
   ============================================================ */
.et-l--footer .et_pb_section.et_pb_section_0_tb_footer {
	background: var(--ha-surface) !important;
	border-top: 1px solid var(--ha-border) !important;
}
.et-l--footer .et_pb_section.et_pb_section_1_tb_footer {
	background: var(--ha-muted) !important;
	border-top: 1px solid var(--ha-border) !important;
}
/* body text muted, headings foreground + display font */
.et-l--footer p,
.et-l--footer li,
.et-l--footer span,
.et-l--footer .et_pb_text {
	color: var(--ha-muted-foreground) !important;
}
.et-l--footer h1, .et-l--footer h2, .et-l--footer h3, .et-l--footer h4,
.et-l--footer h5, .et-l--footer h6 {
	color: var(--ha-foreground) !important;
	font-family: var(--ha-font-display) !important;
}
/* links: foreground, clay on hover (also fixes the blue Datenschutz/Impressum) */
.et-l--footer a { color: var(--ha-foreground) !important; text-decoration: none !important; }
.et-l--footer a:hover { color: var(--ha-primary) !important; }

/* Footer — column layout (React-like, minus Entdecken nav) */
.et-l--footer .ha-foot-h {
	font-family: var(--ha-font-body) !important;
	text-transform: uppercase; letter-spacing: 0.08em;
	font-size: var(--ha-text-xs) !important; font-weight: 600;
	color: var(--ha-muted-foreground) !important; margin: 0 0 1rem !important;
}
.ha-foot-brand img { height: 44px; width: auto; display: block; margin-bottom: 0.9rem; }
.ha-foot-brand p { font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); max-width: 32ch; margin: 0; line-height: 1.6; }
.ha-foot-brand .ha-foot-contact { margin-top: 0.8rem; }
.ha-foot-brand .ha-foot-contact a { color: var(--ha-foreground) !important; font-weight: 600; }
.ha-foot-brand .ha-foot-contact a:hover { color: var(--ha-primary) !important; }
.ha-foot-col p, .ha-foot-col li { font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); margin: 0 0 0.5rem; line-height: 1.55; }
.ha-foot-col .name { font-weight: 600; color: var(--ha-foreground); display: block; }
.ha-foot-col ul { list-style: none; margin: 0; padding: 0; }
.ha-foot-col a { color: var(--ha-muted-foreground) !important; text-decoration: none !important; }
.ha-foot-col a:hover { color: var(--ha-primary) !important; }
.ha-foot-col .ha-foot-link { margin-top: 1rem; }
.ha-foot-col .ha-foot-link a { color: var(--ha-primary) !important; font-weight: 600; }
.ha-foot-days { display: grid; grid-template-columns: 2.5rem 1fr; gap: 0.3rem 0.75rem; font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); }
.ha-foot-days .d { color: var(--ha-foreground); font-weight: 500; }
.ha-foot-bottom { display: flex; flex-wrap: wrap; gap: 0.75rem 1.5rem; align-items: center; justify-content: space-between; }
.ha-foot-bottom p { margin: 0; font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); }
.ha-foot-bottom nav { display: flex; gap: 1.25rem; }
.ha-foot-bottom a { font-size: var(--ha-text-sm); color: var(--ha-muted-foreground) !important; text-decoration: none !important; }
.ha-foot-bottom a:hover { color: var(--ha-primary) !important; }
.ha-foot-bottom .ha-foot-consent {
  appearance: none !important;
  min-height: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--ha-muted-foreground) !important;
  font-family: inherit !important;
  font-size: var(--ha-text-sm) !important;
  font-weight: 400 !important;
  line-height: inherit !important;
  text-decoration: none !important;
  cursor: pointer;
}
.ha-foot-bottom .ha-foot-consent:hover { color: var(--ha-primary) !important; }
.ha-foot-bottom .ha-foot-consent:focus-visible {
  outline: 2px solid var(--ha-primary);
  outline-offset: 3px;
}
.ha-foot-credit { display: inline-block; margin-top: 0.15rem; font-size: var(--ha-text-xs); opacity: 0.85; }
/* A Divi entrance animation left the copyright row stuck at opacity:0
   (it sits below the fold, so the animation never triggers). Footer is
   static — keep every footer row visible. */
.et-l--footer .et_pb_row { opacity: 1 !important; }

/* Button padding must beat Divi's per-module rule
   (body #page-container .et_pb_section .et_pb_button_N = 1,2,1) -> go 1,3,1 */
body #page-container .et_pb_section .et_pb_row .et_pb_button,
body #page-container .et_pb_section .et_pb_row .et_pb_button:hover {
	padding: 0.75rem 1.35rem !important;
}
body #page-container .et_pb_section .et_pb_row .et_pb_button {
	background: var(--ha-primary) !important;
	color: var(--ha-primary-foreground) !important;
	border-color: var(--ha-primary) !important;
}
body #page-container .et_pb_section .et_pb_row .et_pb_button:hover {
	background: var(--ha-primary-hover) !important;
	color: var(--ha-primary-foreground) !important;
	border-color: var(--ha-primary-hover) !important;
}
body #page-container .et_pb_section .et_pb_row .et_pb_button.ha-btn-lg,
body #page-container .et_pb_section .et_pb_row .et_pb_button.ha-btn-lg:hover {
	padding: 0.95rem 1.6rem !important;
}

/* One consistent content container site-wide (header + sections + footer),
   matching the React <Container width="wide">: max 1320px + fluid gutters. */
#main-header .container,
#page-container .et_pb_section .et_pb_row,
.et-l--footer .et_pb_row {
	width: 100% !important;
	max-width: var(--container-wide) !important;
	padding-left: clamp(1.25rem, 5vw, 3rem) !important;
	padding-right: clamp(1.25rem, 5vw, 3rem) !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

/* Hero: vertically centre text against the image (React items-center) */
.ha-hero-band .et_pb_row { display: flex !important; align-items: center !important; flex-wrap: wrap; }
.ha-hero-band .et_pb_row > .et_pb_column { float: none !important; }

/* Buttons side by side (React flex-row); centered buttons stay block/centered.
   Wrap naturally on small screens. */
#page-container .et_pb_section .et_pb_button_module_wrapper {
	display: inline-block !important;
	margin: 0 0.75rem 0.75rem 0 !important;
	vertical-align: top;
}
#page-container .et_pb_section .et_pb_button_module_wrapper.et_pb_button_alignment_center {
	display: block !important;
	text-align: center;
	margin-right: 0 !important;
}
@media (max-width: 767px) {
	/* full-width-ish stacked buttons feel better on phones */
	#page-container .et_pb_section .et_pb_button_module_wrapper { display: block !important; margin-right: 0 !important; }
}

/* ============================================================
   Scroll reveal (added by assets/js/reveal.js)
   ============================================================ */
.ha-reveal {
	opacity: 0;
	transform: translateY(18px);
	transition: opacity var(--ha-dur-slow) var(--ha-ease-standard),
		transform var(--ha-dur-slow) var(--ha-ease-standard);
	transition-delay: var(--ha-reveal-delay, 0ms);
	will-change: opacity, transform;
}
.ha-reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	.ha-reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* Sections default to the warm canvas (Divi defaults to pure #fff, which
   clashed with the warm gradient sections -> abrupt seams). Gradient
   sections (.ha-paths/.ha-collections/.ha-story/.ha-comm) keep their
   linear-gradient via !important. */
#page-container .et_pb_section { background-color: var(--ha-background); }

/* ============================================================
   Hero load sequence (word-by-word title, then lede/CTAs/media)
   ============================================================ */
@keyframes haFadeUp { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }

/* Subpage heroes use a shorter two-step entrance than the homepage hero. */
.ha-page-hero-in h1,
.ha-page-hero-in .ha-page-hero-lede {
	opacity: 0;
	animation: haFadeUp 0.62s var(--ha-ease-standard) both;
}
.ha-page-hero-in .ha-page-hero-lede { animation-delay: 0.12s; }

.ha-hero-copy h1 .ha-word {
	display: inline-block;
	opacity: 0;
	transform: translateY(0.5em);
	animation: haFadeUp 0.7s var(--ha-ease-standard) both;
}
/* blocks hidden only once JS adds .ha-hero-in (progressive enhancement) */
.ha-hero-in .ha-hero-copy p,
.ha-hero-in .ha-cta,
.ha-hero-in .ha-hero-media,
.ha-hero-in .ha-hero-caption {
	opacity: 0;
	animation: haFadeUp 0.7s var(--ha-ease-standard) both;
}
.ha-hero-in .ha-hero-media { animation-delay: 0.35s; }
.ha-hero-in .ha-hero-copy p { animation-delay: 0.6s; }
.ha-hero-in .ha-cta { animation-delay: 0.78s; }
.ha-hero-in .ha-hero-caption { animation-delay: 0.9s; }

@media (prefers-reduced-motion: reduce) {
	.ha-hero-copy h1 .ha-word,
	.ha-page-hero-in h1,
	.ha-page-hero-in .ha-page-hero-lede,
	.ha-hero-in .ha-hero-copy p,
	.ha-hero-in .ha-cta,
	.ha-hero-in .ha-hero-media,
	.ha-hero-in .ha-hero-caption {
		opacity: 1 !important; transform: none !important; animation: none !important;
	}
}

/* ============================================================
   Booking flow (cart-less checkout for bookable products)
   ============================================================ */
/* Hide all money/totals on the booking checkout (price 0, pure reservation) */
.ha-booking .cart-subtotal,
.ha-booking .order-total,
.ha-booking .woocommerce-Price-amount,
.ha-booking .product-total,
.ha-booking .wc_payment_methods,
.ha-booking td.product-total,
.ha-booking th.product-total { display: none !important; }

/* Booking checkout: one calm content column, using the page instead of cards. */
.ha-booking #main-content {
	background: var(--ha-background);
}
.ha-booking #main-content .container {
	width: min(90%, 74rem);
	max-width: 74rem;
	padding-top: clamp(2.5rem, 6vw, 5rem);
	padding-bottom: clamp(4rem, 8vw, 7rem);
}
.ha-booking .woocommerce {
	max-width: 60rem;
	margin: 0;
}
.ha-checkout-intro {
	max-width: 60rem;
	margin: 0 0 clamp(2rem, 5vw, 3.5rem);
}
.ha-checkout-step {
	margin: 0 0 0.55rem;
	padding: 0;
	color: var(--ha-primary);
	font-size: var(--ha-text-xs);
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}
.ha-checkout-intro h1 {
	margin: 0 0 0.65rem;
	padding: 0;
	color: var(--ha-foreground);
	font-family: var(--ha-font-display);
	font-size: clamp(2.25rem, 5vw, 3.6rem);
	font-weight: 500;
	line-height: 1.05;
}
.ha-checkout-intro > p:last-child {
	max-width: 58ch;
	margin: 0;
	padding: 0;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-base);
	line-height: 1.65;
}
.ha-booking form.checkout.woocommerce-checkout {
	display: block;
	width: 100%;
	max-width: 60rem;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}
.ha-booking #customer_details {
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}
.ha-booking .woocommerce-billing-fields,
.ha-booking .woocommerce-billing-fields__field-wrapper {
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}
.ha-booking #customer_details .col-1 {
	float: none;
	width: 100%;
}
.ha-booking #customer_details .col-2 { display: none; }
.ha-booking #order_review_heading,
.ha-booking .woocommerce-billing-fields h3 {
	font-family: var(--ha-font-display);
	font-weight: 500;
	color: var(--ha-foreground);
}
.ha-booking .woocommerce-billing-fields h3 {
	margin: 0 0 1.5rem;
	padding: 0;
	font-size: var(--ha-text-h3);
}
.ha-booking .woocommerce-billing-fields__field-wrapper {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.1rem 1rem;
}
.ha-booking .woocommerce form .form-row {
	float: none;
	width: 100%;
	margin: 0;
	padding: 0;
}
.ha-booking .woocommerce form .form-row label {
	margin: 0 0 0.4rem;
	color: var(--ha-foreground);
	font-size: var(--ha-text-sm);
	font-weight: 600;
	line-height: 1.4;
}
.ha-booking .woocommerce form .form-row input.input-text {
	width: 100%;
	min-height: 3.15rem;
	border: 1px solid var(--ha-border) !important;
	border-radius: var(--ha-radius) !important;
	padding: 0.78rem 0.9rem;
	background: var(--ha-surface);
	color: var(--ha-foreground);
	font-size: var(--ha-text-base);
	transition: border-color var(--ha-dur-fast) var(--ha-ease-standard),
		box-shadow var(--ha-dur-fast) var(--ha-ease-standard);
}
.ha-booking .woocommerce form .form-row input.input-text:focus {
	border-color: var(--ha-primary) !important;
	box-shadow: 0 0 0 3px color-mix(in oklch, var(--ha-primary) 15%, transparent);
	outline: 0;
}
.ha-booking .woocommerce form .form-row .required {
	color: var(--ha-primary);
}
.ha-booking #order_review_heading {
	float: none;
	width: 100%;
	margin: clamp(2.75rem, 6vw, 4.5rem) 0 0;
	padding: clamp(2rem, 4vw, 3rem) 0 0;
	border: 0;
	border-top: 1px solid var(--ha-border);
	border-radius: 0;
	background: transparent;
	font-size: var(--ha-text-h3);
}
.ha-booking .woocommerce-checkout-review-order {
	float: none;
	width: 100%;
	margin: 0;
	padding: 1rem 0 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}
.ha-booking .woocommerce-checkout-review-order-table {
	margin: 0 !important;
	border: 0 !important;
}
.ha-booking .woocommerce-checkout-review-order-table th,
.ha-booking .woocommerce-checkout-review-order-table td {
	padding: 0.85rem 0 !important;
	border: 0 !important;
	border-bottom: 1px solid var(--ha-border) !important;
	color: var(--ha-foreground);
	vertical-align: top;
}
.ha-booking .woocommerce-checkout-review-order-table .product-name {
	font-weight: 600;
}
.ha-booking .woocommerce-checkout-review-order-table .product-quantity {
	color: var(--ha-muted-foreground);
	font-weight: 500;
}
.ha-booking .woocommerce-checkout-review-order-table dl.variation {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.25rem 0.55rem;
	margin: 0.65rem 0 0;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-sm);
	font-weight: 400;
	line-height: 1.5;
}
.ha-booking .woocommerce-checkout-review-order-table dl.variation dt,
.ha-booking .woocommerce-checkout-review-order-table dl.variation dd {
	float: none;
	margin: 0;
	padding: 0;
}
.ha-booking .woocommerce-checkout-review-order-table dl.variation p {
	margin: 0;
	padding: 0;
}
body.ha-booking.woocommerce-checkout #payment,
.ha-booking .woocommerce-checkout-payment {
	width: 100%;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}
.ha-booking #payment .payment_box,
.ha-booking #payment .wc_payment_methods { display: none !important; }
body.ha-booking.woocommerce-checkout #payment div.form-row.place-order,
.ha-booking #payment .place-order {
	width: 100%;
	margin: 0 !important;
	padding: 1.5rem 0 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	text-align: left !important;
}
.ha-checkout-confirm-note {
	display: grid;
	gap: 0.25rem;
	width: 100%;
	margin: 0 0 1rem;
	padding: 0;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-sm);
	line-height: 1.5;
}
.ha-checkout-confirm-note strong {
	color: var(--ha-foreground);
	font-weight: 650;
}
.ha-booking #place_order {
	display: inline-flex;
	float: left !important;
	align-items: center;
	justify-content: center;
	width: auto;
	min-width: 16rem;
	min-height: 3.2rem;
	margin: 0;
	border: 1px solid var(--ha-primary) !important;
	border-radius: var(--ha-radius) !important;
	padding: 0.85rem 1.25rem !important;
	background: var(--ha-primary) !important;
	color: var(--ha-primary-foreground) !important;
	font-family: var(--ha-font-body);
	font-size: var(--ha-text-base) !important;
	font-weight: 650;
	line-height: 1.25 !important;
	transition: background-color var(--ha-dur-fast) var(--ha-ease-standard),
		border-color var(--ha-dur-fast) var(--ha-ease-standard);
}
.ha-booking #place_order:hover {
	border-color: var(--ha-primary-hover) !important;
	background: var(--ha-primary-hover) !important;
	padding: 0.85rem 1.25rem !important;
}
.ha-booking #place_order::before,
.ha-booking #place_order::after {
	display: none !important;
	content: none !important;
}
.ha-checkout-back {
	margin: 0 0 1.5rem;
}
.ha-checkout-back a {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	padding: 0.65rem 0.9rem;
	border: 1px solid var(--ha-border);
	border-radius: var(--ha-radius);
	color: var(--ha-foreground);
	font-size: var(--ha-text-sm);
	font-weight: 600;
	text-decoration: none;
	transition: background-color var(--ha-dur-fast) var(--ha-ease-standard),
		border-color var(--ha-dur-fast) var(--ha-ease-standard);
}
.ha-checkout-back a:hover {
	border-color: var(--ha-primary);
	background: color-mix(in oklch, var(--ha-primary) 7%, transparent);
}

@media (max-width: 900px) {
	.ha-booking form.checkout.woocommerce-checkout {
		display: block;
	}
	.ha-booking #order_review_heading {
		margin-top: 2.5rem;
	}
}
@media (max-width: 560px) {
	.ha-booking #main-content .container { width: min(92%, 74rem); }
	.ha-booking .woocommerce-billing-fields__field-wrapper {
		grid-template-columns: 1fr;
	}
	.ha-booking #customer_details,
	.ha-booking #order_review_heading,
	.ha-booking .woocommerce-checkout-review-order {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}
	.ha-booking #place_order { width: 100%; min-width: 0; }
}

/* PluginHive controls around the unchanged calendar. */
.single-product .product-type-phive_booking .participant_section {
	margin: 1.25rem 0;
	padding: 0 !important;
}
.single-product .product-type-phive_booking .participant_inner_section {
	display: flex;
	float: none;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	width: 100%;
	padding: 0.9rem 0;
	border-top: 1px solid var(--ha-border);
	border-bottom: 1px solid var(--ha-border);
}
.single-product .product-type-phive_booking .persons-title {
	float: none;
	width: auto;
	margin: 0;
}
.single-product .product-type-phive_booking .persons-title label {
	margin: 0;
	color: var(--ha-foreground);
	font-size: var(--ha-text-sm);
	font-weight: 650;
	line-height: 1.4;
}
body.postid-2193 .product-type-phive_booking .participant_section {
	display: none !important;
}
.single-product .product-type-phive_booking .person-value {
	display: inline-flex;
	align-items: center;
	width: auto;
	overflow: hidden;
	border: 1px solid var(--ha-border);
	border-radius: 999px;
	background: var(--ha-surface);
}
.single-product .product-type-phive_booking .input-person-minus,
.single-product .product-type-phive_booking .input-person-plus {
	display: inline-grid;
	width: 2.65rem;
	height: 2.65rem;
	padding: 0 !important;
	place-items: center;
	border: 0 !important;
	border-radius: 0;
	background: transparent;
	color: var(--ha-primary) !important;
	font-size: 1.2rem;
	font-weight: 650 !important;
	line-height: 1;
	text-decoration: none !important;
	transition: background-color var(--ha-dur-fast) var(--ha-ease-standard),
		color var(--ha-dur-fast) var(--ha-ease-standard);
}
.single-product .product-type-phive_booking .input-person-minus:hover,
.single-product .product-type-phive_booking .input-person-plus:hover {
	background: color-mix(in oklch, var(--ha-primary) 10%, transparent);
	color: var(--ha-primary-hover) !important;
}
.single-product .product-type-phive_booking input.input-person {
	display: inline-block !important;
	width: 2.75rem !important;
	height: 2.65rem !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-right: 1px solid var(--ha-border) !important;
	border-left: 1px solid var(--ha-border) !important;
	border-radius: 0 !important;
	background: var(--ha-background) !important;
	color: var(--ha-foreground) !important;
	font-size: var(--ha-text-base);
	font-weight: 650;
	line-height: 2.65rem;
	text-align: center !important;
}
.single-product .product-type-phive_booking .booking-info-wraper {
	min-height: 0;
	margin: 1rem 0 !important;
	padding: 0.85rem 1rem !important;
	border: 0;
	border-left: 3px solid var(--ha-primary);
	border-radius: var(--ha-radius);
	background: color-mix(in oklch, var(--ha-primary) 8%, var(--ha-surface)) !important;
	color: var(--ha-foreground) !important;
	box-shadow: none;
}
.single-product .product-type-phive_booking .booking-info-wraper p,
.single-product .product-type-phive_booking #booking_info_text {
	margin: 0 !important;
	padding: 0 !important;
	color: inherit !important;
	font-size: var(--ha-text-sm);
	line-height: 1.55;
	text-align: left !important;
}
.single-product .product-type-phive_booking .callender-error-msg {
	min-height: 0;
	margin: 0.5rem 0 0;
	color: var(--ha-destructive, #9f3b32);
	font-size: var(--ha-text-sm);
	line-height: 1.5;
}

/*
 * PluginHive time slots
 *
 * The plugin writes blue backgrounds, percentage widths and large outer
 * margins inline. The stronger selectors are intentional: they keep the
 * booking logic untouched while presenting each available time as a compact,
 * accessible HerzART option.
 */
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.75rem;
	max-height: none !important;
	margin: 0.85rem 0 0 !important;
	padding: 0 !important;
	overflow: visible !important;
	background: transparent !important;
}
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.ph-calendar-date {
	display: flex !important;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	gap: 0.2rem;
	width: 100% !important;
	min-height: 4.5rem !important;
	margin: 0 !important;
	padding: 0.8rem 1rem !important;
	border: 1px solid var(--ha-border) !important;
	border-radius: var(--ha-radius) !important;
	background: var(--ha-background) !important;
	color: var(--ha-foreground) !important;
	box-shadow: none !important;
	text-align: left !important;
	transition:
		border-color var(--ha-dur-fast) var(--ha-ease-standard),
		background-color var(--ha-dur-fast) var(--ha-ease-standard),
		color var(--ha-dur-fast) var(--ha-ease-standard);
}
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.ph-calendar-date:hover {
	border-color: var(--ha-primary) !important;
	background: color-mix(in oklch, var(--ha-primary) 7%, var(--ha-background)) !important;
}
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready .ph_calendar_time {
	display: block;
	color: inherit !important;
	font-family: var(--ha-font-body);
	font-size: var(--ha-text-base);
	font-weight: 650;
	line-height: 1.35;
}
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready .ph_calendar_time font {
	color: inherit !important;
	font-size: inherit !important;
}
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready .ph_bookings_capacity {
	display: block;
	color: var(--ha-muted-foreground) !important;
	font-size: var(--ha-text-xs) !important;
	font-weight: 500;
	line-height: 1.4;
}
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready .ph_bookings_capacity br {
	display: none;
}
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.selected-date,
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.timepicker-selected-date {
	border-color: var(--ha-primary) !important;
	background: var(--ha-primary) !important;
	color: var(--ha-primary-foreground) !important;
}
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.selected-date .ph_bookings_capacity,
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.timepicker-selected-date .ph_bookings_capacity {
	color: color-mix(in oklch, var(--ha-primary-foreground) 78%, transparent) !important;
}
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.selected-date:hover,
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.timepicker-selected-date:hover {
	border-color: var(--ha-primary-hover) !important;
	background: var(--ha-primary-hover) !important;
	color: var(--ha-primary-foreground) !important;
}
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.booking-full,
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.de-active,
body.single-product #page-container .product-type-phive_booking
	#ph-calendar-time.ha-time-slots-ready li.not-available {
	border-color: var(--ha-border) !important;
	background: var(--ha-surface) !important;
	color: var(--ha-muted-foreground) !important;
	cursor: not-allowed;
	opacity: 0.58;
}

/*
 * "Keramik malen zu Hause" books a seven-day loan and therefore correctly
 * uses PluginHive's full date picker instead of the smaller time calendar.
 * Only this product gets a denser month view; its seven-day booking logic is
 * unchanged.
 */
body.postid-2193 .date-picker-wraper .ph-calendar-container {
	max-width: 34rem;
	margin-right: auto !important;
	margin-left: 0 !important;
}
body.postid-2193 .date-picker-wraper .ph-calendar-days li {
	min-height: 2.9rem !important;
	padding: 0.45rem 0.2rem !important;
}
body.postid-2193 .date-picker-wraper .ph-calendar-days li.ha-home-kit-closed {
	border-color: color-mix(in oklch, var(--ha-border) 65%, transparent) !important;
	background: color-mix(in oklch, var(--ha-surface) 55%, white) !important;
	color: var(--ha-muted-foreground) !important;
	cursor: not-allowed !important;
	opacity: 0.62;
}
body.postid-2193 .date-picker-wraper .ph-calendar-days li.ha-home-kit-unavailable {
	border-color: var(--ha-border) !important;
	background: var(--ha-surface) !important;
	color: var(--ha-muted-foreground) !important;
	cursor: not-allowed !important;
	opacity: 0.82;
}
body.postid-2193 .date-picker-wraper .ph-calendar-days li.ha-home-kit-closed:hover,
body.postid-2193 .date-picker-wraper .ph-calendar-days li.ha-home-kit-unavailable:hover {
	background: inherit !important;
	color: var(--ha-muted-foreground) !important;
}
/*
 * Geschlossene Abholtage dürfen innerhalb einer bereits gewählten Ausleihe
 * liegen. Die Auswahl hat deshalb visuell Vorrang vor ihrem Ruhezustand.
 */
body.postid-2193 .date-picker-wraper .ph-calendar-days li.selected-date,
body.postid-2193 .date-picker-wraper .ph-calendar-days li.selected-date:hover {
	border-color: var(--ha-primary) !important;
	background: var(--ha-primary) !important;
	color: var(--ha-primary-foreground) !important;
	opacity: 1 !important;
}
body.postid-2193 .date-picker-wraper .ph-calendar-days li.selected-date
	.ph_bookings_capacity {
	color: inherit !important;
}
body.postid-2193 .date-picker-wraper .ph-calendar-days .ph_bookings_capacity {
	display: block;
	margin-top: 0.15rem;
	font-size: 0.68rem !important;
	line-height: 1.15;
}
.ha-home-kit-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 0.55rem 1rem;
	margin-top: 0.75rem;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-sm);
}
.ha-home-kit-legend span {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
}
.ha-home-kit-legend i {
	width: 0.75rem;
	height: 0.75rem;
	border: 1px solid var(--ha-border);
	border-radius: 0.2rem;
	background: var(--ha-primary);
}
.ha-home-kit-legend .ha-home-kit-legend__unavailable {
	background: var(--ha-surface);
}
.ha-home-kit-legend .ha-home-kit-legend__closed {
	background: color-mix(in oklch, var(--ha-surface) 55%, white);
	opacity: 0.62;
}

@media (max-width: 560px) {
	body.single-product #page-container .product-type-phive_booking
		#ph-calendar-time.ha-time-slots-ready {
		grid-template-columns: 1fr;
	}
	body.postid-2193 .date-picker-wraper .ph-calendar-container {
		max-width: 100%;
	}
}

.single-product .product-type-phive_booking .ph_book_now_button {
	float: none !important;
	margin: 1rem 0 0 !important;
	border: 1px solid var(--ha-primary) !important;
	border-radius: var(--ha-radius) !important;
	padding: 0.85rem 1.4rem !important;
	background: var(--ha-primary) !important;
	color: var(--ha-primary-foreground) !important;
	font-family: var(--ha-font-body);
	font-size: var(--ha-text-base) !important;
	font-weight: 650;
	line-height: 1.25 !important;
}
.single-product .product-type-phive_booking .ph_book_now_button:hover {
	border-color: var(--ha-primary-hover) !important;
	background: var(--ha-primary-hover) !important;
	padding: 0.85rem 1.4rem !important;
}
.single-product .product-type-phive_booking .ph_book_now_button.disabled {
	cursor: not-allowed;
	opacity: 0.45;
}

/* Cart never shown: hide the header cart icon + the "added to cart" notice */
#main-header .et-cart-info,
#et-top-navigation .et-cart-info,
a.et-cart-info { display: none !important; }
.ha-booking .woocommerce-message,
.ha-booking .woocommerce-notices-wrapper .woocommerce-message { display: none !important; }

/* ============================================================
   Catalog mode ("Unsere Produkte" — display only, Anfragen)
   ============================================================ */
.ha-anfrage { margin-top: 1.25rem; }
#page-container .ha-anfrage-btn {
	display: inline-block; font-family: var(--ha-font-body);
	font-size: var(--ha-text-base); font-weight: 500; line-height: 1.2;
	padding: 0.95rem 1.75rem; border-radius: var(--ha-radius);
	background: var(--ha-primary); color: var(--ha-primary-foreground);
	border: 1px solid var(--ha-primary); text-decoration: none;
	transition: background var(--ha-dur-base) var(--ha-ease-standard);
}
#page-container .ha-anfrage-btn:hover { background: var(--ha-primary-hover); color: var(--ha-primary-foreground); }
#page-container .ha-anfrage-btn:focus-visible { outline: 2px solid var(--ha-ring); outline-offset: 2px; }
.ha-anfrage-hint {
	margin: 0.75rem 0 0; font-size: var(--ha-text-sm);
	color: var(--ha-muted-foreground); max-width: 40ch;
}
/* Product loop: quiet "Ansehen" outline button */
#page-container .ha-loop-view {
	background: transparent !important; color: var(--ha-foreground) !important;
	border: 1px solid var(--ha-border) !important; border-radius: var(--ha-radius) !important;
	transition: background var(--ha-dur-base) var(--ha-ease-standard);
}
#page-container .ha-loop-view:hover { background: var(--ha-surface) !important; }
.ha-catalog-price {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h3);
	color: var(--ha-foreground); margin: 0 0 1rem;
}
.ha-catalog-price .amount { font-family: var(--ha-font-display); }
/* A global rule hides .woocommerce-Price-amount; force it back on for our
   catalog price (and product loop cards). */
#page-container .ha-catalog-price .woocommerce-Price-amount,
#page-container ul.products .price .woocommerce-Price-amount { display: inline !important; }

/* WooCommerce wraps category counts in <mark> -> browser default is yellow.
   Quiet it to a muted, unhighlighted count. */
#page-container mark.count,
#page-container .woocommerce-loop-category__title mark {
	background: transparent; color: var(--ha-muted-foreground); font-weight: 400;
}

/* ============================================================
   Anlässe (Gruppen-Erlebnisse) + Anfrage-/Kontaktformular
   ============================================================ */
.ha-anlaesse-intro { max-width: 46rem; margin: 0 0 2.5rem; }
.ha-anlaesse-intro h1 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-display);
	line-height: 1.05; font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.4em;
}
.ha-anlaesse-intro p { font-size: var(--ha-text-lead); color: var(--ha-muted-foreground); margin: 0; }

.ha-anlass-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
@media (max-width: 900px) { .ha-anlass-grid { grid-template-columns: 1fr; } }
.ha-anlass-card {
	display: flex; flex-direction: column; align-items: flex-start; gap: 0.75rem;
	background: var(--ha-surface); border: 1px solid var(--ha-border);
	border-radius: var(--ha-radius-lg); padding: clamp(1.5rem, 3vw, 2.25rem);
}
.ha-anlass-card h2 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h3);
	font-weight: 500; color: var(--ha-foreground); margin: 0;
}
.ha-anlass-card p { font-size: var(--ha-text-base); line-height: 1.55; color: var(--ha-muted-foreground); margin: 0; flex: 1; }
.ha-anlass-card .ha-anfrage-btn { margin-top: 0.5rem; }

/* Form */
.ha-form { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.25rem; margin-top: 1.5rem; }
.ha-field { display: flex; flex-direction: column; gap: 0.35rem; }
.ha-field--full { grid-column: 1 / -1; }
.ha-field span { font-size: var(--ha-text-sm); font-weight: 500; color: var(--ha-foreground); }
.ha-form input, .ha-form select, .ha-form textarea {
	width: 100%; font-family: var(--ha-font-body); font-size: var(--ha-text-base);
	color: var(--ha-foreground); background: var(--ha-background);
	border: 1px solid var(--ha-border); border-radius: var(--ha-radius);
	padding: 0.7rem 0.9rem;
}
.ha-form input:focus, .ha-form select:focus, .ha-form textarea:focus {
	outline: 2px solid var(--ha-ring); outline-offset: 1px; border-color: var(--ha-primary);
}
.ha-form .ha-anfrage-btn { grid-column: 1 / -1; justify-self: start; border: 0; cursor: pointer; }
@media (max-width: 640px) { .ha-form { grid-template-columns: 1fr; } }
#page-container .ha-form-note {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 3.5rem;
	margin: 0 0 1.25rem;
	padding: 0.9rem 1.15rem;
	border: 1px solid transparent;
	border-radius: var(--ha-radius);
	font-size: var(--ha-text-sm);
	font-weight: 500;
	line-height: 1.45;
	text-align: center;
}
#page-container .ha-form-note[hidden] { display: none !important; }
#page-container .ha-form-note--ok {
	border-color: color-mix(in oklch, var(--ha-accent) 38%, var(--ha-border));
	background: color-mix(in oklch, var(--ha-accent) 12%, var(--ha-background));
	color: var(--ha-foreground);
}
#page-container .ha-form-note--err {
	border-color: color-mix(in oklch, var(--ha-destructive) 30%, var(--ha-border));
	background: color-mix(in oklch, var(--ha-destructive) 9%, var(--ha-background));
	color: var(--ha-foreground);
}
#page-container .ha-form .ha-anfrage-btn:disabled {
	cursor: wait;
	opacity: 0.65;
}

/* Anlass cards with real photo + price */
.ha-anlass-img {
	display: block; overflow: hidden; border-radius: var(--ha-radius);
	aspect-ratio: 4 / 3; margin: 0 0 0.25rem;
}
.ha-anlass-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ha-anlass-lead { font-size: var(--ha-text-base); color: var(--ha-foreground); margin: 0; font-weight: 500; }
.ha-anlass-meta { font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); margin: 0; }
.ha-anlass-price {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h4);
	color: var(--ha-foreground); margin: 0; display: flex; flex-direction: column; flex: 0;
}
.ha-anlass-price span { font-family: var(--ha-font-body); font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); font-weight: 400; }
.ha-anlass-note {
	max-width: 52rem; margin: 2rem auto 0; text-align: center;
	font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); line-height: 1.55;
}
/* card: let the description/lead grow so buttons align */
.ha-anlass-card .ha-anlass-lead { flex: 1 0 auto; }

/* Anlass card images must fill the card width (flex-start would shrink them) */
.ha-anlass-card { align-items: stretch; }
.ha-anlass-img { width: 100%; align-self: stretch; }
.ha-anlass-card h2, .ha-anlass-card .ha-anfrage-btn { align-self: flex-start; }

/* Force full-width Anlass images (beat Divi's #page-container specificity) */
#page-container .ha-anlass-card { display: flex; flex-direction: column; align-items: stretch; }
#page-container .ha-anlass-img { width: 100% !important; display: block; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--ha-radius); }
#page-container .ha-anlass-img img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; }
#page-container .ha-anlass-card h2,
#page-container .ha-anlass-card .ha-anfrage-btn { align-self: flex-start; }

/* Equal Anlass columns (1fr shrinks to content in Divi -> force minmax(0,1fr)) */
#page-container .ha-anlass-grid { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)) !important; gap: 1.5rem; }
@media (max-width: 900px) { #page-container .ha-anlass-grid { grid-template-columns: 1fr !important; } }

/* ============================================================
   Unsere Angebote — stacked full-width sections (image + text)
   ============================================================ */
#page-container .ha-angebote-intro { max-width: 46rem; margin: 0 0 2rem; }
.ha-angebote-intro p { font-size: var(--ha-text-lead); color: var(--ha-muted-foreground); margin: 0; }
#page-container .ha-angebot {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(1.5rem, 4vw, 3.5rem); align-items: start;
	padding: clamp(2.5rem, 5vw, 4rem) 0;
}
#page-container .ha-angebot[id] { scroll-margin-top: 11rem; }
body.ha-has-holiday-bar #page-container .ha-angebot[id] {
	scroll-margin-top: calc(11rem + var(--ha-holiday-bar-height, 2.75rem));
}
#page-container .ha-angebot + .ha-angebot { border-top: 1px solid var(--ha-border); }
/* first offer sits right under the hero — no extra top padding stacking */
#page-container .ha-angebote .ha-angebot:first-child { padding-top: 0; }
#page-container .ha-angebot--flip .ha-angebot-media { order: 2; }
#page-container .ha-angebot-media {
	position: sticky;
	top: 8rem;
	align-self: start;
}
#page-container .ha-angebot-media img {
	width: 100% !important; height: auto; display: block; border-radius: var(--ha-radius-lg);
}
.ha-angebot-body h2 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h2);
	font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.5rem;
}
/* two-image composition (main + layered inset), like the homepage hero */
#page-container .ha-angebot-duo { position: relative; padding: 0 2.25rem 2.25rem 0; }
#page-container .ha-angebot-duo .main {
	width: 100% !important; aspect-ratio: 4 / 3; object-fit: cover;
	border-radius: var(--ha-radius-lg); box-shadow: var(--ha-shadow-md); display: block;
}
#page-container .ha-angebot-duo .inset {
	position: absolute; right: 0; bottom: 0; width: 46% !important; aspect-ratio: 1 / 1;
	object-fit: cover; border-radius: var(--ha-radius-lg); box-shadow: var(--ha-shadow-lg);
	outline: 5px solid var(--ha-background); display: block;
}

/* Standorte map embed (replaces the location photo) */
#page-container .ha-map { width: 100%; aspect-ratio: 4 / 3; border: 0; border-radius: var(--ha-radius-lg); display: block; }
.ha-angebot-lead { font-size: var(--ha-text-lead); line-height: 1.5; color: var(--ha-foreground); margin: 0 0 0.75rem; }
.ha-angebot-body h4 {
	font-family: var(--ha-font-body); font-size: var(--ha-text-sm); font-weight: 600;
	text-transform: uppercase; letter-spacing: 0.06em; color: var(--ha-primary);
	margin: 1.1rem 0 0.2rem;
}
.ha-angebot-body p { font-size: var(--ha-text-base); line-height: 1.6; color: var(--ha-muted-foreground); margin: 0; }
.ha-angebot-note { font-style: italic; margin-top: 1rem !important; }
.ha-angebot-body .ha-anfrage-btn { margin-top: 1.5rem; }
.ha-angebot-body .ha-ed-actions { margin-top: 1.5rem; }
.ha-angebot-body .ha-ed-actions .ha-anfrage-btn { margin-top: 0; }
.ha-teamevent-copy { margin-top: clamp(2rem, 4vw, 3rem); }
.ha-teamevent-copy > h3 {
	margin: 0 0 0.65rem;
	color: var(--ha-foreground);
	font-family: var(--ha-font-display);
	font-size: var(--ha-text-h3);
	font-weight: 500;
	line-height: 1.2;
}
.ha-teamevent-copy p {
	margin: 0;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-base);
	line-height: 1.6;
}
.ha-teamevent-copy p + p { margin-top: 0.65rem; }
.ha-teamevent-formats { margin-top: 1.5rem; border-top: 1px solid var(--ha-border); }
.ha-teamevent-format { border-bottom: 1px solid var(--ha-border); }
.ha-teamevent-format summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1rem 0;
	color: var(--ha-primary);
	font-family: var(--ha-font-body);
	font-size: var(--ha-text-sm);
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	cursor: pointer;
	list-style: none;
}
.ha-teamevent-format summary::-webkit-details-marker { display: none; }
.ha-teamevent-format summary::after {
	content: "";
	flex: 0 0 auto;
	width: 1rem;
	height: 1rem;
	background:
		linear-gradient(currentColor, currentColor) center / 100% 2px no-repeat,
		linear-gradient(currentColor, currentColor) center / 2px 100% no-repeat;
	transform-origin: center;
	transition: transform 180ms ease;
}
.ha-teamevent-format[open] summary::after { transform: rotate(45deg); }
.ha-teamevent-format summary:focus-visible { outline: 2px solid var(--ha-primary); outline-offset: 4px; }
.ha-teamevent-format__content { padding: 0 0 1.25rem; }
.ha-teamevent-format .ha-teamevent-lead { color: var(--ha-foreground); font-weight: 500; }
.ha-teamevent-details { display: grid; gap: 0.55rem; margin: 1rem 0 0; }
.ha-teamevent-details > div { display: grid; grid-template-columns: minmax(7rem, 0.35fr) 1fr; gap: 1rem; }
.ha-teamevent-details dt { color: var(--ha-foreground); font-size: var(--ha-text-sm); font-weight: 600; }
.ha-teamevent-details dd { margin: 0; color: var(--ha-muted-foreground); font-size: var(--ha-text-base); }
@media (max-width: 600px) {
	.ha-teamevent-details > div { grid-template-columns: 1fr; gap: 0.1rem; }
}
@media (max-width: 820px) {
	#page-container .ha-angebot { grid-template-columns: 1fr; gap: 1.5rem; }
	#page-container .ha-angebot--flip .ha-angebot-media { order: 0; }
	#page-container .ha-angebot-media { position: static; }
}

/* ============================================================
   Standorte — two location panels (own layout, brand style)
   ============================================================ */
#page-container .ha-standorte-intro { max-width: 44rem; margin: 0 0 2.5rem; }
.ha-standorte-intro p { font-size: var(--ha-text-lead); color: var(--ha-muted-foreground); margin: 0; }
#page-container .ha-standorte { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(1.5rem, 4vw, 3rem); }
@media (max-width: 1080px) { #page-container .ha-standorte { grid-template-columns: 1fr; } }
#page-container .ha-standort {
	display: flex; flex-direction: column;
	background: var(--ha-card); border: 1px solid var(--ha-border);
	border-radius: var(--ha-radius-lg); overflow: hidden;
}
#page-container .ha-standort-img { display: block; aspect-ratio: 3 / 2; overflow: hidden; }
#page-container .ha-standort-img img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; }
.ha-standort h2 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h3); font-weight: 500;
	color: var(--ha-foreground); margin: 0; padding: 1.5rem 1.5rem 0;
}
.ha-standort-role { color: var(--ha-primary); font-size: var(--ha-text-sm); font-weight: 600; margin: 0.3rem 0 0; padding: 0 1.5rem; }
.ha-standort-info { margin: 1.25rem 0 0; padding: 0 1.5rem; display: grid; grid-template-columns: max-content 1fr; gap: 0.6rem 1.25rem; }
.ha-standort-info dt { font-size: var(--ha-text-xs); text-transform: uppercase; letter-spacing: 0.06em; color: var(--ha-muted-foreground); padding-top: 0.15rem; }
.ha-standort-info dd { margin: 0; font-size: var(--ha-text-base); line-height: 1.5; color: var(--ha-foreground); }
.ha-standort-info a { color: var(--ha-primary); text-decoration: none; }
.ha-standort-info a:hover { text-decoration: underline; }
.ha-standort .ha-anfrage-btn { margin: 1.5rem; align-self: flex-start; }

/* ============================================================
   Unified page hero — make all subpages feel like the homepage
   ============================================================ */
/* hide Divi's default page title (Oswald) — pages get a proper hero instead */
body.page h1.entry-title.main_title { display: none !important; }
/* Surface fades into the page canvas (like the homepage hero -> paths flow),
   so there is no hard seam between the hero band and the first content section. */
#page-container .ha-page-hero-sec {
	background: linear-gradient(to bottom, var(--ha-surface) 0%, var(--ha-background) 100%) !important;
	/* zero the section padding on every page (Divi's default 57px leaked on
	   some pages) so the hero spacing is identical everywhere; the inner div
	   owns the vertical rhythm. */
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}
.ha-page-hero-inner { padding: clamp(2.75rem, 6vw, 4.5rem) 0 clamp(0.75rem, 2vw, 1.5rem); }
/* Tighten the space between hero and first content section (hero padding +
   section padding + first-row padding were stacking into too big a gap). */
#page-container .ha-page-hero-sec + .et_pb_section {
	padding-top: clamp(1.5rem, 3.5vw, 2.75rem) !important;
}
#page-container .ha-page-hero-sec + .et_pb_section > .et_pb_row:first-child {
	padding-top: 0 !important;
}
.ha-page-hero-inner h1 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h1);
	line-height: 1.1; font-weight: 500; color: var(--ha-foreground); margin: 0;
}
.ha-page-hero-lede {
	font-size: var(--ha-text-lead); line-height: 1.5; color: var(--ha-muted-foreground);
	max-width: 46rem; margin: 1rem 0 0;
}
/* centred hero — only on pages whose content below is symmetric
   (Anlässe card grid, Öffnungszeiten hours grid) */
.ha-page-hero-inner.ha-hero-center { text-align: center; }
.ha-hero-center .ha-page-hero-lede { margin-left: auto; margin-right: auto; }

/* Öffnungszeiten section on Standorte (hours merged in from the old page) */
#page-container .ha-hours-sec { scroll-margin-top: 6rem; }
.ha-hours-sec h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h2); line-height: 1.15; font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.4rem; }
.ha-hours-sec .ha-hours-lede { font-size: var(--ha-text-base); color: var(--ha-muted-foreground); margin: 0 0 0.5rem; }

/* Öffnungszeiten (shortcode output) */
#page-container .ha-hours-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.5rem; margin-top: 1.5rem; }
@media (max-width: 820px) { #page-container .ha-hours-grid { grid-template-columns: 1fr; } }
.ha-hours-loc h3 { font-family: var(--ha-font-display); font-size: var(--ha-text-h3); font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.5rem; }
.ha-hours-loc p { font-size: var(--ha-text-base); line-height: 1.9; color: var(--ha-foreground); margin: 0; }

/* Ferien notice shortcode */
.ha-ferien-banner {
	background: color-mix(in oklch, var(--ha-accent) 16%, transparent);
	color: var(--ha-foreground); border-left: 3px solid var(--ha-accent);
	border-radius: var(--ha-radius); padding: 0.9rem 1.15rem; margin: 0 0 1.5rem;
	font-size: var(--ha-text-base); line-height: 1.5;
}

.ha-booking-holiday {
	margin: 0 0 1.25rem;
	padding: 0.9rem 1rem;
	border-left: 3px solid var(--ha-accent);
	border-radius: var(--ha-radius);
	background: color-mix(in oklch, var(--ha-accent) 14%, transparent);
	color: var(--ha-foreground);
	font-size: var(--ha-text-sm);
	line-height: 1.55;
}

/* Site-wide Ferien bar above Divi's fixed header */
.ha-holiday-bar {
	position: sticky; top: 0; z-index: 100001;
	background: var(--ha-primary); color: var(--ha-primary-foreground);
}
.ha-holiday-bar__inner {
	max-width: var(--container-wide); min-height: 2.75rem; margin-inline: auto;
	padding: 0.65rem clamp(1.25rem, 5vw, 3rem);
	display: flex; align-items: center; justify-content: center;
	text-align: center;
	font-size: var(--ha-text-sm); line-height: 1.4;
}
body.ha-has-holiday-bar #main-header {
	top: var(--ha-holiday-bar-height, 2.75rem) !important;
}
.admin-bar .ha-holiday-bar { top: 32px; }
.admin-bar.ha-has-holiday-bar #main-header {
	top: calc(32px + var(--ha-holiday-bar-height, 2.75rem)) !important;
}
@media (max-width: 782px) {
	.admin-bar .ha-holiday-bar { top: 46px; }
	.admin-bar.ha-has-holiday-bar #main-header {
		top: calc(46px + var(--ha-holiday-bar-height, 2.75rem)) !important;
	}
}

/* Optional catering enquiry on Weisslingen booking products. */
.ha-catering {
	margin: 1.5rem 0;
	padding: clamp(1.15rem, 3vw, 1.6rem);
	border: 1px solid color-mix(in oklch, var(--ha-primary) 30%, var(--ha-border));
	border-radius: var(--ha-radius-lg);
	background: color-mix(in oklch, var(--ha-primary) 6%, var(--ha-surface));
}
.ha-catering h3 {
	margin: 0 0 0.55rem;
	color: var(--ha-foreground);
	font-family: var(--ha-font-display);
	font-size: var(--ha-text-h4);
	font-weight: 500;
	line-height: 1.25;
}
.ha-catering__lead,
.ha-catering__fine {
	margin: 0 0 0.9rem;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-sm);
	line-height: 1.55;
}
.ha-catering__toggle {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	color: var(--ha-foreground);
	font-size: var(--ha-text-sm) !important;
	font-weight: 600;
	line-height: 1.35;
	cursor: pointer;
}
.ha-catering__toggle span { font-size: inherit !important; line-height: inherit; }
.ha-catering__toggle input {
	flex: 0 0 auto;
	width: 1.1rem;
	height: 1.1rem;
	margin: 0;
	accent-color: var(--ha-primary);
}
.ha-catering__details {
	display: grid;
	gap: 0.5rem;
	margin-top: 1rem;
	padding-top: 1rem;
	border-top: 1px solid var(--ha-border);
}
.ha-catering__details[hidden] { display: none; }
.ha-catering__prices-link {
	margin: 0 0 0.35rem;
	font-size: var(--ha-text-sm);
}
.ha-catering__prices-link a,
.ha-booking-price-link a {
	color: var(--ha-primary);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 0.16em;
}
.ha-catering__details label {
	color: var(--ha-foreground);
	font-size: var(--ha-text-sm);
	font-weight: 600;
}
.ha-catering__details select,
.ha-catering__details textarea {
	width: 100%;
	padding: 0.75rem;
	border: 1px solid var(--ha-border);
	border-radius: var(--ha-radius);
	background: var(--ha-background);
	color: var(--ha-foreground);
	font: inherit;
}
.ha-catering__details select:focus,
.ha-catering__details textarea:focus {
	outline: 2px solid color-mix(in oklch, var(--ha-primary) 45%, transparent);
	outline-offset: 2px;
}
.ha-catering__error {
	margin: 0;
	padding: 0.65rem 0.75rem;
	border-left: 3px solid var(--ha-destructive);
	border-radius: var(--ha-radius-sm);
	background: color-mix(in oklch, var(--ha-destructive) 8%, transparent);
	color: var(--ha-destructive);
	font-size: var(--ha-text-sm);
	line-height: 1.45;
}
.ha-catering__error[hidden] { display: none; }
.ha-catering__fine { margin: 0.25rem 0 0; }

/* Catering-Pakete auf Angebotsseite, Landingpage und im Buchungsformular. */
.ha-catering-section { background: var(--ha-surface); }
#page-container .ha-angebote { padding-bottom: clamp(1rem, 2vw, 2rem) !important; }
.ha-catering-promo {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: clamp(1.5rem, 3vw, 2.5rem) 0 clamp(3rem, 6vw, 5rem);
	scroll-margin-top: 7rem;
}
.ha-catering-promo__eyebrow {
	margin: 0 0 0.65rem;
	color: var(--ha-primary);
	font-size: var(--ha-text-sm);
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
.ha-catering-promo h2 {
	margin: 0 0 0.75rem;
	color: var(--ha-foreground);
	font-family: var(--ha-font-display);
	font-size: var(--ha-text-h2);
	font-weight: 500;
	line-height: 1.15;
}
.ha-catering-promo__lead {
	max-width: 48rem;
	margin: 0 0 2rem;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-lead);
	line-height: 1.6;
}
.ha-catering-packages {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(1rem, 2.5vw, 1.5rem);
}
.ha-catering-card {
	display: flex;
	min-width: 0;
	flex-direction: column;
	padding: clamp(1.25rem, 3vw, 1.75rem);
	border: 1px solid var(--ha-border);
	border-radius: var(--ha-radius-lg);
	background: var(--ha-background);
}
.ha-catering-card h3 {
	margin: 0 0 0.65rem;
	color: var(--ha-foreground);
	font-family: var(--ha-font-display);
	font-size: var(--ha-text-h4);
	font-weight: 500;
	line-height: 1.25;
}
.ha-catering-card p {
	margin: 0 0 1rem;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-sm);
	line-height: 1.55;
}
.ha-catering-card .ha-catering-card__price {
	margin: auto 0 0;
	padding-top: 0.5rem;
	color: var(--ha-primary);
	font-weight: 600;
}
.ha-catering-promo__note {
	margin: 1.25rem 0 0;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-sm);
}
.ha-catering-promo__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin-top: 1.5rem;
}
.ha-catering-packages--compact {
	grid-template-columns: 1fr;
	gap: 0.65rem;
	margin: 0 0 0.75rem;
}
.ha-catering-packages--compact .ha-catering-card { padding: 0.9rem 1rem; }
.ha-catering-packages--compact .ha-catering-card h3 { font-size: var(--ha-text-base); }
.ha-catering-packages--compact .ha-catering-card p { margin-bottom: 0.45rem; }
.ha-catering-packages--compact .ha-catering-card .ha-catering-card__price { margin-top: 0; padding-top: 0; }
.ha-catering-teaser {
	margin: 1.25rem 0 0;
	padding: 1rem 1.15rem;
	border-left: 3px solid var(--ha-primary);
	border-radius: var(--ha-radius);
	background: color-mix(in oklch, var(--ha-primary) 7%, var(--ha-surface));
}
.ha-catering-teaser strong { color: var(--ha-foreground); }
.ha-catering-teaser p { margin: 0.25rem 0 0.4rem; }
.ha-catering-teaser a { color: var(--ha-primary); font-weight: 600; text-decoration: underline; text-underline-offset: 0.15em; }
@media (max-width: 820px) {
	.ha-catering-packages { grid-template-columns: 1fr; }
}

/* Ruhiger Catering-Hinweis im Teamevent-Bereich der Startseite. */
.ha-anl-catering {
	display: flex;
	align-items: flex-start;
	flex-direction: column;
	gap: 0.85rem;
	width: 100%;
	margin-top: 0.25rem;
	padding: 1.15rem 0;
	border-top: 1px solid var(--ha-border);
	border-bottom: 1px solid var(--ha-border);
}
.ha-anl-catering__copy { max-width: 35rem; }
.ha-anl-catering__eyebrow {
	display: block;
	margin-bottom: 0.2rem;
	color: var(--ha-primary);
	font-size: var(--ha-text-xs);
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}
.ha-anl-catering p {
	margin: 0;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-sm);
	line-height: 1.55;
}
.ha-anl-catering .ha-anfrage-btn { margin: 0; }

/* Zentrale Preisseite. */
.ha-price-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 0.65rem;
	margin: 0;
}
.ha-price-nav a {
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	padding: 0.6rem 1rem;
	border: 1px solid var(--ha-border);
	border-radius: var(--ha-radius-pill);
	background: var(--ha-background);
	color: var(--ha-foreground);
	font-size: var(--ha-text-sm);
	font-weight: 600;
	text-decoration: none;
}
.ha-price-nav a:hover,
.ha-price-nav a:focus-visible {
	border-color: var(--ha-primary);
	color: var(--ha-primary);
}
.ha-prices-section { scroll-margin-top: 7rem; }
.ha-prices-section--surface { background: var(--ha-surface) !important; }
.ha-prices-grid {
	display: grid;
	grid-template-columns: minmax(0, 0.85fr) minmax(20rem, 1.15fr);
	gap: clamp(2rem, 6vw, 5rem);
	align-items: start;
}
.ha-prices-copy h2 {
	margin: 0 0 0.8rem;
	color: var(--ha-foreground);
	font-family: var(--ha-font-display);
	font-size: var(--ha-text-h2);
	font-weight: 500;
	line-height: 1.15;
}
.ha-prices-copy p {
	max-width: 42rem;
	margin: 0;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-lead);
	line-height: 1.6;
}
.ha-prices-range {
	display: inline-block;
	margin-top: 1.15rem;
	color: var(--ha-primary);
	font-size: var(--ha-text-h4);
	font-weight: 600;
}
.ha-price-list { margin: 0; }
.ha-price-list > div {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 1rem;
	padding: 0.9rem 0;
	border-bottom: 1px solid var(--ha-border);
}
.ha-price-list > div:first-child { border-top: 1px solid var(--ha-border); }
.ha-price-list dt { color: var(--ha-foreground); font-weight: 600; }
.ha-price-list dd { margin: 0; color: var(--ha-primary); font-weight: 600; text-align: right; }
.ha-prices-note {
	margin: 1.25rem 0 0;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-sm);
	line-height: 1.55;
}
.ha-prices-cta {
	padding: clamp(1.75rem, 4vw, 3rem);
	border-radius: var(--ha-radius-lg);
	background: var(--ha-surface);
	text-align: center;
}
.ha-prices-cta h2 {
	margin: 0 0 0.55rem;
	color: var(--ha-foreground);
	font-family: var(--ha-font-display);
	font-size: var(--ha-text-h3);
	font-weight: 500;
}
.ha-prices-cta p { margin: 0 auto 1.25rem; color: var(--ha-muted-foreground); }
.ha-prices-cta__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem; }
@media (max-width: 760px) {
	.ha-prices-grid { grid-template-columns: 1fr; }
	.ha-price-list > div { grid-template-columns: 1fr; gap: 0.25rem; }
	.ha-price-list dd { text-align: left; }
}

/* Instagram feed at the end of the homepage */
#page-container .ha-instagram { background: var(--ha-surface); }
.ha-instagram-head { text-align: center; margin: 0 auto 2rem; }
.ha-instagram-head h2 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h2);
	line-height: 1.15; font-weight: 500; color: var(--ha-foreground); margin: 0;
}

/* ============================================================
   Legal pages (Impressum / Datenschutz) — prose on the canvas
   ============================================================ */
#page-container .ha-legal .et_pb_text { max-width: 60rem; }
.ha-legal h1, .ha-legal h2, .ha-legal h3, .ha-legal h4 {
	font-family: var(--ha-font-display); color: var(--ha-foreground);
	font-weight: 500; line-height: 1.2;
}
.ha-legal h1 { font-size: var(--ha-text-h2); margin: 0 0 1rem; }
.ha-legal h2 { font-size: var(--ha-text-h3); margin: 2.25rem 0 0.75rem; }
.ha-legal h3 { font-size: var(--ha-text-h4); margin: 1.75rem 0 0.5rem; }
.ha-legal h4 { font-size: var(--ha-text-base); margin: 1.25rem 0 0.4rem; }
.ha-legal .et_pb_text h2:first-child,
.ha-legal .et_pb_text h1:first-child { margin-top: 0; }
.ha-legal p, .ha-legal li {
	font-size: var(--ha-text-base); line-height: 1.7;
	color: var(--ha-muted-foreground); margin: 0 0 1rem;
}
.ha-legal strong { color: var(--ha-foreground); font-weight: 600; }
.ha-legal a { color: var(--ha-primary); text-decoration: underline; text-underline-offset: 0.15em; }
.ha-legal ul, .ha-legal ol { padding-left: 1.25rem; margin: 0 0 1rem; }

/* Über uns intro */
.ha-ueber-intro { max-width: 46rem; margin: 0 0 1rem; }
.ha-ueber-intro h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h2); font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.5rem; }
.ha-ueber-intro p { font-size: var(--ha-text-lead); color: var(--ha-muted-foreground); margin: 0; }

/* Über uns: gemeinsames Bild und zwei Textspalten */
#page-container .ha-bio {
	display: grid;
	grid-template-columns: minmax(15rem, 0.75fr) minmax(0, 1.25fr);
	gap: clamp(2rem, 5vw, 5rem);
	align-items: start;
}
#page-container .ha-bio--flip {
	grid-template-columns: minmax(0, 1.25fr) minmax(15rem, 0.75fr);
}
#page-container .ha-bio--flip .ha-bio-media { order: 2; }
.ha-bio-media {
	position: sticky;
	top: 8rem;
	overflow: hidden;
	border-radius: var(--ha-radius-lg);
}
#page-container .ha-bio-media img {
	display: block;
	width: 100% !important;
	aspect-ratio: 4 / 5;
	object-fit: cover;
}
.ha-bio-copy {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 1rem;
	max-width: 66ch;
}
.ha-bio-kicker {
	margin: 0;
	color: var(--ha-primary);
	font-size: var(--ha-text-xs);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.ha-bio-copy h2 {
	margin: 0;
	color: var(--ha-foreground);
	font-family: var(--ha-font-display);
	font-size: var(--ha-text-h2);
	font-weight: 500;
	line-height: 1.15;
}
.ha-bio-copy .ha-bio-lead {
	margin: 0 0 0.35rem;
	color: var(--ha-foreground);
	font-family: var(--ha-font-display);
	font-size: var(--ha-text-h3);
	line-height: 1.35;
}
.ha-bio-copy > p {
	margin: 0;
	color: var(--ha-muted-foreground);
	font-size: var(--ha-text-base);
	line-height: 1.75;
}
.ha-bio-copy .ha-bio-quote {
	margin-top: 0.75rem;
	padding-left: 1.25rem;
	border-left: 1px solid var(--ha-primary);
	color: var(--ha-foreground);
	font-family: var(--ha-font-display);
	font-size: var(--ha-text-lead);
	font-style: italic;
	line-height: 1.5;
}
@media (max-width: 900px) {
	#page-container .ha-bio,
	#page-container .ha-bio--flip { grid-template-columns: 1fr; gap: 1.75rem; }
	#page-container .ha-bio--flip .ha-bio-media { order: 0; }
	.ha-bio-media { position: static; max-width: 32rem; }
}

/* ============================================================
   Editorial alternating rows — shared subpage system
   (Standorte, Anlässe, Über uns) — mirrors the React prototype:
   big image + copy, image side alternates per row, generous gaps.
   Each row is its own Divi row so scroll-reveal staggers them.
   ============================================================ */
#page-container .ha-ed-row {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(1.5rem, 4vw, 4rem); align-items: center;
}
#page-container .ha-ed-row--flip .ha-ed-media { order: 2; }
.ha-ed-media { position: relative; overflow: hidden; border-radius: var(--ha-radius-lg); }
#page-container .ha-ed-media img {
	width: 100% !important; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block;
	transition: transform var(--ha-dur-slow) var(--ha-ease-standard);
}
#page-container .ha-ed-row:hover .ha-ed-media img { transform: scale(1.03); }
.ha-ed-body { display: flex; flex-direction: column; align-items: flex-start; gap: 0.9rem; }
.ha-ed-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem 0.85rem; margin: 0; }
.ha-ed-head h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h2); line-height: 1.15; font-weight: 500; color: var(--ha-foreground); margin: 0; }
.ha-ed-tag { font-size: var(--ha-text-sm); font-weight: 600; color: var(--ha-primary); }
.ha-ed-body > p { font-size: var(--ha-text-base); line-height: 1.6; color: var(--ha-muted-foreground); margin: 0; max-width: 46ch; }
.ha-ed-body .ha-ed-lede { font-size: var(--ha-text-lead); line-height: 1.5; color: var(--ha-foreground); }
/* address line with pin motif */
.ha-ed-addr { display: flex; align-items: flex-start; gap: 0.55rem; font-size: var(--ha-text-base); color: var(--ha-muted-foreground); margin: 0; }
.ha-ed-addr .ha-pin { flex: 0 0 auto; width: 1rem; height: 1rem; margin-top: 0.28rem; color: var(--ha-primary); }
.ha-ed-addr small { display: block; font-size: var(--ha-text-sm); }
.ha-location-hours {
	width: 100%; padding-top: 0.9rem; border-top: 1px solid var(--ha-border);
}
.ha-location-hours h3 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h4);
	font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.35rem;
}
.ha-location-hours p {
	font-size: var(--ha-text-sm); line-height: 1.75;
	color: var(--ha-muted-foreground); margin: 0;
}
/* Read-only opening calendar sourced from PluginHive location assets. */
.ha-location-calendar {
	width: 100%; padding-top: 1rem; border-top: 1px solid var(--ha-border);
}
.ha-location-calendar__header {
	display: flex; justify-content: space-between; align-items: flex-end;
	gap: 0.75rem 1rem; margin-bottom: 0.85rem;
}
.ha-location-calendar__header h3 {
	font-family: var(--ha-font-display); font-size: var(--ha-text-h4);
	font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.15rem;
}
.ha-location-calendar__header p {
	font-size: var(--ha-text-sm); line-height: 1.45;
	color: var(--ha-muted-foreground); margin: 0;
}
.ha-location-calendar__controls {
	display: grid; width: 21rem; max-width: 100%; flex: 0 0 21rem;
	grid-template-columns: 2.25rem minmax(7.5rem, 1fr) 2.25rem auto;
	align-items: center; gap: 0.35rem;
}
.ha-location-calendar__controls strong {
	font-size: var(--ha-text-sm); font-weight: 600; text-align: center;
	color: var(--ha-foreground);
}
.ha-location-calendar__controls button {
	display: inline-flex; width: 2.25rem; height: 2.25rem; padding: 0;
	align-items: center; justify-content: center; box-sizing: border-box;
	border: 1px solid var(--ha-border);
	border-radius: var(--ha-radius); background: var(--ha-background);
	color: var(--ha-primary); font: inherit; line-height: 1; cursor: pointer;
}
.ha-location-calendar__controls button:hover:not(:disabled),
.ha-location-calendar__controls button:focus-visible {
	border-color: var(--ha-primary); background: var(--ha-surface);
}
.ha-location-calendar__controls button:disabled { opacity: 0.35; cursor: default; }
.ha-location-calendar__controls .ha-location-calendar__today {
	width: auto; height: 2.25rem; justify-self: center;
	padding: 0.2rem 0.65rem; border: 1px solid var(--ha-border);
	background: var(--ha-background);
	font-size: var(--ha-text-xs); font-weight: 600;
}
.ha-location-calendar__controls .ha-location-calendar__today:hover:not(:disabled),
.ha-location-calendar__controls .ha-location-calendar__today:focus-visible {
	background: var(--ha-surface);
}
.ha-location-calendar__week[hidden] { display: none !important; }
.ha-location-calendar__grid {
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.45rem;
}
.ha-location-calendar__day {
	display: flex; min-width: 0; min-height: 7.25rem; flex-direction: column;
	align-items: center; justify-content: flex-start; gap: 0.2rem;
	padding: 0.65rem 0.5rem; border: 1px solid var(--ha-border);
	border-radius: calc(var(--ha-radius) * 0.7);
	background: var(--ha-surface); color: var(--ha-muted-foreground);
}
.ha-location-calendar__weekday {
	font-size: var(--ha-text-xs); font-weight: 600; line-height: 1.2;
}
.ha-location-calendar__day time {
	font-size: var(--ha-text-sm); font-weight: 600; line-height: 1.2;
}
.ha-location-calendar__times {
	display: flex; min-width: 0; flex-direction: column; align-items: center;
	gap: 0.3rem; margin-top: 0.35rem; font-size: var(--ha-text-xs);
	line-height: 1.25; text-align: center; hyphens: auto; overflow-wrap: anywhere;
}
.ha-location-calendar__times > span { display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; }
.ha-location-calendar__times b { font-weight: 500; }
.ha-location-calendar__day.is-open {
	border-color: var(--ha-primary); background: var(--ha-primary);
	color: var(--ha-primary-foreground);
}
.ha-location-calendar__day.is-today { outline: 2px solid var(--ha-foreground); outline-offset: 2px; }
.ha-location-calendar__legend {
	display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; margin-top: 0.75rem;
	font-size: var(--ha-text-sm); color: var(--ha-muted-foreground);
}
.ha-location-calendar__legend span {
	display: inline-flex; align-items: center; padding: 0.25rem 0.55rem;
	border: 1px solid var(--ha-border); border-radius: var(--ha-radius);
	background: var(--ha-surface);
}
.ha-location-calendar__legend span.is-open {
	border-color: var(--ha-primary); background: var(--ha-primary);
	color: var(--ha-primary-foreground);
}
@media (max-width: 1080px) {
	.ha-location-calendar__header { align-items: flex-start; flex-direction: column; }
	.ha-location-calendar__controls { width: 100%; flex: 0 0 auto; grid-template-columns: 2.25rem minmax(7.5rem, 1fr) 2.25rem auto; }
	.ha-location-calendar__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.45rem; }
	.ha-location-calendar__day {
		min-height: 7rem; padding: 0.65rem 0.5rem;
	}
}
@media (max-width: 480px) {
	.ha-location-calendar__controls {
		grid-template-columns: 2.25rem minmax(0, 1fr) 2.25rem auto;
		gap: 0.25rem;
	}
	.ha-location-calendar__controls strong { font-size: 0.875rem; }
	.ha-location-calendar__controls .ha-location-calendar__today { padding-inline: 0.45rem; }
	.ha-location-calendar__grid { grid-template-columns: 1fr; }
	.ha-location-calendar__day {
		display: grid; min-height: 4.5rem; grid-template-columns: 2.75rem 4rem minmax(0, 1fr);
		align-items: center; justify-items: start; gap: 0.5rem; padding: 0.55rem 0.75rem;
	}
	.ha-location-calendar__times { align-items: flex-start; gap: 0.15rem; margin: 0; text-align: left; }
	.ha-location-calendar__times > span { justify-content: flex-start; }
}
/* feature bullet list (Angebote / Leistungen) */
.ha-ed-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.ha-ed-list li { display: flex; align-items: center; gap: 0.6rem; font-size: var(--ha-text-base); color: var(--ha-foreground); }
.ha-ed-list li::before { content: ""; flex: 0 0 auto; width: 0.4rem; height: 0.4rem; border-radius: 50%; background: color-mix(in oklch, var(--ha-primary) 60%, transparent); }
/* meta definition list (Anlässe: Gruppe / Kosten / Material) */
.ha-ed-dl { display: flex; flex-wrap: wrap; gap: 0.4rem 2.25rem; margin: 0; }
.ha-ed-dl > div { display: flex; flex-direction: column; }
.ha-ed-dl dt { font-size: var(--ha-text-sm); font-weight: 600; color: var(--ha-foreground); }
.ha-ed-dl dd { margin: 0; font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); }
/* action row (button + quiet link) */
.ha-ed-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1.25rem; margin-top: 0.35rem; }
.ha-ed-link { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--ha-text-sm); font-weight: 600; color: var(--ha-primary); text-decoration: none; }
.ha-ed-link:hover { text-decoration: underline; }
.ha-ed-note { max-width: 60ch; margin: 0; font-size: var(--ha-text-sm); color: var(--ha-muted-foreground); line-height: 1.6; }
/* Portrait media (Über uns makers) — narrower, taller crop */
.ha-ed-media--portrait { max-width: 26rem; }
#page-container .ha-ed-row .ha-ed-media--portrait { justify-self: start; }
#page-container .ha-ed-row--flip .ha-ed-media--portrait { justify-self: end; }
#page-container .ha-ed-media--portrait img { aspect-ratio: 4 / 5; }
@media (max-width: 820px) {
	#page-container .ha-ed-row { grid-template-columns: 1fr; gap: 1.5rem; }
	#page-container .ha-ed-row--flip .ha-ed-media { order: 0; }
	.ha-ed-media--portrait { max-width: none; }
}
@media (prefers-reduced-motion: reduce) {
	#page-container .ha-ed-media img { transition: none !important; }
}

/* Closing CTA band (gradient canvas + centred prompt) — like the React
   "Fragen zu einem Besuch?" / homepage gradient sections. */
.ha-cta-band { background: linear-gradient(to bottom, var(--ha-background), var(--ha-surface) 50%, var(--ha-background)) !important; }
.ha-cta-inner, .ha-cta-inner .et_pb_text_inner { text-align: center !important; }
.ha-cta-inner { max-width: 48ch; margin: 0 auto !important; }
.ha-cta-inner h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h2); line-height: 1.15; font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.6rem; }
.ha-cta-inner p { color: var(--ha-muted-foreground); font-size: var(--ha-text-base); line-height: 1.6; margin: 0 0 1.4rem; }

/* Über uns — warm quote band (display-size pull quote + CTAs) */
.ha-quote-band { background: linear-gradient(to bottom, var(--ha-background), var(--ha-surface) 50%, var(--ha-background)) !important; }
.ha-quote-inner, .ha-quote-inner .et_pb_text_inner { text-align: center !important; }
.ha-quote-inner { max-width: 40ch; margin: 0 auto !important; }
.ha-quote-inner .ha-quote { font-family: var(--ha-font-display); font-size: var(--ha-text-h1); line-height: 1.15; font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.9rem; }
.ha-quote-inner p { font-size: var(--ha-text-lead); line-height: 1.5; color: var(--ha-muted-foreground); margin: 0; }
.ha-ueber-note { max-width: 60ch; margin: 0 auto; text-align: center; font-size: var(--ha-text-sm); font-style: italic; color: var(--ha-muted-foreground); }

/* ============================================================
   Kontakt — two columns (info + image left, form card right)
   ============================================================ */
#page-container .ha-kontakt-grid {
	display: grid; grid-template-columns: 5fr 7fr;
	gap: clamp(2rem, 5vw, 4rem); align-items: start;
}
@media (max-width: 900px) { #page-container .ha-kontakt-grid { grid-template-columns: 1fr; } }
.ha-kontakt-info { display: flex; flex-direction: column; gap: 2rem; }
.ha-kontakt-media { overflow: hidden; border-radius: var(--ha-radius-lg); }
#page-container .ha-kontakt-media img { width: 100% !important; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.ha-kontakt-block h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h3); font-weight: 500; color: var(--ha-foreground); margin: 0 0 0.65rem; }
.ha-kontakt-block h2 .role { margin-left: 0.4rem; font-family: var(--ha-font-body); font-size: var(--ha-text-sm); font-weight: 600; color: var(--ha-primary); }
.ha-kontakt-block address { font-style: normal; display: flex; flex-direction: column; gap: 0.6rem; }
.ha-kontakt-block address a, .ha-kontakt-block address span { display: flex; align-items: flex-start; gap: 0.6rem; font-size: var(--ha-text-base); color: var(--ha-muted-foreground); text-decoration: none; }
.ha-kontakt-block address a:hover { color: var(--ha-foreground); }
.ha-kontakt-block .ha-ico { flex: 0 0 auto; width: 1rem; height: 1rem; margin-top: 0.28rem; color: var(--ha-primary); }
.ha-kontakt-card {
	background: var(--ha-surface); border: 1px solid var(--ha-border);
	border-radius: var(--ha-radius-lg); padding: clamp(1.5rem, 3vw, 2.25rem);
}
.ha-kontakt-card h2 { font-family: var(--ha-font-display); font-size: var(--ha-text-h3); font-weight: 500; color: var(--ha-foreground); margin: 0 0 1.25rem; }
.ha-kontakt-card .ha-form { margin-top: 0; }
