/* Optional portfolio motion, kept separate for easy rollback. */
@media(prefers-reduced-motion:no-preference){
  .tulip{animation:tulip-breathe 7s ease-in-out infinite}
  .contact::before{inset:-12%;animation:contact-light 20s ease-in-out infinite}
  .project.motion-reveal{transition:opacity .9s ease,transform .9s cubic-bezier(.22,.61,.36,1)}
  .project.motion-pending{opacity:0;transform:translate3d(0,24px,0)}
  .pill .arrow-icon,.case-next .arrow-icon{transition:transform .25s ease}
  .pill:focus-visible .arrow-icon,.case-next:focus-visible .arrow-icon{transform:translate(3px,-3px)}
}
@keyframes tulip-breathe{0%,100%{transform:translateY(-9px)}50%{transform:translateY(9px)}}
@keyframes contact-light{0%,100%{transform:translate3d(-4%,4%,0)}50%{transform:translate3d(4%,-4%,0)}}
@media(hover:hover) and (prefers-reduced-motion:no-preference){
  .pill:hover .arrow-icon,.case-next:hover .arrow-icon{transform:translate(3px,-3px)}
}
@media(hover:none) and (prefers-reduced-motion:no-preference){
  .pill:active .arrow-icon,.case-next:active .arrow-icon{transform:translate(2px,-2px)}
}
@media(prefers-reduced-motion:reduce){
  .project.motion-pending{opacity:1;transform:none}
}
