/* ============================================================
   PUBLISYS MEDIA — sitewide typography scale
   One source of truth for heading and description sizes.
   Loaded on every page through home_head_assets().

   Why !important: each page ships its own stylesheet with its own
   heading/paragraph sizes (clamp() values from 2rem up to 5rem,
   descriptions from 0.68rem to 1.2rem). Those rules are scoped by
   page-specific classes, so plain tag selectors can never win.
   To change a size sitewide, edit the tokens below — nothing else.

   Header, navigation and footer keep their own compact sizing.
   ============================================================ */

:root{
  --pm-fs-h1:clamp(2rem, 1.4rem + 1.9vw, 3rem);      /* 32px mobile -> 48px max */
  --pm-fs-h2:clamp(1.5rem, 1.15rem + 1vw, 2rem);     /* 24px mobile -> 32px max */
  --pm-fs-h3:1.25rem;                                /* card + panel titles */
  --pm-fs-h4:1.0625rem;                              /* small titles, FAQ questions */
  --pm-fs-body:1rem;                                 /* every description */
  --pm-fs-fine:.875rem;                              /* notes and disclaimers only */
  --pm-lh-h1:1.15;
  --pm-lh-h2:1.2;
  --pm-lh-h3:1.3;
  --pm-lh-body:1.65;
}

/* ---------- Headings ---------- */
h1,h2,h3,h4{overflow-wrap:break-word;}
h1:not(:is(header,nav,footer) *){
  font-size:var(--pm-fs-h1)!important;
  line-height:var(--pm-lh-h1)!important;
  letter-spacing:-.02em!important;
  font-weight:700!important;
  text-wrap:balance;
}
h2:not(:is(header,nav,footer) *){
  font-size:var(--pm-fs-h2)!important;
  line-height:var(--pm-lh-h2)!important;
  letter-spacing:-.015em!important;
  font-weight:700!important;
  text-wrap:balance;
}
h3:not(:is(header,nav,footer) *){
  font-size:var(--pm-fs-h3)!important;
  line-height:var(--pm-lh-h3)!important;
  letter-spacing:-.01em!important;
  font-weight:700!important;
}
h4:not(:is(header,nav,footer) *),
h5:not(:is(header,nav,footer) *),
.pm-faq-q,
.pm-faq-q > span:not(.pm-faq-icon){
  font-size:var(--pm-fs-h4)!important;
  line-height:1.4!important;
  font-weight:600!important;
}

/* Titles of cards inside listings are h2 in the markup but card-level in the design */
.pm-blog-card h2,
.pm-blog-featured h2,
.pm-blog-card-body h2{
  font-size:var(--pm-fs-h3)!important;
  line-height:var(--pm-lh-h3)!important;
}

/* ---------- Descriptions ---------- */
:is(p,li,dd,address,.pm-faq-a-inner):not(:is(header,nav,footer) *):not(.pm-eyebrow):not([class*="note"]):not([class*="disclaimer"]){
  font-size:var(--pm-fs-body)!important;
  line-height:var(--pm-lh-body)!important;
}

/* Fine print — small caveats and disclaimers share one size */
:is(p,div,span,small):is([class*="-note"],.note,[class*="disclaimer"]):not(:is(header,nav,footer) *),
p + small:not(:is(header,nav,footer) *),
article > p + strong:not(:is(header,nav,footer) *){
  font-size:var(--pm-fs-fine)!important;
  line-height:1.55!important;
}

/* ---------- Buttons ----------
   One size, radius and weight for every .pm-btn on the site (primary, outline,
   small, full-width and form submits). Height: about 52px.
   The header "Book a Call" (.pm-nav-cta) is the one intentionally compact button. */
.pm-btn{
  padding:14px 26px!important;
  font-size:1rem!important;
  line-height:1.25!important;
  font-weight:700!important;
  border-radius:var(--pm-radius)!important;
}

/* ---------- Numbering ----------
   One numeral style for every "01 / 02 / 03" marker on the site:
   tag = small label above a title, row = number beside a title,
   lg = large decorative numeral, badge = number inside an existing circle/box. */
.pm-n,.pm-n-row,.pm-n-lg,.pm-n-badge{
  font-family:var(--pm-font-heading)!important;
  font-style:normal!important;
  font-variant-numeric:tabular-nums;
  line-height:1!important;
  text-transform:none!important;
}
.pm-n{font-size:.875rem!important;font-weight:700!important;letter-spacing:.08em!important;color:var(--pm-primary)!important;}
.pm-n-row{position:relative;top:.2em;font-size:1.125rem!important;font-weight:600!important;letter-spacing:.02em!important;color:var(--pm-primary)!important;}
.pm-n-lg{font-size:2rem!important;font-weight:700!important;letter-spacing:-.03em!important;color:color-mix(in srgb,var(--pm-primary) 40%,transparent)!important;}
.pm-n-badge{font-size:.8125rem!important;font-weight:700!important;letter-spacing:.02em!important;}

