Spaces:
Running
Running
| /* Custom styles for AI Assistant */ | |
| /* Smooth transitions */ | |
| * { | |
| transition: background-color 0.3s, color 0.3s, border-color 0.3s; | |
| } | |
| /* Conversation bubbles */ | |
| .user-message { | |
| background-color: #e3f2fd; | |
| border-radius: 1rem 1rem 0.25rem 1rem; | |
| padding: 0.75rem 1rem; | |
| margin-left: 1rem; | |
| position: relative; | |
| max-width: 80%; | |
| align-self: flex-end; | |
| box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); | |
| } | |
| .ai-message { | |
| background-color: #f1f5f9; | |
| border-radius: 1rem 1rem 1rem 0.25rem; | |
| padding: 0.75rem 1rem; | |
| margin-right: 1rem; | |
| position: relative; | |
| max-width: 80%; | |
| align-self: flex-start; | |
| box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); | |
| } | |
| /* Status indicator animations */ | |
| @keyframes pulse { | |
| 0% { | |
| transform: scale(1); | |
| opacity: 1; | |
| } | |
| 50% { | |
| transform: scale(1.2); | |
| opacity: 0.7; | |
| } | |
| 100% { | |
| transform: scale(1); | |
| opacity: 1; | |
| } | |
| } | |
| /* Pulse animations */ | |
| @keyframes pulse-green { | |
| 0% { | |
| box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4); | |
| } | |
| 70% { | |
| box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); | |
| } | |
| 100% { | |
| box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); | |
| } | |
| } | |
| @keyframes pulse-blue { | |
| 0% { | |
| box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4); | |
| } | |
| 70% { | |
| box-shadow: 0 0 0 10px rgba(59, 130, 246, 0); | |
| } | |
| 100% { | |
| box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); | |
| } | |
| } | |
| @keyframes pulse-yellow { | |
| 0% { | |
| box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.4); | |
| } | |
| 70% { | |
| box-shadow: 0 0 0 10px rgba(245, 158, 11, 0); | |
| } | |
| 100% { | |
| box-shadow: 0 0 0 0 rgba(245, 158, 11, 0); | |
| } | |
| } | |
| @keyframes pulse-red { | |
| 0% { | |
| box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.4); | |
| } | |
| 70% { | |
| box-shadow: 0 0 0 10px rgba(239, 68, 68, 0); | |
| } | |
| 100% { | |
| box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); | |
| } | |
| } | |
| @keyframes pulse-purple { | |
| 0% { | |
| box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.4); | |
| } | |
| 70% { | |
| box-shadow: 0 0 0 10px rgba(139, 92, 246, 0); | |
| } | |
| 100% { | |
| box-shadow: 0 0 0 0 rgba(139, 92, 246, 0); | |
| } | |
| } | |
| @keyframes pulse-pink { | |
| 0% { | |
| box-shadow: 0 0 0 0 rgba(236, 72, 153, 0.4); | |
| } | |
| 70% { | |
| box-shadow: 0 0 0 10px rgba(236, 72, 153, 0); | |
| } | |
| 100% { | |
| box-shadow: 0 0 0 0 rgba(236, 72, 153, 0); | |
| } | |
| } | |
| @keyframes pulse-gray { | |
| 0% { | |
| box-shadow: 0 0 0 0 rgba(107, 114, 128, 0.4); | |
| } | |
| 70% { | |
| box-shadow: 0 0 0 10px rgba(107, 114, 128, 0); | |
| } | |
| 100% { | |
| box-shadow: 0 0 0 0 rgba(107, 114, 128, 0); | |
| } | |
| } | |
| .status-ready { | |
| background-color: #6b7280; | |
| box-shadow: 0 0 0 rgba(107, 114, 128, 0.4); | |
| } | |
| .status-starting { | |
| background-color: #8b5cf6; | |
| box-shadow: 0 0 0 rgba(139, 92, 246, 0.4); | |
| animation: pulse-purple 1.5s infinite; | |
| } | |
| .status-stopping { | |
| background-color: #6b7280; | |
| box-shadow: 0 0 0 rgba(107, 114, 128, 0.4); | |
| animation: pulse-gray 1.5s infinite; | |
| } | |
| .status-active { | |
| background-color: #10b981; /* Green */ | |
| box-shadow: 0 0 0 rgba(16, 185, 129, 0.4); | |
| animation: pulse-green 2s infinite; | |
| } | |
| .status-listening { | |
| background-color: #3b82f6; /* Blue */ | |
| box-shadow: 0 0 0 rgba(59, 130, 246, 0.4); | |
| animation: pulse-blue 2s infinite; | |
| } | |
| .status-processing { | |
| background-color: #f59e0b; /* Yellow */ | |
| box-shadow: 0 0 0 rgba(245, 158, 11, 0.4); | |
| animation: pulse-yellow 2s infinite; | |
| } | |
| .status-speaking { | |
| background-color: #ec4899; | |
| box-shadow: 0 0 0 rgba(236, 72, 153, 0.4); | |
| animation: pulse-pink 1s infinite; | |
| } | |
| .status-error { | |
| background-color: #ef4444; /* Red */ | |
| box-shadow: 0 0 0 rgba(239, 68, 68, 0.4); | |
| animation: pulse-red 2s infinite; | |
| } | |
| /* Image gallery */ | |
| .image-container { | |
| position: relative; | |
| overflow: hidden; | |
| border-radius: 0.5rem; | |
| aspect-ratio: 1/1; | |
| cursor: pointer; /* Add pointer cursor to indicate clickable */ | |
| } | |
| .image-container img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| transition: transform 0.3s; | |
| } | |
| .image-container:hover img { | |
| transform: scale(1.05); | |
| } | |
| /* Image popup styles */ | |
| #image-popup-overlay { | |
| animation: fadeIn 0.3s ease-out; | |
| } | |
| #image-popup-overlay img { | |
| animation: zoomIn 0.3s ease-out; | |
| } | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0; | |
| } | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| @keyframes zoomIn { | |
| from { | |
| transform: scale(0.8); | |
| opacity: 0; | |
| } | |
| to { | |
| transform: scale(1); | |
| opacity: 1; | |
| } | |
| } | |
| /* Emotion styles */ | |
| .emotion-happy { | |
| color: #f59e0b; /* Amber */ | |
| } | |
| .emotion-sad { | |
| color: #3b82f6; /* Blue */ | |
| } | |
| .emotion-angry { | |
| color: #ef4444; /* Red */ | |
| } | |
| .emotion-fear { | |
| color: #8b5cf6; /* Purple */ | |
| } | |
| .emotion-surprise { | |
| color: #10b981; /* Green */ | |
| } | |
| .emotion-disgust { | |
| color: #6b7280; /* Gray */ | |
| } | |
| .emotion-neutral { | |
| color: #6b7280; /* Gray */ | |
| } | |
| /* Loading spinner */ | |
| .loading-spinner { | |
| display: inline-block; | |
| width: 1.5rem; | |
| height: 1.5rem; | |
| border: 3px solid rgba(255, 255, 255, 0.3); | |
| border-radius: 50%; | |
| border-top-color: #fff; | |
| animation: spin 1s ease-in-out infinite; | |
| } | |
| @keyframes spin { | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| /* Responsive adjustments */ | |
| @media (max-width: 768px) { | |
| .user-message, | |
| .ai-message { | |
| max-width: 90%; | |
| } | |
| } | |
| /* Conversation container */ | |
| #conversation { | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| #conversation > div { | |
| margin-bottom: 0.75rem; | |
| } | |
| /* Voice animation */ | |
| .voice-animation { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.25rem; | |
| } | |
| .voice-bar { | |
| width: 0.25rem; | |
| height: 1rem; | |
| background-color: #3b82f6; | |
| border-radius: 0.125rem; | |
| animation: voice-wave 1s infinite; | |
| } | |
| .voice-bar:nth-child(2) { | |
| animation-delay: 0.2s; | |
| } | |
| .voice-bar:nth-child(3) { | |
| animation-delay: 0.4s; | |
| } | |
| .voice-bar:nth-child(4) { | |
| animation-delay: 0.6s; | |
| } | |
| @keyframes voice-wave { | |
| 0% { | |
| height: 0.5rem; | |
| } | |
| 50% { | |
| height: 1.5rem; | |
| } | |
| 100% { | |
| height: 0.5rem; | |
| } | |
| } | |
| /* Audio controls */ | |
| #audio-progress { | |
| cursor: pointer; | |
| transition: height 0.2s; | |
| } | |
| #audio-progress:hover { | |
| height: 4px; | |
| } | |
| #audio-progress-bar { | |
| transition: width 0.1s linear; | |
| } | |
| #play-btn, | |
| #pause-btn { | |
| transition: transform 0.2s, background-color 0.2s; | |
| } | |
| #play-btn:hover, | |
| #pause-btn:hover { | |
| transform: scale(1.1); | |
| } | |
| #play-btn:active, | |
| #pause-btn:active { | |
| transform: scale(0.95); | |
| } | |