/* Micro interactions shared by every control. Transform and opacity only. */
.press{transition:transform var(--t-fast) var(--ease),box-shadow var(--t-med) var(--ease),background-color var(--t-med) var(--ease);-webkit-tap-highlight-color:transparent;touch-action:manipulation}
@media (hover:hover){.press:hover{transform:translateY(-1px)}}
.press:active{transform:scale(.97)}
:focus-visible{outline:2px solid var(--focus,#e5329a);outline-offset:2px}
.rise{animation:rise var(--t-slow) var(--ease) both;animation-delay:calc(var(--i,0) * 40ms)}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(.3);opacity:0}60%{transform:scale(1.14);opacity:1}100%{transform:scale(1)}}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-5px)}40%{transform:translateX(5px)}60%{transform:translateX(-4px)}80%{transform:translateX(3px)}}
@keyframes sheetIn{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes ring{0%{box-shadow:0 0 0 0 rgba(229,50,154,.7)}100%{box-shadow:0 0 0 14px rgba(229,50,154,0)}}
@keyframes starPop{0%{transform:scale(0) rotate(-30deg);opacity:0}70%{transform:scale(1.25) rotate(6deg);opacity:1}100%{transform:scale(1)}}
@keyframes drawCheck{to{stroke-dashoffset:0}}
@keyframes heartLose{0%{transform:scale(1)}30%{transform:scale(1.35)}100%{transform:scale(.8)}}
@keyframes fall{0%{transform:translate3d(0,-20px,0) rotate(0);opacity:1}100%{transform:translate3d(var(--x),105vh,0) rotate(var(--r));opacity:.9}}
@keyframes boop{0%{transform:scale(1) rotate(0)}40%{transform:scale(1.14) rotate(-10deg)}100%{transform:scale(1) rotate(0)}}
@keyframes bob{50%{transform:translateY(-6px)}}
.shake{animation:shake .38s var(--ease)}
.boop{animation:boop .45s var(--ease)}
.hint-pulse{animation:ring .9s ease-out 3}
.view-in{animation:rise var(--t-slow) var(--ease) both}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
