/* KulturOn Navigation 3.1.0 */

.kmm {
	--kmm-accent: #F22E2E;
	--kmm-ink: #1B1725;
	--kmm-panel: #1B1725;
	--kmm-panel-ink: #FFFFFF;
	--kmm-font-ui: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
	--kmm-font-display: "PP Right Grotesk", "Roboto Condensed", "Arial Narrow", Roboto, sans-serif;
	--kmm-ease: cubic-bezier(.22, .8, .24, 1);
	--kmm-dd-top: 12px;

	display: flex; align-items: center; justify-content: flex-end; gap: 24px;
	width: 100%; min-height: 44px;
	font-family: var(--kmm-font-ui); line-height: 1.2;
	position: relative;
}
/* Breite der Leiste darf die Elementor-Spalte nicht aufdehnen – sonst wäre „passt nicht“ nicht messbar */
.kmm:not(.kmm--mobile-only) { contain: inline-size; }
.kmm--mobile-only { display: inline-flex; width: auto; }
.kmm *, .kmm *::before, .kmm *::after,
.kmm-portal *, .kmm-portal *::before, .kmm-portal *::after { box-sizing: border-box; }

/* Reset gegen Theme-/Elementor-Buttonstile */
.kmm-btn {
	-webkit-appearance: none; appearance: none;
	background: none !important; border: 0 !important; box-shadow: none !important;
	margin: 0; padding: 0; border-radius: 0; min-height: 0;
	color: inherit; font: inherit; letter-spacing: inherit; text-transform: none; text-align: left;
	cursor: pointer; -webkit-tap-highlight-color: transparent;
}
.kmm-btn:focus { outline: none; }
.kmm :focus-visible, .kmm-portal :focus-visible {
	outline: 2px solid var(--kmm-accent); outline-offset: 3px;
}
.kmm-menu, .kmm-sub { list-style: none !important; margin: 0 !important; padding: 0 !important; }
.kmm-item { margin: 0; padding: 0; list-style: none; }
.kmm-item::before, .kmm-item::marker { content: none; }
.kmm-chev { flex: 0 0 auto; display: block; transition: transform .3s var(--kmm-ease); }
.kmm-toggle[aria-expanded="true"] .kmm-chev { transform: rotate(180deg); }

/* =========================================================================
   Desktop-Leiste
   ====================================================================== */

.kmm-desk { flex: 0 1 auto; min-width: 0; }
.kmm-menu--desk { display: flex; align-items: center; flex-wrap: nowrap; }
.kmm-menu--desk > .kmm-item { position: relative; }

.kmm-desk .kmm-item--d0 > .kmm-link,
.kmm-desk .kmm-item--d0 > .kmm-toggle {
	position: relative;
	display: inline-flex; align-items: center; gap: 6px;
	height: 44px; padding: 0 14px;
	white-space: nowrap;
	color: var(--kmm-ink) !important; text-decoration: none !important;
	font-family: var(--kmm-font-ui); font-size: 16px; font-weight: 400; letter-spacing: 0;
}
/* Unterstrich statt roter Schrift: auf dem Sand-Ton lesbarer */
.kmm-desk .kmm-item--d0 > .kmm-link::after,
.kmm-desk .kmm-item--d0 > .kmm-toggle::after {
	content: ""; position: absolute; left: 14px; right: 14px; bottom: 7px;
	height: 2px; background: var(--kmm-accent);
	transform: scaleX(0); transform-origin: left center;
	transition: transform .3s var(--kmm-ease);
}
.kmm-desk .kmm-item--d0 > .kmm-toggle::after { right: 34px; }
.kmm-desk .kmm-item--d0 > .kmm-link:hover::after,
.kmm-desk .kmm-item--d0 > .kmm-toggle:hover::after,
.kmm-desk .kmm-item--d0.is-open > .kmm-toggle::after,
.kmm-desk .kmm-item--d0.is-current > .kmm-link::after,
.kmm-desk .kmm-item--d0.is-current > .kmm-toggle::after { transform: scaleX(1); }

/* Dropdown */
.kmm-desk .kmm-sub-wrap {
	position: absolute; top: calc(100% + var(--kmm-dd-top)); left: 0; z-index: 1000;
	min-width: 260px;
	opacity: 0; visibility: hidden; transform: translateY(-6px);
	transition: opacity .18s ease, transform .25s var(--kmm-ease), visibility 0s linear .25s;
}
/* Unsichtbare Brücke zwischen Menüpunkt und Dropdown, damit Hover nicht abreißt */
.kmm-desk .kmm-sub-wrap::before {
	content: ""; position: absolute; left: 0; right: 0; bottom: 100%;
	height: calc(var(--kmm-dd-top) + 4px);
}
.kmm-desk .kmm-item.is-flip > .kmm-sub-wrap { left: auto; right: 0; }
.kmm-desk .kmm-item.is-open > .kmm-sub-wrap {
	opacity: 1; visibility: visible; transform: none;
	transition: opacity .18s ease, transform .25s var(--kmm-ease), visibility 0s;
}
.kmm-desk .kmm-sub {
	background: #fff;
	padding: 8px !important;
	box-shadow: 0 18px 40px -12px rgba(27, 23, 37, .35), 0 2px 6px rgba(27, 23, 37, .08);
}
.kmm-desk .kmm-sub .kmm-link {
	display: flex; align-items: center; justify-content: space-between; gap: 16px;
	padding: 11px 14px; white-space: nowrap;
	color: var(--kmm-ink) !important; text-decoration: none !important;
	font-size: 15px; font-weight: 400;
	transition: background-color .15s ease, color .15s ease;
}
.kmm-desk .kmm-sub .kmm-link::after {
	content: ""; width: 7px; height: 7px; flex: 0 0 auto;
	border-top: 2px solid currentColor; border-right: 2px solid currentColor;
	transform: translateX(-4px) rotate(45deg); opacity: 0;
	transition: opacity .15s ease, transform .2s var(--kmm-ease);
}
.kmm-desk .kmm-sub .kmm-link:hover,
.kmm-desk .kmm-sub .kmm-link:focus-visible { background: #F3F0EC; }
.kmm-desk .kmm-sub .kmm-link:hover::after,
.kmm-desk .kmm-sub .kmm-link:focus-visible::after { opacity: 1; transform: translateX(0) rotate(45deg); color: var(--kmm-accent); }
.kmm-desk .kmm-sub .is-current > .kmm-link { box-shadow: inset 2px 0 0 var(--kmm-accent); }

/* Button-Menüpunkte in der Leiste */
.kmm-desk .kmm-item--button { margin-left: 8px; }

/* =========================================================================
   Roter Button (Events) + Button-Menüpunkte
   ====================================================================== */

.kmm-cta,
.kmm-button {
	display: inline-flex; align-items: center; justify-content: center; gap: 12px;
	height: 44px; padding: 0 30px;
	background: var(--kmm-accent); color: #fff !important;
	font-family: var(--kmm-font-ui); font-size: 14px; font-weight: 500; line-height: 1;
	letter-spacing: .06em; text-transform: uppercase; text-decoration: none !important;
	white-space: nowrap; border-radius: 0;
	transition: background-color .2s ease;
}
.kmm-cta:hover, .kmm-cta:focus-visible,
.kmm-button:hover, .kmm-button:focus-visible { background: var(--kmm-ink); }
.kmm-cta { flex: 0 0 auto; }

/* =========================================================================
   Burger
   ====================================================================== */

.kmm-trigger {
	flex: 0 0 auto;
	display: inline-flex; align-items: center; justify-content: center;
	width: 44px; height: 44px; margin-right: -10px;
	color: var(--kmm-ink);
}
.kmm-burger { position: relative; display: block; width: 24px; height: 16px; }
.kmm-burger span {
	position: absolute; left: 0; height: 2px; width: 100%;
	background: currentColor; transition: width .25s var(--kmm-ease);
}
.kmm-burger span:nth-child(1) { top: 0; }
.kmm-burger span:nth-child(2) { top: 7px; width: 70%; }
.kmm-burger span:nth-child(3) { top: 14px; }
.kmm-trigger:hover .kmm-burger span:nth-child(2) { width: 100%; }

/* Umschalten Desktop ↔ Burger (per JS, inkl. „passt nicht in den Header“) */
.kmm.kmm--compact .kmm-trigger { display: inline-flex !important; }
.kmm.kmm--compact .kmm-desk {
	position: absolute !important; right: 0; top: 0;
	visibility: hidden; pointer-events: none; opacity: 0;
}
.kmm.kmm--wide .kmm-trigger { display: none !important; }
.kmm.kmm--wide .kmm-desk { display: block !important; }
@media (max-width: 599px) {
	.kmm .kmm-cta { display: none; }
}

/* =========================================================================
   Slide-Out (wird per JS an <body> gehängt)
   ====================================================================== */

.kmm-portal {
	position: fixed; inset: 0; z-index: 999999;
	visibility: hidden; pointer-events: none;
	transition: visibility 0s linear .5s;
	font-family: var(--kmm-font-ui, Roboto, sans-serif); font-size: 16px; line-height: 1.3;
	--kmm-font-ui: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
	--kmm-font-display: "PP Right Grotesk", "Roboto Condensed", "Arial Narrow", Roboto, sans-serif;
	--kmm-ease: cubic-bezier(.22, .8, .24, 1);
}
.kmm-portal.is-open { visibility: visible; pointer-events: auto; transition: visibility 0s; }

.kmm-overlay {
	position: absolute; inset: 0;
	background: rgba(10, 8, 14, .6);
	-webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
	opacity: 0; transition: opacity .4s ease;
}
.kmm-portal.is-open .kmm-overlay { opacity: 1; }

.kmm-panel {
	position: absolute; top: 0; bottom: 0; right: 0;
	width: min(440px, 100%);
	height: 100vh; height: 100dvh;
	background: var(--kmm-panel, #1B1725); color: var(--kmm-panel-ink, #FFFFFF);
	display: flex; flex-direction: column;
	overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
	padding: 0 28px calc(28px + env(safe-area-inset-bottom));
	transform: translateX(100%);
	transition: transform .5s var(--kmm-ease);
	box-shadow: -1px 0 0 rgba(255, 255, 255, .08);
}
.kmm-portal--left .kmm-panel { right: auto; left: 0; transform: translateX(-100%); }
.kmm-portal.is-open .kmm-panel { transform: none; }

.kmm-head {
	display: flex; align-items: center; justify-content: space-between; gap: 16px;
	min-height: 84px; padding-top: env(safe-area-inset-top);
	flex: 0 0 auto;
}
.kmm-logo { display: inline-flex; min-width: 0; }
.kmm-logo img { display: block; height: 30px; width: auto; max-width: 100%; }
.kmm-close {
	margin-left: auto; margin-right: -10px;
	width: 44px; height: 44px;
	display: inline-flex; align-items: center; justify-content: center;
	color: var(--kmm-panel-ink, #FFFFFF);
	transition: transform .3s var(--kmm-ease);
}
.kmm-close:hover { transform: rotate(90deg); }

.kmm-label {
	flex: 0 0 auto;
	border-top: 2px solid var(--kmm-accent, #F22E2E);
	border-bottom: 2px solid var(--kmm-accent, #F22E2E);
	padding: 12px 0 11px; margin: 0 0 14px;
	font-size: 12px; font-weight: 600; line-height: 1;
	letter-spacing: .16em; text-transform: uppercase;
}
.kmm-sr {
	position: absolute !important; width: 1px; height: 1px; overflow: hidden;
	clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

.kmm-nav { flex: 1 0 auto; display: flex; flex-direction: column; }
.kmm-menu--mob { display: flex; flex-direction: column; flex: 1 0 auto; }

/* Hauptpunkte: Display-Schrift der Website */
.kmm-nav .kmm-item--d0 > .kmm-link,
.kmm-nav .kmm-item--d0 > .kmm-toggle,
.kmm-nav .kmm-item--d0 > .kmm-row > .kmm-link {
	display: flex; align-items: center; justify-content: space-between; gap: 16px;
	width: 100%; padding: 7px 0;
	color: var(--kmm-panel-ink, #FFFFFF) !important; text-decoration: none !important;
	font-family: var(--kmm-font-display); font-size: 40px; font-weight: 600;
	line-height: 1; letter-spacing: 0;
}
.kmm-nav .kmm-item--d0 > .kmm-toggle .kmm-chev { width: 20px; height: 20px; margin-right: 2px; }
.kmm-nav .kmm-text {
	background-image: linear-gradient(var(--kmm-accent, #F22E2E), var(--kmm-accent, #F22E2E));
	background-repeat: no-repeat; background-position: 0 100%; background-size: 0 3px;
	padding-bottom: 3px;
	transition: background-size .35s var(--kmm-ease);
}
.kmm-nav .kmm-link:hover > .kmm-text,
.kmm-nav .kmm-toggle:hover > .kmm-text,
.kmm-nav .kmm-item.is-current > .kmm-link > .kmm-text,
.kmm-nav .kmm-item.is-current > .kmm-toggle > .kmm-text,
.kmm-nav .kmm-toggle[aria-expanded="true"] > .kmm-text { background-size: 100% 3px; }

.kmm-row { display: flex; align-items: center; }
.kmm-row .kmm-link { flex: 1 1 auto; }
.kmm-toggle--icon {
	flex: 0 0 44px; width: 44px; height: 44px; margin-right: -12px;
	display: inline-flex; align-items: center; justify-content: center;
}

.kmm-item.kmm-divider { margin-top: 24px; }

/* Untermenü (Akkordeon) */
.kmm-nav .kmm-sub-wrap { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .4s var(--kmm-ease); }
.kmm-nav .kmm-sub-wrap > .kmm-sub { min-height: 0; overflow: hidden; }
.kmm-nav .kmm-item.is-open > .kmm-sub-wrap { grid-template-rows: 1fr; }
.kmm-nav .kmm-sub { border-left: 2px solid var(--kmm-accent, #F22E2E); padding-left: 16px !important; }
.kmm-nav .kmm-sub > .kmm-item:first-child { padding-top: 4px; }
.kmm-nav .kmm-sub > .kmm-item:last-child { padding-bottom: 12px; }
.kmm-nav .kmm-sub .kmm-link {
	display: flex; align-items: center; min-height: 40px; padding: 8px 0;
	color: var(--kmm-panel-ink, #FFFFFF) !important; opacity: .82; text-decoration: none !important;
	font-size: 17px; font-weight: 400; line-height: 1.25;
}
.kmm-nav .kmm-sub .kmm-text { background-size: 0 2px; padding-bottom: 2px; }
.kmm-nav .kmm-sub .kmm-link:hover > .kmm-text,
.kmm-nav .kmm-sub .is-current > .kmm-link > .kmm-text { background-size: 100% 2px; }

/* Button-Menüpunkte unten im Slide-Out */
.kmm-nav .kmm-item--button + .kmm-item--button { margin-top: 10px; }
.kmm-nav .kmm-item--d0:not(.kmm-item--button) + .kmm-item--button { margin-top: auto; padding-top: 32px; }
.kmm-nav .kmm-button {
	display: flex; justify-content: space-between; width: 100%;
	height: 52px; padding: 0 20px;
}
.kmm-nav .kmm-button::after {
	content: ""; width: 8px; height: 8px;
	border-top: 2px solid currentColor; border-right: 2px solid currentColor;
	transform: rotate(45deg); transition: transform .2s var(--kmm-ease);
}
.kmm-nav .kmm-button:hover, .kmm-nav .kmm-button:focus-visible { background: #fff; color: var(--kmm-panel, #1B1725) !important; }
.kmm-nav .kmm-button:hover::after { transform: translateX(3px) rotate(45deg); }
.kmm-nav .kmm-button .kmm-text { background: none; padding: 0; }

.kmm-extra { margin-top: 28px; font-size: 15px; }

/* Einblenden */
.kmm-nav .kmm-item--d0 {
	opacity: 0; transform: translateX(24px);
	transition: opacity .3s ease, transform .5s var(--kmm-ease);
}
.kmm-portal--left .kmm-nav .kmm-item--d0 { transform: translateX(-24px); }
.kmm-portal.is-open .kmm-nav .kmm-item--d0 {
	opacity: 1; transform: none;
	transition-delay: calc(.12s + var(--i, 0) * .035s);
}

/* Kleine Handys */
@media (max-width: 360px) {
	.kmm-panel { padding-left: 20px; padding-right: 20px; }
	.kmm-nav .kmm-item--d0 > .kmm-link,
	.kmm-nav .kmm-item--d0 > .kmm-toggle,
	.kmm-nav .kmm-item--d0 > .kmm-row > .kmm-link { font-size: 34px; }
}

html.kmm-locked, html.kmm-locked body { overflow: hidden !important; }

@media (prefers-reduced-motion: reduce) {
	.kmm *, .kmm-portal * { transition-duration: 0s !important; transition-delay: 0s !important; }
	.kmm-portal { transition: none; }
}
