/* Montserrat, self-hosted, latin subset only.
   Replaces MontserratLight.ttf - 187.9 KB, a TTF rather than woff2, and a
   SINGLE weight, which is why every heading was synthetically emboldened
   by the browser instead of using a real bold face.
   These are Google's variable files, so 300-700 come from one download.
   latin-ext, Cyrillic and Vietnamese are deliberately not shipped: this
   site is English and Spanish, and every Spanish accent is inside latin. */

@font-face {
  font-family: 'Montserrat';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/wp-content/uploads/sapex-fonts/montserrat-latin-italic.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: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.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: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.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: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.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: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.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: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.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;
}


/* --- family aliases -------------------------------------------------------
   Measured on the rendered homepage, what actually painted was:
     Helvetica Neue x85, Lato x84, MontserratLight x32
   Lato has no font file anywhere on this install, so every stack that names it
   first fell through to system sans - that is the second typeface on the page.
   MontserratLight had one weight, so bold was synthesised.

   Rather than rewrite dozens of font stacks scattered through a 391 KB
   Customizer block and the theme (and miss some, as the reds taught me), the
   families those stacks ask for are declared here and pointed at the real
   Montserrat files. Every existing stack keeps working and resolves to one
   typeface with real weights. Nothing claims to be Lato that ever had a Lato
   file to lose. */

@font-face{font-family:'Lato';font-style:normal;font-weight:100 900;font-display:swap;src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.woff2) format('woff2');}
@font-face{font-family:'Lato';font-style:italic;font-weight:100 900;font-display:swap;src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-italic.woff2) format('woff2');}
@font-face{font-family:'MontserratLight';font-style:normal;font-weight:100 900;font-display:swap;src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.woff2) format('woff2');}
@font-face{font-family:'MontserratLight';font-style:italic;font-weight:100 900;font-display:swap;src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-italic.woff2) format('woff2');}
@font-face{font-family:'MontserratBold';font-style:normal;font-weight:100 900;font-display:swap;src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.woff2) format('woff2');}
@font-face{font-family:'MontserratBold';font-style:italic;font-weight:100 900;font-display:swap;src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-italic.woff2) format('woff2');}
@font-face{font-family:'Montserrat Light';font-style:normal;font-weight:100 900;font-display:swap;src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.woff2) format('woff2');}
@font-face{font-family:'Montserrat Light';font-style:italic;font-weight:100 900;font-display:swap;src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-italic.woff2) format('woff2');}
@font-face{font-family:'Montserrat Bold';font-style:normal;font-weight:100 900;font-display:swap;src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.woff2) format('woff2');}
@font-face{font-family:'Montserrat Bold';font-style:italic;font-weight:100 900;font-display:swap;src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-italic.woff2) format('woff2');}

/* --- Font Awesome, replaced ----------------------------------------------
   The whole of Font Awesome was loading for SIX icons:
     brands  whatsapp, linkedin-in, instagram, facebook-f
     solid   share-nodes, angle-up
   fa-brands-400.woff2 114.9 KB + fa-solid-900.woff2 153.1 KB + two copies of
   all.min.css 21.6 and 12.4 KB = 302 KB.

   These outlines are Font Awesome's own, extracted from the SVG fonts already
   shipped in the Elementor plugin, so they are the real glyphs rather than
   lookalikes. Drawn as masks rather than background images so they keep
   inheriting currentColor, which is what the hover states rely on.
   Font Awesome Free icons are CC BY 4.0. */
i.fa-brands,i.fa-solid,i.fab,i.fas,i.fa{
  display:inline-block;width:1em;height:1em;
  background-color:currentColor;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;
  -webkit-mask-size:contain;mask-size:contain;
  vertical-align:-.125em;font-style:normal;
}
i.fa-brands::before,i.fa-solid::before,i.fab::before,i.fas::before{content:none;}
i.fa-whatsapp{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20d%3D%22M380.9%20350.9c41.8994%20-42%2067.0996%20-97.7002%2067.0996%20-157c0%20-122.4%20-101.8%20-222%20-224.1%20-222h-0.100586c-37.2002%200%20-73.7002%209.2998%20-106.1%2027l-117.7%20-30.9004l31.5%20115c-19.4004%2033.7002%20-29.5996%2071.9004%20-29.5996%20111c0%20122.4%2099.5996%20222%20222%20222%0Ac59.2998%200%20115.1%20-23.0996%20157%20-65.0996zM223.9%209.2998c101.699%200%20186.6%2082.7998%20186.6%20184.601c0.0996094%2049.2998%20-21.2998%2095.5996%20-56.0996%20130.5c-34.8008%2034.8994%20-81.1006%2054.0996%20-130.4%2054.0996c-101.8%200%20-184.6%20-82.7998%20-184.6%20-184.5%0Ac0%20-34.9004%209.69922%20-68.7998%2028.1992%20-98.2002l4.40039%20-7l-18.5996%20-68.0996l69.7998%2018.2998l6.7002%20-4c28.2998%20-16.7998%2060.7998%20-25.7002%2094%20-25.7002zM325.1%20147.5c5.5%20-2.7002%209.2002%20-4.09961%2010.5%20-6.59961c1.40039%20-2.30078%201.40039%20-13.4004%20-3.19922%20-26.4004%0Ac-4.60059%20-13%20-26.7002%20-24.7998%20-37.4004%20-26.4004c-17.5996%20-2.59961%20-31.4004%20-1.2998%20-66.5996%2013.9004c-55.7002%2024.0996%20-92%2080.0996%20-94.8008%2083.7998c-2.69922%203.7002%20-22.5996%2030.1006%20-22.5996%2057.4004s14.2998%2040.7002%2019.4004%2046.2998%0Ac5.09961%205.5%2011.0996%206.90039%2014.7998%206.90039s7.39941%200%2010.5996%20-0.200195c3.40039%20-0.200195%208%201.2998%2012.5%20-9.5c4.60059%20-11.1006%2015.7002%20-38.4004%2017.1006%20-41.2002c1.39941%20-2.7998%202.2998%20-6%200.5%20-9.7002c-10.6006%20-21.2002%20-22%20-20.5%20-16.3008%20-30.2998%0Ac21.5%20-36.9004%2042.9004%20-49.7002%2075.5%20-66c5.5%20-2.7998%208.80078%20-2.2998%2012%201.40039c3.30078%203.7998%2013.9004%2016.1992%2017.6006%2021.7998c3.7002%205.59961%207.39941%204.7002%2012.5%202.7998c5.09961%20-1.7998%2032.3994%20-15.2002%2037.8994%20-18z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20d%3D%22M380.9%20350.9c41.8994%20-42%2067.0996%20-97.7002%2067.0996%20-157c0%20-122.4%20-101.8%20-222%20-224.1%20-222h-0.100586c-37.2002%200%20-73.7002%209.2998%20-106.1%2027l-117.7%20-30.9004l31.5%20115c-19.4004%2033.7002%20-29.5996%2071.9004%20-29.5996%20111c0%20122.4%2099.5996%20222%20222%20222%0Ac59.2998%200%20115.1%20-23.0996%20157%20-65.0996zM223.9%209.2998c101.699%200%20186.6%2082.7998%20186.6%20184.601c0.0996094%2049.2998%20-21.2998%2095.5996%20-56.0996%20130.5c-34.8008%2034.8994%20-81.1006%2054.0996%20-130.4%2054.0996c-101.8%200%20-184.6%20-82.7998%20-184.6%20-184.5%0Ac0%20-34.9004%209.69922%20-68.7998%2028.1992%20-98.2002l4.40039%20-7l-18.5996%20-68.0996l69.7998%2018.2998l6.7002%20-4c28.2998%20-16.7998%2060.7998%20-25.7002%2094%20-25.7002zM325.1%20147.5c5.5%20-2.7002%209.2002%20-4.09961%2010.5%20-6.59961c1.40039%20-2.30078%201.40039%20-13.4004%20-3.19922%20-26.4004%0Ac-4.60059%20-13%20-26.7002%20-24.7998%20-37.4004%20-26.4004c-17.5996%20-2.59961%20-31.4004%20-1.2998%20-66.5996%2013.9004c-55.7002%2024.0996%20-92%2080.0996%20-94.8008%2083.7998c-2.69922%203.7002%20-22.5996%2030.1006%20-22.5996%2057.4004s14.2998%2040.7002%2019.4004%2046.2998%0Ac5.09961%205.5%2011.0996%206.90039%2014.7998%206.90039s7.39941%200%2010.5996%20-0.200195c3.40039%20-0.200195%208%201.2998%2012.5%20-9.5c4.60059%20-11.1006%2015.7002%20-38.4004%2017.1006%20-41.2002c1.39941%20-2.7998%202.2998%20-6%200.5%20-9.7002c-10.6006%20-21.2002%20-22%20-20.5%20-16.3008%20-30.2998%0Ac21.5%20-36.9004%2042.9004%20-49.7002%2075.5%20-66c5.5%20-2.7998%208.80078%20-2.2998%2012%201.40039c3.30078%203.7998%2013.9004%2016.1992%2017.6006%2021.7998c3.7002%205.59961%207.39941%204.7002%2012.5%202.7998c5.09961%20-1.7998%2032.3994%20-15.2002%2037.8994%20-18z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");}
i.fa-linkedin-in{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20d%3D%22M100.28%200h-92.8799v299.1h92.8799v-299.1zM53.79%20339.9c-29.7002%200%20-53.79%2024.5996%20-53.79%2054.2998c0%2029.6875%2024.1025%2053.79%2053.79%2053.79s53.79%20-24.1025%2053.79%20-53.79c0%20-29.7002%20-24.0996%20-54.2998%20-53.79%20-54.2998zM447.9%200h-92.6807v145.6%0Ac0%2034.7002%20-0.700195%2079.2002%20-48.29%2079.2002c-48.29%200%20-55.6895%20-37.7002%20-55.6895%20-76.7002v-148.1h-92.7803v299.1h89.0801v-40.7998h1.2998c12.4004%2023.5%2042.6904%2048.2998%2087.8799%2048.2998c94%200%20111.28%20-61.8994%20111.28%20-142.3v-164.3h-0.0996094z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20d%3D%22M100.28%200h-92.8799v299.1h92.8799v-299.1zM53.79%20339.9c-29.7002%200%20-53.79%2024.5996%20-53.79%2054.2998c0%2029.6875%2024.1025%2053.79%2053.79%2053.79s53.79%20-24.1025%2053.79%20-53.79c0%20-29.7002%20-24.0996%20-54.2998%20-53.79%20-54.2998zM447.9%200h-92.6807v145.6%0Ac0%2034.7002%20-0.700195%2079.2002%20-48.29%2079.2002c-48.29%200%20-55.6895%20-37.7002%20-55.6895%20-76.7002v-148.1h-92.7803v299.1h89.0801v-40.7998h1.2998c12.4004%2023.5%2042.6904%2048.2998%2087.8799%2048.2998c94%200%20111.28%20-61.8994%20111.28%20-142.3v-164.3h-0.0996094z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");}
i.fa-instagram{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20d%3D%22M224.1%20307c63.6006%200%20114.9%20-51.2998%20114.9%20-114.9c0%20-63.5996%20-51.2998%20-114.899%20-114.9%20-114.899c-63.5996%200%20-114.899%2051.2998%20-114.899%20114.899c0%2063.6006%2051.2998%20114.9%20114.899%20114.9zM224.1%20117.4c41.1006%200%2074.7002%2033.5%2074.7002%2074.6992%0Ac0%2041.2002%20-33.5%2074.7002%20-74.7002%2074.7002c-41.1992%200%20-74.6992%20-33.5%20-74.6992%20-74.7002c0%20-41.1992%2033.5996%20-74.6992%2074.6992%20-74.6992zM370.5%20311.7c0%20-14.9004%20-12%20-26.7998%20-26.7998%20-26.7998c-14.9004%200%20-26.7998%2012%20-26.7998%2026.7998s12%2026.7998%2026.7998%2026.7998%0As26.7998%20-12%2026.7998%20-26.7998zM446.6%20284.5c2.10059%20-37%202.10059%20-147.8%200%20-184.8c-1.7998%20-35.9004%20-10%20-67.7002%20-36.1992%20-93.9004c-26.2002%20-26.2998%20-58%20-34.5%20-93.9004%20-36.2002c-37%20-2.09961%20-147.9%20-2.09961%20-184.9%200%0Ac-35.8994%201.80078%20-67.5996%2010%20-93.8994%2036.2002s-34.5%2058%20-36.2002%2093.9004c-2.09961%2037%20-2.09961%20147.899%200%20184.899c1.7998%2035.9004%209.90039%2067.7002%2036.2002%2093.9004s58.0996%2034.4004%2093.8994%2036.0996c37%202.10059%20147.9%202.10059%20184.9%200%0Ac35.9004%20-1.7998%2067.7002%20-10%2093.9004%20-36.1992c26.2998%20-26.2002%2034.5%20-58%2036.1992%20-93.9004zM398.8%2060c11.7002%2029.4004%209%2099.5%209%20132.1c0%2032.6006%202.7002%20102.601%20-9%20132.101c-7.89941%2019.7002%20-23%2034.7998%20-42.5996%2042.5996c-29.4004%2011.6006%20-99.5%209%20-132.101%209%0Ac-32.5996%200%20-102.6%202.7002%20-132.1%20-9c-19.7002%20-7.89941%20-34.7998%20-23%20-42.5996%20-42.5996c-11.6006%20-29.4004%20-9%20-99.5%20-9%20-132.101c0%20-32.5996%20-2.7002%20-102.6%209%20-132.1c7.89941%20-19.7002%2023%20-34.7998%2042.5996%20-42.5996c29.4004%20-11.6006%2099.5%20-9%20132.1%20-9%0Ac32.6006%200%20102.601%20-2.7002%20132.101%209c19.7002%207.89941%2034.7998%2023%2042.5996%2042.5996z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20d%3D%22M224.1%20307c63.6006%200%20114.9%20-51.2998%20114.9%20-114.9c0%20-63.5996%20-51.2998%20-114.899%20-114.9%20-114.899c-63.5996%200%20-114.899%2051.2998%20-114.899%20114.899c0%2063.6006%2051.2998%20114.9%20114.899%20114.9zM224.1%20117.4c41.1006%200%2074.7002%2033.5%2074.7002%2074.6992%0Ac0%2041.2002%20-33.5%2074.7002%20-74.7002%2074.7002c-41.1992%200%20-74.6992%20-33.5%20-74.6992%20-74.7002c0%20-41.1992%2033.5996%20-74.6992%2074.6992%20-74.6992zM370.5%20311.7c0%20-14.9004%20-12%20-26.7998%20-26.7998%20-26.7998c-14.9004%200%20-26.7998%2012%20-26.7998%2026.7998s12%2026.7998%2026.7998%2026.7998%0As26.7998%20-12%2026.7998%20-26.7998zM446.6%20284.5c2.10059%20-37%202.10059%20-147.8%200%20-184.8c-1.7998%20-35.9004%20-10%20-67.7002%20-36.1992%20-93.9004c-26.2002%20-26.2998%20-58%20-34.5%20-93.9004%20-36.2002c-37%20-2.09961%20-147.9%20-2.09961%20-184.9%200%0Ac-35.8994%201.80078%20-67.5996%2010%20-93.8994%2036.2002s-34.5%2058%20-36.2002%2093.9004c-2.09961%2037%20-2.09961%20147.899%200%20184.899c1.7998%2035.9004%209.90039%2067.7002%2036.2002%2093.9004s58.0996%2034.4004%2093.8994%2036.0996c37%202.10059%20147.9%202.10059%20184.9%200%0Ac35.9004%20-1.7998%2067.7002%20-10%2093.9004%20-36.1992c26.2998%20-26.2002%2034.5%20-58%2036.1992%20-93.9004zM398.8%2060c11.7002%2029.4004%209%2099.5%209%20132.1c0%2032.6006%202.7002%20102.601%20-9%20132.101c-7.89941%2019.7002%20-23%2034.7998%20-42.5996%2042.5996c-29.4004%2011.6006%20-99.5%209%20-132.101%209%0Ac-32.5996%200%20-102.6%202.7002%20-132.1%20-9c-19.7002%20-7.89941%20-34.7998%20-23%20-42.5996%20-42.5996c-11.6006%20-29.4004%20-9%20-99.5%20-9%20-132.101c0%20-32.5996%20-2.7002%20-102.6%209%20-132.1c7.89941%20-19.7002%2023%20-34.7998%2042.5996%20-42.5996c29.4004%20-11.6006%2099.5%20-9%20132.1%20-9%0Ac32.6006%200%20102.601%20-2.7002%20132.101%209c19.7002%207.89941%2034.7998%2023%2042.5996%2042.5996z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");}
i.fa-facebook-f{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20320%20512%22%3E%3Cpath%20d%3D%22M279.14%20160h-74.6895v-224h-100.17v224h-81.3906v92.6602h81.3906v70.6201c0%2080.3398%2047.8594%20124.72%20121.08%20124.72c35.0693%200%2071.75%20-6.25977%2071.75%20-6.25977v-78.8906h-40.4199c-39.8203%200%20-52.2402%20-24.71%20-52.2402%20-50.0596v-60.1299h88.9102z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20320%20512%22%3E%3Cpath%20d%3D%22M279.14%20160h-74.6895v-224h-100.17v224h-81.3906v92.6602h81.3906v70.6201c0%2080.3398%2047.8594%20124.72%20121.08%20124.72c35.0693%200%2071.75%20-6.25977%2071.75%20-6.25977v-78.8906h-40.4199c-39.8203%200%20-52.2402%20-24.71%20-52.2402%20-50.0596v-60.1299h88.9102z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");}
i.fa-share-nodes{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20448%20512%22%3E%3Cpath%20d%3D%22M352%20128c53.0186%200%2096%20-42.9814%2096%20-96s-42.9814%20-96%20-96%20-96s-96%2042.9814%20-96%2096c0%200.00976562%200.00292969%20-0.0429688%200.00292969%20-0.0332031c0%207.16699%200.785156%2014.1523%202.27344%2020.874l-102.486%2064.0537c-16.4033%20-13.0752%20-37.1816%20-20.8945%20-59.79%20-20.8945%0Ac-53.0186%200%20-96%2042.9814%20-96%2096s42.9814%2096%2096%2096c22.6084%200%2043.3867%20-7.81934%2059.79%20-20.8945l102.486%2064.0537c-1.48633%206.71094%20-2.27637%2013.6826%20-2.27637%2020.8408c0%2053.0186%2042.9814%2096%2096%2096s96%20-42.9814%2096%20-96s-42.9814%20-96%20-96%20-96%0Ac-22.6084%200%20-43.3867%207.81934%20-59.79%2020.8965l-102.486%20-64.0547c1.48828%20-6.73145%202.27344%20-13.6025%202.27344%20-20.7793s-0.785156%20-14.1719%20-2.27344%20-20.9033l102.486%20-64.0537c16.4033%2013.0752%2037.1816%2020.8945%2059.79%2020.8945z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20448%20512%22%3E%3Cpath%20d%3D%22M352%20128c53.0186%200%2096%20-42.9814%2096%20-96s-42.9814%20-96%20-96%20-96s-96%2042.9814%20-96%2096c0%200.00976562%200.00292969%20-0.0429688%200.00292969%20-0.0332031c0%207.16699%200.785156%2014.1523%202.27344%2020.874l-102.486%2064.0537c-16.4033%20-13.0752%20-37.1816%20-20.8945%20-59.79%20-20.8945%0Ac-53.0186%200%20-96%2042.9814%20-96%2096s42.9814%2096%2096%2096c22.6084%200%2043.3867%20-7.81934%2059.79%20-20.8945l102.486%2064.0537c-1.48633%206.71094%20-2.27637%2013.6826%20-2.27637%2020.8408c0%2053.0186%2042.9814%2096%2096%2096s96%20-42.9814%2096%20-96s-42.9814%20-96%20-96%20-96%0Ac-22.6084%200%20-43.3867%207.81934%20-59.79%2020.8965l-102.486%20-64.0547c1.48828%20-6.73145%202.27344%20-13.6025%202.27344%20-20.7793s-0.785156%20-14.1719%20-2.27344%20-20.9033l102.486%20-64.0537c16.4033%2013.0752%2037.1816%2020.8945%2059.79%2020.8945z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");}
i.fa-angle-up{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20320%20512%22%3E%3Cpath%20d%3D%22M177%20288.3l136%20-136c9.40039%20-9.39941%209.40039%20-24.5996%200%20-33.8994l-22.5996%20-22.6006c-9.40039%20-9.39941%20-24.6006%20-9.39941%20-33.9004%200l-96.5%2096.2998l-96.4004%20-96.3994c-9.39941%20-9.40039%20-24.5996%20-9.40039%20-33.8994%200l-22.7002%2022.5996%0Ac-9.40039%209.40039%20-9.40039%2024.6006%200%2033.9004l136%20136c9.40039%209.5%2024.5996%209.5%2034%200.0996094z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20320%20512%22%3E%3Cpath%20d%3D%22M177%20288.3l136%20-136c9.40039%20-9.39941%209.40039%20-24.5996%200%20-33.8994l-22.5996%20-22.6006c-9.40039%20-9.39941%20-24.6006%20-9.39941%20-33.9004%200l-96.5%2096.2998l-96.4004%20-96.3994c-9.39941%20-9.40039%20-24.5996%20-9.40039%20-33.8994%200l-22.7002%2022.5996%0Ac-9.40039%209.40039%20-9.40039%2024.6006%200%2033.9004l136%20136c9.40039%209.5%2024.5996%209.5%2034%200.0996094z%22%20transform%3D%22translate%280%2C448%29%20scale%281%2C-1%29%22%2F%3E%3C%2Fsvg%3E");}

/* Exact-descriptor overrides.
   The range aliases above (font-weight:100 900) were not enough: the Customizer
   block declares MontserratLight/MontserratBold at EXACT weights, and when one
   face matches the requested weight exactly and another only contains it in a
   range, the browser prefers the exact one regardless of order - so
   Montserrat-Light.ttf kept downloading. These mirror the Customizer's own
   descriptors precisely, which puts them on equal footing, and being later in
   the cascade they win. */
@font-face{font-family:'MontserratLight';font-style:normal;font-weight:300;font-display:swap;
  src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.woff2) format('woff2');}
@font-face{font-family:'MontserratLight';font-style:italic;font-weight:300;font-display:swap;
  src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-italic.woff2) format('woff2');}
@font-face{font-family:'MontserratLight';font-style:normal;font-weight:normal;font-display:swap;
  src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.woff2) format('woff2');}
@font-face{font-family:'MontserratBold';font-style:normal;font-weight:normal;font-display:swap;
  src:url(/wp-content/uploads/sapex-fonts/montserrat-latin-normal.woff2) format('woff2');}

/* ==========================================================================
   One typeface: Montserrat everywhere.
   ========================================================================== */

/* The 85 elements still on a system stack were not styled individually - the
   homepage's in-body token block declares
     --font: "Helvetica Neue", Helvetica, Arial, sans-serif
   and everything inherits from it. Remapping the token is the whole fix.
   html:root (0,1,1) rather than :root (0,1,0), because that block sits inside
   <body> and would otherwise win on document order. */
html:root{
  --font:'Montserrat','Helvetica Neue',Helvetica,Arial,sans-serif;
}

/* The eight product-detail pages declare the stack directly rather than
   through the token, so they are named. */
html body .sapex-pd-can-keypad,
html body .sapex-pd-zwave-keypad,
html body .sapex-pd-can-thermostat,
html body .sapex-pd-zwave-thermostat,
html body .sapex-pd-relay-module,
html body .sapex-pd-dali-gateway,
html body .sapex-pd-digital-input-16ch,
html body .sapex-pd-mini-ip-gateway{
  font-family:'Montserrat','Helvetica Neue',Helvetica,Arial,sans-serif;
}

/* --- body copy ------------------------------------------------------------
   Montserrat is a display face; it was drawn for headlines, not for reading at
   length. Three things keep it comfortable in paragraphs:
     - a lighter weight than the headings, so the page has contrast between
       the two roles instead of one uniform tone
     - a looser line, 1.65, because geometric letterforms need more air
     - a measure near 65 characters, since long lines are what actually tire
       the eye
   Measured before this: paragraphs ran 18-28px at line-height 1.48-1.62 and
   37-62 characters, in the SAME weight as the headings. */
html body p{
  font-weight:400;
  line-height:1.65;
}
html body .sapex-home-v2 p,
html body .sapex-tax-v3 p,
html body .sapex-downloads-v2 p,
html body .sapex-about-contact-v2 p,
html body main p{
  max-width:65ch;
}
/* The 600-weight heading rule that used to be here is gone. It was written
   to create contrast with body copy and it made the hero read bold; the
   design is 300 throughout, with hierarchy from size and colour. Removed
   rather than left to be overridden by the later 300 rules, because a dead
   rule that still matches is the next person's confusion. */

/* The generic "html body p" rule above is (0,0,3) and lost: the page-level
   blocks scope their paragraph styles by wrapper class, e.g. ".sapex-home-v2 p",
   which is (0,1,1). Measured after that first attempt, body copy was still
   w300 at line-height 1.58. Naming the same wrappers puts these at (0,1,3),
   which wins without !important. */
html body .sapex-home-v2 p,
html body .sapex-tax-v3 p,
html body .sapex-downloads-v2 p,
html body .sapex-about-contact-v2 p,
html body .sapex-v2 p,
html body .sapex-aps p,
html body main p,
html body article p,
html body section p{
  font-weight:400;
  line-height:1.65;
}
/* Headings keep the light weight the design was drawn around.
   An earlier version set them to 600 to create contrast with body copy. That
   was wrong twice over: removing the Customizer's font-weight:300!important
   pins had already let style.css's "h1..h6 {font-weight:500}" through, and 600
   on top of that made the hero read as bold. It was 300 before and it looks
   right at 300 - a 96px display line does not need weight to carry.

   The contrast the brief asked for still exists, from the other direction:
   body copy at 400 against headings at 300. Different weights, and the heavy
   one is the small text that actually has to be read at length. */
html body h1,html body h2,html body h3,html body h4,
html body .hero-title,html body .sapex-tax-title,
html body .sapex-home-v2 h1,html body .sapex-home-v2 h2,html body .sapex-home-v2 h3,
html body .sapex-tax-v3 h1,html body .sapex-tax-v3 h2,html body .sapex-tax-v3 h3,
html body .sapex-downloads-v2 h1,html body .sapex-downloads-v2 h2,html body .sapex-downloads-v2 h3,
html body .sapex-about-contact-v2 h1,html body .sapex-about-contact-v2 h2,html body .sapex-about-contact-v2 h3,
html body main h1,html body main h2,html body main h3,
html body section h2,html body section h3{
  font-weight:300;
}
/* The hero lead keeps its own tighter setting - it is display text, not body
   copy, and 1.48 there is deliberate. */

/* Measure. The earlier max-width sat on a weaker selector and lost on the wide
   intro paragraphs - measured at ~86 characters. Same winning selectors as the
   weight rules above. Cards are already narrower than this and are unaffected;
   the cap only bites on the full-width paragraphs. */
html body .sapex-home-v2 p,
html body .sapex-tax-v3 p,
html body .sapex-downloads-v2 p,
html body .sapex-about-contact-v2 p,
html body .sapex-v2 p,
html body main p,
html body article p,
html body section p{
  max-width:65ch;
}

/* --- the scale, after the reference -------------------------------------
   Measured on fibaro.com/us/smart-home-in-use/, which Ehsan named:
     headings    Open Sans w300  32px / 38.4px  ratio 1.20
     paragraphs  Open Sans w300  14px / 21px    ratio 1.50
   Everything there is 300. The hierarchy comes from size and colour, never
   from weight - which is exactly what the site had before, and what setting
   headings to 600 destroyed.

   Removing the Customizer's !important pins was still right: they made weight
   uncontrollable. The value is simply set here deliberately instead. */
html body h1,html body h2,
html body .hero-title,html body .sapex-tax-title,
html body .sapex-home-v2 h1,html body .sapex-home-v2 h2,
html body .sapex-tax-v3 h1,html body .sapex-tax-v3 h2,
html body .sapex-downloads-v2 h1,html body .sapex-downloads-v2 h2,
html body .sapex-about-contact-v2 h1,html body .sapex-about-contact-v2 h2,
html body main h1,html body main h2,html body section h2{
  font-weight:300;
  line-height:1.2;
}
/* h3/h4 stay 300 as well - card titles run 20-24px, where 300 still holds its
   shape, and stepping them up would reintroduce weight as a hierarchy signal. */
html body h3,html body .sapex-home-v2 h3,html body .sapex-tax-v3 h3,
html body .sapex-downloads-v2 h3,html body .sapex-about-contact-v2 h3,
html body main h3,html body section h3{
  font-weight:300;
}
/* Small UI text and labels go to 400 so they do not thin out at 11-13px. */
html body .sapex-kicker,html body .sapex-hero-eyebrow,html body .sapex-card-label,
html body .sapex-tax-eyebrow,html body .sapex-tax-section-eyebrow,
html body .sapex-tax-card span,html body label,html body .sapex-tax-code{
  font-weight:400;
}

/* Nav links and footer headings were the last things above 400 that are not
   semantic emphasis. The nav sits at 500 because the UNIFIED HEADER block pins
   font-weight:500 !important as part of its typography, which was kept when
   its colour pins were removed - so this needs the same weapon, and only here.
   <strong> is deliberately left alone: that IS a specific element needing
   emphasis, which is the exception the rule allows for. */
html body header.classic-menu .flexnav li a,
html body header.classic-menu .flexnav li a span{
  font-weight:400 !important;
}
html body footer h3,html body footer h4,
html body .footer-middle h3,html body .footer-middle h4{
  font-weight:300;
}

/* Footer headings. The earlier "footer h3" rule did not reach them: they sit
   in footer#sapex-footer > .sapex-site-footer-grid > .sapex-footer-col, and a
   more specific rule was setting 500. */
html body footer.sapex-site-footer h3,
html body footer.sapex-site-footer h4,
html body .sapex-site-footer-grid h3,
html body .sapex-footer-col h3{
  font-weight:400;
}
/* The class-scoped rule above still lost. The footer carries an id, so this is
   (1,1,3) and settles it without !important. */
html body #sapex-footer h3,
html body #sapex-footer h4{
  font-weight:400;
}

/* Footer headings, final. The Customizer carries
     html body .sapex-footer-col h3, ... { font-weight:500 !important }
   which beat every non-important selector tried, including the id-scoped one.
   !important answering !important, and narrowly. That pin should come out in
   the next Customizer pass; this does not wait for it. */
html body #sapex-footer h3,
html body #sapex-footer h4,
html body .sapex-footer-col h3{
  /* !important dropped: the Customizer pin it was answering was removed in the
     Task 6 cleanup. Verified afterwards that the footer headings still compute
     400 without it. */
  font-weight:400;
}

/* --- micro-labels: one weight, 600 ---------------------------------------
   Not flattened to 400 - an 11-12px uppercase label goes weak and muddy at
   body weight, and these legitimately carry more than body text. The defect
   was that the SAME kind of element carried different weights:

     .sapex-tax-eyebrow / .sapex-hero-eyebrow / .sapex-kicker   700
     .sapex-card-label                                          800
     .sapex-tax-card em ("View product")                        850
     .sapex-button / .sapex-tax-button                          700-850

   Card labels at 800 and eyebrows at 700 are doing the same job at two
   weights, and 850 is very heavy against headings at 300. One step instead of
   five accidental ones, giving a deliberate scale of 300 / 400 / 600.

   !important throughout, and the reason is measured rather than assumed: the
   Customizer pins every one of these with !important of its own, so nothing
   without it can reach them. Those pins belong in the next Customizer pass;
   this does not wait for that. */
html body .sapex-tax-eyebrow,
html body .sapex-tax-section-eyebrow,
html body .sapex-hero-eyebrow,
html body .sapex-kicker,
html body .sapex-card-label,
html body .sapex-tax-card span,
html body .sapex-tax-code,
html body .sapex-tax-card em,
html body .sapex-tax-button,
html body .sapex-tax-button-primary,
html body .sapex-tax-button-secondary,
html body .sapex-button,
html body .sapex-button-primary,
html body .sapex-button-ghost,
html body .sapex-button-line{
  font-weight:600 !important;
}
/* The gang-count note is explanatory text, not a label, so it stays at body
   weight - it should read as a footnote to the code above it, not compete. */
html body .sapex-tax-code-note{
  font-weight:400 !important;
}

/* The class-repetition block that used to be here is gone. It existed only
   to out-specify Customizer pins at font-weight:700 !important, and those
   pins were removed in the Task 6 cleanup. The plain rule above reaches
   these elements now. */

/* <strong> was landing at 450-650, which added two more values to a scale that
   is meant to have three. It stays emphasis, at the system's emphasis weight. */
html body strong,html body b{
  font-weight:600;
}

html body strong,html body b{font-weight:600 !important;}

/* --- /apex-scheduler/ headings -------------------------------------------
   This page carries its own design system and sets its headings in its own
   in-body <style>:  .sapex-aps h1 {800}  and  .sapex-aps h1,h2,h3 {700}.
   Those were previously masked by the Customizer's blanket
   h1..h6 {font-weight:300 !important}, which the Task 6 cleanup removed - so
   the page's own weights surfaced and the hero read as bold.

   That is on me: Task 6 said to verify every affected element after each
   removal, and I checked /, /downloads/, /products/ and /company/ but not this
   page, which is the one page with a separate type system.

   Brought onto the site scale rather than putting the pin back: display
   headings 300, smaller headings 400 so they keep presence at 18-22px.
   html body .sapex-aps h1 is (0,1,3) and beats the in-body (0,1,1). */
html body .sapex-aps h1,
html body .sapex-aps h2,
html body .sapex-aps .hero h1,
html body .sapex-aps .hero h2{
  font-weight:300;
}
html body .sapex-aps h3,
html body .sapex-aps h4{
  font-weight:400;
}
