@keyframes fadeInUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.animate-fade-in-up { animation: fadeInUp .25s ease-out; }

@keyframes pulseSoft { 0%,100% { opacity: 1; } 50% { opacity: .55; } }
.animate-pulse-soft { animation: pulseSoft 1.6s ease-in-out infinite; }

@keyframes ringSpin { to { transform: rotate(360deg); } }

::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(148,163,184,.4); border-radius: 8px; }
::-webkit-scrollbar-thumb:hover { background: rgba(148,163,184,.6); }

.badge { display:inline-flex; align-items:center; gap:.25rem; padding:.2rem .6rem; border-radius:9999px; font-size:.7rem; font-weight:700; letter-spacing:.02em; text-transform:uppercase; }
.badge-success { background: rgba(16,185,129,.12); color: #059669; }
.badge-warning { background: rgba(245,158,11,.14); color: #b45309; }
.badge-danger { background: rgba(239,68,68,.12); color: #dc2626; }
.badge-info { background: rgba(59,130,246,.12); color: #2563eb; }
.badge-neutral { background: rgba(100,116,139,.12); color: #475569; }
.dark .badge-success { background: rgba(16,185,129,.15); color:#34d399; }
.dark .badge-warning { background: rgba(245,158,11,.18); color:#fbbf24; }
.dark .badge-danger { background: rgba(239,68,68,.18); color:#f87171; }
.dark .badge-info { background: rgba(59,130,246,.18); color:#60a5fa; }
.dark .badge-neutral { background: rgba(100,116,139,.2); color:#cbd5e1; }

.card { background:#fff; border:1px solid rgb(226 232 240); border-radius:1rem; }
.dark .card { background: rgb(15 23 42); border-color: rgb(30 41 59); }

.progress-ring-bg { stroke: rgba(148,163,184,.25); }
.toast { min-width: 280px; max-width: 360px; }
[x-cloak] { display: none !important; }
