/* Einzel-Event-Seite (The Events Calendar).
 *
 * ALLE Werte sind am LIVE-Stand gemessen (work/diag/r22-ev-measure.py,
 * r22-ev2.py, r22-drop.py, r22-top.py), nicht aus Elementor-Einstellungen
 * abgeleitet und nicht geschaetzt. Grund: die Optik dieser Widgets kommt aus
 * TECs *Elementor*-Stylesheet (build/css/integrations/plugins/elementor/) und
 * aus Astras Seitenrahmen — beides ist am Tag des Abbaus weg. Es gibt also
 * keine Quelle ausser dem gerenderten Live-Stand.
 *
 * Alles ist auf #tribe-events-pg-template gescoped: die Regeln duerfen die
 * 21 Inhaltsseiten nicht beruehren, die dort auf 0 Abweichungen stehen.
 */

/* --- Seitenrahmen ---------------------------------------------------------
 * Polster und Hintergrund kommen aus dem portierten Kunden-CSS und haengen an
 * Astras `.ast-container`; der Knoten wird deshalb in der Template-
 * Ueberschreibung nachgebaut (tribe/events/v2/default-template.php). Hier steht
 * nur, was ACSS auf dem nackten <section>-Knoten anrichtet:
 *
 *   automatic.css: section:where(:not(.bricks-shape-divider))       display:flex
 *                  section > div:where(:not(.bricks-shape-divider)) display:flex
 *
 * Der Abschnitt wurde dadurch zum Flex-Container (gemessen: gap 67,5px) und der
 * Kasten um die Ueberschrift "Meet us" zum Flex-Element, das auf seine Textbreite
 * schrumpfte — 164 statt 1230 px, Ueberschrift dadurch mittig statt links.
 *
 * layout.css neutralisiert dieselben ACSS-Vorgaben schon, aber bewusst nur
 * innerhalb von <main>. Der Event-Abschnitt liegt darueber: auf Dev steckt
 * `main#brx-content` IN ihm, nicht umgekehrt.
 */
#tribe-events-pg-template {
	display: block;
}
#tribe-events-pg-template > .tribe-events-before-html,
#tribe-events-pg-template > .tribe-events-after-html {
	display: block;
}

/* --- Grundregel ----------------------------------------------------------
 * Auf Live setzt EINE Regel aus TECs Elementor-Stylesheet den Rahmen fuer alle
 * dreizehn Widgets:
 *
 *   [class*="tec-events-elementor-event-widget"] {
 *     margin: 0 0 var(--tec-spacer-0) 0;   =  0 0 4px
 *     line-height: var(--tec-line-height-3); = 1.62
 *   }
 *
 * Sie faellt mit Elementor weg, und ihr Fehlen erklaerte den kompletten Rest
 * der Hoehendifferenz: die 4 px stapeln sich ueber neun Bausteine, und
 * line-height 1.62 gegen die 28 px des Themes machten allein den Borlabs-Kasten
 * im Ortsfeld 37,5 px hoeher (der streckt ueber das Raster beide Spalten mit).
 *
 * Attributselektor wie auf Live, nicht Klassenliste: er trifft auch die
 * verschachtelten Knoten, und genau das tut das Original (dort ueber eine
 * zweite Regel mit `margin: inherit`, was auf denselben Wert hinauslaeuft —
 * am Knopf und an der Karte nachgemessen).
 * Spezifitaet 1,1,0 — schlaegt nichts, was ich unten setze (dort 1,1,0+).
 */
#tribe-events-pg-template [class*="ls-ev__"] {
	margin: 0 0 4px;
	line-height: 1.62;
}
#tribe-events-pg-template .ls-ev {
	line-height: 1.62;
}

/* Der Selektor traegt bewusst den DOPPELTEN Unterstrich.
 * Live hat je Widget genau eine Ebene mit der Klasse; hier liegt darueber noch
 * der Wurzel-<div> des Bricks-Elements (`ls-ev ls-ev--<feld>`) — das Gegenstueck
 * zu Elementors `.elementor-widget-container`, und die hat auf Live keinen
 * Abstand. Mit `[class*="ls-ev"]` zaehlte der Abstand doppelt und machte jeden
 * Baustein 4 px zu hoch, ueber neun Bausteine 95 px. Nachgemessen und
 * zurueckgenommen. Die 4 px des inneren Knotens kollabieren durch den
 * randlosen Wurzelknoten hindurch — der Abstand zwischen den Bausteinen
 * stimmt also weiterhin.
 */

/* Auf Live liefert TECs `.tribe-common` diese Werte fuer Fliesstext und Links.
 * Das Markup hier kommt aus einem eigenen Bricks-Element und traegt keine
 * Elementeinstellungen — ohne die Regel gaebe es gar keine Vorgabe
 * (gemessen: Dev 400/28 gegen Live 300/24).
 */
#tribe-events-pg-template .ls-ev__back a,
#tribe-events-pg-template .ls-ev__categories-link-wrapper a,
#tribe-events-pg-template .ls-ev__tags-link-wrapper a,
#tribe-events-pg-template .ls-ev__website-link a,
#tribe-events-pg-template .ls-ev__venue-address,
#tribe-events-pg-template .ls-ev__venue-details a {
	font-weight: 300;
	line-height: 24px;
}
/* Bewusst als Aufzaehlung der Stellen, die Live so ausweist, NICHT als
 * `.ls-ev a, .ls-ev p`. Die kurze Fassung reichte bis in Borlabs'
 * Zustimmungskasten in der Karte hinein und machte ihn 37,5 px hoeher
 * (Beschreibung 24 statt 17,5, beide Knoepfe 24 statt 21) — die Karte streckt
 * ueber das Raster beide Spalten mit, also schlug das voll auf die Seitenhoehe
 * durch. Fremdes Markup faellt hier nicht unter eine Sammelregel. */

/* --- Titel ---------------------------------------------------------------
 * Live 33/42 Exo. Ohne diese Regel greift die h1-Skala des Themes (45/63).
 */
#tribe-events-pg-template .ls-ev__title {
	margin: 0;
	font-family: Exo, sans-serif;
	font-size: 33px;
	line-height: 42px;
	font-weight: 400;
	color: #000;
}

/* --- Zurueck-Link --------------------------------------------------------- */
#tribe-events-pg-template .ls-ev__back a {
	font-weight: 300;
	line-height: 24px;
}

/* --- Datum ---------------------------------------------------------------
 * Live Exo 20/28 in #161616 — Dev erbte Public Sans 16.
 */
/* Nur der innere Knoten traegt 20 px. Der Kasten drumherum bleibt auf 16 px —
 * am Live-Stand nachgemessen; mit 20 px am Kasten wurde er 28 statt 32 px hoch
 * und das Beitragsbild rutschte 8 px nach oben. */
#tribe-events-pg-template .ls-ev__datetime {
	font-family: Exo, sans-serif;
	font-size: 20px;
	line-height: 28px;
	color: #161616;
}
#tribe-events-pg-template .ls-ev__datetime-wrapper {
	display: flex;
}

/* --- Beitragsbild --------------------------------------------------------
 * Live hat keinen Radius; das Theme setzt 5 px auf jedes Bild.
 */
#tribe-events-pg-template .ls-ev__image img {
	/* Live streckt das Bild auf die volle Inhaltsbreite (gemessen: width 1130px
	 * bei 1130px Kasten, max-width 100%). Ohne `width` zeigt Bricks die
	 * Naturgroesse — auf dem AIR.CON-Event faellt das nicht auf, weil die
	 * Grafik ohnehin breiter ist, auf dem Laboratoriumsmedizin-Event war die
	 * Seite dadurch 246 px zu kurz. Deshalb wird gegen MEHR ALS EIN Event
	 * gemessen. */
	width: 100%;
	max-width: 100%;
	border-radius: 0;
	object-fit: contain;
}

/* --- Abschnittsueberschriften (Categories: / Website:) -------------------
 * Live Public Sans 18/26 in 500, 4 px Abstand nach unten. Dev hatte die
 * h3-Skala des Themes (Exo 24/33,6, 20 px Abstand).
 */
#tribe-events-pg-template .ls-ev__categories-header,
#tribe-events-pg-template .ls-ev__tags-header,
#tribe-events-pg-template .ls-ev__website-header {
	margin: 0 0 4px;
	font-family: "Public Sans", sans-serif;
	font-size: 18px;
	line-height: 26px;
	font-weight: 500;
	color: #000;
}

/* --- Veranstaltungsort ---------------------------------------------------
 * Live: zweispaltiges Raster in einem 860 px breiten, gerahmten Kasten,
 * Angaben links, Karte rechts, je 405 px. Dev stapelte beides ueber die
 * volle Breite — das war der groesste Einzelposten der Hoehendifferenz.
 */
#tribe-events-pg-template .ls-ev__venue {
	display: flex;
}
#tribe-events-pg-template .ls-ev__venue-container {
	display: grid;
	grid-template-columns: 1fr 1fr;
	justify-content: space-between;
	width: 860px;
	max-width: 860px;
	margin: 12px;
	border: 1px solid #e4e4e4;
	border-radius: 4px;
}
#tribe-events-pg-template .ls-ev__venue-details {
	padding: 10px;
	margin: 12px;
	font-size: 14px;
	line-height: 22.68px;
}
#tribe-events-pg-template .ls-ev__venue-name {
	margin: 16px 0;
	font-family: "Public Sans", sans-serif;
	font-size: 16px;
	line-height: 24px;
	font-weight: 300;
	color: #161616;
}
#tribe-events-pg-template .ls-ev__venue-address {
	margin: 0 0 24px;
	font-size: 16px;
	line-height: 24px;
}
#tribe-events-pg-template .ls-ev__venue-map {
	margin: 12px;
	max-width: 100%;
}

/* --- Kalender-Export -----------------------------------------------------
 * Knopf: 200x41, Markenrot, Radius 4, Exo 16/22 — Dev hatte den schwarzen
 * Bricks-Grundknopf (18/500, Radius 3).
 * Die Liste liegt ABSOLUT (top 45, z-index 30) und traegt deshalb nichts zur
 * Seitenhoehe bei; genau daran haengt, dass Live beim Aufklappen nicht
 * springt.
 */
#tribe-events-pg-template .ls-ev__export-dropdown {
	display: inline-block;
	position: relative;
	width: 200px;
}
#tribe-events-pg-template .ls-ev__export-button {
	display: inline-block;
	width: 200px;
	padding: 8px 12px;
	border: 1px solid #870a09;
	border-radius: 4px;
	background-color: #870a09;
	color: #fff;
	font-family: Exo, sans-serif;
	font-size: 16px;
	line-height: 22px;
	font-weight: 400;
	text-align: center;
	cursor: pointer;
}
#tribe-events-pg-template .ls-ev__export-kit-icon {
	width: 16px;
	height: 16px;
	margin-right: 8px;
	vertical-align: -3px;
}
#tribe-events-pg-template .ls-ev__export-icon {
	width: 16px;
	height: 8px;
	margin-left: 8px;
}
#tribe-events-pg-template .ls-ev__export-icon--active {
	transform: rotate(180deg);
}
#tribe-events-pg-template .ls-ev__export-content {
	width: 200px;
}
#tribe-events-pg-template .ls-ev__export-list {
	position: absolute;
	top: 45px;
	z-index: 30;
	width: 200px;
	/* Live: margin 12px 0 4px — die Liste sitzt dadurch 57 px unter dem Knopf,
	 * nicht 45 px. Gemessen im aufgeklappten Zustand (r22-drop.py). */
	margin: 12px 0 4px;
	padding: 16px 12px;
	border: 1px solid #e4e4e4;
	border-radius: 4px;
	background-color: #fff;
	list-style: none;
}
#tribe-events-pg-template .ls-ev__export-list-item {
	padding: 4px 20px;
	font-size: 14px;
	line-height: 21px;
}
#tribe-events-pg-template .ls-ev__export-link {
	font-size: 14px;
	line-height: 21px;
}

/* --- Blaettern -----------------------------------------------------------
 * Live: eine Zeile, Zurueck links, Weiter rechts. Dev stapelte eine
 * Aufzaehlung mit Punkten.
 */
#tribe-events-pg-template .ls-ev__navigation-subnav {
	display: flex;
	justify-content: space-between;
	width: 100%;
	padding: 0;
	list-style: none;
}
#tribe-events-pg-template .ls-ev__navigation-subnav > li {
	list-style: none;
}
#tribe-events-pg-template .ls-ev__navigation a {
	font-family: Exo, sans-serif;
	font-size: 15px;
	line-height: 24px;
	font-weight: 400;
}
#tribe-events-pg-template .ls-ev__navigation svg {
	width: 11.25px;
	height: 18.75px;
	vertical-align: text-top;
	fill: currentColor;
}
#tribe-events-pg-template .ls-ev__navigation--previous svg { margin-right: 4px; }
#tribe-events-pg-template .ls-ev__navigation--next svg     { margin-left: 4px; }

/* Live blendet das Blaettern unterhalb 880 px aus
 * (`elementor-hidden-mobile_extra elementor-hidden-mobile` am Container). */
@media (max-width: 880px) {
	#tribe-events-pg-template .ls-ev__navigation { display: none; }
}

/* --- Nachtrag: Inline-Kinder duerfen die Zeilenbox nicht aufziehen --------
 * Die Grundregel oben setzt `line-height: 1.62` als VERHAELTNIS, also rechnet
 * jeder Knoten sie mit seiner eigenen Schriftgroesse neu. Live setzt fuer
 * verschachtelte Knoten dagegen `line-height: inherit` und vererbt damit den
 * fertigen Pixelwert.
 *
 * Sichtbar wurde der Unterschied nur dort, wo ein Inline-Kind eine andere
 * Schriftgroesse hat als sein Elternteil: die Datumszeile wurde 32,4 statt
 * 28 px hoch (20 px x 1,62) und der Export-Knopf 43,9 statt 41 px. In beiden
 * Faellen hat nicht das gemessene Element die falsche Zeilenhoehe, sondern
 * sein Kind zieht die Zeilenbox auf — deshalb griff die Regel am Elternteil
 * nicht.
 *
 * Betrifft ausschliesslich eigenes Markup, nicht Fremdknoten.
 */
#tribe-events-pg-template .ls-ev__datetime-date,
#tribe-events-pg-template .ls-ev__datetime-separator,
#tribe-events-pg-template .ls-ev__export-label {
	line-height: inherit;
}

/* Der Zurueck-Link traegt auf Live die Klasse `tec-events-back` und faellt
 * damit NICHT unter TECs Widget-Grundregel — er behaelt die 28 px des Themes.
 * Am Live-Stand nachgemessen. */
#tribe-events-pg-template .ls-ev__back {
	line-height: 28px;
	/* ... und ebenso wenig deren 4 px Abstand nach unten: der Abstand zum Titel
	 * ist auf Live 20 px, mit den 4 px waren es 24 und alles darunter stand
	 * konstant 4 px zu tief. */
	margin-bottom: 0;
}

/* --- Responsive Stufen ----------------------------------------------------
 * Am Live-Stand ueber neun Breiten abgetastet (work/diag/r22-bp*.py), nicht
 * aus den Projekt-Breakpoints abgeleitet:
 *
 *   Titel      1440 33/42 | 1366 30/39 | ab 1200 abwaerts 26/33,8
 *   Ortsraster zweispaltig bis 767, darunter einspaltig und ohne die 12 px
 *              Aussenabstand an Kasten, Angaben und Karte
 *
 * Die 767 ist dieselbe Schwelle, die das portierte Kunden-CSS benutzt.
 * (Anmerkung zur Messung: der Browser schaltet bei angeforderter Fensterbreite
 * 766 um, weil die Bildlaufleiste einen Pixel frisst — die Regel lautet 767.)
 */
@media (max-width: 1366px) {
	#tribe-events-pg-template .ls-ev__title {
		font-size: 30px;
		line-height: 39px;
	}
}
@media (max-width: 1200px) {
	#tribe-events-pg-template .ls-ev__title {
		font-size: 26px;
		line-height: 33.8px;
	}
}
/* Datum schaltet eine Stufe spaeter als der Titel: 20/28 bis 1200, ab 1024
 * abwaerts 18/26. Ebenfalls abgetastet, nicht abgeleitet. */
@media (max-width: 1024px) {
	#tribe-events-pg-template .ls-ev__datetime {
		font-size: 18px;
		line-height: 26px;
	}
}
@media (max-width: 767px) {
	#tribe-events-pg-template .ls-ev__venue-container {
		grid-template-columns: 1fr;
		/* R59 (Fall 251) — die Spalten waren umgestellt, die ZEILEN nicht. Unter
		 * 767px wird aus dem zweispaltigen Veranstaltungsort ein zweizeiliger, und
		 * The Events Calendar setzt dafuer auf Live `grid-template-rows: 1fr 1fr`
		 * (per CDP an der Live-Seite als gewinnende Regel abgelesen). Ohne sie
		 * richten sich die Zeilen nach ihrem Inhalt: gemessen 201,7 + 364,2 = 566px
		 * statt 678,5 + 678,5 = 1357px. Die Seite war dadurch bei 390 insgesamt
		 * 791px kuerzer — das war die Ursache ALLER acht Baender dieser Route,
		 * nicht die Ueberschrift daruber (die misst nach den Faellen 245/249 auf
		 * allen Breiten 0). */
		grid-template-rows: 1fr 1fr;
		width: 100%;
		max-width: none;
		margin: 0;
	}
	#tribe-events-pg-template .ls-ev__venue-details,
	#tribe-events-pg-template .ls-ev__venue-map {
		margin: 0;
	}
}

/* ---------------------------------------------------------------------------
 * ARCHIV /events/ — Bricks' alignwide neutralisieren.
 *
 * The Events Calendar haengt seinem Wurzelcontainer die Klasse `alignwide` an
 * (Kompatibilitaet mit Block-Themes). Bricks stylt die in
 * `frontend-layer.min.css` als Gutenberg-Ausbruch:
 *     .alignwide { margin-left: -10%; max-width: 120%; width: 120% }
 * Astra tut das nicht — am CSSOM beider Staende abgelesen, Live `max-width: none`.
 *
 * Folge auf Dev bei 1440: der Container wird 1656 statt 1380 px breit, die
 * zentrierte 1230-px-Sektion darin rutscht um 138 px nach rechts (x 243 statt
 * 105) und jede Event-Zeile mit ihr. Kein Fehler, keine Meldung — eine
 * Fremdklasse trifft auf eine Theme-Regel, die sie nie gemeint hat.
 *
 * Bewusst NUR am TEC-Container: `alignwide` kommt sonst nirgends im Dev-Markup
 * vor (ausgezaehlt ueber 7 Seiten), Bricks' Regel soll fuer echte Blockinhalte
 * erhalten bleiben.
 */
.tribe-events.alignwide {
	margin-left: 0;
	width: 100%;
	max-width: none;
}

/* ---------------------------------------------------------------------------
 * ARCHIV /events/ — Astras Karten-Optik nachbauen.
 *
 * Auf Live steht jedes Event als weisse Karte auf hellgrauem Grund. Das ist
 * KEIN Kunden-CSS und kein TEC-Stil, sondern ASTRA: das Theme haengt per
 * post_class vier eigene Klassen an TECs Markup
 * (`ast-grid-common-col ast-full-width ast-article-post remove-featured-img-padding`)
 * und stylt sie als `.ast-separate-container .ast-article-post`
 * — Hintergrund `#fff`, `padding: 3em`.
 *
 * Auf Dev fehlen Klassen UND Regel, weil Astra nicht mehr das Theme ist. Fehlt
 * damit auch nach dem Abbau auf Live. Ergebnis vorher: keine Karten, und je
 * Zeile 96 px zu wenig (2 x 48 px) — bei drei Zeilen die gemessenen 280 px
 * Hoehendifferenz der Seite.
 *
 * WERTE AM LIVE-STAND ABGETASTET, nicht aus den em-Werten abgeleitet: dort
 * konkurrieren drei Regeln aus zwei Stylesheets (`5.34em 6.67em`,
 * `3.34em 2.4em`, inline `3em`), und Astra aendert zusaetzlich die
 * Wurzelschriftgroesse (16 -> 14.592 px). Die krummen 43.776 px sind 3em bei
 * 14.592 px. Schwellen ueber 17 Breiten eingegrenzt (diag/r23-bp.py):
 * Wechsel exakt bei 921 px und bei 544 px — Astras eigene Breakpoints, nicht
 * die des Projekts.
 *
 * SPEZIFITAET BEWUSST 0,2,0 wie bei Astra: TECs Gutter-Regel fuer die
 * Datumsspalte ist 0,4,0 und soll wie auf Live gewinnen (dort 24 px waagerecht
 * statt 48). Eine "sicherheitshalber" hoehere Spezifitaet wuerde genau das
 * kippen.
 */
.tribe-events .tribe-events-calendar-list__event,
.tribe-events .tribe-events-calendar-list__event-date-tag {
	background-color: #fff;
	padding: 48px;
	/* Astras Regel setzt neben Hintergrund und Polster auch `margin: 0` und
	 * neutralisiert damit TECs negativen Gutter-Rand
	 * (`.tribe-common-g-row--gutters`, -21 px je Seite). Ohne das bricht die
	 * Karte unterhalb 768 px um 42 px aus ihrem Wrapper aus — bei 1440 faellt
	 * es nicht auf, weil dort andere TEC-Regeln greifen. */
	margin: 0;
}

/* Nur die Datumsspalte traegt auf Live eine Trennlinie (gemessen: Artikel
 * `0px none`, Spalte `1px solid rgb(222,222,222)`). */
.tribe-events .tribe-events-calendar-list__event-date-tag {
	border-bottom: 1px solid #dedede;
}

@media (max-width: 921px) {
	.tribe-events .tribe-events-calendar-list__event,
	.tribe-events .tribe-events-calendar-list__event-date-tag {
		padding: 43.776px;
	}
}

@media (max-width: 544px) {
	.tribe-events .tribe-events-calendar-list__event,
	.tribe-events .tribe-events-calendar-list__event-date-tag {
		padding: 21.888px 14.592px;
	}
}

/* ---------------------------------------------------------------------------
 * TEC-Symbole: Bricks' svg-Mindestmass neutralisieren.
 *
 * Bricks' Frontend-CSS enthaelt
 *     svg:not([width])  { min-width:  1em }
 *     svg:not([height]) { min-height: 1em }
 * als Notnagel gegen unsichtbare Symbole. TECs Symbole tragen ihre Masse
 * ausschliesslich per CSS (`width: 10px; height: 6px`) und KEINE Attribute —
 * `min-width` schlaegt `width`, der Caret am "Subscribe to calendar" wurde
 * dadurch 16x16 statt 10x6. Astra hat keine solche Regel, auf Live ist er 10x6.
 *
 * Betrifft potenziell jedes fremde Inline-SVG ohne width/height-Attribut;
 * hier bewusst nur TECs Markup, damit Bricks' Notnagel sonst erhalten bleibt.
 */
.tribe-common svg:not([width])  { min-width: 0; }
.tribe-common svg:not([height]) { min-height: 0; }

/* ---------------------------------------------------------------------------
 * ARCHIV /events/ — derselbe ACSS-Griff wie oben, eine Ebene hoeher.
 *
 * TECs eigener Abschnitt heisst `section.tribe-common-l-container` und liegt
 * NICHT in <main> — die Neutralisierung in layout.css (`main section.brxe-section`)
 * erreicht ihn nicht, und `#tribe-events-pg-template` gibt es hier nicht, weil
 * das Archiv weiter TECs Ansicht rendert.
 *
 * ACSS machte ihn dadurch zum Flex-Container und seine direkten div-Kinder zu
 * Flex-Elementen mit `align-items: flex-start`. Sichtbare Folge: der Kasten um
 * "Subscribe to calendar" schrumpfte auf seine Inhaltsbreite (226 statt 330 px),
 * der Knopf mit ihm. Auf Live steht `align-items: normal` — dort gibt es die
 * Regel nicht.
 *
 * Gemessen, nicht angenommen: Live liefert fuer den Abschnitt `display: block`.
 */
.tribe-events-l-container {
	display: block;
}
.tribe-events-l-container > div:not(.bricks-shape-divider) {
	align-items: normal;
	gap: normal;
}

/* ---------------------------------------------------------------------------
   R45 — zwei Vorgaben, die mit dem Elementor-Abbau weggefallen sind.
   Beide gemessen am Live-Stand (diag/r45-ev2.py, diag/r45-pm.py), nicht
   aus Einstellungen abgeleitet: es gibt fuer TEC-Markup keine Einstellung,
   die Optik kam ausschliesslich aus fremden Stylesheets.

   1) `.elementor-heading-title { line-height: 1 }` aus Elementors
      Frontend-CSS. Die Ueberschrift "Meet us" steht als rohes HTML in TECs
      Einstellung `tribeEventsBeforeHTML` und traegt deshalb Elementor-Klassen,
      obwohl sie kein Elementor-Element ist. Ohne die Regel faellt sie auf
      h1{line-height:1.4em} zurueck: 63 statt 45 px.
      Bestand ausgezaehlt: `elementor-heading-title` kommt site-weit NUR auf
      den Termin-Routen vor (10 Seiten geprueft, ueberall 0).

   2) Der Absatzabstand der Terminbeschreibungen. Auf Live setzt ihn das
      Elementor-Kit seitenweit (`.elementor-kit-9 p { margin-block-end: 20px }`)
      und schlaegt damit TECs eigenes Reset `.tribe-common p { margin: 0 }`.
      Bewusst NICHT seitenweit nachgebaut, sondern auf die vier Absaetze, die
      sich tatsaechlich unterscheiden: ausgezaehlt hat Live 7 Absaetze mit 20 px
      und 11 mit 0, Dev 3 mit 20 und 15 mit 0 — die Differenz sind genau die
      Beschreibungen. Eine seitenweite Regel haette die uebrigen elf mitgenommen.
   --------------------------------------------------------------------------- */
.elementor-heading-title { line-height: 1; }
.tribe-events-calendar-list__event-description p { margin-bottom: 20px; }

/* R59 (Fall 249) — dieselbe Ueberschrift, aber nur SCHMAL. Der Wert aus R45 oben
 * ist richtig gemessen und bleibt: bei 1440 gilt auf Live Elementors
 * `.elementor-heading-title { line-height: 1 }` (Spezifitaet 0,1,0). Gemessen
 * wurde damals aber nur die Desktopbreite, und unterhalb 768px KIPPT auf Live,
 * welche Regel gewinnt — dort schlaegt eine spezifischere Kit-Regel zu:
 *
 *   @media (max-width: 767px) { .elementor-kit-9 h1 { line-height: 1.4em;
 *                                                     font-size: 33px } }   (0,1,1)
 *
 * Per CDP `CSS.getMatchedStylesForNode` an der Live-Ueberschrift nachgesehen,
 * nicht abgeleitet: bei 1440 steht diese Regel als [inaktiv] in der Kette, bei
 * 390 als [AKTIV] und als Gewinner. Die Grenze 767px ist deshalb keine gewaehlte
 * Zahl, sondern die woertliche Bedingung der Live-Regel.
 *
 * Folge auf Dev: die Ueberschrift blieb schmal bei 33px statt 46,2px, und weil
 * sie im Fluss vor dem Inhalt steht, sass der gesamte Termin-Inhalt rund 13px zu
 * hoch — gemessen /event/<slug>/ 13,2px und /events/ 13,7px. Bei 1440 war nichts
 * zu sehen, weil dort beide Staende auf 45px kommen.
 *
 * Uebernommen wird nur die ZEILENHOEHE. Die Schriftgroesse von 33px steht auf Dev
 * bei dieser Breite bereits (gemessene Hoehe 33px bei line-height 1 heisst
 * font-size 33px) — sie ein zweites Mal hinzuschreiben waere ein Handwert neben
 * einem bereits stimmenden Wert. Der Selektor traegt das `h1` mit, weil Live es
 * ebenfalls auf h1 begrenzt: `.elementor-kit-9 h1`, nicht die Klasse allein. */
@media (max-width: 767px) {
  h1.elementor-heading-title { line-height: 1.4em; }
}
