@keyframes fadeUp { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:translateY(0); } }
@keyframes scaleIn { from { opacity:0; transform:scale(.975); } to { opacity:1; transform:scale(1); } }
@keyframes softPulse { 0%,100% { box-shadow:0 0 0 0 rgba(29,113,184,.15); } 50% { box-shadow:0 0 0 9px rgba(29,113,184,0); } }
.animate-fade-up { opacity:0; animation:fadeUp .5s ease forwards; animation-delay:var(--delay,0ms); }
.animate-scale-in { opacity:0; animation:scaleIn .45s ease forwards; }
.notification-dot { animation:softPulse 2.4s infinite; }
@media (prefers-reduced-motion: reduce) {
    *,*::before,*::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; scroll-behavior:auto!important; }
    .animate-fade-up,.animate-scale-in { opacity:1; transform:none; }
}
