/* Exact reference Montserrat files, self-hosted under SIL OFL 1.1. */
@font-face{font-family:"C7 Montserrat";font-style:italic;font-weight:500;font-display:swap;src:url("../fonts/montserrat-500-italic.woff2") format("woff2");}
@font-face{font-family:"C7 Montserrat";font-style:italic;font-weight:600;font-display:swap;src:url("../fonts/montserrat-600-italic.woff2") format("woff2");}
@font-face{font-family:"C7 Montserrat";font-style:italic;font-weight:700;font-display:swap;src:url("../fonts/montserrat-700-italic.woff2") format("woff2");}
@font-face{font-family:"C7 Montserrat";font-style:normal;font-weight:300;font-display:swap;src:url("../fonts/montserrat-300-normal.woff2") format("woff2");}
@font-face{font-family:"C7 Montserrat";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/montserrat-400-normal.woff2") format("woff2");}
@font-face{font-family:"C7 Montserrat";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/montserrat-500-normal.woff2") format("woff2");}
@font-face{font-family:"C7 Montserrat";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/montserrat-600-normal.woff2") format("woff2");}
@font-face{font-family:"C7 Montserrat";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/montserrat-700-normal.woff2") format("woff2");}

/*
 * C7 front-end typography. Requires body_class: c7-local-fonts and locally
 * registered @font-face family "C7 Montserrat" in the child theme.
 * Deliberately changes only font family, role weight and letter spacing.
 * No font shorthand, font-size, line-height, dimensions, layout or copy changes.
 * The small number of !important overrides is necessary because migrated
 * content styles occur after the child stylesheet and have scoped specificity.
 */
body.c7-local-fonts {
  --c7-local-font: "C7 Montserrat", Arial, sans-serif;
  --bs-body-font-family: var(--c7-local-font);
  --bs-font-sans-serif: var(--c7-local-font);
  font-family: var(--c7-local-font) !important;
  font-weight: 500 !important;
  letter-spacing: -0.03em !important;
}

/* Explicit migrated families and font shorthands, plus unclassed text/control
 * leaves. Do not target pseudo-elements or replace icon-font glyph systems. */
body.c7-local-fonts :where(
  [class*="c7-"], [id^="c7-"], .lc-007-header, .lc-007-footer,
  .widget-image-caption, .wpcf7,
  h1, h2, h3, h4, h5, h6, p, a, li, dt, dd, label,
  button, input, select, textarea, summary,
  table, th, td, caption, figcaption, blockquote
):not(:where(
  .star-rating, .star-rating *,
  .c7-mfp-close, .c7-cover-prev, .c7-cover-next,
  .c7-icon, .c7-icon *, .dashicons, .dashicons *,
  .fa, .fas, .far, .fab, .fa-solid, .fa-regular, .fa-brands,
  .material-icons, .material-symbols-outlined
)) {
  font-family: var(--c7-local-font) !important;
}

/* Section/root shorthand used 400; setting body alone would not override it.
 * Preserve special numerical/quoted/emphasis leaves unless assigned a role. */
body.c7-local-fonts :where(
  section[class*="c7-"], dialog[id^="c7-"],
  .lc-007-header, .lc-007-footer, .c7-inquiry-fields,
  .c7-blog-archive, .c7-post, .c7-products-archive, .c7-product-single,
  .c7-product-image-dialog, .c7-search-native, .c7-source-notfound,
  #c7-terms-body, #c7-privacy-body, #c7-thank-you,
  p, li, dt, dd, td, caption, figcaption, label,
  button, input, select, textarea, summary,
  .c7-bottom, .c7-counter-title, .c7-testimonial-carousel__reviewer-title
):not(:where(
  .star-rating, .star-rating *,
  .c7-mfp-close, .c7-cover-prev, .c7-cover-next,
  .c7-icon, .c7-icon *, .dashicons, .dashicons *,
  .fa, .fas, .far, .fab, .fa-solid, .fa-regular, .fa-brands,
  .material-icons, .material-symbols-outlined
)) {
  font-weight: 500 !important;
  letter-spacing: -0.03em !important;
}

/* Navigation has its own explicit weights, including old mega-title 800. */
body.c7-local-fonts :where(
  .lc-007-header a, .lc-007-header button,
  .c7-manufacturer-header a, .c7-manufacturer-header button,
  .c7-mega-title, .c7-category-nav a, .c7-toc-button,
  .lc-007-footer a, .c7-pagination a, .page-link
) {
  font-weight: 500 !important;
  letter-spacing: -0.03em !important;
}

/* Unclassed inline spans must inherit their actual parent, not force 500.
 * This permits <strong><span>...</span></strong> to remain emphasized. */
body.c7-local-fonts :where(p, li, dt, dd, td, label, button, a)
  :where(span, em):not(:where(
    .star-rating, .star-rating *,
    .c7-icon, .c7-icon *, .dashicons, .dashicons *,
    .fa, .fas, .far, .fab, .fa-solid, .fa-regular, .fa-brands,
    .material-icons, .material-symbols-outlined
  )) {
  font-weight: inherit !important;
  letter-spacing: inherit !important;
}

/* Semantic and known non-semantic heading roles. Reviewer titles/counter
 * labels and whole c7-widget-heading wrappers are intentionally not headings. */
body.c7-local-fonts :where(
  h2, h3, h4, h5, h6,
  .c7-heading, .c7-gradient-heading, .c7-infobox-title,
  .c7-icon-box-title, .c7-imagebox-title, .c7-product-grid__title,
  .c7-post__title, .c7-footer-heading, .c7-accordion__item-title,
  .c7-toc__header-title, .c7-details-title, .c7-dynamic-heading,
  .c7-hero-title, .c7-notfound-heading
) {
  font-weight: 600 !important;
  letter-spacing: -0.05em !important;
}

/* Main H1 takes precedence over .c7-heading and root/default role rules. */
body.c7-local-fonts h1 {
  font-weight: 700 !important;
  letter-spacing: -0.05em !important;
}

/* Explicit title children cannot be reset by a generic navigation/body rule.
 * No rule assigns "normal" or resets italic. Strong/b are handled last. */
body.c7-local-fonts :where(
  h1, h2, h3, h4, h5, h6,
  .c7-heading, .c7-gradient-heading, .c7-infobox-title,
  .c7-icon-box-title, .c7-imagebox-title, .c7-product-grid__title,
  .c7-post__title, .c7-footer-heading, .c7-accordion__item-title,
  .c7-toc__header-title, .c7-details-title, .c7-dynamic-heading,
  .c7-hero-title, .c7-notfound-heading
) :where(a, span, em):not(:where(
  .star-rating, .star-rating *,
  .c7-icon, .c7-icon *, .dashicons, .dashicons *,
  .fa, .fas, .far, .fab, .fa-solid, .fa-regular, .fa-brands,
  .material-icons, .material-symbols-outlined
)) {
  font-weight: inherit !important;
  letter-spacing: inherit !important;
}

/* Preserve semantic emphasis even within heading or body inline children. */
body.c7-local-fonts :where(strong, b) {
  font-weight: 700 !important;
}
body.c7-local-fonts :where(strong, b) :where(a, span, em):not(:where(
  .star-rating, .star-rating *,
  .c7-icon, .c7-icon *, .dashicons, .dashicons *,
  .fa, .fas, .far, .fab, .fa-solid, .fa-regular, .fa-brands,
  .material-icons, .material-symbols-outlined
)) {
  font-weight: inherit !important;
}
