/**
 * jsm-catalog.css
 * Refactored: dedup + cleanup duplicates (v0.43.1)
 * Total rules: 300 (reduced from 483)
 *
 * Class hierarchy:
 *   .jsm-fc (wrapper)          — fixed bottom, container untuk bar + panel
 *   .jsm-fc-bar (toggle)       — selalu visible
 *   .jsm-fc-panel              — slide-up expand
 *   .jsm-fc-row*               — single product row dalam panel
 *
 * Legacy (deprecated):
 *   .jsm-floating-cart*        — sebelum v0.43, sudah tidak di-render
 */

.jsm-shop-head {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 18px;
	flex-wrap: wrap;
	margin-bottom: 18px;
}

.jsm-shop-head h1 {
	font-size: 24px;
	font-weight: 800;
	color: var(--jsm-navy);
	margin: 0 0 4px;
}

.jsm-shop-head p {
	font-size: 13px;
	color: var(--jsm-text-muted);
	margin: 0;
}

.jsm-shop-search {
	display: flex;
	background: var(--jsm-white);
	border: 1px solid var(--jsm-border);
	border-radius: 999px;
	overflow: hidden;
	min-width: 240px;
}

.jsm-shop-search input {
	border: 0;
	padding: 10px 16px;
	font-size: 14px;
	flex: 1;
	background: transparent;
	color: var(--jsm-navy);
}

.jsm-shop-search input:focus { outline: none; }

.jsm-shop-search button {
	background: var(--jsm-lime);
	color: var(--jsm-navy);
	padding: 0 16px;
	font-size: 18px;
}

.jsm-shop-cats {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	margin-bottom: 22px;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--jsm-border);
}

.jsm-shop-cat {
	padding: 6px 14px;
	border-radius: 999px;
	background: var(--jsm-white);
	border: 1px solid var(--jsm-border);
	font-size: 12px;
	font-weight: 600;
	color: var(--jsm-navy);
	text-decoration: none;
	transition: all 0.15s;
}

.jsm-shop-cat:hover {
	border-color: var(--jsm-navy);
	color: var(--jsm-navy);
}

.jsm-shop-cat-active {
	background: var(--jsm-navy);
	color: var(--jsm-white);
	border-color: var(--jsm-navy);
}

.jsm-shop-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
}

@media (max-width: 980px) { .jsm-shop-grid { grid-template-columns: repeat(3, 1fr); } }

@media (max-width: 720px) { .jsm-shop-grid { grid-template-columns: repeat(2, 1fr); } }

@media (max-width: 480px) { .jsm-shop-grid { grid-template-columns: 1fr; } }

.jsm-shop-card {
	background: var(--jsm-white);
	border: 1px solid var(--jsm-border);
	border-radius: 14px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	transition: transform 0.15s, box-shadow 0.15s;
}

.jsm-shop-card:hover {
	transform: translateY(-3px);
	box-shadow: 0 12px 28px rgba(0,0,0,0.08);
}

.jsm-shop-card-img {
	background: var(--jsm-bg);
	aspect-ratio: 1;
	position: relative;
	overflow: hidden;
}

.jsm-shop-card-img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.jsm-shop-card-img-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	color: var(--jsm-text-muted);
	font-size: 48px;
	opacity: 0.4;
}

.jsm-shop-card-sold-out,
.jsm-shop-card-low-stock {
	position: absolute;
	top: 10px;
	left: 10px;
	background: var(--jsm-danger);
	color: var(--jsm-white);
	padding: 3px 9px;
	border-radius: 999px;
	font-size: 10px;
	font-weight: 800;
	letter-spacing: 0.5px;
	text-transform: uppercase;
}

.jsm-shop-card-low-stock { background: #f7b500; color: var(--jsm-navy); }

.jsm-shop-card-body { padding: 12px 14px 14px; display: flex; flex-direction: column; flex: 1; }

.jsm-shop-card-sku {
	font-family: "Courier New", monospace;
	font-size: 10px;
	color: var(--jsm-text-muted);
	font-weight: 600;
	margin-bottom: 4px;
}

.jsm-shop-card-name {
	font-size: 13px;
	font-weight: 700;
	color: var(--jsm-navy);
	margin: 0 0 8px;
	line-height: 1.3;
	min-height: 34px;
}

.jsm-shop-card-price {
	margin-bottom: 10px;
}

.jsm-shop-card-price strong {
	font-size: 16px;
	font-weight: 900;
	color: var(--jsm-navy);
	letter-spacing: -0.3px;
}

.jsm-shop-card-price small {
	font-size: 11px;
	color: var(--jsm-text-muted);
	margin-left: 4px;
}

.jsm-shop-card-price-locked {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 11px;
	color: var(--jsm-text-muted);
	font-weight: 600;
}

.jsm-shop-card-btn {
	margin-top: auto;
	padding: 9px;
	border-radius: 8px;
	font-weight: 700;
	font-size: 12px;
	background: var(--jsm-lime);
	color: var(--jsm-navy);
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 5px;
	cursor: pointer;
	border: none;
	font-family: inherit;
	transition: opacity 0.15s;
}

.jsm-shop-card-btn:hover { opacity: 0.92; }

.jsm-shop-card-btn-outline {
	background: var(--jsm-white);
	color: var(--jsm-navy);
	border: 1px solid var(--jsm-navy);
}

.jsm-shop-card-btn-disabled {
	background: #eee;
	color: #999;
	cursor: not-allowed;
}

.jsm-shop-empty {
	text-align: center;
	padding: 60px 20px;
	color: var(--jsm-text-muted);
}

.jsm-shop-empty i { font-size: 48px; color: var(--jsm-border, #E5E7EB); display: block; margin-bottom: 10px; }

.jsm-shop-empty h3 { color: var(--jsm-navy, #1F2C72); margin: 0 0 4px; font-size: 16px; }

.jsm-shop-empty p { font-size: 13px; }

.jsm-shop-pagination {
	display: flex;
	gap: 4px;
	justify-content: center;
	margin-top: 30px;
}

.jsm-shop-pagination a {
	padding: 8px 14px;
	border-radius: 8px;
	background: var(--jsm-white);
	border: 1px solid var(--jsm-border);
	font-size: 13px;
	font-weight: 600;
	color: var(--jsm-navy);
	text-decoration: none;
}

.jsm-shop-pagination a:hover { background: var(--jsm-lime-soft); }

.jsm-shop-pagination a.active {
	background: var(--jsm-navy);
	color: var(--jsm-lime);
	border-color: var(--jsm-navy);
}

.jsm-shop-card:hover .jsm-shop-card-img img {
	transform: scale(1.05);
}

.jsm-shop-card-price-hint {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 10px;
	color: var(--jsm-text-muted);
	font-weight: 600;
	margin-top: 4px;
}

.jsm-shop-card-price-hint i { color: var(--jsm-navy); }

.jsm-shop-crumb a {
	color: var(--jsm-text-muted);
	text-decoration: none;
	padding: 4px 10px;
	border-radius: 6px;
	transition: background 0.15s;
	display: inline-flex;
	align-items: center;
	gap: 4px;
}

.jsm-shop-crumb a:hover { background: var(--jsm-lime-soft); color: var(--jsm-navy); }

.jsm-shop-crumb .jsm-crumb-active { color: var(--jsm-navy); font-weight: 700; }

.jsm-shop-crumb .jsm-crumb-sep { font-size: 14px; opacity: 0.5; }

@media (max-width: 720px) { .jsm-shop-cat-grid { grid-template-columns: repeat(2, 1fr); } }

@media (max-width: 480px) { .jsm-shop-cat-grid { grid-template-columns: 1fr; } }

.jsm-shop-cat-card {
	background: var(--jsm-white);
	border: 1px solid var(--jsm-border);
	border-radius: 14px;
	padding: 22px 20px;
	text-align: center;
	text-decoration: none;
	transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
}

.jsm-shop-cat-card:hover {
	transform: translateY(-3px);
	border-color: var(--jsm-lime);
	box-shadow: 0 12px 28px rgba(0,0,0,0.06);
}

.jsm-shop-cat-card-icon {
	width: 64px;
	height: 64px;
	border-radius: 16px;
	background: var(--jsm-navy);
	color: var(--jsm-lime);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 32px;
}

.jsm-shop-cat-card-name {
	font-weight: 800;
	font-size: 15px;
	color: var(--jsm-navy);
}

.jsm-shop-cat-card-desc {
	font-size: 12px;
	color: var(--jsm-text-muted);
	line-height: 1.4;
}

.jsm-shop-cat-card-meta {
	font-size: 11px;
	color: var(--jsm-navy);
	font-weight: 700;
	margin-top: 4px;
}

.jsm-shop-brand-card {
	background: var(--jsm-white);
	border: 2px solid var(--jsm-border);
	border-radius: 14px;
	padding: 16px 18px;
	display: flex; align-items: flex-start; gap: 14px;
	cursor: pointer;
	font-family: inherit;
	text-align: left;
	transition: border-color 0.15s, box-shadow 0.15s, transform 0.15s;
	width: 100%;
}

.jsm-shop-brand-card:hover { border-color: var(--jsm-lime); transform: translateY(-2px); }

.jsm-shop-brand-card-mark {
	width: 52px;
	height: 52px;
	border-radius: 12px;
	background: var(--jsm-lime);
	color: var(--jsm-navy);
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 900;
	font-size: 22px;
	flex-shrink: 0;
}

.jsm-shop-brand-card-body { flex: 1; min-width: 0; }

.jsm-shop-brand-card-name {
	font-weight: 800; font-size: 16px; color: var(--jsm-navy);
}

.jsm-shop-brand-card-desc {
	font-size: 12px;
	color: var(--jsm-text-muted);
	margin: 2px 0;
}

.jsm-shop-brand-card-meta {
	display: flex; flex-direction: column; align-items: flex-end; gap: 6px;
	flex-shrink: 0;
}

.jsm-shop-brand-card-arrow {
	font-size: 20px;
	color: var(--jsm-text-muted);
	flex-shrink: 0;
}

.jsm-shop-product-row {
	background: var(--jsm-white);
	border: 1px solid var(--jsm-border);
	border-radius: 12px;
	padding: 12px 14px;
	display: grid;
	grid-template-columns: 80px 1fr auto auto;
	gap: 14px;
	align-items: center;
	transition: border-color 0.15s, background 0.15s;
}

.jsm-shop-product-meta {
	font-size: 11px;
	color: var(--jsm-text-muted);
}

.jsm-shop-product-pack {
	display: inline-flex; align-items: center; gap: 4px;
	background: var(--jsm-bg);
	border-radius: 4px;
	padding: 2px 6px;
}

.jsm-shop-product-pack i { color: var(--jsm-navy); font-size: 12px; }

.jsm-shop-product-stock { display: inline-flex; align-items: center; gap: 4px; }

.jsm-shop-product-stock i { font-size: 12px; }

.jsm-shop-product-row-in-cart {
	border-color: var(--jsm-lime);
	background: var(--jsm-lime-soft);
}

@media (max-width: 580px) {
	.jsm-shop-product-row {
		grid-template-columns: 52px 1fr;
		grid-template-rows: auto auto;
		row-gap: 8px;
	}
	.jsm-shop-product-price { grid-column: 1 / -1; }
	.jsm-shop-product-qty { grid-column: 1 / -1; justify-self: stretch; }
}

.jsm-shop-product-thumb {
	width: 80px;
	height: 80px;
	border-radius: 8px;
	overflow: hidden;
	background: var(--jsm-bg);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--jsm-text-muted);
	font-size: 32px;
}

@media (max-width: 580px) {
	.jsm-shop-product-thumb { width: 64px; height: 64px; font-size: 26px; }
}

.jsm-shop-product-thumb img { width: 100%; height: 100%; object-fit: cover; }

.jsm-shop-product-info { min-width: 0; }

.jsm-shop-product-sku {
	font-family: "Courier New", monospace;
	font-size: 10px;
	color: var(--jsm-text-muted);
	font-weight: 600;
}

.jsm-shop-product-name {
	font-weight: 700;
	font-size: 14px;
	color: var(--jsm-navy);
	margin: 2px 0;
}

.jsm-shop-product-price {
	text-align: right;
	flex-shrink: 0;
}

.jsm-shop-product-price strong {
	font-size: 14px;
	font-weight: 800;
	color: var(--jsm-navy);
	display: block;
}

.jsm-shop-product-price small {
	font-size: 10px;
	color: var(--jsm-text-muted);
}

.jsm-shop-product-qty {
	display: flex;
	align-items: center;
	gap: 4px;
	border: 1px solid var(--jsm-border);
	border-radius: 8px;
	padding: 2px;
	background: var(--jsm-white);
}

.jsm-shop-product-qty .jsm-qty-input { width: 50px; }

.jsm-shop-product-qty-disabled {
	font-size: 11px;
	color: var(--jsm-danger);
	font-weight: 700;
	padding: 6px 10px;
}

@media (max-width: 900px) { .jsm-shop-cat-pills { grid-template-columns: repeat(3, 1fr); } }

@media (max-width: 500px) { .jsm-shop-cat-pills { grid-template-columns: repeat(2, 1fr); } }

.jsm-shop-cat-pill {
	background: var(--jsm-white);
	border: 2px solid var(--jsm-border);
	border-radius: 14px;
	padding: 14px 10px;
	text-align: center;
	cursor: pointer;
	transition: all 0.15s;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	font-family: inherit;
}

.jsm-shop-cat-pill:hover { border-color: var(--jsm-lime); transform: translateY(-2px); }

.jsm-shop-cat-pill.is-active {
	border-color: var(--jsm-navy);
	background: linear-gradient(180deg, rgba(31,44,114,0.06), white);
	box-shadow: 0 8px 22px rgba(31,44,114,0.12);
}

.jsm-shop-cat-pill-name { font-weight: 800; font-size: 14px; color: var(--jsm-navy); }

.jsm-shop-cat-pill-count { font-size: 11px; color: var(--jsm-text-muted); font-weight: 600; }

.jsm-shop-empty-hint {
	max-width: 1100px;
	margin: 0 auto;
	background: white;
	border: 2px dashed var(--jsm-border);
	border-radius: 14px;
	padding: 40px 20px;
	text-align: center;
	color: var(--jsm-text-muted);
}

.jsm-shop-empty-hint i { font-size: 40px; color: var(--jsm-lime); margin-bottom: 10px; display: block; }

.jsm-shop-empty-hint-title { font-weight: 700; color: var(--jsm-navy); font-size: 15px; }

.jsm-shop-empty-hint-sub { font-size: 12px; margin-top: 4px; }

.jsm-shop-brand-section { max-width: 1100px; margin: 0 auto; animation: jsm-fadein 0.25s; }

.jsm-shop-brand-section-head {
	display: flex; align-items: center; justify-content: space-between;
	margin-bottom: 14px; gap: 12px;
}

.jsm-shop-brand-section-head h2 { color: var(--jsm-navy); margin: 0; font-size: 18px; }

.jsm-shop-brand-section-head p { color: var(--jsm-text-muted); font-size: 13px; margin: 4px 0 0; }

.jsm-shop-brand-section-pill {
	background: var(--jsm-lime-soft); color: var(--jsm-navy);
	padding: 4px 10px; border-radius: 6px; font-size: 12px; font-weight: 700;
	flex-shrink: 0;
}

.jsm-shop-brand-cards {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 14px;
}

@media (max-width: 780px) { .jsm-shop-brand-cards { grid-template-columns: 1fr; } }

.jsm-shop-brand-card.is-active {
	border-color: var(--jsm-navy);
	box-shadow: 0 12px 28px rgba(31,44,114,0.12);
	background: linear-gradient(180deg, rgba(31,44,114,0.04), white);
}

.jsm-shop-brand-card-image {
	width: 110px; height: 80px;
	border-radius: 10px;
	overflow: hidden;
	flex-shrink: 0;
	background: var(--jsm-bg);
	display: flex; align-items: center; justify-content: center;
}

.jsm-shop-brand-card-image img { width: 100%; height: 100%; object-fit: cover; }

.jsm-shop-brand-card-image-fallback {
	font-weight: 900; font-size: 32px; color: var(--jsm-navy);
}

@media (max-width: 480px) {
	.jsm-shop-brand-card-image { width: 80px; height: 60px; }
}

.jsm-shop-brand-card-body-info { flex: 1; min-width: 0; }

.jsm-shop-brand-card-title {
	display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}

.jsm-shop-brand-card-badge {
	padding: 2px 8px; border-radius: 4px;
	font-size: 10px; font-weight: 700; letter-spacing: 0.5px;
}

.jsm-shop-brand-card-tagline {
	font-size: 13px; color: var(--jsm-text-muted); margin-top: 4px; line-height: 1.4;
}

.jsm-shop-brand-card-specs {
	display: flex; flex-wrap: wrap; gap: 6px;
	margin-top: 10px;
}

.jsm-shop-brand-card-spec {
	background: var(--jsm-bg);
	border: 1px solid var(--jsm-border);
	border-radius: 6px;
	padding: 4px 10px;
	font-size: 11px;
	color: #374151;
	display: inline-flex; align-items: center; gap: 4px;
}

.jsm-shop-brand-card-spec i { color: var(--jsm-navy); font-size: 13px; }

.jsm-shop-brand-card-tipe-count {
	background: var(--jsm-lime-soft); color: var(--jsm-navy);
	padding: 3px 10px; border-radius: 6px;
	font-size: 11px; font-weight: 700;
}

.jsm-shop-brand-card-cta {
	font-size: 12px; font-weight: 700; color: var(--jsm-navy);
	display: inline-flex; align-items: center; gap: 2px;
	background: var(--jsm-bg);
	padding: 4px 8px; border-radius: 6px;
	white-space: nowrap;
}

.jsm-shop-brand-card.is-active .jsm-shop-brand-card-cta {
	background: var(--jsm-lime); color: var(--jsm-navy);
}

.jsm-shop-products-panel[hidden] { display: none; }

.jsm-shop-products-panel-head {
	padding: 12px 18px;
	background: linear-gradient(90deg, var(--jsm-navy), #2a3a8a);
	color: white;
	display: flex; align-items: center; justify-content: space-between;
}

.jsm-shop-products-panel-head h3 { margin: 0; font-size: 15px; color: white; font-weight: 700; }

.jsm-shop-products-panel-close {
	background: rgba(255,255,255,0.15);
	color: white; border: 0; border-radius: 6px;
	width: 30px; height: 30px;
	display: flex; align-items: center; justify-content: center;
	cursor: pointer; font-size: 18px;
	transition: background 0.15s;
}

.jsm-shop-products-panel-close:hover { background: rgba(255,255,255,0.3); }

.jsm-shop-products-panel .jsm-shop-product-list {
	max-width: none;
	gap: 8px;
	padding: 14px 18px 18px;
	background: #fafbfc;
}

@media (max-width: 580px) {
	.jsm-shop-brand-card { padding: 12px 12px; gap: 10px; }
	.jsm-shop-products-panel .jsm-shop-product-list { padding: 10px 12px 14px; }
	.jsm-shop-products-panel-head { padding: 10px 14px; }
	.jsm-shop-products-panel-head h3 { font-size: 13px; }
}

.jsm-shop-acc-cat {
	background: var(--jsm-white);
	border: 1px solid var(--jsm-border);
	border-radius: 14px;
	overflow: hidden;
	transition: border-color 0.15s, box-shadow 0.15s;
}

.jsm-shop-acc-cat.is-open {
	border-color: var(--jsm-navy);
	box-shadow: 0 8px 22px rgba(31,44,114,0.08);
}

.jsm-shop-acc-cat-head {
	width: 100%;
	background: transparent;
	border: 0;
	padding: 14px 18px;
	display: flex;
	align-items: center;
	gap: 14px;
	cursor: pointer;
	text-align: left;
	font-family: inherit;
}

.jsm-shop-acc-cat.is-open .jsm-shop-acc-cat-head {
	background: linear-gradient(180deg, rgba(31,44,114,0.04), transparent);
}

.jsm-shop-acc-cat-icon {
	width: 44px;
	height: 44px;
	border-radius: 11px;
	background: var(--jsm-navy);
	color: var(--jsm-lime);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 22px;
	flex-shrink: 0;
}

.jsm-shop-acc-cat-info { flex: 1; min-width: 0; display: flex; flex-direction: column; }

.jsm-shop-acc-cat-name {
	font-weight: 800;
	font-size: 15px;
	color: var(--jsm-navy);
}

.jsm-shop-acc-cat-desc {
	font-size: 12px;
	color: var(--jsm-text-muted);
	margin-top: 2px;
}

.jsm-shop-acc-cat-count {
	font-size: 11px;
	font-weight: 700;
	color: var(--jsm-navy);
	background: var(--jsm-lime-soft);
	padding: 3px 10px;
	border-radius: 6px;
	flex-shrink: 0;
}

.jsm-shop-acc-chevron {
	font-size: 20px;
	color: var(--jsm-text-muted);
	transition: transform 0.2s;
	flex-shrink: 0;
}

.jsm-shop-acc-cat.is-open > .jsm-shop-acc-cat-head .jsm-shop-acc-chevron,
.jsm-shop-acc-brand.is-open > .jsm-shop-acc-brand-head .jsm-shop-acc-chevron {
	transform: rotate(180deg);
	color: var(--jsm-navy);
}

.jsm-shop-acc-cat-body {
	padding: 0 14px 14px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	background: #fafbfc;
	border-top: 1px solid var(--jsm-border);
	padding-top: 12px;
}

.jsm-shop-acc-cat-body[hidden] { display: none; }

.jsm-shop-acc-brand {
	background: var(--jsm-white);
	border: 1px solid var(--jsm-border);
	border-radius: 10px;
	overflow: hidden;
}

.jsm-shop-acc-brand.is-open { border-color: var(--jsm-lime); }

.jsm-shop-acc-brand-head {
	width: 100%;
	background: transparent;
	border: 0;
	padding: 12px 14px;
	display: flex;
	align-items: center;
	gap: 12px;
	cursor: pointer;
	text-align: left;
	font-family: inherit;
}

.jsm-shop-acc-brand-mark {
	width: 36px;
	height: 36px;
	border-radius: 9px;
	background: var(--jsm-lime);
	color: var(--jsm-navy);
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 900;
	font-size: 16px;
	flex-shrink: 0;
}

.jsm-shop-acc-brand-info { flex: 1; min-width: 0; display: flex; flex-direction: column; }

.jsm-shop-acc-brand-name {
	font-weight: 700;
	font-size: 14px;
	color: var(--jsm-navy);
}

.jsm-shop-acc-brand-desc {
	font-size: 11px;
	color: var(--jsm-text-muted);
	margin-top: 1px;
}

.jsm-shop-acc-brand-count {
	font-size: 11px;
	font-weight: 700;
	color: var(--jsm-text-muted);
	flex-shrink: 0;
}

.jsm-shop-acc-brand-body {
	padding: 10px 12px 12px;
	border-top: 1px solid var(--jsm-border);
	background: #fafbfc;
}

.jsm-shop-acc-brand-body[hidden] { display: none; }

.jsm-shop-acc-brand-body .jsm-shop-product-list {
	max-width: none;
	gap: 8px;
}

@media (max-width: 580px) {
	.jsm-shop-acc-cat-head { padding: 12px 12px; gap: 10px; }
	.jsm-shop-acc-cat-icon { width: 38px; height: 38px; font-size: 18px; }
	.jsm-shop-acc-cat-desc { display: none; }
	.jsm-shop-acc-brand-desc { display: none; }
	.jsm-shop-acc-cat-body { padding: 10px 8px; }
}

@media (max-width: 380px) {
	/* Cat pills 2 kolom di layar super sempit (di bawah iPhone SE) */
	.jsm-shop-cat-pills { grid-template-columns: repeat(2, 1fr); }
	.jsm-shop-brand-card-image { width: 60px; height: 50px; }
	.jsm-shop-brand-card-specs { display: none; } /* hide spec chips di layar mini, biar gak terlalu padat */
}

.jsm-app-body .jsm-shop-brand-card:hover {
	border-color: #C8F133 !important;
	box-shadow: 0 8px 22px rgba(31,44,114,0.10) !important;
	transform: translateY(-2px);
}

.jsm-app-body .jsm-shop-brand-card.is-active {
	border-color: #1F2C72 !important;
	background: linear-gradient(180deg, rgba(31,44,114,0.04), #FFFFFF) !important;
	box-shadow: 0 8px 22px rgba(31,44,114,0.14) !important;
}

.jsm-app-body .jsm-shop-cat-pill:hover {
	border-color: #C8F133 !important;
}

.jsm-app-body .jsm-shop-cat-pill.is-active {
	border-color: #1F2C72 !important;
	background: linear-gradient(180deg, rgba(31,44,114,0.06), #FFFFFF) !important;
}

.jsm-app-body .jsm-shop-cat-pill-name { color: #1F2C72 !important; }

.jsm-app-body .jsm-shop-cat-pill-count { color: #6B7280 !important; }

.jsm-app-body .jsm-shop-empty-hint i { color: #C8F133 !important; }

.jsm-app-body .jsm-shop-empty-hint-title { color: #1F2C72 !important; }

.jsm-cat2-head { padding: 20px 16px 12px; background: linear-gradient(135deg, #1F2C72 0%, #2d3b8e 100%); color: white; }

.jsm-cat2-head h1 { font-size: 16px; line-height: 1.2; }

.jsm-cat2-head p { font-size: 11px; opacity: .75; }

.jsm-cat2-searchbar-input { position: relative; }

.jsm-cat2-searchbar-input input {
	width: 100%; padding: 12px 40px 12px 42px;
	border: 2px solid #e5e7eb; border-radius: 999px;
	font-size: 14px; background: #f9fafb;
	-webkit-appearance: none;
}

.jsm-cat2-searchbar-input input:focus {
	outline: 0; border-color: #C8F133;
	box-shadow: 0 0 0 4px rgba(200,241,51,.2);
	background: white;
}

.jsm-cat2-searchbar-input::before {
	font-size: 14px; left: 14px;
}

.jsm-cat2-search-clear {
	position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
	background: #e5e7eb; border: 0; width: 28px; height: 28px; border-radius: 50%;
	cursor: pointer; font-size: 12px; color: #6b7280;
}

.jsm-cat2-catscroll-inner {
	display: flex; gap: 6px; overflow-x: auto; padding: 4px 12px;
	scrollbar-width: none; -webkit-overflow-scrolling: touch;
}

.jsm-cat2-catscroll-inner::-webkit-scrollbar { display: none; }

.jsm-cat2-pill {
	flex-shrink: 0; display: inline-flex; align-items: center; gap: 6px;
	padding: 10px 16px; border-radius: 999px; background: #f1f5f9;
	border: 2px solid transparent; color: #4b5563; font-size: 13px; font-weight: 700;
	cursor: pointer; white-space: nowrap; transition: all .15s;
	font-family: inherit;
}

.jsm-cat2-pill:hover { background: #e5e7eb; }

.jsm-cat2-pill.is-active { background: #1F2C72; color: white; }

.jsm-cat2-pill .count { background: rgba(0,0,0,0.1); padding: 1px 7px; border-radius: 999px; font-size: 10px; font-weight: 700; }

.jsm-cat2-pill.is-active .count { background: #C8F133; color: #1F2C72; }

.jsm-cat2-pill .ic { font-size: 16px; line-height: 1; }

.jsm-cat2-subcat-trigger, .jsm-cat2-filter-trigger {
	background: #f1f5f9; border: 0; padding: 10px 14px; border-radius: 8px;
	font-size: 13px; font-weight: 700; color: #1F2C72; cursor: pointer;
	display: inline-flex; align-items: center; gap: 6px; font-family: inherit;
}

.jsm-cat2-subcat-trigger { flex: 1; justify-content: space-between; }

.jsm-cat2-subcat-trigger .arrow { color: #9ca3af; }

.jsm-cat2-filter-trigger {
	padding: 8px 12px;
	font-size: 12.5px;
}

.jsm-cat2-filter-trigger .badge-num {
	background: #dc2626; color: white; font-size: 10px;
	padding: 1px 6px; border-radius: 999px; font-weight: 800;
}

.jsm-cat2-active-row::-webkit-scrollbar { display: none; }

.jsm-cat2-active-chip {
	flex-shrink: 0; background: #eef2ff; color: #1F2C72;
	padding: 5px 10px; border-radius: 999px; font-size: 11px; font-weight: 600;
	display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
}

.jsm-cat2-active-chip .x { font-weight: 900; color: #9ca3af; cursor: pointer; }

.jsm-cat2-active-clear {
	flex-shrink: 0; background: transparent; border: 0; color: #dc2626;
	font-size: 11px; padding: 5px 8px; cursor: pointer; text-decoration: underline;
	font-family: inherit;
}

.jsm-cat2-resultbar .lab strong { color: #1F2C72; font-weight: 800; }

.jsm-cat2-sort-btn { background: transparent; border: 0; color: #1F2C72; font-weight: 700; font-size: 12px; cursor: pointer; font-family: inherit; }

.jsm-cat2-loading {
	grid-column: 1 / -1; text-align: center; padding: 40px; color: #9ca3af; font-size: 14px;
}

.jsm-cat2-empty {
	grid-column: 1 / -1; text-align: center; padding: 60px 20px; color: #6b7280;
}

.jsm-cat2-empty-ic { font-size: 50px; margin-bottom: 10px; opacity: .5; }

.jsm-cat2-empty h3 { font-size: 16px; color: #1F2C72; margin-bottom: 6px; }

.jsm-cat2-empty p { font-size: 13px; }

.jsm-cat2-empty-inline { padding: 30px 16px; text-align: center; color: #9ca3af; font-size: 13px; }

.jsm-cat2-card.is-incart {
	border-color: #10b981 !important;
	box-shadow: 0 0 0 1.5px #10b981, 0 4px 12px rgba(16,185,129,0.12) !important;
}

.jsm-cat2-card-thumb {
	aspect-ratio: 1/1; background: #f1f5f9;
	display: grid; place-items: center;
	position: relative; font-size: 40px; color: #cbd5e1; overflow: hidden;
}

.jsm-cat2-card-thumb img {
	width: 100% !important; height: 100% !important;
	object-fit: cover !important;
	display: block;
}

.jsm-cat2-card-thumb-fallback {
	position: absolute; inset: 0;
	display: grid; place-items: center;
	font-size: 38px; color: #cbd5e1;
}

.jsm-cat2-card-brand {
	position: absolute; top: 6px; left: 6px;
	background: rgba(31,44,114,.85); color: white;
	padding: 2px 7px; border-radius: 4px;
	font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em;
}

.jsm-cat2-card-stock {
	font-size: 8.5px;
	padding: 2px 6px;
	top: 6px; right: 6px;
}

.jsm-cat2-card-stock.low { color: #b45309 !important; }

.jsm-cat2-card-stock.out { color: #dc2626 !important; }

.jsm-cat2-card-incart-badge {
	width: 24px; height: 24px;
	font-size: 12px;
	bottom: 6px; right: 6px;
}

.jsm-cat2-card-body { padding: 9px 11px 11px; }

.jsm-cat2-card-sku { margin-bottom: 3px; }

.jsm-cat2-card-name { min-height: 30px; -webkit-line-clamp: 2; }

.jsm-cat2-card-price {
	margin-bottom: 10px !important;
}

.jsm-cat2-card-price small {
	font-size: 10px !important;
	color: #94a3b8 !important;
	font-weight: 500 !important;
}

.jsm-cat2-card-actions { display: flex; gap: 4px; margin-top: auto; }

.jsm-cat2-card-add {
	min-height: 32px !important;
	height: 32px !important;
	padding: 0 8px !important;
	font-size: 12px !important;
	font-weight: 700 !important;
	border-radius: 4px !important;
	background: white !important;
	color: #ee4d2d !important;
	border: 1px solid #ee4d2d !important;
	width: 100% !important;
}

.jsm-cat2-card-add:hover:not(:disabled) { background: #b5e02a; }

.jsm-cat2-card-add:disabled { background: #e5e7eb; color: #9ca3af; cursor: not-allowed; }

.jsm-cat2-card-qty { min-height: 36px; border-radius: 7px; }

.jsm-cat2-card-qty button {
	color: #1F2C72 !important;
}

.jsm-cat2-card-qty input {
	color: #1F2C72 !important;
}

.jsm-cat2-card-qty input::-webkit-outer-spin-button,
.jsm-cat2-card-qty input::-webkit-inner-spin-button {
	-webkit-appearance: none !important;
	margin: 0 !important;
}

.jsm-cat2-loadmore-btn {
	background: white; border: 2px solid #1F2C72; color: #1F2C72;
	padding: 12px 24px; border-radius: 8px;
	font-weight: 800; cursor: pointer; font-family: inherit; font-size: 13px;
}

.jsm-cat2-loadmore-btn:hover { background: #1F2C72; color: white; }

.jsm-cat2-sheet {
	position: fixed; bottom: 0; left: 0; right: 0;
	background: white; border-radius: 20px 20px 0 0;
	z-index: 2147483000; max-height: 80vh;
	display: flex; flex-direction: column;
	transform: translateY(100%); transition: transform .25s ease;
	box-shadow: 0 -8px 30px rgba(0,0,0,.15);
}

.jsm-cat2-sheet.is-open { transform: translateY(0); }

.jsm-cat2-sheet-handle {
	width: 40px; height: 4px; background: #e5e7eb;
	border-radius: 2px; margin: 10px auto 0;
}

.jsm-cat2-sheet-head {
	padding: 10px 16px 14px; border-bottom: 1px solid #e5e7eb;
	display: flex; justify-content: space-between; align-items: center;
}

.jsm-cat2-sheet-head h3 { font-size: 16px; font-weight: 800; color: #1F2C72; }

.jsm-cat2-sheet-close {
	background: #f1f5f9; border: 0; width: 32px; height: 32px;
	border-radius: 50%; cursor: pointer; font-size: 16px; color: #4b5563;
	font-family: inherit;
}

.jsm-cat2-sheet-body { padding: 14px 16px 30px; overflow-y: auto; flex: 1; }

.jsm-cat2-sheet-item.is-active { color: #1F2C72; font-weight: 800; }

.jsm-cat2-sheet-item.is-active::after { content: '✓'; color: #10b981; font-weight: 900; margin-left: 8px; }

.jsm-cat2-sheet-item .badge { font-size: 11px; color: #9ca3af; font-weight: 600; }

.jsm-cat2-fsec h4 {
	font-size: 12px; font-weight: 800; color: #1F2C72;
	text-transform: uppercase; letter-spacing: .04em; margin-bottom: 8px;
}

.jsm-cat2-chips { display: flex; flex-wrap: wrap; gap: 6px; }

.jsm-cat2-chip {
	padding: 8px 14px; border-radius: 999px;
	background: #f1f5f9; color: #374151; border: 1px solid transparent;
	font-size: 13px; font-weight: 600; cursor: pointer; min-height: 36px;
	display: inline-flex; align-items: center; font-family: inherit;
}

.jsm-cat2-chip.is-active { background: #C8F133; color: #1F2C72; border-color: #C8F133; font-weight: 800; }

.jsm-cat2-range { display: flex; gap: 8px; }

.jsm-cat2-range input {
	flex: 1; padding: 10px 12px; border: 1px solid #e5e7eb;
	border-radius: 8px; font-size: 13px;
}

.jsm-cat2-toggle-row {
	display: flex; justify-content: space-between; align-items: center; padding: 12px 0;
}

.jsm-cat2-toggle-row .lab { font-size: 14px; color: #374151; font-weight: 600; }

.jsm-cat2-switch {
	width: 42px; height: 24px; background: #e5e7eb;
	border-radius: 999px; position: relative; cursor: pointer;
	transition: background .15s; border: 0;
}

.jsm-cat2-switch.is-on { background: #10b981; }

.jsm-cat2-switch::before {
	content: ''; position: absolute; top: 2px; left: 2px;
	width: 20px; height: 20px; background: white; border-radius: 50%;
	transition: transform .15s; box-shadow: 0 1px 3px rgba(0,0,0,.2);
}

.jsm-cat2-switch.is-on::before { transform: translateX(18px); }

.jsm-cat2-sortitem {
	padding: 14px 4px; border-bottom: 1px solid #f1f5f9;
	cursor: pointer; font-size: 14px; color: #374151;
	display: flex; justify-content: space-between; align-items: center;
}

.jsm-cat2-sortitem.is-active { color: #1F2C72; font-weight: 800; }

.jsm-cat2-sortitem.is-active::after { content: '✓'; color: #10b981; font-weight: 900; }

.jsm-cat2-sheet-reset {
	flex: 1; padding: 12px; border: 2px solid #e5e7eb;
	background: white; color: #374151; border-radius: 8px;
	font-weight: 700; font-size: 14px; cursor: pointer; font-family: inherit;
}

.jsm-cat2-sheet-apply {
	flex: 2; padding: 12px; background: #1F2C72; color: white;
	border: 0; border-radius: 8px; font-weight: 800; font-size: 14px;
	cursor: pointer; font-family: inherit;
}

.jsm-cat2-howto-head { font-size: 13px; }

.jsm-cat2-howto-toggle {
	font-size: 18px; color: #92400e; transition: transform .2s;
}

.jsm-cat2-howto.is-open .jsm-cat2-howto-toggle { transform: rotate(180deg); }

.jsm-cat2-howto-body { margin-top: 10px; display: none; }

.jsm-cat2-howto.is-open .jsm-cat2-howto-body { display: block; }

.jsm-cat2-howto ol { list-style: none; padding: 0; margin: 0; }

.jsm-cat2-howto ol li {
	padding: 7px 0 7px 32px;
	line-height: 1.5;
}

.jsm-cat2-howto ol li .step-num {
	width: 22px; height: 22px; font-size: 10px; top: 5px;
}

.jsm-cat2-howto ol li strong { color: #92400e; }

.jsm-cat2-howto code {
	background: rgba(31,44,114,.1); color: #1F2C72;
	padding: 1px 5px; border-radius: 3px; font-size: 11px;
}

.jsm-cat2-howto-tip { padding: 8px 12px; line-height: 1.45; }

.jsm-cat2-howto-tip strong { color: #1F2C72; }

.jsm-cat2-sec-label { font-size: 10px; margin-bottom: 8px; }

.jsm-cat2-sec-label .num { width: 18px; height: 18px; font-size: 10px; }

.jsm-cat2-tile {
	display: flex; align-items: center; gap: 10px;
	padding: 12px 14px; border-radius: 10px;
	background: #f1f5f9; border: 2px solid transparent;
	cursor: pointer; font-weight: 700;
	color: #374151; text-align: left;
	transition: all .15s; font-family: inherit;
	min-height: 56px;
}

.jsm-cat2-tile:hover { background: #e5e7eb; }

.jsm-cat2-tile.is-active {
	background: #1F2C72; color: white; border-color: #1F2C72;
}

.jsm-cat2-tile .ic { font-size: 18px; }

.jsm-cat2-tile .info { flex: 1; min-width: 0; }

.jsm-cat2-tile .lab { font-size: 12.5px; font-weight: 700; }

.jsm-cat2-tile .count { font-size: 9.5px; margin-top: 1px; }

.jsm-cat2-tile.is-active .count { color: rgba(200,241,51,.7); }

.jsm-cat2-subcat-list {
	display: flex; flex-wrap: wrap;
	gap: 4px 4px; align-items: center;
}

.jsm-cat2-subcat-link {
	transition: background .15s ease, color .15s ease;
}

.jsm-cat2-subcat-link:hover {
	background: #f1f5f9; color: #1F2C72;
}

.jsm-cat2-subcat-link.is-active {
	background: #C8F133; color: #1F2C72; font-weight: 700;
}

.jsm-cat2-subcat-link .num { font-size: 9.5px; }

.jsm-cat2-subcat-link.is-active .num { color: #1F2C72; opacity: .6; }

.jsm-cat2-subcat-divider { font-size: 12px; }

.jsm-cat2-subcat-empty {
	font-size: 12px; color: #9ca3af; font-style: italic;
}

.jsm-cat2-brand-pill {
	padding: 8px 12px;
	font-size: 12px;
}

.jsm-cat2-brand-pill:hover { background: #c7d2fe; }

.jsm-cat2-card-qty button:active {
	background: #a7f3d0 !important;
	transform: scale(0.92);
}

.jsm-cat2-card-add:active {
	transform: scale(0.97);
}

.jsm-cat2-card.is-incart .jsm-cat2-card-qty {
	background: #f0fdf4;
	box-shadow: inset 0 0 0 1px #86efac;
}

.jsm-cat2-card.is-incart .jsm-cat2-card-qty button { color: #166534; }

.jsm-cat2-card.is-incart .jsm-cat2-card-qty input { color: #166534; }

.jsm-cat2-card { border-radius: 10px; }

@keyframes jsm-cat2-stepper-in {
	from { transform: scale(0.92); opacity: 0; }
	to { transform: scale(1); opacity: 1; }
}

@keyframes jsm-cat2-pulse {
	0% { box-shadow: 0 0 0 0 rgba(16,185,129,.5); }
	50% { box-shadow: 0 0 0 6px rgba(16,185,129,.15); }
	100% { box-shadow: 0 0 0 2px #10b981; }
}

.jsm-cat2-howto:not(.is-open) {
	padding-bottom: 10px;
	border-bottom-width: 1px;
}

.jsm-cat2-tile:active { transform: scale(0.97); }

.jsm-cat2-card-qty button:hover {
	background: #f1f5f9 !important;
}

@media (min-width: 1024px) {
	.jsm-cat2-card-actions { min-height: 40px; }
}

@media (min-width: 1024px) {
	.jsm-cat2-card-name { font-size: 13.5px !important; min-height: 36px !important; }
	.jsm-cat2-card-price { font-size: 16px !important; }
	.jsm-cat2-card-sku { font-size: 10.5px !important; }
}

.jsm-cat2-card:hover {
	border-color: #d1d5db !important;
	box-shadow: 0 4px 12px rgba(0,0,0,0.08) !important;
	transform: translateY(-1px);
}

@media (min-width: 1024px) {
	.jsm-cat2-card-sku { display: block !important; }
}

.jsm-cat2-card-add:hover {
	background: #b5e02a !important;
	border-color: #b5e02a !important;
}

@media (min-width: 720px) and (max-width: 1023px) {
	.jsm-cat2-grid {
		grid-template-columns: repeat(3, 1fr) !important;
		gap: 8px !important;
		padding: 12px 0 !important;
	}
}

@media (min-width: 1024px) and (max-width: 1439px) {
	.jsm-cat2-grid {
		grid-template-columns: repeat(5, 1fr) !important;
		gap: 10px !important;
		padding: 16px 0 !important;
	}
}

@media (min-width: 1440px) {
	.jsm-cat2-grid {
		grid-template-columns: repeat(6, 1fr) !important;
		gap: 12px !important;
		padding: 18px 0 !important;
	}
}

.jsm-cat2-page-btn {
	min-width: 36px;
	height: 36px;
	padding: 0 12px;
	border: 1px solid #e5e7eb;
	background: white;
	color: #1f2937;
	border-radius: 6px;
	font-weight: 600;
	font-size: 13px;
	cursor: pointer;
	font-family: inherit;
	transition: all .15s ease;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.jsm-cat2-page-btn:hover:not(:disabled) {
	border-color: #1F2C72;
	color: #1F2C72;
}

.jsm-cat2-page-btn.is-active {
	background: #1F2C72;
	color: white;
	border-color: #1F2C72;
}

.jsm-cat2-page-btn:disabled {
	opacity: 0.4;
	cursor: not-allowed;
}

.jsm-cat2-page-ellipsis {
	color: #9ca3af;
	font-size: 14px;
	padding: 0 4px;
}

.jsm-cat2-infinite-loader::before {
	content: '';
	display: inline-block;
	width: 16px; height: 16px;
	border: 2px solid #e5e7eb;
	border-top-color: #1F2C72;
	border-radius: 50%;
	animation: jsm-spin 0.6s linear infinite;
	vertical-align: middle;
	margin-right: 8px;
}

@media (min-width: 720px) { body.jsm-app-shop-body { padding-bottom: 0; } }
