/*
 * Visual layer for the Cards Carousel — colours, type, spacing, borders.
 * cards-carousel.css (structural, from the shared component) stays untouched;
 * everything decision-y for THIS site lives here so it can be swapped for a
 * real Divi-matched skin later without touching the component itself.
 */

.cards-carousel-block {
	--cards-accent: #fe5500;
	--cards-ink: #2b2b2b;
	--cards-muted: #6b6b6b;
	--cards-surface: #ffffff;
	--cards-border: #e6e2dd;

	max-width: 1200px;
	margin: 3rem auto;
}

.cards-carousel-block__heading {
	margin: 0 0 1.25rem;
	font-size: 1.75rem;
	color: var( --cards-ink );
	text-align: center;
}

.cards-carousel-block .c-carousel {
	--cards-gap: 1.25rem;
	--cards-slide-width: 250px;
	/* Caps the row at 4 cards, flexing their width to fill whatever space is
	 * actually available (down to --cards-min-slide-width, or above
	 * --cards-slide-width) instead of dropping to 3 wider cards on a slightly
	 * narrower row. Below 4 * 200px the count drops, so phones get 1-2 cards
	 * -- see cards-carousel.js's layout(). Remove both lines to go back to
	 * the fully adaptive-count behaviour. */
	--cards-min-slide-width: 200px;
	--cards-max-per-view: 4;
}

.cards-carousel-block .c-carousel__viewport {
	padding: 0.25rem 0.25rem 1rem;
}

.cards-carousel-block .c-card {
	background: var( --cards-surface );
	border: 1px solid var( --cards-border );
	border-radius: 12px;
	overflow: hidden;
	box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.06 );
	transition: box-shadow 0.15s ease, transform 0.15s ease;
}

.cards-carousel-block .c-card:hover {
	box-shadow: 0 6px 16px rgba( 0, 0, 0, 0.1 );
	transform: translateY( -2px );
}

.cards-carousel-block .c-card__image {
	object-fit: contain;
}

.cards-carousel-block .c-card__badge {
	top: 0.6rem;
	left: 0.6rem;
	padding: 0.15rem 0.6rem;
	background: var( --cards-accent );
	color: #fff;
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	border-radius: 999px;
}

.cards-carousel-block .c-card__body {
	padding: 1rem 1.1rem 1.1rem;
}

.cards-carousel-block .c-card__heading {
	margin: 0 0 0.4rem;
	font-size: 1.05rem;
	line-height: 1.35;
	color: var( --cards-ink );
}

.cards-carousel-block .c-card__text {
	margin: 0 0 0.6rem;
	font-size: 0.9rem;
	line-height: 1.45;
	color: var( --cards-muted );
}

.cards-carousel-block .c-card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 0.25rem;
}

.cards-carousel-block .c-card__meta--was .c-card__meta-value {
	color: var( --cards-muted );
	text-decoration: line-through;
}

.cards-carousel-block .c-card__meta--now .c-card__meta-value {
	color: var( --cards-accent );
	font-weight: 700;
}

.cards-carousel-block .c-card__meta--price .c-card__meta-value {
	font-size: 0.95rem;
}

.cards-carousel-block .c-card__meta--rating .c-card__meta-label {
	margin-right: 0.3rem;
	font-size: 0.8rem;
	color: var( --cards-muted );
}

.cards-carousel-block .c-card__actions {
	padding: 0 1.1rem 1.1rem;
	gap: 0.5rem;
}

.cards-carousel-block .c-card__action {
	display: inline-block;
	padding: 0.55rem 1rem;
	border-radius: 8px;
	font-size: 0.85rem;
	font-weight: 600;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
}

.cards-carousel-block .c-card__action--primary {
	background: var( --cards-accent );
	color: #fff;
}

.cards-carousel-block .c-card__action--secondary {
	background: transparent;
	color: var( --cards-ink );
	border: 1px solid var( --cards-border );
}

.cards-carousel-block .c-card--out-of-stock {
	opacity: 0.6;
}

.cards-carousel-block .c-carousel__nav {
	position: absolute;
	top: 40%;
	width: 2.25rem;
	height: 2.25rem;
	border: 1px solid var( --cards-border );
	border-radius: 999px;
	background: var( --cards-surface );
	color: var( --cards-ink );
	font-size: 1.1rem;
	line-height: 1;
	cursor: pointer;
}

.cards-carousel-block .c-carousel__nav--prev {
	left: -0.75rem;
}

.cards-carousel-block .c-carousel__nav--next {
	right: -0.75rem;
}

.cards-carousel-block .c-carousel__status {
	margin-top: 0.5rem;
	text-align: center;
	font-size: 0.85rem;
	color: var( --cards-muted );
}

.cards-carousel-block .c-carousel[ data-state='loading' ] .c-carousel__status::after,
.cards-carousel-block .c-carousel[ data-state='loading-more' ] .c-carousel__status::after {
	content: '…';
}

/* ---------------------------------------------------------------------------
 * HACK (2026-09-16), preview page only: the site's default Divi page template
 * reserves a #sidebar column, leaving #left-area too narrow for 4 cards in a
 * row. :has() scopes this to only pages that actually hold the carousel, so
 * a normal sidebar page elsewhere on the site is untouched. Delete this whole
 * block once the carousel gets a permanent, properly-templated placement.
 * ------------------------------------------------------------------------ */
body:has( .cards-carousel-block ) #sidebar {
	display: none;
}

body:has( .cards-carousel-block ) #left-area {
	width: 100%;
	padding-right: 0;
}

body:has( .cards-carousel-block ) .container {
	/* Divi sets width:80% here, not just max-width -- both need overriding. */
	width: 94%;
	max-width: 1400px;
}

body:has( .cards-carousel-block ) .cards-carousel-block {
	max-width: 1320px;
}
