/* Self-hosted Persian + Latin fonts (Mehdi 2026-05-30 launch fix):
   Google Fonts CDN is blocked/throttled in Iran. These woff2 files are
   served from the Sazito origin so the platform + generated apps render
   correctly for Iranian users. Vendored from fontsource. */
@font-face{font-family:'Vazirmatn';font-style:normal;font-weight:300;font-display:swap;src:url('/fonts/vazirmatn-300.woff2') format('woff2');}
@font-face{font-family:'Vazirmatn';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/vazirmatn-400.woff2') format('woff2');}
@font-face{font-family:'Vazirmatn';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/vazirmatn-500.woff2') format('woff2');}
@font-face{font-family:'Vazirmatn';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/vazirmatn-600.woff2') format('woff2');}
@font-face{font-family:'Vazirmatn';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/vazirmatn-700.woff2') format('woff2');}
@font-face{font-family:'Vazirmatn';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/vazirmatn-800.woff2') format('woff2');}
@font-face{font-family:'Estedad';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/estedad-500.woff2') format('woff2');}
@font-face{font-family:'Estedad';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/estedad-600.woff2') format('woff2');}
@font-face{font-family:'Estedad';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/estedad-700.woff2') format('woff2');}
@font-face{font-family:'Estedad';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/estedad-800.woff2') format('woff2');}
@font-face{font-family:'Estedad';font-style:normal;font-weight:900;font-display:swap;src:url('/fonts/estedad-900.woff2') format('woff2');}
@font-face{font-family:'Sora';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/sora-400.woff2') format('woff2');}
@font-face{font-family:'Sora';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/sora-600.woff2') format('woff2');}
@font-face{font-family:'Sora';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/sora-700.woff2') format('woff2');}
@font-face{font-family:'Sora';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/sora-800.woff2') format('woff2');}

/* 2026-07-27 — Mehdi: «everything looks so android like even though it's an
   iPhone … the font I believe also has a problem». We shipped exactly THREE
   families (Vazirmatn / Estedad / Sora), so every app we ever generated was
   restricted to the same typefaces — repetition guaranteed by us, escapable
   by no model. These add a real Latin UI face and two more Persian options.

   Inter is the standard SF-Pro substitute (SIL OFL): it is what the industry
   uses when it wants an iOS system-font feel without Apple's licence, and its
   absence is why Latin numerals and labels never looked native. */
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/inter-400.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/inter-500.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/inter-600.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/inter-700.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/inter-800.woff2') format('woff2');}

/* Noto Sans Arabic — a neutral, lower-contrast Persian face. Vazirmatn is
   excellent but it is not the right voice for every product; a model that
   wants a quieter or more editorial tone now has somewhere to go. */
@font-face{font-family:'Noto Sans Arabic';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/notosansarabic-400.woff2') format('woff2');}
@font-face{font-family:'Noto Sans Arabic';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/notosansarabic-500.woff2') format('woff2');}
@font-face{font-family:'Noto Sans Arabic';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/notosansarabic-600.woff2') format('woff2');}
@font-face{font-family:'Noto Sans Arabic';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/notosansarabic-700.woff2') format('woff2');}

/* Lalezar — a Persian DISPLAY face. Headlines had no option but body type at
   a larger size, which is a large part of why builds read as flat. */
@font-face{font-family:'Lalezar';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/lalezar-400.woff2') format('woff2');}

/* 2026-08-04 — SCRUM-263 (Mehdi: «the fonts are still only being used with one
   single font … we are causing all of these models»). Four more SELF-HOSTED
   Persian text families, all SIL OFL 1.1 (Saber Rastikerdar's free set — the
   dynamic Google-Fonts proxy cannot reach these, they are not on Google Fonts):
   - Shabnam (300-700) — neutral UI face, rounder than Vazirmatn (Roboto-derived).
   - Sahel   (400-900) — compact, slightly condensed; strong at heavy weights.
   - Samim   (400-700) — bookish text face (Open-Sans-derived), calm and literary.
   - Gandom  (400)     — warm, low-contrast reading face (Noto-Serif-derived).
   Typography is a design CHOICE the model makes per domain; Vazirmatn stays the
   default, nothing is pinned. */
@font-face{font-family:'Shabnam';font-style:normal;font-weight:300;font-display:swap;src:url('/fonts/shabnam-300.woff2') format('woff2');}
@font-face{font-family:'Shabnam';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/shabnam-400.woff2') format('woff2');}
@font-face{font-family:'Shabnam';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/shabnam-500.woff2') format('woff2');}
@font-face{font-family:'Shabnam';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/shabnam-700.woff2') format('woff2');}
@font-face{font-family:'Sahel';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/sahel-400.woff2') format('woff2');}
@font-face{font-family:'Sahel';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/sahel-600.woff2') format('woff2');}
@font-face{font-family:'Sahel';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/sahel-700.woff2') format('woff2');}
@font-face{font-family:'Sahel';font-style:normal;font-weight:900;font-display:swap;src:url('/fonts/sahel-900.woff2') format('woff2');}
@font-face{font-family:'Samim';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/samim-400.woff2') format('woff2');}
@font-face{font-family:'Samim';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/samim-500.woff2') format('woff2');}
@font-face{font-family:'Samim';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/samim-700.woff2') format('woff2');}
@font-face{font-family:'Gandom';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/gandom-400.woff2') format('woff2');}

/* 2026-07-27 — ALIAS FACES. Mehdi, looking at a finished build: «did it use
   other fonts available? Still seems like 100% vazirmatn which is wrong.»
   He was right, and the cause was ours.

   The app HAD picked a second typeface — 12 uses of Estedad — but it wrote
   the EXPORT CONSTANT as a literal string:

       fontFamily: 'Estedad_800ExtraBold'

   Our @font-face families are named `Estedad` / `Vazirmatn` / `Inter`, so
   `Estedad_800ExtraBold` matched nothing and every weighted name fell back to
   one default face. The model made the right choice and our CSS threw it away.

   Rather than fight the models over a naming convention they will keep using,
   register the constant names as real families too. Both spellings now work. */

@font-face{font-family:'Vazirmatn_300Light';font-style:normal;font-weight:300;font-display:swap;src:url('/fonts/vazirmatn-300.woff2') format('woff2');}
@font-face{font-family:'Vazirmatn_400Regular';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/vazirmatn-400.woff2') format('woff2');}
@font-face{font-family:'Vazirmatn_500Medium';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/vazirmatn-500.woff2') format('woff2');}
@font-face{font-family:'Vazirmatn_600SemiBold';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/vazirmatn-600.woff2') format('woff2');}
@font-face{font-family:'Vazirmatn_700Bold';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/vazirmatn-700.woff2') format('woff2');}
@font-face{font-family:'Vazirmatn_800ExtraBold';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/vazirmatn-800.woff2') format('woff2');}
@font-face{font-family:'Estedad_500Medium';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/estedad-500.woff2') format('woff2');}
@font-face{font-family:'Estedad_600SemiBold';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/estedad-600.woff2') format('woff2');}
@font-face{font-family:'Estedad_700Bold';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/estedad-700.woff2') format('woff2');}
@font-face{font-family:'Estedad_800ExtraBold';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/estedad-800.woff2') format('woff2');}
@font-face{font-family:'Estedad_900Black';font-style:normal;font-weight:900;font-display:swap;src:url('/fonts/estedad-900.woff2') format('woff2');}
@font-face{font-family:'Sora_400Regular';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/sora-400.woff2') format('woff2');}
@font-face{font-family:'Sora_600SemiBold';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/sora-600.woff2') format('woff2');}
@font-face{font-family:'Sora_700Bold';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/sora-700.woff2') format('woff2');}
@font-face{font-family:'Sora_800ExtraBold';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/sora-800.woff2') format('woff2');}
@font-face{font-family:'Inter_400Regular';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/inter-400.woff2') format('woff2');}
@font-face{font-family:'Inter_500Medium';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/inter-500.woff2') format('woff2');}
@font-face{font-family:'Inter_600SemiBold';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/inter-600.woff2') format('woff2');}
@font-face{font-family:'Inter_700Bold';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/inter-700.woff2') format('woff2');}
@font-face{font-family:'Inter_800ExtraBold';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/inter-800.woff2') format('woff2');}
@font-face{font-family:'Lalezar_400Regular';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/lalezar-400.woff2') format('woff2');}
@font-face{font-family:'NotoSansArabic_400Regular';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/notosansarabic-400.woff2') format('woff2');}
@font-face{font-family:'NotoSansArabic_500Medium';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/notosansarabic-500.woff2') format('woff2');}
@font-face{font-family:'NotoSansArabic_600SemiBold';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/notosansarabic-600.woff2') format('woff2');}
@font-face{font-family:'NotoSansArabic_700Bold';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/notosansarabic-700.woff2') format('woff2');}
@font-face{font-family:'Shabnam_300Light';font-style:normal;font-weight:300;font-display:swap;src:url('/fonts/shabnam-300.woff2') format('woff2');}
@font-face{font-family:'Shabnam_400Regular';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/shabnam-400.woff2') format('woff2');}
@font-face{font-family:'Shabnam_500Medium';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/shabnam-500.woff2') format('woff2');}
@font-face{font-family:'Shabnam_700Bold';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/shabnam-700.woff2') format('woff2');}
@font-face{font-family:'Sahel_400Regular';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/sahel-400.woff2') format('woff2');}
@font-face{font-family:'Sahel_600SemiBold';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/sahel-600.woff2') format('woff2');}
@font-face{font-family:'Sahel_700Bold';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/sahel-700.woff2') format('woff2');}
@font-face{font-family:'Sahel_900Black';font-style:normal;font-weight:900;font-display:swap;src:url('/fonts/sahel-900.woff2') format('woff2');}
@font-face{font-family:'Samim_400Regular';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/samim-400.woff2') format('woff2');}
@font-face{font-family:'Samim_500Medium';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/samim-500.woff2') format('woff2');}
@font-face{font-family:'Samim_700Bold';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/samim-700.woff2') format('woff2');}
@font-face{font-family:'Gandom_400Regular';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/gandom-400.woff2') format('woff2');}
