/* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #0f172a; } ::-webkit-scrollbar-thumb { background: #334155; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #475569; } /* Smooth transitions */ * { transition-property: color, background-color, border-color, box-shadow; transition-duration: 150ms; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } /* Drag and drop states */ .drag-over { border-color: #7c3aed !important; background-color: rgba(124, 58, 237, 0.1) !important; } /* Photo thumbnail styles */ .photo-thumb { position: relative; aspect-ratio: 1; border-radius: 0.5rem; overflow: hidden; border: 2px solid transparent; transition: all 0.2s ease; } .photo-thumb:hover { border-color: #7c3aed; } .photo-thumb img { width: 100%; height: 100%; object-fit: cover; } .photo-thumb .remove-btn { position: absolute; top: 4px; right: 4px; width: 24px; height: 24px; border-radius: 50%; background: rgba(239, 68, 68, 0.9); color: white; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.2s ease; cursor: pointer; } .photo-thumb:hover .remove-btn { opacity: 1; } /* Title option cards */ .title-option { position: relative; padding: 1rem; background: #0f172a; border: 1px solid #334155; border-radius: 0.5rem; cursor: pointer; transition: all 0.2s ease; } .title-option:hover { border-color: #7c3aed; } .title-option.selected { border-color: #7c3aed; background: rgba(124, 58, 237, 0.1); } .title-option .char-count { position: absolute; top: 0.5rem; right: 0.5rem; font-size: 0.75rem; color: #64748b; } .title-option.selected .char-count { color: #7c3aed; } /* Pricing cards */ .pricing-card { padding: 1.25rem; background: #0f172a; border: 1px solid #334155; border-radius: 0.75rem; } .pricing-card.recommended { border-color: #f59e0b; background: linear-gradient(135deg, rgba(245, 158, 11, 0.1) 0%, #0f172a 100%); } /* Shot list items */ .shot-item { display: flex; align-items: center; gap: 0.75rem; padding: 0.875rem; background: #0f172a; border: 1px solid #334155; border-radius: 0.5rem; } .shot-item.completed { border-color: #22c55e; background: rgba(34, 197, 94, 0.05); } .shot-item.missing { border-color: #f59e0b; background: rgba(245, 158, 11, 0.05); } /* Animations */ @keyframes pulse-ring { 0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(124, 58, 237, 0.7); } 70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(124, 58, 237, 0); } 100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(124, 58, 237, 0); } } .analyzing { animation: pulse-ring 2s infinite; } /* Code block styling */ pre, textarea { font-family: 'SF Mono', Monaco, Inconsolata, 'Fira Code', monospace; } /* Toast notification */ .toast { position: fixed; bottom: 2rem; right: 2rem; padding: 1rem 1.5rem; background: #1e293b; border: 1px solid #334155; border-radius: 0.75rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5); z-index: 10000; transform: translateY(100px); opacity: 0; transition: all 0.3s ease; max-width: 400px; } .toast.show { transform: translateY(0); opacity: 1; } .toast.success { border-color: #22c55e; } .toast.error { border-color: #ef4444; } .toast.warning { border-color: #f59e0b; } /* Bulk drop zone styles */ #bulkDropZone { transition: all 0.2s ease; } #bulkDropZone.border-deal { border-color: #ec4899 !important; } #bulkDropZone.bg-deal\/10 { background-color: rgba(236, 72, 153, 0.1) !important; } /* Spinner animation */ @keyframes spin { to { transform: rotate(360deg); } } .animate-spin { animation: spin 1s linear infinite; } .pointer-events-none { pointer-events: none; } /* Analysis progress bar gradient animation */ #analysisBar { background-size: 200% 100%; animation: shimmer 2s infinite; } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Progress bar smooth transitions */ #analysisBar, #uploadBar { will-change: width; } /* Field highlight animation */ @keyframes flashGreen { 0%, 100% { border-color: #22c55e; background-color: rgba(34, 197, 94, 0.1); } 50% { border-color: #7c3aed; background-color: transparent; } } .border-green-500 { border-color: #22c55e !important; } .bg-green-500\/10 { background-color: rgba(34, 197, 94, 0.1) !important; }