.stat-card{transition:transform .2s,box-shadow .2s}.stat-card:hover{transform:translateY(-2px);box-shadow:0 10px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.chart-bar{animation:1s ease-out growBar}@keyframes growBar{0%{height:0}}.sidebar-item-active{color:#2563eb;background-color:#3b82f61a;border-left:3px solid #2563eb;font-weight:500}.mobile-menu{transition:transform .3s;transform:translate(-100%)}.mobile-menu.open{transform:translate(0)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.3s ease-out fadeIn}@keyframes slideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.animate-slide-in{animation:.3s ease-out slideIn}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse-slow{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}*{transition-property:background-color,border-color,color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#9ca3af4d;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#9ca3af80}.dark ::-webkit-scrollbar-thumb{background:#4b556380}.dark ::-webkit-scrollbar-thumb:hover{background:#4b5563b3}.table-row-hover{transition:background-color .2s,transform .2s}.table-row-hover:hover{background-color:#3b82f60d;transform:scale(1.005)}.btn-loading{pointer-events:none;position:relative}.btn-loading:after{content:"";border:2px solid #fff;border-top-color:#0000;border-radius:50%;width:16px;height:16px;margin-top:-8px;margin-left:-8px;animation:.6s linear infinite spin;position:absolute;top:50%;left:50%}@keyframes spin{to{transform:rotate(360deg)}}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:.2s ease-out fadeIn}.shadow-card{box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f}.shadow-card-hover:hover{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.badge-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.status-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.status-dot.active{background-color:#10b981;box-shadow:0 0 0 3px #10b98133}.status-dot.inactive{background-color:#ef4444;box-shadow:0 0 0 3px #ef444433}.status-dot.pending{background-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b33}
