/* Global styles */ * { box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; } /* Smooth scrolling */ html { scroll-behavior: smooth; } /* Custom animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-in-up { animation: fadeInUp 0.6s ease-out; } /* Live feed animation */ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .live-indicator { animation: pulse 2s infinite; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: #f1f1f1; } ::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: #a8a8a8; } /* Loading spinner */ .spinner { border: 2px solid #f3f3f3; border-top: 2px solid #3b82f6; border-radius: 50%; width: 20px; height: 20px; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* File drop zone styles */ .drop-zone { border: 2px dashed #d1d5db; transition: all 0.3s ease; } .drop-zone.dragover { border-color: #3b82f6; background-color: #eff6ff; } .drop-zone.processing { border-color: #10b981; background-color: #ecfdf5; } /* Status indicators */ .status-completed { color: #10b981; } .status-processing { color: #f59e0b; } .status-failed { color: #ef4444; } /* Threat highlighting */ .threat-zero-width { background-color: #fee2e2; color: #dc2626; padding: 1px 2px; border-radius: 2px; } .threat-js { background-color: #fef3c7; color: #d97706; padding: 1px 2px; border-radius: 2px; } .threat-stego { background-color: #e0e7ff; color: #6366f1; padding: 1px 2px; border-radius: 2px; } /* Sparkline styles */ .sparkline { width: 100%; height: 40px; } /* Responsive adjustments */ @media (max-width: 768px) { .hero h1 { font-size: 2.5rem; } .pricing-grid { grid-template-columns: 1fr; } .dashboard-layout { flex-direction: column; } .sidebar { width: 100%; order: 2; } .main-panel { order: 1; } } /* Print styles */ @media print { .no-print { display: none !important; } } /* Focus styles for accessibility */ button:focus, a:focus, input:focus, textarea:focus { outline: 2px solid #3b82f6; outline-offset: 2px; } /* Custom button hover effects */ .btn-primary { background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); transition: all 0.3s ease; } .btn-primary:hover { transform: translateY(-1px); box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3); } /* Table row hover effects */ .table-row:hover { background-color: #f9fafb; } /* Modal styles */ .modal-overlay { background-color: rgba(0, 0, 0, 0.5); backdrop-filter: blur(4px); } .modal-content { max-height: 90vh; overflow-y: auto; } /* Notification styles */ .notification { animation: slideInRight 0.3s ease-out; } @keyframes slideInRight { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } /* Loading state styles */ .skeleton { background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: loading 1.5s infinite; } @keyframes loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }