/*
 * Copie des styles de barcoda_products_links (views/css/front-links.css) pour les lignes de produits de la
 * fiche, chargée seulement quand ce module est absent : les étiquettes et imprimantes compatibles partagent le
 * gabarit du thème (catalog/_partials/product-linked-item.tpl) avec les produits liés du moteur.
 */

/* Liste des modèles d'une gamme (filtres, assistant, une ligne par modèle) — module barcoda_products_links.
   Même palette que le sélecteur d'étiquettes (barcoda_etiquettes). */

.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 question reçoit le focus pour être lue par les lecteurs d'écran, pas pour être encadrée */
.bms-wizard-question:focus {
    outline: none;
}

/* 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-controls-head {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: .75rem;
}

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

.bms-reset {
    border: 0;
    background: none;
    padding: 0;
    color: var(--bms-amber-ink);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}

.bms-help-open {
    margin-left: auto;
}

.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;
}

/* ---------- Assistant ---------- */

.bms-wizard {
    margin-bottom: 1rem;
    padding: 1.25rem 1.5rem;
    border: 1px solid var(--bms-rule);
    border-left: 4px solid var(--bms-amber);
    border-radius: 0 1rem 1rem 0;
    background: #fff;
}

.bms-wizard-head {
    display: flex;
    align-items: center;
    gap: .75rem;
    font-size: .8125rem;
    color: var(--bms-muted);
}

.bms-wizard-progress {
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.bms-wizard-close {
    margin-left: auto;
}

.bms-wizard-question {
    margin: .5rem 0 0;
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.3;
}

.bms-wizard-help {
    margin: .25rem 0 0;
    color: var(--bms-muted);
}

.bms-wizard-answers {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
    gap: .5rem;
    margin-top: 1rem;
}

.bms-answer {
    text-align: left;
    padding: .75rem 1rem;
    border: 1px solid var(--bms-rule);
    border-radius: .75rem;
    background: #fff;
    color: var(--bms-ink);
    cursor: pointer;
}

.bms-answer:hover {
    border-color: var(--bms-ink);
    background: var(--bms-ground);
}

.bms-answer-label {
    display: block;
    font-weight: 700;
}

.bms-answer small {
    display: block;
    margin-top: .15rem;
    color: var(--bms-muted);
    font-size: .8125rem;
}

.bms-wizard-foot {
    display: flex;
    justify-content: space-between;
    margin-top: 1rem;
}

.bms-wizard-skip {
    margin-left: auto;
}

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

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

    .bms-help-open {
        margin-left: 0;
        width: 100%;
    }

    .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;
    }
}

/* ---------- Fiche d'un modèle : retour vers la gamme ---------- */

.product-range-back {
    display: inline-flex;
    align-items: baseline;
    gap: .4rem;
    margin-bottom: .5rem;
    font-size: .9375rem;
    font-weight: 600;
    color: #5A6E75;
    text-decoration: none;
}

.product-range-back:hover,
.product-range-back:focus-visible {
    color: #061F29;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* ---------- 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);
}
