.fade-in { animation: fadeIn .3s ease; }
@keyframes fadeIn { from{opacity:0;transform:translateY(6px)} to{opacity:1;transform:translateY(0)} }
.sidebar-link { transition: all .15s ease; }
.sidebar-link:hover { background: rgba(255,255,255,.08); }
.sidebar-link.active { background: linear-gradient(90deg, var(--primary), var(--secondary)); color:#fff; box-shadow: 0 4px 14px rgba(30,64,175,.4); }
.modal-backdrop { background: rgba(15,23,42,.55); backdrop-filter: blur(4px); }
.scroll-thin::-webkit-scrollbar { height:6px; width:6px; }
.scroll-thin::-webkit-scrollbar-thumb { background:#cbd5e1; border-radius:4px; }
.card-hover { transition: all .25s ease; } .card-hover:hover { transform: translateY(-3px); box-shadow: 0 14px 30px rgba(15,23,42,.08); }
.drawer-enter { animation: slideIn .25s ease; }
@keyframes slideIn { from{transform:translateX(-100%)} to{transform:translateX(0)} }
.kanban-card { cursor: grab; transition: all .2s ease; }
.kanban-card:active { cursor: grabbing; }
.kanban-column { min-height: 200px; transition: background .2s ease; }
.kanban-column.drag-over { background: rgba(30,64,175,.1); border: 2px dashed var(--primary); }
.pulse-dot { animation: pulse 2s infinite; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.5} }
.slide-in-right { animation: slideInRight .3s ease; }
@keyframes slideInRight { from{transform:translateX(100%);opacity:0} to{transform:translateX(0);opacity:1} }
.timeline-item { position: relative; padding-left: 30px; }
.timeline-item:before { content: ''; position: absolute; left: 8px; top: 0; bottom: 0; width: 2px; background: #e2e8f0; }
.timeline-item:last-child:before { height: 0; }
.timeline-dot { position: absolute; left: 2px; top: 4px; width: 14px; height: 14px; border-radius: 50%; border: 2px solid white; }