/*
 * Genusswelt – Theme-Stil 0.3 „Modern, warm, großzügig“.
 * Wald (dunkles Naturgrün) trägt die Seite, Kalk ist der helle Grund, Senf ist der einzige Akzent und nur für Aktionen.
 * Eine Schriftfamilie (Bricolage Grotesque): große Überschriften fett und eng, Fließtext ruhig.
 * Raster: 12 Spalten, max. 1360 px, linksbündig. Das Besondere: großes Bild mit freien Abenden und die Wortmarke unten.
 */

:root {
	--wald: #15251B;
	--gruen: #1E3427;
	--gruen-hell: #2A4535;
	--senf: #CB8D16;
	--senf-hell: #DDA232;
	--kalk: #F2F2EE;
	--weiss: #FBFBF9;
	--tinte: #232724;
	--grau: #585D58;
	--linie: #D9DBD3;
	--auf-dunkel: #ECEEE8;
	--auf-dunkel-leise: #AEB8AF;
	--linie-dunkel: rgba(236, 238, 232, .16);

	--f: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;

	--s-sm: 0.9375rem;
	--s-md: 1.0625rem;
	--s-lg: 1.25rem;
	--s-h3: 1.5rem;
	--s-h2: clamp(2.375rem, 4.6vw, 4.25rem);
	--s-h1: clamp(3.25rem, 8.2vw, 7.75rem);

	--wrap: 1360px;
	--rand: max(20px, env(safe-area-inset-left, 0px), 4vw);
	--section: clamp(80px, 10vw, 152px);
	--r-bild: 6px;
	--r-flaeche: 16px;
	--kopf-hoehe: 92px;

	/* Plugin-Bausteine an das Theme anpassen */
	--gw-accent: var(--wald);
	--gw-accent-ink: var(--kalk);
	--gw-ink: var(--tinte);
	--gw-muted: var(--grau);
	--gw-line: var(--linie);
	--gw-surface: var(--weiss);
	--gw-free: #E3EBDF;
	--gw-taken: #E7E7E1;
	--gw-event: #F3E3BF;
	--gw-radius: 10px;
}

/* ---------- Grundlagen ---------- */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
	margin: 0; background: var(--kalk); color: var(--tinte);
	font-family: var(--f); font-size: var(--s-md); line-height: 1.6; font-optical-sizing: auto;
	-webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
img, svg { max-width: 100%; height: auto; display: block; }
h1, h2, h3, h4, p, ul, ol, dl, dd, figure { margin: 0; }
h1, h2, h3, h4 { font-weight: 700; line-height: 1.04; letter-spacing: -0.03em; text-wrap: balance; color: inherit; }
p { text-wrap: pretty; }
a { color: inherit; text-underline-offset: .18em; text-decoration-thickness: 1px; }
button, input, select, textarea { font: inherit; }
:focus-visible { outline: 3px solid var(--senf); outline-offset: 3px; border-radius: 4px; }
::selection { background: var(--senf); color: var(--wald); }

.g-skip { position: absolute; left: 12px; top: -60px; z-index: 100; background: var(--senf); color: var(--wald); padding: 12px 18px; border-radius: 999px; font-weight: 600; text-decoration: none; }
.g-skip:focus { top: 12px; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }

.g-wrap { width: 100%; max-width: calc(var(--wrap) + 2 * var(--rand)); margin: 0 auto; padding-left: var(--rand); padding-right: var(--rand); }
.g-section { padding: var(--section) 0; }
.g-section--knapp { padding-top: 0; }
.g-dunkel { background: var(--wald); color: var(--auf-dunkel); }

.g-h2 { font-size: var(--s-h2); font-weight: 700; letter-spacing: -0.03em; line-height: 1; }
.g-h3 { font-size: var(--s-h3); font-weight: 650; letter-spacing: -0.02em; line-height: 1.15; }
.g-lead { font-size: var(--s-lg); line-height: 1.55; color: var(--grau); max-width: 36em; }
.g-dunkel .g-lead { color: var(--auf-dunkel-leise); }
.g-klein { font-size: var(--s-sm); color: var(--grau); }
.g-leer { color: var(--grau); }

.g-section__kopf { display: grid; gap: 20px; margin-bottom: clamp(40px, 5vw, 72px); max-width: 860px; }
.g-section__kopf--zeile { max-width: none; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 24px 48px; }
.g-section__kopf--zeile > div { display: grid; gap: 20px; }
@media (max-width: 760px) { .g-section__kopf--zeile { grid-template-columns: 1fr; } }

/* ---------- Knöpfe und Links ---------- */

.g-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 10px;
	min-height: 52px; padding: 0 28px; border-radius: 999px; border: 1.5px solid transparent;
	font-weight: 600; font-size: 1rem; letter-spacing: -0.005em; line-height: 1.2; text-decoration: none; text-align: center;
	cursor: pointer; transition: background-color .18s ease-out, color .18s ease-out, border-color .18s ease-out;
}
.g-btn--senf { background: var(--senf); color: var(--wald); }
.g-btn--senf:hover { background: var(--senf-hell); }
.g-btn--dunkel { background: var(--wald); color: var(--kalk); }
.g-btn--dunkel:hover { background: var(--gruen-hell); }
.g-btn--hell { background: var(--kalk); color: var(--wald); }
.g-btn--hell:hover { background: #fff; }
.g-btn--linie { background: transparent; color: inherit; border-color: currentColor; }
.g-btn--linie:hover { background: var(--wald); border-color: var(--wald); color: var(--kalk); }
.g-btn-reihe { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }

.g-pfeil {
	display: inline-flex; align-items: center; gap: 10px; min-height: 44px;
	font-weight: 600; text-decoration: none; color: inherit; white-space: nowrap;
}
.g-pfeil::after {
	content: ""; width: 28px; height: 2px; background: var(--senf);
	transition: width .2s ease-out;
}
.g-pfeil:hover::after { width: 44px; }

/* ---------- Kopfzeile ---------- */

.g-header { position: absolute; top: 0; left: 0; right: 0; z-index: 20; color: var(--auf-dunkel); }
.admin-bar .g-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .g-header { top: 46px; } }
.g-header__innen { display: flex; align-items: center; gap: 32px; min-height: var(--kopf-hoehe); }
.g-logo { display: block; flex: 0 0 auto; margin-right: auto; }
.g-logo img { height: 54px; width: auto; }
.g-nav { display: flex; align-items: center; gap: 36px; }
.g-nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 32px; }
.g-nav li a { display: inline-flex; align-items: center; min-height: 44px; color: var(--auf-dunkel); text-decoration: none; font-weight: 500; position: relative; }
.g-nav li a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 8px; height: 2px; background: var(--senf); transition: right .2s ease-out; }
.g-nav li a:hover::after, .g-nav .current-menu-item > a::after, .g-nav .current_page_item > a::after, .g-nav .current-page-ancestor > a::after { right: 0; }
.g-nav__cta { min-height: 46px; padding: 0 22px; }
.g-menu-knopf { display: none; }

@media (max-width: 900px) {
	:root { --kopf-hoehe: 76px; }
	.g-logo img { height: 40px; }
	.g-menu-knopf {
		display: inline-flex; flex-direction: column; justify-content: center; gap: 7px;
		width: 48px; height: 48px; padding: 0 12px; border: 0; border-radius: 999px; background: rgba(236, 238, 232, .12); cursor: pointer; position: relative; z-index: 31;
	}
	.g-menu-knopf span { display: block; height: 2px; background: var(--auf-dunkel); border-radius: 2px; transition: transform .2s ease-out; }
	.g-menu-knopf[aria-expanded="true"] span:first-child { transform: translateY(4.5px) rotate(45deg); }
	.g-menu-knopf[aria-expanded="true"] span:last-child { transform: translateY(-4.5px) rotate(-45deg); }
	.g-nav {
		position: fixed; inset: 0; z-index: 30; background: var(--wald);
		flex-direction: column; align-items: stretch; justify-content: center; gap: 40px;
		padding: calc(var(--kopf-hoehe) + 24px) var(--rand) 48px;
		visibility: hidden; opacity: 0; transition: opacity .2s ease-out, visibility 0s linear .2s;
	}
	.g-nav.ist-offen { visibility: visible; opacity: 1; transition: opacity .2s ease-out; }
	.g-nav ul { flex-direction: column; gap: 4px; }
	.g-nav li a { font-size: 2.25rem; font-weight: 650; letter-spacing: -0.03em; min-height: 60px; }
	.g-nav li a::after { bottom: 10px; }
	.g-nav__cta { align-self: flex-start; }
	body.menue-offen { overflow: hidden; }
}

/* ---------- Fotos ---------- */

.g-foto { position: relative; overflow: hidden; border-radius: var(--r-bild); background: var(--gruen); }
.g-foto img { width: 100%; height: 100%; object-fit: cover; }
.g-foto--leer { background: linear-gradient(160deg, var(--gruen-hell), var(--wald)); min-height: 200px; }
.g-foto__hinweis { position: absolute; left: 16px; bottom: 14px; right: 16px; font-size: var(--s-sm); color: var(--auf-dunkel-leise); }

/* ---------- Einstieg ---------- */

.g-hero {
	position: relative; isolation: isolate; color: #fff; background: var(--wald);
	min-height: max(700px, 100svh); display: flex; align-items: flex-end;
	padding: calc(var(--kopf-hoehe) + 48px) 0 clamp(28px, 4vw, 48px);
}
.g-hero__bild { position: absolute; inset: 0; z-index: -1; border-radius: 0; }
.g-hero__bild::after {
	content: ""; position: absolute; inset: 0;
	background:
		linear-gradient(180deg, rgba(21, 37, 27, .62) 0%, rgba(21, 37, 27, .12) 22%, rgba(21, 37, 27, .2) 46%, rgba(21, 37, 27, .9) 84%, var(--wald) 100%),
		linear-gradient(90deg, rgba(21, 37, 27, .55) 0%, rgba(21, 37, 27, 0) 60%);
}
.g-hero__innen { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; min-width: 0; }
.g-hero__titel { font-size: var(--s-h1); font-weight: 750; letter-spacing: -0.035em; line-height: .92; max-width: 9.5em; }
.g-hero__text { font-size: var(--s-lg); line-height: 1.5; max-width: 32em; color: rgba(255, 255, 255, .86); }

/* Leiste mit freien Abenden */
.g-leiste {
	margin-top: clamp(16px, 3vw, 40px);
	display: flex; align-items: center; gap: 16px 28px; flex-wrap: wrap;
	background: var(--kalk); color: var(--tinte); border-radius: var(--r-flaeche);
	padding: 14px 14px 14px 28px;
}
.g-leiste__titel { font-weight: 650; letter-spacing: -0.01em; }
.g-leiste__liste { list-style: none; margin: 0; padding: 0; display: flex; gap: 8px; flex: 1 1 auto; flex-wrap: wrap; }
.g-leiste__leer { flex: 1 1 auto; color: var(--grau); }
.g-abend {
	display: inline-flex; align-items: baseline; gap: 6px; min-height: 48px; padding: 0 18px;
	border: 1px solid var(--linie); border-radius: 999px; background: var(--weiss);
	color: var(--tinte); text-decoration: none; line-height: 46px; white-space: nowrap;
	transition: background-color .15s ease-out, color .15s ease-out, border-color .15s ease-out;
}
.g-abend__tag { color: var(--grau); font-size: var(--s-sm); }
.g-abend__zahl { font-weight: 700; font-variant-numeric: tabular-nums; }
.g-abend__monat { font-size: var(--s-sm); }
.g-abend:hover { background: var(--wald); border-color: var(--wald); color: var(--kalk); }
.g-abend:hover .g-abend__tag { color: var(--auf-dunkel-leise); }

@media (max-width: 760px) {
	.g-hero { min-height: max(640px, 100svh); }
	.g-hero__bild img { object-position: 84% 50%; }
	.g-leiste { padding: 18px; gap: 14px; }
	.g-leiste__liste { flex-wrap: nowrap; overflow-x: auto; margin: 0 -18px; padding: 0 18px 2px; scrollbar-width: none; width: calc(100% + 36px); flex-basis: auto; }
	.g-leiste__liste::-webkit-scrollbar { display: none; }
	.g-leiste .g-btn { width: 100%; }
}

/* ---------- Seitenkopf der Unterseiten ---------- */

.g-kopf { position: relative; isolation: isolate; background: var(--wald); color: var(--auf-dunkel); padding: calc(var(--kopf-hoehe) + clamp(64px, 9vw, 128px)) 0 clamp(56px, 7vw, 96px); }
.g-kopf--bild { min-height: clamp(520px, 72svh, 760px); display: flex; align-items: flex-end; color: #fff; }
.g-kopf__bild { position: absolute; inset: 0; z-index: -1; border-radius: 0; }
.g-kopf__bild::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(21, 37, 27, .6) 0%, rgba(21, 37, 27, .15) 30%, rgba(21, 37, 27, .85) 100%); }
.g-kopf__innen { display: grid; grid-template-columns: minmax(0, 1fr); gap: 22px; min-width: 0; }
.g-kopf__titel { font-size: clamp(3rem, 7.4vw, 6.5rem); font-weight: 750; letter-spacing: -0.035em; line-height: .94; max-width: 12em; }
.g-kopf__text { font-size: var(--s-lg); max-width: 34em; color: rgba(255, 255, 255, .84); }
.g-zurueck { justify-self: start; display: inline-flex; align-items: center; gap: 10px; min-height: 44px; color: inherit; text-decoration: none; font-weight: 500; }
.g-zurueck::before { content: ""; width: 20px; height: 2px; background: var(--senf); }

/* ---------- Startseite: Raum in Kurzform ---------- */

.g-intro__raster {
	display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: clamp(16px, 2vw, 32px);
	grid-template-areas:
		"satz satz satz satz satz satz satz satz text text text text"
		"breit breit breit breit breit breit breit hoch hoch hoch hoch hoch"
		"fakten fakten fakten fakten fakten fakten fakten hoch hoch hoch hoch hoch";
}
.g-intro__satz { grid-area: satz; font-size: clamp(2.125rem, 4.2vw, 3.75rem); font-weight: 700; letter-spacing: -0.03em; line-height: 1.02; color: var(--wald); max-width: 13em; }
.g-intro__text { grid-area: text; align-self: end; display: grid; gap: 20px; justify-items: start; }
.g-intro__text .g-lead { font-size: var(--s-md); }
.g-intro__bilder { display: contents; }
.g-intro__breit { grid-area: breit; aspect-ratio: 4 / 3; margin-top: clamp(48px, 6vw, 88px); max-height: 620px; }
.g-intro__hoch { grid-area: hoch; aspect-ratio: 3 / 4; margin-top: clamp(140px, 16vw, 240px); align-self: start; max-width: 520px; justify-self: end; width: 100%; }
.g-fakten { grid-area: fakten; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin-top: clamp(32px, 4vw, 56px); }
.g-fakten > div { border-top: 2px solid var(--wald); padding-top: 18px; display: grid; gap: 6px; align-content: start; }
.g-fakten dt { font-size: clamp(2rem, 3.4vw, 3rem); font-weight: 700; letter-spacing: -0.045em; line-height: 1; color: var(--wald); font-variant-numeric: tabular-nums; }
.g-fakten dd { color: var(--grau); font-size: var(--s-sm); line-height: 1.45; max-width: 18em; }
.g-fakten--vier { grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0 0 clamp(56px, 7vw, 96px); }

@media (max-width: 900px) {
	.g-intro__raster { grid-template-columns: 1fr; grid-template-areas: "satz" "text" "breit" "fakten"; row-gap: 24px; }
	.g-intro__hoch { display: none; }
	.g-intro__breit { margin-top: 24px; }
	.g-fakten, .g-fakten--vier { grid-template-columns: 1fr 1fr; margin-top: 8px; }
}
@media (max-width: 520px) { .g-fakten, .g-fakten--vier { grid-template-columns: 1fr; } }

/* ---------- Anlässe ---------- */

.g-anlaesse { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); align-items: start; }
.g-anlass { position: relative; border-radius: var(--r-bild); overflow: hidden; isolation: isolate; color: #fff; }
.g-anlass:nth-child(2) { margin-top: clamp(32px, 6vw, 96px); }
.g-anlass__bild { aspect-ratio: 4 / 5; border-radius: 0; }
.g-anlass__bild img { transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.g-anlass:hover .g-anlass__bild img { transform: scale(1.035); }
.g-anlass__bild::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(21, 37, 27, 0) 34%, rgba(21, 37, 27, .72) 62%, rgba(21, 37, 27, .96) 100%); }
.g-anlass__text { position: absolute; left: 0; right: 0; bottom: 0; padding: clamp(20px, 2.4vw, 32px); display: grid; gap: 8px; }
.g-anlass__text .g-h3 { font-size: clamp(1.5rem, 2.2vw, 2rem); }
.g-anlass__text p { font-size: var(--s-sm); color: rgba(255, 255, 255, .82); max-width: 28em; }
@media (max-width: 900px) {
	.g-anlaesse { grid-template-columns: 1fr; }
	.g-anlass:nth-child(2) { margin-top: 0; }
	.g-anlass__bild { aspect-ratio: 1; }
}

/* ---------- Kochkurse als Bildkarten ---------- */

.g-kurse { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: clamp(20px, 2vw, 28px); }
.g-kurse .gw-termin { border: 0; border-radius: var(--r-flaeche); background: var(--weiss); overflow: hidden; display: flex; flex-direction: column; }
.g-kurs-karte__bild { position: relative; aspect-ratio: 4 / 3; background: var(--gruen); overflow: hidden; }
.g-kurs-karte__bild img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.g-kurs-karte:hover .g-kurs-karte__bild img { transform: scale(1.035); }
.g-kurs-karte__datum {
	position: absolute; left: 16px; top: 16px; display: grid; justify-items: center;
	min-width: 64px; padding: 8px 10px 9px; border-radius: 12px; background: var(--kalk); color: var(--wald);
	font-size: var(--s-sm); line-height: 1.1;
}
.g-kurs-karte__datum b { font-size: 1.75rem; font-weight: 750; letter-spacing: -0.04em; line-height: 1; font-variant-numeric: tabular-nums; }
.g-kurs-karte__text { padding: 22px 24px 8px; display: grid; gap: 8px; align-content: start; flex: 1; }
.g-kurse .gw-termin__datum { margin: 0; color: var(--grau); font-size: var(--s-sm); font-weight: 500; text-transform: none; letter-spacing: 0; }
.g-kurse .gw-termin__titel { font-size: 1.5rem; font-weight: 650; letter-spacing: -0.025em; line-height: 1.12; color: var(--wald); }
.g-kurse .gw-termin__titel a { color: inherit; text-decoration: none; }
.g-kurse .gw-termin__titel a:hover { text-decoration: underline; text-decoration-thickness: 2px; text-decoration-color: var(--senf); }
.g-kurse .gw-termin__text { font-size: var(--s-sm); color: var(--grau); }
.g-kurs-karte__fuss { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 24px 24px; }
.g-kurse .gw-termin__preis { margin: 0; font-size: var(--s-sm); color: var(--grau); line-height: 1.4; }
.g-kurse .gw-termin__preis strong { color: var(--tinte); font-size: var(--s-lg); font-weight: 700; }
.g-kurse .g-btn { min-height: 48px; padding: 0 22px; }
.g-platz { font-size: var(--s-sm); color: #2F5A3A; }
.g-platz::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: currentColor; margin-right: 7px; vertical-align: 2px; }
.g-platz--knapp { color: #8A5A08; }
.g-platz--voll { color: #8A2E2E; }

/* ---------- Preis ---------- */

.g-preis { background: var(--weiss); }
.g-preis__raster { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(40px, 6vw, 112px); align-items: start; }
.g-preis__links { display: grid; gap: 28px; }
.g-preis__links .g-h2 { color: var(--wald); }
.g-preis__zahl { font-size: clamp(5rem, 12vw, 10.5rem); font-weight: 750; letter-spacing: -0.045em; line-height: .86; color: var(--wald); display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px 20px; font-variant-numeric: tabular-nums; }
.g-preis__zahl span { font-size: var(--s-lg); font-weight: 500; letter-spacing: 0; color: var(--grau); }
.g-haken { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 32px; max-width: 640px; }
.g-haken li { position: relative; padding-left: 30px; }
.g-haken li::before { content: ""; position: absolute; left: 2px; top: .38em; width: 14px; height: 8px; border-left: 2px solid var(--wald); border-bottom: 2px solid var(--wald); transform: rotate(-45deg); }
.g-preis__wege { display: grid; gap: 16px; }
.g-weg { border: 1px solid var(--linie); border-radius: var(--r-flaeche); padding: clamp(24px, 2.6vw, 36px); display: grid; gap: 12px; justify-items: start; }
.g-weg p { color: var(--grau); margin-bottom: 8px; }
.g-weg--stark { background: var(--wald); border-color: var(--wald); color: var(--auf-dunkel); }
.g-weg--stark p { color: var(--auf-dunkel-leise); }
@media (max-width: 900px) { .g-preis__raster { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .g-haken { grid-template-columns: 1fr; } }

/* ---------- Ablauf ---------- */

.g-ablauf { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(24px, 3vw, 40px); counter-reset: schritt; }
.g-ablauf li { display: grid; gap: 10px; align-content: start; padding-top: 20px; border-top: 2px solid var(--wald); counter-increment: schritt; }
.g-ablauf li::before { content: counter(schritt); font-size: 3rem; font-weight: 750; letter-spacing: -0.05em; line-height: 1; color: var(--wald); margin-bottom: 12px; }
.g-ablauf strong { font-size: var(--s-lg); font-weight: 650; letter-spacing: -0.01em; }
.g-ablauf span { color: var(--grau); font-size: var(--s-sm); }
@media (max-width: 900px) { .g-ablauf { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .g-ablauf { grid-template-columns: 1fr; } }

/* ---------- Abschluss ---------- */

.g-abschluss { position: relative; isolation: isolate; background: var(--senf); color: var(--wald); padding: clamp(72px, 9vw, 136px) 0; overflow: hidden; }
.g-abschluss__innen { display: grid; gap: 36px; }
.g-abschluss__titel { font-size: clamp(2.75rem, 7vw, 6.25rem); font-weight: 750; letter-spacing: -0.035em; line-height: .95; max-width: 11em; }
.g-abschluss .g-btn--senf { background: var(--wald); color: var(--kalk); }
.g-abschluss .g-btn--senf:hover { background: var(--gruen-hell); }
.g-abschluss .g-btn--hell { background: transparent; border-color: var(--wald); color: var(--wald); }
.g-abschluss .g-btn--hell:hover { background: var(--wald); color: var(--kalk); }
.g-abschluss :focus-visible { outline-color: var(--wald); }

/* ---------- Der Raum ---------- */

.g-galerie { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); grid-auto-rows: clamp(140px, 17vw, 240px); gap: clamp(12px, 1.4vw, 20px); margin-bottom: clamp(64px, 8vw, 112px); }
.g-galerie .g-foto:nth-child(1) { grid-column: 1 / 5; grid-row: 1 / 3; }
.g-galerie .g-foto:nth-child(2) { grid-column: 5 / 7; grid-row: 1 / 3; }
.g-galerie .g-foto:nth-child(3) { grid-column: 1 / 3; grid-row: 3 / 5; }
.g-galerie .g-foto:nth-child(4) { grid-column: 3 / 7; grid-row: 3 / 4; }
.g-galerie .g-foto:nth-child(5) { grid-column: 3 / 5; grid-row: 4 / 5; }
.g-galerie .g-foto:nth-child(6) { grid-column: 5 / 7; grid-row: 4 / 5; }
.g-galerie .g-foto:nth-child(n+7) { grid-column: span 2; }
@media (max-width: 760px) {
	.g-galerie { grid-template-columns: 1fr 1fr; grid-auto-rows: 180px; }
	.g-galerie .g-foto:nth-child(n) { grid-column: span 1; grid-row: span 1; }
	.g-galerie .g-foto:nth-child(1), .g-galerie .g-foto:nth-child(4) { grid-column: 1 / -1; }
}
.g-text--raum { max-width: 860px; }

/* ---------- Texte aus dem Editor ---------- */

.g-text { max-width: 720px; display: grid; gap: 1.1em; }
.g-text h2 { font-size: clamp(1.75rem, 3vw, 2.5rem); letter-spacing: -0.035em; color: var(--wald); margin-top: .8em; }
.g-text h3 { font-size: var(--s-h3); color: var(--wald); margin-top: .6em; }
.g-text a { color: var(--wald); text-decoration-color: var(--senf); text-decoration-thickness: 2px; }
.g-text ul, .g-text ol { padding-left: 1.2em; display: grid; gap: .4em; }
.g-text > :first-child { margin-top: 0; }
.g-text--unten { margin-top: 56px; }
.g-text .wp-block-details { border-top: 1px solid var(--linie); padding: 0; }
.g-text .wp-block-details:last-of-type { border-bottom: 1px solid var(--linie); }
.g-text .wp-block-details summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 24px; min-height: 64px; padding: 16px 0; font-weight: 600; font-size: var(--s-lg); letter-spacing: -0.01em; }
.g-text .wp-block-details summary::-webkit-details-marker { display: none; }
.g-text .wp-block-details summary::after { content: ""; flex: 0 0 12px; width: 12px; height: 12px; border-right: 2px solid var(--wald); border-bottom: 2px solid var(--wald); transform: rotate(45deg) translate(-3px, -3px); transition: transform .2s ease-out; }
.g-text .wp-block-details[open] summary::after { transform: rotate(225deg) translate(-3px, -3px); }
.g-text .wp-block-details p { padding: 0 0 22px; color: var(--grau); max-width: 40em; }
.g-text .wp-block-gallery { margin: 0 0 1em; }

/* ---------- Kursseite ---------- */

.g-kurs { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(40px, 6vw, 96px); align-items: start; }
.g-kurs__inhalt { font-size: var(--s-lg); }
.g-kurs--kurz { grid-template-columns: minmax(0, 560px); }
.g-buchbox { position: sticky; top: 24px; background: var(--weiss); border: 1px solid var(--linie); border-radius: var(--r-flaeche); padding: clamp(24px, 2.6vw, 36px); display: grid; gap: 18px; }
.g-buchbox__preis { font-size: var(--s-md); color: var(--grau); }
.g-buchbox__preis strong { margin-right: .2em; font-size: 2.75rem; font-weight: 750; letter-spacing: -0.05em; color: var(--wald); }
.g-buchbox__fakten { display: grid; gap: 8px; padding: 14px 0; border-top: 1px solid var(--linie); border-bottom: 1px solid var(--linie); }
.g-buchbox__fakten div { display: flex; justify-content: space-between; gap: 16px; font-size: var(--s-sm); }
.g-buchbox__fakten dt { color: var(--grau); }
.g-buchbox__fakten dd { font-weight: 600; text-align: right; }
.g-buchbox__titel { font-size: var(--s-lg); font-weight: 650; letter-spacing: -0.01em; }
.g-termine { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.g-termine .gw-termin { border: 1px solid var(--linie); border-radius: 12px; background: transparent; padding: 14px 14px 14px 18px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 2px 16px; overflow: visible; }
.g-termine .gw-termin__datum { margin: 0; font-weight: 600; color: var(--tinte); font-size: var(--s-md); text-transform: none; letter-spacing: 0; }
.g-termine .g-platz { grid-column: 1; }
.g-termine .g-btn { grid-column: 2; grid-row: 1 / 3; min-height: 46px; padding: 0 20px; }
@media (max-width: 900px) { .g-kurs { grid-template-columns: 1fr; } .g-buchbox { position: static; } }

/* ---------- Anfragen: Kalender und Formular ---------- */

.g-anfrage { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.g-anfrage__kalender, .g-anfrage__form { display: grid; gap: 10px; align-content: start; }
.g-anfrage__kalender .g-h3, .g-anfrage__form .g-h3 { color: var(--wald); }
.g-anfrage__kalender > .g-klein:first-of-type, .g-anfrage__form > .g-klein { margin-bottom: 18px; }
.g-anfrage__form { background: var(--weiss); border: 1px solid var(--linie); border-radius: var(--r-flaeche); padding: clamp(24px, 3vw, 40px); position: sticky; top: 24px; }
.g-anfrage__hinweis { margin-top: 18px; }
@media (max-width: 1000px) { .g-anfrage { grid-template-columns: 1fr; } .g-anfrage__form { position: static; } }

/* Plugin: Kalender */
.gw-kalender__kopf { margin-bottom: 18px; }
.gw-kalender__kopf h3 { font-size: 1.75rem; font-weight: 700; letter-spacing: -0.03em; color: var(--wald); }
.gw-kalender__nav { width: 48px; height: 48px; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); color: var(--wald); display: inline-flex; align-items: center; justify-content: center; transition: border-color .15s ease-out; }
.gw-kalender__nav:hover:not(:disabled) { border-color: var(--wald); }
.gw-kalender__raster { gap: 6px; }
.gw-kalender__wt { font-size: var(--s-sm); font-weight: 600; color: var(--grau); }
.gw-kalender__tag { min-height: 80px; padding: 10px; border-radius: 10px; font-size: var(--s-sm); transition: background-color .15s ease-out, color .15s ease-out; }
.gw-kalender__tag--frei { color: #1F3B26; }
.gw-kalender__tag--frei:hover { outline: 0; background: var(--wald); color: var(--kalk); }
.gw-kalender__tag--event { color: #533A08; }
.gw-kalender__tag--event:hover { outline: 0; box-shadow: inset 0 0 0 1.5px var(--senf); }
.gw-kalender__tag--gewaehlt, .gw-kalender__tag--gewaehlt:hover { background: var(--wald); color: var(--kalk); }
.gw-kalender__tag--belegt { color: #5F635E; }
.gw-kalender__zahl { font-weight: 700; font-size: 1.25rem; line-height: 1; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.gw-kalender__info { font-size: .75rem; margin-top: auto; }
.gw-kalender__legende { margin-top: 18px; gap: 8px 20px; font-size: var(--s-sm); }
.gw-dot { border-radius: 50%; width: 12px; height: 12px; }
.gw-dot--frei { background: #8FB487; }
.gw-dot--event { background: #DCAE52; }
.gw-dot--belegt { background: #BFC1B8; }
.g-anfrage__form .gw-form__reihe { grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr)); }
.gw-form__zeit input { padding-left: 10px; padding-right: 6px; }
.g-anfrage__form label:has(.gw-form__zeit) { grid-column: 1 / -1; }
@media (max-width: 520px) { .gw-kalender__tag { min-height: 52px; padding: 6px; } .gw-kalender__zahl { font-size: 1.0625rem; } }

/* Plugin: Formulare */
.gw-form { gap: 18px; }
.gw-form label { font-size: var(--s-sm); font-weight: 600; color: var(--tinte); gap: 8px; }
.gw-form input, .gw-form select, .gw-form textarea {
	min-height: 52px; padding: 12px 16px; border: 1px solid #CFD1C8; border-radius: 12px;
	background: #fff; font-size: 1rem; color: var(--tinte); transition: border-color .15s ease-out, box-shadow .15s ease-out;
}
.gw-form textarea { min-height: 104px; resize: vertical; }
.gw-form input:focus, .gw-form select:focus, .gw-form textarea:focus { outline: 0; border-color: var(--wald); box-shadow: 0 0 0 3px rgba(203, 141, 22, .35); }
.gw-form input[type="checkbox"] { min-height: 0; width: 20px; height: 20px; margin: 2px 10px 0 0; accent-color: var(--wald); flex: 0 0 20px; }
.gw-form label.gw-form__check { display: block; font-size: var(--s-sm); font-weight: 400; color: var(--grau); }
.gw-form label.gw-form__check input { display: inline-block; vertical-align: -4px; margin: 0 10px 0 0; }
.gw-form__meldung { color: var(--wald); }
.gw-raum__wahl { gap: 12px; margin-top: 6px; grid-template-columns: 1fr; }
.gw-raum__option { border-radius: 12px; padding: 20px; gap: 10px; border-color: var(--linie); align-content: start; }
.gw-raum__option:has(.gw-button:not(.gw-button--ghost)) { background: var(--wald); border-color: var(--wald); color: var(--auf-dunkel); }
.gw-raum__option:has(.gw-button:not(.gw-button--ghost)) p { color: var(--auf-dunkel-leise); }
.gw-raum__option:has(.gw-button:not(.gw-button--ghost)) .gw-button { background: var(--senf); border-color: var(--senf); color: var(--wald); }
.gw-raum__option:has(.gw-button:not(.gw-button--ghost)) .gw-button:hover { background: var(--senf-hell); border-color: var(--senf-hell); }
.gw-raum__option p { font-size: var(--s-sm); line-height: 1.5; }

/* Plugin: Knöpfe */
.gw-button { border-radius: 999px; min-height: 52px; padding: 13px 24px; font-size: 1rem; font-weight: 600; background: var(--wald); border: 1.5px solid var(--wald); color: var(--kalk); transition: background-color .18s ease-out, color .18s ease-out; }
.gw-button:hover { filter: none; background: var(--gruen-hell); border-color: var(--gruen-hell); }
.gw-button--ghost { background: transparent; color: var(--wald); }
.gw-button--ghost:hover { background: var(--wald); color: var(--kalk); }

/* Plugin: Buchungsdialog */
.gw-dialog { border-radius: var(--r-flaeche); width: min(480px, calc(100vw - 32px)); background: var(--kalk); color: var(--tinte); box-shadow: 0 40px 80px -20px rgba(21, 37, 27, .5); }
.gw-dialog::backdrop { background: rgba(21, 37, 27, .66); backdrop-filter: blur(4px); }
.gw-dialog .gw-form { padding: 40px 32px 32px; }
.gw-dialog__datum { font-size: var(--s-sm); color: var(--grau); font-weight: 500; }
.gw-dialog__titel { font-size: 1.875rem; font-weight: 700; letter-spacing: -0.03em; color: var(--wald); margin: 2px 0 4px; }
.gw-dialog__zu { width: 44px; height: 44px; top: 10px; right: 10px; border-radius: 999px; }
.gw-dialog__zu:hover { background: rgba(21, 37, 27, .08); }

/* ---------- Kontakt ---------- */

.g-kontakt { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: clamp(40px, 6vw, 112px); align-items: start; }
.g-kontakt__daten { display: grid; gap: 40px; }
.g-kontakt__weg { display: grid; gap: 6px; justify-items: start; }
.g-kontakt__klein { font-size: var(--s-sm); font-weight: 500; color: var(--grau); letter-spacing: 0; }
.g-kontakt__gross { font-size: clamp(1.75rem, 3.2vw, 2.75rem); font-weight: 700; letter-spacing: -0.035em; line-height: 1.1; color: var(--wald); font-style: normal; text-decoration: none; }
a.g-kontakt__gross:hover { text-decoration: underline; text-decoration-color: var(--senf); text-decoration-thickness: 3px; }
.g-kontakt__logo { background: #fff; border-radius: var(--r-flaeche); padding: clamp(40px, 6vw, 88px); display: grid; place-items: center; aspect-ratio: 1; }
.g-kontakt__logo img { width: 100%; max-width: 420px; height: auto; }
.g-kontakt__logo .g-foto { width: 100%; height: 100%; }
@media (max-width: 900px) { .g-kontakt { grid-template-columns: 1fr; } .g-kontakt__logo { aspect-ratio: auto; } }

/* ---------- Fußzeile ---------- */

.g-footer { background: var(--wald); color: var(--auf-dunkel); padding: clamp(72px, 9vw, 128px) 0 28px; }
.g-footer__raster { display: grid; grid-template-columns: minmax(0, 5fr) repeat(3, minmax(0, 2fr)); gap: 40px clamp(24px, 3vw, 48px); }
.g-footer__titel { font-size: clamp(1.75rem, 2.8vw, 2.5rem); font-weight: 700; letter-spacing: -0.035em; line-height: 1.05; max-width: 11em; margin-bottom: 24px; }
.g-footer__wege { display: grid; gap: 4px; justify-items: start; }
.g-footer__wege a { font-size: var(--s-lg); font-weight: 600; color: var(--auf-dunkel); text-decoration: none; min-height: 40px; display: inline-flex; align-items: center; }
.g-footer__wege a:hover { color: var(--senf-hell); }
.g-footer__klein { font-size: var(--s-sm); font-weight: 500; color: var(--auf-dunkel-leise); letter-spacing: 0; margin-bottom: 14px; }
.g-footer address { font-style: normal; line-height: 1.6; }
.g-footer__link { display: inline-flex; align-items: center; min-height: 44px; color: var(--auf-dunkel); font-weight: 600; text-decoration-color: var(--senf); text-decoration-thickness: 2px; }
.g-footer__menu, .g-footer__unten ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.g-footer__menu a { display: inline-flex; align-items: center; min-height: 40px; color: var(--auf-dunkel); text-decoration: none; }
.g-footer__menu a:hover { color: var(--senf-hell); }
.g-footer .gw-partner { gap: 24px; }
.g-footer .gw-partner img { max-height: 48px; filter: brightness(0) invert(1); opacity: .85; }
.g-footer__notiz { margin-top: 14px; font-size: var(--s-sm); color: var(--auf-dunkel-leise); }
.g-footer__marke { margin: clamp(64px, 9vw, 128px) 0 28px; }
.g-footer__marke img { width: 100%; height: auto; }
.g-footer__unten { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 24px; padding-top: 22px; border-top: 1px solid var(--linie-dunkel); font-size: var(--s-sm); color: var(--auf-dunkel-leise); }
.g-footer__unten ul { display: flex; flex-wrap: wrap; gap: 4px 24px; }
.g-footer__unten a { color: var(--auf-dunkel-leise); text-decoration: none; display: inline-flex; min-height: 32px; align-items: center; }
.g-footer__unten a:hover { color: var(--auf-dunkel); }
@media (max-width: 1000px) { .g-footer__raster { grid-template-columns: 1fr 1fr; } .g-footer__kontakt { grid-column: 1 / -1; } }
@media (max-width: 520px) { .g-footer__raster { grid-template-columns: 1fr; } }

/* ---------- Bewegung nur, wenn erwünscht ---------- */

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; scroll-behavior: auto !important; }
}
