/* Page: news (owned by the news page module) */
/* All rules are scoped under .page-news; layout primitives (stack, row, grid,
   form-grid, card, tabs) come from base.css / components.css. */

.page-news .news-body {
  margin-top: var(--sp-4);
}

.page-news .page-header + .banner {
  margin-bottom: var(--sp-4);
}

.page-news .news-teaching-host {
  min-height: 12rem;
}

.page-news .news-teaching .stat-row {
  margin-bottom: var(--sp-2);
}

/* Sub-tabs inside a tab panel sit flush with the panel, no double border. */
.page-news .news-subtabs > .tablist {
  margin-bottom: var(--sp-4);
}

.page-news .news-generator,
.page-news .news-source-tool {
  gap: var(--sp-4);
}

.page-news .news-blurb {
  font-size: var(--fs-12);
  max-width: 80ch;
  margin: 0;
}

.page-news .news-hint {
  font-size: var(--fs-12);
  margin: 0;
}

.page-news .news-preview {
  font-family: var(--font-mono);
  font-size: var(--fs-12);
  color: var(--muted);
  white-space: nowrap;
}

/* Elapsed clock rides in the form action row next to the submit button. */
.page-news .form-actions .timer {
  margin-left: var(--sp-2);
}

.page-news .news-result-slot:empty {
  display: none;
}

.page-news .news-result-slot {
  margin-top: var(--sp-4);
}

/* Generated article beside its metadata on wide screens, stacked on narrow. */
.page-news .news-result-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--sp-5);
}

@media (min-width: 1100px) {
  .page-news .news-result-body {
    grid-template-columns: minmax(0, 2fr) minmax(16rem, 1fr);
    align-items: start;
  }
}

.page-news .news-result .article {
  max-width: 76ch;
}

.page-news .news-result .article h3 {
  font-size: var(--fs-20);
  line-height: 1.3;
}

.page-news .news-result-meta .kv {
  font-size: var(--fs-12);
}

.page-news .news-result-meta .kv dd .json-view {
  font-size: var(--fs-12);
}

/* Collapsible raw JSON / error body. */
.page-news .news-raw {
  border: 1px solid var(--border);
  border-radius: var(--radius-control);
  background: var(--surface-2);
}

.page-news .news-raw > summary {
  cursor: pointer;
  padding: var(--sp-2) var(--sp-3);
  font-size: var(--fs-12);
  color: var(--muted);
  list-style: none;
  user-select: none;
}

.page-news .news-raw > summary::-webkit-details-marker {
  display: none;
}

.page-news .news-raw > summary::before {
  content: "▸";
  display: inline-block;
  width: 1em;
  color: var(--faint);
}

.page-news .news-raw[open] > summary::before {
  content: "▾";
}

.page-news .news-raw > summary:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
  border-radius: var(--radius-control);
}

.page-news .news-raw > .json-view {
  border-top: 1px solid var(--border);
  padding: var(--sp-2) var(--sp-3);
}

.page-news .news-source-text {
  max-height: 28rem;
  overflow: auto;
}

.page-news .news-failure .banner {
  align-items: flex-start;
}

/* Datalists are invisible; keep them from adding grid gaps. */
.page-news datalist {
  display: none;
}

@media (max-width: 720px) {
  .page-news .news-result-body {
    gap: var(--sp-4);
  }

  .page-news .news-preview {
    white-space: normal;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-news .news-raw > summary::before {
    transition: none;
  }
}
