/* $BELIEVE — Transmissions archive (js/transmissions.js owns the DOM).
   Same terminal language as the egg-log/cards: void field, Space Mono,
   green-on-black, hairline frame. z-index 90: above the HUD and sit layers,
   below #gate's 100 (only reachable post-gate anyway). */

.tx-chip {
  position: fixed;
  left: calc(1rem + env(safe-area-inset-left));
  bottom: calc(1rem + env(safe-area-inset-bottom));
  z-index: 20; /* same tier as the audio mute chip, opposite corner */
  appearance: none;
  padding: 0.55rem 0.8rem;
  border: 1px solid rgba(184, 214, 46, 0.4);
  background: rgba(5, 6, 3, 0.72);
  color: var(--believe-green, #b8d62e);
  font: 700 0.58rem/1 "Space Mono", "Courier New", monospace;
  letter-spacing: 0.18em;
  cursor: pointer;
  pointer-events: auto;
  touch-action: manipulation;
  transition: color 150ms ease, border-color 150ms ease;
}

.tx-chip:hover,
.tx-chip:focus-visible {
  color: var(--believe-bright, #d4f24b);
  border-color: rgba(212, 242, 75, 0.85);
  outline: none;
}

.tx-chip[hidden] {
  display: none;
}

/* Mobile: the HUD bottom sheet's peek bar owns the bottom edge — float
   above it, mirroring the mute button's clearance on the right. */
@media (max-width: 640px) {
  .tx-chip {
    bottom: calc(4.9rem + env(safe-area-inset-bottom));
  }
}

.tx {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, var(--believe-bg, #050603) 88%, transparent);
  backdrop-filter: blur(2px);
  font-family: "Space Mono", "Courier New", monospace;
}

.tx[hidden] {
  display: none;
}

.tx__frame {
  display: flex;
  flex-direction: column;
  width: min(640px, 94vw);
  max-height: min(84vh, 900px);
  border: 1px solid var(--believe-green, #b8d62e);
  background: var(--believe-bg, #050603);
  padding: 1.4rem 1.5rem 1rem;
  gap: 0.9rem;
}

.tx__head {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  border-bottom: 1px solid color-mix(in srgb, var(--believe-green, #b8d62e) 35%, transparent);
  padding-bottom: 0.8rem;
}

.tx__title {
  margin: 0;
  font-size: 1.15rem;
  letter-spacing: 0.16em;
  color: var(--believe-bright, #d4f24b);
}

.tx__sub {
  margin: 0;
  font-size: 0.6rem;
  letter-spacing: 0.2em;
  color: var(--believe-grey, #6a6f5e);
}

.tx__countdown {
  margin: 0.2rem 0 0;
  font-size: 0.66rem;
  letter-spacing: 0.12em;
  color: var(--believe-green, #b8d62e);
  min-height: 1em; /* reserve the line so the list never jumps */
}

.tx__close {
  position: absolute;
  top: 0;
  right: 0;
  appearance: none;
  padding: 0.4rem 0.7rem;
  border: 1px solid var(--believe-grey, #6a6f5e);
  background: none;
  color: var(--believe-grey, #6a6f5e);
  font: 700 0.58rem/1 "Space Mono", "Courier New", monospace;
  letter-spacing: 0.15em;
  cursor: pointer;
  touch-action: manipulation;
}

.tx__close:hover,
.tx__close:focus-visible {
  color: var(--believe-green, #b8d62e);
  border-color: var(--believe-green, #b8d62e);
}

/* The archive scrolls (28 logs by season's end) — wheel/drag native,
   scrollbar invisible per the site's no-visible-scrollbars law. */
.tx__list {
  overflow-y: auto;
  scrollbar-width: none;
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
  padding-right: 0.2rem;
}

.tx__list::-webkit-scrollbar {
  display: none;
}

.tx__entry {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.tx__entry-title {
  margin: 0;
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  color: var(--believe-bright, #d4f24b);
}

.tx__new {
  margin-left: 0.6rem;
  padding: 0.14rem 0.4rem;
  border: 1px solid var(--believe-bright, #d4f24b);
  font-size: 0.5rem;
  letter-spacing: 0.2em;
  vertical-align: middle;
  animation: txNewPulse 2.4s ease-in-out infinite;
}

@keyframes txNewPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.45; }
}

.tx__line {
  margin: 0;
  font-size: 0.74rem;
  line-height: 1.5;
  letter-spacing: 0.015em;
  color: var(--believe-green, #b8d62e);
}

.tx__line--dim {
  color: var(--believe-grey, #6a6f5e);
  letter-spacing: 0.1em;
}

.tx__footer {
  margin: 0;
  padding-top: 0.7rem;
  border-top: 1px solid color-mix(in srgb, var(--believe-green, #b8d62e) 35%, transparent);
  font-size: 0.56rem;
  letter-spacing: 0.2em;
  color: var(--believe-grey, #6a6f5e);
}

@media (prefers-reduced-motion: reduce) {
  .tx__new {
    animation: none;
  }
}
