.rbt-area-list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 20px;
	margin: 20px 0;
}

.rbt-area-card {
	border: 1px solid #ddd;
	border-radius: 10px;
	padding: 16px;
	background: #fff;
	box-shadow: 0 2px 12px rgba(0,0,0,.06);
}

.rbt-booking-app {
	position: relative;
	margin: 24px 0;
}

.rbt-main-availability-filter {
	display: flex;
	flex-wrap: wrap;
	align-items: end;
	gap: 12px;
	padding: 16px;
	margin: 18px 0;
	background: #f7f7f7;
	border: 1px solid #ddd;
	border-radius: 10px;
}

.rbt-filter-field label {
	font-weight: 700;
}

.rbt-filter-field input {
	min-width: 150px;
	margin-top: 4px;
}

.rbt-filter-action {
	padding-bottom: 1px;
}

.rbt-refresh-availability,
.rbt-book-button,
.rbt-cancel-booking {
	border: 0;
	border-radius: 6px;
	padding: 10px 14px;
	background: #2271b1;
	color: #fff;
	cursor: pointer;
}

.rbt-refresh-availability:hover,
.rbt-book-button:hover,
.rbt-cancel-booking:hover {
	background: #135e96;
}

.rbt-availability-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin: 12px 0 18px;
	font-size: 14px;
}

.rbt-legend-dot {
	display: inline-block;
	width: 12px;
	height: 12px;
	border-radius: 50%;
	margin-right: 6px;
	vertical-align: -1px;
}

.rbt-legend-available {
	background: #2ecc71;
}

.rbt-legend-partial {
	background: #f1c40f;
}

.rbt-legend-booked {
	background: #e74c3c;
}

.rbt-map-wrap {
	position: relative;
	width: 100%;
	overflow: hidden;
	border: 1px solid #ddd;
	border-radius: 12px;
	background: #f7f7f7;
}

.rbt-map-image {
	display: block;
	width: 100%;
	height: auto;
}

.rbt-map-item {
	position: absolute;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 3px;
	padding: 4px;
	border: 2px solid var(--rbt-color, #2271b1);
	background: color-mix(in srgb, var(--rbt-color, #2271b1) 25%, transparent);
	color: #111;
	font-size: 12px;
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
	cursor: pointer;
	border-radius: 6px;
	transition: transform .15s ease, box-shadow .15s ease, background .15s ease, border-color .15s ease;
}

.rbt-map-item-title {
	display: block;
	pointer-events: none;
}

.rbt-map-item-status {
	display: block;
	font-size: 10px;
	font-weight: 700;
	background: rgba(255,255,255,.85);
	padding: 2px 5px;
	border-radius: 999px;
	pointer-events: none;
}

.rbt-map-item:hover,
.rbt-map-item:focus {
	transform: scale(1.03);
	box-shadow: 0 3px 14px rgba(0,0,0,.2);
	outline: none;
}

.rbt-map-item.rbt-is-loading {
	opacity: .7;
}

.rbt-map-item.rbt-is-available {
	--rbt-color: #2ecc71;
	background: rgba(46, 204, 113, .28);
	border-color: #2ecc71;
}

.rbt-map-item.rbt-is-partial {
	--rbt-color: #f1c40f;
	background: rgba(241, 196, 15, .38);
	border-color: #f1c40f;
}

.rbt-map-item.rbt-is-booked {
	--rbt-color: #e74c3c;
	background: rgba(231, 76, 60, .38);
	border-color: #e74c3c;
}

.rbt-booking-panel {
	position: fixed;
	z-index: 99999;
	top: 50%;
	left: 50%;
	width: min(520px, calc(100vw - 32px));
	max-height: calc(100vh - 32px);
	overflow: auto;
	transform: translate(-50%, -50%);
	background: #fff;
	border-radius: 14px;
	box-shadow: 0 10px 40px rgba(0,0,0,.3);
	padding: 24px;
}

.rbt-close-panel {
	position: absolute;
	top: 10px;
	right: 10px;
	width: 34px;
	height: 34px;
	border: 0;
	border-radius: 50%;
	background: #f0f0f0;
	cursor: pointer;
	font-size: 22px;
	line-height: 1;
}

.rbt-panel-current-status {
	font-weight: 700;
}

.rbt-booking-form input,
.rbt-booking-form textarea {
	width: 100%;
	max-width: 100%;
}

.rbt-booking-message {
	margin-top: 12px;
	font-weight: 700;
}

.rbt-booking-message.rbt-success {
	color: #16803a;
}

.rbt-booking-message.rbt-error {
	color: #c0392b;
}

.rbt-table {
	width: 100%;
	border-collapse: collapse;
}

.rbt-table th,
.rbt-table td {
	border: 1px solid #ddd;
	padding: 10px;
	text-align: left;
}

@media (max-width: 700px) {
	.rbt-main-availability-filter {
		display: block;
	}

	.rbt-filter-field {
		margin-bottom: 12px;
	}

	.rbt-filter-field input {
		width: 100%;
	}

	.rbt-map-item {
		font-size: 10px;
	}

	.rbt-map-item-status {
		font-size: 9px;
	}
}