/* Polices réelles du thème Madrid : Figtree pour les titres, DM Sans pour le texte.
   Cormorant est chargé par le thème mais n'est appliqué par aucun sélecteur — écarté. */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,700;1,300;1,700&family=Figtree:ital,wght@0,500;0,600;1,500&display=swap');

/* ============================================================
   MAJELLAN — Design System (préfixe mj-)
   ============================================================ */
:root{
  color-scheme: light;
  --mj-dark:#282828;
  --mj-dark-2:#1f1f1f;
  --mj-black:#111111;
  --mj-white:#ffffff;
  --mj-grey:#a9a9a9;
  --mj-grey-d:#6f6f6f;
  --mj-line:#e1e1e1;
  --mj-input-border:#cccccc;
  --mj-btn-label:#f9f9f9;
  --mj-btn-hover:#282828;
  --mj-gold:#c9a24b;
  /* Titres : Figtree 500. Texte : DM Sans 300. Boutons et menu : Figtree. */
  --mj-font:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
  --mj-font-title:'Figtree',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
  --mj-maxw:1396px;
  --mj-header-h:50px;
  --mj-adminbar:0px;}
/* La barre d'admin WordPress occupe le haut de la fenêtre quand on est connecté.
   Sans ça, toutes les hauteurs plein écran débordent d'autant. */
body.admin-bar{--mj-adminbar:32px;}
@media screen and (max-width:782px){body.admin-bar{--mj-adminbar:46px;}}
/* Sous 600px WordPress rend la barre non fixe : elle défile avec la page,
   donc elle ne mange plus de hauteur utile — on ne la déduit plus. */
@media screen and (max-width:600px){body.admin-bar{--mj-adminbar:0px;}}

*,*::before,*::after{box-sizing:border-box;}
/* Neutralise l'habillage des boutons du thème. :where() ne pèse rien en spécificité,
   donc n'importe quelle classe mj- reprend la main sans !important. */
/* reset.css du theme peint liens ET boutons en #cc3366, avec des selecteurs
   d'attribut ([type="button"], specificite 0,1,0) qu'un reset en :where()
   (specificite 0) ne peut pas battre. La couleur du texte restait donc rose
   sur tous nos boutons, et comme outline-color vaut currentColor par defaut,
   l'anneau de focus l'etait aussi : d'ou le cadre rose fugace au relachement
   de la souris sur les pastilles d'etui. On neutralise a la source, sans
   :where(), pour tous les etats et toutes les formes de bouton. */
a,button,[type="button"],[type="submit"],[type="reset"]{color:inherit;}
/* Au survol, le theme repassait les liens en bleu-violet (#333366) : visible
   sur le logo, le menu et les icones. Ils heritent desormais de la couleur
   de leur contexte — noir sur fond clair, blanc sur photo. */
a:hover,a:focus,a:active,a:visited{color:inherit;}
button,[type="button"],[type="submit"],[type="reset"]{background-color:transparent;border:0;border-radius:0;box-shadow:none;font-family:inherit;-webkit-appearance:none;appearance:none;}
button:hover,button:focus,button:active,
[type="button"]:hover,[type="button"]:focus,[type="button"]:active,
[type="submit"]:hover,[type="submit"]:focus,[type="submit"]:active,
[type="reset"]:hover,[type="reset"]:focus,[type="reset"]:active{background-color:transparent;color:inherit;border-color:currentColor;box-shadow:none;}
/* Les boutons habilles (.mj-btn) gardent leur propre fond : on le leur rend. */
.mj-home .mj-btn,.mj-page .mj-btn,.mj-shell .mj-btn,
.mj-home .mj-btn:hover,.mj-page .mj-btn:hover,.mj-shell .mj-btn:hover,
.mj-home .mj-btn:focus,.mj-page .mj-btn:focus,.mj-shell .mj-btn:focus{background:var(--mj-black);color:var(--mj-btn-label);}
/* Pas de scroll-behavior:smooth : combiné au scroll-snap obligatoire, il fait
   parfois s'arrêter le défilement entre deux crans sur mobile. */
/* Corps : DM Sans 300, 14px, interligne 1,5 — valeurs exactes du thème. */
.mj-home,.mj-page{font-family:var(--mj-font);font-weight:300;font-size:14px;line-height:1.5;overflow-x:hidden;}
/* Titres : Figtree 500, interlettrage NÉGATIF (-0,03em) et interligne 1,3.
   Le thème multiplie le réglage brut par 0,1 : « -0,3 » vaut donc -0,03em. */
.mj-home h1,.mj-home h2,.mj-home h3,.mj-page h1,.mj-page h2,.mj-page h3{font-family:var(--mj-font-title);font-weight:500;letter-spacing:-.03em;line-height:1.3;}
/* clip au lieu de hidden : hidden crée un conteneur de défilement qui casse position:sticky */
@supports (overflow-x:clip){.mj-home,.mj-page{overflow-x:clip;}}
.mj-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.mj-home img,.mj-page img{display:block;max-width:100%;height:auto;}
.mj-home a,.mj-page a{text-decoration:none;color:inherit;}
.mj-page a.mjcard__cta{color:#fff;}

.page-header,.entry-title,h1.entry-title:not(.mj-wc__title),.page-title,.elementor-page-title,.entry-header{display:none!important;}
main#content,.site-main,.page-content,.entry-content,article.page,article.post,.site-main>article{max-width:none!important;width:auto!important;padding:0!important;margin:0!important;}
header.site-header,.site-header:not(.mj-header),footer.site-footer,.site-footer:not(.mj-footer),#colophon:not(.mj-footer){display:none!important;}
.mj-full{margin-left:calc(50% - 50vw)!important;margin-right:calc(50% - 50vw)!important;width:100vw!important;max-width:100vw!important;}
/* Le confinement du rebond a été retiré d'ici. Il empêchait le rebond
   de se propager au navigateur — et donc, sur mobile, le geste de
   rechargement : tirer vers le bas depuis le haut ne rechargeait plus
   rien. Le fond blanc forcé suffit à ce pour quoi il avait été posé,
   éviter une bande sombre pendant le rebond.
   Le verrouillage du tiroir ne s'appuie pas dessus : il passe par
   « body.style.overflow », voir la fonction lock() du snippet 12. */
html,body{background:var(--mj-white)!important;}
/* Au tap, iOS et Android posent un voile bleu sur les liens et boutons, et
   un appui long selectionne le texte du logo ou du panier. Rien de tout cela
   n a de sens sur des elements d interface. Les zones de texte lisible, elles,
   restent selectionnables. */
a,button,summary,[type="button"],[type="submit"],[role="button"],.mj-logo,.mj-icon,.mj-burger{-webkit-tap-highlight-color:transparent;}
.mj-header,.mj-drawer,.mj-burger,.mj-logo,.mj-icon,.mj-nav,.mj-foot-grp,.mj-etui__opt,.mj-acc__head{-webkit-user-select:none;user-select:none;}

/* ===== Correctif : en-tete invisible sur l accueil =====
   mj-coquille pose cette regle :
     body.home.mj-darktop-page .mj-header:not(.mj-header--solid){
       background-color:#fff; background-clip:text; color:var(--mj-white); }
   Fond blanc, texte blanc, et le fond decoupe a la forme des lettres : le
   logo et le menu disparaissent completement au-dessus de la photo. Seul
   l accueil est concerne, le selecteur contenant body.home.
   On retablit le comportement attendu : en-tete transparent, texte blanc,
   tant que la page n a pas defile au-dela de la photo. A signaler au second
   developpeur pour correction a la source. */
html body.home.mj-darktop-page .mj-header:not(.mj-header--solid){
  background-color:transparent;
  background-image:none;
  -webkit-background-clip:border-box;
  background-clip:border-box;
  color:var(--mj-white);
}
@media (prefers-color-scheme:dark){
  html,body{background:var(--mj-white)!important;color:var(--mj-black)!important;}
}

/* ===== Header ===== */
/* Barre blanche opaque partout, y compris sur l'accueil. Le voile sombre et
   la bascule au defilement ont ete retires : le header ne recouvre plus les
   photos, elles commencent dessous. */
.mj-header{position:fixed;top:var(--mj-adminbar);left:0;width:100%;z-index:1000;height:var(--mj-header-h);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 22px;background:var(--mj-white);color:var(--mj-black);transition:background .35s ease,color .35s ease;}
/* Seul l'accueil garde le header transparent au-dessus des photos, comme le
   reglage header_overlay du theme Shopify, actif uniquement sur cette page.
   Le script pose .mj-header--solid une fois les photos depassees : le :not()
   rend alors la main au blanc de base. */
.mj-home .mj-header:not(.mj-header--solid){background:linear-gradient(180deg,rgba(0,0,0,.46),rgba(0,0,0,.18) 62%,rgba(0,0,0,0));color:var(--mj-white);box-shadow:none;text-shadow:0 1px 12px rgba(0,0,0,.45);}
.mj-home .mj-header:not(.mj-header--solid) :focus-visible{outline-color:#fff;}
/* Header fondu dans l'image : pas de bandeau, mais un voile degrade qui
   garantit la lisibilite du texte blanc, y compris sur un visuel clair
   comme la gravure de L'Histoire. Il s'efface vers le bas, donc il ne se
   lit jamais comme une barre. */
/* .mj-header--solid n'a plus d'effet : le script continue de poser la classe, c'est sans consequence. */
.mj-header__left{justify-self:start;display:flex;align-items:center;gap:30px;}
.mj-header__right{justify-self:end;display:flex;align-items:center;gap:24px;}
.mj-logo{justify-self:center;font-family:var(--mj-font-title);font-size:17px;font-weight:500;letter-spacing:.34em;text-transform:uppercase;padding-left:.34em;white-space:nowrap;}
.mj-nav{display:flex;align-items:center;gap:28px;}
/* Menu : Figtree 500, 9,9 px, interlettrage 0,1 em — mesuré dans base.css. */
.mj-nav a{font-family:var(--mj-font-title);font-size:9.9px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;opacity:.95;transition:opacity .2s;white-space:nowrap;}
.mj-nav a:hover{opacity:.55;}
.mj-nav a.is-current{opacity:1;text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px;}
.mj-icon{display:inline-flex;align-items:center;gap:5px;font-size:12px;letter-spacing:.06em;cursor:pointer;}
.mj-icon:hover{opacity:.6;}
.mj-burger{display:inline-flex;flex-direction:column;justify-content:center;gap:6px;background:none;border:0;padding:8px 4px;cursor:pointer;color:inherit;}
.mj-burger span{display:block;width:20px;height:2px;background:currentColor;transition:transform .3s ease,opacity .2s ease;}
/* Deux traits, pas trois : le balisage garde ses trois <span> sur toutes les
   pages, on masque simplement le dernier. La croix se forme avec les deux
   restants, qui pivotent vers le centre (demi-distance 4,25px). */
.mj-burger span:nth-child(3){display:none;}
/* Shopify n'a pas de bouton de fermeture : le hamburger devient une croix a sa
   place. Le tiroir n'est pas un descendant du header, d'ou :has() sur body. */
body:has(.mj-drawer.open) .mj-burger span:nth-child(1){transform:translateY(4px) rotate(45deg);}
body:has(.mj-drawer.open) .mj-burger span:nth-child(2){transform:translateY(-4px) rotate(-45deg);}

/* ===== Tiroir de navigation (mobile) =====
   Repris de component-menu-drawer.css du theme Shopify. Points qui comptent :
   le panneau s'ouvre SOUS le header, qui reste visible ; il est blanc et non
   sombre (classe color-background-1 codee en dur dans header-drawer.liquid) ;
   les libelles sont en minuscules (text-transform:none) et sans separateurs ;
   l'ouverture est un fondu de 300ms, pas une translation (header_animation_type
   vaut "fade" dans header-group.json). */
/* Plein ecran : le tiroir recouvre le header, qui disparait donc pendant la
   navigation. Sa propre barre porte la croix a gauche et le panier a droite. */
.mj-drawer{position:fixed;inset:0;z-index:1100;background:var(--mj-white);color:var(--mj-black);display:flex;flex-direction:column;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;}
.mj-drawer.open{opacity:1;visibility:visible;}
/* Le panneau blanc lui-meme : 44rem dans le theme, pleine largeur en dessous. */
.mj-drawer__bar{display:flex;align-items:center;justify-content:space-between;height:calc(var(--mj-header-h) + var(--mj-adminbar));padding:var(--mj-adminbar) 22px 0;flex-shrink:0;}
.mj-drawer__close{display:inline-flex;background:none;border:0;padding:0;cursor:pointer;color:var(--mj-black);}
.mj-drawer__close svg{width:20px;height:20px;display:block;}
.mj-drawer__bag{display:inline-flex;color:var(--mj-black);}
.mj-drawer__nav{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;gap:24px;padding:9vh 24px 0;overflow-y:auto;}
.mj-drawer__nav a{font-family:var(--mj-font-title);font-size:15px;font-weight:600;letter-spacing:.1em;line-height:1.2;text-transform:uppercase;color:var(--mj-black);text-decoration:none;padding:0;}
/* Liens utilitaires, plus bas et plus discrets, comme le second groupe de YSL. */
.mj-drawer__sec{display:flex;flex-direction:column;align-items:center;gap:15px;padding:0 24px calc(14vh + env(safe-area-inset-bottom));}
.mj-drawer__sec a{font-family:var(--mj-font-title);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-grey-d);text-decoration:none;}
.mj-drawer__sec a:hover{color:var(--mj-black);}
/* A corriger a la source dans le snippet de la coquille des que possible. */
.mj-drawer__sec a[href*="orders"]{font-size:0;letter-spacing:0;}
.mj-drawer__sec a[href*="orders"]::before{content:"Ma commande";font-size:11px;letter-spacing:.14em;}
/* Le theme ne montre aucun bouton de fermeture dedie. */

/* ===== Hero (accueil) ===== */
.mj-hero{position:relative;height:100vh;height:max(100vh,100lvh,100svh);width:100%;overflow:hidden;}
/* La geometrie des deux pages est identique au millieme de pixel : le
   tremblement observe sur l accueil ne vient donc pas de la mise en page mais
   du rendu. Sur La Maison, qui ne tremble pas, .mj-story__media porte un
   z-index et isole donc la photo dans son propre contexte d empilement. Ici la
   photo partageait le contexte de la page, en-tete fixe compris, ce qui oblige
   Safari a repeindre l ensemble a chaque image du defilement inertiel. On
   reproduit l isolement, et on rend l empilement explicite. */
.mj-hero__media{position:absolute;inset:0;z-index:0;}
.mj-hero__media picture{display:block;width:100%;height:100%;}
.mj-hero__media img,.mj-hero__media video{width:100%;height:100%;object-fit:cover;}
/* Le cliche du premier ecran est en paysage : en portrait, le cadrage centre
   coupait le visage de droite. 54% decale la fenetre pour garder les deux
   visages ; sans debordement horizontal (desktop), la valeur est sans effet. */
.mj-stack__item:first-of-type .mj-hero__media img{object-position:54% 50%;}
/* Voile plat, pas de degrade : index.json donne overlay_opacity 0,2 sur le
   premier ecran et 0,1 sur le second. */
.mj-hero__overlay{position:absolute;inset:0;z-index:1;background:rgba(0,0,0,.2);}
.mj-stack__item:nth-of-type(2) .mj-hero__overlay{background:rgba(0,0,0,.1);}
/* Bouton .button--simple du theme : lien texte sans fond, trait de 1px a 4px
   sous le mot, balaye au survol (::before glisse de -102%, ::after sort avec
   200ms de retard). La zone de contenu est a 78px du bas sous 750px. */
.mj-hero__cta{position:absolute;left:0;right:0;bottom:44px;bottom:calc(44px + 100lvh - 100svh);text-align:center;z-index:3;}
.mj-hero__cta a{position:relative;display:inline-block;color:#fff;font-family:var(--mj-font-title);font-size:12.06px;font-weight:600;letter-spacing:-.01em;text-transform:uppercase;padding:10px 0;text-decoration:none;overflow:hidden;}
.mj-hero__cta a::before,.mj-hero__cta a::after{content:"";position:absolute;left:0;bottom:6px;width:100%;height:1px;background:currentColor;}
.mj-hero__cta a::before{transform:translate3d(-102%,0,0);transition:transform 1000ms cubic-bezier(.23,1,.32,1);}
.mj-hero__cta a::after{transition:transform 1000ms cubic-bezier(.23,1,.32,1) 200ms;}
.mj-hero__cta a:hover::before{transform:translate3d(0,0,0);}
.mj-hero__cta a:hover::after{transform:translate3d(102%,0,0);}
.mj-hero__cta a:hover{opacity:.7;}
.mj-hero__caption{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#fff;padding:0 24px;text-shadow:0 1px 20px rgba(0,0,0,.4);}
.mj-hero__eyebrow{font-size:11px;letter-spacing:.24em;text-transform:uppercase;opacity:.85;margin:0 0 16px;}
.mj-hero__title{font-size:32px;font-weight:300;letter-spacing:.05em;margin:0 0 14px;}
.mj-hero__desc{font-size:13.5px;letter-spacing:.04em;max-width:440px;opacity:.92;margin:0;}

/* ===== Défilement par cran — une photo plein écran à la fois (façon Saint Laurent) =====
   scroll-snap-stop:always force un seul cran par geste : impossible d'en sauter une.
   Le snap n'est armé que sur les pages qui contiennent un .mj-stack.

   « mandatory » est voulu : la page repose toujours sur un cran, et le
   défilement avance d'une section entière. C'est ce comportement qui
   fait le site — ne pas l'assouplir en « proximity », l'essai a été
   fait et le résultat n'était plus le même produit.

   Ce n'est pas lui qui empêchait le geste de rechargement d'iOS :
   c'était « overscroll-behavior-y:contain », retiré plus bas sur
   html,body. Le rechargement fonctionne désormais AVEC mandatory. */
@supports selector(:has(*)){
  html:has(.mj-stack),html:has(.mj-page--maison),html:has(.mj-guide){scroll-snap-type:y mandatory;}
}


/* static et overflow-x:clip comme le conteneur de La Maison : un ancetre
   positionne entre le conteneur de defilement et les zones de cran fait
   recalculer les positions a chaque mouvement de la barre Safari. */
.mj-stack{position:static;}
/* lvh et non dvh ni svh. Sur iOS 26, la barre d'outils flotte au-dessus du
   contenu et dvh se resout PLUS PETIT que la zone reellement visible : la
   section suivante apparaissait en bande sous la premiere. lvh est la mesure
   haute, donc la section couvre toujours au moins l'ecran, jamais de fuite.
   Contrepartie : barres affichees, une bande de ~100px est rognee en bas. On
   la compense la ou ca compte, sur les elements ancres en bas, en ajoutant
   exactement (100lvh - 100svh) a leur decalage : 0 sur ordinateur, la hauteur
   des barres sur iPhone. */
/* Accueil : sections plein ecran, le header transparent les recouvre. */
.mj-stack__item{height:calc(100vh - var(--mj-adminbar));height:calc(max(100vh,100lvh,100svh) - var(--mj-adminbar));min-height:0;scroll-snap-align:start;scroll-snap-stop:always;scroll-margin-top:var(--mj-adminbar);}
/* Dans une pile, le hero epouse son cran plutot que de recalculer la fenetre :
   sinon, barre d'admin affichee, l'enfant depasse le parent de 32px. */
.mj-stack__item .mj-hero{height:100%;min-height:0;}
/* Le snippet de la coquille (feuille inline mj-coquille) impose
   .mj-stack__item{height:calc(100svh - ...)}. Chargee apres celle-ci et de
   meme specificite, sa regle gagnait. Or sur iPhone svh vaut 695 quand
   Safari en affiche 735 derriere sa barre flottante : la section s arretait
   40px trop tot et laissait voir le haut du pied de page. On reprend la main
   avec un selecteur plus specifique, en gardant la plus grande des unites. */
.mj-home .mj-stack__item{height:calc(max(100vh,100lvh,100svh) - var(--mj-adminbar));}
@media (max-width:749px){
  .mj-home .mj-stack__item{height:calc(max(100vh,100lvh,100svh) - var(--mj-adminbar));}
  /* Le bouton se cale sur le bas VISIBLE, pas sur le bas de la section :
     44px de marge + les 60px de reserve + l ecart barre affichee/masquee. */
  .mj-hero__cta{bottom:calc(44px + 100lvh - 100svh);}
}
/* Le pied fait desormais une page entiere (fenetre moins le header) : son cran
   en start coincide au pixel avec le defilement maximum, sur l'accueil comme
   sur les pages a barre blanche. Il glisse donc en entier, comme une photo,
   au lieu d'apparaitre en bande sous la derniere section. */
.mj-footer{scroll-snap-align:start;scroll-snap-stop:always;scroll-margin-top:calc(var(--mj-header-h) + var(--mj-adminbar));}

/* ===== Story — sections plein écran texte sur image (La Maison) ===== */
/* Pas de padding sur le conteneur : les sections pavent la fenêtre bord à bord et le
   header vient les recouvrir. Toute marge ici décalerait le cran et laisserait
   apparaître une bande de la section précédente. */
/* ============================================================
   REPRIS A L'IDENTIQUE du Liquid personnalise de la boutique Shopify
   (templates/page.json, section custom_liquid_JKwBjD).
   Ne pas `ameliorer'' ces valeurs sans reverifier la source : le bloc est
   centre et non colle a gauche, le texte est aligne a gauche et jamais
   justifie, et l'interlettrage du titre est POSITIF, contrairement a la
   regle globale du theme.
   ============================================================ */
.mj-page--maison{padding-top:calc(var(--mj-header-h) + var(--mj-adminbar));}
.mj-story{position:relative;height:calc(100vh - var(--mj-header-h) - var(--mj-adminbar));height:calc(100lvh - var(--mj-header-h) - var(--mj-adminbar));min-height:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--mj-white);color:var(--mj-black);padding:40px 24px;padding-bottom:calc(40px + 100lvh - 100svh);}
.mj-page--maison .mj-story{scroll-snap-align:start;scroll-snap-stop:always;scroll-margin-top:calc(var(--mj-header-h) + var(--mj-adminbar));}
.mj-story:has(.mj-story__more){padding-bottom:calc(150px + 100lvh - 100svh);overflow:hidden;}
.mj-story__inner{position:relative;z-index:2;width:100%;max-width:100%;text-align:left;margin:0 auto;}
.mj-story h2{font-family:var(--mj-font-title);font-weight:600;font-size:19px;letter-spacing:.1em;text-transform:uppercase;line-height:1.15;margin:0 0 30px;color:var(--mj-black);}
.mj-story p{font-family:var(--mj-font);font-weight:400;font-size:9px;line-height:1.95;letter-spacing:.075em;margin:0 0 16px;color:#3c3c3c;text-align:left;hyphens:none;}
.mj-story p:last-child{margin-bottom:0;}
.mj-story__sign{font-style:italic;letter-spacing:.05em;color:var(--mj-black);margin-top:26px!important;}
.mj-story__more{position:absolute;left:50%;transform:translateX(-50%);bottom:80px;bottom:calc(80px + 100lvh - 100svh);z-index:5;display:flex;flex-direction:column;align-items:center;gap:6px;font-family:var(--mj-font-title);font-size:10px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--mj-black);transition:opacity .3s ease;}
.mj-story__more:hover{opacity:.7;}
.mj-story__more svg{width:16px;height:16px;margin:0;opacity:1;animation:mj-arrow-bounce 2s ease-in-out infinite;}
@keyframes mj-arrow-bounce{0%,100%{transform:translateY(0);}50%{transform:translateY(6px);}}
@media (min-width:768px){
  .mj-story{padding:60px 80px;}
  .mj-story__inner{max-width:560px;}
  .mj-story h2{font-size:clamp(25px,2.6vw,35px);margin:0 0 30px;}
  .mj-story p{font-size:clamp(11px,.78vw,12.5px);line-height:1.9;margin:0 0 18px;}
  .mj-story__more{bottom:60px;font-size:11px;}
}

/* Une regle concurrente imposait 13px au texte et 21px au titre sous 768px,
   sans que j aie pu l identifier dans les feuilles chargees. On reprend la
   main avec un selecteur plus specifique, borne au telephone. */
@media (max-width:767px){
  .mj-page--maison .mj-story h2{margin:0 0 26px;}
  .mj-page--maison .mj-story p{font-size:11px;line-height:1.95;letter-spacing:.075em;margin:0 0 17px;color:var(--mj-black);}
  .mj-page--maison .mj-story__sign{font-size:11.5px;}
  /* mj-coquille passe ces sections en hauteur libre sous 768px, ce qui
     supprime le defilement par ecran et colle le texte en haut. On reprend
     la main avec .mj-page--maison, plus specifique, et on garde la meme
     base de hauteur que l accueil pour que le pied de page reste atteignable
     quand la barre de Safari se retire. */
  .mj-page--maison .mj-story,
  .mj-page--maison .mj-story:has(.mj-story__more){
    height:calc(100lvh - var(--mj-header-h) - var(--mj-adminbar));
    height:calc(max(100vh,100lvh,100svh) - var(--mj-header-h) - var(--mj-adminbar));
    min-height:0;
  }
  .mj-page--maison .mj-story__inner{text-align:center;}
}

/* Les titres de La Maison reprennent la typographie du titre de la fiche
   produit : Figtree 500 et interlettrage negatif, la ou ils etaient en 600
   tres espace. Alignes a gauche comme sur la fiche ; le texte qui les suit
   reste centre sur telephone. */
.mj-page--maison .mj-story h2{font-weight:500;letter-spacing:-.03em;line-height:1.3;font-size:20px;text-align:left;}
/* Les paragraphes sont justifies, les titres restent alignes a gauche.
   Les lignes terminees par un <br> et la derniere ligne d un paragraphe ne
   se justifient pas : les vers courts de « Nos valeurs » gardent donc leur
   fer a gauche, seules les lignes qui vont au bout s etirent. */
/*
   La regle de base interdit toute cesure (hyphens:none), ce qui annule aussi
   les cesures conditionnelles posees dans le texte. On repasse en manual :
   seules les coupures ecrites dans la page sont utilisees, jamais de coupure
   inventee par le navigateur. */
.mj-page--maison .mj-story p{text-align:justify;-webkit-hyphens:manual;hyphens:manual;color:var(--mj-black);}
@media (min-width:768px){
  .mj-page--maison .mj-story h2{font-size:24px;margin:0 0 30px;}
}

/* Sur un ecran de moins de 660px de haut, « L Histoire » deborde de sa
   section d une dizaine de pixels et mord sur la suivante. La section prend
   alors la hauteur de son texte, avec un plancher d un ecran : le cran reste
   en place, rien ne se chevauche. Les iPhone ne sont pas concernes. */
@media (max-width:767px) and (max-height:660px){
  .mj-page--maison .mj-story,
  .mj-page--maison .mj-story:has(.mj-story__more){
    height:auto;
    min-height:calc(100lvh - var(--mj-header-h) - var(--mj-adminbar));
    min-height:calc(max(100vh,100lvh,100svh) - var(--mj-header-h) - var(--mj-adminbar));
  }
}

/* ===== PDP — Carte d'affaires ===== */
.mj-pdp{padding-top:var(--mj-header-h);background:var(--mj-white);color:var(--mj-black);}
.mj-pdp__grid{max-width:var(--mj-maxw);margin:0 auto;padding:34px 24px 64px;display:flex;flex-direction:column;gap:34px;}
/* Le prix se cale a droite, sur la ligne du titre, sans toucher au balisage. */
.mj-pdp__info{position:relative;}
.mj-pdp__title{font-size:20px;font-weight:300;letter-spacing:.05em;text-transform:uppercase;margin:0 0 30px;padding-right:104px;}
.mj-pdp__price{font-size:14px;font-weight:400;letter-spacing:.02em;color:var(--mj-black);margin:0;position:absolute;top:3px;right:0;white-space:nowrap;}
.mj-pdp__btn{margin:0 0 22px;}
.mj-pdp__delivery{display:flex;align-items:center;padding:4px 0 6px;margin:0;font-size:11px;font-weight:400;letter-spacing:.12em;text-transform:uppercase;line-height:1.5;color:#000;}
.mj-pdp__delivery b{font-weight:600;letter-spacing:.06em;color:#000;}
.mj-pdp__delivery b::before{content:"\00a0";}

.mj-etui{margin:0 0 26px;}
.mj-etui__label{display:flex;align-items:center;justify-content:space-between;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-black);margin:0 0 14px;font-weight:500;}
.mj-etui__label span{color:var(--mj-grey-d);font-weight:400;}
.mj-etui__opts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.mj-etui__opt{background:none;border:1px solid var(--mj-line);padding:8px;cursor:pointer;font-family:inherit;text-align:center;transition:border-color .2s;}
.mj-etui__opt img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;margin-bottom:8px;}
.mj-etui__opt span{display:block;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--mj-grey-d);}

/* Pastilles cuir — placeholders CSS en attendant les photos produit */
/* Vraies photos produit (medias 328-330). Les cliches sont en portrait avec
   l'etui centre : le cadrage carre pleine largeur a 51% de hauteur le montre
   entier, marges blanches du studio comprises. */
.mj-swatch{width:100%;aspect-ratio:1/1;display:block;position:relative;overflow:hidden;background:#f6f5f3 center 51%/cover no-repeat;}
.mj-etui__opt .mj-swatch{margin-bottom:8px;}
.mj-swatch--crocodylia{background-image:url(https://maisonmajellan.com/wp-content/uploads/2026/08/mj-etui-crocodylia.jpg);}
.mj-swatch--drakara{background-image:url(https://maisonmajellan.com/wp-content/uploads/2026/08/mj-etui-drakara.jpg);}
.mj-swatch--felidi{background-image:url(https://maisonmajellan.com/wp-content/uploads/2026/10/mj-etui-felidi-v2.jpg);}
.mj-etui__opt.active{border-color:var(--mj-black);}
.mj-etui__opt.active span{color:var(--mj-black);}

/* ===== Loupe cuir — vue plein ecran des photos d'etui =====
   La pastille selectionne : le zoom a donc sa propre commande sous le choix.
   Fond blanc plein ecran : les cliches studio s'y fondent sans bord visible.
   Un toucher sur la photo agrandit a l'endroit touche, un second revient. */
.mj-etui__zoom{display:inline-flex;align-items:center;gap:7px;margin:12px 0 0;background:none;border:0;padding:0;cursor:pointer;font-family:var(--mj-font-title);font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-grey-d);}
.mj-etui__zoom svg{width:13px;height:13px;flex-shrink:0;}
.mj-etui__zoom span{border-bottom:1px solid currentColor;padding-bottom:2px;}
.mj-etui__zoom:hover,.mj-etui__zoom:focus-visible{color:var(--mj-black);}

/* ===== Provenance — origine du cuir et lieu de fabrication =====
   Deux lignes discretes sous le choix du cuir, la ou le client regarde la
   matiere. Meme graisse et meme interlettrage que les autres etiquettes de
   la fiche : libelle a gauche, valeur alignee a droite. */
.mj-prov{margin:18px 0 0;padding:14px 0 0;border-top:1px solid var(--mj-line);display:grid;gap:9px;}
.mj-prov__row{display:grid;grid-template-columns:1fr auto;align-items:baseline;column-gap:18px;}
.mj-prov__k{margin:0;font-size:10px;font-weight:400;letter-spacing:.14em;text-transform:uppercase;line-height:1.5;color:var(--mj-grey-d);}
.mj-prov__v{margin:0;font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;line-height:1.5;color:var(--mj-black);text-align:right;}
.mj-loupe{position:fixed;inset:0;z-index:1300;background:#fff;display:flex;flex-direction:column;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;}
.mj-loupe.open{opacity:1;visibility:visible;}
.mj-loupe__head{display:flex;justify-content:flex-end;padding:14px 18px 0;}
.mj-loupe__close{background:none;border:0;padding:10px;cursor:pointer;color:var(--mj-black);}
.mj-loupe__close svg{width:20px;height:20px;display:block;}
.mj-loupe__stage{flex:1;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;cursor:zoom-in;}
.mj-loupe__stage img{max-width:100%;max-height:100%;display:block;transition:transform .45s cubic-bezier(.22,1,.36,1);}
.mj-loupe.zoom .mj-loupe__stage{cursor:zoom-out;}
.mj-loupe.zoom .mj-loupe__stage img{transform:scale(2.2);}
.mj-loupe__hint{text-align:center;font-family:var(--mj-font-title);font-size:9.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-grey);margin:10px 16px 2px;}
.mj-loupe__names{display:flex;justify-content:center;gap:26px;padding:8px 16px calc(18px + env(safe-area-inset-bottom));}
.mj-loupe__names button{background:none;border:0;padding:6px 0;cursor:pointer;font-family:var(--mj-font-title);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-grey);border-bottom:1px solid transparent;}
.mj-loupe__names button.active{color:var(--mj-black);border-bottom-color:var(--mj-black);}

/* Photo du produit : la vraie carte, recto et verso, sur fond blanc. Elle a
   remplace le montage CSS qui simulait une carte bordeaux — le produit reel
   est gris anthracite grave et noir mat. */
.mj-pdp__media img.mj-pdp__photo{display:block;width:100%;max-width:620px;height:auto;margin:0 auto;}

/* ============================================================
   GUIDE — le parcours en quatre etapes
   ------------------------------------------------------------
   Maquette fournie par le client : un filet vertical relie les etapes,
   chaque numero est pose dessus, et le contenu alterne — texte a gauche
   puis a droite. Captures reelles de l application plutot que les
   illustrations de la maquette.
   ============================================================ */
.mj-etapes{position:relative;background:var(--mj-white);padding:0 0 40px;}
.mj-intro__rang{font-family:var(--mj-font-title);font-size:10.5px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--mj-grey);margin:0 0 18px;}
.mj-intro h1{font-size:26px;font-weight:300;letter-spacing:.02em;line-height:1.3;text-transform:none;margin:0 0 18px;color:var(--mj-black);}
@media (min-width:900px){.mj-intro h1{font-size:34px;}}
.mj-etape{position:relative;display:grid;align-items:center;}
.mj-etape__num{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--mj-line);border-radius:50%;background:var(--mj-white);font-family:var(--mj-font-title);font-size:12px;font-weight:500;color:var(--mj-grey-d);flex-shrink:0;}
.mj-etape__rang{font-family:var(--mj-font-title);font-size:10.5px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--mj-grey);margin:0 0 14px;}
.mj-etape__texte h2{font-size:24px;font-weight:300;letter-spacing:.01em;line-height:1.25;text-transform:none;margin:0 0 18px;color:var(--mj-black);}
.mj-etape__desc{font-size:14px;line-height:1.85;letter-spacing:.01em;color:#3c3c3c;margin:0 0 26px;}
.mj-etape__pts{list-style:none;margin:0;padding:0;border-top:1px solid var(--mj-line);}
.mj-etape__pts li{border-bottom:1px solid var(--mj-line);padding:13px 0;font-size:13px;line-height:1.6;color:var(--mj-black);}
.mj-etape__ecran{margin:0;display:flex;align-items:center;justify-content:center;}
.mj-etape__ecran img{display:block;width:auto;max-width:100%;height:340px;object-fit:contain;}

/* Telephone : une colonne, le numero en tete, l ecran avant le texte. */
@media (max-width:899px){
  .mj-etape{grid-template-columns:1fr;justify-items:center;text-align:center;gap:18px;padding:34px 24px 44px;}
  .mj-etape__num{order:0;}
  .mj-etape__ecran{order:1;}
  .mj-etape__texte{order:2;max-width:34ch;}
  .mj-etape__pts{text-align:left;}
  .mj-etape__ecran img{height:300px;}
}

/* Ordinateur : le filet vertical, le numero pose dessus, contenu alterne. */
@media (min-width:900px){
  .mj-etapes{padding:0 38px 80px;}
  .mj-etapes::before{content:"";position:absolute;left:calc(38px + 19px);top:60px;bottom:120px;width:1px;background:var(--mj-line);}
  .mj-etape{grid-template-columns:38px minmax(0,1fr) minmax(0,1fr);column-gap:56px;padding:36px 0;}
  .mj-etape__num{grid-column:1;grid-row:1;justify-self:center;}
  .mj-etape__texte{grid-column:2;grid-row:1;max-width:460px;}
  .mj-etape__ecran{grid-column:3;grid-row:1;}
  .mj-etape:nth-child(even) .mj-etape__texte{grid-column:3;grid-row:1;}
  .mj-etape:nth-child(even) .mj-etape__ecran{grid-column:2;grid-row:1;}
  .mj-etape__ecran img{height:420px;}
  .mj-etape__texte h2{font-size:30px;}
}

/* Defilement par cran, comme sur l accueil et sur La Maison : l introduction
   puis chaque etape occupent un ecran, le pied de page ferme la serie.
   Sur telephone les etapes sont denses : la photo descend a 200px, la pastille
   chiffree disparait et les espacements se resserrent. On pose
   min-height et non height : sous 690px de haut, l etape 1 grandit de
   quelques pixels au lieu de rogner son texte. */
.mj-guide{padding-top:calc(var(--mj-header-h) + var(--mj-adminbar));}
.mj-guide .mj-intro{min-height:calc(100lvh - var(--mj-header-h) - var(--mj-adminbar));min-height:calc(max(100vh,100lvh,100svh) - var(--mj-header-h) - var(--mj-adminbar));display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;}
.mj-guide .mj-intro,
.mj-guide .mj-etape{scroll-snap-align:start;scroll-snap-stop:always;scroll-margin-top:calc(var(--mj-header-h) + var(--mj-adminbar));}
@media (max-width:899px){
  .mj-guide .mj-etapes{padding-bottom:0;}
  /* Hauteur fixe d un ecran, et deux rangees : la photo prend tout ce que le
     texte ne consomme pas. Une etape dense la reduit, une etape courte la
     laisse grandir — chacune tient un ecran exact, donc le cran obligatoire
     ne cache jamais une ligne. Les selecteurs sont volontairement plus longs
     que ceux du bloc typographique, qui vient plus bas dans le fichier. */
  .mj-guide .mj-etape{
    height:calc(100lvh - var(--mj-header-h) - var(--mj-adminbar));
    height:calc(max(100vh,100lvh,100svh) - var(--mj-header-h) - var(--mj-adminbar));
    min-height:0;
    grid-template-rows:minmax(150px,1fr) auto;
    padding:14px 24px 20px;gap:14px;
  }
  .mj-guide .mj-etape__num{display:none;}
  .mj-guide .mj-etape__ecran{min-height:0;height:100%;}
  .mj-guide .mj-etape__ecran img{height:100%;width:auto;max-width:100%;object-fit:contain;}
  .mj-guide .mj-etape__rang{margin:0 0 8px;}
  .mj-guide .mj-etape .mj-etape__texte h2{font-size:17px;line-height:1.25;margin:0 0 12px;}
  .mj-guide .mj-etape .mj-etape__desc,
  .mj-guide .mj-etape .mj-etape__pts li{font-size:10.5px;line-height:1.75;}
  .mj-guide .mj-etape .mj-etape__pts li{padding:6px 0;}
  .mj-guide .mj-etape .mj-etape__desc--fin{margin:12px 0 0;}
}
@media (min-width:900px){
  .mj-guide .mj-etape{min-height:calc(max(100vh,100lvh,100svh) - var(--mj-header-h) - var(--mj-adminbar));}
}

/* ===== Guide — meme typographie que La Maison, en capitales =====
   Les capitales viennent de la CSS et non du texte : le contenu de la page
   reste lisible dans l editeur et exploitable par les moteurs. Titres en
   Figtree 500 a interlettrage negatif, corps a 11px espace, comme sur
   La Maison et sur la fiche produit. */
.mj-guide .mj-intro h1,
.mj-guide .mj-etape__texte h2{font-family:var(--mj-font-title);font-weight:500;font-size:20px;letter-spacing:-.03em;line-height:1.3;text-transform:uppercase;color:var(--mj-black);margin:0 0 22px;}
.mj-guide .mj-intro p,
.mj-guide .mj-etape__desc,
.mj-guide .mj-etape__pts li{font-family:var(--mj-font);font-weight:400;font-size:11px;line-height:1.95;letter-spacing:.075em;text-transform:uppercase;color:#3c3c3c;}
.mj-guide .mj-intro p{max-width:520px;margin:0 0 17px;}
.mj-guide .mj-intro p:last-child{margin:0;}
.mj-guide .mj-etape__desc{margin:0 0 22px;}
.mj-guide .mj-etape__desc--fin{margin:22px 0 0;}
.mj-guide .mj-etape__pts li{color:var(--mj-black);padding:12px 0;}
/* Justifies comme sur La Maison. Les puces restent au fer a gauche : ce sont
   des elements de liste, pas du texte courant. */
.mj-guide .mj-intro p,
.mj-guide .mj-etape__desc{text-align:justify;}
@media (min-width:768px){
  .mj-guide .mj-intro h1,
  .mj-guide .mj-etape__texte h2{font-size:24px;margin:0 0 26px;}
}



/* ===== Accordéons ===== */
.mj-acc{border-top:1px solid #d8d8d8;}
.mj-acc:last-of-type{border-bottom:1px solid #d8d8d8;}
.mj-acc__head{width:100%;background:none;border:0;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 0;cursor:pointer;font-family:inherit;font-size:12px;font-weight:400;letter-spacing:.01em;line-height:1.4;color:#000;text-align:left;text-transform:uppercase;}
/* Le chevron du balisage a un viewBox carre 24x24 ou la fleche n'occupe que la
   moitie de la hauteur : 22px de boite donnent une fleche visible de 11x5,5,
   soit la taille du chevron Shopify (11x7 dans un viewBox 12x8). */
.mj-acc__ico{flex-shrink:0;width:22px;height:22px;margin:-5px 0;display:block;transition:transform .35s cubic-bezier(.16,1,.3,1);}
.mj-acc.open .mj-acc__ico{transform:rotate(180deg);}
.mj-acc__body{max-height:0;overflow:hidden;transition:max-height .6s cubic-bezier(.16,1,.3,1);}
.mj-acc__inner{padding:4px 0 26px;font-size:12px;line-height:1.8;color:#000;}
.mj-acc__inner p{margin:0 0 10px;}
.mj-acc__inner p:last-child{margin-bottom:0;}
.mj-acc__inner ul{margin:0 0 10px;padding-left:16px;}
.mj-acc__inner li{margin:0 0 6px;list-style:disc;}
.mj-acc__inner li:last-child{margin-bottom:0;}
.mj-acc__inner strong{color:#000;font-weight:600;}
.mj-acc__inner .mj-acc__note{display:block;margin:14px 0 0;font-size:12px;font-weight:400;line-height:1.8;color:#000;}
.mj-acc__note strong{font-weight:600;}
/* Le lien passe a la ligne et saute une ligne, comme dans le Liquid Shopify ou
   il est un frere du paragraphe et non un enfant. */
.mj-acc__note a{display:block;width:fit-content;margin-top:18px;font-size:12px;font-weight:400;color:#000;text-decoration:underline;text-underline-offset:2px;}
.mj-acc button.mj-acc__head{white-space:normal;}
.mj-acc--faq .mj-acc__head{text-transform:none;font-size:15px;letter-spacing:.01em;font-weight:400;padding:22px 0;}
.mj-acc--faq .mj-acc__inner{font-size:14px;}

/* ===== Inclus avec la carte ===== */
.mj-incl{background:var(--mj-white);padding:56px 24px 78px;border-top:1px solid var(--mj-line);}
.mj-incl__wrap{max-width:var(--mj-maxw);margin:0 auto;}
.mj-incl h2{font-size:21px;font-weight:300;letter-spacing:.07em;text-transform:uppercase;margin:0 0 32px;text-align:center;}
.mj-incl__grid{display:grid;grid-template-columns:1fr;gap:20px;}
.mj-incl__card{border:1px solid var(--mj-line);padding:34px 26px;text-align:center;}
.mj-incl__ico{width:32px;height:32px;margin:0 auto 16px;color:var(--mj-black);}
.mj-incl__card h3{font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;margin:0 0 10px;}
.mj-incl__card p{font-size:13px;color:var(--mj-grey-d);line-height:1.7;margin:0;}
/* La garantie se deplie sur place : <details> natif, sans JavaScript. */
.mj-incl__plus{margin:10px 0 0;}
.mj-incl__plus summary{list-style:none;cursor:pointer;font-family:var(--mj-font-title);font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-grey-d);display:inline-block;border-bottom:1px solid currentColor;padding-bottom:2px;}
.mj-incl__plus summary::-webkit-details-marker{display:none;}
.mj-incl__plus summary::marker{content:"";}
.mj-incl__plus summary:hover,.mj-incl__plus summary:focus-visible{color:var(--mj-black);}
.mj-incl__plus[open] summary{color:var(--mj-black);}
.mj-incl__plus p{margin:14px 0 0;}

/* ===== Pages documentaires ===== */
.mj-page--light{padding-top:var(--mj-header-h);background:var(--mj-white);color:var(--mj-black);}
.mj-doc{max-width:760px;margin:0 auto;padding:56px 24px 84px;}
.mj-doc__title{font-size:26px;font-weight:300;letter-spacing:.05em;text-transform:uppercase;margin:0 0 44px;}
.mj-doc__block{margin:0 0 50px;}
.mj-doc__sub{font-size:13px;letter-spacing:.14em;text-transform:uppercase;font-weight:500;margin:0 0 12px;}
/* Sous-titre de second niveau, pour la section localisation : lisible sans
   crier, donc en minuscules et sans interlettrage large. */
.mj-doc .mj-doc__sub2{font-size:14px;font-weight:600;letter-spacing:.01em;line-height:1.4;color:var(--mj-black);margin:26px 0 8px;text-transform:none;}
.mj-doc__email a{font-size:15px;color:var(--mj-grey-d);text-decoration:underline;}
.mj-doc__faq-title{font-size:20px;font-weight:300;letter-spacing:.04em;text-transform:uppercase;margin:0 0 6px;}

.mj-intro{background:var(--mj-white);color:var(--mj-black);text-align:center;padding:88px 24px 30px;}
.mj-intro h2{font-size:27px;font-weight:300;letter-spacing:.03em;margin:0 0 18px;}
.mj-intro p{max-width:620px;margin:0 auto;font-size:14px;line-height:1.85;color:var(--mj-grey-d);}

.mj-feat{background:var(--mj-white);padding:36px 24px 78px;}
.mj-feat__wrap{max-width:var(--mj-maxw);margin:0 auto;display:flex;flex-direction:column;gap:34px;}
.mj-feat__list{display:flex;flex-direction:column;}
.mj-feat__item{border:0;background:none;text-align:left;font-family:inherit;cursor:pointer;padding:18px 0 18px 20px;border-left:2px solid transparent;transition:.25s;}
.mj-feat__item h3{font-size:14px;letter-spacing:.13em;text-transform:uppercase;font-weight:500;margin:0;color:var(--mj-grey);transition:.25s;}
.mj-feat__item p{max-height:0;overflow:hidden;margin:0;font-size:13.5px;line-height:1.75;color:var(--mj-grey-d);transition:max-height .4s ease,margin .25s;}
.mj-feat__item.active{border-left-color:var(--mj-black);}
.mj-feat__item.active h3{color:var(--mj-black);}
.mj-feat__item.active p{max-height:200px;margin:12px 0 0;}
.mj-feat__media{order:-1;}
.mj-feat__media img{width:100%;height:auto;object-fit:cover;aspect-ratio:4/5;}

.mj-edito{background:var(--mj-white);color:var(--mj-black);padding:38px 24px;}
.mj-edito__wrap{max-width:var(--mj-maxw);margin:0 auto;display:flex;flex-direction:column;gap:26px;}
.mj-edito__media img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;}
.mj-edito__text h2{font-size:28px;font-weight:300;letter-spacing:.02em;text-transform:uppercase;margin:0 0 18px;line-height:1.18;}
.mj-edito__text p{font-size:14px;line-height:1.8;color:var(--mj-grey-d);max-width:460px;margin:0;}

/* ===== Panier latéral ===== */
.mj-cart-ov{position:fixed;inset:0;background:rgba(0,0,0,.4);opacity:0;visibility:hidden;transition:opacity .35s ease;z-index:1150;}
.mj-cart-ov.open{opacity:1;visibility:visible;}
.mj-cart{position:fixed;top:0;right:0;height:100%;width:100%;max-width:418px;background:var(--mj-white);color:var(--mj-black);z-index:1200;transform:translateX(100%);transition:transform .4s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;font-family:var(--mj-font);}
.mj-cart.open{transform:translateX(0);}
.mj-cart__head{display:flex;align-items:center;justify-content:space-between;padding:24px 26px;border-bottom:1px solid var(--mj-line);}
.mj-cart__title{font-size:13px;letter-spacing:.18em;text-transform:uppercase;font-weight:500;}
.mj-cart__close{background:none;border:0;font-size:26px;line-height:1;cursor:pointer;color:var(--mj-black);font-family:inherit;}
.mj-cart__body{flex:1;overflow-y:auto;padding:0 26px;}
.mj-cart__item{display:flex;gap:16px;padding:22px 0;border-bottom:1px solid var(--mj-line);}
.mj-cart__thumb{width:60px;height:60px;flex-shrink:0;border-radius:8px;background:#f4f4f4;display:flex;align-items:center;justify-content:center;color:var(--mj-grey-d);overflow:hidden;}
.mj-cart__thumb svg{width:24px;height:24px;}
.mj-cart__thumb img{width:100%;height:100%;object-fit:cover;}
.mj-cart__info{flex:1;min-width:0;}
.mj-cart__line{display:flex;justify-content:space-between;gap:12px;align-items:baseline;}
.mj-cart__name{font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:500;}
.mj-cart__sub{display:block;font-size:11.5px;color:var(--mj-grey-d);margin-top:4px;letter-spacing:.03em;}
.mj-cart__price{font-size:13px;white-space:nowrap;}
.mj-cart__price--incl{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-grey-d);}
.mj-cart__foot{padding:22px 26px 26px;border-top:1px solid var(--mj-line);}
.mj-cart__trow{display:flex;justify-content:space-between;align-items:baseline;}
.mj-cart__tlabel{font-size:13px;letter-spacing:.14em;text-transform:uppercase;}
.mj-cart__tval{font-size:19px;font-weight:400;}
.mj-cart__ship{font-size:11px;color:var(--mj-grey);margin:6px 0 0;letter-spacing:.04em;}
.mj-cart__recur{font-size:11.5px;color:var(--mj-grey-d);margin:4px 0 18px;letter-spacing:.04em;}
.mj-cart__pay{width:100%;}

/* ===== Boutons ===== */
/* Boutons du thème : Figtree 600, 12,06 px, hauteur 36 px, padding 0 24 px,
   aucun rayon, aucune bordure, transition 0,45 s. Le survol n'est pas une
   inversion mais un balayage : un ::after passe de 0 à 100 % de largeur en
   #282828, le libellé restant #f9f9f9 dans les deux états. */
.mj-btn{position:relative;z-index:0;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 24px;background:var(--mj-black);color:var(--mj-btn-label);border:0;border-radius:0;font-family:var(--mj-font-title);font-weight:600;font-size:12.06px;letter-spacing:-.01em;text-transform:uppercase;cursor:pointer;}
/* z-index négatif : le voile se peint au-dessus du fond du bouton mais
   sous son libellé, sans avoir à envelopper le texte dans une balise. */
.mj-btn::after{content:"";position:absolute;inset:0 auto 0 0;width:0;background:var(--mj-btn-hover);transition:width .45s ease;z-index:-1;}
.mj-btn:hover::after{width:100%;}
.mj-home a.mj-btn,.mj-page a.mj-btn,button.mj-btn{color:var(--mj-btn-label);background:var(--mj-black);}
/* Pas d'inversion au survol : le thème garde le libellé clair et fait
   seulement glisser le voile #282828. Voir .mj-btn::after ci-dessus. */
.mj-btn--block{width:100%;}

/* Mobile d'abord : la navigation desktop et l'icône compte restent masquées,
   seul le burger est visible. Réactivées dans le bloc >=1024px. */
.mj-nav--left,.mj-nav--right,.mj-icon--user{display:none;}

/* Focus clavier — visible sans polluer le clic souris */
.mj-home :focus-visible,.mj-page :focus-visible{outline:2px solid currentColor;outline-offset:3px;}
.mj-story :focus-visible{outline-color:var(--mj-black);}
.mj-header :focus-visible{outline-color:var(--mj-black);}
.mj-header--solid :focus-visible{outline-color:var(--mj-black);}

/* ============================================================
   FOOTER — newsletter en tête + colonnes en accordéon (mobile)
   ============================================================ */
/* ===== Pied de page — pleine page, contenu centre, facon Saint Laurent ===== */
/* Meme base de hauteur que la section : sinon le defilement ne peut pas
   atteindre le cran du pied de page quand la barre Safari se masque. */
.mj-footer{min-height:calc(100vh - var(--mj-header-h) - var(--mj-adminbar));min-height:calc(max(100vh,100lvh,100svh) - var(--mj-adminbar));display:flex;align-items:center;justify-content:center;background:var(--mj-white);color:var(--mj-black);padding:34px 24px;position:relative;z-index:2;}
.mj-footer__pile{display:flex;flex-direction:column;align-items:center;gap:26px;text-align:center;}
.mj-foot-grp{display:flex;flex-direction:column;align-items:center;gap:10px;}
.mj-foot-grp__t{margin:0 0 3px;font-family:var(--mj-font-title);font-size:9.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--mj-grey);}
.mj-foot-grp a{font-family:var(--mj-font-title);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-black);text-decoration:none;}
.mj-foot-grp a{transition:color .2s ease;}
.mj-foot-grp a:hover,.mj-foot-grp a:focus-visible{color:var(--mj-black);text-decoration:underline;text-underline-offset:3px;}

/* ============================================================
   SURVOL — tout ce qui se clique reagit
   ------------------------------------------------------------
   Les libelles gris passent au noir. Ceux qui sont deja noirs, ou
   blancs sur fond sombre, s attenuent : les noircir les rendrait
   illisibles. Les boutons pleins gardent leur trait anime.
   ============================================================ */
.mj-loupe__names button,.mj-foot-insta,.mj-etui__opt,.mj-acc__head,
.mj-drawer__close,.mj-drawer__bag,.mj-cart__close,.mj-loupe__close,
.mj-logo,.mj-incl__plus summary,.mj-etui__zoom{transition:color .2s ease,opacity .2s ease;}
.mj-loupe__names button:hover,.mj-loupe__names button:focus-visible{color:var(--mj-black);}
.mj-foot-insta:hover,.mj-foot-insta:focus-visible{text-decoration:underline;text-underline-offset:3px;}
.mj-etui__opt:hover,.mj-acc__head:hover,.mj-drawer__close:hover,.mj-drawer__bag:hover,
.mj-cart__close:hover,.mj-loupe__close:hover,.mj-logo:hover,
.mj-wc .show-password-input:hover{opacity:.62;}
.mj-foot-grp__t{display:none;}
.mj-footer .mj-foot-grp a{padding:0;font-size:11px;line-height:1.7;letter-spacing:.1em;color:var(--mj-grey-d);}
.mj-footer .mj-foot-grp{gap:4px;}
.mj-footer .mj-footer__pile{gap:32px;}
/* Memes libelles et meme ordre que dans le menu. Les textes viennent du
   snippet de la coquille : on les remplace a l affichage, et on retablit
   l ordre avec flexbox. A corriger a la source des que possible. */
.mj-footer .mj-foot-grp a[href*="orders"],
.mj-footer .mj-foot-grp a[href*="edit-account"]{font-size:0;letter-spacing:0;}
.mj-footer .mj-foot-grp a[href*="edit-account"]{order:1;}
.mj-footer .mj-foot-grp a[href*="orders"]{order:2;}
.mj-footer .mj-foot-grp a[href*="orders"]::before{content:"Ma commande";font-size:11px;line-height:1.7;letter-spacing:.1em;}
.mj-footer .mj-foot-grp a[href*="edit-account"]::before{content:"Mon compte";font-size:11px;line-height:1.7;letter-spacing:.1em;}
.mj-foot-insta{display:inline-block;}
.mj-footer .mj-footer__copy{margin:4px 0 0;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--mj-grey);}

/* ===== Desktop ===== */
/* Bascule de la NAVIGATION : 1100 px dans le thème, pas 1024. */
@media (min-width:1100px){
  .mj-burger{display:none;}
  .mj-nav--left,.mj-nav--right{display:flex;}
  .mj-icon--user{display:inline-flex;}
  .mj-header{padding:0 38px;}
}

/* Bascule de la MISE EN PAGE : 750 px, le point de rupture le plus utilisé
   du thème (317 occurrences dans base.css). */
@media (min-width:750px){
  /* Colonne assez large : la justification redevient propre. */
  .mj-hero__title{font-size:44px;}
  /* 2rem entre 750 et 1099px, 2,4rem au-dela : valeurs de section-media-banner.css */
  .mj-hero__cta{bottom:20px;}
  .mj-pdp__grid{flex-direction:row;align-items:flex-start;gap:64px;padding:48px 38px 80px;}
  .mj-pdp__media{flex:1;position:sticky;top:calc(var(--mj-header-h) + var(--mj-adminbar) + 20px);}
  .mj-pdp__info{width:430px;flex-shrink:0;}
  .mj-pdp__title{font-size:24px;}
  .mj-incl__grid{grid-template-columns:repeat(3,1fr);gap:24px;}
  .mj-intro{padding:104px 24px 40px;}
  .mj-intro h2{font-size:34px;}
  .mj-feat__wrap{flex-direction:row;align-items:center;gap:72px;}
  .mj-feat__list{flex:1;}
  .mj-feat__media{order:0;flex:1;}
  .mj-edito{padding:72px 38px;}
  .mj-edito__wrap{flex-direction:row;align-items:center;gap:72px;}
  .mj-edito__media,.mj-edito__text{flex:1;}
  .mj-edito--rev .mj-edito__wrap{flex-direction:row-reverse;}
  .mj-edito__text h2{font-size:42px;}

  /* Footer desktop : colonnes ouvertes à gauche, newsletter à droite */
}

/* ============================================================
   HABILLAGE INJECTÉ PAR LE SNIPPET PHP
   Pages sans contenu éditable : Boutique, fiches produit, endpoints Woo.
   Le <body> porte alors la classe mj-shell (voir snippet-majellan.php).
   ============================================================ */
body.mj-shell{font-family:var(--mj-font);line-height:1.6;color:var(--mj-black);background:var(--mj-white);}
body.mj-shell a{text-decoration:none;color:inherit;}
:where(body.mj-shell) button{background:none;border:0;border-radius:0;box-shadow:none;color:inherit;font-family:inherit;}
.mj-shell-spacer{height:var(--mj-header-h);}
body.mj-shell .site-main,body.mj-shell main#content{padding:0 24px 72px!important;max-width:var(--mj-maxw)!important;margin:0 auto!important;}
body.mj-shell .woocommerce-products-header__title{display:block!important;font-size:24px;font-weight:300;letter-spacing:.08em;text-transform:uppercase;margin:30px 0 10px;}
body.mj-shell .woocommerce-breadcrumb{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--mj-grey);padding:26px 0 0;}
body.mj-shell .woocommerce-breadcrumb a{color:var(--mj-grey-d);}
body.mj-shell .woocommerce-result-count{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--mj-grey-d);}
body.mj-shell .woocommerce-ordering select{height:46px;border:1px solid var(--mj-line);border-radius:0;font-family:inherit;font-size:13px;padding:0 12px;background:#fff;color:var(--mj-black);}

body.mj-shell ul.products{display:grid;grid-template-columns:repeat(2,1fr);gap:28px 18px;list-style:none;margin:26px 0 0;padding:0;}
/* WooCommerce pose un clearfix ::before/::after sur ul.products. Dans une
   grille, ces pseudo-éléments deviennent des cases : le premier produit se
   retrouvait décalé d'une colonne, avec une case vide devant lui. */
body.mj-shell ul.products::before,body.mj-shell ul.products::after{display:none!important;}
body.mj-shell ul.products li.product{float:none!important;width:auto!important;margin:0!important;text-align:left;}
body.mj-shell ul.products li.product img{width:100%;aspect-ratio:1/1;object-fit:cover;margin:0 0 14px;background:#f4f4f4;}
body.mj-shell ul.products li.product .woocommerce-loop-product__title{font-size:13px!important;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--mj-black)!important;margin:0 0 6px;padding:0;}
body.mj-shell ul.products li.product .price{font-size:12.5px;color:var(--mj-grey-d)!important;display:block;margin:0 0 14px;line-height:1.5;}
body.mj-shell ul.products li.product .price ins{text-decoration:none;}
body.mj-shell ul.products li.product .button,
body.mj-shell ul.products li.product .added_to_cart{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:0 14px;background:var(--mj-black);color:#fff;border:1px solid var(--mj-black);font-family:inherit;font-size:11px;letter-spacing:.14em;text-transform:uppercase;border-radius:0;margin:0;text-align:center;line-height:1.3;transition:.25s;}
body.mj-shell ul.products li.product .button:hover,
body.mj-shell ul.products li.product .added_to_cart:hover{background:#fff;color:var(--mj-black);}
body.mj-shell .woocommerce-message,body.mj-shell .woocommerce-info{background:#fafafa;border:0;border-left:2px solid var(--mj-black);color:var(--mj-black);padding:14px 18px;font-size:13px;line-height:1.5;list-style:none;}

@media (min-width:1100px){
  /* 2,4rem au-dela de 1100px (section-media-banner.css:552) */
  .mj-hero__cta{bottom:24px;}
  body.mj-shell .site-main,body.mj-shell main#content{padding:0 38px 96px!important;}
  body.mj-shell ul.products{grid-template-columns:repeat(4,1fr);gap:44px 26px;}
  body.mj-shell .woocommerce-products-header__title{font-size:30px;}
}

/* ===== WooCommerce checkout & panier — habillage Majellan ===== */
.mj-wc{padding-top:var(--mj-header-h);background:var(--mj-white);color:var(--mj-black);min-height:100vh;}
.mj-wc__wrap{max-width:1080px;margin:0 auto;padding:46px 24px 90px;}
.mj-wc__title{font-size:24px;font-weight:300;letter-spacing:.08em;text-transform:uppercase;margin:0 0 36px;}
.mj-wc .woocommerce{font-family:var(--mj-font);}

/* Paiement express (Apple Pay, Google Pay) reactive a la demande du client.
   Il etait masque ici : sur un abonnement il court-circuite la saisie de
   l adresse et la case des CGV, et Stripe dessine son bouton dans un cadre
   isole, donc impossible a mettre a la charte. Voir les points de vigilance
   transmis avec cette modification. */
.mj-wc .woocommerce-form-coupon-toggle{display:none!important;}

/* WooCommerce prefixe ses messages d'une pastille dessinee avec sa police
   d'icones maison. Cette police n'est pas chargee ici, le navigateur affiche
   donc un carre vide qui ressemble a une image cassee. On supprime la pastille
   plutot que de charger une police entiere pour trois glyphes. */
.mj-wc .woocommerce-message::before,.mj-wc .woocommerce-info::before,
.mj-wc .woocommerce-error::before,body.mj-shell .woocommerce-message::before,
body.mj-shell .woocommerce-info::before,body.mj-shell .woocommerce-error::before{display:none!important;content:none!important;}
.mj-wc .woocommerce-message,.mj-wc .woocommerce-info,.mj-wc .woocommerce-error{background:#fafafa;border:0;border-left:2px solid var(--mj-black);color:var(--mj-black);padding:14px 18px;font-size:13px;line-height:1.5;list-style:none;margin:0 0 26px;}
.mj-wc .woocommerce-error{border-left-color:#b3261e;}
/* Sur le tunnel, le recapitulatif est deja a l'ecran : annoncer l'ajout au
   panier et proposer d'y retourner ne fait qu'ajouter du bruit et une sortie
   du tunnel. Les erreurs, elles, restent visibles. */
body.woocommerce-checkout .woocommerce-message{display:none;}
/* Le lien « Voir le panier » pointe vers la page ou l'on se trouve deja.
   Il faut a.button et non .button : la regle d'habillage des boutons porte
   sur a.button, plus specifique. */
.mj-wc .woocommerce .woocommerce-message a.button{display:none;}
/* WooCommerce donne le focus a la notification au chargement (tabindex="-1",
   role="alert"). Un anneau de focus s'affichait donc en permanence, lu comme
   un cadre noir autour du bandeau. Ce n'est pas une commande : on le retire. */
.mj-wc .woocommerce-message:focus,.mj-wc .woocommerce-info:focus,
.mj-wc .woocommerce-error:focus{outline:none;}
.mj-wc .woocommerce-error li{margin:0;}
.mj-wc .woocommerce-message a,.mj-wc .woocommerce-info a{color:var(--mj-black);text-decoration:underline;}

.mj-wc .woocommerce h3,.mj-wc #order_review_heading{font-size:13px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;margin:34px 0 18px;color:var(--mj-black);}

.mj-wc .woocommerce form .form-row{margin:0 0 16px;padding:0;}
.mj-wc .woocommerce form .form-row label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--mj-grey-d);margin-bottom:6px;display:block;}
.mj-wc .woocommerce form .form-row input.input-text,
.mj-wc .woocommerce form .form-row textarea,
.mj-wc .woocommerce form .form-row select{height:50px;border:1px solid var(--mj-line);border-radius:0;padding:0 14px;font-family:var(--mj-font);font-size:14px;color:var(--mj-black);background:#fff;width:100%;box-shadow:none;}
.mj-wc .woocommerce form .form-row textarea{height:110px;padding:12px 14px;}
.mj-wc .woocommerce form .form-row input.input-text:focus,
.mj-wc .woocommerce form .form-row textarea:focus,
.mj-wc .woocommerce form .form-row select:focus{outline:none;border-color:var(--mj-black);}
.mj-wc .select2-container--default .select2-selection--single{height:50px;border:1px solid var(--mj-line);border-radius:0;}
.mj-wc .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:48px;padding-left:14px;font-size:14px;color:var(--mj-black);}
.mj-wc .select2-container--default .select2-selection--single .select2-selection__arrow{height:48px;}

@media (min-width:900px){
  body.woocommerce-checkout .mj-wc .col2-set{display:flex;gap:56px;}
  body.woocommerce-checkout .mj-wc .col2-set .col-1,body.woocommerce-checkout .mj-wc .col2-set .col-2{flex:1;float:none;width:auto;}
}

.mj-wc .woocommerce table.shop_table{border:1px solid var(--mj-line);border-radius:0;border-collapse:collapse;margin:0 0 30px;width:100%;}
.mj-wc .woocommerce table.shop_table th,.mj-wc .woocommerce table.shop_table td{border-top:1px solid var(--mj-line);border-bottom:0;border-left:0;border-right:0;padding:15px 16px;font-size:13.5px;color:var(--mj-black);}
.mj-wc .woocommerce table.shop_table thead th{border-top:0;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-grey-d);background:#fafafa;}
.mj-wc .woocommerce table.shop_table tfoot th{font-size:12px;letter-spacing:.1em;text-transform:uppercase;}
.mj-wc .woocommerce table.shop_table .order-total td,.mj-wc .woocommerce table.shop_table .order-total th{font-size:16px;font-weight:500;}

.mj-wc .woocommerce-checkout #payment{background:#fafafa;border:1px solid var(--mj-line);border-radius:0;}
.mj-wc .woocommerce-checkout #payment ul.payment_methods{border-bottom:1px solid var(--mj-line);padding:20px;}
.mj-wc .woocommerce-checkout #payment ul.payment_methods li{list-style:none;font-size:14px;}
.mj-wc .woocommerce-checkout #payment div.payment_box{background:#fff;border:1px solid var(--mj-line);color:var(--mj-black);font-size:13px;}
.mj-wc .woocommerce-checkout #payment div.payment_box::before{display:none;}
.mj-wc .woocommerce-checkout #payment div.place-order{padding:20px;}
.mj-wc .woocommerce-privacy-policy-text{font-size:11.5px;color:var(--mj-grey);}
.mj-wc .woocommerce-privacy-policy-text a{color:var(--mj-grey-d);text-decoration:underline;}

/* Un seul systeme de boutons sur tout le site. Valeurs de .button--primary du
   theme Madrid : Figtree 600, 12,06px, capitales, interlettrage -0,01em,
   36px de haut, 24px de cotes, et le meme balayage #282828 au survol que
   .mj-btn plutot qu'une inversion. */
.mj-wc .woocommerce #place_order,
.mj-wc .woocommerce button.button,
.mj-wc .woocommerce a.button,
.mj-wc .woocommerce input.button,
.mj-wc .woocommerce a.checkout-button{position:relative;z-index:0;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;min-height:36px;height:auto;padding:10px 24px;background:var(--mj-black);color:var(--mj-btn-label);border:0;border-radius:0;font-family:var(--mj-font-title);font-weight:600;font-size:12.06px;letter-spacing:-.01em;line-height:1.5;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:none;}
.mj-wc .woocommerce #place_order::after,
.mj-wc .woocommerce button.button::after,
.mj-wc .woocommerce a.button::after,
.mj-wc .woocommerce input.button::after,
.mj-wc .woocommerce a.checkout-button::after{content:"";position:absolute;inset:0 auto 0 0;width:0;background:var(--mj-btn-hover);transition:width .45s ease;z-index:-1;}
.mj-wc .woocommerce #place_order:hover::after,
.mj-wc .woocommerce button.button:hover::after,
.mj-wc .woocommerce a.button:hover::after,
.mj-wc .woocommerce input.button:hover::after,
.mj-wc .woocommerce a.checkout-button:hover::after{width:100%;}
.mj-wc .woocommerce #place_order:hover,
.mj-wc .woocommerce button.button:hover,
.mj-wc .woocommerce a.button:hover,
.mj-wc .woocommerce input.button:hover,
.mj-wc .woocommerce a.checkout-button:hover{background:var(--mj-black);color:var(--mj-btn-label);}
/* input.button ne peut pas porter de ::after : on lui rend l'inversion. */
.mj-wc .woocommerce input.button:hover{background:var(--mj-btn-hover);}
.mj-wc .woocommerce #place_order,
.mj-wc .woocommerce a.checkout-button{width:100%;}

/* ===== Panier ===== */
/* La boutique ne vend qu'un abonnement, en quantite figee a 1 : la colonne
   Quantite reste vide et le bouton « Mettre a jour le panier » est desactive
   en permanence. WooCommerce peint les boutons desactives en color:inherit,
   ce qui donnait un rectangle noir a texte noir, opacite 0,5 : la case grise
   sans libelle. On retire les deux plutot que de les habiller pour rien. */
.mj-wc .woocommerce table.cart th.product-quantity,
.mj-wc .woocommerce table.cart td.product-quantity,
.mj-wc .woocommerce table.cart tr.actions,
.mj-wc .woocommerce table.cart td.actions{display:none;}
/* Filet de securite si un bouton desactive reapparait ailleurs. */
.mj-wc .woocommerce button.button:disabled,
.mj-wc .woocommerce button.button[disabled]{background:var(--mj-black);color:#fff;opacity:.3;cursor:not-allowed;}

.mj-wc .woocommerce table.cart img{width:80px;height:auto;display:block;}
.mj-wc .woocommerce table.cart td.product-thumbnail{width:104px;}
.mj-wc .woocommerce table.cart td.product-name a{font-size:14px;letter-spacing:.02em;}
.mj-wc .woocommerce table.cart dl.variation{margin:6px 0 0;font-size:12px;color:var(--mj-grey-d);}
.mj-wc .woocommerce table.cart dl.variation dt,
.mj-wc .woocommerce table.cart dl.variation dd{display:inline;margin:0;font-weight:400;}
.mj-wc .woocommerce table.cart dl.variation dd p{display:inline;margin:0;}
.mj-wc .woocommerce table.cart dl.variation dt{margin-right:5px;}
/* Sans cela « SOUS-TOTAL » se coupait en deux dans l'en-tete. */
.mj-wc .woocommerce table.cart thead th,
.mj-wc .woocommerce table.cart td.product-subtotal,
.mj-wc .woocommerce table.cart td.product-subtotal{white-space:nowrap;}
.mj-wc .woocommerce table.cart td.product-price{white-space:normal;min-width:190px;}
.mj-wc .woocommerce table.cart td.product-name > a{white-space:nowrap;}
.mj-wc .woocommerce a.remove{color:var(--mj-grey-d)!important;font-weight:300;font-size:20px;line-height:1;}
.mj-wc .woocommerce a.remove:hover{color:var(--mj-black)!important;background:none!important;}

/* Recapitulatif : meme habillage que le pave « Votre commande » du tunnel. */
.mj-wc .cart_totals h2{font-size:13px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;margin:0 0 16px;}
.mj-wc .cart_totals table.shop_table{margin:0;}
.mj-wc .cart_totals table.shop_table th{font-size:12px;letter-spacing:.06em;font-weight:500;text-transform:none;}
.mj-wc .cart_totals .order-total th,.mj-wc .cart_totals .order-total td{font-size:15px;}

/* ===== Recapitulatif du panier et de la commande =====
   - « Étui » disparait devant le nom du cuir : le mot a ete abandonne.
   - « Sous-total » ne veut rien dire pour le client ; la ligne devient
     « Abonnement carte » au panier et « Abonnement mensuel » a la commande.
   - Le bloc « Renouvellement » de WP-Swings repetait la meme information.
   - L en-tete de colonne « Sous-total » devient « Montant » : le mot y avait
     un troisieme sens, celui du prix de la ligne.
   Ces libelles sont refaits en CSS et non en JavaScript, pour que le bon
   texte soit affiche des le premier rendu, sans clignotement. */
.mj-wc .woocommerce table.cart dl.variation dt,
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table dl.variation dt{display:none;}

/* « Sous-total » designe ici le montant de la ligne, un troisieme sens du mot
   sur le meme ecran. On le nomme « Montant », comme a la commande. */
.mj-wc .woocommerce table.cart thead th.product-subtotal{font-size:0;letter-spacing:0;}
.mj-wc .woocommerce table.cart thead th.product-subtotal::before{content:"Montant";font-size:11px;line-height:1.5;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-grey-d);}

.mj-wc .woocommerce .cart_totals tr.cart-subtotal th{font-size:0;letter-spacing:0;}
.mj-wc .woocommerce .cart_totals tr.cart-subtotal th::before{content:"Adhésion";font-size:12px;line-height:1.5;letter-spacing:.06em;font-weight:500;}

.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.cart-subtotal th{font-size:0;letter-spacing:0;}
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.cart-subtotal th::before{content:"Abonnement mensuel";font-size:12px;line-height:1.5;letter-spacing:.1em;text-transform:uppercase;font-weight:500;}
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table thead th.product-total{font-size:0;letter-spacing:0;}
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table thead th.product-total::before{content:"Montant";font-size:11px;line-height:1.5;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-grey-d);}
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tr.wps_recurring_bifurcation_wrapper{display:none;}

/* Ligne « Porte-carte — Inclus », posee par le script de la page Panier. */
.mj-wc .woocommerce .cart_totals tr.mj-cart-cuir td{color:var(--mj-grey-d);}

/* Le paiement express Stripe reste a la commande, la ou l adresse et les
   conditions de vente sont saisies. Sur le panier il court-circuitait les
   deux, et le bouton noir Google Pay doublait « Valider la commande ». */
body.woocommerce-cart .mj-wc #wc-stripe-express-checkout-element,
body.woocommerce-cart .mj-wc .wc-stripe-express-checkout-element,
body.woocommerce-cart .mj-wc #wc-stripe-payment-request-wrapper{display:none!important;}

/* Sous 768px, WooCommerce masque les en-tetes de colonne et reconstruit les
   libelles a partir de l attribut data-title de WooCommerce, que la feuille de
   style ne peut pas modifier. On y refait les memes renommages. La ligne du
   porte-carte recoit son data-title depuis le script de la page. */
@media (max-width:768px){
  .mj-wc .woocommerce .cart_totals tr.cart-subtotal td::before{content:"Adhésion"!important;}
  .mj-wc .woocommerce table.cart td.product-subtotal::before{content:"Montant"!important;}
}
.mj-wc .wc-proceed-to-checkout{margin:20px 0 0;padding:0;}
.mj-wc .wc-proceed-to-checkout a.checkout-button{width:100%;}

/* WooCommerce fait flotter le recapitulatif a droite, ce qui laissait toute la
   moitie gauche vide sous la ligne de produit. On passe en deux colonnes. */
@media (min-width:900px){
  body.woocommerce-cart .mj-wc .woocommerce{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:48px;align-items:start;}
  /* WooCommerce insere aussi un conteneur de notifications, meme vide : sans
     cela il prenait la premiere case et decalait tout le reste. */
  body.woocommerce-cart .mj-wc .woocommerce > .woocommerce-notices-wrapper,
  body.woocommerce-cart .mj-wc .woocommerce > .woocommerce-message,
  body.woocommerce-cart .mj-wc .woocommerce > .woocommerce-info,
  body.woocommerce-cart .mj-wc .woocommerce > .woocommerce-error{grid-column:1/-1;}
  body.woocommerce-cart .mj-wc .woocommerce .cart-collaterals{width:auto;float:none;}
  body.woocommerce-cart .mj-wc .woocommerce .cart_totals{float:none;width:auto;}
  body.woocommerce-cart .mj-wc .woocommerce table.cart{margin:0;}
}

/* ============================================================
   PAGES DOCUMENTAIRES ET ESPACE CLIENT
   ------------------------------------------------------------
   Ces regles vivaient en six blocs <style> recopies dans le
   contenu des pages, avec des variantes divergentes et des
   valeurs de l'ancien systeme (police Jost, gris #e8e8e8,
   boutons 48px). Etant apres la feuille du theme dans le
   document, elles l'ecrasaient : les boutons de l'espace client
   restaient en Jost alors que tout le site est en Figtree.
   Tout est regroupe ici, une seule fois, sur les jetons du
   theme Madrid.
   ============================================================ */

/* ----- Pages legales (CGV, mentions, cookies, coordonnees) ----- */
.mj-doc p{font-size:14px;color:var(--mj-grey-d);line-height:1.85;margin:0 0 12px;}
.mj-doc ul{margin:6px 0 0;padding-left:20px;}
.mj-doc li{font-size:14px;color:var(--mj-grey-d);line-height:1.7;margin:0 0 7px;}
.mj-doc a{color:var(--mj-black);text-decoration:underline;}
.mj-doc__intro{font-size:14px;color:var(--mj-grey-d);line-height:1.85;margin:0 0 30px;}
.mj-doc__update{font-size:12px;color:var(--mj-grey);letter-spacing:.04em;margin:0 0 34px;}
.mj-doc__id{border:1px solid var(--mj-line);padding:22px 26px;margin:2px 0 34px;}
.mj-doc__id p{margin:0 0 5px;font-size:13.5px;color:var(--mj-black);line-height:1.7;}
.mj-doc__notice{background:#fafafa;border-left:2px solid var(--mj-black);padding:18px 22px;margin:16px 0 0;}
.mj-doc__notice p{margin:0;font-size:13.5px;color:var(--mj-grey-d);}
.mj-contact-grid{display:grid;grid-template-columns:1fr;gap:16px;margin:0 0 30px;}
@media (min-width:640px){.mj-contact-grid{grid-template-columns:1fr 1fr;}}
.mj-contact-card{border:1px solid var(--mj-line);padding:26px;}
.mj-contact-card h3,.mj-ck h3{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:500;margin:0 0 10px;color:var(--mj-black);}
.mj-contact-card p{font-size:13.5px;margin:0 0 4px;}
.mj-contact-card span{display:block;font-size:12px;color:var(--mj-grey);margin-top:6px;}
.mj-ck{border:1px solid var(--mj-line);padding:22px 24px;margin:0 0 14px;}
.mj-ck p{font-size:13.5px;margin:0;}

/* ============================================================
   ESPACE CLIENT
   ------------------------------------------------------------
   Navigation en onglets horizontaux a toutes les largeurs : les
   tableaux gardent toute la largeur utile, et le mobile defile
   lateralement sans ascenseur visible.
   ============================================================ */
.mj-wc .woocommerce-MyAccount-navigation{margin:0 0 34px;}
.mj-wc .woocommerce-MyAccount-navigation ul{list-style:none;margin:0;padding:0 0 2px;display:flex;gap:26px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;border-bottom:1px solid var(--mj-line);}
.mj-wc .woocommerce-MyAccount-navigation ul::-webkit-scrollbar{display:none;}
.mj-wc .woocommerce-MyAccount-navigation li{border:0;flex-shrink:0;}
.mj-wc .woocommerce-MyAccount-navigation li a{display:block;padding:10px 2px 13px;font-family:var(--mj-font-title);font-size:10.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--mj-grey-d);text-decoration:none;border-bottom:1px solid transparent;margin-bottom:-1px;transition:color .2s,border-color .2s;white-space:nowrap;}
.mj-wc .woocommerce-MyAccount-navigation li.is-active a{color:var(--mj-black);border-bottom-color:var(--mj-black);}
.mj-wc .woocommerce-MyAccount-navigation li a:hover{color:var(--mj-black);}
.mj-wc .woocommerce-MyAccount-content{font-size:14px;color:var(--mj-black);line-height:1.7;}
.mj-wc .woocommerce-MyAccount-content a{color:var(--mj-black);}

/* ----- Pastilles d etat ----- */
.mj-pill{display:inline-flex;align-items:center;gap:7px;padding:5px 13px;font-family:var(--mj-font-title);font-size:9.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--mj-line);color:var(--mj-grey-d);white-space:nowrap;}
.mj-pill::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;}
.mj-pill--ok{color:#2e6b46;border-color:#cfe2d6;background:#f4faf6;}
.mj-pill--warn{color:#8a6116;border-color:#e8d9b5;background:#fbf7ec;}
.mj-pill--off{color:var(--mj-grey-d);border-color:var(--mj-line);background:#fafafa;}

/* ----- Tableau de bord ----- */
.mj-account-dashboard .woocommerce-MyAccount-content > p{display:none;}
.mj-dash__hello{font-size:24px;font-weight:300;letter-spacing:.04em;margin:0 0 6px;color:var(--mj-black);}
.mj-dash__intro{font-size:13px;color:var(--mj-grey-d);margin:0 0 28px;}
.mj-dash__sub{border:1px solid var(--mj-line);padding:24px 26px;margin:0 0 14px;}
.mj-dash__sub-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 18px;}
.mj-dash__sub-head h3{font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:500;margin:0;color:var(--mj-black);}
.mj-dash__sub-rows{display:flex;flex-direction:column;gap:9px;margin:0 0 18px;}
.mj-dash__sub-row{display:flex;justify-content:space-between;gap:18px;font-size:13px;}
.mj-dash__sub-row span:first-child{color:var(--mj-grey-d);}
.mj-dash__sub-row span:last-child{color:var(--mj-black);text-align:right;}
.mj-dash__sub-link{font-family:var(--mj-font-title);font-size:10.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-black);text-decoration:underline;text-underline-offset:4px;}
.mj-dash__order{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--mj-line);padding:18px 26px;margin:0 0 22px;flex-wrap:wrap;}
.mj-dash__order-info{display:flex;flex-direction:column;gap:3px;}
.mj-dash__order-info b{font-size:13px;font-weight:500;color:var(--mj-black);}
.mj-dash__order-info span{font-size:12px;color:var(--mj-grey-d);}
.mj-dash__order-right{display:flex;align-items:center;gap:16px;}
.mj-dash__callout{background:var(--mj-black);color:#fff;padding:28px;margin:0 0 22px;}
.mj-dash__callout h3{font-size:13px;letter-spacing:.14em;text-transform:uppercase;margin:0 0 8px;color:#fff;font-weight:500;}
.mj-dash__callout p{font-size:13px;color:rgba(255,255,255,.78);line-height:1.7;margin:0 0 16px;}
.mj-dash__callout a{display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 24px;color:var(--mj-black);background:#fff;font-family:var(--mj-font-title);font-weight:600;font-size:12.06px;letter-spacing:-.01em;text-transform:uppercase;text-decoration:none;transition:opacity .2s;}
.mj-dash__callout a:hover{opacity:.85;}
.mj-dash__grid{display:grid;grid-template-columns:1fr;gap:14px;margin:0 0 26px;}
@media (min-width:560px){.mj-dash__grid{grid-template-columns:1fr 1fr;}}
.mj-dash__card{border:1px solid var(--mj-line);padding:22px;text-decoration:none;color:var(--mj-black);display:block;transition:border-color .2s;}
.mj-dash__card:hover{border-color:var(--mj-black);}
.mj-dash__card h3{font-size:12px;letter-spacing:.12em;text-transform:uppercase;margin:0 0 8px;font-weight:500;color:var(--mj-black);}
.mj-dash__card p{font-size:12.5px;color:var(--mj-grey-d);line-height:1.6;margin:0;}
.mj-dash__support{font-size:12.5px;color:var(--mj-grey-d);}
.mj-dash__support a{text-decoration:underline;}
.mj-dash__sub-note{font-size:13px;line-height:1.7;color:var(--mj-grey-d);margin:0 0 16px;}

/* ===== Filet : un seul tableau de bord =====
   Deux versions du snippet « Espace client » sont actives dans Code Snippets
   et le tableau de bord se dessine deux fois. En attendant que l ancienne
   soit desactivee, on ne garde que la derniere, la plus complete : elle seule
   affiche l abonnement et la derniere commande. La regle devient sans effet
   des qu il n y a plus qu un seul bloc. */
.mj-dash:has(~ .mj-dash){display:none!important;}

/* ----- Tableaux : commandes, abonnements, moyens de paiement ----- */
.mj-wc .woocommerce-MyAccount-content table.shop_table{border:0;border-top:1px solid var(--mj-line);border-collapse:collapse;width:100%;font-size:13px;margin:0 0 26px;}
.mj-wc .woocommerce-MyAccount-content table.shop_table th,
.mj-wc .woocommerce-MyAccount-content table.shop_table td{border:0;border-bottom:1px solid var(--mj-line);padding:15px 12px;text-align:left;vertical-align:middle;background:transparent;}
.mj-wc .woocommerce-MyAccount-content table.shop_table thead th{font-family:var(--mj-font-title);font-size:9.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--mj-grey);}
.mj-wc .woocommerce-MyAccount-content table.shop_table tbody tr:hover td{background:#fafafa;}
.mj-wc .woocommerce-MyAccount-content table.shop_table .button{min-height:32px;padding:6px 18px;font-size:10.5px;}
.mj-wc .woocommerce-MyAccount-content .woocommerce-orders-table__cell-order-number a{font-weight:500;text-decoration:none;}
.mj-wc .woocommerce-MyAccount-content .woocommerce-orders-table__cell-order-number a:hover{text-decoration:underline;}
/* En dessous de 750px, les lignes s empilent : chaque cellule devient une
   ligne libelle-valeur. Reprend le mecanisme responsive de WooCommerce en le
   stylant a la charte, et reste autonome si sa feuille venait a manquer. */
@media (max-width:749px){
  .mj-wc .woocommerce-MyAccount-content table.shop_table_responsive thead{display:none;}
  .mj-wc .woocommerce-MyAccount-content table.shop_table_responsive tr{display:block;padding:8px 0 14px;border-bottom:1px solid var(--mj-line);}
  .mj-wc .woocommerce-MyAccount-content table.shop_table_responsive td{display:flex;justify-content:space-between;align-items:baseline;gap:18px;border:0;padding:6px 0;text-align:right;background:transparent!important;}
  .mj-wc .woocommerce-MyAccount-content table.shop_table_responsive td::before{content:attr(data-title);float:none;color:var(--mj-grey);font-family:var(--mj-font-title);font-size:9.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;}
  .mj-wc .woocommerce-MyAccount-content table.shop_table_responsive td:has(.button){justify-content:flex-end;padding-top:10px;}
}

/* ----- Detail d une commande ----- */
.mj-wc .woocommerce-order-details,.mj-wc .woocommerce-customer-details{margin:0 0 30px;}
.mj-wc .woocommerce-order-details__title,.mj-wc .woocommerce-customer-details h2{font-size:13px;letter-spacing:.14em;text-transform:uppercase;font-weight:500;margin:0 0 16px;}
.mj-wc .woocommerce-customer-details address{border:1px solid var(--mj-line);padding:22px 26px;font-style:normal;font-size:13.5px;line-height:1.9;color:var(--mj-grey-d);}

/* ----- Adresses ----- */
.mj-wc .woocommerce-Addresses{display:grid;grid-template-columns:1fr;gap:18px;}
@media (min-width:750px){.mj-wc .woocommerce-Addresses{grid-template-columns:1fr 1fr;}}
.mj-wc .woocommerce-Addresses .woocommerce-Address{flex:none;min-width:0;border:1px solid var(--mj-line);padding:24px 26px;}
.mj-wc .woocommerce-Address-title{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin:0 0 12px;}
.mj-wc .woocommerce-Address-title h3{font-size:12px;letter-spacing:.13em;text-transform:uppercase;font-weight:500;margin:0;}
.mj-wc .woocommerce-Address-title .edit{font-family:var(--mj-font-title);font-size:9.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-grey-d);text-decoration:underline;text-underline-offset:3px;}
.mj-wc .woocommerce-Address address{font-style:normal;font-size:13.5px;line-height:1.9;color:var(--mj-grey-d);}

/* ----- Formulaires du compte ----- */
.mj-wc .woocommerce-MyAccount-content fieldset{border:0;border-top:1px solid var(--mj-line);margin:26px 0 0;padding:20px 0 0;}
.mj-wc .woocommerce-MyAccount-content legend{font-size:12px;letter-spacing:.13em;text-transform:uppercase;font-weight:500;padding:0 0 14px;}
.mj-wc .woocommerce-MyAccount-content .form-row em{font-style:normal;font-size:11.5px;color:var(--mj-grey);}

/* ----- Connexion, inscription, mot de passe ----- */
.mj-wc .woocommerce-form-login,
.mj-wc .woocommerce-form-register,
.mj-wc .woocommerce-ResetPassword{max-width:420px;margin:0 auto;border:1px solid var(--mj-line);padding:38px 34px;}
.mj-wc .u-columns{display:flex;flex-wrap:wrap;gap:40px;justify-content:center;}
.mj-wc .u-columns > div{flex:1;min-width:280px;}
/* Le compte ne se cree qu a l achat : la colonne "S inscrire" de WooCommerce
   n a pas lieu d etre. Masquage d affichage ; la desactivation reelle se fait
   dans WooCommerce > Reglages > Comptes et confidentialite. */

/* ============================================================
   VERIFICATION DE L ADRESSE E-MAIL
   ------------------------------------------------------------
   Bloc pose sur la page de confirmation de commande, et formulaire
   d aide du service client. Le compte ne se creant qu a l achat, une
   faute de frappe sur l adresse laisse le client paye mais bloque :
   ces deux ecrans sont ses seules issues.
   ============================================================ */
.mj-mailv{border:1px solid var(--mj-line);padding:26px 24px;margin:0 0 28px;background:#fafafa;}
.mj-mailv__t{font-family:var(--mj-font-title);font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;margin:0 0 14px;color:var(--mj-black);}
.mj-mailv__p{font-size:13px;line-height:1.7;color:var(--mj-grey-d);margin:0 0 10px;}
.mj-mailv__mail{font-size:16px;font-weight:500;color:var(--mj-black);margin:0 0 14px;word-break:break-all;line-height:1.4;}
.mj-mailv__actions{display:flex;flex-wrap:wrap;gap:22px;margin:16px 0 0;}
.mj-mailv__lien{background:none;border:0;padding:0;cursor:pointer;font-family:var(--mj-font-title);font-size:10.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--mj-black);text-decoration:underline;text-underline-offset:4px;white-space:normal;text-align:left;}
.mj-mailv__lien:hover{opacity:.65;}
.mj-mailv__lien:disabled{opacity:.4;cursor:default;}
.mj-mailv__form{margin:20px 0 0;padding:20px 0 0;border-top:1px solid var(--mj-line);}
.mj-mailv__form label{display:block;font-family:var(--mj-font-title);font-size:9.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--mj-grey);margin:0 0 8px;}
.mj-mailv__form input{width:100%;height:46px;padding:0 14px;border:1px solid var(--mj-line);background:#fff;font-family:var(--mj-font);font-size:14px;color:var(--mj-black);border-radius:0;margin:0 0 14px;}
.mj-mailv__form input:focus{outline:none;border-color:var(--mj-black);}
.mj-mailv__note{font-size:11.5px;color:var(--mj-grey);margin:12px 0 0;line-height:1.6;}
.mj-mailv__msg{font-size:13px;line-height:1.7;margin:14px 0 0;min-height:1px;}
.mj-mailv__msg.ok{color:#2e6b46;}
.mj-mailv__msg.err{color:#b23b3b;}
@media (min-width:750px){
  .mj-mailv{padding:30px 32px;}
  .mj-mailv__form input{max-width:420px;}
}

/* ----- Formulaire d aide, page Service client ----- */
.mj-aide{border:1px solid var(--mj-line);padding:26px 24px;margin:34px 0 0;}
.mj-aide h3{font-family:var(--mj-font-title);font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;margin:0 0 12px;color:var(--mj-black);}
.mj-aide p{font-size:13px;line-height:1.7;color:var(--mj-grey-d);margin:0 0 18px;}
.mj-aide label{display:block;font-family:var(--mj-font-title);font-size:9.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--mj-grey);margin:0 0 8px;}
.mj-aide input{width:100%;height:46px;padding:0 14px;border:1px solid var(--mj-line);background:#fff;font-family:var(--mj-font);font-size:14px;color:var(--mj-black);border-radius:0;margin:0 0 16px;}
.mj-aide input:focus{outline:none;border-color:var(--mj-black);}
.mj-aide__msg{font-size:13px;line-height:1.7;margin:14px 0 0;}
.mj-aide__msg.ok{color:#2e6b46;}
.mj-aide__msg.err{color:#b23b3b;}
@media (min-width:750px){
  .mj-aide{padding:30px 32px;}
  .mj-aide input{max-width:420px;}
}
#customer_login .u-column2{display:none;}
#customer_login .u-column1{flex:0 1 420px;}
.mj-wc .woocommerce-form-login__rememberme{font-size:12px;color:var(--mj-grey-d);text-transform:none;letter-spacing:0;}
.mj-wc .woocommerce-LostPassword{margin-top:14px;}
.mj-wc .woocommerce-LostPassword a{font-size:12px;color:var(--mj-grey-d);text-decoration:underline;}
.mj-wc .woocommerce-column__title,.mj-wc .woocommerce h2{font-size:13px;letter-spacing:.14em;text-transform:uppercase;font-weight:500;margin:0 0 16px;}
/* Les regles generiques du tunnel (.mj-wc .woocommerce h2 / h3) gagnent en
   specificite sur les classes seules : le Bonjour sortait en 13px capitales
   et le titre de l encart noir etait noir sur noir. On re-ancre chaque
   element du tableau de bord avec la meme profondeur de selecteur. */
.mj-wc .woocommerce h2.mj-dash__hello{font-size:24px;font-weight:300;letter-spacing:.04em;text-transform:none;margin:0 0 6px;color:var(--mj-black);}
.mj-wc .woocommerce .mj-dash__sub-head h3{margin:0;font-size:12px;letter-spacing:.14em;}
.mj-wc .woocommerce .mj-dash__callout h3{color:#fff;margin:0 0 8px;font-size:13px;letter-spacing:.14em;}
.mj-wc .woocommerce .mj-dash__card h3{margin:0 0 8px;font-size:12px;letter-spacing:.12em;}
.mj-wc .woocommerce .woocommerce-Address-title h3{margin:0;font-size:12px;letter-spacing:.13em;}

/* ============================================================
   TUNNEL DE COMMANDE
   ------------------------------------------------------------
   Deplace depuis un bloc <style> du contenu de la page
   « Validation de la commande ». Deux regles ont ete ecartees au
   passage : l'habillage des notifications et la taille reduite de
   leurs boutons, tous deux desormais definis plus haut.
   ============================================================ */
.mj-wc .woocommerce-form-coupon-toggle,
.mj-wc .woocommerce-additional-fields{display:none!important;}
body.woocommerce-checkout .mj-wc .col2-set{display:block!important;}
body.woocommerce-checkout .mj-wc .col2-set .col-1{width:100%!important;float:none!important;}
.mj-wc h3#order_review_heading{margin-top:0;}
@media (min-width:1000px){
  .mj-wc form.woocommerce-checkout{display:grid;grid-template-columns:minmax(0,1fr) 420px;column-gap:60px;align-items:start;}
  .mj-wc form.woocommerce-checkout #customer_details{grid-column:1;grid-row:1 / span 3;}
  .mj-wc #order_review_heading{grid-column:2;grid-row:1;}
  .mj-wc #order_review{grid-column:2;grid-row:2;position:sticky;top:calc(var(--mj-header-h) + 24px);}
}
.mj-wc #order_review{background:#fafafa;border:1px solid var(--mj-line);padding:22px;}
.mj-wc #order_review table.shop_table{border:0;margin:0 0 8px;background:transparent;}
.mj-wc #order_review table.shop_table thead th{background:transparent;}
.mj-wc tr.wps_recurring_bifurcation_wrapper th,
.mj-wc tr.wps_recurring_bifurcation_wrapper td{border-top:1px solid var(--mj-line)!important;padding:14px 6px 4px!important;vertical-align:top;}
.mj-wc tr.wps_recurring_bifurcation_wrapper h4{margin:0;font-size:11px!important;font-weight:500;letter-spacing:.13em;text-transform:uppercase;color:var(--mj-grey-d);line-height:1.6;}
.mj-wc tr.wps_recurring_bifurcation_wrapper h4 a{color:var(--mj-grey-d);text-decoration:none;pointer-events:none;}
.mj-wc tr.wps_recurring_bifurcation_wrapper ul{list-style:none;margin:0;padding:0;text-align:right;}
.mj-wc tr.wps_recurring_bifurcation_wrapper li{font-size:12px;color:var(--mj-grey-d);margin:0 0 3px;white-space:nowrap;}
.mj-wc tr.wps_recurring_bifurcation_wrapper li:last-child{color:var(--mj-black);font-size:13px;}
.mj-wc tr.wps_recurring_bifurcation_wrapper li label{font-weight:400;margin-right:4px;}
.mj-wc tr.wps_recurring_bifurcation_wrapper li:first-child{display:none;}
.mj-wc .woocommerce-checkout #payment{background:#fff;border:1px solid var(--mj-line);}
.mj-wc .woocommerce-checkout #payment ul.payment_methods{border:0!important;padding:18px 18px 6px;}
.mj-wc .woocommerce-checkout #payment ul.payment_methods li{border:0;padding:0;}
.mj-wc .woocommerce-checkout #payment div.payment_box{border:0!important;background:#fff!important;padding:14px 0 4px!important;margin:0!important;box-shadow:none!important;}
.mj-wc .woocommerce-checkout #payment label{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--mj-black)!important;font-weight:500;}
.mj-wc .woocommerce-checkout #payment label img{display:none;}
.mj-wc .wc-stripe-elements-field,.mj-wc .wc_payment_method .stripe-card-group .wc-stripe-elements-field{border:1px solid var(--mj-line);border-radius:0;padding:13px 14px;background:#fff;}
.mj-wc #payment .form-row{margin:0 0 12px;}
.mj-wc #payment .form-row label{font-size:10.5px!important;letter-spacing:.12em;color:var(--mj-grey-d)!important;font-weight:400;}
.mj-wc #wc-stripe-cc-form .wc-stripe-card-notice,.mj-wc .wc-stripe-authorization-text{font-size:11px;color:var(--mj-grey);line-height:1.6;}
.mj-wc .woocommerce-checkout #payment div.place-order{padding:12px 18px 18px;}
/* Champ confirmation e-mail */
#mj-email-confirm-row{margin:0 0 16px;}
#mj-email-confirm-row label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--mj-grey-d);margin-bottom:6px;display:block;}
#mj-email-confirm-row label b{color:#b23b3b;}
#mj_email_confirm{height:50px;border:1px solid var(--mj-line);border-radius:0;padding:0 14px;font-family:var(--mj-font);font-size:14px;color:var(--mj-black);background:#fff;width:100%;}
#mj_email_confirm:focus{outline:none;border-color:var(--mj-black);}
#mj-email-confirm-row.mj-ok #mj_email_confirm{border-color:#3a8a4f;}
#mj-email-confirm-row.mj-err #mj_email_confirm{border-color:#b23b3b;}
#mj-email-confirm-msg{font-size:11.5px;margin-top:6px;min-height:15px;}
#mj-email-confirm-row.mj-err #mj-email-confirm-msg{color:#b23b3b;}
#mj-email-confirm-row.mj-ok #mj-email-confirm-msg{color:#3a8a4f;}

/* ===== Icone panier facon Saint Laurent (06/10/2026) =====
   Le pictogramme d'origine est ecrit en PHP (en-tete + tiroir mobile) : on
   le masque et on le redessine en masque CSS, qui prend la couleur du texte
   (blanc sur le visuel d'accueil, noir ailleurs).
   Ordinateur : trace YSL a l'identique, 24 px.
   Mobile et tablette (burger visible, sous 1100 px) : 26 px et trait de
   1,75 px a l'ecran, l'epaisseur mesuree des lettres de MAJELLAN. */
.mj-icon--bag,.mj-drawer__bag{--mj-sac-t:24px;--mj-sac:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath stroke='%23000' d='M5.5 7.5h13v11h-13z'/%3E%3Cpath fill='%23000' fill-rule='evenodd' clip-rule='evenodd' d='M14 8V7a2 2 0 1 0-4 0v1H9V7a3 3 0 1 1 6 0v1z'/%3E%3C/svg%3E");}
.mj-icon--bag svg,.mj-drawer__bag svg{display:none!important;}
.mj-icon--bag::before,.mj-drawer__bag::before{content:"";display:block;flex:none;width:var(--mj-sac-t);height:var(--mj-sac-t);background-color:currentColor;-webkit-mask:var(--mj-sac) center/contain no-repeat;mask:var(--mj-sac) center/contain no-repeat;}
@media (max-width:1099.98px){
  .mj-icon--bag,.mj-drawer__bag{--mj-sac-t:24px;--mj-sac:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5'%3E%3Cpath d='M5.5 7.5h13v11h-13z'/%3E%3Cpath d='M9.5 8V7a2.5 2.5 0 0 1 5 0v1'/%3E%3C/svg%3E");}
  /* Le corps du sac occupe exactement la bande des lettres de MAJELLAN
     (haut 18,67 / bas 31 px dans l'en-tete de 50 px, mesure sur iPhone) ;
     seule l'anse depasse au-dessus. Baisse de 1 px validee le 07/10/2026. */
  .mj-icon--bag::before{position:relative;top:-1.25px;}
  /* Hierarchie (06/10/2026) : MAJELLAN doit ressortir. Le logo garde sa
     graisse d'origine (Figtree 500, 1,7 px de trait ; essaye en 600, juge
     trop gras) ; burger et panier un poil plus fins, 1,5 px (trait du sac
     1,5/24 sur 24 px).
     Les deux barres du burger doivent etre a 8 px PILE l'une de l'autre
     (1,5 + 6,5) : avec un ecart fractionnaire, le navigateur arrondit chaque
     barre differemment et celle du haut parait plus fine que celle du bas.
     Croix : demi-distance 8 / 2 = 4 px. */
  .mj-burger{gap:6.5px;}
  .mj-burger span{height:1.5px;}
  body:has(.mj-drawer.open) .mj-burger span:nth-child(1){transform:translateY(4px) rotate(45deg);}
  body:has(.mj-drawer.open) .mj-burger span:nth-child(2){transform:translateY(-4px) rotate(-45deg);}
}

/* Ordinateur (07/10/2026) : icones compte (18 vers 16 px) et panier (24 vers
   22 px) un cran plus petites, remontees de 2 px ; l'icone compte decalee de
   1,75 px vers la droite pour que l'espace entre la fin de SERVICE CLIENT et
   le compte soit egal a l'espace entre le compte et le panier (environ 30 px
   de chaque cote, mesures a l'encre, a un demi-pixel d'ecran pres). */
@media (min-width:1100px){
  .mj-icon--user{position:relative;left:1.75px;top:-2px;}
  .mj-icon--user svg{width:16px;height:16px;}
  .mj-icon--bag{--mj-sac-t:22px;}
  .mj-icon--bag::before{position:relative;top:-2px;}
}

/* ===== Panier non vide : un rond noir dans le sac (07/10/2026) =====
   Le snippet n° 183 « MAJELLAN — Pastille du panier » (HTML, pied de page)
   pose la classe mj-sac--plein sur les deux icones panier quand la cliente
   a clique Ajouter au panier pendant sa visite, ou quand le panier
   WooCommerce contient un article. Le rond est dessine DANS le pictogramme
   (masque), pas en ::after : sous 768 px, ::after porte deja la zone
   tactile de 44 px. Rond au centre exact du corps du sac (12, 13 sur 24),
   3,2 px sur ordinateur, 3,8 px sur mobile ; il remplace le « 1 » d'abord
   pose, un seul produit etant vendu. */
.mj-icon--bag.mj-sac--plein,.mj-drawer__bag.mj-sac--plein{--mj-sac:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath stroke='%23000' d='M5.5 7.5h13v11h-13z'/%3E%3Cpath fill='%23000' fill-rule='evenodd' clip-rule='evenodd' d='M14 8V7a2 2 0 1 0-4 0v1H9V7a3 3 0 1 1 6 0v1z'/%3E%3Ccircle fill='%23000' cx='12' cy='13' r='1.75'/%3E%3C/svg%3E");}
@media (max-width:1099.98px){
  .mj-icon--bag.mj-sac--plein,.mj-drawer__bag.mj-sac--plein{--mj-sac:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5'%3E%3Cpath d='M5.5 7.5h13v11h-13z'/%3E%3Cpath d='M9.5 8V7a2.5 2.5 0 0 1 5 0v1'/%3E%3Ccircle fill='%23000' stroke='none' cx='12' cy='13' r='1.9'/%3E%3C/svg%3E");}
}

/* ===== Tiroir « Votre commande » (07/10/2026) =====
   Voile blanc au lieu du gris, comme Saint Laurent. Sur ordinateur, le
   tiroir prend la moitie de l'ecran moins 30 px : il s'arrete 17 px apres
   le bord droit de la carte, qui tombe toujours 13 px apres le milieu de
   l'ecran (mesure de 1280 a 2560 px). Sur mobile, pleine largeur sur tous
   les telephones (la limite de 418 px laissait un vide sur les Pro Max).
   Entre 750 et 1099 px (tablette), largeur d'origine inchangee. */
.mj-cart-ov{background:rgba(255,255,255,.6);}
@media (max-width:749.98px){
  .mj-cart{max-width:none;}
}
@media (min-width:1100px){
  .mj-cart{width:calc(50vw - 30px);max-width:none;}
}

/* ===== Tiroir : libelles (07/10/2026) =====
   AUJOURD'HUI a la graisse de VOTRE COMMANDE (500). INCLUS prend la couleur
   et la taille du prix (13 px, 12 px sous 768 px), avec un interlettrage de
   0,08 em qui lui donne exactement la largeur du prix : les deux colonnes
   commencent au meme endroit. Selecteurs a deux classes : la feuille de la
   coquille (chargee apres celle-ci) fixe ces textes a 12 px sous 768 px. */
.mj-cart .mj-cart__tlabel{font-weight:500;}
.mj-cart .mj-cart__price--incl{font-size:13px;letter-spacing:.08em;color:var(--mj-black);}
@media (max-width:767px){
  .mj-cart .mj-cart__price--incl{font-size:12px;}
}

/* Pas de trait sous le dernier article : le pied du tiroir a deja le sien
   (border-top de .mj-cart__foot), les deux faisaient doublon. 07/10/2026. */
.mj-cart .mj-cart__item:last-child{border-bottom:0;}

/* ===== Paiement : recapitulatif de commande (07/10/2026) =====
   - Plus de lignes grises alternees (reset de Hello Elementor) : meme fond
     partout, seuls les traits fins separent les lignes.
   - En-tete PRODUIT / MONTANT en noir.
   - 60,00 € (frais de mise en service) en 300, comme 30,00 € et INCLUS
     (WooCommerce met les montants du pied de tableau en gras).
   - INCLUS en majuscules, meme interlettrage que dans le tiroir.
   - LIVRAISON INCLUSE remontee de 7,25 px (et la marge du dessous elargie
     d'autant) : meme espace entre 90,00 €, LIVRAISON INCLUSE et la ligne
     « Puis 30,00 € » (19,75 px mesures de chaque cote). */
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tbody > tr > td{background-color:transparent;}
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table thead th,
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table thead th.product-total::before{color:var(--mj-black);}
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.fee td{font-weight:300;}
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tr.mj-rang-inclus td.product-total{text-transform:uppercase;letter-spacing:.08em;}
.mj-wc .mj-recur__liv{margin:-7.25px 0 10.25px;}

/* ===== Paiement, 2e passe (07/10/2026) =====
   Graisses du recapitulatif : VOTRE COMMANDE et TOTAL prennent la graisse
   des libelles (600) ; ADHESION, CARTE D'AFFAIRES, PORTE-CARTE et FRAIS DE
   MISE EN SERVICE passent de 12 a 11 px et de 700 a 600. DM Sans n'est
   declaree qu'en 300/400/500/700 : demandee en 600, elle sortait en faux
   gras (plus epais que le 700). On declare donc sa face 600 a part, sous un
   nom propre, a partir du meme fichier variable de Google : rien ne change
   ailleurs sur le site. */
@font-face{font-family:'MJ DM Sans 600';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K6z9mXg.woff2) format('woff2');}
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table thead th,
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tbody td.product-name,
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.fee th,
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.order-total th{font-family:'MJ DM Sans 600',var(--mj-font);font-weight:600;}
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tbody td.product-name,
.mj-wc .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.fee th{font-size:11px;}
.mj-wc h3#order_review_heading{font-weight:600;}
/* Libelles du formulaire : graisse de « Vos coordonnees » (500), en noir. */
.mj-wc .woocommerce form .woocommerce-billing-fields .form-row label,
.mj-wc .woocommerce form .woocommerce-shipping-fields .form-row label,
.mj-wc #mj-email-confirm-row label{font-weight:500;color:var(--mj-black);}
/* Champs plus fins : 42 px (44 px sous 768 px, la coquille y mettait 52),
   au paiement seulement (les formulaires de Mon compte ne changent pas).
   Le pays etait decale vers le bas : 7 px de marge interne en plus d'une
   hauteur de ligne de 48 px ; il est recentre. */
html body .mj-wc form.checkout .form-row input.input-text,
html body .mj-wc form.checkout .form-row select,
html body .mj-wc form.checkout .select2-container--default .select2-selection--single,
html body .mj-wc #mj_email_confirm{height:42px;}
html body .mj-wc form.checkout .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:40px;padding-top:0;padding-bottom:0;}
html body .mj-wc form.checkout .select2-container--default .select2-selection--single .select2-selection__arrow{height:40px;}
@media (max-width:767px){
  html body .mj-wc form.checkout .form-row input.input-text,
  html body .mj-wc form.checkout .form-row select,
  html body .mj-wc form.checkout .select2-container--default .select2-selection--single,
  html body .mj-wc #mj_email_confirm{height:44px;}
  html body .mj-wc form.checkout .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:42px;}
  html body .mj-wc form.checkout .select2-container--default .select2-selection--single .select2-selection__arrow{height:42px;}
}
/* « Retapez votre e-mail » masque (le texte est pose par le snippet). */
html body .mj-wc #mj_email_confirm::placeholder{color:transparent;}
/* La demi-barre sous la confirmation d'e-mail etait le trait du haut du titre
   « Livrer a une autre adresse », large de 268 px seulement : retire. */
html body .mj-wc h3#ship-to-different-address{border-top:0;}
/* Paiement, 3e passe (07/10/2026).
   PC : « Payer en un geste » et le bouton Apple Pay etaient places
   automatiquement en bas de la grille du formulaire ; ils passent en tete
   de la colonne de gauche, comme sur mobile. La colonne de droite ne bouge pas. */
@media (min-width:1000px){
  .mj-wc form.woocommerce-checkout{grid-template-rows:auto auto 1fr;}
  .mj-wc form.woocommerce-checkout > .mj-express-note{grid-column:1;grid-row:1;}
  .mj-wc form.woocommerce-checkout > .mj-express-skel,
  .mj-wc form.woocommerce-checkout > #wc-stripe-express-checkout-element{grid-column:1;grid-row:2;}
  .mj-wc form.woocommerce-checkout #customer_details{grid-column:1;grid-row:3;}
  .mj-wc form.woocommerce-checkout #order_review_heading{grid-column:2;grid-row:1 / span 3;align-self:start;}
  .mj-wc form.woocommerce-checkout #order_review{grid-column:2;grid-row:1 / span 3;align-self:start;margin-top:35px;}
}
/* Moyens de paiement : un seul cadre. Le cadre en relief du navigateur autour
   du formulaire de carte et le trait du bloc paiement sont retires. */
.mj-wc .woocommerce-checkout #payment fieldset#wc-stripe-upe-form{border:0;padding:0;margin:0;min-width:0;}
.mj-wc .woocommerce-checkout #payment{border:0;}
/* Mobile : « Votre commande » decolle de « Livrer a une autre adresse »,
   et le formulaire de carte prend toute la largeur disponible. */
@media (max-width:999.98px){.mj-wc h3#order_review_heading{margin-top:40px;}}
@media (max-width:767px){
  .mj-wc #order_review{padding:22px 16px;}
  .mj-wc .woocommerce-checkout #payment{margin:0 -16px;}
  .mj-wc .woocommerce-checkout #payment ul.payment_methods{padding:16px 16px 6px;}
  .mj-wc .woocommerce-checkout #payment div.place-order{padding:12px 16px 18px;}
}
/* Paiement, 4e passe (07/10/2026).
   En-tete du paiement : seul le logo reste (menus, langue, compte et panier
   masques, le logo garde sa place au centre). 95e passe (11/10/2026) : la page
   de remerciement (apres paiement) fait pareil, a sa demande. */
html body.woocommerce-checkout .mj-header__left,
html body.woocommerce-checkout .mj-header__right{visibility:hidden;pointer-events:none;}
/* 95e passe (11/10/2026) : sous « Finaliser la commande » et « Commande confirmee », le meme espace,
   plus serre (36 px avant) ; la page de remerciement n'ajoute plus ses 4 px. */
html body.woocommerce-checkout .mj-wc__title{margin-bottom:20px;}
html body.woocommerce-checkout .mj-merci{margin:0;}
/* Paiement et remerciement : plus de pied de page (comme l'en-tete reduit au logo), et en bas le meme
   vide qu'en haut entre l'en-tete et le titre (46 px), au lieu des 90 px du gabarit plus le pied. */
html body.woocommerce-checkout footer.mj-footer{display:none;}
html body.woocommerce-checkout .mj-wc__wrap{padding-bottom:46px;}
/* 95e passe : hauteur de ligne du titre en pixels entiers (31,2 avant) : la page de remerciement tombe ainsi
   sur des pixels entiers et ses ronds numerotes restent nets et centres. */
html body.woocommerce-checkout h1.mj-wc__title{line-height:31px;}
/* 95e passe : « Votre commande » du paiement, toute la colonne Montant alignee a droite (intitule, montants,
   « Inclus », total, TVA), sur le bord droit de « Livraison incluse ». */
html body .mj-wc .woocommerce table.woocommerce-checkout-review-order-table th.product-total,
html body .mj-wc .woocommerce table.woocommerce-checkout-review-order-table td.product-total,
html body .mj-wc .woocommerce table.woocommerce-checkout-review-order-table tfoot td{text-align:right !important;}
/* « Votre commande » : plus de fond gris, seule la bordure reste. */
html body .mj-wc #order_review{background:transparent;}
/* Logos des cartes en noir et blanc. Ils sont dessines dans le cadre Stripe :
   le filtre vaut pour tout ce cadre (le rouge des erreurs y devient gris fonce). */
html body .mj-wc #wc-stripe-upe-form iframe{filter:grayscale(1);}
/* « Payer en un geste » s'affiche avec la page : le texte tout de suite et,
   a la place du bouton, une barre noire de la meme taille. Le vrai bouton
   la remplace sans decalage ni fondu (Stripe le fait grandir depuis 0 px :
   son cadre garde 48 px de noir pendant ce temps). */
html.mj-attend-applepay body .mj-wc .woocommerce-checkout .mj-express-note{visibility:visible;}
html.mj-attend-applepay body .mj-wc .woocommerce-checkout .mj-express-skel{margin:0;background:#000;border-radius:4px;position:relative;overflow:hidden;}
html.mj-attend-applepay body .mj-wc .woocommerce-checkout .mj-express-skel::after{content:"";position:absolute;top:0;bottom:0;left:0;width:100%;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.16) 50%,transparent 70%);transform:translateX(-100%);animation:mj-express-reflet 1.3s ease-in-out infinite;}
@keyframes mj-express-reflet{to{transform:translateX(100%);}}
html.mj-attend-applepay body .mj-wc .woocommerce-checkout #wc-stripe-express-checkout-element > div[id$="-applePay"]{min-height:48px;background:#000;border-radius:4px;}
html.mj-attend-applepay body .mj-wc .woocommerce-checkout:has(#wc-stripe-express-checkout-element:not([style*="display:none"]):not([style*="display: none"])) .mj-express-note,
html.mj-attend-applepay body .mj-wc .woocommerce-checkout #wc-stripe-express-checkout-element:not([style*="display:none"]):not([style*="display: none"]){animation:none;}
@media (prefers-reduced-motion:reduce){html.mj-attend-applepay body .mj-wc .woocommerce-checkout .mj-express-skel::after{animation:none;display:none;}}
/* Paiement, 5e passe (07/10/2026).
   Le logo Apple Pay apparait dans la barre noire des le chargement (bouton
   officiel d'Apple, inerte, pose par le snippet 184). */
html.mj-attend-applepay body .mj-wc .woocommerce-checkout .mj-express-skel iframe.mj-express-logo{position:absolute;top:0;left:0;width:100%;height:100%;border:0;pointer-events:none;}
html.mj-attend-applepay body .mj-wc .woocommerce-checkout .mj-express-skel--pret::after{display:none;}
/* Le bouton Stripe grandit depuis 0 px : la barre et son logo restent dessous
   jusqu'a ce qu'il la recouvre exactement (meme taille, memes coins). */
html.mj-attend-applepay body .mj-wc .woocommerce-checkout:has(#wc-stripe-express-checkout-element:not([style*="display:none"]):not([style*="display: none"])) .mj-express-skel{display:block;margin-bottom:-48px;}
html.mj-attend-applepay body .mj-wc .woocommerce-checkout #wc-stripe-express-checkout-element{position:relative;z-index:1;}
html.mj-attend-applepay body .mj-wc .woocommerce-checkout #wc-stripe-express-checkout-element > div[id$="-applePay"]{background:transparent;}
/* Menu mobile : plus d'icone panier dans le menu. */
html body .mj-drawer .mj-drawer__bag{visibility:hidden;pointer-events:none;}
/* Panier et paiement, 6e passe (07/10/2026).
   Tiroir : « Frais de mise en service » en 2e ligne, juste apres l'adhesion
   (ordre visuel seulement, le HTML ne bouge pas). Le dernier trait passe a
   la ligne qui finit maintenant la liste. */
.mj-cart .mj-cart__body{display:flex;flex-direction:column;}
.mj-cart .mj-cart__body > *{order:5;}
.mj-cart .mj-cart__body > .mj-cart__item:nth-child(1){order:1;}
.mj-cart .mj-cart__body > .mj-cart__item:nth-child(4){order:2;border-bottom:1px solid var(--mj-line);}
.mj-cart .mj-cart__body > .mj-cart__item:nth-child(2){order:3;}
.mj-cart .mj-cart__body > .mj-cart__item:nth-child(3){order:4;border-bottom:0;}
/* Tiroir ouvert : l'en-tete s'efface (logo, menus, icones), comme YSL. */
html body .mj-header{transition:background .35s,color .35s,opacity .35s,visibility .35s;}
html body:has(#mjCart.open) .mj-header{opacity:0;visibility:hidden;pointer-events:none;}
/* Paiement : la ligne des frais est ecrite juste apres l'adhesion par le
   snippet « Frais en 2e ligne » ; la ligne d'origine, en bas, est masquee
   (seulement si la nouvelle est bien la). */
html body .mj-wc .woocommerce-checkout-review-order-table:has(tr.mj-rang-frais) tfoot tr.fee{display:none;}
/* Paiement : pendant les mises a jour du recapitulatif, plus de voile gris
   ni de rond de chargement sur la colonne de droite (le clic reste bloque). */
html body .mj-wc #order_review .blockUI.blockOverlay{opacity:0 !important;background:transparent !important;}
html body .mj-wc #order_review .blockUI.blockMsg{display:none !important;}
/* Paiement, premier affichage (classe posee par le snippet « Paiement :
   premier affichage ») : le bloc de paiement brut (titre « Stripe », choix
   « Utiliser un nouveau moyen de paiement ») reste cache jusqu'a la
   reponse de WooCommerce. */
html.mj-paiement-init body .mj-wc #payment label[for="payment_method_stripe"],
html.mj-paiement-init body .mj-wc #payment .wc-saved-payment-methods[data-count="0"]{visibility:hidden;}
html.mj-paiement-init body .mj-wc #payment .wc-saved-payment-methods[data-count="0"]{height:0;margin:0;padding:0;overflow:hidden;}
/* Mobile : texte des champs 2 px plus petit (16 -> 14 px), indications
   comprises ; le pays (14 px) s'aligne dessus. Sur iPhone, le snippet
   empeche le zoom automatique qu'Apple applique aux champs sous 16 px. */
@media (max-width:767px){
  html body .mj-wc form.checkout input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not(#wc-stripe-hidden-style-input),
  html body .mj-wc form.checkout select,
  html body .mj-wc form.checkout textarea{font-size:14px;}
  html body .mj-wc form.checkout input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not(#wc-stripe-hidden-style-input)::placeholder,
  html body .mj-wc form.checkout textarea::placeholder{font-size:14px;}
  html body .mj-wc form.checkout .select2-container--default .select2-selection--single .select2-selection__rendered{font-size:14px;}
}
/* Paiement, 7e passe (07/10/2026) : champs a la YSL.
   Plus de cadre : un trait noir sous chaque champ, le texte part du bord
   gauche, aligne sur le libelle. Au clic, le trait double d'epaisseur ; en
   erreur, il passe au rouge. Valable pour tous les champs du paiement (pays
   et code promo compris). Les champs de carte suivent via le snippet
   « Champs de carte soulignes » (apparence Stripe). */
html body .mj-wc form.checkout input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not(#wc-stripe-hidden-style-input),
html body .mj-wc form.checkout select,
html body .mj-wc form.checkout textarea,
html body .mj-wc form.checkout .select2-container--default .select2-selection--single,
html body .mj-wc form.checkout_coupon input#coupon_code{border:0;border-bottom:1px solid #000;border-radius:0;background-color:transparent;box-shadow:none;padding-left:0;padding-right:0;}
html body .mj-wc form.checkout .select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:0;}
html body .mj-wc form.checkout input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not(#wc-stripe-hidden-style-input):focus,
html body .mj-wc form.checkout select:focus,
html body .mj-wc form.checkout textarea:focus,
html body .mj-wc form.checkout .select2-container--open .select2-selection--single,
html body .mj-wc form.checkout .select2-container--focus .select2-selection--single,
html body .mj-wc form.checkout_coupon input#coupon_code:focus{outline:none;border-bottom-color:#000;box-shadow:0 1px 0 0 #000;}
html body .mj-wc form.checkout .form-row.woocommerce-invalid input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not(#wc-stripe-hidden-style-input),
html body .mj-wc form.checkout .form-row.woocommerce-invalid .select2-container .select2-selection--single{border-bottom-color:#b23434;}
/* Remplissage automatique du navigateur : pas de fond de couleur. */
html body .mj-wc form.checkout input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #fff inset;-webkit-text-fill-color:#111;}
html body .mj-wc form.checkout input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 1000px #fff inset,0 1px 0 0 #000;}
/* Paiement, 8e passe (07/10/2026).
   Titres colles a leur champ, comme YSL : plus d'espace sous le titre, champ
   un peu moins haut (38 px, 40 px sur mobile). */
html body .mj-wc form.checkout .form-row > label:not(.checkbox):not(.screen-reader-text){line-height:16px;margin-bottom:0;}
html body .mj-wc form.checkout input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not(#wc-stripe-hidden-style-input),
html body .mj-wc form.checkout select{height:38px;}
html body .mj-wc form.checkout .form-row .select2-container--default .select2-selection--single{height:38px;}
html body .mj-wc form.checkout .form-row .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:37px;}
html body .mj-wc form.checkout .form-row .select2-container--default .select2-selection--single .select2-selection__arrow{height:37px;}
@media (max-width:767px){
  html body .mj-wc form.checkout input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not(#wc-stripe-hidden-style-input),
  html body .mj-wc form.checkout select{height:40px;}
  html body .mj-wc form.checkout .form-row .select2-container--default .select2-selection--single{height:40px;}
  html body .mj-wc form.checkout .form-row .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:39px;}
  html body .mj-wc form.checkout .form-row .select2-container--default .select2-selection--single .select2-selection__arrow{height:39px;}
}
/* Pays valide : WooCommerce passait son trait au vert ; il reste noir. */
html body .mj-wc form.checkout .form-row.woocommerce-validated .select2-container .select2-selection--single{border-bottom-color:#000;}
/* Le titre du champ s'affiche en gris dedans tant qu'il est vide (texte
   pose par le snippet « Paiement : premier affichage et champs »). */
html body .mj-wc form.checkout input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not(#wc-stripe-hidden-style-input)::placeholder{color:#757575;opacity:1;text-transform:uppercase;letter-spacing:.06em;}
html body .mj-wc form.checkout #mj_email_confirm::placeholder{color:#757575;}
/* Indicatif telephonique a gauche du numero (snippet « Indicatif
   telephonique ») : un menu etroit souligne, avec un chevron fin. Le
   script des pays de WooCommerce remet la classe « pleine largeur » sur le
   telephone : la mise en page passe donc par mj-tel-num. */
html body .mj-wc form.checkout .form-row.mj-tel-ind{float:left;width:96px;clear:both;}
html body .mj-wc form.checkout .form-row.mj-tel-num{float:right;clear:none;width:calc(100% - 114px);}
html body .mj-wc form.checkout .form-row.mj-tel-ind label .optional{display:none;}
html body .mj-wc form.checkout .form-row.mj-tel-ind select{height:38px;border:0;border-bottom:1px solid #000;border-radius:0;box-shadow:none;padding:0 20px 0 0;font-size:14px;color:#111;-webkit-appearance:none;appearance:none;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23111' stroke-width='1.4'/%3E%3C/svg%3E") no-repeat right 2px center;background-size:11px 8px;cursor:pointer;}
html body .mj-wc form.checkout .form-row.mj-tel-ind select:focus{outline:none;box-shadow:0 1px 0 0 #000;}
@media (max-width:767px){html body .mj-wc form.checkout .form-row.mj-tel-ind select{height:40px;}}
/* « Votre commande » : les vignettes du tiroir, en petit (snippet
   « Vignettes du recapitulatif »). */
html body .mj-wc .woocommerce-checkout-review-order-table td.mj-recap-nom{position:relative;padding-left:66px;}
html body .mj-wc .woocommerce-checkout-review-order-table .mj-recap-v{position:absolute;left:16px;top:50%;width:36px;height:36px;margin-top:-18px;display:block;box-sizing:border-box;overflow:hidden;border-radius:6px;background-color:#f4f4f4;background-position:center;background-size:cover;background-repeat:no-repeat;}
html body .mj-wc .woocommerce-checkout-review-order-table .mj-recap-v--adhesion{background-color:#fff;border:1px solid var(--mj-line);background-image:url("https://maisonmajellan.com/wp-content/uploads/2026/09/mj-logo-noir.png");background-size:62% auto;}
html body .mj-wc .woocommerce-checkout-review-order-table .mj-recap-v--frais{background-color:#fff;border:1px solid var(--mj-line);}
html body .mj-wc .woocommerce-checkout-review-order-table .mj-recap-v--frais::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:16px;height:16px;background:#111;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z'/%3E%3C/svg%3E") center/contain no-repeat;}
html body .mj-wc .woocommerce-checkout-review-order-table .mj-recap-v--carte{background-image:url("https://maisonmajellan.com/wp-content/uploads/2026/08/mj-carte-produit-v2-300x300.jpg");}
html body .mj-wc .woocommerce-checkout-review-order-table .mj-recap-v--etui{background-color:#f6f5f3;background-position:center 51%;}
@media (max-width:767px){
  html body .mj-wc .woocommerce-checkout-review-order-table td.mj-recap-nom{padding-left:58px;}
  html body .mj-wc .woocommerce-checkout-review-order-table .mj-recap-v{width:32px;height:32px;margin-top:-16px;}
  html body .mj-wc .woocommerce-checkout-review-order-table .mj-recap-v--frais::after{width:14px;height:14px;}
}
/* Mobile : une indication trop longue pour le champ (BATIMENT, APPARTEMENT...)
   finit par des points de suspension au lieu d'etre coupee net. */
@media (max-width:767px){
  html body .mj-wc form.checkout input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not(#wc-stripe-hidden-style-input){text-overflow:ellipsis;}
}
/* Le titre gris dans le champ : 11,5 px (2,5 px de moins que le texte tape),
   sur ordinateur et sur mobile. */
html body .mj-wc form.checkout input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not(#wc-stripe-hidden-style-input)::placeholder{font-size:11.5px;}
/* Paiement et tiroir, 9e passe (07/10/2026).
   Paiement : « Payer en un geste » et son texte retires, seul le bouton
   Apple Pay reste en tete du formulaire. */
html body .mj-wc .woocommerce-checkout .mj-express-note{display:none !important;}
/* Recapitulatif du paiement : « Puis 30,00 € par mois, sans engagement. »
   retire ; « Livraison incluse » reste, a sa taille d'avant. */
html body .mj-wc .woocommerce-checkout-review-order-table tr.mj-recur td{font-size:0;line-height:0;visibility:hidden;}
html body .mj-wc .woocommerce-checkout-review-order-table tr.mj-recur td .mj-recur__liv{font-size:10.5px;letter-spacing:.1em;line-height:1.5;visibility:visible;}
html body .mj-wc .woocommerce-checkout-review-order-table tr.mj-recur td > .amount{display:none;}
/* Tiroir : plus de paragraphe « Puis 30,00 € par mois... », et
   « Aujourd'hui » devient « Total » (meme taille, meme graisse). */
html body .mj-cart .mj-cart__recur{display:none;}
html body .mj-cart .mj-cart__ship{margin-bottom:18px;}
html body .mj-cart .mj-cart__tlabel{font-size:0;letter-spacing:0;}
html body .mj-cart .mj-cart__tlabel::before{content:"Total";font-size:13px;letter-spacing:.14em;line-height:1.5;}
@media (max-width:767px){html body .mj-cart .mj-cart__tlabel::before{font-size:12px;}}
/* Paiement, 10e passe (07/10/2026) : la phrase sous « Vos coordonnees »
   (« Votre carte sera envoyee a cette adresse... ») est retiree, et le titre
   passe en 600, comme « Votre commande ». */
html body .mj-wc .woocommerce-billing-fields .mj-adresse-note{display:none;}
html body .mj-wc .woocommerce-billing-fields > h3{font-weight:600;}
/* Paiement, 11e passe (07/10/2026).
   Cases a cocher du paiement (« Livrer a une autre adresse ») : carre noir
   et coche blanche, a la place de la case bleue du navigateur. */
html body .mj-wc form.checkout input[type="checkbox"]{-webkit-appearance:none;appearance:none;width:14px;height:14px;margin:0;padding:0;border:1px solid #111;border-radius:0;background:#fff;box-shadow:none;cursor:pointer;vertical-align:middle;flex:0 0 auto;}
html body .mj-wc form.checkout input[type="checkbox"]:checked{background:#111 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 10'%3E%3Cpath d='M1 5.2l3.4 3.3L11 1.5' fill='none' stroke='%23fff' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat center;background-size:10px 8px;}
html body .mj-wc form.checkout input[type="checkbox"]:focus{outline:none;}
html body .mj-wc form.checkout input[type="checkbox"]:focus-visible{outline:1px solid #111;outline-offset:2px;}
/* « Livrer a une autre adresse » coche : le meme espace sous le titre que
   sous « Vos coordonnees ». */
html body .mj-wc .woocommerce-shipping-fields .shipping_address{padding-top:18px;}
/* Telephone de livraison avec son indicatif (snippet « Indicatif
   telephonique ») : le bloc se referme sous les deux champs flottants. */
html body .mj-wc .woocommerce-shipping-fields__field-wrapper::after{content:"";display:table;clear:both;}
/* Liste deroulante des pays (et des regions) : plus de bleu WordPress.
   Cadre noir fin sans arrondi, recherche soulignee, pays survole en noir
   texte blanc, pays deja choisi en gris clair. La liste est posee a la fin
   de la page par select2, d'ou des regles hors de .mj-wc. */
html body .select2-container .select2-dropdown{border:1px solid #111;border-radius:0;background:#fff;box-shadow:none;font-family:var(--mj-font, inherit);}
html body .select2-container .select2-dropdown--below{border-top:0;}
html body .select2-container .select2-dropdown--above{border-bottom:0;}
html body .select2-container .select2-search--dropdown{padding:8px 12px 6px;}
html body .select2-container .select2-search--dropdown .select2-search__field{height:34px;margin:0;padding:0;border:0;border-bottom:1px solid #111;border-radius:0;background:transparent;box-shadow:none;outline:none;font-family:inherit;font-size:14px;color:#111;}
html body .select2-container .select2-results__option{padding:9px 12px;font-size:14px;line-height:1.4;color:#111;background:transparent;}
html body .select2-container .select2-results__option[aria-selected="true"],
html body .select2-container .select2-results__option[data-selected="true"]{background:#f2f2f2;color:#111;}
html body .select2-container .select2-results__option.select2-results__option--highlighted,
html body .select2-container .select2-results__option--highlighted[aria-selected],
html body .select2-container .select2-results__option--highlighted[data-selected]{background:#111;color:#fff;}
/* Version anglaise : « COUNTRY CODE » tenait sur deux lignes dans la
   colonne de 96 px. La colonne passe a 116 px en anglais seulement, titre
   sur une ligne ; le francais ne bouge pas. */
html[lang="en-US"] body .mj-wc form.checkout .form-row.mj-tel-ind{width:116px;}
html[lang="en-US"] body .mj-wc form.checkout .form-row.mj-tel-num{width:calc(100% - 134px);}
html[lang="en-US"] body .mj-wc form.checkout .form-row.mj-tel-ind > label{white-space:nowrap;}
/* Tiroir, 12e passe (07/10/2026).
   Titre « Votre commande » remplace par « Panier » (« Cart » en anglais),
   centre sur le tiroir, la croix reste a droite ; plus de trait dessous et
   8 px de moins sous le titre. « Panier » et « Total » un poil plus gras :
   la vraie graisse 600 de DM Sans, comme TOTAL au paiement. */
html body .mj-cart .mj-cart__head{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding-bottom:16px;border-bottom:0;}
html body .mj-cart .mj-cart__title{grid-column:2;grid-row:1;font-size:0;letter-spacing:0;text-align:center;}
html body .mj-cart .mj-cart__title::before{content:"Panier";font-family:'MJ DM Sans 600',var(--mj-font);font-weight:600;font-size:13px;letter-spacing:.18em;line-height:20px;padding-left:.18em;}
html[lang="en-US"] body .mj-cart .mj-cart__title::before{content:"Cart";}
html body .mj-cart .mj-cart__close{grid-column:3;grid-row:1;justify-self:end;}
html body .mj-cart .mj-cart__tlabel::before{font-family:'MJ DM Sans 600',var(--mj-font);font-weight:600;}
/* Tiroir et fiche produit, 13e passe (07/10/2026).
   Tiroir : le montant total a la taille de TOTAL (13 px, 12 px sur mobile). */
html body .mj-cart .mj-cart__tval{font-size:13px;line-height:1.5;}
@media (max-width:767px){html body .mj-cart .mj-cart__tval{font-size:12px;}}
/* Fiche produit : « 30€ mensuel » tout en majuscules. */
html body .mj-pdp__info .mj-pdp__price{text-transform:uppercase;}
/* « Inclus » retire a cote de « Choisissez votre porte-carte ». */
html body .mj-pdp__info .mj-etui__label > span{display:none;}
/* « Voir cuir » : loupe a droite du texte, centree sur les lettres. 15e
   passe : texte 1 px plus petit (9 px, 11 px mobile), loupe 1,3 fois la
   hauteur des majuscules, soulignement 2 px plus pres des lettres. Le
   bouton est un bloc ajuste a son contenu (en ligne, changer son premier
   element changeait sa ligne de base) ; sa marge basse garde exactement la
   hauteur d'origine (21,5 px PC, 23 px mobile) : rien ne bouge en dessous. */
html body .mj-pdp__info .mj-etui__zoom{display:flex;width:-moz-fit-content;width:fit-content;gap:.4em;font-size:9px;padding-bottom:6px;}
html body .mj-pdp__info .mj-etui__zoom span{padding-bottom:1px;}
html body .mj-pdp__info .mj-etui__zoom svg{order:2;width:1.18em;height:1.18em;flex:0 0 auto;stroke-width:1.85;position:relative;top:-.1em;}
@media (max-width:767px){
  html body .mj-pdp__info .mj-etui__zoom{font-size:11px;padding-bottom:5px;}
  html body .mj-pdp__info .mj-etui__zoom span{padding-bottom:.5px;}
  html body .mj-pdp__info .mj-etui__zoom svg{top:-.15em;}
}
/* « Origine du cuir » et « Atelier de fabrication » en noir. 15e passe :
   « Italie » et « France » avaient deja la meme taille (10 px) mais en 500,
   d'ou l'air plus gros : meme graisse que les titres (400). */
html body .mj-pdp__info .mj-prov__k{color:var(--mj-black);}
html body .mj-pdp__info .mj-prov__v{font-weight:400;}
/* « Livraison estimee » remonte de 10 px (6 en 13e passe, 4 en 14e) : meme
   espace entre le bouton et le haut des lettres qu'entre le bas des lettres
   et le trait des accordeons (20 a 21 px), les accordeons ne bougent pas. */
html body .mj-pdp__info .mj-pdp__btn{margin-bottom:12px;}
html body .mj-pdp__info .mj-pdp__delivery{padding-bottom:16px;}
/* Accordeons : titres un poil plus gras (500), fleches 4 px plus petites
   en deux fois, 22 puis 20 puis 18 px (trait garde a la meme epaisseur). */
html body .mj-pdp__info .mj-acc__head{font-weight:500;}
html body .mj-pdp__info .mj-acc__ico{width:18px;height:18px;stroke-width:1.71;}
/* Fiche produit, 14e passe (07/10/2026) : « MENSUEL » (« PER MONTH » en
   anglais) 3 px plus petit que « 30€ », sur la meme ligne de base ; la
   periode est isolee par le snippet « Fiche produit : periode du prix ». */
html body .mj-pdp__info .mj-pdp__price .mj-pdp__per{font-size:11px;}
/* Fiche produit, 16e passe (07/10/2026).
   Mobile : « Ajouter au panier » aussi fin que sur PC (36 px). La coquille
   met tous les boutons a 48 px minimum sous 768 px (confort du doigt) ;
   seul ce bouton y echappe. */
@media (max-width:767px){html body .mj-pdp__info .mj-pdp__btn{min-height:36px;height:36px;}}
/* Section du bas : plus de long trait au-dessus. */
html body .mj-incl{border-top:0;}
/* Titre « Avec la carte » remplace par « Inclus » (« Included » en anglais).
   Le texte d'origine est masque (et n'est plus lu par les lecteurs d'ecran) ;
   le nouveau prend exactement sa taille, sa graisse et son interlettrage. */
html body .mj-incl h2{position:relative;visibility:hidden;}
html body .mj-incl h2::before{content:"Inclus";visibility:visible;position:absolute;top:0;left:0;right:0;text-align:center;}
html[lang="en-US"] body .mj-incl h2::before{content:"Included";}
/* 3e bloc (porte-carte en cuir) retire ; les deux autres gardent leur
   largeur et sont centres sur PC, cote a cote sur mobile. */
html body .mj-incl__grid .mj-incl__card:nth-child(3){display:none;}
@media (min-width:750px){html body .mj-incl__grid{grid-template-columns:repeat(2,calc((100% - 48px) / 3));justify-content:center;}}
@media (max-width:749px){
  html body .mj-incl__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
  html body .mj-incl__card{padding:28px 12px;}
  html body .mj-incl__card h3{text-wrap:balance;}
}
/* « Voir plus » devient « Voir moins » une fois ouvert (« See less »). */
html body .mj-incl__plus[open] summary{font-size:0;letter-spacing:0;}
html body .mj-incl__plus[open] summary::before{content:"Voir moins";font-size:10px;letter-spacing:.14em;}
html[lang="en-US"] body .mj-incl__plus[open] summary::before{content:"See less";}
/* Fiche produit, 17e passe (07/10/2026). Section « Inclus » : 40 px de
   moins au-dessus du titre (marge haute 56 -> 16 px). */
html body .mj-incl{padding-top:16px;}
/* Lien « Telecharger » sous « Application Majellan » (snippet « Fiche
   produit : bouton Telecharger ») : exactement le dessin de « Voir plus »,
   sans effet au survol. */
html body .mj-incl__app{margin:10px 0 0;}
html body .mj-incl__app a{display:inline-block;font-family:var(--mj-font-title);font-size:10px;font-weight:500;letter-spacing:.14em;line-height:1.5;text-transform:uppercase;color:var(--mj-grey-d);text-decoration:none;border-bottom:1px solid currentColor;padding:0 0 2px;transition:none;}
html body .mj-incl__app a:hover{color:var(--mj-grey-d);}
html body .mj-incl__app a:focus-visible{outline:1px solid currentColor;outline-offset:3px;}
/* Section « Inclus », 18e passe (07/10/2026), d'apres sa maquette : plus de
   cadres autour des deux blocs, une fine ligne verticale entre les deux.
   Les icones restent a la meme hauteur (marge sous le titre agrandie
   d'autant que le haut des cadres est reduit) ; la ligne part juste
   au-dessus des icones et s'arrete au soulignement des liens. */
html body .mj-incl__card{border:0;padding:6px 26px 0;}
html body .mj-incl__grid{position:relative;}
html body .mj-incl__grid::before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;margin-left:-.5px;background:#d8d8d8;}
html body .mj-incl h2{margin-bottom:60px;}
@media (max-width:749px){
  /* 19e passe : « Inclus » 8 px plus bas, les blocs ne bougent pas. */
  html body .mj-incl{padding-top:24px;}
  html body .mj-incl h2{margin-bottom:46px;}
  /* Chaque bloc est centre dans sa moitie d'ECRAN (marges de la page
     comprises) : autant de blanc entre le bord et le texte qu'entre le
     texte et la ligne du milieu. La grille deborde donc des 24 px de marge
     de chaque cote. */
  html body .mj-incl__grid{gap:0;margin-left:-24px;margin-right:-24px;}
  html body .mj-incl__card{padding:6px 12px 0;}
  html body .mj-incl__card p{padding:0 8px;}
  /* 20e passe : les deux titres gardent leur taille normale (12,5 px). */
}
/* Titre de la carte de l'application (francais seulement, « Majellan app »
   ne change pas) : « Application mobile » sur PC (21e passe), « Application »
   sur mobile (20e passe), meme blanc des deux cotes de la ligne. */
html[lang="fr-FR"] body .mj-incl__card:nth-child(2) h3{font-size:0;letter-spacing:0;}
html[lang="fr-FR"] body .mj-incl__card:nth-child(2) h3::before{content:"Application mobile";font-size:12.5px;letter-spacing:.1em;}
@media (max-width:749px){html[lang="fr-FR"] body .mj-incl__card:nth-child(2) h3::before{content:"Application";}}
/* Accueil, 20e passe : « La carte de visite reinventee » aussi blanc que
   « Carte d'affaires » (blanc pur au lieu de 92 %) et un poil moins fin
   (400 au lieu de 300). */
html body.home .mj-hero__st{color:#fff;font-weight:400;}
/* 23e passe (07/10/2026).
   Fiche produit : « Livraison estimee : » a la meme graisse que les titres
   des accordeons (500 ; les deux titres etaient deja identiques), taille
   inchangee ; la date reste en gras. */
html body .mj-pdp__info .mj-pdp__delivery{font-weight:500;}
/* Service client, questions frequentes : titres en majuscules, 15 -> 13 px
   (24e passe), fleches 22 -> 18 px comme sur la fiche produit (trait de
   meme epaisseur). */
html body .mj-acc--faq .mj-acc__head{text-transform:uppercase;font-size:13px;}
html body .mj-acc--faq .mj-acc__ico{width:18px;height:18px;stroke-width:1.71;}
/* Service client, « Je n'ai pas recu mon e-mail d'activation » : champs
   comme au paiement (plus de cadre, un trait noir dessous, titres noirs,
   indication grise en majuscules), a la hauteur du bouton (36 px, 40 px
   sur mobile, bouton compris) ; le bouton passe sous les champs, de la
   meme largeur. 24e passe : titre du bloc et titres des champs un poil
   plus gras (vraie graisse 600) ; sur PC, retour a la ligne avant
   « indiquez-nous » (balise br.mj-br-pc posee dans la page). */
html body .mj-aide h3{font-weight:600;}
html body .mj-aide label{font-family:'MJ DM Sans 600',var(--mj-font);font-size:11px;font-weight:600;letter-spacing:.1em;line-height:16px;color:#111;margin:0;}
html body .mj-aide input{height:36px;padding:0;border:0;border-bottom:1px solid #000;border-radius:0;background:transparent;box-shadow:none;font-size:14px;color:#111;margin:0 0 16px;}
html body .mj-aide input:focus{outline:none;box-shadow:0 1px 0 0 #000;}
html body .mj-aide input::placeholder{color:#757575;opacity:1;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;}
html body .mj-aide input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #fff inset;-webkit-text-fill-color:#111;}
html body .mj-aide input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 1000px #fff inset,0 1px 0 0 #000;}
html body .mj-aide #mjAideEnvoi{display:flex;width:100%;margin:8px 0 0;}
/* 25e passe : le message d'envoi, vide tant qu'on n'a pas envoye, ne garde
   plus sa marge de 18 px : meme blanc sous le bouton qu'au-dessus du titre. */
html body .mj-aide .mj-aide__msg:empty{margin:0;}
@media (min-width:768px){html body .mj-aide #mjAideEnvoi{max-width:420px;}}
@media (max-width:767px){html body .mj-aide input{height:40px;font-size:16px;}html body .mj-aide #mjAideEnvoi{min-height:40px;height:40px;}html body .mj-aide .mj-br-pc{display:none;}}
/* La Maison : la signature de Wilfrid a la place de son prenom (image
   posee dans la page, texte de remplacement « Wilfrid »). */
html body .mj-story__nom .mj-story__signature{display:block;width:120px;max-width:100%;height:auto;margin:0 0 6px;}
@media (max-width:767px){html body .mj-story__nom .mj-story__signature{width:104px;}}
/* 26e passe : « Fondateur de Majellan » en noir (la coquille le met a 55 %
   d'opacite), le meme noir que le texte au-dessus. */
html body .mj-page--maison .mj-story__auteur .mj-story__role{opacity:1;}
/* 27e passe (07/10/2026) : accueil, effet « feuilles de journal » de
   Saint Laurent. Chez eux la page en cours reste en place et la suivante
   arrive du bas et la recouvre ; en remontant, elle redescend et la
   decouvre. Ici : le pied de page monte PAR-DESSUS la photo, immobile.
   Sans script ni bibliotheque, le defilement reste celui du navigateur.
   La pile garde sa place et sa hauteur dans la page (meme formule que la
   coquille pour le cran) : le cran de defilement et le passage de
   l'en-tete au blanc, calcule sur la pile, ne changent pas. Seul son
   contenu est fige a l'ecran, decoupe au cadre de la pile (clip-path),
   donc invisible des que le pied le recouvre ou en cas de rebond. */
html body .mj-home .mj-stack{height:calc(100vh - var(--mj-adminbar) + var(--mj-deborde));height:calc(max(100vh,100lvh,100svh) - var(--mj-adminbar) + var(--mj-deborde));clip-path:inset(0);scroll-snap-align:start;scroll-snap-stop:always;scroll-margin-top:var(--mj-adminbar);}
html body .mj-home .mj-stack__item{position:fixed;top:var(--mj-adminbar);left:0;right:0;width:auto;scroll-snap-align:none;}
/* 28e passe (07/10/2026) : accueil, moteur de Saint Laurent (Swiper 12.2,
   snippet 193). Le snippet range la photo et le pied de page dans deux
   « feuilles » et pose html.mj-feuilles-on ; sans lui (script bloque),
   la 27e passe s'applique telle quelle. Regles reprises de swiper.css
   12.2.0, limitees a ce qui sert ici. Le pied garde le centrage valide
   (contenu centre comme quand il s'arretait 50 px sous le haut). */
html.mj-feuilles-on,html.mj-feuilles-on body{overflow:hidden;overscroll-behavior:none;}
html.mj-feuilles-on:has(.mj-stack){scroll-snap-type:none;}
.mj-feuilles{position:fixed;top:var(--mj-adminbar);left:0;width:100%;height:calc(100% - var(--mj-adminbar));margin:0;padding:0;overflow:hidden;list-style:none;z-index:1;display:block;perspective:1200px;touch-action:pan-x;}
.mj-feuilles>.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;flex-direction:column;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box;transform-style:preserve-3d;}
.mj-feuilles .mj-feuille{flex-shrink:0;width:100%;height:100%;position:relative;display:block;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height;}
html body .mj-home .mj-feuilles .mj-stack{height:100%;clip-path:none;scroll-snap-align:none;}
html body .mj-home .mj-feuilles .mj-stack__item{position:relative;top:auto;left:auto;right:auto;}
html body .mj-feuilles .mj-footer{height:100%;min-height:0;padding-top:calc(34px + 2 * var(--mj-header-h));scroll-snap-align:none;}
/* 29e passe (07/10/2026) : accueil, aucun defilement libre avant que le
   moteur tourne, comme chez Saint Laurent. Classe posee par le snippet 194
   des la tete de page (accueil FR et EN), levee par le snippet 193 des que
   Swiper tourne, ou au bout de 6 s s'il ne se charge pas. */
html.mj-feuilles-attente,html.mj-feuilles-attente body{overflow:hidden;overscroll-behavior:none;}
html.mj-feuilles-attente body{touch-action:none;}
/* 30e passe (07/10/2026) : accueil, bascule de l'en-tete transparent <->
   blanc sans animation. Classe posee deux images par le snippet 193 au
   moment exact de la bascule : sans elle, le fond devenait blanc d'un coup
   pendant que le logo passait du blanc au noir en 0,2 s (logo invisible). */
html body .mj-header.mj-header--net,html body .mj-header.mj-header--net *,html body .mj-header.mj-header--net::before,html body .mj-header.mj-header--net::after,html body .mj-header.mj-header--net *::before,html body .mj-header.mj-header--net *::after{transition:none!important;}
/* 31e passe (08/10/2026) : La Maison en « feuilles de journal » (snippets
   193 et 194, meme moteur que l'accueil). Chaque feuille laisse la hauteur
   de l'en-tete au-dessus d'elle (meme position qu'au cran d'avant) et a un
   fond blanc pour recouvrir entierement la precedente. */
html.mj-feuilles-on:has(.mj-page--maison){scroll-snap-type:none;}
html body .mj-feuilles .mj-feuille--page{padding-top:var(--mj-header-h);background:#fff;box-sizing:border-box;}
html body .mj-feuilles .mj-feuille--page .mj-story,html body .mj-feuilles .mj-feuille--page .mj-etape{scroll-snap-align:none;}
/* 32e passe (08/10/2026) : Safari iPhone, barre du bas blanche sur la
   banniere de l'accueil, et tiroir du menu entier.
   Safari 26 teint sa barre du bas avec la couleur de fond CSS trouvee au
   bas de l'ecran, puis la garde pour tout plan plein ecran (feuilles,
   tiroir). Sur l'accueil il lisait le voile de la photo, noir a 20 % :
   20 % de noir sur du blanc donne #CCCCCC, le gris exact de la capture.
   Le voile garde le meme rendu au pixel pres, mais il est peint par une
   ombre interieure. Sa couleur de fond devient du blanc decoupe a la forme
   du texte ; il n'a pas de texte, donc rien ne s'affiche, et Safari lit
   blanc (meme astuce que l'en-tete dans la coquille). */
html body .mj-home .mj-stack__item .mj-hero__overlay{background:#fff;-webkit-background-clip:text;background-clip:text;box-shadow:inset 0 0 0 100vmax rgba(0,0,0,.2);}
html body .mj-home .mj-stack__item:nth-of-type(2) .mj-hero__overlay{box-shadow:inset 0 0 0 100vmax rgba(0,0,0,.1);}
/* Le tiroir mesure 100lvh : son bas passe sous la barre de Safari et
   FR / EN etait coupe. La reserve mesuree en JS par la coquille
   (--mj-chrome) vaut zero sur ce Safari ; 100lvh - 100svh donne la partie
   cachee. On garde la plus grande des deux, plus les 22 px d'origine.
   Sur ordinateur les deux valent zero : rien ne change. */
html body .mj-drawer{padding-bottom:calc(22px + max(100lvh - 100svh, var(--mj-chrome, 0px)) + env(safe-area-inset-bottom, 0px));}
/* 33e passe (08/10/2026) : La Maison, rang « 1/4 » a « 4/4 » au-dessus du
   titre des quatre fonctionnalites (paragraphe .mj-etape__rang pose dans la
   page 10). Il reprend le style d'etiquette de l'ancien guide (Figtree 500,
   capitales espacees), en noir au lieu du gris, aligne a gauche comme le
   titre. (Les titres 1/4 et 2/4 etaient reduits sur mobile pour tenir sur
   une ligne : regles retirees en 38e passe, titres raccourcis.) */
html body .mj-page--maison .mj-etape__texte .mj-etape__rang{color:var(--mj-black);text-align:left;}
/* 38e passe (08/10/2026) : La Maison, tous les titres a la meme taille, sur
   ordinateur comme sur mobile, celle du Club map. Ordinateur (900 px et
   plus) : 24 px partout, deja le cas. En dessous, les fonctionnalites
   suivent clamp(15px, 4,9vw, 19px) (coquille) ; « L'histoire » et « Notre
   philosophie » etaient a 20 px (24 px de 768 a 899) : meme regle. */
@media (max-width:899px){
  html body .mj-page--maison .mj-story h2{font-size:clamp(15px, 4.9vw, 19px);}
}
/* 34e passe (08/10/2026) : Safari iPhone, menu ouvert sur une page qui
   defile (carte d'affaires, service client...) : le bas de l'ecran doit
   etre tout blanc. Safari ne dessine pas un element fixe sous sa barre du
   bas ; on y voyait donc la page elle-meme (texte, bouton « Ajouter au
   panier »). Quand le tiroir s'ouvre, la page s'efface en fondu en meme
   temps qu'il apparait (0,3 s), puis devient invisible : sous la barre il
   ne reste que le fond blanc. A la fermeture elle revient en fondu, a la
   meme position. L'accueil et La Maison (feuilles, html.mj-feuilles-on)
   ne sont pas concernes : leur barre est deja blanche. */
html:not(.mj-feuilles-on) body>:not(.mj-drawer):not(.mj-header){transition:opacity .3s ease,visibility 0s linear 0s;}
html:not(.mj-feuilles-on) body:has(>.mj-drawer.open)>:not(.mj-drawer):not(.mj-header){opacity:0;visibility:hidden;transition:opacity .3s ease,visibility 0s linear .3s;}
/* 35e passe (08/10/2026) : accueil, plus de filets de part et d'autre de
   « Carte d'affaires » sur la photo (les deux <i class="mj-hero__filet">,
   dessines par la coquille). Le titre reste seul, centre par son flex. */
html body .mj-home .mj-hero__t .mj-hero__filet{display:none;}
/* 36e passe (08/10/2026) : accueil, toute la banniere est cliquable.
   Lien transparent <a class="mj-hero__lien"> pose dans la page 7, meme
   adresse que « Decouvrir » (TranslatePress la passe en /en/la-maison/ en
   anglais), hors tabulation et masque aux lecteurs d'ecran : c'est un
   doublon du bouton. Il couvre toute la photo (z-index 2, au-dessus du
   voile). Le bloc du titre et la bande de « Decouvrir » sont des elements
   flex en z-index 3 qui recouvrent la banniere : ils laissent passer les
   clics, seul le mot « Decouvrir » garde les siens. Un glissement ou la
   molette tournent toujours la page : Swiper annule le clic qui suit un
   glissement (preventClicks). */
html body .mj-home .mj-hero__lien{position:absolute;inset:0;z-index:2;display:block;}
html body .mj-home .mj-hero__titre,html body .mj-home .mj-hero__cta{pointer-events:none;}
html body .mj-home .mj-hero__cta a{pointer-events:auto;}
/* 37e passe (08/10/2026).
   1) Service client : le titre de la page a la taille exacte de
   « Questions frequentes » (20 px ; meme police, graisse et interlettrage).
   Page 14 seulement : CGV, mentions et confidentialite gardent leur titre. */
html body.page-id-14 .mj-doc .mj-doc__title{font-size:20px;}
/* 2) Panier vide : tiroir cree par le snippet 198 au clic sur l'icone
   panier. Il porte les classes du recapitulatif (mj-cart, mj-cart-ov,
   mj-cart__head...) : largeur, glissement, voile, titre « Panier » et croix
   identiques. Contenu (41e passe, a sa demande) : uniquement « Votre panier
   est vide », centre au milieu du tiroir (la reserve basse egale la hauteur
   de l'en-tete du tiroir, 82 px). Contact, horaires et lien retires. */
html body:has(#mjCartVide.open) .mj-header{opacity:0;visibility:hidden;pointer-events:none;}
html body #mjCartVide:focus{outline:none;}
html body .mj-cart--vide .mj-cart__body{justify-content:center;}
html body .mj-cart--vide .mj-cart__vide{display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 0 82px;}
html body .mj-cart--vide .mj-cart__vide-titre{margin:0;font-family:'MJ DM Sans 600',var(--mj-font);font-weight:600;font-size:13px;letter-spacing:.14em;line-height:20px;text-transform:uppercase;color:var(--mj-black);padding-left:.14em;}
/* Safari iPhone : sous sa barre du bas, Safari montre la page qui defile,
   pas le tiroir (meme cas que le menu, 34e passe). Sur telephone le tiroir
   couvre tout l'ecran : une fois arrive (0,4 s), la page passe invisible ;
   a la fermeture elle revient tout de suite. Accueil et La Maison exclus
   (barre deja blanche). */
@media (max-width:749.98px){
  html:not(.mj-feuilles-on) body:has(#mjCartVide.open)>:not(.mj-panier-vide):not(.mj-header){visibility:hidden;transition:visibility 0s linear .4s;}
}
/* Panier : la cle a molette des frais de mise en service en plein, noire
   (au paiement, c'est le masque de la 8e passe, rempli lui aussi).
   57e passe : plus fine. Le trait noir d'origine (1,3) l'epaississait ; un liseré blanc (fond de la
   vignette) de 1 grignote les bords : meme silhouette, toujours pleine et noire, en plus fin. */
html body #mjCart path[d^="M14.7 6.3"]{fill:currentColor;stroke:#fff;stroke-width:1px;stroke-linejoin:round;stroke-linecap:round;}
/* Pied de page : tous les textes en noir ; « @maisonmajellan » devient
   l'icone Instagram (meme lien, texte garde pour les lecteurs d'ecran). */
html body .mj-footer .mj-foot-grp a,html body .mj-footer .mj-footer__copy{color:#000;}
html body .mj-footer .mj-foot-insta{display:inline-block;width:24px;height:24px;font-size:0;letter-spacing:0;line-height:0;vertical-align:middle;}
html body .mj-footer .mj-foot-insta::before{content:"";display:block;width:24px;height:24px;background:#000;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 6.261c1.869 0 2.09.007 2.829.041.682.031 1.053.145 1.3.241.303.112.578.291.804.524.233.226.412.5.524.805.096.246.21.617.24 1.3.035.738.042.959.042 2.828 0 1.87-.007 2.09-.041 2.829-.031.682-.145 1.053-.241 1.3a2.32 2.32 0 0 1-1.329 1.328c-.246.096-.617.21-1.3.241-.737.034-.959.04-2.828.04-1.87 0-2.09-.006-2.829-.04-.682-.031-1.053-.145-1.3-.24a2.2 2.2 0 0 1-.804-.525 2.2 2.2 0 0 1-.524-.804c-.096-.247-.21-.618-.241-1.3-.034-.738-.04-.96-.04-2.829s.006-2.09.04-2.829c.031-.682.145-1.053.241-1.3.112-.303.291-.578.524-.804.226-.233.5-.412.805-.524.246-.096.617-.21 1.3-.24.738-.035.959-.042 2.828-.042M12 5c-1.901 0-2.14.008-2.886.042-.745.034-1.254.152-1.7.325-.466.176-.89.452-1.239.808-.356.35-.632.773-.808 1.24-.173.445-.29.954-.325 1.699C5.008 9.86 5 10.099 5 12s.008 2.14.042 2.886c.034.745.153 1.254.326 1.7.175.466.45.89.807 1.24.35.355.773.63 1.24.806.445.173.954.292 1.699.326.747.034.985.042 2.886.042s2.14-.008 2.886-.042c.745-.034 1.254-.152 1.7-.325a3.58 3.58 0 0 0 2.047-2.048c.172-.445.29-.954.325-1.699.034-.746.042-.985.042-2.886s-.008-2.14-.042-2.886c-.034-.745-.152-1.254-.325-1.7a3.4 3.4 0 0 0-.808-1.24 3.4 3.4 0 0 0-1.24-.807c-.445-.173-.954-.29-1.699-.325C14.14 5.008 13.901 5 12 5'/%3E%3Cpath fill='black' d='M12 8.405a3.594 3.594 0 1 0 0 7.19 3.594 3.594 0 0 0 0-7.19m0 5.928a2.334 2.334 0 1 1 0-4.667 2.334 2.334 0 0 1 0 4.667M15.737 9.103a.84.84 0 1 0 0-1.68.84.84 0 0 0 0 1.68'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 6.261c1.869 0 2.09.007 2.829.041.682.031 1.053.145 1.3.241.303.112.578.291.804.524.233.226.412.5.524.805.096.246.21.617.24 1.3.035.738.042.959.042 2.828 0 1.87-.007 2.09-.041 2.829-.031.682-.145 1.053-.241 1.3a2.32 2.32 0 0 1-1.329 1.328c-.246.096-.617.21-1.3.241-.737.034-.959.04-2.828.04-1.87 0-2.09-.006-2.829-.04-.682-.031-1.053-.145-1.3-.24a2.2 2.2 0 0 1-.804-.525 2.2 2.2 0 0 1-.524-.804c-.096-.247-.21-.618-.241-1.3-.034-.738-.04-.96-.04-2.829s.006-2.09.04-2.829c.031-.682.145-1.053.241-1.3.112-.303.291-.578.524-.804.226-.233.5-.412.805-.524.246-.096.617-.21 1.3-.24.738-.035.959-.042 2.828-.042M12 5c-1.901 0-2.14.008-2.886.042-.745.034-1.254.152-1.7.325-.466.176-.89.452-1.239.808-.356.35-.632.773-.808 1.24-.173.445-.29.954-.325 1.699C5.008 9.86 5 10.099 5 12s.008 2.14.042 2.886c.034.745.153 1.254.326 1.7.175.466.45.89.807 1.24.35.355.773.63 1.24.806.445.173.954.292 1.699.326.747.034.985.042 2.886.042s2.14-.008 2.886-.042c.745-.034 1.254-.152 1.7-.325a3.58 3.58 0 0 0 2.047-2.048c.172-.445.29-.954.325-1.699.034-.746.042-.985.042-2.886s-.008-2.14-.042-2.886c-.034-.745-.152-1.254-.325-1.7a3.4 3.4 0 0 0-.808-1.24 3.4 3.4 0 0 0-1.24-.807c-.445-.173-.954-.29-1.699-.325C14.14 5.008 13.901 5 12 5'/%3E%3Cpath fill='black' d='M12 8.405a3.594 3.594 0 1 0 0 7.19 3.594 3.594 0 0 0 0-7.19m0 5.928a2.334 2.334 0 1 1 0-4.667 2.334 2.334 0 0 1 0 4.667M15.737 9.103a.84.84 0 1 0 0-1.68.84.84 0 0 0 0 1.68'/%3E%3C/svg%3E") center/contain no-repeat;}

/* ==========================================================================
   45e PASSE (09/10/2026) : LA MAISON, LA LETTRE A UN VERSO
   La 1re feuille est une carte : la lettre au recto, l'histoire au verso
   (fond blanc, texte noir). Le geste suivant retourne la carte (script dans
   la page 10), le geste d'apres passe a 1/4. Sans le moteur des feuilles
   (html sans mj-feuilles-on), les deux faces restent l'une sous l'autre.
   ========================================================================== */
html body .mj-page--maison .mj-rv{--mj-rv-pad:40px 44px;}
html body .mj-page--maison .mj-rv .mj-rv__carte{display:grid;grid-template-columns:minmax(0,1fr);}
html body .mj-page--maison .mj-rv .mj-rv__face{grid-area:1/1;min-width:0;}
html:not(.mj-feuilles-on) body .mj-page--maison .mj-rv .mj-rv__verso{grid-area:2/1;margin-top:56px;}
html.mj-feuilles-on body .mj-page--maison .mj-rv{perspective:1800px;}
html.mj-feuilles-on body .mj-page--maison .mj-rv .mj-rv__carte{max-width:calc(560px + 88px);-webkit-transform-style:preserve-3d;transform-style:preserve-3d;transition:transform .9s cubic-bezier(.65,0,.35,1);}
html.mj-feuilles-on body .mj-page--maison .mj-rv .mj-rv__face{box-sizing:border-box;padding:var(--mj-rv-pad);background:#fff;-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(1px);}
html.mj-feuilles-on body .mj-page--maison .mj-rv .mj-rv__verso{transform:rotateX(180deg) translateZ(1px);display:flex;flex-direction:column;justify-content:center;}
/* 46e-47e passes : sans bordure. Le verso se lit comme la lettre : aligne a gauche, titre a la place exacte de « CHER(E)S MEMBRES » (meme marge haute), pas de marge basse pour que la carte garde la hauteur de la lettre. */
html.mj-feuilles-on body .mj-page--maison .mj-rv .mj-rv__verso{padding-bottom:0;justify-content:flex-start;}
html.mj-feuilles-on body .mj-page--maison .mj-rv.is-verso .mj-rv__carte{transform:rotateX(180deg);}
/* Safari ignore backface-visibility ici (carte dans une feuille Swiper en 3D) : chaque face s'affiche ou se cache
   au milieu du retournement (carte vue par la tranche), ce qui marche dans tous les navigateurs. */
html.mj-feuilles-on body .mj-page--maison .mj-rv .mj-rv__recto{visibility:visible;transition:visibility 0s linear .45s;}
html.mj-feuilles-on body .mj-page--maison .mj-rv .mj-rv__verso{visibility:hidden;transition:visibility 0s linear .45s;}
html.mj-feuilles-on body .mj-page--maison .mj-rv.is-verso .mj-rv__recto{visibility:hidden;}
html.mj-feuilles-on body .mj-page--maison .mj-rv.is-verso .mj-rv__verso{visibility:visible;}
html.mj-feuilles-on body .mj-page--maison .mj-rv .mj-rv__carte{cursor:pointer;}
@media (prefers-reduced-motion:reduce){
  html.mj-feuilles-on body .mj-page--maison .mj-rv .mj-rv__carte,html.mj-feuilles-on body .mj-page--maison .mj-rv.is-verso .mj-rv__carte{transform:none;transition:none;}
  html.mj-feuilles-on body .mj-page--maison .mj-rv .mj-rv__face{transform:none;transition:opacity .35s ease,visibility 0s linear .35s;}
  html.mj-feuilles-on body .mj-page--maison .mj-rv .mj-rv__verso{opacity:0;}
  html.mj-feuilles-on body .mj-page--maison .mj-rv.is-verso .mj-rv__verso{opacity:1;}
  html.mj-feuilles-on body .mj-page--maison .mj-rv.is-verso .mj-rv__recto{opacity:0;}
}
/* Libelle de la fleche : « L'histoire » au recto, « Les fonctionnalites » au verso. */
html body .mj-page--maison .mj-rv .mj-rv__l-verso{display:none;}
html body .mj-page--maison .mj-rv.is-verso .mj-rv__l-recto{display:none;}
html body .mj-page--maison .mj-rv.is-verso .mj-rv__l-verso{display:inline;}
/* Verso : etiquette, les noms alignes sur leur racine VISIT, le nom Majellan, la reponse. */
html body .mj-page--maison .mj-rv .mj-rv__mots{display:grid;grid-template-columns:auto auto 1fr;row-gap:0;margin:40px 0 42.5px;}
html body .mj-page--maison .mj-rv p.mj-rv__mot{display:contents;}
/* 51e passe : les noms ont EXACTEMENT le style du texte des paragraphes (police, taille, graisse, interlettrage et interligne herites du
   paragraphe, a toutes les largeurs) ; « VISIT » ne se distingue plus que par le noir. Mots en vrai italique de DM Sans : le site ne charge
   que l'italique 300 et 700, le 400 est declare ici (meme fichier variable chez Google, rien de plus a telecharger). Pays et trait droits. */
html body .mj-page--maison .mj-rv .mj-rv__mot span{white-space:pre;}
html body .mj-page--maison .mj-rv .mj-rv__a{text-align:right;color:#9b9b9b;}
html body .mj-page--maison .mj-rv .mj-rv__visit{color:var(--mj-black);}
html body .mj-page--maison .mj-rv .mj-rv__b{text-align:left;color:#9b9b9b;}
@font-face{font-family:'DM Sans';font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Wp2ywxg089UriCZaSExd86J3t9jz86MvyyKy58UfivUw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
html body .mj-page--maison .mj-rv .mj-rv__mot span{font-style:italic;}
html body .mj-page--maison .mj-rv .mj-rv__mot .mj-rv__pays,html body .mj-page--maison .mj-rv .mj-rv__mot .mj-rv__sep{font-style:normal;}
html body .mj-page--maison .mj-rv p.mj-rv__r{margin:0;text-align:left;}
@media (max-width:767px){
  /* La carte prend presque toute la largeur : le texte garde la meme largeur qu'avant la carte (memes retours a la ligne). */
  html body .mj-page--maison section.mj-rv.mj-story{padding-left:10px;padding-right:10px;}
  html body .mj-page--maison .mj-rv{--mj-rv-pad:18px 15px;}
  html body .mj-page--maison .mj-rv .mj-rv__recto p{margin-bottom:10px;}
  html body .mj-page--maison .mj-rv .mj-rv__mots{margin:27px 0 28.5px;}
}
/* Petits ecrans (iPhone SE, 8) : la carte remonte et s'aere un peu moins pour tenir au-dessus de la fleche. */
@media (max-width:767px) and (max-height:700px){
  html body .mj-page--maison section.mj-rv.mj-story{padding-top:16px;}
  html body .mj-page--maison .mj-rv{--mj-rv-pad:14px 15px;}
  html body .mj-page--maison .mj-rv .mj-rv__face h2{margin-bottom:16px;}
}
/* 93e passe (11/10/2026) : case des conditions generales au paiement. WooCommerce la passe en display:inline
   (.woocommerce form .form-row .input-checkbox) : une case sans apparence native ignore alors largeur et hauteur et
   n'est plus qu'un trait de 2 px. Meme case 14 px et meme ecart de 10 px que « Livrer a une autre adresse »
   (6 px de marge + l'espace du gabarit WooCommerce entre la case et le texte) ; sur deux lignes, la seconde
   s'aligne sur le texte, pas sous la case (retrait de 24 px, la case remonte dans la marge). */
html body .mj-wc form.checkout .woocommerce-terms-and-conditions-wrapper .woocommerce-form__label-for-checkbox{display:block;padding-left:24px;}
html body .mj-wc form.checkout input#terms{display:inline-block;margin:0 6px 0 -24px;vertical-align:middle;position:relative;top:-1px;}
/* 95e passe (11/10/2026) : sur mobile, la coquille (mj-coquille) passe tous les boutons WooCommerce a 48 px de haut ;
   le bouton FINALISER prend exactement la hauteur du bouton d'ajout au panier de la fiche (36 px), sur ordinateur
   comme sur mobile (avant : 38 px sur ordinateur, 48 px sur mobile). */
html body .mj-wc .woocommerce #place_order{min-height:36px;height:36px;padding-top:0;padding-bottom:0;}
/* 55e passe (retouche 56e) : Apple Pay passe de la fiche (sous « Ajouter au panier ») au tiroir panier, sous « Paiement ». Meme
   largeur et meme hauteur que « Paiement » (36 px partout, comme « Ajouter au panier »), 8 px dessous ; fond blanc, bordure noire, logo noir.
   Stripe dessine son bouton 4 px plus haut que la case, qui n'en montre que le milieu et porte sa propre bordure. Case reservee
   des le premier affichage (classe mj-ap-attendu) avec le bouton officiel d'Apple ; rien hors appareils Apple prevus.
   Bas du tiroir : marge de securite d'iOS en plus (barre de Safari, barre d'accueil). « Paiement » : 48 -> 36 px sur mobile. */
html body #mjCart .mj-applepay{position:relative;}
html.mj-ap-attendu body #mjCart .mj-applepay,html body #mjCart .mj-applepay:has(> #wc-stripe-express-checkout-element:not([style*="none"])){height:36px;margin:8px 0 0;border:1px solid #111;box-sizing:border-box;overflow:hidden;background:#fff;}
html body #mjCart .mj-applepay #wc-stripe-express-checkout-element{position:absolute !important;left:-2px;right:-2px;top:-3px;margin:0 !important;clear:none !important;z-index:1;}
html body #mjCart .mj-applepay #wc-stripe-express-checkout-element > div{margin:0 !important;}
html body #mjCart .mj-applepay__logo{display:none;}
html.mj-ap-attendu body #mjCart .mj-applepay__logo{display:block;position:absolute;left:-2px;right:-2px;top:-3px;height:40px;z-index:0;pointer-events:none;box-sizing:border-box;}
@supports (-webkit-appearance:-apple-pay-button){
  html.mj-ap-attendu body #mjCart .mj-applepay__logo{-webkit-appearance:-apple-pay-button;-apple-pay-button-type:plain;-apple-pay-button-style:white-outline;}
}
@supports not (-webkit-appearance:-apple-pay-button){
  html.mj-ap-attendu body #mjCart .mj-applepay__logo::before{content:"\F8FF\00A0Pay";position:absolute;left:0;right:0;top:0;bottom:0;display:flex;align-items:center;justify-content:center;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif;font-size:19.5px;font-weight:550;letter-spacing:-.04em;color:#000;transform:translateY(-1.75px);}
}
html body #mjCart .mj-cart__foot{padding-bottom:calc(26px + env(safe-area-inset-bottom, 0px));}
@media (max-width:767px){
  html body #mjCart .mj-btn.mj-cart__pay{min-height:36px;height:36px;}
}
/* 57e passe : « Frais de livraison inclus » (sous Total, tiroir panier) au style exact de « Abonnement mensuel » :
   meme couleur (gris fonce, il etait gris clair, presque invisible), meme taille (11,5 px ordinateur ; 12 px mobile
   deja commun aux deux), meme interlettrage ; meme graisse deja. Espacements inchanges. */
html body #mjCart .mj-cart__ship{color:var(--mj-grey-d);letter-spacing:.03em;}
@media (min-width:768px){html body #mjCart .mj-cart__ship{font-size:11.5px;}}
/* 58e passe : Mon compte, coherence avec le reste du site (il trouvait trop de cadres, des champs encadres, des boutons
   trop hauts, des titres de graisses differentes). Modeles repris tels quels : champs du paiement (trait noir dessous,
   libelle DM Sans 500 11 px capitales noir, champ 38 px / 40 px mobile), titres de section du paiement (Figtree 600 13 px
   .16em), bouton « Ajouter au panier » (Figtree 600 12,06 px, 36 px de haut) sur fond #000, liens soulignes Figtree 600.
   Les regles du snippet « Mon espace (refonte) » sont en !important : on les depasse par .woocommerce en plus. */

/* 1. Plus aucun cadre : menu lateral, blocs, cartes, adresses, formulaires, listes. */
html body.mj-espace .woocommerce .mj-es-cote,
html body.mj-espace .woocommerce .mj-es-bloc,
html body.mj-espace .woocommerce .mj-es-videcarte,
html body.mj-espace .woocommerce .mj-es-carte,
html body.mj-espace .woocommerce .mj-es-liste,
html body.mj-espace .woocommerce .mj-es-code,
html body.mj-espace .woocommerce .woocommerce-Addresses .woocommerce-Address,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content .woocommerce-address-fields,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form.woocommerce-EditAccountForm {border:0 !important;padding:0 !important;box-shadow:none !important;background:none !important;border-radius:0 !important;}
html body.mj-espace .woocommerce .mj-es-bloc {margin:0 0 44px !important;}
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form.woocommerce-EditAccountForm fieldset {margin:28px 0 0 !important;padding:26px 0 0 !important;}
html body.mj-espace .woocommerce .woocommerce-MyAccount-paymentMethods {box-shadow:none !important;}

/* 2. Titres de section (Identite, Adresse e-mail, Mot de passe, Mon adhesion, Adresse de facturation...) :
   comme « Vos coordonnees » au paiement. */
html body.mj-espace .woocommerce .mj-es-k,
html body.mj-espace .woocommerce .woocommerce-Address-title h2,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form > h2,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form fieldset legend {font-family:var(--mj-font-title) !important;font-size:13px !important;font-weight:600 !important;letter-spacing:.16em !important;text-transform:uppercase !important;color:#111 !important;line-height:1.3 !important;text-align:left !important;}
html body.mj-espace .woocommerce .mj-es-k {margin:0 0 18px !important;}
html body.mj-espace .woocommerce .mj-es-carte .mj-es-k {margin:0 0 10px !important;}
html body.mj-espace .woocommerce .mj-es-mdp__tete .mj-es-k {margin:0 0 8px !important;}
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form > h2 {margin:0 0 18px !important;}

/* 3. Titres : un seul gras partout (celui de « Mes commandes », Figtree 500). */
html body.mj-espace .woocommerce .mj-es-videcarte__t,
html body.mj-espace .woocommerce .mj-es-moi__txt strong,
html body.mj-espace .woocommerce .mj-es-carte__ligne strong,
html body.mj-espace .woocommerce .mj-es-facture__txt strong,
html body.mj-espace .woocommerce .mj-es-sommaire a strong {font-family:var(--mj-font-title) !important;font-weight:500 !important;}

/* 4. Libelles des champs : comme au paiement. */
html body.mj-espace .woocommerce .mj-es-champ > span:first-child,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row label:not(.checkbox):not(.screen-reader-text) {display:block;font-family:var(--mj-font) !important;font-size:11px !important;font-weight:500 !important;letter-spacing:.1em !important;text-transform:uppercase !important;color:#111 !important;line-height:16px !important;margin:0 !important;}
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row label .required {color:#a00 !important;font-weight:700 !important;}
html body.mj-espace .woocommerce .mj-es-champ {margin:0 0 16px !important;}
html body.mj-espace .woocommerce .mj-es-champs--2 {gap:0 32px !important;}
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row {margin:0 0 16px !important;padding:0 !important;}

/* 5. Champs : plus de cadre, un trait noir dessous ; le texte part du bord gauche, sous le libelle. */
html body.mj-espace .woocommerce .mj-es-champ input,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row input.input-text,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row select,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row textarea,
html body.mj-espace .woocommerce .mj-es-code__ligne input {height:38px !important;min-height:0 !important;padding:0 !important;border:0 !important;border-bottom:1px solid #000 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;font-family:var(--mj-font) !important;font-size:14px !important;font-weight:400 !important;color:#111 !important;transition:none !important;}
html body.mj-espace .woocommerce .mj-es-code__ligne input {font-size:22px !important;letter-spacing:.3em !important;text-align:center !important;}
html body.mj-espace .woocommerce .mj-es-champ input:focus,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row input.input-text:focus,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row select:focus,
html body.mj-espace .woocommerce .mj-es-code__ligne input:focus {outline:none !important;border-bottom-color:#000 !important;box-shadow:0 1px 0 0 #000 !important;}
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row.woocommerce-invalid input.input-text {border-bottom-color:#b23434 !important;}
html body.mj-espace .woocommerce .mj-es-champ input:-webkit-autofill,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form input:-webkit-autofill {-webkit-box-shadow:0 0 0 1000px #fff inset !important;-webkit-text-fill-color:#111;}
html body.mj-espace .woocommerce .mj-es-oeil input {padding-right:40px !important;}
html body.mj-espace .woocommerce .mj-es-oeil__btn {width:38px !important;height:38px !important;justify-content:flex-end !important;}
/* Pays (liste deroulante) : meme trait. */
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .select2-container--default .select2-selection--single {height:38px !important;border:0 !important;border-bottom:1px solid #000 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;}
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .select2-container--default .select2-selection--single .select2-selection__rendered {line-height:37px !important;padding-left:0 !important;font-size:14px !important;color:#111 !important;}
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .select2-container--default .select2-selection--single .select2-selection__arrow {height:37px !important;}

/* 6. Boutons pleins : ceux de « Ajouter au panier », fond #000. */
html body.mj-espace .woocommerce .mj-es-bouton:not(.mj-es-bouton--blanc),
html body.mj-espace .woocommerce .woocommerce-MyAccount-content > a.button,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form button.button,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .button[type=submit] {display:inline-flex !important;align-items:center !important;justify-content:center !important;height:36px !important;min-height:36px !important;padding:0 24px !important;background:#000 !important;border:0 !important;border-radius:0 !important;color:var(--mj-btn-label, #f9f9f9) !important;font-family:var(--mj-font-title) !important;font-size:12.06px !important;font-weight:600 !important;letter-spacing:-.01em !important;text-transform:uppercase !important;text-decoration:none !important;line-height:1.5 !important;opacity:1 !important;transition:none !important;}
html body.mj-espace .woocommerce .mj-es-bouton:not(.mj-es-bouton--blanc):hover,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content > a.button:hover,
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form button.button:hover {background:#000 !important;color:var(--mj-btn-label, #f9f9f9) !important;opacity:1 !important;}
/* Sur le bandeau noir « activer » : bouton blanc, texte noir. */
html body.mj-espace .woocommerce .mj-es-activer .mj-es-bouton,
html body.mj-espace .woocommerce .mj-es-activer .mj-es-bouton:hover {background:#fff !important;color:#000 !important;}

/* 7. Boutons-textes soulignes (Decouvrir, Modifier, Ajouter...) : texte souligne noir, gras du bouton du site. */
html body.mj-espace .woocommerce .mj-es-lien,
html body.mj-espace .woocommerce .woocommerce-Address a.edit,
html body.mj-espace .woocommerce .mj-es-videcarte a.mj-es-bouton,
html body.mj-espace .woocommerce button.mj-es-bouton--blanc,
html body.mj-espace .woocommerce .woocommerce-MyAccount-paymentMethods td.payment-method-actions a.button,
html body.mj-espace .woocommerce .mj-es-code__autres button {display:inline-block !important;width:auto !important;height:auto !important;min-height:0 !important;padding:0 !important;background:none !important;border:0 !important;border-radius:0 !important;color:#111 !important;font-family:var(--mj-font-title) !important;font-size:11px !important;font-weight:600 !important;letter-spacing:.14em !important;text-transform:uppercase !important;text-decoration:underline !important;text-decoration-thickness:1px !important;text-underline-offset:4px !important;line-height:1.5 !important;opacity:1 !important;transition:none !important;cursor:pointer;}
html body.mj-espace .woocommerce .mj-es-lien:hover,
html body.mj-espace .woocommerce .woocommerce-Address a.edit:hover,
html body.mj-espace .woocommerce .mj-es-videcarte a.mj-es-bouton:hover,
html body.mj-espace .woocommerce button.mj-es-bouton--blanc:hover {color:#111 !important;background:none !important;opacity:1 !important;}
html body.mj-espace .woocommerce .mj-es-videcarte a.mj-es-bouton {margin:18px 0 0 !important;}
html body.mj-espace .woocommerce button.mj-es-bouton--blanc {margin:12px 0 0 !important;}

/* 8. Mot de passe : « Modifier » sous le texte, a gauche. */
html body.mj-espace .woocommerce .mj-es-mdp__tete {flex-direction:column !important;align-items:flex-start !important;gap:0 !important;}

/* 9. Adresses : titres alignes a gauche sur le texte (le clearfix de WooCommerce prenait une place a gauche),
   « Modifier » / « Ajouter » sous l'adresse, a gauche. */
html body.mj-espace .woocommerce .woocommerce-Addresses {gap:44px 48px !important;}
html body.mj-espace .woocommerce .woocommerce-Addresses .woocommerce-Address {display:flex !important;flex-direction:column !important;align-items:flex-start !important;}
html body.mj-espace .woocommerce .woocommerce-Address-title {display:contents !important;}
html body.mj-espace .woocommerce .woocommerce-Address-title::before,
html body.mj-espace .woocommerce .woocommerce-Address-title::after {display:none !important;content:none !important;}
html body.mj-espace .woocommerce .woocommerce-Address-title h2 {order:1;margin:0 0 12px !important;padding:0 !important;}
html body.mj-espace .woocommerce .woocommerce-Address address {order:2;}
html body.mj-espace .woocommerce .woocommerce-Address a.edit {order:3;margin:14px 0 0 !important;}

/* 10. « ‹ Mon espace » : noir, fleche plus grande (dessinee par-dessus la petite, qui reste dans le texte). */
html body.mj-espace .woocommerce .mj-es-retour,
html body.mj-espace .woocommerce .mj-es-retour:hover {position:relative !important;padding-left:4px !important;color:#111 !important;}
html body.mj-espace .woocommerce .mj-es-retour::before {content:"";position:absolute;left:0;top:0;bottom:0;width:12px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 7 12'%3E%3Cpath d='M6 1L1 6l5 5' fill='none' stroke='%23111' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat 0 50%;background-size:6px 10px;pointer-events:none;}

/* Finitions : pays au meme pas que les autres champs ; texte d'aide gris en capitales, comme au paiement. */
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .select2-container--default .select2-selection--single {margin-bottom:0 !important;}
html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row input.input-text::placeholder {color:#757575 !important;opacity:1 !important;text-transform:uppercase !important;letter-spacing:.06em !important;font-size:11.5px !important;}
/* Sommaire (mobile) : la meme fleche noire, dessinee, que « Mon espace ». */
html body.mj-espace .woocommerce .mj-es-sommaire a i {flex:0 0 auto;width:6px;height:10px;font-size:0 !important;line-height:0 !important;color:transparent !important;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 7 12'%3E%3Cpath d='M1 1l5 5-5 5' fill='none' stroke='%23111' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / 6px 10px;}

/* 11. Mobile : memes champs qu'au paiement (40 px, libelles 12 px), rien d'encadre. */
@media (max-width:767px){
  html body.mj-espace .woocommerce .mj-es-champ input,
  html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row input.input-text,
  html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row select,
  html body.mj-espace .woocommerce .mj-es-code__ligne input {height:40px !important;}
  html body.mj-espace .woocommerce .mj-es-oeil__btn {height:40px !important;}
  html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .select2-container--default .select2-selection--single {height:40px !important;}
  html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .select2-container--default .select2-selection--single .select2-selection__rendered {line-height:39px !important;}
  html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .select2-container--default .select2-selection--single .select2-selection__arrow {height:39px !important;}
  html body.mj-espace .woocommerce .mj-es-champ > span:first-child,
  html body.mj-espace .woocommerce .woocommerce-MyAccount-content form .form-row label:not(.checkbox):not(.screen-reader-text) {font-size:12px !important;}
}
@media (max-width:899px){
  html body.mj-espace .woocommerce .mj-es-bloc,
  html body.mj-espace .woocommerce .mj-es-videcarte,
  html body.mj-espace .woocommerce .woocommerce-MyAccount-content .woocommerce-address-fields,
  html body.mj-espace .woocommerce .woocommerce-MyAccount-content form.woocommerce-EditAccountForm,
  html body.mj-espace .woocommerce .mj-es-liste {padding:0 !important;}
  html body.mj-espace .woocommerce .woocommerce-MyAccount-content form.woocommerce-EditAccountForm fieldset {margin:24px 0 0 !important;padding:22px 0 0 !important;}
  html body.mj-espace .woocommerce .woocommerce-MyAccount-paymentMethods tr {padding:18px 0 !important;}
  html body.mj-espace .woocommerce .mj-es-champs--2 {gap:0 !important;}
  html body.mj-espace .woocommerce .woocommerce-Addresses {gap:40px !important;}
}

/* 12. Connexion et mot de passe perdu (visiteur) : memes regles, sans cadre. */
html body.woocommerce-account .woocommerce form.woocommerce-form-login,
html body.woocommerce-account .woocommerce form.woocommerce-form-register,
html body.woocommerce-account .woocommerce form.woocommerce-ResetPassword {border:0 !important;border-radius:0 !important;padding:0 !important;box-shadow:none !important;background:none !important;}
html body.woocommerce-account .woocommerce .u-column1 > h2,
html body.woocommerce-account .woocommerce .u-column2 > h2,
html body.woocommerce-account .woocommerce > h2 {font-family:var(--mj-font-title) !important;font-size:13px !important;font-weight:600 !important;letter-spacing:.16em !important;text-transform:uppercase !important;color:#111 !important;}
html body.woocommerce-account .woocommerce form.woocommerce-form-login .form-row > label:not(.woocommerce-form__label-for-checkbox),
html body.woocommerce-account .woocommerce form.woocommerce-form-register .form-row > label,
html body.woocommerce-account .woocommerce form.woocommerce-ResetPassword .form-row > label {display:block;font-family:var(--mj-font) !important;font-size:11px !important;font-weight:500 !important;letter-spacing:.1em !important;text-transform:uppercase !important;color:#111 !important;line-height:16px !important;margin:0 !important;}
html body.woocommerce-account .woocommerce form .form-row > label .required {color:#a00 !important;font-weight:700 !important;}
html body.woocommerce-account .woocommerce form.woocommerce-form-login input.input-text,
html body.woocommerce-account .woocommerce form.woocommerce-form-register input.input-text,
html body.woocommerce-account .woocommerce form.woocommerce-ResetPassword input.input-text {height:38px !important;min-height:0 !important;padding:0 !important;border:0 !important;border-bottom:1px solid #000 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;font-family:var(--mj-font) !important;font-size:14px !important;font-weight:400 !important;color:#111 !important;}
html body.woocommerce-account .woocommerce form.woocommerce-form-login input.input-text:focus,
html body.woocommerce-account .woocommerce form.woocommerce-form-register input.input-text:focus,
html body.woocommerce-account .woocommerce form.woocommerce-ResetPassword input.input-text:focus {outline:none !important;box-shadow:0 1px 0 0 #000 !important;}
html body.woocommerce-account .woocommerce form .password-input input.input-text {padding-right:36px !important;}
html body.woocommerce-account .woocommerce form .password-input .show-password-input {top:50% !important;right:0 !important;transform:translateY(-50%) !important;}
html body.woocommerce-account .woocommerce form.woocommerce-form-login button.button,
html body.woocommerce-account .woocommerce form.woocommerce-form-register button.button,
html body.woocommerce-account .woocommerce form.woocommerce-ResetPassword button.button {height:36px !important;min-height:36px !important;padding:0 24px !important;background:#000 !important;border:0 !important;border-radius:0 !important;font-family:var(--mj-font-title) !important;font-size:12.06px !important;font-weight:600 !important;letter-spacing:-.01em !important;text-transform:uppercase !important;opacity:1 !important;transition:none !important;}
html body.woocommerce-account .woocommerce form.woocommerce-form-login .lost_password a {font-family:var(--mj-font-title) !important;font-size:11px !important;font-weight:600 !important;letter-spacing:.14em !important;text-transform:uppercase !important;color:#111 !important;text-decoration:underline !important;text-decoration-thickness:1px !important;text-underline-offset:4px !important;}
html body.woocommerce-account .woocommerce form.woocommerce-form-login .woocommerce-form-login__rememberme {display:flex !important;width:max-content;margin:0 0 18px !important;align-items:center;gap:8px;font-family:var(--mj-font) !important;font-size:11px !important;font-weight:500 !important;letter-spacing:.1em !important;text-transform:uppercase !important;color:#111 !important;}
html body.woocommerce-account .woocommerce form.woocommerce-form-login input[type="checkbox"] {-webkit-appearance:none;appearance:none;width:14px;height:14px;margin:0;padding:0;border:1px solid #111;border-radius:0;background:#fff;box-shadow:none;cursor:pointer;vertical-align:middle;flex:0 0 auto;}
html body.woocommerce-account .woocommerce form.woocommerce-form-login input[type="checkbox"]:checked {background:#111 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 10'%3E%3Cpath d='M1 5.2l3.4 3.3L11 1.5' fill='none' stroke='%23fff' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat center;background-size:10px 8px;}
@media (max-width:767px){
  html body.woocommerce-account .woocommerce form.woocommerce-form-login input.input-text,
  html body.woocommerce-account .woocommerce form.woocommerce-form-register input.input-text,
  html body.woocommerce-account .woocommerce form.woocommerce-ResetPassword input.input-text {height:40px !important;}
  html body.woocommerce-account .woocommerce form.woocommerce-form-login .form-row > label:not(.woocommerce-form__label-for-checkbox),
  html body.woocommerce-account .woocommerce form.woocommerce-form-register .form-row > label,
  html body.woocommerce-account .woocommerce form.woocommerce-ResetPassword .form-row > label {font-size:12px !important;}
}
/* 59e passe : sur mobile, « MON COMPTE » centre ; « Connecte avec [e-mail] » (accueil du compte, mobile) en noir. */
@media (max-width:767px){html body.woocommerce-account .mj-wc .mj-wc__title{text-align:center !important;}}
html body.mj-espace .woocommerce .mj-es-connecte{color:#111 !important;}
/* 60e passe : « Voir cuir ». Les trois photos dans une bande qu'on fait glisser (elle s'arrete sur chaque etui) ; un cadre
   cale exactement sur la photo (832 x 1248, format 2:3) porte les noms en bas et l'icone loupe en haut a droite.
   « Toucher la photo pour agrandir » retire. Icone : traits forces en CSS (le theme ecrase les attributs des SVG). */
html body .mj-loupe .mj-loupe__stage {container-type:size;padding:0 0 calc(16px + env(safe-area-inset-bottom, 0px));}
html body .mj-loupe .mj-loupe__cadre {position:relative;flex:0 0 auto;width:min(100vw, (100vh - 86px) * 2 / 3);width:min(100cqw, 100cqh * 2 / 3);aspect-ratio:2 / 3;}
html body .mj-loupe .mj-loupe__piste {position:absolute;inset:0;display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
html body .mj-loupe .mj-loupe__piste::-webkit-scrollbar {display:none;}
html body .mj-loupe .mj-loupe__vue {flex:0 0 100%;width:100%;height:100%;overflow:hidden;scroll-snap-align:center;scroll-snap-stop:always;background:#f6f6f6;}
html body .mj-loupe .mj-loupe__vue img {width:100% !important;height:100% !important;max-width:none !important;max-height:none !important;object-fit:contain;display:block;cursor:zoom-in;}
html body .mj-loupe.zoom .mj-loupe__piste {overflow:hidden;}
html body .mj-loupe.zoom .mj-loupe__vue img {cursor:zoom-out;}
html body .mj-loupe .mj-loupe__hint {display:none !important;}
/* Icone loupe retiree a sa demande (61e passe) : un clic sur la photo l'agrandit toujours, un second la reduit.
   Le bouton reste dans la page (le script s'en sert), il est seulement masque. */
html body .mj-loupe .mj-loupe__agrandir {display:none !important;}
/* Noms des etuis : poses en bas de la photo. */
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names {position:absolute;left:0;right:0;bottom:10px;z-index:2;margin:0;padding:0 12px !important;}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button {color:var(--mj-grey-d);}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button.active {color:var(--mj-black);border-bottom-color:var(--mj-black);}
html body .mj-loupe.zoom .mj-loupe__cadre .mj-loupe__names {visibility:hidden;}
/* 61e passe : Mon compte, tous les titres en capitales (comme « MON COMPTE » : Figtree 500, lettres un peu serrees) :
   Bonjour, titres des pages (Mes commandes, Mes factures, Mon adhesion, Mes adresses, Moyens de paiement, Mes coordonnees...),
   titres des encarts vides (Aucune commande..., Aucune facture..., Aucune carte...), titres du sommaire mobile et des lignes. */
html body.mj-espace .woocommerce .mj-es-bonjour h2,
html body.mj-espace .woocommerce .mj-es-titre {text-transform:uppercase !important;letter-spacing:-.03em !important;}
/* 65e passe : « BONJOUR ... » plus petit (titres des pages + 2 px : 28 px ordinateur, 26 px sous 900 px) et un poil
   moins gras (Figtree est une police variable : graisse 450 au lieu de 500, sans charger de fichier en plus). */
html body.mj-espace .woocommerce .mj-es-bonjour h2 {font-size:28px !important;font-variation-settings:"wght" 450;}
@media (max-width:899px){html body.mj-espace .woocommerce .mj-es-bonjour h2 {font-size:26px !important;}}
/* 66e passe : « Voir cuir », fleches gauche / droite au milieu de la photo, pour montrer qu'on passe d'un etui a l'autre.
   Fines et noires (traits forces en CSS) ; masquees au premier / dernier etui et quand la photo est agrandie. */
html body .mj-loupe .mj-loupe__fleche {position:absolute;top:50%;z-index:2;width:44px;height:44px;margin:-22px 0 0;display:flex;align-items:center;justify-content:center;padding:0;background:none;border:0;border-radius:0;color:#111;cursor:pointer;-webkit-tap-highlight-color:transparent;}
html body .mj-loupe .mj-loupe__fleche--prec {left:4px;}
html body .mj-loupe .mj-loupe__fleche--suiv {right:4px;}
html body .mj-loupe .mj-loupe__fleche svg {display:block;width:8px;height:15px;}
html body .mj-loupe .mj-loupe__fleche svg path {fill:none !important;stroke:currentColor !important;stroke-width:1.2px !important;stroke-linecap:round !important;stroke-linejoin:round !important;vector-effect:non-scaling-stroke;}
html body .mj-loupe .mj-loupe__fleche.cache,
html body .mj-loupe.zoom .mj-loupe__fleche {visibility:hidden;}
@media (max-width:767px){html body .mj-loupe .mj-loupe__fleche svg {width:9px;height:16px;}html body .mj-loupe .mj-loupe__fleche svg path {stroke-width:1px !important;}}
/* 67e passe : fleches plus petites (ordinateur 12x22 -> 8x15, mobile 10x18 -> 9x16), meme finesse de trait a l'ecran
   (vector-effect:non-scaling-stroke : 1,2 px ordinateur, 1 px mobile, quelle que soit la taille). */
html body.mj-espace .woocommerce .mj-es-videcarte__t,
html body.mj-espace .woocommerce .mj-es-sommaire a strong,
html body.mj-espace .woocommerce .mj-es-carte__ligne strong,
html body.mj-espace .woocommerce .mj-es-facture__txt strong {text-transform:uppercase !important;letter-spacing:.02em !important;}
/* 61e passe : icone compte de l'en-tete au meme gras que le sac (trait 1,2 -> 1,5 sur 16 px, soit 1 px a l'ecran ;
   le sac fait 0,92 px mais en traits droits nets, le bonhomme en courbes parait plus fin a epaisseur egale). */
html body .mj-header .mj-icon--user svg circle,
html body .mj-header .mj-icon--user svg path {stroke-width:1.5px !important;}
/* 62e passe : noms des etuis (loupe « Voir cuir ») en trois colonnes de meme largeur : DRAKARA au centre exact de la
   photo, les deux autres a egale distance (avec un ecart fixe entre les mots, CROCODYLIA plus long tirait le groupe et
   le milieu partait a droite). 64e passe : miniatures des etuis retirees a sa demande (medias 1173-1175 gardes). */
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names {display:grid !important;grid-template-columns:repeat(3, 116px);justify-content:center;column-gap:0 !important;gap:0 !important;}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button {justify-self:center;}
@media (max-width:767px){html body .mj-loupe .mj-loupe__cadre .mj-loupe__names {grid-template-columns:repeat(3, 108px);}}

/* 77e passe (10/10) : DA Majellan = AUCUN texte en minuscule, sur tout le site (paiement, compte,
   mentions legales compris). Specificite (1,0,3) + !important : bat la coquille et les styles des snippets.
   Retour : revision 1186 du post 5. */
html:not(#mj-maj) body, html:not(#mj-maj) body *, html:not(#mj-maj) body *::before, html:not(#mj-maj) body *::after {text-transform:uppercase !important;}
html:not(#mj-maj) body ::placeholder {text-transform:uppercase !important;}
/* Ce que le client TAPE reste tel quel (e-mail, adresse, mot de passe...). */
html:not(#mj-maj) body input:not([type]), html:not(#mj-maj) body input[type="text"], html:not(#mj-maj) body input[type="email"], html:not(#mj-maj) body input[type="tel"], html:not(#mj-maj) body input[type="password"], html:not(#mj-maj) body input[type="search"], html:not(#mj-maj) body input[type="number"], html:not(#mj-maj) body input[type="url"], html:not(#mj-maj) body textarea {text-transform:none !important;}
/* Barre d'administration (visible des admins seulement) : inchangee. */
html:not(#mj-maj) body #wpadminbar, html:not(#mj-maj) body #wpadminbar * {text-transform:none !important;}
/* FAQ du service client : reponses en noir (elles etaient en gris, .mj-doc p). */
html:not(#mj-maj) body .mj-acc--faq .mj-acc__inner, html:not(#mj-maj) body .mj-acc--faq .mj-acc__inner * {color:#000 !important;}

/* 78e passe (10/10) : les textes passes en majuscules sont PLUS PETITS que leurs titres.
   Modele = descriptions de La Maison (.mj-etape__desc : 11 px, interlettrage .075em, interligne ~1.9 ; 10,5 px sur mobile).
   10 px la ou le titre au-dessus ne fait que 11 px (accordeons de la fiche produit, cartes cookies et contact, tiroir panier). */
html:not(#mj-maj) body .mj-doc p, html:not(#mj-maj) body .mj-doc li, html:not(#mj-maj) body .mj-doc .mj-doc__id, html:not(#mj-maj) body .mj-doc .mj-doc__id *, html:not(#mj-maj) body .mj-doc .mj-doc__notice, html:not(#mj-maj) body .mj-doc .mj-doc__notice *, html:not(#mj-maj) body .mj-incl__plus p, html:not(#mj-maj) body .mj-es-chapo, html:not(#mj-maj) body .mj-es-v, html:not(#mj-maj) body .mj-es-note, html:not(#mj-maj) body .mj-es-aide, html:not(#mj-maj) body .mj-es-bonjour p, html:not(#mj-maj) body .mj-es-carte__txt, html:not(#mj-maj) body .woocommerce-MyAccount-content address, html:not(#mj-maj) body .mjcard__sub, html:not(#mj-maj) body .woocommerce-form-coupon-toggle .woocommerce-info, html:not(#mj-maj) body.page-id-198 .page-content p, html:not(#mj-maj) body.page-id-198 .page-content li {font-size:11px !important;letter-spacing:.075em !important;line-height:1.9 !important;}
html:not(#mj-maj) body .mj-doc p a, html:not(#mj-maj) body .mj-doc li a {font-size:inherit !important;}
html:not(#mj-maj) body .mj-acc:not(.mj-acc--faq) .mj-acc__inner p, html:not(#mj-maj) body .mj-acc:not(.mj-acc--faq) .mj-acc__note, html:not(#mj-maj) body .mj-doc .mj-ck p, html:not(#mj-maj) body .mj-doc .mj-contact-card span {font-size:10px !important;letter-spacing:.075em !important;line-height:1.9 !important;}
html:not(#mj-maj) body .mj-cart__sub, html:not(#mj-maj) body .mj-cart__ship, html:not(#mj-maj) body .mj-es-moi__txt em, html:not(#mj-maj) body .woocommerce-privacy-policy-text p, html:not(#mj-maj) body .woocommerce-cart-form dd p {font-size:10px !important;letter-spacing:.075em !important;}
html:not(#mj-maj) body .mj-doc h3.mj-doc__sub2 {font-size:12px !important;}
html:not(#mj-maj) body .mj-doc .mj-contact-card a {font-size:11px !important;letter-spacing:.075em !important;}
@media (max-width:767px){html:not(#mj-maj) body .mj-doc p, html:not(#mj-maj) body .mj-doc li, html:not(#mj-maj) body .mj-doc .mj-doc__id, html:not(#mj-maj) body .mj-doc .mj-doc__id *, html:not(#mj-maj) body .mj-doc .mj-doc__notice, html:not(#mj-maj) body .mj-doc .mj-doc__notice *, html:not(#mj-maj) body .mj-incl__plus p, html:not(#mj-maj) body .mj-es-chapo, html:not(#mj-maj) body .mj-es-v, html:not(#mj-maj) body .mj-es-note, html:not(#mj-maj) body .mj-es-aide, html:not(#mj-maj) body .mj-es-bonjour p, html:not(#mj-maj) body .mj-es-carte__txt, html:not(#mj-maj) body .woocommerce-MyAccount-content address, html:not(#mj-maj) body .mjcard__sub, html:not(#mj-maj) body .woocommerce-form-coupon-toggle .woocommerce-info, html:not(#mj-maj) body.page-id-198 .page-content p, html:not(#mj-maj) body.page-id-198 .page-content li {font-size:10.5px !important;line-height:1.75 !important;}}

/* 79e passe (10/10) : texte courant des pages .mj-doc (mentions, CGV, confidentialite, cookies, coordonnees,
   service client, confirmation) un peu plus noir : #6f6f6f -> #3c3c3c (= couleur des descriptions de La Maison).
   Le bloc identite (.mj-doc__id) reste en #111, les reponses de la FAQ restent en noir. */
html:not(#mj-maj) body .mj-doc p, html:not(#mj-maj) body .mj-doc li, html:not(#mj-maj) body .mj-doc p strong, html:not(#mj-maj) body .mj-doc li strong, html:not(#mj-maj) body .mj-doc .mj-doc__notice *, html:not(#mj-maj) body .mj-doc .mj-contact-card span, html:not(#mj-maj) body .mj-conf__help a {color:#3c3c3c !important;}
html:not(#mj-maj) body .mj-doc .mj-doc__id, html:not(#mj-maj) body .mj-doc .mj-doc__id * {color:#111 !important;}
/* Fiche produit : le lien VOIR LA MAISON a la taille du texte au-dessus. */
html:not(#mj-maj) body .mj-acc__note a {font-size:inherit !important;letter-spacing:inherit !important;}

/* 95e passe (11/10) : La Maison, feuille 2/4 en liste.
   (1) Retire : la phrase « Un profil pour chaque occasion : » est passee sous la liste, avec la phrase
       de fin (paragraphe .mj-etape__desc--fin comme sur la 1/4 et la 3/4) ; plus de classe --intro.
   (2) Mobile : l'image ne depasse plus jamais sa zone. Sur un petit ecran (320 x 568) elle gardait ses
       220 px minimum et passait sous l'en-tete et sur le rang (la Club map couvrait deja son titre,
       et la 2/4, plus haute avec sa liste, faisait pareil). Aucun effet sur les telephones courants. */
@media (max-width:899px){html body .mj-page--maison .mj-etape .mj-etape__ecran img{max-height:100%;}}
/* 95e passe (11/10) : La Maison, feuille « La carte d'affaires » entre L'HISTOIRE et la 1/4 (section .mj-ca de la page 10).
   Meme geometrie que la carte recto/verso : meme largeur (648 px), memes marges interieures, et la hauteur de
   la carte (variable --mj-ca-h posee par le script de la section) : le titre tombe au meme endroit que L'HISTOIRE.
   Mobile : photo centree dans la place qui reste entre le titre et le texte, sur 85 % de la colonne (100 % trop grand, 65 % trop petit).
   Ordinateur : le bloc occupe la feuille (760 px au plus, centre), titre en haut, photo jusqu'a 420 px de haut comme les
   telephones des fonctionnalites, 48 px d'air au minimum au-dessus et en dessous (le titre ne s'aligne plus sur L'HISTOIRE :
   pas la place a 790 px de haut).
   Les deux phrases (retirees de la 1/4) gardent l'ecart qu'elles avaient sur la 1/4 (.6em, celui de deux puces). */
html body .mj-page--maison .mj-ca{--mj-ca-pad:40px 44px;}
html body .mj-page--maison .mj-ca .mj-ca__inner{box-sizing:border-box;flex-shrink:0;width:100%;max-width:648px;height:var(--mj-ca-h,540px);padding:var(--mj-ca-pad);display:flex;flex-direction:column;text-align:left;}
html body .mj-page--maison .mj-ca .mj-ca__photo{flex:1 1 0;min-height:0;margin:0 0 30px;display:flex;align-items:center;justify-content:center;}
html body .mj-page--maison .mj-ca .mj-ca__photo img{display:block;width:85%;height:100%;object-fit:contain;}
html body .mj-page--maison .mj-ca p{margin:0;}
html body .mj-page--maison .mj-ca p.mj-ca__suite{margin-top:.6em;}
@media (max-width:767px){
  html body .mj-page--maison section.mj-ca.mj-story{padding-left:10px;padding-right:10px;}
  html body .mj-page--maison .mj-ca{--mj-ca-pad:18px 15px;}
  html body .mj-page--maison .mj-ca .mj-ca__photo{margin-bottom:20px;}
}
@media (max-width:767px) and (max-height:700px){
  html body .mj-page--maison section.mj-ca.mj-story{padding-top:16px;}
  html body .mj-page--maison .mj-ca{--mj-ca-pad:14px 15px;}
  html body .mj-page--maison .mj-ca h2{margin-bottom:16px;}
}
@media (min-width:768px){
  html body .mj-page--maison .mj-ca .mj-ca__inner{height:100%;max-height:760px;padding:0 44px 40px;}
  html body .mj-page--maison .mj-ca h2{margin-bottom:0;}
  html body .mj-page--maison .mj-ca .mj-ca__photo{margin:0;padding:48px 0;}
  html body .mj-page--maison .mj-ca .mj-ca__photo img{width:100%;max-height:420px;}
}
@media (max-height:660px){
  html body .mj-page--maison section.mj-ca.mj-story{justify-content:flex-start;}
  html body .mj-page--maison .mj-ca .mj-ca__inner{height:auto;}
  html body .mj-page--maison .mj-ca .mj-ca__photo{flex:0 0 auto;height:34svh;padding:20px 0;margin:0;}
}
/* 95e passe (11/10) : La Maison, les quatre fonctionnalites.
   (1) Ordinateur : le Club Map a son telephone a GAUCHE (droite, gauche, droite, gauche d'une feuille a l'autre).
   (2) Mobile : toutes les feuilles calees sur celle du Club Map. Chaque bloc de texte prend la hauteur du plus haut
       des quatre (variable posee par le script de la page 10) et chaque telephone est place comme celui du Club Map
       (un quart de la place libre au-dessus, trois quarts en dessous) : telephones et titres au meme endroit partout.
       La zone de l'ecran passe en grille (rangees 1fr / image / 3fr) pour que les deux telephones de la 3/4 restent
       cote a cote ; 100cqh = l'image ne depasse jamais sa zone. */
@media (min-width:900px){
  html body .mj-page--maison #club-map.mj-etape .mj-etape__texte{grid-column:2;}
  html body .mj-page--maison #club-map.mj-etape .mj-etape__ecran{grid-column:1;}
}
@media (max-width:899px){
  html body .mj-page--maison .mj-etapes .mj-etape__texte{min-height:var(--mj-etape-texte-h,0px);}
  html body .mj-page--maison .mj-etapes .mj-etape .mj-etape__ecran{display:grid;grid-template-rows:minmax(0,1fr) auto minmax(0,3fr);grid-auto-flow:column;justify-content:center;align-items:center;gap:0 12px;container-type:size;}
  html body .mj-page--maison .mj-etape .mj-etape__ecran img{grid-row:2;max-height:100cqh;}
  html body .mj-page--maison #club-map.mj-etape .mj-etape__ecran::before,
  html body .mj-page--maison #club-map.mj-etape .mj-etape__ecran::after{content:none;}
  /* L'ancienne regle du Club Map (justify-content:flex-start, faite pour sa colonne flex) poussait la grille a gauche. */
  html body .mj-page--maison #club-map.mj-etape .mj-etape__ecran{justify-content:center;}
}
/* 95e passe (11/10) : La Maison, le rang « 1/4 » a « 4/4 » quitte le haut du titre et passe au-dessus du libelle
   de la fleche (« Vos profils », « Vos performances », « Le Club Map ») et, sur la 4/4, au-dessus de « Rejoindre
   Majellan » : centre, meme style qu'avant (Figtree 500, 10,5 px, .18em, noir). Il est dans le lien (aria-hidden). */
html body .mj-page--maison .mj-etape .mj-story__more .mj-etape__rang,
html body .mj-page--maison .mj-etape .mj-story__rejoindre .mj-etape__rang{display:block;margin:0;color:var(--mj-black);text-align:center;font-family:var(--mj-font-title);font-size:10.5px;font-weight:500;letter-spacing:.18em;line-height:1.3;}
html body .mj-page--maison .mj-etape .mj-story__rejoindre .mj-etape__rang{margin-bottom:7px;}
/* Le titre prend la place qu'avait le rang : le bloc de texte garde la hauteur d'avant (le rang et sa marge faisaient
   30 px sur ordinateur, 24 px sur mobile), le vide passe sous le texte. Telephones et titres ne bougent pas. */
html body .mj-page--maison .mj-etapes .mj-etape__texte{box-sizing:border-box;padding-bottom:30px;}
@media (max-width:899px){html body .mj-page--maison .mj-etapes .mj-etape__texte{padding-bottom:24px;}}
/* 95e passe (11/10) : feuille 1/4, « Toutes vos informations regroupees en une seule page, / partageable en sans
   contact. » : retour a la ligne garde sur ordinateur, retire sur mobile (sinon « PAGE, » restait seul sur sa ligne). */
@media (max-width:899px){html body .mj-page--maison .mj-etape__desc br.mj-br-pc{display:none;}}
/* 95e passe (11/10) : paiement, « Avez-vous un code invite ? Cliquez ici pour saisir votre code » sur UNE ligne
   sur mobile : taille juste assez reduite pour la largeur de l'ecran (texte ~36,7 px de long par px de taille,
   colonne = ecran - 48 px), jamais plus que les 10,5 px d'avant ni moins de 8 px. Ordinateur inchange. */
@media (max-width:767px){
  html:not(#mj-maj) body .mj-wc .woocommerce-form-coupon-toggle .woocommerce-info{font-size:clamp(8px, calc((100vw - 48px) / 37.5), 10.5px) !important;}
}
/* 95e passe (11/10) : fiche Carte d'affaires, selecteur de porte-carte et « Voir cuir » refaits (son choix : B + F, puis V1).
   (1) Selecteur : plus de cadre ; un trait noir fin sous la photo choisie (au-dessus de son nom) ; les deux autres photos
       en basse opacite (.32) ; plus d'effet au survol ni de transition (regle : aucun survol sur les boutons). */
html body .mj-pdp__info .mj-etui__opt{border:0;padding:0;opacity:1;transition:none;}
html body .mj-pdp__info .mj-etui__opt:hover{opacity:1;}
html body .mj-pdp__info .mj-etui__opt:focus-visible{outline:1px solid var(--mj-black);outline-offset:4px;}
html body .mj-pdp__info .mj-etui__opt .mj-swatch{margin:0;opacity:.32;}
html body .mj-pdp__info .mj-etui__opt.active .mj-swatch{opacity:1;}
html body .mj-pdp__info .mj-etui__opt span:last-child{margin-top:12px;padding-top:12px;border-top:1px solid transparent;}
html body .mj-pdp__info .mj-etui__opt.active span:last-child{border-top-color:var(--mj-black);}
/* (2) Voir cuir : les noms sous la photo deviennent trois pastilles rondes qui montrent le grain du cuir (anneau fin sur
       la choisie), et le nom du cuir choisi s'ecrit en dessous (attr data-cuir, deja en place). Le texte des boutons reste
       pour les lecteurs d'ecran. */
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names{display:flex !important;justify-content:center;gap:18px !important;bottom:42px;}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button{--t:34px;width:var(--t);height:var(--t);padding:0;border:0;border-radius:50%;font-size:0;color:transparent;background-color:#e9e9e7;background-repeat:no-repeat;background-size:calc(var(--t) * 9.71) auto;background-position:calc(var(--t) * -2.853) calc(var(--t) * -6.588);transition:none;}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button[data-cuir="crocodylia"]{background-image:url("https://maisonmajellan.com/wp-content/uploads/2026/08/mj-etui-crocodylia.jpg");}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button[data-cuir="drakara"]{background-image:url("https://maisonmajellan.com/wp-content/uploads/2026/08/mj-etui-drakara.jpg");}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button[data-cuir="felidi"]{background-image:url("https://maisonmajellan.com/wp-content/uploads/2026/10/mj-etui-felidi-v2.jpg");}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button.active{box-shadow:0 0 0 3px #fff,0 0 0 4px var(--mj-black);}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button.active::after{content:attr(data-cuir);position:absolute;left:0;right:0;top:calc(100% + 13px);font:500 10.5px/1.5 var(--mj-font-title);letter-spacing:.14em;text-transform:uppercase;color:var(--mj-black);text-align:center;}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button:focus-visible{outline:1px solid var(--mj-black);outline-offset:6px;}
/* 95e passe (11/10) : « Voir cuir » sans texte : une petite loupe centree sous le nom du porte-carte choisi (elle suit le
   choix ; 3 colonnes a 12 px d'ecart, centres a (100% - 24px)/6, 50 % et 100% - (100% - 24px)/6). Meme bouton, meme clic ;
   le texte reste pour les lecteurs d'ecran. */
html body .mj-pdp__info .mj-etui__zoom{margin:14px 0 0;padding:0;gap:0;color:var(--mj-black);margin-left:calc((100% - 24px) / 6 - 9px);}
html body .mj-pdp__info .mj-etui:has(.mj-etui__opt:nth-child(2).active) .mj-etui__zoom{margin-left:calc(50% - 9px);}
html body .mj-pdp__info .mj-etui:has(.mj-etui__opt:nth-child(3).active) .mj-etui__zoom{margin-left:calc(100% - (100% - 24px) / 6 - 9px);}
html body .mj-pdp__info .mj-etui__zoom span{position:absolute;width:1px;height:1px;margin:0;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;}
html body .mj-pdp__info .mj-etui__zoom svg{width:18px;height:18px;top:0;stroke-width:1.4;}
/* 95e passe (11/10) : fleches de « Voir cuir » 2 px plus petites, a sa demande (15 -> 13 px de haut sur ordinateur,
   16 -> 14 px sur mobile, memes proportions, meme trait ; zone de clic toujours 44 px). */
html body .mj-loupe .mj-loupe__fleche svg{width:7.1px;height:13px;}
@media (max-width:767px){html body .mj-loupe .mj-loupe__fleche svg{width:7.1px;height:13px;}}
/* (retouche : mobile encore 1 px de moins, 14 -> 13 px, a sa demande ; meme taille que sur ordinateur) */
/* 95e passe (11/10) : La Maison, lettre « Cher(e)s membres » sur mobile, retouche : taille presque comme avant (jamais sous
   10,5 px, 11 px des 418 px ; la 1re version descendait a 9,5 px, « trop petit »), et seule « … la vision de l'avenir. »
   doit tenir sur sa ligne (« complementaires » peut passer a la ligne, accepte) : dans ce 2e paragraphe, l'interlettrage
   se resserre juste ce qu'il faut (ligne = 28,3em de lettres + 56 espaces ; .075em au plus, .03em au moins). */
@media (max-width:767px){
  html body .mj-page--maison .mj-rv .mj-rv__recto > p{font-size:clamp(10.5px, calc((100vw - 50px) / 32.45), 11px);}
  html body .mj-page--maison .mj-rv .mj-rv__recto > p:nth-of-type(2){letter-spacing:clamp(.03em, calc((100vw - 52px - 28.3em) / 56), .075em);}
}
/* 95e passe (11/10) : « Voir cuir » sans zoom au clic (ecouteur retire de la page 9) : plus de curseur loupe sur la photo.
   Pastilles deux fois plus ecartees (18 -> 36 px) et un peu plus grandes (34 -> 38 px), a sa demande. */
html body .mj-loupe .mj-loupe__stage, html body .mj-loupe.zoom .mj-loupe__stage{cursor:default;}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names{gap:36px !important;}
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button{--t:38px;position:relative;}
/* Le nom du cuir se centre sous LA PASTILLE CHOISIE (et non plus sous la rangee), a sa demande. */
html body .mj-loupe .mj-loupe__cadre .mj-loupe__names button.active::after{left:50%;right:auto;transform:translateX(-50%);white-space:nowrap;}
/* 96e passe (12/10) : formulaire du code invite au paiement. Sans cadre ni fond gris, comme les autres champs du paiement ;
   le texte du champ (« Code invite ») reste visible tant qu'on n'ecrit pas (WooCommerce l'effacait 0,5 s apres l'ouverture, au focus automatique) ;
   le bouton devient un simple texte souligne, meme typographie que le lien « Cliquez ici pour saisir votre code ». */
html body .mj-wc form.checkout_coupon{background:transparent;border:0;padding:0;}
html body .mj-wc form.checkout_coupon #coupon_code:focus::-webkit-input-placeholder{opacity:1;transition:none;}
html body .mj-wc form.checkout_coupon #coupon_code:focus::placeholder{opacity:1;transition:none;}
html body .mj-wc form.checkout_coupon button[name="apply_coupon"]{display:inline-block;width:auto;min-height:0;height:auto;margin:0;padding:4px 0;border:0;border-radius:0;background:none;box-shadow:none;color:#000;font-family:var(--mj-font);font-weight:500;font-size:11px;line-height:1.9;letter-spacing:.075em;text-transform:uppercase;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;cursor:pointer;}
@media (max-width:767px){
  html body .mj-wc form.checkout_coupon button[name="apply_coupon"]{font-size:clamp(8px, calc((100vw - 48px) / 37.5), 10.5px);}
}
/* Aucun effet au survol, au clic ni au focus : la regle generale « .mj-wc .woocommerce button.button:hover » le repassait en rectangle noir. */
html body .mj-wc form.checkout_coupon button[name="apply_coupon"]:hover,
html body .mj-wc form.checkout_coupon button[name="apply_coupon"]:focus,
html body .mj-wc form.checkout_coupon button[name="apply_coupon"]:active{background:none;color:#000;box-shadow:none;text-decoration:underline;}
/* Survol : la regle generale « .mj-wc .woocommerce button.button::after » deroulait un calque gris fonce sous le texte. Supprime pour ce bouton : rien ne bouge au survol. */
html body .mj-wc form.checkout_coupon button[name="apply_coupon"]::after{content:none;display:none;}
/* Texte tape plus pres du trait : meme hauteur que les autres champs du paiement (38 px, 40 px sous 768 px) au lieu de 50. */
html body .mj-wc form.checkout_coupon input#coupon_code{height:38px;}
@media (max-width:767px){
  html body .mj-wc form.checkout_coupon input#coupon_code{height:40px;}
}
/* 96e passe (12/10) : meme espace entre le titre d'un champ et son texte qu'entre ce texte et le trait (titre 4 px plus bas : a 1 px pres, champ vide comme rempli). */
html body .mj-wc form.checkout .form-row > label:not(.screen-reader-text):not(.checkbox):not(.woocommerce-form__label-for-checkbox){margin-bottom:-4px;}
html body .mj-wc form.checkout #mj-email-confirm-row > label{margin-bottom:-4px;}
