@sutrata/editor 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/LICENSE +674 -0
  2. package/dist/ai/OnboardingDialog.d.ts +6 -0
  3. package/dist/ai/OnboardingDialog.js +115 -0
  4. package/dist/ai/VoiceConfirmDialog.d.ts +9 -0
  5. package/dist/ai/VoiceConfirmDialog.js +37 -0
  6. package/dist/ai/VoiceToolbar.d.ts +2 -0
  7. package/dist/ai/VoiceToolbar.js +177 -0
  8. package/dist/ai/ai-client.d.ts +71 -0
  9. package/dist/ai/ai-client.js +494 -0
  10. package/dist/ai/commands.d.ts +12 -0
  11. package/dist/ai/commands.js +140 -0
  12. package/dist/ai/generated-providers.json +3696 -0
  13. package/dist/ai/prompts.d.ts +25 -0
  14. package/dist/ai/prompts.js +59 -0
  15. package/dist/ai/voice-service.d.ts +15 -0
  16. package/dist/ai/voice-service.js +81 -0
  17. package/dist/autocomplete/AutocompletePlugin.d.ts +2 -0
  18. package/dist/autocomplete/AutocompletePlugin.js +19 -0
  19. package/dist/autocomplete/suggestions.d.ts +25 -0
  20. package/dist/autocomplete/suggestions.js +126 -0
  21. package/dist/context/DocumentContext.d.ts +68 -0
  22. package/dist/context/DocumentContext.js +605 -0
  23. package/dist/desktop-api.d.ts +40 -0
  24. package/dist/editor/EditorView.d.ts +2 -0
  25. package/dist/editor/EditorView.js +78 -0
  26. package/dist/editor/SelectionMenu.d.ts +2 -0
  27. package/dist/editor/SelectionMenu.js +102 -0
  28. package/dist/editor/attr-pencil-plugin.d.ts +17 -0
  29. package/dist/editor/attr-pencil-plugin.js +158 -0
  30. package/dist/editor/character-decoration-plugin.d.ts +26 -0
  31. package/dist/editor/character-decoration-plugin.js +77 -0
  32. package/dist/editor/character-view.d.ts +35 -0
  33. package/dist/editor/character-view.js +112 -0
  34. package/dist/editor/editor-bus.d.ts +14 -0
  35. package/dist/editor/editor-bus.js +39 -0
  36. package/dist/editor/find-highlight-plugin.d.ts +7 -0
  37. package/dist/editor/find-highlight-plugin.js +57 -0
  38. package/dist/editor/frontmatter-field-view.d.ts +10 -0
  39. package/dist/editor/frontmatter-field-view.js +48 -0
  40. package/dist/editor/frontmatter-field.d.ts +21 -0
  41. package/dist/editor/frontmatter-field.js +116 -0
  42. package/dist/editor/grapheme-cursor.d.ts +10 -0
  43. package/dist/editor/grapheme-cursor.js +104 -0
  44. package/dist/editor/ime-plugin.d.ts +18 -0
  45. package/dist/editor/ime-plugin.js +71 -0
  46. package/dist/editor/insert-helper.d.ts +1 -0
  47. package/dist/editor/insert-helper.js +42 -0
  48. package/dist/editor/keymap.d.ts +3 -0
  49. package/dist/editor/keymap.js +131 -0
  50. package/dist/editor/language-class-plugin.d.ts +7 -0
  51. package/dist/editor/language-class-plugin.js +75 -0
  52. package/dist/editor/plugins.d.ts +1 -0
  53. package/dist/editor/plugins.js +25 -0
  54. package/dist/editor/prosemirror-to-sutra.d.ts +2 -0
  55. package/dist/editor/prosemirror-to-sutra.js +208 -0
  56. package/dist/editor/scene-heading-view.d.ts +27 -0
  57. package/dist/editor/scene-heading-view.js +136 -0
  58. package/dist/editor/schema.d.ts +3 -0
  59. package/dist/editor/schema.js +135 -0
  60. package/dist/editor/sutra-to-prosemirror.d.ts +3 -0
  61. package/dist/editor/sutra-to-prosemirror.js +154 -0
  62. package/dist/editor/transliterate-input.d.ts +10 -0
  63. package/dist/editor/transliterate-input.js +88 -0
  64. package/dist/extensions/storage-adapter.d.ts +59 -0
  65. package/dist/extensions/storage-adapter.js +9 -0
  66. package/dist/extensions/types.d.ts +73 -0
  67. package/dist/extensions/types.js +12 -0
  68. package/dist/file/docx-exporter.d.ts +8 -0
  69. package/dist/file/docx-exporter.js +494 -0
  70. package/dist/file/docx-importer.d.ts +10 -0
  71. package/dist/file/docx-importer.js +283 -0
  72. package/dist/file/print-paginator.d.ts +29 -0
  73. package/dist/file/print-paginator.js +289 -0
  74. package/dist/file/templates.d.ts +2 -0
  75. package/dist/file/templates.js +66 -0
  76. package/dist/file/workflow-reports.d.ts +34 -0
  77. package/dist/file/workflow-reports.js +719 -0
  78. package/dist/findreplace/FindReplace.d.ts +2 -0
  79. package/dist/findreplace/FindReplace.js +164 -0
  80. package/dist/findreplace/find-engine.d.ts +29 -0
  81. package/dist/findreplace/find-engine.js +69 -0
  82. package/dist/findreplace/scroll-to-match.d.ts +29 -0
  83. package/dist/findreplace/scroll-to-match.js +74 -0
  84. package/dist/fonts/tofu-detect.d.ts +1 -0
  85. package/dist/fonts/tofu-detect.js +48 -0
  86. package/dist/i18n/LanguageContext.d.ts +10 -0
  87. package/dist/i18n/LanguageContext.js +174 -0
  88. package/dist/i18n/language-detect.d.ts +1 -0
  89. package/dist/i18n/language-detect.js +58 -0
  90. package/dist/i18n/useTranslation.d.ts +11 -0
  91. package/dist/i18n/useTranslation.js +60 -0
  92. package/dist/index.d.ts +11 -0
  93. package/dist/index.js +5 -0
  94. package/dist/locales/bn.json +143 -0
  95. package/dist/locales/en.json +143 -0
  96. package/dist/locales/gu.json +143 -0
  97. package/dist/locales/hi.json +143 -0
  98. package/dist/locales/kn.json +143 -0
  99. package/dist/locales/ml.json +143 -0
  100. package/dist/locales/mr.json +143 -0
  101. package/dist/locales/or.json +143 -0
  102. package/dist/locales/pa.json +143 -0
  103. package/dist/locales/si.json +143 -0
  104. package/dist/locales/ta.json +143 -0
  105. package/dist/locales/te.json +143 -0
  106. package/dist/navigator/SceneNavigator.d.ts +2 -0
  107. package/dist/navigator/SceneNavigator.js +612 -0
  108. package/dist/navigator/StatisticsDialog.d.ts +6 -0
  109. package/dist/navigator/StatisticsDialog.js +146 -0
  110. package/dist/navigator/scene-list.d.ts +16 -0
  111. package/dist/navigator/scene-list.js +70 -0
  112. package/dist/settings/SettingsDialog.d.ts +6 -0
  113. package/dist/settings/SettingsDialog.js +147 -0
  114. package/dist/shell/AppBar.d.ts +2 -0
  115. package/dist/shell/AppBar.js +34 -0
  116. package/dist/shell/AppShell.d.ts +2 -0
  117. package/dist/shell/AppShell.js +30 -0
  118. package/dist/shell/ConfirmDialog.d.ts +16 -0
  119. package/dist/shell/ConfirmDialog.js +23 -0
  120. package/dist/shell/ElementToolbar.d.ts +2 -0
  121. package/dist/shell/ElementToolbar.js +30 -0
  122. package/dist/shell/LanguageStatus.d.ts +2 -0
  123. package/dist/shell/LanguageStatus.js +65 -0
  124. package/dist/shell/StatusBar.d.ts +2 -0
  125. package/dist/shell/StatusBar.js +54 -0
  126. package/dist/shell/SutrataLogo.d.ts +8 -0
  127. package/dist/shell/SutrataLogo.js +7 -0
  128. package/dist/shell/Toast.d.ts +12 -0
  129. package/dist/shell/Toast.js +21 -0
  130. package/dist/shell/ToolbarButton.d.ts +11 -0
  131. package/dist/shell/ToolbarButton.js +4 -0
  132. package/dist/shell/VersionHistory.d.ts +12 -0
  133. package/dist/shell/VersionHistory.js +89 -0
  134. package/dist/shell/Watermark.d.ts +3 -0
  135. package/dist/shell/Watermark.js +10 -0
  136. package/dist/shell/fonts/fonts.css +1133 -0
  137. package/dist/shell/icons.d.ts +45 -0
  138. package/dist/shell/icons.js +51 -0
  139. package/dist/shell/toolbar-actions.d.ts +6 -0
  140. package/dist/shell/toolbar-actions.js +58 -0
  141. package/dist/source/SourceView.d.ts +1 -0
  142. package/dist/source/SourceView.js +106 -0
  143. package/dist/source/find-highlight-source.d.ts +14 -0
  144. package/dist/source/find-highlight-source.js +47 -0
  145. package/dist/source/sutra-lang.d.ts +2 -0
  146. package/dist/source/sutra-lang.js +97 -0
  147. package/dist/spellcheck/dictionaries.d.ts +9 -0
  148. package/dist/spellcheck/dictionaries.js +16 -0
  149. package/dist/spellcheck/hunspell.d.ts +23 -0
  150. package/dist/spellcheck/hunspell.js +94 -0
  151. package/dist/spellcheck/spellcheck-plugin.d.ts +18 -0
  152. package/dist/spellcheck/spellcheck-plugin.js +75 -0
  153. package/dist/styles/StyleDialog.d.ts +6 -0
  154. package/dist/styles/StyleDialog.js +63 -0
  155. package/dist/styles/builtin-styles.d.ts +43 -0
  156. package/dist/styles/builtin-styles.js +131 -0
  157. package/dist/styles/css-adapter.d.ts +32 -0
  158. package/dist/styles/css-adapter.js +71 -0
  159. package/dist/styles/docx-adapter.d.ts +7 -0
  160. package/dist/styles/docx-adapter.js +84 -0
  161. package/dist/styles/embed-fonts.d.ts +20 -0
  162. package/dist/styles/embed-fonts.js +81 -0
  163. package/dist/styles/pagination.d.ts +19 -0
  164. package/dist/styles/pagination.js +22 -0
  165. package/dist/styles/print-adapter.d.ts +6 -0
  166. package/dist/styles/print-adapter.js +288 -0
  167. package/dist/styles/registry.d.ts +6 -0
  168. package/dist/styles/registry.js +14 -0
  169. package/dist/styles/screenplay.css +3006 -0
  170. package/dist/styles/script-ranges.d.ts +6 -0
  171. package/dist/styles/script-ranges.js +17 -0
  172. package/dist/styles/types.d.ts +93 -0
  173. package/dist/styles/types.js +18 -0
  174. package/dist/styles/validate.d.ts +12 -0
  175. package/dist/styles/validate.js +105 -0
  176. package/dist/templates/templates.d.ts +10 -0
  177. package/dist/templates/templates.js +181 -0
  178. package/dist/titlepage/ExportDialog.d.ts +1 -0
  179. package/dist/titlepage/ExportDialog.js +152 -0
  180. package/dist/titlepage/TitlePageDialog.d.ts +6 -0
  181. package/dist/titlepage/TitlePageDialog.js +96 -0
  182. package/dist/titlepage/frontmatter-form.d.ts +56 -0
  183. package/dist/titlepage/frontmatter-form.js +245 -0
  184. package/dist/titlepage/languages.d.ts +10 -0
  185. package/dist/titlepage/languages.js +31 -0
  186. package/dist/types.d.ts +6 -0
  187. package/dist/types.js +1 -0
  188. package/package.json +47 -0
  189. package/scripts/copy-assets.mjs +16 -0
  190. package/scripts/generate-providers.mjs +127 -0
  191. package/src/ai/OnboardingDialog.tsx +390 -0
  192. package/src/ai/VoiceConfirmDialog.tsx +137 -0
  193. package/src/ai/VoiceToolbar.tsx +321 -0
  194. package/src/ai/ai-client.ts +596 -0
  195. package/src/ai/commands.ts +164 -0
  196. package/src/ai/generated-providers.json +3696 -0
  197. package/src/ai/prompts.ts +62 -0
  198. package/src/ai/voice-service.ts +96 -0
  199. package/src/autocomplete/AutocompletePlugin.ts +21 -0
  200. package/src/autocomplete/suggestions.ts +147 -0
  201. package/src/context/DocumentContext.tsx +648 -0
  202. package/src/desktop-api.d.ts +40 -0
  203. package/src/editor/EditorView.tsx +82 -0
  204. package/src/editor/SelectionMenu.tsx +152 -0
  205. package/src/editor/attr-pencil-plugin.ts +172 -0
  206. package/src/editor/character-decoration-plugin.ts +104 -0
  207. package/src/editor/editor-bus.ts +51 -0
  208. package/src/editor/find-highlight-plugin.ts +68 -0
  209. package/src/editor/frontmatter-field-view.ts +52 -0
  210. package/src/editor/frontmatter-field.ts +115 -0
  211. package/src/editor/grapheme-cursor.ts +99 -0
  212. package/src/editor/ime-plugin.ts +85 -0
  213. package/src/editor/insert-helper.ts +43 -0
  214. package/src/editor/keymap.ts +124 -0
  215. package/src/editor/language-class-plugin.ts +91 -0
  216. package/src/editor/plugins.ts +26 -0
  217. package/src/editor/prosemirror-to-sutra.ts +192 -0
  218. package/src/editor/scene-heading-view.ts +147 -0
  219. package/src/editor/schema.ts +156 -0
  220. package/src/editor/sutra-to-prosemirror.ts +156 -0
  221. package/src/extensions/storage-adapter.ts +65 -0
  222. package/src/extensions/types.ts +60 -0
  223. package/src/file/docx-exporter.ts +585 -0
  224. package/src/file/docx-importer.ts +313 -0
  225. package/src/file/print-paginator.ts +301 -0
  226. package/src/file/templates.ts +73 -0
  227. package/src/file/workflow-reports.ts +820 -0
  228. package/src/findreplace/FindReplace.tsx +242 -0
  229. package/src/findreplace/find-engine.ts +97 -0
  230. package/src/findreplace/scroll-to-match.ts +89 -0
  231. package/src/fonts/tofu-detect.ts +53 -0
  232. package/src/i18n/LanguageContext.tsx +207 -0
  233. package/src/i18n/language-detect.ts +73 -0
  234. package/src/i18n/useTranslation.tsx +74 -0
  235. package/src/index.ts +27 -0
  236. package/src/locales/bn.json +143 -0
  237. package/src/locales/en.json +143 -0
  238. package/src/locales/gu.json +143 -0
  239. package/src/locales/hi.json +143 -0
  240. package/src/locales/kn.json +143 -0
  241. package/src/locales/ml.json +143 -0
  242. package/src/locales/mr.json +143 -0
  243. package/src/locales/or.json +143 -0
  244. package/src/locales/pa.json +143 -0
  245. package/src/locales/si.json +143 -0
  246. package/src/locales/ta.json +143 -0
  247. package/src/locales/te.json +143 -0
  248. package/src/navigator/SceneNavigator.tsx +844 -0
  249. package/src/navigator/StatisticsDialog.tsx +249 -0
  250. package/src/navigator/scene-list.ts +84 -0
  251. package/src/settings/SettingsDialog.tsx +303 -0
  252. package/src/shell/AppBar.tsx +354 -0
  253. package/src/shell/AppShell.tsx +71 -0
  254. package/src/shell/ConfirmDialog.tsx +71 -0
  255. package/src/shell/ElementToolbar.tsx +175 -0
  256. package/src/shell/LanguageStatus.tsx +101 -0
  257. package/src/shell/StatusBar.tsx +135 -0
  258. package/src/shell/SutrataLogo.tsx +89 -0
  259. package/src/shell/Toast.tsx +46 -0
  260. package/src/shell/ToolbarButton.tsx +30 -0
  261. package/src/shell/VersionHistory.tsx +212 -0
  262. package/src/shell/Watermark.tsx +9 -0
  263. package/src/shell/fonts/fonts.css +1133 -0
  264. package/src/shell/icons.tsx +335 -0
  265. package/src/shell/toolbar-actions.ts +59 -0
  266. package/src/source/SourceView.tsx +111 -0
  267. package/src/source/find-highlight-source.ts +57 -0
  268. package/src/source/sutra-lang.ts +121 -0
  269. package/src/spellcheck/dictionaries.ts +21 -0
  270. package/src/spellcheck/hunspell.ts +110 -0
  271. package/src/spellcheck/spellcheck-plugin.ts +83 -0
  272. package/src/styles/StyleDialog.tsx +148 -0
  273. package/src/styles/builtin-styles.ts +139 -0
  274. package/src/styles/css-adapter.ts +76 -0
  275. package/src/styles/docx-adapter.ts +109 -0
  276. package/src/styles/embed-fonts.ts +81 -0
  277. package/src/styles/pagination.ts +27 -0
  278. package/src/styles/print-adapter.ts +288 -0
  279. package/src/styles/registry.ts +20 -0
  280. package/src/styles/screenplay.css +3006 -0
  281. package/src/styles/script-ranges.ts +17 -0
  282. package/src/styles/types.ts +104 -0
  283. package/src/styles/validate.ts +114 -0
  284. package/src/templates/templates.ts +194 -0
  285. package/src/titlepage/ExportDialog.tsx +494 -0
  286. package/src/titlepage/TitlePageDialog.tsx +312 -0
  287. package/src/titlepage/frontmatter-form.ts +280 -0
  288. package/src/titlepage/languages.ts +37 -0
  289. package/src/types.ts +7 -0
  290. package/tests/AppBar.test.tsx +35 -0
  291. package/tests/AppShell.test.tsx +22 -0
  292. package/tests/ElementToolbar.test.tsx +36 -0
  293. package/tests/LanguageStatus.test.tsx +129 -0
  294. package/tests/SelectionMenu.test.tsx +71 -0
  295. package/tests/ToolbarButton.test.tsx +24 -0
  296. package/tests/ai-onboarding.test.ts +102 -0
  297. package/tests/ai-status.test.tsx +72 -0
  298. package/tests/ai-structured.test.ts +94 -0
  299. package/tests/autocomplete/AutocompletePlugin.test.ts +20 -0
  300. package/tests/autocomplete/suggestions.test.ts +106 -0
  301. package/tests/document-context.test.tsx +565 -0
  302. package/tests/docx-importer.test.ts +160 -0
  303. package/tests/editor/character-decoration-plugin.test.ts +101 -0
  304. package/tests/editor/character-extension.test.ts +44 -0
  305. package/tests/editor/grapheme-cursor.test.ts +118 -0
  306. package/tests/editor/ime-plugin.test.ts +72 -0
  307. package/tests/editor/inline-note-bridge.test.ts +32 -0
  308. package/tests/editor/language-class-plugin.test.ts +265 -0
  309. package/tests/editor/title-page.test.ts +124 -0
  310. package/tests/embed-fonts.test.ts +17 -0
  311. package/tests/exporters.test.ts +365 -0
  312. package/tests/findreplace/FindReplace.test.tsx +391 -0
  313. package/tests/findreplace/find-engine.test.ts +86 -0
  314. package/tests/findreplace/scroll-to-match.test.ts +50 -0
  315. package/tests/fonts/tofu-detect.test.ts +122 -0
  316. package/tests/i18n/LanguageContext.test.tsx +146 -0
  317. package/tests/i18n/language-detect.test.ts +54 -0
  318. package/tests/i18n/locale-parity.test.ts +25 -0
  319. package/tests/i18n/useTranslation.test.tsx +45 -0
  320. package/tests/keymap.test.ts +18 -0
  321. package/tests/navigator/SceneNavigator.test.tsx +177 -0
  322. package/tests/navigator/StatisticsDialog.test.tsx +63 -0
  323. package/tests/navigator/scene-list.test.ts +71 -0
  324. package/tests/print-paginator.test.ts +82 -0
  325. package/tests/shell/VersionHistory.test.tsx +129 -0
  326. package/tests/spellcheck/hunspell.test.ts +82 -0
  327. package/tests/spellcheck/spellcheck-plugin.test.ts +56 -0
  328. package/tests/styles.test.ts +315 -0
  329. package/tests/templates/templates.test.ts +83 -0
  330. package/tests/titlepage/TitlePageDialog.test.tsx +90 -0
  331. package/tests/titlepage/apply-title-page.test.ts +61 -0
  332. package/tests/titlepage/frontmatter-form.test.ts +115 -0
  333. package/tests/toolbar-actions.test.ts +93 -0
  334. package/tests/voice-commands.test.ts +58 -0
  335. package/tsconfig.json +17 -0
  336. package/vitest.config.ts +11 -0
  337. package/vitest.setup.ts +65 -0
@@ -0,0 +1,1133 @@
1
+ /* ── Noto Sans — primary body font and Latin fallback ─────────────────────── */
2
+ /* One Latin file per weight, subset from the full Noto Sans (google/fonts, */
3
+ /* v2.015). It holds Latin, Latin-1, Latin Extended-A/B, IPA/modifiers, */
4
+ /* Combining Diacritical Marks (U+0300-036F) and Latin Extended Additional, */
5
+ /* i.e. every ISO 15919 letter used for romanized export, including the */
6
+ /* combining ring below (r̥, l̥) and candrabindu (m̐). Base letters and marks */
7
+ /* must live in the same file so GPOS mark positioning works; do not split */
8
+ /* this back into Google's separate latin / latin-ext subsets. */
9
+ @font-face {
10
+ font-family: 'Noto Sans';
11
+ font-style: normal;
12
+ font-weight: 400;
13
+ font-display: swap;
14
+ src: url('/fonts/NotoSans-latin-full-400.woff2') format('woff2');
15
+ unicode-range: U+0000-02FF, U+0300-036F, U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
16
+ }
17
+ @font-face {
18
+ font-family: 'Noto Sans';
19
+ font-style: normal;
20
+ font-weight: 700;
21
+ font-display: swap;
22
+ src: url('/fonts/NotoSans-latin-full-700.woff2') format('woff2');
23
+ unicode-range: U+0000-02FF, U+0300-036F, U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
24
+ }
25
+
26
+ /* ── Noto Sans Bengali ────────────────────────────────────────────────────── */
27
+ @font-face {
28
+ font-family: 'Noto Sans Bengali';
29
+ font-style: normal;
30
+ font-weight: 400;
31
+ font-display: swap;
32
+ src: url('/fonts/NotoSans-Bengali-script.woff2') format('woff2');
33
+ 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;
34
+ }
35
+ @font-face {
36
+ font-family: 'Noto Sans Bengali';
37
+ font-style: normal;
38
+ font-weight: 400;
39
+ font-display: swap;
40
+ src: url('/fonts/NotoSans-Bengali-latin-ext.woff2') format('woff2');
41
+ 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;
42
+ }
43
+ @font-face {
44
+ font-family: 'Noto Sans Bengali';
45
+ font-style: normal;
46
+ font-weight: 400;
47
+ font-display: swap;
48
+ src: url('/fonts/NotoSans-Bengali-latin.woff2') format('woff2');
49
+ 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;
50
+ }
51
+ @font-face {
52
+ font-family: 'Noto Sans Bengali';
53
+ font-style: normal;
54
+ font-weight: 700;
55
+ font-display: swap;
56
+ src: url('/fonts/NotoSans-Bengali-script-700.woff2') format('woff2');
57
+ 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;
58
+ }
59
+ @font-face {
60
+ font-family: 'Noto Sans Bengali';
61
+ font-style: normal;
62
+ font-weight: 700;
63
+ font-display: swap;
64
+ src: url('/fonts/NotoSans-Bengali-latin-ext-700.woff2') format('woff2');
65
+ 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;
66
+ }
67
+ @font-face {
68
+ font-family: 'Noto Sans Bengali';
69
+ font-style: normal;
70
+ font-weight: 700;
71
+ font-display: swap;
72
+ src: url('/fonts/NotoSans-Bengali-latin-700.woff2') format('woff2');
73
+ 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;
74
+ }
75
+
76
+ /* ── Noto Sans Devanagari ─────────────────────────────────────────────────── */
77
+ @font-face {
78
+ font-family: 'Noto Sans Devanagari';
79
+ font-style: normal;
80
+ font-weight: 400;
81
+ font-display: swap;
82
+ src: url('/fonts/NotoSans-Devanagari-script.woff2') format('woff2');
83
+ unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09;
84
+ }
85
+ @font-face {
86
+ font-family: 'Noto Sans Devanagari';
87
+ font-style: normal;
88
+ font-weight: 400;
89
+ font-display: swap;
90
+ src: url('/fonts/NotoSans-Devanagari-latin-ext.woff2') format('woff2');
91
+ 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;
92
+ }
93
+ @font-face {
94
+ font-family: 'Noto Sans Devanagari';
95
+ font-style: normal;
96
+ font-weight: 400;
97
+ font-display: swap;
98
+ src: url('/fonts/NotoSans-Devanagari-latin.woff2') format('woff2');
99
+ 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;
100
+ }
101
+ @font-face {
102
+ font-family: 'Noto Sans Devanagari';
103
+ font-style: normal;
104
+ font-weight: 700;
105
+ font-display: swap;
106
+ src: url('/fonts/NotoSans-Devanagari-script-700.woff2') format('woff2');
107
+ unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09;
108
+ }
109
+ @font-face {
110
+ font-family: 'Noto Sans Devanagari';
111
+ font-style: normal;
112
+ font-weight: 700;
113
+ font-display: swap;
114
+ src: url('/fonts/NotoSans-Devanagari-latin-ext-700.woff2') format('woff2');
115
+ 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;
116
+ }
117
+ @font-face {
118
+ font-family: 'Noto Sans Devanagari';
119
+ font-style: normal;
120
+ font-weight: 700;
121
+ font-display: swap;
122
+ src: url('/fonts/NotoSans-Devanagari-latin-700.woff2') format('woff2');
123
+ 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;
124
+ }
125
+
126
+ /* ── Noto Sans Gujarati ───────────────────────────────────────────────────── */
127
+ @font-face {
128
+ font-family: 'Noto Sans Gujarati';
129
+ font-style: normal;
130
+ font-weight: 400;
131
+ font-display: swap;
132
+ src: url('/fonts/NotoSans-Gujarati-script.woff2') format('woff2');
133
+ unicode-range: U+0951-0952, U+0964-0965, U+0A80-0AFF, U+200C-200D, U+20B9, U+25CC, U+A830-A839;
134
+ }
135
+ @font-face {
136
+ font-family: 'Noto Sans Gujarati';
137
+ font-style: normal;
138
+ font-weight: 400;
139
+ font-display: swap;
140
+ src: url('/fonts/NotoSans-Gujarati-math.woff2') format('woff2');
141
+ unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;
142
+ }
143
+ @font-face {
144
+ font-family: 'Noto Sans Gujarati';
145
+ font-style: normal;
146
+ font-weight: 400;
147
+ font-display: swap;
148
+ src: url('/fonts/NotoSans-Gujarati-symbols.woff2') format('woff2');
149
+ unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;
150
+ }
151
+ @font-face {
152
+ font-family: 'Noto Sans Gujarati';
153
+ font-style: normal;
154
+ font-weight: 400;
155
+ font-display: swap;
156
+ src: url('/fonts/NotoSans-Gujarati-latin-ext.woff2') format('woff2');
157
+ 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;
158
+ }
159
+ @font-face {
160
+ font-family: 'Noto Sans Gujarati';
161
+ font-style: normal;
162
+ font-weight: 400;
163
+ font-display: swap;
164
+ src: url('/fonts/NotoSans-Gujarati-latin.woff2') format('woff2');
165
+ 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;
166
+ }
167
+ @font-face {
168
+ font-family: 'Noto Sans Gujarati';
169
+ font-style: normal;
170
+ font-weight: 700;
171
+ font-display: swap;
172
+ src: url('/fonts/NotoSans-Gujarati-script-700.woff2') format('woff2');
173
+ unicode-range: U+0951-0952, U+0964-0965, U+0A80-0AFF, U+200C-200D, U+20B9, U+25CC, U+A830-A839;
174
+ }
175
+ @font-face {
176
+ font-family: 'Noto Sans Gujarati';
177
+ font-style: normal;
178
+ font-weight: 700;
179
+ font-display: swap;
180
+ src: url('/fonts/NotoSans-Gujarati-math-700.woff2') format('woff2');
181
+ unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;
182
+ }
183
+ @font-face {
184
+ font-family: 'Noto Sans Gujarati';
185
+ font-style: normal;
186
+ font-weight: 700;
187
+ font-display: swap;
188
+ src: url('/fonts/NotoSans-Gujarati-symbols-700.woff2') format('woff2');
189
+ unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;
190
+ }
191
+ @font-face {
192
+ font-family: 'Noto Sans Gujarati';
193
+ font-style: normal;
194
+ font-weight: 700;
195
+ font-display: swap;
196
+ src: url('/fonts/NotoSans-Gujarati-latin-ext-700.woff2') format('woff2');
197
+ 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;
198
+ }
199
+ @font-face {
200
+ font-family: 'Noto Sans Gujarati';
201
+ font-style: normal;
202
+ font-weight: 700;
203
+ font-display: swap;
204
+ src: url('/fonts/NotoSans-Gujarati-latin-700.woff2') format('woff2');
205
+ 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;
206
+ }
207
+
208
+ /* ── Noto Sans Gurmukhi ───────────────────────────────────────────────────── */
209
+ @font-face {
210
+ font-family: 'Noto Sans Gurmukhi';
211
+ font-style: normal;
212
+ font-weight: 400;
213
+ font-display: swap;
214
+ src: url('/fonts/NotoSans-Gurmukhi-script.woff2') format('woff2');
215
+ unicode-range: U+0951-0952, U+0964-0965, U+0A01-0A76, U+200C-200D, U+20B9, U+25CC, U+262C, U+A830-A839;
216
+ }
217
+ @font-face {
218
+ font-family: 'Noto Sans Gurmukhi';
219
+ font-style: normal;
220
+ font-weight: 400;
221
+ font-display: swap;
222
+ src: url('/fonts/NotoSans-Gurmukhi-latin-ext.woff2') format('woff2');
223
+ 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;
224
+ }
225
+ @font-face {
226
+ font-family: 'Noto Sans Gurmukhi';
227
+ font-style: normal;
228
+ font-weight: 400;
229
+ font-display: swap;
230
+ src: url('/fonts/NotoSans-Gurmukhi-latin.woff2') format('woff2');
231
+ 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;
232
+ }
233
+ @font-face {
234
+ font-family: 'Noto Sans Gurmukhi';
235
+ font-style: normal;
236
+ font-weight: 700;
237
+ font-display: swap;
238
+ src: url('/fonts/NotoSans-Gurmukhi-script-700.woff2') format('woff2');
239
+ unicode-range: U+0951-0952, U+0964-0965, U+0A01-0A76, U+200C-200D, U+20B9, U+25CC, U+262C, U+A830-A839;
240
+ }
241
+ @font-face {
242
+ font-family: 'Noto Sans Gurmukhi';
243
+ font-style: normal;
244
+ font-weight: 700;
245
+ font-display: swap;
246
+ src: url('/fonts/NotoSans-Gurmukhi-latin-ext-700.woff2') format('woff2');
247
+ 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;
248
+ }
249
+ @font-face {
250
+ font-family: 'Noto Sans Gurmukhi';
251
+ font-style: normal;
252
+ font-weight: 700;
253
+ font-display: swap;
254
+ src: url('/fonts/NotoSans-Gurmukhi-latin-700.woff2') format('woff2');
255
+ 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;
256
+ }
257
+
258
+ /* ── Noto Sans Kannada ────────────────────────────────────────────────────── */
259
+ @font-face {
260
+ font-family: 'Noto Sans Kannada';
261
+ font-style: normal;
262
+ font-weight: 400;
263
+ font-display: swap;
264
+ src: url('/fonts/NotoSans-Kannada-script.woff2') format('woff2');
265
+ unicode-range: U+0951-0952, U+0964-0965, U+0C80-0CF3, U+1CD0, U+1CD2-1CD3, U+1CDA, U+1CF2, U+1CF4, U+200C-200D, U+20B9, U+25CC, U+A830-A835;
266
+ }
267
+ @font-face {
268
+ font-family: 'Noto Sans Kannada';
269
+ font-style: normal;
270
+ font-weight: 400;
271
+ font-display: swap;
272
+ src: url('/fonts/NotoSans-Kannada-latin-ext.woff2') format('woff2');
273
+ 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;
274
+ }
275
+ @font-face {
276
+ font-family: 'Noto Sans Kannada';
277
+ font-style: normal;
278
+ font-weight: 400;
279
+ font-display: swap;
280
+ src: url('/fonts/NotoSans-Kannada-latin.woff2') format('woff2');
281
+ 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;
282
+ }
283
+ @font-face {
284
+ font-family: 'Noto Sans Kannada';
285
+ font-style: normal;
286
+ font-weight: 700;
287
+ font-display: swap;
288
+ src: url('/fonts/NotoSans-Kannada-script-700.woff2') format('woff2');
289
+ unicode-range: U+0951-0952, U+0964-0965, U+0C80-0CF3, U+1CD0, U+1CD2-1CD3, U+1CDA, U+1CF2, U+1CF4, U+200C-200D, U+20B9, U+25CC, U+A830-A835;
290
+ }
291
+ @font-face {
292
+ font-family: 'Noto Sans Kannada';
293
+ font-style: normal;
294
+ font-weight: 700;
295
+ font-display: swap;
296
+ src: url('/fonts/NotoSans-Kannada-latin-ext-700.woff2') format('woff2');
297
+ 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;
298
+ }
299
+ @font-face {
300
+ font-family: 'Noto Sans Kannada';
301
+ font-style: normal;
302
+ font-weight: 700;
303
+ font-display: swap;
304
+ src: url('/fonts/NotoSans-Kannada-latin-700.woff2') format('woff2');
305
+ 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;
306
+ }
307
+
308
+ /* ── Noto Sans Malayalam ──────────────────────────────────────────────────── */
309
+ @font-face {
310
+ font-family: 'Noto Sans Malayalam';
311
+ font-style: normal;
312
+ font-weight: 400;
313
+ font-display: swap;
314
+ src: url('/fonts/NotoSans-Malayalam-script.woff2') format('woff2');
315
+ unicode-range: U+0307, U+0323, U+0951-0952, U+0964-0965, U+0D00-0D7F, U+1CDA, U+1CF2, U+200C-200D, U+20B9, U+25CC, U+A830-A832;
316
+ }
317
+ @font-face {
318
+ font-family: 'Noto Sans Malayalam';
319
+ font-style: normal;
320
+ font-weight: 400;
321
+ font-display: swap;
322
+ src: url('/fonts/NotoSans-Malayalam-latin-ext.woff2') format('woff2');
323
+ 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;
324
+ }
325
+ @font-face {
326
+ font-family: 'Noto Sans Malayalam';
327
+ font-style: normal;
328
+ font-weight: 400;
329
+ font-display: swap;
330
+ src: url('/fonts/NotoSans-Malayalam-latin.woff2') format('woff2');
331
+ 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;
332
+ }
333
+ @font-face {
334
+ font-family: 'Noto Sans Malayalam';
335
+ font-style: normal;
336
+ font-weight: 700;
337
+ font-display: swap;
338
+ src: url('/fonts/NotoSans-Malayalam-script-700.woff2') format('woff2');
339
+ unicode-range: U+0307, U+0323, U+0951-0952, U+0964-0965, U+0D00-0D7F, U+1CDA, U+1CF2, U+200C-200D, U+20B9, U+25CC, U+A830-A832;
340
+ }
341
+ @font-face {
342
+ font-family: 'Noto Sans Malayalam';
343
+ font-style: normal;
344
+ font-weight: 700;
345
+ font-display: swap;
346
+ src: url('/fonts/NotoSans-Malayalam-latin-ext-700.woff2') format('woff2');
347
+ 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;
348
+ }
349
+ @font-face {
350
+ font-family: 'Noto Sans Malayalam';
351
+ font-style: normal;
352
+ font-weight: 700;
353
+ font-display: swap;
354
+ src: url('/fonts/NotoSans-Malayalam-latin-700.woff2') format('woff2');
355
+ 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;
356
+ }
357
+
358
+ /* ── Noto Sans Oriya ──────────────────────────────────────────────────────── */
359
+ @font-face {
360
+ font-family: 'Noto Sans Oriya';
361
+ font-style: normal;
362
+ font-weight: 400;
363
+ font-display: swap;
364
+ src: url('/fonts/NotoSans-Oriya-script.woff2') format('woff2');
365
+ unicode-range: U+0951-0952, U+0964-0965, U+0B01-0B77, U+1CDA, U+1CF2, U+200C-200D, U+20B9, U+25CC;
366
+ }
367
+ @font-face {
368
+ font-family: 'Noto Sans Oriya';
369
+ font-style: normal;
370
+ font-weight: 400;
371
+ font-display: swap;
372
+ src: url('/fonts/NotoSans-Oriya-latin-ext.woff2') format('woff2');
373
+ 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;
374
+ }
375
+ @font-face {
376
+ font-family: 'Noto Sans Oriya';
377
+ font-style: normal;
378
+ font-weight: 400;
379
+ font-display: swap;
380
+ src: url('/fonts/NotoSans-Oriya-latin.woff2') format('woff2');
381
+ 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;
382
+ }
383
+ @font-face {
384
+ font-family: 'Noto Sans Oriya';
385
+ font-style: normal;
386
+ font-weight: 700;
387
+ font-display: swap;
388
+ src: url('/fonts/NotoSans-Oriya-script-700.woff2') format('woff2');
389
+ unicode-range: U+0951-0952, U+0964-0965, U+0B01-0B77, U+1CDA, U+1CF2, U+200C-200D, U+20B9, U+25CC;
390
+ }
391
+ @font-face {
392
+ font-family: 'Noto Sans Oriya';
393
+ font-style: normal;
394
+ font-weight: 700;
395
+ font-display: swap;
396
+ src: url('/fonts/NotoSans-Oriya-latin-ext-700.woff2') format('woff2');
397
+ 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;
398
+ }
399
+ @font-face {
400
+ font-family: 'Noto Sans Oriya';
401
+ font-style: normal;
402
+ font-weight: 700;
403
+ font-display: swap;
404
+ src: url('/fonts/NotoSans-Oriya-latin-700.woff2') format('woff2');
405
+ 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;
406
+ }
407
+
408
+ /* ── Noto Sans Sinhala ────────────────────────────────────────────────────── */
409
+ @font-face {
410
+ font-family: 'Noto Sans Sinhala';
411
+ font-style: normal;
412
+ font-weight: 400;
413
+ font-display: swap;
414
+ src: url('/fonts/NotoSans-Sinhala-script.woff2') format('woff2');
415
+ unicode-range: U+0964-0965, U+0D80-0DFF, U+200C-200D, U+20B9, U+25CC;
416
+ }
417
+ @font-face {
418
+ font-family: 'Noto Sans Sinhala';
419
+ font-style: normal;
420
+ font-weight: 400;
421
+ font-display: swap;
422
+ src: url('/fonts/NotoSans-Sinhala-latin-ext.woff2') format('woff2');
423
+ 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;
424
+ }
425
+ @font-face {
426
+ font-family: 'Noto Sans Sinhala';
427
+ font-style: normal;
428
+ font-weight: 400;
429
+ font-display: swap;
430
+ src: url('/fonts/NotoSans-Sinhala-latin.woff2') format('woff2');
431
+ 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;
432
+ }
433
+ @font-face {
434
+ font-family: 'Noto Sans Sinhala';
435
+ font-style: normal;
436
+ font-weight: 700;
437
+ font-display: swap;
438
+ src: url('/fonts/NotoSans-Sinhala-script-700.woff2') format('woff2');
439
+ unicode-range: U+0964-0965, U+0D80-0DFF, U+200C-200D, U+20B9, U+25CC;
440
+ }
441
+ @font-face {
442
+ font-family: 'Noto Sans Sinhala';
443
+ font-style: normal;
444
+ font-weight: 700;
445
+ font-display: swap;
446
+ src: url('/fonts/NotoSans-Sinhala-latin-ext-700.woff2') format('woff2');
447
+ 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;
448
+ }
449
+ @font-face {
450
+ font-family: 'Noto Sans Sinhala';
451
+ font-style: normal;
452
+ font-weight: 700;
453
+ font-display: swap;
454
+ src: url('/fonts/NotoSans-Sinhala-latin-700.woff2') format('woff2');
455
+ 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;
456
+ }
457
+
458
+ /* ── Noto Sans Tamil ──────────────────────────────────────────────────────── */
459
+ @font-face {
460
+ font-family: 'Noto Sans Tamil';
461
+ font-style: normal;
462
+ font-weight: 400;
463
+ font-display: swap;
464
+ src: url('/fonts/NotoSans-Tamil-script.woff2') format('woff2');
465
+ unicode-range: U+0964-0965, U+0B82-0BFA, U+200C-200D, U+20B9, U+25CC;
466
+ }
467
+ @font-face {
468
+ font-family: 'Noto Sans Tamil';
469
+ font-style: normal;
470
+ font-weight: 400;
471
+ font-display: swap;
472
+ src: url('/fonts/NotoSans-Tamil-latin-ext.woff2') format('woff2');
473
+ 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;
474
+ }
475
+ @font-face {
476
+ font-family: 'Noto Sans Tamil';
477
+ font-style: normal;
478
+ font-weight: 400;
479
+ font-display: swap;
480
+ src: url('/fonts/NotoSans-Tamil-latin.woff2') format('woff2');
481
+ 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;
482
+ }
483
+ @font-face {
484
+ font-family: 'Noto Sans Tamil';
485
+ font-style: normal;
486
+ font-weight: 700;
487
+ font-display: swap;
488
+ src: url('/fonts/NotoSans-Tamil-script-700.woff2') format('woff2');
489
+ unicode-range: U+0964-0965, U+0B82-0BFA, U+200C-200D, U+20B9, U+25CC;
490
+ }
491
+ @font-face {
492
+ font-family: 'Noto Sans Tamil';
493
+ font-style: normal;
494
+ font-weight: 700;
495
+ font-display: swap;
496
+ src: url('/fonts/NotoSans-Tamil-latin-ext-700.woff2') format('woff2');
497
+ 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;
498
+ }
499
+ @font-face {
500
+ font-family: 'Noto Sans Tamil';
501
+ font-style: normal;
502
+ font-weight: 700;
503
+ font-display: swap;
504
+ src: url('/fonts/NotoSans-Tamil-latin-700.woff2') format('woff2');
505
+ 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;
506
+ }
507
+
508
+ /* ── Noto Sans Telugu ─────────────────────────────────────────────────────── */
509
+ @font-face {
510
+ font-family: 'Noto Sans Telugu';
511
+ font-style: normal;
512
+ font-weight: 400;
513
+ font-display: swap;
514
+ src: url('/fonts/NotoSans-Telugu-script.woff2') format('woff2');
515
+ unicode-range: U+0951-0952, U+0964-0965, U+0C00-0C7F, U+1CDA, U+1CF2, U+200C-200D, U+25CC;
516
+ }
517
+ @font-face {
518
+ font-family: 'Noto Sans Telugu';
519
+ font-style: normal;
520
+ font-weight: 400;
521
+ font-display: swap;
522
+ src: url('/fonts/NotoSans-Telugu-latin-ext.woff2') format('woff2');
523
+ 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;
524
+ }
525
+ @font-face {
526
+ font-family: 'Noto Sans Telugu';
527
+ font-style: normal;
528
+ font-weight: 400;
529
+ font-display: swap;
530
+ src: url('/fonts/NotoSans-Telugu-latin.woff2') format('woff2');
531
+ 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;
532
+ }
533
+ @font-face {
534
+ font-family: 'Noto Sans Telugu';
535
+ font-style: normal;
536
+ font-weight: 700;
537
+ font-display: swap;
538
+ src: url('/fonts/NotoSans-Telugu-script-700.woff2') format('woff2');
539
+ unicode-range: U+0951-0952, U+0964-0965, U+0C00-0C7F, U+1CDA, U+1CF2, U+200C-200D, U+25CC;
540
+ }
541
+ @font-face {
542
+ font-family: 'Noto Sans Telugu';
543
+ font-style: normal;
544
+ font-weight: 700;
545
+ font-display: swap;
546
+ src: url('/fonts/NotoSans-Telugu-latin-ext-700.woff2') format('woff2');
547
+ 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;
548
+ }
549
+ @font-face {
550
+ font-family: 'Noto Sans Telugu';
551
+ font-style: normal;
552
+ font-weight: 700;
553
+ font-display: swap;
554
+ src: url('/fonts/NotoSans-Telugu-latin-700.woff2') format('woff2');
555
+ 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;
556
+ }
557
+
558
+ /* ── Noto Serif — primary body font ── */
559
+ /* One Latin file per style/weight, subset from the full Noto Serif (google/fonts,
560
+ v2.015 upright / v2.013 italic) with combining marks U+0300-036F, so ISO 15919
561
+ text renders with base letters and marks in the same file (see Noto Sans above). */
562
+ @font-face {
563
+ font-family: 'Noto Serif';
564
+ font-style: normal;
565
+ font-weight: 400;
566
+ font-display: swap;
567
+ src: url('/fonts/NotoSerif-latin-full-400.woff2') format('woff2');
568
+ unicode-range: U+0000-02FF, U+0300-036F, U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
569
+ }
570
+ @font-face {
571
+ font-family: 'Noto Serif';
572
+ font-style: normal;
573
+ font-weight: 700;
574
+ font-display: swap;
575
+ src: url('/fonts/NotoSerif-latin-full-700.woff2') format('woff2');
576
+ unicode-range: U+0000-02FF, U+0300-036F, U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
577
+ }
578
+ @font-face {
579
+ font-family: 'Noto Serif';
580
+ font-style: italic;
581
+ font-weight: 400;
582
+ font-display: swap;
583
+ src: url('/fonts/NotoSerif-Italic-latin-full-400.woff2') format('woff2');
584
+ unicode-range: U+0000-02FF, U+0300-036F, U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
585
+ }
586
+
587
+ /* ── Noto Serif Bengali ── */
588
+ @font-face {
589
+ font-family: 'Noto Serif Bengali';
590
+ font-style: normal;
591
+ font-weight: 400;
592
+ font-display: swap;
593
+ src: url('/fonts/NotoSerifBengali-bengali.woff2') format('woff2');
594
+ 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;
595
+ }
596
+ @font-face {
597
+ font-family: 'Noto Serif Bengali';
598
+ font-style: normal;
599
+ font-weight: 400;
600
+ font-display: swap;
601
+ src: url('/fonts/NotoSerifBengali-latin-ext.woff2') format('woff2');
602
+ 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;
603
+ }
604
+ @font-face {
605
+ font-family: 'Noto Serif Bengali';
606
+ font-style: normal;
607
+ font-weight: 400;
608
+ font-display: swap;
609
+ src: url('/fonts/NotoSerifBengali-latin.woff2') format('woff2');
610
+ 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;
611
+ }
612
+ @font-face {
613
+ font-family: 'Noto Serif Bengali';
614
+ font-style: normal;
615
+ font-weight: 700;
616
+ font-display: swap;
617
+ src: url('/fonts/NotoSerifBengali-bengali-700.woff2') format('woff2');
618
+ 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;
619
+ }
620
+ @font-face {
621
+ font-family: 'Noto Serif Bengali';
622
+ font-style: normal;
623
+ font-weight: 700;
624
+ font-display: swap;
625
+ src: url('/fonts/NotoSerifBengali-latin-ext-700.woff2') format('woff2');
626
+ 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;
627
+ }
628
+ @font-face {
629
+ font-family: 'Noto Serif Bengali';
630
+ font-style: normal;
631
+ font-weight: 700;
632
+ font-display: swap;
633
+ src: url('/fonts/NotoSerifBengali-latin-700.woff2') format('woff2');
634
+ 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;
635
+ }
636
+
637
+ /* ── Noto Serif Devanagari ── */
638
+ @font-face {
639
+ font-family: 'Noto Serif Devanagari';
640
+ font-style: normal;
641
+ font-weight: 400;
642
+ font-display: swap;
643
+ src: url('/fonts/NotoSerifDevanagari-devanagari.woff2') format('woff2');
644
+ unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09;
645
+ }
646
+ @font-face {
647
+ font-family: 'Noto Serif Devanagari';
648
+ font-style: normal;
649
+ font-weight: 400;
650
+ font-display: swap;
651
+ src: url('/fonts/NotoSerifDevanagari-latin-ext.woff2') format('woff2');
652
+ 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;
653
+ }
654
+ @font-face {
655
+ font-family: 'Noto Serif Devanagari';
656
+ font-style: normal;
657
+ font-weight: 400;
658
+ font-display: swap;
659
+ src: url('/fonts/NotoSerifDevanagari-latin.woff2') format('woff2');
660
+ 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;
661
+ }
662
+ @font-face {
663
+ font-family: 'Noto Serif Devanagari';
664
+ font-style: normal;
665
+ font-weight: 700;
666
+ font-display: swap;
667
+ src: url('/fonts/NotoSerifDevanagari-devanagari-700.woff2') format('woff2');
668
+ unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09;
669
+ }
670
+ @font-face {
671
+ font-family: 'Noto Serif Devanagari';
672
+ font-style: normal;
673
+ font-weight: 700;
674
+ font-display: swap;
675
+ src: url('/fonts/NotoSerifDevanagari-latin-ext-700.woff2') format('woff2');
676
+ 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;
677
+ }
678
+ @font-face {
679
+ font-family: 'Noto Serif Devanagari';
680
+ font-style: normal;
681
+ font-weight: 700;
682
+ font-display: swap;
683
+ src: url('/fonts/NotoSerifDevanagari-latin-700.woff2') format('woff2');
684
+ 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;
685
+ }
686
+
687
+ /* ── Noto Serif Gujarati ── */
688
+ @font-face {
689
+ font-family: 'Noto Serif Gujarati';
690
+ font-style: normal;
691
+ font-weight: 400;
692
+ font-display: swap;
693
+ src: url('/fonts/NotoSerifGujarati-gujarati.woff2') format('woff2');
694
+ unicode-range: U+0951-0952, U+0964-0965, U+0A80-0AFF, U+200C-200D, U+20B9, U+25CC, U+A830-A839;
695
+ }
696
+ @font-face {
697
+ font-family: 'Noto Serif Gujarati';
698
+ font-style: normal;
699
+ font-weight: 400;
700
+ font-display: swap;
701
+ src: url('/fonts/NotoSerifGujarati-latin-ext.woff2') format('woff2');
702
+ 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;
703
+ }
704
+ @font-face {
705
+ font-family: 'Noto Serif Gujarati';
706
+ font-style: normal;
707
+ font-weight: 400;
708
+ font-display: swap;
709
+ src: url('/fonts/NotoSerifGujarati-latin.woff2') format('woff2');
710
+ 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;
711
+ }
712
+ @font-face {
713
+ font-family: 'Noto Serif Gujarati';
714
+ font-style: normal;
715
+ font-weight: 700;
716
+ font-display: swap;
717
+ src: url('/fonts/NotoSerifGujarati-gujarati-700.woff2') format('woff2');
718
+ unicode-range: U+0951-0952, U+0964-0965, U+0A80-0AFF, U+200C-200D, U+20B9, U+25CC, U+A830-A839;
719
+ }
720
+ @font-face {
721
+ font-family: 'Noto Serif Gujarati';
722
+ font-style: normal;
723
+ font-weight: 700;
724
+ font-display: swap;
725
+ src: url('/fonts/NotoSerifGujarati-latin-ext-700.woff2') format('woff2');
726
+ 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;
727
+ }
728
+ @font-face {
729
+ font-family: 'Noto Serif Gujarati';
730
+ font-style: normal;
731
+ font-weight: 700;
732
+ font-display: swap;
733
+ src: url('/fonts/NotoSerifGujarati-latin-700.woff2') format('woff2');
734
+ 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;
735
+ }
736
+
737
+ /* ── Noto Serif Gurmukhi ── */
738
+ @font-face {
739
+ font-family: 'Noto Serif Gurmukhi';
740
+ font-style: normal;
741
+ font-weight: 400;
742
+ font-display: swap;
743
+ src: url('/fonts/NotoSerifGurmukhi-gurmukhi.woff2') format('woff2');
744
+ unicode-range: U+0951-0952, U+0964-0965, U+0A01-0A76, U+200C-200D, U+20B9, U+25CC, U+262C, U+A830-A839;
745
+ }
746
+ @font-face {
747
+ font-family: 'Noto Serif Gurmukhi';
748
+ font-style: normal;
749
+ font-weight: 400;
750
+ font-display: swap;
751
+ src: url('/fonts/NotoSerifGurmukhi-latin-ext.woff2') format('woff2');
752
+ 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;
753
+ }
754
+ @font-face {
755
+ font-family: 'Noto Serif Gurmukhi';
756
+ font-style: normal;
757
+ font-weight: 400;
758
+ font-display: swap;
759
+ src: url('/fonts/NotoSerifGurmukhi-latin.woff2') format('woff2');
760
+ 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;
761
+ }
762
+ @font-face {
763
+ font-family: 'Noto Serif Gurmukhi';
764
+ font-style: normal;
765
+ font-weight: 700;
766
+ font-display: swap;
767
+ src: url('/fonts/NotoSerifGurmukhi-gurmukhi-700.woff2') format('woff2');
768
+ unicode-range: U+0951-0952, U+0964-0965, U+0A01-0A76, U+200C-200D, U+20B9, U+25CC, U+262C, U+A830-A839;
769
+ }
770
+ @font-face {
771
+ font-family: 'Noto Serif Gurmukhi';
772
+ font-style: normal;
773
+ font-weight: 700;
774
+ font-display: swap;
775
+ src: url('/fonts/NotoSerifGurmukhi-latin-ext-700.woff2') format('woff2');
776
+ 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;
777
+ }
778
+ @font-face {
779
+ font-family: 'Noto Serif Gurmukhi';
780
+ font-style: normal;
781
+ font-weight: 700;
782
+ font-display: swap;
783
+ src: url('/fonts/NotoSerifGurmukhi-latin-700.woff2') format('woff2');
784
+ 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;
785
+ }
786
+
787
+ /* ── Noto Serif Kannada ── */
788
+ @font-face {
789
+ font-family: 'Noto Serif Kannada';
790
+ font-style: normal;
791
+ font-weight: 400;
792
+ font-display: swap;
793
+ src: url('/fonts/NotoSerifKannada-kannada.woff2') format('woff2');
794
+ unicode-range: U+0951-0952, U+0964-0965, U+0C80-0CF3, U+1CD0, U+1CD2-1CD3, U+1CDA, U+1CF2, U+1CF4, U+200C-200D, U+20B9, U+25CC, U+A830-A835;
795
+ }
796
+ @font-face {
797
+ font-family: 'Noto Serif Kannada';
798
+ font-style: normal;
799
+ font-weight: 400;
800
+ font-display: swap;
801
+ src: url('/fonts/NotoSerifKannada-latin-ext.woff2') format('woff2');
802
+ 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;
803
+ }
804
+ @font-face {
805
+ font-family: 'Noto Serif Kannada';
806
+ font-style: normal;
807
+ font-weight: 400;
808
+ font-display: swap;
809
+ src: url('/fonts/NotoSerifKannada-latin.woff2') format('woff2');
810
+ 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;
811
+ }
812
+ @font-face {
813
+ font-family: 'Noto Serif Kannada';
814
+ font-style: normal;
815
+ font-weight: 700;
816
+ font-display: swap;
817
+ src: url('/fonts/NotoSerifKannada-kannada-700.woff2') format('woff2');
818
+ unicode-range: U+0951-0952, U+0964-0965, U+0C80-0CF3, U+1CD0, U+1CD2-1CD3, U+1CDA, U+1CF2, U+1CF4, U+200C-200D, U+20B9, U+25CC, U+A830-A835;
819
+ }
820
+ @font-face {
821
+ font-family: 'Noto Serif Kannada';
822
+ font-style: normal;
823
+ font-weight: 700;
824
+ font-display: swap;
825
+ src: url('/fonts/NotoSerifKannada-latin-ext-700.woff2') format('woff2');
826
+ 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;
827
+ }
828
+ @font-face {
829
+ font-family: 'Noto Serif Kannada';
830
+ font-style: normal;
831
+ font-weight: 700;
832
+ font-display: swap;
833
+ src: url('/fonts/NotoSerifKannada-latin-700.woff2') format('woff2');
834
+ 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;
835
+ }
836
+
837
+ /* ── Noto Serif Malayalam ── */
838
+ @font-face {
839
+ font-family: 'Noto Serif Malayalam';
840
+ font-style: normal;
841
+ font-weight: 400;
842
+ font-display: swap;
843
+ src: url('/fonts/NotoSerifMalayalam-malayalam.woff2') format('woff2');
844
+ unicode-range: U+0307, U+0323, U+0951-0952, U+0964-0965, U+0D00-0D7F, U+1CDA, U+1CF2, U+200C-200D, U+20B9, U+25CC, U+A830-A832;
845
+ }
846
+ @font-face {
847
+ font-family: 'Noto Serif Malayalam';
848
+ font-style: normal;
849
+ font-weight: 400;
850
+ font-display: swap;
851
+ src: url('/fonts/NotoSerifMalayalam-latin-ext.woff2') format('woff2');
852
+ 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;
853
+ }
854
+ @font-face {
855
+ font-family: 'Noto Serif Malayalam';
856
+ font-style: normal;
857
+ font-weight: 400;
858
+ font-display: swap;
859
+ src: url('/fonts/NotoSerifMalayalam-latin.woff2') format('woff2');
860
+ 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;
861
+ }
862
+ @font-face {
863
+ font-family: 'Noto Serif Malayalam';
864
+ font-style: normal;
865
+ font-weight: 700;
866
+ font-display: swap;
867
+ src: url('/fonts/NotoSerifMalayalam-malayalam-700.woff2') format('woff2');
868
+ unicode-range: U+0307, U+0323, U+0951-0952, U+0964-0965, U+0D00-0D7F, U+1CDA, U+1CF2, U+200C-200D, U+20B9, U+25CC, U+A830-A832;
869
+ }
870
+ @font-face {
871
+ font-family: 'Noto Serif Malayalam';
872
+ font-style: normal;
873
+ font-weight: 700;
874
+ font-display: swap;
875
+ src: url('/fonts/NotoSerifMalayalam-latin-ext-700.woff2') format('woff2');
876
+ 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;
877
+ }
878
+ @font-face {
879
+ font-family: 'Noto Serif Malayalam';
880
+ font-style: normal;
881
+ font-weight: 700;
882
+ font-display: swap;
883
+ src: url('/fonts/NotoSerifMalayalam-latin-700.woff2') format('woff2');
884
+ 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;
885
+ }
886
+
887
+ /* ── Noto Serif Oriya ── */
888
+ @font-face {
889
+ font-family: 'Noto Serif Oriya';
890
+ font-style: normal;
891
+ font-weight: 400;
892
+ font-display: swap;
893
+ src: url('/fonts/NotoSerifOriya-oriya.woff2') format('woff2');
894
+ unicode-range: U+0951-0952, U+0964-0965, U+0B01-0B77, U+1CDA, U+1CF2, U+200C-200D, U+20B9, U+25CC;
895
+ }
896
+ @font-face {
897
+ font-family: 'Noto Serif Oriya';
898
+ font-style: normal;
899
+ font-weight: 400;
900
+ font-display: swap;
901
+ src: url('/fonts/NotoSerifOriya-latin-ext.woff2') format('woff2');
902
+ 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;
903
+ }
904
+ @font-face {
905
+ font-family: 'Noto Serif Oriya';
906
+ font-style: normal;
907
+ font-weight: 400;
908
+ font-display: swap;
909
+ src: url('/fonts/NotoSerifOriya-latin.woff2') format('woff2');
910
+ 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;
911
+ }
912
+ @font-face {
913
+ font-family: 'Noto Serif Oriya';
914
+ font-style: normal;
915
+ font-weight: 700;
916
+ font-display: swap;
917
+ src: url('/fonts/NotoSerifOriya-oriya-700.woff2') format('woff2');
918
+ unicode-range: U+0951-0952, U+0964-0965, U+0B01-0B77, U+1CDA, U+1CF2, U+200C-200D, U+20B9, U+25CC;
919
+ }
920
+ @font-face {
921
+ font-family: 'Noto Serif Oriya';
922
+ font-style: normal;
923
+ font-weight: 700;
924
+ font-display: swap;
925
+ src: url('/fonts/NotoSerifOriya-latin-ext-700.woff2') format('woff2');
926
+ 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;
927
+ }
928
+ @font-face {
929
+ font-family: 'Noto Serif Oriya';
930
+ font-style: normal;
931
+ font-weight: 700;
932
+ font-display: swap;
933
+ src: url('/fonts/NotoSerifOriya-latin-700.woff2') format('woff2');
934
+ 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;
935
+ }
936
+
937
+ /* ── Noto Serif Sinhala ── */
938
+ @font-face {
939
+ font-family: 'Noto Serif Sinhala';
940
+ font-style: normal;
941
+ font-weight: 400;
942
+ font-display: swap;
943
+ src: url('/fonts/NotoSerifSinhala-sinhala.woff2') format('woff2');
944
+ unicode-range: U+0964-0965, U+0D80-0DFF, U+200C-200D, U+20B9, U+25CC;
945
+ }
946
+ @font-face {
947
+ font-family: 'Noto Serif Sinhala';
948
+ font-style: normal;
949
+ font-weight: 400;
950
+ font-display: swap;
951
+ src: url('/fonts/NotoSerifSinhala-latin-ext.woff2') format('woff2');
952
+ 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;
953
+ }
954
+ @font-face {
955
+ font-family: 'Noto Serif Sinhala';
956
+ font-style: normal;
957
+ font-weight: 400;
958
+ font-display: swap;
959
+ src: url('/fonts/NotoSerifSinhala-latin.woff2') format('woff2');
960
+ 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;
961
+ }
962
+ @font-face {
963
+ font-family: 'Noto Serif Sinhala';
964
+ font-style: normal;
965
+ font-weight: 700;
966
+ font-display: swap;
967
+ src: url('/fonts/NotoSerifSinhala-sinhala-700.woff2') format('woff2');
968
+ unicode-range: U+0964-0965, U+0D80-0DFF, U+200C-200D, U+20B9, U+25CC;
969
+ }
970
+ @font-face {
971
+ font-family: 'Noto Serif Sinhala';
972
+ font-style: normal;
973
+ font-weight: 700;
974
+ font-display: swap;
975
+ src: url('/fonts/NotoSerifSinhala-latin-ext-700.woff2') format('woff2');
976
+ 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;
977
+ }
978
+ @font-face {
979
+ font-family: 'Noto Serif Sinhala';
980
+ font-style: normal;
981
+ font-weight: 700;
982
+ font-display: swap;
983
+ src: url('/fonts/NotoSerifSinhala-latin-700.woff2') format('woff2');
984
+ 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;
985
+ }
986
+
987
+ /* ── Noto Serif Tamil ── */
988
+ @font-face {
989
+ font-family: 'Noto Serif Tamil';
990
+ font-style: normal;
991
+ font-weight: 400;
992
+ font-display: swap;
993
+ src: url('/fonts/NotoSerifTamil-tamil.woff2') format('woff2');
994
+ unicode-range: U+0964-0965, U+0B82-0BFA, U+200C-200D, U+20B9, U+25CC;
995
+ }
996
+ @font-face {
997
+ font-family: 'Noto Serif Tamil';
998
+ font-style: normal;
999
+ font-weight: 400;
1000
+ font-display: swap;
1001
+ src: url('/fonts/NotoSerifTamil-latin-ext.woff2') format('woff2');
1002
+ 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;
1003
+ }
1004
+ @font-face {
1005
+ font-family: 'Noto Serif Tamil';
1006
+ font-style: normal;
1007
+ font-weight: 400;
1008
+ font-display: swap;
1009
+ src: url('/fonts/NotoSerifTamil-latin.woff2') format('woff2');
1010
+ 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;
1011
+ }
1012
+ @font-face {
1013
+ font-family: 'Noto Serif Tamil';
1014
+ font-style: normal;
1015
+ font-weight: 700;
1016
+ font-display: swap;
1017
+ src: url('/fonts/NotoSerifTamil-tamil-700.woff2') format('woff2');
1018
+ unicode-range: U+0964-0965, U+0B82-0BFA, U+200C-200D, U+20B9, U+25CC;
1019
+ }
1020
+ @font-face {
1021
+ font-family: 'Noto Serif Tamil';
1022
+ font-style: normal;
1023
+ font-weight: 700;
1024
+ font-display: swap;
1025
+ src: url('/fonts/NotoSerifTamil-latin-ext-700.woff2') format('woff2');
1026
+ 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;
1027
+ }
1028
+ @font-face {
1029
+ font-family: 'Noto Serif Tamil';
1030
+ font-style: normal;
1031
+ font-weight: 700;
1032
+ font-display: swap;
1033
+ src: url('/fonts/NotoSerifTamil-latin-700.woff2') format('woff2');
1034
+ 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;
1035
+ }
1036
+ @font-face {
1037
+ font-family: 'Noto Serif Tamil';
1038
+ font-style: italic;
1039
+ font-weight: 400;
1040
+ font-display: swap;
1041
+ src: url('/fonts/NotoSerifTamil-Italic-tamil.woff2') format('woff2');
1042
+ unicode-range: U+0964-0965, U+0B82-0BFA, U+200C-200D, U+20B9, U+25CC;
1043
+ }
1044
+ @font-face {
1045
+ font-family: 'Noto Serif Tamil';
1046
+ font-style: italic;
1047
+ font-weight: 400;
1048
+ font-display: swap;
1049
+ src: url('/fonts/NotoSerifTamil-Italic-latin-ext.woff2') format('woff2');
1050
+ 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;
1051
+ }
1052
+ @font-face {
1053
+ font-family: 'Noto Serif Tamil';
1054
+ font-style: italic;
1055
+ font-weight: 400;
1056
+ font-display: swap;
1057
+ src: url('/fonts/NotoSerifTamil-Italic-latin.woff2') format('woff2');
1058
+ 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;
1059
+ }
1060
+ @font-face {
1061
+ font-family: 'Noto Serif Tamil';
1062
+ font-style: italic;
1063
+ font-weight: 700;
1064
+ font-display: swap;
1065
+ src: url('/fonts/NotoSerifTamil-Italic-tamil-700.woff2') format('woff2');
1066
+ unicode-range: U+0964-0965, U+0B82-0BFA, U+200C-200D, U+20B9, U+25CC;
1067
+ }
1068
+ @font-face {
1069
+ font-family: 'Noto Serif Tamil';
1070
+ font-style: italic;
1071
+ font-weight: 700;
1072
+ font-display: swap;
1073
+ src: url('/fonts/NotoSerifTamil-Italic-latin-ext-700.woff2') format('woff2');
1074
+ 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;
1075
+ }
1076
+ @font-face {
1077
+ font-family: 'Noto Serif Tamil';
1078
+ font-style: italic;
1079
+ font-weight: 700;
1080
+ font-display: swap;
1081
+ src: url('/fonts/NotoSerifTamil-Italic-latin-700.woff2') format('woff2');
1082
+ 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;
1083
+ }
1084
+
1085
+ /* ── Noto Serif Telugu ── */
1086
+ @font-face {
1087
+ font-family: 'Noto Serif Telugu';
1088
+ font-style: normal;
1089
+ font-weight: 400;
1090
+ font-display: swap;
1091
+ src: url('/fonts/NotoSerifTelugu-telugu.woff2') format('woff2');
1092
+ unicode-range: U+0951-0952, U+0964-0965, U+0C00-0C7F, U+1CDA, U+1CF2, U+200C-200D, U+25CC;
1093
+ }
1094
+ @font-face {
1095
+ font-family: 'Noto Serif Telugu';
1096
+ font-style: normal;
1097
+ font-weight: 400;
1098
+ font-display: swap;
1099
+ src: url('/fonts/NotoSerifTelugu-latin-ext.woff2') format('woff2');
1100
+ 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;
1101
+ }
1102
+ @font-face {
1103
+ font-family: 'Noto Serif Telugu';
1104
+ font-style: normal;
1105
+ font-weight: 400;
1106
+ font-display: swap;
1107
+ src: url('/fonts/NotoSerifTelugu-latin.woff2') format('woff2');
1108
+ 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;
1109
+ }
1110
+ @font-face {
1111
+ font-family: 'Noto Serif Telugu';
1112
+ font-style: normal;
1113
+ font-weight: 700;
1114
+ font-display: swap;
1115
+ src: url('/fonts/NotoSerifTelugu-telugu-700.woff2') format('woff2');
1116
+ unicode-range: U+0951-0952, U+0964-0965, U+0C00-0C7F, U+1CDA, U+1CF2, U+200C-200D, U+25CC;
1117
+ }
1118
+ @font-face {
1119
+ font-family: 'Noto Serif Telugu';
1120
+ font-style: normal;
1121
+ font-weight: 700;
1122
+ font-display: swap;
1123
+ src: url('/fonts/NotoSerifTelugu-latin-ext-700.woff2') format('woff2');
1124
+ 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;
1125
+ }
1126
+ @font-face {
1127
+ font-family: 'Noto Serif Telugu';
1128
+ font-style: normal;
1129
+ font-weight: 700;
1130
+ font-display: swap;
1131
+ src: url('/fonts/NotoSerifTelugu-latin-700.woff2') format('woff2');
1132
+ 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;
1133
+ }