
@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes slideInToast{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulseSoft{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes shakeX{0%,to{transform:translate(0)}20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}@keyframes badgePop{0%{opacity:0;transform:scale(.6)}70%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.animateFadeInUp{animation:fadeInUp var(--motion-duration-normal) var(--motion-ease-default) both}.animateFadeInScale{animation:fadeInScale var(--motion-duration-slow) var(--motion-ease-default) both}.animateSlideInToast{animation:slideInToast var(--motion-duration-normal) var(--motion-ease-default) both}.animatePulseSoft{animation:pulseSoft 1.8s var(--motion-ease-default) 2}.animateShakeX{animation:shakeX .45s var(--motion-ease-default) 1}.animateBadgePop{animation:badgePop var(--motion-duration-normal) var(--motion-ease-default) both}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;font-family:var(--font-family-sans)}body{min-height:100vh;font-family:inherit;font-size:var(--font-size-md);line-height:var(--font-line-height-normal);color:var(--color-text);background-color:var(--color-bg);margin:0;overflow-x:hidden}:root{--bottom-nav-height:4.5rem;--page-bottom-inset:calc(var(--bottom-nav-height) + env(safe-area-inset-block-end,0px) + var(--space-4))}button,input,select,textarea{font-family:inherit}
