/* ============================================================
   CATBACK ticker — the live status strip along the very bottom.

   Hardware chrome: an --ink-2 rail with a 2px --forest-2 top
   border, VT323 terminal-green text, "◆" separators, a blinking
   status LED at the far left and a thin cyan head pixel leading
   each pass of the scroll. All colors/fonts from tokens.css.

   The bar itself never traps clicks (pointer-events:none); only
   .ticker-viewport re-enables pointer events for hover-pause.
   Height is exactly var(--ticker-h) so the audio toggle (which
   offsets by --ticker-h in base.css) always clears it.
   ============================================================ */

.ticker-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  height: var(--ticker-h);
  z-index: var(--z-ticker);
  display: flex;
  align-items: center;
  background:
    repeating-linear-gradient(0deg, transparent 0 2px, var(--scanline) 2px 4px),
    var(--ink-2);
  border-top: 2px solid var(--forest-2);
  box-shadow: 0 calc(-1 * var(--px)) 0 var(--ink), 0 -8px 18px rgba(0, 0, 0, 0.35);
  font-family: var(--font-term);
  font-size: 16px;
  line-height: 1;
  letter-spacing: 1px;
  color: var(--terminal);
  overflow: hidden;
  pointer-events: none;
  user-select: none;
}

/* blinking status LED, far left */
.ticker-led {
  flex: none;
  width: 8px;
  height: 8px;
  margin: 0 11px 0 12px;
  background: var(--terminal);
  box-shadow: 0 0 6px var(--glow-terminal);
  animation: ticker-led-blink 2.8s steps(1, end) infinite;
}
@keyframes ticker-led-blink {
  0%, 100% { opacity: 1; }
  42%      { opacity: 1; }
  46%      { opacity: 0.25; }
  50%      { opacity: 1; }
  54%      { opacity: 0.25; }
  58%      { opacity: 1; }
}
body[data-motion="reduce"] .ticker-led { animation: none; }

/* scrolling window — the only part that accepts pointer events
   (hover pauses the marquee; nothing here is clickable) */
.ticker-viewport {
  flex: 1 1 auto;
  position: relative;
  height: 100%;
  overflow: hidden;
  pointer-events: auto;
}

.ticker-track {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  display: flex;
  width: max-content;
  will-change: transform;
}

.ticker-strip {
  flex: none;
  display: flex;
  align-items: center;
  white-space: nowrap;
}

/* thin cyan head pixel that leads each pass of the scroll */
.ticker-head {
  flex: none;
  width: 3px;
  height: 14px;
  margin-right: 14px;
  background: var(--sol-cyan);
  box-shadow: 0 0 8px var(--glow-cyan);
}

.ticker-item {
  flex: none;
  color: var(--terminal);
  text-shadow: 0 0 6px var(--glow-soft);
}
/* rare, purposeful accents: timely callouts only */
.ticker-item--hot  { color: var(--sol-cyan); text-shadow: 0 0 8px var(--glow-cyan); }
.ticker-item--gold { color: var(--gold);     text-shadow: 0 0 8px rgba(240, 197, 66, 0.45); }
.ticker-item--warn { color: var(--amber);    text-shadow: 0 0 8px rgba(230, 166, 60, 0.4); }

.ticker-sep {
  flex: none;
  margin: 0 12px;
  font-size: 11px;
  color: var(--terminal-dim);
  text-shadow: none;
}

/* reduced-motion presentation: static row, no scroll */
.ticker-static {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  height: 100%;
  overflow: hidden;
  white-space: nowrap;
  padding-right: 12px;
}

/* mobile: smaller type, tighter separators (JS also trims the pool) */
@media (max-width: 720px) {
  .ticker-bar { font-size: 14px; }
  .ticker-sep { margin: 0 8px; }
  .ticker-head { margin-right: 10px; }
}
