.product-points-price {
    display: inline-flex;
    align-items: baseline;
    gap: .35rem;
    margin: 0;
    padding: 0;
    color: inherit;
    background: transparent;
    border: 0;
    border-radius: 0;
    font: inherit;
    line-height: 1.2;
    vertical-align: baseline;
    white-space: nowrap;
}

.product-points-price__value {
    color: #c41622;
    font-weight: 800;
}

.product-points-price--replace {
    color: #fff;
    font-weight: 850;
}

.product-points-price--replace .product-points-price__value {
    color: inherit;
}

/* Product detail: the points price replaces the native money price group. */
.pd-group:has(> .product-points-price--replace) > .pd-price-group {
    display: none !important;
}

/* Product box (category, search, related, recently viewed - all render Product.List.Item):
   hide ONLY the native money price inside a box that carries the ProductPoints price. The points price itself is
   rendered by productbox_add_info (ProductPointsPriceViewComponent) and stays visible, so we target the direct
   money children of .art-price-block instead of the whole block. Theme markup: .art.bw-product-card (theme view) /
   .art-price-block with > .art-price, > .art-compareprice, > .art-info-group (Core price partial). */
.art.bw-product-card:has(.product-points-price) .art-price-block > .art-price,
.art.bw-product-card:has(.product-points-price) .art-price-block > .art-compareprice,
.art.bw-product-card:has(.product-points-price) .art-price-block > .art-info-group {
    display: none;
}

/* P4 partial redemption editor (cart / checkout order summary).
   Mobile first: full width controls, the input group wraps, and no fixed widths that could overflow. */
.product-points-summary__redeem {
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid rgba(0, 0, 0, 0.075);
}

.product-points-summary__redeem .product-points-summary__label {
    display: block;
    margin-bottom: 0.25rem;
    font-weight: 500;
}

.product-points-summary__redeem-input .input-group {
    flex-wrap: wrap;
}

.product-points-summary__redeem-input .form-control {
    min-width: 6rem;
    max-width: 100%;
}

.product-points-summary__redeem-input .input-group-append {
    display: flex;
    flex: 1 1 auto;
    flex-wrap: wrap;
    gap: 0.25rem;
    margin-top: 0.25rem;
}

.product-points-summary__redeem-input .input-group-append .btn {
    flex: 1 1 auto;
    white-space: nowrap;
}

.product-points-summary__redeem-preview {
    margin-top: 0.5rem;
    font-size: 0.95rem;
}

.product-points-summary__redeem-stale {
    margin-top: 0.5rem;
    margin-bottom: 0.5rem;
    padding: 0.5rem 0.75rem;
}

.product-points-summary__redeem-message:not([hidden]) {
    display: block;
    margin-top: 0.5rem;
}

@media (min-width: 576px) {
    .product-points-summary__redeem-input .input-group {
        flex-wrap: nowrap;
    }

    .product-points-summary__redeem-input .input-group-append {
        margin-top: 0;
        flex-wrap: nowrap;
    }
}
