Spaces:
Sleeping
Sleeping
| /* ======================================== | |
| NOVA AI GAMES - Components | |
| Reusable UI Components | |
| ======================================== */ | |
| /* Glass Card Effect */ | |
| .glass-card { | |
| background: var(--bg-glass); | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: var(--radius-lg); | |
| padding: var(--spacing-lg); | |
| } | |
| /* Buttons */ | |
| .btn { | |
| padding: var(--spacing-md) var(--spacing-xl); | |
| border: none; | |
| border-radius: var(--radius-md); | |
| font-size: 16px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all var(--transition-fast); | |
| } | |
| .btn:active { | |
| transform: scale(0.98); | |
| } | |
| .btn-primary { | |
| background: var(--accent-gradient); | |
| color: white; | |
| box-shadow: var(--shadow-glow); | |
| } | |
| .btn-secondary { | |
| background: var(--bg-glass); | |
| color: var(--text-primary); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| /* Progress Bar */ | |
| .progress-bar { | |
| flex: 1; | |
| height: 8px; | |
| background: var(--bg-tertiary); | |
| border-radius: var(--radius-full); | |
| overflow: hidden; | |
| } | |
| .progress-fill { | |
| height: 100%; | |
| background: var(--accent-gradient); | |
| border-radius: var(--radius-full); | |
| transition: width var(--transition-normal); | |
| } | |
| /* Toggle Switch */ | |
| .toggle { | |
| position: relative; | |
| width: 48px; | |
| height: 28px; | |
| } | |
| .toggle input { | |
| opacity: 0; | |
| width: 0; | |
| height: 0; | |
| } | |
| .toggle-slider { | |
| position: absolute; | |
| inset: 0; | |
| background: var(--bg-tertiary); | |
| border-radius: var(--radius-full); | |
| cursor: pointer; | |
| transition: all var(--transition-fast); | |
| } | |
| .toggle-slider::before { | |
| content: ''; | |
| position: absolute; | |
| width: 22px; | |
| height: 22px; | |
| left: 3px; | |
| top: 3px; | |
| background: white; | |
| border-radius: var(--radius-full); | |
| transition: all var(--transition-fast); | |
| } | |
| .toggle input:checked+.toggle-slider { | |
| background: var(--accent-gradient); | |
| } | |
| .toggle input:checked+.toggle-slider::before { | |
| transform: translateX(20px); | |
| } | |
| /* Difficulty Badges */ | |
| .difficulty { | |
| font-size: 11px; | |
| padding: 2px 8px; | |
| border-radius: var(--radius-sm); | |
| font-weight: 500; | |
| } | |
| .difficulty.easy { | |
| background: rgba(34, 197, 94, 0.2); | |
| color: var(--easy); | |
| } | |
| .difficulty.medium { | |
| background: rgba(245, 158, 11, 0.2); | |
| color: var(--medium); | |
| } | |
| .difficulty.hard { | |
| background: rgba(239, 68, 68, 0.2); | |
| color: var(--hard); | |
| } | |
| .duration { | |
| font-size: 11px; | |
| color: var(--text-muted); | |
| } | |
| /* Coins Display */ | |
| .coins-display { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| background: linear-gradient(135deg, rgba(245, 158, 11, 0.2), rgba(234, 179, 8, 0.1)); | |
| border: 1px solid rgba(245, 158, 11, 0.3); | |
| padding: 6px 12px; | |
| border-radius: var(--radius-full); | |
| font-weight: 600; | |
| color: #fbbf24; | |
| } | |
| .coins-display .coin-icon { | |
| font-size: 16px; | |
| } | |
| .coins-display .coin-amount { | |
| font-size: 14px; | |
| } | |
| /* AI Indicator Badge */ | |
| .ai-indicator { | |
| display: flex; | |
| justify-content: center; | |
| margin-bottom: var(--spacing-md); | |
| } | |
| .ai-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 6px 14px; | |
| border-radius: var(--radius-full); | |
| font-size: 12px; | |
| font-weight: 600; | |
| animation: badgePulse 2s ease infinite; | |
| } | |
| .ai-badge:not(.local) { | |
| background: linear-gradient(135deg, rgba(99, 102, 241, 0.3), rgba(168, 85, 247, 0.3)); | |
| border: 1px solid rgba(139, 92, 246, 0.5); | |
| color: #a78bfa; | |
| box-shadow: 0 0 20px rgba(139, 92, 246, 0.3); | |
| } | |
| .ai-badge.local { | |
| background: rgba(100, 116, 139, 0.2); | |
| border: 1px solid rgba(148, 163, 184, 0.3); | |
| color: var(--text-secondary); | |
| } | |
| @keyframes badgePulse { | |
| 0%, | |
| 100% { | |
| opacity: 1; | |
| } | |
| 50% { | |
| opacity: 0.7; | |
| } | |
| } | |
| /* Particle Effects */ | |
| .particles-container { | |
| position: absolute; | |
| inset: 0; | |
| pointer-events: none; | |
| overflow: hidden; | |
| } | |
| .particle { | |
| position: absolute; | |
| border-radius: 50%; | |
| animation: particleFloat 0.8s ease-out forwards; | |
| } | |
| @keyframes particleFloat { | |
| 0% { | |
| opacity: 1; | |
| transform: translate(0, 0) scale(1); | |
| } | |
| 100% { | |
| opacity: 0; | |
| transform: translate(var(--tx), var(--ty)) scale(0); | |
| } | |
| } |