/* Motion clarifies direct state changes only. No autoplay or hidden-on-scroll content. */
@media(prefers-reduced-motion:no-preference){
  .btn,.showcase-option{transition:transform 140ms var(--ease-out)}
  .btn:active:not(:disabled),.showcase-option:active{transform:scale(.97)}
  .showcase-transition-image{opacity:1;transition:opacity 200ms var(--ease-out)}
  .pusti-transition-image{opacity:1;transition:opacity 250ms var(--ease-out)}
  .showcase-transition-image[data-entering],.pusti-transition-image[data-entering]{opacity:0}
  .pusti-stage[data-happy]{animation:pusti-happy-pop 300ms var(--ease-out)}
  .pusti-seed{animation:pusti-seed-fly var(--seed-duration) var(--ease-out) var(--seed-delay) forwards}
  .demo-feedback[data-success=true]{animation:demo-confirmation-in 200ms var(--ease-out)}
  @keyframes pusti-happy-pop{from{transform:scale(.96)}to{transform:scale(1)}}
  @keyframes pusti-seed-fly{from{opacity:.96;transform:translate3d(0,0,0) rotate(var(--seed-start-rotation)) scale(.84)}to{opacity:0;transform:translate3d(var(--seed-x),var(--seed-y),0) rotate(var(--seed-rotation)) scale(1)}}
  @keyframes demo-confirmation-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
}
/* Keyboard use stays immediate, including activation with Enter or Space. */
html[data-input=keyboard] .btn,html[data-input=keyboard] .showcase-option,html[data-input=keyboard] .showcase-transition-image,html[data-input=keyboard] .pusti-transition-image{transition:none;transform:none}
html[data-input=keyboard] .pusti-stage,html[data-input=keyboard] .pusti-seed,html[data-input=keyboard] .demo-feedback{animation:none}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}
}
