/* Additional custom styles for CardForge */ /* Smooth transitions for all interactive elements */ button, input, textarea { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* Line clamp utilities */ .line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } .line-clamp-4 { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; } /* Animation for section expansion */ @keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .section-collapse.open { animation: slideDown 0.3s ease; } /* Custom focus styles */ .glass-input:focus { caret-color: #818cf8; } /* Glass morphism enhancement for WebKit browsers */ @supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { .glass-panel { -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); } } /* Firefox scrollbar styling */ * { scrollbar-width: thin; scrollbar-color: rgba(99, 102, 241, 0.5) rgba(15, 23, 42, 0.5); } /* Prevent image dragging */ img { -webkit-user-drag: none; user-select: none; } /* Textarea resize animation */ textarea { transition: height 0.2s ease; } /* Button press effect */ .btn-primary:active, .btn-secondary:active { transform: scale(0.98); } /* Loading spinner for async operations */ @keyframes spin { to { transform: rotate(360deg); } } .loading { animation: spin 1s linear infinite; } /* Shimmer loading effect */ @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } .shimmer { background: linear-gradient(90deg, rgba(255,255,255,0.05) 25%, rgba(255,255,255,0.1) 50%, rgba(255,255,255,0.05) 75%); background-size: 200% 100%; animation: shimmer 2s infinite; } /* Floating animation */ @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-10px); } } .float { animation: float 3s ease-in-out infinite; } /* Pulse glow */ @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 5px rgba(99, 102, 241, 0.5); } 50% { box-shadow: 0 0 20px rgba(99, 102, 241, 0.8); } } .pulse-glow { animation: pulse-glow 2s ease-in-out infinite; } /* Smooth section transitions */ .section-collapse { max-height: 0; overflow: hidden; transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease; opacity: 0; } .section-collapse.open { opacity: 1; } /* Better toggle icon rotation */ .toggle-icon { transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* Gradient text animation */ @keyframes gradient-shift { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } } .animate-gradient { background-size: 200% 200%; animation: gradient-shift 3s ease infinite; } /* Field status indicators */ .field-status-complete { color: #4ade80; } .field-status-empty { color: #6b7280; } /* Card hover lift effect */ .character-card { transition: transform 0.3s ease, box-shadow 0.3s ease; } .character-card:hover { transform: translateY(-2px); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4); } /* Custom scrollbar for extract content */ #extract-content::-webkit-scrollbar { width: 6px; } #extract-content::-webkit-scrollbar-thumb { background: rgba(99, 102, 241, 0.3); border-radius: 3px; } #extract-content::-webkit-scrollbar-thumb:hover { background: rgba(99, 102, 241, 0.5); } /* Card shine effect */ .character-card::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient( 90deg, transparent, rgba(255, 255, 255, 0.1), transparent ); transition: left 0.5s; pointer-events: none; } .character-card:hover::before { left: 100%; } /* Tag hover effect */ .tag-pill { transition: all 0.2s ease; } .tag-pill:hover { transform: translateY(-1px); background: rgba(99, 102, 241, 0.3); box-shadow: 0 2px 8px rgba(99, 102, 241, 0.2); } /* Toast animation refinement */ #toast-container > div { animation: toastSlide 0.3s ease forwards; } @keyframes toastSlide { from { opacity: 0; transform: translateX(100%) scale(0.9); } to { opacity: 1; transform: translateX(0) scale(1); } } /* Responsive adjustments */ @media (max-width: 1024px) { .glass-panel { backdrop-filter: blur(8px); } #create-mode { height: auto; min-height: calc(100vh - 8rem); } .character-card { max-width: 400px; margin: 0 auto; } } @media (max-width: 640px) { .glass-panel { padding: 1rem; } .preview-avatar { height: 200px; } } /* Print styles for exported cards */ @media print { body { background: white; } .glass-panel { background: white; border: 1px solid #ccc; box-shadow: none; } } /* High contrast mode support */ @media (prefers-contrast: high) { .glass-input { border-width: 2px; } .btn-primary { border: 2px solid currentColor; } } /* Reduced motion support */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }