nova-ai-games / static /css /games /memory.css
himu1780's picture
Upload static/css/games/memory.css with huggingface_hub
2ab2b3d verified
Raw
History Blame Contribute Delete
3.61 kB
/* ========================================
NOVA AI GAMES - Memory Game Styles
3D Cards, Flip Animations & Effects
======================================== */
.memory-game-wrapper {
width: 100%;
max-width: 340px;
position: relative;
}
.memory-grid-enhanced {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
perspective: 1000px;
}
.memory-card-3d {
aspect-ratio: 1;
cursor: pointer;
position: relative;
transform-style: preserve-3d;
animation: cardEntrance 0.5s ease backwards;
}
@keyframes cardEntrance {
from {
opacity: 0;
transform: scale(0.5) rotateY(180deg);
}
to {
opacity: 1;
transform: scale(1) rotateY(0);
}
}
.memory-card-3d .card-inner {
position: absolute;
inset: 0;
transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
transform-style: preserve-3d;
}
.memory-card-3d.flipped .card-inner {
transform: rotateY(180deg);
}
.memory-card-3d .card-face {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
backface-visibility: hidden;
border-radius: var(--radius-md);
font-size: 28px;
}
.memory-card-3d .card-front-3d {
background: linear-gradient(145deg, #1e1e2e, #2a2a40);
border: 2px solid rgba(99, 102, 241, 0.3);
box-shadow:
0 4px 15px rgba(0, 0, 0, 0.3),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
overflow: hidden;
}
.memory-card-3d .card-pattern {
position: absolute;
inset: 0;
background:
repeating-linear-gradient(45deg,
transparent,
transparent 5px,
rgba(99, 102, 241, 0.05) 5px,
rgba(99, 102, 241, 0.05) 10px);
}
.memory-card-3d .card-question {
position: relative;
z-index: 1;
font-size: 32px;
color: var(--text-muted);
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}
.memory-card-3d .card-back-3d {
background: linear-gradient(135deg, #6366f1, #8b5cf6, #a855f7);
transform: rotateY(180deg);
box-shadow:
0 8px 25px rgba(99, 102, 241, 0.4),
inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.memory-card-3d .card-emoji {
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
animation: emojiPop 0.3s ease;
}
@keyframes emojiPop {
0% {
transform: scale(0);
}
50% {
transform: scale(1.2);
}
100% {
transform: scale(1);
}
}
.memory-card-3d:hover:not(.flipped):not(.matched) {
transform: translateY(-3px);
}
.memory-card-3d:hover:not(.flipped):not(.matched) .card-front-3d {
border-color: rgba(99, 102, 241, 0.6);
box-shadow:
0 8px 25px rgba(99, 102, 241, 0.3),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.memory-card-3d.matched .card-inner {
animation: matchCelebrate 0.5s ease;
}
@keyframes matchCelebrate {
0%,
100% {
transform: rotateY(180deg) scale(1);
}
50% {
transform: rotateY(180deg) scale(1.1);
}
}
.memory-card-3d.matched .card-back-3d {
background: linear-gradient(135deg, #22c55e, #16a34a);
box-shadow:
0 8px 30px rgba(34, 197, 94, 0.5),
inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.memory-moves {
text-align: center;
margin-top: var(--spacing-lg);
font-size: 14px;
color: var(--text-secondary);
}
.moves-value {
font-weight: 700;
color: var(--accent-primary);
margin-left: 4px;
}