/* Version Comparison Tool Styles */ .version-comparison-tool { background: #fff; border: 1px solid #e5e7eb; border-radius: 0.5rem; overflow: hidden; } /* Header Styles */ .comparison-header { padding: 1rem; border-bottom: 1px solid #e5e7eb; background: #f9fafb; } .comparison-header h3 { margin: 0 0 1rem 0; font-size: 1.125rem; font-weight: 600; color: #111827; } .selected-versions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem; } .selected-version { display: flex; align-items: center; gap: 0.5rem; padding: 0.375rem 0.75rem; background: #f3f4f6; border-radius: 0.375rem; font-size: 0.875rem; } .version-label { font-weight: 500; color: #374151; } .version-value { color: #4b5563; } .remove-version { border: none; background: none; color: #6b7280; cursor: pointer; padding: 0.125rem 0.25rem; font-size: 1rem; line-height: 1; } .remove-version:hover { color: #ef4444; } /* Timeline Styles */ .version-timeline { position: relative; padding: 2rem 1rem; overflow-x: auto; cursor: grab; user-select: none; } .version-timeline.active { cursor: grabbing; } .timeline-track { position: relative; height: 2px; background: #e5e7eb; margin: 0 2rem; } .timeline-point { position: absolute; top: 50%; transform: translate(-50%, -50%); cursor: pointer; } .timeline-point::before { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 12px; height: 12px; background: #fff; border: 2px solid #6b7280; border-radius: 50%; transition: all 0.2s; } .timeline-point.selected::before { background: #3b82f6; border-color: #3b82f6; } .impact-indicator { position: absolute; top: -24px; left: 50%; transform: translateX(-50%); border-radius: 50%; background: rgba(59, 130, 246, 0.1); border: 2px solid rgba(59, 130, 246, 0.2); transition: all 0.2s; } .timeline-labels { display: flex; position: absolute; bottom: 0.5rem; left: 0; right: 0; padding: 0 2rem; } .timeline-label { position: absolute; transform: translateX(-50%); text-align: center; min-width: 100px; } .version-name { font-weight: 500; font-size: 0.875rem; color: #374151; margin-bottom: 0.25rem; } .version-date { font-size: 0.75rem; color: #6b7280; } /* Comparison Actions */ .comparison-actions { display: flex; gap: 0.75rem; } .compare-button, .rollback-button { padding: 0.5rem 1rem; border-radius: 0.375rem; font-size: 0.875rem; font-weight: 500; cursor: pointer; transition: all 0.2s; } .compare-button { background-color: #3b82f6; color: white; } .compare-button:hover { background-color: #2563eb; } .rollback-button { background-color: #6b7280; color: white; } .rollback-button:hover { background-color: #4b5563; } /* Comparison Results */ .comparison-content { padding: 1rem; } .comparison-placeholder { text-align: center; padding: 2rem; color: #6b7280; font-size: 0.875rem; } .results-loading { text-align: center; padding: 2rem; color: #6b7280; } .diff-section { border: 1px solid #e5e7eb; border-radius: 0.375rem; margin-bottom: 1rem; overflow: hidden; } .diff-header { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 1rem; background: #f9fafb; border-bottom: 1px solid #e5e7eb; } .diff-header h4 { margin: 0; font-size: 0.875rem; font-weight: 600; color: #374151; } .diff-stats { display: flex; gap: 1rem; font-size: 0.75rem; color: #6b7280; } .change-item { padding: 1rem; border-bottom: 1px solid #e5e7eb; } .change-item:last-child { border-bottom: none; } .change-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; } .change-type { padding: 0.25rem 0.5rem; background: #f3f4f6; border-radius: 0.25rem; font-size: 0.75rem; font-weight: 500; color: #374151; } .change-file { font-family: ui-monospace, monospace; font-size: 0.875rem; color: #4b5563; } .change-content { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; } .old-value, .new-value { background: #f9fafb; border-radius: 0.375rem; overflow: hidden; } .value-header { padding: 0.5rem; background: #f3f4f6; font-size: 0.75rem; font-weight: 500; color: #4b5563; border-bottom: 1px solid #e5e7eb; } .change-content pre { margin: 0; padding: 0.75rem; font-size: 0.875rem; line-height: 1.5; overflow-x: auto; } /* Warning/Error Messages */ .comparison-warning, .comparison-error { position: fixed; top: 1rem; right: 1rem; padding: 0.75rem 1rem; border-radius: 0.375rem; font-size: 0.875rem; animation: slideIn 0.3s ease-out; } .comparison-warning { background: #fef3c7; color: #92400e; border: 1px solid #f59e0b; } .comparison-error { background: #fee2e2; color: #991b1b; border: 1px solid #ef4444; } @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } /* Responsive Design */ @media (max-width: 768px) { .comparison-header { padding: 0.75rem; } .selected-versions { flex-direction: column; } .comparison-actions { flex-direction: column; } .compare-button, .rollback-button { width: 100%; } .change-content { grid-template-columns: 1fr; } .timeline-label { min-width: 80px; } }