/*
==========================================================
FantasyFanzone Shop
Version: 4.0
==========================================================
*/


/*========================================================
SECTION
========================================================*/

.ffz-shop {
	position: relative;

	padding: var(--ffz-section-padding) 0;
}


/*========================================================
GRID
========================================================*/

.ffz-shop-grid {
	display: grid;

	grid-template-columns:
		repeat(4, minmax(0, 1fr));

	gap: var(--ffz-grid-gap);

	margin-top: 48px;
}

.ffz-shop-grid > .ffz-card,
.ffz-shop-grid > .product,
.ffz-shop-grid > .product-card,
.ffz-shop-grid > .ffz-product-card {
	height: 100%;
}


/*========================================================
PRODUCT CARD
========================================================*/

.ffz-product-card {
	position: relative;

	display: flex;

	flex-direction: column;

	min-width: 0;
	height: 100%;

	overflow: hidden;

	border:
		1px solid var(--ffz-border);

	border-radius: 22px;

	background:
		rgba(255, 255, 255, 0.04);

	box-shadow:
		0 8px 24px
		rgba(0, 0, 0, 0.08);

	transition:
		transform var(--ffz-transition-normal),
		border-color var(--ffz-transition-normal),
		box-shadow var(--ffz-transition-normal),
		background var(--ffz-transition-normal);
}

.ffz-product-card:hover {
	transform: translateY(-6px);

	border-color:
		rgba(124, 58, 237, 0.65);

	background:
		rgba(255, 255, 255, 0.055);

	box-shadow: var(--ffz-shadow-lg);
}


/*========================================================
SALE / OUT OF STOCK STATES
========================================================*/

.ffz-product-card--sale {
	border-color:
		rgba(34, 197, 94, 0.18);
}

.ffz-product-card--out-of-stock {
	opacity: 0.82;
}

.ffz-product-card--out-of-stock
	.ffz-product-card__image img {
	filter: saturate(0.65);
}


/*========================================================
IMAGE
========================================================*/

.ffz-product-card__image {
	position: relative;

	display: block;

	aspect-ratio: 1 / 1;

	overflow: hidden;

	background: var(--ffz-surface);
}

.ffz-product-card__image img {
	display: block;

	width: 100%;
	height: 100%;

	object-fit: cover;

	transition:
		transform 0.45s ease;
}

.ffz-product-card:hover
	.ffz-product-card__image img {
	transform: scale(1.05);
}


/*========================================================
BADGES
========================================================*/

.ffz-product-card__badge {
	position: absolute;

	z-index: 2;

	display: inline-flex;

	align-items: center;
	justify-content: center;

	padding: 6px 10px;

	border-radius: 999px;

	font-size: 10px;
	font-weight: 800;

	letter-spacing: 0.06em;

	text-transform: uppercase;

	box-shadow:
		0 6px 18px
		rgba(0, 0, 0, 0.2);
}

.ffz-product-card__badge--sale {
	top: 12px;
	left: 12px;

	background:
		rgba(34, 197, 94, 0.92);

	color: #ffffff;
}

.ffz-product-card__badge--stock {
	top: 12px;
	right: 12px;

	background:
		rgba(239, 68, 68, 0.92);

	color: #ffffff;
}


/*========================================================
CONTENT
========================================================*/

.ffz-product-card__content {
	display: flex;

	flex: 1;

	flex-direction: column;

	min-width: 0;

	padding: 22px;
}


/*========================================================
TITLE
========================================================*/

.ffz-product-card__title {
	margin: 0 0 12px;

	color: var(--ffz-text, #ffffff);

	font-size: 18px;
	font-weight: 700;

	line-height: 1.4;
}

.ffz-product-card__title a {
	color: inherit;

	text-decoration: none;

	transition:
		color var(--ffz-transition-normal);
}

.ffz-product-card__title a:hover {
	color: var(--ffz-primary);
}


/*========================================================
RATING
========================================================*/

.ffz-product-card__rating {
	margin-bottom: 12px;
}

.ffz-product-card__rating
	.star-rating {
	float: none;

	width: 5.4em;

	margin: 0;

	color: #facc15;

	font-size: 13px;
}

.ffz-product-card__rating
	.star-rating::before {
	color:
		rgba(255, 255, 255, 0.18);
}


/*========================================================
PRICE
========================================================*/

.ffz-product-card__price {
	margin-top: auto;

	color: var(--ffz-primary);

	font-size: 20px;
	font-weight: 800;

	line-height: 1.3;
}

.ffz-product-card__price del {
	margin-right: 6px;

	color: var(--ffz-text-muted);

	font-size: 14px;
	font-weight: 600;

	opacity: 0.75;
}

.ffz-product-card__price ins {
	color: var(--ffz-success, #22c55e);

	text-decoration: none;
}


/*========================================================
ACTIONS
========================================================*/

.ffz-product-card__actions {
	display: flex;

	align-items: center;

	gap: 10px;

	margin-top: 18px;
}

.ffz-product-card__actions
	.button,
.ffz-product-card__actions
	.added_to_cart {
	display: inline-flex;

	align-items: center;
	justify-content: center;

	min-height: 42px;

	padding: 0 16px;

	border: 0;

	border-radius: 12px;

	background: var(--ffz-gradient-primary);

	color: #ffffff;

	font-size: 13px;
	font-weight: 800;

	text-decoration: none;

	cursor: pointer;

	transition:
		transform var(--ffz-transition-normal),
		box-shadow var(--ffz-transition-normal),
		opacity var(--ffz-transition-normal);
}

.ffz-product-card__actions
	.button:hover,
.ffz-product-card__actions
	.added_to_cart:hover {
	transform: translateY(-1px);

	box-shadow:
		0 8px 20px
		rgba(124, 58, 237, 0.25);
}

.ffz-product-card__actions
	.button.loading {
	position: relative;

	opacity: 0.7;

	cursor: wait;
}

.ffz-product-card__actions
	.button.added {
	background:
		var(--ffz-success, #22c55e);
}

.ffz-product-card__actions
	.added_to_cart {
	background:
		rgba(34, 197, 94, 0.12);

	color: var(--ffz-success);
}


/*========================================================
OUT OF STOCK ACTION
========================================================*/

.ffz-product-card--out-of-stock
	.ffz-product-card__actions
	.button {
	background:
		rgba(148, 163, 184, 0.14);

	color: var(--ffz-text-muted);

	box-shadow: none;
}


/*========================================================
EMPTY
========================================================*/

.ffz-shop .ffz-empty {
	margin-top: 40px;

	padding: 32px 20px;

	border:
		1px solid rgba(255, 255, 255, 0.06);

	border-radius: 18px;

	background:
		rgba(255, 255, 255, 0.025);

	color: var(--ffz-text-muted);

	text-align: center;
}


/*========================================================
LOADING
========================================================*/

.ffz-shop.is-loading,
.ffz-shop--loading {
	pointer-events: none;
}

.ffz-shop.is-loading
	.ffz-shop-grid,
.ffz-shop--loading
	.ffz-shop-grid {
	opacity: 0.75;
}

.ffz-shop.is-loading
	.ffz-product-card,
.ffz-shop--loading
	.ffz-product-card {
	animation:
		ffzShopPulse
		1.4s ease-in-out infinite;
}

@keyframes ffzShopPulse {

	0%,
	100% {
		opacity: 0.65;
	}

	50% {
		opacity: 1;
	}
}


/*========================================================
SMALL DESKTOP
========================================================*/

@media (max-width: 1200px) {

	.ffz-shop-grid {
		grid-template-columns:
			repeat(2, minmax(0, 1fr));
	}
}


/*========================================================
MOBILE
========================================================*/

@media (max-width: 768px) {

	.ffz-shop-grid {
		grid-template-columns: 1fr;

		gap: 20px;

		margin-top: 32px;
	}

	.ffz-product-card {
		border-radius: 18px;
	}

	.ffz-product-card__content {
		padding: 20px;
	}

	.ffz-product-card__title {
		font-size: 17px;
	}

	.ffz-product-card__price {
		font-size: 18px;
	}
}


/*========================================================
SMALL MOBILE
========================================================*/

@media (max-width: 480px) {

	.ffz-product-card__content {
		padding: 18px 16px;
	}

	.ffz-product-card__badge {
		padding: 5px 8px;

		font-size: 9px;
	}

	.ffz-product-card__actions {
		flex-direction: column;

		align-items: stretch;
	}

	.ffz-product-card__actions
		.button,
	.ffz-product-card__actions
		.added_to_cart {
		width: 100%;
	}
}


/*========================================================
REDUCED MOTION
========================================================*/

@media (prefers-reduced-motion: reduce) {

	.ffz-product-card,
	.ffz-product-card__image img,
	.ffz-product-card__actions .button,
	.ffz-product-card__actions .added_to_cart {
		transition: none;
	}

	.ffz-shop.is-loading
		.ffz-product-card,
	.ffz-shop--loading
		.ffz-product-card {
		animation: none;
	}
}
/*========================================================
4.10.3 MOBILE FEATURED SHOP — TWO COMPACT CARDS
========================================================*/

@media(max-width:768px){
    .ffz-shop-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:10px;
        margin-top:30px;
    }

    .ffz-shop .ffz-product-card{
        min-width:0;
        border-radius:14px;
    }

    .ffz-shop .ffz-product-card__image{
        aspect-ratio:1 / 1;
        padding:4px;
        background:#f7f7f8;
    }

    .ffz-shop .ffz-product-card__image img{
        object-fit:contain;
        object-position:center;
        transform:none;
    }

    .ffz-shop .ffz-product-card__content{
        padding:10px 9px 11px;
    }

    .ffz-shop .ffz-product-card__title{
        display:-webkit-box;
        min-height:2.55em;
        margin:0 0 6px;
        overflow:hidden;
        font-size:11.5px;
        line-height:1.28;
        -webkit-box-orient:vertical;
        -webkit-line-clamp:2;
    }

    .ffz-shop .ffz-product-card__rating{
        display:none;
    }

    .ffz-shop .ffz-product-card__price{
        font-size:13px;
    }

    .ffz-shop .ffz-product-card__actions{
        display:block;
        margin-top:8px;
    }

    .ffz-shop .ffz-product-card__actions .button,
    .ffz-shop .ffz-product-card__actions .added_to_cart{
        width:100%;
        min-height:34px;
        padding:5px 6px;
        border-radius:9px;
        font-size:9px;
        line-height:1.15;
        white-space:normal;
    }
}
