/* Boutique : mise en forme de base (le Template du site peut tout surcharger). Variables : --bq-couleur, --bq-fond, --bq-bord. */
.bq { --bq-couleur: #1f4e9c; --bq-fond: #fff; --bq-bord: #dcdfe4; max-width: 1100px; margin: 0 auto; padding: 8px 16px 32px; box-sizing: border-box; }
.bq *, .bq *::before, .bq *::after { box-sizing: border-box; }
.bq-haut { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; margin-bottom: 16px; font-size: 14px; }
.bq-haut-droite a { margin-left: 14px; }
.bq-flash { padding: 10px 14px; border-radius: 6px; margin: 0 0 14px; }
.bq-flash.bq-ok { background: #e7f6ec; border: 1px solid #9bd3ad; color: #14532d; }
.bq-flash.bq-err { background: #fdeceb; border: 1px solid #f1aaa5; color: #7f1d1d; }
.bq-filtres { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.bq-filtres input, .bq-filtres select, .bq-filtres button { padding: 8px 10px; border: 1px solid var(--bq-bord); border-radius: 6px; font: inherit; }
.bq-grille { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 18px; }
.bq-carte { border: 1px solid var(--bq-bord); border-radius: 8px; background: var(--bq-fond); overflow: hidden; position: relative; }
.bq-carte-lien { display: block; padding-bottom: 12px; color: inherit; text-decoration: none; }
.bq-carte-img { display: block; aspect-ratio: 4 / 3; background: #f3f4f6; overflow: hidden; }
.bq-carte-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bq-carte-titre { display: block; padding: 10px 12px 2px; font-weight: 600; }
.bq-carte-prix { display: block; padding: 0 12px; color: var(--bq-couleur); font-weight: 700; }
.bq-taxe { font-weight: 400; color: #666; font-size: 12px; }
.bq-badge { display: inline-block; margin: 6px 12px 0; padding: 2px 8px; background: #fdeceb; color: #7f1d1d; border-radius: 10px; font-size: 12px; }
.bq-badge-gros { font-size: 14px; margin-left: 0; }
.bq-epuise .bq-carte-img img { opacity: .55; }
.bq-pages { margin-top: 18px; text-align: center; }
.bq-pages a, .bq-page-actuelle { display: inline-block; min-width: 32px; padding: 4px 8px; border: 1px solid var(--bq-bord); border-radius: 6px; text-decoration: none; }
.bq-page-actuelle { background: var(--bq-couleur); color: #fff; border-color: var(--bq-couleur); }
.bq-produit { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px; }
@media (max-width: 760px) { .bq-produit { grid-template-columns: 1fr; } }
.bq-img-principale { width: 100%; height: auto; border-radius: 8px; display: block; }
.bq-vignettes { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.bq-vignette img { width: 64px; height: 64px; object-fit: cover; border-radius: 6px; border: 1px solid var(--bq-bord); }
.bq-prix { font-size: 22px; font-weight: 700; color: var(--bq-couleur); margin: 6px 0; }
.bq-prix-barre { font-size: 15px; color: #888; font-weight: 400; }
.bq-ref, .bq-mention-tva, .bq-note, .bq-stock { color: #555; font-size: 13px; margin: 4px 0; }
.bq-description { margin: 12px 0; line-height: 1.55; }
.bq-champ { display: block; margin: 10px 0; font-size: 14px; font-weight: 600; }
.bq-champ input, .bq-champ select, .bq-champ textarea { display: block; width: 100%; max-width: 480px; margin-top: 4px; padding: 9px 10px; border: 1px solid var(--bq-bord); border-radius: 6px; font: inherit; font-weight: 400; }
.bq-ligne2 { display: flex; flex-wrap: wrap; gap: 12px; }
.bq-ligne2 .bq-champ { flex: 1 1 200px; }
.bq-case { display: block; margin: 8px 0; padding: 8px 10px; border: 1px solid var(--bq-bord); border-radius: 6px; cursor: pointer; }
.bq-bouton { display: inline-block; padding: 10px 20px; background: var(--bq-couleur); color: #fff; border: 0; border-radius: 6px; font: inherit; font-weight: 600; cursor: pointer; text-decoration: none; }
.bq-bouton:hover { filter: brightness(1.1); }
.bq-secondaire { background: #fff; color: var(--bq-couleur); border: 1px solid var(--bq-couleur); }
.bq-lien-bouton { background: none; border: 0; color: var(--bq-couleur); text-decoration: underline; cursor: pointer; font: inherit; padding: 0; }
.bq-table { width: 100%; border-collapse: collapse; margin: 8px 0 14px; }
.bq-table th, .bq-table td { padding: 8px 10px; border-bottom: 1px solid var(--bq-bord); text-align: left; vertical-align: top; }
.bq-table input[type=number] { width: 72px; padding: 6px; border: 1px solid var(--bq-bord); border-radius: 6px; }
.bq-total { font-size: 18px; text-align: right; }
.bq-actions { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; }
.bq-commande fieldset { border: 1px solid var(--bq-bord); border-radius: 8px; margin: 0 0 16px; padding: 10px 16px 14px; }
.bq-commande legend { font-weight: 700; padding: 0 6px; }
.bq-recap ul { list-style: none; margin: 0; padding: 0; }
.bq-recap li { padding: 4px 0; border-bottom: 1px dashed var(--bq-bord); }
.bq-droite { float: right; }
.bq-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.bq-vide { color: #666; padding: 18px 0; }
.bq-merci { padding: 8px 0; }
@media (max-width: 560px) { .bq-table thead { display: none; } .bq-table td { display: block; border-bottom: 0; padding: 4px 10px; } .bq-table tr { display: block; border-bottom: 1px solid var(--bq-bord); padding: 6px 0; } }
.bq-billets-liste { display: flex; flex-wrap: wrap; gap: 14px; margin: 10px 0; }
.bq-billet { border: 1px solid var(--bq-bord); border-radius: 8px; padding: 12px; text-align: center; max-width: 230px; background: #fff; }
.bq-billet svg { display: block; margin: 0 auto 8px; max-width: 100%; height: auto; }
.bq-billet-utilise, .bq-billet-annule { opacity: .55; }

/* icone panier des cartes et fenetre « fiche produit » */
.bq-carte form.bq-form { margin: 0; }
.bq-carte-panier { position: absolute; top: 8px; right: 8px; z-index: 2; display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; padding: 0; border: 0; border-radius: 50%; background: var(--bq-couleur); color: #fff; cursor: pointer; box-shadow: 0 1px 4px rgba(0,0,0,.25); text-decoration: none; }
.bq-carte-panier:hover, .bq-carte-panier:focus { filter: brightness(1.12); }
.bq-modale { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 99990; background: rgba(15,23,42,.55); overflow-y: auto; padding: 24px 12px; box-sizing: border-box; }
.bq-modale[hidden] { display: none; }
.bq-modale-boite { position: relative; max-width: 980px; margin: 0 auto; background: #fff; color: #1f2937; border-radius: 10px; padding: 22px 22px 26px; box-shadow: 0 10px 40px rgba(0,0,0,.35); }
.bq-modale-fermer { position: absolute; top: 8px; right: 10px; width: 36px; height: 36px; border: 0; background: transparent; font-size: 26px; line-height: 1; cursor: pointer; color: #555; }
.bq-contenu { margin: 16px 0; line-height: 1.55; }
.bq-contenu img { max-width: 100%; height: auto; }
.bq-modale .bq-produit { margin-top: 6px; }
@media (max-width: 760px) { .bq-modale { padding: 8px 6px; } .bq-modale-boite { padding: 16px 12px 20px; } }

/* espace client */
.bq-espace-bloc { margin: 0 0 26px; padding: 14px 16px; border: 1px solid var(--bq-bord); border-radius: 8px; background: #fff; }
.bq-espace-bloc h3 { margin: 0 0 10px; }
.bq-adresses { list-style: none; margin: 0 0 12px; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.bq-adresses li { border: 1px solid var(--bq-bord); border-radius: 8px; padding: 10px 12px; line-height: 1.45; }
.bq-adresses form { display: inline; margin: 0; }
.bq-badge-info { background: #e8f0fb; color: #1f3d7a; margin: 0 0 0 4px; }
.bq-ajout-adresse summary { cursor: pointer; font-weight: 600; margin: 6px 0; }
.bq-espace-compte { margin: 0 0 18px; }

.bq-recherche-info { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: baseline; margin: 0 0 14px; padding: 8px 12px; background: #eef4fb; border: 1px solid #cfe0f3; border-radius: 6px; }
.bq-recherche-info span { font-weight: 600; }
.bq-gratuit { color: #15803d; font-weight: 700; }
.bq-pay-gratuit { background: #e7f6ec; border: 1px solid #9bd3ad; border-radius: 6px; padding: 8px 12px; color: #14532d; }

/* ===== Finitions visuelles (03/11/2026) : liens en pastilles, cartes vivantes, boutons, bandeau, fenetre. Tout se regle par les variables --bq-* du Template. ===== */
.bq { --bq-couleur: #1f4e9c; --bq-couleur-2: #3b7ddd; --bq-doux: #eef4fb; --bq-texte: #1f2937; --bq-rayon: 12px; --bq-ombre: 0 2px 10px rgba(15, 35, 70, .08); --bq-ombre-fort: 0 14px 30px rgba(15, 35, 70, .18); color: var(--bq-texte); }
.bq a { color: var(--bq-couleur); text-decoration: none; text-underline-offset: 3px; transition: color .15s, background-color .15s; }
.bq a:hover, .bq a:focus-visible { text-decoration: underline; }
.bq :focus-visible { outline: 3px solid rgba(59, 125, 221, .45); outline-offset: 2px; border-radius: 6px; }
/* barre du haut : liens en pastilles */
.bq-haut { align-items: center; padding: 8px 10px; background: var(--bq-doux); border-radius: 999px; }
.bq-haut > a, .bq-haut-droite a { display: inline-block; padding: 6px 14px; border-radius: 999px; font-weight: 600; font-size: 14px; background: #fff; box-shadow: 0 1px 3px rgba(15, 35, 70, .1); }
.bq-haut-droite { display: flex; flex-wrap: wrap; gap: 6px; }
.bq-haut-droite a { margin-left: 0; }
.bq-haut a:hover, .bq-haut a:focus-visible { background: var(--bq-couleur); color: #fff; text-decoration: none; box-shadow: 0 4px 10px rgba(31, 78, 156, .3); }
.bq-lien-panier { background: linear-gradient(135deg, var(--bq-couleur), var(--bq-couleur-2)) !important; color: #fff !important; }
.bq-lien-panier::before { content: ""; display: inline-block; width: 16px; height: 16px; margin-right: 7px; vertical-align: -3px; background-color: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4h2l2.4 11h10.2L20 7H6'/%3E%3Ccircle cx='9' cy='19' r='1.5'/%3E%3Ccircle cx='17' cy='19' r='1.5'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4h2l2.4 11h10.2L20 7H6'/%3E%3Ccircle cx='9' cy='19' r='1.5'/%3E%3Ccircle cx='17' cy='19' r='1.5'/%3E%3C/svg%3E") center / contain no-repeat; }
.bq-lien-panier:hover { filter: brightness(1.1); }
/* recherche et filtres */
.bq-filtres { padding: 10px; background: #fff; border: 1px solid var(--bq-bord); border-radius: var(--bq-rayon); box-shadow: var(--bq-ombre); }
.bq-filtres input, .bq-filtres select { flex: 1 1 180px; min-width: 0; background: #f8fafc; }
.bq-filtres input:focus, .bq-filtres select:focus { background: #fff; border-color: var(--bq-couleur-2); outline: none; box-shadow: 0 0 0 3px rgba(59, 125, 221, .2); }
.bq-filtres button { background: linear-gradient(135deg, var(--bq-couleur), var(--bq-couleur-2)); color: #fff; border: 0; font-weight: 600; cursor: pointer; padding: 8px 18px; }
.bq-filtres button:hover { filter: brightness(1.1); }
.bq-recherche-info a { font-weight: 600; }
/* cartes produit */
.bq-grille { gap: 22px; }
.bq-carte { border: 0; border-radius: var(--bq-rayon); box-shadow: var(--bq-ombre); transition: transform .2s ease, box-shadow .2s ease; }
.bq-carte:hover, .bq-carte:focus-within { transform: translateY(-5px); box-shadow: var(--bq-ombre-fort); }
.bq-carte-lien:hover { text-decoration: none; }
.bq-carte-img img { transition: transform .35s ease; }
.bq-carte:hover .bq-carte-img img { transform: scale(1.06); }
.bq-carte-titre { font-size: 16px; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.6em; }
.bq-carte-prix { display: inline-block; margin: 4px 12px 0; padding: 3px 12px; background: var(--bq-doux); border-radius: 999px; font-size: 15px; }
.bq-carte-panier { transition: transform .15s, filter .15s; }
.bq-carte-panier:hover { transform: scale(1.12); }
.bq-epuise .bq-carte-titre, .bq-epuise .bq-carte-prix { opacity: .7; }
.bq-badge { background: #fdeceb; color: #9b1c1c; font-weight: 600; }
/* boutons */
.bq-bouton { background: linear-gradient(135deg, var(--bq-couleur), var(--bq-couleur-2)); border-radius: 999px; padding: 11px 26px; box-shadow: 0 4px 12px rgba(31, 78, 156, .28); transition: transform .12s, box-shadow .12s, filter .12s; }
.bq-bouton:hover, .bq-bouton:focus-visible { filter: brightness(1.08); transform: translateY(-1px); box-shadow: 0 8px 18px rgba(31, 78, 156, .35); text-decoration: none; color: #fff; }
.bq-bouton:active { transform: translateY(0); box-shadow: 0 2px 6px rgba(31, 78, 156, .3); }
.bq-secondaire { background: #fff; color: var(--bq-couleur); border: 2px solid var(--bq-couleur); box-shadow: none; }
.bq-secondaire:hover, .bq-secondaire:focus-visible { background: var(--bq-couleur); color: #fff; }
.bq-lien-bouton { text-underline-offset: 3px; }
/* fiche produit et panier */
.bq-produit-info h2 { font-size: 28px; line-height: 1.2; margin: 0 0 6px; }
.bq-prix { font-size: 26px; }
.bq-img-principale { box-shadow: var(--bq-ombre); }
.bq-vignette img { transition: transform .15s, border-color .15s; }
.bq-vignette:hover img { transform: translateY(-2px); border-color: var(--bq-couleur-2); }
.bq-table { border-radius: var(--bq-rayon); overflow: hidden; }
.bq-table thead th { background: var(--bq-doux); color: #334155; font-size: 13px; text-transform: uppercase; letter-spacing: .03em; }
.bq-table tbody tr:nth-child(even) { background: #fafbfd; }
.bq-case { border-radius: 10px; transition: border-color .15s, background-color .15s; }
.bq-case:hover { border-color: var(--bq-couleur-2); background: var(--bq-doux); }
.bq-flash { border-radius: 10px; font-weight: 600; box-shadow: var(--bq-ombre); }
.bq-espace-bloc { border: 0; border-radius: var(--bq-rayon); box-shadow: var(--bq-ombre); }
.bq-espace-bloc h3 { padding-bottom: 8px; border-bottom: 2px solid var(--bq-doux); }
.bq-pages a, .bq-page-actuelle { border-radius: 999px; font-weight: 600; }
.bq-pages a:hover { background: var(--bq-doux); text-decoration: none; }
/* fenetre produit */
.bq-modale { backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); animation: bqFondu .18s ease-out; }
.bq-modale-boite { border-radius: 16px; animation: bqMonte .22s ease-out; }
.bq-modale-fermer { border-radius: 50%; transition: background-color .15s; }
.bq-modale-fermer:hover { background: #eef2f7; color: #111; }
@keyframes bqFondu { from { opacity: 0; } to { opacity: 1; } }
@keyframes bqMonte { from { opacity: 0; transform: translateY(14px) scale(.98); } to { opacity: 1; transform: none; } }
@media (max-width: 560px) { .bq-haut { border-radius: 16px; } .bq-produit-info h2 { font-size: 23px; } }
@media (prefers-reduced-motion: reduce) { .bq-carte, .bq-carte-img img, .bq-bouton, .bq-carte-panier, .bq-modale, .bq-modale-boite { transition: none; animation: none; } .bq-carte:hover { transform: none; } .bq-carte:hover .bq-carte-img img { transform: none; } }
/* le Template peut souligner tous les liens du contenu (surligneur) : les pastilles, les cartes et la pagination restent nettes */
.bq .bq-haut a, .bq .bq-carte-lien, .bq .bq-pages a, .bq .bq-carte-panier, .bq .bq-bouton { text-decoration: none !important; text-decoration-thickness: 0 !important; }
.bq .bq-haut a:hover, .bq .bq-carte-lien:hover .bq-carte-titre { text-decoration: none !important; }
.bq .bq-carte-lien:hover .bq-carte-titre { color: var(--bq-couleur-2); }

/* etiquettes, coeur, tri (1.4.0) */
.bq-etiquettes { position: absolute; top: 10px; left: 10px; z-index: 2; display: flex; flex-direction: column; gap: 5px; align-items: flex-start; pointer-events: none; }
.bq-etiquette { padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; letter-spacing: .02em; color: #fff; box-shadow: 0 2px 6px rgba(0, 0, 0, .22); }
.bq-etiquette-nouveau { background: linear-gradient(135deg, #16a34a, #22c55e); }
.bq-etiquette-promo { background: linear-gradient(135deg, #dc2626, #f97316); }
.bq-carte .bq-fav-form, .bq-carte form.bq-form:has(.bq-fav) { margin: 0; }
.bq-fav { position: absolute; top: 54px; right: 8px; z-index: 2; width: 38px; height: 38px; padding: 0; border: 0; border-radius: 50%; background: rgba(255, 255, 255, .92); color: #94a3b8; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 1px 4px rgba(0, 0, 0, .22); transition: transform .15s, color .15s; }
.bq-fav svg { fill: none; }
.bq-fav:hover { transform: scale(1.12); color: #e11d48; }
.bq-fav-on { color: #e11d48; }
.bq-fav-on svg { fill: currentColor; }
.bq-filtre-fav { display: inline-flex; align-items: center; gap: 6px; padding: 0 8px; font-size: 14px; white-space: nowrap; cursor: pointer; }
.bq-filtre-fav input { flex: 0 0 auto; }
.bq-liste-fav { list-style: none; margin: 0 0 8px; padding: 0; }
.bq-liste-fav li { padding: 6px 0; border-bottom: 1px dashed var(--bq-bord); }
.bq-carte-lien .bq-carte-prix s { color: #94a3b8; font-weight: 400; margin-left: 4px; }

/* correctifs d'affichage des cartes (1.4.2) : icone panier toujours blanche (un lien du Template la rendait bleue sur bleu), zone image toujours presente */
.bq .bq-carte-panier, .bq .bq-carte-panier:visited, .bq .bq-carte-panier:hover, .bq .bq-carte-panier:focus { color: #fff !important; }
.bq .bq-carte-panier svg { display: block; width: 20px; height: 20px; stroke: #fff !important; flex: 0 0 auto; }
.bq .bq-carte-panier svg circle { fill: #fff !important; stroke: none !important; }
.bq-carte-img-vide { display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #eef1f6, #e2e7f0); color: #b3bccd; }
.bq-carte-img-vide svg { fill: none; }
.bq-etiquettes { max-width: calc(100% - 70px); }

/* filtres du catalogue : categories a cocher (1.6.0) */
.bq-filtres { display: flex; flex-wrap: wrap; gap: 10px 12px; align-items: center; }
.bq-cats { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; border: 0; margin: 0; padding: 0; flex: 1 1 100%; }
.bq-cats legend { float: left; margin-right: 8px; font-weight: 700; padding: 0; }
.bq-cat-pill { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border: 1px solid var(--bq-bord); border-radius: 999px; background: #fff; cursor: pointer; font-size: 14px; line-height: 1.2; transition: background .15s, border-color .15s; }
.bq-cat-pill:hover { border-color: var(--bq-couleur); }
.bq-cat-pill input { margin: 0; accent-color: var(--bq-couleur); }
.bq-cat-pill:has(input:checked) { background: var(--bq-doux); border-color: var(--bq-couleur); font-weight: 600; }
.bq-cat-pill small { color: #64748b; font-weight: 400; }
.bq-filtre-reinit { font-size: 14px; white-space: nowrap; }

/* ====== Finitions 1.9.0 : lisibilite garantie quel que soit le Template, categories homogenes, liens en boutons ====== */
/* Boutons : couleurs imposees (un style generique button/a du Template ne doit jamais les rendre blancs ou noirs) */
.bq .bq-bouton, .bq-modale .bq-bouton, button.bq-bouton, a.bq-bouton {
  background-color: var(--bq-couleur) !important; background-image: linear-gradient(135deg, var(--bq-couleur), var(--bq-couleur-2)) !important;
  color: #fff !important; -webkit-text-fill-color: #fff !important; text-shadow: none !important; opacity: 1 !important;
  border: 0 !important; text-decoration: none !important; line-height: 1.2; text-align: center; min-height: 42px; box-sizing: border-box;
  display: inline-flex !important; align-items: center; justify-content: center; gap: 8px;
}
.bq .bq-secondaire, .bq-modale .bq-secondaire, button.bq-secondaire, a.bq-secondaire {
  background-color: #fff !important; background-image: none !important; color: var(--bq-couleur) !important; -webkit-text-fill-color: var(--bq-couleur) !important;
  border: 2px solid var(--bq-couleur) !important;
}
.bq .bq-secondaire:hover, .bq .bq-secondaire:focus-visible, .bq-modale .bq-secondaire:hover { background-color: var(--bq-couleur) !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }
.bq .bq-bouton:disabled, .bq-modale .bq-bouton:disabled { opacity: .55 !important; cursor: not-allowed; }
.bq .bq-lien-bouton { color: var(--bq-couleur) !important; background: none !important; }

/* Categories : meme hauteur pour tous, largeur selon le texte, sans retour a la ligne */
.bq .bq-cats { gap: 8px 10px; }
.bq .bq-cat-pill { display: inline-flex !important; align-items: center; width: auto !important; flex: 0 0 auto; height: 38px; min-height: 38px; padding: 0 16px !important; box-sizing: border-box; white-space: nowrap; margin: 0 !important; border-radius: 999px; font-size: 14px; line-height: 1 !important; background: #fff; border: 1px solid var(--bq-bord); box-shadow: 0 1px 2px rgba(15, 35, 70, .06); color: #1f2937; }
.bq .bq-cat-pill:hover { box-shadow: 0 3px 8px rgba(15, 35, 70, .12); transform: translateY(-1px); }
.bq .bq-cat-pill:has(input:checked) { background: var(--bq-couleur); border-color: var(--bq-couleur); color: #fff; }
.bq .bq-cat-pill:has(input:checked) small { color: rgba(255, 255, 255, .85); }
.bq .bq-cat-pill small { background: rgba(15, 35, 70, .07); border-radius: 999px; padding: 2px 7px; font-size: 12px; }
.bq .bq-cat-pill:has(input:checked) small { background: rgba(255, 255, 255, .22); }

/* Liens d'action (Continuer mes achats, Voir tous les produits, favoris...) : boutons discrets en pastille avec fleche, plus de soulignement */
.bq .bq-actions a:not(.bq-bouton), .bq a.bq-recherche-retour, .bq a.bq-lien-retour {
  display: inline-flex; align-items: center; gap: 8px; padding: 9px 20px; border-radius: 999px; font-weight: 600; font-size: 15px;
  color: var(--bq-couleur) !important; background: var(--bq-doux) !important; border: 1px solid transparent; text-decoration: none !important;
  box-shadow: 0 1px 3px rgba(15, 35, 70, .08); transition: transform .15s, box-shadow .15s, background-color .15s, color .15s;
}
.bq .bq-actions a:not(.bq-bouton)::before { content: "\2190"; font-weight: 700; transition: transform .15s; }
.bq .bq-actions a:not(.bq-bouton):hover, .bq a.bq-recherche-retour:hover, .bq a.bq-lien-retour:hover {
  background: var(--bq-couleur) !important; color: #fff !important; transform: translateY(-1px); box-shadow: 0 6px 14px rgba(31, 78, 156, .25);
}
.bq .bq-actions a:not(.bq-bouton):hover::before { transform: translateX(-3px); }
.bq .bq-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 18px 0; }

/* ====== 1.9.1 : style commun a tout le parcours (panier, commande, confirmation, espace client) ====== */
.bq h2 { margin: 0 0 18px; font-size: 1.6em; line-height: 1.2; color: #1f2937; }
.bq .bq-table { width: 100%; border-collapse: separate; border-spacing: 0; background: #fff; border: 1px solid var(--bq-bord); border-radius: 14px; overflow: hidden; box-shadow: 0 2px 10px rgba(15, 35, 70, .06); margin: 0 0 16px; }
.bq .bq-table th { background: var(--bq-doux); color: #1f2937; font-weight: 700; font-size: 13px; text-transform: uppercase; letter-spacing: .03em; text-align: left; padding: 12px 14px; border: 0; }
.bq .bq-table td { padding: 14px; border: 0; border-top: 1px solid var(--bq-bord); vertical-align: middle; background: #fff; }
.bq .bq-table input[type=number], .bq .bq-promo input[type=text] { height: 42px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 10px; padding: 0 12px; font: inherit; background: #fff; color: #1f2937; }
.bq .bq-table input[type=number] { width: 84px; text-align: center; }
.bq .bq-table input:focus, .bq .bq-promo input:focus { outline: 2px solid var(--bq-couleur); outline-offset: 1px; border-color: var(--bq-couleur); }
.bq .bq-ligne-titre { font-weight: 600; }
/* lignes d'action de formulaire : bouton aligne sur la hauteur des champs, jamais « trop haut » */
.bq form > p:has(> button.bq-bouton), .bq form > p.bq-promo { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 10px 0; }
.bq .bq-promo label { display: inline-flex; align-items: center; gap: 10px; margin: 0; font-weight: 600; }
.bq .bq-promo .bq-bouton, .bq form > p > button.bq-bouton { margin: 0; vertical-align: middle; align-self: center; height: 42px; min-height: 42px; padding: 0 22px !important; }
.bq .bq-total { text-align: right; font-size: 1.2em; margin: 14px 0; padding: 12px 18px; background: var(--bq-doux); border-radius: 12px; }
.bq .bq-total strong { color: var(--bq-couleur); font-size: 1.15em; }
.bq .bq-actions { justify-content: space-between; }
.bq .bq-actions .bq-bouton { font-size: 16px; padding: 0 30px !important; height: 48px; }
.bq .bq-lien-bouton { text-decoration: none !important; font-weight: 600; padding: 4px 8px; border-radius: 8px; }
.bq .bq-lien-bouton:hover { background: var(--bq-doux) !important; }
/* formulaire de commande */
.bq fieldset { border: 1px solid var(--bq-bord); border-radius: 14px; padding: 16px 18px 18px; margin: 0 0 16px; background: #fff; box-shadow: 0 2px 10px rgba(15, 35, 70, .05); }
.bq fieldset legend { padding: 0 10px; font-weight: 700; color: var(--bq-couleur); }
.bq fieldset label { display: block; margin: 8px 0 4px; font-weight: 600; font-size: 14px; }
.bq fieldset input[type=text], .bq fieldset input[type=email], .bq fieldset input[type=tel], .bq fieldset select, .bq fieldset textarea { width: 100%; max-width: 560px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 10px; padding: 10px 12px; font: inherit; background: #fff; color: #1f2937; }
.bq fieldset input:focus, .bq fieldset select:focus, .bq fieldset textarea:focus { outline: 2px solid var(--bq-couleur); outline-offset: 1px; border-color: var(--bq-couleur); }
.bq .bq-case { display: flex !important; align-items: flex-start; gap: 10px; padding: 10px 14px; margin: 10px 0; background: var(--bq-doux); border-radius: 12px; font-weight: 500 !important; font-size: 14px; }
.bq .bq-case input { margin-top: 3px; accent-color: var(--bq-couleur); flex: 0 0 auto; }
.bq .bq-connexion-requise { text-align: center; padding: 30px 20px; background: var(--bq-doux); border-radius: 16px; }
.bq .bq-connexion-requise p { margin: 0 0 14px; }
.bq .bq-flash { border-radius: 12px; padding: 10px 14px; margin: 0 0 14px; }
@media (max-width: 640px) { .bq .bq-table th:nth-child(2), .bq .bq-table td:nth-child(2) { display: none; } .bq .bq-total { text-align: left; } .bq .bq-actions { justify-content: flex-start; } }
.bq .bq-promo label { width: auto !important; flex: 0 0 auto; }
.bq .bq-promo input[type=text] { width: 170px !important; }

/* 1.9.2 : liens du haut (Mon espace, Mes commandes, Panier...) : couleurs imposees, jamais illisibles quel que soit le survol du Template */
.bq .bq-haut > a, .bq .bq-haut-droite a { color: var(--bq-couleur) !important; -webkit-text-fill-color: var(--bq-couleur) !important; background-color: #fff !important; }
.bq .bq-haut > a:hover, .bq .bq-haut > a:focus, .bq .bq-haut > a:focus-visible, .bq .bq-haut > a:active,
.bq .bq-haut-droite a:hover, .bq .bq-haut-droite a:focus, .bq .bq-haut-droite a:focus-visible, .bq .bq-haut-droite a:active {
  background-color: var(--bq-couleur) !important; color: #fff !important; -webkit-text-fill-color: #fff !important; text-decoration: none !important;
}
.bq .bq-haut .bq-lien-panier, .bq .bq-haut .bq-lien-panier:hover, .bq .bq-haut .bq-lien-panier:focus { color: #fff !important; -webkit-text-fill-color: #fff !important; }
.bq .bq-lien-panier:hover { filter: brightness(1.12); }
/* tous les liens et boutons du module : un survol du Template ne change jamais la couleur du texte en une teinte incompatible */
.bq a.bq-bouton:hover, .bq a.bq-bouton:focus, .bq button.bq-bouton:hover, .bq button.bq-bouton:focus { color: #fff !important; -webkit-text-fill-color: #fff !important; }
.bq a.bq-secondaire:hover, .bq button.bq-secondaire:hover { color: #fff !important; -webkit-text-fill-color: #fff !important; }

/* 1.10.3 : la fenetre produit (creee sous <body>, hors de .bq) recoit les memes variables de couleur : sinon le bouton « Ajouter au panier » etait blanc sur blanc */
.bq-modale { --bq-couleur: #1f4e9c; --bq-couleur-2: #3b7ddd; --bq-doux: #eef4fb; --bq-bord: #dcdfe4; --bq-texte: #1f2937; --bq-rayon: 12px; --bq-ombre: 0 2px 10px rgba(15, 35, 70, .08); }
.bq-modale .bq-bouton, .bq-modale button.bq-bouton { background-color: var(--bq-couleur, #1f4e9c) !important; background-image: linear-gradient(135deg, var(--bq-couleur, #1f4e9c), var(--bq-couleur-2, #3b7ddd)) !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }
.bq-modale .bq-bouton.bq-secondaire, .bq-modale button.bq-bouton.bq-secondaire { background-color: #fff !important; background-image: none !important; color: var(--bq-couleur, #1f4e9c) !important; -webkit-text-fill-color: var(--bq-couleur, #1f4e9c) !important; border: 2px solid var(--bq-couleur, #1f4e9c) !important; }
.bq-modale .bq-lien-bouton { color: var(--bq-couleur, #1f4e9c) !important; background: none !important; }
