/* PixelCMS Public Typography Contract v1.3.07.
 * Core and plugins should consume these tokens instead of hard-coded sizes. */
:root{
  --pxth-public-title-size:36px;
  --pxth-public-body-size:16px;
  --pxth-font-title:clamp(24px,3vw,32px);
  --pxth-font-body:clamp(15px,1.2vw,16px);
  --pxth-public-heading-font:Kanit,system-ui,sans-serif;
  --pxth-public-body-font:Kanit,system-ui,sans-serif;
}
body{font-family:var(--pxth-public-body-font);font-size:var(--pxth-font-body)}
main :where(p,li,dd,dt,input,select,textarea,button),
[data-plugin-block] :where(p,li,dd,dt,input,select,textarea,button),
[data-module-block] :where(p,li,dd,dt,input,select,textarea,button),
.pxth-public-scope :where(p,li,dd,dt,input,select,textarea,button){font-family:var(--pxth-public-body-font);font-size:var(--pxth-font-body)}
main :where(h1,.page-title,.section-title,.block-title),
[data-plugin-block] :where(h1,.page-title,.section-title,.block-title),
[data-module-block] :where(h1,.page-title,.section-title,.block-title),
.pxth-public-scope :where(h1,.page-title,.section-title,.block-title){font-family:var(--pxth-public-heading-font);font-size:var(--pxth-font-title)}
main h2,[data-plugin-block] h2,[data-module-block] h2,.pxth-public-scope h2{font-family:var(--pxth-public-heading-font);font-size:clamp(24px,2.5vw,calc(var(--pxth-public-title-size) * .88))}
main h3,[data-plugin-block] h3,[data-module-block] h3,.pxth-public-scope h3{font-family:var(--pxth-public-heading-font);font-size:clamp(20px,2vw,calc(var(--pxth-public-title-size) * .70))}
/* Optional per-block override contract. The plugin sets variables only when override is enabled. */
[data-pxth-block-typography-override="1"]{
  --pxth-effective-title-size:var(--pxth-block-title-size,var(--pxth-font-title));
  --pxth-effective-body-size:var(--pxth-block-body-size,var(--pxth-font-body));
}
[data-pxth-block-typography-override="1"] :where(h1,.page-title,.section-title,.block-title){font-size:var(--pxth-effective-title-size)}
[data-pxth-block-typography-override="1"] :where(p,li,dd,dt,input,select,textarea,button){font-size:var(--pxth-effective-body-size)}

/* v1.3.07: apply live typography tokens to actual Core and Plugin title/body surfaces.
 * This intentionally excludes admin popup/sidebar surfaces. */
:is(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,[data-plugin-block],[data-module-block],.pxth-public-scope)
  :where(h1,.page-title,.section-title,.block-title,.hero-title,.product-title,.article-title,.news-title,.gallery-title,.plugin-title,[data-pxth-title]){
  font-family:var(--pxth-public-heading-font)!important;
  font-size:var(--pxth-font-title)!important;
}
:is(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,[data-plugin-block],[data-module-block],.pxth-public-scope)
  :where(p,li,dd,dt,.description,.excerpt,.summary,.content-text,.block-content,.plugin-text,[data-pxth-body]){
  font-family:var(--pxth-public-body-font)!important;
  font-size:var(--pxth-font-body)!important;
}
/* Keep semantic lower headings proportional to the selected Title size. */
:is(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,[data-plugin-block],[data-module-block],.pxth-public-scope) h2{
  font-size:clamp(22px,2.5vw,calc(var(--pxth-public-title-size) * .88))!important;
}
:is(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,[data-plugin-block],[data-module-block],.pxth-public-scope) h3{
  font-size:clamp(18px,2vw,calc(var(--pxth-public-title-size) * .70))!important;
}
