/* ═══════════════════════════════════════════════════════════
   Custom Booking Manager — Frontend Styles
   Design: Indigo-Akzente · Premium-Cards · Modern Typography
   ═══════════════════════════════════════════════════════════ */

/* ── Design Tokens ──────────────────────────────────────── */
:root {
	--cbm-indigo:       #4f46e5;
	--cbm-indigo-dark:  #3730a3;
	--cbm-indigo-light: #eef2ff;
	--cbm-slate:        #0f172a;
	--cbm-slate-mid:    #334155;
	--cbm-slate-light:  #64748b;
	--cbm-border:       #e2e8f0;
	--cbm-bg:           #f8fafc;
	--cbm-white:        #ffffff;
	--cbm-success:      #10b981;
	--cbm-warning:      #f59e0b;
	--cbm-danger:       #ef4444;
	--cbm-radius:       10px;
	--cbm-radius-sm:    6px;
	--cbm-shadow:       0 2px 12px rgba(0,0,0,.07), 0 1px 3px rgba(0,0,0,.05);
	--cbm-shadow-lg:    0 8px 32px rgba(0,0,0,.1), 0 2px 8px rgba(0,0,0,.06);
	--cbm-font:         -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
	--cbm-transition:   .2s ease;
}

/* ══════════════════════════════════════════════════════════
   ANGEBOTSLISTE
   ══════════════════════════════════════════════════════════ */

.cbm-offers-list {
	margin: 0;
	font-family: var(--cbm-font);
}

.cbm-offers-header {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	margin-bottom: 24px;
	gap: 12px;
}

.cbm-offers-header h2 {
	margin: 0;
	font-size: 1.5rem;
	color: var(--cbm-slate);
}

.cbm-offers-count {
	font-size: .85rem;
	color: var(--cbm-slate-light);
}

/* Raster */
.cbm-offers-grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: 24px;
}

/* Karte */
.cbm-offer-card {
	border: 1px solid var(--cbm-border);
	border-radius: var(--cbm-radius);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	background: var(--cbm-white);
	box-shadow: var(--cbm-shadow);
	transition: transform var(--cbm-transition), box-shadow var(--cbm-transition);
	position: relative;
}

.cbm-offer-card:hover {
	transform: translateY(-3px);
	box-shadow: var(--cbm-shadow-lg);
}

/* Kategorie-Akzent-Linie oben */
.cbm-offer-card::before {
	content: '';
	position: absolute;
	top: 0; left: 0; right: 0;
	height: 3px;
	background: var(--cbm-indigo);
	opacity: 0;
	transition: opacity var(--cbm-transition);
}
.cbm-offer-card:hover::before { opacity: 1; }

/* Thumbnail */
.cbm-offer-thumbnail {
	position: relative;
	overflow: hidden;
	height: 200px;
}

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

.cbm-offer-card:hover .cbm-offer-thumbnail img {
	transform: scale(1.04);
}

/* Preis-Badge über dem Bild */
.cbm-offer-price-badge {
	position: absolute;
	bottom: 10px; right: 10px;
	background: var(--cbm-indigo);
	color: #fff;
	font-size: .82rem;
	font-weight: 700;
	padding: 4px 10px;
	border-radius: 20px;
	letter-spacing: .02em;
	box-shadow: 0 2px 6px rgba(79,70,229,.4);
}

/* Karten-Body */
.cbm-offer-body {
	padding: 20px;
	display: flex;
	flex-direction: column;
	gap: 10px;
	flex: 1;
}

.cbm-offer-title {
	margin: 0;
	font-size: 1.05rem;
	font-weight: 700;
	line-height: 1.35;
	color: var(--cbm-slate);
}

.cbm-offer-title a {
	text-decoration: none;
	color: inherit;
}

.cbm-offer-title a:hover {
	color: var(--cbm-indigo);
}

/* Keine Thumbnail → Preis im Body */
.cbm-offer-price {
	font-weight: 700;
	font-size: .95rem;
	color: var(--cbm-indigo);
	margin: 0;
}

.cbm-offer-excerpt {
	color: var(--cbm-slate-light);
	font-size: .875rem;
	margin: 0;
	flex: 1;
	line-height: 1.6;
}

/* Karten-Meta (Ort, Dauer) */
.cbm-offer-card-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 2px;
}

.cbm-offer-card-tag {
	font-size: .75rem;
	background: var(--cbm-indigo-light);
	color: var(--cbm-indigo-dark);
	border-radius: 20px;
	padding: 2px 9px;
	font-weight: 500;
}

/* CTA */
.cbm-offer-cta {
	margin-top: 4px;
}

/* Kein Ergebnis */
.cbm-no-results {
	color: var(--cbm-slate-light);
	font-size: .95rem;
	padding: 32px;
	text-align: center;
	border: 1px dashed var(--cbm-border);
	border-radius: var(--cbm-radius);
}

/* ══════════════════════════════════════════════════════════
   EINZELNES ANGEBOT
   ══════════════════════════════════════════════════════════ */

.cbm-single-offer {
	max-width: 820px;
	font-family: var(--cbm-font);
}

/* Hero */
.cbm-offer-hero {
	border-radius: var(--cbm-radius);
	overflow: hidden;
	margin-bottom: 28px;
	box-shadow: var(--cbm-shadow-lg);
}

.cbm-offer-hero img {
	width: 100%;
	height: auto;
	display: block;
}

/* Offer-Header */
.cbm-offer-header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 20px;
	margin-bottom: 20px;
	flex-wrap: wrap;
}

.cbm-single-offer .cbm-offer-title {
	margin: 0;
	font-size: 1.75rem;
	color: var(--cbm-slate);
	flex: 1;
}

.cbm-single-price {
	font-size: 1.4rem;
	font-weight: 800;
	color: var(--cbm-indigo);
	white-space: nowrap;
}

/* Meta-Chips */
.cbm-offer-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 24px;
}

.cbm-meta-item {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	background: var(--cbm-bg);
	border: 1px solid var(--cbm-border);
	border-radius: 20px;
	padding: 5px 14px;
	font-size: .82rem;
	color: var(--cbm-slate-mid);
	font-weight: 500;
}

.cbm-meta-item.cbm-trainer-link a {
	color: var(--cbm-indigo);
	text-decoration: none;
	font-weight: 600;
}

.cbm-meta-item.cbm-trainer-link a:hover {
	text-decoration: underline;
}

.cbm-meta-icon {
	font-size: .8rem;
	opacity: .7;
}

/* Beschreibung */
.cbm-offer-description {
	color: var(--cbm-slate-mid);
	line-height: 1.75;
	margin-bottom: 32px;
}

/* ── Sessions / Termine ────────────────────────────────── */
.cbm-sessions {
	margin-top: 32px;
}

.cbm-sessions-title {
	font-size: 1.1rem;
	font-weight: 700;
	color: var(--cbm-slate);
	margin: 0 0 16px;
	padding-bottom: 10px;
	border-bottom: 2px solid var(--cbm-indigo-light);
	display: flex;
	align-items: center;
	gap: 8px;
}

.cbm-sessions-title::before {
	content: '';
	display: inline-block;
	width: 4px;
	height: 20px;
	background: var(--cbm-indigo);
	border-radius: 2px;
}

.cbm-session-list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.cbm-session-item {
	display: grid;
	grid-template-columns: 1fr auto auto;
	align-items: center;
	gap: 16px;
	background: var(--cbm-white);
	border: 1px solid var(--cbm-border);
	border-radius: var(--cbm-radius-sm);
	padding: 14px 18px;
	transition: border-color var(--cbm-transition), box-shadow var(--cbm-transition);
}

.cbm-session-item:hover {
	border-color: var(--cbm-indigo);
	box-shadow: 0 2px 8px rgba(79,70,229,.1);
}

.cbm-session-schedule { display: flex; flex-direction: column; gap: 4px; }

.cbm-session-schedule-note {
	font-size: .8rem;
	color: #92400e;
	background: #fef3c7;
	border: 1px solid #fde68a;
	border-radius: 4px;
	padding: 2px 8px;
	display: inline-block;
	width: fit-content;
}

.cbm-session-date {
	font-weight: 700;
	color: var(--cbm-slate);
	font-size: .9rem;
}

.cbm-session-time {
	color: var(--cbm-slate-light);
	font-size: .83rem;
	margin-top: 2px;
}

.cbm-session-slots {
	font-size: .8rem;
	color: var(--cbm-slate-light);
	background: var(--cbm-bg);
	border-radius: 20px;
	padding: 3px 10px;
	white-space: nowrap;
}

.cbm-session-slots.cbm-slots-low {
	color: #b45309;
	background: #fffbeb;
}

/* ══════════════════════════════════════════════════════════
   BUCHUNGSFORMULAR
   ══════════════════════════════════════════════════════════ */

.cbm-booking-form-wrap {
	width: 100%;
	max-width: 100%;   /* füllt immer exakt den Elementor-Container */
	box-sizing: border-box;
	font-family: var(--cbm-font);
	overflow: hidden;  /* verhindert Grid-Overflow nach rechts */
}

/* Buchungs-Summary oben */
.cbm-booking-summary {
	background: var(--cbm-indigo-light);
	border: 1px solid #c7d2fe;
	border-radius: var(--cbm-radius);
	padding: 16px 20px;
	margin-bottom: 24px;
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.cbm-booking-summary-title {
	font-weight: 700;
	font-size: 1rem;
	color: var(--cbm-slate);
	margin: 0;
}

.cbm-booking-summary-meta {
	color: var(--cbm-indigo-dark);
	font-size: .875rem;
	margin: 0;
}

/* Formular-Titel */
.cbm-form-title {
	font-size: 1.35rem;
	font-weight: 700;
	color: var(--cbm-slate);
	margin: 0 0 20px;
}

.cbm-form-session,
.cbm-form-price { margin: 4px 0 16px; color: var(--cbm-slate-light); font-size: .9rem; }

/* Fieldset */
.cbm-fieldset {
	border: 1px solid var(--cbm-border);
	border-radius: var(--cbm-radius);
	padding: 20px 24px;
	margin-bottom: 18px;
	background: var(--cbm-white);
}

.cbm-fieldset legend {
	font-weight: 700;
	font-size: .8rem;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: var(--cbm-slate-light);
	padding: 0 8px;
}

.cbm-fieldset-legal {
	background: var(--cbm-bg);
	border-style: dashed;
}

/* Felder */
.cbm-field {
	display: flex;
	flex-direction: column;
	gap: 5px;
	margin-bottom: 16px;
}

.cbm-field:last-child { margin-bottom: 0; }

.cbm-field label {
	font-size: .8rem;
	font-weight: 600;
	color: var(--cbm-slate-mid);
	text-transform: uppercase;
	letter-spacing: .04em;
}

.cbm-field input[type="text"],
.cbm-field input[type="email"],
.cbm-field input[type="tel"],
.cbm-field input[type="number"],
.cbm-field textarea,
.cbm-field select {
	border: 1.5px solid var(--cbm-border);
	border-radius: var(--cbm-radius-sm);
	padding: 9px 12px;
	font-size: .95rem;
	font-family: var(--cbm-font);
	color: var(--cbm-slate);
	width: 100%;
	box-sizing: border-box;
	background: var(--cbm-white);
	transition: border-color var(--cbm-transition), box-shadow var(--cbm-transition);
}

.cbm-field input:focus,
.cbm-field textarea:focus,
.cbm-field select:focus {
	outline: none;
	border-color: var(--cbm-indigo);
	box-shadow: 0 0 0 3px rgba(79,70,229,.12);
}

.cbm-field-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}

/* Checkbox */
.cbm-field-checkbox {
	flex-direction: row;
	align-items: flex-start;
	gap: 10px;
}

.cbm-field-checkbox input[type="checkbox"] {
	width: 18px;
	height: 18px;
	margin-top: 1px;
	flex-shrink: 0;
	accent-color: var(--cbm-indigo);
	cursor: pointer;
}

.cbm-field-checkbox label {
	text-transform: none;
	letter-spacing: 0;
	font-weight: 400;
	font-size: .875rem;
	color: var(--cbm-slate-mid);
	cursor: pointer;
}

/* Pflichtfeld */
.cbm-required { color: var(--cbm-danger); }

/* Fehler-State */
.cbm-field-error input,
.cbm-field-error textarea,
.cbm-field-error select {
	border-color: var(--cbm-danger) !important;
	box-shadow: 0 0 0 3px rgba(239,68,68,.1) !important;
}

/* Preis-Gesamt */
.cbm-price-total {
	background: var(--cbm-indigo-light);
	border: 1px solid #c7d2fe;
	border-radius: var(--cbm-radius-sm);
	padding: 12px 16px;
	margin: 4px 0 16px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	font-size: .9rem;
	color: var(--cbm-slate-mid);
}

.cbm-price-total strong {
	font-size: 1.1rem;
	color: var(--cbm-indigo);
}

/* ══════════════════════════════════════════════════════════
   TARIF-AUSWAHL
   ══════════════════════════════════════════════════════════ */

.cbm-tariff-choices {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.cbm-tariff-choice {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 14px 16px;
	border: 2px solid var(--cbm-border);
	border-radius: var(--cbm-radius-sm);
	cursor: pointer;
	background: var(--cbm-white);
	transition: border-color var(--cbm-transition), background var(--cbm-transition), box-shadow var(--cbm-transition);
}

.cbm-tariff-choice:hover {
	border-color: var(--cbm-indigo);
	background: var(--cbm-indigo-light);
}

.cbm-tariff-choice--active {
	border-color: var(--cbm-indigo);
	background: var(--cbm-indigo-light);
	box-shadow: 0 0 0 3px rgba(79,70,229,.1);
}

.cbm-tariff-choice input[type="radio"] {
	width: 18px;
	height: 18px;
	flex-shrink: 0;
	accent-color: var(--cbm-indigo);
	cursor: pointer;
}

.cbm-tariff-choice-body { flex: 1; min-width: 0; }

.cbm-tariff-choice-name {
	font-weight: 700;
	font-size: .9rem;
	color: var(--cbm-slate);
}

.cbm-tariff-choice-desc {
	font-size: .8rem;
	color: var(--cbm-slate-light);
	margin-top: 2px;
}

.cbm-tariff-choice-price {
	font-weight: 800;
	font-size: 1rem;
	color: var(--cbm-indigo);
	white-space: nowrap;
}

/* ══════════════════════════════════════════════════════════
   BUTTONS
   ══════════════════════════════════════════════════════════ */

.cbm-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	padding: 9px 22px;
	border-radius: var(--cbm-radius-sm);
	text-decoration: none;
	font-size: .875rem;
	font-weight: 600;
	font-family: var(--cbm-font);
	cursor: pointer;
	border: 2px solid transparent;
	transition: background var(--cbm-transition), color var(--cbm-transition),
	            box-shadow var(--cbm-transition), transform var(--cbm-transition);
	white-space: nowrap;
}

.cbm-btn-primary {
	background: var(--cbm-indigo);
	color: #fff;
	border-color: var(--cbm-indigo);
}

.cbm-btn-primary:hover {
	background: var(--cbm-indigo-dark);
	border-color: var(--cbm-indigo-dark);
	color: #fff;
	box-shadow: 0 4px 14px rgba(79,70,229,.35);
	transform: translateY(-1px);
}

.cbm-btn-primary:active {
	transform: translateY(0);
	box-shadow: none;
}

.cbm-btn-outline {
	background: transparent;
	color: var(--cbm-indigo);
	border-color: var(--cbm-indigo);
}

.cbm-btn-outline:hover {
	background: var(--cbm-indigo-light);
	color: var(--cbm-indigo-dark);
}

.cbm-btn-small {
	padding: 5px 14px;
	font-size: .8rem;
}

.cbm-btn-ghost {
	background: transparent;
	color: var(--cbm-slate-mid);
	border-color: var(--cbm-border);
}

.cbm-btn-ghost:hover {
	background: var(--cbm-bg);
	color: var(--cbm-slate);
}

/* Submit-Button (Formular) */
.cbm-form-actions {
	margin: 20px 0 0;
}

.cbm-form-actions button {
	font-family: var(--cbm-font);
	font-size: 1rem;
	padding: 12px 32px;
	width: 100%;
	border-radius: var(--cbm-radius-sm);
}

.cbm-form-note {
	font-size: .78rem;
	color: var(--cbm-slate-light);
	margin-top: 10px;
	text-align: center;
}

/* ══════════════════════════════════════════════════════════
   ALERTS & NOTICES
   ══════════════════════════════════════════════════════════ */

.cbm-alert {
	padding: 14px 18px;
	border-radius: var(--cbm-radius-sm);
	margin-bottom: 24px;
	font-size: .9rem;
	border-left: 4px solid transparent;
	font-family: var(--cbm-font);
}

.cbm-alert-success {
	background: #f0fdf4;
	border-left-color: var(--cbm-success);
	color: #15803d;
}

.cbm-alert-error {
	background: #fef2f2;
	border-left-color: var(--cbm-danger);
	color: #b91c1c;
}

.cbm-alert-warning {
	background: #fffbeb;
	border-left-color: var(--cbm-warning);
	color: #92400e;
}

.cbm-alert strong { display: block; margin-bottom: 4px; }
.cbm-alert ul { margin: 6px 0 0 18px; padding: 0; }
.cbm-alert li { margin-bottom: 2px; }

.cbm-notice { color: #b45309; font-style: italic; font-family: var(--cbm-font); }

/* ══════════════════════════════════════════════════════════
   STATUS-PILLS
   ══════════════════════════════════════════════════════════ */

.cbm-pill {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 3px 10px;
	border-radius: 20px;
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .02em;
	font-family: var(--cbm-font);
}

.cbm-pill::before {
	content: '';
	display: inline-block;
	width: 6px; height: 6px;
	border-radius: 50%;
	background: currentColor;
	opacity: .7;
}

.cbm-pill-confirmed  { background: #d1fae5; color: #065f46; }
.cbm-pill-pending    { background: #fef3c7; color: #92400e; }
.cbm-pill-cancelled  { background: #fee2e2; color: #991b1b; }
.cbm-pill-completed  { background: #e0e7ff; color: #3730a3; }
.cbm-pill-paid       { background: #d1fae5; color: #065f46; }
.cbm-pill-unpaid     { background: #fff7ed; color: #9a3412; }
.cbm-pill-refunded   { background: #f3f4f6; color: #374151; }

/* ══════════════════════════════════════════════════════════
   RESPONSIVE
   ══════════════════════════════════════════════════════════ */

@media ( max-width: 640px ) {
	.cbm-field-row { grid-template-columns: 1fr; }

	.cbm-offer-header {
		flex-direction: column;
		align-items: flex-start;
	}

	.cbm-session-item {
		grid-template-columns: 1fr;
		gap: 10px;
	}

	.cbm-session-item .cbm-btn {
		width: 100%;
		justify-content: center;
	}

	.cbm-fieldset { padding: 16px; }
	.cbm-form-actions button { font-size: .9rem; }

	.cbm-offers-grid { grid-template-columns: 1fr; }
}

@media ( max-width: 400px ) {
	.cbm-price-total { flex-direction: column; align-items: flex-start; gap: 4px; }
}

/* ══════════════════════════════════════════════════════════
   WARTELISTE (Einzelangebot)
   ══════════════════════════════════════════════════════════ */

/* Vollgebucht + Warteliste vorhanden */
.cbm-session-item--full .cbm-session-date,
.cbm-session-item--full .cbm-session-time {
	opacity: .65;
}

.cbm-btn-outline {
	background: transparent;
	color: var(--cbm-indigo);
	border: 2px solid var(--cbm-indigo);
	font-weight: 600;
}
.cbm-btn-outline:hover {
	background: var(--cbm-indigo-light);
}

.cbm-wl-toggle--active {
	background: var(--cbm-indigo) !important;
	color: #fff !important;
}

.cbm-wl-count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--cbm-indigo);
	color: #fff;
	font-size: .7rem;
	font-weight: 700;
	border-radius: 50px;
	padding: 1px 6px;
	margin-left: 5px;
	min-width: 18px;
}

/* Wartelisten-Formular-Zeile */
.cbm-waitlist-form-row {
	list-style: none;
	padding: 0;
	margin: 0;
}

.cbm-waitlist-form-wrap {
	background: var(--cbm-indigo-light);
	border: 1px solid #c7d2fe;
	border-radius: var(--cbm-radius);
	padding: 20px 24px;
	margin: 4px 0 12px;
}

.cbm-waitlist-form-wrap h4 {
	margin: 0 0 6px;
	font-size: 1rem;
	color: var(--cbm-indigo-dark);
}

.cbm-wl-info {
	margin: 0 0 16px;
	font-size: .85rem;
	color: var(--cbm-slate-mid);
}

.cbm-wl-fields {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px 16px;
	margin-bottom: 14px;
}

.cbm-wl-field--narrow {
	grid-column: span 1;
}

.cbm-wl-field label {
	display: block;
	font-size: .8rem;
	font-weight: 600;
	color: var(--cbm-slate-mid);
	margin-bottom: 4px;
}

.cbm-wl-field input {
	width: 100%;
	padding: 8px 10px;
	border: 1px solid #c7d2fe;
	border-radius: var(--cbm-radius-sm);
	font-size: .875rem;
	background: #fff;
	box-sizing: border-box;
}
.cbm-wl-field input:focus {
	outline: 2px solid var(--cbm-indigo);
	outline-offset: 1px;
	border-color: var(--cbm-indigo);
}

/* Inline-Nachrichten */
.cbm-notice {
	padding: 10px 14px;
	border-radius: var(--cbm-radius-sm);
	font-size: .875rem;
	margin-bottom: 12px;
}
.cbm-notice--success {
	background: #d1fae5;
	color: #065f46;
	border: 1px solid #6ee7b7;
}
.cbm-notice--warning {
	background: #fef3c7;
	color: #92400e;
	border: 1px solid #fcd34d;
}

/* ══════════════════════════════════════════════════════════
   KUNDEN-AREA: Stornierung
   ══════════════════════════════════════════════════════════ */

.cbm-ca-cancel-box {
	margin-top: 28px;
	padding: 20px 24px;
	border: 1.5px solid #fca5a5;
	border-radius: var(--cbm-radius);
	background: #fff5f5;
}

.cbm-ca-cancel-box h3 {
	margin: 0 0 8px;
	font-size: .95rem;
	color: #b91c1c;
}

.cbm-ca-cancel-box p {
	margin: 0 0 14px;
	font-size: .875rem;
	color: var(--cbm-slate-mid);
}

.cbm-ca-btn-danger {
	background: var(--cbm-danger);
	color: #fff;
	border: none;
	padding: 9px 20px;
	border-radius: var(--cbm-radius-sm);
	font-size: .875rem;
	font-weight: 600;
	cursor: pointer;
	transition: background var(--cbm-transition);
}
.cbm-ca-btn-danger:hover {
	background: #dc2626;
}

/* Kunden-Area Notices */
.cbm-ca-notice {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 16px;
	border-radius: var(--cbm-radius-sm);
	font-size: .875rem;
	margin-bottom: 16px;
}
.cbm-ca-notice--success {
	background: #d1fae5;
	color: #065f46;
	border: 1px solid #6ee7b7;
}
.cbm-ca-notice--error {
	background: #fee2e2;
	color: #991b1b;
	border: 1px solid #fca5a5;
}

/* Info-Notice Variante warn */
.cbm-ca-info-notice--warn {
	background: #fef3c7;
	border-color: #fcd34d;
}
.cbm-ca-info-notice--warn span,
.cbm-ca-info-notice--warn p {
	color: #92400e;
}

@media ( max-width: 640px ) {
	.cbm-wl-fields {
		grid-template-columns: 1fr;
	}
}

/* ══════════════════════════════════════════════════════════
   BUCHUNGS-LOOKUP ([cbm_booking_lookup])
   ══════════════════════════════════════════════════════════ */

.cbm-lookup-wrap {
	max-width: 760px;
	margin: 0 auto;
	font-family: var(--cbm-font);
}

/* Formular-Box */
.cbm-lookup-form-box {
	background: var(--cbm-white);
	border: 1px solid var(--cbm-border);
	border-radius: var(--cbm-radius);
	padding: 32px 36px;
	box-shadow: var(--cbm-shadow);
}

.cbm-lookup-title {
	margin: 0 0 10px;
	font-size: 1.3rem;
	color: var(--cbm-slate);
}

.cbm-lookup-intro {
	margin: 0 0 22px;
	font-size: .9rem;
	color: var(--cbm-slate-mid);
	line-height: 1.6;
}

.cbm-lookup-error {
	background: #fee2e2;
	color: #991b1b;
	border: 1px solid #fca5a5;
	border-radius: var(--cbm-radius-sm);
	padding: 10px 14px;
	font-size: .875rem;
	margin-bottom: 18px;
}

.cbm-lookup-form {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.cbm-lookup-field {
	display: flex;
	flex-direction: column;
	gap: 5px;
}

.cbm-lookup-field label {
	font-size: .82rem;
	font-weight: 600;
	color: var(--cbm-slate-mid);
}

.cbm-lookup-input {
	padding: 10px 14px;
	border: 1.5px solid var(--cbm-border);
	border-radius: var(--cbm-radius-sm);
	font-size: .95rem;
	font-family: var(--cbm-font);
	color: var(--cbm-slate);
	background: var(--cbm-bg);
	transition: border-color var(--cbm-transition);
}
.cbm-lookup-input:focus {
	outline: none;
	border-color: var(--cbm-indigo);
	background: var(--cbm-white);
	box-shadow: 0 0 0 3px rgba(79,70,229,.1);
}

.cbm-lookup-submit {
	align-self: flex-start;
	padding: 11px 28px;
	font-size: .95rem;
}

/* Ergebnis */
.cbm-lookup-result-header {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 16px;
	background: var(--cbm-white);
	border: 1px solid var(--cbm-border);
	border-top: 4px solid var(--cbm-indigo);
	border-radius: var(--cbm-radius);
	padding: 24px 28px;
	margin-bottom: 16px;
	box-shadow: var(--cbm-shadow);
}

.cbm-lookup-ref-label {
	font-family: monospace;
	font-size: .85rem;
	background: var(--cbm-indigo-light);
	color: var(--cbm-indigo-dark);
	padding: 2px 10px;
	border-radius: 4px;
	display: inline-block;
	margin-bottom: 6px;
}

.cbm-lookup-result-header h2 {
	margin: 0 0 10px;
	font-size: 1.15rem;
	color: var(--cbm-slate);
}

.cbm-lookup-pills {
	display: flex;
	gap: 6px;
	flex-wrap: wrap;
}

.cbm-lookup-total-block {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 3px;
	flex-shrink: 0;
}

.cbm-lookup-total-label {
	font-size: .75rem;
	color: var(--cbm-slate-light);
	text-transform: uppercase;
	letter-spacing: .04em;
}

.cbm-lookup-total-amount {
	font-size: 1.35rem;
	font-weight: 700;
	color: var(--cbm-slate);
}

/* Detail-Grid */
.cbm-lookup-detail-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
}

.cbm-lookup-box {
	background: var(--cbm-white);
	border: 1px solid var(--cbm-border);
	border-radius: var(--cbm-radius);
	padding: 20px 22px;
	box-shadow: var(--cbm-shadow);
}

.cbm-lookup-box h3 {
	margin: 0 0 14px;
	font-size: .9rem;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: var(--cbm-slate-light);
}

.cbm-lookup-row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 8px;
	padding: 7px 0;
	border-bottom: 1px solid var(--cbm-border);
	font-size: .875rem;
}
.cbm-lookup-row:last-child {
	border-bottom: none;
}
.cbm-lookup-row > span:first-child {
	color: var(--cbm-slate-light);
	flex-shrink: 0;
}
.cbm-lookup-row > span:last-child {
	font-weight: 500;
	color: var(--cbm-slate);
	text-align: right;
}
.cbm-lookup-row--total > span:last-child {
	font-size: 1rem;
	font-weight: 700;
	color: var(--cbm-slate);
}

/* Status-Pills (shared, auch für Lookup) */
.cbm-pill {
	display: inline-block;
	padding: 3px 10px;
	border-radius: 50px;
	font-size: .75rem;
	font-weight: 600;
}
.cbm-pill-pending   { background: #fef3c7; color: #92400e; }
.cbm-pill-confirmed { background: #d1fae5; color: #065f46; }
.cbm-pill-cancelled { background: #fee2e2; color: #991b1b; }
.cbm-pill-completed { background: #e0f2fe; color: #0369a1; }
.cbm-pill-unpaid    { background: #fef3c7; color: #92400e; }
.cbm-pill-paid      { background: #d1fae5; color: #065f46; }
.cbm-pill-refunded  { background: #f3e8ff; color: #7e22ce; }

/* Sekundär-Button */
.cbm-btn-secondary {
	background: var(--cbm-white);
	color: var(--cbm-indigo);
	border: 1.5px solid var(--cbm-indigo);
	padding: 9px 20px;
	border-radius: var(--cbm-radius-sm);
	font-size: .875rem;
	font-weight: 600;
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	transition: all var(--cbm-transition);
}
.cbm-btn-secondary:hover {
	background: var(--cbm-indigo-light);
}

@media ( max-width: 600px ) {
	.cbm-lookup-form-box {
		padding: 20px 16px;
	}
	.cbm-lookup-detail-grid {
		grid-template-columns: 1fr;
	}
	.cbm-lookup-result-header {
		flex-direction: column;
	}
	.cbm-lookup-total-block {
		align-items: flex-start;
	}
}

/* ══════════════════════════════════════════════════════════
   TERMIN-KARTE (CBM_Widget_Session)
   ══════════════════════════════════════════════════════════ */

.cbm-session-card {
	background: var(--cbm-white);
	border: 1px solid var(--cbm-border);
	border-radius: 12px;
	overflow: hidden;
	font-family: var(--cbm-font);
	position: relative;
	transition: box-shadow var(--cbm-transition), transform var(--cbm-transition);
}
.cbm-session-card--shadow {
	box-shadow: var(--cbm-shadow);
}
.cbm-session-card--shadow:hover {
	box-shadow: var(--cbm-shadow-lg);
	transform: translateY(-2px);
}
.cbm-session-card--cancelled { opacity: .65; }
.cbm-session-card--full .cbm-sc-btn--primary { display: none; }

/* Akzent-Leiste oben */
.cbm-sc-accent-bar {
	height: 4px;
	background: var(--cbm-indigo);
}
.cbm-session-card--cancelled .cbm-sc-accent-bar { background: #94a3b8; }
.cbm-session-card--full      .cbm-sc-accent-bar { background: #f59e0b; }

/* Karteninhalt Padding (Fallback — wird per Elementor Controls überschrieben) */
.cbm-sc-body {
	padding: 20px 24px 24px;
}

/* Badge: Ausgebucht / Abgesagt / Fast voll */
.cbm-sc-badge {
	display: inline-block;
	padding: 4px 12px;
	border-radius: 999px;
	font-size: .72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .05em;
	margin: 14px 0 0 24px;
}
.cbm-sc-badge--full      { background: #fef3c7; color: #92400e; }
.cbm-sc-badge--cancelled { background: #fee2e2; color: #991b1b; }
.cbm-sc-badge--low       { background: #ffedd5; color: #9a3412; }

/* Angebotstitel */
.cbm-sc-offer-title {
	margin-top: 16px;
	font-size: .75rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .07em;
	color: var(--cbm-slate-light);
}

/* Datum / Zeitplan */
.cbm-sc-schedule {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin-top: 8px;
	font-size: 1rem;
	font-weight: 700;
	color: var(--cbm-indigo);
	line-height: 1.5;
}
.cbm-sc-schedule-text { flex: 1; }

/* Meta-Zeilen */
.cbm-sc-meta {
	display: flex;
	flex-direction: column;
	gap: 7px;
	margin-top: 14px;
}
.cbm-sc-meta-item {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: .875rem;
	color: var(--cbm-slate-mid);
}
.cbm-sc-icon {
	font-size: 1rem;
	flex-shrink: 0;
	line-height: 1;
}
.cbm-sc-meta-price strong {
	font-size: 1.05rem;
	color: var(--cbm-slate);
}
.cbm-sc-cap--full  { color: #b45309; font-weight: 600; }
.cbm-sc-cap--low   { color: #d97706; font-weight: 600; }

/* Footer mit Button */
.cbm-sc-footer {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	margin-top: 20px;
}

/* Buttons */
.cbm-sc-btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 11px 22px;
	font-size: .875rem;
	font-weight: 600;
	border-radius: 8px;
	text-decoration: none;
	cursor: pointer;
	border: none;
	transition: background var(--cbm-transition), transform var(--cbm-transition), box-shadow var(--cbm-transition);
	font-family: var(--cbm-font);
}
.cbm-sc-btn--primary {
	background: var(--cbm-indigo);
	color: #fff;
	box-shadow: 0 2px 8px rgba(79,70,229,.3);
}
.cbm-sc-btn--primary:hover {
	background: var(--cbm-indigo-dark);
	color: #fff;
	transform: translateY(-1px);
	box-shadow: 0 4px 14px rgba(79,70,229,.4);
}
.cbm-sc-btn--secondary {
	background: transparent;
	color: var(--cbm-indigo);
	border: 2px solid var(--cbm-indigo);
}
.cbm-sc-btn--secondary:hover {
	background: var(--cbm-indigo-light);
	color: var(--cbm-indigo);
}
.cbm-sc-btn--disabled {
	background: #f1f5f9;
	color: #94a3b8;
	cursor: not-allowed;
}

/* ══════════════════════════════════════════════════════════
   ANGEBOTE-RASTER-WIDGET  (CBM_Widget_Offers_List)
   Klassen-Präfix: cbm-ow-
   ══════════════════════════════════════════════════════════ */

/* Raster-Container */
.cbm-ow-grid {
	display: grid;
	gap: 24px;
	grid-template-columns: repeat(3, 1fr); /* Fallback, wird per Modifier überschrieben */
	width: 100%;
	box-sizing: border-box;
	min-width: 0; /* verhindert Grid-Overflow in Flexbox/engen Containern */
}

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

/* Karte */
.cbm-ow-card {
	background: var(--cbm-white);
	border: 1px solid var(--cbm-border);
	border-radius: var(--cbm-radius);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	position: relative;
	transition: transform var(--cbm-transition), box-shadow var(--cbm-transition);
	font-family: var(--cbm-font);
}

.cbm-ow-card--shadow {
	box-shadow: var(--cbm-shadow);
}

.cbm-ow-card--shadow:hover {
	transform: translateY(-3px);
	box-shadow: var(--cbm-shadow-lg);
}

/* vollständiger Link über die Karte */
.cbm-ow-card-link {
	display: contents; /* link wraps everything without affecting layout */
	text-decoration: none;
	color: inherit;
}

/* Bild-Bereich */
.cbm-ow-image-wrap {
	position: relative;
	overflow: hidden;
	height: 200px;
	flex-shrink: 0;
}

.cbm-ow-image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .4s ease;
}

.cbm-ow-card:hover .cbm-ow-image {
	transform: scale(1.04);
}

.cbm-ow-image-placeholder {
	width: 100%;
	height: 100%;
	background: linear-gradient(135deg, var(--cbm-indigo-light) 0%, #ddd6fe 100%);
	display: flex;
	align-items: center;
	justify-content: center;
}

.cbm-ow-image-placeholder::after {
	content: '📅';
	font-size: 2.5rem;
	opacity: .45;
}

/* Preis-Badge (über dem Bild) — Position immer per Inline-Style gesetzt */
.cbm-ow-price-badge {
	position: absolute;  /* Fallback; top/right/bottom/left kommen per inline-style */
	background: var(--cbm-indigo);
	color: #fff;
	font-size: .8rem;
	font-weight: 700;
	padding: 4px 12px;
	border-radius: 999px;
	letter-spacing: .02em;
	box-shadow: 0 2px 8px rgba(0,0,0,.2);
	pointer-events: none;
	line-height: 1.4;
	width: max-content;   /* verhindert Strecken wenn mehrere Edges gesetzt */
	white-space: nowrap;
	z-index: 2;
}

/* Rabatt-Badge: Original durchgestrichen + Sale-Preis */
.cbm-ow-price-badge--sale {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 1px;
	padding: 6px 12px;
	white-space: nowrap;
	width: max-content;
}
.cbm-ow-price-original {
	font-size: .72em;
	font-weight: 600;
	text-decoration: line-through;
	opacity: .65;
	line-height: 1.2;
}
.cbm-ow-price-sale {
	font-size: 1em;
	font-weight: 800;
	line-height: 1.2;
}

/* Karten-Inhalt */
.cbm-ow-body {
	padding: 18px 20px 20px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	flex: 1;
}

/* Angebots-Titel */
.cbm-ow-title {
	margin: 0;
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.35;
	color: var(--cbm-slate);
	transition: color var(--cbm-transition);
}

.cbm-ow-card:hover .cbm-ow-title,
.cbm-ow-card a:hover .cbm-ow-title {
	color: var(--cbm-indigo);
}

/* Datum / nächster Termin */
.cbm-ow-date {
	font-size: .82rem;
	font-weight: 600;
	color: var(--cbm-indigo);
	display: flex;
	align-items: center;
	gap: 5px;
}

/* "X weitere Termine" */
.cbm-ow-more-sessions {
	font-size: .78rem;
	color: var(--cbm-slate-light);
	margin-top: -4px;
}

/* Ort */
.cbm-ow-location {
	font-size: .82rem;
	color: var(--cbm-slate-light);
}

/* Kurzbeschreibung */
.cbm-ow-excerpt {
	font-size: .85rem;
	color: var(--cbm-slate-mid);
	line-height: 1.6;
	margin: 0;
	flex: 1;
}

/* Button-Bereich */
.cbm-ow-footer {
	margin-top: auto;
	padding-top: 8px;
}

/* Karten-Button */
.cbm-ow-btn {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 8px 18px;
	background: var(--cbm-indigo);
	color: #fff;
	font-size: .82rem;
	font-weight: 600;
	border-radius: 6px;
	text-decoration: none;
	transition: background var(--cbm-transition), transform var(--cbm-transition);
	font-family: var(--cbm-font);
}

.cbm-ow-btn:hover {
	background: var(--cbm-indigo-dark);
	color: #fff;
	transform: translateY(-1px);
}

/* ── Responsive ────────────────────────────────────────── */
@media ( max-width: 1024px ) {
	.cbm-ow-grid--cols-4 { grid-template-columns: repeat(2, 1fr); }
	.cbm-ow-grid--cols-3 { grid-template-columns: repeat(2, 1fr); }
}

@media ( max-width: 640px ) {
	.cbm-ow-grid--cols-1,
	.cbm-ow-grid--cols-2,
	.cbm-ow-grid--cols-3,
	.cbm-ow-grid--cols-4 {
		grid-template-columns: 1fr;
	}
}
