/* Self-hosted webfonts (generated 2026-07-09; replaces Fontshare + Google
   Fonts CDN stylesheets). General Sans: Fontshare/ITF Free Font License
   (self-hosting permitted). Space Mono + Hind Siliguri: OFL, subset files
   from Google Fonts with original unicode-range mapping so Bangla glyph
   subsets still load on demand only.

   Clash Display's @font-face rules and files were removed 2026-08-13: the
   display face moved to Archivo on 2026-07-28 (see the comment on Archivo's
   rule below), and nothing in any stylesheet still resolves --font-display
   to Clash Display — it was pure dead weight, three font files downloaded
   by every visitor and never rendered. */

@font-face {
  font-family: "General Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/general-sans-400.82dccf33188f.woff2") format("woff2");
}

@font-face {
  font-family: "General Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/general-sans-500.5b10ff4d624f.woff2") format("woff2");
}

@font-face {
  font-family: "General Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/general-sans-600.f74baa005bd5.woff2") format("woff2");
}

@font-face {
  font-family: "General Sans";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/general-sans-700.2bdfea05fe02.woff2") format("woff2");
}

/* Perf fix (2026-08-25): was 4 weights x 3 subsets = 12 files (~260KB). Hind
   Siliguri in this codebase never renders actual Bangla prose — it's only a
   fallback glyph, almost always the ৳ currency sign, for characters the
   primary --font-body/--font-mono faces don't cover (see main.css). Those
   faces set font-weight 400/600/700 on price text (.now/.was etc.), and each
   distinct weight was triggering its own full Hind Siliguri download — up to
   72KB just to bold one currency glyph.
   `font-weight: 400 700` declares this one file as the match for the WHOLE
   400-700 range: any weight in that span reuses these same (regular-weight)
   glyphs rather than fetching a heavier cut. The only visible effect is that
   ৳ never gets visually bolder next to a bold price — a single non-Latin
   glyph, not the kind of thing a shopper reads for emphasis. Saves ~189KB
   (the deleted 600 + 700 weight trios) on every page that shows a price. */
@font-face {
  font-family: "Hind Siliguri";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/hind-siliguri-400.7bcc67f8ae55.woff2") format("woff2");
  unicode-range: U+0951-0952, U+0964-0965, U+0980-09FE, U+1CD0, U+1CD2, U+1CD5-1CD6, U+1CD8, U+1CE1, U+1CEA, U+1CED, U+1CF2, U+1CF5-1CF7, U+200C-200D, U+20B9, U+25CC, U+A8F1;
}

@font-face {
  font-family: "Hind Siliguri";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/hind-siliguri-400-2.f81602bc256e.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Hind Siliguri";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/hind-siliguri-400-3.94b8693233d1.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: "Space Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/space-mono-400.2a3703aed161.woff2") format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

@font-face {
  font-family: "Space Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/space-mono-400-2.22937a2ab67d.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Space Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/space-mono-400-3.049dfc5919c2.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: "Space Mono";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/space-mono-700.666edfbb85ec.woff2") format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

@font-face {
  font-family: "Space Mono";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/space-mono-700-2.5019c3006926.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Space Mono";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/space-mono-700-3.e5e908997a45.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;
}

/* ── Sentient (Indian Type Foundry, free for commercial use) ───────────────
   Added 2026-07-28. The site had one voice: Clash Display 700, uppercase, at
   poster scale, everywhere. Strong, but with no second register a page has no
   dynamics — every line shouts at the same volume, which is what makes a layout
   read "templated" no matter how good the individual pieces are.

   Sentient is an editorial serif, and it exists here purely for contrast: the
   quiet, lowercase, human counterweight to the display grotesk. It is used on
   section leads and standfirsts only — never for UI, never for a button.
   Self-hosted like everything else, because CSP is font-src 'self'.          */
@font-face {
  font-family: "Sentient";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/sentient-400.2ab45df88efe.woff2") format("woff2");
}
@font-face {
  font-family: "Sentient";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/sentient-500.db05c94d4501.woff2") format("woff2");
}
@font-face {
  font-family: "Sentient";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/sentient-700.5a12b815366d.woff2") format("woff2");
}

/* ── Archivo (Google Fonts, OFL — variable weight + width) ─────────────────
   Added 2026-07-28 after the owner compared the live page against a reference
   comp. The display face was Clash Display: a good typeface, but a *quirky*
   grotesque — flat-sided bowls, an idiosyncratic G and R — and at poster scale
   those quirks are the first thing you read. Every house the reference is
   drawn from (Acne, COS, Fear of God, Aime Leon Dore, Porsche) sets its
   headlines in a NEUTRAL grotesque at Black weight instead: Helvetica Now
   Display, Neue Haas Grotesk, Neue Montreal. The letterform disappears and the
   word does the work.

   Archivo is the closest free, self-hostable equivalent: a grotesk cut in the
   American gothic tradition, slightly squared, with a real 900 and — because
   this is the variable file — a width axis from 62% to 125%. That axis is why
   this one file replaces what would otherwise be three separate fonts: display
   headings sit at normal width, the hero and the footer wordmark tighten to
   ~88% for poster compression, and nothing has to be faked with transforms.

   Two files, split exactly as Google subsets them, so a page that never shows
   an accented character never downloads the extended set.                     */
@font-face {
  font-family: "Archivo";
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url("../fonts/archivo-var.de2f1fe81758.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: "Archivo";
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url("../fonts/archivo-var-ext.589f7bc0fac4.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
