/* Article typography (.prose): ONE shared file, linked by the public article page (server-rendered, via layout.page
   {prose:true}) and by the news editor preview, so what an editor previews is what visitors read.
   Output of NewsShared.renderMarkdown (p, h2, h3, strong, em, code, pre, blockquote, ul/ol/li, hr, a, figure/img/
   figcaption). Tokens only (app.css :root). The container stays at the page width; line length is limited per element
   and everything is left-aligned. Heading anchors clear the sticky header via app.css html{scroll-padding-top}. */

.prose{font-size:17px;line-height:1.75;color:var(--body);overflow-wrap:break-word}
.prose > *{max-width:720px}
.prose > figure{max-width:960px}
.prose > :first-child{margin-top:0}
.prose p{margin:0 0 1.25em}
.prose h2{margin:2em 0 .6em;font-size:24px;font-weight:700;line-height:1.3;letter-spacing:-.02em;color:var(--ink)}
.prose h3{margin:1.7em 0 .5em;font-size:19px;font-weight:600;line-height:1.35;color:var(--ink)}
.prose a{color:var(--link);font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.prose a:hover{color:var(--link-hover)}
.prose strong{font-weight:600;color:var(--ink)}
.prose ul,.prose ol{margin:0 0 1.25em;padding-left:1.4em}
.prose li{margin:.35em 0;padding-left:.2em}
.prose li > ul,.prose li > ol{margin:.35em 0 0}
.prose ul > li::marker{color:var(--primary)}
.prose ol > li::marker{color:var(--muted);font-weight:600}
.prose blockquote{margin:1.6em 0;padding:var(--s-xs) 0 var(--s-xs) var(--s-lg);border-left:3px solid var(--primary);color:var(--ink)}
.prose blockquote p:last-child{margin-bottom:0}
.prose code{padding:.1em .35em;border:1px solid var(--hairline);border-radius:var(--r-xs);background:var(--surface-strong);font-family:var(--mono);font-size:.86em;word-break:normal;overflow-wrap:anywhere}
.prose pre{margin:1.6em 0;padding:var(--s-base) var(--s-lg);border:1px solid var(--hairline);border-radius:var(--r-lg);background:var(--surface-soft);overflow-x:auto;font-size:14px;line-height:1.6}
.prose pre code{padding:0;border:0;background:none;font-size:inherit;white-space:pre;overflow-wrap:normal}
.prose hr{margin:2.5em 0;border:0;border-top:1px solid var(--hairline)}
.prose figure{margin:2em 0}
/* Body images carry width/height attributes (fixed crop ratio), so height:auto keeps the layout from shifting. */
.prose img{display:block;max-width:100%;height:auto;border:1px solid var(--hairline);border-radius:var(--r-lg);background:var(--surface-strong)}
.prose figcaption{margin-top:var(--s-sm);font-size:13px;line-height:1.5;color:var(--muted)}
