/* KW Atelier – Hülle: Navigation (inkl. Burger, Off-Canvas, Bottom-Bar). Bedingt geladen (nav_enabled). Gescoped .kwat-*. Doku: assets/css/frontend/CLAUDE.md */

/* ── Navigation: volle Breite, sticky ────────────────────────────────── */
.kwat-nav {
	position: sticky;
	top: var(--kwat-adminbar, 0px);
	z-index: 100;
	width: 100%;
	background: linear-gradient(180deg,
		color-mix(in srgb, var(--kwat-color-surface) 88%, var(--kwat-color-secondary)),
		color-mix(in srgb, var(--kwat-color-bg) 92%, var(--kwat-color-secondary)));
	border-top: var(--kwat-nav-rule) solid color-mix(in srgb, var(--kwat-color-accent) 55%, transparent);
	border-bottom: var(--kwat-nav-rule) solid color-mix(in srgb, var(--kwat-color-accent) 55%, transparent);
	font-family: var(--kwat-font-body);
	transition: background var(--kwat-transition), box-shadow var(--kwat-transition), top var(--kwat-transition);
}

/* Liegt die Info-Leiste darüber, klebt die Navigation um deren Höhe versetzt;
   beim Scrollen blendet die PreNav aus und die Navigation rückt nach ganz oben. */
body.kwat-has-prenav .kwat-nav {
	top: calc(var(--kwat-adminbar, 0px) + var(--kwat-prenav-h, 42px));
}

body.kwat-has-prenav.kwat-scrolled .kwat-nav {
	top: var(--kwat-adminbar, 0px);
}

/* `stretch` statt `center`: die Menüpunkte werden dadurch LEISTENHOCH. Vorher war das
   `<li>` nur textgroß, `top: 100%` der Karte begann also rund 20px INNERHALB der Leiste –
   daher der „aufgeklebt"-Eindruck. Logo und Werkzeuge zentrieren ihren Inhalt selbst. */
.kwat-nav__inner {
	display: flex;
	align-items: stretch;
	gap: clamp(1rem, 2.5vw, 2.4rem);
	width: 100%;
	max-width: var(--kwat-shell-max);
	min-height: var(--kwat-nav-h);
	margin-inline: auto;
	padding-inline: var(--kwat-shell-pad);
	transition: min-height var(--kwat-transition);
}

/* ── Sticky-Schrumpfen (JS setzt body.kwat-scrolled per Scroll-Hysterese) ─ */
body.kwat-scrolled .kwat-nav {
	background: color-mix(in srgb, var(--kwat-color-surface) 90%, transparent);
	box-shadow: var(--kwat-shadow-md);
	backdrop-filter: blur(10px);
}

body.kwat-scrolled .kwat-nav__inner {
	min-height: var(--kwat-nav-h-scrolled);
}

body.kwat-scrolled .kwat-nav__logo-img {
	height: 40px;
}

/* Eingeloggte Vorschau: WP-Adminleisten-Höhe als Variable setzen. Sie vererbt sich
   an Navigation UND Info-Leiste (egal ob `.admin-bar` an <html> oder <body> hängt),
   sodass beide korrekt darunter kleben. Besucher haben keine `.admin-bar` → 0px. */
.admin-bar {
	--kwat-adminbar: 32px;
}

@media screen and (max-width: 782px) {
	.admin-bar {
		--kwat-adminbar: 46px;
	}
}

/* ── Logo ────────────────────────────────────────────────────────────── */
.kwat-nav__brand {
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
	text-decoration: none;
}

.kwat-nav__logo-img {
	display: block;
	width: auto;
	height: clamp(48px, 5vw, 62px);
	transition: height var(--kwat-transition);
}

.kwat-nav__brand-text {
	font-family: var(--kwat-font-heading);
	font-size: var(--kwat-text-lg);
	font-weight: 700;
	color: var(--kwat-color-text);
}

/* ── Menü ────────────────────────────────────────────────────────────── */
.kwat-nav__menu {
	display: flex;
	flex: 1;
	flex-wrap: wrap;
	align-items: stretch;
	gap: clamp(0.125rem, 0.6vw, 0.5rem);
	margin: 0;
	padding: 0;
	list-style: none;
}

.kwat-nav__item {
	position: relative;
	display: flex;
	margin: 0;
}

.kwat-nav__link {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: var(--kwat-space-1);
	padding-inline: clamp(0.5rem, 1vw, 0.875rem);
	color: var(--kwat-color-text);
	font-size: var(--kwat-text-base);
	font-weight: 500;
	text-decoration: none;
}

/* Der Unterstrich sagt AUSSCHLIESSLICH „hier bist du" (Auftraggeber-Entscheidung).
   Dass ein Menü offen ist, zeigen der gedrehte Pfeil und die Karte am Messingreiter –
   zwei Signale für denselben Zustand wären eine Dopplung.
   Alle Leisten-Regeln hängen bewusst an `.kwat-nav__menu > .kwat-nav__item` – ohne
   diesen Anker greifen sie über die gleichen Klassennamen bis in die Karte und ins
   Mobil-Menü hinein. */
.kwat-nav__menu > .kwat-nav__item > .kwat-nav__link::after {
	content: "";
	position: absolute;
	left: clamp(0.5rem, 1vw, 0.875rem);
	right: clamp(0.5rem, 1vw, 0.875rem);
	bottom: 0;
	height: 3px;
	background: var(--kwat-color-accent-hover);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform var(--kwat-duration-base) var(--kwat-ease-emphasis);
}

/* Gilt auch für `current-menu-ancestor` (der Walker setzt `is-active` dafür mit):
   auf einer Unterseite sieht man dadurch, in welchem Bereich man steckt. */
.kwat-nav__menu > .kwat-nav__item > .kwat-nav__link.is-active::after {
	transform: scaleX(1);
}

/* Ein Punkt mit Karte endet vor seinem Aufklapp-Knopf. */
.kwat-nav__menu > .kwat-nav__item--has-children > .kwat-nav__link::after {
	right: 0;
}

@media (hover: hover) {
	/* Der Hover-Unterstrich bleibt den Punkten OHNE Karte vorbehalten – bei den
	   anderen wäre er das zweite Signal für dasselbe. */
	.kwat-nav__menu > .kwat-nav__item:not(.kwat-nav__item--has-children) > .kwat-nav__link:hover::after {
		transform: scaleX(1);
	}
}

/* ── Aufklapp-Knopf (Disclosure für Touch/Tastatur) ──────────────────── */
/* `flex: 0 0 auto` ist Pflicht: ohne das schrumpft der Knopf bei vielen Menüpunkten
   unter die 24px-Mindestfläche (WCAG 2.2, 2.5.8 – gemessen 24×34 statt 34×34). */
.kwat-nav__toggle {
	display: inline-grid;
	place-items: center;
	width: 34px;
	height: 34px;
	flex: 0 0 auto;
	align-self: center;
	margin-inline-end: var(--kwat-space-2);
	padding: 0;
	color: var(--kwat-color-accent);
	background: transparent;
	border: 0;
	border-radius: var(--kwat-radius-sm);
	cursor: pointer;
	transition: background var(--kwat-duration-base) var(--kwat-ease-standard);
}

.kwat-nav__caret {
	width: 0.8em;
	height: 0.8em;
	opacity: 0.75;
	transition: transform var(--kwat-duration-base) var(--kwat-ease-emphasis), opacity var(--kwat-duration-base);
}

.kwat-nav__toggle[aria-expanded="true"] {
	background: color-mix(in srgb, var(--kwat-color-accent) 14%, transparent);
}

.kwat-nav__toggle[aria-expanded="true"] .kwat-nav__caret {
	transform: rotate(180deg);
	opacity: 1;
}

@media (hover: hover) {
	.kwat-nav__toggle:hover {
		background: color-mix(in srgb, var(--kwat-color-accent) 14%, transparent);
	}

	.kwat-nav__toggle:hover .kwat-nav__caret {
		opacity: 1;
	}
}

/* ── Die Karteikarte (Entwurf `mockups/navigation-2.html`) ─────────────
   Warmes Papier am Messingreiter – dieselbe Sprache wie der Zettelkasten der
   Suchergebnisse. Kante, Abschnittslinie und Seitenmarke sind bewusst als `border`
   gebaut: im Windows-Kontrastmodus fallen Flächen und Schatten ersatzlos weg, Rahmen
   bleiben. Deshalb braucht die Karte dort keinen Sonderblock. */
.kwat-nav__card {
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 20;
	min-width: 16rem;
	max-width: 23rem;
	background: linear-gradient(160deg, var(--kwat-paper), var(--kwat-paper-2));
	color: var(--kwat-paper-ink);
	border: 1px solid var(--kwat-paper-rule);
	border-radius: 3px 3px 10px 10px;
	box-shadow:
		0 2px 0 color-mix(in srgb, #000 30%, transparent),
		0 18px 42px color-mix(in srgb, #000 62%, transparent);
}

/* Messingreiter – die sichtbare Verbindung zur Leiste. */
.kwat-nav__card::before {
	content: "";
	position: absolute;
	top: -7px;
	left: 22px;
	width: 74px;
	height: 9px;
	border-radius: 3px 3px 0 0;
	background: linear-gradient(180deg,
		color-mix(in srgb, var(--kwat-color-accent-hi) 60%, #fff),
		var(--kwat-color-accent) 55%,
		color-mix(in srgb, var(--kwat-color-accent) 60%, #000));
}

/* Eselsohr unten rechts. */
.kwat-nav__card::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0;
	width: 22px;
	height: 22px;
	border-radius: 0 0 10px 0;
	background: linear-gradient(135deg,
		transparent 48%,
		color-mix(in srgb, var(--kwat-paper-ink) 16%, transparent) 50%,
		var(--kwat-paper-2) 52%);
}

/* Am rechten Rand kippt die Karte an ihre rechte Kante, statt aus dem Bild zu laufen.
   Bewusst als feste Regel statt über die CSS-Ankerpositionierung: deren Ausweich-
   Fallbacks können den Messingreiter nicht mitführen, er säße dann auf der falschen
   Seite. Die Bedingung „ab dem vierten Punkt" schützt kurze Menüs, in denen die
   letzten Punkte noch links stehen. */
.kwat-nav__menu > .kwat-nav__item:nth-child(n + 4):nth-last-child(-n + 2) > .kwat-nav__card {
	left: auto;
	right: 0;
}

.kwat-nav__menu > .kwat-nav__item:nth-child(n + 4):nth-last-child(-n + 2) > .kwat-nav__card::before {
	left: auto;
	right: 22px;
}

.kwat-nav__card-body {
	padding: 16px 18px 18px;
}

.kwat-nav__card .kwat-nav__submenu,
.kwat-nav__card .kwat-nav__group-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.kwat-nav__card .kwat-nav__item {
	display: block;
}

.kwat-nav__card .kwat-nav__item + .kwat-nav__item {
	border-top: 1px solid color-mix(in srgb, var(--kwat-paper-rule) 55%, transparent);
}

/* Der Abschnitt bringt seine eigene Linie mit – zwischen ihm und dem Eintrag darüber
   stünden sonst zwei. */
.kwat-nav__card .kwat-nav__item--group + .kwat-nav__item,
.kwat-nav__card .kwat-nav__item--group {
	border-top: 0;
}

.kwat-nav__card .kwat-nav__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 10px 8px;
	margin-inline: -8px;
	border-radius: var(--kwat-radius-sm);
	color: var(--kwat-paper-ink);
	font-size: var(--kwat-text-base);
	font-weight: 400;
	transition: background var(--kwat-duration-base), color var(--kwat-duration-base);
}

/* Der Text nimmt die Restbreite. Ohne das schiebt `space-between` ihn zwischen
   Seitenmarke und Wegweiser in die MITTE der Karte, sobald einer von beiden da ist. */
.kwat-nav__card .kwat-nav__text {
	flex: 1 1 auto;
}

/* Wegweiser nach rechts, erscheint erst bei Hover. Der leere Alternativtext
   (`/ ""`) hält das Zeichen aus der Vorlesereihenfolge heraus. */
.kwat-nav__card .kwat-nav__link::after {
	content: "\203A" / "";
	color: var(--kwat-color-secondary);
	opacity: 0;
	transition: opacity var(--kwat-duration-base), transform var(--kwat-duration-base) var(--kwat-ease-emphasis);
}

/* Aktuelle Seite: Marine-Stempel. Gold hätte auf dem Papier nur 1,8:1. */
.kwat-nav__card .kwat-nav__link.is-active {
	color: var(--kwat-color-secondary);
	font-weight: 700;
}

.kwat-nav__card .kwat-nav__link.is-active::before {
	content: "";
	width: 0;
	height: 18px;
	margin-left: -6px;
	margin-right: 2px;
	border-left: 4px solid var(--kwat-color-secondary);
}

.kwat-nav__card .kwat-nav__link:focus-visible {
	outline: 3px solid var(--kwat-color-secondary);
	outline-offset: 1px;
}

@media (hover: hover) {
	.kwat-nav__card .kwat-nav__link:hover {
		background: color-mix(in srgb, var(--kwat-color-secondary) 9%, transparent);
		color: var(--kwat-color-secondary);
	}

	.kwat-nav__card .kwat-nav__link:hover::after {
		opacity: 1;
		transform: translateX(3px);
	}
}

/* Rückmeldung beim Antippen. Ein Finger kennt keinen Schwebezustand – ohne `:active`
   quittiert die Fläche eine Berührung gar nicht und fühlt sich tot an. Bewusst
   AUSSERHALB von `@media (hover: hover)`: genau die Geräte ohne Hover brauchen es. */
.kwat-nav__card .kwat-nav__link:active,
.kwat-nav__card .kwat-nav__group--link:active {
	background: color-mix(in srgb, var(--kwat-color-secondary) 16%, transparent);
	color: var(--kwat-color-secondary);
}

/* Abschnitt („Essen", „Trinken") = zweite Menü-Ebene mit eigenen Kindern. */
.kwat-nav__group {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 14px 0 4px;
	color: var(--kwat-color-secondary);
	font-size: var(--kwat-text-xs);
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
}

.kwat-nav__group::after {
	content: "";
	flex: 1;
	height: 0;
	border-top: 1px solid var(--kwat-paper-rule);
}

.kwat-nav__item--group:first-child .kwat-nav__group {
	margin-top: 2px;
}

.kwat-nav__group--link:focus-visible {
	outline: 3px solid var(--kwat-color-secondary);
	outline-offset: 2px;
}

/* Handschriftliche Notiz am Kartenfuß – gepflegt im Feld „Beschreibung" des
   Menüpunkts (Ansicht anpassen → Beschreibung). Ohne Eintrag entfällt sie, mit ihr
   kommt die Zicklinde aus dem Tab „Seite" (leer wählbar). */
.kwat-nav__note {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 12px 0 0;
	padding-top: 12px;
	border-top: 1px dashed var(--kwat-paper-rule);
	color: var(--kwat-paper-ink-soft);
	font-family: var(--kwat-paper-hand);
	font-size: 1.2rem;
	line-height: 1.3;
}

/* `flex: 0 0 auto` hält die Figur bei langer Notiz auf ihrer Breite – als Flex-Kind
   würde sie sonst zusammengedrückt. */
.kwat-nav__note-img {
	width: 34px;
	height: auto;
	flex: 0 0 auto;
}

/* Desktop: Hover blendet die Karte sanft ein – die Autorregel `display: block`
   schlägt das UA-`[hidden]{display:none}`. `allow-discrete` + `@starting-style`
   animieren auch den display-Wechsel. Tastatur/Touch öffnen über den Knopf
   (JS entfernt `hidden`), `:not([hidden])` hält es dann offen.
   ⚠️ KEIN `:focus-within` mehr: das öffnete die Karte, ohne dass `aria-expanded`
   mitkam – ein Screenreader meldete „zugeklappt" über einem offenen Menü. Den
   Tastaturfall übernimmt jetzt `navigation.js` (focusin/focusout), der den Zustand
   echt setzt statt ihn nur anzuzeigen. */
@media (min-width: 1024px) {
	.kwat-nav__card {
		opacity: 0;
		transform: translateY(-6px) rotate(-0.4deg);
		transition:
			opacity var(--kwat-duration-base) var(--kwat-ease-entrance),
			transform var(--kwat-duration-base) var(--kwat-ease-entrance),
			display var(--kwat-duration-base) allow-discrete;
	}

	.kwat-nav__item--has-children:hover > .kwat-nav__card,
	.kwat-nav__item--has-children > .kwat-nav__card:not([hidden]) {
		display: block;
		opacity: 1;
		transform: none;
	}

	@starting-style {
		.kwat-nav__item--has-children:hover > .kwat-nav__card,
		.kwat-nav__item--has-children > .kwat-nav__card:not([hidden]) {
			opacity: 0;
			transform: translateY(-6px) rotate(-0.4deg);
		}
	}
}

/* ── Tools / Reservieren-CTA ─────────────────────────────────────────── */
.kwat-nav__tools {
	display: flex;
	align-items: center;
	gap: var(--kwat-space-3);
	flex: 0 0 auto;
	margin-left: auto;
}

/* Die geteilte CTA-Basis-Optik (`.kwat-nav__cta`/`-icon`/`:hover`) liegt in
   shell-base.css (auch vom Hero genutzt); hier bleiben nur die Nav-/Botbar-
   spezifischen Varianten (`.kwat-nav__cta--bar`, `.kwat-botbar__book …`). */

/* ── Burger (Mobil-Auslöser) ─────────────────────────────────────────── */
/* Beschriftet statt reines Symbol: drei Striche allein sind gelernte Konvention,
   kein Wort. Das `aria-label` („Menü öffnen") enthält den sichtbaren Text – sonst
   verfehlt es WCAG 2.5.3 (Label in Name). */
.kwat-nav__burger {
	display: none;
	align-items: center;
	gap: var(--kwat-space-2);
	height: 44px;
	flex: 0 0 auto;
	padding: 0 14px;
	color: var(--kwat-color-accent-hover);
	background: color-mix(in srgb, var(--kwat-color-accent) 10%, transparent);
	border: 1px solid color-mix(in srgb, var(--kwat-color-accent) 40%, transparent);
	border-radius: 22px;
	font-family: inherit;
	font-size: var(--kwat-text-sm);
	font-weight: 600;
	cursor: pointer;
}

.kwat-nav__burger-icon {
	width: 1.15rem;
	height: 1.15rem;
	flex: 0 0 auto;
	color: var(--kwat-color-accent);
}

/* ── Mobil-Off-Canvas (<dialog>) ─────────────────────────────────────── */
.kwat-mobile {
	width: 100%;
	max-width: none;
	height: 100%;
	max-height: none;
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--kwat-color-text);
	font-family: var(--kwat-font-body);
	overflow: hidden;
}

.kwat-mobile:not([open]) {
	display: none;
}

/* Kräftiger als die 66 % des Entwurfs: dort lag hinter dem Kasten eine leere Fläche,
   live das helle Hero-Foto – man las Bildtexte zwischen den Karten hindurch mit.
   Bewusst OHNE `backdrop-filter`: der verwischt auch die Leiste, die im Entwurf scharf
   stehen bleibt (probiert und verworfen). */
.kwat-mobile::backdrop {
	background: color-mix(in srgb, #000 78%, transparent);
}

/* Der Karteikasten hat eine FESTE Höhe – oben unter der Leiste verankert, unten am
   Fensterrand. Wüchse er mit dem Inhalt, schöbe jedes Aufklappen den Kopf samt
   Schließen-Knopf nach oben und das Menü „spränge" bei jedem Tippen. */
.kwat-mobile__box {
	position: fixed;
	inset-block-start: calc(var(--kwat-adminbar, 0px) + var(--kwat-nav-h) + 2 * var(--kwat-nav-rule));
	inset-block-end: calc(1.75rem + env(safe-area-inset-bottom, 0px));
	inset-inline: 0.625rem;
	display: flex;
	flex-direction: column;
	gap: 6px;
	transition: transform var(--kwat-duration-base) var(--kwat-ease-entrance), opacity var(--kwat-duration-base);
}

/* Beim Scrollen schrumpft die Leiste, der Kasten rückt mit. */
body.kwat-scrolled .kwat-mobile__box {
	inset-block-start: calc(var(--kwat-adminbar, 0px) + var(--kwat-nav-h-scrolled) + 2 * var(--kwat-nav-rule));
}

/* Zwischen 768px und der Desktop-Grenze steht die Info-Leiste über der Navigation
   (darunter ist sie ausgeblendet) – ihre Höhe kommt oben dazu. */
@media (min-width: 768px) {
	body.kwat-has-prenav:not(.kwat-scrolled) .kwat-mobile__box {
		inset-block-start: calc(var(--kwat-adminbar, 0px) + var(--kwat-prenav-h, 42px) + var(--kwat-nav-h) + 2 * var(--kwat-nav-rule));
	}
}

@starting-style {
	.kwat-mobile[open] .kwat-mobile__box {
		transform: translateY(12px);
		opacity: 0;
	}
}

.kwat-mobile__head {
	display: flex;
	align-items: center;
	gap: var(--kwat-space-3);
	flex: 0 0 auto;
	padding: 10px 4px;
}

.kwat-mobile__title {
	flex: 1;
	font-family: var(--kwat-font-heading);
	font-size: var(--kwat-text-lg);
	font-weight: 700;
	color: var(--kwat-color-accent-hover);
}

.kwat-mobile__close {
	display: inline-grid;
	place-items: center;
	width: 44px;
	height: 44px;
	flex: 0 0 auto;
	padding: 0;
	color: var(--kwat-color-text);
	background: transparent;
	border: 1px solid var(--kwat-color-border-strong);
	border-radius: 50%;
	cursor: pointer;
}

.kwat-mobile__close svg {
	width: 1.2rem;
	height: 1.2rem;
}

/* Nur diese Spur scrollt; Kopf und Knopfreihe stehen still.
   `scrollbar-gutter: stable both-edges` hält den Platz des Balkens IMMER frei –
   sonst würden die Karten in dem Moment schmaler, in dem er auftaucht.
   ⛔ NIEMALS `scrollbar-width: none`: ein unsichtbarer Balken nimmt den einzigen
   Hinweis, dass die Liste weitergeht. */
.kwat-mobile__stack {
	flex: 1 1 auto;
	min-height: 0;
	overflow-y: auto;
	/* Am Listenende nicht auf die Seite dahinter durchscrollen. */
	overscroll-behavior: contain;
	padding-bottom: 2px;
	scrollbar-gutter: stable both-edges;
	scrollbar-width: thin;
	scrollbar-color: color-mix(in srgb, var(--kwat-color-accent) 62%, #000) transparent;
}

.kwat-mobile__menu {
	display: flex;
	flex-direction: column;
	gap: 11px;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* Jeder Hauptpunkt ist eine Karte – gestapelt ergibt das den Karteikasten. Der
   Reiter sitzt OBEN wie auf der Desktop-Karte (dieselbe Metapher, eine Position). */
.kwat-mobile__menu > .kwat-nav__item {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	flex: 0 0 auto;
	background: linear-gradient(160deg, var(--kwat-paper), var(--kwat-paper-2));
	color: var(--kwat-paper-ink);
	border: 1px solid var(--kwat-paper-rule);
	border-radius: 10px 10px 3px 3px;
	box-shadow: 0 -3px 14px color-mix(in srgb, #000 45%, transparent);
}

.kwat-mobile__menu > .kwat-nav__item::before {
	content: "";
	position: absolute;
	top: -6px;
	left: 18px;
	width: 54px;
	height: 7px;
	border-radius: 3px 3px 0 0;
	background: linear-gradient(180deg,
		color-mix(in srgb, var(--kwat-color-accent-hi) 60%, #fff),
		var(--kwat-color-accent) 55%,
		color-mix(in srgb, var(--kwat-color-accent) 60%, #000));
}

.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__link {
	flex: 1 1 auto;
	min-height: 56px;
	padding-inline: 16px;
	color: var(--kwat-paper-ink);
	font-size: var(--kwat-text-lg);
}

.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__link.is-active {
	color: var(--kwat-color-secondary);
	font-weight: 700;
}

.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__toggle {
	width: 44px;
	height: 44px;
	margin-inline-end: 8px;
	color: var(--kwat-color-secondary);
}

.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__toggle[aria-expanded="true"] {
	background: color-mix(in srgb, var(--kwat-color-secondary) 12%, transparent);
}

/* Der Kartenkopf reagierte bisher auf gar nichts: die Hover-Regel der Karte greift
   nur für Einträge IN ihr, nicht für den Kopf. Mit Maus am schmalen Fenster war er
   damit die einzige tote Fläche im Kasten. */
@media (hover: hover) {
	.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__link:hover,
	.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__toggle:hover {
		background: color-mix(in srgb, var(--kwat-color-secondary) 8%, transparent);
		color: var(--kwat-color-secondary);
	}
}

.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__link:active,
.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__toggle:active {
	background: color-mix(in srgb, var(--kwat-color-secondary) 16%, transparent);
	color: var(--kwat-color-secondary);
}

/* Im Kasten ist die Karte kein schwebendes Blatt mehr, sondern der Innenraum der
   Papierkarte – Reiter und Eselsohr fallen weg, die Karte selbst trägt sie. */
.kwat-mobile__menu .kwat-nav__card {
	position: static;
	flex-basis: 100%;
	min-width: 0;
	max-width: none;
	background: none;
	border: 0;
	border-radius: 0;
	box-shadow: none;
}

/* Sanftes Aufschieben statt Sprung. `interpolate-size` erlaubt die Überblendung von
   `0` auf `auto` – ohne das ist eine Höhen-Animation auf Inhalt unbekannter Größe
   nicht möglich (früher der Grund für JS-Messungen). Bewusst hier statt am `:root`:
   die Eigenschaft vererbt sich, und sie soll nur den Kasten betreffen.
   Im geschlossenen Zustand nimmt `content-visibility: hidden` den Inhalt aus Tastatur
   UND Screenreader – `block-size: 0` allein ließe die Links weiter anspringbar. */
.kwat-mobile {
	interpolate-size: allow-keywords;
}

@media (max-width: 1023px) {
	.kwat-mobile__menu .kwat-nav__card {
		display: block;
		block-size: auto;
		overflow: hidden;
		transition:
			block-size var(--kwat-duration-base) var(--kwat-ease-standard),
			content-visibility var(--kwat-duration-base) allow-discrete;
	}

	.kwat-mobile__menu .kwat-nav__card[hidden] {
		block-size: 0;
		content-visibility: hidden;
	}
}

.kwat-mobile__menu .kwat-nav__card::before,
.kwat-mobile__menu .kwat-nav__card::after {
	content: none;
}

.kwat-mobile__menu .kwat-nav__card-body {
	padding: 0 14px 12px;
}

/* 48px Trefferfläche im Kasten (Daumen statt Mauszeiger). */
.kwat-mobile__menu .kwat-nav__card .kwat-nav__link {
	min-height: 48px;
}

.kwat-mobile__foot {
	display: flex;
	gap: 10px;
	flex: 0 0 auto;
	padding-top: 8px;
}

.kwat-mobile__cta {
	flex: 1;
	justify-content: center;
}

/* Auf dem Papier wäre der goldene Fokusring aus `shell-a11y.css` unbrauchbar (1,8:1) –
   was auf der Karte sitzt, bekommt den marineblauen. */
.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__link:focus-visible,
.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__toggle:focus-visible,
.kwat-mobile__menu .kwat-nav__group--link:focus-visible {
	outline: 3px solid var(--kwat-color-secondary);
	outline-offset: -3px;
}

.kwat-mobile__call {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0 16px;
	color: var(--kwat-color-accent-hover);
	background: color-mix(in srgb, var(--kwat-color-accent) 12%, transparent);
	border: 1px solid color-mix(in srgb, var(--kwat-color-accent) 45%, transparent);
	border-radius: var(--kwat-radius-md);
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}

/* Antipp-Rückmeldung auch für die Knöpfe der Hülle (siehe oben: Touch hat kein Hover). */
.kwat-nav__burger:active,
.kwat-mobile__close:active,
.kwat-mobile__call:active,
.kwat-nav__toggle:active {
	background: color-mix(in srgb, var(--kwat-color-accent) 26%, transparent);
}

/* ── Flaches Fenster (400 % Zoom, Querlage) ──────────────────────────────
   Bei 320×256 CSS-Pixeln – dem Maß, das WCAG 1.4.10 für 400 % Zoom vorgibt –
   blieben zwischen Leiste, Kopf und Knopfreihe **7px** für die Kartenspur übrig:
   das Menü war da, aber nicht bedienbar (gemessen). Hier deckt der Kasten die
   Leiste mit ab und Kopf/Fuß werden flacher. */
@media (max-height: 480px) {
	.kwat-mobile__box,
	body.kwat-scrolled .kwat-mobile__box,
	body.kwat-has-prenav:not(.kwat-scrolled) .kwat-mobile__box {
		inset-block-start: calc(var(--kwat-adminbar, 0px) + 0.5rem);
		inset-block-end: 0.5rem;
	}

	.kwat-mobile__head {
		padding: 2px 4px;
	}

	.kwat-mobile__foot {
		padding-top: 4px;
	}

	.kwat-mobile__cta,
	.kwat-mobile__call {
		min-height: 40px;
	}

	.kwat-mobile__menu {
		gap: 8px;
	}

	.kwat-mobile__menu > .kwat-nav__item > .kwat-nav__link {
		min-height: 44px;
	}
}

/* ── Mobile Aktionsleiste unten (Daumenzone) ─────────────────────────── */
/* Hält den Reservieren-Knopf auf dem Handy dauerhaft erreichbar (Muster wie
   KW Lobby). Fix unten, nur < 1024px; `env(safe-area-inset-bottom)` für Notch.
   Das Body-Padding (`.kwat-has-botbar`) verhindert, dass sie Inhalt verdeckt. */
.kwat-botbar {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 90;
	display: none;
	align-items: center;
	gap: var(--kwat-space-3);
	padding: var(--kwat-space-3) var(--kwat-shell-pad);
	padding-bottom: calc(var(--kwat-space-3) + env(safe-area-inset-bottom, 0px));
	background: color-mix(in srgb, var(--kwat-color-surface) 90%, transparent);
	backdrop-filter: blur(12px);
	border-top: 1px solid color-mix(in srgb, var(--kwat-color-accent) 45%, transparent);
	box-shadow: 0 -10px 30px color-mix(in srgb, #000 45%, transparent);
}

/* Reservieren = primär, füllt die Restbreite. */
.kwat-botbar__book {
	flex: 1 1 auto;
	justify-content: center;
	min-height: 50px;
}

/* Anrufen = sekundär (Gold-Outline), feste Breite links. */
.kwat-botbar__call {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--kwat-space-2);
	flex: 0 0 auto;
	min-height: 50px;
	min-width: 50px;
	padding: 0 var(--kwat-space-3);
	color: var(--kwat-color-accent);
	background: color-mix(in srgb, var(--kwat-color-accent) 12%, transparent);
	border: 1px solid color-mix(in srgb, var(--kwat-color-accent) 45%, transparent);
	border-radius: var(--kwat-radius-md);
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
	transition: background var(--kwat-transition);
}

.kwat-botbar__call-icon {
	width: 1.2em;
	height: 1.2em;
	flex: 0 0 auto;
}

.kwat-botbar__book .kwat-nav__cta-text {
	white-space: nowrap;
}

@media (hover: hover) {
	.kwat-botbar__call:hover {
		background: color-mix(in srgb, var(--kwat-color-accent) 20%, transparent);
	}
}

/* Nur sehr schmal (< 360px): Anruf-Knopf als reines Icon – das aria-label trägt
   die Bedeutung („Anrufen: <Nummer>") weiter. Ab 360px steht „Anrufen" daneben. */
@media (max-width: 359px) {
	.kwat-botbar__call-text {
		display: none;
	}
}

/* ── Responsiv: ab 1024px Inline-Menü; darunter Burger, Off-Canvas, Bottom-Bar ── */
@media (max-width: 1023px) {
	.kwat-nav__menu {
		display: none;
	}

	.kwat-nav__burger {
		display: inline-flex;
	}

	/* Reservieren wandert aus der Kopfleiste in die untere Aktionsleiste. */
	.kwat-nav__cta--bar {
		display: none;
	}

	.kwat-botbar {
		display: flex;
	}

	/* Solange der Karteikasten offen ist, verschwindet die untere Aktionsleiste: der
	   Kasten trägt dieselben zwei Knöpfe selbst. Sie stehen zu lassen hieße, sie zweimal
	   zu zeigen – und die untere wäre nicht einmal bedienbar, weil ein modaler <dialog>
	   alles außerhalb für Klicks sperrt. */
	body:has(.kwat-mobile[open]) .kwat-botbar {
		display: none;
	}

	.kwat-has-botbar {
		padding-bottom: calc(var(--kwat-botbar-h) + env(safe-area-inset-bottom, 0px));
	}
}

