/* Image Loader Styles */
.product-image,
.category-image {
    transition: opacity 0.3s ease-in-out;
    background-color: #f5f5f5;
}

.product-image.image-loading,
.category-image.image-loading {
    opacity: 0.7;
}

.product-image.image-loaded,
.category-image.image-loaded {
    opacity: 1;
    background-color: transparent;
}

.product-image.image-error,
.category-image.image-error {
    opacity: 0.8;
    background-color: #f5f5f5;
}

/* Ensure images maintain aspect ratio during loading - don't override existing styles */
.product-image-container img.product-image {
    max-width: 100%;
    height: auto;
    display: block;
}

.product-image-zoom {
    max-width: 100%;
    height: auto;
    display: block;
}

/* Fix grid layout for tab slider (homepage) */
.ltabs-items.grid .ltabs-items-inner.ltabs-slider {
    display: block;
    width: 100%;
}

.ltabs-items.grid .ltabs-item {
    display: inline-block;
    vertical-align: top;
    box-sizing: border-box;
    float: left;
}

/* Clear floats to prevent layout issues */
.ltabs-items.grid .ltabs-items-inner.ltabs-slider::after {
    content: "";
    display: table;
    clear: both;
}

/* Responsive widths for tab slider based on data attributes */
.ltabs-tabs-container[data-lg="4"] .ltabs-items.grid .ltabs-item {
    width: 25%;
}

.ltabs-tabs-container[data-md="3"] .ltabs-items.grid .ltabs-item {
    width: 33.333%;
}

.ltabs-tabs-container[data-sm="2"] .ltabs-items.grid .ltabs-item {
    width: 50%;
}

.ltabs-tabs-container[data-xs="1"] .ltabs-items.grid .ltabs-item {
    width: 100%;
}

@media (max-width: 1199px) {
    .ltabs-tabs-container[data-lg="4"] .ltabs-items.grid .ltabs-item {
        width: 33.333%;
    }
}

@media (max-width: 991px) {
    .ltabs-tabs-container[data-lg="4"] .ltabs-items.grid .ltabs-item,
    .ltabs-tabs-container[data-md="3"] .ltabs-items.grid .ltabs-item {
        width: 50%;
    }
}

@media (max-width: 767px) {
    .ltabs-items.grid .ltabs-item {
        width: 100% !important;
    }
}

/* Fix grid layout for product listing page - use flexbox to avoid float misalignment
   when product names vary in length (prevents "odd" wrap of first item in next row) */
.products-list.grid {
    display: flex;
    flex-wrap: wrap;
    width: 100%;
    margin-left: -15px;
    margin-right: -15px;
}

.products-list.grid .product-layout,
.products-list.grid .ltabs-item {
    flex: 0 0 25%;
    max-width: 25%;
    min-width: 0;
    box-sizing: border-box;
    padding: 0 15px;
    margin-bottom: 30px;
    display: flex;
    flex-direction: column;
}

/* Equal-height product cards: container fills layout so all boxes in a row match max height */
.products-list.grid .product-item-container {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.products-list.grid .product-item-container .left-block {
    flex: 0 0 auto;
    float: none;
    width: 100%;
}

.products-list.grid .product-item-container .right-block {
    flex: 1 1 auto;
    clear: none;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.products-list.grid .product-item-container .right-block .caption {
    flex: 1 1 auto;
    min-height: 0;
}

.products-list.grid .product-item-container .right-block .button-group {
    flex: 0 0 auto;
    margin-top: auto;
}

/* Constrain product title to 2 lines to reduce card height variation */
.products-list.grid .product-layout .caption h4,
.products-list.grid .product-layout .right-block .caption h4 {
    overflow: hidden !important;
    display: -webkit-box !important;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-height: 1.35;
    word-break: break-word;
    max-height: 2.7em;
}

/* Responsive widths for product listing */
@media (min-width: 992px) and (max-width: 1199px) {
    .products-list.grid .product-layout,
    .products-list.grid .ltabs-item {
        flex: 0 0 33.333%;
        max-width: 33.333%;
    }
}

@media (min-width: 768px) and (max-width: 991px) {
    .products-list.grid .product-layout,
    .products-list.grid .ltabs-item {
        flex: 0 0 50%;
        max-width: 50%;
    }
}

@media (max-width: 767px) {
    .products-list.grid .product-layout,
    .products-list.grid .ltabs-item {
        flex: 0 0 100%;
        max-width: 100%;
        padding: 0 10px;
    }
}

/* List view for product listing - using Bootstrap grid classes */
.products-list.list {
    display: block;
    width: 100%;
}

.products-list.list .product-layout,
.products-list.list .ltabs-item {
    width: 100% !important;
    float: left !important;
    display: block !important;
    padding: 0 !important;
    margin: 15px 0 !important;
    clear: both;
    box-sizing: border-box;
}

/* When list view is active, use Bootstrap grid structure */
.products-list.list .product-layout.col-lg-12,
.products-list.list .ltabs-item.col-lg-12 {
    width: 100% !important;
}

.products-list.list .product-item-container {
    width: 100% !important;
    float: left !important;
    display: block !important;
    overflow: hidden;
    margin: 15px 0;
    padding: 15px;
    border: 1px solid #dddddd;
    box-sizing: border-box;
}

/* Bootstrap grid classes for list view */
.products-list.list .product-item-container .left-block.col-md-4 {
    float: left !important;
    width: 33.33333333% !important;
    position: relative;
    min-height: 1px;
    padding-right: 15px;
    padding-left: 15px;
    box-sizing: border-box;
    border: 1px solid #ddd;
    text-align: center;
}

.products-list.list .product-item-container .right-block.col-md-8 {
    float: left !important;
    width: 66.66666667% !important;
    position: relative;
    min-height: 1px;
    padding-right: 15px;
    padding-left: 15px;
    box-sizing: border-box;
}

/* Fallback if Bootstrap classes aren't applied */
.products-list.list .product-item-container .left-block:not(.col-md-4) {
    float: left !important;
    width: 33.33333333% !important;
    max-width: 300px;
    margin-right: 20px;
    position: relative;
    border: 1px solid #ddd;
    box-sizing: border-box;
    text-align: center;
}

.products-list.list .product-item-container .right-block:not(.col-md-8) {
    float: left !important;
    width: calc(66.66666667% - 20px) !important;
    padding-left: 0;
    box-sizing: border-box;
    clear: none;
}

.products-list.list .product-item-container .left-block .product-image-container {
    padding: 15px 0;
    width: 100%;
}

.products-list.list .product-item-container .left-block .product-image-container img {
    width: 100%;
    height: auto;
    max-width: 100%;
}

.products-list.list .product-item-container .right-block .caption {
    padding: 0 10px;
}

.products-list.list .product-item-container .right-block .button-group {
    padding: 0 10px;
}

/* Clear floats for list view */
.products-list.list::after {
    content: "";
    display: table;
    clear: both;
}

.products-list.list .product-item-container::after {
    content: "";
    display: table;
    clear: both;
}
