/* Shared game/preview treatments. Matching endpoints prevent restart flashes. */
/* One payout gold for regular wins and every bonus return, including reviewers. */
:root{--reel-payout-gold:#ffe8a8}
:is(.celebration,.ice-review-return,.review-win-celebration)>:is(b,strong){
 color:var(--reel-payout-gold);
 text-shadow:0 1px 1px #251703,0 2px 2px #000,0 0 6px #000,0 4px 10px #000;
 filter:none;
}
/* Only bonus / SCATTER payouts get haze, and only alongside their confetti.
   Ordinary line wins (including large wins) leave the reel artwork clear. */
:is(.celebration,.ice-review-return,.review-win-celebration){
 isolation:isolate;
}
:is(.celebration.is-bonus-win,.ice-review-return,.review-win-celebration):has(>.confetti-stream)::before{
 content:'';
 position:absolute;
 inset:-3%;
 z-index:0;
 pointer-events:none;
 opacity:.88;
 filter:blur(8px);
 background:
  radial-gradient(ellipse at 24% 68%,#34393e70 0 14%,transparent 61%),
  radial-gradient(ellipse at 76% 30%,#3a3d414f 0 12%,transparent 59%),
  radial-gradient(ellipse at 50% 50%,#080b0f66 0 25%,transparent 78%),
  #181c217d;
 animation:win-smoke-haze 7s ease-in-out infinite alternate;
}
/* Confetti remains visible over the smoke; the payout copy stays on top. */
:is(.celebration,.ice-review-return,.review-win-celebration)>.confetti-stream,
:is(.celebration,.ice-review-return,.review-win-celebration)>.sparkle-effect{z-index:1}
:is(.celebration,.ice-review-return,.review-win-celebration)>:is(b,strong){position:relative;z-index:2}
@keyframes win-smoke-haze{from{opacity:.84;transform:translateX(-1%)}to{opacity:.93;transform:translateX(1%)}}
.sparkle-effect{position:absolute;inset:0;display:block;pointer-events:none;animation:win-sparkle-twinkle 2.8s ease-in-out infinite}
.sparkle-effect>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
@keyframes win-sparkle-twinkle{0%,100%{opacity:.42}50%{opacity:.82}}

/* Compensate for transparent source padding so the glow outlines the cell.
   All source pixels above alpha 8 stay inside the wrapper at these dimensions. */
.symbol-glow-effect{position:absolute;inset:0;display:block;overflow:hidden;pointer-events:none;animation:win-glow-breathe 2.8s ease-in-out infinite}
.symbol-glow-effect>img{position:absolute;left:-4%;top:-18%;width:108%;height:136%;max-width:none;max-height:none;object-fit:fill;pointer-events:none}
@keyframes win-glow-breathe{0%,100%{opacity:.58}50%{opacity:.9}}

.cell>.symbol-glow-effect{animation:none;opacity:0}
.cell.winner>.symbol-glow-effect{animation:win-glow-breathe 2.8s ease-in-out infinite;transform:none}
.reference-machine .cell.winner:after{content:none}
@media(prefers-reduced-motion:reduce){
 :is(.celebration.is-bonus-win,.ice-review-return,.review-win-celebration):has(>.confetti-stream)::before{animation:none;opacity:.9;transform:none}
 .sparkle-effect,.symbol-glow-effect,.cell.winner>.symbol-glow-effect{animation:none!important;opacity:.7;transform:none}
}
