/* ITX Kopfbereiche & Linkboxen - Kopfbereich (Struktur)
   ----------------------------------------------------------------
   Hoehen je Variante (--max/--medium/--min) sowie die Schriftgroesse
   des Titels werden anhand der Modul-Einstellungen pro Breakpoint
   dynamisch eingefuegt (siehe assets.php).
   Optisches Feintuning ueber die CSS-Variablen unten.
   ---------------------------------------------------------------- */

body {
	/* Defaults - per Theme/Project via body { ... } ueberschreibbar */
	--hlc-header-margin-bottom:          80px;
	--hlc-header-placeholder-bg:         #ecf2ee;
	--hlc-header-overlay-color:          rgba(0, 0, 0, 0.4);
	--hlc-header-title-color:            #FFF;
	--hlc-header-title-font-weight:      800;
	--hlc-header-title-font-size:        114px; /* Desktop-Basis */
	--hlc-header-title-font-size-tablet:  65px;
	--hlc-header-title-font-size-mobile:  35px;
	--hlc-header-title-text-shadow:      2px 3px 10px rgba(0, 0, 0, 0.6);
	--hlc-header-title-top-offset:       0;
	--hlc-header-title-font-family:      inherit;
	--hlc-header-title-line-height:      1.1;
	/* Mindestabstand des Textes zum oberen/unteren Rand, wenn der
	   Kopfbereich wegen viel Text ueber seine Mindesthoehe waechst. */
	--hlc-header-safe-space:             30px;

	/* Zusatztext unter dem Titel */
	--hlc-header-subtitle-color:         var(--hlc-header-title-color);
	--hlc-header-subtitle-font-family:   inherit;
	--hlc-header-subtitle-font-weight:   400;
	--hlc-header-subtitle-font-size:     clamp(17px, 0.9rem + 0.9vw, 28px);
	--hlc-header-subtitle-line-height:   1.4;
	--hlc-header-subtitle-text-shadow:   1px 2px 6px rgba(0, 0, 0, 0.6);
	--hlc-header-subtitle-gap:           0.6em;
	--hlc-header-subtitle-max-width:     60ch;

	/* Button (Call-To-Action) unter Titel/Zusatztext */
	--hlc-header-cta-gap:                1.4em;
	--hlc-header-cta-font-family:        inherit;
	--hlc-header-cta-font-size:          clamp(16px, 0.8rem + 0.4vw, 20px);
	--hlc-header-cta-font-weight:        600;
	--hlc-header-cta-padding:            0.75em 1.8em;
	--hlc-header-cta-radius:             0;
	--hlc-header-cta-color:              #FFF;
	--hlc-header-cta-bg:                 transparent;
	--hlc-header-cta-border:             2px solid #FFF;
	--hlc-header-cta-color-hover:        #000;
	--hlc-header-cta-bg-hover:           #FFF;
	--hlc-header-cta-border-hover:       2px solid #FFF;
}

.hlc-header {
	background-color: var(--hlc-header-placeholder-bg);
	width: 100%;
	max-width: 100%;
	position: relative;
	margin: 0 auto var(--hlc-header-margin-bottom) auto;
}

/* Variante "Kein Kopfbereich": reiner Platzhalter ohne Bild/Overlay.
   Standardmaessig ohne Hoehe. Bei Bedarf per CSS-Variable oder direkt
   ueber die Klasse eine Hoehe setzen, z.B.:
     .hlc-header--none { height: 60px; }
   oder projektweit:  body { --hlc-header-none-height: 60px; }              */
.hlc-header--none {
	background-color: transparent;
	height: var(--hlc-header-none-height, 0);
	margin-bottom: 0;
}
.hlc-header--none::before {
	display: none;
}

/* Dunkler Overlay-Layer ueber dem Medium */
.hlc-header::before {
	content: '';
	height: 100%;
	width: 100%;
	display: block;
	position: absolute;
	z-index: 90;
	background-color: var(--hlc-header-overlay-color);
	pointer-events: none;
}

/* Medium-Container - Mindesthoehe je Variante wird dynamisch gesetzt.
   border-box: der Innenabstand ist in der Mindesthoehe enthalten, passt der
   Text, aendert sich die Hoehe also nicht; waechst der Kopfbereich, bleibt
   oben und unten Luft zum Rand. */
.hlc-header__image,
.hlc-header__slideshow,
.hlc-header__video-wrap {
	box-sizing: border-box;
	padding-top: var(--hlc-header-safe-space);
	padding-bottom: var(--hlc-header-safe-space);
	overflow: hidden;
	background-size: cover;
	background-position: center center;
	background-repeat: no-repeat;
	position: relative;
	display: flex;
	justify-content: center;
	align-items: center;
}

/* Slideshow-Ebenen (Crossfade via generierte Keyframes) */
.hlc-header__slide {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center center;
	background-repeat: no-repeat;
	z-index: 0;
	opacity: 0;
}

/* Titel-Overlay */
.hlc-header__text {
	text-align: center;
	margin: 0 auto;
	padding: 0 20px 20px 20px;
	color: var(--hlc-header-title-color);
	position: relative;
	top: var(--hlc-header-title-top-offset);
	z-index: 95;
	hyphens: auto;
	/* Nie breiter als der Kopfbereich; ueberlange Woerter umbrechen statt
	   ueberstehen (Notanker fuer lange Komposita auf schmalen Geraeten). */
	box-sizing: border-box;
	max-width: 100%;
	overflow-wrap: break-word;
}

/* Zusatztext: eigenes Element (kein span), damit Projekt-CSS fuer den
   Titel (.hlc-header__text span) nicht ungewollt mitgreift. */
.hlc-header__subtitle {
	margin: var(--hlc-header-subtitle-gap) auto 0;
	max-width: var(--hlc-header-subtitle-max-width);
	color: var(--hlc-header-subtitle-color);
	font-family: var(--hlc-header-subtitle-font-family);
	font-weight: var(--hlc-header-subtitle-font-weight);
	font-size: var(--hlc-header-subtitle-font-size);
	line-height: var(--hlc-header-subtitle-line-height);
	text-shadow: var(--hlc-header-subtitle-text-shadow);
	hyphens: auto;
	overflow-wrap: break-word;
}

/* Button (Call-To-Action) */
.hlc-header__cta-wrap {
	margin: var(--hlc-header-cta-gap) 0 0;
	padding: 0;
}
.hlc-header__cta {
	display: inline-block;
	max-width: 100%;
	box-sizing: border-box;
	padding: var(--hlc-header-cta-padding);
	font-family: var(--hlc-header-cta-font-family);
	font-size: var(--hlc-header-cta-font-size);
	font-weight: var(--hlc-header-cta-font-weight);
	line-height: 1.3;
	color: var(--hlc-header-cta-color);
	background-color: var(--hlc-header-cta-bg);
	border: var(--hlc-header-cta-border);
	border-radius: var(--hlc-header-cta-radius);
	text-decoration: none;
	text-shadow: none;
	overflow-wrap: break-word;
	cursor: pointer;
	transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}
.hlc-header__cta:hover,
.hlc-header__cta:focus-visible {
	color: var(--hlc-header-cta-color-hover);
	background-color: var(--hlc-header-cta-bg-hover);
	border: var(--hlc-header-cta-border-hover);
	text-decoration: none;
}
.hlc-header__cta:focus-visible {
	outline: 2px solid var(--hlc-header-cta-color);
	outline-offset: 3px;
}

.hlc-header__text span {
	font-size: var(--hlc-header-title-font-size);
	color: var(--hlc-header-title-color);
	font-weight: var(--hlc-header-title-font-weight);
	font-family: var(--hlc-header-title-font-family);
	line-height: var(--hlc-header-title-line-height);
	text-shadow: var(--hlc-header-title-text-shadow);
}

/* -------------------------------------------------------------------------
   Video-Kopfbereich
   Der Medientyp ist am Wrapper als .hlc-header--video erkennbar, sodass das
   Overlay pro Typ per CSS gesteuert werden kann. Beispiel im eigenen CSS:
     .hlc-header--video::before { background-color: rgba(0,0,0,0.15); }
   ---------------------------------------------------------------------- */
/* Video-Wrap: Grundlayout kommt aus der gemeinsamen Regel oben
   (.hlc-header__image, .hlc-header__slideshow, .hlc-header__video-wrap).
   Hier nur die Video-spezifische Groesse. */
.hlc-header__video-wrap {
	width: 100%;
	height: 100%;
}

.hlc-header__video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center center;
	opacity: 0;
	transition: opacity 0.4s ease;
	z-index: 1;
}

/* Video erst einblenden, wenn es tatsaechlich laeuft (sonst Poster zeigen). */
.hlc-header__video-wrap--playing .hlc-header__video {
	opacity: 1;
}

/* Play-Button: nur sichtbar, wenn das Video (noch) nicht laeuft. */
.hlc-header__video-play {
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	z-index: 95;
	width: 76px;
	height: 76px;
	border: 0;
	border-radius: 50%;
	background-color: rgba(0, 0, 0, 0.45);
	cursor: pointer;
	transition: background-color 0.2s ease, opacity 0.2s ease;
}

.hlc-header__video-play::before {
	content: '';
	position: absolute;
	left: 54%;
	top: 50%;
	transform: translate(-50%, -50%);
	border-style: solid;
	border-width: 14px 0 14px 22px;
	border-color: transparent transparent transparent #fff;
}

.hlc-header__video-play:hover {
	background-color: rgba(0, 0, 0, 0.65);
}

/* Button ausblenden, sobald das Video laeuft. */
.hlc-header__video-wrap--playing .hlc-header__video-play {
	opacity: 0;
	pointer-events: none;
}

/* Wenn Autoplay aktiv und laufend, Button gar nicht erst zeigen (JS setzt
   --playing); bei poster-only/paused bleibt er sichtbar. */

/* -------------------------------------------------------------------------
   Diaschau - Klick-Navigation (linke/rechte Haelfte = zurueck/vor)
   Die Buttons sind nur klickbar, wenn JS die Navigation aktiviert hat
   (.hlc-header__slideshow--has-nav). Ohne JS bleiben sie wirkungslos.
   ---------------------------------------------------------------------- */
.hlc-header__nav {
	display: none;
}
.hlc-header__slideshow--has-nav .hlc-header__nav {
	display: block;
	position: absolute;
	top: 0;
	bottom: 0;
	width: 50%;
	z-index: 96;
	border: 0;
	margin: 0;
	padding: 0;
	background: transparent;
	cursor: default;
	-webkit-appearance: none;
	appearance: none;
}
/* Textblock ueber die Klickflaechen heben, aber fuer Klicks durchlaessig
   machen: Klicks auf Titel/Zusatztext blaettern weiterhin, der Button
   bleibt selbst anklickbar. */
.hlc-header__slideshow--has-nav .hlc-header__text {
	z-index: 97;
	pointer-events: none;
}
.hlc-header__slideshow--has-nav .hlc-header__cta {
	pointer-events: auto;
}
.hlc-header__nav--prev {
	left: 0;
}
.hlc-header__nav--next {
	right: 0;
}

/* Manueller Modus: die CSS-Auto-Animation abschalten und nur den aktiven
   Slide zeigen (Crossfade mit der in den Einstellungen konfigurierten Dauer,
   Fallback 0.5s falls die Variable fehlt). */
.hlc-header__slideshow--manual .hlc-header__slide {
	animation: none !important;
	opacity: 0;
	transition: opacity var(--hlc-fade-ms, 0.5s) ease;
}
.hlc-header__slideshow--manual .hlc-header__slide--active {
	opacity: 1;
}

/* Waehrend des Einfrierens (erster Klick) keine Blende - nur der echte
   Folgewechsel soll ueberblenden. */
.hlc-header__slideshow--no-fade .hlc-header__slide {
	transition: none !important;
}
