0xarchit's picture
Initial commit
25e6afd
/* 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);
}