/* Mouvement décoratif : images et opacités de thème conservées. */
.ribbon-drift{position:absolute;inset:0;transform-origin:62% 68%}
.ribbon-motion-toggle{display:none;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:32px;min-width:32px;margin:-8px 0 -8px -8px;padding:0;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--muted);cursor:pointer;transition:color .2s,border-color .2s}
.ribbon-motion-toggle:hover{color:var(--text);border-color:var(--brand)}
.ribbon-motion-toggle:focus-visible{outline:2px solid var(--brand);outline-offset:4px}
.ribbon-motion-toggle svg{width:13px;height:13px;display:block;fill:currentColor}
.ribbon-motion-toggle .ribbon-play{display:none}
.ribbon-motion-toggle[aria-pressed=true] .ribbon-pause{display:none}
.ribbon-motion-toggle[aria-pressed=true] .ribbon-play{display:block}
.ribbon-motion-enabled .ribbon-motion-toggle{display:inline-flex}
.ribbon-motion-enabled .ribbon-drift{animation:ruban-souple 24s ease-in-out infinite;animation-play-state:paused;will-change:transform}
.ribbon-motion-enabled .ribbon-drift::after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 69% 67%,#b7aaff21,transparent 56%);opacity:0;animation:ruban-reflet 24s ease-in-out infinite;animation-play-state:paused;will-change:opacity}
.ribbon-motion-enabled .contact-ribbon{animation:ruban-contact 30s ease-in-out infinite;animation-play-state:paused;will-change:transform}
.ribbon-motion-enabled .ribbon-drift.ribbon-is-running,.ribbon-motion-enabled .ribbon-drift.ribbon-is-running::after,.ribbon-motion-enabled .contact-ribbon.ribbon-is-running{animation-play-state:running}
@keyframes ruban-souple{
  0%,100%{transform:translate3d(-3px,2px,0) rotate(-.06deg) scale(1.018)}
  50%{transform:translate3d(4px,-4px,0) rotate(.06deg) scale(1.018)}
}
@keyframes ruban-reflet{0%,100%{opacity:.12}50%{opacity:.62}}
@keyframes ruban-contact{0%,100%{transform:translate3d(-3px,2px,0) scale(1.025)}50%{transform:translate3d(4px,-3px,0) scale(1.025)}}
@media(max-width:760px){
  .ribbon-motion-enabled .ribbon-drift{animation-name:ruban-souple-mobile;animation-duration:28s}
  .ribbon-motion-enabled .ribbon-drift::after{animation-duration:28s}
  .ribbon-motion-enabled .hero-baseline>a{width:auto;flex:1 0 calc(100% - 70px)}
  .ribbon-motion-toggle{margin:0;width:36px;height:36px;min-width:36px}
}
@keyframes ruban-souple-mobile{0%,100%{transform:translate3d(-2px,1px,0) scale(1.018)}50%{transform:translate3d(2px,-2px,0) scale(1.018)}}
@media(pointer:coarse){.ribbon-motion-toggle{width:44px;height:44px;min-width:44px}}
@media(prefers-reduced-motion:reduce){
  .ribbon-motion-enabled .ribbon-motion-toggle{display:none}
  .ribbon-drift,.ribbon-motion-enabled .ribbon-drift,.ribbon-motion-enabled .contact-ribbon{animation:none!important;transform:none!important;will-change:auto}
  .ribbon-motion-enabled .ribbon-drift::after{content:none;animation:none!important}
}
