Spaces:
Running
Running
| /* 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 ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| } | |
| } |