/* ============================================================
 * Beauty Booking — Public / Frontend Styles
 * Werte werden via CSS-Variablen aus den Einstellungen gesteuert.
 * ============================================================ */

.bb-app {
	--bb-primary: #c9a87c;
	--bb-primary-text: #ffffff;
	--bb-hover: #b5946a;
	--bb-bg: #ffffff;
	--bb-surface: #f7f3ee;
	--bb-text: #2c2c2a;
	--bb-service-text: #2c2c2a;
	--bb-muted: #8a857d;
	--bb-border: #e6ded3;
	--bb-available: #c9a87c;
	--bb-radius: 12px;
	--bb-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

	width: 100%;
	max-width: 680px;
	margin: 0 auto;
	font-family: var(--bb-font) !important;
	color: var(--bb-text);
	line-height: 1.5;
	box-sizing: border-box;
}
/* Volle Breite / full width variant */
.bb-app--full { max-width: 100%; }
/* Nie breiter als der Viewport / never wider than the viewport. */
.bb-app, .bb-app * { max-width: 100%; }

.bb-app *,
.bb-app *::before,
.bb-app *::after { box-sizing: border-box; }

/* ------------------------------------------------------------
 * Isolierung von Theme/Elementor / isolate from theme & Elementor.
 * Verhindert, dass globale Button-, Link-, Font- und Farbstile
 * des Themes in das Widget einfließen.
 * ---------------------------------------------------------- */
.bb-app button,
.bb-app input,
.bb-app textarea,
.bb-app select,
.bb-app a {
	font-family: var(--bb-font) !important;
	letter-spacing: normal;
	text-transform: none;
	box-shadow: none;
}
.bb-app button {
	margin: 0;
	text-align: inherit;
	line-height: normal;
	-webkit-appearance: none;
	appearance: none;
	background-image: none !important;
	text-shadow: none !important;
	min-height: 0;
	width: auto;
	cursor: pointer;
}
.bb-app a { text-decoration: none; }
/* Theme-/Elementor-Listenstile neutralisieren / neutralise theme list & generic resets. */
.bb-app ul, .bb-app ol, .bb-app li {
	list-style: none;
	margin: 0;
	padding: 0;
	background: none;
}
.bb-app img { max-width: 100%; }
.bb-app h1, .bb-app h2, .bb-app h3, .bb-app h4,
.bb-app p, .bb-app label, .bb-app span, .bb-app div {
	font-family: var(--bb-font) !important;
}
.bb-app h3 { line-height: 1.3; }

/* Card wrapper */
.bb-widget {
	background: var(--bb-bg) !important;
	border: 1px solid var(--bb-border) !important;
	border-radius: calc(var(--bb-radius) + 4px);
	padding: 28px;
	box-shadow: 0 4px 24px rgba(0,0,0,0.06);
}
@media (max-width: 540px) {
	.bb-widget { padding: 18px; }
}

/* Stepper */
.bb-steps {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 26px;
	gap: 4px;
}
.bb-step {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	flex: 1;
	position: relative;
}
.bb-step__num {
	width: 34px;
	height: 34px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--bb-surface);
	color: var(--bb-muted);
	font-weight: 600;
	font-size: 14px;
	border: 2px solid var(--bb-border);
	transition: all 0.2s;
	z-index: 2;
}
.bb-step__label {
	font-size: 11px;
	color: var(--bb-muted);
	text-align: center;
	font-weight: 500;
}
.bb-step--active .bb-step__num {
	background: var(--bb-primary);
	color: var(--bb-primary-text);
	border-color: var(--bb-primary);
}
.bb-step--done .bb-step__num {
	background: var(--bb-primary);
	color: var(--bb-primary-text);
	border-color: var(--bb-primary);
}
.bb-step--active .bb-step__label { color: var(--bb-text); font-weight: 600; }
.bb-step::after {
	content: "";
	position: absolute;
	top: 17px;
	left: 50%;
	width: 100%;
	height: 2px;
	background: var(--bb-border);
	z-index: 1;
}
.bb-step:last-child::after { display: none; }
.bb-step--done::after { background: var(--bb-primary); }
@media (max-width: 540px) {
	.bb-step__label { display: none; }
}

/* Section title */
.bb-section-title {
	font-size: 20px;
	font-weight: 700;
	margin: 0 0 4px;
	color: var(--bb-text) !important;
}
.bb-section-sub {
	color: var(--bb-muted) !important;
	font-size: 14px;
	margin: 0 0 20px;
}

/* Service list */
.bb-services { display: flex; flex-direction: column; gap: 10px; }
.bb-service {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding: 16px 18px;
	border: 1.5px solid var(--bb-border) !important;
	border-radius: var(--bb-radius);
	background: var(--bb-bg) !important;
	color: var(--bb-service-text) !important;
	cursor: pointer;
	text-align: left;
	width: 100%;
	font-family: var(--bb-font) !important;
	transition: all 0.15s;
}
.bb-service:hover {
	border-color: var(--bb-hover) !important;
	transform: translateY(-1px);
}
.bb-service--selected {
	border-color: var(--bb-primary) !important;
	box-shadow: 0 0 0 2px var(--bb-primary);
	background: var(--bb-surface) !important;
}
.bb-service__info { flex: 1; min-width: 0; }
.bb-service__name { font-weight: 600; font-size: 15px; color: var(--bb-service-text) !important; }
.bb-service__desc {
	font-size: 13px;
	color: var(--bb-muted) !important;
	margin-top: 4px;
	line-height: 1.45;
	white-space: pre-line;
	word-break: break-word;
}
.bb-service__meta { font-size: 13px; color: var(--bb-muted) !important; margin-top: 3px; }
.bb-service__price {
	font-weight: 700;
	font-size: 15px;
	color: var(--bb-primary) !important;
	white-space: nowrap;
}

/* Raster-Layout (Tablet/Desktop) / grid layout */
.bb-app--grid .bb-services {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}
.bb-app--grid .bb-service { align-items: flex-start; }
@media (max-width: 600px) {
	.bb-app--grid .bb-services { grid-template-columns: 1fr; }
}

/* Calendar */
.bb-calendar {
	background: var(--bb-surface) !important;
	border-radius: var(--bb-radius);
	padding: 18px;
	width: 100%;
	max-width: 100%;
	box-sizing: border-box;
	overflow: hidden;
}
.bb-cal-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 14px;
}
.bb-cal-title { font-weight: 700; font-size: 16px; color: var(--bb-text) !important; }
.bb-cal-nav {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: 1px solid var(--bb-border) !important;
	background: var(--bb-bg) !important;
	cursor: pointer;
	font-size: 18px;
	color: var(--bb-text) !important;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 0.15s;
}
.bb-cal-nav:hover:not(:disabled) { border-color: var(--bb-hover) !important; color: var(--bb-hover) !important; }
.bb-cal-nav:disabled { opacity: 0.3; cursor: not-allowed; }
.bb-cal-grid {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 4px;
	width: 100%;
	max-width: 100%;
}
.bb-cal-dow {
	text-align: center;
	font-size: 11px;
	font-weight: 600;
	color: var(--bb-muted) !important;
	padding: 6px 0;
	text-transform: uppercase;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.bb-cal-day {
	aspect-ratio: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 8px;
	border: none !important;
	background: transparent !important;
	cursor: pointer;
	font-size: 14px;
	color: var(--bb-text) !important;
	font-family: var(--bb-font) !important;
	transition: all 0.15s;
	min-width: 0;
	padding: 0;
}
.bb-cal-day--empty { cursor: default; }
.bb-cal-day--available { background: var(--bb-bg) !important; font-weight: 600; }
.bb-cal-day--available:hover { background: var(--bb-hover) !important; color: var(--bb-primary-text) !important; }
.bb-cal-day--disabled { color: var(--bb-border) !important; cursor: not-allowed; }
.bb-cal-day--selected { background: var(--bb-primary) !important; color: var(--bb-primary-text) !important; font-weight: 700; }
.bb-cal-day--selected:hover { background: var(--bb-primary) !important; }
/* Manuell gesperrte Tage (Feiertage/Ferien) / manually blocked days */
.bb-cal-day--blocked {
	background: var(--bb-surface) !important;
	color: var(--bb-muted) !important;
	cursor: help;
	text-decoration: line-through;
	position: relative;
}
.bb-cal-day--blocked:hover { background: var(--bb-border) !important; }
.bb-cal-msg {
	margin-top: 12px;
	padding: 10px 14px;
	border-radius: var(--bb-radius);
	background: var(--bb-surface) !important;
	border: 1px solid var(--bb-border) !important;
	color: var(--bb-text) !important;
	font-size: 14px;
	font-family: var(--bb-font) !important;
	text-align: center;
}

/* Time slots */
.bb-slots {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
	gap: 10px;
	margin-top: 4px;
}
.bb-slot {
	padding: 12px 8px;
	border: 1.5px solid var(--bb-border) !important;
	border-radius: var(--bb-radius);
	background: var(--bb-bg) !important;
	cursor: pointer;
	text-align: center;
	font-size: 14px;
	font-weight: 600;
	color: var(--bb-text) !important;
	font-family: var(--bb-font) !important;
	transition: all 0.15s;
}
.bb-slot:hover { border-color: var(--bb-hover) !important; }
.bb-slot--selected {
	background: var(--bb-available) !important;
	color: var(--bb-primary-text) !important;
	border-color: var(--bb-available) !important;
}

/* Form fields */
.bb-form-group { margin-bottom: 16px; }
.bb-label {
	display: block;
	font-weight: 600;
	font-size: 13px;
	margin-bottom: 6px;
	color: var(--bb-text) !important;
}
.bb-input,
.bb-textarea {
	width: 100%;
	padding: 12px 14px;
	border: 1.5px solid var(--bb-border) !important;
	border-radius: var(--bb-radius);
	font-size: 15px;
	font-family: var(--bb-font) !important;
	color: var(--bb-text) !important;
	background: var(--bb-bg) !important;
	transition: all 0.15s;
}
.bb-input:focus,
.bb-textarea:focus {
	outline: none;
	border-color: var(--bb-primary) !important;
	box-shadow: 0 0 0 2px color-mix(in srgb, var(--bb-primary) 20%, transparent);
}
.bb-textarea { resize: vertical; min-height: 70px; }
.bb-input--error { border-color: #d63638; }

/* Summary */
.bb-summary {
	background: var(--bb-surface) !important;
	border-radius: var(--bb-radius);
	padding: 18px;
	margin-bottom: 20px;
}
.bb-summary-row {
	display: flex;
	justify-content: space-between;
	padding: 7px 0;
	font-size: 14px;
}
.bb-summary-row + .bb-summary-row { border-top: 1px solid var(--bb-border); }
.bb-summary-label { color: var(--bb-muted); }
.bb-summary-value { font-weight: 600; }
.bb-summary-row--total .bb-summary-value { color: var(--bb-primary); font-size: 16px; }

/* Buttons */
.bb-actions {
	display: flex;
	gap: 12px;
	margin-top: 24px;
}
.bb-btn {
	flex: 1;
	padding: 14px 20px;
	border-radius: var(--bb-radius);
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
	border: none;
	font-family: var(--bb-font) !important;
	transition: all 0.15s;
}
.bb-btn--primary {
	background: var(--bb-primary) !important;
	color: var(--bb-primary-text) !important;
}
.bb-btn--primary:hover { background: var(--bb-hover) !important; }
.bb-btn--primary:disabled { opacity: 0.5; cursor: not-allowed; }
.bb-btn--ghost {
	background: transparent !important;
	color: var(--bb-muted) !important;
	border: 1.5px solid var(--bb-border) !important;
	flex: 0 0 auto;
	min-width: 110px;
}
.bb-btn--ghost:hover { border-color: var(--bb-hover) !important; color: var(--bb-text) !important; }
.bb-btn--whatsapp {
	background: #25d366 !important;
	color: #fff !important;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	text-decoration: none;
}

/* States */
.bb-loading {
	text-align: center;
	padding: 40px 20px;
	color: var(--bb-muted);
}
.bb-spinner {
	width: 32px;
	height: 32px;
	border: 3px solid var(--bb-border);
	border-top-color: var(--bb-primary);
	border-radius: 50%;
	margin: 0 auto 14px;
	animation: bb-spin 0.8s linear infinite;
}
@keyframes bb-spin { to { transform: rotate(360deg); } }
.bb-empty-slots {
	text-align: center;
	padding: 30px 20px;
	color: var(--bb-muted) !important;
	background: var(--bb-surface) !important;
	border-radius: var(--bb-radius);
}
.bb-error {
	background: #fbe6e6;
	color: #a32d2d;
	padding: 12px 16px;
	border-radius: var(--bb-radius);
	font-size: 14px;
	margin-bottom: 16px;
}

/* Success screen */
.bb-success { text-align: center; padding: 24px 12px; }
.bb-success__icon {
	width: 72px;
	height: 72px;
	border-radius: 50%;
	background: var(--bb-primary) !important;
	color: var(--bb-primary-text) !important;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 38px;
	margin: 0 auto 18px;
}
.bb-success__title { font-size: 22px; font-weight: 700; margin: 0 0 8px; color: var(--bb-text) !important; }
.bb-success__text { color: var(--bb-muted); margin: 0 0 14px; }
.bb-success__ref {
	display: inline-block;
	background: var(--bb-surface);
	border: 1px dashed var(--bb-primary);
	border-radius: var(--bb-radius);
	padding: 10px 22px;
	font-size: 20px;
	font-weight: 700;
	letter-spacing: 0.05em;
	color: var(--bb-primary);
	margin-bottom: 18px;
}
.bb-success__note { font-size: 14px; color: var(--bb-muted); margin-bottom: 22px; }

/* ============================================================
 * Responsive / mobile — Kalender & gesamtes Widget skalieren.
 * Sorgt dafür, dass der Kalender und alle Schritte auf Smartphones
 * vollständig sichtbar bleiben und nichts überläuft.
 * ============================================================ */

/* Tablet und kleiner / tablet and below. */
@media (max-width: 600px) {
	.bb-section-title { font-size: 18px; }
	.bb-slots { grid-template-columns: repeat(auto-fill, minmax(78px, 1fr)); gap: 8px; }
	.bb-slot { padding: 11px 6px; }

	.bb-calendar { padding: 12px; }
	.bb-cal-header { margin-bottom: 12px; }
	.bb-cal-grid { gap: 3px; }
	.bb-cal-dow { font-size: 10px; padding: 5px 0; }
	.bb-cal-day { font-size: 13px; border-radius: 7px; }
	.bb-cal-title { font-size: 15px; }
	.bb-cal-nav { width: 34px; height: 34px; font-size: 17px; }
}

/* Smartphone / phone. */
@media (max-width: 430px) {
	.bb-widget { padding: 12px; }
	.bb-section-title { font-size: 17px; }
	.bb-section-sub { font-size: 13px; margin-bottom: 16px; }

	.bb-service { padding: 13px 14px; gap: 10px; }

	/* Kalender kompakt aber vollständig sichtbar / compact yet fully visible. */
	.bb-calendar { padding: 8px; }
	.bb-cal-header { margin-bottom: 10px; }
	.bb-cal-grid { gap: 2px; }
	.bb-cal-dow { font-size: 9px; padding: 4px 0; letter-spacing: 0; }
	.bb-cal-day { font-size: 12px; border-radius: 6px; }
	.bb-cal-title { font-size: 14px; }
	.bb-cal-nav { width: 32px; height: 32px; font-size: 16px; }

	.bb-slots { grid-template-columns: repeat(3, 1fr); gap: 7px; }
	.bb-slot { padding: 10px 4px; font-size: 13px; }

	/* Aktionen untereinander, damit Buttons nicht zu schmal werden. */
	.bb-actions { gap: 8px; }
	.bb-btn { padding: 13px 14px; font-size: 14px; }
	.bb-btn--ghost { min-width: 92px; }
}

/* Sehr schmale Geräte / very narrow devices. */
@media (max-width: 340px) {
	.bb-widget { padding: 10px; }
	.bb-calendar { padding: 6px; }
	.bb-cal-grid { gap: 1px; }
	.bb-cal-day { font-size: 11px; border-radius: 5px; }
	.bb-cal-nav { width: 30px; height: 30px; font-size: 15px; }
	.bb-slots { grid-template-columns: repeat(3, 1fr); gap: 6px; }
}
