/*
 * Thème Ludifolie (enfant de Hummingbird)
 *
 * Apparence de l'ancienne boutique (gmm-ludifolie), reconstituée d'après des captures d'écran :
 * aucun code de l'ancien serveur n'est repris. Les contenus viennent des modules natifs
 * (ps_mainmenu, ps_imageslider, blockreassurance, ps_*products, ps_customtext,
 * ps_emailsubscription, ps_linklist, ps_socialfollow, ps_contactinfo, ps_facetedsearch),
 * configurés dans le back-office : ce fichier ne fait que les mettre en forme.
 *
 * Police : Nunito (OFL, auto-hébergée) à la place de Gotham Rounded (licence web non confirmée).
 */

@font-face { font-family: "Nunito"; font-style: normal; font-weight: 300; font-display: swap; src: url("../fonts/nunito-latin-300-normal.woff2") format("woff2"); }
@font-face { font-family: "Nunito"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/nunito-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Nunito"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/nunito-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Nunito"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/nunito-latin-700-normal.woff2") format("woff2"); }
/* Pictogrammes de l'ancienne boutique (caractéristiques et réassurance de la fiche produit), classe .ludi-icon. */
@font-face { font-family: "ludifolie-icons"; font-style: normal; font-weight: 400; font-display: block; src: url("../fonts/ludifolie-icons.woff2") format("woff2"), url("../fonts/ludifolie-icons.woff") format("woff"); }
.ludi-icon { font-family: "ludifolie-icons" !important; font-style: normal; font-weight: 400; line-height: 1; speak: never; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

:root,
[data-bs-theme="light"] {
  --ludi-primary: #9a1f66;
  --ludi-primary-hover: #831a57;
  --ludi-primary-active: #7b1952;
  --ludi-green: #c6e66a;
  --ludi-green-dark: #a7c15d;
  --ludi-text: #232323;
  --ludi-heading: #303c53;
  --ludi-slate: #4a5468;
  --ludi-slate-light: #5c667a;
  --ludi-muted: #9b9b9b;
  --ludi-grey-blue: #90a4ae;
  --ludi-bg: #f5f5f8;
  --ludi-band: #f8f8f9;
  --ludi-bar: #e9e9ec;
  --ludi-bar-icon: #e5ebf2;
  --ludi-footer-bg: #efefef;
  --ludi-shadow: 0 5px 20px rgba(175, 178, 183, .45);
  --ludi-new: #48c0f0;
  --ludi-preorder: #c8348c;
  --ludi-promo: #ffc254;
  --ludi-out: #ed493c;
  --ludi-last: #f39c12;

  --bs-primary: var(--ludi-primary);
  --bs-primary-rgb: 154, 31, 102;
  --bs-primary-text-emphasis: var(--ludi-primary-active);
  --bs-primary-bg-subtle: #ebd2e0;
  --bs-primary-border-subtle: #d7a5c2;
  --bs-link-color: var(--ludi-primary);
  --bs-link-color-rgb: 154, 31, 102;
  --bs-link-hover-color: var(--ludi-primary-hover);
  --bs-link-hover-color-rgb: 131, 26, 87;
  --bs-body-font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
  --bs-body-bg: var(--ludi-bg);
  --bs-body-color: var(--ludi-text);
  --bs-body-color-rgb: 35, 35, 35;
  --bs-heading-color: var(--ludi-heading);
  --bs-border-radius: 0;
  --bs-border-radius-sm: 0;
  --bs-border-radius-lg: 0;
  --bs-border-radius-xl: 0;
  --bs-border-radius-xxl: 0;
  --bs-focus-ring-color: rgba(154, 31, 102, .25);
}

/* ---------- Base ---------- */
html { scroll-behavior: smooth; }
/* Les bandes pleine largeur (menu, diaporama, réassurance) dépassent le conteneur : pas de défilement horizontal. */
html, body { overflow-x: clip; }
body { background: var(--ludi-bg); color: var(--ludi-text); font-size: 15px; line-height: 1.4; -webkit-font-smoothing: antialiased; }
button, input, select, textarea { font-family: inherit; }
/* Hummingbird range ses styles dans des couches (@layer) : une règle de ce fichier, hors couche, passe avant elles quelle que
   soit sa spécificité. Les liens-boutons (.btn) sont exclus, sinon le texte du bouton « Commander » prenait au survol
   la couleur de son fond. :where() garde la spécificité d'un simple « a ». */
a { text-decoration: none; }
a:where(:not(.btn)) { color: var(--ludi-primary); }
a:where(:not(.btn)):hover { color: var(--ludi-primary-hover); }
@media (min-width: 1200px) { .container, .container-md, .container-lg, .container-xl { max-width: 1140px; } }
h1, .h1, .page-title-section { color: var(--ludi-heading); font-size: 28px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
h2, .h2 { color: var(--ludi-heading); font-weight: 700; }
.wrapper { padding-bottom: 3rem; }
.breadcrumb { margin-bottom: 0; color: var(--ludi-slate); font-size: 12px; font-weight: 700; }
.breadcrumb a { color: var(--ludi-heading); }
.breadcrumb a:hover { color: var(--ludi-primary); }
.breadcrumb-item + .breadcrumb-item::before { content: "•"; color: var(--ludi-primary); }
.breadcrumb-item.active, .breadcrumb .breadcrumb-item:last-child { color: #f39c12; }
.form-control, .form-select, .input-group-text { border-color: #d9dce0; border-radius: 0; }
.form-control:focus, .form-select:focus, .form-check-input:focus { border-color: #d7a5c2; box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color); }
.form-check-input:checked { background-color: var(--ludi-primary); border-color: var(--ludi-primary); }

/* Boutons « pilule » prune */
.btn { font-weight: 700; }
.btn-primary {
  --bs-btn-bg: var(--ludi-primary); --bs-btn-border-color: var(--ludi-primary);
  --bs-btn-hover-bg: var(--ludi-primary-hover); --bs-btn-hover-border-color: var(--ludi-primary-hover);
  --bs-btn-active-bg: var(--ludi-primary-active); --bs-btn-active-border-color: var(--ludi-primary-active);
  --bs-btn-disabled-bg: #c07aa2; --bs-btn-disabled-border-color: #c07aa2;
  --bs-btn-focus-shadow-rgb: 154, 31, 102;
  border-radius: 30px; padding: .55rem 1.6rem; color: #fff;
}
.btn-outline-primary {
  --bs-btn-color: var(--ludi-primary); --bs-btn-border-color: var(--ludi-primary);
  --bs-btn-hover-bg: var(--ludi-primary); --bs-btn-hover-border-color: var(--ludi-primary);
  --bs-btn-active-bg: var(--ludi-primary-active); --bs-btn-active-border-color: var(--ludi-primary-active);
  border-radius: 30px;
}
.btn-square-icon { border-radius: 0; }
.pagination { --bs-pagination-active-bg: var(--ludi-primary); --bs-pagination-active-border-color: var(--ludi-primary); --bs-pagination-color: var(--ludi-primary); }
.pagination .page-link { border: 0; border-radius: 20px !important; }
.nav-pills { --bs-nav-pills-link-active-bg: var(--ludi-primary); }
.dropdown-menu { --bs-dropdown-link-active-bg: var(--ludi-primary); }
.noUi-connect, .noUi-handle { background: var(--ludi-primary); }

/* ---------- En-tête ---------- */
#header, .header { background: #fff; box-shadow: none; }
.ludi-header-top > .container { display: flex; align-items: center; justify-content: space-between; min-height: 26px; }
.ludi-header-top span { color: var(--ludi-muted); font-size: 11px; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
.ludi-header-top a { color: #2c364a; font-size: 11px; font-weight: 700; text-transform: uppercase; }
.ludi-header-top a:hover { color: var(--ludi-primary); }
/* Logo | espace | recherche (colonne à sa taille : la marge ms-auto de Hummingbird n'a plus d'effet) | espace | boutons */
.ludi-header-main { display: grid; grid-template-columns: 250px minmax(20px, 1fr) 480px minmax(20px, 1fr) auto; grid-template-rows: 94px 65px; align-items: center; column-gap: 0; }
.ludi-header-logo { grid-column: 1; grid-row: 1; }
.ludi-header-logo .navbar-brand { margin: 0; padding: 0; }
.ludi-header-logo .logo { display: block; width: 100%; max-width: 235px; height: auto; }
.ludi-header-main #_desktop_ps_searchbar { grid-column: 3; grid-row: 1; width: 480px; max-width: 480px; padding: 0; order: initial; }
.ludi-header-main .ps-searchbar__form { position: relative; }
.ludi-header-main .ps-searchbar__input {
  width: 100%; height: 52px; padding: 12px 55px 12px 26px;
  border: 0; border-radius: 30px; background: var(--ludi-green);
  box-shadow: 0 3px 6px rgba(153, 153, 153, .25); color: #2c364a; font-size: 13px;
}
.ludi-header-main .ps-searchbar__input::placeholder { color: #2c364a; opacity: 1; }
.ludi-header-main .ps-searchbar__input:focus { background: #fff; box-shadow: 0 0 0 2px var(--ludi-green); }
.ludi-header-main .ps-searchbar__magnifier { position: absolute; z-index: 1; top: 50%; right: 18px; left: auto; transform: translateY(-50%); color: #fff; font-size: 26px; }
.ludi-header-actions { grid-column: 5; grid-row: 1; align-items: center; justify-content: end; gap: 8px; }
/* Trois boutons de même largeur (Compte, Panier, Wishlist), libellés sur une ligne, sans flèche de menu déroulant. */
.ludi-header-actions { gap: 10px; }
.ludi-header-actions > * { display: flex; flex: 0 0 72px; justify-content: center; width: 72px; }
.ludi-header-actions .header-block__action-btn { width: 72px; }
.ludi-header-actions .header-block__title { display: block; max-width: 72px; overflow: hidden; line-height: 1.2; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
.ludi-header-actions .dropdown-toggle::after { display: none; }
.ludi-header-actions .dropdown-menu { font-size: 13px; }
.ludi-header-actions > div { margin: 0; }
.ludi-header-actions .header-block { display: flex; align-items: center; justify-content: center; }
.ludi-header-actions .header-block__action-btn { position: relative; display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 0; color: var(--ludi-primary); font-size: 10px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.ludi-header-actions .header-block__icon { display: grid; place-items: center; width: 63px; height: 49px; border: 1px solid var(--ludi-primary); border-radius: 3px; background: var(--ludi-primary); color: #fff; font-size: 26px; transition: background .2s, color .2s; }
.ludi-header-actions .header-block__action-btn:hover .header-block__icon { background: #fff; color: var(--ludi-primary); }
.ludi-header-actions .header-block__title { display: block !important; font-size: 10px; }
.header-block__badge { min-width: 21px; height: 21px; padding: 0 5px; border-radius: 11px; background: var(--ludi-green); color: var(--ludi-text); font-size: 12px; font-weight: 700; line-height: 21px; }
.ludi-header-actions .header-block__badge { position: absolute; top: -8px; right: -8px; z-index: 2; }
.ludi-header-actions .header-block.inactive .header-block__badge { display: none; }
.ludi-mobile-account, .ludi-mobile-cart { display: none; }

/* Menu principal (ps_mainmenu) : bande grise pleine largeur, libellés sur deux lignes */
.ludi-header-main > .ps-mainmenu--desktop {
  grid-column: 1 / -1; grid-row: 2; align-self: stretch; width: 100%; max-width: none; padding: 0;
  position: relative; z-index: 20; clip-path: none; box-shadow: none; background: none;
}
/* Bande grise pleine largeur dessinée derrière le menu, sans rogner les sous-menus. */
.ludi-header-main > .ps-mainmenu--desktop::before {
  content: ""; position: absolute; z-index: -1; top: 0; bottom: 0; left: calc(50% - 50vw); right: calc(50% - 50vw);
  border-bottom: 1px solid #e3e3e6; background: var(--ludi-band);
}
.ludi-header-main .ps-mainmenu__desktop, .ludi-header-main .ps-mainmenu__tree { width: 100%; height: 100%; }
/* Les éléments occupent toute la hauteur de la bande : le sous-menu part de son bord inférieur, sans espace à traverser. */
.ludi-header-main .ps-mainmenu__tree { display: flex; align-items: stretch; justify-content: space-between; gap: 0; margin: 0; }
.ludi-header-main .ps-mainmenu__tree > li { display: flex; flex: 0 1 auto; align-items: center; }
.ludi-header-main .ps-mainmenu__tree-item-wrapper { justify-content: center; width: 100%; }
/* Libellés sur deux lignes (coupure posée par custom.js), soulignés en prune au survol et sur la page en cours. */
.ludi-header-main .ps-mainmenu__tree-link {
  position: relative; display: block; padding: 10px 6px; color: #2c364a; white-space: nowrap;
  font-size: 12px; font-weight: 700; line-height: 1.35; letter-spacing: .2em; text-align: center; text-transform: uppercase;
}
.ludi-header-main .ps-mainmenu__tree > li::after { content: ""; position: absolute; right: 6px; bottom: 0; left: 6px; height: 4px; background: var(--ludi-primary); opacity: 0; transition: opacity .2s; }
.ludi-header-main .ps-mainmenu__tree > li:hover .ps-mainmenu__tree-link, .ludi-header-main .ps-mainmenu__tree > li.current .ps-mainmenu__tree-link { color: var(--ludi-primary); }
.ludi-header-main .ps-mainmenu__tree > li:hover::after, .ludi-header-main .ps-mainmenu__tree > li.current::after { opacity: 1; }
.ludi-header-main .ps-mainmenu__tree-dropdown-toggle { display: none; }
/* Sous-menus : panneau compact sous l'élément survolé ; la colonne de droite n'apparaît que pour une sous-catégorie qui a des enfants.
   Hummingbird écrit un « top » en pixels (hauteur + décalage de l'élément) qui laissait un vide sous le lien : on l'écrase. */
.ludi-header-main .ps-mainmenu__tree > li { position: relative; }
.ludi-header-main .ps-mainmenu__tree > li .submenu {
  top: 100% !important; right: auto; left: 0; z-index: 30; width: max-content; max-width: min(860px, 92vw);
  border: 0; border-top: 3px solid var(--ludi-primary); border-radius: 0; background: #fff; box-shadow: 0 10px 20px rgba(44, 54, 74, .15);
}
.ludi-header-main .ps-mainmenu__tree > li:nth-last-child(-n+3) .submenu { right: 0; left: auto; }
.ludi-header-main .submenu > .container { width: auto; max-width: none; padding: 0; }
.ludi-header-main .submenu__row { --bs-gutter-x: 0; flex-wrap: nowrap; margin: 0; }
.ludi-header-main .submenu__left { flex: 0 0 auto; gap: 0; width: 250px; max-width: none; padding: 10px 0; border-right: 0; }
.ludi-header-main .submenu__left-item { padding: 8px 20px; border-radius: 0; color: #2c364a; font-size: 13px; font-weight: 400; line-height: 1.35; letter-spacing: .02em; }
.ludi-header-main .submenu__left-item:hover, .ludi-header-main .submenu__left-item.active { background: var(--ludi-band); color: var(--ludi-primary); }
.ludi-header-main .submenu__left-item[data-ps-has-child=true]::after { color: var(--ludi-muted); font-size: 18px; }
.ludi-header-main .submenu__right { display: none; flex: 0 0 auto; width: 520px; max-width: none; padding: 14px 22px; border-left: 1px solid #ececef; background: #fff; }
.ludi-header-main .submenu__right:has(.submenu__right-items.active) { display: block; }
.ludi-header-main .submenu__right-items { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 20px; row-gap: 2px; }
.ludi-header-main .submenu__right-items ul { margin: 0; padding: 0; list-style: none; }
.ludi-header-main .submenu__right-items .menu-item, .ludi-header-main .submenu__right-items .menu-item__group-main-item {
  display: block; margin: 0; padding: 6px 0; color: #2c364a; font-size: 13px; font-weight: 400; line-height: 1.35;
}
.ludi-header-main .submenu__right-items .menu-item__group--child .menu-item__group-main-item { font-weight: 700; }
.ludi-header-main .submenu a:hover { color: var(--ludi-primary); }

/* ---------- Diaporama (ps_imageslider) ---------- */
#index .wrapper { padding-top: 0; padding-bottom: 0; }
/* Hummingbird espace les blocs de l'accueil de 2,5rem (gap) : aucun vide sous le diaporama, chaque rayon a ses marges. */
#index .page-content--home { display: flex; flex-direction: column; gap: 0; }
.ps-imageslider { width: 100vw; margin-left: calc(50% - 50vw); }
/* Hummingbird fige la hauteur du cadre à 320/240 px sous 992 px : on garde la hauteur réelle de la bannière. */
.ps-imageslider__figure { height: auto !important; margin: 0; }
.ps-imageslider .carousel-item img { display: block; width: 100%; height: auto; }
/* Les bannières contiennent déjà leur texte (d-lg-block de Hummingbird impose l affichage) */
.ps-imageslider__figcaption { visibility: hidden; }
.ps-imageslider .carousel-indicators { display: none; }
.ps-imageslider .carousel-control-prev, .ps-imageslider .carousel-control-next { top: 50%; bottom: auto; width: 40px; height: 40px; border-radius: 50%; background: #fff; opacity: 1; transform: translateY(-50%); }
.ps-imageslider .carousel-control-prev { left: 15%; }
.ps-imageslider .carousel-control-next { right: 15%; }
.ps-imageslider .carousel-control-prev-icon, .ps-imageslider .carousel-control-next-icon { display: none; }
.ps-imageslider .carousel-control-prev::after, .ps-imageslider .carousel-control-next::after { color: #000; font-family: "Material Icons"; font-size: 26px; line-height: 1; }
.ps-imageslider .carousel-control-prev::after { content: "\e5de"; }
.ps-imageslider .carousel-control-next::after { content: "\e5df"; }

/* ---------- Réassurance (blockreassurance) : bande vert anis ---------- */
.blockreassurance--light, .blockreassurance--dark { width: 100vw; margin-left: calc(50% - 50vw); background: var(--ludi-green); }
.footer__before .blockreassurance, .ludi-footer-before .blockreassurance { width: auto; margin-left: 0; }
/* Autant de colonnes que de blocs saisis dans le module (3 ou 4…) : le premier à gauche, le dernier à droite. */
.blockreassurance--horizontal { display: grid; grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; align-items: center; gap: 16px; min-height: 90px; padding-top: 12px; padding-bottom: 12px; }
.blockreassurance .reassurance { display: flex; align-items: center; gap: 12px; color: var(--ludi-text); text-decoration: none; }
@media (min-width: 768px) {
  .blockreassurance--horizontal .reassurance { justify-content: center; }
  .blockreassurance--horizontal .reassurance:first-child { justify-content: flex-start; }
  .blockreassurance--horizontal .reassurance:last-child:not(:first-child) { justify-content: flex-end; }
}
.blockreassurance .reassurance__image { flex: none; width: 42px; }
.blockreassurance .reassurance__image img, .blockreassurance .reassurance__image svg { width: 42px; height: 42px; }
.blockreassurance .reassurance__title { font-size: 16px; font-weight: 700; letter-spacing: .02em; }
.blockreassurance .reassurance__desc { color: var(--ludi-text); font-size: 13px; letter-spacing: .02em; }
.blockreassurance .reassurance__content br { display: none; }
.blockreassurance .reassurance__desc { display: block; }
/* Variante « dark » (displayFooterBefore) : Hummingbird écrit en blanc et gris clair ; texte ramené en --ludi-text.
   Les icônes restent blanches (réglage du module) sur un disque prune pour rester lisibles sur le vert. */
.blockreassurance.blockreassurance--dark .reassurance__title, .blockreassurance.blockreassurance--dark .reassurance__desc { color: var(--ludi-text); }
.blockreassurance--light .reassurance__image, .blockreassurance.blockreassurance--dark .reassurance__image { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 50%; background: var(--ludi-primary); }
.blockreassurance--light .reassurance__image img, .blockreassurance--light .reassurance__image svg,
.blockreassurance--dark .reassurance__image img, .blockreassurance--dark .reassurance__image svg { width: 34px; height: 34px; }
/* Titre et description (téléphone…) : le texte passe à la ligne dans sa colonne au lieu de déborder. */
.blockreassurance .reassurance__content { min-width: 0; overflow-wrap: anywhere; }
.blockreassurance .reassurance__desc p { margin: 0; }
/* La bande est placée sous le diaporama sur l'accueil et avant la lettre d'informations ailleurs. */
#index .footer__before .blockreassurance, #index .ludi-footer-before .blockreassurance { display: none; }
/* Accueil (displayHome) : le module rend son gabarit générique (#block-reassurance > ul > li > .block-reassurance-item,
   <img> SVG + un seul <span>). Même rendu que la bande horizontale : pleine largeur, liste dans la largeur du .container
   (#content n'est pas contenu sur l'accueil, d'où les largeurs maximales de Bootstrap reprises ci-dessous). */
#index #block-reassurance { width: 100vw; margin-left: calc(50% - 50vw); padding: 12px 0; background: var(--ludi-green); }
#index #block-reassurance ul { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: center; min-height: 66px; margin: 0 auto; padding: 0 12px; list-style: none; }
@media (min-width: 576px) { #index #block-reassurance ul { max-width: 540px; } }
@media (min-width: 768px) { #index #block-reassurance ul { max-width: 720px; } }
@media (min-width: 992px) { #index #block-reassurance ul { max-width: 960px; } }
@media (min-width: 1200px) { #index #block-reassurance ul { max-width: 1140px; } }
#index #block-reassurance li { display: flex; min-width: 0; }
#index #block-reassurance li:nth-child(2) { justify-content: center; }
#index #block-reassurance li:nth-child(3) { justify-content: flex-end; }
#index #block-reassurance .block-reassurance-item { position: relative; display: flex; align-items: center; gap: 12px; min-width: 0; color: var(--ludi-text); font-size: 15px; font-weight: 700; letter-spacing: .02em; }
/* Disque prune sous l'icône : filter s'appliquerait aussi au fond de l'<img>, d'où le pseudo-élément. */
#index #block-reassurance .block-reassurance-item::before { content: ""; position: absolute; top: 50%; left: 0; width: 58px; height: 58px; margin-top: -29px; border-radius: 50%; background: var(--ludi-primary); }
#index #block-reassurance .block-reassurance-item img { position: relative; flex: none; width: 42px; height: 42px; margin: 8px; filter: brightness(0) invert(1); }

/* ---------- Rayons produits (ps_bestsellers, ps_newproducts, ps_featuredproducts, ps_specials) ---------- */
.ps-bestsellers, .ps-newproducts, .ps-featuredproducts, .ps-specials { padding: 50px 0 30px; }
.module-products > .section-title, .module-products .section-title {
  display: flex; align-items: center; justify-content: center; gap: 12px; margin: 0 0 30px;
  color: var(--ludi-heading); font-size: 32px; font-weight: 700; letter-spacing: .12em; text-align: center; text-transform: uppercase;
}
.module-products .section-title::before, .module-products .section-title::after { flex: none; color: var(--ludi-primary); font-family: "Material Icons"; font-size: 30px; font-weight: 400; letter-spacing: 0; text-transform: none; }
.ps-bestsellers .section-title::before, .ps-bestsellers .section-title::after { content: "\ea3f"; }   /* military_tech : médaille */
.ps-newproducts .section-title::before, .ps-newproducts .section-title::after { content: "\e83a"; }  /* star_border */
.ps-featuredproducts .section-title::before, .ps-featuredproducts .section-title::after { content: "\e8b5"; } /* schedule */
.ps-specials .section-title::before, .ps-specials .section-title::after { content: "\e54e"; }        /* local_offer */
.module-products__buttons { margin-top: 10px; text-align: center; }
.module-products__buttons .btn { padding: .7rem 2rem; border: 0; border-radius: 30px; background: var(--ludi-primary); color: #fff; font-size: 16px; }
.module-products__buttons .btn:hover { background: var(--ludi-primary-hover); color: #fff; }
.module-products__buttons .btn .material-icons { display: none; }

/* Carrousel des rayons de l'accueil (templates/components/module-products.tpl, assets/js/custom.js) : une ligne de
   4 produits (3, 2 puis 1 sur les petits écrans), les suivants par les flèches, la molette horizontale, en faisant
   glisser à la souris ou au doigt. Marge négative et padding : place pour l'ombre et le soulèvement des cartes au survol,
   que le défilement horizontal couperait. */
.ludi-carousel { --ludi-carousel-visible: 4; --ludi-carousel-gap: 1.5rem; position: relative; }
.ludi-carousel > .products {
  display: grid; grid-auto-flow: column; grid-template-columns: none; gap: var(--ludi-carousel-gap);
  grid-auto-columns: calc((100% - (var(--ludi-carousel-visible) - 1) * var(--ludi-carousel-gap)) / var(--ludi-carousel-visible));
  margin: -12px -15px 0; padding: 12px 15px 0; overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory; scroll-padding-inline: 15px; scrollbar-width: none;
}
.ludi-carousel > .products::-webkit-scrollbar { display: none; }
.ludi-carousel > .products > .product-miniature { scroll-snap-align: start; }
.ludi-carousel > .products.is-dragging { scroll-snap-type: none; cursor: grabbing; user-select: none; }
.ludi-carousel > .products.is-dragging .product-miniature__inner { transform: none; }
.ludi-carousel__arrow {
  position: absolute; z-index: 4; top: 35%; display: grid; place-items: center; width: 44px; height: 44px; margin-top: -22px; padding: 0;
  border: 0; border-radius: 50%; background: #fff; color: var(--ludi-primary); box-shadow: 0 2px 10px rgba(0, 0, 0, .18); transition: background-color .2s, color .2s, opacity .2s;
}
.ludi-carousel__arrow[hidden] { display: none; }
.ludi-carousel__arrow:not(:disabled):hover, .ludi-carousel__arrow:focus-visible { background: var(--ludi-primary); color: #fff; }
.ludi-carousel__arrow:disabled { opacity: .35; cursor: default; }
.ludi-carousel__arrow .material-icons { font-size: 30px; }
.ludi-carousel__arrow--prev { left: -22px; }
.ludi-carousel__arrow--next { right: -22px; }
@media (max-width: 991.98px) {
  .ludi-carousel { --ludi-carousel-visible: 3; }
  .ludi-carousel__arrow { width: 36px; height: 36px; margin-top: -18px; }
  .ludi-carousel__arrow .material-icons { font-size: 26px; }
  .ludi-carousel__arrow--prev { left: -10px; }
  .ludi-carousel__arrow--next { right: -10px; }
}
@media (max-width: 767.98px) { .ludi-carousel { --ludi-carousel-visible: 2; } }
@media (max-width: 359.98px) { .ludi-carousel { --ludi-carousel-visible: 1; } }

/* ---------- Carte produit ---------- */
.product-miniature { display: flex; padding-bottom: 30px; }
.product-miniature__inner {
  display: flex; flex-direction: column; width: 100%; max-width: 257px; margin: 0 auto;
  border: 0; border-radius: 0; background: #fff; box-shadow: var(--ludi-shadow); transition: box-shadow .3s ease, transform .3s ease;
}
.product-miniature__inner:hover { box-shadow: 0 5px 30px rgba(175, 178, 183, .65); transform: translateY(-3px); }
.product-miniature__top { position: relative; flex: none; background: #fff; }
.product-miniature__image-container { position: relative; padding: 20px 20px 10px; }
.product-miniature__image-link { outline: 0; }
.product-miniature__image { width: 100%; aspect-ratio: 1; object-fit: contain; }
/* Cœur de la liste d'envies : en bas à gauche de l'image, en surimpression, comme sur l'ancienne boutique.
   Hummingbird le place en haut à droite avec des !important dans ses couches CSS ; un !important hors couche ne suffit
   pas (en cascade, un !important en couche l'emporte), d'où la couche « vendors », la première déclarée. */
@layer vendors {
  .product-miniature .wishlist-button-add {
    position: absolute !important; z-index: 3 !important; top: auto !important; right: auto !important; bottom: 12px !important; left: 14px !important;
    display: grid !important; place-items: center; width: 32px !important; min-width: 0 !important; height: 32px !important; padding: 0 !important;
    border: 0 !important; border-radius: 50% !important; background-color: rgba(255, 255, 255, .9) !important; color: #90a4ae !important; box-shadow: 0 1px 4px rgba(0, 0, 0, .15) !important;
  }
  .product-miniature .wishlist-button-add:hover, .product-miniature .wishlist-button-add:focus-visible { color: var(--ludi-primary) !important; }
}
.product-miniature .wishlist-button-add .material-icons { font-size: 20px; }
.product-miniature__bottom { display: flex; flex: 1; flex-direction: column; padding: 0; }
.product-miniature__infos { display: grid; flex: 1; grid-template-columns: 1fr auto; grid-auto-rows: min-content; align-content: start; column-gap: 8px; padding: 12px 20px 16px; }
.product-miniature__infos > * { grid-column: 1 / -1; }
.product-miniature__title {
  display: -webkit-box; min-height: 42px; margin: 0 0 8px; overflow: hidden; color: var(--ludi-slate-light);
  font-size: 16px; font-weight: 700; line-height: 1.3; letter-spacing: .03em; text-align: left; text-transform: uppercase;
  -webkit-box-orient: vertical; -webkit-line-clamp: 2;
}
.product-miniature__title:hover { color: var(--ludi-primary); }
.product-miniature__excerpt { display: -webkit-box; min-height: 60px; margin: 0 0 10px; overflow: hidden; color: var(--ludi-text); font-size: 13px; line-height: 1.55; letter-spacing: .02em; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.product-miniature__prices { grid-column: 1; align-self: end; min-height: 0; margin: 0; text-align: left; }
.product-miniature__price { color: var(--ludi-slate); font-size: 22px; font-weight: 700; line-height: 1.2; }
.product-miniature__regular-price { color: #a9afb9; font-size: 13px; text-decoration: line-through; }
.product-miniature .product-list-review { grid-column: 2; grid-row: auto; align-self: end; margin: 0 0 6px; }
.product-miniature .product-list-comments-number { display: none; }
.product-miniature__variants { display: none; }
.product-miniature__actions { margin: 0; }
.product-miniature__form { display: flex; }
.product-miniature .quantity-button { display: none; }
.product-miniature__add, .product-miniature__details {
  position: relative; display: flex; align-items: center; justify-content: center; width: 100%; min-height: 50px; padding: 0 0 0 50px;
  border: 0; border-radius: 0; background: var(--ludi-bar); color: var(--ludi-slate);
  font-size: 16px; font-weight: 700; letter-spacing: .1em; text-transform: none;
}
.product-miniature__add .material-icons { position: absolute; top: 0; bottom: 0; left: 0; display: grid; place-items: center; width: 50px; height: auto; background: var(--ludi-bar-icon); font-size: 22px; }
.product-miniature__add-text { display: inline !important; }
.product-miniature__add:hover, .product-miniature__add:focus { background: var(--ludi-green); color: var(--ludi-text); }
.product-miniature__details { padding-left: 0; }
.product-miniature__details:hover { background: var(--ludi-green); color: var(--ludi-text); }

/* Badges */
.product-flags { z-index: 2; }
.product-miniature .product-flags { position: absolute; inset: 0 0 auto; display: flex; flex-wrap: wrap; align-content: flex-start; gap: 0; margin: 0; padding: 10px 10px 0; pointer-events: none; list-style: none; }
.product-flags .badge {
  display: inline-block; margin: 0 5px 4px 0; padding: 4px 11px; border: 0; border-radius: 20px; box-shadow: none;
  color: #fff; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
}
/* Hummingbird impose le fond des badges (sauf remise) en !important via --bs-primary-rgb : la couleur passe par cette variable. */
.product-flags .badge.new { --bs-primary-rgb: 72, 192, 240; background: var(--ludi-new); color: #fff; }
.product-flags .badge.preorder, .product-flags .badge.online-only, .product-flags .badge.pack { --bs-primary-rgb: 200, 52, 140; background: var(--ludi-preorder); }
/* Précommande : étiquette plus grande que les autres, pour qu'on ne croie pas le jeu disponible tout de suite. */
.product-flags .badge.preorder { padding: 6px 14px; font-size: 13px; }
.product-flags .badge.out_of_stock, .product-flags .badge.out-of-stock { --bs-primary-rgb: 237, 73, 60; background: var(--ludi-out); }
.product-flags .badge.on-sale { --bs-primary-rgb: 255, 194, 84; background: var(--ludi-promo); }
.product-flags .badge.discount { padding: 4px 8px; border-radius: 0; background: var(--ludi-green-dark); color: #fff; }
/* Fiche produit : pourcentage de remise plus lisible sur la grande image. */
#product .product__images .product-flags .badge.discount { padding: 8px 14px; font-size: 20px; letter-spacing: .04em; }

/* Vignettes : précommande et rupture ne sont indiquées qu'une fois, par la pastille du bas (pas d'étiquette sur l'image). */
.product-miniature .product-flags .badge.preorder,
.product-miniature .product-flags .badge.out_of_stock, .product-miniature .product-flags .badge.out-of-stock { display: none; }
/* Disponibilité en bas de la vignette : pastille aux couleurs de la fiche produit (fond plein, texte blanc). */
.product-miniature__stock { margin: 8px 0 0; }
.product-miniature__stock-label {
  display: inline-block; padding: 5px 12px; border-radius: 20px; background: var(--ludi-green-dark); color: #fff;
  font-size: 11px; font-weight: 700; line-height: 1.2; letter-spacing: .08em; text-transform: uppercase;
}
.product-miniature__stock.ludi-availability--available .product-miniature__stock-label { background: var(--ludi-last); }
.product-miniature__stock.ludi-availability--preorder .product-miniature__stock-label { background: var(--ludi-preorder); }
.product-miniature__stock.ludi-availability--unavailable .product-miniature__stock-label,
.product-miniature__stock.ludi-availability--discontinued .product-miniature__stock-label { background: var(--ludi-out); }
.product-miniature__stock-date { display: block; margin-top: 6px; color: var(--ludi-preorder); font-size: 13px; font-weight: 700; }

/* ---------- Bloc texte de l'accueil (ps_customtext) ---------- */
.ps-customtext { padding: 0; }
.ps-customtext .container > * { max-width: none; }
.ps-customtext .ludi-pro { width: 100vw; margin-left: calc(50% - 50vw); padding: 40px 16px; background: var(--ludi-green); text-align: center; }
.ps-customtext .ludi-pro h2 { margin-bottom: 8px; font-size: 28px; letter-spacing: .1em; text-transform: uppercase; }
.ps-customtext .ludi-pro p { color: var(--ludi-slate); }
.ps-customtext .ludi-about { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 50px; padding: 60px 0; }
.ps-customtext .ludi-about h2 { font-size: 30px; letter-spacing: .1em; text-transform: uppercase; }
.ps-customtext .ludi-about p { color: #596577; line-height: 1.7; }
.ps-customtext .ludi-about img { width: 100%; height: auto; box-shadow: 0 5px 25px rgba(44, 54, 74, .16); }
.ps-customtext .btn, .ps-customtext a.btn { border-radius: 30px; }

/* ---------- Lettre d'informations (ps_emailsubscription) : bande vert anis ----------
   Les utilitaires Bootstrap de Hummingbird (bg-body-tertiary, flex-grow-1, col-lg-*) sont en !important dans une couche
   CSS et l'emportent sur ce fichier : on passe par leurs variables ou par des propriétés qu'ils ne fixent pas. */
.ps-emailsubscription { --bs-tertiary-bg-rgb: 198, 230, 106; --bs-bg-opacity: 1; padding: 35px 0 30px; text-align: center; }
.ps-emailsubscription .row { flex-direction: column; align-items: center; }
.ps-emailsubscription .row > * { width: 100%; max-width: 100%; }
.ps-emailsubscription .h3 { margin-bottom: 20px; color: var(--ludi-heading); font-size: 30px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.ps-emailsubscription form { max-width: 900px; margin: 0 auto; }
.ps-emailsubscription form > .d-flex { justify-content: center; }
.ps-emailsubscription .form-control { max-width: 325px; height: 38px; border: 1px solid #b9bcc2; background: #fff; }
.ps-emailsubscription .btn { min-width: 155px; padding: .45rem 1.5rem; margin-left: 12px; font-weight: 400; letter-spacing: .05em; text-transform: uppercase; }
.ps-emailsubscription .fs-6, .ps-emailsubscription .text-body-secondary { --bs-secondary-color: var(--ludi-slate-light); margin-top: 12px; color: var(--ludi-slate-light); font-size: 14px; }

/* ---------- Pied de page (ps_linklist, ps_socialfollow, ps_contactinfo) ---------- */
.footer__main { padding: 50px 0 25px; background: var(--ludi-footer-bg); color: var(--ludi-text); }
.footer__main-top { justify-content: center; }
.footer__main-top { justify-content: center; }
.footer__main-top > * { flex: 0 1 260px; max-width: 260px; margin-bottom: 25px; text-align: center; }
/* Bloc sans contenu visible (module accroché sans liens, espaces seuls) : ne doit pas réserver de colonne. */
.footer__main-top > :empty, .footer__main-top > :not(:has(a, address, li, p, img)) { display: none; }
.footer-block__title, .footer-block__title a { display: block; margin-bottom: 18px; color: var(--ludi-grey-blue); font-size: 14px; font-weight: 700; letter-spacing: .08em; text-align: center; text-transform: uppercase; }
.footer-block__title button { display: none; }
.footer-block__content.collapse { display: block; }
.footer-block__list { padding: 0; list-style: none; }
.footer-block__list li { margin: 0 0 6px; }
.footer-block a, .footer__main address { color: var(--ludi-text); font-size: 13px; font-style: normal; letter-spacing: .04em; line-height: 1.9; }
.footer-block a:hover { color: var(--ludi-primary); }
.footer__main .ps-contactinfo__phone .material-icons, .footer__main .ps-contactinfo__email .material-icons { display: none; }
.footer__main .ps-contactinfo, .footer__main .ps-contactinfo address { text-align: center; }
.footer__main .ps-contactinfo__phone, .footer__main .ps-contactinfo__email { display: block; font-size: 13px; text-align: center; }
.footer__main .ludi-footer-contact { margin-top: 14px; padding: .5rem 1.9rem; color: #fff; font-size: 15px; font-weight: 400; letter-spacing: .04em; text-transform: uppercase; }
.footer__main .ludi-footer-contact:hover { color: #fff; }
.footer__main .ps-socialfollow { padding: 0 !important; }
.footer__main .ps-socialfollow::before { content: "Suivez-nous"; display: block; margin-bottom: 18px; color: var(--ludi-grey-blue); font-size: 14px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.footer__main .ps-socialfollow .container { padding: 0; }
.footer__main .ps-socialfollow ul { gap: 8px !important; }
.footer__main .ps-socialfollow a { display: grid; place-items: center; width: 38px; height: 38px; padding: 0 !important; border-radius: 50%; background: var(--ludi-primary); color: #fff; }
.footer__main .ps-socialfollow a:hover { background: var(--ludi-primary-hover); }
.copyright { padding-top: 20px; text-align: center; }
.copyright__logo { display: inline-block; margin-bottom: 10px; }
.copyright__logo img { max-width: 200px; height: auto; }
.copyright p { color: var(--ludi-grey-blue); font-size: 13px; }

/* ---------- Catégorie, recherche : filtres à gauche (ps_facetedsearch) ---------- */
#category .wrapper, #search .wrapper, #prices-drop .wrapper, #new-products .wrapper, #best-sales .wrapper { padding-top: 20px; }
.category__header { position: relative; padding: 10px 0 20px; }
.category__header .page-title-section { text-align: left; }
.category__cover { display: none; }
.products__count { display: none; }
/* Filtres (ps_facetedsearch, conteneur #search-filters) : une ligne par filtre, pastille verte avec icône à gauche,
   libellé sur fond gris-bleu, chevron à droite. L'icône est choisie d'après le libellé du filtre (attribut data-name). */
#search-filters { padding: 0; border: 0; background: transparent; box-shadow: none; }
/* Titre « Filtrer par » masqué sans toucher à display (d-md-block de Hummingbird, !important dans une couche, l'emporterait). */
#search-filters .left-block__title { height: 0; margin: 0; overflow: hidden; visibility: hidden; }
#search-filters .search-filters__clear { margin-bottom: 10px; }
#search-filters .search-filters__clear .btn { border-radius: 30px; font-size: 12px; }
#search-filters .accordion { --bs-accordion-bg: transparent; --bs-accordion-border-width: 0; }
#search-filters .accordion-item { margin-bottom: 10px; border: 0; background: #fff; box-shadow: 0 2px 6px rgba(153, 153, 153, .2); }
#search-filters .accordion-button {
  position: relative; display: flex; align-items: center; width: 100%; min-height: 50px; margin: 0; padding: 0 16px 0 70px;
  border: 0; border-radius: 0; background: #e5ebf2; box-shadow: none; color: #2c364a;
  font-size: 14px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
}
#search-filters .accordion-button:focus { box-shadow: none; }
#search-filters .accordion-button::before {
  content: "\e152"; position: absolute; top: 0; bottom: 0; left: 0; display: grid; place-items: center; width: 50px;
  background: var(--ludi-green-dark); color: #fff; font-family: "Material Icons"; font-size: 26px; font-weight: 400; letter-spacing: 0; text-transform: none;
}
#search-filters .accordion-button::after {
  content: "\e313"; width: auto; height: auto; margin-left: auto; background: none; color: #2c364a;
  font-family: "Material Icons"; font-size: 26px; font-weight: 400; line-height: 1; transition: transform .2s;
}
#search-filters .accordion-button:not(.collapsed)::after { transform: rotate(180deg); }
#search-filters [data-name^="cat" i] .accordion-button::before { content: "\eb40"; }   /* casino : dé */
#search-filters [data-name^="age" i] .accordion-button::before, #search-filters [data-name^="âge" i] .accordion-button::before { content: "\e7e9"; } /* cake */
#search-filters [data-name^="dur" i] .accordion-button::before { content: "\e425"; }   /* timer */
#search-filters [data-name^="prix" i] .accordion-button::before { content: "\e926"; }  /* euro_symbol */
#search-filters [data-name^="langue" i] .accordion-button::before { content: "\e894"; } /* language */
#search-filters [data-name*="joueur" i] .accordion-button::before { content: "\e7ef"; } /* group */
#search-filters [data-name^="th" i] .accordion-button::before { content: "\e40a"; }    /* palette */
#search-filters [data-name^="dispo" i] .accordion-button::before { content: "\e558"; } /* local_shipping */
#search-filters .accordion-body { margin: 0; padding: 12px 16px; background: #fff; list-style: none; }
#search-filters .search-filters__item { padding: 3px 0; }
#search-filters a, #search-filters label { color: var(--ludi-text); font-size: 13px; }
#search-filters a:hover { color: var(--ludi-primary); }
#search-filters .search-filters__magnitude { color: var(--ludi-muted); }
.left-column .block-categories, .left-column .ps-categorytree { margin-bottom: 20px; padding: 15px 20px; background: #fff; box-shadow: 0 2px 4px rgba(153, 153, 153, .2); }
.products__selection { justify-content: flex-end; }
.products-sort-order .form-select, .products-sort-order .dropdown-toggle { min-width: 190px; border: 1px solid #c9ccd1; background-color: #fff; font-size: 12px; }
.category__footer, .page-content--cms, .page-content--contact { color: #566075; }
.category__footer { padding: 25px 0 10px; }
.category__description--collapsed { position: relative; max-height: 12rem; overflow: hidden; }
.category__description--collapsed::after { content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: 4rem; background: linear-gradient(transparent, var(--bs-body-bg)); }

/* ---------- Fiche produit ---------- */
#product .wrapper { padding-top: 20px; }
#product .product__container { display: grid; grid-template-columns: 36% minmax(0, 1fr); gap: 0 30px; padding: 30px; background: #fff; box-shadow: var(--ludi-shadow); }
#product .product__left { padding: 0; }
#product .product__thumbnails-list { justify-content: flex-start; gap: 12px; }
/* Colonne droite, dans l'ordre de l'ancienne boutique : nom, éditeur / référence / EAN, bande d'achat, avis, résumé, caractéristiques. */
#product .product__right { display: block; padding: 0; }
#product .product__name { margin-bottom: 6px; color: var(--ludi-heading); font-size: 30px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
#product .ludi-product-meta { display: flex; flex-wrap: wrap; gap: 4px 10px; margin-bottom: 18px; padding-bottom: 18px; border-bottom: 1px solid #e5e5e8; color: #798494; font-size: 13px; }
#product .ludi-product-meta a { color: inherit; }
#product .ludi-product-meta span + span::before { content: "/"; margin-right: 10px; }
/* Bande d'achat : prix | disponibilité | quantité | bouton. */
/* Précommande : bandeau jaune pleine largeur collé au-dessus du bloc d'achat, avec la date d'arrivée. */
#product .ludi-preorder-banner { padding: 8px 16px; background: var(--ludi-promo); color: #fff; font-size: 17px; font-weight: 700; line-height: 1.3; text-align: center; }
#product .ludi-preorder-banner__notice { display: block; margin-top: 2px; font-size: 14px; }
/* Le libellé « Quantité » est placé au-dessus du champ sans compter dans la hauteur de la ligne : prix, pastille, champ et
   bouton sont centrés sur le même axe (padding haut agrandi pour lui laisser la place). */
/* Bloc d'achat en grille. Large (bloc ≥ 620 px) : prix, pastille, quantité et bouton sur une ligne, centrés sur le même axe.
   Étroit : prix et pastille sur la première ligne, quantité et bouton sur la seconde, alignés à gauche.
   Le conteneur d'ajout au panier (remplacé par core.js à chaque changement de déclinaison) est « transparent »
   (display: contents) : ses enfants sont placés directement dans la grille. */
#product .ludi-buy-box-wrap { container-type: inline-size; }
#product .ludi-buy-box {
  display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "price avail" "qty qty" "min min";
  align-items: center; gap: 34px 24px; margin-bottom: 0; padding: 32px 25px 22px; background: #eef0f3;
}
#product .ludi-buy-box .product__prices { grid-area: price; }
#product .ludi-buy-box .product__add-to-cart-container { display: contents; }
#product .ludi-buy-box .product__availability { grid-area: avail; justify-self: start; }
#product .ludi-buy-box .product__actions-qty-add { grid-area: qty; flex-wrap: nowrap; }
#product .ludi-buy-box .product__minimal-quantity { grid-area: min; }
#product .ludi-buy-box .product__minimal-quantity[hidden] { display: none; }
@container (min-width: 620px) {
  /* Prix, disponibilité, quantité et bouton répartis sur toute la largeur, avec des espaces égaux. */
  #product .ludi-buy-box { grid-template-columns: repeat(4, auto); grid-template-areas: "price avail qty add" "min min min min"; justify-content: space-between; row-gap: 12px; }
  #product .ludi-buy-box .product__actions-qty-add { display: contents; }
  #product .ludi-buy-box .product__quantity { grid-area: qty; }
  #product .ludi-buy-box .product__add-to-cart { grid-area: add; }
}
#product .product__discount-percentage, #product .product__discount-amount { display: none; }
#product .ludi-buy-box .product__prices-block { gap: 2px; }
/* Alerte « Derniers articles en stock » sous le prix, comme sur l'ancienne fiche. */
#product .ludi-last-items { display: flex; align-items: center; gap: 6px; margin-top: 10px; color: var(--ludi-text); font-size: 14px; font-weight: 700; line-height: 1.2; white-space: nowrap; }
#product .ludi-last-items .material-icons { color: var(--ludi-last); font-size: 20px; }
#product .ludi-buy-box .product__prices { margin: 0; padding: 0; background: none; }
#product .product__price, #product .current-price { color: var(--ludi-slate); font-size: 32px; font-weight: 700; line-height: 1.1; }
#product .product__regular-price { color: #a9afb9; font-size: 15px; }
#product .product__tax-infos { display: none; }
#product .ludi-buy-box .wishlist-button-add { display: none; }
#product .product__availability { flex: none; margin: 0; }
#product .product__delivery-infos { margin-top: 4px; color: #798494; font-size: 12px; }
/* Pastille de disponibilité : les classes text-success / text-warning / text-danger de Hummingbird (en !important dans une
   couche CSS) sont neutralisées par leurs variables. */
#product .product__availability-status {
  --bs-success-rgb: 255, 255, 255; --bs-warning-rgb: 255, 255, 255; --bs-danger-rgb: 255, 255, 255;
  display: inline-block; padding: 5px 12px; border-radius: 20px; background: var(--ludi-green-dark); color: #fff;
  font-size: 11px; font-weight: 700; line-height: 1.2; letter-spacing: .08em; text-transform: uppercase;
}
/* Derniers articles : pastille « En stock » verte, l'alerte est sous le prix. */
#product .product__availability-status.ludi-availability--last_remaining_items { background: var(--ludi-green-dark); }
#product .product__availability-status.ludi-availability--available { background: var(--ludi-last); }
#product .product__availability-status.ludi-availability--preorder { background: var(--ludi-preorder); }
#product .product__availability-status.ludi-availability--unavailable,
#product .product__availability-status.ludi-availability--discontinued { background: var(--ludi-out); }
#product .product__availability-status small { font-size: 10px; font-weight: 400; letter-spacing: .02em; text-transform: none; }
#product .product__availability-status.ludi-availability--preorder { padding: 8px 16px; font-size: 13px; }
#product .product__availability-icon { display: none; }
#product .product__actions-qty-add { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 0; }
/* Quantité : libellé au-dessus du champ, comme sur l'ancienne fiche. */
#product .product__quantity { position: relative; display: flex; flex-direction: column; width: 112px; margin: 0; }
#product .product__quantity::before { content: "Quantité"; position: absolute; bottom: calc(100% + 4px); left: 0; color: var(--ludi-slate); font-size: 13px; line-height: 1.2; }
#product .product__quantity .input-group { flex-wrap: nowrap; height: 38px; background: #fff; }
#product .product__quantity .btn { display: grid; place-items: center; width: 34px; padding: 0; border: 1px solid #c9ccd1; background: #fff; color: var(--ludi-slate); }
#product .product__quantity .btn .material-icons { font-size: 18px; }
#product .product__quantity .form-control { flex: 1 1 auto; min-width: 36px; padding: 0 4px; border-color: #c9ccd1; background: #fff; color: var(--ludi-text); font-size: 15px; text-align: center; }
#product .product__add-to-cart { margin: 0; }
#product .product__add-to-cart-button { display: inline-flex; align-items: center; gap: 6px; height: 38px; padding: 0 22px; border-radius: 30px; font-size: 13px; letter-spacing: .06em; text-transform: uppercase; }
#product .product__add-to-cart-button .material-icons { display: none; }
#product .product__actions-qty-add .wishlist-button-add { align-self: center; }
#product .product__minimal-quantity { width: 100%; font-size: 12px; }
/* Avis (productcomments) : étoiles à gauche, lien « Donnez votre avis » à droite, entre deux filets. */
#product .product__additional-info { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; min-height: 44px; padding: 8px 0; border-top: 1px solid #b9c0ca; border-bottom: 1px solid #b9c0ca; }
/* Sans avis, productcomments n'affiche rien (visiteur) ou un simple bouton : la ligne « Lire ou écrire un avis » du thème
   prend sa place ; avec des avis, la ligne native (note et liens) reste seule. */
#product .product__additional-info:not(:has(.grade-stars)) { display: none; }
#product .product__actions:has(.product__additional-info .grade-stars) .ludi-reviews-line { display: none; }
#product .ludi-reviews-line { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 44px; padding: 8px 0; border-top: 1px solid #b9c0ca; border-bottom: 1px solid #b9c0ca; }
#product .ludi-reviews-line__stars { color: #d5d9df; font-size: 16px; letter-spacing: 2px; }
#product .ludi-reviews-line__link { color: #8a93a3; font-size: 15px; font-weight: 700; text-decoration: none; }
#product .ludi-reviews-line__link:hover { color: var(--ludi-primary); }
#product .product__additional-info:empty { display: none; }
/* Alerte de retour en stock (ps_emailalerts, templates/catalog/_partials/product-additional-info.tpl) : sous le bloc
   d'achat, avant la ligne d'avis ; le gabarit (modules/ps_emailalerts) n'a plus que le bouton, sans l'encadré gris.
   Champ e-mail (visiteur non connecté) et bouton sur une ligne, à la même hauteur et arrondis comme les boutons du
   site ; le bouton passe sous le champ, en pleine largeur, sur téléphone. */
#product .ludi-additional-info .ps-emailalerts { margin-top: 16px; }
#product .ludi-additional-info .ps-emailalerts__content { margin-block-end: 16px; padding: 0; background: none; }
#product .ludi-emailalerts__row { display: flex; flex-wrap: wrap; gap: 10px; }
#product .ludi-emailalerts__row .form-control { flex: 1 1 200px; min-width: 0; height: 44px; padding: 0 20px; border-color: #c9ccd1; border-radius: 30px; background: #fff; font-size: 15px; }
#product .ludi-emailalerts__row .btn { flex: 0 0 auto; height: 44px; padding: 0 24px; border-radius: 30px; font-size: 15px; white-space: nowrap; }
@media (max-width: 575.98px) {
  #product .ludi-emailalerts__row .btn { flex-basis: 100%; height: auto; min-height: 44px; padding: 8px 20px; font-size: 14px; line-height: 1.3; white-space: normal; }
}
#product .product__additional-info .social-sharing, #product .product__additional-info .ps-sharebuttons { display: none; }
#product .product-comments-additional-info .post-product-comment { margin-left: auto; padding: 0; border: 0; background: none; color: #8a93a3; font-size: 15px; font-weight: 700; }
#product .product-comments-additional-info .post-product-comment:hover { color: var(--ludi-primary); }
#product .product__description-short { margin: 20px 0 0; color: #566075; font-size: 15px; }
#product .ludi-product-features { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px 16px; margin: 35px 0 0; padding: 0; list-style: none; }
#product .ludi-product-features li { display: flex; align-items: center; gap: 14px; color: var(--ludi-slate); font-size: 15px; font-weight: 700; }
#product .ludi-product-features .ludi-icon { display: grid; flex: none; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--ludi-green-dark); color: #fff; font-size: 30px; }
/* Réassurance sous l'image (blockreassurance, hook displayReassurance), pastilles orange. Titre puis description sur
   deux lignes (ex. « Besoin d'aide ? » / numéro de téléphone), comme sur l'ancienne boutique. */
#product .product__left .blockreassurance { display: grid; gap: 12px; margin-top: 25px; padding-left: 10px; }
#product .product__left .reassurance { display: flex; align-items: center; gap: 12px; color: var(--ludi-text); font-size: 12px; line-height: 1.4; }
#product .product__left .reassurance__image { display: grid; flex: none; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--ludi-promo); }
#product .product__left .reassurance__image img, #product .product__left .reassurance__image svg { width: 18px; height: 18px; }
#product .product__left .reassurance__title { font-size: 12px; font-weight: 400; letter-spacing: 0; }
#product .product__left .reassurance__desc { font-size: 12px; letter-spacing: 0; }
#product .product__bottom { display: block; margin-top: 0; }
#product .product__bottom-right { display: none; }
.ludi-product-tabs { max-width: 1140px; margin: 30px auto 0; }
.ludi-product-tabs .nav-tabs { display: flex; border: 0; }
.ludi-product-tabs .nav-link { flex: 0 0 200px; padding: 15px 10px; border: 0; border-radius: 0; background: #e5ebf2; color: var(--ludi-slate); font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.ludi-product-tabs .nav-link.active { background: #3d4a5c; color: #fff; }
.ludi-product-tabs .tab-content { min-height: 170px; padding: 30px; background: #fff; box-shadow: var(--ludi-shadow); color: #566075; font-size: 13px; }
#product .ps-categoryproducts, #product .product-accessories { margin-top: 40px; }
#product .ps-categoryproducts .section-title, #product .product-accessories .section-title, #product .ps-viewedproduct .section-title { color: var(--ludi-heading); font-size: 26px; font-weight: 700; letter-spacing: .12em; text-align: center; text-transform: uppercase; }

/* ---------- Panier, commande, comptes ---------- */
#cart .cart-grid__products-details, #cart .cart-grid__aside-wrapper,
#checkout .checkout-grid__content, #checkout .checkout-grid__aside-wrapper { border: 0; background: #fff; box-shadow: var(--ludi-shadow); }
#cart .cart-grid__products-details, #cart .cart-grid__aside-wrapper { padding: 25px; }
#cart .cart-grid__content .page-title-section { text-align: left; }
#cart .cart-summary-line .value, #checkout .cart-summary-line .value { color: #2d2c2e; font-weight: 700; }
#cart .btn-primary, #checkout .btn-primary { text-transform: none; }
.ludi-preorder-notice { margin-bottom: 1.5rem; padding: 1rem 1.25rem; background: #fff; color: var(--ludi-primary); font-size: 13px; box-shadow: var(--ludi-shadow); }
#checkout .checkout-step { padding: 20px 30px; border-bottom: 1px solid #a9afb9; background: #f8f8f9; }
#checkout .checkout-step .step-title { color: #566075; font-size: 17px; font-weight: 700; text-transform: uppercase; }
#authentication .page-header, #password .page-header, #registration .page-header { text-align: left; }
#authentication .page-content--general, #password .page-content--general, #registration .page-content--general { max-width: 640px; margin: 20px auto 40px; padding: 30px 40px; background: #fff; box-shadow: var(--ludi-shadow); }
/* Pages du compte : le panneau occupe toute la colonne, aligné sur le titre « Bienvenue… ». */
.page-content--customer { margin: 0 0 40px; padding: 30px; background: #fff; box-shadow: var(--ludi-shadow); }
.account-menu__link { border-radius: 0; background: #fff; color: #2c364a; box-shadow: 0 2px 4px rgba(153, 153, 153, .22); }
.account-menu__link:hover { color: var(--ludi-primary); box-shadow: var(--ludi-shadow); }
.wishlist-container, .wishlist-products-container { padding: 30px; background: #fff; box-shadow: var(--ludi-shadow); }
/* Lien « Cartes sauvegardées » de payplug : balisage du thème Classic, aligné sur les liens du compte Hummingbird. */
#savedcards-link { display: flex; flex: initial; width: auto; max-width: none; padding: 0; color: var(--bs-body-color); }
#savedcards-link .link-item { display: flex; align-items: center; gap: .5rem; width: 100%; padding: .75rem 1rem; background: #fff; font-size: 1rem; font-weight: 400; }
#savedcards-link .material-icons { color: var(--ludi-heading); font-size: 24px; }
.account-menu--main #savedcards-link .link-item { font-weight: 600; }
.account-menu--main #savedcards-link .material-icons { font-size: 2rem; }
#savedcards-link:hover { color: var(--bs-link-hover-color); }
.account-menu--main #savedcards-link .link-item { flex-direction: column; align-items: flex-start; gap: .75rem; height: 100%; padding: 1.25rem 1rem; box-shadow: 0 2px 4px rgba(153, 153, 153, .22); }

/* ---------- Pages CMS et contact ---------- */
#cms .page-title-section { display: grid; place-items: center; min-height: 175px; margin-bottom: 30px; padding: 30px; background: linear-gradient(rgba(44, 54, 74, .15), rgba(44, 54, 74, .15)), url("../img/header-cms.jpg") center / cover; color: #fff; text-align: center; }
#cms .page-content--cms { max-width: 700px; margin: 0 auto; padding: 0 0 30px; }
#cms .page-content--cms h2, #cms .page-content--cms h3 { color: var(--ludi-primary); font-size: 17px; letter-spacing: .06em; text-transform: uppercase; }
#cms .page-content--cms p, #cms .page-content--cms li { color: #566075; font-size: 13px; line-height: 1.6; }
#cms .page-content--cms li::marker { color: var(--ludi-primary); }
/* Vidéos YouTube des articles et des fiches : pleine largeur de la colonne, centrées, au format 16/9. */
.rich-text iframe, .page-content--cms iframe, .ludi-product-tabs iframe { display: block; width: 100%; max-width: 100%; height: auto; margin: 20px auto; aspect-ratio: 16 / 9; border: 0; }
#contact .page-content, #contact .contact-form { background: #fff; }
#contact .page-content { margin: 25px 0; padding: 45px 60px; box-shadow: var(--ludi-shadow); }
#contact .contact-form h1, #contact .contact-form .h1, #contact .contact-form h3 { color: var(--ludi-heading); text-align: center; }

/* ---------- Tablette et mobile ---------- */
/* ---------- Fiche produit : fenêtre du zoom ---------- */
/* Hummingbird ouvre l'image en modal-xl (1140 px) sans limite de hauteur : fenêtre limitée à l'écran. */
#product-modal .modal-dialog { --bs-modal-width: min(90vw, 760px); }
#product-modal .carousel-item img { display: block; width: auto; max-width: 100%; max-height: calc(100vh - 140px); margin: 0 auto; }

/* ---------- Fiche produit : onglets Contenu et Vidéo (module ludifolie) ---------- */
/* Texte repris de l'ancienne boutique avec ses titres et tailles en ligne : ramené au corps des onglets (13 px),
   nettement plus petit que le nom du jeu. */
.ludi-product-contents, .ludi-product-contents * { font-size: 13px !important; line-height: 1.6; }
.ludi-product-contents :is(h1, h2, h3, h4, h5, h6) { margin: 0 0 8px; color: var(--ludi-slate); font-size: 14px !important; font-weight: 700; }
.ludi-product-contents ul { padding-left: 1.2em; }
.ludi-product-videos { display: grid; gap: 20px; max-width: 800px; margin: 0 auto; }
.ludi-product-tabs .ludi-product-video iframe { margin: 0; }

/* ---------- Accueil : blog et derniers avis (module ludifolie) ---------- */
.ludi-home-blog, .ludi-home-reviews { padding: 50px 0 30px; }
.ludi-home-reviews { width: 100vw; margin-left: calc(50% - 50vw); background: #fff; }
.ludi-home-blog .section-title, .ludi-home-reviews .section-title { margin: 0 0 30px; color: var(--ludi-heading); font-size: 30px; font-weight: 700; letter-spacing: .12em; text-align: center; text-transform: uppercase; }
.ludi-home-blog__list, .ludi-home-reviews__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 30px; }
.ludi-home-reviews__list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ludi-home-blog__post { display: flex; flex-direction: column; background: #fff; box-shadow: var(--ludi-shadow); }
.ludi-home-blog__image img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.ludi-home-blog__body { display: flex; flex: 1; flex-direction: column; padding: 18px 20px 20px; }
.ludi-home-blog__title { margin: 0 0 10px; font-size: 17px; line-height: 1.3; }
.ludi-home-blog__title a { color: var(--ludi-heading); }
.ludi-home-blog__excerpt { flex: 1; margin: 0 0 12px; color: #596577; font-size: 13px; line-height: 1.6; }
.ludi-home-blog__more { align-self: flex-start; font-weight: 700; }
.ludi-home-reviews__review { padding: 20px; background: var(--ludi-band); }
.ludi-home-reviews__grade { margin-bottom: 8px; color: #d0d4da; font-size: 18px; letter-spacing: 2px; }
.ludi-home-reviews__star.is-full { color: #f5b301; }
.ludi-home-reviews__title { margin: 0 0 6px; color: var(--ludi-heading); font-size: 15px; }
.ludi-home-reviews__excerpt { margin: 0 0 10px; color: var(--ludi-text); font-size: 13px; line-height: 1.55; }
.ludi-home-reviews__meta { margin: 0; color: #798494; font-size: 12px; }
.ludi-home-reviews__meta a { font-weight: 700; }
@media (max-width: 991.98px) {
  .ludi-home-blog__list, .ludi-home-reviews__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
  .ludi-home-blog__list, .ludi-home-reviews__list { grid-template-columns: 1fr; }
  .ludi-home-blog .section-title, .ludi-home-reviews .section-title { font-size: 20px; letter-spacing: .06em; }
}

@media (max-width: 1199.98px) {
  .ludi-header-main { grid-template-columns: 210px minmax(0, 1fr) auto; grid-template-rows: 86px; column-gap: 18px; }
  .ludi-header-main > .ps-mainmenu--desktop { grid-column: 1; grid-row: 1; width: auto; padding: 0; background: none; box-shadow: none; clip-path: none; border: 0; }
  .ludi-header-logo { grid-column: 1; grid-row: 1; margin-left: 48px; }
  .ludi-header-main #_desktop_ps_searchbar { grid-column: 2; justify-self: center; width: 100%; }
  .ludi-header-actions { grid-column: 3; }
  .ludi-header-main > .ps-mainmenu--desktop::before { display: none; }
  .ludi-header-main .ps-mainmenu__mobile-toggle { display: block; }
}
@media (max-width: 991.98px) {
  .footer__main-top > * { flex-basis: 50%; max-width: 50%; }
}
@media (max-width: 767.98px) {
  #header { position: sticky; top: 0; z-index: 1020; }
  .ludi-header-main { grid-template-columns: 40px minmax(0, 1fr) 36px 36px 36px; grid-template-rows: 64px; gap: 4px; }
  .ludi-header-main > .ps-mainmenu--desktop { grid-column: 1; grid-row: 1; }
  .ludi-header-logo { grid-column: 2; grid-row: 1; margin: 0; }
  .ludi-header-logo .logo { max-width: 150px; }
  .ludi-header-main .ps-searchbar--mobile { grid-column: 3; grid-row: 1; padding: 0; }
  .ludi-header-main .ps-searchbar--mobile .header-block__action-btn { border: 0; line-height: 1; }
  /* Barre de recherche dépliée par la loupe, sur toute la largeur sous le logo (voir modules/ps_searchbar). */
  .ludi-header-main #_desktop_ps_searchbar { grid-column: 1 / -1; grid-row: 2; justify-self: stretch; width: 100%; max-width: none; margin: 0; padding: 0 0 10px; }
  .ludi-header-main .ps-searchbar__input { height: 44px; font-size: 16px; }
  .ludi-mobile-account { display: block; grid-column: 4; grid-row: 1; }
  .ludi-mobile-cart { display: block; grid-column: 5; grid-row: 1; }
  .ludi-mobile-cart .header-block__action-btn { position: relative; }
  .ludi-mobile-cart .header-block__badge { position: absolute; top: -7px; right: -9px; }
  .ludi-header-main .header-block__icon, .ludi-header-main .menu-toggle .material-icons { color: var(--ludi-primary); font-size: 25px; }
  /* Mobile : bannière entière sans flèches par-dessus (elles masquaient le texte de l'image) ;
     navigation par balayage et petits points sous l'image. */
  .ps-imageslider { width: 100%; margin-left: 0; }
  .ps-imageslider .carousel-control-prev, .ps-imageslider .carousel-control-next { display: none; }
  #ps_imageslider { display: flex; flex-direction: column; }
  .ps-imageslider .carousel-indicators { display: flex; order: 2; position: static; margin: 8px 0 0; gap: 6px; }
  .ps-imageslider .carousel-indicators [data-bs-target] { width: 8px; height: 8px; margin: 0; border: 0; border-radius: 50%; background: var(--ludi-primary); opacity: .3; }
  .ps-imageslider .carousel-indicators .active { opacity: 1; }
  .blockreassurance--horizontal { grid-auto-flow: row; grid-template-columns: 1fr; gap: 10px; }
  #index #block-reassurance ul { grid-template-columns: 1fr; gap: 10px; }
  #index #block-reassurance li:nth-child(n) { justify-content: center; }
  .module-products > .section-title, .module-products .section-title, .ps-emailsubscription .h3 { font-size: 20px; letter-spacing: .06em; }
  .module-products .section-title::before, .module-products .section-title::after { font-size: 20px; }
  .product-miniature__infos { padding: 10px 12px 12px; }
  .product-miniature__title { font-size: 13px; }
  .product-miniature__excerpt { display: none; }
  .product-miniature__price { font-size: 18px; }
  .product-miniature .product-list-review { grid-column: 1; }
  .product-miniature__add, .product-miniature__details { min-height: 42px; padding-left: 42px; font-size: 12px; letter-spacing: .03em; }
  .product-miniature__add .material-icons { width: 42px; }
  .product-miniature__inner:hover { transform: none; }
  .ps-customtext .ludi-about { grid-template-columns: 1fr; gap: 25px; padding: 40px 0; }
  .ps-emailsubscription form > .d-flex { flex-wrap: wrap; }
  .ps-emailsubscription .form-control { max-width: none; }
  .ps-emailsubscription .btn { margin: 10px 0 0; }
  .footer__main-top > * { flex-basis: 100%; max-width: 100%; }
  #product .product__container { display: block; padding: 15px; }
  #product .product__name { font-size: 22px; }
  #product .ludi-buy-box { padding: 30px 16px 16px; }
  #product .ludi-product-features { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ludi-product-tabs .nav-link { flex: 1 1 50%; font-size: 12px; }
  .ludi-product-tabs .tab-content { padding: 20px; }
  #cart .cart-grid__products-details, #cart .cart-grid__aside-wrapper, .page-content--customer,
  #authentication .page-content--general, #password .page-content--general { padding: 20px; }
  #contact .page-content { padding: 25px 18px; }
}

/* ---------- Tunnel de commande ---------- */
#checkout .checkout-grid__content { padding: 25px 30px; }
#checkout .checkout-grid__aside-wrapper { padding: 25px; top: calc(var(--scroll-padding-top, 0px) + 20px); }
#checkout .checkout-steps { position: relative; z-index: 1; }
/* Étapes déjà franchies : cliquables pour revenir en arrière (Hummingbird les rend actives mais sans aucun signe visuel). */
#checkout .checkout-steps__step--success .checkout-steps__number,
#checkout .checkout-steps__step--success .checkout-steps__btn:not([disabled]) { cursor: pointer; }
#checkout .checkout-steps__step--success .checkout-steps__btn:not([disabled]):hover,
#checkout .checkout-steps__step--success .checkout-steps__btn:not([disabled]):focus-visible { text-decoration: underline; text-underline-offset: 3px; }
#checkout .checkout-steps__step--success:hover .checkout-steps__number { box-shadow: 0 0 0 4px rgba(var(--bs-success-rgb), .25); }
/* Réassurance dans le récapitulatif : pas de bande pleine largeur, liste verticale, pictos blancs sur disque prune. */
#checkout .checkout-grid__aside .blockreassurance, #cart .cart-grid .blockreassurance { width: auto; margin: 25px 0 0; padding-top: 20px; border-top: 1px solid #e5e7eb; background: none; }
#checkout .checkout-grid__aside .blockreassurance--horizontal, #cart .cart-grid .blockreassurance--horizontal { display: grid; grid-auto-flow: row; grid-template-columns: 1fr; gap: 18px; min-height: 0; padding: 0; }
#checkout .checkout-grid__aside .reassurance, #cart .cart-grid .reassurance { justify-content: flex-start !important; }
#checkout .checkout-grid__aside .reassurance__image, #cart .cart-grid .reassurance__image { display: grid; flex: none; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: var(--ludi-primary); }
#checkout .checkout-grid__aside .reassurance__image img, #checkout .checkout-grid__aside .reassurance__image svg,
#cart .cart-grid .reassurance__image img, #cart .cart-grid .reassurance__image svg { width: 22px; height: 22px; visibility: visible !important; filter: brightness(0) invert(1); }
#checkout .checkout-grid__aside .reassurance__title, #cart .cart-grid .reassurance__title { font-size: 14px; }
#checkout .checkout-grid__aside .reassurance__desc, #cart .cart-grid .reassurance__desc { font-size: 12px; }
@media (max-width: 575.98px) {
  #checkout .checkout-grid__content, #checkout .checkout-grid__aside-wrapper { padding: 20px 15px; }
}

/* ---------- Disponibilité dans le panier ---------- */
/* Couleur par état (classes ludi-availability--<état>) : Hummingbird met « derniers articles », « en réapprovisionnement »
   et « précommande » tous en text-warning (orange par défaut, rose pour la précommande). Les utilitaires text-* sont en !important dans une couche : neutralisés par leurs variables. */
.product-line__item-availability-message.ludi-availability { --bs-success-rgb: 124, 150, 50; --bs-warning-rgb: 243, 156, 18; --bs-danger-rgb: 237, 73, 60; font-weight: 700; }
.product-line__item-availability-message.ludi-availability--preorder { --bs-warning-rgb: 200, 52, 140; }

/* ---------- Tunnel : adresse de facturation différente ---------- */
/* Case à cocher visible (fond blanc, bordure) au lieu du lien gris de Hummingbird ; un clic l'active ou la désactive. */
#checkout .ludi-invoice-toggle { display: inline-flex; align-items: center; gap: 10px; margin: 6px 0 4px; padding: 10px 14px; border: 1px solid #c9ccd1; background: #fff; color: var(--ludi-text); font-weight: 700; cursor: pointer; }
#checkout .ludi-invoice-toggle:hover, #checkout .ludi-invoice-toggle:focus-visible { border-color: var(--ludi-primary); color: var(--ludi-primary); }
#checkout .ludi-invoice-toggle__box { display: grid; flex: none; place-items: center; width: 20px; height: 20px; border: 2px solid var(--ludi-primary); background: #fff; }
#checkout .ludi-invoice-toggle[aria-checked="true"] .ludi-invoice-toggle__box { background: var(--ludi-primary); }
#checkout .ludi-invoice-toggle[aria-checked="true"] .ludi-invoice-toggle__box::after { content: ""; width: 6px; height: 11px; margin-top: -2px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }

/* ---------- Tunnel : logo PayPal masqué ---------- */
/* Le module PayPal ajoute un logo ([paypal-mark-container]) sous « Payer avec PayPal » : on le masque. */
#checkout [paypal-mark-container] { display: none !important; }

/* ---------- Tunnel : bouton PayPal à la place de « Commander » (voir custom.js) ---------- */
/* Le module PayPal masque « Commander » en visibility:hidden ; custom.js gère l'affichage avec d-none. */
#checkout #payment-confirmation { visibility: visible !important; }
#checkout .ludi-paypal-button { width: 240px; max-width: 100%; margin: 0; }
#checkout .ludi-paypal-button [paypal-button-container] { display: block !important; }
