/* dareaper.app/live — Interact with the stream. Light on purpose: viewers pop over from the TikTok app on phones. */
.live-page .nav { position: sticky; top: 0; }
.live-page .grid-floor { animation: none; }
.live-main { position: relative; z-index: 1; width: min(860px, 100% - 32px); margin: 0 auto; padding: 36px 0 80px; }
.live-title {
  margin: 0;
  font: 700 clamp(2.4rem, 8vw, 4.2rem)/1 var(--display);
  letter-spacing: .01em;
  background: var(--grad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.live-lede { max-width: 34em; margin: 16px 0 26px; color: #c7c1d6; font-size: 1.05rem; }

.now-on {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(13, 11, 19, .85);
}
.now-swatch { flex: none; width: 56px; height: 56px; border-radius: 14px; background: var(--grad); box-shadow: 0 0 24px -6px rgba(255, 255, 255, .35); }
.now-on small { display: block; color: var(--muted); font: 600 .7rem/1 var(--display); letter-spacing: .26em; text-transform: uppercase; }
.now-on b { display: block; margin-top: 6px; font: 700 1.5rem/1 var(--display); letter-spacing: .03em; }
.now-on i { display: block; margin-top: 5px; color: var(--muted); font-size: .82rem; font-style: normal; }

.live-msg { min-height: 1.6em; margin: 16px 0 10px; color: var(--muted); font-size: .95rem; }
.live-msg.good { color: #8dffb0; }
.live-msg.bad { color: #ffb4bd; }

.palettes { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.palette {
  position: relative;
  display: grid;
  align-content: end;
  min-height: 104px;
  padding: 12px;
  border: 2px solid transparent;
  border-radius: 16px;
  color: #fff;
  font: 700 1rem/1.1 var(--display);
  letter-spacing: .05em;
  text-align: left;
  text-transform: uppercase;
  cursor: pointer;
  overflow: hidden;
  transition: transform .12s, opacity .2s;
  -webkit-tap-highlight-color: transparent;
}
.palette::after { /* darkens the bottom so the name reads on every colour */
  content: "";
  position: absolute;
  inset: 40% 0 0;
  background: linear-gradient(transparent, rgba(0, 0, 0, .65));
}
.palette span { position: relative; z-index: 1; text-shadow: 0 1px 6px rgba(0, 0, 0, .7); }
.palette:active { transform: scale(.96); }
.palette:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.palette.is-on { border-color: #fff; box-shadow: 0 0 0 3px rgba(255, 255, 255, .18); }
.palette.is-on::before {
  content: "ON STREAM";
  position: absolute;
  z-index: 1;
  top: 10px;
  left: 10px;
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(0, 0, 0, .7);
  font: 700 .62rem/1 var(--display);
  letter-spacing: .14em;
}
.palette:disabled { cursor: default; }
.palettes.waiting .palette:not(.is-on) { opacity: .45; }
.palette.is-rgb { background-size: 300% 100% !important; animation: rgb-slide 6s linear infinite; }
@keyframes rgb-slide { to { background-position: 300% 0; } }

.live-foot { margin-top: 30px; color: var(--muted); font-size: .88rem; line-height: 1.7; }

@media (max-width: 560px) {
  .live-main { padding-top: 24px; }
  .palettes { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .palette { min-height: 88px; }
}
@media (prefers-reduced-motion: reduce) { .palette.is-rgb { animation: none; } }
