/* =================================================================
   Jessica Booking — base
   ================================================================= */

.jessica-booking-shell,
.jessica-contact-shell,
.jessica-medical-shell {
	display: grid;
	gap: 1.25rem;
}

.jessica-booking-form,
.jessica-contact-form,
.jessica-medical-form {
	display: grid;
	gap: 1.25rem;
}

.is-hidden {
	display: none !important;
}

.checkbox-row {
	display: flex !important;
	align-items: flex-start;
	gap: 0.75rem;
	font-weight: 500;
}

.checkbox-row input {
	width: auto !important;
	margin-top: 0.28rem;
}

.booking-feedback {
	padding: 0.85rem 1rem;
	border-radius: 14px;
	background: rgba(95, 123, 69, 0.12);
	color: #2d3a26;
	border: 1px solid rgba(95, 123, 69, 0.2);
	font-size: 0.92rem;
}

.booking-feedback.is-error {
	background: rgba(184, 60, 36, 0.1);
	color: #7a2c20;
	border-color: rgba(184, 60, 36, 0.25);
}

.booking-service-meta {
	font-size: 0.92rem;
	color: rgba(36, 50, 38, 0.75);
	font-style: italic;
	padding: 0.4rem 0;
}

.booking-service-locked {
	padding: 1rem 1.1rem;
	border-radius: 14px;
	background: rgba(95, 123, 69, 0.08);
	border: 1px solid rgba(95, 123, 69, 0.18);
}

.booking-service-locked__label {
	margin: 0 0 0.25rem;
	font-size: 0.72rem;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: rgba(36, 50, 38, 0.55);
}

.booking-service-locked__title {
	margin: 0;
	font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
	font-size: 1.45rem;
	line-height: 1.2;
	color: #243226;
}

.booking-enquiry-intro {
	margin: 0.75rem 0 0;
	font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
	font-size: 1.05rem;
	font-style: italic;
	line-height: 1.5;
	color: rgba(36, 50, 38, 0.78);
}

.booking-pathways {
	display: grid;
	gap: 1rem;
}

@media (min-width: 640px) {
	.booking-pathways {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.booking-pathways {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.booking-pathway {
	display: grid;
	gap: 0.55rem;
	padding: 1.2rem 1.3rem;
	border-radius: 16px;
	background: rgba(255, 255, 255, 0.55);
	border: 1px solid rgba(95, 123, 69, 0.18);
	text-decoration: none;
	color: inherit;
	transition: border-color 220ms ease, transform 220ms ease, box-shadow 220ms ease;
}

.booking-pathway:hover {
	border-color: rgba(95, 123, 69, 0.35);
	transform: translateY(-1px);
	box-shadow: 0 10px 28px -18px rgba(36, 50, 38, 0.45);
}

.booking-pathway__title {
	margin: 0;
	font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
	font-size: 1.35rem;
	color: #243226;
}

.booking-pathway__copy {
	margin: 0;
	font-size: 0.92rem;
	line-height: 1.6;
	color: rgba(36, 50, 38, 0.72);
}

.booking-pathway__cta {
	font-size: 0.72rem;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: #5f7b45;
}

.booking-back-link {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	margin-bottom: 1rem;
	font-size: 0.88rem;
	color: rgba(36, 50, 38, 0.7);
	text-decoration: none;
}

.booking-back-link:hover {
	color: #243226;
}

/* ----- Service info card ----- */

.booking-service-card {
	border-radius: 18px;
	padding: 1.1rem 1.2rem;
	background: linear-gradient(180deg, rgba(45, 58, 38, 0.06) 0%, rgba(95, 123, 69, 0.08) 100%);
	border: 1px solid rgba(95, 123, 69, 0.18);
}

.booking-service-card[data-state="empty"] {
	background: rgba(36, 50, 38, 0.04);
	border-style: dashed;
}

.booking-service-card__placeholder {
	font-size: 0.92rem;
	color: rgba(36, 50, 38, 0.6);
	font-style: italic;
	text-align: center;
}

.booking-service-card__details {
	display: grid;
	gap: 0.85rem;
}

.booking-service-card__row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
	gap: 0.85rem 1.25rem;
	align-items: start;
}

.booking-service-card__metric {
	display: grid;
	gap: 0.15rem;
}

.booking-service-card__metric-label {
	font-size: 0.68rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: rgba(36, 50, 38, 0.55);
	font-weight: 500;
}

.booking-service-card__metric-value {
	font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
	font-size: 1.35rem;
	color: #1f2a18;
	letter-spacing: 0.005em;
	line-height: 1.1;
}

.booking-service-card__summary {
	margin: 0;
	padding-top: 0.7rem;
	border-top: 1px dashed rgba(95, 123, 69, 0.25);
	font-size: 0.9rem;
	color: rgba(36, 50, 38, 0.78);
	line-height: 1.55;
}

/* =================================================================
   Slot picker (calendar + time chips)
   ================================================================= */

.booking-slot-field {
	display: grid;
	gap: 1.25rem;
	padding: 1.5rem clamp(1rem, 2.5vw, 1.75rem);
	border-radius: 22px;
	background:
		linear-gradient(180deg, rgba(255, 250, 238, 0.65) 0%, rgba(243, 234, 215, 0.55) 100%);
	border: 1px solid rgba(95, 123, 69, 0.18);
	box-shadow: 0 18px 38px rgba(36, 50, 38, 0.08);
	position: relative;
}

.booking-slot-head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.5rem 1rem;
	justify-content: space-between;
}

.booking-slot-label {
	font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
	font-size: clamp(1.4rem, 1.6vw, 1.7rem);
	color: #1f2a18;
	letter-spacing: -0.01em;
}

.booking-slot-hint {
	font-size: 0.85rem;
	color: rgba(36, 50, 38, 0.6);
	font-style: italic;
}

.booking-slot-empty {
	margin: 0;
	padding: 1rem 1.1rem;
	border-radius: 14px;
	background: rgba(36, 50, 38, 0.04);
	color: rgba(36, 50, 38, 0.78);
	font-size: 0.92rem;
	text-align: center;
}

/* ----- Calendar ----- */

.booking-calendar {
	display: grid;
	gap: 0.65rem;
	max-width: 320px;
}

.booking-calendar__nav {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.55rem;
}

.booking-calendar__title {
	font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
	font-size: 1.2rem;
	color: #1f2a18;
	letter-spacing: 0.01em;
	flex: 1;
	text-align: center;
}

.booking-calendar__prev,
.booking-calendar__next {
	width: 32px;
	height: 32px;
	border-radius: 50%;
	border: 1px solid rgba(95, 123, 69, 0.3);
	background: rgba(255, 250, 238, 0.6);
	color: #2d3a26;
	font-size: 1.1rem;
	line-height: 1;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: background 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}

.booking-calendar__prev:hover:not(:disabled),
.booking-calendar__next:hover:not(:disabled) {
	background: rgba(95, 123, 69, 0.14);
	border-color: rgba(95, 123, 69, 0.5);
	transform: translateY(-1px);
}

.booking-calendar__prev:disabled,
.booking-calendar__next:disabled {
	opacity: 0.35;
	cursor: not-allowed;
}

.booking-calendar__weekdays {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 0.28rem;
	font-size: 0.65rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(36, 50, 38, 0.55);
	text-align: center;
	padding: 0 0.1rem;
}

.booking-calendar__grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 0.28rem;
}

.booking-day {
	aspect-ratio: 1 / 1;
	border-radius: 10px;
	border: 1px solid transparent;
	background: transparent;
	color: rgba(36, 50, 38, 0.4);
	font: inherit;
	font-size: 0.84rem;
	font-weight: 500;
	cursor: not-allowed;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	position: relative;
	transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
}

.booking-day--blank {
	pointer-events: none;
	visibility: hidden;
}

.booking-day--past {
	opacity: 0.35;
	text-decoration: line-through;
}

.booking-day--off {
	color: rgba(36, 50, 38, 0.32);
}

.booking-day--open {
	color: #2d3a26;
	background: rgba(255, 255, 255, 0.55);
	border-color: rgba(95, 123, 69, 0.28);
	cursor: pointer;
}

.booking-day--open::after {
	content: '';
	position: absolute;
	bottom: 4px;
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: #5f7b45;
}

.booking-day--open:hover {
	background: rgba(95, 123, 69, 0.16);
	border-color: rgba(95, 123, 69, 0.55);
	transform: translateY(-1px);
}

.booking-day--picked {
	background: #2d3a26;
	color: #f5e8d3;
	border-color: #2d3a26;
	box-shadow: 0 6px 18px rgba(45, 58, 38, 0.28);
}

.booking-day--picked::after {
	background: #f0a44c;
}

.booking-day--selected:not(.booking-day--picked) {
	background: rgba(45, 58, 38, 0.18);
	border-color: #2d3a26;
	color: #1f2a18;
}

.booking-day--picked.booking-day--selected {
	outline: 2px solid #f0a44c;
	outline-offset: 2px;
}

.booking-calendar__legend {
	display: flex;
	flex-wrap: wrap;
	gap: 0.85rem 1.1rem;
	font-size: 0.72rem;
	color: rgba(36, 50, 38, 0.6);
	margin: 0.25rem 0 0;
	letter-spacing: 0.03em;
	align-items: center;
}

.booking-calendar__legend .dot {
	display: inline-block;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	margin-right: 0.35rem;
	vertical-align: middle;
}

.dot--open { background: #5f7b45; }
.dot--selected { background: #2d3a26; }

/* ----- Time chips ----- */

.booking-times {
	display: grid;
	gap: 0.85rem;
	border-top: 1px dashed rgba(95, 123, 69, 0.28);
	padding-top: 1.1rem;
}

.booking-times__head {
	margin: 0;
	font-size: 0.92rem;
	color: rgba(36, 50, 38, 0.7);
}

.booking-times__head strong {
	color: #1f2a18;
	font-weight: 600;
	font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
	font-size: 1.05rem;
	letter-spacing: 0.01em;
}

.booking-times__list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
	gap: 0.6rem;
}

.booking-time {
	display: grid;
	gap: 0.2rem;
	padding: 0.7rem 0.85rem;
	border-radius: 14px;
	border: 1px solid rgba(95, 123, 69, 0.3);
	background: rgba(255, 255, 255, 0.6);
	font: inherit;
	color: #2d3a26;
	cursor: pointer;
	text-align: left;
	transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.booking-time:hover:not(:disabled) {
	background: rgba(95, 123, 69, 0.14);
	border-color: rgba(95, 123, 69, 0.55);
	transform: translateY(-1px);
}

.booking-time--selected {
	background: #2d3a26;
	color: #f5e8d3;
	border-color: #2d3a26;
	box-shadow: 0 10px 22px rgba(45, 58, 38, 0.28);
}

.booking-time--selected .booking-time__meta {
	color: rgba(245, 232, 211, 0.78);
}

.booking-time--full {
	opacity: 0.4;
	cursor: not-allowed;
}

.booking-time__range {
	font-size: 1rem;
	font-weight: 600;
	letter-spacing: 0.01em;
}

.booking-time__range span {
	font-weight: 400;
	color: inherit;
	opacity: 0.75;
}

.booking-time__meta {
	font-size: 0.72rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: rgba(36, 50, 38, 0.55);
}

/* ----- Picked sessions summary (multi-session packages) ----- */

.booking-picked {
	margin-top: 0.4rem;
	padding: 1rem 1.1rem;
	border-radius: 16px;
	background: rgba(45, 58, 38, 0.05);
	border: 1px solid rgba(95, 123, 69, 0.22);
}

.booking-picked__head {
	margin: 0 0 0.7rem;
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.75rem;
	font-size: 0.78rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(36, 50, 38, 0.6);
}

.booking-picked__count {
	color: #2d3a26;
	font-weight: 600;
	letter-spacing: 0.08em;
}

.booking-picked__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.4rem;
}

.booking-picked__item {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: 0.85rem;
	padding: 0.55rem 0.75rem;
	border-radius: 10px;
	background: rgba(255, 255, 255, 0.55);
	border: 1px solid rgba(95, 123, 69, 0.18);
}

.booking-picked__date {
	font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
	font-size: 1.05rem;
	color: #1f2a18;
}

.booking-picked__time {
	font-size: 0.85rem;
	color: rgba(36, 50, 38, 0.75);
	letter-spacing: 0.02em;
}

.booking-picked__remove {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	border: 1px solid rgba(36, 50, 38, 0.2);
	background: transparent;
	color: rgba(36, 50, 38, 0.6);
	font-size: 1rem;
	line-height: 1;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.booking-picked__remove:hover {
	background: rgba(184, 60, 36, 0.1);
	color: #7a2c20;
	border-color: rgba(184, 60, 36, 0.35);
}

/* === Anti-spam human check === */
.form-humancheck { margin: 0.4rem 0 0.2rem; }
.form-humancheck__confirm { display: flex; align-items: center; gap: 0.6rem; }
.form-humancheck__hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* === Newsletter / mailing list form === */
.jessica-newsletter-shell { width: 100%; }
.jessica-newsletter-form { display: grid; gap: 0.9rem; }
.newsletter-fields { display: grid; gap: 0.75rem; }
@media (min-width: 520px) { .newsletter-fields { grid-template-columns: 1fr 1fr; } }
.newsletter-field { display: grid; gap: 0.3rem; }
.newsletter-field__label {
	font-size: 0.72rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	opacity: 0.8;
}
.jessica-newsletter-form input[type="text"],
.jessica-newsletter-form input[type="email"] {
	width: 100%;
	padding: 0.7rem 0.85rem;
	border-radius: 10px;
	border: 1px solid rgba(255, 255, 255, 0.28);
	background: rgba(255, 255, 255, 0.08);
	color: inherit;
	font: inherit;
}
.jessica-newsletter-form .newsletter-submit { justify-self: start; }
.newsletter-smallprint { font-size: 0.75rem; opacity: 0.7; margin: 0; }

/* === Pay it Forward donation form === */
.jessica-donation-form,
.jessica-collective-request-form { display: grid; gap: 1rem; }
.jessica-collective-request-form select,
.jessica-collective-request-form textarea {
	width: 100%;
	padding: 0.65rem 0.75rem;
	border: 1px solid rgba(20, 57, 72, 0.18);
	border-radius: 3px;
	font: inherit;
	background: #fff;
}
.jessica-collective-request-form label {
	display: grid;
	gap: 0.35rem;
	font-size: 0.92rem;
}
.donation-amounts { display: flex; gap: 0.6rem; flex-wrap: wrap; }
.donation-amount {
	flex: 1 1 auto;
	min-width: 80px;
	padding: 0.7rem 1rem;
	border: 1px solid rgba(20, 57, 72, 0.3);
	background: rgba(255, 255, 255, 0.6);
	border-radius: 10px;
	font: inherit;
	font-size: 1.05rem;
	color: #143948;
	cursor: pointer;
	transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.donation-amount:hover { border-color: #dd871e; }
.donation-amount.is-selected {
	background: #dd871e;
	border-color: #dd871e;
	color: #fff;
}
.donation-custom { display: grid; gap: 0.3rem; }
.donation-custom span {
	font-size: 0.8rem;
	letter-spacing: 0.04em;
	color: rgba(20, 57, 72, 0.75);
}
.jessica-donation-form input[type="number"],
.jessica-donation-form input[type="text"],
.jessica-donation-form input[type="email"],
.jessica-collective-request-form input[type="text"],
.jessica-collective-request-form input[type="email"],
.jessica-voucher-form input[type="number"],
.jessica-voucher-form input[type="text"],
.jessica-voucher-form input[type="email"],
.jessica-voucher-form textarea {
	width: 100%;
	padding: 0.7rem 0.85rem;
	border-radius: 10px;
	border: 1px solid rgba(20, 57, 72, 0.25);
	background: rgba(255, 255, 255, 0.7);
	font: inherit;
}
.jessica-donation-form .donation-submit,
.jessica-collective-request-form .collective-request-submit,
.jessica-voucher-form .voucher-submit { justify-self: start; }
.jessica-voucher-form { display: grid; gap: 1rem; }
.jessica-voucher-form .form-grid { display: grid; gap: 0.75rem; }
@media (min-width: 520px) { .jessica-voucher-form .form-grid { grid-template-columns: 1fr 1fr; } }
.jessica-voucher-form label { display: grid; gap: 0.3rem; font-size: 0.9rem; }

/* === Pay what feels good � booking payment mode === */
.booking-paymode {
	display: grid;
	gap: 0.7rem;
	padding: 1rem 1.1rem;
	border: 1px solid rgba(95, 123, 69, 0.2);
	border-radius: 12px;
	background: rgba(255, 255, 255, 0.45);
}
.booking-paymode__label {
	margin: 0;
	font-weight: 600;
	font-size: 0.95rem;
	color: #1f2a18;
}
.booking-paymode__options {
	display: flex;
	gap: 1.2rem;
	flex-wrap: wrap;
}
.booking-paymode__opt {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	cursor: pointer;
}
.booking-paymode__amount {
	display: grid;
	gap: 0.3rem;
	max-width: 220px;
	font-size: 0.85rem;
}
.booking-paymode__amount input {
	padding: 0.6rem 0.75rem;
	border-radius: 10px;
	border: 1px solid rgba(36, 50, 38, 0.25);
	background: rgba(255, 255, 255, 0.8);
	font: inherit;
}
.booking-paymode__note {
	margin: 0;
	font-size: 0.82rem;
	color: rgba(36, 50, 38, 0.7);
	font-style: italic;
}

.booking-income-note {
	margin: 0;
	font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
	font-size: clamp(0.98rem, 1.1vw, 1.05rem);
	line-height: 1.65;
	font-style: italic;
	color: rgba(36, 50, 38, 0.72);
	max-width: 42rem;
}

.jessica-booking-form .booking-income-note {
	margin-top: 0.25rem;
}

/* === Discovery call intake form === */
.jessica-discovery-form { display: grid; gap: 1.1rem; }
.jessica-discovery-form[hidden] { display: none; }
.jessica-discovery-shell .discovery-confirmation {
	box-sizing: border-box;
	padding: clamp(1.5rem, 5vw, 2.5rem);
	border: 2px solid #ddc9a9;
	border-radius: 18px;
	background: #fffaf1;
	color: #143948;
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18);
	scroll-margin-block: 8rem 2rem;
}
.jessica-discovery-shell .discovery-confirmation__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	margin-bottom: 1rem;
	border-radius: 50%;
	background: #143948;
	color: #fffaf1;
	font: 700 1.6rem/1 sans-serif;
}
.jessica-discovery-shell .discovery-confirmation h2 {
	margin: 0 0 0.75rem;
	color: #143948;
	font-size: clamp(1.8rem, 5vw, 2.3rem);
	line-height: 1.15;
}
.jessica-discovery-shell .discovery-confirmation p {
	margin: 0;
	color: #143948;
	font-size: 1.05rem;
	font-weight: 500;
	line-height: 1.65;
}
.jessica-discovery-shell .discovery-confirmation:focus-visible {
	outline: 3px solid #ddc9a9;
	outline-offset: 4px;
}
.jessica-discovery-form .form-grid { display: grid; gap: 0.9rem; }
@media (min-width: 560px) { .jessica-discovery-form .form-grid { grid-template-columns: 1fr 1fr; } }
.jessica-discovery-form label { display: grid; gap: 0.35rem; font-size: 0.95rem; }
.jessica-discovery-form input[type="text"],
.jessica-discovery-form input[type="email"],
.jessica-discovery-form select,
.jessica-discovery-form textarea {
	width: 100%;
	padding: 0.7rem 0.85rem;
	border-radius: 10px;
	border: 1px solid rgba(255, 255, 255, 0.3);
	background: rgba(255, 255, 255, 0.08);
	color: inherit;
	font: inherit;
}
.jessica-discovery-form textarea { min-height: 90px; resize: vertical; }
.jessica-discovery-form select option { color: #1a2716; }

.booking-payment-notice { padding: 1rem; border-left: 3px solid #b07c30; background: #fff9ed; color: #1a3d52; margin-bottom: 1rem; }
.booking-paymode__opt:has(input:disabled) { opacity: 0.55; cursor: not-allowed; }
