/**
 * Spin Pleasure Pack — per-spin juice (presentation only).
 * Variant B styles gated by data-sp* attributes on [data-game-stage].
 */

/* ── spin_start_windup ── */
[data-game-stage][data-spspinstartwindup="b"] [data-game-stage-reels].sp-windup-active {
  transform: scale(0.985, 0.97);
  transition: transform 180ms cubic-bezier(0.34, 1.2, 0.64, 1);
}

/* ── reel_stop_glow ── */
[data-game-stage][data-spreelstopglow="b"] [data-game-stage-reels].sp-reel-glow--0,
[data-game-stage][data-spreelstopglow="b"] [data-game-stage-reels].sp-reel-glow--1,
[data-game-stage][data-spreelstopglow="b"] [data-game-stage-reels].sp-reel-glow--2,
[data-game-stage][data-spreelstopglow="b"] [data-game-stage-reels].sp-reel-glow--3,
[data-game-stage][data-spreelstopglow="b"] [data-game-stage-reels].sp-reel-glow--4 {
  box-shadow: inset 0 0 28px rgba(120, 200, 255, 0.22), 0 0 18px rgba(80, 160, 255, 0.15);
  transition: box-shadow 120ms ease-out;
}

/* ── symbol_land_spark ── */
[data-game-stage][data-spsymbollandspark="b"] .sp-land-spark {
  position: absolute;
  left: calc(12% + var(--sp-reel, 0) * 15.5%);
  top: calc(18% + var(--sp-row, 1) * 16%);
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: radial-gradient(circle, #fff 0%, rgba(255, 220, 120, 0.8) 40%, transparent 70%);
  pointer-events: none;
  z-index: 12;
  animation: sp-spark-pop 480ms ease-out forwards;
}

@keyframes sp-spark-pop {
  0% { opacity: 0; transform: scale(0.2); }
  25% { opacity: 1; transform: scale(1.4); }
  100% { opacity: 0; transform: scale(0.6) translateY(-8px); }
}

/* ── spin_camera_breathe ── */
[data-game-stage][data-spsincamerabreathe="b"] [data-game-stage-aspect].sp-camera-breathe {
  animation: sp-camera-breathe 900ms ease-in-out infinite;
}

@keyframes sp-camera-breathe {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.008); }
}

/* ── hud_balance_shimmer ── */
[data-game-stage][data-sphudbalanceshimmer="b"] [data-balance-hud].sp-balance-shimmer {
  animation: sp-balance-shimmer 680ms ease-out;
  text-shadow: 0 0 12px rgba(255, 230, 140, 0.6);
}

@keyframes sp-balance-shimmer {
  0% { filter: brightness(1); }
  40% { filter: brightness(1.35); }
  100% { filter: brightness(1); }
}

/* ── reel_glass_sweep ── */
[data-game-stage][data-spreelglasssweep="b"] [data-game-stage-reels].sp-glass-sweep::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    105deg,
    transparent 0%,
    rgba(255, 255, 255, 0.08) 45%,
    rgba(255, 255, 255, 0.18) 50%,
    rgba(255, 255, 255, 0.08) 55%,
    transparent 100%
  );
  transform: translateX(calc(-120% + var(--sp-sweep-reel, 0) * 25%));
  pointer-events: none;
  animation: sp-glass-sweep 420ms ease-out forwards;
}

@keyframes sp-glass-sweep {
  to { transform: translateX(calc(20% + var(--sp-sweep-reel, 0) * 25%)); opacity: 0; }
}

/* ── last_reel_satisfy ── */
[data-game-stage][data-splastreelsatisfy="b"] [data-game-stage-reels].sp-last-reel-satisfy {
  animation: sp-last-satisfy 620ms cubic-bezier(0.22, 1.1, 0.36, 1);
}

@keyframes sp-last-satisfy {
  0% { transform: scale(1); }
  35% { transform: scale(1.012, 0.992); }
  70% { transform: scale(0.998, 1.004); }
  100% { transform: scale(1); }
}

/* ── no_win_grace ── */
[data-game-stage][data-spnowingrace="b"] [data-game-stage-aspect].sp-no-win-grace::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 60%, rgba(180, 200, 255, 0.06) 0%, transparent 55%);
  pointer-events: none;
  animation: sp-no-win-fade 560ms ease-out forwards;
  z-index: 2;
}

@keyframes sp-no-win-fade {
  0% { opacity: 0; }
  30% { opacity: 1; }
  100% { opacity: 0; }
}

/* ── spin_dust_motes ── */
[data-game-stage][data-spsindustmotes="b"] .sp-dust-motes {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 3;
  overflow: hidden;
}

[data-game-stage][data-spsindustmotes="b"] .sp-dust-mote {
  position: absolute;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.35);
  left: calc(15% + var(--sp-i, 0) * 12%);
  bottom: 20%;
  animation: sp-dust-rise 1.4s ease-out forwards;
  animation-delay: calc(var(--sp-i, 0) * 80ms);
}

@keyframes sp-dust-rise {
  0% { opacity: 0; transform: translateY(0) scale(0.5); }
  20% { opacity: 0.7; }
  100% { opacity: 0; transform: translateY(-120px) scale(1); }
}

/* ── neon_spin_sync ── */
[data-game-stage][data-spneonspinsync="b"] .game-stage-bg.sp-neon-spin-sync {
  filter: brightness(1.08) saturate(1.05);
  transition: filter 200ms ease-out;
}

/* ── reel_ripple_wave ── */
[data-game-stage][data-spreelripplewave="b"] [data-game-stage-aspect].sp-ripple-wave::after {
  content: '';
  position: absolute;
  left: calc(10% + var(--sp-ripple-reel, 0) * 16%);
  top: 50%;
  width: 40px;
  height: 40px;
  margin: -20px 0 0 -20px;
  border: 1px solid rgba(100, 180, 255, 0.35);
  border-radius: 50%;
  pointer-events: none;
  animation: sp-ripple 500ms ease-out forwards;
}

@keyframes sp-ripple {
  0% { transform: scale(0.3); opacity: 0.8; }
  100% { transform: scale(4); opacity: 0; }
}

/* ── spin_button_afterglow ── */
[data-game-stage][data-spspinbuttonafterglow="b"] [data-spin].sp-spin-afterglow {
  box-shadow: 0 0 24px rgba(255, 180, 80, 0.55), 0 0 48px rgba(255, 120, 40, 0.25);
  transition: box-shadow 720ms ease-out;
}

/* ── symbol_land_bounce_plus ── */
[data-game-stage][data-spsymbollandbounceplus="b"] [data-game-stage-reels].sp-bounce-plus {
  animation: sp-bounce-plus 280ms cubic-bezier(0.34, 1.4, 0.64, 1);
}

@keyframes sp-bounce-plus {
  0% { transform: translateY(0); }
  40% { transform: translateY(-3px); }
  100% { transform: translateY(0); }
}

/* ── vignette_spin_pulse ── */
[data-game-stage][data-spvignettespinpulse="b"] [data-game-stage-aspect].sp-vignette-pulse {
  box-shadow: inset 0 0 80px rgba(0, 0, 0, 0.35);
  transition: box-shadow 400ms ease-in-out;
}

/* ── micro_win_glimmer ── */
[data-game-stage][data-spmicrowinglimmer="b"] [data-game-stage-aspect].sp-micro-win-glimmer {
  animation: sp-win-glimmer 720ms ease-out;
}

@keyframes sp-win-glimmer {
  0% { filter: brightness(1); }
  25% { filter: brightness(1.15) saturate(1.1); }
  100% { filter: brightness(1); }
}

/* ── spin_momentum_feel ── */
[data-game-stage][data-spspinmomentumfeel="b"] [data-game-stage-reels].sp-momentum-active {
  filter: blur(0.3px) brightness(1.03);
  transition: filter 120ms ease-in;
}

/* ── idle_spin_handoff ── */
[data-game-stage][data-spidlespinhandoff="b"].sp-idle-handoff [data-game-stage-aspect] {
  transition: transform 220ms ease-out;
  transform: scale(0.998);
}

/* ── reel_frame_micro_shake ── */
[data-game-stage][data-spreelframemicroshake="b"] .sp-frame-micro-shake {
  animation: sp-micro-shake 180ms ease-out;
}

@keyframes sp-micro-shake {
  0%, 100% { transform: translate(0, 0); }
  25% { transform: translate(-1px, 0.5px); }
  75% { transform: translate(1px, -0.5px); }
}

/* ── ambient_hue_cycle ── */
[data-game-stage][data-spambienthuecycle="b"] .game-stage-bg.sp-hue-cycle {
  filter: hue-rotate(var(--sp-hue-shift, 0deg)) brightness(1.02);
  transition: filter 400ms ease-out;
}

/* ── bet_pulse_on_spin ── */
[data-game-stage][data-spbetpulseonspin="b"] [data-bet].sp-bet-pulse {
  animation: sp-bet-pulse 480ms ease-out;
  color: #ffe8a0;
}

@keyframes sp-bet-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.08); }
}

@media (prefers-reduced-motion: reduce) {
  [data-game-stage] .sp-land-spark,
  [data-game-stage] .sp-dust-motes,
  [data-game-stage] [data-game-stage-aspect].sp-camera-breathe,
  [data-game-stage] [data-game-stage-reels].sp-last-reel-satisfy {
    animation: none !important;
  }
}
