/* 🖥️ 電腦版進場動畫定義 */
@keyframes desktopTitleFadeIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
@keyframes desktopPoemLineGrow {
    to {
        transform: scaleY(1);
    }
}
@keyframes desktopPoemFadeIn {
    to {
        opacity: 1;
        transform: translateX(0);
        filter: blur(0); /* 暈染還原清晰 */
    }
}
@keyframes desktopBgDrift {
    0% {
        transform: scale(1.08) translate3d(0, 0, 0);
    }
    50% {
        transform: scale(1.11) translate3d(-1.5%, -1%, 0);
    }
    100% {
        transform: scale(1.08) translate3d(0, 0, 0);
    }
}
@keyframes textMoonGlow {
    0%, 100% {
        opacity: 0.8;
        text-shadow: 0 0 4px rgba(113, 156, 176, 0.1), 0 0 10px rgba(113, 156, 176, 0);
    }
    50% {
        opacity: 1;
        text-shadow: 0 0 8px rgba(113, 156, 176, 0.5), 0 0 20px rgba(113, 156, 176, 0.2);
    }
}
@keyframes floatMote1 {
    0% { transform: translate3d(0, 0, 0); opacity: 0; }
    15% { opacity: 0.6; }
    50% { transform: translate3d(40px, -30vh, 0); opacity: 0.3; }
    85% { opacity: 0.6; }
    100% { transform: translate3d(80px, -65vh, 0); opacity: 0; }
}
@keyframes floatMote2 {
    0% { transform: translate3d(0, 0, 0); opacity: 0; }
    20% { opacity: 0.5; }
    50% { transform: translate3d(-50px, -40vh, 0); opacity: 0.2; }
    80% { opacity: 0.5; }
    100% { transform: translate3d(-20px, -80vh, 0); opacity: 0; }
}
@keyframes floatMote3 {
    0% { transform: translate3d(0, 0, 0); opacity: 0; }
    10% { opacity: 0.7; }
    50% { transform: translate3d(30px, -25vh, 0); opacity: 0.4; }
    90% { opacity: 0.7; }
    100% { transform: translate3d(60px, -55vh, 0); opacity: 0; }
}
@keyframes floatMote4 {
    0% { transform: translate3d(0, 0, 0); opacity: 0; }
    25% { opacity: 0.4; }
    50% { transform: translate3d(-30px, -35vh, 0); opacity: 0.1; }
    75% { opacity: 0.4; }
    100% { transform: translate3d(10px, -70vh, 0); opacity: 0; }
}
@keyframes desktopFadeInOnly {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}
