/*
 * Bewusst zurückhaltend. Farben kommen über CSS-Variablen, damit das
 * „Untertage"-CSS im Customizer sie überschreiben kann, ohne dass hier
 * jemand nachbessern muss.
 */

.bwv {
	--bwv-grund: #0b0906;
	--bwv-hell: #ede4d3;
	--bwv-amber: #dda75b;
	--bwv-kupfer: #b3652e;
	--bwv-linie: rgba(237, 228, 211, 0.22);

	max-width: 46rem;
	margin: 2rem 0;
	padding: 1.75rem;
	border: 1px solid var(--bwv-linie);
	/* Deckend, nicht halbtransparent: Der Kasten muss auch auf einer hellen
	   Seite lesbar sein, sonst wird aus dem Untertage-Braun ein Grau-Brei. */
	background: var(--bwv-grund);
	color: var(--bwv-hell);
	line-height: 1.55;
}

.bwv__titel {
	margin: 0 0 0.35rem;
	font-size: 1.35rem;
	letter-spacing: 0.01em;
	color: var(--bwv-hell);
}

.bwv a,
.bwv__link {
	color: var(--bwv-amber);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.bwv a:hover,
.bwv__link:hover {
	color: #f0c489;
}

.bwv__hinweis {
	margin: 0 0 1.5rem;
	opacity: 0.8;
	font-size: 0.95rem;
}

.bwv__fehler {
	margin: 0 0 1.25rem;
	padding: 0.7rem 0.9rem;
	border-left: 3px solid var(--bwv-kupfer);
	background: rgba(179, 101, 46, 0.14);
}

.bwv__feld {
	margin: 0 0 1rem;
}

.bwv__feld label {
	display: block;
	margin-bottom: 0.3rem;
	font-size: 0.82rem;
	text-transform: uppercase;
	letter-spacing: 0.09em;
	opacity: 0.75;
}

.bwv__feld input,
.bwv__feld select {
	width: 100%;
	padding: 0.65rem 0.75rem;
	border: 1px solid var(--bwv-linie);
	border-radius: 0;
	background: rgba(0, 0, 0, 0.28);
	color: var(--bwv-hell);
	font: inherit;
	font-size: 1rem;
}

.bwv__feld input:focus,
.bwv__feld select:focus {
	outline: 2px solid var(--bwv-amber);
	outline-offset: 1px;
}

.bwv__zeile {
	display: flex;
	gap: 1rem;
}

.bwv__zeile .bwv__feld {
	flex: 1;
}

/* Honeypot — für Menschen unsichtbar, für Bots verlockend. */
.bwv__hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.bwv__aktion {
	margin: 1.5rem 0 0;
}

.bwv__btn {
	display: inline-block;
	padding: 0.8rem 1.6rem;
	border: 0;
	background: var(--bwv-amber);
	color: #1b1409;
	font: inherit;
	font-size: 0.95rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	cursor: pointer;
}

.bwv__btn:hover {
	background: #e9b972;
}

.bwv__btn--leise {
	background: transparent;
	border: 1px solid var(--bwv-linie);
	color: var(--bwv-hell);
	font-weight: 400;
	text-transform: none;
	letter-spacing: 0;
	opacity: 0.7;
}

.bwv__btn--leise:hover {
	background: rgba(237, 228, 211, 0.08);
}

.bwv__daten {
	margin: 1.5rem 0;
	padding: 0;
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.4rem 1.5rem;
}

.bwv__daten dt {
	font-size: 0.78rem;
	text-transform: uppercase;
	letter-spacing: 0.09em;
	opacity: 0.65;
	align-self: center;
}

.bwv__daten dd {
	margin: 0;
	font-size: 1.05rem;
}

.bwv__nummer {
	margin: 1.5rem 0;
	padding: 1rem 1.25rem;
	border: 1px dashed var(--bwv-linie);
	text-align: center;
}

.bwv__nummer span {
	display: block;
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	opacity: 0.65;
	margin-bottom: 0.3rem;
}

.bwv__nummer strong {
	font-size: 2rem;
	letter-spacing: 0.18em;
	font-weight: 600;
}

.bwv__info {
	margin: 0.75rem 0;
	font-size: 0.92rem;
	opacity: 0.85;
}

.bwv__info--klein {
	font-size: 0.84rem;
	opacity: 0.65;
}

.bwv__storno {
	margin-top: 2rem;
	padding-top: 1.25rem;
	border-top: 1px solid var(--bwv-linie);
}

.bwv__leer,
.bwv__kontakt {
	margin: 0.5rem 0;
}

@media (max-width: 40rem) {
	.bwv {
		padding: 1.25rem;
	}
	.bwv__zeile {
		display: block;
	}
}

/* Die Bestätigung muss sich sauber ausdrucken lassen — sie ist der
   Nachweis, wenn die Mail im Spam hängt. */
@media print {
	.bwv {
		border: 1px solid #000;
		background: #fff;
		color: #000;
	}
	.bwv__aktion--drucken,
	.bwv__storno {
		display: none;
	}
}

/* ------------------------------------------------------------------ 1.2.0 */

/* Kalender-Auswahl. Das Dropdown bleibt als stiller Träger im Formular —
   JavaScript versteckt es nur, entfernt es nie. */

.bwv__picker--js .bwv__feld--versteckt {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.bwv__kallabel {
	display: block;
	margin-bottom: 0.3rem;
	font-size: 0.82rem;
	text-transform: uppercase;
	letter-spacing: 0.09em;
	opacity: 0.75;
}

.bwv__kalhinweis {
	display: block;
	font-size: 0.84rem;
	opacity: 0.6;
	margin-bottom: 0.5rem;
}

.bwv__kalender {
	border: 1px solid var(--bwv-linie);
	padding: 0.75rem;
	background: rgba(0, 0, 0, 0.28);
}

.bwv-kal__kopf {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 0.6rem;
}

.bwv-kal__monat {
	font-size: 1rem;
	letter-spacing: 0.03em;
}

.bwv-kal__nav {
	border: 1px solid var(--bwv-linie);
	background: transparent;
	color: var(--bwv-hell);
	font-size: 1.2rem;
	line-height: 1;
	width: 2.1rem;
	height: 2.1rem;
	cursor: pointer;
}

.bwv-kal__nav:disabled {
	opacity: 0.25;
	cursor: default;
}

.bwv-kal__nav:not(:disabled):hover {
	border-color: var(--bwv-amber);
	color: var(--bwv-amber);
}

.bwv-kal__grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 0.25rem;
}

.bwv-kal__wtag {
	text-align: center;
	font-size: 0.7rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	opacity: 0.55;
	padding: 0.2rem 0;
}

.bwv-kal__tag {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	border: 0;
	background: transparent;
	color: var(--bwv-hell);
	font: inherit;
	font-size: 0.95rem;
	text-align: center;
}

.bwv-kal__tag--leer {
	opacity: 0.3;
	display: flex;
	align-items: center;
	justify-content: center;
}

.bwv-kal__tag--frei {
	border: 1px solid var(--bwv-linie);
	cursor: pointer;
	font-weight: 600;
	color: var(--bwv-amber);
}

.bwv-kal__tag--frei:hover {
	border-color: var(--bwv-amber);
	background: rgba(221, 167, 91, 0.12);
}

.bwv-kal__tag--voll {
	color: var(--bwv-kupfer);
}

.bwv-kal__tag--gewaehlt,
.bwv-kal__tag--gewaehlt:hover {
	background: var(--bwv-amber);
	border-color: var(--bwv-amber);
	color: #1b1409;
}

.bwv__zeiten {
	margin-top: 1rem;
}

.bwv-zeit__reihe {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.bwv-zeit__btn {
	border: 1px solid var(--bwv-linie);
	background: rgba(0, 0, 0, 0.28);
	color: var(--bwv-hell);
	font: inherit;
	font-size: 0.95rem;
	padding: 0.6rem 1rem;
	cursor: pointer;
}

.bwv-zeit__btn:hover {
	border-color: var(--bwv-amber);
}

.bwv-zeit__btn--voll {
	color: var(--bwv-kupfer);
}

.bwv-zeit__btn--gewaehlt,
.bwv-zeit__btn--gewaehlt:hover {
	background: var(--bwv-amber);
	border-color: var(--bwv-amber);
	color: #1b1409;
	font-weight: 600;
}

.bwv__fehler--wl {
	margin-top: 1rem;
}

/* Popup. Liegt über allem, auch über dem schwebenden Knappen. */

.bwv-modal {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: 3vh 1rem;
}

.bwv-modal[hidden] {
	display: none;
}

.bwv-modal__hinter {
	position: absolute;
	inset: 0;
	background: rgba(4, 3, 2, 0.78);
}

.bwv-modal__kasten {
	position: relative;
	max-width: 46rem;
	width: 100%;
	max-height: 94vh;
	overflow-y: auto;
	box-shadow: 0 12px 48px rgba(0, 0, 0, 0.6);
}

.bwv-modal__kasten .bwv {
	margin: 0;
	max-width: none;
}

.bwv-modal__zu {
	position: absolute;
	top: 0.4rem;
	right: 0.4rem;
	z-index: 2;
	width: 2.4rem;
	height: 2.4rem;
	border: 0;
	background: transparent;
	color: var(--bwv-hell, #ede4d3);
	font-size: 1.8rem;
	line-height: 1;
	cursor: pointer;
	opacity: 0.7;
}

.bwv-modal__zu:hover {
	opacity: 1;
	color: #dda75b;
}

body.bwv-modal-offen {
	overflow: hidden;
}

/* Führereinteilung */

.bwv__ok {
	margin: 0 0 1.25rem;
	padding: 0.7rem 0.9rem;
	border-left: 3px solid var(--bwv-amber);
	background: rgba(221, 167, 91, 0.14);
}

.bwv-plan__monat {
	margin: 1.75rem 0 0.5rem;
	font-size: 0.85rem;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	opacity: 0.65;
}

.bwv-plan__zeile {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.75rem 0.5rem;
	border-bottom: 1px solid var(--bwv-linie);
}

.bwv-plan__zeile--meiner {
	background: rgba(221, 167, 91, 0.08);
	border-left: 3px solid var(--bwv-amber);
}

.bwv-plan__zeile--frei {
	border-left: 3px solid var(--bwv-kupfer);
}

.bwv-plan__info strong {
	display: block;
}

.bwv-plan__zahlen {
	font-size: 0.84rem;
	opacity: 0.7;
}

.bwv-plan__zusatz {
	display: inline-block;
	margin: 0.15rem 0;
	padding: 0.05rem 0.5rem;
	border: 1px solid var(--bwv-kupfer);
	color: var(--bwv-kupfer);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.bwv-plan__wer {
	font-size: 0.9rem;
	color: var(--bwv-amber);
	white-space: nowrap;
}

.bwv-plan__wer--andere {
	color: var(--bwv-hell);
	opacity: 0.7;
}

.bwv-plan__aktion {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	flex-shrink: 0;
}

.bwv-plan__aktion form {
	margin: 0;
}

.bwv__btn--klein {
	padding: 0.5rem 1rem;
	font-size: 0.85rem;
}

@media (max-width: 40rem) {
	.bwv-plan__zeile {
		flex-direction: column;
		align-items: flex-start;
	}
}

.bwv__kalhinweis--fehlt {
	color: var(--bwv-kupfer);
	opacity: 1;
	font-weight: 600;
}

/* ------------------------------------------------------------------ 1.3.0 */

/* Der Schliessen-Knopf lag im scrollenden Kasten und war auf dem Handy
   nach ein paar Fingerbewegungen weg. Jetzt klebt er oben. */
.bwv-modal__zu {
	position: sticky;
	float: right;
	top: 0.4rem;
	right: 0.4rem;
	margin-bottom: -2.4rem;
}

/* Tastaturfokus muss man sehen — sonst nützt die Bedienbarkeit nichts. */
.bwv-kal__tag--frei:focus-visible,
.bwv-zeit__btn:focus-visible,
.bwv-kal__nav:focus-visible,
.bwv-modal__zu:focus-visible,
.bwv-plan__filter a:focus-visible,
.bwv__btn:focus-visible {
	outline: 2px solid var(--bwv-amber, #dda75b);
	outline-offset: 2px;
}

/* Für Screenreader, nicht fürs Auge. */
.bwv__stand {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

/* Führerplan: Ansichtswechsel */
.bwv-plan__filter {
	display: flex;
	gap: 0.5rem;
	flex-wrap: wrap;
	margin: 1.5rem 0 0.75rem;
}

.bwv-plan__filter a {
	flex: 1 1 auto;
	text-align: center;
	padding: 0.65rem 1rem;
	border: 1px solid var(--bwv-linie);
	color: var(--bwv-hell);
	text-decoration: none;
	font-size: 0.9rem;
	white-space: nowrap;
}

.bwv-plan__filter a:hover {
	border-color: var(--bwv-amber);
	color: var(--bwv-amber);
}

.bwv-plan__filter a.ist-aktiv {
	background: var(--bwv-amber);
	border-color: var(--bwv-amber);
	color: #1b1409;
	font-weight: 600;
}

.bwv-plan__fenster {
	margin: 0 0 0.5rem;
	font-size: 0.84rem;
	opacity: 0.65;
}

/* „fix" — kurz vor der Führung nicht mehr selbst austragbar */
.bwv-plan__fest {
	display: inline-block;
	padding: 0.15rem 0.6rem;
	border: 1px dashed var(--bwv-linie);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	opacity: 0.6;
}

/* Handy: Zeilen im Plan brauchen Luft, Knöpfe volle Breite */
@media (max-width: 40rem) {
	.bwv-plan__zeile {
		gap: 0.6rem;
		padding: 0.9rem 0.4rem;
	}
	.bwv-plan__aktion {
		width: 100%;
		justify-content: space-between;
	}
	.bwv-plan__aktion form {
		flex: 0 0 auto;
	}
	.bwv-zeit__btn {
		flex: 1 1 45%;
	}
	.bwv-modal {
		padding: 0;
	}
	.bwv-modal__kasten {
		max-height: 100vh;
		max-height: 100dvh;
	}
}

/* Führungsart und Preis am Uhrzeit-Knopf — der Gast soll vor dem Buchen
   sehen, dass die Mittwochsrunde länger dauert und mehr kostet. */
.bwv-zeit__btn {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	text-align: left;
	line-height: 1.3;
}

.bwv-zeit__uhr { font-weight: 600; }

.bwv-zeit__art,
.bwv-zeit__preis {
	font-size: 0.78rem;
	opacity: 0.72;
}

.bwv-zeit__btn--gewaehlt .bwv-zeit__art,
.bwv-zeit__btn--gewaehlt .bwv-zeit__preis { opacity: 0.85; }

.bwv__preis {
	font-size: 0.85rem;
	opacity: 0.75;
}

.bwv-plan__art {
	display: block;
	font-size: 0.8rem;
	opacity: 0.7;
}

/* ====================================================================
   QR auf der Bestätigung
   ==================================================================== */

.bwv__qr {
	margin: 1.6rem 0;
	padding: 1.2rem;
	border: 1px solid var(--bwv-linie);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.7rem;
	text-align: center;
}

.bwv__qr-bild {
	width: 200px;
	max-width: 62vw;
	background: #fff;
	padding: 8px;
	line-height: 0;
}

.bwv__qr-bild svg { width: 100%; height: auto; display: block; }

.bwv__qr-nr {
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
}

.bwv__qr-nr span {
	font-family: var(--bwv-mono, monospace);
	font-size: 0.68rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	opacity: 0.7;
}

.bwv__qr-nr strong {
	font-family: var(--bwv-mono, monospace);
	font-size: 1.5rem;
	letter-spacing: 0.22em;
}

.bwv__qr-hin {
	margin: 0;
	font-size: 0.8rem;
	opacity: 0.75;
	max-width: 34ch;
}

/* ====================================================================
   Einchecken am Stollen
   ==================================================================== */

.bwv-scan__netz { margin-left: 0.4rem; }
.bwv-scan__netz--an { color: #7fbf7f; }
.bwv-scan__netz--aus { color: var(--bwv-amber); }
.bwv-scan__netz--warten { color: var(--bwv-amber); }

/* Der Kasten bekommt vom Skript das Seitenverhältnis der Kamera. Bis dahin
   ein vernünftiger Startwert, damit die Seite nicht springt. */
.bwv-scan__kamera {
	position: relative;
	margin: 1rem 0;
	background: #000;
	border: 1px solid var(--bwv-linie);
	aspect-ratio: 3 / 4;
	max-height: 68vh;
	overflow: hidden;
}

@media (min-width: 700px) {
	.bwv-scan__kamera { aspect-ratio: 4 / 3; }
}

.bwv-scan__kamera video {
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
	background: #000;
}


.bwv-scan__rahmen {
	position: absolute;
	inset: 18%;
	border: 2px solid rgba(221, 167, 91, 0.85);
	border-radius: 6px;
	box-shadow: 0 0 0 100vmax rgba(0, 0, 0, 0.35);
}

.bwv-scan__meldung {
	display: none;
	gap: 0.8rem;
	align-items: flex-start;
	padding: 1rem 1.1rem;
	margin: 1rem 0;
	border-left: 3px solid var(--bwv-linie);
	line-height: 1.45;
}

.bwv-scan__meldung--gut,
.bwv-scan__meldung--schon,
.bwv-scan__meldung--warten,
.bwv-scan__meldung--schlecht { display: flex; }

.bwv-scan__meldung--gut { border-left-color: #7fbf7f; background: rgba(127, 191, 127, 0.10); }
.bwv-scan__meldung--schon { border-left-color: var(--bwv-amber); background: rgba(221, 167, 91, 0.10); }
.bwv-scan__meldung--warten { border-left-color: var(--bwv-amber); background: rgba(221, 167, 91, 0.07); }
.bwv-scan__meldung--schlecht { border-left-color: #d4705f; background: rgba(212, 112, 95, 0.12); }

.bwv-scan__zeichen { font-size: 1.5rem; line-height: 1; }

/* Handeingabe: absichtlich gross. Das wird mit kalten Fingern bedient. */
.bwv-scan__hand { margin: 1.4rem 0; }

.bwv-scan__hand label {
	display: block;
	font-family: var(--bwv-mono, monospace);
	font-size: 0.68rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	opacity: 0.75;
	margin-bottom: 0.4rem;
}

.bwv-scan__handzeile { display: flex; gap: 0.6rem; }

.bwv-scan__handzeile input {
	flex: 1;
	min-width: 0;
	padding: 0.9rem;
	font-family: var(--bwv-mono, monospace);
	font-size: 1.4rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	background: transparent;
	border: 1px solid var(--bwv-linie);
	color: inherit;
}

.bwv-scan__liste { margin-top: 2rem; }

.bwv-scan__kopf {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 1rem;
	border-bottom: 1px solid var(--bwv-linie);
	padding-bottom: 0.5rem;
	margin-bottom: 0.3rem;
}

.bwv-scan__zahl {
	font-family: var(--bwv-mono, monospace);
	font-size: 0.78rem;
	opacity: 0.8;
}

.bwv-scan__liste ul { list-style: none; margin: 0; padding: 0; }

.bwv-scan__zeile {
	display: grid;
	grid-template-columns: 1.6rem 1fr auto auto;
	gap: 0.8rem;
	align-items: center;
	padding: 0.85rem 0;
	border-bottom: 1px solid var(--bwv-linie);
	cursor: pointer;
}

.bwv-scan__zeile--da { opacity: 0.5; }
.bwv-scan__zeile--da .bwv-scan__name { text-decoration: line-through; }
.bwv-scan__haken { font-size: 1.1rem; }
.bwv-scan__zeile--da .bwv-scan__haken { color: #7fbf7f; }
.bwv-scan__pers { font-family: var(--bwv-mono, monospace); opacity: 0.8; }

.bwv-scan__nr {
	font-family: var(--bwv-mono, monospace);
	font-size: 0.78rem;
	letter-spacing: 0.12em;
	opacity: 0.6;
}

@media (max-width: 560px) {
	.bwv-scan__zeile { grid-template-columns: 1.4rem 1fr auto; }
	.bwv-scan__nr { display: none; }
}

/* Im Ausdruck ist der QR die Hauptsache — schwarz auf weiss, gross genug,
   dass ihn auch eine mässige Handykamera im Halbdunkel noch findet. */
@media print {
	.bwv__qr {
		border: 1px solid #000;
		break-inside: avoid;
	}
	.bwv__qr-bild {
		width: 52mm;
		padding: 0;
		background: #fff;
	}
	.bwv__qr-nr strong { color: #000; }
	.bwv-scan__kamera,
	.bwv-scan__hand { display: none; }
}


/* Der Kassenbetrag im Scanner. Gross, weil am Pult niemand liest. */
.bwv-scan__kasse {
	display: block;
	margin-top: 0.7rem;
	font-family: var(--bwv-mono, monospace);
	font-size: 1.9rem;
	line-height: 1.15;
	color: var(--bwv-amber);
}

.bwv-scan__kasse small {
	display: block;
	font-size: 0.78rem;
	opacity: 0.8;
	color: inherit;
	letter-spacing: 0.04em;
}

.bwv-scan__kasse .bwv-scan__fam { opacity: 0.95; }

.bwv-scan__kasseoffen {
	margin: 0 0 0.6rem;
	font-family: var(--bwv-mono, monospace);
	font-size: 0.8rem;
	letter-spacing: 0.06em;
	opacity: 0.85;
}

.bwv-scan__zeile { grid-template-columns: 1.6rem 1fr auto; }

.bwv-scan__name small {
	display: block;
	font-family: var(--bwv-mono, monospace);
	font-size: 0.72rem;
	letter-spacing: 0.08em;
	opacity: 0.6;
	margin-top: 0.15rem;
}

.bwv-scan__betrag {
	font-family: var(--bwv-mono, monospace);
	font-size: 1.05rem;
	text-align: right;
	white-space: nowrap;
}

.bwv-scan__betrag small {
	display: block;
	font-size: 0.68rem;
	opacity: 0.6;
}

@media (max-width: 560px) {
	.bwv-scan__zeile { grid-template-columns: 1.4rem 1fr auto; }
	.bwv-scan__nr { display: none; }
}


/* Die Leiste, über die man die App ablegt und Benachrichtigungen einschaltet. */
.bwv-app {
	margin: 1rem 0 1.4rem;
	padding: 0.9rem 1rem;
	border: 1px dashed var(--bwv-linie);
}

.bwv-app__zeile {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin: 0;
}

.bwv-app__status {
	margin: 0.6rem 0 0;
	font-size: 0.82rem;
	opacity: 0.8;
	line-height: 1.45;
}

.bwv-app__status:empty { display: none; }
.bwv-app__status--an { color: #8fc98f; opacity: 1; }
.bwv-app__status--aus { color: var(--bwv-amber); opacity: 1; }

.bwv-app--unsicher { border-style: solid; border-color: rgba(221, 167, 91, 0.35); }

.bwv__btn--klein {
	padding: 0.5rem 0.9rem;
	font-size: 0.74rem;
}


/* Kamera: Rahmen, Lampe, Kamerawahl */
.bwv-scan__knoepfe { display: flex; flex-wrap: wrap; gap: 0.6rem; }

.bwv-scan__anleitung {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0.8rem;
	margin: 0;
	text-align: center;
	font-family: var(--bwv-mono, monospace);
	font-size: 0.7rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--bwv-hell, #ede4d3);
	text-shadow: 0 1px 6px rgba(0, 0, 0, 0.9);
	pointer-events: none;
}

/* Der Rahmen zeigt genau den Bereich, der gelesen wird — 72 % der kurzen
   Kante. Wer den Code hineinhält, bekommt ihn auch erkannt. */
/* Grösse setzt das Skript, sobald die Kamera läuft — sie hängt vom
   Seitenverhältnis des Kamerabildes ab und lässt sich hier nicht raten.
   Achtung: kein inset:auto hier. Das überschreibt top und left, und der
   Rahmen rutscht in die Ecke. */
.bwv-scan__rahmen {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 60%;
	height: 60%;
	transform: translate(-50%, -50%);
	border: 2px solid rgba(221, 167, 91, 0.9);
	border-radius: 8px;
	box-shadow: 0 0 0 100vmax rgba(0, 0, 0, 0.45);
	pointer-events: none;
}

.bwv-scan__kamzeile { margin: 0.6rem 0 0; }

.bwv-scan__kamzeile select {
	width: 100%;
	padding: 0.6rem 0.7rem;
	background: transparent;
	border: 1px solid var(--bwv-linie);
	color: inherit;
	font-size: 0.9rem;
}

[data-lampe][aria-pressed="true"] {
	background: var(--bwv-amber);
	color: #160f06 !important;
	border-color: var(--bwv-amber);
}


/* Das hidden-Attribut muss stärker sein als die Knopf-Regeln.
   Sonst stehen "Licht an" und "Kamera aus" da, bevor die Kamera läuft —
   display:inline-block schlägt sonst hidden. */
.bwv [hidden],
.bwv-app [hidden] { display: none !important; }


/* Grobe Verfügbarkeit am Uhrzeit-Knopf. Bewusst ohne Zahl. */
.bwv-zeit__lage {
	display: block;
	font-family: var(--bwv-mono, monospace);
	font-size: 0.66rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	margin-top: 0.25rem;
}

.bwv-zeit__lage--frei { opacity: 0.62; }
.bwv-zeit__lage--knapp { color: var(--bwv-amber); opacity: 1; }
.bwv-zeit__btn--gewaehlt .bwv-zeit__lage { opacity: 0.9; }
.bwv-zeit__btn--gewaehlt .bwv-zeit__lage--knapp { color: inherit; }


/* Gästekarten-Hinweis: fällt auf, ohne zu schreien. */
.bwv__hinweis--karte,
.bwv__info--karte {
	border-left: 2px solid var(--bwv-amber);
	padding-left: 0.9rem;
	margin-top: 0.7rem;
	color: var(--bwv-hell, #ede4d3);
	opacity: 0.92;
}

/* ====================================================================
   Die App: Website-Rahmen weg, zwei Reiter hin
   ==================================================================== */

/* Im Browser braucht es die Reiter nicht — dort gibt es die Adresszeile
   und das normale Menü. Sichtbar werden sie nur im App-Fenster. */
.bwv-appnav { display: none; }

@media all and (display-mode: standalone) {

	/*
	 * Kopfzeile, Menü, Fusszeile und der Seitenkopf verschwinden.
	 * Ein Führer, der in der Führung versehentlich auf "Geschichte" tippt,
	 * steht sonst in einer Museumsseite und kommt ohne Adresszeile nicht
	 * mehr zurück — er müsste die App schliessen und neu öffnen.
	 */
	header.ct-header,
	footer.ct-footer,
	#wpadminbar,
	.ct-back-to-top,
	.entry-content > .usub,
	.entry-content > .uhero { display: none !important; }

	body { padding-top: 0 !important; }

	.bwv-appnav {
		display: flex;
		position: sticky;
		top: 0;
		z-index: 20;
		margin: 0 0 1.2rem;
		background: #0b0906;
		border-bottom: 1px solid var(--bwv-linie);
	}

	.bwv-appnav__reiter {
		flex: 1;
		padding: 1rem 0.6rem;
		text-align: center;
		text-decoration: none;
		color: var(--bwv-hell, #ede4d3);
		opacity: 0.55;
		font-family: var(--bwv-mono, monospace);
		font-size: 0.74rem;
		letter-spacing: 0.14em;
		text-transform: uppercase;
		border-bottom: 2px solid transparent;
	}

	.bwv-appnav__reiter--aktiv {
		opacity: 1;
		color: var(--bwv-amber);
		border-bottom-color: var(--bwv-amber);
	}

	/* Der Inhalt darf die volle Breite haben, der Rand der Website nicht. */
	.entry-content > section,
	.entry-content { padding-left: 0 !important; padding-right: 0 !important; }
	.bwv { margin-left: auto; margin-right: auto; }
}


/* Einstellungen der App */
.bwv-einst__block {
	padding: 1.1rem 0;
	border-bottom: 1px solid var(--bwv-linie);
}

.bwv-einst__block:last-of-type { border-bottom: 0; }

.bwv-einst__titel {
	margin: 0 0 0.35rem;
	font-family: var(--bwv-mono, monospace);
	font-size: 0.72rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--bwv-amber);
	font-weight: 400;
}

.bwv-einst__text {
	margin: 0 0 0.9rem;
	font-size: 0.9rem;
	line-height: 1.6;
	opacity: 0.85;
	max-width: 46ch;
}

.bwv--einst .bwv-app { border: 0; padding: 0; margin: 0; }


/* ====================================================================
   Ampel im Kalender
   ====================================================================
   Grün heisst: da ist Platz. Orange: es wird eng. Ausgebucht bleibt
   grau und durchgestrichen — Rot wäre hier falsch, es ist kein Fehler,
   sondern eine volle Führung.

   Farbe steht nie allein: Jeder Tag trägt zusätzlich einen Punkt in
   unterschiedlicher Form und die Uhrzeit-Knöpfe eine Textzeile. Wer
   Rot und Grün nicht unterscheiden kann — das ist fast jeder
   zwölfte Mann — soll die Seite trotzdem lesen können. */

.bwv-kal__tag { position: relative; }

.bwv-kal__tag::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: 5px;
	width: 5px;
	height: 5px;
	border-radius: 50%;
	transform: translateX(-50%);
	background: currentColor;
	opacity: 0.5;
}

.bwv-kal__tag--frei::after {
	background: #7fbf7f;
	opacity: 1;
}

/* Offener Ring statt Punkt: unterscheidbar auch ohne Farbe. */
.bwv-kal__tag--knapp::after {
	background: transparent;
	border: 1.5px solid var(--bwv-amber);
	width: 6px;
	height: 6px;
	opacity: 1;
}

.bwv-kal__tag--voll::after { display: none; }

.bwv-kal__tag--frei:not(.bwv-kal__tag--voll) { border-color: rgba(127, 191, 127, 0.45); }
.bwv-kal__tag--knapp:not(.bwv-kal__tag--voll) { border-color: rgba(221, 167, 91, 0.55); }

.bwv-zeit__btn--frei { border-left: 3px solid #7fbf7f; }
.bwv-zeit__btn--knapp { border-left: 3px solid var(--bwv-amber); }
.bwv-zeit__btn--voll { border-left: 3px solid transparent; }

.bwv-zeit__lage--frei { color: #8fc98f; opacity: 0.9; }

/* ------------------------------------------------------------------ 2.0.0 */

/* Bedingungen über dem Absende-Knopf.

   Grund: „Platz reservieren" hat gelesen wie eine Zusage. Der Platz gilt
   aber nur bis zehn Minuten vor Beginn, und bezahlt wird vor Ort. Wer das
   erst in der Mail erfährt, erfährt es zu spät. Deshalb steht es dort, wo
   der Finger ohnehin hinwandert — direkt über dem Knopf. */

.bwv__bedingungen {
	margin: 1.4rem 0 1rem;
	padding: 0.9rem 1rem;
	border: 1px solid var(--bwv-linie);
	border-left: 3px solid var(--bwv-amber);
	background: rgba(0, 0, 0, 0.22);
}

.bwv__bedtitel {
	margin: 0 0 0.5rem;
	font-size: 0.78rem;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	opacity: 0.75;
}

.bwv__bedingungen ul {
	margin: 0;
	padding-left: 1.1rem;
	list-style: none;
}

.bwv__bedingungen li {
	position: relative;
	margin: 0 0 0.45rem;
	padding-left: 0;
	font-size: 0.9rem;
	line-height: 1.45;
}

.bwv__bedingungen li:last-child {
	margin-bottom: 0;
}

.bwv__bedingungen li::before {
	content: "·";
	position: absolute;
	left: -0.9rem;
	color: var(--bwv-amber);
	font-weight: 700;
}

/* Kalender am Handy: der Sonntag rutschte aus dem Kasten.

   Ursache war nicht das Raster, sondern eine Regel der Website: Knöpfe
   bekommen dort seitlich 22 px Innenabstand. Ein Tagesknopf konnte damit
   nicht unter 63 px schrumpfen, und `1fr` bedeutet `minmax(auto, 1fr)` —
   also „höchstens ein Anteil, mindestens der Inhalt". Sieben mal 63 px
   passen in kein Handy; die siebte Spalte wurde hinausgeschoben, und das
   war immer der Sonntag.

   Zwei Hebel: `minmax(0, 1fr)` erlaubt dem Raster, wirklich zu schrumpfen,
   und der Innenabstand kommt vom Tagesknopf weg. Die Ziffer sitzt dann
   über Flexbox in der Mitte statt über Innenabstand. Gemessen bei 320 px:
   sieben Spalten à 33 px, kein Überlauf. */

.bwv-kal__grid {
	grid-template-columns: repeat(7, minmax(0, 1fr));
}

.bwv-kal__wtag {
	min-width: 0;
	overflow: hidden;
}

.bwv-kal__tag {
	padding: 0 !important;
	min-width: 0;
	display: flex !important;
	align-items: center;
	justify-content: center;
	line-height: 1;
}

.bwv-kal__nav {
	padding: 0 !important;
	flex: 0 0 auto;
}

/* Ganz schmale Geräte: Abstände zusammenziehen, damit die Ziffern nicht
   auf Streichholzgrösse fallen. */
@media (max-width: 22.5rem) {
	.bwv-kal__grid { gap: 0.15rem; }
	.bwv__kalender { padding: 0.5rem; }
	.bwv-kal__wtag { font-size: 0.62rem; letter-spacing: 0.03em; }
	.bwv-kal__tag { font-size: 0.85rem; }
}

/* Kasten „Hier wartet jemand" über dem Plan.

   Der chronologische Plan sagt nicht, wo es brennt. Eine Führung am Sonntag
   mit zweiundzwanzig Angemeldeten und Warteliste steht dort gleichberechtigt
   neben einer leeren im September. Wer den Plan im Vorbeigehen aufmacht,
   soll die sehen, bei der Leute umsonst anreisen würden. */

.bwv-dringend {
	margin: 1.25rem 0 1.5rem;
	padding: 1rem 1.1rem;
	border: 1px solid rgba(221, 167, 91, 0.55);
	border-left: 3px solid var(--bwv-amber);
	background: rgba(221, 167, 91, 0.07);
}

.bwv-dringend__titel {
	margin: 0 0 0.3rem;
	font-size: 0.8rem;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: var(--bwv-amber);
}

.bwv-dringend__intro {
	margin: 0 0 0.9rem;
	font-size: 0.86rem;
	opacity: 0.75;
	line-height: 1.45;
}

.bwv-dringend__zeile {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.7rem 0;
	border-top: 1px solid rgba(221, 167, 91, 0.25);
}

.bwv-dringend__info {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	min-width: 0;
}

.bwv-dringend__lage {
	font-size: 0.88rem;
}

.bwv-dringend__art {
	font-size: 0.8rem;
	opacity: 0.6;
}

.bwv-dringend__aktion {
	flex: 0 0 auto;
	margin: 0;
}

@media (max-width: 40rem) {
	.bwv-dringend__zeile {
		flex-direction: column;
		align-items: stretch;
		gap: 0.6rem;
	}
	.bwv-dringend__aktion .bwv__btn {
		width: 100%;
	}
}

/* Gästeliste für Admin-Führer — zugeklappt, damit der Plan am Handy
   ein Plan bleibt und keine Adressliste wird. */

.bwv-plan__rolle {
	margin: 0 0 1rem;
	font-size: 0.85rem;
	opacity: 0.7;
}

.bwv-plan__gaeste {
	margin: -0.4rem 0 1rem;
	padding: 0 0 0 0.4rem;
	border-left: 1px solid var(--bwv-linie);
}

.bwv-plan__gaeste > summary {
	cursor: pointer;
	padding: 0.35rem 0;
	font-size: 0.82rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	opacity: 0.7;
}

.bwv-plan__gaeste > summary:hover {
	opacity: 1;
	color: var(--bwv-amber);
}

.bwv-gaeste {
	margin: 0.4rem 0 0;
	padding: 0;
	list-style: none;
}

.bwv-gaeste__zeile {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 0.1rem 0.8rem;
	padding: 0.5rem 0;
	border-top: 1px dotted var(--bwv-linie);
	font-size: 0.88rem;
}

.bwv-gaeste__name em {
	margin-left: 0.4rem;
	padding: 0.05rem 0.4rem;
	border: 1px solid var(--bwv-linie);
	font-size: 0.7rem;
	font-style: normal;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	opacity: 0.7;
}

.bwv-gaeste__zeile--wl {
	opacity: 0.7;
}

.bwv-gaeste__zahl {
	text-align: right;
	font-size: 0.8rem;
	opacity: 0.65;
	white-space: nowrap;
}

.bwv-gaeste__kontakt {
	grid-column: 1 / -1;
	font-size: 0.82rem;
	word-break: break-word;
}

.bwv-gaeste__kontakt a {
	color: var(--bwv-amber);
}

.bwv-gaeste__hinweis {
	margin: 0.7rem 0 0.2rem;
	font-size: 0.76rem;
	opacity: 0.5;
}

/* ------------------------------------------------------------------ */
/* Anfragen — Phase 5                                                  */
/*                                                                     */
/* Der Kasten „Du wirst gefragt" steht über allem anderen und ist der  */
/* einzige Grün-Akzent im Plan. Das ist Absicht: Er verlangt eine      */
/* Antwort, alles andere darunter ist Information.                     */
/* ------------------------------------------------------------------ */

.bwv-frage {
	margin: 1.25rem 0 1.5rem;
	padding: 1rem 1.1rem;
	border: 1px solid rgba(122, 168, 116, 0.55);
	border-left: 3px solid #7aa874;
	background: rgba(122, 168, 116, 0.09);
}

.bwv-frage__titel {
	margin: 0 0 0.6rem;
	font-size: 0.8rem;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: #8fbf88;
}

.bwv-frage__zeile {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.7rem 0;
	border-top: 1px solid rgba(122, 168, 116, 0.25);
}

.bwv-frage__info {
	display: flex;
	flex-direction: column;
	gap: 0.2rem;
	min-width: 0;
}

.bwv-frage__lage {
	font-size: 0.85rem;
	opacity: 0.8;
}

/* Die zwei Knöpfe nebeneinander, nie untereinander: „Ja" und „Kann
   nicht" sind gleichrangige Antworten, und wer scrollen muss, um die
   zweite zu finden, antwortet gar nicht. */
.bwv-frage__aktion {
	display: flex;
	gap: 0.45rem;
	flex: 0 0 auto;
	align-items: center;
}

.bwv-frage__aktion form {
	margin: 0;
}

.bwv-frage__fuss {
	margin: 0.8rem 0 0;
	font-size: 0.8rem;
	opacity: 0.65;
	line-height: 1.45;
}

.bwv-frage__wa {
	margin: 0 0 1rem;
	display: flex;
	align-items: center;
	gap: 0.6rem;
	flex-wrap: wrap;
	font-size: 0.85rem;
	opacity: 0.85;
}

@media (max-width: 40rem) {
	.bwv-frage__zeile {
		flex-direction: column;
		align-items: stretch;
		gap: 0.6rem;
	}

	.bwv-frage__aktion {
		justify-content: stretch;
	}

	.bwv-frage__aktion form,
	.bwv-frage__aktion .bwv__btn {
		flex: 1 1 0;
		width: 100%;
	}
}

/* Der Anfrage-Streifen unter einer offenen Führung. Gedämpft, weil er
   Nebenweg ist — „Ich übernehme" bleibt der Hauptweg. */
.bwv-plan__fragen {
	margin: -0.3rem 0 0.8rem;
	padding: 0 0 0.2rem 0.2rem;
	font-size: 0.82rem;
}

.bwv-plan__gefragt {
	margin: 0 0 0.3rem;
	display: flex;
	align-items: baseline;
	gap: 0.5rem;
	flex-wrap: wrap;
	color: var(--bwv-amber);
}

.bwv-plan__gefragt-zeit {
	opacity: 0.7;
}

.bwv-plan__anfragen > summary {
	cursor: pointer;
	opacity: 0.72;
	padding: 0.25rem 0;
}

.bwv-plan__anfragen-form {
	display: flex;
	gap: 0.4rem;
	align-items: center;
	flex-wrap: wrap;
	margin: 0.4rem 0 0;
}

.bwv-plan__anfragen-form select {
	max-width: 12rem;
}

.bwv-plan__anfragen-hin {
	margin: 0.4rem 0 0.2rem;
	font-size: 0.78rem;
	opacity: 0.6;
	line-height: 1.45;
	max-width: 34rem;
}

.bwv__link--klein {
	font-size: 0.8rem;
	background: none;
	border: 0;
	padding: 0;
	cursor: pointer;
}

@media (max-width: 40rem) {
	.bwv-plan__anfragen-form select {
		flex: 1 1 100%;
		max-width: none;
	}

	.bwv-plan__anfragen-form .bwv__btn {
		width: 100%;
	}
}

/* ------------------------------------------------------------------ */
/* Führerverwaltung in der App (Reiter „Verwaltung")                   */
/* ------------------------------------------------------------------ */

.bwv-vw__form label { display: block; font-weight: 600; margin-bottom: .15em; }
.bwv-vw__form input[type="text"],
.bwv-vw__form input[type="email"],
.bwv-vw__form input[type="password"] {
	width: 100%;
	max-width: 22em;
	padding: .55em .7em;
	border: 1px solid rgba(11, 9, 6, .35);
	border-radius: 4px;
	font: inherit;
	background: #fff;
}

.bwv-vw__liste { list-style: none; margin: 0; padding: 0; }
.bwv-vw__eintrag {
	padding: .8em 0;
	border-bottom: 1px solid rgba(11, 9, 6, .12);
}
.bwv-vw__eintrag:last-child { border-bottom: 0; }
.bwv-vw__eintrag--aus { opacity: .6; }
.bwv-vw__eintrag--neu { background: rgba(221, 167, 91, .12); }

.bwv-vw__kopf { display: flex; align-items: center; gap: .5em; flex-wrap: wrap; }
.bwv-vw__marke {
	font-size: .72em;
	letter-spacing: .06em;
	text-transform: uppercase;
	padding: .15em .5em;
	border-radius: 3px;
	background: rgba(179, 101, 46, .15);
	color: #7a3d17;
}
.bwv-vw__marke--aus { background: rgba(11, 9, 6, .1); color: inherit; }

.bwv-vw__zeile { display: flex; gap: .5em; flex-wrap: wrap; margin: .4em 0 0; }
.bwv-vw__mini { display: inline; margin: 0; }

/* Der WhatsApp-Knopf ist ein Link — die Linkfarbe der Seite ist der
   Akzentton und damit unsichtbar auf dem Knopfgrund. Also ausdrücklich. */
.bwv-vw__zeile a.bwv__btn { color: #160f06; }
