/* =========================================================================
   GAH574 — Event-Landingpage
   Eine Quelle der Wahrheit fuer die gesamte Optik (Leitfaden §9).
   Keine Inline-Styles im gerenderten HTML.

   Aufbau
     1  Tokens
     2  Basis und Bricks-Neutralisierung
     3  Layout: Rahmen, Panels, Inhaltsspalte
     4  Bausteine: Eyebrow, Pfeil, Pills, Links, Platzhalter
     5  Sektionen
     6  Bold-Tickets-Formular
     7  Bewegung und Fokus
   ========================================================================= */

/* -------------------------------------------------------------------------
   1  Tokens
   ---------------------------------------------------------------------- */

.gah-page {
	/* Farbe — nur zwei echte Farben tragen die Seite (Handoff).
	   BARRIEREFREIHEIT: #327EDB ergibt gegen Weiss 4,08:1 und liegt damit
	   unter den 4,5:1 der WCAG AA fuer normalen Text. Betroffen ist alles
	   unter 24px: Fliesstext, Eyebrows, Navigation, CTA- und FAQ-Beschriftung,
	   Partner-Label. Ueberschriften ab 24px sind mit 3:1 in Ordnung.
	   Ein Tausch auf #2676D7 (Helligkeit -6 %) erreicht 4,51:1 bei nahezu
	   gleicher Anmutung. Die Entscheidung liegt bei clot.design — bis dahin
	   bleibt der Entwurfswert stehen. Gemessen mit pruefung/kontrast.js. */
	--gah-blau: #327edb;
	/* Freigegebene Alternative, wenn clot.design zustimmt: #2676D7 */
	--gah-blau-rgb: 50, 126, 219;
	--gah-weiss: #ffffff;
	--gah-blau-22: rgba(50, 126, 219, 0.22);
	--gah-weiss-15: rgba(255, 255, 255, 0.15);
	--gah-grau-platzhalter: #d9d9d9;
	--gah-partner-grund: #f4f6f9;
	--gah-partner-slot: #e2e6ec;
	--gah-partner-schrift: #929caa;
	/* Hover-Ton aus dem Handoff — steht laut clot.design noch unter Vorbehalt */
	--gah-dunkel: #14293f;
	--gah-schatten-select: 0 4px 8px rgba(0, 0, 0, 0.06);

	/* Schrift */
	--gah-schrift: "TT Firs Neue", "Helvetica Neue", Helvetica, Arial, sans-serif;
	--gah-schrift-display: "Helvetica Now Display", "TT Firs Neue", "Helvetica Neue", Helvetica, Arial, sans-serif;

	/* Schriftgroessen — fluid, Zielwert ist der Figma-Wert bei 1512px.
	   Bewusst in px: Bricks setzt html auf 62,5 %, damit waere 1rem = 10px
	   und jede rem-Angabe um 37,5 % zu klein (gemessen, §12.1). */
	--gah-h1: clamp(44px, 5.3vw, 80px);
	--gah-h2: clamp(32px, 3.6vw, 54px);
	--gah-h2-display: clamp(30px, 3vw, 45px);
	--gah-h3-display: clamp(24px, 2.4vw, 36px);
	--gah-countdown: clamp(28px, 3vw, 45px);
	--gah-label: clamp(20px, 1.85vw, 28px);
	--gah-gross: clamp(17px, 1.32vw, 20px);
	--gah-basis: 16px;
	--gah-klein: 13px;

	/* Radien */
	--gah-radius-select: 8px;
	--gah-radius-panel: 18px;
	--gah-radius-bild: 20px;
	--gah-radius-pill: 100px;

	/* Raster */
	--gah-rahmen-max: 1512px;
	--gah-inhalt-max: 1232px;
	--gah-gutter: clamp(24px, 9.26vw, 140px); /* 140px bei 1512px */
	--gah-panel-inset: clamp(12px, 1.46vw, 22px);
	/*
	 * Hoehe der Kopfzeile — nachgemessen, nicht geschaetzt: 124px ab
	 * 1512px, 105 bei 1280, 84 bei 1024, 68 ab 600 und darunter. Die
	 * Kopfzeile liegt `absolute` ueber der ersten Sektion, also muss die
	 * ihren Platz kennen. Wer am Logoblock oder am Polster der Kopfzeile
	 * dreht, muss diesen Wert nachmessen.
	 */
	--gah-kopf-hoehe: clamp(68px, 8.2vw, 124px);
	--gah-spalten-abstand: clamp(24px, 3.2vw, 48px);
	--gah-text-abstand: 18px;
	--gah-tick-abstand: 12px;
	--gah-tick-breite: 5px;

	/* Vertikale Rhythmik — im Figma handgesetzt, hier je Sektion gemessen */
	--gah-py-s: clamp(28px, 3.5vw, 52px);
	--gah-py-m: clamp(48px, 8.2vw, 124px);
	--gah-py-l: clamp(64px, 10.7vw, 162px);
	--gah-py-xl: clamp(80px, 16.2vw, 245px);
}

/* -------------------------------------------------------------------------
   2  Basis und Bricks-Neutralisierung
   ---------------------------------------------------------------------- */

/* Bricks vererbt global line-height 1.7, Ueberschriften zusaetzlich 1.4.
   Die Design-Datei setzt keine -> normal. Ohne das ist jeder Block zu hoch (§9.2). */
.gah-page,
.gah-page :where(h1, h2, h3, h4, h5, h6) {
	line-height: normal;
}

.gah-page {
	font-family: var(--gah-schrift);
	font-size: var(--gah-basis);
	font-weight: 400;
	color: var(--gah-blau);
	background: var(--gah-weiss);
	-webkit-font-smoothing: antialiased;
	/*
	 * Der Rahmen ist rundum gleich breit. Links und rechts rueckt jedes
	 * Panel sich selbst ein (`.gah-sec--panel { margin-inline }`); oben und
	 * unten kann das kein Panel leisten, weil dort die Seite endet — das
	 * gehoert an die Flaeche darunter. Derselbe Wert, damit es ein Rahmen
	 * bleibt und keine vier Entscheidungen.
	 */
	padding-block: var(--gah-panel-inset);
}

.gah-page :where(h1, h2, h3, h4, h5, h6, p, ul, ol, figure, dl, dd) {
	margin: 0;
}

.gah-page :where(ul, ol) {
	padding: 0;
	list-style: none;
}

/* Jede eigene display-Angabe schlaegt die Browserregel
   `[hidden] { display: none }` — der Countdown blieb dadurch nach der
   Veranstaltung sichtbar UND meldete gleichzeitig, sie sei vorbei.
   Das gilt fuer jedes Element, das wir per hidden schalten, deshalb
   hier einmal grundsaetzlich. Die Ausnahme mit !important ist genau
   dafuer gedacht. */
.gah-page [hidden] {
	display: none !important;
}

/* Bricks stylt generische Tags per Element-Selektor (§4.3). */
.gah-page blockquote {
	margin: 0;
	padding-left: 0;
	border-left: 0;
	font-family: inherit;
	font-size: inherit;
}

.gah-page blockquote cite {
	font-family: inherit;
	text-transform: none;
	opacity: 1;
}

.gah-page figcaption {
	text-align: left;
}

/* Bricks faerbt <label> grau (gemessen rgb(158,158,158)) — zuruecksetzen (§4.3). */
.gah-page :where(label, legend) {
	color: inherit;
}

.gah-page img {
	display: block;
	max-width: 100%;
	height: auto;
}

.gah-page a {
	color: inherit;
}

/* -------------------------------------------------------------------------
   3  Layout
   ---------------------------------------------------------------------- */

/* Bricks' section/container/block sind Flex-Spalten mit align-items:center.
   Ein max-width-Wrapper darin schrumpft sonst auf Inhaltsbreite (§4.1). */
.gah-inner {
	display: block;
	width: 100%;
	max-width: var(--gah-inhalt-max);
	margin-inline: auto;
	padding-inline: 0;
}

/* Sektionen, die ihre Breite selbst regeln (Hero, Partnerleiste). */
.gah-inner--voll {
	max-width: none;
}

/* Die Sektion traegt den Aussenabstand, die Panels ihren Grund. */
.gah-sec {
	display: block;
	width: 100%;
	padding-block: var(--gah-py-l);
	padding-inline: var(--gah-gutter);
}

/* Blaue Panels: 22px vom Rahmenrand eingerueckt, 18px Radius. */
.gah-sec--panel {
	margin-inline: var(--gah-panel-inset);
	width: auto;
	border-radius: var(--gah-radius-panel);
	background: var(--gah-blau);
	color: var(--gah-weiss);
	/* Der Gutter misst ab Rahmenkante, das Panel beginnt aber eingerueckt. */
	padding-inline: calc(var(--gah-gutter) - var(--gah-panel-inset));
}

/* Panels stossen mit 22px aneinander. */
.gah-sec--panel + .gah-sec--panel {
	margin-top: var(--gah-panel-inset);
}

/*
 * Die Fusszeile liegt in <footer> und ist damit KEIN Geschwister der
 * Panels in <main> — der Nachbarschaftsselektor oben greift dort nicht.
 * Folge: auf jeder Unterseite stiessen zwei blaue Panels mit 0px
 * aneinander und verschmolzen zu einer Flaeche. Aufgefallen ist es erst,
 * seit der Rahmen rundum 22px hat: aussen abgesetzt, innen zusammen-
 * gelaufen liest sich wie ein Fehler, und es war einer.
 */
.gah-page footer > .gah-sec--panel {
	margin-top: var(--gah-panel-inset);
}

/* Hero und Kontakt stehen im Figma 32px weiter rechts als die uebrigen
   sieben Sektionen. Uebernommen, aber als Rueckfrage an clot.design notiert. */
.gah-sec--versatz .gah-inner {
	padding-left: 32px;
}

/*
 * Die erste Sektion einer Unterseite muss die Kopfzeile freistellen.
 *
 * Die Kopfzeile liegt `position: absolute` ueber dem ersten Panel — sie
 * braucht keinen eigenen Grund, sie liegt auf dem blauen. Ihr Platz fehlt
 * damit im Fluss: von den 162px Polster der Sektion frisst sie 124, es
 * blieben 38px zwischen Logo und Eyebrow. Unter 600px war die Luecke sogar
 * **negativ**, der Kopfkasten schob sich ueber die Eyebrow.
 *
 * Die Startseite ist ausgenommen: dort steckt die Kopfzeile im Hero und
 * dessen Inhalt bringt seinen eigenen Abstand mit.
 */
.gah-page main > .gah-sec--panel:first-child:not(.gah-sec--hero) {
	padding-top: calc(var(--gah-kopf-hoehe) + var(--gah-py-m));
}

/* Gemessene Innenabstaende je Sektion (§12) */
.gah-sec--hero { padding-block: var(--gah-py-s) var(--gah-py-m); }
.gah-sec--partner { padding-block: 0; }
.gah-sec--einordnung { padding-block: var(--gah-py-m) var(--gah-py-l); }
.gah-sec--programm { padding-block: var(--gah-py-l) var(--gah-py-s); }
.gah-sec--referent { padding-block: var(--gah-py-l) var(--gah-py-xl); }
.gah-sec--tickets { padding-block: var(--gah-py-l); }
.gah-sec--anfahrt { padding-block: var(--gah-py-xl); }
.gah-sec--faq { padding-block: var(--gah-py-m) var(--gah-py-xl); }
.gah-sec--kontakt { padding-block: var(--gah-py-xl); }
.gah-sec--footer { padding-block: clamp(24px, 2.3vw, 35px) clamp(20px, 1.8vw, 27px); }

/* Anker duerfen nicht unter dem Sticky-Header verschwinden (§4.6). */
.gah-page [id] {
	scroll-margin-top: clamp(72px, 8vw, 120px);
}

/* Zweispaltiges Grundraster: Ueberschrift links, Text rechts.
   Nicht 1fr/1fr: im Entwurf beginnt die rechte Spalte durchgehend bei
   x 740 und ist 632px breit — gemessen an Einordnung, Programm und
   Tickets. Mit gleichen Haelften plus Abstand saesse sie bei 780. */
.gah-zweispaltig {
	display: grid;
	grid-template-columns: minmax(0, 600fr) minmax(0, 632fr);
	column-gap: 0;
	row-gap: var(--gah-spalten-abstand);
	align-items: start;
}

/* -------------------------------------------------------------------------
   4  Bausteine
   ---------------------------------------------------------------------- */

.gah-eyebrow {
	display: flex;
	align-items: center;
	gap: var(--gah-tick-abstand);
	margin-bottom: var(--gah-text-abstand);
	font-size: var(--gah-basis);
	font-weight: 400;
	line-height: 1;
}

.gah-eyebrow__strich {
	flex: 0 0 auto;
	width: var(--gah-tick-breite);
	height: 16px;
	background: currentColor;
}

.gah-titel {
	font-family: var(--gah-schrift);
	font-size: var(--gah-h2);
	font-weight: 500;
	line-height: 1.1;
	max-width: 20ch;
}

.gah-titel--h1 {
	font-size: var(--gah-h1);
	line-height: 1;
	max-width: 632px;
}

.gah-titel--display {
	font-family: var(--gah-schrift-display);
	font-size: var(--gah-h2-display);
	font-weight: 400;
	line-height: 1.2;
}

.gah-text {
	font-size: var(--gah-basis);
	line-height: 1.2;
}

.gah-text + .gah-text {
	margin-top: 1.2em;
}

.gah-link {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.gah-pfeil {
	flex: 0 0 auto;
	font-family: var(--gah-schrift-display);
	line-height: 1;
}

/* Pills ------------------------------------------------------------------ */

.gah-pill {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	border-radius: var(--gah-radius-pill);
	font-size: var(--gah-basis);
	line-height: 1;
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color 0.2s ease-out, color 0.2s ease-out;
}

/* Gefuellt: weisse Flaeche, blaue Schrift.
   Die Root-Klasse steht davor, weil .gah-page a (0,1,1) sonst die
   Textfarbe der Umgebung durchreicht und die Beschriftung weiss auf
   weiss verschwindet (§4.6). */
.gah-page .gah-pill--voll {
	min-height: 44px;
	height: 44px;
	padding: 14px 24px;
	border: 1px solid var(--gah-weiss);
	background: var(--gah-weiss);
	color: var(--gah-blau);
	font-family: var(--gah-schrift-display);
	font-weight: 400;
}

/* Umrandet, gross: 294x60 mit Kreis-Pfeil rechts */
.gah-pill--kontur {
	position: relative;
	min-height: 60px;
	min-width: 294px;
	padding: 18px 60px 18px 27px;
	border: 1px solid currentColor;
	background: transparent;
	color: inherit;
	font-size: var(--gah-gross);
	justify-content: flex-start;
}

.gah-pill--kontur .gah-pill__kreis {
	position: absolute;
	right: 8px;
	top: 50%;
	transform: translateY(-50%);
	display: grid;
	place-items: center;
	width: 43px;
	height: 43px;
	border-radius: 50%;
	background: var(--gah-weiss);
	color: var(--gah-blau);
	font-family: var(--gah-schrift-display);
	font-size: var(--gah-gross);
	transition: background-color 0.2s ease-out, color 0.2s ease-out;
}

/* Hover: laut Handoff Vorschlag, Abnahme durch clot.design steht aus.
   Buttons sind <a> — generischer Link-Hover schlaegt sonst durch (§4.6). */
.gah-page .gah-pill--voll:hover,
.gah-page .gah-pill--voll:focus-visible {
	background: var(--gah-weiss);
	color: var(--gah-dunkel);
}

.gah-page .gah-pill--kontur:hover,
.gah-page .gah-pill--kontur:focus-visible {
	background: var(--gah-weiss);
	color: var(--gah-blau);
}

.gah-page .gah-pill--kontur:hover .gah-pill__kreis,
.gah-page .gah-pill--kontur:focus-visible .gah-pill__kreis {
	background: var(--gah-blau);
	color: var(--gah-weiss);
}

/* Platzhalter fuer noch nicht gelieferte Inhalte — sichtbar, nicht still (§13) */
.gah-platzhalter {
	display: block;
	padding: 12px 16px;
	border: 1px dashed currentColor;
	border-radius: var(--gah-radius-select);
	font-size: var(--gah-basis);
	line-height: 1.3;
	opacity: 0.75;
}

.gah-bild-platzhalter {
	display: grid;
	place-items: center;
	width: 100%;
	border: 1px dashed currentColor;
	border-radius: var(--gah-radius-bild);
	background: var(--gah-grau-platzhalter);
	color: var(--gah-dunkel);
	font-size: var(--gah-basis);
	text-align: center;
	padding: 16px;
}

.gah-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* -------------------------------------------------------------------------
   5  Sektionen
   ---------------------------------------------------------------------- */

/* 5.1  Header ------------------------------------------------------------ */

/* Im Figma sitzt die Kopfzeile IM Hero-Panel, nicht als eigene Leiste.
   Deshalb liegt sie absolut ueber der ersten Sektion; jede Seite beginnt
   mit einem blauen Panel. Nicht sticky — das Design zeigt keine. */
.gah-header {
	position: absolute;
	inset-inline: 0;
	top: 0;
	z-index: 20;
	padding-top: clamp(24px, 3.4vw, 52px);
	color: var(--gah-weiss);
}

.gah-header__inner {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: clamp(16px, 2.6vw, 40px);
	padding-inline: calc(var(--gah-gutter) + 32px) var(--gah-gutter);
}

.gah-header__marke {
	display: inline-flex;
	flex: 0 0 auto;
	text-decoration: none;
}

/* Bricks-Block hat width:100% als Default — Inhaltsbreite zuruecksetzen (§2.1) */
.gah-header__rechts {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: clamp(16px, 2.1vw, 32px);
	width: auto;
}

.gah-header__nav {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: clamp(16px, 2.1vw, 32px);
	width: auto;
}

.gah-header__nav a {
	font-size: var(--gah-basis);
	line-height: 1;
	text-decoration: none;
}

.gah-header__nav a:hover,
.gah-header__nav a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.gah-logo {
	display: block;
	color: currentColor;
}

.gah-logo__svg {
	display: block;
	width: clamp(180px, 21.6vw, 326.7px);
	height: auto;
}

.gah-logo--klein .gah-logo__svg {
	width: clamp(160px, 18vw, 272px);
}

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

/* Das Motiv laeuft bis an die Panelkante — die Sektion traegt hier keinen
   Innenabstand, den setzt der Inhalt selbst. */
.gah-sec--hero {
	position: relative;
	padding-inline: 0;
	overflow: hidden;
}

.gah-hero {
	position: relative;
	display: flex;
	flex-direction: column;
	min-height: clamp(520px, 56.4vw, 853px);
}

.gah-hero__bild {
	position: absolute;
	top: clamp(20px, 4.2vw, 63px);
	right: 0;
	/*
	 * Bis an die Unterkante des Panels, nicht bis zum Ende des Inhalts.
	 * Bezugsrahmen ist `.gah-hero` — und das endet 124px (--gah-py-m) vor
	 * dem Panelrand, weil die Sektion dort ihr Polster hat. Mit `bottom: 0`
	 * brach das Motiv als harte waagerechte Kante ab und darunter stand
	 * blaue Fläche. `.gah-sec` hat `overflow: hidden`, das Bild wird also
	 * genau an der gerundeten Panelkante beschnitten.
	 */
	bottom: calc(-1 * var(--gah-py-m));
	width: 62.3%;
	z-index: 0;
	pointer-events: none;
}

.gah-hero__bild img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: left top;
}

.gah-hero__bild--mitte img { object-position: center top; }
.gah-hero__bild--unten img { object-position: center bottom; }

.gah-hero__inhalt,
.gah-hero__fuss {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: calc(var(--gah-inhalt-max) + 2 * (var(--gah-gutter) - var(--gah-panel-inset)));
	margin-inline: auto;
	padding-inline: calc(var(--gah-gutter) - var(--gah-panel-inset) + 32px)
		calc(var(--gah-gutter) - var(--gah-panel-inset));
}

.gah-hero__inhalt {
	padding-top: clamp(90px, 13.6vw, 206px);
}

/* Der Textblock selbst ist 632px breit, nicht der Wrapper — sonst zentriert
   margin-inline:auto die Spalte mitten ins Motiv. */
.gah-hero__inhalt > * {
	max-width: 632px;
}

/* Der Hero-Eyebrow ist im Figma 355px breit — ohne Deckel bricht er
   erst bei 632px und der Umbruch sitzt an anderer Stelle. */
.gah-hero__inhalt .gah-eyebrow {
	max-width: 355px;
}

.gah-hero__datum {
	margin-top: var(--gah-text-abstand);
	font-size: var(--gah-basis);
	line-height: 1.2;
}

.gah-hero__fuss {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: clamp(24px, 3vw, 40px);
	margin-top: auto;
	padding-bottom: 0;
}

/* Countdown -------------------------------------------------------------- */

.gah-countdown {
	display: flex;
	gap: clamp(12px, 2.1vw, 32px);
	width: auto;
}

.gah-countdown__karte {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: 6px;
	width: clamp(96px, 13.8vw, 208px);
	min-height: clamp(104px, 11.6vw, 175px);
	padding: 16px;
	border-radius: var(--gah-radius-panel);
	background: var(--gah-weiss-15);
	-webkit-backdrop-filter: blur(10.9px);
	backdrop-filter: blur(10.9px);
	text-align: center;
}

.gah-countdown__wert {
	font-size: var(--gah-countdown);
	font-weight: 400;
	line-height: 1.2;
	font-variant-numeric: tabular-nums;
}

.gah-countdown__label {
	font-size: var(--gah-basis);
	line-height: 1.2;
}

.gah-countdown__vorbei {
	font-size: var(--gah-basis);
	line-height: 1.2;
}

/* 5.3  Partnerleiste ----------------------------------------------------- */

.gah-sec--partner {
	background: var(--gah-partner-grund);
	color: var(--gah-blau);
	padding-inline: clamp(20px, 7.8vw, 118px);
}

.gah-partner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: clamp(16px, 2.1vw, 32px);
	min-height: 96px;
	padding-block: 16px;
}

.gah-partner__label {
	font-size: var(--gah-klein);
	line-height: 1;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: rgba(var(--gah-blau-rgb), 0.75);
}

.gah-partner__liste {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: clamp(16px, 2.1vw, 32px);
	width: auto;
}

.gah-partner__slot {
	display: grid;
	place-items: center;
	width: 170px;
	max-width: 100%;
	height: 48px;
	border-radius: 6px;
	background: var(--gah-partner-slot);
	color: var(--gah-partner-schrift);
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.gah-partner__slot img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
}

/* Ein gesetztes Logo braucht keinen grauen Kasten mehr. Die Slotbreite von
   170px bleibt — so steht es im Handoff, und der gleichmaessige Rhythmus
   traegt die Leiste. */
.gah-partner__slot--gefuellt {
	background: transparent;
}

/* ALLE VIER LOGOS KOMMEN MIT WEISSEM GRUND — nachgezaehlt: zwei JPEG, und
   die beiden PNG liegen als Palettenbild ohne Alphakanal vor. Ohne Blend
   staende auf dem hellgrauen Band ein weisser Kasten je Logo.

   `multiply` loest das ohne Bildbearbeitung: Weiss mal Hintergrund ergibt
   den Hintergrund, der Kasten verschwindet. Die Logofarben bleiben, weil
   der Grund hier fast weiss ist (#f4f6f9) — auf einer dunklen Flaeche waere
   derselbe Kniff falsch, dort muesste `screen` oder eine freigestellte
   Datei her. */
/* Die Hoehe in Pixeln, nicht in Prozent: `max-height: 100%` laeuft im Raster
   gegen eine automatische Breite und greift dann gar nicht — gemessen kam
   Jamestown mit 85px heraus, obwohl der Slot 48px hoch ist.

   Die Breite dagegen **relativ** zum Slot: unter 720px werden die Slots zu
   einem Zweispalter und sind dann nur noch 115px breit. Eine feste
   Obergrenze ignorierte das, die Logos ragten aus ihrer Rasterzelle und die
   Startseite war bei 320px 27px zu breit.

   Damit wirken die vier Marken gleich gross — die Hoehe ist normiert —, und
   der Slot bleibt trotzdem so breit wie im Entwurf. Jamestown ist fast
   quadratisch (2,4:1), GAH ein langer Streifen (4,5:1); auf gleiche
   **Breite** gezogen war Jamestown 72px hoch und beherrschte die Leiste. */
.gah-partner__slot--gefuellt img {
	mix-blend-mode: multiply;
	max-height: 40px;
	max-width: 100%;
	width: auto;
	height: auto;
}

/* 5.4  Textsektion ------------------------------------------------------- */

/* Im Entwurf bricht „Warum dieser Abend?“ nach „dieser“ um. */
.gah-textsektion__kopf .gah-titel {
	max-width: 12ch;
}

.gah-textsektion__text .gah-text + .gah-text {
	margin-top: 1.2em;
}

/* 5.5  Spalten (Programm) ------------------------------------------------ */

/* Der Programmkopf hat im Figma ein eigenes Raster: die Einleitung beginnt
   bei x 618 und ist 370px breit — anders als bei Einordnung und Tickets,
   wo sie bei x 740 sitzt. Handgesetzt, hier übernommen. */
.gah-spalten__kopf {
	margin-bottom: clamp(40px, 5.4vw, 82px);
	grid-template-columns: minmax(0, 478fr) minmax(0, 754fr);
	/* Auf Wunsch unten bündig statt oben ausgerichtet wie im Entwurf. */
	align-items: end;
}

.gah-spalten__intro {
	font-size: var(--gah-basis);
	line-height: 1.2;
	/* Handgesetzter Textrahmen im Figma: bricht dort auf drei Zeilen. */
	max-width: min(100%, 370px);
}

/* Drei gleiche Spalten mit 0,5px-Trennlinien. Im Figma sind sie
   handgesetzt unterschiedlich breit (448/441/360) — hier normalisiert. */
.gah-spalten__raster {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0;
	align-items: stretch;
}

.gah-spalten__spalte {
	padding-inline: clamp(20px, 2.4vw, 36px);
}

.gah-spalten__spalte:first-child {
	padding-inline-start: 0;
}

.gah-spalten__spalte:last-child {
	padding-inline-end: 0;
}

.gah-spalten__spalte + .gah-spalten__spalte {
	border-inline-start: 0.5px solid var(--gah-weiss);
}

.gah-spalten__titel {
	font-family: var(--gah-schrift-display);
	font-size: var(--gah-h3-display);
	font-weight: 400;
	line-height: 1.2;
	max-width: 15ch;
	margin-bottom: clamp(24px, 3.2vw, 48px);
}

/* Neu seit der Textüberarbeitung: eine Spalte kann Fließtext UND eine
   Aufzählung haben (Podiumsdiskussion). Ohne das kleben sie. */
.gah-spalten__spalte .gah-text + .gah-spalten__punkte {
	margin-top: clamp(14px, 1.32vw, 20px);
}

.gah-spalten__punkte li {
	position: relative;
	padding-left: 14px;
	font-size: var(--gah-basis);
	line-height: 1.2;
}

.gah-spalten__punkte li + li {
	margin-top: 6px;
}

.gah-spalten__punkte li::before {
	content: "\00B7";
	position: absolute;
	left: 2px;
}

.gah-spalten__fuss {
	display: flex;
	justify-content: flex-end;
	margin-top: clamp(48px, 6.7vw, 101px);
}

/* 5.6  Medien + Text (Referent, Kontakt) --------------------------------- */

.gah-medien__kopf {
	margin-bottom: clamp(32px, 4.2vw, 64px);
}

/* Im Entwurf bricht „Prof. Dr. Bernd Raffelhüschen“ nach „Bernd“ um,
   „Lassen Sie uns reden“ dagegen nicht — daher nur beim Hochformat. */
.gah-medien--hoch .gah-medien__kopf .gah-titel {
	max-width: 16ch;
}

.gah-medien__raster {
	display: grid;
	gap: var(--gah-spalten-abstand);
	align-items: start;
}

/* Portraet 483px bei x=140, Text beginnt bei x=740 (Figma). */
.gah-medien--hoch .gah-medien__raster {
	grid-template-columns: minmax(0, 483px) minmax(0, 1fr);
	gap: clamp(24px, 7.74vw, 117px);
}

/* Die Vita ist nach der Textüberarbeitung rund ein Drittel so lang wie im
   Entwurf. Oben ausgerichtet bliebe neben dem 630px hohen Porträt ein
   großes Loch — deshalb mittig zum Bild. Wird der Text wieder länger,
   bestimmt er die Zeilenhöhe und die Regel greift von selbst nicht mehr. */
.gah-medien--hoch .gah-medien__text {
	align-self: center;
}

/* Bild 512px, rechtsbuendig — beginnt damit bei x=860 (Figma). */
.gah-medien--quer .gah-medien__raster {
	grid-template-columns: minmax(0, 1fr) minmax(0, 512px);
}

/* Im Querformat steht die Ueberschrift IN der Textspalte, das Bild also
   daneben statt darunter. Der Kopf braucht dann seinen eigenen Abstand
   zum Text, weil der aeussere margin-bottom hier nicht mehr greift. */
.gah-medien--quer .gah-medien__text > .gah-medien__kopf {
	margin-bottom: clamp(24px, 3.2vw, 48px);
}

/* Die Textspalte ist kuerzer als das 438px hohe Bild — mittig dazu, sonst
   haengt das Bild optisch unter dem Text. */
.gah-medien--quer .gah-medien__text {
	align-self: center;
}

.gah-medien--bild-rechts .gah-medien__bild {
	order: 2;
}

.gah-medien__bild img,
.gah-medien__bild .gah-bild-platzhalter {
	width: 100%;
	border-radius: var(--gah-radius-bild);
	object-fit: cover;
}

.gah-medien--hoch .gah-medien__bild img {
	aspect-ratio: 482.8 / 630;
}

.gah-medien--quer .gah-medien__bild img,
.gah-medien--quer .gah-medien__bild .gah-bild-platzhalter {
	aspect-ratio: 512 / 438;
}

.gah-medien--hoch .gah-medien__bild .gah-bild-platzhalter {
	aspect-ratio: 482.8 / 630;
}

/* 5.7  Tickets ----------------------------------------------------------- */

.gah-tickets__kopf {
	margin-bottom: clamp(40px, 5.5vw, 83px);
}

/* Ebenfalls handgesetzt: die Einleitung ist schmaler als ihre Spalte. */
.gah-tickets__kopf .gah-text {
	max-width: min(100%, 360px);
}

/* Karte 720px bei x=140, Rail beginnt bei x=989 (Figma). */
.gah-tickets__raster {
	display: grid;
	grid-template-columns: minmax(0, 720fr) minmax(0, 387fr);
	gap: clamp(24px, 8.27vw, 125px);
	align-items: start;
}

/* Die Karte selbst traegt nur den seitlichen Innenabstand; oben und unten
   setzen ihn die drei Baender, weil der Entwurf sie ungleich bemisst
   (gemessen: Kopf 191, Menge 146, Fuss 142 px). */
.gah-tickets__karte {
	border: 1px solid var(--gah-weiss);
	border-radius: var(--gah-radius-panel);
	padding-inline: clamp(24px, 2.31vw, 35px);
}

.gah-tickets__karte-kopf {
	display: grid;
	grid-template-columns: minmax(0, 45%) minmax(0, 1fr);
	gap: 0;
	align-items: start;
	padding-top: clamp(28px, 3.64vw, 55px);
	padding-bottom: clamp(32px, 4.23vw, 64px);
}

.gah-tickets__karte-titel {
	display: flex;
	align-items: baseline;
	gap: 12px;
	font-family: var(--gah-schrift-display);
	font-size: var(--gah-h2-display);
	font-weight: 400;
	line-height: 1.2;
	white-space: nowrap;
}

.gah-tickets__karte-zeilen {
	font-size: var(--gah-basis);
	line-height: 1.4;
}

.gah-tickets__menge {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding-block: clamp(28px, 3.64vw, 55px) clamp(24px, 2.91vw, 44px);
	border-top: 0.5px solid var(--gah-weiss);
	border-bottom: 0.5px solid var(--gah-weiss);
}

.gah-tickets__menge-label {
	font-size: var(--gah-label);
	font-weight: 400;
	line-height: 1.4;
}

.gah-tickets__fuss > button {
	margin-top: clamp(0px, 0.46vw, 7px);
}

.gah-tickets__fuss {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: clamp(20px, 3vw, 40px);
	align-items: start;
	padding-block: clamp(18px, 1.65vw, 25px) clamp(20px, 1.85vw, 28px);
}

.gah-tickets__hinweis {
	font-size: var(--gah-basis);
	line-height: 1.4;
	/* Gemessen: die Textspalte im Entwurf ist höchstens 305px breit und
	   bricht dadurch auf vier Zeilen. Breiter wären es drei und die Karte
	   fiele um 23px zu niedrig aus. */
	max-width: min(100%, 305px);
}

.gah-tickets__fehler {
	grid-column: 1 / -1;
	margin-top: 8px;
	font-size: var(--gah-basis);
	line-height: 1.2;
	font-weight: 500;
}

/* Rechte Spalte: Kostenlos / Begleitung / Telefonisch */
.gah-tickets__rail {
	display: flex;
	flex-direction: column;
	gap: clamp(32px, 4.03vw, 61px);
	/* Die erste Ueberschrift steht auf Hoehe der Kartenoberkante. */
	padding-top: clamp(0px, 0.33vw, 5px);
}

/* Pfeil links, Inhalt rechts: dadurch steht der Fliesstext unter dem Wort
   der Ueberschrift und nicht unter dem Pfeil (Entwurf x 1033 statt 984). */
.gah-tickets__rail-eintrag {
	display: grid;
	/* Feste Pfeilspalte statt auto + gap: sonst haengt der Einzug an der
	   Glyphenbreite der jeweiligen Schrift. Im Entwurf sind es 49px bei
	   45px Schriftgroesse, also das 1,09-fache. */
	grid-template-columns: calc(clamp(20px, 1.8vw, 28px) * 1.15) minmax(0, 1fr);
	gap: 0;
	align-items: start;
}

/* Der Entwurf setzt hier 45px. Damit braucht „Telefonische Anmeldung“ in
   der 338px schmalen Spalte zwei Zeilen — auf Wunsch kleiner, sodass jeder
   Punkt einzeilig bleibt. Geprüft in tickets.js über den ganzen Bereich,
   in dem die Spalte neben der Karte steht. */
.gah-tickets__rail-titel {
	font-family: var(--gah-schrift-display);
	font-size: clamp(20px, 1.8vw, 28px);
	font-weight: 400;
	line-height: 1.2;
	margin-bottom: clamp(10px, 0.86vw, 13px);
}

/* Der Pfeil zieht mit, sonst überragt er die Überschrift. */
.gah-tickets__rail-eintrag > .gah-pfeil {
	font-size: clamp(20px, 1.8vw, 28px);
}

.gah-tickets__rail-text {
	font-size: var(--gah-basis);
	line-height: 1.2;
}

/* Flex-Kinder haben min-width:auto — ohne das steht ein langes Wort aus
   der Spalte heraus, statt umzubrechen. */
.gah-tickets__rail-titel > span,
.gah-tickets__karte-titel > span {
	min-width: 0;
	overflow-wrap: break-word;
}

/* Mengenfeld — Optik des Selects aus dem Design (113x48, Radius 8) */
/* Das Mengenfeld steht im Entwurf nicht buendig rechts, sondern 23px
   eingerueckt — anders als die Absenden-Pill darunter. Handgesetzt im
   Figma, hier uebernommen. */
.gah-tickets__menge .gah-menge {
	margin-right: clamp(0px, 1.26vw, 19px);
}

.gah-menge {
	position: relative;
	display: inline-flex;
	align-items: center;
	width: 113px;
	height: 48px;
	border: 1px solid var(--gah-weiss);
	border-radius: var(--gah-radius-select);
	background: transparent;
	box-shadow: var(--gah-schatten-select);
}

.gah-menge select,
.gah-menge input[type="number"] {
	appearance: none;
	-webkit-appearance: none;
	width: 100%;
	height: 100%;
	padding: 0 32px 0 16px;
	border: 0;
	border-radius: inherit;
	background: transparent;
	color: var(--gah-weiss);
	font-family: var(--gah-schrift);
	font-size: var(--gah-basis);
	line-height: 1;
	cursor: pointer;
}

.gah-menge select option {
	color: var(--gah-dunkel);
	background: var(--gah-weiss);
}

.gah-menge__chevron {
	position: absolute;
	right: 16px;
	top: 50%;
	width: 16px;
	height: 16px;
	transform: translateY(-50%);
	pointer-events: none;
	color: var(--gah-weiss);
}

/* 5.8  Anfahrt ----------------------------------------------------------- */

/* Karte 632px, rechtsbuendig — beginnt damit bei x=740 (Figma). */
.gah-anfahrt__raster {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 632px);
	gap: var(--gah-spalten-abstand);
	align-items: start;
}

/* Gemessen im Entwurf: 74px zwischen Überschrift und erstem Block,
   30px zwischen den Blöcken. Ohne die erste Regel klebte die Adresse
   direkt an „So finden Sie uns“. */
.gah-anfahrt__text > .gah-titel + .gah-anfahrt__bloecke {
	margin-top: clamp(32px, 4.9vw, 74px);
}

.gah-anfahrt__block + .gah-anfahrt__block {
	margin-top: clamp(20px, 1.98vw, 30px);
}

.gah-anfahrt__block-titel {
	font-size: var(--gah-basis);
	font-weight: 500;
	line-height: 1.2;
	margin-bottom: 4px;
}

/* Karte: Klick-zum-Laden, der Platzhalter ist der Zustand vor der Einwilligung */
.gah-karte {
	position: relative;
	display: grid;
	place-items: center;
	width: 100%;
	aspect-ratio: 632 / 438;
	border-radius: var(--gah-radius-bild);
	background: var(--gah-blau-22);
	overflow: hidden;
}

.gah-karte__consent {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	max-width: 42ch;
	padding: clamp(20px, 3vw, 40px);
	text-align: center;
}

.gah-karte__consent-titel {
	font-size: var(--gah-gross);
	font-weight: 500;
	line-height: 1.2;
}

.gah-karte__consent-text {
	font-size: var(--gah-basis);
	line-height: 1.3;
}

.gah-karte__knopf {
	border: 1px solid var(--gah-blau);
	background: var(--gah-blau);
	color: var(--gah-weiss);
	padding: 12px 24px;
}

.gah-page .gah-karte__knopf:hover,
.gah-page .gah-karte__knopf:focus-visible {
	background: var(--gah-dunkel);
	border-color: var(--gah-dunkel);
	color: var(--gah-weiss);
}

.gah-karte__rahmen {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.gah-karte__link {
	margin-top: 8px;
	font-size: var(--gah-basis);
}

/* 5.9  FAQ --------------------------------------------------------------- */

.gah-faq__kopf {
	margin-bottom: clamp(32px, 4.5vw, 68px);
}

.gah-faq__gruppe {
	font-size: var(--gah-gross);
	line-height: 1;
	margin-bottom: clamp(12px, 1.5vw, 22px);
}

.gah-faq__liste {
	max-width: 1060px;
}

.gah-faq__eintrag {
	border-bottom: 1px solid var(--gah-weiss);
}

.gah-faq__eintrag:first-child {
	border-top: 1px solid var(--gah-weiss);
}

.gah-faq__frage {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	width: 100%;
	padding-block: clamp(18px, 2.1vw, 32px);
	border: 0;
	background: transparent;
	color: inherit;
	font-family: inherit;
	font-size: var(--gah-gross);
	font-weight: 400;
	line-height: 1;
	text-align: left;
	cursor: pointer;
}

.gah-faq__pfeil {
	flex: 0 0 auto;
	font-size: var(--gah-gross);
	line-height: 1;
	transition: transform 0.2s ease-out;
}

.gah-faq__frage[aria-expanded="true"] .gah-faq__pfeil {
	transform: rotate(90deg);
}

.gah-faq__frage:hover .gah-faq__pfeil,
.gah-faq__frage:focus-visible .gah-faq__pfeil {
	transform: translateX(4px);
}

.gah-faq__frage[aria-expanded="true"]:hover .gah-faq__pfeil {
	transform: rotate(90deg) translateX(4px);
}

.gah-faq__antwort {
	padding-top: clamp(4px, 0.8vw, 12px);
	padding-bottom: clamp(18px, 2.1vw, 32px);
	font-size: var(--gah-basis);
	line-height: 1.3;
	max-width: 70ch;
}

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

.gah-footer__raster {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	gap: clamp(24px, 3.2vw, 48px);
	align-items: start;
}

.gah-footer__adresse {
	font-size: var(--gah-basis);
	line-height: 1.2;
}

.gah-footer__kontakt {
	margin-top: 1.2em;
}

.gah-footer__rechts {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: clamp(20px, 2.6vw, 40px);
	width: auto;
}

.gah-footer__social {
	display: flex;
	gap: 14px;
	width: auto;
}

.gah-footer__social a {
	display: grid;
	place-items: center;
	width: 37px;
	height: 37px;
}

.gah-footer__social svg {
	width: 100%;
	height: 100%;
	fill: currentColor;
}

.gah-footer__rechtlich {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: clamp(14px, 1.6vw, 24px);
	width: auto;
	font-size: var(--gah-basis);
}

.gah-footer__rechtlich a {
	text-decoration: none;
}

.gah-footer__rechtlich a:hover,
.gah-footer__rechtlich a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* 5.11  Anmeldung (Schritt 2) und Rechtstexte ---------------------------- */

.gah-anmeldung__kopf {
	margin-bottom: clamp(24px, 3.2vw, 48px);
}

/* Überschrift und Einleitung brauchen Luft — der globale Reset nimmt sie. */
.gah-anmeldung__kopf > * + * {
	margin-top: clamp(10px, 1.1vw, 16px);
}

.gah-anmeldung__raster {
	display: grid;
	grid-template-columns: minmax(0, 720fr) minmax(0, 383fr);
	gap: clamp(24px, 8.53vw, 129px);
	align-items: start;
}

.gah-anmeldung__karte {
	border: 1px solid var(--gah-weiss);
	border-radius: var(--gah-radius-panel);
	padding: clamp(24px, 2.3vw, 35px);
}

.gah-anmeldung__zusammenfassung {
	padding-bottom: clamp(20px, 2.7vw, 40px);
	margin-bottom: clamp(20px, 2.7vw, 40px);
	border-bottom: 0.5px solid var(--gah-weiss);
	font-size: var(--gah-basis);
	line-height: 1.2;
}

.gah-anmeldung__zurueck {
	display: inline-block;
	margin-top: clamp(20px, 2.1vw, 32px);
	font-size: var(--gah-basis);
}

/* 5.11a  Danke-Seite ---------------------------------------------------- */

/* Dieselbe Anmutung wie Schritt 2 — es ist derselbe Vorgang, eine Seite
   weiter. Die Kopfzeile und die Karte teilen deshalb die Regeln der
   Anmeldung; eigene Klassen, damit das eine sich aendern laesst, ohne das
   andere mitzunehmen. */
.gah-danke__kopf {
	margin-bottom: clamp(24px, 3.2vw, 48px);
}

.gah-danke__kopf > * + * {
	margin-top: clamp(10px, 1.1vw, 16px);
}

.gah-danke__karte {
	max-width: 75ch;
	border: 1px solid var(--gah-weiss);
	border-radius: var(--gah-radius-panel);
	padding: clamp(24px, 2.3vw, 35px);
}

/* Der globale Reset nimmt Listen jede Einrueckung und jedes Zeichen. Hier
   ist die Nummer die Aussage — der Ablauf hat eine Reihenfolge. */
.gah-danke__ablauf {
	margin-top: clamp(16px, 2.1vw, 24px);
	padding-left: 1.4em;
	list-style: decimal;
	font-size: var(--gah-basis);
	line-height: 1.45;
}

.gah-danke__ablauf > li + li {
	margin-top: clamp(10px, 1.1vw, 16px);
}

.gah-danke__ablauf::marker,
.gah-danke__ablauf > li::marker {
	color: var(--gah-weiss);
}

.gah-danke__zurueck {
	display: inline-block;
	margin-top: clamp(20px, 2.1vw, 32px);
	font-size: var(--gah-basis);
}

.gah-rechtstext {
	max-width: 75ch;
}

/* Auch hier gilt: der globale Reset nimmt jeden Abstand, also muss er
   gesetzt werden. Die Überschrift klebte sonst am Text darunter. */
.gah-rechtstext > * + * {
	margin-top: clamp(16px, 1.9vw, 24px);
}

.gah-rechtstext > .gah-titel + * {
	margin-top: clamp(20px, 2.6vw, 32px);
}

.gah-rechtstext :where(p, ul, ol) + :where(p, ul, ol, h2, h3) {
	margin-top: 1.2em;
}

.gah-rechtstext :where(h2, h3) {
	font-weight: 500;
	margin-top: 1.6em;
	margin-bottom: 0.4em;
}

.gah-rechtstext ul {
	list-style: disc;
	padding-left: 1.4em;
}

/* Der globale Reset nimmt auch den Listen ihren Abstand — die Punkte klebten
   mit 0px aneinander. Gefunden von pruefung/abstaende.js, nachdem der echte
   Impressumstext eingezogen war; vorher gab es auf diesen Seiten gar keine
   Liste zu messen. */
.gah-rechtstext li + li {
	margin-top: 0.5em;
}

/* LANGE WOERTER BRECHEN. Rechtstexte bringen Ungetueme mit, die kein
   Trennzeichen haben — „Finanzanlagenvermittlungsverordnung",
   „Umsatzsteueridentifikationsnummer", dazu Registernummern wie
   D-94UU-UQSSW-50. Bei 320px stand die Seite dadurch 47px zu breit.
   `hyphens` trennt sauber, wo die Sprache es erlaubt; `overflow-wrap` ist
   das Sicherheitsnetz fuer alles andere. */
.gah-rechtstext {
	overflow-wrap: break-word;
	hyphens: auto;
}

/* -------------------------------------------------------------------------
   6  Bold-Tickets-Formular
   Das Plugin rendert reines, klassenbasiertes Markup ohne Inline-Styles.
   Sein eigenes Stylesheet ist abgeschaltet (Filter in event.php), die Optik
   kommt vollstaendig von hier.
   ---------------------------------------------------------------------- */

.gah-formular .bold-tickets {
	color: inherit;
	font-family: var(--gah-schrift);
	font-size: var(--gah-basis);
	line-height: 1.2;
}

.gah-formular .bold-tickets__card,
.gah-formular .bold-tickets__table {
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
	background: transparent;
}

.gah-formular .bold-tickets__table th,
.gah-formular .bold-tickets__table td {
	padding: 0 0 clamp(16px, 2.1vw, 24px);
	border: 0;
	background: transparent;
	font-weight: 400;
	text-align: left;
	vertical-align: middle;
}

.gah-formular .bold-tickets__name {
	font-size: var(--gah-label);
	line-height: 1.4;
}

.gah-formular .bold-tickets__desc {
	display: block;
	margin-top: 4px;
	font-size: var(--gah-basis);
	line-height: 1.2;
	opacity: 0.85;
}

.gah-formular .bold-tickets__price {
	text-align: right;
	padding-right: 16px;
	font-variant-numeric: tabular-nums;
}

.gah-formular .bold-tickets__qty {
	width: 113px;
	text-align: right;
}

/* In Schritt 2 ersetzt dasselbe Auswahlfeld wie auf der Startseite das
   Zahlenfeld. Das Original bleibt verborgen im Baum, weil attendees.js
   daraus die Felder je Ticket erzeugt. */
.gah-formular .gah-menge__original {
	display: none;
}

/* Das Zahlenfeld traegt die Optik des Selects aus dem Design. */
.gah-formular .bold-tickets__qty input[type="number"] {
	appearance: textfield;
	-webkit-appearance: textfield;
	width: 113px;
	height: 48px;
	padding: 0 16px;
	border: 1px solid var(--gah-weiss);
	border-radius: var(--gah-radius-select);
	background: transparent;
	box-shadow: var(--gah-schatten-select);
	color: var(--gah-weiss);
	font-family: var(--gah-schrift);
	font-size: var(--gah-basis);
	line-height: 1;
}

/* Feste drei Spalten statt auto-fit: die Personenblocks haben drei Felder,
   der Kontaktblock zwei. Mit gleichem Raster fluchten Name und E-Mail mit
   Vorname und Nachname darueber, statt in andere Breiten zu fallen. */
.gah-formular .bold-tickets__fields {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(16px, 2.1vw, 24px);
	margin-block: clamp(20px, 2.7vw, 32px);
}

.gah-formular .bold-tickets__fields p {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0;
}

.gah-formular .bold-tickets__fields label {
	font-size: var(--gah-basis);
	line-height: 1.2;
}

.gah-formular :where(
	.bold-tickets input[type="text"],
	.bold-tickets input[type="email"],
	.bold-tickets input[type="tel"],
	.bold-tickets input[type="date"],
	.bold-tickets input[type="number"]
) {
	width: 100%;
	height: 48px;
	padding: 0 16px;
	border: 1px solid var(--gah-weiss);
	border-radius: var(--gah-radius-select);
	background: transparent;
	box-shadow: var(--gah-schatten-select);
	color: var(--gah-weiss);
	font-family: var(--gah-schrift);
	font-size: var(--gah-basis);
	line-height: 1;
}

.gah-formular .bold-tickets input::placeholder {
	color: rgba(255, 255, 255, 0.7);
}

/* Der Honigtopf bleibt fuer Menschen unsichtbar, fuer Bots erreichbar.
   Das Plugin setzt ihn per Inline-Style; das Element ersetzt das Attribut
   durch diese Klasse, damit im HTML kein style-Attribut uebrig bleibt. */
.gah-formular .bold-tickets__hp {
	position: absolute;
	left: -9999px;
}

.gah-formular .bold-tickets__consent {
	display: block;
	margin-block: clamp(16px, 2.1vw, 24px);
	font-size: var(--gah-basis);
	line-height: 1.35;
}

.gah-formular .bold-tickets__consent label {
	display: grid;
	grid-template-columns: 20px minmax(0, 1fr);
	gap: 12px;
	align-items: start;
}

.gah-formular .bold-tickets__consent input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	width: 20px;
	height: 20px;
	margin: 0;
	border: 1px solid var(--gah-weiss);
	border-radius: 4px;
	background: transparent;
	cursor: pointer;
}

.gah-formular .bold-tickets__consent input[type="checkbox"]:checked {
	background: var(--gah-weiss);
	box-shadow: inset 0 0 0 4px var(--gah-blau);
}

.gah-formular .bold-tickets__consent a {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.gah-formular .bold-tickets__hint {
	font-size: var(--gah-basis);
	line-height: 1.3;
	opacity: 0.9;
}

/* Im Plugin steht der Hinweis als drittes Kind IM Feldraster und wird
   dadurch zur dritten Spalte neben den Feldern. Er gehoert darunter. */
.gah-formular .bold-tickets__fields > .bold-tickets__hint {
	grid-column: 1 / -1;
	max-width: 60ch;
	margin-top: 4px;
}

/* Der Hinweis unter den Personenfeldern: dorthin gehen Bestaetigung und
   Tickets. Er ersetzt den frueheren Block „Ihre Kontaktdaten“. */
.gah-formular__hinweis {
	margin-top: clamp(4px, 0.8vw, 12px);
	max-width: 70ch;
	font-size: var(--gah-basis);
	line-height: 1.4;
}

.gah-formular__hinweis--warnung {
	margin-bottom: clamp(12px, 1.6vw, 20px);
	padding: 12px 16px;
	border: 1px solid var(--gah-weiss);
	border-radius: var(--gah-radius-select);
}

/* Absenden traegt die gefuellte Pill aus dem Design. */
.gah-formular .bold-tickets__submit,
.gah-formular .bold-tickets__submit.wp-element-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 44px;
	padding: 14px 24px;
	border: 1px solid var(--gah-weiss);
	border-radius: var(--gah-radius-pill);
	background: var(--gah-weiss);
	color: var(--gah-blau);
	font-family: var(--gah-schrift-display);
	font-size: var(--gah-basis);
	font-weight: 400;
	line-height: 1;
	text-decoration: none;
	cursor: pointer;
	transition: color 0.2s ease-out;
}

.gah-formular .bold-tickets__submit:hover,
.gah-formular .bold-tickets__submit:focus-visible {
	background: var(--gah-weiss);
	color: var(--gah-dunkel);
}

/* DIE RUECKMELDUNG STEHT AN ZWEI ORTEN, NICHT NUR IM FORMULAR.
   Nach erfolgreicher Anmeldung schickt Bold Tickets zurueck auf die
   Startseite — dort steht die Ticketsektion (.gah-tickets), nicht das
   Formular (.gah-formular). Waren diese Regeln nur auf .gah-formular
   gefasst, stand die Meldung dort als nackter Text ohne Rahmen. Dieselbe
   Sorte Fehler wie bei den Knoepfen und den Personenfeldern: eine Klasse
   wandert, die Regel bleibt stehen. */
:where(.gah-formular, .gah-tickets) .bold-tickets__notice {
	padding: 16px 20px;
	margin-bottom: clamp(16px, 2.1vw, 24px);
	border: 1px solid var(--gah-weiss);
	border-radius: var(--gah-radius-select);
	font-size: var(--gah-basis);
	line-height: 1.3;
}

:where(.gah-formular, .gah-tickets) .bold-tickets__notice--success {
	background: var(--gah-weiss-15);
}

:where(.gah-formular, .gah-tickets) .bold-tickets__notice--error {
	border-width: 2px;
	font-weight: 500;
}

.gah-formular .bold-tickets__remaining {
	margin-bottom: clamp(16px, 2.1vw, 24px);
	font-size: var(--gah-basis);
	line-height: 1.3;
}

.gah-formular .bold-tickets__soldout {
	font-size: var(--gah-basis);
	line-height: 1.2;
}

/* Zwischenueberschriften: das Formular hat zwei Abschnitte — die Personen,
   die kommen, und die Person, die anmeldet. */
.gah-formular__abschnitt {
	margin-top: clamp(24px, 3vw, 40px);
	margin-bottom: clamp(12px, 1.5vw, 18px);
	padding-top: clamp(20px, 2.7vw, 32px);
	border-top: 0.5px solid var(--gah-weiss);
	font-size: var(--gah-label);
	font-weight: 400;
	line-height: 1.4;
}

.gah-formular .bold-tickets__attendees {
	margin-bottom: clamp(16px, 2.1vw, 24px);
}

.gah-formular .bold-tickets__attendees.is-empty .bold-tickets__attendees-intro {
	display: none;
}

.gah-formular .bold-tickets__attendees-intro {
	margin-bottom: clamp(16px, 2.1vw, 24px);
	font-size: var(--gah-basis);
	line-height: 1.3;
}

/* Eine Karte je Ticket, damit sichtbar ist, wo die eine Person aufhoert
   und die naechste anfaengt. */
.gah-formular .bold-tickets__attendee {
	margin: 0 0 clamp(16px, 2.1vw, 24px);
	padding: clamp(16px, 2.1vw, 24px);
	border: 1px solid var(--gah-weiss);
	border-radius: var(--gah-radius-select);
}

.gah-formular .bold-tickets__attendee:last-child {
	margin-bottom: 0;
}

.gah-formular .bold-tickets__attendee legend {
	padding: 0 10px;
	font-size: var(--gah-basis);
	line-height: 1.2;
}

/* SEIT BOLD TICKETS 1.7.0 RENDERT DAS PLUGIN DIE PERSONENFELDER SELBST —
   serverseitig, als nackte <p> unmittelbar im <fieldset>. Vorher entstanden
   sie im Browser aus einer Vorlage und lagen in einem <div class="…__fields">.
   Die frueheren Regeln zielten auf dieses <div> und liefen nach dem Update ins
   Leere: die Felder standen untereinander statt im Raster, und das Telefonfeld
   war ueberhaupt nicht gestaltet, weil input[type="tel"] in der Typenliste
   fehlte. Das Raster sitzt deshalb jetzt am <fieldset> selbst.
   Geprueft in pruefung/verwaltung.js und pruefung/ticketablauf.js. */
.gah-formular .bold-tickets__attendee {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(16px, 2.1vw, 24px);
}

.gah-formular .bold-tickets__attendee legend {
	grid-column: 1 / -1;
}

.gah-formular .bold-tickets__attendee > p {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0;
}

.gah-formular .bold-tickets__attendee > p > label {
	font-size: var(--gah-basis);
	line-height: 1.2;
}

/* Die Anschrift der anmeldenden Person steht in deren Kasten (siehe
   includes/kontakt.php). Strasse braucht die volle Breite, PLZ und Ort teilen
   sich die Zeile darunter — sonst steht die Hausnummer im Zeilenumbruch. */
.gah-formular .gah-kontakt__feld--strasse {
	grid-column: 1 / -1;
}

/* Ein zurueckgewiesenes Feld ist sichtbar, nicht nur vorgelesen. Keine eigene
   Warnfarbe: die Palette hat keine, und eine erfundene waere auf dem blauen
   Panel nicht geprueft. Dieselbe Farbe, doppelte Staerke — wie beim
   Warnhinweis darueber. */
.gah-formular .bold-tickets input[aria-invalid="true"] {
	border-width: 2px;
}

/* -------------------------------------------------------------------------
   7  Bewegung, Fokus, Druck
   ---------------------------------------------------------------------- */

/* Fokus ist im Handoff nicht spezifiziert und Pflicht: 2px, sichtbar,
   weiss auf blauen Panels, blau auf weissem Grund. */
/* Ein Sprungziel ist nur fuer den Moment fokussierbar (`tabindex="-1"`) und
   per Tab nie erreichbar — ein Ring darum hat keinen Adressaten. Gesetzt wird
   der Fokus von gah.js nach einem Klick auf einen Anker; dort steht auch,
   warum er nicht mehr im Mengenfeld landet. */
.gah-page .gah-sprungziel:focus,
.gah-page .gah-sprungziel:focus-visible {
	outline: none;
}

.gah-page :where(a, button, input, select, textarea, summary):focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 3px;
	border-radius: 2px;
}

.gah-sec--panel :where(a, button, input, select, textarea):focus-visible {
	outline-color: var(--gah-weiss);
}

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

/* -------------------------------------------------------------------------
   8  Responsive
   Media Queries nur dort, wo sich das VERHALTEN aendert (§9.5).
   ---------------------------------------------------------------------- */

/* Ticketkarte und Merkmalsspalte stapeln frueher als der Rest: darunter
   bleibt der Rail zu wenig Platz, um die Überschriften einzeilig zu halten. */
@media (max-width: 1200px) {
	.gah-tickets__raster,
	.gah-anmeldung__raster {
		grid-template-columns: minmax(0, 1fr);
	}

	.gah-tickets__rail {
		padding-top: 0;
	}
}

/* Ab hier stapelt der Hero: Text ueber Bild statt Text auf Bild.
   Genau zwei Zustaende, keine Zwischenstufen (§9.6). */
@media (max-width: 900px) {
	.gah-hero {
		min-height: 0;
	}

	/* Das Motiv rutscht UNTER den Text (Handoff: „portrait moves behind or
	   below the text“). Ueber der Ueberschrift stuende sonst das schwerste
	   Bild der Seite vor dem wichtigsten Satz. */
	.gah-hero__bild {
		order: 1;
		position: static;
		width: 100%;
		margin-top: clamp(24px, 5vw, 40px);
		aspect-ratio: 915 / 790;
	}

	.gah-hero__inhalt {
		order: 0;
		max-width: 100%;
		padding-top: clamp(96px, 18vw, 140px);
	}

	.gah-hero__fuss {
		order: 2;
		flex-direction: column;
		align-items: stretch;
		margin-top: clamp(24px, 5vw, 40px);
	}

	.gah-countdown {
		width: 100%;
	}

	.gah-countdown__karte {
		flex: 1 1 0;
		width: auto;
	}

	/* Programmspalten: drei -> eine, Trennlinien werden waagerecht */
	.gah-spalten__raster {
		grid-template-columns: minmax(0, 1fr);
	}

	.gah-spalten__spalte {
		padding-inline: 0;
	}

	.gah-spalten__spalte + .gah-spalten__spalte {
		border-inline-start: 0;
		border-top: 0.5px solid var(--gah-weiss);
		margin-top: clamp(32px, 5vw, 48px);
		padding-top: clamp(32px, 5vw, 48px);
	}

	.gah-spalten__fuss {
		justify-content: flex-start;
	}

	/* Ticketkarte volle Breite, Rail darunter.
	   Die Medien-Raster brauchen ihren Modifikator mit: sonst gewinnt
	   .gah-medien--hoch .gah-medien__raster (0,2,0) und die feste
	   483px-Spalte bleibt auch mobil stehen (gemessen, §12.2). */
	.gah-tickets__raster,
	.gah-anmeldung__raster,
	.gah-medien__raster,
	.gah-medien--hoch .gah-medien__raster,
	.gah-medien--quer .gah-medien__raster,
	.gah-anfahrt__raster,
	.gah-zweispaltig {
		grid-template-columns: minmax(0, 1fr);
	}

	.gah-medien--bild-rechts .gah-medien__bild {
		order: 0;
	}

	/* Gestapelt braucht der Kopf wieder einen Zeilenabstand — waagerecht
	   ist er 0, weil die Spaltenbreite die Position bestimmt. */
	.gah-tickets__karte-kopf {
		grid-template-columns: minmax(0, 1fr);
		gap: clamp(12px, 2vw, 18px);
	}

	.gah-tickets__karte-titel {
		white-space: normal;
	}

	/* Label und Mengenfeld stapeln */
	.gah-tickets__menge {
		flex-direction: column;
		align-items: flex-start;
	}

	.gah-tickets__fuss {
		grid-template-columns: minmax(0, 1fr);
		align-items: start;
	}

	.gah-footer__raster {
		grid-template-columns: minmax(0, 1fr);
	}

	.gah-footer__rechts {
		align-items: flex-start;
	}

	.gah-footer__rechtlich {
		justify-content: flex-start;
	}

	/* Der 32px-Versatz von Hero und Kontakt ergibt schmal keinen Sinn mehr. */
	.gah-sec--versatz .gah-inner {
		padding-left: 0;
	}
}

/* Stufe 1: der 32px-Versatz der Kopfzeile entfaellt, die Navigation rueckt
   zusammen. Ab hier wird es sonst eng. */
@media (max-width: 900px) {
	.gah-header__inner {
		padding-inline: var(--gah-gutter);
		gap: 16px;
	}
}

/* Stufe 2: Navigation weg. Der Zugang zur Anmeldung bleibt über die
   CTA-Pill jederzeit erhalten. */
@media (max-width: 820px) {
	.gah-header__nav {
		display: none;
	}
}

/* Stufe 3: Logo kleiner, Pill kompakter. */
@media (max-width: 720px) {
	/* Drei Spalten sind hier zu eng: „Straße & Hausnummer“ und „Nachname“
	   liefen bei 390px sichtbar aus ihrer Spalte heraus — gefunden von
	   pruefung/abstaende.js, nachdem es Schritt 2 ueberhaupt wieder zu sehen
	   bekam. */
	.gah-formular .bold-tickets__attendee {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gah-header__inner {
		gap: 12px;
	}

	.gah-header .gah-logo__svg {
		width: clamp(116px, 30vw, 200px);
	}

	.gah-page .gah-header .gah-pill--voll {
		padding: 14px 18px;
	}

	.gah-partner {
		justify-content: flex-start;
	}

	.gah-partner__liste {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		width: 100%;
	}

	.gah-partner__slot {
		width: 100%;
	}
}

@media (max-width: 480px) {
	.gah-pill--kontur {
		min-width: 0;
		width: 100%;
	}

	.gah-countdown {
		flex-wrap: wrap;
	}

	.gah-formular .bold-tickets__fields,
	.gah-formular .bold-tickets__attendee {
		grid-template-columns: minmax(0, 1fr);
	}

	.gah-formular .bold-tickets__table,
	.gah-formular .bold-tickets__table tbody,
	.gah-formular .bold-tickets__table tr,
	.gah-formular .bold-tickets__table th,
	.gah-formular .bold-tickets__table td {
		display: block;
		width: 100%;
	}

	.gah-formular .bold-tickets__price,
	.gah-formular .bold-tickets__qty {
		text-align: left;
		padding-right: 0;
	}
}

/* Stufe 4: unter 380px faellt auch das Pfeilzeichen der Kopf-Pill weg —
   es ist dekorativ (aria-hidden) und kostet 18px, die dort fehlen. */
@media (max-width: 380px) {
	.gah-header .gah-logo__svg {
		width: 104px;
	}

	.gah-header .gah-pill--voll .gah-pfeil {
		display: none;
	}

	.gah-page .gah-header .gah-pill--voll {
		padding: 14px 14px;
	}
}

/* -------------------------------------------------------------------------
   9  Ticketverwaltung — jetzt in Bold Tickets

   Die Verwaltungsseite gehoert nicht mehr hierher: Markup, Optik und
   Verhalten liefert das Plugin (`assets/css/ticket-admin.css`). Was hier
   bleibt, ist die Bruecke — die Tokens des Plugins auf unsere Palette
   gesetzt. Zwoelf Zeilen statt siebenhundert.

   Wer die Verwaltung anders faerben will, aendert sie hier und nichts im
   Plugin.
   ---------------------------------------------------------------------- */

.bold-ta {
	--bold-ta-accent: var(--gah-blau);
	--bold-ta-accent-rgb: var(--gah-blau-rgb);
	--bold-ta-accent-dark: var(--gah-dunkel);
	--bold-ta-bg: var(--gah-weiss);
	--bold-ta-surface: var(--gah-partner-grund);
	--bold-ta-font: var(--gah-schrift);
	--bold-ta-size: var(--gah-basis);
	--bold-ta-size-sm: var(--gah-klein);
	--bold-ta-size-label: var(--gah-label);
	--bold-ta-size-h3: var(--gah-h3-display);
	--bold-ta-radius: var(--gah-radius-select);
	--bold-ta-radius-lg: var(--gah-radius-panel);
	--bold-ta-radius-pill: var(--gah-radius-pill);
	--bold-ta-shadow: var(--gah-schatten-select);
}

/* -------------------------------------------------------------------------
   9  Ticketverwaltung (Frontend, nur fuer Berechtigte)

   Eigener Abschnitt, weil die Seite nicht zum Entwurf gehoert: eine
   Arbeitsflaeche auf weissem Grund, bewusst schlicht. Farbe und Schrift
   kommen aus denselben Tokens, damit sie zur Seite gehoert — aber ohne
   blaues Panel, ohne Navigation und ohne Fusszeile.
   ---------------------------------------------------------------------- */

.gah-page--hell {
	/* Ruhige Flaeche fuer Kacheln und Formularfelder. */
	--gah-vw-flaeche: var(--gah-partner-grund);
	/* Linien duerfen nicht so laut sein wie Text. */
	--gah-vw-linie: rgba(var(--gah-blau-rgb), 0.22);
}

/* Die Kopfzeile liegt hier auf Weiss: blaues Logo, sonst nichts. Navigation
   und „Platz sichern“ gehoeren nicht auf eine Verwaltungsseite. */
.gah-page--hell .gah-header {
	color: var(--gah-blau);
	padding-top: clamp(20px, 2.6vw, 40px);
}

.gah-page--hell .gah-header__rechts,
.gah-page--hell .gah-header__nav {
	display: none;
}

/* Breiter als die Landingpage: hier stehen siebenspaltige Tabellen, keine
   Lesetexte. Die 1232px des Entwurfs sind dafuer zu eng. */
.gah-sec--verwaltung {
	background: var(--gah-weiss);
	color: var(--gah-blau);
	padding-block: clamp(96px, 12vw, 180px) clamp(64px, 8vw, 120px);
	padding-inline: clamp(24px, 4vw, 64px);
}

.gah-sec--verwaltung .gah-inner {
	max-width: 1720px;
}

/* Die Kopfzeile liegt darueber und muss mitziehen. */
.gah-page--hell .gah-header__inner {
	max-width: calc(1720px + 2 * clamp(24px, 4vw, 64px));
	margin-inline: auto;
	padding-inline: clamp(24px, 4vw, 64px);
}

/* Pills auf hellem Grund umdrehen: gefuellt wird blau, Umriss bleibt blau.
   Die Root-Klasse steht davor, weil .gah-page a die Textfarbe sonst
   durchreicht (§4.6). */
.gah-page--hell .gah-pill--voll {
	background: var(--gah-blau);
	border-color: var(--gah-blau);
	color: var(--gah-weiss);
}

.gah-page--hell .gah-pill--voll:hover,
.gah-page--hell .gah-pill--voll:focus-visible {
	background: var(--gah-dunkel);
	border-color: var(--gah-dunkel);
	color: var(--gah-weiss);
}

.gah-page--hell .gah-pill--kontur-klein {
	border-color: var(--gah-blau);
	color: var(--gah-blau);
}

.gah-page--hell .gah-pill--kontur-klein:hover,
.gah-page--hell .gah-pill--kontur-klein:focus-visible {
	background: var(--gah-blau);
	color: var(--gah-weiss);
}

/* Ein Knopf, der nach der Rueckfrage scharf ist, sieht auch so aus. */
.gah-page--hell .gah-pill.is-scharf {
	background: var(--gah-blau);
	border-color: var(--gah-blau);
	color: var(--gah-weiss);
	font-weight: 500;
}

/*
 * „Nur noch x Plätze frei“ in der Ticketkarte.
 *
 * Das Markup kommt von Bold Tickets (`.bold-seats-left`), die Optik von
 * hier — auf blauem Grund braucht es andere Farben als im Plugin-Standard.
 */
.gah-tickets__restplaetze .bold-seats-left {
	margin: 0;
	color: var(--gah-weiss);
	font-family: var(--gah-schrift);
	font-size: var(--gah-basis);
	font-weight: 500;
	line-height: 1.4;
}

.gah-tickets__restplaetze {
	padding-top: clamp(16px, 1.65vw, 25px);
}

/* Warteliste --------------------------------------------------------------
 *
 * Die Warteliste tritt an die Stelle der Ticketkarte, wenn die Plaetze weg
 * sind. Sie erbt deshalb deren Huelle (.gah-tickets__karte) und braucht hier
 * nur, was zusaetzlich vorkommt: Eingabefelder auf dunklem Grund, die
 * Einwilligung und der Honigtopf.
 */

.gah-tickets__karte--warteliste,
.gah-tickets__karte--aus {
	display: flex;
	flex-direction: column;
}

/*
 * Der Kartenkopf ist fuer „Tickets“ gebaut: zwei Spalten, Titel links,
 * und `white-space: nowrap`, damit das eine Wort nicht umbricht. „Auf die
 * Warteliste“ und „Ausverkauft“ sind laenger — bei nowrap malt der Browser
 * die Schrift ueber den Kasten hinaus und quer in den Text daneben. Der
 * Kasten selbst laeuft dabei NICHT ueber, deshalb hat es weder die
 * Abstands- noch die Ueberbreitenpruefung gesehen; gefunden hat es der
 * Blick auf das Bild. Die Messung dafuer steht jetzt in lib-abstaende.js
 * (`textUeberDenRand`).
 *
 * Hier also eine Spalte und normaler Umbruch: die Ueberschrift bekommt die
 * ganze Breite, der Text steht darunter.
 */
.gah-tickets__karte--warteliste .gah-tickets__karte-kopf,
.gah-tickets__karte--aus .gah-tickets__karte-kopf {
	display: block;
	padding-bottom: clamp(24px, 3.1vw, 40px);
}

.gah-tickets__karte--warteliste .gah-tickets__karte-titel,
.gah-tickets__karte--aus .gah-tickets__karte-titel {
	white-space: normal;
}

.gah-tickets__karte--warteliste .gah-tickets__karte-zeilen,
.gah-tickets__karte--aus .gah-tickets__karte-zeilen {
	max-width: 46ch;
	margin-top: clamp(12px, 1.4vw, 18px);
}

/* Ohne Formular soll die Hinweiskarte nicht auf volle Hoehe gezogen werden. */
.gah-tickets__karte--aus {
	align-self: start;
}

/*
 * Eingabefelder des Wartelistenformulars.
 *
 * Die standen frueher unter `.gah-login__feld` und wurden mit der
 * Ticketverwaltung geteilt. Seit die Verwaltung in Bold Tickets steckt,
 * gehoert diese Regel hierher — das Formular auf der Startseite ist
 * Landingpage, keine Arbeitsflaeche. Beim Umzug ist sie zunaechst
 * verlorengegangen; gefunden hat es die Abstandspruefung („0px zwischen
 * zwei Feldern“).
 */
.gah-wl__felder .gah-login__feld {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin-bottom: clamp(16px, 1.9vw, 22px);
}

.gah-wl__felder .gah-login__feld label {
	font-size: var(--gah-basis);
	line-height: 1.2;
}

.gah-wl__felder .gah-login__feld input {
	width: 100%;
	height: 48px;
	padding: 0 16px;
	border: 1px solid var(--gah-blau);
	border-radius: var(--gah-radius-select);
	background: var(--gah-weiss);
	box-shadow: var(--gah-schatten-select);
	color: var(--gah-blau);
	font-family: var(--gah-schrift);
	font-size: var(--gah-basis);
	line-height: 1;
}

.gah-wl__felder {
	padding-bottom: clamp(18px, 2.1vw, 26px);
}

/*
 * Die Felder stehen auf blauem Grund, nicht auf weissem wie in der
 * Verwaltung. Nur die Farben werden getauscht, das Mass bleibt.
 */
.gah-tickets__karte--warteliste .gah-login__feld label {
	color: var(--gah-weiss);
}

.gah-tickets__karte--warteliste .gah-login__feld input {
	border-color: var(--gah-weiss);
	background: transparent;
	box-shadow: none;
	color: var(--gah-weiss);
}

.gah-tickets__karte--warteliste .gah-login__feld input::placeholder {
	color: rgba(255, 255, 255, 0.6);
}

.gah-tickets__karte--warteliste .gah-menge select {
	color: var(--gah-weiss);
}

.gah-wl__einwilligung {
	padding-bottom: clamp(18px, 2.1vw, 26px);
}

.gah-wl__einwilligung label {
	display: grid;
	grid-template-columns: 18px minmax(0, 1fr);
	gap: 10px;
	align-items: start;
	font-size: 14px;
	line-height: 1.4;
	cursor: pointer;
}

.gah-wl__einwilligung input {
	width: 18px;
	height: 18px;
	margin: 0;
	accent-color: var(--gah-weiss);
}

.gah-wl__hinweis {
	margin-bottom: clamp(16px, 1.9vw, 22px);
	padding: 12px 16px;
	border-radius: var(--gah-radius-select);
	font-size: var(--gah-basis);
	line-height: 1.4;
}

.gah-wl__hinweis--erfolg {
	border: 1px solid var(--gah-weiss);
}

.gah-wl__hinweis--fehler {
	border: 1px solid var(--gah-weiss);
	background: rgba(255, 255, 255, 0.15);
}

/*
 * Honigtopf: aus dem Fluss genommen statt display:none. Manche Bots
 * ueberspringen Felder, die gar nicht gerendert werden — dieses hier wird
 * gerendert, ist aber weder zu sehen noch zu erreichen (tabindex="-1",
 * aria-hidden am Absatz).
 */
.gah-wl__falle {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* Der eigene Exportknopf in der Ticketverwaltung (includes/export.php).
   Die Knoepfe des Plugins halten ihren Text in einer Zeile; bei 320px ragte
   unserer damit 24px aus der Seite. Er darf umbrechen — die Beschriftung ist
   laenger als die der beiden anderen und soll es bleiben duerfen, auch wenn
   sie einmal uebersetzt wird. */
.gah-export {
	white-space: normal;
	text-align: center;
}
