/**
 * TSKLuxe Front Page Styles
 *
 * Mobile-first responsive layout for hero, featured products, and brand intro.
 *
 * @package TSKLuxe
 */

/* ========================================================================
   Hero Section
   ======================================================================== */

.tskluxe-hero {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 60vh;
	padding: 3rem 1.5rem;
	text-align: center;
	overflow: hidden;
}

.tskluxe-hero__content {
	position: relative;
	z-index: 2;
	max-width: 720px;
	margin: 0 auto;
}

.tskluxe-hero__heading {
	font-size: 2rem;
	line-height: 1.2;
	margin-bottom: 1rem;
}

.tskluxe-hero__tagline {
	font-size: 1.1rem;
	line-height: 1.6;
	margin-bottom: 2rem;
}

.tskluxe-hero__cta {
	display: inline-block;
	padding: 0.875rem 2rem;
	font-size: 1rem;
	font-weight: 600;
	text-decoration: none;
	border-radius: 4px;
	transition: background-color 0.2s ease, transform 0.2s ease;
}

.tskluxe-hero__cta:hover,
.tskluxe-hero__cta:focus {
	transform: translateY(-2px);
}

/* ------------------------------------------------------------------------
   Banner hero: full-width image with content overlaid bottom-left
   (Monday-style). Used when a hero image is set.
   ------------------------------------------------------------------------ */
.tskluxe-hero--banner {
	align-items: flex-end;
	justify-content: flex-start;
	text-align: left;
	padding: 0;
	aspect-ratio: 3 / 2;
	min-height: 0;
	max-height: 85vh;
}

/* The whole image is a link filling the banner. */
.tskluxe-hero--banner .tskluxe-hero__image-link {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 0;
	display: block;
}

.tskluxe-hero--banner .tskluxe-hero__image {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

/* Default: show the desktop image, hide the mobile one. */
.tskluxe-hero--banner .tskluxe-hero__image--mobile {
	display: none;
}

/* Mobile behaviour. */
@media (max-width: 767px) {
	/* No dedicated mobile image: keep the wide image at a medium height
	   (compromise crop). */
	.tskluxe-hero--banner {
		aspect-ratio: auto;
		min-height: 50vh;
	}

	/* A dedicated mobile image exists: show it, hide the desktop one, and use
	   a taller portrait-friendly banner so the full mobile image is shown. */
	.tskluxe-hero--banner.tskluxe-hero--has-mobile {
		min-height: 0;
		aspect-ratio: 4 / 5;
	}

	.tskluxe-hero--has-mobile .tskluxe-hero__image--desktop {
		display: none;
	}

	.tskluxe-hero--has-mobile .tskluxe-hero__image--mobile {
		display: block;
	}
}

.tskluxe-hero--banner .tskluxe-hero__overlay {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 1;
	background: linear-gradient(
		180deg,
		rgba(0, 0, 0, 0.10) 0%,
		rgba(0, 0, 0, 0.20) 55%,
		rgba(0, 0, 0, 0.55) 100%
	);
}

/* Pin the content to the bottom-left corner of the banner reliably,
   independent of flex quirks. */
.tskluxe-hero--banner .tskluxe-hero__content {
	position: absolute;
	left: 0;
	bottom: 0;
	z-index: 2;
	margin: 0;
	max-width: 100%;
	padding: 1rem 1.25rem 1.25rem;
	text-align: left;
}

/* Readable white text/button overlaid on the image. */
.tskluxe-hero--banner .tskluxe-hero__heading,
.tskluxe-hero--banner .tskluxe-hero__tagline {
	color: #fff;
	text-shadow: 0 1px 12px rgba(0, 0, 0, 0.5);
}

.tskluxe-hero--banner .tskluxe-hero__cta {
	background-color: transparent;
	color: #fff;
	border: none;
	box-shadow: none;
	text-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
	padding-left: 0;
	padding-right: 0;
}

.tskluxe-hero--banner .tskluxe-hero__cta:hover,
.tskluxe-hero--banner .tskluxe-hero__cta:focus {
	background-color: transparent;
	color: #fff;
	text-decoration: underline;
	text-underline-offset: 4px;
}

/* ========================================================================
   Featured Products Section
   ======================================================================== */

.tskluxe-featured-products {
	padding: 3rem 1.5rem;
	text-align: center;
}

.tskluxe-featured-products__heading {
	font-size: 1.75rem;
	margin-bottom: 2rem;
}

.tskluxe-featured-products__grid {
	max-width: 1200px;
	margin: 0 auto;
}

.tskluxe-featured-products__grid .products {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1.5rem;
	list-style: none;
	padding: 0;
	margin: 0;
}

.tskluxe-featured-products__grid .products li.product {
	margin: 0;
}

.tskluxe-featured-products__cta {
	margin-top: 2rem;
}

/* ========================================================================
   Brand Introduction Section
   ======================================================================== */

.tskluxe-brand-intro {
	padding: 3rem 1.5rem;
	text-align: center;
}

.tskluxe-brand-intro__content {
	max-width: 720px;
	margin: 0 auto;
}

.tskluxe-brand-intro__heading {
	font-size: 1.75rem;
	margin-bottom: 1rem;
}

.tskluxe-brand-intro__text {
	font-size: 1.05rem;
	line-height: 1.7;
	margin-bottom: 2rem;
}

.tskluxe-brand-intro__cta {
	display: inline-block;
	padding: 0.75rem 1.75rem;
	font-size: 1rem;
	font-weight: 600;
	text-decoration: none;
	border-radius: 4px;
	transition: background-color 0.2s ease, transform 0.2s ease;
}

.tskluxe-brand-intro__cta:hover,
.tskluxe-brand-intro__cta:focus {
	transform: translateY(-2px);
}

/* ========================================================================
   Front Page Main Container
   ======================================================================== */

.tskluxe-front-page {
	padding: 0;
}

/* ========================================================================
   Responsive — Tablet (768px+)
   ======================================================================== */

@media (min-width: 768px) {
	.tskluxe-hero {
		min-height: 70vh;
		padding: 4rem 2rem;
	}

	.tskluxe-hero__heading {
		font-size: 2.75rem;
	}

	.tskluxe-hero__tagline {
		font-size: 1.25rem;
	}

	/* Give the bottom-left banner content more breathing room on larger screens. */
	.tskluxe-hero--banner .tskluxe-hero__content {
		max-width: 640px;
		padding: 2rem;
	}

	.tskluxe-featured-products {
		padding: 4rem 2rem;
	}

	.tskluxe-featured-products__grid .products {
		grid-template-columns: repeat(3, 1fr);
		gap: 2rem;
	}

	.tskluxe-brand-intro {
		padding: 4rem 2rem;
	}
}

/* ========================================================================
   Responsive — Desktop (1024px+)
   ======================================================================== */

@media (min-width: 1024px) {
	.tskluxe-hero {
		min-height: 75vh;
		padding: 5rem 2rem;
	}

	.tskluxe-hero__heading {
		font-size: 3.25rem;
	}

	.tskluxe-featured-products__grid .products {
		grid-template-columns: repeat(4, 1fr);
	}

	.tskluxe-featured-products {
		padding: 5rem 2rem;
	}

	.tskluxe-brand-intro {
		padding: 5rem 2rem;
	}
}

/* ========================================================================
   Responsive — Large Desktop (1920px+)
   ======================================================================== */

@media (min-width: 1920px) {
	.tskluxe-hero__content {
		max-width: 900px;
	}

	.tskluxe-hero__heading {
		font-size: 3.75rem;
	}

	.tskluxe-featured-products__grid {
		max-width: 1400px;
	}

	.tskluxe-brand-intro__content {
		max-width: 900px;
	}
}

/* ========================================================================
   Signature Range Section
   ======================================================================== */

.tskluxe-range {
	padding: 3rem 1.5rem;
	text-align: center;
}

.tskluxe-range__intro {
	max-width: 720px;
	margin: 0 auto 2.5rem;
}

.tskluxe-range__heading {
	font-size: 1.75rem;
	margin-bottom: 0.75rem;
}

.tskluxe-range__subtitle {
	font-size: 1.05rem;
	line-height: 1.6;
}

.tskluxe-range__grid {
	/* Mobile: horizontal swipe carousel with scroll-snap. */
	display: flex;
	gap: 1rem;
	max-width: 1200px;
	margin: 0 auto;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	-webkit-overflow-scrolling: touch;
	scroll-padding-left: 1.5rem;
	/* Bleed to the section edges so cards can scroll edge-to-edge. */
	margin-left: -1.5rem;
	margin-right: -1.5rem;
	padding: 0.5rem 1.5rem 1rem;
	scrollbar-width: none; /* Firefox */
}

.tskluxe-range__grid::-webkit-scrollbar {
	display: none; /* Chrome/Safari */
}

.tskluxe-range__card {
	scroll-snap-align: start;
	flex: 0 0 72%;
}

.tskluxe-range__card {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	text-decoration: none;
	padding: 1.25rem;
	border: 1px solid #f4d9e6;
	border-radius: 12px;
	background: #fff;
	transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.tskluxe-range__card:hover,
.tskluxe-range__card:focus {
	transform: translateY(-4px);
	box-shadow: 0 8px 24px rgba(241, 120, 174, 0.18);
	border-color: #F178AE;
}

.tskluxe-range__media {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	margin-bottom: 1rem;
	border-radius: 8px;
	overflow: hidden;
}

.tskluxe-range__media--placeholder {
	background: linear-gradient(135deg, #fdf2f6 0%, #fbe4ee 100%);
}

.tskluxe-range__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.tskluxe-range__name {
	font-size: 1.15rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	margin-bottom: 0.35rem;
}

.tskluxe-range__desc {
	font-size: 0.95rem;
	line-height: 1.5;
	color: #6b6b6b;
}

/* ========================================================================
   What Makes Us Different Section
   ======================================================================== */

.tskluxe-props {
	padding: 3rem 1.5rem;
	text-align: center;
	background: #fdf2f6;
}

.tskluxe-props__intro {
	max-width: 720px;
	margin: 0 auto 2.5rem;
}

.tskluxe-props__heading {
	font-size: 1.75rem;
	margin-bottom: 0.75rem;
}

.tskluxe-props__lead {
	font-size: 1.05rem;
	line-height: 1.6;
}

.tskluxe-props__grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1.5rem;
	max-width: 1100px;
	margin: 0 auto;
}

.tskluxe-props__item {
	padding: 1rem;
}

.tskluxe-props__icon {
	display: block;
	font-size: 2.5rem;
	line-height: 1;
	margin-bottom: 0.75rem;
}

.tskluxe-props__image {
	display: block;
	width: 72px;
	height: 72px;
	object-fit: contain;
	margin: 0 auto 0.75rem;
}

.tskluxe-props__title {
	font-size: 1.15rem;
	margin-bottom: 0.5rem;
}

.tskluxe-props__text {
	font-size: 0.95rem;
	line-height: 1.6;
	color: #6b6b6b;
}

/* ========================================================================
   Customer Reviews Section
   ======================================================================== */

.tskluxe-reviews {
	padding: 3rem 1.5rem;
	text-align: center;
}

.tskluxe-reviews__heading {
	font-size: 1.75rem;
	margin-bottom: 2rem;
}

.tskluxe-reviews__grid {
	/* Mobile: horizontal swipe carousel with scroll-snap. */
	display: flex;
	gap: 1rem;
	max-width: 1100px;
	margin: 0 auto;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	-webkit-overflow-scrolling: touch;
	scroll-padding-left: 1.5rem;
	margin-left: -1.5rem;
	margin-right: -1.5rem;
	padding: 0.5rem 1.5rem 1rem;
	scrollbar-width: none; /* Firefox */
}

.tskluxe-reviews__grid::-webkit-scrollbar {
	display: none; /* Chrome/Safari */
}

.tskluxe-reviews__card {
	scroll-snap-align: start;
	flex: 0 0 82%;
	margin: 0;
	padding: 1.75rem;
	border: 1px solid #f4d9e6;
	border-radius: 12px;
	background: #fff;
	text-align: left;
	box-shadow: 0 2px 10px rgba(241, 120, 174, 0.08);
}

.tskluxe-reviews__stars {
	display: block;
	color: #F178AE;
	font-size: 1.1rem;
	letter-spacing: 0.15em;
	margin-bottom: 0.75rem;
}

.tskluxe-reviews__quote {
	margin: 0 0 1rem;
	border: 0;
	padding: 0;
	quotes: none;
}

.tskluxe-reviews__quote p {
	font-size: 1rem;
	line-height: 1.6;
	margin: 0;
}

.tskluxe-reviews__author {
	font-size: 0.9rem;
	font-weight: 700;
}

/* ========================================================================
   Models Gallery Section
   ======================================================================== */

.tskluxe-models {
	padding: 3rem 1.5rem;
	text-align: center;
}

.tskluxe-models__intro {
	max-width: 720px;
	margin: 0 auto 2.5rem;
}

.tskluxe-models__heading {
	font-size: 1.75rem;
	margin-bottom: 0.75rem;
}

.tskluxe-models__subtitle {
	font-size: 1.05rem;
	line-height: 1.6;
}

.tskluxe-models__grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1rem;
	max-width: 1200px;
	margin: 0 auto;
}

.tskluxe-models__card {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: 12px;
	text-decoration: none;
	background: #fdf2f6;
	/* Portrait ratio to suit 900x1600-style model images. */
	aspect-ratio: 9 / 16;
	box-shadow: 0 2px 10px rgba(241, 120, 174, 0.10);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.tskluxe-models__card:hover,
.tskluxe-models__card:focus {
	transform: translateY(-4px);
	box-shadow: 0 10px 26px rgba(241, 120, 174, 0.22);
}

.tskluxe-models__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
}

.tskluxe-models__image--placeholder {
	background: linear-gradient(135deg, #fdf2f6 0%, #fbe4ee 100%);
}

.tskluxe-models__name {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 1.5rem 1rem 0.9rem;
	font-size: 0.95rem;
	font-weight: 700;
	color: #fff;
	text-align: left;
	text-shadow: 0 1px 8px rgba(0, 0, 0, 0.5);
	background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.55) 100%);
}

/* ========================================================================
   Responsive — Tablet (768px+)
   ======================================================================== */

@media (min-width: 768px) {
	.tskluxe-range,
	.tskluxe-props,
	.tskluxe-reviews,
	.tskluxe-models {
		padding: 4rem 2rem;
	}

	.tskluxe-models__grid {
		grid-template-columns: repeat(4, 1fr);
		gap: 1.5rem;
	}

	.tskluxe-models__heading {
		font-size: 2rem;
	}

	/* Restore static grids at tablet+ (undo the mobile carousel). */
	.tskluxe-range__grid {
		display: grid;
		grid-template-columns: repeat(4, 1fr);
		gap: 1.5rem;
		overflow-x: visible;
		margin-left: auto;
		margin-right: auto;
		padding: 0;
	}

	.tskluxe-range__card {
		flex: initial;
	}

	.tskluxe-props__grid {
		grid-template-columns: repeat(4, 1fr);
	}

	.tskluxe-reviews__grid {
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		overflow-x: visible;
		margin-left: auto;
		margin-right: auto;
		padding: 0;
	}

	.tskluxe-reviews__card {
		flex: initial;
	}

	.tskluxe-range__heading,
	.tskluxe-props__heading,
	.tskluxe-reviews__heading {
		font-size: 2rem;
	}
}

/* ========================================================================
   Responsive — Desktop (1024px+)
   ======================================================================== */

@media (min-width: 1024px) {
	.tskluxe-range,
	.tskluxe-props,
	.tskluxe-reviews,
	.tskluxe-models {
		padding: 5rem 2rem;
	}

	.tskluxe-reviews__grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* ========================================================================
   Responsive — Large Desktop (1920px+)
   ======================================================================== */

@media (min-width: 1920px) {
	.tskluxe-range__grid,
	.tskluxe-props__grid,
	.tskluxe-reviews__grid,
	.tskluxe-models__grid {
		max-width: 1400px;
	}
}
