/* The studio's own faces, under private family names: this file loads on every studio page, and a face named like the
   theme's own ("Montserrat", "Roboto") replaced the theme's text on the whole page (Codex review 2026-10-22). The editor
   lists them by their familiar names (STUDIO_FONT_FACES in dtf-by-size.js). Never declare a theme's family name here. */
@font-face {
  font-family: 'DTF Bebas Neue';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(dtf-font-bebas-neue-0.ttf) format('truetype');
}

@font-face {
  font-family: 'DTF Bangers';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(dtf-font-bangers-0.ttf) format('truetype');
}

@font-face {
  font-family: 'DTF Lobster';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(dtf-font-lobster-0.ttf) format('truetype');
}

@font-face {
  font-family: 'DTF Pacifico';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(dtf-font-pacifico-0.ttf) format('truetype');
}

@font-face {
  font-family: 'DTF Permanent Marker';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(dtf-font-permanent-marker-0.ttf) format('truetype');
}

@font-face {
  font-family: 'DTF Montserrat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(dtf-font-montserrat-0.ttf) format('truetype');
}
@font-face {
  font-family: 'DTF Montserrat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(dtf-font-montserrat-1.ttf) format('truetype');
}
@font-face {
  font-family: 'DTF Montserrat';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(dtf-font-montserrat-2.ttf) format('truetype');
}
@font-face {
  font-family: 'DTF Montserrat';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(dtf-font-montserrat-3.ttf) format('truetype');
}

/* The studio's own UI text (--dtf-font in dtf-by-size.css): the same Montserrat, its Latin cut first
   (scripts/ui-font-subsets.py, ~39 KB compressed instead of ~84 KB a weight, combining marks included). For each weight
   the full file comes first and the cut after it: the last face declared is asked first, so Latin text loads only the
   cut and any other character Montserrat has still finds its glyph in the full file; the full file's unicode-range is
   exactly what the cut leaves out and the font has, so a character neither has (✓, ↺, an emoji) costs no download. That
   script writes both faces of every weight (their ranges, their URLs versioned by the files' bytes: /assets/dtf-font-*
   stay a week in browsers). The editor and the print keep "DTF Montserrat" (full files). The block asks for
   dtf-fonts.css?v=2 (dtf-engine.liquid): this file is cached for an hour, then revalidated (/assets/* in
   public/_headers), so raise the number with every change here that must reach returning shoppers at once, and
   deploy the Worker before the app (a new number asked of the old Worker would be cached with the old file). */
@font-face {
  font-family: 'DTF Montserrat UI';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(dtf-font-montserrat-0.ttf?v=84f3d3275dfb) format('truetype');
  unicode-range: U+0250-0251, U+0253-0254, U+0256-0258, U+025B-025C, U+025F-0260, U+0263-0266, U+0268-026C, U+026F, U+0271-0272, U+0274-0275, U+027D-027E, U+0280, U+0283, U+0287-028C, U+028E, U+0292, U+0294-0295, U+0298, U+029D, U+02B0, U+02B7-02BA, U+02BD-02C1, U+02C7-02CC, U+02D7-02D9, U+02DB, U+02DD, U+02EC, U+02EE, U+02FB-02FC, U+0394, U+039B, U+03A7, U+03A9, U+03BB-03BC, U+03C0, U+03C7, U+0400-045F, U+0462-0463, U+046A-046B, U+0472-0475, U+048A-04FF, U+0510-0513, U+051A-051D, U+0524-0529, U+052E-052F, U+1D3A, U+1D43, U+1D49, U+1D4B, U+1D52-1D53, U+1D58, U+1D5B, U+1D7B, U+1D7D-1D7E, U+1D91, U+1DA4, U+1DB6, U+1DBB, U+1DBF, U+1DC4-1DCA, U+1E00-1E9B, U+1E9E, U+1EA0-1EF9, U+2070-2071, U+2075-2079, U+207F-2089, U+20A1, U+20A3-20A4, U+20A6-20A7, U+20A9, U+20AB, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20B9, U+20BC-20BD, U+20BF, U+2113, U+2116, U+2126, U+212A-212B, U+212E, U+2144, U+2153-2154, U+215B-215E, U+2183-2184, U+2194-2199, U+2202, U+2205-2206, U+220F, U+2211, U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+24B6, U+24D0, U+25A0-25A1, U+25B2-25B3, U+25B6-25B7, U+25BC-25BD, U+25C0-25C1, U+25C6-25C7, U+25CA, U+25CC, U+27E8-27E9, U+2C60-2C66, U+2C6D-2C6F, U+2C72-2C73, U+A717-A71A, U+A726-A727, U+A740-A741, U+A789-A78D, U+A792-A793, U+A7A8-A7AB, U+A7AD-A7AE, U+A7B1-A7B9, U+A7C7-A7C8, U+A7CB-A7CD, U+A7DA-A7DC, U+AB53, U+FB01-FB02;
}
@font-face {
  font-family: 'DTF Montserrat UI';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(dtf-font-montserrat-ui-0.ttf?v=3a59590bf8fc) format('truetype');
  unicode-range: U+0000-024F, U+0259, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-036F, U+2000-206F, U+2074, U+20AC, U+20BA, U+2122, U+2190-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DTF Montserrat UI';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(dtf-font-montserrat-1.ttf?v=c535bb158e8c) format('truetype');
  unicode-range: U+0250-0251, U+0253-0254, U+0256-0258, U+025B-025C, U+025F-0260, U+0263-0266, U+0268-026C, U+026F, U+0271-0272, U+0274-0275, U+027D-027E, U+0280, U+0283, U+0287-028C, U+028E, U+0292, U+0294-0295, U+0298, U+029D, U+02B0, U+02B7-02BA, U+02BD-02C1, U+02C7-02CC, U+02D7-02D9, U+02DB, U+02DD, U+02EC, U+02EE, U+02FB-02FC, U+0394, U+039B, U+03A7, U+03A9, U+03BB-03BC, U+03C0, U+03C7, U+0400-045F, U+0462-0463, U+046A-046B, U+0472-0475, U+048A-04FF, U+0510-0513, U+051A-051D, U+0524-0529, U+052E-052F, U+1D3A, U+1D43, U+1D49, U+1D4B, U+1D52-1D53, U+1D58, U+1D5B, U+1D7B, U+1D7D-1D7E, U+1D91, U+1DA4, U+1DB6, U+1DBB, U+1DBF, U+1DC4-1DCA, U+1E00-1E9B, U+1E9E, U+1EA0-1EF9, U+2070-2071, U+2075-2079, U+207F-2089, U+20A1, U+20A3-20A4, U+20A6-20A7, U+20A9, U+20AB, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20B9, U+20BC-20BD, U+20BF, U+2113, U+2116, U+2126, U+212A-212B, U+212E, U+2144, U+2153-2154, U+215B-215E, U+2183-2184, U+2194-2199, U+2202, U+2205-2206, U+220F, U+2211, U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+24B6, U+24D0, U+25A0-25A1, U+25B2-25B3, U+25B6-25B7, U+25BC-25BD, U+25C0-25C1, U+25C6-25C7, U+25CA, U+25CC, U+27E8-27E9, U+2C60-2C66, U+2C6D-2C6F, U+2C72-2C73, U+A717-A71A, U+A726-A727, U+A740-A741, U+A789-A78D, U+A792-A793, U+A7A8-A7AB, U+A7AD-A7AE, U+A7B1-A7B9, U+A7C7-A7C8, U+A7CB-A7CD, U+A7DA-A7DC, U+AB53, U+FB01-FB02;
}
@font-face {
  font-family: 'DTF Montserrat UI';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(dtf-font-montserrat-ui-1.ttf?v=710f107a302b) format('truetype');
  unicode-range: U+0000-024F, U+0259, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-036F, U+2000-206F, U+2074, U+20AC, U+20BA, U+2122, U+2190-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DTF Montserrat UI';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(dtf-font-montserrat-2.ttf?v=f0123e28dc0c) format('truetype');
  unicode-range: U+0250-0251, U+0253-0254, U+0256-0258, U+025B-025C, U+025F-0260, U+0263-0266, U+0268-026C, U+026F, U+0271-0272, U+0274-0275, U+027D-027E, U+0280, U+0283, U+0287-028C, U+028E, U+0292, U+0294-0295, U+0298, U+029D, U+02B0, U+02B7-02BA, U+02BD-02C1, U+02C7-02CC, U+02D7-02D9, U+02DB, U+02DD, U+02EC, U+02EE, U+02FB-02FC, U+0394, U+039B, U+03A7, U+03A9, U+03BB-03BC, U+03C0, U+03C7, U+0400-045F, U+0462-0463, U+046A-046B, U+0472-0475, U+048A-04FF, U+0510-0513, U+051A-051D, U+0524-0529, U+052E-052F, U+1D3A, U+1D43, U+1D49, U+1D4B, U+1D52-1D53, U+1D58, U+1D5B, U+1D7B, U+1D7D-1D7E, U+1D91, U+1DA4, U+1DB6, U+1DBB, U+1DBF, U+1DC4-1DCA, U+1E00-1E9B, U+1E9E, U+1EA0-1EF9, U+2070-2071, U+2075-2079, U+207F-2089, U+20A1, U+20A3-20A4, U+20A6-20A7, U+20A9, U+20AB, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20B9, U+20BC-20BD, U+20BF, U+2113, U+2116, U+2126, U+212A-212B, U+212E, U+2144, U+2153-2154, U+215B-215E, U+2183-2184, U+2194-2199, U+2202, U+2205-2206, U+220F, U+2211, U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+24B6, U+24D0, U+25A0-25A1, U+25B2-25B3, U+25B6-25B7, U+25BC-25BD, U+25C0-25C1, U+25C6-25C7, U+25CA, U+25CC, U+27E8-27E9, U+2C60-2C66, U+2C6D-2C6F, U+2C72-2C73, U+A717-A71A, U+A726-A727, U+A740-A741, U+A789-A78D, U+A792-A793, U+A7A8-A7AB, U+A7AD-A7AE, U+A7B1-A7B9, U+A7C7-A7C8, U+A7CB-A7CD, U+A7DA-A7DC, U+AB53, U+FB01-FB02;
}
@font-face {
  font-family: 'DTF Montserrat UI';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(dtf-font-montserrat-ui-2.ttf?v=4eada127806a) format('truetype');
  unicode-range: U+0000-024F, U+0259, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-036F, U+2000-206F, U+2074, U+20AC, U+20BA, U+2122, U+2190-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DTF Montserrat UI';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(dtf-font-montserrat-3.ttf?v=9d9bb42bdc0d) format('truetype');
  unicode-range: U+0250-0251, U+0253-0254, U+0256-0258, U+025B-025C, U+025F-0260, U+0263-0266, U+0268-026C, U+026F, U+0271-0272, U+0274-0275, U+027D-027E, U+0280, U+0283, U+0287-028C, U+028E, U+0292, U+0294-0295, U+0298, U+029D, U+02B0, U+02B7-02BA, U+02BD-02C1, U+02C7-02CC, U+02D7-02D9, U+02DB, U+02DD, U+02EC, U+02EE, U+02FB-02FC, U+0394, U+039B, U+03A7, U+03A9, U+03BB-03BC, U+03C0, U+03C7, U+0400-045F, U+0462-0463, U+046A-046B, U+0472-0475, U+048A-04FF, U+0510-0513, U+051A-051D, U+0524-0529, U+052E-052F, U+1D3A, U+1D43, U+1D49, U+1D4B, U+1D52-1D53, U+1D58, U+1D5B, U+1D7B, U+1D7D-1D7E, U+1D91, U+1DA4, U+1DB6, U+1DBB, U+1DBF, U+1DC4-1DCA, U+1E00-1E9B, U+1E9E, U+1EA0-1EF9, U+2070-2071, U+2075-2079, U+207F-2089, U+20A1, U+20A3-20A4, U+20A6-20A7, U+20A9, U+20AB, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20B9, U+20BC-20BD, U+20BF, U+2113, U+2116, U+2126, U+212A-212B, U+212E, U+2144, U+2153-2154, U+215B-215E, U+2183-2184, U+2194-2199, U+2202, U+2205-2206, U+220F, U+2211, U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+24B6, U+24D0, U+25A0-25A1, U+25B2-25B3, U+25B6-25B7, U+25BC-25BD, U+25C0-25C1, U+25C6-25C7, U+25CA, U+25CC, U+27E8-27E9, U+2C60-2C66, U+2C6D-2C6F, U+2C72-2C73, U+A717-A71A, U+A726-A727, U+A740-A741, U+A789-A78D, U+A792-A793, U+A7A8-A7AB, U+A7AD-A7AE, U+A7B1-A7B9, U+A7C7-A7C8, U+A7CB-A7CD, U+A7DA-A7DC, U+AB53, U+FB01-FB02;
}
@font-face {
  font-family: 'DTF Montserrat UI';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(dtf-font-montserrat-ui-3.ttf?v=8f9090552f0b) format('truetype');
  unicode-range: U+0000-024F, U+0259, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-036F, U+2000-206F, U+2074, U+20AC, U+20BA, U+2122, U+2190-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'DTF Oswald';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(dtf-font-oswald-0.ttf) format('truetype');
}
@font-face {
  font-family: 'DTF Oswald';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(dtf-font-oswald-1.ttf) format('truetype');
}

@font-face {
  font-family: 'DTF Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(dtf-font-playfair-display-0.ttf) format('truetype');
}

@font-face {
  font-family: 'DTF Roboto';
  font-style: normal;
  font-weight: 400;
  font-stretch: normal;
  font-display: swap;
  src: url(dtf-font-roboto-0.ttf) format('truetype');
}
@font-face {
  font-family: 'DTF Roboto';
  font-style: normal;
  font-weight: 700;
  font-stretch: normal;
  font-display: swap;
  src: url(dtf-font-roboto-1.ttf) format('truetype');
}
@font-face {
  font-family: 'DTF Roboto';
  font-style: normal;
  font-weight: 900;
  font-stretch: normal;
  font-display: swap;
  src: url(dtf-font-roboto-2.ttf) format('truetype');
}
