msse-ai-engineering / static /chat-enhanced.css
Seth McKnight
Enhance deployment pipeline and modern chat interface (#53)
74e758d
/* Enhanced Chat Interface Styles */
/* Message timestamp styles */
.message-header {
display: flex;
justify-content: space-between;
padding: 0 1rem 0.5rem 1rem;
font-size: 0.8rem;
color: #64748b;
}
.sender-label {
font-weight: 500;
}
.message-timestamp {
font-size: 0.75rem;
color: #94a3b8;
}
.message-user .message-header {
text-align: right;
}
.message-assistant .message-header {
text-align: left;
}
/* Accessibility Improvements */
.message:focus {
outline: 2px solid #667eea;
border-radius: 8px;
}
.side-panel:focus {
outline: 2px solid #667eea;
}
button:focus-visible,
textarea:focus-visible,
input:focus-visible,
.clickable:focus-visible {
outline: 2px solid #667eea;
outline-offset: 2px;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
/* Mobile Experience Optimization */
@media (max-width: 768px) {
/* Adjustments for smaller screens */
.message-header {
padding: 0 0.5rem 0.25rem 0.5rem;
font-size: 0.75rem;
}
/* Mobile swipe gestures */
.chat-container {
position: relative;
touch-action: pan-y;
}
/* Improved touch targets for mobile */
.feedback-btn, .icon-button, .primary-button {
min-height: 44px;
min-width: 44px;
}
}
/* Mobile swipe indicator */
.swipe-indicator {
position: absolute;
top: 50%;
right: -5px;
width: 30px;
height: 50px;
background: rgba(102, 126, 234, 0.2);
border-top-left-radius: 25px;
border-bottom-left-radius: 25px;
display: none;
justify-content: center;
align-items: center;
z-index: 90;
opacity: 0.7;
box-shadow: -1px 0 3px rgba(0, 0, 0, 0.1);
animation: pulse 2s infinite;
}
/* Only show swipe indicator on smaller screens */
@media (max-width: 768px) {
.swipe-indicator {
display: flex;
}
}
.swipe-indicator svg {
width: 16px;
height: 16px;
stroke: #667eea;
}
/* Conversation export/import */
.export-import-buttons {
display: flex;
gap: 0.5rem;
padding-bottom: 0.5rem;
border-bottom: 1px solid #e2e8f0;
}
.search-conversations {
margin-top: 0.5rem;
margin-bottom: 0.5rem;
}
.search-input {
width: 100%;
padding: 0.75rem;
border: 1px solid #e2e8f0;
border-radius: 8px;
font-size: 0.875rem;
}
.search-input:focus {
border-color: #667eea;
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
outline: none;
}
/* Improved error handling */
.retry-button {
background: #f8fafc;
border: 1px solid #ef4444;
color: #ef4444;
border-radius: 8px;
padding: 0.5rem 0.75rem;
font-size: 0.875rem;
margin-top: 0.5rem;
cursor: pointer;
transition: all 0.2s;
display: inline-flex;
align-items: center;
gap: 0.5rem;
}
.retry-button:hover {
background: #fef2f2;
}
.error-details {
background: #fef2f2;
padding: 0.5rem;
border-radius: 6px;
margin-top: 0.5rem;
font-size: 0.8rem;
color: #b91c1c;
max-height: 100px;
overflow-y: auto;
}
/* File upload for import */
.file-upload {
display: none;
}
.file-upload-label {
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 8px;
padding: 0.5rem 0.75rem;
font-size: 0.875rem;
color: #1e293b;
transition: all 0.2s;
}
.file-upload-label:hover {
background: #f1f5f9;
border-color: #cbd5e1;
}
/* Auto-retry status */
.auto-retry-status {
font-size: 0.8rem;
color: #f59e0b;
margin-top: 0.5rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.retry-countdown {
font-weight: 600;
}