/* Shared, restrained motion. Layout/scroll are never animated or intercepted. */
:root{--motion-fast:140ms;--motion-reveal:260ms;--motion-route:340ms;--motion-ease:cubic-bezier(.22,.7,.2,1)}
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}
html.idmp-motion img:not([data-idmp-motion-skip]):not([data-idmp-image="ready"]):not([data-idmp-image="error"]){opacity:0!important}
html.idmp-motion img[data-idmp-image="ready"]{animation:idmp-image-reveal var(--motion-reveal) var(--motion-ease)}
html.idmp-motion img[data-idmp-image="error"]{opacity:.55}
@keyframes idmp-image-reveal{from{opacity:0;scale:1.018}to{opacity:1;scale:1}}
.idmp-image-loader{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:1;background:radial-gradient(ellipse at center,rgba(255,48,25,.065),transparent 65%)}
/* 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){position:relative}
.idmp-image-loader:after{content:"";width:16px;height:16px;border:1.5px solid rgba(255,48,25,.16);border-top-color:#ff3019;border-radius:50%;animation:idmp-image-spin 1s linear infinite}
@keyframes idmp-image-spin{to{transform:rotate(360deg)}}
html.idmp-motion:after{content:"";position:fixed;inset:0;z-index:2147483000;pointer-events:none;background:linear-gradient(105deg,transparent 24%,rgba(255,48,25,.08) 42%,rgba(255,87,28,.36) 50%,rgba(255,48,25,.08) 58%,transparent 76%);transform:translate3d(-110%,0,0);visibility:hidden}
html.idmp-route-sweep:after{visibility:visible;animation:idmp-route-sweep var(--motion-route) var(--motion-ease) both}
html.idmp-route-leaving:after{visibility:visible;animation:idmp-route-leave 140ms var(--motion-ease) both}
html.idmp-route-arrival:after{visibility:visible;transform:translate3d(0,0,0)}
@keyframes idmp-route-sweep{from{transform:translate3d(-110%,0,0)}to{transform:translate3d(110%,0,0)}}
@keyframes idmp-route-leave{from{transform:translate3d(-110%,0,0)}to{transform:translate3d(-15%,0,0)}}
/* New visible panels fade in without moving controls or altering sticky geometry. */
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:idmp-panel-reveal 180ms var(--motion-ease)}
@keyframes idmp-panel-reveal{from{opacity:.6}to{opacity:1}}
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}
@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:after{display:none!important}
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{html.idmp-motion:after,.idmp-image-loader{display:none!important}html.idmp-motion img{opacity:1!important;animation:none!important}}
