/**
 * Room Booking calendar styles.
 *
 * Deliberately low-specificity and variable-driven so themes and Elementor
 * global colours can override the palette without fighting !important.
 */

.rb-calendar {
	--rb-border: #dcdcde;
	--rb-surface: #fff;
	--rb-muted: #f2f3f5;
	--rb-text: #1e1e1e;
	--rb-text-muted: #757575;
	--rb-accent: #2271b1;
	--rb-accent-text: #fff;
	--rb-available: #eaf5ea;
	--rb-available-border: #7ac07a;
	--rb-booked: #fdeaea;
	--rb-booked-border: #e6a2a2;
	--rb-cart: #fff4e0;
	--rb-cart-border: #e8b96a;
	--rb-radius: 6px;

	box-sizing: border-box;
	color: var(--rb-text);
	font-size: 15px;
	margin: 0 0 1.5em;
	max-width: 100%;
}

.rb-calendar *,
.rb-calendar *::before,
.rb-calendar *::after {
	box-sizing: inherit;
}

/* ---------- Month ---------- */

.rb-month-head {
	align-items: center;
	display: flex;
	justify-content: space-between;
	margin-bottom: 0.75em;
}

.rb-month-label {
	font-size: 1.1em;
	font-weight: 600;
}

.rb-nav {
	background: var(--rb-surface);
	border: 1px solid var(--rb-border);
	border-radius: var(--rb-radius);
	color: var(--rb-text);
	cursor: pointer;
	font-size: 1.2em;
	line-height: 1;
	min-height: 36px;
	min-width: 36px;
	padding: 0.25em 0.6em;
}

.rb-nav:hover:not(:disabled) {
	border-color: var(--rb-accent);
	color: var(--rb-accent);
}

.rb-nav:disabled {
	cursor: not-allowed;
	opacity: 0.35;
}

.rb-weekdays,
.rb-days {
	display: grid;
	gap: 4px;
	grid-template-columns: repeat(7, minmax(0, 1fr));
}

.rb-weekdays {
	color: var(--rb-text-muted);
	font-size: 0.78em;
	letter-spacing: 0.04em;
	margin-bottom: 4px;
	text-align: center;
	text-transform: uppercase;
}

.rb-day,
.rb-day-blank {
	align-items: center;
	aspect-ratio: 1 / 1;
	border-radius: var(--rb-radius);
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: 42px;
	padding: 2px;
}

.rb-day {
	background: var(--rb-muted);
	border: 1px solid transparent;
	color: var(--rb-text);
	cursor: pointer;
	font: inherit;
	line-height: 1.1;
	transition: border-color 0.12s ease, background 0.12s ease;
}

.rb-day__num {
	font-size: 0.95em;
	font-weight: 600;
}

.rb-day__count {
	color: var(--rb-text-muted);
	font-size: 0.68em;
}

.rb-day--available {
	background: var(--rb-available);
	border-color: var(--rb-available-border);
}

.rb-day--available:hover {
	border-color: var(--rb-accent);
}

.rb-day--full {
	background: var(--rb-booked);
	border-color: var(--rb-booked-border);
	color: var(--rb-text-muted);
}

.rb-day--closed,
.rb-day--past {
	background: var(--rb-muted);
	color: #b0b0b0;
}

.rb-day--in-cart {
	box-shadow: inset 0 0 0 2px var(--rb-cart-border);
}

.rb-day:disabled {
	cursor: not-allowed;
}

.rb-day.is-selected {
	background: var(--rb-accent);
	border-color: var(--rb-accent);
	color: var(--rb-accent-text);
}

.rb-day.is-selected .rb-day__count {
	color: var(--rb-accent-text);
	opacity: 0.85;
}

/* ---------- Legend ---------- */

.rb-legend {
	color: var(--rb-text-muted);
	display: flex;
	flex-wrap: wrap;
	font-size: 0.8em;
	gap: 0.4em 1em;
	margin-top: 0.75em;
}

.rb-legend__item {
	align-items: center;
	display: inline-flex;
	gap: 0.4em;
}

.rb-swatch {
	border: 1px solid var(--rb-border);
	border-radius: 3px;
	display: inline-block;
	height: 12px;
	width: 12px;
}

.rb-swatch--available {
	background: var(--rb-available);
	border-color: var(--rb-available-border);
}

.rb-swatch--booked {
	background: var(--rb-booked);
	border-color: var(--rb-booked-border);
}

.rb-swatch--closed {
	background: var(--rb-muted);
}

.rb-swatch--in-cart {
	background: var(--rb-cart);
	border-color: var(--rb-cart-border);
}

/* ---------- Day / slots ---------- */

.rb-calendar__day {
	margin-top: 1.25em;
}

.rb-day-head {
	align-items: baseline;
	border-top: 1px solid var(--rb-border);
	display: flex;
	flex-wrap: wrap;
	gap: 0.5em 1em;
	justify-content: space-between;
	padding-top: 1em;
}

.rb-day-head__hours {
	color: var(--rb-text-muted);
	font-size: 0.85em;
}

.rb-slots {
	display: grid;
	gap: 4px;
	grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
	margin: 0.75em 0;
}

.rb-slot {
	background: var(--rb-muted);
	border: 1px solid transparent;
	border-radius: var(--rb-radius);
	color: var(--rb-text);
	cursor: pointer;
	font: inherit;
	font-size: 0.82em;
	padding: 0.5em 0.25em;
	text-align: center;
	transition: border-color 0.12s ease, background 0.12s ease;
}

.rb-slot--available {
	background: var(--rb-available);
	border-color: var(--rb-available-border);
}

.rb-slot--available:hover {
	border-color: var(--rb-accent);
}

.rb-slot--booked {
	background: var(--rb-booked);
	border-color: var(--rb-booked-border);
	color: var(--rb-text-muted);
	text-decoration: line-through;
}

.rb-slot--closed,
.rb-slot--past {
	color: #b0b0b0;
}

.rb-slot--in-cart {
	background: var(--rb-cart);
	border-color: var(--rb-cart-border);
	color: var(--rb-text-muted);
}

.rb-slot:disabled {
	cursor: not-allowed;
}

.rb-slot.is-selected {
	background: var(--rb-accent);
	border-color: var(--rb-accent);
	color: var(--rb-accent-text);
}

.rb-slot.is-start {
	border-bottom-left-radius: var(--rb-radius);
	border-top-left-radius: var(--rb-radius);
	font-weight: 600;
}

.rb-slot.is-end {
	font-weight: 600;
}

/* ---------- Summary ---------- */

.rb-summary {
	align-items: center;
	background: var(--rb-muted);
	border-radius: var(--rb-radius);
	display: flex;
	flex-wrap: wrap;
	gap: 0.4em 1em;
	margin: 0.75em 0;
	padding: 0.85em 1em;
}

.rb-summary__label {
	color: var(--rb-text-muted);
	font-size: 0.78em;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	width: 100%;
}

.rb-summary__value {
	font-weight: 600;
}

.rb-summary__meta,
.rb-summary__total {
	color: var(--rb-text-muted);
	font-size: 0.9em;
}

.rb-summary__total {
	color: var(--rb-text);
	font-weight: 600;
}

.rb-clear {
	background: none;
	border: 0;
	color: var(--rb-accent);
	cursor: pointer;
	font: inherit;
	font-size: 0.85em;
	margin-left: auto;
	padding: 0;
	text-decoration: underline;
}

/* ---------- Messages ---------- */

.rb-calendar__hint {
	color: var(--rb-text-muted);
	font-size: 0.88em;
	margin: 0.5em 0;
}

.rb-calendar__hint--warn {
	color: #b26800;
}

.rb-calendar__error {
	background: var(--rb-booked);
	border-left: 3px solid #cc1818;
	border-radius: 3px;
	margin: 0.5em 0;
	padding: 0.7em 0.9em;
}

.rb-calendar__loading {
	color: var(--rb-text-muted);
	font-size: 0.9em;
	padding: 1em 0;
}

.rb-calendar__notice {
	background: var(--rb-muted);
	border-radius: var(--rb-radius);
	padding: 0.8em 1em;
}

.rb-calendar__submit[disabled] {
	cursor: not-allowed;
	opacity: 0.5;
}

/* Narrow screens: denser slot grid. */
@media (max-width: 480px) {
	.rb-slots {
		grid-template-columns: repeat(auto-fill, minmax(54px, 1fr));
	}

	.rb-calendar {
		font-size: 14px;
	}
}
