/*
 * Custom code goes here.
 * A template should always ship with an empty custom.css
 */

/* === Google Fonts : Allura + Cormorant Garamond — aperçu live gravure (Carat & Moi) === */
@import url('https://fonts.googleapis.com/css2?family=Allura&family=Cormorant+Garamond&family=Italiana&display=swap');

.product__variants.js-product-variants {
    display: flex;
    flex-direction: column;
}
#product .wk_price_option{
	height:40px
}
.product-prices.js-product-prices, .product__prices.js-product-prices {
    height: 35px;
}
#product .product__tax-info{
	display:none;
	font-size:0;
	height:0;
}
.page-product .product__variants .variant {
    margin-bottom: 1.5rem;
    width: 100%;
}
/* L'élément du module obsattributedesc (#obsAttrDescGroup_{id}, qu'il détruit/
   recrée à chaque changement) n'est PLUS utilisé pour le rendu : custom.js
   remplit lui-même notre slot .cmoi-metal-desc-slot depuis la banque SSR
   #obsAttrDesc_*. On masque donc l'élément du module PARTOUT (par son id), sans
   jamais toucher notre contenu injecté (qui porte .obsDescElement mais aucun id). */
#product [id^="obsAttrDescGroup_"] {
    display: none !important;
}
.ets_mm_megamenu .mm-product-description{
	 width:100%
	 
 }
 .checkout__steps{
	 display:flex;
	 justify-content:center;
 }
 #cart button.btn.btn-default.wk_custom_product_option_btn_mod {
    display: none;
}
#cart col-md-6.col-xs-2.price {
    width: auto;
}
#cart .product-line-info a{font-size:18px;
font-weight:500;
color:#000}

#cart .col-md-6.col-xs-2.price{
	width:auto!important
}
#cart .wk-customization-option-modal .modal-dialog{
	transform:none;
	margin:0
}
#cart .product-line-info.product-price.h5 br{display:none}
#cart .product-line-grid-body.col-md-4.col-xs-8{
	width:60%
}
#cart .wk-customization-option-modal .modal-header {
    padding-top: 0;
	padding-bottom:0px
}
.wk-customization-option-modal br{
	display:none
}
#cart .product-line-grid-left.col-md-3.col-xs-4,#cart .product-line-grid-right.product-line-actions.col-md-5.col-xs-12 {
    width: 20%;
}
#cart button.close.btn-close.wk-custom-option-pop-up {
    display: none;
}
 #cart .product-line-grid {
    display: flex;
}
#cart .wk-customization-option-modal .modal-content table td{background:transparent}
#cart .wk-customization-option-modal .modal-content,#cart .wk-customization-option-modal .modal-content table{
	background:transparent;
	border:none;
}
#cart .wk-customization-option-modal .modal-content h5.modal-title{
	font-size:14px;
	font-weight:500
}
#cart .col-md-6.col-xs-6.qty input.js-cart-line-product-quantity{
	display:none
}
#cart .wk-customization-option-modal{
	display:block;
	opacity:1; 
	position:relative;
}
 #product section.category-products.mt-3{
	 max-width:1600px;
	 margin:0 auto; 
	 width:90%
 }
 .product-miniature .product-miniature__price{
	 font-size:18px;
	 margin-top:15px
 }
 div#cmoi-livraison-offcanvas .breadcrumb{
	 display:none
 }
  div#cmoi-livraison-offcanvas h1{
	  display:none
  }
 header#header span.elementor-icon-list-icon:hover i, header#header span.elementor-icon-list-icon i:hover,.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:hover i{
	 color:#c9a227
 }
 .product-miniature .product-miniature__title{
	 font-size:20px;
	 font-weight:500
 }
 .layout_layout4 .ets_mm_block > span.h4{
	text-decoration:none
 }
 .layout_layout4 .ets_mm_block > span.h4 a:hover,.ets_mm_block_content a:hover{
	 color:#c9a227!important
 }
 #category .product-miniature button.btn.btn-primary.flex-grow-1.flex-md-grow-0 span{font-size:0px}
 #category .product-miniature .product-miniature__infos__bottom{
	 height:60px;
 }
 #category form.d-flex.flex-wrap.flex-md-nowrap.gap-3.align-items-center.mt-3{
	 position:absolute;
	 right:10px;
	 bottom:33px;
 }
 #category a.btn.btn-outline-primary.mt-3 {
    position: absolute;
    right: 10px;
    bottom: 33px;
}
 .product-miniature .product-list-reviews{ display:none}

 .quantity-button.js-quantity-button.w-100.w-sm-auto {
    display: none;
}
 .badge{
	 background-color:#084E7D
 }
 #category section#content article.product-miniature.js-product-miniature {
    box-shadow: 0px 0px 10px hsl(210deg 10.34% 22.75% / 19%);
}
 .product-miniature .product-miniature__quickview{
	 display:none
 }
.ets_mm_megamenu .mm_block_type_product span.product_combination{
	font-size:0px;
}
.ets_mm_megamenu .mm-product-description span.h3.product-title.h4{
	text-decoration:none!important
}
.rich-text .h2, .rich-text h2{
	font-size:22px
}
/* Notif PS "info" (ex. "Votre panier contient 1 de ces produits") : inutile
   sur la fiche produit et source d'un flash (elle était positionnée en absolute
   par-dessus la colonne images). On la masque. success/warning/danger conservés. */
#product article.alert.alert-info {
    display: none;
}
.row{
	margin-left:0px;
	margin-right:0px
}
.wk_product_opt_container.wk-product-variants {
    display: flex;
    flex-wrap: wrap;
	gap:10px;
}
/* === Variants à valeur unique : on garde le <label> "Nom : valeur" et on masque
   uniquement le contrôle. Les inputs/select restent dans le DOM (combinaisons OK). === */
.cmoi-variant--single .form-select,
.cmoi-variant--single .color-variants,
.cmoi-variant--single .radio-variants {
  display: none;
}
.obsDescElement {
    padding: 0.5rem 0 !important;            /* allégé : padding vertical uniquement, plus d'encadrement */
    width: auto !important;                  /* contre width:100% du <style> module → libère le flux des siblings (boutons) */
    float: none !important;                  /* contre float:left du <style> module */
    font-size: 14px;
    line-height: 1.4;                        /* unitless : suit le font-size, reste lisible si on change la taille à nouveau */
    color: rgba(30, 58, 95, 0.75);           /* #1E3A5F à 75% opacité : informatif, pas dominant */
    background: transparent !important;      /* plus de fond blanc, intégration au flux */
    box-shadow: none !important;             /* plus de carte/ombre */
}
/* Réserve de hauteur du slot métal, UNIQUEMENT si le produit a une description
   métal (flag body posé par custom.js) → aucun vide sur les produits sans desc.
   La place est tenue même pendant que le module détruit/recrée la description
   au changement de combinaison → plus de saut vertical. */
body.cmoi-has-metal-desc .cmoi-metal-desc-slot {
    min-height: 56px;       /* ~2 lignes (14px × 1.4 × 2 + padding) — à ajuster */
    margin-bottom: 20px;    /* espace avant les pastilles (repris de .obsDescElement) */
}
.product__left.col-lg-6.col-xl-7 {
    padding: 0;
}
#product main#wrapper .col-lg-6.col-xl-7 {
    width: 100%;
    
}
.product__description.accordion-body.rich-text div {
    margin-bottom: 15px;
}
#product button.accordion-button {
    padding-left: 15px !important;
    padding-right: 15px !important;
}
.accordion-flush>.accordion-item>.accordion-collapse{
	background:#f6f4f2
}
#product .product__description-short.rich-text p{
	font-size:13px
}
#product button.carousel-control-next span.visually-hidden,#product button.carousel-control-prev span.visually-hidden {
    font-size: 0;
}
#product .wk-product-variants>.wk-product-variants-item .wk_option_title {
    font-size: 15px!important;
    padding-bottom: 4px;
    display: inline-block!important;
    font-weight: 700;
}
.page-product .product__name {
    margin-bottom: 1rem;
    font-size: 35px;
	border-bottom: 1px solid #d4af37;
}
/* Après remplacement AJAX par wkproductoptions, la structure interne devient
   .product-prices > .product-price > .current-price > .current-price-value.
   On force le flex sur .current-price pour que le bloc 3× injecté en JS
   reste sur la même ligne que le prix principal. */
.wk_price_option .current-price {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
}
#product span.current-price-value{
	font-size:26px
}
/* Aligne le prix SSR initial (.product__current-price) sur le prix swappé en
   AJAX par wkproductoptions (span.current-price-value, 26px) → zéro saut de
   taille au moment du swap. Cf. BUG saut de taille (Élisabeth). */
#product .product__current-price{
	font-size:26px
}
/* Stabiliser la HAUTEUR DE LIGNE du prix entre les deux états rendus dans
   .wk_price_option :
   - SSR initial : .product__current-price (theme line-height:2rem)
   - swap AJAX module : .product-price.h5 (theme groupe h5 line-height:1.2)
   La différence fait sautiller TOUT le bloc prix au swap. On force 1.3 partout
   (wrappers + valeur + bloc 3×). Scopé à .wk_price_option → pas de collatéral
   sur les vignettes accessoires. Spécificité id pour battre theme.css. */
#product .wk_price_option .product__current-price,
#product .wk_price_option .product-price,
#product .wk_price_option .current-price-value,
#product .wk_price_option .cmoi-price-3x {
  line-height: 1.3;
}
.breadcrumb {
    display: flex;
    justify-content: center;
}
#product main#wrapper .container{
	max-width:100%;
	padding:0px
}
button.accordion-button {
    padding: 15px !important;
}
div#product-description-collapse {
    padding: 20px;
}
#product .product__left.col-lg-6.col-xl-7 {
	margin-top:16px;
}
.product__col.col-lg-6.col-xl-5 {
	background: #f6f4f2;
	margin-top:16px;
	padding-top:25px
}
@media (min-width: 1024px) {
#product .product__left.col-lg-6.col-xl-7 {
    width: 50%!important;
	margin-top:16px
}
.product__col.col-lg-6.col-xl-5 {
    width: 50%;
	background: #f6f4f2;
    padding: 25px 25px;
	margin-top:16px
}
}
@media (max-width: 1024px) {
	#product main#wrapper .col-lg-6.col-xl-7{
		margin-top:10px
	}
	.product-comments-wrapper.my-3 {
		padding:5px 10px;
	}
	.product-actions__quantity.quantity-button.js-quantity-button.col-md-auto {
    width: auto;
}
	.page-product .product__add-to-cart .product-actions__button button{
		font-size:14px;
	}
}
button.btn.btn-primary.btn-with-icon.add-to-cart i.material-icons.me-1{
	font-size:0px
}
.wk-product-variants>.wk-product-variants-item {
    margin:10px 0;
    flex: 0 0 45%;
}
li.color-variant {
    width: 160px;
}
.product__variants.js-product-variants ul {
    position: relative;
}
.wk_product_opt_container .label_bottom{
	display:none!important
}

body .layout_layout4 .ets_mm_megamenu_content{
	border:none!important
}
.text-primary{
	color:#084e7d!important
}
.wishlist-footer-links{
	display:none
}
#cart #wrapper .container div#content-wrapper,#checkout #wrapper .container .row{
	max-width:100%;
	background: #F2EEE9;
    margin: 0 auto;
    padding: 50px 5%;
}
.customer-link a span:hover, .customer-link__link span:hover {
background: #084e7d;}
.customer-link a span, .customer-link__link span{
	    background: #fff;
flex-direction:none;
    font-size: 16px;
    font-weight: 600;
    font-family: 'Italiana';
    align-items: center;
}
#checkout div#delivery-addresses {
    padding: 0px !important;
}
.account-menu>a.active .link-item, .account-menu>a.active .link-item i, .account-menu>a:hover .link-item, .account-menu>a:hover .link-item i{color:#084e7d}
.col-md-4.carrier__logo{
	display:none;
}

#identity div#content-wrapper .col-lg-9,#address div#content-wrapper .col-lg-9,#addresses div#content-wrapper .col-lg-9,#history div#content-wrapper .col-lg-9,#order-slip div#content-wrapper .col-lg-9,#discount div#content-wrapper .col-lg-9,body#module-blockwishlist-lists div#content-wrapper .col-md-8.col-lg-9,#module-psgdpr-gdpr div#content-wrapper .col-lg-9,#my-account div#content-wrapper .col-lg-9{
        box-shadow:0px 0px 10px rgb(0 0 0 / 10%);
		padding:20px
    }
#my-account div#content-wrapper,#identity div#content-wrapper,#addresses div#content-wrapper,#address div#content-wrapper,#history div#content-wrapper,#order-slip div#content-wrapper,#discount div#content-wrapper,#module-blockwishlist-lists div#content-wrapper,#module-psgdpr-gdpr div#content-wrapper{
	background: #F2EEE9;
	padding:25px;
	margin-bottom:50px
}
body#my-account main#wrapper >.container,body#identity main#wrapper >.container,body#addresses main#wrapper >.container,body#address main#wrapper >.container,body#history main#wrapper >.container,body#order-slip main#wrapper >.container,body#discount main#wrapper >.container,body#module-blockwishlist-lists main#wrapper >.container,body#module-psgdpr-gdpr main#wrapper >.container{
	    background: #F2EEE9;
    max-width: 100%;
    padding: 50px 0;
}
body#my-account .breadcrumb__wrapper,body#identity .breadcrumb__wrapper,body#addresses .breadcrumb__wrapper,body#address .breadcrumb__wrapper,body#history .breadcrumb__wrapper,body#order-slip .breadcrumb__wrapper,body#discount .breadcrumb__wrapper,body#module-blockwishlist-lists .breadcrumb__wrapper,body#module-psgdpr-gdpr .breadcrumb__wrapper{
	margin-bottom:0px
}
#my-account div#content-wrapper .col-md-4.col-lg-3,#identity div#content-wrapper .col-md-4.col-lg-3,#addresses div#content-wrapper .col-md-4.col-lg-3,#address div#content-wrapper .col-md-4.col-lg-3,#history div#content-wrapper .col-md-4.col-lg-3,#order-slip div#content-wrapper .col-md-4.col-lg-3,#discount div#content-wrapper .col-md-4.col-lg-3,#module-blockwishlist-lists div#content-wrapper .col-md-4.col-lg-3,#module-psgdpr-gdpr div#content-wrapper .col-md-4.col-lg-3{
	background:#fff;
	padding:20px
}
body#my-account .container div#content-wrapper,body#identity .container div#content-wrapper,body#addresses .container div#content-wrapper,body#address .container div#content-wrapper,body#history .container div#content-wrapper,body#order-slip .container div#content-wrapper,body#discount .container div#content-wrapper,body#module-blockwishlist-lists .container div#content-wrapper,body#module-psgdpr-gdpr .container div#content-wrapper{
	padding:20px;
	max-width:1320px;
	margin:0 auto;
}
#checkout #wrapper .container .delivery-options__item.js-delivery-option .row {
    max-width: 100%;
    background:transparent;
    margin: 0 auto;
    padding: 5px;
}
.address__content {
    font-size: 15px;
    font-weight: 400;
}
.checkout__steps--current:before, .checkout__steps--success .checkout__steps__number,.checkout__steps--success:after, .checkout__steps--success:before{
	background-color:#084e7d
}
.checkout__steps--success .checkout__steps__text{
	color:#084e7d;
	font-size:14px;
	font-weight:400
}
.checkout__steps .nav-tabs .checkout__steps--current .nav-link.active,button.checkout__steps__text{
	font-size:14px;
	font-weight:400;
}
.address__alias {
    font-size: 20px;
}
#checkout #wrapper .container label.form-check-label.row {
    padding: 0px !important;
    background: #fff !important;
}
.step .address.selected{
	border:none;
}
.form-check-input:checked {
    background-color: #084e7d;
    border-color: #084e7d;
}
#checkout .my-3{
	margin-bottom:0px!important;
}
#checkout .js-address-form {
    
}
#checkout div#myTabContent {
    background: white;
    padding: 15px;
}
.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active{
	border-bottom-color:#084e7d;
	color:#084e7d;
	font-weight:500
}
.nav-link:focus, .nav-link:hover,.cart-summary__show i{
	color:#084e7d;
}
#cart section.featured-products {
    max-width: 1320px;
    margin: 0 auto;
}
.btn-outline-primary {
    --bs-btn-color: #000;
    --bs-btn-border-color: #000;
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: #000;
    --bs-btn-hover-border-color: #000;
    --bs-btn-focus-shadow-rgb: 13, 110, 253;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: #000;
    --bs-btn-active-border-color: #000;
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
    --bs-btn-disabled-color: #000;
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: #000;
    --bs-gradient: none;
}
.btn-primary {
    --bs-btn-color: #fff;
    --bs-btn-bg: #000;
    --bs-btn-border-color: #000;
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: #000;
    --bs-btn-hover-border-color: #000;
    --bs-btn-focus-shadow-rgb: 49, 132, 253;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: #000;
    --bs-btn-active-border-color: #000;
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: #000;
    --bs-btn-disabled-border-color: #000;
}
.btn-check:checked+.btn, .btn.active, .btn.show, .btn:first-child:active, :not(.btn-check)+.btn:active{
	border-color:#000;
	color:#000
}
.ybc-menu-toggle{
	font-size:0px!important;
	padding:0px!important
}
.mm_menus_li > a {
    font-weight: 500!important;
}
.layout_layout4.ets_mm_megamenu .mm_columns_ul {
    box-shadow: 0px 0px 10px rgb(0 0 0 / 25%)!important;
}

.ets_mm_block_content span.title {
    font-size: 24px;
    display: block;
    text-align: center;
	color:#fff; 
	padding-top:5px
}
ul.mm_columns_ul {
    padding-top: 0px !important;
}
li.mm_columns_li.column_size_12.mm_has_sub .hook-default.layout_layout4:not(.scroll_heading) .mm_blocks_li{
	padding-bottom:0px;
}
default.layout_layout4:not(.scroll_heading) .mm_columns_ul>.mm_columns_li{
	margin-top:0px!important
}
span.h4{
	font-size:18px;
	text-decoration:underline
}
a.ets_mm_url {
    padding-left: 15px;
}
a.ets_mm_url:before{
	content:'✧˖';
}
ul.mm_columns_ul {
    box-shadow: 0px 0px 10px 0px rgb(0 0 0 / 25%);
}
@media (max-width: 1199px) and (min-width: 768px) {
.changestatus.transition_floating .close_menu{
	font-size:16px!important;
	font-weight:400!important
}
}
@media (min-width: 992px) {
    #my-account .customer-link.row.g-3 .col-lg-4 {
        flex: 0 0 auto;
        width: 50%;
    }
}

/* === Police de gravure — applicable au textarea ET au récap === */
.cmoi-gravure--anglaise { font-family:'Allura',cursive; }
.cmoi-gravure--droite { font-family:'Cormorant Garamond',serif; }

/* Aperçu live dans le panneau (grande taille) */
.wk_option_text_area.cmoi-gravure--anglaise { font-size:1.8rem; line-height:1.4; color:#1E3A5F; }
.wk_option_text_area.cmoi-gravure--droite { font-size:1.4rem; color:#1E3A5F; }

/* === PANNEAU PERSONNALISATION — mise en forme des options === */

/* Neutralise le fond gris injecté en dur (!important) par wkproductoptions */
#cmoi-perso-offcanvas .wk-product-variants {
  background-color: transparent !important;
}

/* Empilement vertical des options, avec espacement */
#cmoi-perso-offcanvas .wk_product_opt_container {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

/* Titre de section */
#cmoi-perso-offcanvas .wk_option_title {
  display: block;
  margin-bottom: .5rem;
  font-weight: 700;
  font-size: 1rem;
  color: #1E3A5F;
}

/* Liens d'aide sous "Tour de doigt" */
#cmoi-perso-offcanvas .cmoi-perso__guide-links {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-bottom: .25rem;
}
#cmoi-perso-offcanvas .cmoi-perso__guide-link {
  font-size: .8125rem;
  color: #1E3A5F;
  text-decoration: underline;
}

/* Tour de doigt : grille 3 colonnes */
#cmoi-perso-offcanvas .cmoi-perso__option--taille {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: .5rem;
}

/* Type de gravure : grille 2 colonnes */
#cmoi-perso-offcanvas .cmoi-perso__option--gravure {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: .5rem;
}

/* Titre et liens occupent toute la largeur de la grille */
#cmoi-perso-offcanvas .cmoi-perso__option--taille > .control-label,
#cmoi-perso-offcanvas .cmoi-perso__option--taille > .cmoi-perso__guide-links,
#cmoi-perso-offcanvas .cmoi-perso__option--gravure > .control-label {
  grid-column: 1 / -1;
}

/* Pastilles : la pastille porte la bordure, le <label> injecté en JS porte le padding et reçoit le clic */
#cmoi-perso-offcanvas .cmoi-perso__option--taille .wk_opt_val,
#cmoi-perso-offcanvas .cmoi-perso__option--gravure .wk_opt_val {
  position: relative;
  border: 1px solid #D5E8F0;
  border-radius: .375rem;
  text-align: center;
}

/* Label injecté en JS : <label for="…"> autour du texte. Reçoit nativement le clic
   (universel, insensible aux quirks de hit-test des inputs sur Safari). */
#cmoi-perso-offcanvas .cmoi-perso__option--taille .cmoi-perso__opt-val-label,
#cmoi-perso-offcanvas .cmoi-perso__option--gravure .cmoi-perso__opt-val-label {
  display: block;
  padding: .5rem .75rem;
  margin: 0;
  cursor: pointer;
}

/* Radio masqué de façon ACCESSIBLE (motif visually-hidden) — plus d'overlay
   invisible, donc plus de bug Safari ; clavier et lecteurs d'écran OK. */
#cmoi-perso-offcanvas .cmoi-perso__option--taille input[type="radio"],
#cmoi-perso-offcanvas .cmoi-perso__option--gravure input[type="radio"] {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* État sélectionné — classe posée en JS sur 'change' (plus de :has(), supporté partout) */
#cmoi-perso-offcanvas .cmoi-perso__option--taille .wk_opt_val.cmoi-perso__opt-val--checked,
#cmoi-perso-offcanvas .cmoi-perso__option--gravure .wk_opt_val.cmoi-perso__opt-val--checked {
  background-color: #D5E8F0;
  border-color: #1E3A5F;
}

/* Indicateur de focus clavier (accessibilité) */
#cmoi-perso-offcanvas .cmoi-perso__option--taille .wk_opt_val:focus-within,
#cmoi-perso-offcanvas .cmoi-perso__option--gravure .wk_opt_val:focus-within {
  outline: 2px solid #1E3A5F;
  outline-offset: 2px;
}

/* === RÉCAP PERSONNALISATION === */

/* L'attribut hidden doit primer même avec les classes Bootstrap (.btn) */
.cmoi-perso__trigger[hidden],
#cmoi-recap[hidden],
#cmoi-recap-confirm[hidden] {
  display: none !important;
}

#cmoi-recap {
  background-color: #D5E8F0;
  border-radius: .5rem;
  padding: 1rem;
  margin-bottom: 1.5rem;
}

.cmoi-recap__title {
  margin: 0 0 .5rem;
  font-weight: 700;
  color: #1E3A5F;
}

.cmoi-recap__list { margin: 0; padding: 0; list-style: none; }
.cmoi-recap__item { margin-bottom: .25rem; }

.cmoi-recap__label { font-weight: 600; color: #1E3A5F; }
.cmoi-recap__label::after { content: " : "; }

.cmoi-recap__texte { font-size: 1.25rem; }

.cmoi-recap__edit {
  margin-top: .5rem;
  padding: 0;
  background: none;
  border: 0;
  color: #1E3A5F;
  font-size: .875rem;
  text-decoration: underline;
  cursor: pointer;
}

/* Message de confirmation après ajout au panier */
.cmoi-recap-confirm {
  margin-bottom: 1.5rem;
  padding: .75rem 1rem;
  background-color: #D5E8F0;
  border-radius: .5rem;
  color: #1E3A5F;
  font-weight: 600;
  text-align: center;
}

/* === PANNEAU LIVRAISON === */
#cmoi-livraison-body {
  color: #1E3A5F;
}
#cmoi-livraison-body img {
  max-width: 100%;
  height: auto;
}

/* === REFONTE COLONNE DROITE (palier 1) === */

/* 1. Masquer le champ quantité — #quantity_wanted reste dans le DOM (qty=1 par défaut) */
.product-add-to-cart .product-actions__quantity {
  display: none;
}

/* 2. Bouton "Ajouter au panier" : largeur = contenu + padding (pas pleine largeur).
   Le thème force width:100% via .page-product .product__add-to-cart .product-actions__button button (0,0,3,1).
   On monte la spécificité à 0,0,4,1 pour gagner sans !important. */
.page-product .product__add-to-cart .product-actions__button.add {
  flex: 0 0 auto;
}
.page-product .product__add-to-cart .product-actions__button button.add-to-cart {
  display: inline-flex;
  width: auto;
}

/* 3. Onglet "Détails" : masquer la ligne "En stock" — la donnée data-stock reste dans le DOM */
#product-details .product__details li.detail:has(span[data-stock]) {
  display: none;
}

/* === Accordéon #product-infos-accordion : nettoyage cosmétique (colonne droite) === */

/* Neutralise les fonds + couleurs Bootstrap, scopé À CET accordéon uniquement
   (n'affecte aucun autre accordéon de la page). */
#product-infos-accordion {
  --bs-accordion-bg: transparent;
  --bs-accordion-active-bg: transparent;
  --bs-accordion-btn-bg: transparent;
  --bs-accordion-btn-color: #1E3A5F;
  --bs-accordion-active-color: #1E3A5F;
  --bs-accordion-border-color: #D5E8F0;
  /* Chevron en charte (override des SVG inline de Bootstrap, stroke #1E3A5F) */
  --bs-accordion-btn-icon: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%231E3A5F' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E");
  --bs-accordion-btn-active-icon: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%231E3A5F' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E");
  /* Conteneur lui-même : aucun fond, bordure ni ombre */
  background: transparent;
  border: 0;
  box-shadow: none;
}

/* Séparateur fin entre items */
#product-infos-accordion .accordion-item {
  border-bottom: 1px solid #D5E8F0;
}

/* Dernier item : pas de trait orphelin sous "Livraison & retours".
   Override explicite, car la règle .accordion-flush>.accordion-item:last-child de Bootstrap
   serait écrasée par celle juste au-dessus (qui a une spécificité plus haute via l'ID). */
#product-infos-accordion .accordion-item:last-child {
  border-bottom: 0;
}

/* Filet de sécurité : aucune ombre (Bootstrap utilise une box-shadow inset basée sur
   --bs-accordion-border-width=0 — invisible — mais on garantit explicitement). */
#product-infos-accordion .accordion-button,
#product-infos-accordion .accordion-button:not(.collapsed),
#product-infos-accordion .accordion-item {
  box-shadow: none;
}

/* Indent gauche/droit des contenus : le thème (ou la couche Creative) pose
   padding:20px sur le SEUL #product-description-collapse (Conseil de la Maison).
   Nos toggles custom (Description courte, Détail) démarraient donc collés au
   bord. On généralise les 20px à TOUS les .accordion-collapse de notre accordéon
   → alignement homogène + tout futur toggle en hérite. Le toggle Livraison n'a
   pas de collapse (ouvre un offcanvas) → non concerné. Override neutre sur
   Conseil (déjà à 20px). */
#product-infos-accordion .accordion-collapse {
  padding: 20px;
}

/* === Prix : mention "3×" indicative (sous le prix principal) === */
.cmoi-price-3x {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  font-size: .875rem;
  font-weight: 400;   /* regular explicite : ne pas hériter du 600 de
                         .product-price.h5 après le swap AJAX (sinon "ou 3×"
                         passe en semi-bold → saut visuel) */
  color: #1E3A5F;
}
/* Libellé "ou 3×" : toujours regular (filet, même si un parent est bold) */
.cmoi-price-3x__label {
  font-weight: 400;
}
.cmoi-price-3x__amount {
  font-weight: 600;
}
/* Bouton d'info : reset visuel + curseur d'aide */
.cmoi-price-3x__info {
  display: inline-flex;
  align-items: center;
  padding: 0;
  background: none;
  border: 0;
  color: #1E3A5F;
  cursor: help;
}
.cmoi-price-3x__info .material-icons {
  font-size: 1rem;
}
/* Tooltip CSS pur : flèche + bulle au survol / focus clavier.
   Texte = data-cmoi-tooltip. Pas de JS, pas de dépendance Bootstrap. */
.cmoi-price-3x__info {
  position: relative;
}
.cmoi-price-3x__info::after {
  content: attr(data-cmoi-tooltip);
  position: absolute;
  bottom: calc(100% + .5rem);
  left: 50%;
  transform: translateX(-50%);
  white-space: nowrap;
  background: #1E3A5F;
  color: #fff;
  font-size: .75rem;
  line-height: 1.3;
  padding: .35rem .6rem;
  border-radius: 4px;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s ease-out;
  z-index: 10;
}
.cmoi-price-3x__info::before {
  content: '';
  position: absolute;
  bottom: calc(100% + .15rem);
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: #1E3A5F;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s ease-out;
}
.cmoi-price-3x__info:hover::after,
.cmoi-price-3x__info:hover::before,
.cmoi-price-3x__info:focus-visible::after,
.cmoi-price-3x__info:focus-visible::before {
  opacity: 1;
}

/* === Bloc prix : réserve de hauteur anti-sursaut (wrapper SSR stable) ===
   .wk_price_option (= contenu du bloc product_prices) est détruit/recréé ~100ms
   par PS au changement de combinaison → pendant ce trou, le contenu sous le prix
   remontait de ~24px. .cmoi-price-reserve (markup parent dans product.tpl, jamais
   détruit) RÉSERVE la hauteur du prix + l'espace bas vers la zone d'attributs. */
#product .cmoi-price-reserve {
  min-height: 40px;        /* hauteur du prix sur 1 ligne (≈ 33.79px mesuré) — à ajuster */
  margin-bottom: 1.25rem;  /* espace prix → attributs (déplacé depuis .wk_price_option) */
}

/* === Boutons d'action fiche produit — palier 3 refonte colonne droite ===
   Wrapper flex pour Personnaliser + Ajouter au panier côte à côte. */
.cmoi-actions-row {
  display: flex;
  align-items: stretch;
  gap: 1rem;
  flex-wrap: wrap;
  justify-content: flex-start;  /* boutons calés à gauche, pas étirés sur toute la colonne */
  min-height: 52px;             /* hauteur mesurée d'1 ligne : la rangée ne s'effondre pas
                                   si le bouton "Personnaliser" est masqué une fraction de seconde */
}
.cmoi-actions-row .cmoi-perso__trigger,
.cmoi-actions-row .product-actions__button {
  flex: 0 1 auto;   /* largeur = contenu (peut rétrécir, ne s'étire PAS) → fini le bouton à 511px */
  margin: 0;
}

/* Base bouton charte Carat & Moi (cohérent avec boutons "Découvrir" HP). */
.cmoi-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: 12px 28px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .03em;
  text-transform: uppercase;
  border: 2px solid #1E3A5F;
  border-radius: 3px;
  cursor: pointer;
  text-decoration: none;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.cmoi-btn:focus-visible {
  outline: 2px solid #1E3A5F;
  outline-offset: 2px;
}
.cmoi-btn[disabled],
.cmoi-btn:disabled {
  opacity: .5;
  cursor: not-allowed;
}

/* Outline (Personnaliser) : fond blanc / texte+bordure bleu foncé. Hover = inversé. */
.cmoi-btn--secondary {
  background: #fff;
  color: #1E3A5F;
}
.cmoi-btn--secondary:hover,
.cmoi-btn--secondary:focus-visible {
  background: #1E3A5F;
  color: #fff;
}

/* Solid (Ajouter au panier) : fond bleu foncé / texte blanc. Hover = inversé. */
.cmoi-btn--primary {
  background: #1E3A5F;
  color: #fff;
}
.cmoi-btn--primary:hover:not(:disabled),
.cmoi-btn--primary:focus-visible:not(:disabled) {
  background: #fff;
  color: #1E3A5F;
}

/* === Titre + cœur sur une ligne (palier 3 refonte colonne droite) ===
   Wrappe h1 + bouton wishlist (+ widget étoiles GRC si inséré) dans une
   ligne flex. Le border-bottom du h1 est transféré sur le wrapper pour
   souligner toute la ligne (cohérence visuelle). */
.cmoi-product-header__row {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  border-bottom: 1px solid #d4af37;
  padding-bottom: 1rem;
  margin-bottom: 1rem;
}
.cmoi-product-header__row .product__name {
  margin: 0;            /* la marge passe sur le wrapper */
  border-bottom: 0;     /* la bordure passe sur le wrapper */
  flex: 1 1 auto;
  min-width: 0;
}
.cmoi-product-header__row .wishlist-button {
  flex: 0 0 auto;
  margin-left: auto;    /* pousse le cœur à droite, GRC widget reste au milieu */
}

/* === Masquer le module productcomments — palier 3 (avis confiés à GRC) === */
.product-comments-wrapper,
.product-comments-additional-info {
  display: none;
}

/* === Typo labels d'attributs (palier 3 — cohérence avec onglets éditoriaux) ===
   Famille serif Cormorant Garamond (déjà chargée pour la gravure "droite"),
   medium au lieu de bold, taille un cran sous les titres de section. Scopé
   à la colonne droite des attributs uniquement. */
.product__variants .variant .form-label {
  font-family: 'Italiana', sans-serif;
  font-weight: 700;            /* aligné sur les titres de section : Italiana ne rend lisiblement qu'en 400 ou 700 (pas de medium réel) */
  font-size: 1.25rem;          /* parité avec les titres de section (mesuré : 1.25rem = 20px) */
  line-height: 1.2;            /* aligné sur les h2.info__title */
  color: #1E3A5F;
}

/* Aération entre les blocs d'attributs (Métal, Caratage, Gravure...) :
   évite le mur compact sous le prix. Le dernier sans marge pour ne pas créer
   d'espace orphelin avant la rangée de boutons. */
.product__variants .variant {
  margin-bottom: 1.25rem;
}
.product__variants .variant:last-child {
  margin-bottom: 0;
}

/* ============================================================
   ONGLET "DÉTAIL" — features de la combinaison (dfeaturecombination)
   Le <dl class="data-sheet dfc_table"> du module est recopié tel quel
   dans #cmoi-details-body (cf. custom.js). On le ré-habille en tableau
   2 colonnes sobre, cohérent avec l'accordéon : label à gauche (typo du
   corps d'accordéon, regular), valeur à droite, séparateurs fins #D5E8F0,
   pas d'arrondi, pas d'ombre.
   ============================================================ */
.cmoi-combi-specs .dfc_table {
  display: grid;
  grid-template-columns: minmax(40%, max-content) 1fr;
  max-width: 450px;   /* resserre le tableau (à ajuster : 380–500px) */
  margin-left: 0;     /* aligné à gauche ; mettre `margin: 0 auto` pour centrer */
  padding: 0;
}
.cmoi-combi-specs .dfc_table dt,
.cmoi-combi-specs .dfc_table dd {
  margin: 0;
  padding: 0.65rem 0;
  border-bottom: 1px solid #D5E8F0;
  font-size: 0.95rem;
  line-height: 1.4;
  color: #1E3A5F;
}
/* Label : typo du corps de l'accordéon (pas Italiana), regular */
.cmoi-combi-specs .dfc_table dt {
  font-family: inherit;
  font-weight: 400;
  padding-right: 1.5rem;
}
/* Valeur : colonne de droite, regular */
.cmoi-combi-specs .dfc_table dd {
  font-weight: 400;
  text-align: right;
}
/* Dernière ligne sans séparateur */
.cmoi-combi-specs .dfc_table dt:nth-last-of-type(1),
.cmoi-combi-specs .dfc_table dd:nth-last-of-type(1) {
  border-bottom: 0;
}

/* ============================================================
   DESCRIPTION COURTE — sections par déclinaison (dfeaturecombination)
   Le module rend une .dfc_short_description_{id_pa} par combinaison, à plat,
   + une .dfc_description_short_base commune. On masque toutes les sections de
   déclinaison ; custom.js révèle uniquement la combinaison courante (placée
   AVANT la base, display:block inline → prime sur cette règle). Cette règle
   sert aussi de fallback sans-JS. Pas de style cosmétique imposé sur ces
   sections : héritage de .product__description.
   ============================================================ */
#cmoi-description-courte-collapse [class*="dfc_short_description_"] {
  display: none;
}
@media (max-width: 767px) {
    .ets_mm_megamenu .container {
        background-color: transparent!important;
        padding: 0;
    }
}