/*
Theme Name: MiP
Theme URI: https://mip-koeln.de
Author: Miteinander im Pantaleonsviertel e.V.
Author URI: https://mip-koeln.de
Description: Block-Theme für die Website von Miteinander im Pantaleonsviertel e.V. im Kölner Pantaleonsviertel.
Version: 1.0.0
Requires at least: 6.5
Requires PHP: 7.4
Text Domain: mip
*/

/* Skip-Link: unsichtbar bis Tastaturfokus, für Screenreader- und Tastaturnutzung */
.skip-link {
	position: absolute;
	top: -999px;
	left: 0;
	z-index: 100000;
	padding: 0.75rem 1.25rem;
	background: var(--wp--preset--color--anthrazit);
	color: var(--wp--preset--color--weiss);
	text-decoration: none;
}
.skip-link:focus {
	top: 0;
}

/* Sichtbarer Fokus auf jedem interaktiven Element, nie entfernt */
a:focus-visible,
button:focus-visible,
.wp-block-button__link:focus-visible,
.wp-block-navigation-item__content:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
	outline: 3px solid var(--wp--preset--color--rot);
	outline-offset: 2px;
}

/* Mindestgröße 44x44px für Navigations- und Bedienelemente */
.wp-block-navigation-item__content,
.wp-block-navigation__responsive-container-open,
.wp-block-navigation__responsive-container-close,
.wp-block-button__link {
	min-height: 44px;
	display: inline-flex;
	align-items: center;
}
.wp-block-navigation__responsive-container-open,
.wp-block-navigation__responsive-container-close {
	min-width: 44px;
	justify-content: center;
}

/* prefers-reduced-motion respektieren */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---------------------------------------------------------------------------
   Formulare (Mitgliedsantrag, Kontakt)
   Markup kommt aus mu-plugins/mip-mitglied.php.
   --------------------------------------------------------------------------- */

.mip-formular {
	max-width: 40rem;
}

.mip-formular fieldset {
	border: 1px solid var(--wp--preset--color--linie);
	border-radius: 10px;
	margin: 0 0 var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
}

/* Adressblock im Raster: kurze Angaben wie PLZ bekommen kurze Felder. */
.mip-formular .mip-raster {
	column-gap: 1rem;
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
}
.mip-raster > .mip-feld {
	grid-column: span 6;
}
.mip-raster > .mip-feld--halb {
	grid-column: span 3;
}
.mip-raster > .mip-feld--drittel {
	grid-column: span 2;
}
.mip-raster > .mip-feld--zweidrittel {
	grid-column: span 4;
}
.mip-feld--schmal input {
	max-width: 12rem;
}
@media (max-width: 520px) {
	.mip-raster > .mip-feld--halb {
		grid-column: span 6;
	}
}

.mip-formular legend {
	font-weight: 700;
	padding-inline: 0.5em;
}

.mip-feld {
	margin-block: 0 var(--wp--preset--spacing--30);
}

.mip-feld label {
	display: block;
	font-weight: 600;
	margin-block-end: 0.35em;
}

.mip-feld input,
.mip-feld textarea,
.mip-feld select {
	background: var(--wp--preset--color--weiss);
	border: 1px solid var(--wp--preset--color--taupe);
	border-radius: 6px;
	color: inherit;
	font: inherit;
	/* 44px Mindesthöhe, siehe Touch-Targets weiter oben. */
	min-height: 44px;
	padding: 0.5em 0.65em;
	width: 100%;
}

.mip-feld textarea {
	min-height: 8em;
	resize: vertical;
}

.mip-feld input:focus-visible,
.mip-feld textarea:focus-visible,
.mip-feld select:focus-visible {
	border-color: var(--wp--preset--color--rot);
}

/* Checkbox und Radio stehen neben ihrem Label, nicht darüber. */
.mip-feld--check,
.mip-feld--radio {
	align-items: flex-start;
	display: flex;
	gap: 0.6em;
}

.mip-feld--check label,
.mip-feld--radio label {
	font-weight: 400;
	margin: 0;
}

.mip-feld--check input,
.mip-feld--radio input {
	flex: 0 0 auto;
	/* Groß genug, um sie auch mit unruhiger Hand zu treffen. */
	height: 1.5em;
	margin-block-start: 0.15em;
	min-height: 0;
	width: 1.5em;
}

/* Klassen mit display würden sonst das hidden-Attribut aufheben. */
.mip-formular [hidden] {
	display: none;
}

.mip-hinweis-klein {
	color: var(--wp--preset--color--taupe);
	display: block;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 400;
	margin-block-end: 0.35em;
}

.mip-hinweis {
	border-left: 4px solid;
	margin-block-end: var(--wp--preset--spacing--50);
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
}

.mip-hinweis--erfolg {
	background: #eef4ec;
	border-color: #2f6b3a;
	color: #1d4425;
}

.mip-hinweis--fehler {
	background: #fbecee;
	border-color: var(--wp--preset--color--rot);
	color: #7a1222;
}

/* Honeypot: für Menschen und Screenreader unsichtbar, für Bots ausfüllbar.
   Kein display:none — manche Bots überspringen genau das. */
.mip-honeypot {
	height: 0;
	left: -9999px;
	overflow: hidden;
	position: absolute;
	width: 0;
}

/* ---------------------------------------------------------------------------
   Design "Richtung A — Veedel"
   --------------------------------------------------------------------------- */

/* Eyebrow-Kicker. .mip-kicker ist der Alias aus der ersten Themefassung und
   bleibt erhalten, damit bestehende Inhalte nicht brechen — beide Klassen
   teilen sich dieselbe Regel. */
.mip-eyebrow,
.mip-kicker {
	color: var(--wp--preset--color--rot);
	font-family: var(--wp--preset--font-family--text);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .14em;
	margin-block-end: 0;
	text-transform: uppercase;
}

/* Kein Flow-Abstand über dem ersten Abschnitt — sonst steht ein heller
   Streifen zwischen Kopfbereich und Hero. */
.wp-site-blocks > main {
	margin-block-start: 0;
}

/* Abschnittsabstände. Der Flow-Abstand zwischen den Abschnitten wird auf 0
   gesetzt, sonst blitzt zwischen zwei farbigen Bändern der Seitenhintergrund
   durch; den Abstand macht das padding-block. */
.mip-sektion,
.mip-hero,
.mip-zahlen {
	margin-block: 0;
}
.mip-sektion {
	padding-block: 96px;
}
.mip-sektion--sand {
	background: var(--wp--preset--color--sandbeige);
}

/* Zweispaltiger Intro-Block */
.mip-zwei {
	align-items: start;
	display: grid;
	gap: 72px;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
}
.mip-lead {
	color: var(--wp--preset--color--taupe);
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.25rem, 1.05rem + 0.8vw, 1.625rem);
	line-height: 1.45;
	max-width: 30ch;
}
.mip-zitat {
	border-left: 3px solid var(--wp--preset--color--rot);
	font-family: var(--wp--preset--font-family--display);
	font-size: 20px;
	line-height: 1.5;
	margin: 34px 0;
	padding: 6px 0 6px 26px;
}
.mip-zitat cite {
	color: var(--wp--preset--color--taupe);
	display: block;
	font-family: var(--wp--preset--font-family--text);
	font-size: 14px;
	font-style: normal;
	margin-top: 10px;
}

/* ---------------------------------------------------------------------------
   Kopfbereich
   --------------------------------------------------------------------------- */

.site-header {
	border-bottom: 1px solid var(--wp--preset--color--linie);
	position: sticky;
	top: 0;
	z-index: 50;
}
/* Hintergrund und Unschärfe liegen bewusst auf einem Pseudoelement, nicht auf
   der Kopfleiste selbst: backdrop-filter macht das Element zum Bezugsrahmen
   für alle position:fixed-Nachfahren. Das aufgeklappte Mobilmenü wurde
   dadurch auf die 76 Pixel Leistenhöhe beschnitten. */
.site-header::before {
	backdrop-filter: blur(8px);
	background: rgba(255, 253, 249, .92);
	content: "";
	inset: 0;
	position: absolute;
	z-index: -1;
}
.site-header__bar {
	align-items: center;
	display: flex;
	gap: 40px;
	height: 76px;
}
.mip-logo {
	align-items: center;
	display: flex;
	gap: 12px;
	text-decoration: none;
}
.mip-logo__name {
	color: var(--wp--preset--color--taupe);
	font-family: var(--wp--preset--font-family--text);
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: .01em;
	line-height: 1.25;
	max-width: 150px;
}
.site-header .wp-block-navigation .wp-block-navigation-item__content {
	border-bottom: 2px solid transparent;
	text-decoration: none;
}
.site-header .wp-block-navigation-item__content:hover,
.site-header .wp-block-navigation-item.current-menu-item .wp-block-navigation-item__content {
	border-bottom-color: var(--wp--preset--color--rot);
	color: var(--wp--preset--color--rot);
}

/* Ghost-Button: umrandet statt gefüllt */
.mip-btn-ghost .wp-block-button__link {
	background: transparent !important;
	border: 1.5px solid var(--wp--preset--color--anthrazit) !important;
	color: var(--wp--preset--color--anthrazit) !important;
}
.mip-btn-ghost .wp-block-button__link:hover {
	background: var(--wp--preset--color--anthrazit) !important;
	color: var(--wp--preset--color--papier) !important;
}
/* Weiße Variante für dunkle Flächen (Hero, CTA) */
.mip-btn-ghost--weiss .wp-block-button__link {
	background: transparent !important;
	border: 1.5px solid rgba(255, 255, 255, .55) !important;
	color: #fff !important;
}
.mip-btn-ghost--weiss .wp-block-button__link:hover {
	background: #fff !important;
	color: var(--wp--preset--color--anthrazit) !important;
}

@media (max-width: 700px) {
	.site-header .mip-btn-spenden {
		display: none;
	}
}

/* ---------------------------------------------------------------------------
   Hero
   --------------------------------------------------------------------------- */

.mip-hero {
	color: #fff;
	min-height: 640px;
}
.mip-hero .wp-block-cover__background {
	background-image:
		linear-gradient(180deg, rgba(18, 13, 10, .30) 0%, rgba(18, 13, 10, .58) 50%, rgba(18, 13, 10, .88) 100%),
		linear-gradient(100deg, rgba(18, 13, 10, .72) 0%, rgba(18, 13, 10, .42) 46%, rgba(18, 13, 10, .05) 78%);
	opacity: 1;
}
/* Der Cover-Block setzt bei dimRatio 0 die Klasse has-background-dim-0 mit
   opacity 0 und schwarzem Grund; der Verlauf soll trotzdem sichtbar sein. Das
   Block-CSS des Kerns lädt nach diesem Stylesheet, darum die gedoppelten Klassen. */
.mip-hero.mip-hero.mip-hero .wp-block-cover__background.has-background-dim {
	background-color: transparent;
	opacity: 1;
}
/* has-custom-content-position setzt margin 0 / width auto; der Text soll aber
   auf der Seitenkante sitzen wie im übrigen Layout. */
.mip-hero.mip-hero.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container {
	margin-inline: auto;
	width: 100%;
}
.mip-hero--fallback .wp-block-cover__background {
	background-image: none;
}
.mip-hero .wp-block-cover__inner-container {
	padding-bottom: 72px;
	width: 100%;
}
.mip-hero .mip-eyebrow,
.mip-cta .mip-eyebrow {
	color: #F3C6CC;
}
.mip-hero .wp-block-cover__inner-container {
	/* Abstand zur klebenden Kopfleiste, damit der Kicker nicht an ihr klebt. */
	padding-block-start: 2.5rem;
}
.mip-hero h1 {
	color: #fff;
	max-width: 16ch;
}
.mip-hero p {
	color: rgba(255, 255, 255, .9);
	font-size: 20px;
	margin: 22px 0 32px;
	max-width: 48ch;
}
.mip-hero .wp-block-buttons {
	flex-wrap: wrap;
}

/* ---------------------------------------------------------------------------
   Zahlen
   --------------------------------------------------------------------------- */

.mip-zahlen {
	background: var(--wp--preset--color--sandbeige);
	border-bottom: 1px solid var(--wp--preset--color--linie);
}
.mip-zahlen__grid {
	display: grid;
	gap: 0;
	grid-template-columns: repeat(4, 1fr);
	margin-inline: auto;
	max-width: var(--wp--style--global--wide-size);
	padding: 44px 0;
}
.mip-zahlen__zelle {
	border-left: 1px solid var(--wp--preset--color--linie);
	padding: 0 28px;
}
.mip-zahlen__zelle:first-child {
	border-left: 0;
	padding-left: 0;
}
.mip-zahlen__zelle p {
	margin: 0;
}
.mip-zahlen__zelle strong {
	color: var(--wp--preset--color--rot);
	display: block;
	font-family: var(--wp--preset--font-family--display);
	font-size: 44px;
	font-weight: 600;
	line-height: 1;
}
.mip-zahlen__zelle p:last-child {
	color: var(--wp--preset--color--taupe);
	font-size: 14.5px;
	margin-top: 8px;
}

/* Die Flow-Layout-Regel von WordPress setzt auf jedes Kind ab dem zweiten einen
   oberen Abstand. In den Grids verschiebt das die erste Spalte gegen die
   übrigen — hier also zurücksetzen. Der Grid-gap übernimmt die Abstände. */
.mip-karten > *,
.mip-zahlen__grid > *,
.mip-personen > *,
.mip-zwei > *,
.mip-cta > * {
	margin-block-start: 0;
}

/* ---------------------------------------------------------------------------
   Karten
   --------------------------------------------------------------------------- */

.mip-karten {
	display: grid;
	gap: 28px;
	grid-template-columns: repeat(3, 1fr);
}
.mip-karte {
	background: var(--wp--preset--color--papier);
	border: 1px solid var(--wp--preset--color--linie);
	border-radius: 14px;
	overflow: hidden;
}
.mip-karte .wp-block-image {
	margin: 0;
}
.mip-karte img {
	aspect-ratio: 16 / 10;
	display: block;
	height: auto;
	object-fit: cover;
	width: 100%;
}
.mip-karte__body {
	padding: 24px 24px 28px;
}
.mip-karte h3 {
	font-size: 22px;
	margin-bottom: 10px;
}
.mip-karte p {
	color: var(--wp--preset--color--taupe);
	font-size: 15.5px;
	margin: 0;
}
.mip-karte__tag {
	color: var(--wp--preset--color--rot);
	display: inline-block;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .1em;
	margin-bottom: 12px;
	text-transform: uppercase;
}

/* ---------------------------------------------------------------------------
   Termine
   --------------------------------------------------------------------------- */

.mip-termin {
	align-items: center;
	border-top: 1px solid var(--wp--preset--color--linie);
	display: grid;
	gap: 32px;
	grid-template-columns: 150px 1fr;
	padding: 26px 0;
}
.mip-termin:last-of-type {
	border-bottom: 1px solid var(--wp--preset--color--linie);
}
.mip-termin__datum {
	font-family: var(--wp--preset--font-family--display);
	line-height: 1;
}
.mip-termin__datum b {
	display: block;
	font-size: 40px;
	font-weight: 600;
}
.mip-termin__datum span {
	color: var(--wp--preset--color--taupe);
	font-family: var(--wp--preset--font-family--text);
	font-size: 14px;
	letter-spacing: .06em;
	text-transform: uppercase;
}
.mip-termin h3 {
	font-size: 21px;
	margin-bottom: 6px;
}
.mip-termin__ort {
	color: var(--wp--preset--color--taupe);
	font-size: 15px;
}

/* ---------------------------------------------------------------------------
   Vorstand
   --------------------------------------------------------------------------- */

.mip-personen {
	display: grid;
	gap: 26px;
	grid-template-columns: repeat(4, 1fr);
}
.mip-person img {
	aspect-ratio: 1;
	border-radius: 12px;
	display: block;
	height: auto;
	margin-bottom: 14px;
	object-fit: cover;
	width: 100%;
}
.mip-person__platzhalter {
	aspect-ratio: 1;
	background: var(--wp--preset--color--sandbeige);
	border-radius: 12px;
	height: auto;
	margin-bottom: 14px;
}
.mip-person b {
	display: block;
	font-family: var(--wp--preset--font-family--display);
	font-size: 19px;
	font-weight: 600;
}
.mip-person span {
	color: var(--wp--preset--color--taupe);
	font-size: 14.5px;
}

/* ---------------------------------------------------------------------------
   CTA Mitglied werden
   --------------------------------------------------------------------------- */

.mip-cta {
	align-items: center;
	background: var(--wp--preset--color--anthrazit);
	border-radius: 20px;
	color: var(--wp--preset--color--sandbeige);
	display: grid;
	gap: 56px;
	grid-template-columns: 1.3fr 1fr;
	padding: 64px;
}
.mip-cta h2 {
	color: #fff;
}
.mip-cta p {
	color: rgba(246, 240, 230, .75);
	max-width: 44ch;
}
.mip-cta__box {
	background: rgba(255, 255, 255, .07);
	border: 1px solid rgba(255, 255, 255, .14);
	border-radius: 14px;
	padding: 28px;
}
/* Spendenkasten: dieselbe dunkle Fläche wie im Mitmach-Block, damit beide
   Spendenhinweise gleich aussehen. */
.mip-spenden {
	background: var(--wp--preset--color--anthrazit);
	border-radius: 14px;
	color: rgba(246, 240, 230, .8);
	padding: 28px 32px;
}
.mip-spenden p {
	margin-block: 0 14px;
}
.mip-spenden p:last-child {
	line-height: 1.8;
	margin-block-end: 0;
}
.mip-spenden strong {
	color: #fff;
}
@media (max-width: 520px) {
	.mip-spenden {
		padding: 22px 20px;
	}
}
.mip-cta__box h3 {
	color: #fff;
	font-size: 19px;
	margin-bottom: 14px;
}
.mip-cta__box ul {
	color: rgba(246, 240, 230, .8);
	font-size: 15px;
	margin: 0;
	padding-left: 18px;
}
.mip-cta__box li {
	margin-bottom: 7px;
}

/* ---------------------------------------------------------------------------
   Footer
   --------------------------------------------------------------------------- */

.site-footer {
	background: var(--wp--preset--color--sandbeige);
	border-top: 1px solid var(--wp--preset--color--linie);
	padding: 72px 0 36px;
}
.site-footer__grid {
	display: grid;
	gap: 40px;
	grid-template-columns: 1.4fr 1fr 1fr 1fr;
}
.site-footer h4 {
	color: var(--wp--preset--color--taupe);
	font-family: var(--wp--preset--font-family--text);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .12em;
	margin: 0 0 14px;
	text-transform: uppercase;
}
.site-footer p,
.site-footer a {
	color: var(--wp--preset--color--taupe);
	display: block;
	font-size: 15px;
	margin: 0 0 6px;
	text-decoration: none;
}
.site-footer a:hover {
	color: var(--wp--preset--color--rot);
}
.site-footer__bar {
	border-top: 1px solid var(--wp--preset--color--linie);
	color: var(--wp--preset--color--taupe);
	display: flex;
	font-size: 14px;
	justify-content: space-between;
	margin-top: 48px;
	padding-top: 24px;
}

/* ---------------------------------------------------------------------------
   Responsive
   --------------------------------------------------------------------------- */

@media (max-width: 1000px) {
	.mip-karten,
	.mip-personen {
		grid-template-columns: repeat(2, 1fr);
	}
	.mip-cta {
		grid-template-columns: 1fr;
		padding: 40px;
	}
	.mip-zwei {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 700px) {
	.mip-zahlen__grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.mip-zahlen__zelle {
		border-left: 0;
		border-top: 1px solid var(--wp--preset--color--linie);
		padding: 20px 0 0;
	}
	.mip-zahlen__zelle:nth-child(-n+2) {
		border-top: 0;
		padding-top: 0;
	}
	.mip-zahlen__zelle:nth-child(2n) {
		padding-left: 20px;
	}
	.mip-zahlen__zelle strong {
		font-size: clamp(28px, 9vw, 44px);
	}
	.mip-karten,
	.mip-personen,
	.site-footer__grid {
		grid-template-columns: 1fr;
	}
	.mip-termin {
		grid-template-columns: 1fr;
		gap: 8px;
	}
	.mip-hero h1 {
		/* Nur hier: „Pantaleonsviertel“ ist breiter als die Zeile. */
		hyphens: auto;
		overflow-wrap: break-word;
	}
	.mip-hero {
		min-height: 480px;
	}
	.mip-sektion {
		padding-block: 56px;
	}
	.mip-cta {
		padding: 28px;
	}
	.site-footer__bar {
		flex-direction: column;
		gap: 8px;
	}

	/* Schmalere Seitenränder, damit Logo, Menü und CTA nebeneinander passen. */
	body {
		--wp--style--root--padding-left: 1.25rem;
		--wp--style--root--padding-right: 1.25rem;
	}
	.site-header__bar {
		gap: 12px;
	}
	.site-header .wp-block-button__link {
		font-size: 15px;
		padding: 0.6rem 1rem;
	}
}

@media (max-width: 520px) {
	/* Der Schriftzug weicht; die Wortmarke im Logo trägt den Namen. */
	.mip-logo__name {
		display: none;
	}
}

/* ---------------------------------------------------------------------------
   Feinabstimmung auf den Entwurf

   WordPress verteilt über die Flow-Layouts einen einheitlichen Blockabstand
   (blockGap) und überschreibt damit die Abstände, die der Entwurf gesetzt
   hatte. Dieser Abschnitt stellt die Werte aus dem Entwurf wieder her — die
   Selektoren sind Klassenselektoren und stechen die :where()-Regeln des Kerns.
   --------------------------------------------------------------------------- */

/* Überschriften bringen ihre Abstände selbst mit, nicht über blockGap. */
.mip-sektion h2,
.mip-hero h1,
.mip-karte h3,
.mip-termin h3,
.mip-cta h2,
.mip-cta__box h3 {
	margin-block: 0;
}
.mip-sektion h2 {
	margin-block-start: 14px;
}

/* Navigation. Im Entwurf steht das Menü direkt neben dem Logo und die
   Schaltflächen werden nach rechts geschoben — nicht alle drei gleichmäßig
   verteilt. */
.site-header__bar > .wp-block-buttons {
	gap: 12px;
	margin-inline-start: auto;
}
/* Die 44px-Zielfläche weiter oben macht aus einem Menüpunkt einen 58px hohen
   Kasten; der rote Unterstrich hinge dann 16px unter dem Wort. Im Kopfbereich
   gilt darum die Höhe aus dem Entwurf, im aufgeklappten Mobilmenü — wo die
   Einträge untereinander stehen — weiterhin 44px. */
.site-header .wp-block-navigation .wp-block-navigation-item {
	/* Der Kern macht aus jedem Listenpunkt einen Flex-Container; der Link darin
	   würde dadurch zum Block und nähme die volle Zeilenhöhe ein. */
	display: block;
}
.site-header .wp-block-navigation .wp-block-navigation-item__content {
	/* inline wie im Entwurf: Der Unterstrich folgt der Textzeile, nicht einem
	   Kasten, der die Zeilenhöhe mitnimmt. */
	display: inline;
	min-height: 0;
}
.site-header .is-menu-open .wp-block-navigation-item__content {
	display: inline-flex;
	min-height: 44px;
}
.site-header .wp-block-navigation {
	font-size: 0.96875rem;
	font-weight: 500;
}
.site-header .wp-block-navigation .wp-block-navigation__container {
	gap: 30px;
}
.site-header .wp-block-navigation .wp-block-navigation-item__content {
	padding-block: 6px;
}

/* Hero */
.mip-hero {
	/* Der Cover-Block bringt 1em Innenabstand mit; hier soll der Seitenrand der
	   Seite gelten, damit der Text auf derselben Kante sitzt wie alles andere. */
	padding-inline: var(--wp--style--root--padding-right) var(--wp--style--root--padding-left);
}
.mip-hero .wp-block-cover__inner-container {
	margin-inline: auto;
	max-width: var(--wp--style--global--wide-size);
	padding-block-end: 72px;
	width: 100%;
}
.mip-hero .mip-eyebrow,
.mip-hero p {
	margin-block: 22px 32px;
	margin-inline: 0;
	max-width: 39rem;
}
.mip-hero h1 {
	font-weight: 700;
	/* Im Entwurf 16ch; feste Breite, damit der Zeilenumbruch identisch fällt. */
	margin-block: 0;
	margin-inline: 0;
	max-width: 46rem;
}
.mip-hero .wp-block-buttons {
	gap: 14px;
	margin-block: 0;
}

/* Zweispaltiger Intro-Block. Das constrained-Layout von WordPress deckelt und
   zentriert jedes Kind auf die Inhaltsbreite — in den Spalten soll der Text
   aber linksbündig über die volle Spaltenbreite laufen. */
.mip-zwei > * > * {
	margin-inline: 0;
	max-width: none;
}
.mip-zwei p {
	color: var(--wp--preset--color--taupe);
	margin-block: 0 18px;
}
.mip-zwei .mip-lead {
	margin-block: 26px 18px;
	margin-inline: 0;
}
.mip-zwei .mip-zitat {
	margin-block: 34px;
}
.mip-zwei .mip-eyebrow {
	color: var(--wp--preset--color--rot);
}
.mip-zitat {
	margin-block: 34px;
	margin-inline: 0;
	max-width: none;
}

/* Karten */
.mip-karte p {
	max-width: none;
}
.mip-karte p {
	font-size: 0.96875rem;
	margin-block: 0;
}
.mip-karte h3 {
	margin-block-end: 10px;
}
.mip-karte__tag {
	margin-block-end: 12px;
}

/* Kopfzeile eines Abschnitts: Überschrift links, Button rechts auf Grundlinie */
.mip-sektion__kopf {
	align-items: flex-end;
	display: flex;
	gap: 24px;
	justify-content: space-between;
	margin-block-end: 40px;
}
.mip-sektion__kopf > * {
	margin-block: 0;
}
/* Der Abstand unter der Kopfzeile steht dort; kein zusätzlicher Blockabstand. */
.mip-karten,
.mip-personen,
.mip-termin:first-of-type {
	margin-block-start: 0;
}

/* Termine */
.mip-termin h3 {
	margin-block-end: 6px;
}
.mip-termin__ort {
	font-size: 0.9375rem;
}
.mip-termin__wann {
	color: var(--wp--preset--color--rot);
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.25rem;
	font-weight: 600;
	margin-block: 0 4px;
}
.mip-termin__text {
	margin-block: 10px 0;
	max-width: 60ch;
}
.mip-termin__link {
	color: var(--wp--preset--color--rot);
	display: inline-block;
	font-weight: 600;
	margin-block-start: 8px;
	text-decoration: none;
}
.mip-termin__link:hover {
	text-decoration: underline;
}

/* Vorstand */
.mip-person b,
.mip-person span {
	display: block;
}
.mip-person span {
	font-size: 0.90625rem;
}

/* Mitmach-Block */
.mip-cta > * > * {
	margin-inline: 0;
	max-width: none;
}
.mip-cta h2 {
	font-size: 2.375rem;
}
.mip-cta p {
	margin-block: 18px 0;
	margin-inline: 0;
	max-width: 44ch;
}
.mip-cta__box h3 {
	margin-block-end: 14px;
}
.mip-cta__box ul {
	font-size: 0.9375rem;
	margin-block: 0;
	padding-inline-start: 18px;
}
.mip-cta__box li {
	margin-block-end: 7px;
}
.mip-cta .wp-block-buttons {
	margin-block-start: 28px;
}

/* Fuß */
.site-footer p,
.site-footer a {
	font-size: 0.9375rem;
	margin-block: 0 6px;
}
.site-footer h4 {
	margin-block: 0 14px;
}
.site-footer__bar p {
	font-size: 0.875rem;
	margin-block: 0;
}

/* ---------------------------------------------------------------------------
   Unterseiten
   Gleiche Bänder, gleiche Inhaltsbreite und dieselbe Typografie wie auf der
   Startseite. Der Seitenkopf ersetzt die Überschrift, die früher frei über dem
   Text stand.
   --------------------------------------------------------------------------- */

.mip-seitenkopf {
	background: var(--wp--preset--color--sandbeige);
	border-bottom: 1px solid var(--wp--preset--color--linie);
	margin-block: 0;
	padding-block: 72px;
}
.mip-seitenkopf__raster {
	align-items: center;
	display: grid;
	gap: 56px;
}
/* Zwei Spalten nur, wenn ein Beitragsbild gesetzt ist — sonst bliebe eine
   leere Spalte stehen. */
.mip-seitenkopf__raster:has(img) {
	grid-template-columns: minmax(0, 1fr) minmax(0, 0.8fr);
}
.mip-seitenkopf__raster > * {
	margin-block: 0;
}
.mip-seitenkopf__raster > * > * {
	margin-inline: 0;
	max-width: none;
}
.mip-seitenkopf h1 {
	font-size: clamp(2.25rem, 1.55rem + 2.6vw, 3.25rem);
	margin-block: 14px 0;
}
.mip-seitenkopf .mip-eyebrow {
	margin-block: 0;
}
.mip-seitenkopf__bild img {
	aspect-ratio: 4 / 3;
	border-radius: 14px;
	display: block;
	height: auto;
	object-fit: cover;
	width: 100%;
}

/* Text neben Bild: anders als .mip-zwei gleich breite Spalten. */
.mip-zwei--bild {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-items: center;
	gap: 56px;
}
.mip-zwei__bild img,
.mip-bild {
	border-radius: 14px;
	display: block;
	height: auto;
	max-width: 100%;
}
.mip-zwei__bild img {
	aspect-ratio: 4 / 3;
	height: auto;
	object-fit: cover;
	width: 100%;
}

/* Straßenlexikon: 26 Einträge, zweispaltig gesetzt statt 26 Einzelseiten. */
.mip-lexikon {
	column-gap: 56px;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
.mip-lexikon__eintrag {
	border-top: 1px solid var(--wp--preset--color--linie);
	padding-block: 22px;
}
.mip-lexikon__eintrag h3 {
	font-size: 1.25rem;
	margin-block: 0 4px;
}
.mip-lexikon__meta {
	color: var(--wp--preset--color--taupe);
	font-size: 0.875rem;
	margin-block: 0 8px;
}
.mip-lexikon__eintrag p:last-child {
	font-size: 0.96875rem;
	margin-block: 0;
}

/* Beitragsliste unter /aktuelles */
.mip-beitraege {
	display: grid;
	gap: 40px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
.mip-beitraege > li > * {
	margin-block: 0;
	margin-inline: 0;
	max-width: none;
}
.mip-beitrag__bild img {
	aspect-ratio: 3 / 2;
	border-radius: 14px;
	height: auto;
	object-fit: cover;
	width: 100%;
}
.mip-beitraege h2 {
	font-size: 1.375rem;
	margin-block: 6px 10px;
}
.mip-beitraege .mip-eyebrow {
	margin-block: 14px 0;
}

/* Der Sprung auf #spenden darf nicht unter der klebenden Kopfleiste landen. */
:target {
	scroll-margin-top: 96px;
}

@media (max-width: 1000px) {
	.mip-beitraege {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 760px) {
	.mip-seitenkopf {
		padding-block: 48px;
	}
	.mip-seitenkopf__raster,
	.mip-seitenkopf__raster:has(img),
	.mip-zwei--bild,
	.mip-lexikon,
	.mip-beitraege {
		gap: 32px;
		grid-template-columns: 1fr;
	}
	/* Einspaltig trennt schon die Linie über jedem Eintrag. */
	.mip-lexikon {
		gap: 0;
	}
}

/* Formularfelder rechneten Rahmen und Innenabstand zur Breite hinzu und ragten
   damit auf schmalen Displays über den Seitenrand hinaus. */
.mip-feld input,
.mip-feld select,
.mip-feld textarea {
	box-sizing: border-box;
}

/* Lange, ungetrennte Wörter (Paragraphenverweise, Rechtsbegriffe) sollen die
   Zeile umbrechen statt die Seite zu verbreitern. */
body {
	overflow-wrap: break-word;
}

/* Eckdaten eines Termins unter der Überschrift. Leere Felder — etwa ein noch
   offener Ort — erzeugen leere Absätze; die bleiben unsichtbar. */
.mip-termin__fakten {
	color: var(--wp--preset--color--taupe);
	margin-block-start: 18px;
}
.mip-termin__fakten p {
	margin-block: 0 4px;
}
.mip-termin__fakten p:empty {
	display: none;
}

/* ---------------------------------------------------------------------------
   Mobilmenü
   Das Overlay des Kern-Navigationsblocks erbt sonst die Kopfleisten-Typografie
   und sitzt ohne Seitenrand an der linken Kante.
   --------------------------------------------------------------------------- */

@media (max-width: 600px) {
	/* Der Schalter gehört ans rechte Ende, nicht zwischen Logo und Schaltflächen. */
	.site-header .wp-block-navigation {
		order: 3;
	}
	.site-header .wp-block-navigation__responsive-container.is-menu-open {
		padding: 20px var(--wp--style--root--padding-right) 40px var(--wp--style--root--padding-left);
	}
	.site-header .is-menu-open .wp-block-navigation__container {
		align-items: flex-start;
		gap: 4px;
		margin-block-start: 32px;
		width: 100%;
	}
	.site-header .is-menu-open .wp-block-navigation-item {
		border-bottom: 1px solid var(--wp--preset--color--linie);
		width: 100%;
	}
	.site-header .is-menu-open .wp-block-navigation-item__content {
		border-bottom: 0;
		font-size: 1.25rem;
		padding-block: 14px;
		width: 100%;
	}
	/* Untermenüpunkte stehen eingerückt und eine Stufe kleiner. */
	.site-header .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
		font-size: 1.0625rem;
	}
}

/* ---------------------------------------------------------------------------
   Formulare
   --------------------------------------------------------------------------- */

/* Der Mandatstext ist rechtlich vorgegeben und wird deshalb als eigener,
   abgesetzter Block gezeigt statt als Kleingedrucktes neben dem Häkchen. */
.mip-mandat {
	background: var(--wp--preset--color--papier);
	border: 1px solid var(--wp--preset--color--linie);
	border-radius: 10px;
	font-size: 0.9375rem;
	margin-block: 20px;
	padding: 20px 22px;
}
.mip-mandat p {
	margin-block: 0 12px;
}
.mip-mandat p:last-child {
	margin-block-end: 0;
}

/* Die Fehlerliste steht über dem Formular; die Eingaben darunter bleiben stehen. */
.mip-hinweis ul {
	margin-block: 8px 0;
	padding-inline-start: 1.2em;
}
.mip-hinweis li + li {
	margin-block-start: 4px;
}
