
    .shop-page {
        max-width: 1280px;
        width: 100%;
        margin: 0 auto;
        padding: 0 16px 60px;
    }

    .shop-search-bar {
        display: flex;
        gap: 10px;
        align-items: center;
        margin-bottom: 24px;
        background: var(--surface);
        border: 1px solid var(--border);
        border-radius: var(--radius-md);
        padding: 0 14px;
        box-shadow: var(--shadow-card);
    }

    .shop-search-bar svg {
        width: 16px;
        height: 16px;
        color: var(--text-muted);
        flex-shrink: 0;
    }

    .shop-search-bar input {
        flex: 1;
        border: none;
        outline: none;
        background: none;
        font-family: var(--font-body);
        font-size: 14px;
        color: var(--text);
        padding: 13px 0;
    }

    .shop-search-bar input::placeholder {
        color: var(--text-faint);
    }

    .shop-search-bar button {
        background: var(--accent);
        color: #fff;
        border: none;
        border-radius: var(--radius-sm);
        font-family: var(--font-body);
        font-size: 13px;
        font-weight: 500;
        padding: 7px 16px;
        cursor: pointer;
        transition: opacity var(--transition);
        white-space: nowrap;
    }

    .shop-search-bar button:hover {
        opacity: .85;
    }

    .shop-grid {
        display: grid;
        grid-template-columns: 220px 1fr;
        gap: 24px;
        align-items: start;
    }

    .shop-sidebar {
        position: sticky;
        top: calc(var(--nav-h) + 16px);
        background: var(--surface);
        border: 1px solid var(--border);
        border-radius: var(--radius-lg);
        padding: 20px;
        box-shadow: var(--shadow-card);
    }

    .sidebar-title {
        font-family: var(--font-display);
        font-size: 17px;
        font-weight: 600;
        color: var(--text);
        margin-bottom: 18px;
        padding-bottom: 12px;
        border-bottom: 1px solid var(--border);
    }

    .filter-section {
        margin-bottom: 22px;
    }

    .filter-section:last-of-type {
        margin-bottom: 0;
    }

    .filter-section-label {
        font-size: 11px;
        font-weight: 600;
        letter-spacing: .08em;
        text-transform: uppercase;
        color: var(--text-faint);
        margin-bottom: 8px;
        display: block;
    }

    /* ✅ Subtle "back" hint when categories are scoped to a top category */
    .filter-section-sublabel {
        font-size: 11px;
        color: var(--text-faint);
        margin-bottom: 6px;
        display: block;
        font-style: italic;
    }

    .filter-link {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 7px 10px;
        border-radius: var(--radius-sm);
        font-size: 13.5px;
        color: var(--text-muted);
        text-decoration: none;
        transition: background var(--transition), color var(--transition);
        cursor: pointer;
    }

    .filter-link:hover {
        background: var(--accent-light);
        color: var(--text);
    }

    .filter-link.active {
        background: var(--accent);
        color: #fff;
        font-weight: 500;
    }

    .filter-link .count-pill {
        font-size: 11px;
        opacity: .6;
    }

    .filter-radio {
        display: flex;
        flex-direction: column;
        gap: 2px;
    }

    .filter-radio label {
        display: flex;
        align-items: center;
        gap: 9px;
        padding: 7px 10px;
        border-radius: var(--radius-sm);
        font-size: 13.5px;
        color: var(--text-muted);
        cursor: pointer;
        transition: background var(--transition);
    }

    .filter-radio label:hover {
        background: var(--accent-light);
        color: var(--text);
    }

    .filter-radio input[type="radio"] {
        accent-color: var(--accent);
        cursor: pointer;
    }

    .price-inputs {
        display: flex;
        gap: 8px;
        align-items: center;
    }

    .price-inputs input {
        flex: 1;
        padding: 8px 10px;
        border: 1px solid var(--border-strong);
        border-radius: var(--radius-sm);
        font-family: var(--font-body);
        font-size: 13px;
        color: var(--text);
        background: var(--accent-light);
        outline: none;
        transition: border-color var(--transition);
    }

    .price-inputs input:focus {
        border-color: var(--accent);
    }

    .price-sep {
        font-size: 13px;
        color: var(--text-faint);
        flex-shrink: 0;
    }

    .sidebar-actions {
        display: flex;
        flex-direction: column;
        gap: 8px;
        margin-top: 20px;
        padding-top: 16px;
        border-top: 1px solid var(--border);
    }

    .btn-apply-filter {
        width: 100%;
        padding: 10px;
        background: var(--accent);
        color: #fff;
        border: none;
        border-radius: var(--radius-sm);
        font-family: var(--font-body);
        font-size: 13.5px;
        font-weight: 500;
        cursor: pointer;
        transition: opacity var(--transition);
    }

    .btn-apply-filter:hover {
        opacity: .85;
    }

    .btn-reset-filter {
        width: 100%;
        padding: 8px;
        background: none;
        color: var(--text-muted);
        border: 1px solid var(--border-strong);
        border-radius: var(--radius-sm);
        font-family: var(--font-body);
        font-size: 13px;
        cursor: pointer;
        transition: color var(--transition), border-color var(--transition);
    }

    .btn-reset-filter:hover {
        color: var(--text);
        border-color: var(--accent);
    }

    .shop-main {
        min-width: 0;
        width: 100%;
        overflow: hidden;
    }

    .shop-grid>* {
        min-width: 0;
    }

    .filter-trigger {
        display: none;
        align-items: center;
        gap: 8px;
        padding: 10px 16px;
        background: var(--surface);
        border: 1px solid var(--border-strong);
        border-radius: var(--radius-md);
        font-family: var(--font-body);
        font-size: 14px;
        font-weight: 500;
        color: var(--text);
        cursor: pointer;
        box-shadow: var(--shadow-card);
        width: 100%;
        margin-bottom: 16px;
        transition: background var(--transition);
    }

    .filter-trigger:hover {
        background: var(--accent-light);
    }

    .filter-trigger svg {
        width: 16px;
        height: 16px;
    }

    .filter-trigger .filter-badge {
        margin-left: auto;
        background: var(--accent);
        color: #fff;
        border-radius: 20px;
        font-size: 11px;
        padding: 2px 7px;
        font-weight: 600;
    }

    @media (max-width: 900px) {
        .shop-grid {
            grid-template-columns: 1fr;
        }

        .shop-sidebar {
            display: none;
        }

        .filter-trigger {
            display: flex;
        }
    }

    .shop-top-bar {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 14px;
        gap: 12px;
        flex-wrap: wrap;
    }

    .shop-heading {
        font-family: var(--font-display);
        font-size: 22px;
        font-weight: 600;
        color: var(--text);
    }

    .shop-heading small {
        font-family: var(--font-body);
        font-size: 13px;
        font-weight: 400;
        color: var(--text-faint);
        margin-left: 8px;
    }

    .sort-select {
        padding: 8px 12px;
        border: 1px solid var(--border-strong);
        border-radius: var(--radius-sm);
        font-family: var(--font-body);
        font-size: 13px;
        color: var(--text);
        background: var(--surface);
        cursor: pointer;
        outline: none;
        transition: border-color var(--transition);
    }

    .sort-select:focus {
        border-color: var(--accent);
    }

    .active-tags {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
        margin-bottom: 16px;
    }

    .tag-pill {
        display: inline-flex;
        align-items: center;
        gap: 5px;
        background: var(--accent-light);
        border: 1px solid var(--border-strong);
        border-radius: 20px;
        padding: 4px 10px 4px 12px;
        font-size: 12.5px;
        color: var(--text);
        font-family: var(--font-body);
    }

    .tag-pill a {
        color: var(--text-faint);
        text-decoration: none;
        font-size: 14px;
        line-height: 1;
        transition: color var(--transition);
    }

    .tag-pill a:hover {
        color: var(--red);
    }

    .drawer-overlay {
        display: none;
        position: fixed;
        inset: 0;
        z-index: 1000;
        background: rgba(0, 0, 0, .45);
        opacity: 0;
        transition: opacity .25s ease;
    }

    .drawer-overlay.open {
        opacity: 1;
    }

    .filter-drawer {
        position: fixed;
        top: var(--nav-h);
        left: 0;
        bottom: 0;
        z-index: 1001;
        width: min(320px, 90vw);
        background: var(--surface);
        overflow-y: auto;
        transform: translateX(-100%);
        transition: transform .28s cubic-bezier(.4, 0, .2, 1);
        box-shadow: 4px 0 24px rgba(0, 0, 0, .12);
    }

    .filter-drawer.open {
        transform: translateX(0);
    }

    .drawer-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 18px 20px 14px;
        border-bottom: 1px solid var(--border);
        position: sticky;
        top: 0;
        background: var(--surface);
        z-index: 1;
    }

    .drawer-header h3 {
        font-family: var(--font-display);
        font-size: 18px;
        font-weight: 600;
    }

    .drawer-close {
        background: none;
        border: none;
        cursor: pointer;
        color: var(--text-muted);
        padding: 4px;
        display: flex;
        align-items: center;
        transition: color var(--transition);
    }

    .drawer-close:hover {
        color: var(--text);
    }

    .drawer-close svg {
        width: 20px;
        height: 20px;
    }

    .drawer-body {
        padding: 20px;
    }

    .drawer-body .filter-section {
        margin-bottom: 24px;
    }

    .product-grid {
        display: grid;
        grid-template-columns: 1fr;
        gap: 18px;
        width: 100%;
    }

    @media (min-width: 500px) {
        .product-grid {
            grid-template-columns: repeat(2, 1fr);
        }
    }

    @media (min-width: 700px) {
        .product-grid {
            grid-template-columns: repeat(3, 1fr);
        }
    }

    @media (min-width: 1000px) {
        .product-grid {
            grid-template-columns: repeat(4, 1fr);
        }
    }

    .product-card {
        background: var(--surface);
        border: 1px solid var(--border);
        border-radius: var(--radius-lg);
        overflow: hidden;
        display: flex;
        flex-direction: column;
        transition: box-shadow var(--transition), transform var(--transition), border-color var(--transition);
        box-shadow: var(--shadow-card);
        animation: cardIn .3s ease both;
    }

    @keyframes cardIn {
        from {
            opacity: 0;
            transform: translateY(10px);
        }

        to {
            opacity: 1;
            transform: translateY(0);
        }
    }

    .product-card:hover {
        box-shadow: var(--shadow-hover);
        transform: translateY(-2px);
        border-color: rgba(0, 0, 0, .14);
    }

    .product-card.sold-out {
        opacity: .7;
    }

    .card-img-wrap {
        position: relative;
        overflow: hidden;
        aspect-ratio: 4 / 3;
        background: #efefed;
    }

    .card-img-wrap a {
        display: block;
        height: 100%;
    }

    .card-img-wrap img {
        width: 100%;
        height: 100%;
        object-fit: contain;
        display: block;
        transition: transform .35s ease;
    }

    .product-card:hover .card-img-wrap img {
        transform: scale(1.04);
    }

    .sold-out-badge {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        background: rgba(0, 0, 0, .62);
        color: #fff;
        font-size: 11px;
        font-weight: 600;
        letter-spacing: .07em;
        text-transform: uppercase;
        padding: 6px 14px;
        border: 1.5px solid rgba(255, 255, 255, .55);
        border-radius: 4px;
        pointer-events: none;
        white-space: nowrap;
    }

    .card-category-tag {
        position: absolute;
        top: 10px;
        left: 10px;
        background: rgba(255, 255, 255, .9);
        border-radius: 20px;
        font-size: 11px;
        font-weight: 500;
        color: var(--text-muted);
        padding: 3px 9px;
        backdrop-filter: blur(4px);
    }

    .card-body {
        padding: 13px 14px 14px;
        display: flex;
        flex-direction: column;
        flex: 1;
    }

    .card-name {
        font-size: 14px;
        font-weight: 500;
        color: var(--text);
        margin-bottom: 5px;
        line-height: 1.35;
        min-height: calc(1.35em * 2);
        display: -webkit-box;
        -webkit-line-clamp: 2;
        line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .card-name a {
        color: inherit;
        text-decoration: none;
    }

    .card-name a:hover {
        text-decoration: underline;
        text-underline-offset: 2px;
    }

    .card-price {
        font-size: 15px;
        font-weight: 600;
        color: var(--text);
        margin-bottom: 12px;
    }

    .card-price .currency {
        font-weight: 400;
        font-size: 12px;
        color: var(--text-muted);
    }

    .card-actions {
        display: flex;
        gap: 7px;
        margin-top: auto;
        align-items: stretch;
    }

    .btn-detail {
        flex: 1;
        padding: 9px 8px;
        border: 1.5px solid rgba(0, 0, 0, .35);
        border-radius: var(--radius-sm);
        background: none;
        color: var(--text);
        font-family: var(--font-body);
        font-size: 13px;
        font-weight: 500;
        cursor: pointer;
        transition: all var(--transition);
        text-decoration: none;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        white-space: nowrap;
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .btn-detail:hover {
        background: var(--accent);
        color: #fff;
        border-color: var(--accent);
    }

    .btn-cart {
        flex: 1;
        padding: 9px 8px;
        border: none;
        border-radius: var(--radius-sm);
        background: var(--accent);
        color: #fff;
        font-family: var(--font-body);
        font-size: 13px;
        font-weight: 500;
        cursor: pointer;
        transition: opacity var(--transition);
        white-space: nowrap;
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .btn-cart:hover:not(:disabled) {
        opacity: .82;
    }

    .btn-cart:disabled {
        background: #bbb;
        cursor: not-allowed;
    }

    .empty-state {
        grid-column: 1/-1;
        text-align: center;
        padding: 60px 20px;
        color: var(--text-muted);
    }

    .empty-state svg {
        width: 48px;
        height: 48px;
        opacity: .2;
        margin-bottom: 16px;
    }

    .empty-state h3 {
        font-family: var(--font-display);
        font-size: 20px;
        margin-bottom: 8px;
        color: var(--text);
    }

    .empty-state p {
        font-size: 14px;
    }

    .empty-state a {
        color: var(--text);
        font-weight: 500;
    }

    .pagination {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 4px;
        margin-top: 36px;
        flex-wrap: wrap;
    }

    .page-item {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 36px;
        height: 36px;
        padding: 0 10px;
        border: 1px solid var(--border);
        border-radius: var(--radius-sm);
        font-family: var(--font-body);
        font-size: 13.5px;
        color: var(--text-muted);
        text-decoration: none;
        background: var(--surface);
        transition: all var(--transition);
        box-shadow: var(--shadow-card);
    }

    .page-item:hover {
        background: var(--accent-light);
        color: var(--text);
        border-color: var(--border-strong);
    }

    .page-item.active {
        background: var(--accent);
        color: #fff;
        border-color: var(--accent);
        font-weight: 500;
    }

    .page-item.disabled {
        opacity: .3;
        pointer-events: none;
    }

    .page-item svg {
        width: 14px;
        height: 14px;
    }

    .page-ellipsis {
        font-size: 14px;
        color: var(--text-faint);
        padding: 0 4px;
        line-height: 36px;
    }

    @media (max-width: 768px) {

        .btn-cart,
        .btn-detail {
            font-size: 12px;
        }
    }

    @media (max-width: 560px) {
        .shop-top-bar {
            gap: 8px;
        }

        .shop-heading {
            font-size: 18px;
        }

        .shop-heading small {
            display: block;
            margin: 2px 0 0;
        }

        .sort-select {
            font-size: 12px;
            padding: 7px 9px;
        }

        .card-body {
            padding: 10px 11px 12px;
        }

        .card-name {
            font-size: 13px;
        }

        .card-price {
            font-size: 14px;
            margin-bottom: 10px;
        }

        .card-actions {
            flex-direction: column;
            gap: 6px;
        }

        .btn-cart {
            flex: unset;
            width: 100%;
            font-size: 11px;
            padding: 9px 6px;
            order: 1;
        }

        .btn-detail {
            display: inline-flex;
            flex: unset;
            width: 100%;
            font-size: 11px;
            padding: 8px 6px;
            order: 2;
        }
    }

    body.drawer-open {
        overflow: hidden;
    }

