/* ==========================================================================
   Smart Jhuri — product archive: layout, page header, toolbar, filters
   Cards themselves live in products.css; this file only arranges them.
   ========================================================================== */

.sj-shop {
	padding: 0 0 48px;
}

/* ------------------------------------------------------------ Page header */

.sj-shop-head--soft {
	background: linear-gradient(180deg, var(--sj-blue-50), transparent);
	border-bottom: 1px solid var(--sj-line);
}

.sj-shop-head__inner {
	display: flex;
	align-items: center;
	gap: 16px;
	padding-block: 22px;
}

.sj-shop-head--center .sj-shop-head__inner {
	flex-direction: column;
	text-align: center;
}

.sj-shop-head__image {
	flex: none;
	display: grid;
	place-items: center;
	width: 64px;
	height: 64px;
	padding: 6px;
	border: 1px solid var(--sj-line);
	border-radius: 50%;
	background: #fff;
	overflow: hidden;
}
.sj-shop-head__image img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	border-radius: 50%;
}

.sj-shop-head__title {
	margin: 0;
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -.02em;
}

.sj-shop-head__desc {
	margin-top: 6px;
	max-width: 78ch;
	font-size: 14px;
	color: var(--sj-muted);
}
.sj-shop-head__desc p:last-child { margin-bottom: 0; }

.sj-shop-head--center .sj-shop-head__desc { margin-inline: auto; }

/* ------------------------------------------------------- Sub-categories */

.sj-subcats {
	display: flex;
	gap: 10px;
	padding: 20px 0 4px;
	overflow-x: auto;
	scrollbar-width: none;
}
.sj-subcats::-webkit-scrollbar { display: none; }

.sj-subcats__item {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: none;
	border: 1px solid var(--sj-line);
	background: #fff;
	color: var(--sj-ink);
	font-family: var(--sj-font-head);
	font-size: 13px;
	font-weight: 600;
	transition: border-color var(--sj-ease), box-shadow var(--sj-ease), color var(--sj-ease);
}
.sj-subcats__item:hover {
	border-color: var(--sj-blue);
	color: var(--sj-blue);
	box-shadow: var(--sj-shadow-sm);
}

.sj-subcats--chips .sj-subcats__item {
	height: 36px;
	padding: 0 14px;
	border-radius: 999px;
}

.sj-subcats--cards .sj-subcats__item {
	flex-direction: column;
	gap: 6px;
	width: 116px;
	padding: 12px 10px;
	border-radius: var(--sj-radius);
	text-align: center;
}

.sj-subcats__media {
	display: grid;
	place-items: center;
	width: 52px;
	height: 52px;
	border-radius: 50%;
	background: var(--sj-soft);
	color: var(--sj-muted);
	overflow: hidden;
}
.sj-subcats__media img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	padding: 4px;
}

.sj-subcats--cards .sj-subcats__name {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	line-height: 1.3;
}

.sj-subcats__count {
	font-size: 11.5px;
	font-weight: 500;
	color: var(--sj-muted);
}
.sj-subcats--chips .sj-subcats__count::before { content: "("; }
.sj-subcats--chips .sj-subcats__count::after { content: ")"; }

/* --------------------------------------------------------------- Layout */

.sj-shop__layout {
	display: flex;
	align-items: flex-start;
	gap: var(--sj-shop-gap, 28px);
	padding-top: 22px;
}

.sj-shop__sidebar {
	flex: 0 0 var(--sj-filter-w, 280px);
	width: var(--sj-filter-w, 280px);
	min-width: 0;
	order: 0;
}

.sj-shop__main {
	flex: 1 1 auto;
	min-width: 0;
	order: 1;
}

/* The one setting that flips the whole page around. */
.sj-shop--right .sj-shop__sidebar { order: 2; }

/* Backdrop for the mobile drawer; inert until the drawer opens. */
.sj-shop__scrim {
	position: fixed;
	inset: 0;
	z-index: 1190;
	background: rgba(15, 23, 42, .5);
	opacity: 0;
	transition: opacity var(--sj-ease);
}
.sj-shop__scrim[hidden] { display: none; }
.sj-shop__scrim.is-on { opacity: 1; }

/* -------------------------------------------------------------- Toolbar */

.sj-shop-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	margin-bottom: 18px;
	padding: 10px 14px;
	border: 1px solid var(--sj-line);
	border-radius: var(--sj-radius);
	background: var(--sj-soft);
}

.sj-shop-bar__left,
.sj-shop-bar__right {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

.sj-shop-bar__count {
	margin: 0;
	font-size: 13.5px;
	color: var(--sj-muted);
}

/* Only reachable on narrow screens, where the sidebar is a drawer. */
.sj-shop-bar__filter {
	display: none;
	align-items: center;
	gap: 7px;
	height: 36px;
	padding: 0 14px;
	border: 1px solid var(--sj-line);
	border-radius: var(--sj-radius-sm);
	background: #fff;
	color: var(--sj-ink);
	font-family: var(--sj-font-head);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
}
.sj-shop-bar__filter:hover { border-color: var(--sj-blue); color: var(--sj-blue); }

.sj-shop-bar__badge {
	display: grid;
	place-items: center;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	border-radius: 999px;
	background: var(--sj-orange);
	color: #fff;
	font-size: 11px;
	line-height: 1;
}
.sj-shop-bar__badge[hidden] { display: none; }

/* --- Selects ----------------------------------------------------------- */

.sj-shop-select {
	position: relative;
	display: inline-flex;
	align-items: center;
}

.sj-shop-select select {
	appearance: none;
	height: 36px;
	padding: 0 32px 0 12px;
	border: 1px solid var(--sj-line);
	border-radius: var(--sj-radius-sm);
	background: #fff;
	color: var(--sj-ink);
	font-family: var(--sj-font-head);
	font-size: 13px;
	font-weight: 500;
	cursor: pointer;
}
.sj-shop-select select:hover { border-color: var(--sj-blue); }

.sj-shop-select .sj-icon {
	position: absolute;
	right: 10px;
	pointer-events: none;
	color: var(--sj-muted);
}

/* --- Grid / list switch ------------------------------------------------- */

.sj-shop-view {
	display: inline-flex;
	border: 1px solid var(--sj-line);
	border-radius: var(--sj-radius-sm);
	background: #fff;
	overflow: hidden;
}

.sj-shop-view__btn {
	display: grid;
	place-items: center;
	width: 36px;
	height: 36px;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--sj-muted);
	cursor: pointer;
	transition: background var(--sj-ease), color var(--sj-ease);
}
.sj-shop-view__btn + .sj-shop-view__btn { border-left: 1px solid var(--sj-line); }
.sj-shop-view__btn:hover { color: var(--sj-ink); }
.sj-shop-view__btn.is-on { background: var(--sj-blue); color: #fff; }

/* ---------------------------------------------------------- Active chips */

.sj-chips {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 16px;
}

.sj-chips__label {
	font-size: 13px;
	font-weight: 600;
	color: var(--sj-muted);
}

.sj-chips__item {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	height: 30px;
	padding: 0 10px;
	border: 1px solid var(--sj-filter-accent, var(--sj-blue));
	border-radius: 999px;
	background: color-mix(in srgb, var(--sj-filter-accent, #2563EB) 8%, #fff);
	color: var(--sj-filter-accent, var(--sj-blue));
	font-size: 12.5px;
	font-weight: 600;
	transition: background var(--sj-ease), color var(--sj-ease);
}
.sj-chips__item:hover {
	background: var(--sj-filter-accent, var(--sj-blue));
	color: #fff;
}

.sj-chips__x { font-size: 16px; line-height: 1; }

.sj-chips__clear {
	font-size: 12.5px;
	font-weight: 600;
	color: var(--sj-muted);
	text-decoration: underline;
}
.sj-chips__clear:hover { color: var(--sj-orange); }

/* ------------------------------------------------------------------ Grid */

/*
 * Archives drive the column count from a custom property rather than the
 * inline --sj-cols the shortcode rows use, so the Customizer can change it
 * without re-rendering the grid.
 */
.sj-shop .sj-products__grid {
	grid-template-columns: repeat(var(--sj-shop-cols, 4), minmax(0, 1fr));
}

/* ------------------------------------------------------------ List view */

.sj-shop .sj-products__grid.is-list {
	grid-template-columns: minmax(0, 1fr);
	gap: 12px;
}

.sj-shop .sj-products__grid.is-list .sj-card {
	flex-direction: row;
	align-items: stretch;
}

.sj-shop .sj-products__grid.is-list .sj-card__media {
	flex: 0 0 190px;
	width: 190px;
}

.sj-shop .sj-products__grid.is-list .sj-card__body {
	padding: 16px 18px;
}

.sj-shop .sj-products__grid.is-list .sj-card__title {
	font-size: 16px;
	-webkit-line-clamp: 2;
	min-height: 0;
}

.sj-shop .sj-products__grid.is-list .sj-card__price {
	font-size: 19px;
	margin-top: 8px;
}

.sj-shop .sj-products__grid.is-list .sj-card__actions {
	max-width: 380px;
}

/* --------------------------------------------------------- Empty state */

.sj-shop-empty {
	display: grid;
	justify-items: center;
	gap: 8px;
	padding: 56px 24px;
	border: 1px dashed var(--sj-line);
	border-radius: var(--sj-radius);
	background: var(--sj-soft);
	text-align: center;
}

.sj-shop-empty__icon { color: var(--sj-muted); }
.sj-shop-empty__title { margin: 4px 0 0; font-size: 19px; }
.sj-shop-empty__text { margin: 0 0 10px; font-size: 14px; color: var(--sj-muted); }

/* ---------------------------------------------------------- Pagination */

.sj-pagination {
	display: grid;
	justify-items: center;
	gap: 14px;
	margin-top: 30px;
}

.sj-pagination__numbers {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	justify-content: center;
	gap: 6px;
}

.sj-pagination__numbers .page-numbers {
	display: grid;
	place-items: center;
	min-width: 38px;
	height: 38px;
	padding: 0 10px;
	border: 1px solid var(--sj-line);
	border-radius: var(--sj-radius-sm);
	background: #fff;
	color: var(--sj-ink);
	font-family: var(--sj-font-head);
	font-size: 13.5px;
	font-weight: 600;
	transition: background var(--sj-ease), border-color var(--sj-ease), color var(--sj-ease);
}
.sj-pagination__numbers a.page-numbers:hover {
	border-color: var(--sj-blue);
	color: var(--sj-blue);
}
.sj-pagination__numbers .page-numbers.current {
	background: var(--sj-blue);
	border-color: var(--sj-blue);
	color: #fff;
}
.sj-pagination__numbers .page-numbers.dots {
	border-color: transparent;
	background: transparent;
}

.sj-pagination__arrow--prev { transform: rotate(180deg); }

.sj-pagination__more {
	height: 44px;
	padding: 0 28px;
	border: 1px solid var(--sj-line);
	border-radius: 999px;
	background: #fff;
	color: var(--sj-ink);
	font-family: var(--sj-font-head);
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
	transition: background var(--sj-ease), border-color var(--sj-ease), color var(--sj-ease);
}
.sj-pagination__more:hover {
	background: var(--sj-blue);
	border-color: var(--sj-blue);
	color: #fff;
}
.sj-pagination__more.is-loading { opacity: .6; pointer-events: none; }

/* Load-more and infinite scroll keep the numbers as a no-JS fallback only. */
.sj-pagination--load_more.is-enhanced .sj-pagination__numbers,
.sj-pagination--infinite.is-enhanced .sj-pagination__numbers { display: none; }
.sj-pagination--infinite.is-enhanced .sj-pagination__more { display: none; }
.sj-pagination.is-done { display: none; }

/* ==========================================================================
   Filter sidebar
   ========================================================================== */

.sj-filters {
	color: var(--sj-filter-text, #334155);
	font-size: 14px;
}

.sj-filters--boxed {
	border: 1px solid var(--sj-filter-border, #E2E8F0);
	border-radius: var(--sj-filter-radius, 12px);
	background: var(--sj-filter-bg, #fff);
	overflow: hidden;
}

.sj-filters.is-sticky {
	position: sticky;
	/* Clears the pinned navigation bar. */
	top: calc(var(--sj-nav-h) + 16px);
	max-height: calc(100vh - var(--sj-nav-h) - 32px);
	overflow-y: auto;
	scrollbar-width: thin;
}

/* --- Head --------------------------------------------------------------- */

.sj-filters__head {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 14px 16px;
	border-bottom: 1px solid var(--sj-filter-border, #E2E8F0);
	background: var(--sj-filter-bg, #fff);
}

.sj-filters--plain .sj-filters__head { padding-inline: 0; }

.sj-filters__heading {
	flex: 1;
	margin: 0;
	font-size: 16px;
	font-weight: 700;
	color: var(--sj-filter-heading, #0F172A);
}

.sj-filters__reset {
	font-size: 12.5px;
	font-weight: 600;
	color: var(--sj-muted);
	text-decoration: underline;
}
.sj-filters__reset:hover { color: var(--sj-orange); }

.sj-filters__close {
	display: none;
	place-items: center;
	width: 32px;
	height: 32px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--sj-soft);
	color: var(--sj-ink);
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
}

/* --- Blocks ------------------------------------------------------------- */

.sj-filter {
	padding: 14px 16px;
	border-bottom: 1px solid var(--sj-filter-border, #E2E8F0);
}
.sj-filter:last-child { border-bottom: 0; }

.sj-filters--plain .sj-filter { padding-inline: 0; }

.sj-filters--card .sj-filter {
	margin-bottom: 12px;
	border: 1px solid var(--sj-filter-border, #E2E8F0);
	border-radius: var(--sj-filter-radius, 12px);
	background: var(--sj-filter-bg, #fff);
}
.sj-filters--card .sj-filter:last-child { margin-bottom: 0; }
.sj-filters--card .sj-filters__head {
	border: 1px solid var(--sj-filter-border, #E2E8F0);
	border-radius: var(--sj-filter-radius, 12px);
	margin-bottom: 12px;
}

.sj-filter__title {
	margin: 0;
	font-family: var(--sj-font-head);
	font-size: 14px;
	font-weight: 600;
	color: var(--sj-filter-heading, #0F172A);
}

.sj-filter__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	width: 100%;
	padding: 0;
	border: 0;
	background: transparent;
	color: inherit;
	font: inherit;
	text-align: left;
	cursor: pointer;
}

.sj-filter__chevron { transition: transform var(--sj-ease); color: var(--sj-muted); }
.sj-filter__toggle[aria-expanded="false"] .sj-filter__chevron { transform: rotate(-90deg); }

.sj-filter__content { padding-top: 12px; }
.sj-filter.is-closed .sj-filter__content { display: none; }

.sj-filter__list {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

/* --- One option --------------------------------------------------------- */

.sj-filter__opt {
	display: flex;
	align-items: center;
	gap: 9px;
	padding: 6px 6px 6px 0;
	border-radius: var(--sj-radius-sm);
	color: inherit;
	font-size: 13.5px;
	line-height: 1.35;
	transition: color var(--sj-ease);
}
.sj-filter__opt:hover { color: var(--sj-filter-accent, #2563EB); }

.sj-filter__label { flex: 1; min-width: 0; }

.sj-filter__count {
	flex: none;
	font-size: 11.5px;
	color: var(--sj-muted);
}

/* Tick box */
.sj-filter__box {
	flex: none;
	display: grid;
	place-items: center;
	width: 18px;
	height: 18px;
	border: 1.5px solid var(--sj-filter-border, #CBD5E1);
	border-radius: 5px;
	background: #fff;
	color: #fff;
	transition: background var(--sj-ease), border-color var(--sj-ease);
}
.sj-filter__box .sj-icon { opacity: 0; }

.sj-filter__opt.is-on .sj-filter__box {
	background: var(--sj-filter-accent, #2563EB);
	border-color: var(--sj-filter-accent, #2563EB);
}
.sj-filter__opt.is-on .sj-filter__box .sj-icon { opacity: 1; }
.sj-filter__opt.is-on { color: var(--sj-filter-accent, #2563EB); font-weight: 600; }

/* Plain link list (single-select categories) */
.sj-filter__opt--link { padding-left: 2px; }
.sj-filter__opt--link.is-on {
	color: var(--sj-filter-accent, #2563EB);
	font-weight: 700;
}

/* Swatches and buttons wrap into rows instead of stacking. */
.sj-filter__list--swatch,
.sj-filter__list--button {
	flex-direction: row;
	flex-wrap: wrap;
	gap: 8px;
}

.sj-filter__opt--swatch {
	position: relative;
	padding: 0;
	width: 34px;
	height: 34px;
}
.sj-filter__opt--swatch .sj-filter__label {
	position: absolute;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
}

.sj-filter__swatch {
	display: block;
	width: 100%;
	height: 100%;
	border: 1px solid var(--sj-filter-border, #E2E8F0);
	border-radius: 50%;
	background: var(--sj-soft) center / cover no-repeat;
}
.sj-filter__opt--swatch.is-on .sj-filter__swatch {
	box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--sj-filter-accent, #2563EB);
}

.sj-filter__opt--button {
	justify-content: center;
	min-width: 40px;
	height: 34px;
	padding: 0 12px;
	border: 1px solid var(--sj-filter-border, #E2E8F0);
	border-radius: var(--sj-radius-sm);
	background: #fff;
	font-size: 13px;
	font-weight: 600;
}
.sj-filter__opt--button.is-on {
	border-color: var(--sj-filter-accent, #2563EB);
	background: var(--sj-filter-accent, #2563EB);
	color: #fff;
}

/* Rating rows */
.sj-filter__opt--rating .sj-card__stars { gap: 1px; }

/* Show more / less */
.sj-filter__more {
	margin-top: 8px;
	padding: 0;
	border: 0;
	background: none;
	color: var(--sj-filter-accent, #2563EB);
	font-family: var(--sj-font-head);
	font-size: 12.5px;
	font-weight: 600;
	cursor: pointer;
	text-decoration: underline;
}
.sj-filter__more-hide { display: none; }
.sj-filter__more.is-open .sj-filter__more-show { display: none; }
.sj-filter__more.is-open .sj-filter__more-hide { display: inline; }

/* Options past the cut-off, until "Show more" is pressed. */
.sj-filter__list.is-capped > .sj-filter__opt.is-hidden { display: none; }

/* --- Search box --------------------------------------------------------- */

.sj-filter__search { position: relative; }

.sj-filter__input {
	width: 100%;
	height: 38px;
	padding: 0 12px;
	border: 1px solid var(--sj-filter-border, #E2E8F0);
	border-radius: var(--sj-radius-sm);
	background: #fff;
	color: var(--sj-ink);
	font-family: var(--sj-font-body);
	font-size: 13.5px;
}
.sj-filter__input:focus { outline: none; border-color: var(--sj-filter-accent, #2563EB); }

.sj-filter__search .sj-filter__input { padding-right: 38px; }

.sj-filter__search-go {
	position: absolute;
	top: 0;
	right: 0;
	display: grid;
	place-items: center;
	width: 38px;
	height: 38px;
	padding: 0;
	border: 0;
	background: none;
	color: var(--sj-muted);
	cursor: pointer;
}
.sj-filter__search-go:hover { color: var(--sj-filter-accent, #2563EB); }

/* --- Price -------------------------------------------------------------- */

.sj-price { display: grid; gap: 12px; }

.sj-price__slider {
	position: relative;
	height: 24px;
}

.sj-price__track {
	position: absolute;
	top: 50%;
	left: 0;
	right: 0;
	height: 4px;
	margin-top: -2px;
	border-radius: 4px;
	background: var(--sj-filter-border, #E2E8F0);
}

.sj-price__fill {
	position: absolute;
	top: 0;
	bottom: 0;
	border-radius: 4px;
	background: var(--sj-filter-accent, #2563EB);
}

/*
 * Two range inputs stacked on one track. The track itself is transparent and
 * pointer-events are handed to the thumbs only, so whichever handle is under
 * the cursor takes the drag.
 */
.sj-price__range {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 24px;
	margin: 0;
	appearance: none;
	background: none;
	pointer-events: none;
}
.sj-price__range:focus { outline: none; }

.sj-price__range::-webkit-slider-thumb {
	appearance: none;
	pointer-events: auto;
	width: 16px;
	height: 16px;
	border: 2px solid var(--sj-filter-accent, #2563EB);
	border-radius: 50%;
	background: #fff;
	box-shadow: var(--sj-shadow-sm);
	cursor: grab;
}
.sj-price__range::-moz-range-thumb {
	pointer-events: auto;
	width: 16px;
	height: 16px;
	border: 2px solid var(--sj-filter-accent, #2563EB);
	border-radius: 50%;
	background: #fff;
	cursor: grab;
}
.sj-price__range:focus-visible::-webkit-slider-thumb {
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--sj-filter-accent, #2563EB) 35%, transparent);
}

.sj-price__readout {
	margin: 0;
	font-family: var(--sj-font-head);
	font-size: 13.5px;
	font-weight: 600;
	color: var(--sj-filter-heading, #0F172A);
}
.sj-price__readout del { display: none; }

.sj-price__inputs {
	display: flex;
	align-items: center;
	gap: 8px;
}
.sj-price__field { flex: 1; min-width: 0; }
.sj-price__dash { color: var(--sj-muted); }

.sj-price__go {
	justify-self: start;
	height: 34px;
	padding: 0 16px;
	border: 1px solid var(--sj-filter-accent, #2563EB);
	border-radius: var(--sj-radius-sm);
	background: #fff;
	color: var(--sj-filter-accent, #2563EB);
	font-family: var(--sj-font-head);
	font-size: 12.5px;
	font-weight: 600;
	cursor: pointer;
	transition: background var(--sj-ease), color var(--sj-ease);
}
.sj-price__go:hover {
	background: var(--sj-filter-accent, #2563EB);
	color: #fff;
}

/* --- Apply button ------------------------------------------------------- */

.sj-filters__foot {
	padding: 14px 16px;
	border-top: 1px solid var(--sj-filter-border, #E2E8F0);
	background: var(--sj-filter-bg, #fff);
}
.sj-filters--plain .sj-filters__foot { padding-inline: 0; }
.sj-filters__apply { width: 100%; }

/* --- Loading state ------------------------------------------------------ */

.sj-shop__results { position: relative; }

.sj-shop.is-loading .sj-shop__results {
	opacity: .45;
	pointer-events: none;
	transition: opacity 120ms linear;
}

.sj-shop__spinner {
	position: absolute;
	top: 90px;
	left: 50%;
	z-index: 5;
	width: 34px;
	height: 34px;
	margin-left: -17px;
	border: 3px solid var(--sj-line);
	border-top-color: var(--sj-blue);
	border-radius: 50%;
	animation: sj-shop-spin 700ms linear infinite;
}

@keyframes sj-shop-spin { to { transform: rotate(360deg); } }

/* ==========================================================================
   Breakpoints
   ========================================================================== */

@media (max-width: 1199px) {
	.sj-shop .sj-products__grid { grid-template-columns: repeat(min(var(--sj-shop-cols, 4), 4), minmax(0, 1fr)); }
	.sj-shop .sj-products__grid.is-list { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 991px) {
	.sj-shop .sj-products__grid { grid-template-columns: repeat(var(--sj-shop-cols-md, 3), minmax(0, 1fr)); }
	.sj-shop .sj-products__grid.is-list { grid-template-columns: minmax(0, 1fr); }

	.sj-shop-bar__filter { display: inline-flex; }

	/* The sidebar leaves the flow and becomes a drawer. */
	.sj-shop__sidebar {
		position: fixed;
		top: 0;
		bottom: 0;
		z-index: 1200;
		width: min(340px, 86vw);
		max-width: none;
		flex: none;
		background: var(--sj-filter-bg, #fff);
		box-shadow: var(--sj-shadow-lg);
		overflow-y: auto;
		transition: transform 240ms cubic-bezier(.4, 0, .2, 1);
	}

	.sj-shop__sidebar--drawer-left  { left: 0;  transform: translateX(-102%); }
	.sj-shop__sidebar--drawer-right { right: 0; transform: translateX(102%); }
	.sj-shop__sidebar.is-open { transform: translateX(0); }

	.sj-filters.is-sticky {
		position: static;
		max-height: none;
		overflow: visible;
	}
	.sj-filters--boxed { border: 0; border-radius: 0; }
	.sj-filters__close { display: grid; }

	/* Accordion mode drops the panel in above the grid instead. */
	.sj-shop__sidebar--accordion {
		position: static;
		display: none;
		width: 100%;
		order: 0;
		margin-bottom: 16px;
		box-shadow: none;
		transform: none;
	}
	.sj-shop__sidebar--accordion.is-open { display: block; }
	.sj-shop__sidebar--accordion .sj-filters--boxed {
		border: 1px solid var(--sj-filter-border, #E2E8F0);
		border-radius: var(--sj-filter-radius, 12px);
	}
	.sj-shop__sidebar--accordion .sj-filters__close { display: none; }

	.sj-shop__layout { flex-wrap: wrap; }
	.sj-shop__main { flex: 1 1 100%; order: 1; }

	.sj-shop-head__title { font-size: 23px; }
}

@media (max-width: 767px) {
	.sj-shop { padding-bottom: 32px; }
	.sj-shop__layout { padding-top: 16px; }

	.sj-shop .sj-products__grid { grid-template-columns: repeat(var(--sj-shop-cols-sm, 2), minmax(0, 1fr)); }
	.sj-shop .sj-products__grid.is-list { grid-template-columns: minmax(0, 1fr); }

	.sj-shop-bar {
		padding: 10px;
		gap: 8px;
	}
	.sj-shop-bar__left { flex: 1 1 100%; }
	.sj-shop-bar__right { flex: 1 1 100%; justify-content: flex-end; }

	.sj-shop-head__inner { padding-block: 16px; gap: 12px; }
	.sj-shop-head__title { font-size: 20px; }
	.sj-shop-head__desc { font-size: 13px; }
	.sj-shop-head__image { width: 52px; height: 52px; }

	.sj-subcats--cards .sj-subcats__item { width: 100px; }

	.sj-shop .sj-products__grid.is-list .sj-card { flex-direction: column; }
	.sj-shop .sj-products__grid.is-list .sj-card__media { flex: none; width: 100%; }
	.sj-shop .sj-products__grid.is-list .sj-card__title { font-size: 14px; }
	.sj-shop .sj-products__grid.is-list .sj-card__price { font-size: 16px; }
}

@media (prefers-reduced-motion: reduce) {
	.sj-shop__sidebar,
	.sj-shop__scrim,
	.sj-filter__chevron { transition: none; }
	.sj-shop__spinner { animation: none; }
}
