/* Shared type hierarchy for the public site and visual-editor preview. */
:root{
  --site-title-size:clamp(2.25rem,4vw,4rem);
  --site-subtitle-size:clamp(1.08rem,1.6vw,1.5rem);
  --site-text-size:clamp(.9rem,calc(.84rem + .16vw),1rem);
}

/* Main page and section titles, including the editorial closing quotation. */
body main :is(h1,h2):not(.kicker):not(.section-number):not(.contact-detail h2):where(:not(.builder-solutions *)),
body main .quote-block p{
  font-size:var(--builder-heading-size,var(--site-title-size));
}

/* Supporting headings, card names and headings inside reading sections. */
body main :is(h3,h4,h5,h6):not(.kicker):not(.section-number):where(:not(.builder-solutions *)),
body main :is(.project-intro,.rich-content,.legal-document,.blog-card,.builder-solutions-card,.builder-columns) :is(h2,h3,h4,h5,h6):not(.kicker):not(.section-number):where(:not(.builder-solutions *)){
  font-size:var(--builder-heading-size,var(--site-subtitle-size));
}

/* A single reading size; navigation, buttons, captions and utility labels keep their roles. */
body main :is(p,li,td,th,dd,dt,address,input,textarea):not(.kicker):not(.section-number):not(.hero-index):not(.process-step-number):not(.card-meta p):not(.quote-block p):not(.legal-document summary p){
  font-size:var(--builder-copy-size,var(--site-text-size));
}
body main .project-facts dl div,
body main .contact-detail a,
body main .contact-form .contact-consent>span{
  font-size:var(--site-text-size);
}

/* Contact section labels are utility labels rather than editorial headings. */
body main .contact-detail :is(h2,h3){font-size:.75rem}

/* Kitchen introductions need more prominence than supporting card headings. */
body main .project-intro.project-facts h2:not(.kicker):not(.section-number){
  font-size:calc(var(--builder-heading-size,var(--site-title-size)) * .9);
}
