/* Import Montserrat as primary font for entire website */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');

/* Override all CSS variables that reference fonts */
:root,
html:root,
body:root {
  --font-family-primary: 'Montserrat', sans-serif !important;
  --font-family-secondary: 'Montserrat', sans-serif !important;
  --font-family-tertiary: 'Montserrat', sans-serif !important;
  --font-family-serif: 'Montserrat', sans-serif !important;
  --font-primary: 'Montserrat', sans-serif !important;
  --font-secondary: 'Montserrat', sans-serif !important;
  --font-tertiary: 'Montserrat', sans-serif !important;
}

/* Apply Montserrat to standard HTML text elements */
html,
body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
a,
span,
div,
button,
input,
textarea,
select,
header,
footer,
nav,
section,
article,
aside,
ul,
ol,
li,
label,
legend,
caption,
th,
td,
pre,
code,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: 'Montserrat', sans-serif;
}

/* Map font-face aliases to Montserrat */
@font-face {
  font-family: 'Mabry Pro';
  src: local('Montserrat');
  font-display: swap;
}

@font-face {
  font-family: 'Graphik';
  src: local('Montserrat');
  font-display: swap;
}

@font-face {
  font-family: 'Sharp Grotesk';
  src: local('Montserrat');
  font-display: swap;
}

@font-face {
  font-family: 'PolySans';
  src: local('Montserrat');
  font-display: swap;
}

@font-face {
  font-family: 'Sunsive';
  src: local('Montserrat');
  font-display: swap;
}

@font-face {
  font-family: 'Open Sauce Sans';
  src: local('Montserrat');
  font-display: swap;
}

@font-face {
  font-family: 'Lexend';
  src: local('Montserrat');
  font-display: swap;
}

@font-face {
  font-family: 'Degular Display';
  src: local('Montserrat');
  font-display: swap;
}

@font-face {
  font-family: 'Optician Sans';
  src: local('Montserrat');
  font-display: swap;
}

@font-face {
  font-family: 'Inter';
  src: local('Montserrat');
  font-display: swap;
}

@font-face {
  font-family: 'Work Sans';
  src: local('Montserrat');
  font-display: swap;
}

/* Apply Montserrat to descendant elements while excluding Font Awesome icons and i elements */
body
  *:not(.fa):not(.fas):not(.far):not(.fal):not(.fab):not(.fa-solid):not(.fa-regular):not(
    .fa-light
  ):not(.fa-thin):not(.fa-duotone):not(.fa-sharp):not(.fa-brands):not([class*='fa-']):not(
    [class*='unicon-']
  ):not(i),
[class*='font']:not([class*='fa-']),
[class*='ft-']:not([class*='fa-']),
.ft-primary,
.ft-secondary,
.ft-tertiary {
  font-family: 'Montserrat', sans-serif;
}

/* Explicitly protect and restore Font Awesome 6 Icons and pseudo-elements */
.fa,
.fas,
.far,
.fal,
.fab,
.fa-solid,
.fa-regular,
.fa-light,
.fa-thin,
.fa-duotone,
.fa-sharp,
.fa-brands,
[class^='fa-'],
[class*=' fa-'],
[class^='fa-']::before,
[class*=' fa-']::before,
[class^='fa-']::after,
[class*=' fa-']::after,
.fa::before,
.fas::before,
.far::before,
.fal::before,
.fab::before,
.fa-solid::before,
.fa-regular::before,
.fa-light::before,
.fa-thin::before,
.fa-duotone::before,
.fa-sharp::before,
.fa-brands::before {
  font-family: 'Font Awesome 6 Free', 'Font Awesome 6 Brands' !important;
}

.fab,
.fa-brands,
.fab::before,
.fa-brands::before {
  font-family: 'Font Awesome 6 Brands' !important;
}

.fa-regular,
.far,
.fa-regular::before,
.far::before {
  font-weight: 400 !important;
}

.fa-solid,
.fas,
.fa-solid::before,
.fas::before {
  font-weight: 900 !important;
}
