.glass {
  backdrop-filter: blur(16px);
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
}
.glass-strong {
  backdrop-filter: blur(20px);
  background: rgba(255, 255, 255, 0.15);
  border: 1px solid rgba(255, 255, 255, 0.3);
}
@keyframes blob {
  0% { transform: translate(0px, 0px) scale(1); }
  33% { transform: translate(30px, -50px) scale(1.1); }
  66% { transform: translate(-20px, 20px) scale(0.9); }
  100% { transform: translate(0px, 0px) scale(1); }
}
.animate-blob { animation: blob 7s infinite; }
.animation-delay-2000 { animation-delay: 2s; }
.animation-delay-4000 { animation-delay: 4s; }
.animate-pulse-slow { animation: pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite; }
.transition-all-smooth { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
.scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; }
.scrollbar-hide::-webkit-scrollbar { display: none; }
.file-upload-area {
  background: linear-gradient(145deg, rgba(139, 92, 246, 0.1), rgba(20, 184, 166, 0.1));
  border: 2px dashed rgba(139, 92, 246, 0.3);
  transition: all 0.3s ease;
}
.file-upload-area.dragover {
  border-color: rgba(139, 92, 246, 0.6);
  background: linear-gradient(145deg, rgba(139, 92, 246, 0.2), rgba(20, 184, 166, 0.2));
  transform: scale(1.02);
}
.chart-container { position: relative; height: 300px; width: 100%; }
@keyframes statusPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.status-processing { animation: statusPulse 2s infinite; }

