/* Runtime 4.0.3 — collision-free lower production lanes + talking-point overflow. */

/* Audience Energy is a compact dedicated strip between game content and the
   persistent rail. The 34px meter ends at 1266px; the rail begins at 1280px. */
#broadcast-stage .engagement-energy,
#broadcast-stage[data-scene="AUDIO_TRIVIA"] .engagement-energy,
#broadcast-stage[data-scene="ODD_ONE_OUT"] .engagement-energy,
#broadcast-stage[data-scene="STANDBY"] .engagement-energy,
#broadcast-stage[data-scene="SAFE_STANDBY"] .engagement-energy,
#broadcast-stage[data-scene="LOBBY"] .engagement-energy,
#broadcast-stage[data-scene="ROUND_INTRO"] .engagement-energy{
  top:1232px!important;
  height:34px!important;
  padding:0 14px!important;
  gap:10px!important;
  border-radius:11px!important;
  z-index:18!important;
  box-shadow:0 5px 14px rgba(0,0,0,.22)!important;
}
#broadcast-stage .engagement-energy-label{font-size:11px!important;gap:5px!important}
#broadcast-stage .engagement-energy-label b{font-size:17px!important}
#broadcast-stage .engagement-energy-track{height:6px!important}
#broadcast-stage .engagement-energy-count{font-size:11px!important}
#broadcast-stage .engagement-energy-count span{font-size:9px!important}
#broadcast-stage .status-rail{top:1280px!important;z-index:22!important}

/* Keep optional audience badges away from the rail itself. */
#broadcast-stage .supporter-spotlight{top:1080px!important;z-index:16!important}
#broadcast-stage .engagement-sponsor{top:1080px!important;z-index:16!important}

/* Long talking points first shrink to a readable 20px minimum. If they still
   overflow, JS wraps the copy in this slow upward float so every line is seen. */
.reveal-fact-text.reveal-fact-text--scrolling{
  display:block!important;
  align-items:initial!important;
  justify-content:initial!important;
  text-wrap:pretty;
}
.reveal-fact-scroll{
  display:block;
  width:100%;
  animation:reveal-fact-float var(--fact-scroll-duration,14s) ease-in-out 1.2s infinite alternate;
  will-change:transform;
}
@keyframes reveal-fact-float{
  0%,8%{transform:translateY(0)}
  92%,100%{transform:translateY(calc(-1 * var(--fact-scroll-distance,0px)))}
}
.reduced-motion .reveal-fact-scroll{animation:none!important;transform:none!important}

/* Final Results contains real participants only. Zero participants gets one
   honest empty-state card rather than fabricated ranking slots. */
.final-results-empty{
  position:absolute;left:0;top:18px;width:972px;min-height:190px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;padding:30px;border:2px solid rgba(123,191,255,.23);border-radius:24px;
  background:linear-gradient(155deg,rgba(12,25,55,.98),rgba(5,10,25,.99));text-align:center;
}
.final-results-empty strong{color:var(--color-white);font-size:34px;font-weight:950;letter-spacing:.02em}
.final-results-empty span{max-width:760px;color:var(--color-muted);font-size:22px;font-weight:800;line-height:1.25}


/* A leaderboard with no participants should never look broken or unfinished. */
.leaderboard-empty-state{
  position:absolute;left:0;top:24px;width:972px;min-height:190px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  padding:30px;border:2px solid rgba(123,191,255,.23);border-radius:24px;
  background:linear-gradient(155deg,rgba(12,25,55,.98),rgba(5,10,25,.99));text-align:center;
}
.leaderboard-empty-state strong{color:var(--color-white);font-size:34px;font-weight:950}
.leaderboard-empty-state span{max-width:760px;color:var(--color-muted);font-size:22px;font-weight:800;line-height:1.25}
