@charset "UTF-8";
/* ===================================================
   Haut im Zentrum – startseite.css
   Nur für index.html (nach basis.css geladen).

   Aufbau der Startseite: ein Kachel-Raster (.raster) mit
   6 Spalten plus einer schmalen 7. Spalte für die Siegel.
   Jede Kachel hat die Klasse .kachel und eine Modifier-
   Klasse für ihren Inhalt, z. B. .kachel--sprechzeiten.
   Welche Kachel wo steht, legt Abschnitt 2 fest.

   1. Seitenrahmen und Raster (Desktop)
   2. Kacheln: Position im Raster
   3. Kacheln: Inhalte
   4. Bilderschau (wechselnde Fotos)
   5. Begriffe (Fachgebiete-Wolke)
   6. Siegel
   7. Fußzeile
   8. Tablet (bis 1280px)
   9. Mobil (bis 820px)
   10. Reduzierte Bewegung
   =================================================== */


/* ---------------------------------------------------
   1. Seitenrahmen und Raster (Desktop)
   --------------------------------------------------- */

/* Das Raster ist höchstens 1320px breit und mittig. Wird das
   Fenster schmaler, schrumpft zuerst nur der Seitenrand; erst wenn
   er 10px erreicht (so breit wie der Kachelabstand), werden die
   Kacheln schmaler. */
.seite {
	--raster-max: 1320px;
	--seitenrand: 10px;
	width: 100%;
	max-width: calc(var(--raster-max) + 2 * var(--seitenrand));
	margin: 25px auto;
	padding: 0 var(--seitenrand);
}

.raster {
	/* Die Siegel-Spalte gibt beim Verkleinern zuerst nach: Die sechs
	   Kachelspalten sind höchstens --spalte-max breit, den Rest bekommt
	   die Siegel-Spalte. Wird das Raster schmaler, schrumpft zuerst nur
	   sie (bis --siegel-min), danach die Kacheln. */
	--siegel-spalte: 120px;
	--siegel-min: 64px;
	--spalte-max: calc((var(--raster-max) - 6 * var(--kachel-abstand) - var(--siegel-spalte)) / 6);
	/* --zelle entspricht ungefähr einer Spaltenbreite, damit 1x1-Kacheln
	   annähernd quadratisch werden */
	--zelle: min(var(--spalte-max), calc((min(var(--raster-max), 100vw - 2 * var(--seitenrand)) - 6 * var(--kachel-abstand) - var(--siegel-min)) / 6));
	/* Innenabstand aller Kacheln */
	--kachel-innen: 30px;

	display: grid;
	grid-template-columns: repeat(6, minmax(0, var(--spalte-max))) minmax(var(--siegel-min), 1fr);
	grid-template-rows: repeat(3, minmax(var(--zelle), auto)) minmax(calc(var(--zelle) * 0.5), auto);
	gap: var(--kachel-abstand);
	width: 100%;
	margin: auto;
}


/* ---------------------------------------------------
   2. Kacheln: Position im Raster
   grid-column: Spalte von / bis, grid-row: Zeile von / bis
   --------------------------------------------------- */
.kachel {
	/* Ohne min-width: 0 könnte ein langes Wort (z. B. eine E-Mail-
	   Adresse) seine ganze Spalte breiter drücken als die anderen */
	min-width: 0;
	padding: var(--kachel-innen);
}

.kachel--logo         { grid-column: 1 / 3; grid-row: 1 / 3; }
.kachel--bilder       { grid-column: 3 / 5; grid-row: 1 / 3; padding: 0; }
.kachel--aktuelles    { grid-column: 5 / 6; grid-row: 1 / 2; }
.kachel--sprechzeiten { grid-column: 6 / 7; grid-row: 1 / 2; }
.kachel--termin       { grid-column: 5 / 7; grid-row: 2 / 3; }
.kachel--team         { grid-column: 1 / 3; grid-row: 3 / 5; }
.kachel--fachgebiete  { grid-column: 3 / 4; grid-row: 3 / 4; }
.kachel--willkommen   { grid-column: 4 / 7; grid-row: 3 / 4; }
.kachel--kontakt      { grid-column: 3 / 5; grid-row: 4 / 5; }
.kachel--adresse      { grid-column: 5 / 7; grid-row: 4 / 5; }
.kachel--siegel       { grid-column: 7 / 8; grid-row: 1 / 5; }

/* Inhalt senkrecht mittig */
.kachel--zentriert {
	display: flex;
	flex-direction: column;
	justify-content: center;
}


/* ---------------------------------------------------
   3. Kacheln: Inhalte
   --------------------------------------------------- */
.kachel__titel {
	margin: 0;
	font-size: 1em;
	font-weight: 700;
}

/* Logo: steht in der <h1> der Seite (wichtig für Google) */
.logo-titel {
	margin: 0;
	font-size: inherit;
}
.logo {
	display: block;
	max-width: 100%;
	max-height: 260px;
	margin-top: 30px;
}

/* Kleine Kacheln mit wenig Text: Aktuelle Infos, Sprechzeiten, Terminvergabe */
.kachel--kompakt p {
	margin-top: 0.3em;
	font-size: var(--schrift-text);
}
.kachel--kompakt .kleingedruckt {
	margin-top: 0;
	font-size: var(--schrift-mini);
}
.kachel--kompakt .pfeil-link {
	margin-top: 0.8em;
	margin-bottom: 0.6em;
	padding-top: 0;
}

/* Warnung bei zu langen Texten in aktuelles.json (nur lokale Vorschau,
   wird von js/aktuelles.js eingefügt) */
.aktuelles-warnung {
	padding: 2px 4px;
	background-color: var(--farbe-warnung);
	color: var(--farbe-text);
}

/* Ärzteteam: Liste aus Name (dt) und Fachrichtung (dd) */
.team {
	margin: 0;
}
.team__name {
	margin-top: 0.3em;
	font-weight: 700;
}
.team__funktion {
	font-size: var(--schrift-klein);
	font-weight: 400;
}
.team__fach {
	margin: 0;
	font-size: var(--schrift-klein);
}

/* Willkommenstext mit Link zum Behandlungsspektrum */
.kachel--willkommen {
	display: flex;
	flex-direction: column;
}
.kachel--willkommen .kachel__titel {
	margin-bottom: 0.1em;
}
.kachel--willkommen p {
	margin: 0 0 0.4em;
	font-size: var(--schrift-text);
}
.kachel--willkommen .pfeil-link {
	margin-bottom: 0;
	padding-top: 0.4em;
}


/* ---------------------------------------------------
   4. Bilderschau: drei Fotos blenden nacheinander ein
   (je 4 Sekunden, Zyklus 12 Sekunden)
   --------------------------------------------------- */
.bilderschau {
	position: relative;
	overflow: hidden;
}
.bilderschau__bild {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0;
	animation: bilderschau 12s infinite;
}
.bilderschau__bild:nth-child(2) { animation-delay: 4s; }
.bilderschau__bild:nth-child(3) { animation-delay: 8s; }

@keyframes bilderschau {
	0%   { opacity: 0; }
	4%   { opacity: 1; }
	29%  { opacity: 1; }
	33%  { opacity: 0; }
	100% { opacity: 0; }
}


/* ---------------------------------------------------
   5. Begriffe: Fachgebiete als verstreute Wörter
   --------------------------------------------------- */
.kachel--fachgebiete {
	position: relative;
	padding: 0;
	font-weight: 700;
}
/* Eigener Innen-Container: %-Werte von top/left beziehen sich so auf
   die Textfläche statt auf die ganze Kachel */
.begriffe {
	position: absolute;
	inset: 5px;
}
.begriffe__wort {
	position: absolute;
	margin: 0;
	white-space: nowrap;
	transform: translate(-50%, -50%);
}
/* Zickzack nah an den linken/rechten Rand. Die %-Werte sind gegen die
   schmalste vorkommende Kachel (~157px Innenraum, Desktop knapp über
   1280px) berechnet. Wichtigste Begriffe in der Mitte; das lange
   „Berufsdermatologie“ steht mittig, weil es fast die ganze Breite füllt. */
.begriffe__wort:nth-child(1) { top: 9%;  left: 36%; }
.begriffe__wort:nth-child(2) { top: 25%; left: 65%; }
.begriffe__wort:nth-child(3) { top: 42%; left: 42%; }
.begriffe__wort:nth-child(4) { top: 58%; left: 60%; }
.begriffe__wort:nth-child(5) { top: 75%; left: 30%; }
.begriffe__wort:nth-child(6) { top: 91%; left: 50%; }


/* ---------------------------------------------------
   6. Siegel: oben Unterstützer-Buttons, darunter FOCUS-Siegel.
   Desktop: schmale Spalte rechts über die volle Höhe
   --------------------------------------------------- */
.kachel--siegel {
	padding: 24px 6px;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: space-evenly;
	gap: 24px;
}
.siegel__gruppe {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
}
/* In der schmaler werdenden Spalte verkleinern sich die Bilder mit */
.kachel--siegel img {
	max-width: 100%;
}
.siegel__button {
	display: block;
}
.siegel__button img {
	display: block;
	width: 80px;
	height: auto;
	aspect-ratio: 1;
	object-fit: contain; /* Bild komplett zeigen, Ränder bleiben ggf. frei */
}
.siegel__button--klimadocs img {
	width: 68px; /* etwas kleiner als die runden Buttons */
}
.siegel__focus img {
	display: block;
	width: 58px;
	height: auto;
}


/* ---------------------------------------------------
   7. Fußzeile unter dem Raster
   --------------------------------------------------- */
.fusszeile--startseite {
	margin-top: var(--kachel-abstand);
	padding-top: 14px;
	row-gap: 12px;
	align-items: flex-start;
	white-space: nowrap;
}


/* ===================================================
   8. Tablet (bis 1280px)
   Eigenes 4-Spalten-Raster, damit 1x1-Kacheln ungefähr
   quadratisch bleiben. Die Siegel werden zu einem Band
   über die volle Breite unter Kontakt/Adresse.
   =================================================== */
@media (max-width: 1280px) {
	.startseite {
		margin: 20px;
	}
	/* Raster höchstens 960px breit; beim Verkleinern schrumpft zuerst
	   der Rand bis auf 25px, danach die Kacheln */
	.seite {
		--raster-max: 960px;
		--seitenrand: 25px;
	}
	.raster {
		--kachel-innen: 20px;
		/* 40px = Seitenrand des <body> (2 x 20px) */
		--zelle: calc((min(var(--raster-max), 100vw - 40px - 2 * var(--seitenrand)) - 3 * var(--kachel-abstand)) / 4);
		grid-template-columns: repeat(4, 1fr);
		grid-template-rows:
			minmax(var(--zelle), auto)
			minmax(var(--zelle), auto)
			minmax(var(--zelle), auto)
			minmax(calc(var(--zelle) * 0.75), auto)
			minmax(calc(var(--zelle) * 0.75), auto)
			auto;
	}

	.kachel--logo         { grid-column: 1 / 3; grid-row: 1 / 2; }
	.kachel--bilder       { grid-column: 3 / 5; grid-row: 1 / 2; }
	.kachel--aktuelles    { grid-column: 1 / 2; grid-row: 2 / 3; }
	.kachel--termin       { grid-column: 2 / 4; grid-row: 2 / 3; }
	.kachel--sprechzeiten { grid-column: 4 / 5; grid-row: 2 / 3; }
	.kachel--fachgebiete  { grid-column: 1 / 2; grid-row: 3 / 4; }
	.kachel--willkommen   { grid-column: 2 / 5; grid-row: 3 / 4; }
	.kachel--team         { grid-column: 1 / 3; grid-row: 4 / 6; }
	.kachel--kontakt      { grid-column: 3 / 5; grid-row: 4 / 5; }
	.kachel--adresse      { grid-column: 3 / 5; grid-row: 5 / 6; }
	.kachel--siegel       { grid-column: 1 / 5; grid-row: 6 / 7; }

	/* Siegel-Band: Buttons und FOCUS-Siegel nebeneinander */
	.kachel--siegel {
		flex-direction: row;
		flex-wrap: wrap;
		justify-content: center;
		padding: 20px;
		gap: 20px 48px;
	}
	.siegel__gruppe {
		flex-direction: row;
		gap: 24px;
	}
	.siegel__button img {
		width: 64px;
		height: 64px;
	}
	.siegel__button--klimadocs img {
		width: 54px;
		height: auto;
	}
	.siegel__focus img {
		width: 36px;
	}

	/* Etwas mehr Luft zum oberen/unteren Kachelrand als am Desktop */
	.begriffe {
		inset: 10px 5px;
	}
}


/* ===================================================
   9. Mobil (bis 820px)
   Kacheln untereinander, in der Reihenfolge des HTML.
   =================================================== */
@media (max-width: 820px) {
	.umbruch-desktop {
		display: none;
	}
	.seite {
		--seitenrand: 0px;
	}
	/* Mobil liegen die Kacheln weiter auseinander (doppelter Abstand) */
	.raster {
		--kachel-innen: 22px 28px;
		display: flex;
		flex-direction: column;
		gap: calc(2 * var(--kachel-abstand));
	}
	.kachel {
		width: 100%;
	}
	.kachel--bilder {
		min-height: 220px;
	}
	.logo {
		width: 70%;
		max-width: 220px;
		margin: 10px 0;
	}

	/* Siegel: Buttons und FOCUS-Siegel als zwei Reihen; die Buttons
	   brechen auf sehr schmalen Geräten um */
	.kachel--siegel {
		flex-direction: column;
		gap: 18px;
		padding: 22px 28px;
	}
	.siegel__gruppe {
		flex-wrap: wrap;
		justify-content: center;
		gap: 16px 20px;
	}
	.siegel__button img {
		width: 72px;
		height: 72px;
	}
	.siegel__button--klimadocs img {
		width: 60px;
		height: auto;
	}

	/* Fachgebiete: genug Breite für eine normal umbrechende Wortwolke
	   statt der verstreuten Begriffe */
	.kachel--fachgebiete {
		position: static;
		display: flex;
		flex-wrap: wrap;
		align-content: center;
		justify-content: center;
		gap: 10px 18px;
		padding: 27px 28px;
	}
	/* Innen-Container wird für das Layout „unsichtbar“, die Wörter
	   werden so direkt zu Elementen der Flex-Zeile */
	.begriffe {
		position: static;
		display: contents;
	}
	.begriffe__wort {
		position: static;
		transform: none;
	}
	/* Leichter Höhenversatz für eine lockere Wolke */
	.begriffe__wort:nth-child(2) { transform: translateY(6px); }
	.begriffe__wort:nth-child(4) { transform: translateY(-4px); }
	.begriffe__wort:nth-child(6) { transform: translateY(6px); }

	.fusszeile--startseite {
		margin-top: calc(2 * var(--kachel-abstand));
		padding: 14px 0 10px;
	}
}


/* ===================================================
   10. Reduzierte Bewegung
   Wer in iOS/macOS/Windows „Bewegung reduzieren“ eingestellt
   hat, sieht statt der Bilderschau nur das Dermatoskop-Foto.
   =================================================== */
@media (prefers-reduced-motion: reduce) {
	.bilderschau__bild {
		animation: none;
	}
	.bilderschau__bild--standbild {
		opacity: 1;
	}
}
