/**
 * CBS Menu Side Cart - Stylesheet
 * Version: 1.1.1
 * FILE LOCATION: wp-content/plugins/cbs-menu-side-cart/assets/css/cbsmsc-styles.css
 *
 * CHANGELOG v1.1.1:
 * - Fix: Reset browser default ul margin, padding, and list-style on mini-cart list.
 * - Header/Footer: Subtotal font size/weight; View cart / Checkout theme default or custom button styles; hover colors for cart and footer buttons; footer button font size.
 * - Fix: Badge colors from settings apply via inline styles, enqueued CSS, and Iris sync on settings save.
 *
 * CHANGELOG v1.0.7:
 * - Chore: Version alignment with plugin release.
 *
 * CHANGELOG v1.0.6:
 * - Chore: Version alignment with plugin release.
 *
 * CHANGELOG v1.0.5:
 * - Added: Support for per-instance cart icon size via --cbsmsc-icon-size CSS variable.
 *
 * CHANGELOG v1.0.4:
 * - Chore: Version alignment with plugin release.
 *
 * CHANGELOG v1.0.3:
 * - Chore: Version alignment with plugin release.
 *
 * CHANGELOG v1.0.2:
 * - Chore: Version alignment with plugin release.
 *
 * CHANGELOG v1.0.1:
 * - Fixed: Loading overlay now covers the full visible cart panel correctly.
 *   All .cbsmsc-cart-body.cbsmsc-loading rules moved to #cbsmsc-side-cart.cbsmsc-loading.
 *   .cbsmsc-cart-body is a scroll container — position:absolute with inset:0 inside it
 *   anchors to the top of scrollable content, not the visible viewport area. This caused
 *   the overlay to start above the visible items and leave a gap at the bottom when
 *   scrolled. #cbsmsc-side-cart is position:fixed and never scrolls, so inset:0 on
 *   ::after always fills the entire visible cart panel regardless of scroll position.
 * - Fixed: Remove button now positions correctly within each individual cart item.
 *   Added position:relative to li.woocommerce-mini-cart-item so the absolute-positioned
 *   remove button anchors to its own item rather than the nearest positioned ancestor.
 * - Removed: Spinner Conflict Fix z-index overrides on .cbsmsc-cart-body (no longer
 *   needed — loading pseudo-elements are now on #cbsmsc-side-cart instead).
 * - Kept: .cbsmsc-cart-body .blockUI.blockOverlay { display:none } rule, as WooCommerce
 *   may still inject a BlockUI overlay inside the scroll body during fragment refresh.
 * - Kept: position:relative on .cbsmsc-cart-body (still required to anchor remove button).
 *
 * CHANGELOG v1.0.0:
 * - Initial Release
 */

/* ========================================= */
/* MENU ITEM ALIGNMENT                       */
/* ========================================= */

li.cbsmsc-menu-item.cbsmsc-align-right {
    margin-left: auto !important;
    float: right !important;
    margin-right: 20px !important;
}

li.cbsmsc-menu-item.cbsmsc-align-default {
    /* No special positioning - inherits menu layout naturally */
}

/* ========================================= */
/* MENU ITEM LAYOUT                          */
/* ========================================= */

.cbsmsc-menu-item a.cbsmsc-toggle-cart {
    display: flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    line-height: 1;
    font-weight: 700;
    color: #ffffff !important;
}

/* ========================================= */
/* CART ICON                                 */
/* ========================================= */

.cbsmsc-icon-wrapper {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.cbsmsc-cart-icon {
    width: 24px;
    height: 24px;
    font-size: 24px;
    stroke-width: 2.5px;
}

/* ========================================= */
/* FLASH FIX - OPACITY REVEAL                */
/* ========================================= */

.cbsmsc-count-badge,
.cbsmsc-total,
li.cbsmsc-menu-item .amount {
    opacity: 0;
    visibility: hidden;
}

.cbsmsc-count-badge.cbsmsc-loaded,
.cbsmsc-total.cbsmsc-loaded,
li.cbsmsc-menu-item .amount.cbsmsc-loaded {
    opacity: 1;
    visibility: visible;
}

/* ========================================= */
/* BADGE STYLING                             */
/* ========================================= */

.cbsmsc-count-badge {
    position: absolute;
    top: -8px;
    right: 0;
    min-width: 16px;
    height: 16px;
    border-radius: 50%;
    font-size: 12px;
    font-weight: 400;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2px;
    z-index: 10;
    box-shadow: none;
    background-color: var(--cbsmsc-badge-bg, #0088cc);
    color: var(--cbsmsc-badge-color, #ffffff);
}

.cbsmsc-count-badge.cbsmsc-badge-hidden {
    display: none !important;
}

/* ========================================= */
/* SUBTOTAL STYLING                          */
/* ========================================= */

.cbsmsc-total {
    font-size: 16px;
    font-weight: 600;
    order: -1;
}

/* ========================================= */
/* SIDE CART CONTAINER                       */
/* ========================================= */

.cbsmsc-cart-container {
    position: fixed;
    top: 0;
    right: 0;
    width: var(--cbsmsc-panel-width, 80%);
    max-width: var(--cbsmsc-panel-max-width, 380px);
    height: 100%;
    background: #fff;
    z-index: var(--cbsmsc-panel-z, 999999);
    transform: translateX(100%);
    transition: transform var(--cbsmsc-slide-duration, 500ms) ease-in-out;
    will-change: transform;
    display: flex;
    flex-direction: column;
}

.cbsmsc-cart-container.open {
    transform: translateX(0);
}

@media (prefers-reduced-motion: reduce) {
    .cbsmsc-cart-container {
        transition: none;
    }
}

/* ========================================= */
/* CART HEADER                               */
/* ========================================= */

.cbsmsc-cart-header {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px;
    border-bottom: 1px solid #e0e0e0;
    background-color: var(--cbsmsc-header-bg, #fff);
    background-image: var(--cbsmsc-header-bg-image, none);
    background-size: var(--cbsmsc-header-bg-size, cover);
    background-repeat: no-repeat;
    background-position: center center;
    min-height: var(--cbsmsc-header-height, auto);
    height: var(--cbsmsc-header-height, auto);
    color: var(--cbsmsc-header-color, #333);
}

.cbsmsc-cart-header.cbsmsc-header-clickable {
    cursor: pointer;
    user-select: none;
}

.cbsmsc-header-title {
    font-size: 20px;
    font-weight: 700;
    margin: 0;
    color: inherit;
}

.cbsmsc-header-close {
    background: none;
    border: none;
    font-size: 30px;
    cursor: pointer;
    line-height: 1;
    padding: 0;
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: inherit;
    flex-shrink: 0;
}

.cbsmsc-cart-header.cbsmsc-header-align-center,
.cbsmsc-cart-header.cbsmsc-header-align-right {
    position: relative;
}

.cbsmsc-cart-header.cbsmsc-header-align-center .cbsmsc-header-title {
    flex: 1;
    text-align: center;
}

.cbsmsc-cart-header.cbsmsc-header-align-right .cbsmsc-header-title {
    flex: 1;
    text-align: right;
    padding-right: 36px;
}

.cbsmsc-cart-header.cbsmsc-header-align-center .cbsmsc-header-close,
.cbsmsc-cart-header.cbsmsc-header-align-right .cbsmsc-header-close {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
}

/* ========================================= */
/* ACCESSIBILITY - FOCUS INDICATORS          */
/* ========================================= */

#cbsmsc-close-cart:focus {
    outline: none;
}

#cbsmsc-close-cart:focus-visible {
    outline: 2px solid rgba(0, 136, 204, 0.5);
    outline-offset: 2px;
    box-shadow: 0 0 0 4px rgba(0, 136, 204, 0.1);
    border-radius: 4px;
}

.cbsmsc-toggle-cart:focus-visible,
#cbsmsc-footer-button:focus-visible,
.cbsmsc-cart-header.cbsmsc-header-clickable:focus-visible {
    outline: 2px solid rgba(0, 136, 204, 0.5);
    outline-offset: 2px;
    box-shadow: 0 0 0 4px rgba(0, 136, 204, 0.1);
}

/* ========================================= */
/* CART BODY                                 */
/* ========================================= */

.cbsmsc-cart-body {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior: contain;
    /* position:relative required to anchor the absolute-positioned remove button
       to each cart item's li (which also has position:relative — see cart items
       section below). Do NOT add z-index here; loading overlay is now handled
       on #cbsmsc-side-cart instead. */
    position: relative;
}

.cbsmsc-cart-inner {
    padding: 0;
}

/* ========================================= */
/* LOADING OVERLAY - REMOVE ITEM SPINNER     */
/* ========================================= */

/*
 * Loading state is applied to #cbsmsc-side-cart (the fixed cart container),
 * NOT .cbsmsc-cart-body (the scroll container).
 *
 * Reason: .cbsmsc-cart-body has overflow-y:auto, making it a scroll container.
 * position:absolute with inset:0 inside a scroll container anchors to the TOP
 * of the scrollable content, not the visible area — so the overlay drifts above
 * visible items when scrolled, leaving a gap at the bottom.
 *
 * #cbsmsc-side-cart is position:fixed and never scrolls, so inset:0 on ::after
 * always fills the entire visible cart panel regardless of scroll position.
 *
 * ::after  = semi-transparent white overlay covering the full cart panel
 * ::before = rotating spinner image, centred over the visible panel
 */
#cbsmsc-side-cart.cbsmsc-loading {
    pointer-events: none;
}

#cbsmsc-side-cart.cbsmsc-loading::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(255, 255, 255, 0.7);
    z-index: 99998;
}

#cbsmsc-side-cart.cbsmsc-loading::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    font-size: 2em;
    width: 1em;
    height: 1em;
    margin-top: -.5em;
    margin-left: -.5em;
    display: block;
    background: var(--cbsmsc-loader-url, none) center center;
    background-size: cover;
    animation: spin 1s ease-in-out infinite;
    z-index: 99999;
    opacity: 0.75;
}

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

@media (prefers-reduced-motion: reduce) {
    #cbsmsc-side-cart.cbsmsc-loading::after {
        animation: none;
        border-top-color: #0088cc;
        opacity: 0.6;
    }
}

/* ========================================= */
/* PRODUCT LINK WITH TITLE WRAPPER           */
/* ========================================= */

.cbsmsc-cart-inner ul.cart_list li a:not(.remove),
.cbsmsc-cart-inner ul.product_list_widget li a:not(.remove),
.cbsmsc-cart-inner .cbsmsc-pseudo-link {
    display: flex !important;
    gap: 10px !important;
    align-items: center;
    min-width: 0;
    max-width: calc(100% - 32px);
    padding: 10px 0 0 !important;
    margin-bottom: 0 !important;
    font-size: 15px;
    color: #555555;
    text-decoration: none;
}

.cbsmsc-cart-inner .cbsmsc-pseudo-link {
    cursor: default;
    text-decoration: none !important;
}

.cbsmsc-cart-inner .cbsmsc-title-wrapper {
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    line-height: 1.4;
    flex: 1;
    min-width: 0;
	font-weight: 600;
}

.cbsmsc-cart-inner .cbsmsc-title-wrapper:hover {
    -webkit-line-clamp: unset;
}

/* ========================================= */
/* REMOVE BUTTON                             */
/* ========================================= */

#cbsmsc-side-cart .cbsmsc-cart-inner a.remove.remove_from_cart_button {
    position: absolute !important;
    right: 12px !important;
    left: auto !important;
    top: 12px !important;
    min-width: 0 !important;
    width: 24px !important;
    height: 24px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    font-size: 0 !important;
    line-height: 0 !important;
    color: transparent !important;
    overflow: hidden !important;
    display: block !important;
    text-decoration: none !important;
    opacity: 1 !important;
}

/* Astra and other themes inject SVG/span inside the remove link; hide them. */
#cbsmsc-side-cart .cbsmsc-cart-inner a.remove.remove_from_cart_button > * {
    display: none !important;
}

/* FA solid trash (f1f8) and cross (xmark) — SVG ::before icons, theme-safe. */
#cbsmsc-side-cart .cbsmsc-cart-inner a.remove.remove_from_cart_button::before {
    content: "";
    visibility: visible;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: none;
    background: center no-repeat;
}

#cbsmsc-side-cart.cbsmsc-remove-icon-trash .cbsmsc-cart-inner a.remove.remove_from_cart_button::before {
    background-size: 14px 16px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath fill='%23555555' d='M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z'/%3E%3C/svg%3E");
}

#cbsmsc-side-cart.cbsmsc-remove-icon-trash .cbsmsc-cart-inner a.remove.remove_from_cart_button:hover::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath fill='%23bf0202' d='M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z'/%3E%3C/svg%3E");
}

#cbsmsc-side-cart.cbsmsc-remove-icon-cross .cbsmsc-cart-inner a.remove.remove_from_cart_button::before {
    background-size: 14px 14px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath fill='%23555555' d='M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z'/%3E%3C/svg%3E");
}

#cbsmsc-side-cart.cbsmsc-remove-icon-cross .cbsmsc-cart-inner a.remove.remove_from_cart_button:hover::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath fill='%23bf0202' d='M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z'/%3E%3C/svg%3E");
}

#cbsmsc-side-cart.cbsmsc-remove-icon-custom .cbsmsc-cart-inner a.remove.remove_from_cart_button::before {
    background-size: contain;
}

#cbsmsc-side-cart.cbsmsc-remove-icon-custom .cbsmsc-cart-inner a.remove.remove_from_cart_button:hover::before {
    opacity: 0.75;
}

/* ========================================= */
/* CART ITEMS                                */
/* ========================================= */

#cbsmsc-side-cart .cbsmsc-cart-inner ul.woocommerce-mini-cart,
#cbsmsc-side-cart .cbsmsc-cart-inner ul.cart_list,
#cbsmsc-side-cart .cbsmsc-cart-inner ul.product_list_widget {
    list-style: none;
    margin: 0;
    padding: 0;
}

#cbsmsc-side-cart .cbsmsc-cart-inner ul.cart_list li:not(.woocommerce-mini-cart__empty-message),
#cbsmsc-side-cart .cbsmsc-cart-inner li.woocommerce-mini-cart-item.mini_cart_item {
    display: block !important;
    padding: 10px 20px !important;
    margin: 0 !important;
    min-height: 0 !important;
    border-radius: 3px;
    border-bottom: 2px solid #cccccc69;
    position: relative !important;
    overflow: visible;
    box-sizing: border-box;
}

.cbsmsc-cart-inner span.woocommerce-Price-amount.amount {
    color: #555555 !important;
}

.cbsmsc-cart-inner .woocommerce-mini-cart__total,
.cbsmsc-cart-inner .woocommerce-mini-cart__buttons {
    display: none;
}

/* ========================================= */
/* EMPTY CART                                */
/* ========================================= */

.cbsmsc-cart-inner.cbsmsc-cart-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
}

.cbsmsc-cart-inner .woocommerce-mini-cart__empty-message {
    text-align: center;
    color: #555;
    font-size: 16px;
    list-style: none;
    width: 100%;
}

.cbsmsc-cart-inner .woocommerce-mini-cart__empty-message ~ .woocommerce-mini-cart__empty-message {
    display: none !important;
}

/* ========================================= */
/* CART FOOTER                               */
/* ========================================= */

.cbsmsc-cart-footer {
    flex-shrink: 0;
    background: #fff;
}

#cbsmsc-footer-content {
    padding: 15px 20px;
}

#cbsmsc-footer-content .woocommerce-mini-cart__total {
    font-size: var(--cbsmsc-subtotal-font-size, 18px);
    text-align: center;
    font-weight: var(--cbsmsc-subtotal-font-weight, 600);
    margin: 0 !important;
    border: none;
    display: block;
    padding: 0 0 15px 0;
}

#cbsmsc-footer-content .woocommerce-mini-cart__buttons {
    display: flex;
    gap: 10px;
    padding: 0;
    margin: 0 0 15px 0;
}

#cbsmsc-footer-content .woocommerce-mini-cart__buttons .button {
    flex: 1;
    margin: 0;
    text-align: center;
    border-radius: 3px;
}

#cbsmsc-side-cart.cbsmsc-cart-buttons-custom #cbsmsc-footer-content .woocommerce-mini-cart__buttons .button {
    background-color: var(--cbsmsc-cart-buttons-bg, #1a5e5e) !important;
    color: var(--cbsmsc-cart-buttons-color, #fff) !important;
    font-size: var(--cbsmsc-cart-buttons-font-size, 16px);
    font-weight: var(--cbsmsc-cart-buttons-font-weight, 600);
    border: none;
    padding: 12px 10px;
    text-decoration: none;
    line-height: 1.4;
}

#cbsmsc-side-cart.cbsmsc-cart-buttons-custom #cbsmsc-footer-content .woocommerce-mini-cart__buttons .button:hover,
#cbsmsc-side-cart.cbsmsc-cart-buttons-custom #cbsmsc-footer-content .woocommerce-mini-cart__buttons .button:focus {
    background-color: var(--cbsmsc-cart-buttons-bg-hover, var(--cbsmsc-cart-buttons-bg, #1a5e5e)) !important;
    color: var(--cbsmsc-cart-buttons-color-hover, var(--cbsmsc-cart-buttons-color, #fff)) !important;
}

.cbsmsc-footer-close {
    width: calc(100% - 40px);
    padding: 15px;
    background-color: var(--cbsmsc-footer-bg, #0088cc);
    background-image: var(--cbsmsc-footer-bg-image, none);
    background-size: var(--cbsmsc-footer-bg-size, cover);
    background-repeat: no-repeat;
    background-position: center center;
    min-height: var(--cbsmsc-footer-height, auto);
    height: var(--cbsmsc-footer-height, auto);
    color: var(--cbsmsc-footer-color, #fff);
    border: none;
    border-radius: 4px;
    font-size: var(--cbsmsc-footer-font-size, 16px);
    font-weight: 600;
    cursor: pointer;
    margin: 0 20px 15px 20px;
    text-align: var(--cbsmsc-footer-align, center);
    display: inline-block;
    box-sizing: border-box;
    text-decoration: none;
    line-height: 1.4;
}

.cbsmsc-footer-close:hover,
.cbsmsc-footer-close:focus {
    background-color: var(--cbsmsc-footer-bg-hover, var(--cbsmsc-footer-bg, #0088cc));
    color: var(--cbsmsc-footer-color-hover, var(--cbsmsc-footer-color, #fff));
}

#cbsmsc-side-cart.cbsmsc-footer-full-width .cbsmsc-footer-close {
    width: 100%;
    margin: 0 0 0 0;
    border-radius: 0;
}

/* ========================================= */
/* OVERLAY                                   */
/* ========================================= */

.cbsmsc-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, var(--cbsmsc-overlay-opacity, 0.5));
    z-index: var(--cbsmsc-overlay-z, 999998);
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--cbsmsc-slide-duration, 500ms) ease-in-out, visibility var(--cbsmsc-slide-duration, 500ms) ease-in-out;
}

.cbsmsc-overlay.open {
    opacity: 1;
    visibility: visible;
}

@media (prefers-reduced-motion: reduce) {
    .cbsmsc-overlay {
        transition: none;
    }
}

/* ========================================= */
/* BLOCK UI OVERRIDES - PAGE-LEVEL           */
/* ========================================= */

/*
 * These rules handle BlockUI calls that WooCommerce may make at the page
 * level (e.g. processing class on body during checkout). They are kept
 * separate from the cart-body scoped rules above.
 */
body.processing .cbsmsc-page-blocker {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    height: 100% !important;
    z-index: 999998 !important;
    background: transparent !important;
    cursor: wait !important;
}

/* ========================================= */
/* SHORTCODE WRAPPER                         */
/* ========================================= */

.cbsmsc-shortcode-wrapper {
    display: inline-block;
    height: 48px;
    line-height: 48px;
    vertical-align: middle;
}

.cbsmsc-shortcode-wrapper a.cbsmsc-toggle-cart {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    line-height: 48px;
    font-weight: 700;
    height: 48px;
    color: #fff;
    padding-right: 18px;
    font-size: 16px;
}

.cbsmsc-toggle-cart:hover,
.cbsmsc-toggle-cart:focus {
    color: #fff !important;
}

/* ========================================= */
/* CART ITEM THUMBS + WOO WIDGET RESET       */
/* ========================================= */

#cbsmsc-side-cart .cbsmsc-cart-inner .woocommerce-mini-cart-item {
    margin-bottom: 0 !important;
}

/*
 * WooCommerce widget lists float 32px thumbnails. Our panel uses flex rows instead.
 * Reset float only — composite logo sizing stays in the active theme.
 */
.woocommerce-js #cbsmsc-side-cart .cbsmsc-cart-inner ul.product_list_widget li,
.woocommerce-js #cbsmsc-side-cart .cbsmsc-cart-inner ul.cart_list li {
    padding: 10px 20px !important;
    min-height: 0 !important;
    line-height: inherit !important;
}

.woocommerce-js #cbsmsc-side-cart .cbsmsc-cart-inner ul.product_list_widget li img,
.woocommerce-js #cbsmsc-side-cart .cbsmsc-cart-inner ul.cart_list li img {
    float: none !important;
    margin: 0 !important;
    box-shadow: none !important;
}

/* JS-marked thumb slot (wrapper or bare img). */
#cbsmsc-side-cart .cbsmsc-cart-inner .cbsmsc-cart-thumb:not(img) {
    flex-shrink: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: var(--cbsmsc-thumb-size, 56px) !important;
    height: var(--cbsmsc-thumb-size, 56px) !important;
    overflow: hidden;
    border-radius: var(--cbsmsc-thumb-radius, 5px) !important;
}

#cbsmsc-side-cart .cbsmsc-cart-inner .woocommerce-mini-cart-item > a:not(.remove) > img.cbsmsc-cart-thumb,
#cbsmsc-side-cart .cbsmsc-cart-inner .woocommerce-mini-cart-item .cbsmsc-pseudo-link > img.cbsmsc-cart-thumb,
#cbsmsc-side-cart .cbsmsc-cart-inner .woocommerce-mini-cart-item > img.cbsmsc-cart-thumb,
.woocommerce-js #cbsmsc-side-cart .cbsmsc-cart-inner ul.product_list_widget li > img.cbsmsc-cart-thumb,
.woocommerce-js #cbsmsc-side-cart .cbsmsc-cart-inner ul.cart_list li > img.cbsmsc-cart-thumb {
    flex-shrink: 0 !important;
    width: var(--cbsmsc-thumb-size, 56px) !important;
    height: var(--cbsmsc-thumb-size, 56px) !important;
    max-width: var(--cbsmsc-thumb-size, 56px) !important;
    object-fit: cover !important;
    object-position: center center !important;
    border-radius: var(--cbsmsc-thumb-radius, 5px) !important;
    display: block;
}

.woocommerce-js #cbsmsc-side-cart .cbsmsc-cart-inner ul.product_list_widget li > a:not(.remove),
.woocommerce-js #cbsmsc-side-cart .cbsmsc-cart-inner ul.cart_list li > a:not(.remove) {
    font-weight: 600 !important;
}

.cbsmsc-cart-inner .woocommerce-mini-cart-item .quantity.cbsmsc-restructured {
    position: static !important;
    display: block !important;
    width: 100% !important;
    margin: 0;
}

.cbsmsc-cart-inner .cbsmsc-price-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    padding-bottom: 10px;
}

.cbsmsc-cart-inner .cbsmsc-price-left {
    display: flex;
    flex-direction: column;
    gap: 3px;
    margin: 4px 0 0 var(--cbsmsc-price-indent, 72px);
}

.cbsmsc-cart-inner .cbsmsc-qty,
.cbsmsc-cart-inner .cbsmsc-unit-price {
    font-size: 14px;
    color: #555;
    font-weight: 400;
}

.cbsmsc-cart-inner .cbsmsc-price-right {
    font-size: 15px;
    font-weight: 600;
    color: #555;
    align-self: flex-end;
}

/* ========================================= */
/* MOBILE RESPONSIVE                         */
/* ========================================= */

@media (max-width: 1024px) {
    /* Hide badge and subtotal on mobile - icon only */
    .cbsmsc-total,
    .cbsmsc-count-badge {
        display: none !important;
    }

    /* Use dynamic viewport height for mobile browsers */
    .cbsmsc-cart-container {
        bottom: auto !important;
        height: 100dvh !important;
    }

    .cbsmsc-overlay {
        height: 100dvh !important;
    }

    /* Strip float/margin-right on mobile - flex menus handle positioning */
    li.cbsmsc-menu-item.cbsmsc-align-right {
        float: none !important;
        margin-right: 0 !important;
    }

    /* Lock scroll on mobile when cart is open */
    body.cbsmsc-cart-open {
        overflow: hidden !important;
        height: auto !important;
        touch-action: none;
        -webkit-overflow-scrolling: auto;
    }
}

/* Very small screens - full width cart */
@media (max-width: 300px) {
    .cbsmsc-cart-container {
        width: 100% !important;
        max-width: 100% !important;
    }
}

/* Admin bar offset when logged in */
body.cbsmsc-admin-bar-offset.admin-bar .cbsmsc-cart-container {
    top: 32px !important;
    height: calc(100% - 32px) !important;
}

@media screen and (max-width: 782px) {
    body.cbsmsc-admin-bar-offset.admin-bar .cbsmsc-cart-container {
        top: 46px !important;
        height: calc(100% - 46px) !important;
    }
}

/* ========================================= */
/* SPINNER CONFLICT FIX                      */
/* ========================================= */

/*
 * Hide WooCommerce's native BlockUI overlay if it fires inside .cbsmsc-cart-body
 * during fragment refresh. The plugin's own loading overlay is now on
 * #cbsmsc-side-cart so there is no z-index conflict to resolve here.
 */
.cbsmsc-cart-body .blockUI.blockOverlay {
    display: none !important;
}