/**
 * Block-theme-first styles.
 * Defaults are intentionally neutral and inherit theme.json/global styles.
 */
.wllb-latest-products,
.wllb-latest-products * {
    box-sizing: border-box;
}

.wllb-latest-products {
    width: 100%;
}

.wllb-listing__heading {
    margin-top: 0;
}

.wllb-listing__result-count,
.wllb-listing__empty {
    margin-block: 0 1em;
}

.wllb-product-grid {
    display: grid;
    grid-template-columns: repeat(var(--wllb-cols-desktop, 4), minmax(0, 1fr));
    column-gap: var(--wllb-gap-x, 24px);
    row-gap: var(--wllb-gap-y, 32px);
    align-items: stretch;
}

.wllb-layout-list .wllb-product-grid {
    grid-template-columns: 1fr;
}

.wllb-layout-list .wllb-product {
    display: grid;
    grid-template-columns: minmax(180px, 34%) minmax(0, 1fr);
    column-gap: var(--wllb-gap-x, 24px);
    align-items: start;
}

.wllb-layout-list .wllb-product__content {
    padding-top: 0;
}

.wllb-product {
    position: relative;
    display: flex;
    min-width: 0;
    flex-direction: column;
    padding: var(--wllb-card-padding, 0);
    border-radius: var(--wllb-card-radius, 0);
    background: var(--wllb-card-bg, transparent);
    box-shadow: var(--wllb-card-shadow, none);
}

.wllb-card-bordered .wllb-product,
.wllb-card-elevated .wllb-product {
    border: var(--wllb-border-width, 1px) solid var(--wllb-border-color, color-mix(in srgb, currentColor 18%, transparent));
}

.wllb-card-elevated .wllb-product {
    box-shadow: var(--wllb-card-shadow, 0 8px 28px rgba(0,0,0,.12));
}

.wllb-card-minimal .wllb-product,
.wllb-card-none .wllb-product {
    border: 0;
}

.wllb-product__media {
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: var(--wllb-image-radius, 0);
    line-height: 0;
}

.wllb-product__image {
    display: block;
    width: 100%;
    height: 100%;
    transition: transform .24s ease, opacity .24s ease;
}

.wllb-image-ratio-square .wllb-product__media { aspect-ratio: 1 / 1; }
.wllb-image-ratio-landscape .wllb-product__media { aspect-ratio: 4 / 3; }
.wllb-image-ratio-wide .wllb-product__media { aspect-ratio: 16 / 9; }
.wllb-image-ratio-portrait .wllb-product__media { aspect-ratio: 3 / 4; }
.wllb-image-ratio-natural .wllb-product__media { aspect-ratio: auto; }
.wllb-image-ratio-natural .wllb-product__image { height: auto; }
.wllb-image-fit-cover .wllb-product__image { object-fit: cover; }
.wllb-image-fit-contain .wllb-product__image { object-fit: contain; }

@media (prefers-reduced-motion: no-preference) {
    .wllb-image-hover-zoom .wllb-product:hover .wllb-product__image { transform: scale(1.045); }
    .wllb-image-hover-fade .wllb-product:hover .wllb-product__image { opacity: .82; }
    .wllb-image-hover-lift .wllb-product:hover { transform: translateY(-4px); }
    .wllb-image-hover-lift .wllb-product { transition: transform .22s ease; }
}

.wllb-product__content {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: .55em;
    padding-top: .8em;
}

.wllb-align-center .wllb-product__content { text-align: center; align-items: center; }
.wllb-align-right .wllb-product__content { text-align: right; align-items: flex-end; }

.wllb-product__title {
    margin: 0;
    font-size: var(--wllb-title-size);
    line-height: 1.3;
}

.wllb-product__title a {
    color: var(--wllb-title-color);
}

.wllb-product__price {
    color: var(--wllb-price-color);
    font-size: var(--wllb-price-size);
}

.wllb-product__categories,
.wllb-product__description {
    color: var(--wllb-meta-color);
    font-size: var(--wllb-meta-size);
    opacity: .78;
}

.wllb-product__rating .star-rating {
    float: none;
    margin: 0;
}

.wllb-product__actions {
    margin-top: auto;
    padding-top: .35em;
}

.wllb-product__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.wllb-button-full .wllb-product__button {
    width: 100%;
}

.wllb-button-filled .wllb-product__button {
    padding: var(--wllb-button-py, 10px) var(--wllb-button-px, 16px);
    border-radius: var(--wllb-button-radius, 0);
    text-decoration: none;
    border: 1px solid var(--wllb-button-border, var(--wllb-button-bg, currentColor));
    background: var(--wllb-button-bg, currentColor);
    color: var(--wllb-button-color, Canvas);
}

.wllb-button-outline .wllb-product__button {
    padding: var(--wllb-button-py, 10px) var(--wllb-button-px, 16px);
    border-radius: var(--wllb-button-radius, 0);
    text-decoration: none;
    border: 1px solid var(--wllb-button-border, currentColor);
    background: transparent;
    color: var(--wllb-button-color, inherit);
}

.wllb-button-link .wllb-product__button {
    padding: var(--wllb-button-py, 10px) 0;
    border: 0;
    background: transparent;
    color: var(--wllb-button-color, inherit);
    text-decoration: underline;
}

.wllb-badges {
    pointer-events: none;
    position: absolute;
    z-index: 2;
    display: flex;
    max-width: calc(100% - 1rem);
    flex-wrap: wrap;
    gap: .35rem;
}

.wllb-badges-top-left .wllb-badges { top: .65rem; left: .65rem; }
.wllb-badges-top-right .wllb-badges { top: .65rem; right: .65rem; justify-content: flex-end; }
.wllb-badges-bottom-left .wllb-badges { bottom: .65rem; left: .65rem; }
.wllb-badges-bottom-right .wllb-badges { right: .65rem; bottom: .65rem; justify-content: flex-end; }

.wllb-badge {
    display: inline-flex;
    min-height: 1.6rem;
    align-items: center;
    justify-content: center;
    padding: .3rem .55rem;
    border-radius: var(--wllb-badge-radius, 999px);
    font-size: .72rem;
    font-weight: 700;
    line-height: 1;
}

.wllb-badge--new { background: var(--wllb-new-bg, #1668e3); color: var(--wllb-new-color, #fff); }
.wllb-badge--sale { background: var(--wllb-sale-bg, #8a2be2); color: var(--wllb-sale-color, #fff); }
.wllb-badge--sold { background: var(--wllb-sold-bg, #b42318); color: var(--wllb-sold-color, #fff); }

.wllb-pagination {
    margin-top: max(1.5rem, var(--wp--style--block-gap, 1.5rem));
}

.wllb-pagination .page-numbers {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    align-items: center;
    margin: 0;
    padding: 0;
    list-style: none;
}

.wllb-pagination a,
.wllb-pagination span {
    display: inline-flex;
    min-width: 2.35rem;
    min-height: 2.35rem;
    align-items: center;
    justify-content: center;
    padding: .4rem .7rem;
    border: 1px solid currentColor;
    border-radius: .35rem;
    color: inherit;
    text-decoration: none;
}

.wllb-pagination .current {
    font-weight: 700;
    outline: 2px solid currentColor;
    outline-offset: 1px;
}

@media (max-width: 1024px) {
    .wllb-responsive-on .wllb-product-grid { grid-template-columns: repeat(var(--wllb-cols-tablet, 3), minmax(0, 1fr)); }
}

@media (max-width: 680px) {
    .wllb-responsive-on .wllb-product-grid { grid-template-columns: repeat(var(--wllb-cols-mobile, 2), minmax(0, 1fr)); }
    .wllb-layout-list .wllb-product { grid-template-columns: 1fr; row-gap: .8rem; }
    .wllb-layout-list .wllb-product__content { padding-top: .2rem; }
}

/* v3.1 layout hardening: the grid itself never draws a decorative frame. */
.wllb-product-grid {
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}

.wllb-product {
    margin: 0;
    outline: 0;
}

/* Neutral modes must win over generic theme article/card borders. */
.wllb-card-minimal .wllb-product,
.wllb-card-none .wllb-product {
    border: 0 !important;
    box-shadow: none !important;
}

/* Explicit card styles still opt into their own border. */
.wllb-card-bordered .wllb-product,
.wllb-card-elevated .wllb-product {
    border: var(--wllb-border-width, 1px) solid var(--wllb-border-color, color-mix(in srgb, currentColor 18%, transparent)) !important;
}

.wllb-width-fill {
    width: 100%;
    max-width: none;
}

.wllb-width-fixed {
    width: min(100%, var(--wllb-fixed-width, 1200px));
    max-width: var(--wllb-fixed-width, 1200px);
    margin-inline: auto;
}


/* Companion blocks ------------------------------------------------------- */
.wllb-results-count .wllb-listing__result-count {
    margin: 0;
}

.wllb-catalog-sorting__form {
    display: flex;
    flex-wrap: wrap;
    gap: .6em;
    align-items: center;
}

.wllb-catalog-sorting__label {
    font: inherit;
}

.wllb-catalog-sorting__select {
    min-width: 12rem;
    max-width: 100%;
    font: inherit;
    color: inherit;
}

.wllb-catalog-sorting__submit {
    font: inherit;
}
