/* Shared, restrained motion. Layout/scroll are never animated or intercepted. */
:root{--motion-fast:140ms;--motion-reveal:0ms;--motion-ease:cubic-bezier(.22,.7,.2,1);--or-rgb:255,48,25}
html,body{overscroll-behavior-y:none}
.content,.mob-content,.mob-subbody,.mob-accueil,.mob-menu-wrap,.mob-stock-wrap,.modal-body,.ov-body{overscroll-behavior-y:contain}
/* Par defaut, SILEX conserve le cycle natif de ses medias. GUNTER applique
   plus bas une revelation atomique aux seuls cadres de produits. */
html.idmp-motion img:not([data-idmp-motion-skip]){opacity:1}
html.idmp-motion img[data-idmp-image="ready"]{animation:none}
html.idmp-motion img[data-idmp-image="error"]{opacity:.55}
.idmp-image-loader{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:1;background:transparent}
/* Image-only frames: an overlay without wrappers or layout shifts. */
:where(.od2-photo,.cfg-info-photo,.mach-img,.gal-slide,.gal-main,.gal-mini,.cfg-img,.gthumb,.thumb,.iv-media,.mob-sc-img,.sp-image,.icp-fig,.gg-hero-machine,.tdh-media,.up-slot,.col-imgcell,.cfg-col-preview,.cfg-col-sw,#lb-stage,#msv-main,#mse-main-prev){position:relative}
.idmp-image-loader:after{content:"";width:16px;height:16px;border:1.5px solid rgba(var(--or-rgb),.16);border-top-color:var(--or,#ff3019);border-radius:50%;animation:idmp-image-spin 1s linear infinite}
@keyframes idmp-image-spin{to{transform:rotate(360deg)}}
/* Un onglet actif est peint directement. Le fondu historique descendait toute
   la surface a 60 %, y compris la navigation qu'elle contenait. */
html.idmp-motion :is(.sec.on,.mob-sub.on,.mob-subview.active,.tab-pane.active,.od2-panel.on,.odc-view.on,.cfg-info-panneau.on){animation:none}
html.idmp-motion :where(button,.btn,.sbi,.tbn,.iph-link,.sx-btn,[role="tab"]){transition:color var(--motion-fast),background-color var(--motion-fast),border-color var(--motion-fast),box-shadow var(--motion-fast),opacity var(--motion-fast)}
html.idmp-motion :where(button,a,[role="button"]):focus-visible{outline:2px solid #ff5b36;outline-offset:3px}

/* GUNTER charge idmp_brand.js avant cette feuille et pose data-idmp-brand sur
   l'element racine. Garder ici les couleurs de mouvement evite toute image
   rouge pendant le premier rendu, meme si la feuille de marque est encore en
   cache ou arrive apres les styles propres a la page. */
html[data-idmp-brand="gunter"] .idmp-image-loader{background:transparent}
html[data-idmp-brand="gunter"] .idmp-image-loader:after{border-color:rgba(243,177,13,.22);border-top-color:#f3b10d}
html[data-idmp-brand="gunter"].idmp-motion :where(button,a,[role="button"]):focus-visible{outline-color:#f3b10d}
html[data-idmp-brand="gunter"]{--or-rgb:243,177,13}
/* Les photos produit GUNTER restent entierement invisibles tant que le fichier
   n'est pas charge puis decode. Le cadre conserve sa taille, l'anneau jaune
   occupe le centre, puis le bitmap apparait en une seule peinture. Le selecteur
   couvre aussi l'instant precedant le marquage pending des fragments injectes. */
html[data-idmp-brand="gunter"].idmp-motion :where(.icf-stage,.ic-vis,.ic-media,.iv-media,.ac-img,.ad-gallery,.ad-main-img,.od2-machine-img,.odc-machine-img,.od2-machine-vis,.odc-machine-vis,.od2-photo,.odc-photo,.cfg-info-photo,.mach-img,.gal-slide,.sc-img,.mob-sc-img,.gal-main,.gal-mini,.gthumb,.thumb,.cfg-img,.mob-card-img,.sx-card-img,.sx-hero-media,.sx-ph,.ihs-vis,.th,.icf-god-vis,.sp-image,.icp-fig,.gg-hero-machine,.tdh-media,.up-slot,.col-imgcell,.cfg-col-preview,.cfg-col-sw,#lb-stage,#msv-main,#mse-main-prev,[data-idmp-media])>img:not([data-idmp-image="ready"]):not([data-idmp-image="error"]){opacity:0!important;visibility:hidden!important}
html[data-idmp-brand="gunter"].idmp-motion :where(.icf-stage,.ic-vis,.ic-media,.iv-media,.ac-img,.ad-gallery,.ad-main-img,.od2-machine-img,.odc-machine-img,.od2-machine-vis,.odc-machine-vis,.od2-photo,.odc-photo,.cfg-info-photo,.mach-img,.gal-slide,.sc-img,.mob-sc-img,.gal-main,.gal-mini,.gthumb,.thumb,.cfg-img,.mob-card-img,.sx-card-img,.sx-hero-media,.sx-ph,.ihs-vis,.th,.icf-god-vis,.sp-image,.icp-fig,.gg-hero-machine,.tdh-media,.up-slot,.col-imgcell,.cfg-col-preview,.cfg-col-sw,#lb-stage,#msv-main,#mse-main-prev,[data-idmp-media])>img[data-idmp-image="ready"]{opacity:1!important;visibility:visible!important;transition:none!important}
html[data-idmp-brand="gunter"].idmp-motion :where(.icf-stage,.ic-vis,.ic-media,.iv-media,.ac-img,.ad-gallery,.ad-main-img,.od2-machine-img,.odc-machine-img,.od2-machine-vis,.odc-machine-vis,.od2-photo,.odc-photo,.cfg-info-photo,.mach-img,.gal-slide,.sc-img,.mob-sc-img,.gal-main,.gal-mini,.gthumb,.thumb,.cfg-img,.mob-card-img,.sx-card-img,.sx-hero-media,.sx-ph,.ihs-vis,.th,.icf-god-vis,.sp-image,.icp-fig,.gg-hero-machine,.tdh-media,.up-slot,.col-imgcell,.cfg-col-preview,.cfg-col-sw,#lb-stage,#msv-main,#mse-main-prev,[data-idmp-media])>img[data-idmp-image="error"]{visibility:visible!important;transition:none!important}

/* Chrome garde l'ancien document affiche jusqu'a ce que le suivant soit pret.
   Le remplacement est atomique : aucune image noire intermediaire et aucune
   translation des rails. Les navigateurs sans cette API gardent la navigation
   native, sans voile JavaScript. */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
@media(hover:hover) and (pointer:fine){
html.idmp-motion :where(.ic-card,.sx-card,[data-idmp-lift]){transition:translate var(--motion-fast) var(--motion-ease),box-shadow var(--motion-fast)}
html.idmp-motion :where(.ic-card,.sx-card,[data-idmp-lift]):hover{translate:0 -2px}
}
html.idmp-motion :where(button,.btn,.sx-btn):active:not(:disabled){opacity:.9}
@media(prefers-reduced-motion:reduce){
html.idmp-motion img[data-idmp-image="ready"],html.idmp-motion :is(.sec.on,.mob-sub.on,.mob-subview.active,.tab-pane.active,.od2-panel.on,.odc-view.on,.cfg-info-panneau.on),.idmp-image-loader:after{animation:none!important}
html.idmp-motion :where(button,a,.btn,.ic-card,.sx-card,[role="tab"]){transition:none!important;translate:none!important}
}
@media print{.idmp-image-loader{display:none!important}html.idmp-motion img{opacity:1!important;animation:none!important}}
