


#winners {
  box-sizing: border-box;
  position: fixed;
  inset: 0;
  z-index: 1000;
  background:
    radial-gradient(60% 46% at 50% -10%, rgba(216, 186, 107, 0.22), transparent 70%),
    radial-gradient(46% 38% at 76% 90%, rgba(75, 179, 165, 0.12), transparent 70%),
    linear-gradient(180deg, #121824, #0b0e14);
  display: flex;
  padding: clamp(12px, 2.5vw, 40px);
  overflow-y: auto;
  backdrop-filter: blur(24px) saturate(130%);
  
  contain: paint;
}

#winners.hidden { display: none; }


.ceremony-sky {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}

.ceremony-sky::before {
  content: "";
  position: absolute;
  inset: -20%;
  background:
    conic-gradient(from 180deg at 50% -8%,
      transparent 40%,
      rgba(232, 203, 120, 0.09) 45.5%,
      rgba(240, 214, 140, 0.17) 50%,
      rgba(232, 203, 120, 0.09) 54.5%,
      transparent 60%),
    radial-gradient(50% 42% at 22% 16%, rgba(216, 186, 107, 0.18), transparent 70%),
    radial-gradient(46% 38% at 76% 90%, rgba(75, 179, 165, 0.12), transparent 70%);
  animation: orb-drift 26s ease-in-out infinite alternate;
}

@keyframes orb-drift {
  from { transform: translate3d(-1.5%, -1%, 0) scale(1); }
  to { transform: translate3d(1.5%, 1.5%, 0) scale(1.06); }
}


.ceremony-sparks {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}

.ceremony-sparks i {
  position: absolute;
  left: var(--x);
  bottom: -3%;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: #f0d488;
  box-shadow: 0 0 9px rgba(240, 212, 136, 0.95);
  opacity: 0;
  transform: scale(var(--s));
  animation: spark-rise var(--d) linear var(--delay) infinite;
}

@keyframes spark-rise {
  0% { opacity: 0; transform: translateY(0) scale(var(--s)); }
  7% { opacity: 0.85; }
  75% { opacity: 0.4; }
  100% { opacity: 0; transform: translateY(-110vh) scale(calc(var(--s) * 0.4)); }
}

.winners-stage {
  box-sizing: border-box;
  width: var(--page-width);
  max-width: 100%;
  margin: auto;
  text-align: center;
  animation: stage-in 720ms cubic-bezier(.16, 1, .3, 1);
}

@keyframes stage-in {
  from { opacity: 0; transform: translateY(28px); }
  to { opacity: 1; transform: none; }
}


.winners-heading p {
  animation: line-in 600ms cubic-bezier(.16, 1, .3, 1) backwards;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: #d6b768;
  font-family: var(--numeric);
  font-size: 0.66rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.winners-heading h2 {
  animation: line-in 800ms cubic-bezier(.16, 1, .3, 1) 140ms backwards;
  margin: clamp(10px, 2vh, 18px) 0 0;
  color: #f5f2e9;
  font-family: var(--font-display);
  font-size: clamp(2.4rem, 6vw, 4.8rem);
  font-weight: 250;
  letter-spacing: -0.04em;
  line-height: 1;
}

.awards-frame {
  animation: line-in 700ms cubic-bezier(.16, 1, .3, 1) 260ms backwards;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: stretch;
  gap: clamp(12px, 2.5vw, 32px);
}

.winner-dots {
  animation: line-in 600ms cubic-bezier(.16, 1, .3, 1) 420ms backwards;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin-top: clamp(24px, 4vh, 40px);
}

.ceremony-dismiss {
  animation: coin-in 520ms cubic-bezier(.34, 1.56, .64, 1) 620ms backwards;
  position: absolute;
  top: clamp(16px, 3vw, 32px);
  right: clamp(16px, 3vw, 32px);
  width: 54px;
  height: 54px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  color: #cfd5df;
  background: rgba(255, 255, 255, 0.05);
  box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.09),
    0 14px 34px rgba(3, 6, 10, 0.45);
  backdrop-filter: blur(12px);
  font-size: 1.5rem;
  line-height: 1;
  rotate: 8deg;
  transition: rotate 480ms cubic-bezier(.16, 1, .3, 1),
    scale 480ms cubic-bezier(.16, 1, .3, 1),
    background 480ms cubic-bezier(.16, 1, .3, 1),
    box-shadow 480ms cubic-bezier(.16, 1, .3, 1);
}

@keyframes line-in {
  from {
    opacity: 0;
    filter: blur(6px);
    transform: translateY(22px);
  }
}

@keyframes coin-in {
  from {
    scale: 0;
    rotate: 60deg;
  }
}
.winners-heading {
  margin-bottom: clamp(22px, 4vh, 44px);
}



.winners-heading p span {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: currentColor;
}





.ceremony-dismiss:hover {
  rotate: 0deg;
  scale: 1.06;
  color: #171207;
  background: #d8ba6b;
  box-shadow: 0 18px 40px rgba(3, 6, 10, 0.55);
}

.ceremony-dismiss:active {
  scale: 0.92;
}



.awards-viewport {
  min-width: 0;
  overflow: hidden;
}

.awards-rail {
  display: grid;
  align-items: stretch;
  min-height: clamp(440px, 70vh, 800px);
}
.award-card {
  --ease: cubic-bezier(0.32, 0.72, 0, 1);
  grid-area: 1 / 1;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  min-width: 0;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  filter: blur(10px);
  transform: translateY(30px) scale(0.985);
  
  transition:
    transform 700ms var(--ease),
    opacity 560ms var(--ease),
    filter 560ms var(--ease),
    visibility 0s linear 700ms;
}

.award-card.is-active {
  z-index: 2;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  filter: blur(0);
  transform: none;
  transition-delay: 0s;
}


.award-card:not(.is-active) {
  transition:
    transform 420ms cubic-bezier(.3, 0, .8, .6),
    opacity 360ms cubic-bezier(.3, 0, .8, .9),
    filter 420ms cubic-bezier(.3, 0, .8, 1),
    visibility 0s linear 700ms;
}

.award-card .slide-ghost {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: -1;
  width: clamp(340px, 58vh, 680px);
  height: clamp(340px, 58vh, 680px);
  transform: translate(-50%, -50%);
  object-fit: cover;
  opacity: 0.16;
  filter: saturate(0.85);
  -webkit-mask-image: radial-gradient(closest-side, #000 55%, transparent 98%);
  mask-image: radial-gradient(closest-side, #000 55%, transparent 98%);
}


.award-card::before {
  content: attr(data-symbol);
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: -1;
  transform: translate(-50%, -50%);
  font-size: clamp(300px, 46vh, 540px);
  font-weight: 250;
  line-height: 1;
  color: rgba(240, 220, 170, 0.05);
  pointer-events: none;
}


.award-card:has(.slide-ghost)::before {
  content: none;
}


.award-card:not(.is-active) > * {
  opacity: 0;
}

.award-card.is-active > * {
  animation: line-in 640ms cubic-bezier(.16, 1, .3, 1) backwards;
}

.award-card.is-active > :nth-child(1) { animation-delay: 140ms; }
.award-card.is-active > :nth-child(2) { animation-delay: 240ms; }
.award-card.is-active > :nth-child(3) { animation-delay: 420ms; }
.award-card.is-active > :nth-child(4) { animation-delay: 560ms; }
.award-card.is-active > :nth-child(5) { animation-delay: 1250ms; }

.award-card.is-active .slide-winner strong {
  animation: hero-in 950ms cubic-bezier(.16, 1, .3, 1) 500ms backwards;
}

@keyframes hero-in {
  from {
    opacity: 0;
    filter: blur(8px);
    transform: translateY(38px);
  }
}

.award-card.is-active .slide-winner em {
  animation: value-pop 600ms cubic-bezier(.34, 1.56, .64, 1) 1050ms backwards;
}

@keyframes value-pop {
  from {
    opacity: 0;
    scale: 0.85;
  }
}

.award-card.is-active::before {
  animation: mark-settle 1500ms cubic-bezier(.16, 1, .3, 1) backwards;
}

@keyframes mark-settle {
  from {
    opacity: 0;
    transform: translate(-50%, -50%) scale(1.07);
  }
}

.slide-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 clamp(16px, 3vh, 28px);
  padding: 7px 16px;
  border-radius: 999px;
  background: rgba(216, 186, 107, 0.1);
  box-shadow: inset 0 0 0 1px rgba(216, 186, 107, 0.22);
  color: #d6b768;
  font-family: var(--numeric);
  font-size: 0.64rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.slide-mark {
  font-size: 0.85rem;
  letter-spacing: 0;
}

.slide-title {
  margin: 0;
  color: var(--award-accent, #d8ba6b);
  font-family: var(--font-display);
  font-size: clamp(3.2rem, 7vw, 5.8rem);
  font-weight: 320;
  letter-spacing: -0.03em;
  line-height: 1.02;
  overflow-wrap: anywhere;
}

.slide-winner {
  margin-top: clamp(22px, 4vh, 40px);
}

.slide-winner span {
  display: block;
  margin-bottom: 14px;
  color: #8b93a3;
  font-family: var(--numeric);
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.3em;
  text-transform: uppercase;
}

.slide-winner strong {
  display: block;
  color: #f5f2e9;
  font-weight: 600;
  text-shadow:
    0 0 30px rgba(240, 210, 130, 0.25),
    0 2px 4px rgba(0, 0, 0, 0.6);
  font-size: clamp(2.3rem, 5.5vw, 4.4rem);
  letter-spacing: -0.02em;
  line-height: 1;
  overflow-wrap: anywhere;
}

.slide-winner em {
  display: block;
  margin-top: clamp(12px, 2vh, 20px);
  color: var(--crown-gold);
  font-family: var(--numeric);
  font-variant-numeric: tabular-nums;
  font-size: clamp(1.4rem, 2.6vw, 2rem);
  font-style: normal;
  font-weight: 700;
}

/* Shown only when the tiebreak, not the score, decided the winner. */
.slide-tiebreak {
  display: inline-block;
  margin-top: clamp(10px, 1.8vh, 16px);
  padding: 6px 14px;
  border-radius: 999px;
  color: var(--award-accent, #d8ba6b);
  background: color-mix(in srgb, var(--award-accent, #d8ba6b) 8%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--award-accent, #d8ba6b) 22%, transparent);
  font-family: var(--numeric);
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.slide-runners {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 16px;
  margin-top: clamp(26px, 5vh, 48px);
}

.runner-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  min-width: 220px;
  padding: 16px 28px 18px;
  border-radius: 18px;
  background:
    radial-gradient(circle at 50% 0%, rgba(216, 186, 107, 0.08), transparent 60%),
    rgba(255, 255, 255, 0.035);
  box-shadow:
    inset 0 1px 1px rgba(255, 255, 255, 0.09),
    inset 0 -1px 0 rgba(255, 255, 255, 0.02);
}

.runner-place {
  color: #d6b768;
  font-family: var(--numeric);
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.runner-card strong {
  max-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #e8ebf1;
  font-size: 1.05rem;
  font-weight: 600;
}

.runner-card em {
  font-family: var(--numeric);
  font-variant-numeric: tabular-nums;
  font-style: normal;
  color: #8b93a3;
}

.winner-arrow,
.winner-dot {
  border: 0;
  cursor: pointer;
}

.winner-arrow {
  align-self: center;
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  padding: 0;
  border-radius: 50%;
  color: #e9edf3;
  background: rgba(255, 255, 255, 0.055);
  box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.1);
  font-size: 1.15rem;
  transition:
    color 420ms cubic-bezier(.16, 1, .3, 1),
    transform 420ms cubic-bezier(.16, 1, .3, 1),
    background 420ms cubic-bezier(.16, 1, .3, 1);
}

.winner-arrow:hover { color: #171207; background: #d8ba6b; }
#previousWinner:hover { transform: translateX(-3px); }
#nextWinner:hover { transform: translateX(3px); }



.winner-dot {
  display: grid;
  place-items: center;
  width: 34px;
  height: 20px;
  padding: 0;
  border-radius: 999px;
  background: transparent;
  transition: transform 480ms var(--ease);
}

.winner-dot span {
  width: 100%;
  height: 2px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.16);
  transition:
    background 480ms var(--ease),
    transform 480ms var(--ease);
}

.winner-dot:hover span { background: rgba(255, 255, 255, 0.36); }

.winner-dot.is-active span {
  background: #d8ba6b;
  transform: scaleX(1.3);
}

.award-card:focus-visible,
.ceremony-dismiss:focus-visible,
.winner-arrow:focus-visible,
.winner-dot:focus-visible {
  outline: 2px solid #e0c477;
  outline-offset: 3px;
}

body.winners-open {
  overflow: hidden;
}




@media (max-width: 900px) {
  .awards-frame {
    grid-template-columns: 1fr;
  }

  .winner-arrow {
    display: none;
  }

  .slide-ghost,
  .award-card::before {
    font-size: clamp(160px, 30vh, 280px);
  }

  .award-card .slide-ghost {
    width: clamp(200px, 34vh, 340px);
    height: clamp(200px, 34vh, 340px);
  }
}


@media (max-width: 700px) {
  .winners-heading {
    margin-bottom: 20px;
  }

  .awards-rail {
    min-height: 0;
  }

  .slide-winner strong {
    font-size: clamp(1.8rem, 8vw, 2.6rem);
  }
}

@media (max-width: 560px) {
  #winners {
    padding: 12px;
  }

  .ceremony-dismiss {
    top: 12px;
    right: 12px;
    width: 44px;
    height: 44px;
    font-size: 1.25rem;
  }

  .winners-heading h2 {
    font-size: clamp(1.8rem, 8.5vw, 2.5rem);
  }

  .slide-title {
    font-size: clamp(2.4rem, 10vw, 3.4rem);
  }

  .slide-runners {
    margin-top: 22px;
    gap: 10px;
  }

  .runner-card {
    flex: 1 1 140px;
    min-width: 0;
    padding: 12px 10px 14px;
  }

  .runner-card strong {
    max-width: 150px;
    font-size: 0.92rem;
  }
}

/*
 * Short viewports: the stage is a stack of fixed-size pieces, so on a laptop
 * height it overflows the overlay into an inner scrollbar. Shrinking the
 * vertical rhythm and the rail floor keeps the whole ceremony on screen.
 */
@media (max-height: 1000px) {
  #winners {
    padding-block: clamp(12px, 2vh, 24px);
  }

  .winners-heading {
    margin-bottom: clamp(14px, 2.5vh, 28px);
  }

  .awards-rail {
    min-height: min(52vh, 540px);
  }

  .slide-winner {
    margin-top: clamp(14px, 3vh, 30px);
  }

  .slide-runners {
    margin-top: clamp(16px, 3vh, 32px);
  }

  .winner-dots {
    margin-top: clamp(12px, 2.5vh, 24px);
  }
}

@media (max-height: 780px) {
  .winners-heading h2 {
    font-size: clamp(1.9rem, 5.2vh, 3rem);
  }

  .slide-title {
    font-size: clamp(2rem, 5.6vh, 3.2rem);
  }

  .slide-winner strong {
    font-size: clamp(1.7rem, 5vh, 3rem);
  }

  .awards-rail {
    min-height: min(46vh, 430px);
  }
}




#winners.is-closing {
  animation: ceremony-out 280ms cubic-bezier(0.3, 0, 0.8, 0.6) forwards;
}

#winners.is-closing .winners-stage {
  animation: stage-out 280ms cubic-bezier(0.3, 0, 0.8, 0.6);
}

@keyframes ceremony-out {
  to { opacity: 0; }
}

@keyframes stage-out {
  to {
    opacity: 0;
    transform: translateY(20px) scale(0.985);
    filter: blur(6px);
  }
}



@media (prefers-reduced-motion: reduce) {
  .ceremony-sky::before,
  #winners.is-closing,
  #winners.is-closing .winners-stage,
  .winners-stage,
  .award-card,
  .award-card > *,
  .award-card.is-active::before,
  .award-card.is-active .slide-winner strong,
  .award-card.is-active .slide-winner em,
  .ceremony-sparks i,
  .ceremony-dismiss,
  .winner-arrow,
  .winner-dot span,
  .award-card.award--bappo.is-active,
  .award-card.award--slay.is-active::after,
  .award-card.award--slay::after {
    animation: none !important;
    transition: none !important;
    transform: translate(0, 0) !important;
    scale: none;
    rotate: 0deg;
    filter: none !important;
    opacity: 1 !important;
  }

  .award-card.award--slay::after { opacity: 0 !important; }

  .award-card::before,
  .award-card .slide-ghost {
    transform: translate(-50%, -50%) !important;
    opacity: 1;
  }

  
  .award-card:not(.is-active),
  .award-card:not(.is-active) > * {
    opacity: 0 !important;
  }
}


/*
 * Per-category identity. Each award card carries award--<id>; the accent
 * colours the eyebrow, mark, and value, and a couple of categories get their
 * own CSS-only flourish on top of the shared stage.
 */
.award-card {
  --award-accent: #d8ba6b;
}

.award-card .slide-mark,
.award-card .slide-eyebrow {
  color: var(--award-accent);
}

.award-card .slide-eyebrow {
  background: color-mix(in srgb, var(--award-accent) 10%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--award-accent) 25%, transparent);
}

.award-card.is-active .slide-winner em {
  color: var(--award-accent);
}

.award-card.award--bappo {
  --award-accent: #c96f5e;
}

.award-card.award--free-to-do-as-i-please {
  --award-accent: #9aa7e8;
}

.award-card.award--comeback-kid {
  --award-accent: #6fd0b2;
}

.award-card.award--slay {
  --award-accent: #f0a0c8;
}

/* Bappo: the ground shakes once the slide settles. Animating rotate (not
 * transform) keeps it clear of the carousel's transform transitions. */
@keyframes bappo-shake {
  0%, 100% { rotate: 0deg; }
  15% { rotate: -0.5deg; }
  30% { rotate: 0.4deg; }
  45% { rotate: -0.3deg; }
  60% { rotate: 0.2deg; }
  75% { rotate: -0.1deg; }
}

.award-card.award--bappo.is-active {
  animation: bappo-shake 900ms cubic-bezier(.36, .07, .19, .97) 1.1s;
}

/* Slay: a pink glitter drift over the whole slide while it holds focus. */
.award-card.award--slay::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0;
  background-image:
    radial-gradient(circle at 12% 78%, rgba(240, 160, 200, 0.85) 1px, transparent 1.6px),
    radial-gradient(circle at 34% 22%, rgba(255, 200, 228, 0.8) 1px, transparent 1.5px),
    radial-gradient(circle at 58% 64%, rgba(240, 160, 200, 0.75) 1.4px, transparent 2px),
    radial-gradient(circle at 76% 30%, rgba(255, 214, 236, 0.85) 1px, transparent 1.6px),
    radial-gradient(circle at 90% 74%, rgba(240, 160, 200, 0.7) 1.2px, transparent 1.8px),
    radial-gradient(circle at 22% 46%, rgba(255, 200, 228, 0.65) 1px, transparent 1.5px),
    radial-gradient(circle at 66% 88%, rgba(240, 160, 200, 0.8) 1px, transparent 1.5px);
}

.award-card.award--slay.is-active::after {
  animation: slay-twinkle 2.8s ease-in-out infinite;
}

@keyframes slay-twinkle {
  0%, 100% { opacity: 0.25; }
  50% { opacity: 0.85; }
}

/* Comeback Kid: the big background arrow keeps drifting upward — always
 * climbing, like the award says. */
.award-card.award--comeback-kid.is-active::before {
  animation:
    mark-settle 1500ms cubic-bezier(.16, 1, .3, 1) backwards,
    comeback-drift 6s ease-in-out 1.6s infinite alternate;
}

@keyframes comeback-drift {
  from { translate: 0 1.5%; }
  to { translate: 0 -1.5%; }
}

/* Ladder Champion: the headline. The name carries its own slow halo pulse. */
.award-card.award--lp-gained.is-active .slide-winner strong {
  text-shadow:
    0 0 30px rgba(240, 210, 130, 0.25),
    0 2px 4px rgba(0, 0, 0, 0.6),
    0 0 60px rgba(216, 186, 107, 0.35);
  animation:
    hero-in 950ms cubic-bezier(.16, 1, .3, 1) 500ms backwards,
    champion-halo 3.4s ease-in-out 1.6s infinite alternate;
}

@keyframes champion-halo {
  from { text-shadow: 0 0 30px rgba(240, 210, 130, 0.25), 0 2px 4px rgba(0, 0, 0, 0.6), 0 0 60px rgba(216, 186, 107, 0.35); }
  to { text-shadow: 0 0 42px rgba(240, 214, 140, 0.45), 0 2px 4px rgba(0, 0, 0, 0.6), 0 0 90px rgba(216, 186, 107, 0.55); }
}


/*
 * Best Clip -- the members' award that closes the ceremony. The stage keeps
 * the podium's own language: a hairline gold frame instead of a browser
 * chrome box, the numeric face for the figures, one gold accent. The player
 * is meant to read as part of the podium, not an embed dropped into it.
 */
.award-card.award--best-clip {
  --award-accent: #d8ba6b;
}

.best-clip-stage {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(14px, 2.6vh, 26px);
  width: min(860px, 84vw);
  margin-top: clamp(12px, 2.4vh, 26px);
}

.best-clip-media {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: 14px;
  overflow: hidden;
  background:
    radial-gradient(80% 100% at 50% 0%, rgba(216, 186, 107, 0.1), transparent 60%),
    #05070b;
  background-size: cover;
  background-position: center;
  box-shadow:
    inset 0 0 0 1px rgba(216, 186, 107, 0.28),
    0 24px 70px rgba(3, 6, 10, 0.6);
  display: grid;
  place-items: center;
}

.best-clip-play {
  width: clamp(58px, 8vh, 72px);
  height: clamp(58px, 8vh, 72px);
  padding: 0;
  border-radius: 50%;
  border: 1px solid rgba(240, 194, 80, 0.6);
  background: rgba(18, 23, 34, 0.82);
  backdrop-filter: blur(4px);
  color: #f0c250;
  display: grid;
  place-items: center;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.6);
  transition: transform 150ms ease, background 150ms ease, border-color 150ms ease, box-shadow 150ms ease;
}

.best-clip-play:hover {
  transform: scale(1.08);
  background: rgba(240, 194, 80, 0.2);
  border-color: #f0c250;
  box-shadow: 0 0 24px rgba(240, 194, 80, 0.4);
  color: #ffffff;
}

.best-clip-play:focus-visible {
  outline: 2px solid #e0c477;
  outline-offset: 3px;
}

.best-clip-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #05070b;
}

.best-clip-credits {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(8px, 1.6vh, 14px);
}

.best-clip-quote {
  margin: 0;
  max-width: 72ch;
  color: #e8ebf1;
  font-size: clamp(0.9rem, 1.5vw, 1.1rem);
  font-style: italic;
  overflow-wrap: anywhere;
}

.best-clip-voters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 10px;
  max-width: 620px;
  min-height: clamp(34px, 4.2vh, 46px);
}

/* One icon, one voter. No names: the members are the award, not a list. */
.voter-icon {
  width: clamp(34px, 4.2vh, 46px);
  aspect-ratio: 1;
  border-radius: 50%;
  overflow: hidden;
  opacity: 0;
  animation: voter-in 480ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
  box-shadow:
    inset 0 0 0 1px rgba(216, 186, 107, 0.35),
    0 6px 16px rgba(3, 6, 10, 0.5);
}

.voter-icon img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.voter-icon--default {
  background:
    radial-gradient(circle at 35% 30%, rgba(240, 214, 140, 0.5), transparent 65%),
    rgba(216, 186, 107, 0.2);
}

@keyframes voter-in {
  0% { opacity: 0; scale: 0.3; filter: blur(4px); }
  60% { opacity: 1; scale: 1.14; filter: blur(0); }
  100% { opacity: 1; scale: 1; }
}

.best-clip-missing,
.best-clip-unplayable,
.best-clip-rehearsal-note {
  margin: 0;
  color: #8b93a3;
  font-family: var(--numeric);
  font-size: 0.78rem;
  letter-spacing: 0.08em;
}

.best-clip-retry {
  margin-top: 6px;
  padding: 10px 22px;
  border: 1px solid rgba(240, 194, 80, 0.5);
  border-radius: 999px;
  background: rgba(240, 194, 80, 0.08);
  color: #f0c250;
  font-family: var(--numeric);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background 200ms ease, color 200ms ease;
}

.best-clip-retry:hover {
  background: #d8ba6b;
  color: #171207;
}

.best-clip-retry:focus-visible {
  outline: 2px solid #e0c477;
  outline-offset: 3px;
}

@media (max-width: 700px) {
  .best-clip-stage {
    width: min(560px, 92vw);
  }
}

/* The voters' pop-in is exactly the kind of thing reduced motion turns off;
 * the icons land at once, all present. */
@media (prefers-reduced-motion: reduce) {
  .voter-icon {
    animation: none;
    opacity: 1;
    filter: none;
    scale: none;
  }
}

/* Settling banner --------------------------------------------------------- */

.settling-banner {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 0 auto clamp(16px, 2.5vw, 24px);
  padding: 14px 20px;
  width: 100%;
  max-width: var(--page-width);
  background: rgba(18, 24, 38, 0.85);
  border: 1px solid rgba(216, 186, 107, 0.28);
  border-left: 3px solid #d8ba6b;
  border-radius: 8px;
  color: #cfd5df;
  font-family: var(--font-display, "Space Grotesk", sans-serif);
  box-shadow: 0 4px 18px rgba(3, 6, 10, 0.35);
  backdrop-filter: blur(12px);
}

.settling-banner.hidden {
  display: none;
}

.settling-banner__indicator {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(216, 186, 107, 0.12);
  border: 1px solid rgba(216, 186, 107, 0.35);
}

.settling-banner__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #d8ba6b;
  box-shadow: 0 0 8px rgba(216, 186, 107, 0.8);
  animation: settling-pulse 2.4s ease-in-out infinite;
}

@keyframes settling-pulse {
  0%, 100% {
    transform: scale(0.85);
    opacity: 0.6;
  }
  50% {
    transform: scale(1.15);
    opacity: 1;
    box-shadow: 0 0 12px rgba(216, 186, 107, 1);
  }
}

.settling-banner__body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.settling-banner__tag {
  font-family: var(--numeric, monospace);
  font-size: 0.68rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #d8ba6b;
  font-weight: 600;
}

.settling-banner__text {
  font-size: 0.88rem;
  line-height: 1.45;
  color: #e2e8f0;
  margin: 0;
}

.settling-banner__text strong {
  color: #f5f2e9;
  font-weight: 600;
}

.settling-banner__text span {
  color: #94a3b8;
  margin-left: 6px;
}

@media (prefers-reduced-motion: reduce) {
  .settling-banner__dot {
    animation: none !important;
    transform: none !important;
  }
}
