/* [proserhythm-20261031] O6-02 PROSE-RHYTHM (D-B-445 "double spacing"): the ONE prose rule. Supersedes prosesp-20261027 (48px/16px/15px).
   20px between paragraphs, 56px before a section heading, 12px heading to text, 16px text at EVERY width, line-height 1.7, 70ch measure, no divider rules.
   Values come from the --tx-prose-* tokens in sprint1-tokens.css; every use carries a fallback so a page without that sheet renders the same.
   Hook: the class tx-prose on any wrapper (match page, panel V1/V2, blog .article-body of every post type, hub / team / h2h / player narratives,
   long-form pages). .txp-nar / .tfd-pp-nar / .th-narrative / .h2-narrative / .ph-narrative / .lh-narrative are listed so a wrapper that forgot the class still gets it.
   Colours and fonts are not set here (the surface owns them). */
:is(.tx-prose,.txp-nar,.tfd-pp-nar,.th-narrative,.h2-narrative,.ph-narrative,.lh-narrative){font-size:var(--tx-prose-size,16px);line-height:var(--tx-prose-lh,1.7)}
:is(.tx-prose,.txp-nar,.tfd-pp-nar,.th-narrative,.h2-narrative,.ph-narrative,.lh-narrative) .tx-nar{margin:0}
:is(.tx-prose,.txp-nar,.tfd-pp-nar,.th-narrative,.h2-narrative,.ph-narrative,.lh-narrative) .tx-nar h2{margin:var(--tx-prose-h2-top,56px) 0 var(--tx-prose-h2-bottom,12px)}
:is(.tx-prose,.txp-nar,.tfd-pp-nar,.th-narrative,.h2-narrative,.ph-narrative,.lh-narrative) .tx-nar:not(.tx-nar~.tx-nar) h2{margin-top:0}
:is(.tx-prose,.txp-nar,.tfd-pp-nar,.th-narrative,.h2-narrative,.ph-narrative,.lh-narrative) .tx-nar h3{margin:var(--tx-prose-h3-top,32px) 0 var(--tx-prose-h3-bottom,8px)}
:is(.tx-prose,.txp-nar,.tfd-pp-nar,.th-narrative,.h2-narrative,.ph-narrative,.lh-narrative) .tx-nar p{font-size:var(--tx-prose-size,16px);line-height:var(--tx-prose-lh,1.7);margin:0 0 var(--tx-prose-p-gap,20px);max-width:var(--tx-prose-measure,70ch)}
:is(.tx-prose,.txp-nar,.tfd-pp-nar,.th-narrative,.h2-narrative,.ph-narrative,.lh-narrative) .tx-nar p:last-child{margin-bottom:0}
:is(.tx-prose,.txp-nar,.tfd-pp-nar,.th-narrative,.h2-narrative,.ph-narrative,.lh-narrative) .tx-nar-kicker{font-size:12px;margin:0 0 var(--tx-prose-h2-bottom,12px)}
:is(.tx-prose,.txp-nar,.tfd-pp-nar,.th-narrative,.h2-narrative,.ph-narrative,.lh-narrative) .tx-nar-foot{margin:24px 0 0}
:is(.tx-prose,.txp-nar,.tfd-pp-nar,.th-narrative,.h2-narrative,.ph-narrative,.lh-narrative) [data-txp-mom]{margin:24px 0}
.tx-prose.article-body{font-size:var(--tx-prose-size,16px)}
.tx-prose.article-body h2{margin:var(--tx-prose-h2-top,56px) 0 var(--tx-prose-h2-bottom,12px)}
.tx-prose.article-body h2:first-child{margin-top:0}
.tx-prose.article-body h3{margin:var(--tx-prose-h3-top,32px) 0 var(--tx-prose-h3-bottom,8px)}
.tx-prose.article-body p{font-size:var(--tx-prose-size,16px);line-height:var(--tx-prose-lh,1.7);margin:0 0 var(--tx-prose-p-gap,20px);max-width:var(--tx-prose-measure,70ch)}
.tx-prose.article-body ul,.tx-prose.article-body ol{max-width:var(--tx-prose-measure,70ch)}
/* long-form text pages (methodology, how-accurate, about, track-record prose): the wrapper carries tx-prose tx-longform */
.tx-prose.tx-longform h2{margin:var(--tx-prose-h2-top,56px) 0 var(--tx-prose-h2-bottom,12px)}
.tx-prose.tx-longform h2:first-child{margin-top:0}
.tx-prose.tx-longform h3{margin:var(--tx-prose-h3-top,32px) 0 var(--tx-prose-h3-bottom,8px)}
.tx-prose.tx-longform p{font-size:var(--tx-prose-size,16px);line-height:var(--tx-prose-lh,1.7);margin:0 0 var(--tx-prose-p-gap,20px);max-width:var(--tx-prose-measure,70ch)}
.tx-prose.tx-longform ul,.tx-prose.tx-longform ol{max-width:var(--tx-prose-measure,70ch)}
