.fade-enter-active,
.fade-leave-active {
    transition: opacity 0.3s ease;
}
.fade-enter-from,
.fade-leave-to {
    opacity: 0;
}

/* ガチャ出現時のアニメーション */
@keyframes popIn {
    0% { transform: scale(0.5); opacity: 0; }
    70% { transform: scale(1.1); opacity: 1; }
    100% { transform: scale(1); opacity: 1; }
}
.animate-pop-in {
    animation: popIn 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

/* 高レア用キラキラ反射アニメーション */
@keyframes shine {
    0% { left: -100%; opacity: 0; }
    20% { opacity: 0.8; }
    100% { left: 200%; opacity: 0; }
}
.animate-shine::after {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 50%;
    height: 100%;
    background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 50%, rgba(255,255,255,0) 100%);
    transform: skewX(-25deg);
    animation: shine 3s infinite;
    z-index: 25;
    pointer-events: none;
}

/* キャラクター名の文字フチ */
.text-outline {
    text-shadow: 
        -1px -1px 0 #000,  
            1px -1px 0 #000,
        -1px  1px 0 #000,
            1px  1px 0 #000,
            0px -1px 0 #000,
            0px  1px 0 #000,
        -1px  0px 0 #000,
            1px  0px 0 #000;
}