/* Listes de produits liés sur la fiche produit (lignes, filtres, « Voir plus ») — module barcoda_products_links.
   Même palette que le sélecteur d'étiquettes (barcoda_imprimantes). La liste des modèles d'une gamme y ajoute ses
   propres règles (assistant, réinitialisation, retour vers la gamme) : module barcoda_modeles. */

.bms {
    --bms-ink: #061F29;
    --bms-muted: #5A6E75;
    --bms-rule: #DCE3E5;
    --bms-ground: #F3F6F7;
    --bms-edge: #B6C5C9;
    --bms-amber: #FCA715;
    --bms-amber-soft: #FFF2D9;
    --bms-amber-ink: #8A5300;
    --bms-ok: #22804F;
    --bms-ok-soft: #E1F3E9;
    --bms-warn: #8F5400;
    --bms-warn-soft: #FFF0D2;
    color: var(--bms-ink);
}

.bms [hidden] {
    display: none !important;
}

.bms button:focus-visible,
.bms select:focus-visible,
.bms a:focus-visible {
    outline: 3px solid var(--bms-amber);
    outline-offset: 2px;
}

/* La section Modèles s'élargit : le thème limite les sections de la fiche à 900 px, largeur de lecture du texte */
.product-infos-section:has(> .bms) {
    max-width: 1200px;
}

/* ---------- Filtres et résumé ---------- */

.bms-controls {
    margin-bottom: 1rem;
    padding: 1rem 1.25rem;
    background: var(--bms-ground);
    border-radius: 1rem;
}

.bms-summary {
    margin: 0;
    font-size: 1rem;
}

.bms-filters {
    display: grid;
    /* auto-fill : le tri seul (gamme sans critères) garde une largeur de colonne */
    grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
    gap: .75rem;
}

/* Listes des filtres sur fond blanc (le thème les grise par défaut) ; la flèche du thème est conservée */
.bms-filters .form-control-select {
    background-color: #fff;
}

.bms-field label {
    display: block;
    margin-bottom: .2rem;
    font-size: .8125rem;
    font-weight: 700;
    color: var(--bms-muted);
}

/* ---------- Une ligne par modèle ---------- */

.bms-list {
    border: 1px solid var(--bms-rule);
    border-radius: 1rem;
    background: #fff;
    overflow: hidden;
}

.bms-item {
    display: grid;
    grid-template-columns: 7rem minmax(0, 1fr) 15rem;
    gap: 1.25rem;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--bms-rule);
}

.bms-item:last-of-type {
    border-bottom: 0;
}

.bms-item-media img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1;
    object-fit: contain;
}

.bms-item-ref {
    font-family: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    font-size: .8125rem;
    color: var(--bms-muted);
}

.bms-item-title {
    margin: .15rem 0 .5rem;
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.35;
}

.bms-item-title a {
    color: var(--bms-ink);
    text-decoration: none;
}

.bms-item-title a:hover {
    text-decoration: underline;
}

.bms-item-specs {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    margin: 0;
}

.bms-item-specs div {
    display: inline-flex;
    gap: .3rem;
    padding: .2rem .55rem;
    border-radius: .4rem;
    background: var(--bms-ground);
    font-size: .8125rem;
}

.bms-item-specs dt {
    font-weight: 400;
    color: var(--bms-muted);
}

.bms-item-specs dd {
    margin: 0;
    font-weight: 600;
}

.bms-item-buy {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .4rem;
    text-align: right;
}

.bms-item-price strong {
    display: block;
    font-size: 1.15rem;
}

.bms-item-price small {
    display: block;
    color: var(--bms-muted);
    font-size: .8125rem;
}

.bms-item-quote {
    font-weight: 600;
}

/* Disponibilité : pastille avec point de couleur (couleurs du sélecteur d'étiquettes) */
.bms-item-stock {
    display: inline-flex;
    align-items: center;
    gap: .4em;
    padding: .4em .8em;
    font-size: .8125rem;
    font-weight: 700;
}

.bms-item-stock::before {
    content: "";
    width: .5em;
    height: .5em;
    border-radius: 50%;
    background: currentColor;
}

.bms-item-stock--in {
    background: var(--bms-ok-soft);
    color: var(--bms-ok);
}

.bms-item-stock--restock {
    background: var(--bms-warn-soft);
    color: var(--bms-warn);
}

.bms-item-cart {
    display: flex;
    gap: .4rem;
}

.bms-item-cart .btn {
    white-space: nowrap;
}

.bms-item-qty {
    width: 3.75rem;
}

.bms-empty {
    margin: 0;
    padding: 1.5rem 1.25rem;
    color: var(--bms-muted);
    text-align: center;
}

/* ---------- Mobile : carte empilée ---------- */

@media (max-width: 767.98px) {
    .bms-controls {
        padding: .85rem;
    }

    .bms-filters {
        grid-template-columns: 1fr 1fr;
    }

    .bms-item {
        grid-template-columns: 5rem minmax(0, 1fr);
        gap: .75rem 1rem;
        align-items: start;
    }

    .bms-item-buy {
        grid-column: 1 / -1;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: space-between;
        text-align: left;
    }

    .bms-item-cart {
        width: 100%;
    }

    .bms-item-cart .btn {
        flex: 1;
    }
}

@media (min-width: 768px) and (max-width: 991.98px) {
    .bms-item {
        grid-template-columns: 5.5rem minmax(0, 1fr) 13rem;
    }
}

/* ---------- Accessoires, consommables : liste repliée au-delà de 6 ---------- */

.bms-collapsed .bms-item-more {
    display: none;
}

.bms-collapsed .bms-list .bms-item:nth-last-child(1 of :not(.bms-item-more)) {
    border-bottom: 0;
}

.bms-more {
    display: block;
    margin: 1rem auto 0;
}

.bms-more[hidden] {
    display: none;
}

/* ---------- Imprimante : étiquettes et rubans compatibles ---------- */

.bms-compatible-intro {
    margin-bottom: 1rem;
    color: var(--bms-muted);
    font-size: .9375rem;
}

.bms-compatible .bms-controls {
    margin-bottom: 1rem;
}

.bms-compatible .bms-summary:empty {
    display: none;
}

.bms-compatible.bms-loading .bms-list {
    opacity: .5;
    transition: opacity .15s;
}

.bms-item-note {
    display: inline-block;
    margin-top: .4rem;
    background: #fff3e0;
    color: #8a5a00;
    font-weight: 600;
}

.bms-item-unit {
    display: block;
    color: var(--bms-muted);
}
