/**
 * Ui Modern — storefront (app-like mobile, full desktop, fixed dock).
 */

.novashop-storefront.novashop-structure-ui-modern {
	--ns-ui-radius: 1.35rem;
	--ns-ui-radius-sm: 0.85rem;
	--ns-ui-radius-pill: 999px;
	--ns-ui-dock-h: 4.75rem;
	--ns-ui-surface: #ffffff;
	--ns-ui-muted: #e8e8ed;
	--ns-ui-sale: var(--ns-product-sale-color, #e85d3b);
	background: var(--ns-color-bg, #f5f5f7);
	color: var(--ns-color-text, #111);
	font-family: var(--ns-font-body, "DM Sans", system-ui, sans-serif);
}

.novashop-storefront.novashop-structure-ui-modern .ns-main--ui {
	padding-bottom: calc(var(--ns-ui-dock-h) + 1.5rem);
	min-height: 60vh;
}

.novashop-storefront.novashop-structure-ui-modern .ns-container {
	width: min(1120px, calc(100% - 2rem));
	margin-inline: auto;
}

/* —— Header —— */
.ns-header--ui {
	position: sticky;
	top: 0;
	z-index: 40;
	background: color-mix(in srgb, var(--ns-header-bg, #f5f5f7) 92%, transparent);
	backdrop-filter: blur(12px);
}

.ns-header--ui .ns-header__bar {
	padding: 0.85rem 0 0.35rem;
}

.ns-header--ui .ns-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
}

.ns-header--ui .ns-nav-toggle {
	width: 2.5rem;
	height: 2.5rem;
	border: 0;
	border-radius: 50%;
	background: var(--ns-ui-surface);
	display: grid;
	place-items: center;
	cursor: pointer;
	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.04);
}

.ns-header--ui .ns-nav-toggle span {
	display: block;
	width: 1rem;
	height: 1.5px;
	background: currentColor;
	margin: 2px 0;
	border-radius: 2px;
}

.ns-header--ui .ns-header__utils {
	display: flex;
	align-items: center;
	gap: 0.5rem;
}

.ns-header--ui .ns-header__icon-btn,
.ns-header--ui .ns-header__avatar {
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	border: 0;
	background: var(--ns-ui-surface);
	display: grid;
	place-items: center;
	color: inherit;
	text-decoration: none;
	position: relative;
	overflow: hidden;
	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.04);
}

.ns-header--ui .ns-header__avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ns-header--ui .ns-header__dot {
	position: absolute;
	top: 0.35rem;
	right: 0.4rem;
	width: 0.45rem;
	height: 0.45rem;
	border-radius: 50%;
	background: #e23b3b;
}

.ns-header--ui .ns-logo,
.ns-header--ui .ns-logo img {
	max-height: 1.75rem;
}

.ns-header--ui .ns-nav--ui {
	display: none;
}

.ns-header--ui .ns-nav-backdrop {
	display: none;
}

@media (max-width: 900px) {
	.ns-header--ui .ns-nav--ui {
		display: block;
		position: fixed;
		inset: 0 30% 0 0;
		background: var(--ns-ui-surface);
		padding: 5rem 1.25rem 2rem;
		transform: translateX(-105%);
		transition: transform 0.25s ease;
		z-index: 50;
		box-shadow: 8px 0 32px rgba(0, 0, 0, 0.08);
	}

	.ns-header--ui .ns-nav--ui.is-open {
		transform: translateX(0);
	}

	.ns-header--ui .ns-nav-backdrop.is-visible {
		display: block;
		position: fixed;
		inset: 0;
		background: rgba(0, 0, 0, 0.35) !important;
		background-color: rgba(0, 0, 0, 0.35) !important;
		background-image: none !important;
		z-index: 45;
		border: 0 !important;
		box-shadow: none !important;
	}

	.ns-header--ui .ns-nav__list {
		list-style: none;
		margin: 0;
		padding: 0;
		display: grid;
		gap: 0.35rem;
	}

	.ns-header--ui .ns-nav__list a {
		display: block;
		padding: 0.75rem 0.5rem;
		color: inherit;
		text-decoration: none;
		font-weight: 600;
	}
}

@media (min-width: 901px) {
	.ns-header--ui .ns-nav-toggle {
		display: none;
	}

	.ns-header--ui .ns-nav--ui {
		display: block;
		flex: 1;
	}

	.ns-header--ui .ns-nav__list {
		list-style: none;
		margin: 0;
		padding: 0;
		display: flex;
		justify-content: center;
		gap: 1.25rem;
	}

	.ns-header--ui .ns-nav__list a {
		color: inherit;
		text-decoration: none;
		font-weight: 600;
		font-size: 0.95rem;
	}
}

/* Search row */
.ns-ui-search {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	padding: 0.35rem 0 0.85rem;
}

.ns-ui-search__field {
	flex: 1;
	display: flex;
	align-items: center;
	gap: 0.55rem;
	background: var(--ns-ui-muted);
	border-radius: var(--ns-ui-radius-pill);
	padding: 0.7rem 1rem;
}

.ns-ui-search__field input {
	border: 0;
	background: transparent;
	width: 100%;
	font: inherit;
	outline: none;
}

.ns-ui-search__filter {
	width: 2.85rem;
	height: 2.85rem;
	border-radius: 50%;
	border: 0;
	background: #111;
	color: #fff;
	display: grid;
	place-items: center;
	cursor: pointer;
	flex-shrink: 0;
}

/* Category pills */
.ns-ui-pills {
	display: flex;
	gap: 0.5rem;
	overflow-x: auto;
	padding: 0.25rem 0 1rem;
	scrollbar-width: none;
}

.ns-ui-pills::-webkit-scrollbar {
	display: none;
}

.ns-ui-pills a {
	flex: 0 0 auto;
	padding: 0.55rem 1.05rem;
	border-radius: var(--ns-ui-radius-pill);
	background: var(--ns-ui-muted);
	color: inherit;
	text-decoration: none;
	font-weight: 600;
	font-size: 0.9rem;
}

.ns-ui-pills a.is-active {
	background: #111;
	color: #fff;
}

/* Promo banner */
.ns-ui-promo {
	position: relative;
	border-radius: calc(var(--ns-ui-radius) + 0.35rem);
	overflow: hidden;
	min-height: 11rem;
	background: #d9d9de;
	margin-bottom: 1.5rem;
}

.ns-ui-promo__media,
.ns-ui-promo__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ns-ui-promo__body {
	position: relative;
	z-index: 1;
	padding: 1.35rem 1.25rem;
	max-width: 16rem;
	color: #111;
}

.ns-ui-promo__title {
	margin: 0 0 0.85rem;
	font-size: clamp(1.15rem, 2.5vw, 1.45rem);
	line-height: 1.25;
	font-weight: 700;
}

.ns-ui-promo__cta {
	display: inline-flex;
	align-items: center;
	padding: 0.55rem 1.1rem;
	border-radius: var(--ns-ui-radius-pill);
	background: #111;
	color: #fff;
	text-decoration: none;
	font-weight: 600;
	font-size: 0.85rem;
}

/* Section heads */
.ns-ui-section__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1rem;
	margin: 0 0 1rem;
}

.ns-ui-section__title {
	margin: 0;
	font-size: 1.35rem;
	font-weight: 700;
}

.ns-ui-section__sub {
	margin: 0.2rem 0 0;
	color: #6b6b6b;
	font-size: 0.9rem;
}

.ns-ui-section__all {
	color: inherit;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}

/* Product cards (list / special offers) */
.ns-products.products,
ul.products {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.85rem;
}

@media (min-width: 768px) {
	.ns-products.products,
	ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 1rem;
	}
}

@media (min-width: 1024px) {
	.ns-products.products,
	ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.ns-product-card--ui {
	display: grid;
	grid-template-columns: 5.5rem minmax(0, 1fr);
	gap: 0.85rem;
	padding: 0.85rem;
	background: var(--ns-ui-surface);
	border-radius: var(--ns-ui-radius);
	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.03);
}

@media (min-width: 768px) {
	.ns-product-card--ui {
		grid-template-columns: 1fr;
		padding: 0;
		overflow: hidden;
	}
}

.ns-product-card--ui .ns-product-card__media {
	display: block;
	border-radius: var(--ns-ui-radius-sm);
	overflow: hidden;
	background: var(--ns-ui-muted);
	aspect-ratio: 1;
}

@media (min-width: 768px) {
	.ns-product-card--ui .ns-product-card__media {
		border-radius: 0;
		aspect-ratio: 4 / 3;
	}
}

.ns-product-card--ui .ns-product-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.ns-product-card--ui .ns-product-card__body {
	display: flex;
	flex-direction: column;
	min-width: 0;
	padding: 0;
}

@media (min-width: 768px) {
	.ns-product-card--ui .ns-product-card__body {
		padding: 1rem 1rem 1.1rem;
	}
}

.ns-product-card--ui .ns-product-card__top {
	display: flex;
	justify-content: space-between;
	gap: 0.5rem;
}

.ns-product-card--ui .ns-product-card__title {
	margin: 0;
	font-size: 0.98rem;
	font-weight: 700;
	line-height: 1.25;
}

.ns-product-card--ui .ns-product-card__title a {
	color: inherit;
	text-decoration: none;
}

.ns-product-card--ui .ns-product-card__meta {
	margin: 0.2rem 0 0;
	color: #6b6b6b;
	font-size: 0.82rem;
}

.ns-product-card--ui .ns-product-card__price {
	margin: 0.35rem 0 0.75rem;
	font-weight: 700;
	font-size: 1rem;
}

.ns-product-card--ui .ns-product-card__heart {
	width: 2rem;
	height: 2rem;
	border-radius: 50%;
	border: 0;
	background: transparent;
	color: #9a9a9a;
	cursor: pointer;
	flex-shrink: 0;
}

.ns-product-card--ui .ns-product-card__foot {
	margin-top: auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
}

.ns-product-card--ui .ns-product-card__estimate {
	font-size: 0.78rem;
	color: #6b6b6b;
}

.ns-product-card--ui .ns-product-card__estimate strong {
	display: block;
	color: #111;
	font-size: 0.95rem;
}

.ns-product-card--ui .ns-product-card__actions {
	display: flex;
	align-items: center;
	gap: 0.4rem;
}

.ns-btn--ui {
	appearance: none;
	border: 0;
	border-radius: var(--ns-ui-radius-pill);
	background: #111;
	color: #fff;
	font: inherit;
	font-weight: 600;
	font-size: 0.82rem;
	padding: 0.55rem 0.95rem;
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
}

.ns-btn--ui-ghost {
	background: #fff;
	color: #111;
	border: 1px solid #111;
}

.ns-btn--ui-icon {
	width: 2.35rem;
	height: 2.35rem;
	padding: 0;
	border-radius: 50%;
}

/* Page heads (Products / Overview / Cart) */
.ns-ui-pagehead {
	display: grid;
	grid-template-columns: 2.5rem 1fr 2.5rem;
	align-items: center;
	gap: 0.5rem;
	margin: 0.35rem 0 1.15rem;
}

.ns-ui-pagehead__title {
	margin: 0;
	text-align: center;
	font-size: 1.15rem;
	font-weight: 700;
}

.ns-ui-pagehead__btn {
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	border: 0;
	background: var(--ns-ui-surface);
	display: grid;
	place-items: center;
	color: inherit;
	text-decoration: none;
	cursor: pointer;
	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.04);
}

/* Single product overview */
.ns-product-page--ui {
	display: grid;
	gap: 1.25rem;
}

@media (min-width: 900px) {
	.ns-product-page--ui {
		grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
		align-items: start;
		gap: 2rem;
	}
}

.ns-product-page--ui .ns-product-page__stage {
	background: var(--ns-ui-muted);
	border-radius: calc(var(--ns-ui-radius) + 0.5rem);
	padding: 1.5rem;
	display: grid;
	place-items: center;
	min-height: 18rem;
}

.ns-product-page--ui .ns-product-page__image {
	max-width: min(100%, 22rem);
	width: 100%;
	height: auto;
	display: block;
	filter: drop-shadow(0 18px 28px rgba(0, 0, 0, 0.18));
}

.ns-product-page--ui .ns-product-page__rating {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	font-weight: 700;
	margin: 0 0 0.35rem;
}

.ns-product-page--ui .ns-product-page__title {
	margin: 0;
	font-size: clamp(1.35rem, 2.5vw, 1.85rem);
	font-weight: 700;
	line-height: 1.2;
}

.ns-product-page--ui .ns-product-page__price-row {
	display: flex;
	align-items: baseline;
	gap: 0.65rem;
	margin: 0.65rem 0;
}

.ns-product-page--ui .ns-product-page__price {
	font-size: 1.35rem;
	font-weight: 800;
	color: var(--ns-ui-sale);
}

.ns-product-page--ui .ns-product-page__was {
	color: #9a9a9a;
	text-decoration: line-through;
}

.ns-product-page--ui .ns-product-page__desc {
	color: #6b6b6b;
	font-size: 0.92rem;
	line-height: 1.5;
	margin: 0 0 1.15rem;
}

.ns-product-page--ui .ns-product-page__label {
	display: block;
	font-weight: 700;
	margin: 0 0 0.55rem;
}

.ns-product-page--ui .variations,
.ns-product-page--ui .ns-product-page__swatches {
	margin-bottom: 1rem;
}

.ns-product-page--ui .ns-product-page__purchase form.cart {
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.65rem;
}

.ns-product-page--ui .ns-product-page__purchase .variations,
.ns-product-page--ui .ns-product-page__purchase .woocommerce-variation-add-to-cart,
.ns-product-page--ui .ns-product-page__purchase .quantity {
	width: 100%;
}

.ns-product-page--ui .ns-product-page__purchase .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.65rem;
}

.ns-product-page--ui .single_add_to_cart_button,
.ns-product-page--ui .ns-product-page__buy {
	flex: 1 1 calc(50% - 0.4rem);
	min-width: 8rem;
	border-radius: var(--ns-ui-radius-pill);
	padding: 0.9rem 1rem;
	font-weight: 700;
	box-sizing: border-box;
}

.ns-product-page--ui .ns-product-page__buy {
	background: #111;
	color: #fff;
	border: 0;
	text-align: center;
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.ns-product-page--ui .single_add_to_cart_button {
	background: #fff !important;
	color: #111 !important;
	border: 1px solid #111 !important;
}

/* Cart */
.ns-cart--ui .ns-cart-layout {
	display: grid;
	gap: 1.25rem;
}

@media (min-width: 900px) {
	.ns-cart--ui .ns-cart-layout {
		grid-template-columns: minmax(0, 1.2fr) minmax(17rem, 0.8fr);
		align-items: start;
	}
}

.ns-cart--ui .ns-cart-line {
	display: grid;
	grid-template-columns: 5rem minmax(0, 1fr);
	gap: 0.85rem;
	padding: 0.9rem;
	background: var(--ns-ui-surface);
	border-radius: var(--ns-ui-radius);
	margin-bottom: 0.75rem;
}

.ns-cart--ui .ns-cart-line__media img {
	width: 100%;
	border-radius: var(--ns-ui-radius-sm);
	display: block;
}

.ns-cart--ui .ns-cart-line__name {
	font-weight: 700;
	color: inherit;
	text-decoration: none;
}

.ns-cart--ui .ns-cart-coupon {
	display: flex;
	align-items: center;
	background: var(--ns-ui-muted);
	border-radius: var(--ns-ui-radius-pill);
	padding: 0.25rem 0.25rem 0.25rem 1rem;
	margin: 1rem 0;
	gap: 0.5rem;
}

.ns-cart--ui .ns-cart-coupon .input-text {
	flex: 1;
	border: 0;
	background: transparent;
	outline: none;
	font: inherit;
	min-width: 0;
}

.ns-cart--ui .ns-cart-coupon__btn {
	border: 0;
	border-radius: var(--ns-ui-radius-pill);
	background: #111;
	color: #fff;
	font-weight: 700;
	padding: 0.7rem 1.15rem;
	cursor: pointer;
}

.ns-cart--ui .ns-cart-update {
	display: none;
}

.ns-cart--ui .ns-cart-totals {
	background: var(--ns-ui-surface);
	border-radius: var(--ns-ui-radius);
	padding: 1.15rem;
}

.ns-cart--ui .ns-cart-totals__table {
	width: 100%;
	border-collapse: collapse;
}

.ns-cart--ui .ns-cart-totals__table th,
.ns-cart--ui .ns-cart-totals__table td {
	padding: 0.45rem 0;
	text-align: left;
}

.ns-cart--ui .ns-cart-totals__table td {
	text-align: right;
}

.ns-cart--ui .order-total th,
.ns-cart--ui .order-total td {
	font-size: 1.15rem;
	font-weight: 800;
	padding-top: 0.85rem;
}

.ns-cart--ui .checkout-button,
.ns-cart--ui .ns-cart-checkout {
	display: flex;
	width: 100%;
	justify-content: center;
	border-radius: var(--ns-ui-radius-pill) !important;
	background: #2a2a2a !important;
	color: #fff !important;
	padding: 0.95rem 1rem !important;
	font-weight: 700 !important;
	text-decoration: none !important;
	margin-top: 1rem;
}

/* Checkout / account / page */
.ns-checkout--ui,
.ns-account--ui,
.ns-page--ui {
	padding-bottom: 1rem;
}

.ns-checkout--ui .ns-checkout__title,
.ns-account--ui .ns-account__title,
.ns-page--ui .ns-page__title {
	margin: 0 0 1rem;
	font-size: 1.5rem;
}

/* Footer (minimal) + dock */
.ns-footer--ui {
	padding: 1.5rem 0 calc(var(--ns-ui-dock-h) + 1rem);
	color: var(--ns-footer-text, #111);
}

.ns-footer--ui .ns-footer__copy {
	margin: 0;
	text-align: center;
	font-size: 0.82rem;
	opacity: 0.7;
}

.ns-bottom-nav--ui {
	position: fixed;
	left: 50%;
	bottom: max(0.85rem, env(safe-area-inset-bottom));
	transform: translateX(-50%);
	z-index: 60;
	display: flex;
	align-items: center;
	justify-content: space-around;
	gap: 0.35rem;
	width: min(22rem, calc(100% - 1.5rem));
	padding: 0.55rem 0.85rem;
	border-radius: var(--ns-ui-radius-pill);
	background: rgba(255, 255, 255, 0.72);
	backdrop-filter: blur(16px) saturate(1.2);
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
	border: 1px solid rgba(255, 255, 255, 0.55);
}

.ns-bottom-nav--ui .ns-bottom-nav__item {
	flex: 1;
	display: grid;
	place-items: center;
	gap: 0.15rem;
	padding: 0.35rem;
	border-radius: var(--ns-ui-radius-pill);
	color: #7a7a7a;
	text-decoration: none;
	font-size: 0.68rem;
	font-weight: 600;
}

.ns-bottom-nav--ui .ns-bottom-nav__icon {
	display: grid;
	place-items: center;
	width: 2.35rem;
	height: 2.35rem;
	border-radius: 50%;
}

.ns-bottom-nav--ui .ns-bottom-nav__item.is-current {
	color: #111;
}

.ns-bottom-nav--ui .ns-bottom-nav__item.is-current .ns-bottom-nav__icon {
	background: #111;
	color: #fff;
	box-shadow: 0 8px 18px rgba(226, 59, 59, 0.35);
}

.ns-bottom-nav--ui .ns-bottom-nav__label {
	line-height: 1;
}

body.admin-bar .ns-bottom-nav--ui {
	bottom: calc(max(0.85rem, env(safe-area-inset-bottom)) + 0px);
}

/* Archive toolbar */
.ns-archive--ui .ns-archive__header {
	margin-bottom: 0.5rem;
}

.ns-archive--ui .woocommerce-result-count,
.ns-archive--ui .woocommerce-ordering {
	font-size: 0.9rem;
}

.ns-archive--ui .ns-archive__shell {
	display: block;
}

.ns-archive--ui .ns-archive__toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	margin: 0 0 1rem;
}

.ns-archive--ui .ns-archive__count {
	margin: 0;
	font-size: 0.9rem;
	color: #6b6b6b;
}

.ns-ui-filter-btn {
	background: #111;
	color: #fff;
}

.ns-sidebar--ui {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	z-index: 90;
	width: min(92vw, 22rem);
	padding: 1.15rem 1.15rem calc(1.25rem + var(--ns-ui-dock-h));
	background: #fff;
	box-shadow: -12px 0 40px rgba(0, 0, 0, 0.14);
	transform: translateX(105%);
	transition: transform 0.28s ease;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}

.ns-sidebar--ui.is-open {
	transform: translateX(0);
}

.ns-sidebar--ui .ns-sidebar__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	margin-bottom: 0.85rem;
}

.ns-sidebar--ui .ns-sidebar__title {
	margin: 0;
	font-size: 1.2rem;
	font-weight: 700;
}

.ns-sidebar--ui .ns-sidebar__close {
	width: 2.25rem;
	height: 2.25rem;
	border: 0 !important;
	border-radius: 50% !important;
	background: #f5f5f7 !important;
	background-color: #f5f5f7 !important;
	color: #111 !important;
	font-size: 1.35rem;
	line-height: 1;
	cursor: pointer;
	box-shadow: none !important;
}

.ns-sidebar--ui .ns-shop-filters {
	position: static;
	top: auto;
}

.ns-sidebar--ui .ns-shop-filters__head {
	display: none;
}

.ns-sidebar-backdrop,
.novashop-storefront .ns-sidebar-backdrop,
.novashop-storefront button.ns-sidebar-backdrop {
	position: fixed;
	inset: 0;
	z-index: 85;
	border: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	background: rgba(10, 10, 10, 0.45) !important;
	background-color: rgba(10, 10, 10, 0.45) !important;
	background-image: none !important;
	box-shadow: none !important;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.25s ease, visibility 0.25s ease;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
}

.ns-sidebar-backdrop.is-visible,
.novashop-storefront .ns-sidebar-backdrop.is-visible {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}

body.ns-filters-open {
	overflow: hidden;
}

/* —— Side cart drawer (Mini_Cart in wp_footer) —— */
.ns-side-cart {
	position: fixed;
	inset: 0;
	z-index: 10000;
	pointer-events: none;
	visibility: hidden;
}

.ns-side-cart.is-open {
	pointer-events: auto;
	visibility: visible;
}

.ns-side-cart__backdrop {
	position: absolute;
	inset: 0;
	border: 0;
	padding: 0;
	margin: 0;
	background: rgba(10, 10, 10, 0.4);
	opacity: 0;
	transition: opacity 0.25s ease;
	cursor: pointer;
}

.ns-side-cart.is-open .ns-side-cart__backdrop {
	opacity: 1;
}

.ns-side-cart__panel {
	position: absolute;
	top: 0;
	right: 0;
	display: flex;
	flex-direction: column;
	width: min(100%, 24rem);
	height: 100%;
	background: #fff;
	color: #111;
	transform: translateX(100%);
	transition: transform 0.28s ease;
	box-shadow: -12px 0 40px rgba(0, 0, 0, 0.12);
}

.ns-side-cart.is-open .ns-side-cart__panel {
	transform: translateX(0);
}

.ns-side-cart__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 1.1rem 1.25rem;
	border-bottom: 1px solid #eee;
}

.ns-side-cart__title {
	margin: 0;
	font-size: 1.15rem;
	font-weight: 700;
}

.ns-side-cart__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	border: 0;
	border-radius: 50%;
	background: #f5f5f7;
	color: #111;
	font-size: 1.35rem;
	line-height: 1;
	cursor: pointer;
}

.ns-side-cart__body {
	flex: 1;
	overflow: auto;
	padding: 1rem 1.25rem;
}

.ns-side-cart__empty {
	margin: 2rem 0;
	text-align: center;
	color: #666;
}

.ns-side-cart__items {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 1rem;
}

.ns-side-cart__item {
	display: grid;
	grid-template-columns: 64px 1fr;
	gap: 0.75rem;
}

.ns-side-cart__thumb,
.ns-side-cart__media img {
	width: 64px;
	height: 80px;
	object-fit: cover;
	border-radius: 0.65rem;
	background: #eee;
}

.ns-side-cart__name {
	font-size: 0.9rem;
	font-weight: 600;
	color: inherit;
	text-decoration: none;
}

.ns-side-cart__controls {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	margin-top: 0.45rem;
}

.ns-side-cart__qty {
	display: inline-flex;
	align-items: center;
	border: 1px solid #e8e8ed;
	border-radius: 999px;
	overflow: hidden;
}

.ns-side-cart__qty-btn {
	width: 1.75rem;
	height: 1.75rem;
	border: 0;
	background: transparent;
	cursor: pointer;
}

.ns-side-cart__qty-val {
	min-width: 1.5rem;
	text-align: center;
	font-size: 0.85rem;
}

.ns-side-cart__remove {
	border: 0;
	background: transparent;
	cursor: pointer;
	color: #666;
	padding: 0.25rem;
}

.ns-side-cart__footer {
	padding: 1rem 1.25rem calc(1.35rem + env(safe-area-inset-bottom));
	border-top: 1px solid #eee;
	display: grid;
	gap: 0.65rem;
}

.ns-side-cart__subtotal {
	display: flex;
	justify-content: space-between;
	font-weight: 600;
}

.ns-side-cart__note {
	margin: 0;
	font-size: 0.8rem;
	color: #777;
}

.ns-side-cart__btn {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 2.75rem;
	border-radius: 999px;
	text-decoration: none !important;
	font-size: 0.85rem;
	font-weight: 700;
}

.ns-side-cart__btn--ghost {
	border: 1px solid #111;
	color: #111 !important;
	background: #fff;
}

.ns-side-cart__btn--primary {
	background: #111;
	color: #fff !important;
	border: 0;
}

body.ns-side-cart-open {
	overflow: hidden;
}
