/* ============================================================
 * Widgets panier Fidèle — rendu boutique (maquette Heho).
 *
 * Un widget = markup fixe .fidele-cw piloté par des design tokens
 * (variables CSS --fidele-widget-*) posés inline par le plugin depuis la config
 * SaaS, + 3 styles prêts à l'emploi : ligne · carte · bannière.
 * Miroir exact du CSS maquette (loyalty/cart-widgets.css) — l'aperçu
 * du dashboard utilise les mêmes règles.
 * ============================================================ */

.fidele-cart-widgets {
  display: block;
  margin: 0 0 16px;
}

.fidele-cart-widgets:empty {
  display: none;
  margin: 0;
}

/* ============ .fidele-cw — un widget configurable ============ */

.fidele-cw {
  /* design tokens — réécrits inline par la config */
  --fidele-widget-font: 'Instrument Serif', Georgia, serif;
  --fidele-widget-title-size: 19px;
  --fidele-widget-text: #211e1a;
  --fidele-widget-muted: #8a8378;
  --fidele-widget-bg: #ffffff;
  --fidele-widget-accent: #b47a2e;
  --fidele-widget-accent-ink: #ffffff;
  --fidele-widget-accent-soft: #f7ebd5;
  --fidele-widget-bw: 1px;
  --fidele-widget-bc: #e7dfd0;
  --fidele-widget-radius: 12px;
  --fidele-widget-shadow: none;
  --fidele-widget-pad: 18px;
  --fidele-widget-select-bg: #ffffff;
  --fidele-widget-select-text: var(--fidele-widget-text);
  --fidele-widget-select-border: var(--fidele-widget-bc);
  --fidele-widget-select-focus: var(--fidele-widget-accent);
  --fidele-widget-select-radius: 8px;
  --fidele-widget-input-bg: #ffffff;
  --fidele-widget-input-text: #211e1a;

  position: relative;
  background: var(--fidele-widget-bg);
  border: var(--fidele-widget-bw) solid var(--fidele-widget-bc);
  border-radius: var(--fidele-widget-radius);
  box-shadow: var(--fidele-widget-shadow);
  padding: var(--fidele-widget-pad);
  color: var(--fidele-widget-text);
  font-family: var(--fidele-widget-body-font, 'Manrope', system-ui, sans-serif);
  margin-bottom: 14px;
}

.fidele-cw:last-child {
  margin-bottom: 0;
}

/* sous-éléments partagés */
.fidele-cw__img {
  flex-shrink: 0;
  border-radius: 8px;
  overflow: hidden;
  background: var(--fidele-widget-icon-bg, var(--fidele-widget-accent-soft));
}

.fidele-cw__img img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.fidele-cw__icon {
  flex-shrink: 0;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--fidele-widget-icon-bg, var(--fidele-widget-accent-soft));
  color: var(--fidele-widget-accent);
}

.fidele-cw__icon svg {
  width: 22px;
  height: 22px;
}

/* icône importée par le marchand, à l'intérieur de la pastille */
.fidele-cw__icon .fidele-cw__customicon {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.fidele-cw__title {
  font-family: var(--fidele-widget-font);
  font-size: var(--fidele-widget-title-size);
  font-weight: 600;
  line-height: 1.15;
  color: var(--fidele-widget-text);
  margin: 0;
}

.fidele-cw__points {
  font-family: var(--fidele-widget-font);
  font-weight: 700;
  color: var(--fidele-widget-accent);
}

.fidele-cw__sub {
  font-size: 13px;
  color: var(--fidele-widget-muted);
  line-height: 1.45;
  margin: 5px 0 0;
}

.fidele-cw__checks {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.fidele-cw__check {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-top: 12px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--fidele-widget-accent);
  cursor: pointer;
}

.fidele-cw__check input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}

.fidele-cw__check .fidele-cw__check-box {
  width: 17px;
  height: 17px;
  border-radius: 4px;
  border: 2px solid var(--fidele-widget-accent);
  flex-shrink: 0;
  transition: background 0.12s;
}

.fidele-cw__check.fidele-is-on .fidele-cw__check-box,
.fidele-cw__check input:checked ~ .fidele-cw__check-box {
  background: var(--fidele-widget-accent);
  box-shadow: inset 0 0 0 2px var(--fidele-widget-bg);
}

.fidele-cw__check.fidele-is-loading {
  opacity: 0.55;
  pointer-events: none;
}

.fidele-samples__slots {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin-top: 14px;
}

.fidele-samples__slot {
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
}

.fidele-samples__slot.fidele-is-loading {
  opacity: 0.55;
  pointer-events: none;
}

.fidele-samples__slot-label {
  color: var(--fidele-widget-text);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.3;
}

.fidele-samples__slot-label span {
  color: var(--fidele-widget-muted);
  font-weight: 600;
}

.fidele-samples__select {
  width: 100%;
  min-width: 0;
  min-height: 46px;
  border: 1px solid var(--fidele-widget-select-border);
  border-radius: var(--fidele-widget-select-radius);
  background: var(--fidele-widget-select-bg);
  color: var(--fidele-widget-select-text);
  font: inherit;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.25;
  padding: 0 36px 0 14px;
}

.fidele-cart-widgets .fidele-cw .fidele-samples__select {
  width: 100%;
  min-width: 0;
  min-height: 46px;
  border: 1px solid var(--fidele-widget-select-border);
  border-radius: var(--fidele-widget-select-radius);
  background: var(--fidele-widget-select-bg);
  color: var(--fidele-widget-select-text);
  font-family: inherit;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.25;
  padding: 0 36px 0 14px;
}

.fidele-samples__select:focus {
  border-color: var(--fidele-widget-select-focus);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--fidele-widget-select-focus) 18%, transparent);
  outline: none;
}

.fidele-cart-widgets .fidele-cw .fidele-samples__select:focus {
  border-color: var(--fidele-widget-select-focus);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--fidele-widget-select-focus) 18%, transparent);
  outline: none;
}

.fidele-samples__editor.fidele-is-collapsed {
  display: none;
}

.fidele-cw--samples.fidele-is-editing .fidele-samples__editor {
  display: block;
}

.fidele-cw--samples.fidele-is-editing .fidele-samples__confirmed {
  display: none;
}

.fidele-samples__actions {
  margin-top: 16px;
}

.fidele-samples__submit,
.fidele-samples__edit {
  border: 0;
  border-radius: calc(var(--fidele-widget-select-radius) + 1px);
  background: var(--fidele-widget-accent);
  color: var(--fidele-widget-accent-ink);
  cursor: pointer;
  font: inherit;
  font-size: 13px;
  font-weight: 800;
  line-height: 1.2;
  min-height: 38px;
  padding: 10px 18px;
  text-align: center;
  transition: opacity 0.12s ease, transform 0.12s ease;
}

/* Merchant themes often target native controls (`button[type=button]`,
   `input[type=number]`, selects) inside cart totals. Keep widget tokens in
   charge without leaking resets outside Fidele surfaces. */
.fidele-cart-widgets .fidele-cw .fidele-samples__submit[type='button'],
.fidele-cart-widgets .fidele-cw .fidele-samples__edit[type='button'],
.fidele-cart-widgets .fidele-cw .fidele-points-redemption__button[type='button'] {
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  box-shadow: none;
  text-decoration: none;
  text-transform: none;
  letter-spacing: 0;
  background: var(--fidele-widget-accent);
  color: var(--fidele-widget-accent-ink);
  font-family: inherit;
}

.fidele-samples__submit {
  display: block;
  width: 100%;
  min-height: 48px;
  text-transform: uppercase;
}

.fidele-samples__edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  padding: 9px 16px;
}

.fidele-cart-widgets .fidele-cw .fidele-samples__submit[type='button'] {
  display: block;
  width: 100%;
  min-height: 48px;
  border-radius: calc(var(--fidele-widget-select-radius) + 1px);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.2;
  padding: 10px 18px;
  text-align: center;
  text-transform: uppercase;
}

.fidele-cart-widgets .fidele-cw .fidele-samples__edit[type='button'] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  border-radius: calc(var(--fidele-widget-select-radius) + 1px);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.2;
  padding: 9px 16px;
  text-align: center;
}

.fidele-samples__submit:hover,
.fidele-samples__edit:hover {
  transform: translateY(-1px);
}

.fidele-samples__submit:disabled,
.fidele-samples__edit:disabled {
  cursor: not-allowed;
  opacity: 0.62;
  transform: none;
}

.fidele-samples__submit.fidele-is-loading,
.fidele-samples__edit.fidele-is-loading {
  cursor: wait;
}

.fidele-points-redemption__controls {
  display: grid;
  grid-template-columns: minmax(92px, 128px) minmax(0, 1fr);
  gap: 10px;
  margin-top: 14px;
  align-items: stretch;
}

.fidele-points-redemption__input {
  width: 100%;
  min-width: 0;
  min-height: 42px;
  border: 1px solid var(--fidele-widget-bc);
  border-radius: 8px;
  background: var(--fidele-widget-input-bg);
  color: var(--fidele-widget-input-text);
  font: inherit;
  font-size: 14px;
  font-weight: 700;
  padding: 0 10px;
}

.fidele-cart-widgets .fidele-cw .fidele-points-redemption__input[type='number'] {
  width: 100%;
  min-width: 0;
  min-height: 42px;
  border: 1px solid var(--fidele-widget-bc);
  border-radius: 8px;
  background: var(--fidele-widget-input-bg);
  color: var(--fidele-widget-input-text);
  font-family: inherit;
  font-size: 14px;
  font-weight: 700;
  padding: 0 10px;
}

.fidele-points-redemption__input:focus {
  border-color: var(--fidele-widget-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--fidele-widget-accent) 18%, transparent);
  outline: none;
}

.fidele-cw--points-redemption.fidele-is-locked .fidele-cw__icon {
  opacity: 0.72;
}

.fidele-points-redemption__notice {
  color: var(--fidele-widget-muted);
}

.fidele-points-redemption__error {
  margin: 8px 0 0;
  font-size: 12.5px;
  line-height: 1.4;
  color: #b3261e;
}

.fidele-points-redemption__error[hidden] {
  display: none !important;
}

.fidele-cart-widgets .fidele-cw .fidele-points-redemption__input[type='number']:focus {
  border-color: var(--fidele-widget-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--fidele-widget-accent) 18%, transparent);
  outline: none;
}

.fidele-points-redemption__button {
  min-height: 42px;
  border: 0;
  border-radius: 8px;
  background: var(--fidele-widget-accent);
  color: var(--fidele-widget-accent-ink);
  cursor: pointer;
  font: inherit;
  font-size: 13px;
  font-weight: 800;
  line-height: 1.2;
  padding: 10px 14px;
  text-align: center;
  transition: opacity 0.12s ease, transform 0.12s ease;
}

.fidele-cart-widgets .fidele-cw .fidele-points-redemption__button[type='button'] {
  min-height: 42px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 800;
  line-height: 1.2;
  padding: 10px 14px;
  text-align: center;
  text-transform: none;
}

.fidele-points-redemption__button:hover {
  transform: translateY(-1px);
}

.fidele-points-redemption__button:disabled,
.fidele-cw--points-redemption.fidele-is-loading .fidele-points-redemption__button {
  cursor: wait;
  opacity: 0.62;
  transform: none;
}

.fidele-points-redemption__button--ghost {
  background: var(--fidele-widget-accent-soft);
  color: var(--fidele-widget-accent);
  min-height: 34px;
  padding: 8px 13px;
}

.fidele-cart-widgets .fidele-cw .fidele-points-redemption__button--ghost[type='button'] {
  background: var(--fidele-widget-accent-soft);
  color: var(--fidele-widget-accent);
}

.fidele-points-redemption__applied {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 12px;
}

.fidele-points-redemption__applied p {
  margin: 0;
  color: var(--fidele-widget-text);
  font-size: 13.5px;
  font-weight: 700;
  line-height: 1.4;
}

.fidele-samples__confirmed {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 10px;
}

.fidele-samples__confirmed.fidele-is-hidden {
  display: none;
}

.fidele-samples__added {
  flex: 1 1 230px;
  margin: 0;
  color: var(--fidele-widget-muted);
  font-size: 13.5px;
  line-height: 1.45;
}

.fidele-cw__free {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--fidele-widget-accent);
}

/* Lignes panier classiques injectées par Fidèle : échantillons/cadeaux. */
.woocommerce-cart-form .cart_item.fidele-cart-item--offered .product-thumbnail,
.woocommerce-cart-form__cart-item.fidele-cart-item--offered .product-thumbnail {
  width: 64px;
}

.woocommerce-cart-form .cart_item.fidele-cart-item--offered .product-thumbnail img,
.woocommerce-cart-form__cart-item.fidele-cart-item--offered .product-thumbnail img {
  display: inline-block;
  width: 48px;
  max-width: 48px;
  height: 48px;
  max-height: 48px;
  object-fit: contain;
}

.woocommerce-cart-form .cart_item.fidele-cart-item--offered .product-name,
.woocommerce-cart-form__cart-item.fidele-cart-item--offered .product-name {
  font-size: 14px;
  line-height: 1.35;
}

.fidele-cart-item__offer-label {
  display: inline-block;
  color: #b47a2e;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0;
  line-height: 1.2;
  text-transform: uppercase;
}

.fidele-cart-item__quantity-placeholder {
  display: block;
  min-height: 1px;
}

.fidele-cart-item__quantity-static {
  display: inline-block;
  font-size: 13px;
  font-weight: 600;
  color: #555;
  white-space: nowrap;
}

/* barre de progression (livraison) */
.fidele-cw__bar {
  height: 8px;
  border-radius: 999px;
  background: var(--fidele-widget-accent-soft);
  margin-top: 12px;
  overflow: hidden;
}

.fidele-cw--banniere .fidele-cw__bar {
  background: rgba(255, 255, 255, 0.65);
}

.fidele-cw__bar i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: var(--fidele-widget-accent);
  transition: width 0.3s ease;
}

/* masqué par défaut ; chaque style ré-affiche ses parties */
.fidele-cw__img,
.fidele-cw__icon,
.fidele-cw__check,
.fidele-cw__free,
.fidele-cw__bar {
  display: none;
}

/* ============================================================
   3 STYLES RÉELLEMENT DISTINCTS (ligne · carte · bannière)
   Pilotent la mise en page pour TOUS les widgets (image ou icône).
   ============================================================ */

/* barre de progression visible selon la famille */
.fidele-cw--progress .fidele-cw__bar {
  display: block;
}

/* ---------- LIGNE : bande compacte, une seule rangée ---------- */
.fidele-cw--ligne {
  display: flex;
  align-items: center;
  gap: 13px;
}

.fidele-cw--ligne .fidele-cw__img.fidele-has-image {
  display: block;
  width: 48px;
  height: 48px;
  border-radius: 10px;
}

.fidele-cw--ligne .fidele-cw__icon {
  display: grid;
  width: 38px;
  height: 38px;
}

.fidele-cw--ligne .fidele-cw__body {
  flex: 1;
  min-width: 0;
}

.fidele-cw--ligne .fidele-cw__title {
  font-size: calc(var(--fidele-widget-title-size) - 2px);
}

.fidele-cw--ligne .fidele-cw__free {
  display: inline-block;
  margin-bottom: 3px;
}

.fidele-cw--ligne .fidele-cw__check {
  display: inline-flex;
  margin-top: 8px;
}

/* ---------- CARTE : verticale, visuel en haut, CTA plein ---------- */
.fidele-cw--carte {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  text-align: left;
}

.fidele-cw--carte .fidele-cw__img.fidele-has-image {
  display: block;
  width: 100%;
  height: 150px;
  border-radius: calc(var(--fidele-widget-radius) - 3px);
  margin-bottom: 14px;
}

.fidele-cw--carte .fidele-cw__img.fidele-has-image img {
  object-fit: cover;
}

.fidele-cw--carte .fidele-cw__icon {
  display: grid;
  width: 52px;
  height: 52px;
  border-radius: 15px;
  margin-bottom: 12px;
}

.fidele-cw--carte .fidele-cw__free {
  display: inline-block;
  align-self: flex-start;
  margin-bottom: 8px;
}

.fidele-cw--carte .fidele-cw__title {
  font-size: calc(var(--fidele-widget-title-size) + 1px);
}

.fidele-cw--carte .fidele-cw__sub {
  margin-top: 6px;
}

/* la case d'action devient un bouton plein pleine largeur */
.fidele-cw--carte .fidele-cw__check {
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 16px;
  padding: 12px 16px;
  border-radius: calc(var(--fidele-widget-radius) - 4px);
  background: var(--fidele-widget-accent);
  color: var(--fidele-widget-accent-ink);
  font-weight: 700;
}

.fidele-cw--carte .fidele-cw__check .fidele-cw__check-box {
  display: none;
}

/* ---------- BANNIÈRE : bandeau accent, pastille ronde ---------- */
.fidele-cw--banniere {
  display: flex;
  align-items: center;
  gap: 16px;
  background: var(--fidele-widget-banner-bg, var(--fidele-widget-accent-soft));
  border-color: transparent;
}

.fidele-cw--banniere .fidele-cw__img.fidele-has-image {
  display: block;
  width: 50px;
  height: 50px;
  border-radius: 50%;
}

.fidele-cw--banniere .fidele-cw__icon {
  display: grid;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background: var(--fidele-widget-accent);
  color: var(--fidele-widget-accent-ink);
}

.fidele-cw--banniere .fidele-cw__body {
  flex: 1;
  min-width: 0;
}

.fidele-cw--banniere .fidele-cw__title {
  font-size: calc(var(--fidele-widget-title-size) - 2px);
}

.fidele-cw--banniere .fidele-cw__free {
  display: inline-block;
}

.fidele-cw--banniere .fidele-cw__check {
  display: inline-flex;
  align-items: center;
  margin-top: 10px;
  padding: 9px 15px;
  border-radius: 999px;
  background: var(--fidele-widget-accent);
  color: var(--fidele-widget-accent-ink);
  font-weight: 700;
}

.fidele-cw--banniere .fidele-cw__check .fidele-cw__check-box {
  display: none;
}

/* ============================================================
   v3 — Builder « par élément » du widget freeProducts (.fidele-fpx).
   Structure de base DÉCOUPLÉE des presets ; tout le reste (couleurs,
   tailles, marges, bordures…) est en style inline par élément, généré et
   re-validé côté serveur. Aucune règle preset ne s'applique ici.
   ============================================================ */
.fidele-fpx {
  box-sizing: border-box;
  max-width: 100%;
  margin: 0 0 14px;
}
.fidele-fpx * {
  box-sizing: border-box;
}
.fidele-fpx__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.fidele-fpx__visual {
  display: grid;
  place-items: center;
}
.fidele-fpx__visual img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.fidele-fpx__visual.fidele-is-block img {
  object-fit: cover;
}
.fidele-fpx__icon {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
}
.fidele-fpx__icon svg {
  width: 55%;
  height: 55%;
}
.fidele-fpx__bar {
  width: 100%;
  height: 8px;
  border-radius: 999px;
  background: var(--fidele-widget-accent-soft);
  margin-top: 12px;
  overflow: hidden;
}
.fidele-fpx__bar > i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: var(--fidele-widget-accent);
  transition: width 0.3s ease;
}
.fidele-fpx__milestones {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
}
.fidele-fpx__milestone + .fidele-fpx__milestone {
  padding-top: 10px;
  border-top: 1px solid var(--fidele-widget-accent-soft);
}
.fidele-fpx__milestone-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
}
.fidele-fpx__milestone-heading > .fidele-fpx__title,
.fidele-fpx__milestone-heading > .fidele-fpx__title-row {
  flex: 1;
  min-width: 0;
}
.fidele-fpx__milestone-heading > .fidele-fpx__title-row {
  display: flex;
  align-items: flex-start;
  gap: 6px;
}
.fidele-fpx__milestone .fidele-fpx__bar {
  margin-top: 8px;
}
.fidele-fpx__title,
.fidele-fpx__sub {
  margin: 0;
}
.fidele-fpx__badge {
  width: fit-content;
}
.fidele-fpx__checks {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.fidele-fpx__check input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
.fidele-fpx__check .fidele-cw__check-box {
  width: 17px;
  height: 17px;
  border-radius: 4px;
  border: 2px solid currentColor;
  flex-shrink: 0;
  display: inline-block;
}
.fidele-fpx__check.fidele-is-on .fidele-cw__check-box {
  background: currentColor;
  box-shadow: inset 0 0 0 2px #fff;
}
/* Mini-cart condensé : densifier (les styles inline priment → !important ciblé). */
.fidele-cart-widgets--compact .fidele-fpx {
  margin-bottom: 10px;
  padding: 12px !important;
}

/* ---------- État boost du teaser points (promo « Multiplicateur ») ----------
 * Maquette Heho Widget Points Multiplicateur : médaillon ×N à anneau
 * pointillé, ancien total barré → nouveau total, fond doux accentué.
 * --fidele-widget-boost-accent / --fidele-widget-boost-soft sont des surcharges optionnelles posées
 * inline par le plugin — sinon héritage des tokens du widget. */

.fidele-cw--boost {
  position: relative;
  overflow: hidden;
  background: var(--fidele-widget-boost-soft, var(--fidele-widget-accent-soft));
  border-color: var(--fidele-widget-bc);
  align-items: center;
  gap: 16px;
}

/* halo radial discret derrière le médaillon (maquette) */
.fidele-cw--boost::before {
  content: "";
  position: absolute;
  left: -30px;
  top: 50%;
  transform: translateY(-50%);
  width: 150px;
  height: 150px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(0, 0, 0, 0.06) 0%, transparent 70%);
  pointer-events: none;
}

.fidele-cw__boost-mult {
  position: relative;
  flex-shrink: 0;
  width: 60px;
  height: 60px;
  border-radius: 17px;
  background: var(--fidele-widget-boost-accent, var(--fidele-widget-accent));
  color: var(--fidele-widget-accent-ink);
  display: grid;
  place-items: center;
  box-shadow: 0 10px 22px -8px rgba(0, 0, 0, 0.4);
}

.fidele-cw__boost-mult span {
  font-family: var(--fidele-widget-font);
  font-style: italic;
  font-size: 25px;
  line-height: 1;
}

.fidele-cw__boost-mult::after {
  content: "";
  position: absolute;
  inset: -5px;
  border-radius: 21px;
  border: 1.5px dashed var(--fidele-widget-boost-accent, var(--fidele-widget-accent));
  opacity: 0.35;
}

.fidele-cw__boost-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  color: var(--fidele-widget-boost-accent, var(--fidele-widget-accent));
}

.fidele-cw__boost-eyebrow svg {
  width: 12px;
  height: 12px;
  flex-shrink: 0;
}

.fidele-cw--boost .fidele-cw__title {
  font-size: 14px;
  font-family: var(--fidele-widget-body-font, 'Manrope', system-ui, sans-serif);
  font-weight: 700;
  margin: 5px 0 4px;
  line-height: 1.25;
}

.fidele-cw__boost-pts {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}

.fidele-cw__boost-old {
  font-size: 13.5px;
  color: var(--fidele-widget-muted);
  text-decoration: line-through;
  text-decoration-thickness: 1.5px;
  font-variant-numeric: tabular-nums;
}

.fidele-cw__boost-new {
  font-family: var(--fidele-widget-font);
  font-size: 25px;
  font-weight: 600;
  color: var(--fidele-widget-boost-accent, var(--fidele-widget-accent));
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.fidele-cw__boost-new small {
  font-family: var(--fidele-widget-body-font, 'Manrope', system-ui, sans-serif);
  font-size: 14px;
  font-weight: 700;
}

.fidele-cw--boost .fidele-cw__sub {
  font-size: 12px;
  margin-top: 5px;
}

.fidele-cw__boost-until {
  margin-top: 2px !important;
}

@media (max-width: 480px) {
  .fidele-cw__boost-mult {
    width: 48px;
    height: 48px;
    border-radius: 14px;
  }

  .fidele-cw__boost-mult span {
    font-size: 20px;
  }

  .fidele-cw__boost-new {
    font-size: 21px;
  }
}

/* ---------- Mode compact (mini-cart / drawer) ---------- */

.fidele-cart-widgets--compact .fidele-cw {
  --fidele-widget-pad: 12px;
  gap: 12px;
  margin-bottom: 10px;
}

.fidele-cart-widgets--compact .fidele-cw__title {
  font-size: calc(var(--fidele-widget-title-size) - 3px);
}

.fidele-cart-widgets--compact .fidele-cw__sub {
  font-size: 12px;
}

.fidele-cart-widgets--compact .fidele-cw--ligne .fidele-cw__img.fidele-has-image {
  width: 42px;
  height: 42px;
}

/* Carte verticale : dans un drawer étroit le visuel garde la pleine largeur
   mais est raccourci pour ne pas écraser le contenu du mini-cart, et le
   gap 12px du mode compact ne s'ajoute pas aux marges internes de la carte. */
.fidele-cart-widgets--compact .fidele-cw--carte {
  gap: 0;
}

.fidele-cart-widgets--compact .fidele-cw--carte .fidele-cw__img.fidele-has-image {
  height: 96px;
}

.fidele-cart-widgets--compact .fidele-cw__icon {
  width: 34px !important;
  height: 34px !important;
}

/* Panier custom hors hooks WooCommerce : lignes gratuites compactées. */
#products_list_page_panier .product.fidele-cart-item--offered-custom .product_img {
  width: 48px !important;
  min-width: 48px !important;
  max-width: 48px !important;
  height: 48px !important;
  min-height: 48px !important;
  max-height: 48px !important;
  object-fit: contain !important;
}

#products_list_page_panier .product.fidele-cart-item--offered-custom .prix_unitaire,
#products_list_page_panier .product.fidele-cart-item--offered-custom .quantityDiv,
#products_list_page_panier .product.fidele-cart-item--offered-custom .quantite,
#products_list_page_panier .product.fidele-cart-item--offered-custom .supprimer,
#products_list_page_panier .product.fidele-cart-item--offered-custom .topSide {
  display: none !important;
}

#products_list_page_panier .product.fidele-cart-item--offered-custom .prix_total {
  color: var(--fidele-widget-accent, #b47a2e) !important;
  font-weight: 800 !important;
  text-transform: uppercase;
}

/* Cart Block : lignes offertes marquées par le filtre cartItemClass
   (promo-notification). Les hooks woocommerce_cart_item_* ne s'appliquent
   pas aux blocs, tout le compactage passe donc par ces règles. */
.wc-block-cart-items__row.fidele-cart-item--offered-block .wc-block-cart-item__image img {
  width: 48px !important;
  min-width: 48px !important;
  max-width: 48px !important;
  height: 48px !important;
  object-fit: contain !important;
}

.wc-block-cart-items__row.fidele-cart-item--offered-block .wc-block-cart-item__prices,
.wc-block-cart-items__row.fidele-cart-item--offered-block .wc-block-components-sale-badge,
.wc-block-cart-items__row.fidele-cart-item--offered-block .wc-block-cart-item__quantity,
.wc-block-cart-items__row.fidele-cart-item--offered-block .wc-block-cart-item__remove-link {
  display: none !important;
}

.wc-block-cart-items__row.fidele-cart-item--offered-block .wc-block-cart-item__total .wc-block-components-product-price__value,
.wc-block-cart-items__row.fidele-cart-item--offered-block .wc-block-cart-item__total .wc-block-components-formatted-money-amount {
  display: none !important;
}

.wc-block-cart-items__row.fidele-cart-item--offered-block .wc-block-cart-item__total .wc-block-components-product-price::after {
  content: 'OFFERT';
  color: var(--fidele-widget-accent, #b47a2e);
  font-weight: 800;
  text-transform: uppercase;
}

@media (max-width: 480px) {
  .woocommerce table.shop_table_responsive tr.fidele-cart-item--offered td.product-quantity {
    display: none;
  }

  .fidele-points-redemption__controls,
  .fidele-points-redemption__applied {
    grid-template-columns: 1fr;
    display: grid;
  }
}
