#fx-layer { position:fixed; inset:0; pointer-events:none; z-index:250; overflow:hidden; contain:layout style; clip-path:polygon(0 0,100% 0,100% 100%,90px 100%,90px calc(100% - 90px),0 calc(100% - 90px)); }
#fx-layer[hidden] { display:none; }
.pim-fx { position:absolute; left:0; top:0; pointer-events:none; will-change:transform,opacity; }
.pim-fx-star { background:url('../assets/ui/ui-reward-star.webp') center/contain no-repeat; filter:drop-shadow(0 2px 3px #b7752960); }
.pim-fx-hero { background:url('../assets/ui/ui-reward-star.webp') center/contain no-repeat; filter:drop-shadow(0 0 15px #ffe8a8); z-index:5; }
.pim-fx-ring { border:3px solid #fff1c9; border-radius:50%; box-sizing:border-box; }
.pim-fx-bubble { border:2px solid #d9eeee; background:#d9eeee30; border-radius:50%; box-sizing:border-box; }
.pim-fx-bloom { background:radial-gradient(ellipse,#fff0b56b,transparent 65%); }
.progress-dot.incoming { background-image:url('../assets/ui/ui-reward-star-empty.webp'); }
.progress-dot.juice-arrived { animation:pim-star-arrive .5s ease-out; }
#roundProgress.juice-catch { animation:pim-board-catch .5s ease-out; }
.game[data-state="playing"] .lily.selected { animation:pim-touch-pop .22s cubic-bezier(.22,.9,.3,1.2); }
.game[data-state="resolving"] .lily { animation:none; }
.game[data-juice-idle="true"] #checkButton:not(:disabled) { animation:pim-cta-breathe 2.4s ease-in-out infinite; }
@keyframes pim-touch-pop { 0% {scale:1} 45% {scale:1.18} 100% {scale:1} }
@keyframes pim-star-arrive { 0% {scale:.5} 45% {scale:1.65} 100% {scale:1} }
@keyframes pim-board-catch { 0% {scale:1} 45% {scale:1.12} 100% {scale:1} }
@keyframes pim-cta-breathe { 0%,100% {scale:1} 50% {scale:1.045} }
@media (prefers-reduced-motion:reduce) {
  .game[data-state="playing"] .lily.selected,.progress-dot.juice-arrived,#roundProgress.juice-catch,.game[data-juice-idle="true"] #checkButton:not(:disabled) { animation:none; }
}
