/* Animations partagées · Au Clair Digital
   transform/opacity uniquement (GPU), coupées si prefers-reduced-motion. */
.acd-float  { animation: acd-float 4s   ease-in-out infinite; }
.acd-float2 { animation: acd-float 4.7s ease-in-out infinite; }
.acd-float3 { animation: acd-float 5.4s ease-in-out infinite; }
.acd-pulse  { animation: acd-pulse 2.4s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.acd-spin   { animation: acd-spin 8s linear infinite; transform-box: fill-box; transform-origin: center; }
.acd-dot    { animation: acd-dot 4.2s cubic-bezier(0.65,0,0.35,1) infinite; }
.acd-cell   { animation: acd-fill 5s cubic-bezier(0.16,1,0.3,1) infinite; transform-box: fill-box; transform-origin: center; }
.acd-row    { animation: acd-row 5s cubic-bezier(0.16,1,0.3,1) infinite; transform-box: fill-box; transform-origin: left center; }
.acd-bar    { animation: acd-bar 5s cubic-bezier(0.16,1,0.3,1) infinite; transform-box: fill-box; transform-origin: left center; }
.acd-sweep  { animation: acd-sweep 4.6s ease-in-out infinite; }
.acd-check  { animation: acd-check 4.6s cubic-bezier(0.16,1,0.3,1) infinite; transform-box: fill-box; transform-origin: center; }
.acd-type   { animation: acd-type 5s infinite; transform-box: fill-box; transform-origin: right center; }
.acd-caret  { animation: acd-caret 0.9s steps(1) infinite; }
.acd-ripple { animation: acd-ripple 2.4s ease-out infinite; transform-box: fill-box; transform-origin: center; }
.acd-tap    { animation: acd-tap 2.4s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.acd-hand   { animation: acd-hand-travel 4.6s cubic-bezier(0.22,1,0.36,1) infinite; transform-box: fill-box; transform-origin: center; }
.acd-pop    { animation: acd-pop 4.6s cubic-bezier(0.16,1,0.3,1) infinite; transform-box: fill-box; transform-origin: center; }

@keyframes acd-float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-5px)} }
@keyframes acd-pulse { 0%,100%{opacity:.45} 50%{opacity:1} }
@keyframes acd-spin  { to{transform:rotate(360deg)} }
@keyframes acd-dot   { 0%{transform:translateX(0);opacity:0} 12%{opacity:1} 86%{opacity:1} 100%{transform:translateX(var(--travel,232px));opacity:0} }
@keyframes acd-fill  { 0%{opacity:0;transform:scale(.55)} 18%{opacity:1;transform:scale(1)} 90%{opacity:1;transform:scale(1)} 100%{opacity:0;transform:scale(.55)} }
@keyframes acd-row   { 0%{opacity:0;transform:translateX(-14px)} 20%{opacity:1;transform:translateX(0)} 90%{opacity:1;transform:translateX(0)} 100%{opacity:0;transform:translateX(-14px)} }
@keyframes acd-bar   { 0%{transform:scaleX(0)} 45%{transform:scaleX(1)} 90%{transform:scaleX(1)} 100%{transform:scaleX(0)} }
@keyframes acd-sweep { 0%,100%{transform:translateX(0)} 50%{transform:translateX(var(--sweep,120px))} }
@keyframes acd-check { 0%,32%{opacity:0;transform:scale(.4)} 44%,92%{opacity:1;transform:scale(1)} 100%{opacity:0;transform:scale(.4)} }
@keyframes acd-type  { 0%{transform:scaleX(1)} 30%{transform:scaleX(0)} 84%{transform:scaleX(0)} 100%{transform:scaleX(1)} }
@keyframes acd-caret { 0%,50%{opacity:1} 51%,100%{opacity:0} }
@keyframes acd-ripple{ 0%{transform:scale(.35);opacity:.65} 70%,100%{transform:scale(1.7);opacity:0} }
@keyframes acd-tap   { 0%,40%,100%{transform:translateY(0)} 55%{transform:translateY(5px)} }
@keyframes acd-hand-travel {
  0%   { transform: translate(var(--hx,0), var(--hy,0)) scale(0.92); opacity: 0; }
  10%  { transform: translate(var(--hx,0), var(--hy,0)) scale(0.92); opacity: 1; }
  34%  { transform: translate(0,0) scale(1); opacity: 1; }
  46%  { transform: translate(0,6px) scale(1); opacity: 1; }
  56%  { transform: translate(0,0) scale(1); opacity: 1; }
  90%  { transform: translate(0,0) scale(1); opacity: 1; }
  97%  { transform: translate(0,0) scale(1); opacity: 0; }
  100% { transform: translate(var(--hx,0), var(--hy,0)) scale(0.92); opacity: 0; }
}
@keyframes acd-pop   { 0%,40%{opacity:0;transform:scale(.4)} 55%,92%{opacity:1;transform:scale(1)} 100%{opacity:0;transform:scale(.4)} }

@media (prefers-reduced-motion: reduce) {
  [class^="acd-"], [class*=" acd-"] { animation: none !important; }
}
