/* EHNES Unternavigation – klebende Sprungmarken-Leiste mit Scrollspy.
   CI: Roboto, Blau/Ink, eckig (kein Radius). Siehe DESIGN.md.
   Sitzt unter dem Seitenheader (header.elementor-location-header, sticky, z-index 100)
   → eigene z-index-Stufe 99. Der Abstand nach oben kommt aus --sn-top (JS-Messung). */
.sn {
	--sn-bg: #FFFFFF;
	--sn-link: #1C2530;
	--sn-link-hover: #0B55A0;
	--sn-link-active: #0B55A0;
	--sn-accent: #0B55A0;
	--sn-line: #E5E9ED;
	--sn-max: 1180px;
	--sn-top: 120px;
	--sn-h: 56px;
	--sn-justify: flex-start;
	--sn-ease: cubic-bezier(.4, 0, .2, 1);
	position: relative;
	z-index: 99;
	width: 100%;
	background: var(--sn-bg);
	border-bottom: 1px solid var(--sn-line);
	font-family: "Roboto", system-ui, sans-serif;
	box-sizing: border-box;
	transition: box-shadow .22s var(--sn-ease);
}
.sn *, .sn *::before, .sn *::after { box-sizing: border-box; }

/* ---- Kleben ----
   Die Leiste selbst klebt. Zusätzlich hebt das JS das Kleben auf den
   Elementor-Widget-Wrapper (.sn-host), weil ein sticky-Element innerhalb
   eines exakt gleich hohen Elternelements keinen Spielraum hätte. */
.sn--sticky { position: sticky; top: var(--sn-top, 120px); }
/* Elementor setzt selbst `.elementor-widget { position: relative }` — gleiche
   Spezifität, es entscheidet also die Ladereihenfolge der Stylesheets. Deshalb
   zusätzlich mit `.elementor-widget.sn-host` anschreiben, damit das Kleben
   unabhängig davon greift, wann dieses CSS ausgegeben wird. */
.sn-host,
.elementor-widget.sn-host {
	position: sticky;
	top: var(--sn-top, 120px);
	z-index: 99;
	overflow: visible;
}
.sn-host > .elementor-widget-container { overflow: visible; }
.sn--sticky.sn--hosted { position: relative; top: auto; }

/* Schatten erst im geklebten Zustand */
.sn.is-stuck { box-shadow: 0 6px 18px rgba(28, 37, 48, .10); }

/* ---- Container ---- */
.sn__inner {
	position: relative;
	max-width: var(--sn-max, 1180px);
	margin: 0 auto;
	padding: 0 20px;
}

/* Zarte Fade-Indikatoren, wenn die Leiste horizontal überläuft */
.sn__inner::before,
.sn__inner::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	width: 36px;
	pointer-events: none;
	opacity: 0;
	z-index: 1;
	transition: opacity .18s var(--sn-ease);
}
.sn__inner::before { left: 0; background: linear-gradient(to right, var(--sn-bg), transparent); }
.sn__inner::after { right: 0; background: linear-gradient(to left, var(--sn-bg), transparent); }
.sn--of-l .sn__inner::before,
.sn--of-r .sn__inner::after { opacity: 1; }

/* ---- Liste ---- */
.sn__list {
	display: flex;
	align-items: stretch;
	justify-content: var(--sn-justify, flex-start);
	gap: 0 28px;
	margin: 0;
	padding: 0;
	list-style: none;
	min-height: var(--sn-h);
	overflow-x: auto;
	overflow-y: hidden;
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
	/* Scrollbar optisch verstecken, Touch-Scroll bleibt erhalten */
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.sn__list::-webkit-scrollbar { width: 0; height: 0; display: none; }
.sn__item { flex: 0 0 auto; }

/* ---- Links ---- */
.sn__link {
	position: relative;
	display: flex;
	align-items: center;
	height: var(--sn-h);
	padding: 0 2px;
	font-family: inherit;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.2;
	letter-spacing: .04em;
	text-transform: uppercase;
	text-decoration: none;
	white-space: nowrap;
	color: var(--sn-link);
	border-radius: 0;
	transition: color .18s var(--sn-ease);
}
.sn__link::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 2px;
	background: var(--sn-accent);
	border-radius: 0;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform .18s var(--sn-ease);
}
.sn__link:hover { color: var(--sn-link-hover); }
.sn__link:focus-visible {
	color: var(--sn-link-hover);
	outline: 2px solid var(--sn-accent);
	outline-offset: -3px;
}
.sn__link.is-active { color: var(--sn-link-active); }
.sn__link.is-active::after { transform: scaleX(1); }

/* ---- Zielabschnitte ----
   Utility-Klasse: sorgt dafür, dass Anker nicht unter Header + Leiste landen.
   Das JS hängt sie automatisch an jeden referenzierten Abschnitt. */
.ehp-anchor { scroll-margin-top: var(--sn-scroll-offset, 160px); }

/* ---- Mobil ---- */
@media (max-width: 760px) {
	.sn { --sn-h: 50px; }
	.sn__inner { padding: 0 16px; }
	.sn__list { gap: 0 20px; }
	.sn__link { font-size: 13px; letter-spacing: .03em; }
	.sn__inner::before, .sn__inner::after { width: 24px; }
}

/* ---- Reduced Motion ---- */
@media (prefers-reduced-motion: reduce) {
	.sn,
	.sn__link,
	.sn__link::after,
	.sn__inner::before,
	.sn__inner::after { transition: none; }
	.sn__list { scroll-behavior: auto; }
}

/* ---- Druck ---- */
@media print {
	.sn, .sn-host, .elementor-widget.sn-host { position: static; box-shadow: none; }
}
