/* 領獎特效（assets/reward-fx.js）：飛行圖示層、畫面頂端的臨時計數器、貨幣計數器發光——外觀沿用頂欄 .currency-chip */
#hubRewardFxLayer { position: fixed; z-index: 150; inset: 0; overflow: hidden; pointer-events: none; }
.hub-reward-fx-coin { position: fixed; left: 0; top: 0; width: 27px; height: 27px; margin: -14px 0 0 -14px; object-fit: contain; will-change: transform,opacity; filter: drop-shadow(0 3px 2px rgba(91,43,4,.28)); }
.hub-reward-fx-gain { position: fixed; color: #a94b11; font-size: 20px; font-weight: 1000; text-shadow: 0 2px #fff0a6,0 3px 5px rgba(85,33,3,.25); transform: translate(-50%,-50%); animation: reward-fx-gain 850ms ease-out forwards; }

#hubRewardFxCounterRow { position: fixed; top: max(12px,env(safe-area-inset-top)); left: 0; right: 0; display: flex; justify-content: center; gap: 8px; padding: 0 16px; }
.hub-reward-fx-counter { display: inline-flex; align-items: center; gap: 7px; min-height: 42px; padding: 5px 14px; border: 2px solid #e9a43b; border-radius: 16px; color: #71320f; background: #fff8dc; box-shadow: inset 0 1px white,0 2px 0 #c87320,0 8px 20px rgba(72,27,3,.3); font-size: 15px; line-height: 1; font-weight: 1000; animation: reward-fx-counter-in .25s ease-out both; }
.hub-reward-fx-counter img { width: 27px; height: 27px; object-fit: contain; filter: drop-shadow(0 2px 1px rgba(105,49,8,.18)); }
.hub-reward-fx-counter b { min-width: 2ch; font-variant-numeric: tabular-nums; }
.hub-reward-fx-counter.leaving { animation: reward-fx-counter-out .3s ease-in forwards; }

.hub-reward-fx-glow { animation: reward-fx-glow .65s ease-out; }

@keyframes reward-fx-glow {
  0%,100% { transform: scale(1); box-shadow: inset 0 1px white,0 2px 0 #c87320; filter: none; }
  40% { transform: scale(1.1); box-shadow: inset 0 1px white,0 2px 0 #c87320,0 0 18px 4px var(--reward-fx-glow,rgba(255,211,77,.9)); filter: brightness(1.15); }
}
@keyframes reward-fx-gain { 0% { opacity: 0; transform: translate(-50%,4px) scale(.72); } 25% { opacity: 1; transform: translate(-50%,-8px) scale(1.08); } 100% { opacity: 0; transform: translate(-50%,-47px) scale(.92); } }
@keyframes reward-fx-counter-in { from { opacity: 0; transform: translateY(-12px) scale(.9); } to { opacity: 1; transform: none; } }
@keyframes reward-fx-counter-out { to { opacity: 0; transform: translateY(-10px) scale(.94); } }
@media (prefers-reduced-motion: reduce) {
  .hub-reward-fx-glow,.hub-reward-fx-gain { animation: none; }
}
