/* 動態效果(Figma「動畫說明」)。
   一律使用獨立的 translate / scale 屬性,不覆蓋元素原有的 transform。 */
@keyframes mFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes mFadeUp { from { opacity: 0; translate: 0 40px; } to { opacity: 1; translate: 0 0; } }
@keyframes mSlideLeft { from { opacity: 0; translate: 48px 0; } to { opacity: 1; translate: 0 0; } }
@keyframes mZoomIn { from { opacity: 0; scale: .6; } to { opacity: 1; scale: 1; } }
@keyframes mPop { 0% { opacity: 0; scale: .2; } 60% { opacity: 1; scale: 1.15; } 100% { opacity: 1; scale: 1; } }
@keyframes mBreath { 0%, 100% { scale: 1; } 50% { scale: 1.06; } }
@keyframes mCloud { from { translate: -10px 0; } to { translate: 10px 0; } }
@keyframes mFloat { from { translate: 0 2px; } to { translate: 2px -5px; } }
/* 巴士由左向右短距離進場,停止時輕微上下晃動 */
@keyframes mBus {
    0% { opacity: 0; translate: var(--bus-from, -120px) 0; }
    8% { opacity: 1; }
    65% { translate: 0 0; }
    75% { translate: 0 -3px; }
    85% { translate: 0 1px; }
    93% { translate: 0 -1px; }
    100% { opacity: 1; translate: 0 0; }
}
/* 光澤由左至右掃過 */
@keyframes mShine { 0% { background-position: 90% 0; } 30%, 100% { background-position: 10% 0; } }

/* 地圖插畫(首頁與遊戲頁共用):雲朵左右緩慢飄動 4–6 秒,農產品輕微漂浮 3–5 秒且錯開播放 */
.art-cloud { animation: mCloud calc(4s + var(--i, 0) * .6s) ease-in-out calc(var(--i, 0) * -1.1s) infinite alternate; }
.art-fruit { animation: mFloat calc(3s + var(--i, 0) * .17s) ease-in-out calc(var(--i, 0) * -.47s) infinite alternate; }
.art-bus { animation: mBus 1.7s ease-in-out var(--bus-delay, 0s) backwards; }
