/*
 * PartyCrazy single-product layout.
 * This file is loaded only on WooCommerce product pages and is the
 * authoritative product-page cascade. Keep product layout changes here.
 */

body.single-product .pc-single-product {
	padding: 0 0 3rem;
	background: linear-gradient(180deg, #fff 0, #fff 46rem, #fcf9fb 46rem);
}

body.single-product .pc-single-product .pc-product-breadcrumbs,
body.single-product .pc-single-product .pc-product-shell {
	width: calc(100% - 3rem);
	max-width: 1280px;
	margin-inline: auto;
}

body.single-product .pc-single-product .pc-product-breadcrumbs {
	padding: .7rem 0 .8rem;
}

body.single-product .pc-product-breadcrumbs .pc-breadcrumbs {
	margin: 0;
	font-size: .74rem;
	line-height: 1.5;
}

body.single-product .pc-single-product .pc-product-shell {
	padding-top: 0;
}

body.single-product.woocommerce .pc-product-shell div.product {
	position: relative;
	display: block;
	width: 100%;
	min-width: 0;
	margin: 0 !important;
}

body.single-product.woocommerce .pc-product-shell div.product::before,
body.single-product.woocommerce .pc-product-shell div.product::after {
	display: none !important;
	content: none !important;
}

body.single-product .pc-product-shell .pc-product-top {
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) minmax(390px, .8fr);
	column-gap: clamp(2rem, 4vw, 3.5rem);
	align-items: start;
	width: 100%;
	min-width: 0;
}

body.single-product .pc-product-shell .pc-product-top > .woocommerce-product-gallery {
	grid-column: 1;
	grid-row: 1;
}

body.single-product .pc-product-shell .pc-product-top > .summary {
	grid-column: 2;
	grid-row: 1;
}

body.single-product .pc-product-shell div.product > .pc-google-reviews,
body.single-product .pc-product-shell div.product > .related,
body.single-product .pc-product-shell div.product > .up-sells,
body.single-product .pc-product-shell div.product > section:not(.summary) {
	width: 100%;
}

/* Main media: the product visual is the hero, not a secondary utility box. */
body.single-product.woocommerce .pc-product-shell .woocommerce-product-gallery {
	position: relative !important;
	top: auto !important;
	display: block;
	width: 100% !important;
	min-width: 0;
	max-width: none;
	margin: 0 !important;
	padding: .8rem;
	float: none !important;
	overflow: hidden;
	border: 1px solid #eadde5;
	border-radius: 24px;
	background: linear-gradient(145deg, #fff 0%, #fcf8fa 100%);
	box-shadow: 0 20px 54px rgba(61, 26, 43, .1);
}

body.single-product.woocommerce .pc-product-shell .woocommerce-product-gallery::after {
	position: absolute;
	inset: .8rem;
	pointer-events: none;
	border: 1px solid rgba(255, 255, 255, .46);
	border-radius: 17px;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .7);
	content: '';
}

body.single-product .pc-gallery-meta {
	position: absolute;
	top: 1.45rem;
	left: 1.45rem;
	z-index: 3;
	display: flex;
	gap: .45rem;
	align-items: center;
	font-size: .63rem;
	font-weight: 700;
	line-height: 1;
}

body.single-product .pc-gallery-meta span {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	min-height: 30px;
	padding: .4rem .55rem;
	border: 1px solid rgba(255, 255, 255, .55);
	border-radius: 999px;
	box-shadow: 0 7px 18px rgba(49, 24, 37, .12);
	backdrop-filter: blur(9px);
}

body.single-product .pc-gallery-meta__real {
	background: rgba(57, 47, 53, .74);
	color: #fff;
}

body.single-product .pc-gallery-meta__real span { min-height: 0; padding: 0; border: 0; box-shadow: none; color: #f8d179; }
body.single-product .pc-gallery-meta__count { background: rgba(255, 255, 255, .88); color: #5c4550; }

body.single-product .pc-product-shell .woocommerce-product-gallery__wrapper {
	min-width: 0;
	overflow: hidden;
	border-radius: 17px;
	background: #fff;
}

/* The whole decoration, never a crop of it: the photo sits inside a square
   white frame (so the slider keeps one height) and is scaled to fit. */
body.single-product .pc-product-shell div.product .woocommerce-product-gallery__image img,
body.single-product .pc-product-shell div.product .woocommerce-product-gallery__wrapper img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	background: #fff;
}

body.single-product .pc-product-shell .flex-control-thumbs {
	display: flex;
	flex-direction: row;
	gap: .7rem;
	overflow-x: auto;
	overflow-y: hidden;
	max-height: none;
	margin: 0;
	padding: .8rem .05rem 0;
	grid-column: auto;
	grid-row: auto;
	scroll-snap-type: x proximity;
	scrollbar-width: none;
}

body.single-product .pc-product-shell .flex-control-thumbs::-webkit-scrollbar {
	display: none;
}

body.single-product .pc-product-shell .flex-control-thumbs li {
	flex: 0 0 84px;
	width: 84px;
	height: 84px;
	scroll-snap-align: start;
}

body.single-product .pc-product-shell .flex-control-thumbs img {
	width: 84px;
	height: 84px;
	padding: 3px;
	border: 1px solid #e8dfe4;
	border-radius: 10px;
	background: #fff;
	object-fit: cover;
	opacity: .7;
	transition: border-color .2s ease, box-shadow .2s ease, opacity .2s ease;
}

body.single-product .pc-product-shell .flex-control-thumbs img.flex-active,
body.single-product .pc-product-shell .flex-control-thumbs img:hover {
	border-color: var(--pc-berry);
	box-shadow: 0 4px 13px rgba(143, 16, 83, .14);
	opacity: 1;
}

/* Desktop: big hero visual plus a large, fully visible image strip. */
@media (min-width: 961px) {
	body.single-product.woocommerce .pc-product-shell .woocommerce-product-gallery {
		/*
		 * Keep the product visual in view while the booking panel is read.
		 * Sticky (rather than position:fixed) preserves the normal document
		 * layout and releases the gallery before the related-products section.
		 */
		position: sticky !important;
		top: 5.5rem !important;
		z-index: 2;
		align-self: start;
		display: block;
	}

	body.single-product .pc-product-shell .woocommerce-product-gallery__wrapper {
		grid-column: auto;
		grid-row: auto;
	}

	body.single-product .pc-product-shell .flex-control-thumbs {
		grid-column: auto;
		grid-row: auto;
		display: flex;
		flex-direction: row;
		gap: .7rem;
		align-self: auto;
		max-height: none;
		padding: .8rem .05rem 0;
		overflow-x: auto;
		overflow-y: hidden;
		scroll-snap-type: x proximity;
	}

	body.single-product .pc-product-shell .flex-control-thumbs li {
		flex: 0 0 88px;
		width: 88px;
		height: 88px;
	}

	body.single-product .pc-product-shell .flex-control-thumbs img {
		width: 88px;
		height: 88px;
		padding: 3px;
		border-radius: 13px;
	}
}

body.single-product .pc-product-shell .woocommerce-product-gallery .woocommerce-product-gallery__trigger {
	top: 1rem;
	right: 1rem;
	width: 42px;
	height: 42px;
	border: 1px solid rgba(70, 38, 52, .12);
	background: rgba(255, 255, 255, .95);
	box-shadow: 0 7px 18px rgba(40, 22, 31, .1);
}

body.single-product.woocommerce .pc-product-shell div.product > span.onsale {
	position: absolute !important;
	top: 1.55rem !important;
	left: 1.55rem !important;
	right: auto !important;
	z-index: 8;
	min-width: 0;
	min-height: 0;
	margin: 0 !important;
	padding: .5rem .72rem;
	border-radius: 999px;
	background: var(--pc-berry);
	color: #fff;
	font-size: .67rem;
	font-weight: 700;
	line-height: 1;
}

/* Product information remains visually light, matching the reference flow. */
body.single-product.woocommerce .pc-product-shell div.product .summary {
	width: 100% !important;
	min-width: 0;
	max-width: none;
	margin: 0 !important;
	padding: .25rem 0 0 !important;
	float: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}

body.single-product .pc-product-eyebrow {
	margin-bottom: .65rem;
}

body.single-product .pc-single-product .product_title {
	max-width: 22ch;
	margin: 0 0 .8rem;
	font-size: clamp(1.75rem, 2.5vw, 2.35rem);
	font-weight: 650;
	line-height: 1.18;
}

body.single-product .pc-included-card,
body.single-product .pc-booking-fields {
	box-shadow: none;
}

body.single-product .related.products {
	margin-top: 3.5rem !important;
	padding-top: 2.5rem;
	border-top: 1px solid #eee5e9;
}

body.single-product .pc-included-card {
	margin-top: 1rem;
	border-radius: 15px;
	border-color: #eadfe5;
	background: linear-gradient(145deg, #fff 0%, #fffafb 100%);
	box-shadow: 0 10px 26px rgba(62, 27, 44, .045);
}

body.single-product .pc-included-card__chips li {
	gap: .5rem;
	padding: .48rem .55rem;
	background: rgba(240, 248, 243, .9);
}

body.single-product .pc-included-card__icon {
	display: inline-grid;
	width: 26px;
	height: 26px;
	flex: 0 0 26px;
	place-items: center;
	border-radius: 8px;
	background: #fff;
	box-shadow: 0 3px 9px rgba(55, 97, 70, .09);
	color: #26955b;
}

body.single-product .pc-included-card__icon svg { width: 14px; height: 14px; }

body.single-product .pc-booking-fields {
	margin-top: 1rem;
	border-radius: 15px;
	border-color: #eadfe5;
	background: linear-gradient(145deg, #fffafb 0%, #fff6f9 100%);
	box-shadow: 0 12px 30px rgba(62, 27, 44, .055);
}

body.single-product .pc-booking-steps {
	display: flex;
	gap: .45rem;
	margin: .55rem 0 0;
	color: #887780;
	font-size: .61rem;
	font-weight: 650;
}

body.single-product .pc-booking-steps li { display: inline-flex; align-items: center; gap: .27rem; }
body.single-product .pc-booking-steps span {
	display: grid;
	width: 17px;
	height: 17px;
	place-items: center;
	border-radius: 50%;
	background: #f7dfeb;
	color: var(--pc-berry);
	font-size: .55rem;
}

/* The standalone Description block was intentionally removed by request. */
body.single-product .pc-product-description,
body.single-product .woocommerce-tabs {
	display: none !important;
}

@media (max-width: 1100px) {
	body.single-product.woocommerce .pc-product-shell .pc-product-top {
		grid-template-columns: minmax(0, 1fr) minmax(360px, .9fr);
		column-gap: 1.5rem;
	}
}

@media (max-width: 960px) {
	body.single-product .pc-single-product .pc-product-breadcrumbs,
	body.single-product .pc-single-product .pc-product-shell {
		width: calc(100% - 2rem);
	}

	body.single-product.woocommerce .pc-product-shell .pc-product-top {
		grid-template-columns: minmax(0, 1fr);
		row-gap: 1.15rem;
	}

	body.single-product .pc-product-shell .pc-product-top > .woocommerce-product-gallery {
		grid-column: 1;
		grid-row: 1;
	}

	body.single-product .pc-product-shell .pc-product-top > .summary {
		grid-column: 1;
		grid-row: 2;
	}

	body.single-product.woocommerce .pc-product-shell div.product .summary {
		padding-top: .2rem !important;
	}
}

@media (max-width: 600px) {
	body.single-product .pc-single-product {
		background: #fff;
	}

	body.single-product .pc-single-product .pc-product-breadcrumbs,
	body.single-product .pc-single-product .pc-product-shell {
		width: calc(100% - 1.25rem);
	}

	body.single-product .pc-single-product .pc-product-breadcrumbs {
		padding: .45rem 0 .5rem;
	}

	body.single-product.woocommerce .pc-product-shell .woocommerce-product-gallery {
		padding: .5rem;
		border-radius: 18px;
		box-shadow: 0 12px 30px rgba(61, 26, 43, .08);
	}

	body.single-product .pc-product-shell .woocommerce-product-gallery__wrapper {
		border-radius: 11px;
	}

	body.single-product .pc-product-shell div.product .woocommerce-product-gallery__image img,
	body.single-product .pc-product-shell div.product .woocommerce-product-gallery__wrapper img {
		aspect-ratio: 1 / 1;
	}

	body.single-product .pc-product-shell .flex-control-thumbs {
		display: flex;
		flex-direction: row;
		padding: .55rem 0 0;
		overflow-x: auto;
		overflow-y: hidden;
		max-height: none;
		grid-column: auto;
		grid-row: auto;
		scroll-snap-type: x proximity;
	}

	body.single-product .pc-product-shell .flex-control-thumbs li,
	body.single-product .pc-product-shell .flex-control-thumbs img {
		flex-basis: 56px;
		width: 56px;
		height: 56px;
	}

	body.single-product.woocommerce .pc-product-shell div.product > span.onsale {
		top: .85rem !important;
		left: .85rem !important;
	}

	body.single-product .pc-gallery-meta {
		top: 1rem;
		left: 1rem;
		gap: .35rem;
		font-size: .56rem;
	}

	body.single-product .pc-gallery-meta span { min-height: 26px; padding: .32rem .45rem; }
	body.single-product .pc-gallery-meta__real { display: none !important; }

	body.single-product .pc-single-product .product_title {
		font-size: 1.45rem;
	}

	body.single-product .pc-booking-steps { gap: .35rem; font-size: .56rem; }

	/* Related cards must never touch the viewport edge on mobile. */
body.single-product .related.products {
		margin: 2.4rem .15rem 0 !important;
		padding: 1.6rem .35rem 0;
	}

	body.single-product .related.products > h2 {
		margin-left: .15rem;
		font-size: 1.3rem;
	}

	body.single-product .related.products ul.products {
		margin: 0 !important;
		padding: .15rem .15rem .85rem !important;
	}

	body.single-product .related.products .pc-product-card {
		flex-basis: min(76vw, 278px);
	}
}

body.single-product .pc-google-reviews {
	margin-top: 3.5rem !important;
	padding-top: 3rem;
	border-top: 1px solid #eee5e9;
}

/* A second discovery path: curated Upsells first, newest packages as fallback. */
body.single-product .pc-you-may-like {
	width: 100%;
	margin-top: 3.5rem;
	padding: 2.35rem 0 0;
	border-top: 1px solid #eee5e9;
}

body.single-product .pc-you-may-like__heading {
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 1.35rem;
}

body.single-product .pc-you-may-like__eyebrow {
	display: block;
	margin-bottom: .35rem;
	color: var(--pc-berry);
	font-size: .62rem;
	font-weight: 750;
	letter-spacing: .12em;
	text-transform: uppercase;
}

body.single-product .pc-you-may-like h2 {
	margin: 0;
	color: var(--pc-ink);
	font-size: clamp(1.45rem, 2.4vw, 1.95rem);
	font-weight: 650;
	letter-spacing: -.035em;
	line-height: 1.15;
}

body.single-product .pc-you-may-like__link {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	gap: .35rem;
	color: var(--pc-berry);
	font-size: .77rem;
	font-weight: 700;
}

body.single-product .pc-you-may-like__link span { font-size: 1.05rem; transition: transform .2s ease; }
body.single-product .pc-you-may-like__link:hover span { transform: translateX(3px); }

body.single-product .pc-you-may-like ul.products {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

body.single-product .pc-you-may-like ul.products::before,
body.single-product .pc-you-may-like ul.products::after { display: none; }

body.single-product .pc-you-may-like .pc-product-card {
	width: 100%;
	margin: 0;
	float: none;
}

@media (max-width: 960px) {
	body.single-product .pc-you-may-like ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
	body.single-product .pc-you-may-like {
		margin-top: 2.4rem;
		padding: 1.75rem .15rem 0;
	}

	body.single-product .pc-you-may-like__heading { align-items: flex-end; margin: 0 .15rem 1rem; }
	body.single-product .pc-you-may-like h2 { font-size: 1.3rem; }
	body.single-product .pc-you-may-like__link { font-size: .67rem; }
	body.single-product .pc-you-may-like ul.products {
		display: flex;
		gap: .8rem;
		overflow-x: auto;
		padding: .1rem .15rem .9rem;
		scroll-snap-type: x proximity;
		scrollbar-width: none;
	}

	body.single-product .pc-you-may-like ul.products::-webkit-scrollbar { display: none; }
	body.single-product .pc-you-may-like .pc-product-card { flex: 0 0 min(72vw, 270px); scroll-snap-align: start; }
}

/* ------------------------------------------------------------------
 * Recommendation rows: "More … Setups You'll Love" and "You May Also Like"
 *
 * Both rows were sized through .pc-product-card, a class the storefront
 * card no longer carries, so on a phone four cards were squeezed into one
 * screen. They are sized by their children instead: a swipeable row of
 * 230px cards on phones (the homepage Best Sellers row), four columns on
 * desktop.
 * ------------------------------------------------------------------ */
body.single-product .pc-product-shell .related.products,
body.single-product .pc-product-shell .pc-you-may-like {
	margin: 40px 0 0 !important;
	padding: 28px 0 0;
	border-top: 1px solid rgba(0, 0, 0, .07);
}

body.single-product .pc-product-shell .related.products > h2,
body.single-product .pc-product-shell .pc-you-may-like h2 {
	margin: 0;
	font-family: var(--pc-font-display, 'Fraunces', serif);
	font-size: 26px;
	font-weight: 700;
	letter-spacing: -.01em;
	line-height: 1.1;
	color: #1a1a1a;
}

body.single-product .pc-product-shell .related.products > h2 { margin-bottom: 18px; }

body.single-product .pc-product-shell .pc-you-may-like__heading {
	align-items: flex-end;
	margin: 0 0 18px;
}

body.single-product .pc-product-shell .pc-you-may-like__eyebrow {
	margin-bottom: 6px;
	color: #C0005A;
	font-size: 11px;
	font-weight: 900;
	letter-spacing: .16em;
}

body.single-product .pc-product-shell .pc-you-may-like__link {
	height: 36px;
	padding: 0 14px;
	border: 1px solid rgba(0, 0, 0, .1);
	border-radius: 999px;
	color: #1a1a1a;
	font-size: 12px;
	font-weight: 700;
	white-space: nowrap;
	transition: border-color .2s ease, color .2s ease;
}

body.single-product .pc-product-shell .pc-you-may-like__link:hover { border-color: #C0005A; color: #C0005A; }

body.single-product .pc-product-shell .related.products ul.products,
body.single-product .pc-product-shell .pc-you-may-like ul.products {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 20px;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none;
}

body.single-product .pc-product-shell .related.products ul.products::before,
body.single-product .pc-product-shell .related.products ul.products::after,
body.single-product .pc-product-shell .pc-you-may-like ul.products::before,
body.single-product .pc-product-shell .pc-you-may-like ul.products::after { display: none; }

body.single-product .pc-product-shell .related.products ul.products > *,
body.single-product .pc-product-shell .pc-you-may-like ul.products > * { min-width: 0; }

@media (max-width: 1023px) {
	body.single-product .pc-product-shell .related.products ul.products,
	body.single-product .pc-product-shell .pc-you-may-like ul.products {
		display: flex;
		gap: 16px;
		overflow-x: auto;
		/* Bleed to the screen edge so the next card peeks in. */
		margin: 0 -16px !important;
		padding: 2px 16px 16px !important;
		scroll-snap-type: x proximity;
		scroll-padding-left: 16px;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	body.single-product .pc-product-shell .related.products ul.products::-webkit-scrollbar,
	body.single-product .pc-product-shell .pc-you-may-like ul.products::-webkit-scrollbar { display: none; }

	body.single-product .pc-product-shell .related.products ul.products > *,
	body.single-product .pc-product-shell .pc-you-may-like ul.products > * {
		flex: 0 0 230px;
		scroll-snap-align: start;
	}
}

@media (max-width: 600px) {
	body.single-product .pc-product-shell .related.products > h2,
	body.single-product .pc-product-shell .pc-you-may-like h2 { font-size: 22px; }
}

/* Booking form: shown once a city outside Patna is picked. */
body.single-product .pc-city-fee-note {
	margin: -4px 0 12px;
	padding: 9px 12px;
	border-radius: 12px;
	background: #FFF7E6;
	border: 1px solid #FFE2A8;
	color: #8a5a00;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.4;
}
body.single-product .pc-city-fee-note[hidden] { display: none; }

/* The city picker (and the outside-Patna note under it) takes the full row.
   The older ".pc-field-row:first-of-type" rule never matched it: the form's
   first div is its header, so the city select was squeezed into half a row
   on phones and read "Select your…". */
body.single-product .pc-booking-fields .pc-field-row:has(#pc_event_city),
body.single-product .pc-booking-fields .pc-city-fee-note { grid-column: 1 / -1; }

/* Until WooCommerce's slider wraps the photos (it moves the wrapper into
   .flex-viewport), only the first photo shows and the thumbnail row's height
   is held, so the price and booking form below do not jump on phones. */
body.single-product .pc-product-shell .woocommerce-product-gallery > .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:not(:first-child) {
	display: none;
}

/* On phones the gallery's final size is known up front: a square photo frame
   the width of the column, plus the 56px thumbnail row when there is more
   than one photo. Fixing it means the slider building itself (WooCommerce
   briefly lays the slides out at other sizes) never moves the summary. */
@media (max-width: 600px) {
	body.single-product .pc-product-shell .pc-product-top {
		container-type: inline-size;
	}

	body.single-product.woocommerce .pc-product-shell .woocommerce-product-gallery {
		box-sizing: border-box;
		height: 100cqw;
	}

	body.single-product.woocommerce .pc-product-shell .woocommerce-product-gallery:has(.woocommerce-product-gallery__image:nth-child(2)) {
		height: calc(100cqw + 56px);
	}
}

/* WooCommerce keeps the gallery at opacity 0 until its slider script runs,
   which on a slow phone left the main photo invisible for seconds. With the
   extra photos hidden and the thumbnail row held (above), it can show at once. */
body.single-product .pc-product-shell .woocommerce-product-gallery {
	opacity: 1 !important;
}
