/* Shared type roles for homepage and case studies. Artwork and metric numerals
   keep their original styling; surrounding editorial text uses this scale. */
:root{
  --type-display:clamp(2.25rem,1.65rem + 3vw,4rem);
  --type-section:clamp(1.75rem,1.25rem + 1.5vw,2.5rem);
  --type-subhead:clamp(1.25rem,1.1rem + .45vw,1.5rem);
  --type-lead:clamp(1.25rem,1.1rem + .6vw,1.5rem);
  --type-body:clamp(1rem,.94rem + .25vw,1.125rem);
  --type-caption:.875rem;
  --type-label:.75rem;
  --type-quote:clamp(1.5rem,1.25rem + 1vw,2rem);
  --leading-display:1.1;
  --leading-heading:1.2;
  --leading-body:1.7;
  --leading-label:1.5;
  --tracking-display:-.045em;
  --tracking-heading:-.03em;
}
body,body.pl-case{
  font-family:Montserrat,Arial,sans-serif;
  font-size:var(--type-body);
  font-weight:500;
  line-height:var(--leading-body);
}

/* Display titles. The homepage spans may wrap on intermediate widths. */
body .hero h1,
body.pl-case .pl-case-hero h1,
body.pcf-case .pcf-intro h1,
body.wp-case .wp-intro h1,
body.jmm-case .jmm-intro h1,
body.rb-case .rb-intro h1,
body.wb-case #main .intro h1{
  font-size:var(--type-display);
  font-weight:900;
  line-height:var(--leading-display);
  letter-spacing:var(--tracking-display);
}
body .hero h1 span{white-space:normal}

/* Section headings, including closing and contact sections. */
body .about-copy h2,
body .ground-contact .contact-intro h2,
body.pl-case .pl-narrative h2,
body.pl-case .pl-section-head h2,
body.pl-case .pl-close h2,
body.pcf-case h2,
body.wp-case h2,
body.jmm-case h2,
body.rb-case .rb-section-head h2,
body.rb-case .rb-close h2,
body.wb-case #main h2,
body.wb-case #main .closing h2{
  font-size:var(--type-section);
  font-weight:900;
  line-height:var(--leading-heading);
  letter-spacing:var(--tracking-heading);
}
body .about-copy h2 span{
  font-size:var(--type-subhead);
  font-weight:500;
  line-height:1.4;
  letter-spacing:-.015em;
}

/* Subheadings and project names. */
body .result-entry h3,
body.pl-case .pl-subhead,
body.pl-updated .pl-sdc-chapter h3,
body.pcf-case h3,
body.pcf-case .pcf-commerce-grid h3,
body.wp-case h3,
body.wp-case .wp-launch-grid figcaption h3,
body.wp-case .wp-web-heading h3,
body.jmm-case h3,
body.jmm-case .jmm-screen figcaption h3,
body.rb-case .rb-growth-details h3,
body.wb-case #main h3,
body.wb-case #main .website-detail h3,
body.wb-case #main .label-heading h3{
  font-size:var(--type-subhead);
  font-weight:700;
  line-height:1.3;
  letter-spacing:-.02em;
}

/* Reading text. Intro taglines use the lead role below. */
body .hero-description,
body .result-entry p,
body .about-prose p,
body .ground-contact .contact-intro p,
body.pl-case .pl-prose p,
body.pl-case .pl-close>p:not(.pl-eyebrow),
body.pcf-case .pcf-prose p,
body.pcf-case .pcf-commerce-grid p,
body.wp-case .wp-prose p,
body.jmm-case .jmm-prose p,
body.rb-case .rb-prose p,
body.rb-case .rb-close-bottom>p,
body.rb-case .rb-growth-details p,
body.wb-case #main .body-copy p,
body.wb-case #main .brand-copy p:not(.eyebrow),
body.wb-case #main .section-heading>p,
body.wb-case #main .website-detail p,
body.wb-case #main .closing p:not(.eyebrow){
  font-size:var(--type-body);
  font-weight:500;
  line-height:var(--leading-body);
  letter-spacing:0;
}
body.pl-case .pl-lead,
body.pcf-case .pcf-intro-bottom>p,
body.wp-case .wp-intro-bottom>p,
body.jmm-case .jmm-intro-bottom>p,
body.rb-case .rb-lead p,
body.wb-case #main .intro-line{
  font-size:var(--type-lead);
  font-weight:500;
  line-height:1.5;
  letter-spacing:-.015em;
}

/* Testimonials are editorial quotes, not display headings. */
body .testimonial-slide blockquote{
  font-size:var(--type-quote);
  font-weight:700;
  line-height:1.45;
  letter-spacing:-.02em;
}
body .testimonial-slide blockquote p{font:inherit;letter-spacing:inherit}
body .testimonial-slide figcaption{
  font-size:var(--type-caption);
  line-height:var(--leading-label);
}

/* Eyebrows and short labels share one readable size at every breakpoint. */
body .hero .eyebrow,
body .world-kicker,
body.pl-case .pl-eyebrow,
body.pcf-case .pcf-eyebrow,
body.wp-case .wp-eyebrow,
body.jmm-case .jmm-eyebrow,
body.rb-case .rb-eyebrow,
body.rb-case .rb-small-label,
body.rb-case .rb-metric-kind,
body.rb-case .rb-role h2,
body.wb-case #main .eyebrow,
body.wb-case #main .intro .eyebrow,
body.wb-case #main .closing .eyebrow{
  font-size:var(--type-label);
  font-weight:700;
  line-height:var(--leading-label);
  letter-spacing:.1em;
}

/* Supporting context, captions, services and controls. */
body.pl-case .pl-role,
body.pl-case .pl-detail-note,
body.pl-case .pl-caption,
body.pl-case .pl-source-note,
body.pl-case .pl-metric p,
body.pcf-case .pcf-services,
body.pcf-case .pcf-prose .pcf-context,
body.pcf-case .pcf-screen figcaption,
body.pcf-case .pcf-product figcaption>span,
body.wp-case .wp-services,
body.wp-case .wp-role,
body.wp-case .wp-role strong,
body.wp-case .wp-launch-grid figcaption p,
body.wp-case .wp-app-gallery figcaption,
body.wp-case .wp-lunch,
body.jmm-case .jmm-services,
body.jmm-case .jmm-role,
body.jmm-case .jmm-role strong,
body.jmm-case .jmm-screen figcaption>span,
body.rb-case .rb-role p,
body.rb-case .rb-caption,
body.rb-case .rb-results-note,
body.rb-case .rb-cost p span,
body.rb-case .rb-nurture p,
body.rb-case .rb-nurture span:not(.rb-nurture-divider),
body.wb-case #main .service-strip,
body.wb-case #main .logo-stage figcaption,
body.wb-case #main .web-caption,
body.wb-case #main .label-heading p,
body.wb-case #main .label-collection figcaption,
body.wb-case #main .small-note,
body.wb-case #main .size-note,
body.wb-case #main .size-board span,
body.wb-case #main .retail-evidence span,
body.wb-case #main .retail-note{
  font-size:var(--type-caption);
  line-height:var(--leading-label);
  letter-spacing:0;
}
body.wb-case #main .size-board strong,
body.wb-case #main .retail-evidence strong,
body.rb-case .rb-cost p{
  font-size:var(--type-body);
  line-height:var(--leading-label);
}
body.wb-case #main .product-caption{
  font-size:var(--type-label);
  line-height:var(--leading-label);
  overflow-wrap:anywhere;
}
body .navigation,
body.pl-case .navigation,
body .navigation .button,
body.pl-case .navigation .button,
body .hero-buttons .button,
body .ground-nav,
body.pl-case .pl-index,
body.pcf-case .pcf-index,
body.wp-case .wp-index,
body.jmm-case .jmm-index,
body.rb-case .rb-index,
body.pl-case .pl-inline-link,
body.pcf-case .pcf-text-link,
body.pcf-case .pcf-screen .pcf-text-link,
body.wp-case .wp-text-link,
body.wp-case .wp-screen .wp-text-link,
body.jmm-case .jmm-text-link,
body.jmm-case .jmm-screen .jmm-text-link,
body.rb-case .rb-back,
body.wb-case #main .text-link{
  font-size:var(--type-caption);
  line-height:var(--leading-label);
}
body .footer-bottom,
body.pl-case .pl-footer,
body.pcf-case .pcf-lightbox-toolbar p,
body.pcf-case .pcf-lightbox-controls,
body.pcf-case .pcf-lightbox-controls button,
body.wp-case .wp-lightbox-toolbar p,
body.wp-case .wp-lightbox-controls,
body.wp-case .wp-lightbox-controls button,
body.jmm-case .jmm-lightbox-toolbar p,
body.jmm-case .jmm-lightbox-controls,
body.jmm-case .jmm-lightbox-controls button,
body.rb-case .rb-lightbox-tools a,
body.rb-case .rb-lightbox-close,
body.rb-case .rb-lightbox-caption,
body.wb-case .dialog-top p,
body.wb-case .dialog-controls button,
body.wb-case .dialog-controls a{
  font-size:var(--type-label);
  line-height:var(--leading-label);
}

/* Result numbers retain their existing large scale. Their surrounding words
   and system labels use the same editorial roles as the rest of the site. */
body.pcf-case .pcf-result-claim,
body.jmm-case .jmm-outcome-claim{
  font-size:var(--type-section);
  font-weight:700;
  line-height:var(--leading-heading);
  letter-spacing:var(--tracking-heading);
}
body.rb-case .rb-system-list{
  font-size:var(--type-subhead);
  font-weight:700;
  line-height:1.3;
  letter-spacing:-.02em;
}

/* Color-key labels and form UI use the same small-type roles. */
body.wp-case .wp-palette,
body.rb-case .rb-swatch,
body.rb-case .rb-swatch b,
body.wb-case #main .palette span{
  font-size:var(--type-label);
  line-height:var(--leading-label);
}
body .contact-glass .wpforms-form .wpforms-field-label{
  font-size:var(--type-caption)!important;
  font-weight:700!important;
  line-height:var(--leading-label)!important;
}
body .contact-glass .wpforms-form input[type="text"],
body .contact-glass .wpforms-form input[type="email"],
body .contact-glass .wpforms-form textarea{
  font-size:1rem!important;
  line-height:var(--leading-label)!important;
}
body .contact-glass .wpforms-form button.wpforms-submit{
  font-size:var(--type-caption)!important;
  line-height:var(--leading-label)!important;
}
body .contact-glass .wpforms-form label.wpforms-error,
body .contact-glass .wpforms-form em.wpforms-error,
body .contact-glass .wpforms-form div.wpforms-error{
  font-size:var(--type-caption)!important;
  line-height:var(--leading-label)!important;
}
