/* Herald · Twitch — app tweaks. Base in glass-core.css. */
.tw-stage {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  border-radius: var(--r-md);
  overflow: hidden;
  background: #000;
  border: 1px solid var(--line);
}
#tw-video { flex: 1; min-height: 0; }
/* Watching + chat at once: video keeps the top, chat takes the rest. */
.tw-stage.with-chat #tw-video { flex: 0 0 54%; }
#tw-chat { flex: 1; min-height: 0; border-top: 1px solid var(--line); position: relative; }
#tw-chat.hidden { display: none; }
/* Loading / unavailable overlay — sits over the blank embed until it
   either loads or times out, so the user never gets a frozen spinner. */
.tw-chat-load {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 16px;
  text-align: center;
  background: #000;
}
.tw-chat-load .state-text { color: var(--text-secondary); font-size: var(--fs-sm); }
.tw-stage iframe { width: 100%; height: 100%; border: 0; display: block; }
#player .content { gap: 12px; }
.row-icon { color: #a970ff; }
.row-icon--live { color: #ff5c7a; }
.row-icon--live .icon { filter: drop-shadow(0 0 5px rgba(255, 92, 122, 0.75)); }
/* Live pill — luminous on the additive display */
.tw-live {
  flex-shrink: 0;
  font-size: var(--fs-xs);
  font-weight: 800;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  color: #ff5c7a;
  background: rgba(255, 92, 122, 0.14);
  border: 1px solid rgba(255, 92, 122, 0.4);
  padding: 4px 9px;
  border-radius: 999px;
}
