/* feat-board.css — isolated stylesheet for the "board" redesign feature (loads after forum.css
   so same-specificity rules here override it). Owned by one subagent.

   Scope: ONLY the board / forum thread-listing page. Every rule is anchored to the thread-list
   table (table.pad.clear that contains tr.row) or to the heading cell that holds it, so nothing
   here can reach the home feed, category index, or message/thread page.

   Tokens are forum.css's live vocabulary (--ink / --muted / --faint / --surface / --surface-2 /
   --line / --line-soft / --r-lg / --sh-1 / --font-display), so light + dark both track the theme
   and the team-accent swap keeps working. Matches the approved board.html mock. */

/* ---- Visible board heading (mock parity) ----------------------------------------------------
   The board emits <h1 class="sr-only swh-sr-h1">Forum name</h1> for a11y/SEO, which forum.css
   keeps screen-reader-only. The mock shows it as a prominent page title, so un-clip and type-set
   it. Scoped to the cell that holds the thread list => board pages only (the thread/message page
   uses .thread-title, which this selector never matches). */
.content td:has(> table.pad.clear) > h1.swh-sr-h1 {
  /* .sr-only sets position:absolute !important, so this must be !important to re-enter flow. */
  position: static !important; width: auto; height: auto; margin: 2px 0 14px; padding: 0;
  clip: auto; clip-path: none; overflow: visible; white-space: normal; border: 0;
  font-family: var(--font-display); font-weight: 800;
  font-size: clamp(1.5rem, 1rem + 2.2vw, 2.1rem); line-height: 1.15;
  letter-spacing: -0.01em; color: var(--ink); text-wrap: balance;
}

/* ---- Thread list as a card (mock parity) ----------------------------------------------------
   Unlike .ContentTable, the thread-listing table (class="clear pad") carries no card chrome, so
   it renders flush on the page ground. Give it the same surface / border / radius / shadow the
   rest of the theme's panels use, and collapse the stock 1px cellspacing gaps. */
table.pad.clear:has(tr.row) {
  width: 100%; border-collapse: separate; border-spacing: 0; margin: 0 0 22px;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r-lg); box-shadow: var(--sh-1); overflow: hidden;
}

/* Row cells: consistent vertical rhythm + a soft hover wash across the whole row (forum.css sets
   the row borders but adds no hover state on the board). */
table.pad.clear:has(tr.row) td { vertical-align: middle; }
table.pad.clear:has(tr.row) tr.row:hover td { background: var(--surface-2); }
table.pad.clear:has(tr.row) tr.row:last-child td { border-bottom: 0; }

/* Title + author sub-line: breathing room around each row's primary content, echoing .trow. */
table.pad.clear:has(tr.row) td.RowStyleA { padding-top: 13px; padding-bottom: 13px; }
table.pad.clear:has(tr.row) a.big { font-size: 1rem; line-height: 1.45; }
table.pad.clear:has(tr.row) .TopBy { margin-top: 4px; }

/* Replies / Views: emphasized, tabular figures like the mock's counts. Those two body cells are
   the only .RowStyleB.ac.hide1 cells; the read-state icon cells are .wo (excluded here). */
table.pad.clear:has(tr.row) td.RowStyleB.ac.hide1 {
  color: var(--ink); font-weight: 700; font-size: 15px; font-variant-numeric: tabular-nums;
}

/* Last-message column: date quiet on top, author readable below — matches the mock's right cell. */
table.pad.clear:has(tr.row) td.RowStyleC { color: var(--muted); font-size: 13px; }
table.pad.clear:has(tr.row) td.RowStyleC .DateText { display: block; margin-bottom: 2px; }

/* Read/unread status glyph: keep it small and quiet so it reads as a subtle indicator, not chrome. */
table.pad.clear:has(tr.row) td.RowStyleB.wo img { width: 16px; height: 16px; opacity: .7; }
