/* Topic kit — styles for topic pages. Only design-system tokens. */
.tp-head { max-width: calc(var(--measure) + 120px); }
.tp-head.is-center { text-align: center; margin: 0 auto; }
.tp-title { margin: 0 0 var(--space-sm); color: var(--ink); }
.tp-intro { margin: 0 0 var(--space-md); color: var(--standfirst-ink, var(--ink-soft)); max-width: var(--measure); }
.tp-head.is-center .tp-intro { margin-left: auto; margin-right: auto; }

.tp-chips { display: flex; flex-wrap: wrap; gap: var(--space-xs); margin-top: var(--space-md); }
.tp-chips.is-center { justify-content: center; }
.tp-chip { display: inline-block; padding: var(--space-2xs) var(--space-md); border: var(--border-hairline) solid var(--line); border-radius: var(--tag-radius, 999px); color: var(--ink); text-decoration: none; background: var(--canvas); }
.tp-chip:hover { border-color: var(--ink); }
.tp-chip.is-active { background: var(--inverse); color: var(--on-inverse); border-color: var(--inverse); }

.tp-count { color: var(--ink-muted); margin: var(--space-md) 0 0; }
.tp-main > * + * { margin-top: var(--space-xl); }
.tp-rows > * { padding: var(--space-lg) 0; border-bottom: var(--border-hairline) solid var(--line-soft); }
.tp-rows > *:first-child { padding-top: 0; }

/* Page numbers / load more */
.tp-pages { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: var(--space-xs); }
.tp-page { min-width: 36px; height: 36px; padding: 0 var(--space-sm); display: inline-grid; place-items: center; border: var(--border-hairline) solid var(--line); border-radius: var(--radius-md, 4px); color: var(--ink); text-decoration: none; }
.tp-page:hover { border-color: var(--ink); }
.tp-page.is-active { background: var(--inverse); color: var(--on-inverse); border-color: var(--inverse); }
.tp-page.is-gap { border: 0; min-width: 20px; }
.tp-page.is-arrow { border: 0; color: var(--link); }
.tp-page[aria-disabled="true"] { color: var(--ink-muted); pointer-events: none; }
.tp-more { display: flex; justify-content: center; }

/* Rail */
.tp-rail .nw-newsletter-form { display: flex; flex-direction: column; gap: var(--space-sm); }

/* Feed */
.tp-day + .tp-day { margin-top: var(--space-2xl); }
.tp-day-title { margin: 0 0 var(--space-sm); padding-bottom: var(--space-xs); border-bottom: var(--border-active) solid var(--ink); }
.tp-feed { list-style: none; margin: 0; padding: 0; }
.tp-feed-item { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: var(--space-md); padding: var(--space-md) 0; border-bottom: var(--border-hairline) solid var(--line-soft); align-items: start; }
.tp-feed-item.has-thumb { grid-template-columns: 56px minmax(0, 1fr) 120px; }
.tp-feed-time { color: var(--signal, var(--accent)); font-variant-numeric: tabular-nums; padding-top: 2px; }
.tp-feed-title { color: var(--ink); text-decoration: none; display: block; }
.tp-feed-title:hover { text-decoration: underline; }
.tp-feed-excerpt { margin: var(--space-2xs) 0 0; color: var(--ink-soft); }

/* Banner */
.tp-banner { position: relative; min-height: 440px; display: flex; align-items: flex-end; color: var(--on-scrim, #fff); overflow: hidden; }
.tp-banner-media { position: absolute; inset: 0; height: 100%; border-radius: 0; }
.tp-banner-scrim { position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.72), rgba(0,0,0,.15) 65%, rgba(0,0,0,.05)); }
.tp-banner:not(:has(img)) .tp-banner-scrim { background: linear-gradient(to top, rgba(0,0,0,.6), rgba(0,0,0,.25)); }
.tp-banner-text { position: relative; padding-top: var(--space-5xl, 48px); padding-bottom: var(--space-3xl); }
.tp-banner-topic { margin: 0 0 var(--space-sm); color: inherit; font-size: clamp(40px, 7vw, 88px); line-height: 1; }
.tp-banner-intro { margin: 0 0 var(--space-lg); max-width: var(--measure); color: inherit; opacity: .9; }
.tp-banner-lead { display: inline-block; color: inherit; text-decoration: none; border-top: 2px solid currentColor; padding-top: var(--space-sm); max-width: 640px; }
.tp-banner-lead:hover { text-decoration: underline; }
.tp-topband { list-style: none; margin: var(--space-lg) 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-xl); }
.tp-topband li { display: flex; gap: var(--space-sm); align-items: flex-start; }
.tp-topband a { color: var(--ink); text-decoration: none; }
.tp-topband a:hover { text-decoration: underline; }
.tp-topband-num { color: var(--accent); line-height: 1; }

/* Archive */
.tp-filterbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-md); padding: var(--space-md) 0; border-top: var(--border-hairline) solid var(--line-soft); border-bottom: var(--border-hairline) solid var(--line-soft); }
.tp-filterbar .tp-chips { margin: 0; }
.tp-sort { display: flex; gap: var(--space-md); align-items: center; }
.tp-sort a { color: var(--ink-muted); text-decoration: none; }
.tp-sort a.is-active { color: var(--ink); font-weight: 600; text-decoration: underline; text-underline-offset: 4px; }

@media (max-width: 1100px) {
  .tp-topband { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .tp-banner { min-height: 360px; }
  .tp-topband { grid-template-columns: 1fr; }
  .tp-feed-item.has-thumb { grid-template-columns: 48px minmax(0, 1fr) 80px; }
  .tp-rail .nw-ad { display: none; }
}
