/* Bumerang Wegweiser 2.0: Designsystem „Wegweiser“ (Prototyp 2026, freigegeben)
   Farben mit Kontrast AAA für Text, Haltestellen-Gelb nur funktional (heute, Fokus, aktiv).
   Keine Karten, keine Schatten, keine Verläufe, keine Einblendeffekte. */

/* ---------- Schriften ---------- */
@font-face { font-family: "Atkinson Next"; src: url("../fonts/atkinson-hyperlegible-next-latin-wght-normal.woff2") format("woff2"); font-weight: 200 800; font-style: normal; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Atkinson Next"; src: url("../fonts/atkinson-hyperlegible-next-latin-ext-wght-normal.woff2") format("woff2"); font-weight: 200 800; font-style: normal; font-display: swap; unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Atkinson Next"; src: url("../fonts/atkinson-hyperlegible-next-latin-wght-italic.woff2") format("woff2"); font-weight: 200 800; font-style: italic; font-display: swap; }
@font-face { font-family: "Schibsted Grotesk"; src: url("../fonts/schibsted-grotesk-latin-wght-normal.woff2") format("woff2"); font-weight: 400 900; font-style: normal; font-display: swap; }
/* Ersatzschriften mit angeglichenen Maßen: kein Springen, während die Webfonts laden. */
@font-face { font-family: "Atkinson Fallback"; src: local("Arial"), local("Helvetica"), local("Liberation Sans"); size-adjust: 99.4%; ascent-override: 99%; descent-override: 31.8%; line-gap-override: 0%; }
@font-face { font-family: "Schibsted Fallback"; src: local("Arial"), local("Helvetica"), local("Liberation Sans"); size-adjust: 103.2%; ascent-override: 94.6%; descent-override: 25%; line-gap-override: 0%; }

/* ---------- Tokens ---------- */
:root {
	color-scheme: light;
	--kiefer: #1d4a35;
	--kiefer-2: #2b6348;
	--kiefer-hell: #dce8df;
	--tinte: #16211b;
	--text-2: #4a564f;
	--papier: #fff;
	--grund: #edf0ea;
	--signal: #ffd23f;
	--linie: #c5cec6;

	--font-text: "Atkinson Next", "Atkinson Fallback", system-ui, sans-serif;
	--font-head: "Schibsted Grotesk", "Schibsted Fallback", "Atkinson Next", system-ui, sans-serif;

	--fs-sm: 1rem;
	--fs-base: 1.1875rem;
	--fs-md: clamp(1.25rem, 1.1rem + .5vw, 1.4375rem);
	--fs-lg: clamp(1.5rem, 1.25rem + 1vw, 1.875rem);
	--fs-xl: clamp(1.875rem, 1.4rem + 2vw, 2.75rem);
	--fs-xxl: clamp(2.375rem, 1.6rem + 3.4vw, 4.25rem);

	--gut: clamp(1rem, .4rem + 2.4vw, 2.5rem);
	--max: 1320px;
	--measure: 44rem;
	--sect: clamp(3.5rem, 2.5rem + 4vw, 6.5rem);
	--r: 4px;
	--head-h: 72px;
}

/* ---------- Grundlagen ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: calc(var(--head-h) + 1.5rem); }
body { margin: 0; background: var(--papier); color: var(--tinte); font: 400 var(--fs-base)/1.6 var(--font-text); text-rendering: optimizeLegibility; }
img, svg { display: block; max-width: 100%; height: auto; }
a { color: var(--kiefer); text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--tinte); outline-offset: 2px; box-shadow: 0 0 0 6px var(--signal); }
button { font: inherit; }

h1, h2, h3, h4, h5, h6 { font-family: var(--font-head); font-weight: 750; line-height: 1.12; letter-spacing: -.012em; margin: 0 0 .5em; text-wrap: balance; color: inherit; }
h1 { font-size: var(--fs-xxl); letter-spacing: -.022em; }
h2 { font-size: var(--fs-xl); }
h3 { font-size: var(--fs-lg); }
h4 { font-size: var(--fs-md); }
h5, h6 { font-size: 1.0625rem; }
p { margin: 0 0 1em; }
p, li { text-wrap: pretty; }
ul, ol { padding-left: 1.3em; }
strong, b { font-weight: 700; }
address { font-style: normal; }
small { font-size: var(--fs-sm); }
table { border-collapse: collapse; }
hr, .wp-block-separator { border: 0; border-top: 1px solid var(--linie); margin: 2.5rem 0; }

.lead, .has-md-font-size, .is-style-lead { font-size: var(--fs-md); line-height: 1.5; }
.muted { color: var(--text-2); }
.link-strong, .link-strong a { font-weight: 700; }
.visually-hidden, .is-style-unsichtbar, .screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
/* Ziffern in Auszeichnung: Schibsted, weil Atkinson eine durchgestrichene Null hat.
   Ohne tabular-nums: Die Tabellenziffern von Schibsted sperren auch Punkt und Doppelpunkt. */
a[href^="tel"], time, .day__name, .hours th, .next-up__date, .foot__tel, .is-style-chronik strong, .eventline__when, .page-head__date, .dates time,
.state, .slot small, .plan__day small, .foot__base, .contact dd, address, .hours td, .place__hint, .glance__past, .projekt__zeit, .facts li, .archive li > span, .eventlines .muted, .plan__reg { font-family: var(--font-head); }

.skip { position: absolute; left: .5rem; top: -5rem; z-index: 100; background: var(--signal); color: var(--tinte); padding: .7rem 1.1rem; font-weight: 700; }
.skip:focus { top: .5rem; }

.wrap { width: min(100% - 2 * var(--gut), var(--max)); margin-inline: auto; }
/* Abstandssystem: Ein Abschnittsabstand vor dem Footer, gesetzt am main. Das jeweils
   letzte Element eines Containers bringt keinen eigenen Außenabstand mit, sonst
   addieren sich Abstände je nach Inhalt unterschiedlich auf. */
main { padding-bottom: var(--sect); }
body.home main { padding-bottom: 0; }

.sect { padding-block: var(--sect); }

/* ---------- Buttons und Formulare ---------- */
.btn, .wp-block-button__link { display: inline-flex; align-items: center; justify-content: center; gap: .55rem; min-height: 48px; font: 700 1.0625rem/1.2 var(--font-text); padding: .75rem 1.3rem; border-radius: var(--r); border: 2px solid var(--kiefer); background: var(--kiefer); color: var(--papier); text-decoration: none; cursor: pointer; }
.btn:hover, .wp-block-button__link:hover { background: var(--tinte); border-color: var(--tinte); color: var(--papier); }
.btn--line, .is-style-ghost .wp-block-button__link, .is-style-outline .wp-block-button__link { background: transparent; color: var(--kiefer); }
.btn--line:hover, .is-style-ghost .wp-block-button__link:hover { background: var(--kiefer); color: var(--papier); border-color: var(--kiefer); }
.btn--block { width: 100%; }
.btn svg { flex: none; }
.btn:active { transform: translateY(1px); }
.actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: .75rem; }

.search label { display: block; font-weight: 700; margin-bottom: .4rem; }
.search__row { display: flex; flex-wrap: wrap; gap: .5rem; }
input[type="search"], input[type="text"], input[type="email"], input[type="tel"], select, textarea, .form__input, .form__select, .form__textarea { font: 400 1.0625rem/1.4 var(--font-text); color: var(--tinte); background: var(--papier); border: 2px solid var(--text-2); border-radius: var(--r); padding: .7rem .8rem; min-height: 48px; width: 100%; }
.search input { flex: 1 1 14rem; width: auto; max-width: 36rem; }
input::placeholder, textarea::placeholder { color: var(--text-2); opacity: 1; }
input:focus-visible, select:focus-visible, textarea:focus-visible { border-color: var(--tinte); }
textarea, .form__textarea { min-height: 10rem; field-sizing: content; }

/* Kontaktformular aus dem Plugin */
.kontaktformular { max-width: var(--measure); }
.form__field { margin-bottom: 1.25rem; }
.form__label { display: block; font-weight: 700; margin-bottom: .35rem; }
.form__required { color: var(--tinte); }
.form__hp { position: absolute !important; left: -9999px; }
.form__check { display: grid; grid-template-columns: 1.5rem 1fr; gap: .75rem; align-items: start; font-size: var(--fs-sm); line-height: 1.5; }
.form__check input { width: 1.5rem; height: 1.5rem; margin: .05rem 0 0; accent-color: var(--kiefer); }
.form__hint { font-size: var(--fs-sm); color: var(--text-2); }
.form__notice, .kontakt-notice, .notice { border-left: 4px solid var(--signal); background: var(--grund); padding: 1rem 1.25rem; margin: 0 0 1.5rem; }
.notice { max-width: var(--measure); font-weight: 700; }

/* ---------- Kopf ---------- */
.site-header { position: sticky; top: 0; z-index: 50; background: var(--papier); border-bottom: 1px solid var(--linie); }
.admin-bar .site-header { top: var(--wp-admin--admin-bar--height, 32px); }
.bar { display: flex; align-items: center; gap: 1.75rem; min-height: var(--head-h); }
.brand { display: inline-flex; align-items: center; margin-right: auto; flex: none; }
.brand__logo { display: block; width: auto; height: 64px; }

.nav__list { display: flex; gap: 1.6rem; align-items: center; list-style: none; margin: 0; padding: 0; }
.nav__item { position: relative; display: flex; align-items: center; }
.nav__link { color: var(--tinte); text-decoration: none; font-weight: 700; font-size: 1.0625rem; padding-block: .6rem; white-space: nowrap; background: linear-gradient(var(--signal), var(--signal)) 0 100% / 0 .35em no-repeat; transition: background-size .15s ease; }
.nav__link:hover, .nav__item.is-active > .nav__link, .bar .nav__item:hover > .nav__link, .bar .nav__item:has(> .nav__toggle[aria-expanded="true"]) > .nav__link { background-size: 100% .35em; }
.nav__toggle { display: inline-flex; align-items: center; justify-content: center; min-width: 32px; min-height: 40px; margin-left: .1rem; padding: 0 .2rem; background: none; border: 0; border-radius: var(--r); color: var(--tinte); cursor: pointer; }
.nav__toggle svg { transition: transform .15s ease; }
.nav__toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
/* Pfeil ohne eigene Hover-Fläche: Wort und Pfeil reagieren gemeinsam über die Unterstreichung. */
.mnav .nav__toggle:hover { background: var(--grund); }
.nav__panel { position: absolute; top: calc(100% + 14px); left: -1.5rem; width: min(36rem, calc(100vw - 2 * var(--gut))); background: var(--papier); border: 1px solid var(--linie); border-top: 3px solid var(--kiefer); padding: 1rem 1.5rem 1.25rem; }
.nav__panel[hidden] { display: none; }
/* Unsichtbare Brücke über die Lücke zwischen Menüpunkt und Panel, damit die Maus das Panel erreicht. */
.bar .nav__panel::before { content: ""; position: absolute; left: 0; right: 0; bottom: 100%; height: 20px; }
.nav__panel ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: .15rem 1.5rem; }
.nav__panel li a { display: block; padding: .55rem 0; text-decoration: none; color: var(--tinte); line-height: 1.3; }
.nav__panel li a strong { display: block; font-size: 1rem; }
.nav__panel li a span { display: block; font-size: .9375rem; color: var(--text-2); margin-top: .1rem; }
.nav__panel li a:hover strong, .nav__panel li a[aria-current] strong { text-decoration: underline; text-decoration-color: var(--signal); text-decoration-thickness: .2em; text-underline-offset: .15em; }
.nav__all { margin: .75rem 0 0; padding-top: .75rem; border-top: 1px solid var(--linie); font-weight: 700; font-size: 1rem; }

.search-toggle { display: inline-flex; align-items: center; gap: .45rem; min-height: 44px; padding: 0 .7rem; margin-right: -.5rem; background: none; border: 0; border-radius: var(--r); color: var(--tinte); font-weight: 700; font-size: 1rem; cursor: pointer; }
.search-toggle:hover, .search-toggle[aria-expanded="true"] { background: var(--grund); }
.head-tel { display: flex; flex-direction: column; line-height: 1.15; text-decoration: none; color: var(--tinte); border-left: 1px solid var(--linie); padding-left: 1.4rem; }
.head-tel span { font-size: .8125rem; color: var(--text-2); }
.head-tel strong { font-size: 1.125rem; font-family: var(--font-head); font-weight: 750; }
.head-tel:hover strong { text-decoration: underline; text-decoration-color: var(--signal); text-decoration-thickness: .15em; }
.call-btn, .burger { display: none; }
.searchbar { border-top: 1px solid var(--linie); background: var(--papier); }
.searchbar .search { padding: 1rem 0 1.25rem; }
.no-js .searchbar[hidden] { display: block; }
.no-js .search-toggle { display: none; }

/* Mobilmenü als Dialog: Fokusfalle, inerter Hintergrund und Escape liefert der Browser. */
.menu { width: 100%; max-width: none; height: 100%; max-height: none; margin: 0; padding: 0 0 3rem; border: 0; background: var(--papier); color: var(--tinte); overflow-y: auto; overscroll-behavior: contain; }
.menu::backdrop { background: rgb(22 33 27 / .4); }
.menu__bar { display: flex; align-items: center; gap: 1rem; min-height: var(--head-h); border-bottom: 1px solid var(--linie); }
.menu__close { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; font: 700 1rem var(--font-text); background: none; border: 2px solid var(--tinte); border-radius: var(--r); padding: .45rem .8rem; color: var(--tinte); cursor: pointer; }
.menu__body { padding-top: 1.25rem; }
.menu__tel { display: block; background: var(--signal); color: var(--tinte); text-decoration: none; padding: .9rem 1rem; border-radius: var(--r); margin-bottom: 1rem; }
.menu__tel span { display: block; font-size: .9375rem; font-weight: 700; }
.menu__tel strong { font-family: var(--font-head); font-size: 1.75rem; line-height: 1.2; }
.mnav .nav__list { display: block; }
.mnav .nav__item { flex-wrap: wrap; border-bottom: 1px solid var(--linie); }
.mnav .nav__link { flex: 1; font-size: 1.3125rem; padding: .85rem 0; background: none; white-space: normal; }
.mnav .nav__item.is-active > .nav__link { text-decoration: underline; text-decoration-color: var(--signal); text-decoration-thickness: .2em; text-underline-offset: .2em; }
.mnav .nav__toggle { min-width: 48px; min-height: 48px; border: 1px solid var(--linie); }
.mnav .nav__panel { position: static; width: 100%; border: 0; padding: 0 0 1rem; }
.mnav .nav__panel ul { grid-template-columns: 1fr; }
.menu .search { margin-top: 1.5rem; }
.menu .search input { max-width: none; }

@media (max-width: 1180px) {
	.bar { gap: 1.1rem; }
	.nav__list { gap: 1.1rem; }
	.head-tel { display: none; }
	/* Hilfe an gleicher Stelle (WCAG 3.2.6): statt der langen Nummer ein kompakter Anruf-Button. */
	.call-btn { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0; border-radius: var(--r); color: var(--tinte); background: var(--signal); }
	.call-btn__nr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
@media (max-width: 1023px) {
	:root { --head-h: 64px; }
	.brand__logo { height: 54px; }
	.bar > .nav, .search-toggle, .searchbar { display: none !important; }
	.call-btn { display: inline-flex; align-items: center; gap: .45rem; min-height: 44px; padding: 0 .75rem; border-radius: var(--r); color: var(--tinte); text-decoration: none; font-weight: 700; background: var(--signal); }
	.call-btn__nr { position: static; width: auto; height: auto; overflow: visible; clip: auto; }
	.burger { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; font: 700 1rem var(--font-text); background: none; border: 2px solid var(--tinte); border-radius: var(--r); padding: .4rem .8rem; color: var(--tinte); cursor: pointer; }
	.bar { gap: .75rem; }
}
@media (max-width: 520px) {
	.call-btn__nr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.call-btn { min-width: 44px; justify-content: center; padding: 0; }
}
@media (max-width: 400px) {
	.bar { gap: .5rem; }
	.burger { padding: .4rem .6rem; }
}
/* Wenig Höhe oder starker Zoom: Kopf scrollt mit, damit er nichts verdeckt (WCAG 2.4.11). */
@media (max-height: 520px) {
	.site-header { position: static; }
	html { scroll-padding-top: 1rem; }
	[id] { scroll-margin-top: 1rem; }
}

/* ---------- Seitenkopf ---------- */
.page-head { padding-block: clamp(2rem, 1.5rem + 2vw, 3.5rem) clamp(1.5rem, 1rem + 2vw, 3rem); }
.page-head h1 { max-width: 24ch; margin-bottom: .4em; }
.page-head .lead { max-width: 52ch; margin-bottom: 0; }
.page-head__media { margin-bottom: clamp(2rem, 1.5rem + 2vw, 3.5rem); }
.page-head__date { font-family: var(--font-head); font-weight: 800; font-size: var(--fs-lg); line-height: 1.2; margin: 1rem 0 0; }
.page-head__date span { display: block; font-size: var(--fs-md); font-weight: 600; color: var(--text-2); margin-top: .2rem; }
.page-head .notice { margin-top: 1.25rem; }
.page-head__search { margin-top: 1.75rem; max-width: 40rem; }
.crumbs ol { font-size: var(--fs-sm); color: var(--text-2); margin: 0 0 1.25rem; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: .25rem .5rem; }
.crumbs li + li::before { content: "/"; margin-right: .5rem; color: var(--text-2); }
.crumbs a { color: var(--text-2); display: inline-block; padding-block: .3rem; }
.crumbs a[aria-current] { text-decoration: none; color: var(--tinte); }
/* Mobil steht die aktuelle Seite ohnehin als H1 direkt darunter. */
@media (max-width: 640px) { .crumbs li:last-child:not(:first-child) { display: none; } }
.facts { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 1.25rem 0 0; padding: 0; }
.facts li { border: 1px solid var(--text-2); border-radius: var(--r); padding: .2rem .65rem; font-size: var(--fs-sm); font-weight: 600; }

.figure { margin: 0; }
.figure img { width: 100%; object-fit: cover; }
.figure figcaption, .wp-element-caption { font-size: var(--fs-sm); color: var(--text-2); margin-top: .6rem; }
.ratio-wide img { aspect-ratio: 21 / 9; }

/* ---------- Inhalte (Seiten) ---------- */
.entry-content { --inset: max(var(--gut), (100% - var(--max)) / 2); }
.entry-content > * { margin-inline: var(--inset); max-width: var(--measure); margin-block: 0; }
.entry-content > * + * { margin-top: 1.1rem; }
.entry-content > .alignwide, .entry-content > .wp-block-columns, .entry-content > .wp-block-bumerang-standorte, .entry-content > .wp-block-bumerang-veranstaltungen, .entry-content > .wp-block-bumerang-angebote-grid, .entry-content > .wp-block-bumerang-team-grid, .entry-content > .wp-block-bumerang-partner-logos, .entry-content > .wp-block-bumerang-projekte-liste, .entry-content > .wp-block-bumerang-sitemap { max-width: var(--max); }
.entry-content > .alignfull { margin-inline: 0; max-width: none; }
.entry-content > h2 { margin-top: clamp(2.5rem, 2rem + 2vw, 4rem); }
.entry-content > h3 { margin-top: 2rem; }
.entry-content > h2 + *, .entry-content > h3 + * { margin-top: .6rem; }
.entry-content > p + [class*="wp-block-bumerang-"], .entry-content > .wp-block-columns + * { margin-top: clamp(1.75rem, 1.25rem + 1.5vw, 2.5rem); }
.entry-content > .wp-block-columns + h2 { margin-top: clamp(2.5rem, 2rem + 2vw, 4rem); }
.entry-content > :first-child { margin-top: 0; }
.entry-content > p, .entry-content > ul, .entry-content > ol, .prose p, .prose li { hyphens: auto; -webkit-hyphens: auto; hyphenate-limit-chars: 10 4 4; }
.prose > * + * { margin-top: 1.1rem; }
.prose > * { margin-bottom: 0; }
.prose > h2 { margin-top: 2.2em; margin-bottom: 0; }
.prose > h3 { margin-top: 1.8em; }
.prose > h2 + *, .prose > h3 + * { margin-top: .6rem; }
.prose > :first-child { margin-top: 0; }
:is(.entry-content, .prose) > :is(ul, ol) > li + li { margin-top: .35rem; }

/* Überschrift direkt vor einer Liste mit Linie oder einer großen Fläche: immer gleiche Luft. */
:is(h2, h3, h4) + :is(.eventlines, .bereiche, .chrono, .stellen, .people, .people-wrap, .results, .link-list, .wegweiser, .archive, .plan, .is-style-links, .is-style-chronik, .is-style-buchstaben, .dates, .glance__place, .ort-zeilen, .wp-block-quote, [class*="wp-block-bumerang-"]) { margin-top: 1.25rem; }
/* Überschrift direkt nach Überschrift. */
:is(.entry-content, .prose) > h2 + h3 { margin-top: 1.25rem; }

/* Kernblöcke */
.wp-block-image { margin-block: 0; }
/* Bilder im Fließtext: gleiche Luft davor und danach; nach einer Überschrift wie bei Listen mit Linie. */
:is(.entry-content, .prose) > * + .wp-block-image, :is(.entry-content, .prose) > .wp-block-image + :not(h2, h3, h4) { margin-top: 1.5rem; }
:is(.entry-content, .prose) > :is(h2, h3, h4) + .wp-block-image { margin-top: 1.25rem; }
.wp-block-image img { width: 100%; height: auto; }
.wp-block-image.size-logo img, .wp-block-image.is-style-logo img { width: auto; max-height: 5rem; }
.is-style-hochformat img { aspect-ratio: 4 / 5; object-fit: cover; }
.is-style-breit img { aspect-ratio: 21 / 9; object-fit: cover; }
.wp-block-columns { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: 2rem var(--gut); }
.wp-block-column { min-width: 0; }
.wp-block-column > * + * { margin-top: 1rem; }
.wp-block-column > * { margin-bottom: 0; }
.wp-block-table table { width: 100%; }
.wp-block-table td, .wp-block-table th { border-top: 1px solid var(--linie); padding: .55rem .75rem .55rem 0; text-align: left; vertical-align: top; }
.wp-block-quote { margin-block: 0; padding-left: 1.25rem; border-left: 4px solid var(--signal); }

/* Blockstile */
.is-style-checkmarks { list-style: none; padding: 0; columns: 2 18rem; column-gap: 2.5rem; }
.is-style-checkmarks li { break-inside: avoid; padding: 0 0 .5rem 1.4rem; position: relative; line-height: 1.45; }
.is-style-checkmarks li::before { content: ""; position: absolute; left: 0; top: .5em; width: .55rem; height: .55rem; background: var(--kiefer); }
.entry-content > .is-style-checkmarks, .prose > .is-style-checkmarks { max-width: none; }
.is-style-buchstaben { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 1.25rem; }
.is-style-buchstaben li { border-top: 2px solid var(--tinte); padding-top: 1rem; font-size: var(--fs-sm); line-height: 1.45; margin: 0 !important; }
.is-style-buchstaben strong { display: block; font-family: var(--font-head); font-weight: 800; font-size: 3.5rem; line-height: 1; color: var(--kiefer); margin-bottom: .5rem; }
.is-style-links { list-style: none; padding: 0; border-top: 1px solid var(--linie); }
.is-style-links li { border-bottom: 1px solid var(--linie); margin: 0 !important; }
.is-style-links a { display: block; padding: 1rem 0; text-decoration: none; color: inherit; font-size: var(--fs-sm); }
.is-style-links a strong { display: block; width: fit-content; font-family: var(--font-head); font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.01em; line-height: 1.2; margin-bottom: .25rem; background: linear-gradient(var(--signal), var(--signal)) 0 92% / 0 .14em no-repeat; transition: background-size .2s ease; }
.is-style-links a:hover strong, .is-style-links a:focus-visible strong { background-size: 100% .14em; }
.is-style-links br { display: none; }
.is-style-chronik { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--gut); border-top: 2px solid var(--tinte); }
.is-style-chronik li { padding-top: 1rem; margin: 0 !important; font-size: var(--fs-sm); line-height: 1.45; }
.is-style-chronik strong { display: block; font-size: var(--fs-lg); font-weight: 800; letter-spacing: -.02em; margin-bottom: .35rem; }
.entry-content > .is-style-chronik { max-width: var(--max); }
.is-style-motto { font-weight: 700; font-size: var(--fs-xxl); line-height: 1.08; letter-spacing: -.025em; max-width: 21ch; color: var(--kiefer); }
.wp-block-quote.is-style-leitsatz { border: 0; padding: 0; }
.is-style-leitsatz > p:first-child { font-family: var(--font-head); font-weight: 700; font-size: var(--fs-xl); line-height: 1.12; letter-spacing: -.02em; color: var(--kiefer); max-width: 22ch; margin-bottom: 1.5rem; text-wrap: balance; }
.is-style-leitsatz > * + * { margin-top: 1rem; }
.is-style-leitsatz cite { font-style: normal; color: var(--text-2); }
/* Alte Stile aus dem ersten Theme: neutral darstellen, ohne Balken, Karten oder Kicker. */
.is-style-underline-brand::after, .is-style-boomerang-deco::before, .is-style-boomerang-deco::after { content: none !important; }
.is-style-eyebrow { font-size: var(--fs-sm); font-weight: 700; color: var(--text-2); }
.is-style-card, .is-style-section-navy, .is-style-section-cream { background: none; box-shadow: none; border: 0; }
.is-style-grund { background: var(--grund); }
.is-style-kiefer { background: var(--kiefer); color: var(--papier); }
.is-style-kiefer a { color: var(--papier); }
.has-text-align-center { text-align: left; }

/* ---------- Startseite ---------- */
.entry-content--home > * { max-width: var(--max); }
.entry-content--home > * + * { margin-top: 0; }
.entry-content--home > .alignfull > * { margin-inline: max(var(--gut), (100% - var(--max)) / 2); max-width: var(--max); }
.band { background: var(--grund); }
.band--kiefer { background: var(--kiefer); color: var(--papier); }
.band--kiefer a, .band--kiefer h2 { color: var(--papier); }
.split { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2rem var(--gut); }
.split > * { grid-column: 5 / -1; margin: 0; min-width: 0; }
.split > .split__head { grid-column: 1 / span 4; align-self: start; }
.split > .split__head > *, .split__head-inner > * { margin-bottom: 0; }
.split > .split__head > * + *, .split__head-inner > * + * { margin-top: 1rem; }
.split > .split__head p { color: var(--text-2); max-width: 30ch; }
.split > .split__head .link-strong, .split > .split__head a { color: var(--kiefer); }
.split > .alignwide, .split > .wp-block-bumerang-veranstaltungen.is-style-hervorgehoben { grid-column: 1 / -1; }
@media (min-width: 861px) {
	.split > .split__head { position: sticky; top: calc(var(--head-h) + 2rem); }
	/* Sticky ist an den ganzen Abschnitt gebunden, nicht an die eigene Zeile. Folgt ein Element
	   über die volle Breite, liefe der Kopf darüber. Dort reicht die Spalte über ihre Zeile und
	   nur der innere Rahmen läuft mit, bis die Zeile endet. */
	.split:has(> .alignwide, > .wp-block-bumerang-veranstaltungen.is-style-hervorgehoben) > .split__head { position: static; align-self: stretch; }
	.split:has(> .alignwide, > .wp-block-bumerang-veranstaltungen.is-style-hervorgehoben) .split__head-inner { position: sticky; top: calc(var(--head-h) + 2rem); }
}

.intro { padding-top: clamp(2.5rem, 1.5rem + 3vw, 4.5rem); display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1.5rem var(--gut); align-items: end; }
.intro > * { margin: 0 !important; min-width: 0; }
.intro h1 { grid-column: 1 / span 8; grid-row: 1; max-width: 19ch; font-size: clamp(2.375rem, 1.5rem + 3.3vw, 4rem); }
.intro > .lead { grid-column: 1 / span 7; grid-row: 2; }
.erstkontakt { grid-column: 9 / -1; grid-row: 1 / span 2; align-self: end; display: grid; grid-template-columns: 5rem 1fr; gap: 0 1rem; border-left: 4px solid var(--signal); padding: .25rem 0 .25rem 1.25rem; }
.erstkontakt > * { margin: 0 0 .35rem !important; grid-column: 2; min-width: 0; }
.erstkontakt > .wp-block-image { grid-column: 1; grid-row: 1 / span 3; }
.erstkontakt .wp-block-image img { width: 5rem; height: 5rem; border-radius: 50%; object-fit: cover; object-position: 50% 30%; }
.erstkontakt p { font-size: var(--fs-sm); color: var(--text-2); line-height: 1.45; }
.erstkontakt .erstkontakt__tel { margin-bottom: .4rem !important; }
.erstkontakt__tel a { display: inline-block; font-family: var(--font-head); font-weight: 800; font-size: clamp(1.75rem, 1.3rem + 1.5vw, 2.375rem); color: var(--tinte); text-decoration: none; letter-spacing: -.02em; line-height: 1.1; }
.erstkontakt__tel a:hover { text-decoration: underline; text-decoration-color: var(--signal); text-decoration-thickness: .15em; }
.erstkontakt p.erstkontakt__wer { color: var(--tinte); }
.intro > .intro__foto { grid-column: 1 / -1; margin-top: clamp(.5rem, 0rem + 2vw, 2rem) !important; }
.intro__foto img { aspect-ratio: 2.35 / 1; object-fit: cover; object-position: 50% 45%; }
@media (max-width: 1180px) {
	.intro h1 { grid-column: 1 / -1; }
	.intro > .lead { grid-column: 1 / span 9; }
	.erstkontakt { grid-column: 1 / span 9; grid-row: 3; align-self: start; }
}

/* Wegweiser */
.wegweiser { list-style: none; margin-block: 0; padding: 0; border-top: 2px solid var(--tinte); }
.wegweiser li { border-bottom: 1px solid var(--linie); margin: 0 !important; }
.wegweiser__link { display: grid; grid-template-columns: 1fr 8.5rem; grid-template-rows: auto auto; gap: .3rem 2rem; align-items: center; padding: 1rem 0; text-decoration: none; color: var(--tinte); }
.wegweiser__frage { grid-column: 1; font-family: var(--font-head); font-weight: 650; font-size: var(--fs-lg); line-height: 1.2; letter-spacing: -.012em; }
.wegweiser__frage span { background: linear-gradient(var(--signal), var(--signal)) 0 88% / 0 .4em no-repeat; transition: background-size .2s ease; padding-bottom: .05em; }
.wegweiser__link:hover .wegweiser__frage span, .wegweiser__link:focus-visible .wegweiser__frage span { background-size: 100% .4em; }
.wegweiser__ziel { grid-column: 1; grid-row: 2; font-size: var(--fs-sm); color: var(--kiefer); font-weight: 700; }
.wegweiser__ziel em { font-style: normal; font-weight: 400; color: var(--text-2); }
.wegweiser__link:hover .wegweiser__ziel { text-decoration: underline; }
.wegweiser__bild { grid-column: 2; grid-row: 1 / span 2; width: 8.5rem; aspect-ratio: 4 / 3; object-fit: cover; }

/* Orte mit Status */
.orte-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5rem 2rem; margin-bottom: 1rem !important; }
.orte-head > * { margin: 0 !important; }
.orte-head p { font-size: var(--fs-sm); color: var(--text-2); }
.stand { font-size: var(--fs-sm); color: var(--text-2); margin: 0 0 1.5rem; }
.towns { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 2rem var(--gut); }
.town h2, .town h3, .town h4 { font-size: var(--fs-md); padding-bottom: .6rem; border-bottom: 2px solid var(--tinte); margin: 0 0 .25rem; }
.town ul { list-style: none; margin: 0; padding: 0; }
.town--wide ul { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--gut); }
.town li { padding: .8rem 0; border-bottom: 1px solid var(--linie); line-height: 1.35; margin: 0; }
.town li > a { color: var(--tinte); font-weight: 700; text-decoration: none; }
.town li > a:hover { text-decoration: underline; }
.town__adr { display: block; font-size: var(--fs-sm); color: var(--text-2); }
.state { display: flex; align-items: baseline; gap: .45rem; margin: .3rem 0 0; font-size: 1rem; font-weight: 700; color: var(--tinte); line-height: 1.35; }
.state::before { content: ""; width: .6rem; height: .6rem; border-radius: 50%; flex: none; transform: translateY(-.05em); }
.state--o::before { background: var(--kiefer-2); box-shadow: 0 0 0 3px var(--kiefer-hell); }
.state--h::before, .state--t::before { background: var(--papier); border: 2px solid var(--kiefer-2); }
.state--c, .state--n { font-weight: 400; color: var(--text-2); }
.state--c::before { border: 2px solid var(--text-2); }
.state--n::before { display: none; }
.orte-fotos { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: var(--gut); margin-top: clamp(2rem, 1.5rem + 2vw, 3rem) !important; align-items: start; }
.orte-fotos > * { margin: 0 !important; }
/* Der Hinweis unter den Ortsfotos braucht Luft wie ein Absatz nach einem Bild. */
.band > .orte-fotos + p { margin-top: 1.5rem; }
.orte-fotos img { aspect-ratio: 4 / 3; object-fit: cover; }
.orte-fotos > :first-child img { aspect-ratio: 16 / 9; }

/* Diese Woche */
.woche { margin-block: 0; }
.day { display: grid; grid-template-columns: 9.5rem 1fr; gap: 0 1.5rem; padding: 1rem 0; border-top: 1px solid var(--linie); }
.day:first-child { border-top: 2px solid var(--tinte); }
.day__name { font-size: 1.1875rem; font-weight: 700; line-height: 1.35; letter-spacing: 0; margin: 0; }
.day__name > span[aria-hidden] > span { display: block; font-weight: 400; color: var(--text-2); font-size: var(--fs-sm); }
.day__mark { display: inline-block; margin-top: .35rem; background: var(--signal); color: var(--tinte); font: 700 1rem/1.4 var(--font-text); padding: .05rem .45rem; border-radius: 2px; }
.day--morgen .day__mark { background: var(--kiefer-hell); }
.day__items { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
.slot { display: grid; grid-template-columns: 4.25rem 1fr; gap: 0 1rem; margin: 0 !important; }
.slot time { font-weight: 700; }
.slot a { font-weight: 700; color: var(--tinte); text-decoration-color: var(--linie); }
.slot a:hover { text-decoration-color: var(--kiefer); }
.slot small { display: block; color: var(--text-2); line-height: 1.4; }
.flag { display: inline-block !important; margin-top: .25rem; font-size: 1rem !important; font-weight: 700; color: var(--tinte) !important; border-left: 3px solid var(--signal); padding-left: .45rem; }

.next-up { display: grid; grid-template-columns: 7fr 5fr; background: var(--grund); margin-block: 0; }
.split > .wp-block-bumerang-veranstaltungen.is-style-hervorgehoben { margin-top: clamp(1rem, .5rem + 2vw, 2.5rem); }
.next-up__img { min-height: 100%; }
.next-up__img img { height: 100%; width: 100%; object-fit: cover; aspect-ratio: 16 / 10; }
.next-up__body { padding: clamp(1.5rem, 1rem + 2vw, 3rem); display: flex; flex-direction: column; justify-content: center; }
.next-up__body > * { margin: 0 0 .75rem; }
.next-up__body > :last-child { margin-bottom: 0; }
.next-up__label { font-weight: 700; font-size: var(--fs-sm); }
.next-up__date { font-weight: 800; font-size: var(--fs-xl); line-height: 1; letter-spacing: -.02em; }
.next-up__date span { display: block; font-size: var(--fs-sm); font-family: var(--font-text); font-weight: 700; letter-spacing: 0; color: var(--text-2); margin-top: .6rem; line-height: 1.4; }
.next-up__title { font-size: var(--fs-lg); margin: .25rem 0 .5rem !important; }

/* Mitmachen */
.mitmachen { display: grid; grid-template-columns: 5fr 7fr; gap: 2rem var(--gut); align-items: center; }
.mitmachen > * { margin: 0 !important; min-width: 0; }
.mitmachen .wp-block-image img { aspect-ratio: 4 / 5; object-fit: cover; }
.mitmachen__text > * { margin: 0; }
.mitmachen__text > * + * { margin-top: 1rem; }
.mitmachen__text > p { color: var(--kiefer-hell); font-size: var(--fs-md); max-width: 40ch; }
.band--kiefer .is-style-links { border-top-color: rgb(255 255 255 / .35); margin-top: 1.5rem; }
.band--kiefer .is-style-links li { border-bottom-color: rgb(255 255 255 / .35); }
.band--kiefer .is-style-links a { color: var(--kiefer-hell); }
.band--kiefer .is-style-links a strong { color: var(--papier); }
.band--kiefer :focus-visible { outline-color: var(--papier); }

/* Verein: Leitsatz, Chronik, Vorstand */
.verein > * { margin: 0; }
.verein > .is-style-motto { margin-bottom: .75rem; }
.verein > .motto-quelle { color: var(--text-2); margin-bottom: 1.5rem; }
.verein > p { max-width: var(--measure); }
.verein > .link-strong { margin-top: 1rem; }
.vorstand { display: grid; grid-template-columns: 4fr 8fr; gap: var(--gut); align-items: start; }
.vorstand > * { margin: 0 !important; min-width: 0; }
.vorstand .portraits { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 420px) { .vorstand .portraits { grid-template-columns: 1fr; } }
.vorstand__text > * { margin: 0; }
.vorstand__text > * + * { margin-top: 1rem; }
.vorstand__text p { color: var(--text-2); }
.sect--tight { padding-block: clamp(2.5rem, 2rem + 2vw, 4rem); border-top: 1px solid var(--linie); }
.entry-content--home > .sect:last-child { padding-bottom: var(--sect); }

/* ---------- Personen ---------- */
.portraits { list-style: none; margin-block: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); gap: 2rem var(--gut); }
.portrait { margin: 0 !important; }
.portrait__bild { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 20%; }
.portrait .person__name { font-size: var(--fs-md); margin: .9rem 0 .2rem; }
.person__role { font-size: var(--fs-sm); color: var(--text-2); margin: 0 0 .5rem; line-height: 1.45; }
.people { list-style: none; margin-block: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 26rem), 1fr)); column-gap: var(--gut); border-top: 2px solid var(--tinte); }
.person-row { display: grid; grid-template-columns: 1fr; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--linie); margin: 0 !important; }
.people--fotos .person-row { grid-template-columns: 5rem 1fr; }
.person-row__bild { width: 5rem; height: 5rem; object-fit: cover; object-position: 50% 25%; }
.person-row .person__name, .person .person__name { font-size: 1.1875rem; margin: 0 0 .15rem; letter-spacing: 0; }
.people-short { display: grid; gap: 1rem; margin-top: 1.25rem; }
.person { display: flex; gap: 1rem; padding-top: 1rem; border-top: 1px solid var(--linie); }
.person__bild { width: 4.5rem; height: 4.5rem; object-fit: cover; flex: none; }
.avatar { display: block; background: var(--grund); color: var(--linie); overflow: hidden; }
.avatar svg { display: block; width: 100%; height: 100%; fill: currentColor; }

/* Kontaktzeilen: Textlabels statt Symbole */
.contact { margin: .6rem 0 1rem; display: grid; grid-template-columns: 5.75rem 1fr; gap: .2rem .75rem; font-size: var(--fs-sm); line-height: 1.5; }
.contact dt { color: var(--text-2); }
.contact dd { margin: 0; overflow-wrap: anywhere; }
.contact a[href^="tel"] { font-weight: 700; }
.contact a { display: inline-block; padding-block: .15rem; }

/* ---------- Angebot, Projekt, Termin, Stelle ---------- */
.offer { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2rem var(--gut); }
.offer__main { grid-column: 1 / span 7; grid-row: 1; min-width: 0; max-width: var(--measure); }
.offer__aside { grid-column: 9 / -1; grid-row: 1; min-width: 0; }
.offer__sticky { position: sticky; top: calc(var(--head-h) + 1.5rem); }
.offer__sticky.is-static { position: static; }
/* Abschnitte unter dem Inhalt: voller Abschnittsabstand zur Linie. */
.offer + .offer__below { margin-top: var(--sect); }
.offer__media img { aspect-ratio: 3 / 2; }
.prose > .offer__media + * { margin-top: clamp(1.75rem, 1.25rem + 1.5vw, 2.5rem); }
.offer__main .wp-block-image { max-width: 30rem; }
.offer__main .size-logo { max-width: 12rem; }
.glance { background: var(--grund); padding: 1.5rem; }
.glance h2 { font-size: var(--fs-md); margin: 0 0 .5rem; }
.glance__place { border-top: 1px solid var(--linie); padding: 1rem 0 .75rem; }
.glance__place:last-child { padding-bottom: 0; }
.glance__place h3 { font-size: 1.1875rem; font-family: var(--font-text); font-weight: 700; margin: 0; letter-spacing: 0; }
.glance__place .state { margin: .25rem 0 .15rem; }
.glance__walkin { font-size: var(--fs-sm); margin: .25rem 0; }
.glance__meta { font-size: var(--fs-sm); color: var(--text-2); margin: .5rem 0 .5rem; line-height: 1.5; }
.glance__past { font-size: var(--fs-sm); }
.glance .contact { margin-top: 1rem; }
.glance > .btn { margin-top: .75rem; }
.btn--call { width: 100%; margin-top: .6rem; font-family: var(--font-head); font-size: 1.25rem; padding: .7rem 1rem; }
.btn--web { margin-top: .5rem; background: var(--papier); }
.btn--web:hover { background: var(--kiefer); }
.dates { list-style: none; margin: 0 0 1rem; padding: 0; }
.dates li { padding: .75rem 0; border-top: 1px solid var(--linie); line-height: 1.35; margin: 0; }
.dates time { display: block; font-weight: 700; }
.dates span { font-size: var(--fs-sm); color: var(--text-2); }
.aside-block { margin-top: 1.5rem; }
.aside-block h2 { font-size: 1.1875rem; margin-bottom: .4rem; }
.aside-block p { font-size: var(--fs-sm); }
.plain-links { list-style: none; padding: 0; margin: 0; }
.plain-links a { display: inline-block; padding-block: .3rem; }
.toc { margin-top: 1.5rem; }
.toc p { font-weight: 700; font-size: var(--fs-sm); margin-bottom: .4rem; }
.toc ul { list-style: none; margin: 0; padding: 0; border-left: 2px solid var(--linie); }
.toc a { display: block; padding: .35rem 0 .35rem 1rem; font-size: var(--fs-sm); color: var(--tinte); text-decoration: none; line-height: 1.4; }
.toc a:hover { text-decoration: underline; }
.toc a.is-current { border-left: 2px solid var(--kiefer); margin-left: -2px; font-weight: 700; }
mark.walkin { background: var(--signal); color: var(--tinte); padding: 0 .2rem; font-weight: 700; }
.back { margin-top: 2.5rem !important; }

.sub { border-top: 2px solid var(--tinte); padding-top: clamp(2rem, 1.5rem + 2vw, 3rem); }
.sub + .sub { margin-top: var(--sect); }
.sub > h2 { margin-bottom: 0; }
.sub > .ort-zeilen > .ort-zeile:first-child { padding-top: .5rem; }
.place__hint { font-size: var(--fs-sm); margin: .75rem 0 0; }
.hours { width: 100%; font-size: var(--fs-sm); margin-top: .25rem; }
.hours caption { text-align: left; font-weight: 700; padding-bottom: .4rem; }
.hours th, .hours td { text-align: left; vertical-align: top; padding: .5rem .5rem .5rem 0; border-top: 1px solid var(--linie); line-height: 1.4; }
.hours th { width: 5.5rem; font-weight: 700; white-space: nowrap; }
.hours .is-today { background: var(--signal); }
.hours .is-today th { padding-left: .5rem; }
.hours .is-closed td { color: var(--text-2); }
.hours .is-today mark.walkin { background: var(--papier); outline: 1px solid var(--tinte); }
.hours__heute { white-space: nowrap; }
.hours__note { font-size: var(--fs-sm); margin: .5rem 0 0; }
/* Adressverzeichnis (Kontaktseite): ein Ort je Zeile, drei Spalten Wo, Kontakt, Sprechzeiten. */
.sprung { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; padding: 1rem 1.25rem; background: var(--grund); }
.sprung__titel { margin: 0; font-weight: 700; font-size: var(--fs-sm); }
.sprung ul { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.sprung li { margin: 0 !important; }
.sprung a { display: inline-flex; align-items: baseline; gap: .5rem; min-height: 44px; padding: .6rem 1rem; border: 1px solid var(--text-2); border-radius: var(--r); background: var(--papier); color: var(--tinte); text-decoration: none; font-weight: 700; line-height: 1.2; }
.sprung a:hover { border-color: var(--tinte); background: var(--signal); }
.sprung a span { font-weight: 400; color: var(--text-2); font-size: var(--fs-sm); }
.sprung a:hover span { color: var(--tinte); }
.verzeichnis__stadt { margin-top: clamp(2.5rem, 2rem + 2vw, 4rem); }
.verzeichnis__titel { font-size: var(--fs-xl); padding-bottom: .5rem; border-bottom: 3px solid var(--tinte); margin: 0; }
.ort-zeile { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 4fr) minmax(0, 5fr); gap: 1.5rem var(--gut); padding: 2rem 0 2.25rem; border-bottom: 1px solid var(--linie); }
.ort-zeile > * > :first-child { margin-top: 0; }
.ort-zeilen > .ort-zeile:last-child { border-bottom: 0; padding-bottom: 0; }
.ort-zeile__name { font-size: var(--fs-md); margin: 0 0 .5rem; }
.ort-zeile address { line-height: 1.5; }
.ort-zeile__wo p { margin: .5rem 0 0; }
.ort-zeile__mehr { font-size: var(--fs-sm); color: var(--text-2); }
.ort-zeile__kontakt > .state { margin: 0 0 .5rem; }
.ort-zeile__tel { display: inline-block; font-family: var(--font-head); font-weight: 800; font-size: var(--fs-lg); letter-spacing: -.01em; color: var(--tinte); text-decoration: none; line-height: 1.2; padding-block: .15rem; }
.ort-zeile__tel:hover { text-decoration: underline; text-decoration-color: var(--signal); text-decoration-thickness: .15em; }
.ort-zeile__kontakt .contact { margin: .5rem 0 0; }
.ort-personen { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--linie); font-size: var(--fs-sm); line-height: 1.45; }
.ort-zeile__kontakt > .ort-personen:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.ort-personen__titel { font-weight: 700; color: var(--text-2); margin: 0 0 .4rem; }
.ort-personen ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
.ort-personen li { margin: 0 !important; }
.ort-personen li > * { display: block; }
.ort-personen__rolle { color: var(--text-2); }
.ort-zeile__zeiten .hours { margin-top: 0; }
.ort-zeile__frei { font-size: var(--fs-sm); margin: 0; }
.ort-zeile__zeiten .place__hint { margin-top: .75rem; }
.ort-zeile__walkin { margin: 0 0 .35rem; font-size: var(--fs-sm); }
.ort-zeile__frei + .aufklapp { margin-top: .75rem; }

/* Aufklappen: ruhige Textzeile mit Pfeil, keine eigene Linie. */
.aufklapp > summary { display: inline-flex; align-items: center; gap: .6rem; min-height: 44px; cursor: pointer; list-style: none; font-weight: 700; color: var(--kiefer); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
.aufklapp > summary::-webkit-details-marker { display: none; }
.aufklapp > summary::after { content: ""; flex: none; width: .5rem; height: .5rem; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-.15rem) rotate(45deg); }
.aufklapp[open] > summary::after { transform: translateY(.1rem) rotate(-135deg); }
.aufklapp > summary:hover { text-decoration-thickness: 2px; }
.aufklapp__inhalt { padding-top: .5rem; }
.aufklapp__inhalt > :first-child { margin-top: 0; }
.aufklapp__inhalt > .ort-personen { margin-top: 1.25rem; }
@media (max-width: 1080px) {
	.ort-zeile { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ort-zeile__zeiten { grid-column: 1 / -1; max-width: 34rem; }
}
@media (max-width: 640px) {
	.ort-zeile { grid-template-columns: 1fr; gap: 1.25rem; padding-block: 1.75rem; }
}

.eventlines { list-style: none; margin-block: 0 1.25rem; padding: 0; border-top: 2px solid var(--tinte); }
.eventline { display: grid; grid-template-columns: 7.5rem 1fr; gap: .25rem 1.25rem; border-bottom: 1px solid var(--linie); padding: 1rem 0; margin: 0 !important; }
.eventline__when { font-weight: 800; font-size: var(--fs-md); line-height: 1.2; margin: 0; }
.eventline p { margin: 0; }
.eventline .muted { font-size: var(--fs-sm); margin-top: .2rem; line-height: 1.45; }

/* ---------- Übersichten ---------- */
.bereiche, .projekte, .stellen, .chrono, .results, .link-list { list-style: none; margin-block: 0; padding: 0; }
.bereiche { border-top: 2px solid var(--tinte); }
.bereich { display: grid; grid-template-columns: 18rem 1fr; gap: 1.25rem var(--gut); padding: 1.5rem 0; border-bottom: 1px solid var(--linie); margin: 0 !important; align-items: start; }
.bereich__bild img { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; }
.bereich__text > * { margin: 0; }
.bereich__text > * + * { margin-top: .5rem; }
.bereich__titel { font-size: var(--fs-lg); }
/* Titel in Verzeichnissen: überall gleich, Tinte mit feiner Unterstreichung. */
.bereich__titel a, .projekt__text :is(h2, h3) a, .chrono__titel a, .stelle :is(h2, h3) a, .results h2 a, .eventline .link-strong, .next-up__title a { color: var(--tinte); text-decoration-color: var(--linie); text-decoration-thickness: 2px; }
.bereich__titel a:hover, .projekt__text :is(h2, h3) a:hover, .chrono__titel a:hover, .stelle :is(h2, h3) a:hover, .results h2 a:hover, .eventline .link-strong:hover, .next-up__title a:hover { text-decoration-color: var(--kiefer); }
.bereich__unter { font-weight: 700; color: var(--kiefer); }
.bereich__orte { font-size: var(--fs-sm); color: var(--text-2); }
.projekte { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 26rem), 1fr)); gap: 2.5rem var(--gut); }
.projekt { margin: 0 !important; }
.projekt__bild img { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; }
.projekt__text { padding-top: 1rem; }
.projekt__text > * { margin: 0; }
.projekt__text > * + * { margin-top: .5rem; }
.projekt__text h2, .projekt__text h3 { font-size: var(--fs-lg); }
.projekt__zeit { font-weight: 700; font-size: var(--fs-sm); }
.chrono { border-top: 2px solid var(--tinte); }
.chrono li { display: grid; grid-template-columns: 11rem 1fr; gap: .5rem var(--gut); padding: 1.1rem 0; border-bottom: 1px solid var(--linie); margin: 0 !important; }
.chrono__zeit { font-family: var(--font-head); font-weight: 700; margin: 0; }
.chrono__titel { font-size: var(--fs-md); margin: 0 0 .3rem; }
.chrono li p { margin: 0; }
.stellen { border-top: 2px solid var(--tinte); }
.stelle { padding: 1.25rem 0; border-bottom: 1px solid var(--linie); margin: 0 !important; }
.stelle h2, .stelle h3 { font-size: var(--fs-lg); margin: 0; }
.stelle .facts { margin: .75rem 0; }
.stelle p { margin: 0; }
.kontaktbox { background: var(--grund); padding: 1.5rem; }
.kontaktbox--inline { display: inline; background: none; padding: 0; }
.wp-block-bumerang-kontaktbox:has(.kontaktbox--inline) { background: none; padding: 0; }
.kontaktbox__titel { font-size: var(--fs-md); margin-bottom: .75rem; }
.kontaktbox__tel { display: inline-block; font-family: var(--font-head); font-weight: 800; font-size: clamp(1.75rem, 1.3rem + 1.5vw, 2.375rem); letter-spacing: -.02em; line-height: 1.1; color: var(--tinte); text-decoration: none; margin-bottom: .25rem; }
.kontaktbox__tel:hover { text-decoration: underline; text-decoration-color: var(--signal); text-decoration-thickness: .15em; }
.kontaktbox__hinweis { font-size: var(--fs-sm); margin: 0 0 1rem; }
.kontaktbox address { margin: 1rem 0 .5rem; }
.kontaktbox .contact { margin-bottom: 0; }
.logos { display: flex; flex-wrap: wrap; align-items: center; gap: 2rem 3.5rem; list-style: none; margin-block: 0; padding: 0; }
.logos li { margin: 0 !important; }
.logos img { height: 56px; width: auto; max-width: 14rem; object-fit: contain; }
.logos a { display: block; }
.logos__name { font-weight: 700; }
.empty { font-size: var(--fs-md); max-width: var(--measure); }
.empty .actions { margin-top: 1.25rem; }

.results { border-top: 2px solid var(--tinte); max-width: 52rem; }
.results li { padding: 1.25rem 0; border-bottom: 1px solid var(--linie); margin: 0; }
.results h2 { font-size: var(--fs-lg); margin: 0 0 .35rem; }
.results p { margin: 0; }
.results__art { font-size: var(--fs-sm); font-weight: 700; color: var(--text-2); margin-bottom: .25rem !important; }
.results mark { background: var(--signal); color: inherit; padding: 0 .15em; border-radius: 2px; }
.link-list { border-top: 2px solid var(--tinte); max-width: 44rem; }
.link-list li { border-bottom: 1px solid var(--linie); }
.link-list a { display: block; padding: 1rem 0; text-decoration: none; color: var(--tinte); }
.link-list strong { display: block; font-family: var(--font-head); font-size: var(--fs-lg); line-height: 1.2; }
.link-list span { color: var(--text-2); font-size: var(--fs-sm); }
.link-list a:hover strong { text-decoration: underline; text-decoration-color: var(--signal); text-decoration-thickness: .15em; }
.nav-links, .pagination .nav-links { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 2rem; }
.page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0 .75rem; border: 1px solid var(--linie); border-radius: var(--r); text-decoration: none; }
.page-numbers.current { background: var(--tinte); color: var(--papier); border-color: var(--tinte); }

/* Sitemap-Block */
.sitemap nav { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr)); gap: 2rem var(--gut); }
.sitemap__heading { font-size: var(--fs-md); border-bottom: 2px solid var(--tinte); padding-bottom: .5rem; }
.sitemap__list { list-style: none; padding: 0; margin: 0; }
.sitemap__list a { display: inline-block; padding-block: .25rem; }

/* ---------- Terminseite ---------- */
.termine > * + * { margin-top: clamp(2.5rem, 2rem + 2vw, 4rem); }
.filters { display: flex; flex-wrap: wrap; gap: 1.25rem 2.5rem; align-items: flex-start; }
.filter__label { font-weight: 700; font-size: var(--fs-sm); margin: 0 0 .5rem; }
.filter ul { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.filter li { margin: 0; }
.chip { display: inline-flex; align-items: center; min-height: 44px; padding: 0 1rem; border: 1px solid var(--text-2); border-radius: var(--r); font-size: var(--fs-sm); font-weight: 600; color: var(--tinte); text-decoration: none; }
.chip:hover { background: var(--grund); }
.chip[aria-current] { background: var(--tinte); color: var(--papier); border-color: var(--tinte); }
.filters__count { flex-basis: 100%; margin: 0; font-size: var(--fs-sm); color: var(--text-2); }
.filters__aufklapp { flex-basis: 100%; }
.filters__inhalt { display: flex; flex-wrap: wrap; gap: 1.25rem 2.5rem; align-items: flex-start; }
/* Am Desktop sind die Filter immer offen, der Schalter wäre nur Ballast. */
@media (min-width: 861px) { .filters__aufklapp > summary { display: none; } .filters__inhalt { padding-top: 0; } }
.chip__zahl { margin-left: .4rem; font-weight: 400; color: var(--text-2); }
.chip[aria-current] .chip__zahl { color: inherit; }
.chip--leer { color: var(--text-2); border-style: dashed; cursor: default; }
.chip--leer:hover { background: none; }
.archiv__aufklapp { margin-top: .75rem; }
.archiv__aufklapp .aufklapp__inhalt { padding-top: 1rem; }
.sub-sect > h2, .sub-sect > h3 { margin-bottom: .5rem; }
.sub-sect--archiv { background: var(--grund); padding: clamp(1.5rem, 1rem + 2vw, 3rem); }
.plan__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1rem 2rem; }
.plan__head p { margin-bottom: 0; color: var(--text-2); max-width: 52ch; }
.plan__actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.plan { display: grid; grid-template-columns: repeat(auto-fit, minmax(10.5rem, 1fr)); border-top: 2px solid var(--tinte); margin-top: 1.5rem; }
.plan__day { padding: 1rem 1rem 1.5rem; border-right: 1px solid var(--linie); }
.plan__day:first-child { padding-left: 0; }
.plan__day:last-child { border-right: 0; }
.plan__day.is-today { background: linear-gradient(var(--signal), var(--signal)) 0 0 / 100% 4px no-repeat; }
.plan__day h3, .plan__day h4 { font-family: var(--font-text); font-size: 1.1875rem; letter-spacing: 0; margin: 0 0 1rem; }
.plan__heute { font-size: 1rem; background: var(--signal); padding: .05rem .4rem; border-radius: 2px; vertical-align: .15em; }
.plan__day ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.25rem; }
.plan__day li { margin: 0; }
.plan__day time { display: block; font-weight: 700; font-size: var(--fs-sm); }
.plan__day li > a { font-weight: 700; color: var(--tinte); line-height: 1.3; display: inline-block; text-decoration-color: var(--linie); }
.plan__day small { display: block; color: var(--text-2); font-size: .9375rem; line-height: 1.4; margin-top: .2rem; }
.plan__rhythm { display: inline-block; margin-top: .3rem; font-size: .875rem; font-weight: 700; background: var(--kiefer-hell); padding: .05rem .4rem; border-radius: 2px; }
.plan__reg { display: block; margin-top: .35rem; font-size: 1rem; font-weight: 700; border-left: 3px solid var(--signal); padding-left: .45rem; }
/* Kopf und Fuß des gedruckten Wochenplans, nur in der Druckansicht „druck-plan“. */
.plan-druck { display: none; }
.archive { display: grid; grid-template-columns: 7rem 1fr; border-top: 2px solid var(--tinte); margin-top: 1.5rem; }
.archive > h3, .archive > h4 { font-size: var(--fs-lg); margin: 0; padding: 1rem 0; border-bottom: 1px solid var(--linie); }
.archive > ul { list-style: none; margin: 0; padding: 1rem 0; border-bottom: 1px solid var(--linie); display: grid; grid-template-columns: 1fr 1fr; gap: .9rem var(--gut); }
.archive li { line-height: 1.4; margin: 0; }
.archive li a { font-weight: 700; color: var(--tinte); text-decoration-color: var(--text-2); }
.archive li span { display: block; font-size: var(--fs-sm); color: var(--text-2); }
.termine__next .next-up { background: var(--grund); }

/* ---------- Fuß ---------- */
/* Logos sind für weißen Grund gebaut, deshalb steht der Förderhinweis hell über dem dunklen Fuß. */
.foot-partner > .wrap { border-top: 1px solid var(--linie); padding-block: clamp(2.5rem, 2rem + 2vw, 4rem); }
.foot-partner > .wrap > * { margin: 0; }
.foot-partner > .wrap > * + * { margin-top: 1.25rem; }
.foot-partner h2 { font-size: var(--fs-md); }
.foot-partner p { font-size: var(--fs-sm); color: var(--text-2); max-width: 68ch; }
.foot-main { background: var(--kiefer); color: var(--papier); padding-block: clamp(3rem, 2rem + 3vw, 5rem) 2rem; }
.foot-main a { color: var(--papier); }
.foot { display: grid; grid-template-columns: 5fr 3fr 3fr 3fr; gap: 2rem var(--gut); }
.foot .brand { margin-bottom: 1.25rem; }
.foot .brand__logo { height: 88px; }
.foot h2 { font: 700 var(--fs-sm) var(--font-text); letter-spacing: 0; color: var(--kiefer-hell); margin-bottom: .6rem; }
.foot ul { list-style: none; margin: 0; padding: 0; }
.foot li a { display: inline-block; padding-block: .3rem; }
.foot address { line-height: 1.6; margin-bottom: .6rem; }
.foot__tel { font-weight: 800; font-size: var(--fs-lg); text-decoration: none; display: inline-block; margin-bottom: .2rem; }
.foot__base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem 2rem; border-top: 1px solid rgb(255 255 255 / .25); margin-top: clamp(2.5rem, 2rem + 2vw, 4rem); padding-top: 1.5rem; font-size: var(--fs-sm); color: var(--kiefer-hell); }
.foot__base p { margin: 0; }
.foot-main :focus-visible { outline-color: var(--papier); }

/* ---------- Umbrüche ---------- */
@media (max-width: 1080px) {
	.foot { grid-template-columns: 1fr 1fr; }
	.foot__org { grid-column: 1 / -1; }
	.plan { grid-template-columns: repeat(3, 1fr); }
	.plan__day:nth-child(3n) { border-right: 0; }
	.plan__day:nth-child(3n + 1) { padding-left: 0; }
	.plan__day:nth-child(n + 4) { border-top: 1px solid var(--linie); }
}
@media (max-width: 860px) {
	.intro, .split, .offer, .mitmachen, .vorstand { grid-template-columns: 1fr; }
	.intro h1, .intro > .lead, .erstkontakt, .intro > .intro__foto, .split > *, .split > .split__head, .offer__main, .offer__aside { grid-column: 1; grid-row: auto; }
	.erstkontakt { grid-template-columns: 4rem 1fr; }
	.erstkontakt .wp-block-image img { width: 4rem; height: 4rem; }
	.intro__foto img { aspect-ratio: 16 / 9; }
	/* Reihenfolge per order statt fester Zeilen: eine ausgeblendete Seitenleiste hinterlässt keine leere Rasterzeile. */
	.offer__aside { order: -1; }
	.offer__sticky { position: static; }
	.toc { display: none; }
	.offer__aside:not(:has(.glance, .aside-block)) { display: none; }
	.offer__aside:not(:has(.glance)) { order: 1; }
	.towns, .town--wide ul { grid-template-columns: 1fr; }
	.orte-fotos { grid-template-columns: 1fr 1fr; }
	.orte-fotos > :first-child { grid-column: 1 / -1; }
	.day { grid-template-columns: 1fr; gap: .5rem; }
	.next-up { grid-template-columns: 1fr; }
	.mitmachen .wp-block-image img { aspect-ratio: 16 / 9; }
	.is-style-chronik { grid-template-columns: 1fr; gap: 0; }
	.is-style-chronik li { display: grid; grid-template-columns: 4.5rem 1fr; gap: 1rem; padding: .8rem 0; border-bottom: 1px solid var(--linie); }
	.is-style-chronik strong { font-size: var(--fs-md); }
	.bereich { grid-template-columns: 8rem 1fr; }
	.chrono li { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
	.wegweiser__link { grid-template-columns: 1fr 4.5rem; gap: .3rem 1rem; }
	.wegweiser__bild { width: 4.5rem; aspect-ratio: 1; }
	.plan { grid-template-columns: 1fr; }
	.plan__day, .plan__day:nth-child(n) { border-right: 0; padding: 1rem 0; border-top: 1px solid var(--linie); }
	.plan__day:first-child { border-top: 0; }
	.archive { grid-template-columns: 1fr; }
	.archive > h3, .archive > h4 { border-bottom: 0; padding-bottom: 0; }
	.archive > ul { grid-template-columns: 1fr; }
	.eventline { grid-template-columns: 1fr; }
	.bereich { grid-template-columns: 1fr; }
	.bereich__bild { max-width: 20rem; }
	.foot { grid-template-columns: 1fr; }
	.contact { grid-template-columns: 5rem 1fr; }
}
/* Lange deutsche Komposita in Überschriften auf schmalen Screens trennen. */
@media (max-width: 480px) { h1, h2, h3 { hyphens: auto; -webkit-hyphens: auto; hyphenate-limit-chars: 12 6 6; overflow-wrap: break-word; } }

/* ---------- Präferenzen ---------- */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
@media (forced-colors: active) {
	.state::before, .day__mark, .plan__heute { forced-color-adjust: none; }
	.btn, .chip, .glance, .kontaktbox { border: 1px solid CanvasText; }
	.hours .is-today, mark.walkin { outline: 2px solid Highlight; }
}

/* ---------- Druck: Wochenplan als Aushang ---------- */
@media print {
	.site-header, .site-footer, .menu, .filters, .termine__next, .plan__actions, .crumbs, .sub-sect--archiv, .skip, .toc, .offer__aside .btn { display: none !important; }
	body { font-size: 11pt; }
	.plan { grid-template-columns: repeat(3, 1fr); }
	.plan__day { break-inside: avoid; }
	.plan__day.is-today { background: none; }
	.plan__heute { display: none; }
	.sect, .entry-content { padding: 0; }
	a { color: #000; text-decoration: none; }
	.offer { display: block; }
	.aufklapp > summary::after { display: none; }

	/* „Wochenplan drucken“: nur der Plan, alle Tage nebeneinander auf einer Seite quer (main.js). */
	.druck-plan main :not(#regelmaessig, #regelmaessig *, :has(#regelmaessig)) { display: none !important; }
	.druck-plan main, .druck-plan main :has(#regelmaessig), .druck-plan #regelmaessig { margin: 0 !important; padding: 0 !important; max-width: none !important; background: none !important; }
	.druck-plan .plan__head { display: none; }
	.druck-plan .plan-druck { display: flex; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
	.plan-druck__kopf { align-items: center; gap: 8mm; padding-bottom: 3mm; border-bottom: 2pt solid var(--kiefer); }
	.plan-druck__kopf img { width: auto; height: 17mm; }
	.plan-druck__kopf > div { flex: 1; }
	.plan-druck__kopf p { margin: 0; font-size: 10pt; line-height: 1.45; color: var(--text-2); }
	.plan-druck__kopf .plan-druck__titel { font: 800 26pt/1 var(--font-head); letter-spacing: -.02em; color: var(--kiefer); margin-bottom: 1.5mm; }
	.plan-druck__tel { text-align: right; }
	.plan-druck__tel strong { font: 800 16pt/1.3 var(--font-head); color: var(--tinte); }
	.druck-plan .plan { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 48mm); gap: 0 4mm; margin-top: 5mm; border-top: 0; }
	.druck-plan .plan__day, .druck-plan .plan__day:nth-child(n) { padding: 0; border: 0; }
	.druck-plan .plan__day :is(h3, h4) { margin: 0 0 1mm; padding: 2mm 3mm; border-radius: 1.5mm; font-size: 12.5pt; color: var(--papier); background: var(--kiefer); print-color-adjust: exact; -webkit-print-color-adjust: exact; }
	.druck-plan .plan__day ul { gap: 0; }
	.druck-plan .plan__day li { padding: 2.5mm 1mm; border-bottom: .75pt solid var(--linie); }
	.druck-plan .plan__day li:last-child { border-bottom: 0; }
	.druck-plan .plan__day time { font-size: 10.5pt; color: var(--kiefer); }
	.druck-plan .plan__day li > a { font-size: 12pt; margin-top: .5mm; }
	.druck-plan .plan__day small { font-size: 9.5pt; margin-top: 1mm; }
	.druck-plan .plan__rhythm { margin-top: 1.5mm; font-size: 9pt; background: none; border: .75pt solid var(--kiefer); }
	.druck-plan .plan__reg { margin-top: 1.5mm; font-size: 9.5pt; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
	.plan-druck__fuss { justify-content: space-between; align-items: end; gap: 8mm; margin-top: 5mm; padding-top: 3mm; border-top: .75pt solid var(--linie); }
	.plan-druck__fuss p { margin: 0; font-size: 9.5pt; line-height: 1.45; color: var(--text-2); }
	.plan-druck__fuss strong { color: var(--tinte); }
	.plan-druck__fuss p + p { flex: none; text-align: right; }
}

/* Offenes Mobilmenü: Seite dahinter scrollt nicht mit. */
html:has(.menu[open]) { overflow: hidden; }

/* Am Dateiende, damit es gleich spezifische Regeln davor sicher überschreibt:
   Das letzte Element eines Containers bringt keinen Außenabstand nach unten mit. */
main :last-child { margin-bottom: 0; }
