.ir-booking {
	margin: 40px 0;
	padding: 24px;
	border-radius: 28px;
	background: #f8fafc;
	border: 1px solid #e2e8f0;
	box-shadow: 0 20px 50px rgba(15, 35, 55, .08);
	color: #0f172a;
}

.ir-booking * {
	box-sizing: border-box;
}

.ir-booking__head {
	margin-bottom: 20px;
}

.ir-booking__eyebrow {
	margin: 0 0 6px;
	color: #0e9bb0;
	font-size: 11px;
	font-weight: 900;
	letter-spacing: .16em;
}

.ir-booking__head h2 {
	margin: 0;
	font-size: clamp(24px, 4vw, 34px);
	line-height: 1.25;
}

.ir-booking__head p {
	margin: 8px 0 0;
	color: #64748b;
}

.ir-booking__notice {
	margin: 16px 0;
	padding: 14px 16px;
	border-radius: 16px;
	font-weight: 700;
}

.ir-booking__notice span {
	display: block;
	margin-top: 4px;
	font-weight: 500;
}

.ir-booking__notice--success {
	background: #dcfce7;
	color: #166534;
	border: 1px solid #86efac;
}

.ir-booking__notice--error {
	background: #fee2e2;
	color: #991b1b;
	border: 1px solid #fecaca;
}

.ir-booking__form {
	display: grid;
	gap: 20px;
}

.ir-booking__section {
	padding: 20px;
	border-radius: 22px;
	background: #fff;
	border: 1px solid #e2e8f0;
}

.ir-booking__section h3 {
	margin: 0 0 14px;
	font-size: 18px;
}

.ir-slot-select {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.ir-slot-option {
	position: relative;
	display: block;
	cursor: pointer;
}

.ir-slot-option input {
	position: absolute;
	inset: 0;
	opacity: 0;
	pointer-events: none;
}

.ir-slot-option__body {
	display: grid;
	gap: 4px;
	min-height: 94px;
	padding: 16px;
	border-radius: 18px;
	border: 1px solid #cbd5e1;
	background: #f8fafc;
	transition: .2s ease;
}

.ir-slot-option strong {
	font-size: 16px;
}

.ir-slot-option em {
	font-style: normal;
	color: #0e7490;
	font-weight: 800;
}

.ir-slot-option small {
	color: #64748b;
	font-weight: 700;
}

.ir-slot-option input:checked + .ir-slot-option__body {
	border-color: #0e9bb0;
	background: #ecfeff;
	box-shadow: 0 0 0 3px rgba(14, 155, 176, .14);
}

.ir-booking__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px;
}

.ir-booking label span {
	display: block;
	margin-bottom: 7px;
	color: #334155;
	font-size: 13px;
	font-weight: 800;
}

.ir-booking label b {
	color: #ef4444;
	font-size: 11px;
}

.ir-booking input,
.ir-booking textarea {
	width: 100%;
	min-height: 44px;
	border: 1px solid #cbd5e1;
	border-radius: 14px;
	padding: 10px 12px;
	background: #fff;
	font-size: 16px;
}

.ir-booking textarea {
	resize: vertical;
}

.ir-booking input:focus,
.ir-booking textarea:focus {
	border-color: #0e9bb0;
	box-shadow: 0 0 0 3px rgba(14, 155, 176, .14);
	outline: none;
}

.ir-booking__hint {
	margin: 10px 0 0;
	color: #64748b;
	font-size: 13px;
}

.ir-booking__full {
	display: block;
	margin-top: 14px;
}

.ir-booking__summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 18px 20px;
	border-radius: 22px;
	background: linear-gradient(135deg, #062a4f, #0e9bb0);
	color: #fff;
}

.ir-booking__summary span {
	display: block;
	margin-bottom: 4px;
	color: rgba(255,255,255,.75);
	font-size: 13px;
	font-weight: 800;
}

.ir-booking__summary strong {
	font-size: 28px;
	line-height: 1;
}

.ir-booking__summary small {
	color: rgba(255,255,255,.75);
}

.ir-booking__agree {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 16px;
	border-radius: 18px;
	background: #fff;
	border: 1px solid #e2e8f0;
}

.ir-booking__agree input {
	width: auto;
	min-height: 0;
	margin-top: 3px;
}

.ir-booking__submit {
	width: 100%;
	min-height: 56px;
	border: 0;
	border-radius: 999px;
	background: linear-gradient(135deg, #ff8a3d, #ff5f5f);
	color: #fff;
	font-size: 18px;
	font-weight: 900;
	cursor: pointer;
	box-shadow: 0 18px 32px rgba(255, 111, 81, .25);
}

.ir-booking__empty {
	padding: 22px;
	border-radius: 20px;
	background: #fff;
	border: 1px solid #e2e8f0;
	color: #64748b;
	font-weight: 700;
}

@media (max-width: 782px) {
	.ir-booking {
		padding: 16px;
		border-radius: 22px;
	}

	.ir-slot-select,
	.ir-booking__grid {
		grid-template-columns: 1fr;
	}

	.ir-booking__summary {
		display: block;
	}

	.ir-booking__summary small {
		display: block;
		margin-top: 10px;
	}
}

/* ================================
	Booking calendar
================================ */
.ir-calendar {
	border: 1px solid #e2e8f0;
	border-radius: 22px;
	background: #fff;
	overflow: hidden;
}

.ir-calendar__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 16px;
	background: linear-gradient(135deg, #062a4f, #0e9bb0);
	color: #fff;
}

.ir-calendar__head strong {
	font-size: 20px;
	letter-spacing: .04em;
}

.ir-calendar__nav {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border: 1px solid rgba(255,255,255,.35);
	border-radius: 999px;
	background: rgba(255,255,255,.14);
	color: #fff;
	font-size: 28px;
	line-height: 1;
	cursor: pointer;
}

.ir-calendar__nav:disabled {
	opacity: .35;
	cursor: not-allowed;
}

.ir-calendar__week,
.ir-calendar__body {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
}

.ir-calendar__week {
	background: #f1f5f9;
	border-bottom: 1px solid #e2e8f0;
}

.ir-calendar__week span {
	padding: 10px 4px;
	text-align: center;
	color: #475569;
	font-size: 12px;
	font-weight: 900;
}

.ir-calendar__body {
	gap: 1px;
	background: #e2e8f0;
}

.ir-calendar__empty,
.ir-calendar__day {
	min-height: 78px;
	background: #fff;
}

.ir-calendar__day {
	display: grid;
	align-content: center;
	justify-items: center;
	gap: 5px;
	border: 0;
	cursor: pointer;
	transition: .18s ease;
}

.ir-calendar__day span {
	font-size: 18px;
	font-weight: 900;
	color: #0f172a;
}

.ir-calendar__day small {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: 999px;
	font-size: 13px;
	font-weight: 900;
}

.ir-calendar__day.is-open small {
	background: #dcfce7;
	color: #166534;
}

.ir-calendar__day.is-limited small {
	background: #fef3c7;
	color: #92400e;
}

.ir-calendar__day.is-closed {
	background: #f8fafc;
	cursor: not-allowed;
}

.ir-calendar__day.is-closed span {
	color: #cbd5e1;
}

.ir-calendar__day.is-closed small {
	background: #e2e8f0;
	color: #94a3b8;
}

.ir-calendar__day:not(:disabled):hover,
.ir-calendar__day.is-selected {
	position: relative;
	z-index: 1;
	background: #ecfeff;
	box-shadow: inset 0 0 0 3px #0e9bb0;
}

.ir-calendar__legend {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	padding: 14px 16px;
	background: #fff;
	border-top: 1px solid #e2e8f0;
}

.ir-calendar__legend span {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: #475569;
	font-size: 12px;
	font-weight: 800;
}

.ir-calendar__legend i {
	width: 12px;
	height: 12px;
	border-radius: 999px;
}

.ir-calendar__legend .is-open {
	background: #22c55e;
}

.ir-calendar__legend .is-limited {
	background: #f59e0b;
}

.ir-calendar__legend .is-closed {
	background: #cbd5e1;
}

.ir-booking__selected-date {
	margin: -4px 0 14px;
	color: #0e7490;
	font-weight: 900;
}

.ir-time-list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.ir-time-option {
	position: relative;
	display: block;
	cursor: pointer;
}

.ir-time-option input {
	position: absolute;
	inset: 0;
	opacity: 0;
	pointer-events: none;
}

.ir-time-option span {
	display: grid;
	gap: 5px;
	min-height: 96px;
	padding: 16px;
	border: 1px solid #cbd5e1;
	border-radius: 18px;
	background: #f8fafc;
	transition: .18s ease;
}

.ir-time-option strong {
	font-size: 18px;
	color: #0f172a;
}

.ir-time-option em {
	font-style: normal;
	color: #0e7490;
	font-weight: 900;
}

.ir-time-option small {
	color: #64748b;
	font-weight: 700;
}

.ir-time-option input:checked + span {
	border-color: #0e9bb0;
	background: #ecfeff;
	box-shadow: 0 0 0 3px rgba(14, 155, 176, .14);
}

@media (max-width: 782px) {
	.ir-calendar__empty,
	.ir-calendar__day {
		min-height: 58px;
	}

	.ir-calendar__day span {
		font-size: 15px;
	}

	.ir-calendar__day small {
		width: 24px;
		height: 24px;
		font-size: 12px;
	}

	.ir-time-list {
		grid-template-columns: 1fr;
	}
}

.ir-calendar__day {
	padding: 7px 4px;
}

.ir-calendar__date-num {
	font-size: 16px !important;
	line-height: 1;
}

.ir-calendar__remain-text,
.ir-calendar__price-text,
.ir-calendar__closed-text {
	width: auto !important;
	height: auto !important;
	border-radius: 0 !important;
	background: transparent !important;
	line-height: 1.2;
	text-align: center;
}

.ir-calendar__remain-text {
	color: #0e7490 !important;
	font-size: 11px !important;
	font-weight: 900;
}

.ir-calendar__price-text {
	color: #475569 !important;
	font-size: 10px !important;
	font-weight: 800;
}

.ir-calendar__day.is-limited .ir-calendar__remain-text {
	color: #b45309 !important;
}

.ir-calendar__closed-text {
	color: #94a3b8 !important;
	font-size: 10px !important;
	font-weight: 800;
}

.ir-calendar__day.is-open,
.ir-calendar__day.is-limited {
	align-content: center;
}

.ir-calendar__day.is-open::after,
.ir-calendar__day.is-limited::after {
	content: "";
	width: 7px;
	height: 7px;
	border-radius: 999px;
	margin-top: 1px;
}

.ir-calendar__day.is-open::after {
	background: #22c55e;
}

.ir-calendar__day.is-limited::after {
	background: #f59e0b;
}

@media (max-width: 782px) {
	.ir-calendar__day {
		min-height: 64px;
		padding: 5px 2px;
	}

	.ir-calendar__date-num {
		font-size: 14px !important;
	}

	.ir-calendar__remain-text {
		font-size: 10px !important;
	}

	.ir-calendar__price-text,
	.ir-calendar__closed-text {
		font-size: 9px !important;
	}
}

.ir-booking__inline-alert {
	padding: 14px 16px;
	border-radius: 16px;
	background: #fee2e2;
	border: 1px solid #fecaca;
	color: #991b1b;
	font-weight: 800;
	line-height: 1.6;
}

.ir-booking__submit:disabled {
	background: #cbd5e1;
	color: #64748b;
	cursor: not-allowed;
	box-shadow: none;
}

.ir-participants {
	display: grid;
	gap: 14px;
	margin-top: 14px;
}

.ir-participants__empty {
	margin: 0;
	color: #64748b;
	font-weight: 700;
}

.ir-participant-card {
	padding: 16px;
	border: 1px solid #e2e8f0;
	border-radius: 18px;
	background: #f8fafc;
}

.ir-participant-card__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin-bottom: 14px;
}

.ir-participant-card__head strong {
	font-size: 16px;
	color: #0f172a;
}

.ir-participant-card__head span {
	display: inline-flex;
	padding: 5px 9px;
	border-radius: 999px;
	background: #ecfeff;
	color: #0e7490;
	font-size: 12px;
	font-weight: 900;
}

.ir-participant-card__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

@media (max-width: 782px) {
	.ir-participant-card__grid {
		grid-template-columns: 1fr;
	}
}
.ir-participant-reservation-summary {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.ir-participant-reservation-summary div {
	padding: 14px;
	border-radius: 16px;
	background: #f8fafc;
	border: 1px solid #e2e8f0;
}

.ir-participant-reservation-summary span {
	display: block;
	margin-bottom: 5px;
	color: #64748b;
	font-size: 12px;
	font-weight: 900;
}

.ir-participant-reservation-summary strong {
	color: #0f172a;
	font-size: 15px;
}

@media (max-width: 782px) {
	.ir-participant-reservation-summary {
		grid-template-columns: 1fr;
	}
}

/* ================================
	Booking complete
================================ */
.ir-complete {
	display: grid;
	gap: 18px;
}

.ir-complete__hero {
	padding: 26px;
	border-radius: 24px;
	background:
		radial-gradient(circle at top right, rgba(255,255,255,.22), transparent 34%),
		linear-gradient(135deg, #062a4f, #0e9bb0);
	color: #fff;
}

.ir-complete__hero h2 {
	margin: 0;
	font-size: clamp(26px, 4vw, 38px);
	line-height: 1.25;
}

.ir-complete__hero p {
	margin: 10px 0 0;
	color: rgba(255,255,255,.82);
}

.ir-complete__code {
	padding: 22px;
	border-radius: 22px;
	background: #ecfeff;
	border: 1px solid #67e8f9;
	text-align: center;
}

.ir-complete__code span {
	display: block;
	margin-bottom: 8px;
	color: #0e7490;
	font-size: 13px;
	font-weight: 900;
}

.ir-complete__code strong {
	display: block;
	color: #0f172a;
	font-size: clamp(24px, 5vw, 42px);
	letter-spacing: .06em;
}

.ir-complete__summary {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.ir-complete__summary div {
	padding: 16px;
	border-radius: 18px;
	background: #fff;
	border: 1px solid #e2e8f0;
}

.ir-complete__summary span {
	display: block;
	margin-bottom: 6px;
	color: #64748b;
	font-size: 12px;
	font-weight: 900;
}

.ir-complete__summary strong {
	color: #0f172a;
	font-size: 15px;
}

.ir-complete__next {
	padding: 22px;
	border-radius: 24px;
	background: #fff7ed;
	border: 1px solid #fed7aa;
}

.ir-complete__next h3 {
	margin: 0 0 8px;
	font-size: 20px;
	color: #9a3412;
}

.ir-complete__next p {
	margin: 0 0 16px;
	color: #7c2d12;
	font-weight: 700;
	line-height: 1.7;
}

.ir-complete__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 20px;
	border-radius: 999px;
	background: linear-gradient(135deg, #ff8a3d, #ff5f5f);
	color: #fff !important;
	font-weight: 900;
	text-decoration: none;
	box-shadow: 0 18px 32px rgba(255, 111, 81, .25);
}

@media (max-width: 782px) {
	.ir-complete__summary {
		grid-template-columns: 1fr;
	}

	.ir-complete__button {
		width: 100%;
	}
}

.ir-complete__button--cancel {
	background: #fff;
	color: #c0392b !important;
	border: 1px solid #e6b8b2;
	box-shadow: none;
}

.ir-complete__button--cancel:hover {
	background: #fff5f3;
	color: #a93226 !important;
}

button.ir-complete__button {
	border: 0;
	cursor: pointer;
	font-family: inherit;
	font-size: 16px;
}

button.ir-complete__button--cancel {
	border: 1px solid #e6b8b2;
}

/* ================================
	Booking validation
================================ */

.ir-booking__field-alert {
	margin-top: 12px;
	padding: 13px 15px;
	border-radius: 14px;
	background: #fee2e2;
	border: 1px solid #fecaca;
	color: #991b1b;
	font-size: 14px;
	font-weight: 800;
	line-height: 1.6;
}

.ir-booking__field-alert[hidden] {
	display: none !important;
}

/* ================================
	Booking validation summary
================================ */

.ir-booking__validation-summary {
	padding: 16px 18px;
	border-radius: 18px;
	background: #fff1f2;
	border: 1px solid #fecaca;
	color: #991b1b;
}

.ir-booking__validation-summary[hidden] {
	display: none !important;
}

.ir-booking__validation-summary strong {
	display: block;
	margin-bottom: 10px;
	font-size: 15px;
	font-weight: 900;
}

.ir-booking__validation-summary ul {
	margin: 0;
	padding-left: 1.3em;
	display: grid;
	gap: 5px;
}

.ir-booking__validation-summary li {
	font-size: 14px;
	font-weight: 800;
	line-height: 1.5;
}

.ir-booking__validation-summary small {
	display: block;
	margin-top: 12px;
	color: #7f1d1d;
	font-size: 12px;
	font-weight: 800;
}

.ir-time-placeholder {
	padding: 16px;
	border-radius: 16px;
	background: #f8fafc;
	border: 1px dashed #cbd5e1;
	color: #64748b;
	font-size: 14px;
	font-weight: 800;
	text-align: center;
}
/* ================================
	Booking options
================================ */
.ir-option-list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	margin-top: 14px;
}

.ir-option-select {
	position: relative;
	display: block;
	cursor: pointer;
}

.ir-option-select input[type="checkbox"] {
	position: absolute;
	inset: 0;
	width: auto;
	min-height: 0;
	opacity: 0;
	pointer-events: none;
}

.ir-option-select > span {
	display: flex !important;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	min-height: 76px;
	margin: 0 !important;
	padding: 15px 16px;
	border: 1px solid #cbd5e1;
	border-radius: 18px;
	background: #f8fafc;
	transition: .18s ease;
}

.ir-option-select strong {
	color: #0f172a;
	font-size: 15px;
	font-weight: 900;
	line-height: 1.5;
}

.ir-option-select em {
	flex-shrink: 0;
	color: #0e7490;
	font-size: 15px;
	font-style: normal;
	font-weight: 900;
}

.ir-option-select input:checked + span {
	border-color: #0e9bb0;
	background: #ecfeff;
	box-shadow: 0 0 0 3px rgba(14, 155, 176, .14);
}

.ir-selected-options-list {
	display: grid;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ir-selected-options-list li {
	font-size: 14px;
	font-weight: 800;
	line-height: 1.55;
}

.ir-selected-options-list b {
	color: #0e7490;
}

@media (max-width: 782px) {
	.ir-option-list {
		grid-template-columns: 1fr;
	}

	.ir-option-select > span {
		display: grid !important;
		justify-content: stretch;
		gap: 6px;
	}
}
