/* Running prose on short SEO pages (search audit M7, 2 Nov 2026): plain paragraphs and
   lists under a section head, at reading width. */
.seo-prose {
  max-width: 68ch;
  margin-top: 28px;
  display: grid;
  gap: 16px;
  font-size: 17px;
  line-height: 1.6;
  color: #232A31;
}
.seo-prose p { margin: 0; }
.seo-prose ol,
.seo-prose ul { margin: 0; padding-left: 1.3em; display: grid; gap: 8px; }
.seo-prose ol { list-style: decimal; }
.seo-prose ul { list-style: disc; }
.seo-prose a { color: #1B3A5B; text-decoration: underline; text-underline-offset: 2px; }
.seo-prose a:focus-visible { outline: 2px solid #1B3A5B; outline-offset: 2px; border-radius: 2px; }
.seo-prose .article-scorecard { max-width: none; }
.seo-prose--wide { max-width: none; }

/* Price table on phones (council fix, 2 Nov 2026): each row becomes a card with its own
   labels, so nobody has to scroll a wide table sideways. */
@media (max-width: 640px) {
  .seo-stack-table { overflow: visible; border: 0; background: none; }
  .seo-stack-table table { min-width: 0; }
  .seo-stack-table caption { text-align: left; }
  .seo-stack-table thead { display: none; }
  .seo-stack-table tr { display: block; padding: 16px; margin-bottom: 12px; border: 1px solid #E5E5E2; background: #FAFAF8; }
  .seo-stack-table th[scope="row"],
  .seo-stack-table td { display: block; padding: 4px 0; border: 0; }
  .seo-stack-table th[scope="row"] { font-size: 19px; padding-bottom: 8px; }
  .seo-stack-table td::before { content: attr(data-label); display: block; font-size: 13px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: #586069; }
}
