/**
 * RC7.2 Premium Presentation Polish — presentation only.
 * Symbols, paylines, portraits, bonus intro identity, reel chrome, visual cleanup.
 */

/* ===== TASK 4 — Character meter portraits 85–92% frame ===== */
.playground--player-view .character-meter-portrait--v2 .character-meter-portrait-image {
  height: 90% !important;
  max-width: 94% !important;
}

/* ===== TASK 5 — UJN puppets larger ===== */
.playground--player-view [data-game-stage-aspect] > .ujn-puppet-row--stage .ujn-puppet-image {
  width: clamp(64px, 13vw, 92px) !important;
  height: clamp(64px, 13vw, 92px) !important;
}

.playground--player-view .ujn-puppet-row--stage .ujn-puppet-body {
  min-width: clamp(64px, 13vw, 92px);
  min-height: clamp(64px, 13vw, 92px);
}

/* ===== TASK 6 — Bonus intro identity (enhance, not redesign) ===== */

/* Hansolo — industrial RGB electric */
.bonus-intro-identity--hansolo .bonus-intro-giant-silhouette {
  filter: drop-shadow(0 0 18px rgba(255, 68, 68, 0.55)) drop-shadow(0 0 32px rgba(0, 200, 255, 0.35));
}

.bonus-intro-identity--hansolo .bonus-intro-neon-flash {
  background: linear-gradient(135deg, rgba(255, 60, 60, 0.5), rgba(0, 220, 255, 0.35));
  mix-blend-mode: screen;
}

.bonus-intro-identity--hansolo .bonus-intro-bass-ring {
  border-color: rgba(255, 80, 80, 0.7);
  box-shadow: 0 0 24px rgba(255, 80, 80, 0.45), inset 0 0 12px rgba(0, 200, 255, 0.2);
}

/* Kissik — pink sticky toxic glow */
.bonus-intro-identity--kissik {
  filter: drop-shadow(0 0 20px rgba(255, 105, 180, 0.35));
}

.bonus-intro-identity--kissik .bonus-intro-heart {
  text-shadow: 0 0 8px rgba(255, 105, 180, 0.8);
  animation: rc72-kissik-breathe 3.2s ease-in-out infinite;
}

@keyframes rc72-kissik-breathe {
  0%,
  100% {
    opacity: 0.55;
    transform: scale(1);
  }
  50% {
    opacity: 0.85;
    transform: scale(1.06);
  }
}

/* Viking — lightning wind rumble */
.bonus-intro-identity--viking .bonus-intro-thunder-flash {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.85), rgba(79, 195, 247, 0.4));
}

.bonus-intro-identity--viking .bonus-intro-stage-slam {
  background: linear-gradient(0deg, rgba(79, 195, 247, 0.35), transparent 70%);
}

.bonus-intro-active .bonus-intro-identity--viking ~ .bonus-intro-panel,
.bonus-intro-overlay:has(.bonus-intro-identity--viking) .bonus-intro-panel {
  text-shadow: 0 0 12px rgba(79, 195, 247, 0.45);
}

/* UJN — terminal scan glitch */
.bonus-intro-identity--ujn .bonus-intro-terminal-boot {
  font-family: ui-monospace, 'Cascadia Code', monospace;
  text-shadow: 0 0 6px rgba(46, 204, 113, 0.65);
  letter-spacing: 0.04em;
}

.bonus-intro-identity--ujn .bonus-intro-package-scan {
  background: linear-gradient(90deg, transparent, rgba(46, 204, 113, 0.55), transparent);
  mix-blend-mode: screen;
}

.bonus-intro-identity--ujn .bonus-intro-glitch-hit {
  background: repeating-linear-gradient(
    0deg,
    rgba(46, 204, 113, 0.15) 0 2px,
    transparent 2px 4px
  );
}

/* ===== TASK 7+9 — Reel presentation weight (DOM layer) ===== */
.playground--player-view .game-stage-reels {
  box-shadow:
    inset 0 1px 0 rgba(255, 248, 220, 0.12),
    inset 0 -2px 8px rgba(0, 0, 0, 0.35),
    0 4px 18px rgba(0, 0, 0, 0.45);
}

.playground--player-view .game-stage-reels::after {
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0.06) 0%,
    transparent 18%,
    transparent 82%,
    rgba(0, 0, 0, 0.28) 100%
  );
}

.slot-idle-motion-active .game-stage-reels::before {
  opacity: 0.55;
}

/* Metallic rim light sweep — reel weight */
@keyframes rc72-reel-rim-sweep {
  0% {
    transform: translateX(-120%);
    opacity: 0;
  }
  15% {
    opacity: 0.35;
  }
  100% {
    transform: translateX(120%);
    opacity: 0;
  }
}

.slot-idle-motion-active .game-stage-reels::before {
  animation:
    slot-reel-frame-lights 3.5s linear infinite,
    rc72-reel-rim-sweep 8s ease-in-out infinite;
}

/* ===== TASK 2 — Payline board alive ===== */
.win-importance--strong .game-stage-reels,
.win-importance--epic .game-stage-reels,
.win-importance--legendary .game-stage-reels {
  filter: brightness(1.02);
}

.full-line-celebration-active .game-stage-reels {
  filter: brightness(1.06) saturate(1.05);
}

/* ===== TASK 8 — Visual cleanup: softer payline glow ===== */
.payline-overlay--variant-c .payline-path {
  filter: drop-shadow(0 0 4px rgba(255, 215, 0, 0.35));
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .bonus-intro-identity--kissik .bonus-intro-heart,
  .slot-idle-motion-active .game-stage-reels::before {
    animation: none !important;
  }
}
