/* =====================================================================
   COMPACT NUMBERS + INLINE COIN
   ===================================================================== */
.inline-coin {
  width: 1em;
  height: 1em;
  object-fit: contain;
  vertical-align: -0.15em;
  margin-left: 0.15em;
}

/* =====================================================================
   WIN PAYOUT FLIGHT — the amount is read over the reels, then carried
   into the coin tile so the balance visibly receives it.
   ===================================================================== */
.win-fly {
  position: fixed;
  z-index: 1500;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  pointer-events: none;
  animation: winFlyIn 420ms cubic-bezier(0.2, 1.5, 0.4, 1) both;
}
@keyframes winFlyIn {
  from { opacity: 0; transform: translate(-50%, -20%) scale(0.5); }
  to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

.win-fly-amount {
  font-family: 'Orbitron', sans-serif;
  font-weight: 700;
  font-size: clamp(2rem, 8vw, 3.6rem);
  color: var(--gold-bright);
  text-shadow: 0 0 18px var(--gold), 0 0 44px rgba(255, 217, 77, 0.6), 0 4px 0 #000;
  line-height: 1;
}
.win-fly-coin {
  width: clamp(30px, 7vw, 52px);
  height: auto;
  filter: drop-shadow(0 0 12px var(--gold-bright));
  animation: doublerThrob 0.8s ease-in-out infinite;
}
/* The working: base payout x bet x level multiplier. */
.win-fly-detail {
  font-family: 'Orbitron', sans-serif;
  font-size: clamp(0.5rem, 1.8vw, 0.7rem);
  letter-spacing: 1px;
  color: #fff;
  background: rgba(0, 0, 0, 0.65);
  padding: 3px 10px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--gold-deep);
  white-space: nowrap;
}

/* Shrinks as it travels, so it reads as being absorbed by the tile. */
.win-fly.flying {
  animation: winFlyOut 800ms cubic-bezier(0.5, 0, 0.75, 0.4) forwards;
}
@keyframes winFlyOut {
  0%   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  70%  { opacity: 1; }
  100% {
    opacity: 0;
    transform: translate(calc(-50% + var(--fly-x)), calc(-50% + var(--fly-y))) scale(0.22);
  }
}
.win-fly.flying .win-fly-detail { opacity: 0; transition: opacity 180ms ease; }


/* =====================================================================
   WINNING SYMBOLS — sparks at each symbol that paid, so the win reads as
   the thing that paid rather than as a number changing.
   ===================================================================== */

.reel-track img.symbol-glow {
  animation: symbolGlowPulse 0.85s ease-in-out infinite alternate;
  z-index: 3;
}
@keyframes symbolGlowPulse {
  from {
    filter: drop-shadow(0 0 8px var(--gold-bright)) drop-shadow(0 0 18px var(--gold));
    transform: scale(1.02);
  }
  to {
    filter: drop-shadow(0 0 20px #fff) drop-shadow(0 0 44px var(--gold-bright));
    transform: scale(1.1);
  }
}
/* Rotating halo behind each winning symbol. */
.reel-track img.symbol-glow::before { content: none; }
.reel-col { position: relative; }

