/* PixelCMS Public Typography Scale Contract v1.3.23 */
:root{
  --pxth-font-display:42px;
  --pxth-font-section-title:32px;
  --pxth-font-panel-title:22px;
  --pxth-font-card-title:20px;
  --pxth-font-body:18px;
  --pxth-font-small:14px;
  --pxth-public-heading-font:Kanit,system-ui,sans-serif;
  --pxth-public-body-font:Kanit,system-ui,sans-serif;
  --pxth-body-background:#fff;
  /* Compatibility aliases. */
  --pxth-font-title:var(--pxth-font-section-title);
  --pxth-public-title-size:var(--pxth-font-section-title);
  --pxth-public-body-size:var(--pxth-font-body);
  --title-lg:var(--pxth-font-section-title);
  --text:var(--pxth-font-body);
}
html,body{background-color:var(--pxth-body-background,#fff)}
body{font-family:var(--pxth-public-body-font)}

/* Public roots only. Admin typography is isolated in admin-design-contract.css. */
:where(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,section[data-section],.custom-section,.custom-block,[data-plugin-block],[data-module-block],.pxth-public-scope,footer,.news,.article-page,.article-detail,.pxth-article-page,.pxth-article-detail,.pxth-product-detail-page,.px-product,[data-product-detail]){
  font-family:var(--pxth-public-body-font);
  font-size:var(--pxth-font-body);
}

/* 1. Page / Hero / primary page heading. */
:where(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,section[data-section],.custom-section,.custom-block,[data-plugin-block],[data-module-block],.pxth-public-scope)
  :where(h1,.page-title,.hero-title,.display-title,[data-pxth-typography="display"]){
  font-family:var(--pxth-public-heading-font)!important;
  font-size:var(--pxth-font-display)!important;
}

/* 2. Section / Block heading. */
:where(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,section[data-section],.custom-section,.custom-block,[data-plugin-block],[data-module-block],.pxth-public-scope,footer)
  :where(h2,.section-title,.block-title,.sec-title,.main-title,.footer-title,[data-pxth-title],[data-pxth-typography="section"]){
  font-family:var(--pxth-public-heading-font)!important;
  font-size:var(--pxth-font-section-title)!important;
}

/* 3. System panel / sidebar / widget heading. */
:where(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,section[data-section],.custom-section,.custom-block,[data-plugin-block],[data-module-block],.pxth-public-scope)
  :where(.sidebar-title,.filter-title,.widget-title,.panel-title,.system-title,.facet-title,.category-title,[data-pxth-typography="panel"]){
  font-family:var(--pxth-public-heading-font)!important;
  font-size:var(--pxth-font-panel-title)!important;
}

/* 4. Product / article / news / gallery / card item title. */
:where(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,section[data-section],.custom-section,.custom-block,[data-plugin-block],[data-module-block],.pxth-public-scope)
  :where(h3,h4,.card-title,.item-title,.product-title,.product-name,.article-title,.article-name,.news-title,.news-name,.gallery-title,.gallery-item-title,.testimonial-title,[data-pxth-typography="card"]){
  font-family:var(--pxth-public-heading-font)!important;
  font-size:var(--pxth-font-card-title)!important;
}

/* 5. Body / descriptions / rich text. */
:where(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,section[data-section],.custom-section,.custom-block,[data-plugin-block],[data-module-block],.pxth-public-scope,footer,.article-page,.article-detail,.pxth-product-detail-page,.px-product)
  :where(p,li,dd,dt,blockquote,.description,.desc,.excerpt,.summary,.content-text,.body-text,.copy,.paragraph,.lead,.intro,.detail-text,.pxth-product-short,.pxth-product-short-rich,.pxth-product-full-content,[data-pxth-body],[data-pxth-typography="body"]){
  font-family:var(--pxth-public-body-font)!important;
  font-size:var(--pxth-font-body)!important;
}

/* 6. Meta / caption / dates / SKU. Keep controls and badges out of this rule. */
:where(main,#pxth-page,#pxth-content,.pxth-page-content,.site-content,.page-content,section[data-section],.custom-section,.custom-block,[data-plugin-block],[data-module-block],.pxth-public-scope,footer)
  :where(.meta,.caption,.copyright,.date,.time,.author,.category-meta,.product-meta,.article-meta,.news-meta,.sku,.eyebrow,[data-pxth-typography="small"]){
  font-family:var(--pxth-public-body-font)!important;
  font-size:var(--pxth-font-small)!important;
}

/* Optional per-block compatibility override. */
[data-pxth-block-typography-override="1"]{
  --pxth-effective-title-size:var(--pxth-block-title-size,var(--pxth-font-section-title));
  --pxth-effective-body-size:var(--pxth-block-body-size,var(--pxth-font-body));
}
[data-pxth-block-typography-override="1"] :where(.section-title,.block-title,[data-pxth-title]){font-size:var(--pxth-effective-title-size)!important}
[data-pxth-block-typography-override="1"] :where(p,li,.description,.excerpt,[data-pxth-body]){font-size:var(--pxth-effective-body-size)!important}
