.product-quantity:has(.gnep-wrap) { flex-wrap: wrap; }
.gnep-wrap { flex: 0 0 100%; width: 100%; container: gnep / inline-size; }
.gnep { margin: 18px 0 0; padding: 14px 18px; border: 0; border-radius: 16px; background: rgb(255, 255, 255); box-shadow: rgba(16, 52, 54, 0.05) 0px 1px 3px; font-size: 15px; color: rgb(16, 52, 54); }
.gnep-icon { flex: 0 0 auto; width: 24px; height: 20px; margin-top: 2px; background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 20' fill='none'%3E%3Cpath d='M16 14V1H1V14H16ZM16 14H23V9L20 6H16V14ZM8 16.5C8 17.8807 6.88071 19 5.5 19C4.11929 19 3 17.8807 3 16.5C3 15.1193 4.11929 14 5.5 14C6.88071 14 8 15.1193 8 16.5ZM21 16.5C21 17.8807 19.8807 19 18.5 19C17.1193 19 16 17.8807 16 16.5C16 15.1193 17.1193 14 18.5 14C19.8807 14 21 15.1193 21 16.5Z' stroke='%237FBAB8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 0 0 / contain no-repeat; }
.gnep.gnep-busy .gnep-result { opacity: 0.45; transition: opacity 0.15s ease; }
.gnep-row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin: 12px 0 2px 34px; }
.gnep-row input { width: 132px; height: 42px; padding: 0 18px; border: 1px solid rgba(16, 52, 54, 0.18); border-radius: 50px; background: rgb(255, 255, 255); font-size: 15px; color: rgb(16, 52, 54); letter-spacing: 1px; transition: border-color 0.2s ease, box-shadow 0.2s ease; }
.gnep-row input::placeholder { color: rgba(16, 52, 54, 0.4); letter-spacing: 0; }
.gnep-row input:focus { outline: none; border-color: rgb(112, 162, 46); box-shadow: rgba(112, 162, 46, 0.18) 0 0 0 3px; }
.gnep-row button { height: 42px; padding: 0 22px; border: 0; border-radius: 50px; background: rgb(112, 162, 46); color: rgb(255, 255, 255); font-weight: 600; cursor: pointer; font-size: 15px; transition: background 0.2s ease; }
.gnep-row button:hover { background: rgb(91, 138, 36); }
.gnep-row button[disabled] { opacity: 0.6; cursor: default; }
.gnep-result { margin: 10px 0 0 34px; padding: 0; list-style: none; }
.gnep-result li { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 9px 0; border-top: 1px solid rgba(16, 52, 54, 0.08); }
.gnep-result .gnep-label { flex: 1 1 0%; }
.gnep-result small { display: block; margin-top: 2px; color: rgba(16, 52, 54, 0.5); font-size: 12.5px; }
.gnep-result .gnep-price { font-weight: 700; white-space: nowrap; color: rgb(16, 52, 54); }
.gnep-result .gnep-price.free { color: rgb(112, 162, 46); }
.gnep-note { margin: 8px 0 0 34px; padding-top: 8px; border-top: 1px solid rgba(16, 52, 54, 0.08); color: rgba(16, 52, 54, 0.5); font-size: 12.5px; line-height: 1.45; }
.gnep-msg { margin: 10px 0 0 34px; padding: 8px 12px; border-radius: 8px; background: rgba(255, 154, 82, 0.12); color: rgb(154, 86, 0); font-size: 13px; }
.gnep-err { margin: 10px 0 0 34px; padding: 8px 12px; border-radius: 8px; background: rgba(255, 76, 76, 0.1); color: rgb(196, 43, 28); font-size: 13px; }
@media (max-width: 767px) { .gnep-row, .gnep-result, .gnep-note, .gnep-msg, .gnep-err { margin-left: 0; } }
.product-discounts.js-product-discounts { display: none; }
.product-minimal-quantity { font-size: 13px; color: rgba(16, 52, 54, 0.55); margin: 8px 0 0; }
.gnep-card-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px 16px; }
.gnep-discounts .product-discounts-title { display: flex; align-items: center; gap: 10px; margin: 0; padding: 0; border: 0; font-size: 15px; font-weight: 400; color: rgb(16, 52, 54); white-space: nowrap; }
.gnep-discounts > .table-product-discounts { width: 100%; margin-top: 15px; }
.gnep-discounts > .table-product-discounts thead tr th, .gnep-discounts > .table-product-discounts tbody tr td { border: 0; }
.gnep-discounts > .table-product-discounts thead tr th:first-child, .gnep-discounts > .table-product-discounts tbody tr td:first-child { border-top-left-radius: 4px; border-bottom-left-radius: 4px; }
.gnep-discounts:not(.gnep-with-port) > .table-product-discounts .gnep-col-ttc, .gnep-discounts.gnep-with-port > .table-product-discounts .gnep-col-port { border-top-right-radius: 4px; border-bottom-right-radius: 4px; }
.gnep-discounts > .table-product-discounts thead tr th { background: rgb(130, 130, 127); color: rgb(255, 255, 255); font-family: "Golos Text"; font-size: 14px; font-style: normal; font-weight: 700; line-height: normal; padding: 14px 16px; }
.gnep-discounts:not(.gnep-with-port) > .table-product-discounts th.gnep-col-ttc { padding: 14px 25px; }
.gnep-discounts > .table-product-discounts tbody tr { background: transparent; }
.gnep-discounts > .table-product-discounts tbody tr:nth-child(2n) { background: rgb(227, 222, 219); }
.gnep-discounts > .table-product-discounts tbody tr td { color: rgb(16, 52, 54); font-family: "Golos Text"; font-size: 14px; font-style: normal; font-weight: 400; line-height: normal; padding: 14px 16px; white-space: nowrap; }
.gnep-discounts:not(.gnep-with-port) > .table-product-discounts td.gnep-col-ttc { padding: 14px 30px; }
.gnep-discounts > .table-product-discounts tbody tr td.gnep-col-ht, .gnep-discounts > .table-product-discounts tbody tr td.gnep-col-ttc { font-weight: bold; }
.gnep-discounts .product-discounts-title::before { content: ""; flex: 0 0 auto; width: 20px; height: 20px; background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M19 5L5 19' stroke='%237FBAB8' stroke-width='2' stroke-linecap='round'/%3E%3Ccircle cx='6.5' cy='6.5' r='2.5' stroke='%237FBAB8' stroke-width='2'/%3E%3Ccircle cx='17.5' cy='17.5' r='2.5' stroke='%237FBAB8' stroke-width='2'/%3E%3C/svg%3E") 0px 0px / contain no-repeat; }
.gnep-row input { width: 132px; height: 42px; padding: 0px 16px; border: 1px solid rgba(16, 52, 54, 0.18); border-radius: 50px; background: rgb(255, 255, 255); font-size: 15px; color: rgb(16, 52, 54); letter-spacing: 1px; transition: border-color 0.2s ease, box-shadow 0.2s ease; }
.gnep-row input::placeholder { color: rgba(16, 52, 54, 0.4); }
.gnep-row input:focus { outline: none; border-color: rgb(112, 162, 46); box-shadow: rgba(112, 162, 46, 0.18) 0px 0px 0px 3px; }
.gnep-row button { height: 42px; padding: 0px 22px; border: 0px; border-radius: 50px; background: rgb(112, 162, 46); color: rgb(255, 255, 255); font-weight: 600; cursor: pointer; font-size: 14px; transition: background 0.2s ease; }
.gnep-row button:hover { background: rgb(91, 138, 36); }
.gnep-row button[disabled] { opacity: 0.6; cursor: default; }
.gnep-discounts .table-product-discounts { margin-top: 12px; margin-bottom: 0px; }
.gnep-discounts > .table-product-discounts thead tr th { background: rgb(16, 52, 54); }
.gnep-discounts > .table-product-discounts tbody tr:nth-child(2n) { background: rgba(16, 52, 54, 0.04); }
.gnep-discounts:not(.gnep-with-port) .gnep-col-port { display: none; }
.gnep-discounts.gnep-with-port > .table-product-discounts thead tr th, .gnep-discounts.gnep-with-port > .table-product-discounts tbody tr td { padding: 14px 10px; }
.gnep-discounts.gnep-with-port > .table-product-discounts .gnep-col-port { padding-right: 14px; }
.gnep-discounts .gnep-col-port strong { font-weight: 700; color: rgb(78, 120, 30); }
.gnep-discounts .gnep-col-port small, .gnep-discounts .gnep-ht-inline, .gnep-discounts .gnep-col-qty small { display: block; margin-top: 2px; font-size: 12px; font-weight: 400; color: rgba(16, 52, 54, 0.55); }
.gnep-discounts > .table-product-discounts thead tr th { white-space: nowrap; }
.gnep-discounts .gnep-col-port .gnep-muted { font-weight: 400; color: rgba(16, 52, 54, 0.55); }
/* Mise en page compacte selon la largeur de la carte (colonne produit étroite sur mobile, mais aussi vers 1024 px) */
.gnep-discounts.gnep-busy .gnep-col-port { opacity: 0.45; transition: opacity 0.15s ease; }
.gnep-discounts .gnep-ht-inline { display: none; }
@container gnep (max-width: 479px) {
  .gnep-discounts > .table-product-discounts .gnep-col-ht { display: none; }
  .gnep-discounts .gnep-ht-inline { display: block; }
  .gnep-discounts > .table-product-discounts thead tr th, .gnep-discounts > .table-product-discounts tbody tr td,
  .gnep-discounts.gnep-with-port > .table-product-discounts thead tr th, .gnep-discounts.gnep-with-port > .table-product-discounts tbody tr td { padding: 12px 6px; font-size: 13px; }
  .gnep-discounts:not(.gnep-with-port) > .table-product-discounts th.gnep-col-ttc, .gnep-discounts:not(.gnep-with-port) > .table-product-discounts td.gnep-col-ttc,
  .gnep-discounts.gnep-with-port > .table-product-discounts .gnep-col-port { padding: 12px 10px 12px 6px; }
  .gnep-discounts .gnep-col-port small, .gnep-discounts .gnep-ht-inline, .gnep-discounts .gnep-col-qty small { font-size: 11.5px; }
}
@container gnep (max-width: 339px) {
  .gnep-discounts > .table-product-discounts thead tr th, .gnep-discounts.gnep-with-port > .table-product-discounts thead tr th { font-size: 12px; }
  .gnep-discounts.gnep-with-port > .table-product-discounts thead tr th, .gnep-discounts.gnep-with-port > .table-product-discounts tbody tr td { padding: 12px 5px; }
  .gnep-discounts .gnep-col-port small, .gnep-discounts .gnep-ht-inline, .gnep-discounts .gnep-col-qty small { font-size: 11px; }
}
/* Fiche avec grille dégressive : une seule carte, tableau toujours visible, code postal dans la ligne de titre */
.gnep.gnep-card { padding: 16px 18px 18px; overflow-x: auto; }
.gnep-card .gnep-row { margin: 0; flex-wrap: nowrap; }
.gnep-card .gnep-row-label { margin: 0; font-size: 15px; font-weight: 400; color: rgb(16, 52, 54); white-space: nowrap; }
.gnep-card .gnep-row input { height: 40px; }
.gnep-card .gnep-row button { height: 40px; padding: 0 18px; background: transparent; color: rgb(91, 138, 36); border: 1px solid rgb(112, 162, 46); }
.gnep-card .gnep-row button:hover { background: rgb(112, 162, 46); color: rgb(255, 255, 255); }
.gnep-card .gnep-msg, .gnep-card .gnep-err { margin-left: 0; }
.gnep-grid-pickup { margin: 12px 0 0; font-size: 13px; color: rgba(16, 52, 54, 0.7); }
/* Calcul en cours : anneau discret dans le bouton OK */
.gnep-card.gnep-busy .gnep-go { position: relative; color: transparent; }
.gnep-card.gnep-busy .gnep-go::after { content: ""; position: absolute; top: 50%; left: 50%; width: 14px; height: 14px; margin: -8px 0 0 -8px; border: 2px solid rgb(112, 162, 46); border-right-color: transparent; border-radius: 50%; animation: gnep-spin 0.7s linear infinite; }
@keyframes gnep-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .gnep-card.gnep-busy .gnep-go::after { animation: none; } }
/* Fiche sans grille : icône camion dans le titre, tableau des modes de livraison pour la quantité choisie */
.gnep-solo .product-discounts-title::before { content: none; }
.gnep-solo .product-discounts-title .gnep-icon { margin-top: 0; }
.gnep-solo:not(.gnep-with-port) > .table-product-discounts { display: none; }
.gnep-solo.gnep-busy tbody { opacity: 0.45; transition: opacity 0.15s ease; }
.gnep-solo > .table-product-discounts .gnep-col-mode { white-space: normal; }
.gnep-solo > .table-product-discounts .gnep-col-mode small { display: block; margin-top: 2px; font-size: 12px; color: rgba(16, 52, 54, 0.55); }
.gnep-solo > .table-product-discounts .gnep-col-price { width: 1%; text-align: right; white-space: nowrap; border-top-right-radius: 4px; border-bottom-right-radius: 4px; }
.gnep-solo > .table-product-discounts tbody tr td.gnep-col-price { font-weight: 700; }
.gnep-solo > .table-product-discounts tbody tr td.gnep-free { color: rgb(78, 120, 30); }
.gnep-solo.gnep-discounts > .table-product-discounts thead tr th, .gnep-solo.gnep-discounts > .table-product-discounts tbody tr td { padding: 14px 16px; vertical-align: middle; }
@container gnep (max-width: 479px) {
  .gnep-card .gnep-row { flex: 1 1 100%; }
  .gnep-card .gnep-row input { flex: 1 1 0; width: 0; min-width: 0; }
  .gnep-solo.gnep-discounts > .table-product-discounts thead tr th, .gnep-solo.gnep-discounts > .table-product-discounts tbody tr td { padding: 12px 10px; }
  .gnep-solo > .table-product-discounts th.gnep-col-price { white-space: normal; }
}
/* Panier : même carte que la fiche sans grille (.gnep-card.gnep-solo), modes de livraison pour tout le panier.
   Le bloc est son propre conteneur : sa mise en page compacte suit sa largeur, comme sur la fiche. */
.gnep.gnep-ce { margin: 24px 0 20px; container: gnep / inline-size; }
/* Écran tactile : 16 px minimum dans le champ code postal, sinon Safari iOS zoome la page dès qu'on le touche. */
@media (pointer: coarse) { .gnep-row input { font-size: 16px; } }
/* Carte très étroite (écran de 320 à 360 px) : marges du champ et du bouton réduites pour que le code postal ne soit pas rogné. */
@container gnep (max-width: 339px) {
  .gnep-card .gnep-row input { padding: 0 12px; letter-spacing: 0.5px; }
  .gnep-card .gnep-row button { padding: 0 14px; }
}
