/* DEFINTEL stream components. Structure only: flex, spacing and motion rules.
   No brand colors, no fonts, no sizes for type. JADE styles these classes and data attributes later. */

/* The hub's one live region. Present for assistive tools, out of the visual flow. */
.stream-live {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* The ledger tape */
[data-tape="list"] {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

[data-tape="list"] > li {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.25rem 1rem;
  min-width: 0;
}

[data-tape="list"] .stream-cell {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  min-width: 0;
  overflow-wrap: anywhere;
}

[data-tape="status"],
[data-tape="freshness"],
[data-tape="empty"] {
  margin: 0 0 0.5rem;
}

[data-tape="notice"],
[data-tape="retry"] {
  align-self: flex-start;
}

[hidden] {
  display: none;
}

/* A short slide for a row that arrives at the top. The script adds this class only when motion is allowed. */
.stream-row-enter {
  animation: stream-row-slide 240ms ease-out;
}

@keyframes stream-row-slide {
  from {
    transform: translateY(-0.75rem);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

/* Reduced motion: nothing moves, whatever the script did. */
@media (prefers-reduced-motion: reduce) {
  .stream-row-enter {
    animation: none;
  }

  [data-tape="list"] > li,
  [data-tape="list"] .stream-cell {
    transition: none;
    animation: none;
  }
}
