nova-ai-games / static /css /components.css
himu1780's picture
Upload static/css/components.css with huggingface_hub
72fb4c5 verified
Raw
History Blame Contribute Delete
4.47 kB
/* ========================================
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);
}
}