/* 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; }