/* AI-generated animations for Claire Game 2026 */

/* Screen Transitions */
@keyframes fadeSlideIn {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.screen.active {
    animation: fadeSlideIn 0.4s ease forwards;
}

/* Claire Silhouette Dance (Main Menu) */
.character-silhouette {
    position: relative;
    width: 150px;
    height: 200px;
    margin: 20px auto;
}

.sil-head, .sil-body, .sil-arm-l, .sil-arm-r, .sil-leg-l, .sil-leg-r {
    position: absolute;
    background: linear-gradient(135deg, var(--teal), var(--purple));
    border-radius: 50px;
}

.sil-head {
    width: 40px;
    height: 40px;
    top: 0;
    left: 55px;
    border-radius: 50%;
    animation: headBob 2s infinite alternate ease-in-out;
}

.sil-body {
    width: 30px;
    height: 70px;
    top: 45px;
    left: 60px;
}

.sil-arm-l {
    width: 15px;
    height: 60px;
    top: 50px;
    left: 40px;
    transform-origin: top center;
    animation: armSwingL 2s infinite alternate ease-in-out;
}

.sil-arm-r {
    width: 15px;
    height: 60px;
    top: 50px;
    left: 95px;
    transform-origin: top center;
    animation: armSwingR 2s infinite alternate ease-in-out;
}

.sil-leg-l {
    width: 15px;
    height: 70px;
    top: 110px;
    left: 55px;
    transform-origin: top center;
    animation: legMoveL 2s infinite alternate ease-in-out;
}

.sil-leg-r {
    width: 15px;
    height: 70px;
    top: 110px;
    left: 80px;
    transform-origin: top center;
    animation: legMoveR 2s infinite alternate ease-in-out;
}

@keyframes headBob {
    0% { transform: translateY(0) rotate(-5deg); }
    100% { transform: translateY(5px) rotate(5deg); }
}

@keyframes armSwingL {
    0% { transform: rotate(20deg); }
    100% { transform: rotate(-120deg) translateY(-10px); }
}

@keyframes armSwingR {
    0% { transform: rotate(-20deg); }
    100% { transform: rotate(120deg) translateY(-10px); }
}

@keyframes legMoveL {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(20deg) translateY(-5px); }
}

@keyframes legMoveR {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(-20deg) translateY(-5px); }
}

/* Move Execution in Performance */
@keyframes movePlay {
    0% { transform: scale(0.5) rotate(-10deg); opacity: 0; }
    50% { transform: scale(1.2) rotate(10deg); opacity: 1; }
    100% { transform: scale(1) rotate(0); opacity: 0; }
}

.move-emoji-big.playing {
    animation: movePlay 1s ease-out;
}

/* Claire Sprite Animations */
@keyframes spriteJump {
    0%, 100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-50px) scale(1.1); }
}

@keyframes spriteSpin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes spriteWave {
    0%, 100% { transform: skewX(0); }
    25% { transform: skewX(15deg); }
    75% { transform: skewX(-15deg); }
}

@keyframes spriteDrop {
    0%, 100% { transform: translateY(0) scaleY(1); }
    50% { transform: translateY(30px) scaleY(0.7); }
}

.anim-jump { animation: spriteJump 1s ease; }
.anim-spin { animation: spriteSpin 1s ease; }
.anim-wave { animation: spriteWave 1s ease; }
.anim-drop { animation: spriteDrop 1s ease; }

/* Grade Reveal */
@keyframes gradeReveal {
    0% { transform: scale(3); opacity: 0; }
    50% { transform: scale(0.8); opacity: 1; }
    100% { transform: scale(1); opacity: 1; }
}

.grade-reveal-anim {
    animation: gradeReveal 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

/* Star Pop */
@keyframes starPop {
    0% { transform: scale(0); opacity: 0; }
    70% { transform: scale(1.2); opacity: 1; }
    100% { transform: scale(1); opacity: 1; }
}

.star-pop-anim {
    animation: starPop 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

/* Lisa NPC Bounce */
@keyframes bounce {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-10px); }
}

.lisa-big {
    animation: bounce 2s infinite ease-in-out;
}
