/** * Enhanced DocStrange UI Styles * Side-by-side preview, format tabs, batch upload, history */ /* ===== FILE UPLOAD ENHANCEMENTS ===== */ .file-list { margin: 16px 0; max-height: 300px; overflow-y: auto; } .file-item { display: flex; align-items: center; padding: 12px; margin: 8px 0; background: #f8f9fa; border-radius: 8px; border: 1px solid #e5e7eb; transition: all 0.2s; } .file-item:hover { background: #f1f5ff; border-color: #6366f1; } .file-icon { font-size: 24px; margin-right: 12px; } .file-info { flex: 1; } .file-name { font-weight: 500; color: #1f2937; font-size: 14px; } .file-size { font-size: 12px; color: #6b7280; margin-top: 2px; } .btn-remove { background: #ef4444; color: white; border: none; border-radius: 50%; width: 24px; height: 24px; font-size: 16px; cursor: pointer; transition: all 0.2s; } .btn-remove:hover { background: #dc2626; transform: scale(1.1); } /* ===== FILE PREVIEW PANEL ===== */ .file-preview-panel { background: white; border: 1px solid #e5e7eb; border-radius: 8px; padding: 16px; margin: 16px 0; display: none; } .file-preview-panel.active { display: block; } .file-preview-content { margin-top: 12px; max-height: 400px; overflow: auto; } .pdf-preview { text-align: center; padding: 32px; } .pdf-icon { font-size: 64px; margin-bottom: 16px; } .pdf-name { font-weight: 500; color: #1f2937; margin-bottom: 8px; } .pdf-size { color: #6b7280; font-size: 14px; } /* ===== FORMAT TABS ===== */ .format-tabs { display: flex; gap: 8px; margin: 16px 0; border-bottom: 2px solid #e5e7eb; padding-bottom: 8px; } .format-tab { padding: 8px 16px; background: white; border: 1px solid #e5e7eb; border-radius: 6px 6px 0 0; cursor: pointer; font-size: 14px; font-weight: 500; color: #6b7280; transition: all 0.2s; } .format-tab:hover { background: #f1f5ff; color: #6366f1; } .format-tab.active { background: #6366f1; color: white; border-color: #6366f1; } /* ===== SIDE-BY-SIDE PREVIEW ===== */ .preview-container { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 16px 0; } .preview-pane { background: white; border: 1px solid #e5e7eb; border-radius: 8px; overflow: hidden; } .preview-header { background: #f8f9fa; padding: 12px 16px; border-bottom: 1px solid #e5e7eb; font-weight: 500; color: #1f2937; } .preview-content { padding: 16px; max-height: 600px; overflow: auto; } /* ===== METADATA DISPLAY ===== */ .metadata-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin: 16px 0; } .meta-item { background: #f8f9fa; padding: 12px; border-radius: 6px; border: 1px solid #e5e7eb; } .meta-label { font-size: 12px; color: #6b7280; margin-bottom: 4px; } .meta-value { font-weight: 500; color: #1f2937; font-size: 14px; } /* ===== EXTRACTION PROGRESS ===== */ .extraction-progress { display: none; text-align: center; padding: 32px; } .extraction-progress.active { display: block; } .spinner { border: 3px solid #f3f3f3; border-top: 3px solid #6366f1; border-radius: 50%; width: 40px; height: 40px; animation: spin 1s linear infinite; margin: 0 auto 16px; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* ===== BATCH PROCESSING ===== */ .batch-progress { display: none; background: white; border: 1px solid #e5e7eb; border-radius: 8px; padding: 24px; margin: 16px 0; } .batch-progress.active { display: block; } .batch-progress-bar { background: #e5e7eb; border-radius: 4px; height: 8px; margin: 16px 0; overflow: hidden; } .batch-progress-fill { background: linear-gradient(90deg, #6366f1, #8b5cf6); height: 100%; transition: width 0.3s; } .batch-file-list { margin: 16px 0; max-height: 300px; overflow-y: auto; } .batch-file-item { display: flex; align-items: center; padding: 8px 12px; margin: 4px 0; background: #f8f9fa; border-radius: 4px; font-size: 14px; } .batch-file-item.status-success { border-left: 3px solid #10b981; } .batch-file-item.status-error { border-left: 3px solid #ef4444; } .batch-file-item.status-processing { border-left: 3px solid #f59e0b; animation: pulse 1.5s infinite; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } /* ===== EXTRACTION HISTORY ===== */ .history-panel { background: white; border: 1px solid #e5e7eb; border-radius: 8px; padding: 16px; margin: 16px 0; max-height: 400px; overflow-y: auto; } .history-item { display: flex; align-items: center; padding: 12px; margin: 8px 0; background: #f8f9fa; border-radius: 6px; border: 1px solid #e5e7eb; cursor: pointer; transition: all 0.2s; } .history-item:hover { background: #f1f5ff; border-color: #6366f1; } .history-icon { font-size: 20px; margin-right: 12px; } .history-info { flex: 1; } .history-name { font-weight: 500; color: #1f2937; font-size: 14px; } .history-meta { font-size: 12px; color: #6b7280; margin-top: 2px; } .history-status { font-size: 12px; font-weight: 500; padding: 4px 8px; border-radius: 4px; } .history-status.status-success { background: #d1fae5; color: #065f46; } .history-status.status-error { background: #fee2e2; color: #991b1b; } /* ===== ERROR DISPLAY ===== */ .error-panel { display: none; background: #fee2e2; border: 1px solid #ef4444; border-radius: 8px; padding: 16px; margin: 16px 0; } .error-panel.active { display: block; } .error-content { display: flex; align-items: center; gap: 12px; } .error-icon { font-size: 24px; } .error-message { flex: 1; color: #991b1b; font-weight: 500; } /* ===== EXPORT BUTTONS ===== */ .export-buttons { display: flex; gap: 8px; margin: 16px 0; } .export-btn { padding: 8px 16px; background: white; border: 1px solid #e5e7eb; border-radius: 6px; cursor: pointer; font-size: 14px; font-weight: 500; color: #6b7280; transition: all 0.2s; } .export-btn:hover { background: #f1f5ff; color: #6366f1; border-color: #6366f1; } /* ===== API USAGE DASHBOARD ===== */ .api-usage-panel { background: white; border: 1px solid #e5e7eb; border-radius: 8px; padding: 16px; margin: 16px 0; } .api-usage-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; } .api-usage-title { font-weight: 500; color: #1f2937; font-size: 16px; } .api-usage-stat { font-size: 24px; font-weight: 600; color: #6366f1; } .api-usage-bar { background: #e5e7eb; border-radius: 4px; height: 8px; margin: 12px 0; overflow: hidden; } .api-usage-fill { background: linear-gradient(90deg, #10b981, #059669); height: 100%; transition: width 0.3s; } .api-usage-details { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 12px; } .api-usage-detail { text-align: center; } .api-usage-detail-value { font-weight: 600; color: #1f2937; font-size: 18px; } .api-usage-detail-label { font-size: 12px; color: #6b7280; margin-top: 4px; } /* ===== RESPONSIVE DESIGN ===== */ @media (max-width: 1200px) { .preview-container { grid-template-columns: 1fr; } .metadata-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 768px) { .format-tabs { flex-wrap: wrap; } .metadata-grid { grid-template-columns: 1fr; } .api-usage-details { grid-template-columns: 1fr; } }