/* The Jim's Mowing reference uses Montserrat. These variable faces are served
   from this plugin, not from Google. License: fonts/montserrat/OFL.txt. */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('./fonts/montserrat/montserrat-latin-variable.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Montserrat';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url('./fonts/montserrat/montserrat-latin-italic-variable.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* A separate token avoids changing consent/quote UI and decorative process
   numbers that deliberately retain the existing Jost display token. */
:root { --font-jims-heading: 'Montserrat', Arial, Helvetica, sans-serif; }

/* Design-owned content titles, including service/card/article headings. The
   reviewer names and footer navigation labels retain their existing UI font. */
:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact)
  main :is(h1, h2, h3, h4, h5, h6):not(.jg-reviews__card h4, .analytics-consent-card *, .quote-modal *, .jg-preview-dialog *),
:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact)
  .footer-primary h2 {
  font-family: var(--font-jims-heading);
}

/* These emphasized offer titles had their own explicit display family. */
:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact)
  .glass-service-offer-heading h2 strong {
  font-family: var(--font-jims-heading);
}

/* Match the reference's actual heavy italic hero face. Other title styles and
   weights stay as designed, now using the new family. */
:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) main h1:not(.analytics-consent-card *, .quote-modal *, .jg-preview-dialog *, .jg-reviews__card *) {
  font-family: var(--font-jims-heading);
  font-style: italic;
  font-weight: 900;
}

/* Native WordPress pages/archives retain their theme and content. The theme
   body and site wrapper also give this bounded rule enough specificity to
   replace the inherited presentation plugin's heavy Jost title rules. */
body.jimsglass-presentation.wp-theme-jims-wp .wp-site-blocks :is(
  .glass-hero-section h1.wp-block-heading,
  .common-base h1,
  .wp-block-post-title,
  .entry-content :is(h1, h2, h3, h4, h5, h6):not(.jg-reviews__card h4, .analytics-consent-card *, .quote-modal *, .jg-preview-dialog *),
  .jims-section .wp-block-heading,
  footer :is(h1, h2, h3, h4, h5, h6).penman-font,
  footer .penman-font :is(h1, h2, h3, h4, h5, h6),
  .jg-reviews .jg-reviews__heading h2,
  .jg-reviews .jg-reviews__intro h3
):not(.analytics-consent-card *, .quote-modal *, .jg-preview-dialog *, .jg-reviews__card *) {
  font-family: var(--font-jims-heading);
}
body.jimsglass-presentation.wp-theme-jims-wp .wp-site-blocks .glass-hero-section h1.wp-block-heading:not(.analytics-consent-card *, .quote-modal *, .jg-preview-dialog *, .jg-reviews__card *) {
  font-weight: 900;
  font-style: italic;
}


/* Website-owned CTA typography. Display capitals preserve original labels,
   destinations and accessible names. Utility/provider controls are excluded. */
body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  a.button,
  button.finder-button,
  a.jg-reviews__all,
  a.phone-link,
  a.mobile-header-phone,
  a.mobile-nav-phone,
  a.footer-phone,
  a.cta-phone,
  a.about-phone-link,
  a.guarantee-phone-link,
  a.glass-service-call-link,
  a.glass-service-offer-phone,
  a.legacy-service-phone,
  a.location-phone-link,
  a.locations-hub-phone,
  a.service-hub-phone,
  .about-final-actions > a[href^="tel:"],
  .guarantee-final-actions > a[href^="tel:"],
  .glass-service-final-actions > a[href^="tel:"],
  .legacy-service-final-actions > a[href^="tel:"],
  .location-final-actions > a[href^="tel:"],
  .service-hub-final-actions > a[href^="tel:"],
  .glass-service-why-actions > a[href^="tel:"],
  .glass-service-mobile-cta > a,
  a.wp-block-button__link,
  .wp-block-button > a,
  .wp-block-button > button,
  .jims-block-button > a,
  .jims-block-button > button
):not(jims-customer-booking *, .analytics-consent-card *, .quote-modal *, .jg-preview-dialog *),
body.jimsglass-presentation.wp-theme-jims-wp .wp-site-blocks :is(
  a.button,
  button.finder-button,
  a.jg-reviews__all,
  a.phone-link,
  a.mobile-header-phone,
  a.mobile-nav-phone,
  a.footer-phone,
  a.cta-phone,
  a.about-phone-link,
  a.guarantee-phone-link,
  a.glass-service-call-link,
  a.glass-service-offer-phone,
  a.legacy-service-phone,
  a.location-phone-link,
  a.locations-hub-phone,
  a.service-hub-phone,
  .about-final-actions > a[href^="tel:"],
  .guarantee-final-actions > a[href^="tel:"],
  .glass-service-final-actions > a[href^="tel:"],
  .legacy-service-final-actions > a[href^="tel:"],
  .location-final-actions > a[href^="tel:"],
  .service-hub-final-actions > a[href^="tel:"],
  .glass-service-why-actions > a[href^="tel:"],
  .glass-service-mobile-cta > a,
  a.wp-block-button__link,
  .wp-block-button > a,
  .wp-block-button > button,
  .jims-block-button > a,
  .jims-block-button > button
):not(jims-customer-booking *, .analytics-consent-card *, .quote-modal *, .jg-preview-dialog *) {
  font-family: var(--font-jims-heading);
  font-style: italic;
  font-weight: 900;
  text-transform: uppercase;
  text-align: center;
  white-space: normal;
  max-width: 100%;
}

/* Keep deliberate helper/phone sizes, but inherit the CTA face and capitals. */
body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  a.button,
  button.finder-button,
  a.jg-reviews__all,
  a.phone-link,
  a.mobile-header-phone,
  a.mobile-nav-phone,
  a.footer-phone,
  a.cta-phone,
  a.about-phone-link,
  a.guarantee-phone-link,
  a.glass-service-call-link,
  a.glass-service-offer-phone,
  a.legacy-service-phone,
  a.location-phone-link,
  a.locations-hub-phone,
  a.service-hub-phone,
  .about-final-actions > a[href^="tel:"],
  .guarantee-final-actions > a[href^="tel:"],
  .glass-service-final-actions > a[href^="tel:"],
  .legacy-service-final-actions > a[href^="tel:"],
  .location-final-actions > a[href^="tel:"],
  .service-hub-final-actions > a[href^="tel:"],
  .glass-service-why-actions > a[href^="tel:"],
  .glass-service-mobile-cta > a,
  a.wp-block-button__link,
  .wp-block-button > a,
  .wp-block-button > button,
  .jims-block-button > a,
  .jims-block-button > button
):not(jims-customer-booking *, .analytics-consent-card *, .quote-modal *, .jg-preview-dialog *) :is(span, small, strong),
body.jimsglass-presentation.wp-theme-jims-wp .wp-site-blocks :is(
  a.button,
  button.finder-button,
  a.jg-reviews__all,
  a.phone-link,
  a.mobile-header-phone,
  a.mobile-nav-phone,
  a.footer-phone,
  a.cta-phone,
  a.about-phone-link,
  a.guarantee-phone-link,
  a.glass-service-call-link,
  a.glass-service-offer-phone,
  a.legacy-service-phone,
  a.location-phone-link,
  a.locations-hub-phone,
  a.service-hub-phone,
  .about-final-actions > a[href^="tel:"],
  .guarantee-final-actions > a[href^="tel:"],
  .glass-service-final-actions > a[href^="tel:"],
  .legacy-service-final-actions > a[href^="tel:"],
  .location-final-actions > a[href^="tel:"],
  .service-hub-final-actions > a[href^="tel:"],
  .glass-service-why-actions > a[href^="tel:"],
  .glass-service-mobile-cta > a,
  a.wp-block-button__link,
  .wp-block-button > a,
  .wp-block-button > button,
  .jims-block-button > a,
  .jims-block-button > button
):not(jims-customer-booking *, .analytics-consent-card *, .quote-modal *, .jg-preview-dialog *) :is(span, small, strong) {
  font-family: inherit;
  font-style: inherit;
  font-weight: inherit;
  text-transform: inherit;
}

/* Keep the full desktop navigation on one line beside the wider display face. */
@media (min-width: 961px) and (max-width: 1120px) {
  :is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) .site-header .header-actions a.button { font-size: 14px; padding-inline: 12px; }
}
@media (min-width: 1121px) and (max-width: 1200px) {
  :is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) .site-header .header-actions a.button { font-size: 15px; padding-inline: 18px; }
}


/* A subtle +0.01em for display titles. Keep the shared legacy token intact:
   consent/quote UI, navigation, kickers, CTA labels and reviewer names retain
   their own spacing. Existing title hierarchy is preserved below. */
body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) main :where(h1, h2, h3, h4, h5, h6):not(:where(.jg-reviews *, .analytics-consent-card *, .quote-modal *, .booking-funnel-card *, .jg-preview-dialog *)),
body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) .footer-primary h2,
body.jimsglass-presentation.wp-theme-jims-wp .wp-site-blocks :where(
  .glass-hero-section h1.wp-block-heading,
  .common-base h1,
  .wp-block-post-title,
  .entry-content :is(h1, h2, h3, h4, h5, h6),
  .jims-section .wp-block-heading,
  footer :is(h1, h2, h3, h4, h5, h6).penman-font,
  footer .penman-font :is(h1, h2, h3, h4, h5, h6)
):not(:where(.jg-reviews *, .analytics-consent-card *, .quote-modal *, .booking-funnel-card *, .jg-preview-dialog *)) {
  letter-spacing: 0.01em;
}

body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  .gallery-hero h1,
  .gallery-section-heading h2,
  .gallery-guarantee h2,
  .service-hub-hero h1,
  .service-hub-section-heading h2,.service-hub-pathways-heading h2,.service-hub-trust h2,.service-hub-faq h2,
  .service-hub-process-heading h2,
  .service-hub-final h2,
  .about-hero h1,
  .about-network-copy h2,.about-section-heading h2,.about-story h2,.about-guarantee h2,.about-franchise h2,.about-final-cta h2,
  .hero h1,
  .home-services-heading h2,
  .mission-heading h2,
  .pathways-heading h2,.guarantee-content h2,.why-heading h2,.reviews-heading h2,.location-copy h2,
  .home-blog-heading h2,
  .faq-heading h2,
  .footer-primary h2,
  .articles-hero-copy h1,
  .articles-library-heading h2,
  .articles-cta h2,
  .article-detail-hero h1,
  .article-related-heading h2,
  .article-closing-cta h2,
  .legal-hero-copy h1,
  .legal-cta h2,
  .glass-service-hero h1,
  .glass-service-section-heading h2,.glass-service-process-copy h2,.glass-service-options-copy h2,.glass-service-why-copy h2,.glass-service-faq-heading h2,
  .glass-service-overview-copy h2,
  .glass-service-overview-area h3,
  .glass-service-page .glass-service-offer-heading h2 strong,.location-page .glass-service-offer-heading h2 strong,
  .glass-service-final-cta h2,
  .guarantee-hero h1,
  .guarantee-reasons h2,.guarantee-meaning h2,.guarantee-coverage h2,.guarantee-terms h2,.guarantee-final-cta h2,
  .franchise-hero h1,
  .franchise-intro h2,.franchise-section-heading h2,.franchise-support h2,.franchise-ownership h2,.franchise-faq h2,.franchise-final-cta h2,
  .not-found-copy h1,
  .not-found-links h2,
  .editorial-hero.guarantee-hero h1,.editorial-hero.franchise-hero h1,
  .franchise-final-cta h2,
  .contact-hero h1,
  .contact-section-heading h2,
  .contact-preparation-copy h2,
  .contact-final-cta h2,
  .location-hero h1,
  .location-section-heading h2,.location-local-copy h2,.location-job-heading h2,.location-faq-heading h2,.location-final h2,
  .location-area-intro h2,
  .legacy-service-page h1,.legacy-service-page h2,.legacy-service-page h3
) { letter-spacing: calc(var(--title-letter-spacing) + 0.01em); }

body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  .gallery-hub-card-label h2,
  .article-support-card h2,
  .contact-method-card h3,
  .locations-search-card h2,
  .location-hub-card h4
) { letter-spacing: -0.03em; }

body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  .service-hub-card h3,
  .service-hub-pathway-grid h3,
  .hero-info-card h2,
  .home-blog-card h3,
  .article-card h3,
  .article-content h3,
  .article-related-card h3,
  .glass-service-page .glass-service-offer-heading h2,.location-page .glass-service-offer-heading h2,
  .location-job-grid h3
) { letter-spacing: -0.025em; }

body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  .service-hub-process-grid h3,
  .about-trust-grid h3,
  .why-reason h3,
  .glass-service-steps h3,
  .guarantee-reason-grid h3
) { letter-spacing: -0.015em; }

body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  .mission-copy h3,
  .pathway-copy h3,
  .featured-article-copy h2,
  .article-content h2,
  .legal-article h2,
  .contact-urgent-card h2,
  .contact-other-enquiries h2,
  .locations-state-heading h3
) { letter-spacing: -0.035em; }

body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  .legal-article h3,
  .glass-service-option-list h3,
  .guarantee-coverage-grid h3
) { letter-spacing: -0.01em; }

body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  .location-process-grid h3
) { letter-spacing: -0.02em; }

body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  .locations-hub-hero h1
) { letter-spacing: -0.045em; }

body:is(.jg-homepage-exact, .jg-domestic-services-exact, .jg-core-exact) :is(
  .locations-hub-trust-heading h2,.locations-hub-how h2,.locations-hub-faq h2
) { letter-spacing: -0.04em; }

/* Native theme values, increased by the same 0.01em. */
body.jimsglass-presentation.wp-theme-jims-wp .wp-site-blocks :is(
  .glass-hero-section h1.wp-block-heading,
  .common-base h1,
  .jims-glass-effect-bg h1
) { letter-spacing: -0.035em; }
body.jimsglass-presentation.wp-theme-jims-wp .wp-site-blocks
  .wp-block-post-content .jims-section__content h2,
body.jimsglass-presentation.wp-theme-jims-wp .wp-site-blocks
  .wp-block-cover h1.wp-block-post-title { letter-spacing: -0.025em; }
body.jimsglass-presentation.wp-theme-jims-wp.jimsglass-listing-presentation .wp-site-blocks
  .wp-block-query .wp-block-post-title,
body.jimsglass-presentation.wp-theme-jims-wp.jimsglass-home-presentation .wp-site-blocks
  .jims-glass-services h3 { letter-spacing: -0.015em; }

/* Homepage residential/commercial card titles use the established title face. */
.home-page .pathway-copy h3 {
  font-family: var(--font-jims-heading, 'Montserrat', Arial, sans-serif);
  font-style: italic;
  font-weight: 900;
}
