/* Lautenbach Veranstaltungen – Frontend
   Farben: Waldgrün #407336 · Wiesengrün #639922 · Lichtgrün #EAF3DE
   Schrift: Quicksand (Theme), Systemschrift als Rückfall
------------------------------------------------------------------ */

.lbv-wrap,
.lbv-single {
	--lbv-gruen: #407336;
	--lbv-gruen-hell: #639922;
	--lbv-licht: #EAF3DE;
	--lbv-blau: #3D4F89;
	--lbv-tanne: #578993;
	--lbv-text: #23301F;
	--lbv-grau: #5D6A59;
	--lbv-linie: #DCE6D3;
	--lbv-papier: #FFFFFF;
	--lbv-radius: 14px;
	--lbv-schatten: 0 2px 4px rgba(35, 48, 31, .05), 0 10px 24px rgba(35, 48, 31, .07);

	font-family: "Quicksand", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	color: var(--lbv-text);
}

.lbv-wrap *,
.lbv-single * {
	box-sizing: border-box;
}

/* Schutz gegen Theme- und Elementor-Vorgaben:
   Unterstreichungen, Zeilenhöhen und Bildgrößen zurücksetzen. */
.lbv-wrap a,
.lbv-single .lbv-details a,
.lbv-wrap a:hover {
	text-decoration: none;
}

.lbv-wrap a.lbv-link,
.lbv-single a.lbv-link {
	text-decoration: underline;
}

.lbv-wrap img,
.lbv-single .lbv-card img,
.lbv-single .lbv-row img {
	max-width: 100%;
	height: auto;
	display: block;
}

.lbv-wrap p,
.lbv-wrap h2,
.lbv-wrap h3,
.lbv-wrap span {
	line-height: 1.45 !important;
}

.lbv-wrap h2,
.lbv-wrap h3 {
	padding: 0 !important;
}

.lbv-wrap a:focus-visible,
.lbv-single a:focus-visible,
.lbv-wrap button:focus-visible,
.lbv-wrap select:focus-visible,
.lbv-wrap input:focus-visible {
	outline: 3px solid var(--lbv-blau);
	outline-offset: 2px;
	border-radius: 4px;
}

/* --- Kalenderblatt ------------------------------------------------ */

.lbv-badge {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 68px;
	padding: 6px 4px 8px;
	background: var(--lbv-papier);
	border: 1px solid var(--lbv-linie);
	border-top: 5px solid var(--lbv-gruen);
	border-radius: 4px 4px 10px 10px;
	box-shadow: 0 3px 8px rgba(35, 48, 31, .12);
	line-height: 1.1;
	text-align: center;
}

.lbv-badge__weekday {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--lbv-gruen-hell);
}

.lbv-badge__day {
	font-size: 28px;
	font-weight: 700;
	color: var(--lbv-gruen);
}

.lbv-badge__month {
	font-size: 12px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: var(--lbv-grau);
}

.lbv-badge__more {
	margin-top: 3px;
	font-size: 10px;
	color: var(--lbv-grau);
}

/* --- Kachelraster ------------------------------------------------- */

.lbv-grid-cards {
	display: grid;
	gap: 26px;
	grid-template-columns: repeat(3, 1fr);
	margin: 0 0 32px;
}

.lbv-cols-1 { grid-template-columns: 1fr; }
.lbv-cols-2 { grid-template-columns: repeat(2, 1fr); }
.lbv-cols-4 { grid-template-columns: repeat(4, 1fr); }

@media (max-width: 1024px) {
	.lbv-grid-cards { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 640px) {
	.lbv-grid-cards { grid-template-columns: 1fr; gap: 18px; }
}

/* --- Kachel ------------------------------------------------------- */

.lbv-card {
	background: var(--lbv-papier);
	border: 1px solid var(--lbv-linie);
	border-radius: var(--lbv-radius);
	overflow: hidden;
	transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}

.lbv-card:hover,
.lbv-card:focus-within {
	transform: translateY(-3px);
	box-shadow: var(--lbv-schatten);
	border-color: var(--lbv-gruen-hell);
}

.lbv-card__link {
	display: flex;
	flex-direction: column;
	height: 100%;
	text-decoration: none !important;
	color: inherit;
}

.lbv-card__media {
	position: relative;
	aspect-ratio: 16 / 10;
	background: var(--lbv-licht);
	overflow: hidden;
}

.lbv-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .4s ease;
}

.lbv-card:hover .lbv-card__media img {
	transform: scale(1.04);
}

.lbv-card__media .lbv-badge {
	position: absolute;
	left: 16px;
	bottom: -14px;
}

.lbv-card__badgeonly {
	padding: 18px 18px 0;
}

.lbv-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 26px 20px 20px;
}

.lbv-card--ohne-bild .lbv-card__body {
	padding-top: 14px;
}

.lbv-card__date {
	margin: 0 0 4px;
	font-size: 14px;
	font-weight: 600;
	color: var(--lbv-gruen-hell);
}

.lbv-card__title {
	margin: 0 0 8px;
	font-size: 21px;
	line-height: 1.25;
	font-weight: 700;
	color: var(--lbv-gruen);
}

.lbv-card__meta {
	margin: 0 0 10px;
	font-size: 14px;
	color: var(--lbv-grau);
}

.lbv-card__teaser {
	margin: 0 0 14px;
	font-size: 15px;
	line-height: 1.6;
	color: var(--lbv-text);
}

.lbv-card__terms {
	margin: 0 0 14px;
	font-size: 13px;
	color: var(--lbv-tanne);
}

.lbv-card__more {
	margin-top: auto;
	align-self: flex-start;
	font-size: 15px;
	font-weight: 700;
	color: var(--lbv-gruen);
	border-bottom: 2px solid var(--lbv-licht);
	padding-bottom: 2px;
	transition: border-color .2s ease;
}

.lbv-card:hover .lbv-card__more {
	border-color: var(--lbv-gruen-hell);
}

.lbv-icon--ort::before {
	content: "";
	display: inline-block;
	width: 14px;
	height: 14px;
	margin-right: 6px;
	background: currentColor;
	vertical-align: -1px;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.25 7 13 7 13s7-7.75 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") center/contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.25 7 13 7 13s7-7.75 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* Zustände */

.lbv-card--highlight {
	border-color: var(--lbv-gruen-hell);
	box-shadow: inset 0 0 0 1px var(--lbv-gruen-hell);
}

.lbv-card--abgesagt .lbv-card__title,
.lbv-card--abgesagt .lbv-card__date {
	color: var(--lbv-grau);
}

.lbv-card--abgesagt .lbv-card__media img {
	filter: grayscale(1);
	opacity: .75;
}

.lbv-tag {
	display: inline-block;
	margin: 0 0 8px;
	padding: 3px 10px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.lbv-tag--highlight {
	background: var(--lbv-licht);
	color: var(--lbv-gruen);
}

.lbv-tag--abgesagt {
	background: #FBE9E7;
	color: #A5342B;
}

/* --- Filterleiste ------------------------------------------------- */

.lbv-filter {
	background: var(--lbv-licht);
	border-radius: var(--lbv-radius);
	padding: 20px 22px 14px;
	margin: 0 0 26px;
}

.lbv-filter__row {
	display: grid;
	grid-template-columns: 2fr 1.4fr 1.4fr auto;
	gap: 16px;
	align-items: end;
}

@media (max-width: 880px) {
	.lbv-filter__row { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 520px) {
	.lbv-filter__row { grid-template-columns: 1fr; }
}

.lbv-filter__field {
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 5px;
}

.lbv-filter__field label {
	font-size: 13px;
	font-weight: 700;
	color: var(--lbv-gruen);
}

.lbv-filter input[type="search"],
.lbv-filter select {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--lbv-linie);
	border-radius: 8px;
	background: #fff;
	font: inherit;
	font-size: 15px;
	color: var(--lbv-text);
}

.lbv-filter__buttons {
	flex-direction: row;
	gap: 10px;
	flex-wrap: wrap;
}

.lbv-filter__switch {
	display: flex;
	gap: 6px;
	margin-top: 16px;
	padding-top: 14px;
	border-top: 1px solid #DAE7CB;
}

.lbv-switch {
	padding: 6px 14px;
	border-radius: 999px;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none !important;
	color: var(--lbv-grau);
}

.lbv-switch.is-active {
	background: var(--lbv-gruen);
	color: #fff;
}

/* --- Schaltflächen ------------------------------------------------ */

.lbv-btn {
	display: inline-block;
	padding: 11px 20px;
	border: 2px solid var(--lbv-gruen);
	border-radius: 999px;
	background: var(--lbv-gruen);
	color: #fff !important;
	font: inherit;
	font-size: 15px;
	font-weight: 700;
	text-decoration: none !important;
	cursor: pointer;
	transition: background .2s ease, color .2s ease;
}

.lbv-btn:hover {
	background: var(--lbv-gruen-hell);
	border-color: var(--lbv-gruen-hell);
}

.lbv-btn--ghost {
	background: transparent;
	color: var(--lbv-gruen) !important;
}

.lbv-btn--ghost:hover {
	background: var(--lbv-gruen);
	color: #fff !important;
}

.lbv-link {
	color: var(--lbv-gruen);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.lbv-link:hover {
	color: var(--lbv-gruen-hell);
}

/* --- Zähler, leere Liste, Blättern --------------------------------- */

.lbv-count {
	margin: 0 0 16px;
	font-size: 14px;
	color: var(--lbv-grau);
}

.lbv-leer {
	margin: 0;
	padding: 28px;
	background: var(--lbv-licht);
	border-radius: var(--lbv-radius);
	text-align: center;
	color: var(--lbv-gruen);
	font-weight: 600;
}

.lbv-pagination ul {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	list-style: none;
	margin: 0;
	padding: 0;
	justify-content: center;
}

.lbv-pagination a,
.lbv-pagination span {
	display: inline-block;
	min-width: 40px;
	padding: 8px 12px;
	border: 1px solid var(--lbv-linie);
	border-radius: 8px;
	text-align: center;
	text-decoration: none !important;
	color: var(--lbv-gruen);
	font-weight: 600;
}

.lbv-pagination .current {
	background: var(--lbv-gruen);
	border-color: var(--lbv-gruen);
	color: #fff;
}

/* --- Mini-Liste für die Startseite --------------------------------- */

.lbv-teaser__title {
	margin: 0 0 18px;
	font-size: 26px;
	font-weight: 700;
	color: var(--lbv-gruen);
}

.lbv-mini {
	list-style: none;
	margin: 0 0 20px;
	padding: 0;
	border-top: 1px solid var(--lbv-linie);
}

.lbv-mini__item {
	border-bottom: 1px solid var(--lbv-linie);
}

.lbv-mini__link {
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 14px 6px;
	text-decoration: none !important;
	color: inherit;
	transition: background .2s ease;
}

.lbv-mini__link:hover {
	background: var(--lbv-licht);
}

.lbv-mini__text {
	display: flex;
	flex-direction: column;
	gap: 3px;
	flex: 1;
	min-width: 0;
}

.lbv-mini__title {
	font-size: 17px;
	font-weight: 700;
	color: var(--lbv-gruen);
	line-height: 1.3;
}

.lbv-mini__meta {
	font-size: 14px;
	color: var(--lbv-grau);
}

.lbv-mini__media {
	flex: 0 0 auto;
	width: 84px;
	height: 62px;
	border-radius: 8px;
	overflow: hidden;
}

.lbv-mini__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.lbv-mini__item.is-abgesagt .lbv-mini__title {
	color: var(--lbv-grau);
	text-decoration: line-through;
}

@media (max-width: 480px) {
	.lbv-mini__media { display: none; }
	.lbv-badge { width: 58px; }
	.lbv-badge__day { font-size: 24px; }
}

.lbv-teaser__more {
	margin: 0;
}

/* --- Detailseite --------------------------------------------------- */

.lbv-single__inner {
	max-width: 1100px;
	margin: 0 auto;
	padding: 32px 20px 60px;
}

.lbv-back {
	margin: 0 0 20px;
	font-size: 15px;
}

.lbv-single__header {
	display: flex;
	align-items: flex-start;
	gap: 20px;
	margin: 0 0 26px;
}

.lbv-single__terms {
	margin: 0 0 6px;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--lbv-tanne);
}

.lbv-single__title {
	margin: 0 0 6px;
	font-size: clamp(28px, 4vw, 42px);
	line-height: 1.15;
	font-weight: 700;
	color: var(--lbv-gruen);
}

.lbv-single__date {
	margin: 0;
	font-size: 17px;
	font-weight: 600;
	color: var(--lbv-gruen-hell);
}

.lbv-single__media {
	margin: 0 0 32px;
	border-radius: var(--lbv-radius);
	overflow: hidden;
}

.lbv-single__media img {
	width: 100%;
	height: auto;
	display: block;
}

.lbv-single__media figcaption {
	padding: 8px 4px;
	font-size: 13px;
	color: var(--lbv-grau);
}

.lbv-single__grid {
	display: grid;
	grid-template-columns: 1.6fr 1fr;
	gap: 36px;
	align-items: start;
}

@media (max-width: 880px) {
	.lbv-single__grid { grid-template-columns: 1fr; gap: 28px; }
	.lbv-single__header { flex-direction: column; gap: 14px; }
}

.lbv-single__lead {
	font-size: 19px;
	line-height: 1.6;
	font-weight: 600;
	color: var(--lbv-gruen);
	margin: 0 0 20px;
}

.lbv-single__text {
	font-size: 17px;
	line-height: 1.75;
}

.lbv-details {
	background: var(--lbv-licht);
	border-radius: var(--lbv-radius);
	padding: 24px;
}

.lbv-dl {
	margin: 0 0 20px;
}

.lbv-dl__row + .lbv-dl__row {
	margin-top: 16px;
	padding-top: 16px;
	border-top: 1px solid #DAE7CB;
}

.lbv-dl dt {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--lbv-gruen-hell);
	margin: 0 0 4px;
}

.lbv-dl dd {
	margin: 0;
	font-size: 16px;
	line-height: 1.6;
	color: var(--lbv-text);
}

.lbv-details__note {
	font-size: 14px;
	color: var(--lbv-grau);
}

.lbv-details__actions {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.lbv-details__actions .lbv-btn {
	text-align: center;
}

.lbv-hinweis {
	margin: 0 0 18px;
	padding: 12px 16px;
	border-radius: 8px;
	font-size: 16px;
}

.lbv-hinweis--abgesagt {
	background: #FBE9E7;
	color: #A5342B;
}

.lbv-weitere {
	margin-top: 56px;
	padding-top: 32px;
	border-top: 1px solid var(--lbv-linie);
}

.lbv-weitere h2 {
	margin: 0 0 22px;
	font-size: 26px;
	font-weight: 700;
	color: var(--lbv-gruen);
}

/* --- Hilfsklassen -------------------------------------------------- */

.lbv-wrap .screen-reader-text,
.lbv-single .screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
	.lbv-card,
	.lbv-card__media img,
	.lbv-mini__link,
	.lbv-btn {
		transition: none !important;
	}
	.lbv-card:hover { transform: none; }
	.lbv-card:hover .lbv-card__media img { transform: none; }
}

/* --- Archivseite --------------------------------------------------- */

.lbv-archive__header {
	margin: 0 0 28px;
	padding-bottom: 20px;
	border-bottom: 1px solid var(--lbv-linie);
}


/* --- Listenansicht -------------------------------------------------- */

.lbv-list {
	margin: 0 0 32px;
	border-top: 1px solid var(--lbv-linie);
}

.lbv-row {
	border-bottom: 1px solid var(--lbv-linie);
	transition: background .2s ease;
}

.lbv-row:hover,
.lbv-row:focus-within {
	background: var(--lbv-licht);
}

.lbv-row__link {
	display: grid;
	grid-template-columns: auto 150px 1fr auto;
	align-items: center;
	gap: 22px;
	padding: 18px 14px;
	text-decoration: none !important;
	color: inherit;
}

.lbv-row__media {
	width: 150px;
	height: 100px;
	border-radius: 10px;
	overflow: hidden;
	background: var(--lbv-licht);
}

.lbv-row__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lbv-row__body {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}

.lbv-row__title {
	font-size: 20px;
	font-weight: 700;
	color: var(--lbv-gruen);
	line-height: 1.25 !important;
}

.lbv-row__meta {
	font-size: 14px;
	font-weight: 600;
	color: var(--lbv-gruen-hell);
}

.lbv-row__teaser {
	font-size: 15px;
	color: var(--lbv-grau);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.lbv-row__more {
	font-size: 26px;
	font-weight: 700;
	color: var(--lbv-gruen-hell);
	padding: 0 6px;
}

.lbv-row .lbv-tag {
	align-self: flex-start;
	margin: 0 0 2px;
}

.lbv-row--highlight {
	background: #F6FAF0;
	box-shadow: inset 3px 0 0 var(--lbv-gruen-hell);
}

.lbv-row--abgesagt .lbv-row__title {
	color: var(--lbv-grau);
	text-decoration: line-through;
}

.lbv-row--abgesagt img {
	filter: grayscale(1);
	opacity: .7;
}

/* Ohne Bild rückt der Text auf */
.lbv-row__link.is-ohne-bild {
	grid-template-columns: auto 1fr auto;
}

@media (max-width: 820px) {
	.lbv-row__link {
		grid-template-columns: auto 1fr;
		gap: 16px;
		padding: 16px 10px;
	}
	.lbv-row__media { display: none; }
	.lbv-row__more { display: none; }
	.lbv-row__title { font-size: 18px; }
}
