/* NBA News — live wire: a single timeline column with a time gutter. */

/* Live pill in the menu bar */
.hn-live {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--ih-mono); font-size: 11.5px; font-weight: 700; color: var(--nav-text-dim);
  padding: 6px 12px; border: 1px solid var(--nav-border); border-radius: 999px; background: var(--nav-surface);
}
.hn-live i { width: 8px; height: 8px; border-radius: 50%; background: #64748b; }
.hn-live.is-on { color: var(--nav-text); }
.hn-live.is-on i { background: #22c55e; box-shadow: 0 0 0 0 rgba(34,197,94,.6); animation: hn-pulse 2s infinite; }
.hn-live.is-off i { background: #ef4444; }
@keyframes hn-pulse { 0% { box-shadow: 0 0 0 0 rgba(34,197,94,.55); } 70% { box-shadow: 0 0 0 8px rgba(34,197,94,0); } 100% { box-shadow: 0 0 0 0 rgba(34,197,94,0); } }

.hn-cats { display: flex; gap: 6px; flex-wrap: wrap; }
.is-nba .hn-team { color-scheme: normal; background: var(--bg-card); border-color: var(--border-card); color: var(--text-1); border-radius: 999px; }

/* "N new updates" bar — sticks under the menu when the reader is scrolled down */
.hn-newbar {
  position: sticky; top: calc(var(--topbar-h, 36px) + var(--header-h, 64px) + 12px); z-index: 30;
  display: block; margin: 0 auto 10px; padding: 8px 18px; border: 0; border-radius: 999px;
  background: var(--ice); color: #fff; font-weight: 800; font-size: 12.5px; letter-spacing: .02em; cursor: pointer;
  box-shadow: 0 8px 20px -8px rgba(0,0,0,.45);
  animation: ih-rise .3s var(--ih-ease) both;
}
.hn-newbar[hidden] { display: none; }
.hn-newbar:hover { filter: brightness(1.08); }
.hn-newbar:focus-visible { outline: 2px solid var(--text-1); outline-offset: 2px; }

/* ── Feed ─────────────────────────────────────────────── */
.hn-feed { list-style: none; margin: 0; padding: 0; max-width: 920px; scroll-margin-top: calc(var(--ih-chrome) + 60px); }
.hn-item {
  position: relative;
  display: grid; grid-template-columns: 78px 34px minmax(0, 1fr); gap: 14px;
  padding: 14px 16px 14px 0;
  border-bottom: 1px solid var(--ih-rule);
}
/* Severity rail along the logo column */
.hn-item::before {
  content: ''; position: absolute; left: 95px; top: 0; bottom: 0; width: 2px; background: var(--ih-rule);
}
.hn-item.sev-critical::before { background: var(--hw-out); }
.hn-item.sev-high::before { background: var(--hw-q); }
.hn-when { text-align: right; display: flex; flex-direction: column; gap: 2px; padding-top: 2px; }
.hn-when time { font-size: 12px; font-weight: 700; color: var(--text-2); }
.hn-clock { font-size: 10.5px; color: var(--text-3); }
.hn-mark { position: relative; z-index: 1; display: flex; justify-content: center; padding-top: 1px; }
.hn-logo { width: 28px; height: 28px; object-fit: contain; background: var(--bg-base); border-radius: 50%; padding: 2px; }
.hn-dot { width: 10px; height: 10px; margin-top: 8px; border-radius: 50%; background: var(--text-3); box-shadow: 0 0 0 4px var(--bg-base); }
.hn-body { min-width: 0; }
.hn-tags { display: flex; gap: 6px; align-items: center; margin-bottom: 4px; flex-wrap: wrap; }
.hn-cat {
  font-family: var(--ih-mono); font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
  color: var(--text-3);
}
.hn-cat.cat-injury { color: var(--hw-out); }
.hn-cat.cat-lineup { color: var(--hw-up); }
.hn-cat.cat-breaking { color: var(--ice); }
.hn-new {
  font-family: var(--ih-mono); font-size: 9.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
  background: var(--ice); color: #fff; padding: 1px 6px; border-radius: 4px;
}
.hn-head { margin: 0; font-size: 15.5px; font-weight: 700; line-height: 1.3; color: var(--text-1); }
.hn-head a { color: inherit; text-decoration: none; }
.hn-head a:hover { color: var(--ice); text-decoration: underline; }
.hn-head a:focus-visible { outline: 2px solid var(--ice); outline-offset: 2px; }
.kind-status .hn-head { font-size: 14.5px; }
.hn-sum { margin: 4px 0 0; font-size: 13px; line-height: 1.45; color: var(--text-2); }
.hn-src { margin-top: 6px; font-size: 10.5px; color: var(--text-3); }

/* New arrival: a warm flash that settles (transform/opacity + background only) */
.hn-item.is-new { animation: hn-in .5s var(--ih-ease) both; background: linear-gradient(90deg, var(--ice-dim), transparent 70%); }
@keyframes hn-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .hn-item.is-new, .hn-newbar, .hn-live.is-on i { animation: none; }
}

@media (max-width: 720px) {
  .hn-item { grid-template-columns: 30px minmax(0, 1fr); gap: 10px; padding-right: 0; }
  .hn-item::before { left: 14px; }
  .hn-when { grid-column: 2; grid-row: 1; flex-direction: row; gap: 8px; text-align: left; order: -1; }
  .hn-mark { grid-column: 1; grid-row: 1 / span 2; }
  .hn-body { grid-column: 2; }
  .hn-cats { width: 100%; }
  .is-nba .hn-team { max-width: none; flex: 1; }
}
