/* * Styles personnalisés pour FireWatch AI * Créé par Marino ATOHOUN */ /* Variables CSS personnalisées */ :root { --firewatch-primary: #1e40af; --firewatch-secondary: #7c3aed; --firewatch-accent: #ec4899; --firewatch-dark: #0f172a; --firewatch-light: #f1f5f9; } /* Styles pour les alertes personnalisées */ .firewatch-alert { border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; border-left: 4px solid; animation: slideIn 0.3s ease-out; } .firewatch-alert-success { background-color: #d1fae5; color: #065f46; border-left-color: #10b981; } .firewatch-alert-error { background-color: #fee2e2; color: #991b1b; border-left-color: #ef4444; } .firewatch-alert-info { background-color: #dbeafe; color: #1e40af; border-left-color: #3b82f6; } /* Animation pour les alertes */ @keyframes slideIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* Styles pour les boutons de chargement */ .firewatch-loading { position: relative; overflow: hidden; } .firewatch-loading::after { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent); animation: loading 1.5s infinite; } @keyframes loading { 0% { left: -100%; } 100% { left: 100%; } } /* Styles pour les résultats de détection */ .detection-item { transition: all 0.3s ease; border-radius: 0.5rem; padding: 0.75rem; margin: 0.5rem 0; background: rgba(255, 255, 255, 0.8); backdrop-filter: blur(10px); } .detection-item:hover { transform: translateX(5px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } /* Indicateurs de confiance */ .confidence-bar { height: 4px; border-radius: 2px; background: linear-gradient(90deg, #ef4444, #f59e0b, #10b981); margin-top: 0.25rem; } /* Styles pour la prévisualisation des fichiers */ .file-preview { border: 2px dashed #d1d5db; border-radius: 0.5rem; padding: 2rem; text-align: center; transition: all 0.3s ease; } .file-preview.dragover { border-color: var(--firewatch-accent); background-color: rgba(236, 72, 153, 0.1); } .file-preview img, .file-preview video { max-width: 100%; max-height: 200px; border-radius: 0.5rem; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } /* Styles pour les onglets */ .firewatch-tab { position: relative; transition: all 0.3s ease; } .firewatch-tab.active::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--firewatch-primary), var(--firewatch-accent)); border-radius: 2px 2px 0 0; } /* Styles pour les statistiques */ .stat-card { background: linear-gradient(135deg, rgba(255,255,255,0.1), rgba(255,255,255,0.05)); backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,0.2); border-radius: 1rem; padding: 1.5rem; transition: all 0.3s ease; } .stat-card:hover { transform: translateY(-5px); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1); } /* Responsive design */ @media (max-width: 768px) { .firewatch-alert { margin: 0.5rem; padding: 0.75rem; } .detection-item { padding: 0.5rem; } .file-preview { padding: 1rem; } } /* Styles pour l'accessibilité */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* Focus styles pour l'accessibilité */ button:focus, input:focus, textarea:focus, select:focus { outline: 2px solid var(--firewatch-accent); outline-offset: 2px; } /* Styles pour les tooltips */ .firewatch-tooltip { position: relative; display: inline-block; } .firewatch-tooltip .tooltip-text { visibility: hidden; width: 200px; background-color: var(--firewatch-dark); color: white; text-align: center; border-radius: 6px; padding: 8px; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -100px; opacity: 0; transition: opacity 0.3s; font-size: 0.875rem; } .firewatch-tooltip:hover .tooltip-text { visibility: visible; opacity: 1; } /* Signature Marino ATOHOUN */ .marino-signature { font-family: 'Courier New', monospace; font-size: 0.75rem; color: #6b7280; text-align: center; margin-top: 2rem; } .marino-signature::before { content: "/* "; } .marino-signature::after { content: " */"; }