/* Portfolio Studio fonts. Sources and licenses are recorded in README.md. */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("./inter-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: "JetBrains Mono";
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("./jetbrains-mono-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;
}

/* Noto Sans SC (Source Han Sans) variable subset for Chinese display type.
   Covers all text on the Chinese home page plus the display-face text of
   migrated Chinese case studies; weights 100–900 live in one variable file.
   Rebuild with build-subset.py after copy changes. Body copy stays on system
   Hei (PingFang / YaHei); glyphs missing from this subset fall back to those. */
@font-face {
  font-family: "Noto Sans SC";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("./notosanssc-variable.woff2") format("woff2");
  unicode-range: U+00B7, U+2014, U+2018-201F, U+3000-303F, U+3400-4DBF, U+4E00-9FFF, U+FF00-FFEF;
}

/* Full-width “” for Chinese pages. Inter's narrow double quotes crowd the Chinese
   characters around them, so the :lang(zh) font stacks put this face first. Same
   file as Noto Sans SC above (no extra download). Single quotes stay on Inter,
   because ’ also appears inside English words such as You’re. */
@font-face {
  font-family: "Noto Sans SC Quotes";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("./notosanssc-variable.woff2") format("woff2");
  unicode-range: U+201C-201D;
}

/* Geist: the typeface of the Relay voice strip itself (the shipped app uses Geist). Only the
   Goodwill prototype's strip and pickers reference it, so other pages never download it. */
@font-face {
  font-family: "Geist";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("./geist-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;
}

/* Hive Five prototype faces (components/hivefive-prototype.js): the design's Playfair Display, DM Serif
   Display, Fira Sans and Plus Jakarta Sans (which also stands in for the commercial Circular Std). Only
   that prototype references them, so other pages never download them. */
@font-face {
  font-family: "Playfair Display";
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url("./playfair-display-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: "DM Serif Display";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./dm-serif-display-latin-400.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: "Fira Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fira-sans-latin-400.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: "Fira Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("./fira-sans-latin-500.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: "Plus Jakarta Sans";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("./plus-jakarta-sans-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;
}

/* 拍拍出 prototype faces (components/yipai-prototype.js): the app's ZCOOL KuaiLe headline face (subset to the
   prototype's headline characters), Nunito Sans for its UI (Latin only; Chinese UI text falls back to the
   system Hei like the app) and Fredoka's digits for the price. Only that prototype references them. */
@font-face {
  font-family: "ZCOOL KuaiLe Yipai";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./zcool-kuaile-yipai-subset.woff2") format("woff2");
}
@font-face {
  font-family: "Nunito Sans Yipai";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./nunito-sans-latin-regular.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+2013-2014, U+2018-201D, U+2026, U+20AC;
}
@font-face {
  font-family: "Nunito Sans Yipai";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("./nunito-sans-latin-semibold.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+2013-2014, U+2018-201D, U+2026, U+20AC;
}
@font-face {
  font-family: "Nunito Sans Yipai";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("./nunito-sans-latin-bold.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+2013-2014, U+2018-201D, U+2026, U+20AC;
}
@font-face {
  font-family: "Fredoka Yipai";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("./fredoka-semibold-digits.woff2") format("woff2");
  unicode-range: U+0030-0039, U+002B-002D, U+00A5, U+2013, U+FFE5;
}
