/*
-----------------------------------------------
	www.andre250.de
by  www.lichtsignale.de
----------------------------------------------- */


/*		V A R I A B L E N
----------------------------------------------- */

:root {
	--text: #333;
	--dunkel: #4e277f;
	--mittel: #9b86b9;
	--hell: #cfc8df;
	--hintergrund: #f9f3eb;
	--weiss: #fff;
	--grau: #999;
	--fokusring: var(--dunkel);
	--color-text: var(--text);
	--schrift-fliess: "Andre Sectra", "Georgia", "Times New Roman", serif;
	--schrift-fein: "Andre Sectra Fine", "Georgia", "Times New Roman", serif;
	--schrift-display: "Andre Display", "Helvetica Neue", "Helvetica", sans-serif;
	--schrift-grund: 1.125rem;
	--schrift-klein: 85%;
	--abstand: 1.5rem;
	--polster-pille: calc(var(--abstand) * 0.2) calc(var(--abstand) * 0.45) calc(var(--abstand) * 0.15) calc(var(--abstand) * 0.45);
	--radius-pille: 50px;
	--breite-inhalt: 1144px;
	--breite-intro: 895px;
	--breite-logo: 900px;
	--breite-logo-klein: 250px;
	--breite-kasten: 400px;
	--breite-fusslogo: 100px;
	--kachel: 269px;
}


/*		R E S E T
----------------------------------------------- */

html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, nav, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	vertical-align: baseline;
	background: transparent;
}

html {
	height: 100%;
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	text-rendering: optimizeLegibility;
}

blockquote, q {
	quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
	content: "";
	content: none;
}

a {
	margin: 0;
	padding: 0;
	font-size: 100%;
	vertical-align: baseline;
	background: transparent;
}

table {
	width: 100%;
	border-collapse: collapse;
	border-spacing: 0;
}

input, select {
	vertical-align: middle;
}


/*		W E B F O N T S
----------------------------------------------- */

@font-face {
	font-family: "Andre Display";
	src: url("fonts/zuschnitt/andre-display.woff2");
	font-weight: normal;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: "Andre Sectra";
	src: url("fonts/zuschnitt/GT-Sectra-Regular.woff2") format("woff2"),
		url("fonts/zuschnitt/GT-Sectra-Regular.woff") format("woff");
	font-weight: normal;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: "Andre Sectra";
	src: url("fonts/zuschnitt/GT-Sectra-Regular-Italic.woff2") format("woff2"),
		url("fonts/zuschnitt/GT-Sectra-Regular-Italic.woff") format("woff");
	font-weight: normal;
	font-style: italic;
	font-display: swap;
}

@font-face {
	font-family: "Andre Sectra Fine";
	src: url("fonts/zuschnitt/GT-Sectra-Fine-Regular.woff2") format("woff2"),
		url("fonts/zuschnitt/GT-Sectra-Fine-Regular.woff") format("woff");
	font-weight: normal;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: "Andre Sectra Fine";
	src: url("fonts/zuschnitt/GT-Sectra-Fine-Regular-Italic.woff2") format("woff2"),
		url("fonts/zuschnitt/GT-Sectra-Fine-Regular-Italic.woff") format("woff");
	font-weight: normal;
	font-style: italic;
	font-display: swap;
}


/*		B A S I C S
----------------------------------------------- */

body {
	color: var(--dunkel);
	background: var(--weiss);
	font-family: var(--schrift-fliess);
	font-size: var(--schrift-grund);
	line-height: var(--abstand);
	letter-spacing: 0.015em;
	text-align: left;
	text-rendering: optimizeLegibility;
}

a:link, a:visited {
	color: var(--text);
	text-decoration: none;
}

:focus-visible {
	outline: 2px solid var(--fokusring);
	outline-offset: 2px;
}

:focus:not(:focus-visible) {
	outline: none;
}

header :focus-visible {
	outline-color: var(--weiss);
}

img, video {
	max-width: 100%;
	height: auto;
	object-fit: contain;
	object-position: left top;
}

h1, h2, h3, h4, h5, h6, strong, b, th {
	font-weight: normal;
}

.interlude h2, .heroimg h2, h4, h5, .txtlink figure {
	font-family: var(--schrift-fein);
	line-height: 1.1;
	word-spacing: -2px;
}

a[data-fancybox] {
	cursor: zoom-in;
}

.wrapper {
	margin-left: var(--abstand);
	margin-right: var(--abstand);
}

.button:link, .button:visited, .interlude .button {
	/* inline-block, damit die Pille bei schmalen Fenstern nicht in zwei
	   Stuecke zerbricht (gemessen: unter ~430 px zwei Zeilenkaesten). */
	display: inline-block;
	text-align: center;
	color: var(--weiss);
	background: var(--dunkel);
	font-size: var(--schrift-klein);
	font-family: var(--schrift-display);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	padding: var(--polster-pille);
	border-radius: var(--radius-pille);
}

.button:hover, .button:active, .interlude:hover .button {
	background: var(--mittel);
}

.center {
	text-align: center;
}

/*		V E R Z E I C H N I S
----------------------------------------------- */

.verzeichnis {
	width: 100%;
	border-collapse: collapse;
	margin-bottom: calc(var(--abstand) * 3);
}

.verzeichnis caption {
	text-align: left;
	color: var(--grau);
	font-size: var(--schrift-klein);
	padding-bottom: calc(var(--abstand) * 0.5);
}

.verzeichnis th {
	text-align: left;
	font-family: var(--schrift-display);
	font-size: var(--schrift-klein);
	font-weight: normal;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--dunkel);
	padding: 0 calc(var(--abstand) * 0.6) calc(var(--abstand) * 0.3) 0;
	border-bottom: 1px solid var(--mittel);
}

.verzeichnis td {
	/* unten 2 px mehr als oben: die Versalien ragen nach oben, die x-Hoehe
	   sitzt sonst optisch zu tief. Dazu oben und unten je 5 px mehr Luft. */
	padding: calc(var(--abstand) * 0.35 + 5px) calc(var(--abstand) * 0.6) calc(var(--abstand) * 0.35 + 7px) 0;
	vertical-align: top;
	border-bottom: 1px solid var(--hintergrund);
}

/* Streifen kommen aus dem Skript, nicht aus nth-child: beim Filtern bleiben
   ausgeblendete Zeilen sonst mitgezaehlt und der Wechsel bricht. */
.verzeichnis tbody tr.streifen td {
	background: var(--hintergrund);
}

.verzeichnis .jahr {
	white-space: nowrap;
	color: var(--dunkel);
	text-align: right;
}

/* Das Bild fuellt die ganze Zeilenhoehe. height:100% an einer Tabellenzelle
   loest nicht zuverlaessig auf -- deshalb die Zelle relativ setzen und das
   Bild absolut darin aufspannen. So waechst es mit, wenn der Titel umbricht. */
/* min-width ist hier nicht Zierde, sondern noetig: das Bild ist absolut
   gesetzt und traegt darum KEINE Eigenbreite bei. Die Tabelle nimmt width
   dann nur als Wunsch und quetscht die Spalte zusammen -- am Telefon
   gemessen 35 px statt der angegebenen 52. min-width ist verbindlich.
   Der Abstand zum Titel sitzt darum an der Titelspalte: so ist die Breite
   der Bildzelle genau die Bildbreite, ohne Rechnerei. */
.verzeichnis .bildspalte {
	width: 72px;
	min-width: 72px;
	padding: 0;
	position: relative;
}

.verzeichnis .bildspalte img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
}

.verzeichnis .titelspalte {
	width: auto;
	padding-left: calc(var(--abstand) * 0.6);
}

.verzeichnis .bereichspalte {
	width: 9em;
	white-space: nowrap;
}

.verzeichnis .jahr {
	text-align: right;
	width: 6em;
	padding-right: 0;
}

.verzeichnis th.jahr .sortknopf {
	text-align: right;
}

/* Suchfeld ueber der Tabelle */
.verzeichnissuche {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: calc(var(--abstand) * 0.5) calc(var(--abstand) * 0.7);
	margin-bottom: calc(var(--abstand) * 1.2);
}

.verzeichnissuche label {
	font-family: var(--schrift-display);
	font-size: var(--schrift-klein);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--dunkel);
	white-space: nowrap;
}

.verzeichnissuche input {
	font: inherit;
	/* Browser setzen an Formularfeldern letter-spacing und word-spacing
	   ausdruecklich auf normal -- das schlaegt die Vererbung vom Fliesstext.
	   Gemessen 22.09.2026: Body 0,315 px, Feld und Platzhalter 0. */
	letter-spacing: inherit;
	word-spacing: inherit;
	color: var(--text);
	padding: calc(var(--abstand) * 0.25) calc(var(--abstand) * 0.5);
	border: 1px solid var(--mittel);
	border-radius: var(--radius-pille);
	background: var(--weiss);
	flex: 1 1 16em;
	max-width: 24em;
}

/* Die Kontextzeile traegt jetzt Information (Anzahl und Zeitspanne) und ist
   dauerhaft sichtbar -- also --dunkel statt --grau: #999 auf Weiss sind nur
   2,85:1 und reichen fuer Kleintext nicht. */
.verzeichnis-zahl {
	margin: 0;
	font-size: var(--schrift-klein);
	color: var(--dunkel);
	white-space: nowrap;
}

/* Sortierknopf sieht aus wie die Kopfzeile, ist aber ein echter Schalter --
   damit er auch mit der Tastatur erreichbar ist. */
.verzeichnis .sortknopf {
	font: inherit;
	color: inherit;
	letter-spacing: inherit;
	text-transform: inherit;
	background: none;
	border: 0;
	padding: 0;
	cursor: pointer;
}

.verzeichnis .sortknopf::after {
	content: "\2195";          /* Doppelpfeil: hier laesst sich sortieren */
	margin-left: 0.4em;
	opacity: 0.45;
}

.verzeichnis th[aria-sort="ascending"] .sortknopf::after { content: "\2191"; opacity: 1; }
.verzeichnis th[aria-sort="descending"] .sortknopf::after { content: "\2193"; opacity: 1; }

.verzeichnis .klickbar tr {
	cursor: pointer;
}

.verzeichnis .klickbar tr:hover td {
	background: var(--hell);
}

.verzeichnis a:link, .verzeichnis a:visited {
	color: var(--dunkel);
	text-decoration: none;
}

/* Beim Zeigen und bei Tastaturfokus kommt die Unterstreichung zurueck --
   so bleibt der Link auch ohne Farbe erkennbar. */
.verzeichnis a:hover, .verzeichnis a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 0.15em;
	text-decoration-thickness: from-font;
}

/* Schmale Fenster: Bereich, Art und Urheber treten zurueck, damit
   Jahr und Titel lesbar bleiben statt in Einzelbuchstaben zu brechen. */
@media screen and (max-width: 599px) {
	.verzeichnis .bereichspalte {
		display: none;
	}
	.verzeichnis .bildspalte {
		width: 60px;
		min-width: 60px;
	}
	/* Lange Komposita duerfen trennen -- sonst haelt ein einziges Wort
	   ("Musikwissenschaftliche") die Titelspalte auf 194 px fest und
	   nimmt dem Vorschaubild den Platz.
	   Die dritte Zahl ist der Grund fuer den krummen Wert: "Notenfabrique
	   André" haengt an einem geschuetzten Leerzeichen und gilt dem Browser
	   als EIN Wort von 19 Zeichen -- er trennte "An-dré". Mit mindestens
	   fuenf Zeichen nach dem Trennstrich ist das ausgeschlossen. */
	.verzeichnis .titelspalte {
		-webkit-hyphens: auto;
		hyphens: auto;
		hyphenate-limit-chars: 6 3 5;
	}
	/* 6em waeren hier 108 px fuer vier Ziffern. width:1% heisst in einer
	   Tabelle: so schmal wie der Inhalt es zulaesst. */
	.verzeichnis .jahr {
		width: 1%;
	}
}

/* Nur fuer Vorleseprogramme. Kein display:none -- das wuerde auch die
   Sprachausgabe verschlucken. */
.nur-vorlesen {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* Zwei Schaltflaechen nebeneinander, wenn der Platz reicht -- sonst
   untereinander. Eigene Klasse, weil .center anderswo einzelne Knoepfe traegt. */
.knopfreihe {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: calc(var(--abstand) * 0.5);
}


/*		H E A D E R / F O O T E R
----------------------------------------------- */

header {
	padding-top: calc(var(--abstand) * 0.75);
	margin-bottom: calc(var(--abstand) * 1);
	background: var(--dunkel);
	background-image: url("lines-top.svg");
	background-repeat: no-repeat;
	background-size: 125%;
	background-position-y: center;
}

header li {
	list-style: none;
	display: inline-block;
	margin-bottom: calc(var(--abstand) * 0.5);
}

header nav a:link, header nav a:visited {
	color: var(--dunkel);
	background: var(--hell);
	font-size: var(--schrift-klein);
	font-family: var(--schrift-display);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	padding: var(--polster-pille);
	border-radius: var(--radius-pille);
	margin-right: calc(var(--abstand) * 0.1);
}

.active a:link, .active a:visited, header nav a:hover, header nav a:active {
	background: var(--weiss);
}

header h1 {
	position: relative;
	/* Der Schriftzug sitzt auf der Kante der violetten Flaeche und haengt
	   genau 2 px darueber. Mehr Ueberhang verschluckt Buchstaben, weil die
	   Wortmarke weiss ist und das SVG randlos auf die Glyphen zugeschnitten. */
	bottom: -2px;
	margin-top: calc(var(--abstand) * 2);
}

header h1 img {
	/* nimmt den Zeilenraum unter dem Bild weg - sonst haengt die Kante
	   je nach Schriftgroesse unterschiedlich weit ueber */
	display: block;
}

header#smol h1 {
	width: var(--breite-logo-klein);
	margin-left: auto;
	margin-right: auto;
}

footer {
	margin-top: calc(var(--abstand) * 4);
	padding-top: calc(var(--abstand) * 1);
	padding-bottom: calc(var(--abstand) * 1);
	background: var(--hintergrund);
	background-image: url("lines-top.svg");
	background-repeat: no-repeat;
	background-size: 125%;
	background-position-y: center;
}

footer .wrapper {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
}

footer .wrapper div {
	width: var(--breite-fusslogo);
}

footer ul {
	padding-bottom: calc(var(--abstand) * 0.25);
}

footer li {
	list-style: none;
	margin: calc(var(--abstand) * 0.5) 0;
}

footer a:link, footer a:visited {
	color: var(--dunkel);
}

footer a:hover, footer a:active {
	color: var(--mittel);
}


/*		G A L L E R Y
----------------------------------------------- */

#intro {
	margin-bottom: calc(var(--abstand) * 4);
}

main {
	padding-top: calc(var(--abstand) * 0.15);
}

.gallery {
	text-align: center;
	background-image: url("lines-body.svg");
	background-position: center top;
	background-repeat: repeat-y;
	background-size: 125%;
	padding-bottom: calc(var(--abstand) * 4);
	margin-bottom: calc(var(--abstand) * -4);
}

.nobg {
	background-image: none;
}

.gallery .wrap {
	display: grid;
	row-gap: calc(var(--abstand) * 2);
	margin-bottom: calc(var(--abstand) * 2);
	margin-left: calc(var(--abstand) * 2);
	margin-right: calc(var(--abstand) * 2);
}

.gallery figure {
	margin-bottom: calc(var(--abstand) * 0.75);
	display: flex;
	justify-content: center;
	align-items: center;
}

.gallery img {
	max-width: 60vw;
	max-height: 60vw;
}

.gallery a:link, .gallery a:visited {
	color: var(--dunkel);
	display: block;
}

.gallery a:hover, .gallery a:active {
	color: var(--mittel);
}

.gallery a.interlude:link, .gallery a.interlude:visited, .gallery a.interlude:hover, .gallery a.interlude:active {
	color: var(--text);
	margin-left: 0;
	margin-right: 0;
}

.gallery date, .gallery time {
	color: var(--mittel);
	display: block;
}

.interlude {
	background: var(--hintergrund);
	padding-top: calc(var(--abstand) * 2);
	padding-bottom: calc(var(--abstand) * 2.5);
	margin-bottom: calc(var(--abstand) * 3);
}

.interlude h2 {
	font-style: italic;
	font-size: 200%;
	margin-bottom: calc(var(--abstand) * 0.5);
}

.interlude p {
	margin-bottom: calc(var(--abstand) * 1.5);
}


/*		O B J E C T
----------------------------------------------- */

.heroimg {
	margin-bottom: calc(var(--abstand) * 3);
}

.heroimg h2 {
	font-size: 200%;
	margin-bottom: calc(var(--abstand) * 1.5);
	margin-top: calc(var(--abstand) * 1);
}

.heroimg h2 date, .heroimg h2 time {
	color: var(--mittel);
	display: block;
}

.heroimg p span {
	color: var(--hell);
}

.heroimg figure img {
	max-height: 65vh;
	object-position: center center;
}

.heroimg .box {
	max-width: var(--breite-kasten);
	margin-left: auto;
	margin-right: auto;
}


/*		V I D E O   O H N E   V O R A B K O N T A K T
----------------------------------------------- */

/* Der Player kommt erst nach dem Klick. Vorher steht hier das Vorschaubild,
   das einmal serverseitig von Vimeo geholt wurde und im eigenen Webspace
   liegt -- deshalb geht vor dem Klick keine Anfrage an Vimeo hinaus. */

.videobuehne {
	position: relative;
	width: 100%;
	background: var(--dunkel) center / cover no-repeat;
}

.videobuehne > iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	display: block;
}

.videobuehne > .videoflaeche {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	display: block;
	padding: 0;
	margin: 0;
	line-height: 0;
	cursor: pointer;
	appearance: none;
	background: none;
	border: 0;
	border-radius: 0;
}

.videobuehne > .videoflaeche:focus-visible {
	outline: 3px solid var(--weiss);
	outline-offset: -3px;
}

.videoknopf {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 4.5rem;
	height: 4.5rem;
	margin: -2.25rem 0 0 -2.25rem;
	border-radius: 50%;
	background: rgba(78, 39, 127, 0.8);
	transition: background 0.15s ease, transform 0.15s ease;
}

.videoknopf::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	margin: -0.75rem 0 0 -0.45rem;
	border-style: solid;
	border-width: 0.75rem 0 0.75rem 1.25rem;
	border-color: transparent transparent transparent var(--weiss);
}

.videoflaeche:hover .videoknopf,
.videoflaeche:focus-visible .videoknopf {
	background: var(--dunkel);
	transform: scale(1.08);
}

.videobuehne.videolaedt::after {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.45);
	z-index: 1;
}

.videoladen {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 2.75rem;
	height: 2.75rem;
	margin: -1.375rem 0 0 -1.375rem;
	border: 3px solid rgba(255, 255, 255, 0.3);
	border-top-color: var(--weiss);
	border-radius: 50%;
	z-index: 2;
	animation: videodreh 0.8s linear infinite;
}

@keyframes videodreh {
	to { transform: rotate(360deg); }
}

.videohinweis {
	margin: calc(var(--abstand) * 0.4) 0 0;
	font-size: var(--schrift-klein);
	line-height: 1.5;
	/* --grau liegt auf Weiss bei 2,85:1, gefordert sind 4,5:1 (gemessen
	   22.09.2026). Der Hinweis bleibt ueber die Schriftgroesse zurueckhaltend. */
	color: var(--text);
}

@media (prefers-reduced-motion: reduce) {
	.videoknopf { transition: none; }
	.videoladen { animation-duration: 2.4s; }
}

h3 {
	font-family: var(--schrift-display);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	text-align: center;
	margin-bottom: calc(var(--abstand) * 2);
}

h4 {
	font-style: italic;
	font-size: 200%;
	margin-bottom: calc(var(--abstand) * 0.5);
	color: var(--text);
}

h5 {
	font-size: 133%;
	margin-bottom: calc(var(--abstand) * 2);
	color: var(--text);
}

.txtlink figure {
	font-size: 133%;
	margin-bottom: calc(var(--abstand) * 0.5);
}

.gallery a.txtlink:link, .gallery a.txtlink:visited {
	color: var(--text);
}

.gallery a.txtlink:hover, .gallery a.txtlink:active {
	color: var(--grau);
}

.txtlink date, .txtlink time {
	color: var(--grau);
}

.textautor {
	display: grid;
	row-gap: calc(var(--abstand) * 2);
	margin-bottom: calc(var(--abstand) * 2);
}

#text {
	color: var(--text);
}

#text p {
	margin-bottom: var(--abstand);
}

.double {
	color: var(--dunkel);
	display: grid;
	row-gap: var(--abstand);
	margin-bottom: calc(var(--abstand) * 3);
	padding-top: calc(var(--abstand) * 2);
}

.text {
	margin-bottom: calc(var(--abstand) * 2);
}


/*		R E S P O N S I V E
----------------------------------------------- */

@media screen and (min-width: 500px) {

.gallery .wrap {
	/* minmax(0, 1fr) statt 1fr: 1fr hat eine unsichtbare Untergrenze von
	   min-content. Bei 200 % Textgroesse sprengen die laengsten Woerter der
	   Bildunterschriften sonst die Spalten (gemessen 22.09.2026: 493+509+509 px
	   in einem 1144-px-Kasten, Seite lief auf 1618 px). */
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin-left: calc(var(--abstand) * 1);
	margin-right: calc(var(--abstand) * 1);
}

.gallery figure {
	margin-bottom: calc(var(--abstand) * 0.75);
	width: calc(50vw - var(--abstand) * 3);
	height: calc(50vw - var(--abstand) * 3);
	margin-left: calc(var(--abstand) * 1);
	margin-right: calc(var(--abstand) * 1);
}

.gallery img {
	max-width: calc(50vw - var(--abstand) * 3);
	max-height: calc(50vw - var(--abstand) * 3);
}

.gallery span strong {
	padding-left: calc(var(--abstand) * 1);
	padding-right: calc(var(--abstand) * 1);
	font-weight: normal;
	display: block;
	/* damit ein langes Wort die Spalte nicht aufdrueckt */
	overflow-wrap: break-word;
	hyphens: auto;
}

.heroimg p {
	margin-left: 25%;
}

.interlude h2, .heroimg h2, h4 {
	font-size: 250%;
}

h5 {
	font-size: 150%;
}

}


@media screen and (min-width: 640px) {

.wrapper {
	margin-left: calc(var(--abstand) * 2);
	margin-right: calc(var(--abstand) * 2);
}

}


@media screen and (min-width: 700px) {

.interlude h2, .heroimg h2, h4 {
	font-size: 300%;
}

h5 {
	font-size: 175%;
}

header, .gallery, footer {
	background-size: 100%;
}

}


@media screen and (min-width: 800px) {

.gallery .wrap {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin-left: calc(var(--abstand) * 1);
	margin-right: calc(var(--abstand) * 1);
	row-gap: calc(var(--abstand) * 4);
	margin-bottom: calc(var(--abstand) * 4);
}

.gallery figure {
	width: calc(100vw / 3 - var(--abstand) * 2.67);
	height: calc(100vw / 3 - var(--abstand) * 2.67);
	margin-left: calc(var(--abstand) * 1);
	margin-right: calc(var(--abstand) * 1);
}

.gallery img {
	max-width: calc(100vw / 3 - var(--abstand) * 2.67);
	max-height: calc(100vw / 3 - var(--abstand) * 2.67);
}

.interlude {
	margin-bottom: calc(var(--abstand) * 4);
}

.heroimg p {
	margin-left: calc(100% / 3 + var(--abstand) - 8px);
}

.textautor, .text {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	column-gap: calc(var(--abstand) * 2);
}

.textautor div:nth-child(2), .text p {
	grid-column-start: 2;
	grid-column-end: 4;
}

.double {
	display: grid;
	grid-template-columns: 1fr 1fr;
	column-gap: calc(var(--abstand) * 2);
}

footer .wrapper {
	grid-template-columns: 1fr 1fr 1fr;
	column-gap: calc(var(--abstand) * 2);
}

#intro {
	margin-top: calc(var(--abstand) * 2);
}

header h1 {
	/* ab hier ist der Schriftzug groesser, darum 1 px mehr Ueberhang */
	bottom: -3px;
}

}


@media screen and (min-width: 1000px) {

:root {
	--abstand: 1.75rem;
	--schrift-grund: 1.3125rem;
	--breite-logo-klein: 300px;
}

header h1.wrapper {
	max-width: var(--breite-logo);
	margin-left: auto;
	margin-right: auto;
}

header ul {
	text-align: center;
}

#intro {
	max-width: var(--breite-intro);
	margin-left: auto;
	margin-right: auto;
}

.gallery figure {
	width: calc(100vw / 3 - var(--abstand) * 4.67);
	height: calc(100vw / 3 - var(--abstand) * 4.67);
	margin-left: calc(var(--abstand) * 2);
	margin-right: calc(var(--abstand) * 2);
}

.gallery img {
	max-width: calc(100vw / 3 - var(--abstand) * 4.67);
	max-height: calc(100vw / 3 - var(--abstand) * 4.67);
}

.interlude h2, .heroimg h2, h4 {
	font-size: 400%;
}

h5 {
	font-size: 200%;
	margin-bottom: calc(var(--abstand) * 5);
}

}


@media screen and (min-width: 1200px) {

.wrapper, .wrap, .gallery .wrap {
	width: var(--breite-inhalt);
	margin-left: auto;
	margin-right: auto;
}

.gallery figure {
	width: var(--kachel);
	height: var(--kachel);
	margin-left: calc(var(--abstand) * 2);
	margin-right: calc(var(--abstand) * 2);
}

.gallery img {
	max-width: var(--kachel);
	max-height: var(--kachel);
}

}


@media (prefers-reduced-motion: reduce) {

*, *::before, *::after {
	animation: none;
	transition: none;
}

}


/*		V O R L A G E N
----------------------------------------------- */

.skip {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.skip:focus {
	position: fixed;
	top: calc(var(--abstand) * 0.5);
	left: calc(var(--abstand) * 0.5);
	z-index: 10;
	outline-offset: -3px;
	width: auto;
	height: auto;
	margin: 0;
	overflow: visible;
	clip-path: none;
	color: var(--dunkel);
	background: var(--weiss);
	font-size: var(--schrift-klein);
	font-family: var(--schrift-display);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	padding: var(--polster-pille);
	border-radius: var(--radius-pille);
}

.intro {
	color: var(--text);
	margin-bottom: calc(var(--abstand) * 2);
}

.seitentitel {
	font-family: var(--schrift-fein);
	line-height: 1.1;
	word-spacing: -2px;
	font-style: italic;
	font-size: 200%;
	margin-bottom: calc(var(--abstand) * 0.5);
	color: var(--text);
}

.untertitel {
	font-family: var(--schrift-fein);
	line-height: 1.1;
	word-spacing: -2px;
	font-size: 133%;
	margin-bottom: calc(var(--abstand) * 2);
	color: var(--text);
}

.textseite {
	color: var(--text);
}

.textseite p {
	margin-bottom: var(--abstand);
}


@media screen and (min-width: 500px) {

.seitentitel {
	font-size: 250%;
}

.untertitel {
	font-size: 150%;
}

}


@media screen and (min-width: 700px) {

.seitentitel {
	font-size: 300%;
}

.untertitel {
	font-size: 175%;
}

}


@media screen and (min-width: 1000px) {

.seitentitel {
	font-size: 400%;
}

.untertitel {
	font-size: 200%;
	margin-bottom: calc(var(--abstand) * 5);
}

}

/* -----------------------------------------------
   B A R R I E R E F R E I H E I T   N A C H T R A G
   ----------------------------------------------- */

.text p, .textseite p, #inhalt p {
	overflow-wrap: anywhere;
}

.seitentitel, h2.wrapper, h4.wrapper {
	overflow-wrap: anywhere;
}

.text a:link, .text a:visited,
.textseite a:link, .textseite a:visited {
	text-decoration: underline;
	text-underline-offset: 0.15em;
	text-decoration-thickness: from-font;
}
