Spaces:
Runtime error
Runtime error
| /* Основные переменные */ | |
| :root { | |
| --primary-color: #4a4ae8; | |
| --primary-dark: #3b3b98; | |
| --secondary-color: #6c5ce7; | |
| --dark-bg: #1a1a2e; | |
| --darker-bg: #16213e; | |
| --dark-text: #e2e2e2; | |
| --light-text: #ffffff; | |
| --success-color: #00b894; | |
| --danger-color: #d63031; | |
| --warning-color: #fdcb6e; | |
| --info-color: #0984e3; | |
| --border-radius: 12px; | |
| --box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); | |
| } | |
| /* Базовые стили */ | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| body { | |
| font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; | |
| background-color: var(--darker-bg); | |
| color: var(--light-text); | |
| line-height: 1.6; | |
| } | |
| h2, label{ | |
| color: #fff; | |
| } | |
| /* Контейнер приложения */ | |
| .app-container { | |
| display: flex; | |
| min-height: 100vh; | |
| position: relative; | |
| } | |
| /* Предупреждения */ | |
| .alert-text { | |
| color: #fff; | |
| } | |
| body::-webkit-scrollbar { | |
| display: none; | |
| width: 0; | |
| background: transparent; | |
| } | |
| .enhanced-alert { | |
| padding: 20px 25px ; | |
| font-size: 1.1rem ; | |
| border: 2px solid rgba(255,255,255,0.3) ; | |
| backdrop-filter: blur(5px); | |
| display: flex ; | |
| align-items: center; | |
| gap: 15px; | |
| } | |
| .flash-info.enhanced-alert { | |
| background: rgba(74, 74, 232, 0.9) ; | |
| color: #fff ; | |
| border-color: var(--primary-color) ; | |
| } | |
| .alert-icon { | |
| font-size: 1.5rem; | |
| min-width: 30px; | |
| } | |
| .alert-icon .fa-info-circle { | |
| color: #ff0000; | |
| } | |
| .flash-close { | |
| background: none ; | |
| color: rgba(255,255,255,0.8) ; | |
| padding: 0 ; | |
| } | |
| .flash-close:hover { | |
| color: #ff0000 ; | |
| } | |
| /* Анимация появления */ | |
| @keyframes pulse-alert { | |
| 0% { transform: translateY(20px); opacity: 0; } | |
| 80% { transform: translateY(-5px); } | |
| 100% { transform: translateY(0); opacity: 1; } | |
| } | |
| .enhanced-alert { | |
| animation: pulse-alert 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); | |
| } | |
| /* Боковая панель */ | |
| .app-sidebar { | |
| width: 280px; | |
| background: var(--dark-bg); | |
| display: flex; | |
| flex-direction: column; | |
| padding: 20px 0; | |
| border-right: 1px solid rgba(255, 255, 255, 0.1); | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| height: 100vh; | |
| width: 280px; | |
| z-index: 1000; | |
| overflow-y: auto; | |
| transition: transform 0.3s ease; | |
| } | |
| .sidebar-header { | |
| padding: 0 20px 20px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .logo-link { | |
| text-decoration: none ; | |
| border-bottom: none ; | |
| } | |
| .logo-link:hover, | |
| .logo-link:focus { | |
| box-shadow: none ; | |
| } | |
| .sidebar-header h2 { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 1.3rem; | |
| color: var(--light-text); | |
| } | |
| .sidebar-nav { | |
| flex: 1; | |
| padding: 20px 0; | |
| } | |
| .nav-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 12px 20px; | |
| color: var(--light-text); | |
| text-decoration: none; | |
| transition: all 0.3s ease; | |
| border-left: 3px solid transparent; | |
| } | |
| .nav-item:hover, .nav-item.active { | |
| background: rgba(74, 74, 232, 0.1); | |
| border-left: 3px solid var(--primary-color); | |
| } | |
| .nav-item i { | |
| width: 20px; | |
| text-align: center; | |
| } | |
| .sidebar-footer { | |
| padding: 20px; | |
| border-top: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .user-info span{ | |
| color: white | |
| } | |
| .user-info { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| margin-bottom: 15px; | |
| } | |
| .user-info i { | |
| font-size: 1.8rem; | |
| color: var(--primary-color); | |
| } | |
| .logout-btn { | |
| display: block; | |
| width: 100%; | |
| padding: 10px; | |
| background: rgba(214, 48, 49, 0.1); | |
| color: var(--danger-color); | |
| border: none; | |
| border-radius: var(--border-radius); | |
| text-align: center; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| } | |
| .logout-btn:hover { | |
| background: rgba(214, 48, 49, 0.2); | |
| } | |
| .auth-links { | |
| display: flex; | |
| gap: 10px; | |
| } | |
| .auth-link { | |
| flex: 1; | |
| padding: 10px; | |
| text-align: center; | |
| color: var(--light-text); | |
| text-decoration: none; | |
| border-radius: var(--border-radius); | |
| transition: all 0.3s ease; | |
| } | |
| .auth-link:first-child { | |
| background: rgba(74, 74, 232, 0.1); | |
| } | |
| .auth-link:last-child { | |
| background: rgba(0, 184, 148, 0.1); | |
| } | |
| .auth-link:hover { | |
| background: rgba(255, 255, 255, 0.1); | |
| } | |
| /* Основное содержимое */ | |
| /* Welcome Page Styles */ | |
| .welcome-container { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| min-height: 100vh; | |
| padding: 2rem; | |
| } | |
| .welcome-content { | |
| max-width: 1200px; | |
| text-align: center; | |
| } | |
| .welcome-header h1 { | |
| font-size: 3.5rem; | |
| margin-bottom: 1rem; | |
| color: var(--light-text); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 1rem; | |
| } | |
| .tagline { | |
| font-size: 1.5rem; | |
| color: rgba(255, 255, 255, 0.8); | |
| margin-bottom: 3rem; | |
| } | |
| .welcome-cards { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 2rem; | |
| margin-bottom: 4rem; | |
| } | |
| .feature-card { | |
| background: rgba(255, 255, 255, 0.05); | |
| padding: 2rem; | |
| border-radius: var(--border-radius); | |
| transition: all 0.3s ease; | |
| } | |
| .feature-card:hover { | |
| transform: translateY(-10px); | |
| box-shadow: var(--box-shadow); | |
| } | |
| .feature-icon { | |
| width: 80px; | |
| height: 80px; | |
| margin: 0 auto 1.5rem; | |
| background: rgba(74, 74, 232, 0.2); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 2rem; | |
| } | |
| .feature-card h3 { | |
| font-size: 1.5rem; | |
| margin-bottom: 1rem; | |
| color: var(--light-text); | |
| } | |
| .feature-card p { | |
| color: rgba(255, 255, 255, 0.7); | |
| line-height: 1.6; | |
| } | |
| .auth-buttons { | |
| display: flex; | |
| gap: 1.5rem; | |
| justify-content: center; | |
| } | |
| .btn-secondary { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 0.8rem; | |
| padding: 1rem 2rem; | |
| background: rgba(255, 255, 255, 0.1); | |
| color: white; | |
| border: none; | |
| border-radius: var(--border-radius); | |
| text-decoration: none; | |
| transition: all 0.3s ease; | |
| } | |
| .btn-secondary:hover { | |
| background: rgba(255, 255, 255, 0.2); | |
| transform: translateY(-2px); | |
| } | |
| @media (max-width: 768px) { | |
| .welcome-header h1 { | |
| font-size: 2.5rem; | |
| } | |
| .tagline { | |
| font-size: 1.2rem; | |
| } | |
| .auth-buttons { | |
| flex-direction: column; | |
| } | |
| } | |
| .app-main { | |
| flex: 1; | |
| padding: 30px; | |
| background: linear-gradient(135deg, #1e1e2f, #2a2a40); | |
| margin-left: 280px; | |
| min-height: 100vh; | |
| } | |
| @media (max-width: 992px) { | |
| .app-sidebar { | |
| transform: translateX(-100%); | |
| } | |
| .app-main { | |
| margin-left: 0; | |
| } | |
| .app-container.sidebar-open .app-sidebar { | |
| transform: translateX(0); | |
| } | |
| } | |
| .mobile-menu-toggle { | |
| display: none; | |
| position: fixed; | |
| top: 20px; | |
| left: 20px; | |
| z-index: 1100; | |
| padding: 10px 15px; | |
| background: rgba(74, 74, 232, 0.9); | |
| color: white; | |
| border: none; | |
| border-radius: 8px; | |
| font-size: 1.1rem; | |
| } | |
| @media (max-width: 992px) { | |
| .mobile-menu-toggle { | |
| display: block; | |
| } | |
| } | |
| .flash-messages { | |
| position: fixed; | |
| top: 20px; | |
| right: 20px; | |
| z-index: 1000; | |
| max-width: 400px; | |
| } | |
| .flash-message { | |
| padding: 15px 20px; | |
| margin-bottom: 10px; | |
| border-radius: var(--border-radius); | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| animation: slideIn 0.3s ease-out; | |
| box-shadow: var(--box-shadow); | |
| } | |
| .flash-success { | |
| background: var(--success-color); | |
| color: white; | |
| } | |
| .flash-error { | |
| background: var(--danger-color); | |
| color: white; | |
| } | |
| .flash-info { | |
| background: var(--info-color); | |
| color: white; | |
| } | |
| .flash-warning { | |
| background: var(--warning-color); | |
| color: #333; | |
| } | |
| .flash-close { | |
| background: none; | |
| border: none; | |
| color: inherit; | |
| cursor: pointer; | |
| margin-left: 10px; | |
| } | |
| @keyframes slideIn { | |
| from { transform: translateX(100%); opacity: 0; } | |
| to { transform: translateX(0); opacity: 1; } | |
| } | |
| /* Стили для чата */ | |
| @keyframes pulse { | |
| 0% { transform: scale(1); } | |
| 50% { transform: scale(1.1); } | |
| 100% { transform: scale(1); } | |
| } | |
| .recording { | |
| animation: pulse 1.2s infinite ease-in-out ; | |
| box-shadow: 0 0 20px rgba(214, 48, 49, 0.6) ; | |
| } | |
| .chat-container { | |
| display: flex; | |
| height: calc(100vh - 60px); | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| overflow: hidden; | |
| box-shadow: var(--box-shadow); | |
| } | |
| .chat-sidebar { | |
| width: 300px; | |
| background: var(--dark-bg); | |
| padding: 20px; | |
| border-right: 1px solid rgba(255, 255, 255, 0.1); | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .new-chat-btn { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 8px; | |
| width: 100%; | |
| padding: 12px; | |
| margin-bottom: 20px; | |
| background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); | |
| color: white; | |
| border: none; | |
| border-radius: var(--border-radius); | |
| cursor: pointer; | |
| font-size: 0.95rem; | |
| transition: all 0.3s ease; | |
| } | |
| .new-chat-btn:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(74, 74, 232, 0.3); | |
| } | |
| .chat-list { | |
| flex: 1; | |
| overflow-y: auto; | |
| padding-right: 5px; | |
| } | |
| .chat-item { | |
| padding: 12px; | |
| margin-bottom: 8px; | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| } | |
| .chat-item:hover { | |
| background: rgba(255, 255, 255, 0.1); | |
| } | |
| .chat-item.active { | |
| background: rgba(74, 74, 232, 0.2); | |
| border-left: 3px solid var(--primary-color); | |
| } | |
| .chat-item i { | |
| color: var(--primary-color); | |
| font-size: 1.1rem; | |
| } | |
| .chat-item-content { | |
| flex: 1; | |
| overflow: hidden; | |
| } | |
| .chat-title { | |
| display: block; | |
| font-weight: 500; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| color: white; | |
| } | |
| .chat-date { | |
| display: block; | |
| font-size: 0.75rem; | |
| color: rgba(255, 255, 255, 0.6); | |
| } | |
| .chat-main { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .chat-header { | |
| padding: 20px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .chat-header h3 { | |
| font-size: 1.3rem; | |
| color: var(--light-text); | |
| } | |
| .chat-box { | |
| flex: 1; | |
| padding: 20px; | |
| overflow-y: auto; | |
| background: rgba(0, 0, 0, 0.2); | |
| } | |
| .welcome-message { | |
| text-align: center; | |
| padding: 40px 20px; | |
| max-width: 500px; | |
| margin: 0 auto; | |
| } | |
| .welcome-icon { | |
| width: 80px; | |
| height: 80px; | |
| margin: 0 auto 20px; | |
| background: rgba(74, 74, 232, 0.2); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 2.5rem; | |
| color: var(--primary-color); | |
| } | |
| .welcome-message h4 { | |
| color: rgba(255, 255, 255, 0.7); | |
| margin-bottom: 10px; | |
| font-size: 1.5rem; | |
| } | |
| .welcome-message p { | |
| color: rgba(255, 255, 255, 0.7); | |
| margin-bottom: 20px; | |
| } | |
| .message { | |
| max-width: 70%; | |
| padding: 12px 16px; | |
| margin-bottom: 12px; | |
| border-radius: var(--border-radius); | |
| position: relative; | |
| animation: fadeIn 0.3s ease-out; | |
| } | |
| .user-message { | |
| background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); | |
| color: white; | |
| margin-left: auto; | |
| border-bottom-right-radius: 0; | |
| } | |
| .bot-message { | |
| background: rgba(255, 255, 255, 0.1); | |
| color: var(--light-text); | |
| margin-right: auto; | |
| border-bottom-left-radius: 0; | |
| } | |
| @keyframes fadeIn { | |
| from { opacity: 0; transform: translateY(10px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .chat-controls { | |
| padding: 20px; | |
| border-top: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .input-group { | |
| display: flex; | |
| gap: 10px; | |
| margin-bottom: 15px; | |
| } | |
| .chat-input { | |
| flex: 1; | |
| padding: 12px 16px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: var(--border-radius); | |
| color: var(--light-text); | |
| font-size: 0.95rem; | |
| transition: all 0.3s ease; | |
| } | |
| .chat-input:focus { | |
| outline: none; | |
| border-color: var(--primary-color); | |
| background: rgba(255, 255, 255, 0.15); | |
| } | |
| .send-btn { | |
| width: 50px; | |
| background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); | |
| color: white; | |
| border: none; | |
| border-radius: var(--border-radius); | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| } | |
| .send-btn:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(74, 74, 232, 0.3); | |
| } | |
| .audio-controls { | |
| display: flex; | |
| gap: 15px; | |
| } | |
| .file-upload { | |
| flex: 1; | |
| position: relative; | |
| } | |
| .file-upload-btn { | |
| display: block; | |
| width: 100%; | |
| padding: 12px; | |
| background: rgba(255, 255, 255, 0.1); | |
| color: var(--light-text); | |
| border: 1px dashed rgba(255, 255, 255, 0.3); | |
| border-radius: var(--border-radius); | |
| text-align: center; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| } | |
| .file-upload-btn:hover { | |
| background: rgba(255, 255, 255, 0.15); | |
| border-color: var(--primary-color); | |
| } | |
| .file-upload-btn i { | |
| margin-right: 8px; | |
| } | |
| input[type="file"] { | |
| display: none; | |
| } | |
| .file-info { | |
| display: none; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 10px 15px; | |
| margin-top: 8px; | |
| background: rgba(0, 184, 148, 0.1); | |
| border-radius: var(--border-radius); | |
| color: var(--success-color); | |
| } | |
| .clear-file-btn { | |
| background: none; | |
| border: none; | |
| color: var(--success-color); | |
| cursor: pointer; | |
| } | |
| @keyframes pulse { | |
| 0% { transform: scale(1); } | |
| 50% { transform: scale(1.1); } | |
| 100% { transform: scale(1); } | |
| } | |
| .record-btn.recording { | |
| animation: pulse 1.2s infinite; | |
| box-shadow: 0 0 20px rgba(214, 48, 49, 0.5); | |
| } | |
| .record-controls { | |
| display: flex; | |
| gap: 10px; | |
| } | |
| .record-btn, .stop-btn { | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border: none; | |
| cursor: pointer; | |
| transition: all 0.3s ease, animation 0.3s ease; | |
| } | |
| .record-btn { | |
| background: linear-gradient(135deg, var(--danger-color), #c0392b); | |
| color: white; | |
| } | |
| .stop-btn { | |
| background: rgba(255, 255, 255, 0.1); | |
| color: var(--light-text); | |
| } | |
| .record-btn:hover { | |
| transform: scale(1.05); | |
| box-shadow: 0 4px 12px rgba(214, 48, 49, 0.3); | |
| } | |
| /* Стили для профиля */ | |
| .profile-container { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 30px; | |
| } | |
| .profile-header { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 30px; | |
| margin-bottom: 40px; | |
| } | |
| .user-info { | |
| display: flex; | |
| align-items: center; | |
| gap: 20px; | |
| } | |
| .user-avatar { | |
| width: 80px; | |
| height: 80px; | |
| background: rgba(74, 74, 232, 0.2); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 2.5rem; | |
| color: var(--primary-color); | |
| } | |
| .user-details h2 { | |
| font-size: 1.8rem; | |
| margin-bottom: 5px; | |
| color: white; | |
| } | |
| .user-details p { | |
| color: rgba(255, 255, 255, 0.7); | |
| font-size: 0.95rem; | |
| } | |
| .stats-cards { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 20px; | |
| } | |
| .stat-card { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| padding: 20px; | |
| display: flex; | |
| align-items: center; | |
| gap: 15px; | |
| transition: all 0.3s ease; | |
| } | |
| .stat-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: var(--box-shadow); | |
| } | |
| .stat-icon { | |
| width: 50px; | |
| height: 50px; | |
| background: rgba(74, 74, 232, 0.2); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.5rem; | |
| color: var(--primary-color); | |
| } | |
| .stat-content h3 { | |
| font-size: 0.95rem; | |
| color: rgba(255, 255, 255, 0.7); | |
| margin-bottom: 5px; | |
| } | |
| .stat-content p { | |
| color: white; | |
| } | |
| .stat-value { | |
| font-size: 1.5rem; | |
| font-weight: 600; | |
| } | |
| .section-title { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| margin-bottom: 20px; | |
| font-size: 1.3rem; | |
| color: var(--light-text); | |
| } | |
| .section-title i { | |
| color: var(--primary-color); | |
| } | |
| .reports-list { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); | |
| gap: 20px; | |
| } | |
| .report-card { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| overflow: hidden; | |
| transition: all 0.3s ease; | |
| } | |
| .report-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: var(--box-shadow); | |
| } | |
| .report-header { | |
| padding: 15px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| background: rgba(0, 0, 0, 0.2); | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .report-date { | |
| font-size: 0.8rem; | |
| color: rgba(255, 255, 255, 0.6); | |
| } | |
| .report-emotion { | |
| padding: 5px 10px; | |
| border-radius: 20px; | |
| font-size: 0.8rem; | |
| font-weight: 500; | |
| } | |
| .report-emotion.joy, .report-emotion.happy { | |
| background: rgba(0, 184, 148, 0.2); | |
| color: var(--success-color); | |
| } | |
| .report-emotion.anger, .report-emotion.angry, .report-emotion.sadness, .report-emotion.sad { | |
| background: rgba(214, 48, 49, 0.2); | |
| color: var(--danger-color); | |
| } | |
| .report-emotion.neutral { | |
| background: rgba(253, 203, 110, 0.2); | |
| color: var(--warning-color); | |
| } | |
| .report-content { | |
| padding: 15px; | |
| } | |
| .report-content p { | |
| font-size: 0.95rem; | |
| line-height: 1.6; | |
| color: rgba(255, 255, 255, 0.8); | |
| } | |
| .report-footer { | |
| padding: 15px; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| background: rgba(0, 0, 0, 0.1); | |
| border-top: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .confidence-meter { | |
| flex: 1; | |
| height: 6px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 3px; | |
| overflow: hidden; | |
| } | |
| .confidence-fill { | |
| height: 100%; | |
| background: linear-gradient(90deg, var(--primary-color), var(--primary-dark)); | |
| border-radius: 3px; | |
| } | |
| .confidence-value { | |
| font-size: 0.8rem; | |
| font-weight: 500; | |
| color: var(--primary-color); | |
| } | |
| .empty-state { | |
| text-align: center; | |
| padding: 60px 20px; | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| } | |
| .empty-state i { | |
| font-size: 3rem; | |
| color: var(--primary-color); | |
| margin-bottom: 20px; | |
| } | |
| .empty-state h4 { | |
| font-size: 1.3rem; | |
| margin-bottom: 10px; | |
| } | |
| .empty-state p { | |
| color: rgba(255, 255, 255, 0.6); | |
| margin-bottom: 20px; | |
| } | |
| .btn-primary { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 12px 20px; | |
| background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); | |
| color: white; | |
| border: none; | |
| border-radius: var(--border-radius); | |
| text-decoration: none; | |
| font-weight: 500; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| } | |
| .btn-primary:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(74, 74, 232, 0.3); | |
| } | |
| /* Адаптивность */ | |
| @media (max-width: 992px) { | |
| .app-sidebar { | |
| width: 80px; | |
| padding: 15px 0; | |
| } | |
| .sidebar-header h2 span, | |
| .nav-item span, | |
| .user-info span, | |
| .auth-links { | |
| display: none; | |
| } | |
| .sidebar-header h2 { | |
| justify-content: center; | |
| } | |
| .nav-item { | |
| justify-content: center; | |
| padding: 15px 0; | |
| } | |
| .logout-btn { | |
| padding: 15px 0; | |
| border-radius: 0; | |
| } | |
| .chat-sidebar { | |
| width: 250px; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .chat-container { | |
| flex-direction: column; | |
| height: auto; | |
| } | |
| .chat-sidebar { | |
| width: 100%; | |
| border-right: none; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .stats-cards { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| @media (max-width: 576px) { | |
| .app-main { | |
| padding: 15px; | |
| } | |
| .audio-controls { | |
| flex-direction: column; | |
| } | |
| .record-controls { | |
| justify-content: center; | |
| } | |
| } | |
| .delete-chat-btn { | |
| background: none; | |
| border: none; | |
| color: #999; | |
| cursor: pointer; | |
| padding: 5px; | |
| margin-left: auto; | |
| opacity: 0; | |
| transition: opacity 0.2s; | |
| } | |
| .chat-item:hover .delete-chat-btn { | |
| opacity: 1; | |
| } | |
| .delete-chat-btn:hover { | |
| color: #ff4444; | |
| } | |
| .chat-import-section { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| padding: 20px; | |
| margin-bottom: 30px; | |
| border: 1px dashed rgba(255, 255, 255, 0.1); | |
| transition: all 0.3s ease; | |
| } | |
| .chat-import-section:hover { | |
| border-color: var(--primary-color); | |
| background: rgba(74, 74, 232, 0.05); | |
| } | |
| .import-box { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 15px; | |
| margin-top: 15px; | |
| } | |
| .import-chat-btn { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 10px; | |
| padding: 12px; | |
| background: linear-gradient(135deg, var(--secondary-color), #5d4ae8); | |
| color: white; | |
| border: none; | |
| border-radius: var(--border-radius); | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| } | |
| .import-chat-btn:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(108, 92, 231, 0.3); | |
| } | |
| .hint { | |
| font-size: 0.85rem; | |
| color: rgba(255, 255, 255, 0.6); | |
| text-align: center; | |
| margin-top: 10px; | |
| } | |
| /* Стили для графиков аналитики */ | |
| .analytics-section { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| padding: 25px; | |
| margin-bottom: 30px; | |
| } | |
| .chart-container { | |
| position: relative; | |
| height: 300px; | |
| margin: 20px 0; | |
| } | |
| .emotion-stats { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| grid-auto-rows: minmax(min-content, max-content); | |
| gap: 15px; | |
| margin-top: 25px; | |
| } | |
| .emotion-stat { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| padding: 15px; | |
| transition: all 0.3s ease; | |
| } | |
| .emotion-stat:hover { | |
| transform: translateY(-3px); | |
| box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); | |
| } | |
| .emotion-label { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-weight: 500; | |
| margin-bottom: 10px; | |
| font-size: 0.95rem; | |
| } | |
| .emotion-count { | |
| font-size: 0.85rem; | |
| color: rgba(255, 255, 255, 0.7); | |
| margin-bottom: 8px; | |
| } | |
| .confidence-bar { | |
| height: 6px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 3px; | |
| margin: 10px 0; | |
| overflow: hidden; | |
| } | |
| .confidence-fill { | |
| height: 100%; | |
| border-radius: 3px; | |
| } | |
| .confidence-value { | |
| font-size: 0.8rem; | |
| text-align: right; | |
| color: rgba(255, 255, 255, 0.7); | |
| } | |
| /* Цвета для разных эмоций */ | |
| .emotion-stat[data-emotion="joy"] .confidence-fill, | |
| .emotion-stat[data-emotion="happy"] .confidence-fill { | |
| background: linear-gradient(90deg, #00b894, #00cec9); | |
| } | |
| .emotion-stat[data-emotion="sadness"] .confidence-fill, | |
| .emotion-stat[data-emotion="sad"] .confidence-fill { | |
| background: linear-gradient(90deg, #0984e3, #6c5ce7); | |
| } | |
| .emotion-stat[data-emotion="anger"] .confidence-fill, | |
| .emotion-stat[data-emotion="angry"] .confidence-fill { | |
| background: linear-gradient(90deg, #d63031, #e17055); | |
| } | |
| .emotion-stat[data-emotion="neutral"] .confidence-fill { | |
| background: linear-gradient(90deg, #636e72, #b2bec3); | |
| } | |
| .emotion-stat[data-emotion="surprise"] .confidence-fill { | |
| background: linear-gradient(90deg, #fdcb6e, #e17055); | |
| } | |
| /* Стили для боковой панели чатов */ | |
| .import-chat-sidebar { | |
| padding: 15px; | |
| margin: 10px 0; | |
| background: rgba(74, 74, 232, 0.1); | |
| border-radius: var(--border-radius); | |
| text-align: center; | |
| } | |
| .import-chat-sidebar label { | |
| display: block; | |
| padding: 10px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: var(--border-radius); | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| font-size: 0.9rem; | |
| } | |
| .import-chat-sidebar label:hover { | |
| background: rgba(74, 74, 232, 0.2); | |
| } | |
| /* Адаптивные стили */ | |
| @media (max-width: 768px) { | |
| .emotion-stats { | |
| grid-template-columns: 1fr; | |
| } | |
| .chart-container { | |
| height: 250px; | |
| } | |
| } | |
| @media (max-width: 576px) { | |
| .analytics-section, | |
| .chat-import-section { | |
| padding: 15px; | |
| } | |
| .import-chat-btn { | |
| padding: 10px; | |
| font-size: 0.9rem; | |
| } | |
| } | |
| /* Telegram Analysis Styles */ | |
| .telegram-analysis-section .section-title, | |
| .telegram-analysis-section h4 { | |
| color: var(--light-text) ; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| padding-bottom: 10px; | |
| margin-bottom: 20px; | |
| } | |
| .telegram-analysis-section { | |
| margin-top: 40px; | |
| padding: 25px; | |
| background: rgba(255, 255, 255, 0.03); | |
| border-radius: var(--border-radius); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| #emotion-distribution { | |
| background: rgba(255,255,255,0.05); | |
| border-radius: var(--border-radius); | |
| padding: 15px; | |
| margin-top: 15px; | |
| max-height: 400px; /* Фиксированная высота */ | |
| overflow-y: auto; /* Скролл при переполнении */ | |
| } | |
| .emotion-stat { | |
| background: rgba(255,255,255,0.03); | |
| border-radius: 8px; | |
| padding: 12px; | |
| margin: 8px 0; | |
| border-left: 4px solid transparent; | |
| transition: all 0.3s ease; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| } | |
| .emotion-label { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 0.95rem; | |
| color: var(--light-text); | |
| } | |
| .emotion-label i { | |
| font-size: 1.2rem ; /* Увеличиваем иконки */ | |
| width: 25px; /* Фиксированная ширина */ | |
| color: inherit ; /* Цвет из JS */ | |
| } | |
| .confidence-bar { | |
| height: 6px; | |
| background: rgba(255,255,255,0.1); | |
| border-radius: 3px; | |
| } | |
| .confidence-value { | |
| text-align: right; | |
| font-size: 0.85rem; | |
| color: rgba(255,255,255,0.8); | |
| } | |
| .chart-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 20px; | |
| flex-wrap: wrap; | |
| gap: 15px; | |
| } | |
| .time-filter { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| .time-btn { | |
| padding: 6px 12px; | |
| background: rgba(255, 255, 255, 0.05); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: 20px; | |
| color: rgba(255, 255, 255, 0.7); | |
| cursor: pointer; | |
| font-size: 0.85rem; | |
| transition: all 0.3s ease; | |
| } | |
| .time-btn:hover { | |
| background: rgba(255, 255, 255, 0.1); | |
| } | |
| .time-btn.active { | |
| background: rgba(74, 74, 232, 0.3); | |
| border-color: var(--primary-color); | |
| color: white; | |
| } | |
| .chart-row { | |
| gap: 20px; | |
| margin-top: 25px; | |
| } | |
| .chart-col { | |
| background: rgba(255, 255, 255, 0.03); | |
| padding: 20px; | |
| border-radius: var(--border-radius); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .chart-col h4 { | |
| margin-bottom: 15px; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| @media (max-width: 768px) { | |
| .chart-row { | |
| flex-direction: column; | |
| } | |
| .chart-col { | |
| width: 100%; | |
| } | |
| } | |
| .clear-file-btn { | |
| background: none; | |
| border: none; | |
| color: rgba(255, 255, 255, 0.6); | |
| cursor: pointer; | |
| padding: 0 5px; | |
| } | |
| .clear-file-btn:hover { | |
| color: var(--danger-color); | |
| } | |
| #emotion-timeline { | |
| height: 400px; | |
| margin: 20px 0; | |
| background: rgba(0, 0, 0, 0.2); | |
| border-radius: var(--border-radius); | |
| } | |
| .emotion-stat { | |
| background: rgba(255, 255, 255, 0.05); | |
| padding: 15px; | |
| margin: 10px 0; | |
| border-radius: var(--border-radius); | |
| transition: transform 0.3s ease; | |
| } | |
| .emotion-stat:hover { | |
| transform: translateY(-3px); | |
| } | |
| .emotion-label { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 0.95rem; | |
| margin-bottom: 8px; | |
| } | |
| .confidence-bar { | |
| height: 6px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 3px; | |
| margin: 10px 0; | |
| } | |
| .confidence-fill { | |
| height: 100%; | |
| border-radius: 3px; | |
| transition: width 0.5s ease; | |
| } | |
| .file-info { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 8px; | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| } | |
| #selected-file-name { | |
| font-size: 0.9rem; | |
| max-width: 250px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .message-preview-panel { | |
| position: fixed; | |
| right: 20px; | |
| top: 100px; | |
| width: 300px; | |
| background: #1e1e2f; | |
| padding: 15px; | |
| border-radius: 8px; | |
| color: white; | |
| z-index: 100; | |
| box-shadow: 0 0 10px rgba(0,0,0,0.5); | |
| } | |
| .analysis-summary { | |
| margin-top: 20px; | |
| padding: 15px; | |
| background: #2c2c3e; | |
| border-radius: 8px; | |
| } | |
| .user-filter { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| margin-bottom: 10px; | |
| } | |
| /* Auth Styles */ | |
| .auth-container { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| min-height: 100vh; | |
| background: linear-gradient(135deg, var(--darker-bg), var(--dark-bg)); | |
| padding: 20px; | |
| } | |
| .auth-card { | |
| width: 100%; | |
| max-width: 450px; | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| overflow: hidden; | |
| box-shadow: var(--box-shadow); | |
| backdrop-filter: blur(10px); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .auth-header { | |
| padding: 25px; | |
| background: rgba(74, 74, 232, 0.1); | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| text-align: center; | |
| } | |
| .auth-header h3 { | |
| color: var(--light-text); | |
| font-size: 1.5rem; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 10px; | |
| } | |
| .auth-body { | |
| padding: 25px; | |
| } | |
| .form-group { | |
| margin-bottom: 20px; | |
| } | |
| .form-label { | |
| display: block; | |
| margin-bottom: 8px; | |
| color: rgba(255, 255, 255, 0.8); | |
| font-size: 0.95rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .form-input { | |
| width: 100%; | |
| padding: 12px 15px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: var(--border-radius); | |
| color: var(--light-text); | |
| font-size: 0.95rem; | |
| transition: all 0.3s ease; | |
| } | |
| .form-input:focus { | |
| outline: none; | |
| border-color: var(--primary-color); | |
| background: rgba(255, 255, 255, 0.15); | |
| box-shadow: 0 0 0 3px rgba(74, 74, 232, 0.2); | |
| } | |
| .form-error { | |
| color: var(--danger-color); | |
| font-size: 0.85rem; | |
| margin-top: 5px; | |
| } | |
| .btn-auth { | |
| width: 100%; | |
| padding: 14px; | |
| background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); | |
| color: white; | |
| border: none; | |
| border-radius: var(--border-radius); | |
| font-size: 1rem; | |
| font-weight: 500; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 10px; | |
| } | |
| .btn-auth:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 15px rgba(74, 74, 232, 0.4); | |
| } | |
| .auth-footer { | |
| text-align: center; | |
| margin-top: 20px; | |
| color: rgba(255, 255, 255, 0.7); | |
| font-size: 0.95rem; | |
| } | |
| .auth-link { | |
| color: var(--primary-color); | |
| text-decoration: none; | |
| transition: all 0.3s ease; | |
| } | |
| .auth-link:hover { | |
| color: var(--secondary-color); | |
| text-decoration: underline; | |
| } | |
| /* Responsive */ | |
| @media (max-width: 576px) { | |
| .auth-card { | |
| border-radius: 0; | |
| border: none; | |
| } | |
| .auth-container { | |
| padding: 0; | |
| align-items: flex-start; | |
| } | |
| } | |
| .analysis-result-card { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| padding: 15px; | |
| margin-top: 10px; | |
| border-left: 4px solid transparent; | |
| transition: transform 0.3s ease; | |
| } | |
| .analysis-result-card:hover { | |
| transform: translateY(-5px); | |
| } | |
| .analysis-result-card.joy { | |
| border-color: var(--success-color); | |
| } | |
| .analysis-result-card.anger { | |
| border-color: var(--danger-color); | |
| } | |
| .analysis-result-card.sadness { | |
| border-color: var(--info-color); | |
| } | |
| .analysis-result-card.neutral { | |
| border-color: var(--warning-color); | |
| } | |
| .analysis-result-card.fear { | |
| border-color: #a29bfe; | |
| } | |
| .analysis-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 10px; | |
| } | |
| .emotion-label { | |
| font-size: 1.1rem; | |
| font-weight: 600; | |
| } | |
| .confidence-bar-container { | |
| height: 8px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 4px; | |
| overflow: hidden; | |
| } | |
| .confidence-bar { | |
| height: 100%; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 4px; | |
| overflow: hidden; | |
| } | |
| .confidence-fill { | |
| height: 100%; | |
| transition: width 0.5s ease; | |
| } | |
| .confidence-fill[joy] { | |
| background: linear-gradient(90deg, #00b894, #00cec9); | |
| } | |
| .confidence-fill[anger] { | |
| background: linear-gradient(90deg, #d63031, #e17055); | |
| } | |
| .confidence-fill[sadness] { | |
| background: linear-gradient(90deg, #0984e3, #6c5ce7); | |
| } | |
| .confidence-fill[neutral] { | |
| background: linear-gradient(90deg, #fdcb6e, #ffeaa7); | |
| } | |
| .confidence-fill[fear] { | |
| background: linear-gradient(90deg, #a29bfe, #6c5ce7); | |
| } | |
| .confidence-percent { | |
| margin-top: 8px; | |
| font-size: 0.85rem; | |
| color: rgba(255, 255, 255, 0.7); | |
| } | |
| /* Admin Styles */ | |
| .admin-container { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 2rem; | |
| } | |
| .admin-stats { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| margin: 2rem 0; | |
| } | |
| .stat-card { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--border-radius); | |
| padding: 1.5rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| transition: transform 0.3s ease; | |
| } | |
| .stat-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); | |
| } | |
| .stat-icon { | |
| width: 50px; | |
| height: 50px; | |
| background: rgba(74, 74, 232, 0.2); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.5rem; | |
| color: var(--primary-color); | |
| } | |
| .stat-content h3 { | |
| font-size: 1rem; | |
| color: rgba(255, 255, 255, 0.7); | |
| margin-bottom: 0.5rem; | |
| } | |
| .stat-value { | |
| font-size: 1.8rem; | |
| font-weight: 600; | |
| color: white; | |
| } | |
| .stat-change { | |
| font-size: 0.8rem; | |
| color: var(--success-color); | |
| } | |
| .btn-admin { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| padding: 1rem 1.5rem; | |
| background: rgba(74, 74, 232, 0.2); | |
| border: 1px solid var(--primary-color); | |
| border-radius: var(--border-radius); | |
| color: white; | |
| text-decoration: none; | |
| margin-right: 1rem; | |
| margin-bottom: 1rem; | |
| transition: all 0.3s ease; | |
| } | |
| .btn-admin:hover { | |
| background: rgba(74, 74, 232, 0.4); | |
| transform: translateY(-2px); | |
| } | |
| /* Таблицы в админке */ | |
| .admin-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| margin: 1.5rem 0; | |
| } | |
| .admin-table th, .admin-table td { | |
| padding: 1rem; | |
| text-align: left; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .admin-table th { | |
| background: rgba(74, 74, 232, 0.2); | |
| color: var(--primary-color); | |
| } | |
| .admin-table tr:hover { | |
| background: rgba(255, 255, 255, 0.03); | |
| } | |
| .admin-actions { | |
| margin: 2rem 0; | |
| } |