/* English Voiced — self-hosted fonts (SIL Open Font License, from github.com/google/fonts).
   Replaces Google Fonts so visitors' browsers never contact Google.
   Each family is split like Google does it: "-latin" is what English pages need;
   "-ext" (Polish letters, IPA symbols, extra punctuation) downloads only when a page uses those characters.
   Browsers download a file only when a page actually uses that font. */

@font-face{
  font-family:'Archivo';
  font-style:normal;
  font-weight:100 900;
  font-stretch:62% 125%;
  font-display:swap;
  src:url('/fonts/archivo-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Archivo';
  font-style:normal;
  font-weight:100 900;
  font-stretch:62% 125%;
  font-display:swap;
  src:url('/fonts/archivo-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'Archivo';
  font-style:italic;
  font-weight:100 900;
  font-stretch:62% 125%;
  font-display:swap;
  src:url('/fonts/archivo-italic-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Archivo';
  font-style:italic;
  font-weight:100 900;
  font-stretch:62% 125%;
  font-display:swap;
  src:url('/fonts/archivo-italic-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'Archivo Black';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/archivo-black-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Archivo Black';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/archivo-black-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-weight:100 900;
  font-display:swap;
  src:url('/fonts/inter-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-weight:100 900;
  font-display:swap;
  src:url('/fonts/inter-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'Source Serif 4';
  font-style:normal;
  font-weight:200 900;
  font-display:swap;
  src:url('/fonts/source-serif-4-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Source Serif 4';
  font-style:normal;
  font-weight:200 900;
  font-display:swap;
  src:url('/fonts/source-serif-4-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'JetBrains Mono';
  font-style:normal;
  font-weight:100 800;
  font-display:swap;
  src:url('/fonts/jetbrains-mono-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'JetBrains Mono';
  font-style:normal;
  font-weight:100 800;
  font-display:swap;
  src:url('/fonts/jetbrains-mono-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'Newsreader';
  font-style:normal;
  font-weight:200 800;
  font-display:swap;
  src:url('/fonts/newsreader-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Newsreader';
  font-style:normal;
  font-weight:200 800;
  font-display:swap;
  src:url('/fonts/newsreader-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'Noto Sans';
  font-style:normal;
  font-weight:100 900;
  font-stretch:62.5% 100%;
  font-display:swap;
  src:url('/fonts/noto-sans-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Noto Sans';
  font-style:normal;
  font-weight:100 900;
  font-stretch:62.5% 100%;
  font-display:swap;
  src:url('/fonts/noto-sans-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'Playfair Display';
  font-style:normal;
  font-weight:400 900;
  font-display:swap;
  src:url('/fonts/playfair-display-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Playfair Display';
  font-style:normal;
  font-weight:400 900;
  font-display:swap;
  src:url('/fonts/playfair-display-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'Playfair Display';
  font-style:italic;
  font-weight:400 900;
  font-display:swap;
  src:url('/fonts/playfair-display-italic-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Playfair Display';
  font-style:italic;
  font-weight:400 900;
  font-display:swap;
  src:url('/fonts/playfair-display-italic-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'DM Sans';
  font-style:normal;
  font-weight:100 1000;
  font-display:swap;
  src:url('/fonts/dm-sans-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'DM Sans';
  font-style:normal;
  font-weight:100 1000;
  font-display:swap;
  src:url('/fonts/dm-sans-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'Space Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/space-mono-400-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Space Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/space-mono-400-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'Space Mono';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('/fonts/space-mono-700-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Space Mono';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('/fonts/space-mono-700-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'IBM Plex Sans';
  font-style:normal;
  font-weight:100 700;
  font-stretch:75% 100%;
  font-display:swap;
  src:url('/fonts/ibm-plex-sans-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Sans';
  font-style:normal;
  font-weight:100 700;
  font-stretch:75% 100%;
  font-display:swap;
  src:url('/fonts/ibm-plex-sans-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/ibm-plex-mono-400-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/ibm-plex-mono-400-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/fonts/ibm-plex-mono-500-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/fonts/ibm-plex-mono-500-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('/fonts/ibm-plex-mono-600-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('/fonts/ibm-plex-mono-600-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('/fonts/ibm-plex-mono-700-latin.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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('/fonts/ibm-plex-mono-700-ext.woff2') format('woff2');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}

/* Figtree — body font of the English+ course redesign (2026). WOFF (not WOFF2): built from the
   google/fonts variable TTF with fontTools; same latin/ext split as the other families. */
@font-face{
  font-family:'Figtree';
  font-style:normal;
  font-weight:300 900;
  font-display:swap;
  src:url('/fonts/figtree-latin.woff') format('woff');
  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+2190-2199, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Figtree';
  font-style:normal;
  font-weight:300 900;
  font-display:swap;
  src:url('/fonts/figtree-ext.woff') format('woff');
  unicode-range:U+0100-0130, U+0132-0151, U+0154-024F, U+0250-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-02FF, U+0300-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2100-2121, U+2123-214F, U+219A-21FF, U+2200-2211, U+2213-2214, U+2216-22FF, U+2460-24FF, U+25A0-25FF, U+2713-2717, U+FB00-FB06;
}
