@jjlmoya/utils-forensic-science 1.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 (316) hide show
  1. package/package.json +69 -0
  2. package/scripts/crystal-lattice-catalog-translations.mjs +459 -0
  3. package/scripts/postinstall.mjs +27 -0
  4. package/scripts/sync-crystal-lattice-i18n.mjs +50 -0
  5. package/src/category/i18n/de.ts +55 -0
  6. package/src/category/i18n/en.ts +55 -0
  7. package/src/category/i18n/es.ts +55 -0
  8. package/src/category/i18n/fr.ts +55 -0
  9. package/src/category/i18n/id.ts +55 -0
  10. package/src/category/i18n/it.ts +55 -0
  11. package/src/category/i18n/ja.ts +56 -0
  12. package/src/category/i18n/ko.ts +56 -0
  13. package/src/category/i18n/nl.ts +55 -0
  14. package/src/category/i18n/pl.ts +55 -0
  15. package/src/category/i18n/pt.ts +55 -0
  16. package/src/category/i18n/ru.ts +55 -0
  17. package/src/category/i18n/sv.ts +55 -0
  18. package/src/category/i18n/tr.ts +55 -0
  19. package/src/category/i18n/zh.ts +56 -0
  20. package/src/category/index.ts +48 -0
  21. package/src/category/seo.astro +15 -0
  22. package/src/components/PreviewNavSidebar.astro +116 -0
  23. package/src/components/PreviewToolbar.astro +143 -0
  24. package/src/data.ts +10 -0
  25. package/src/entries.ts +48 -0
  26. package/src/env.d.ts +5 -0
  27. package/src/index.ts +29 -0
  28. package/src/layouts/PreviewLayout.astro +117 -0
  29. package/src/pages/[locale]/[slug].astro +162 -0
  30. package/src/pages/[locale].astro +261 -0
  31. package/src/pages/index.astro +3 -0
  32. package/src/tests/diacritics_density.test.ts +140 -0
  33. package/src/tests/faq_count.test.ts +19 -0
  34. package/src/tests/i18n_coverage.test.ts +36 -0
  35. package/src/tests/inverted_punctuation.test.ts +84 -0
  36. package/src/tests/locale_completeness.test.ts +24 -0
  37. package/src/tests/mocks/astro_mock.js +2 -0
  38. package/src/tests/no_en_dash.test.ts +70 -0
  39. package/src/tests/no_h1_in_components.test.ts +48 -0
  40. package/src/tests/schemas_fulfillment.test.ts +23 -0
  41. package/src/tests/script_density.test.ts +94 -0
  42. package/src/tests/seo_length.test.ts +46 -0
  43. package/src/tests/shared-test-helpers.ts +56 -0
  44. package/src/tests/slug_language_code_format.test.ts +23 -0
  45. package/src/tests/slug_uniqueness.test.ts +81 -0
  46. package/src/tests/title_quality.test.ts +55 -0
  47. package/src/tests/tool_exports.test.ts +34 -0
  48. package/src/tests/tool_validation.test.ts +16 -0
  49. package/src/tests/widmark.test.ts +28 -0
  50. package/src/tool/forensic-age-estimator/bibliography.astro +14 -0
  51. package/src/tool/forensic-age-estimator/bibliography.ts +16 -0
  52. package/src/tool/forensic-age-estimator/component.astro +321 -0
  53. package/src/tool/forensic-age-estimator/dental-skeletal-third-molar-age-estimator.css +634 -0
  54. package/src/tool/forensic-age-estimator/entry.ts +32 -0
  55. package/src/tool/forensic-age-estimator/i18n/de.ts +245 -0
  56. package/src/tool/forensic-age-estimator/i18n/en.ts +245 -0
  57. package/src/tool/forensic-age-estimator/i18n/es.ts +245 -0
  58. package/src/tool/forensic-age-estimator/i18n/fr.ts +245 -0
  59. package/src/tool/forensic-age-estimator/i18n/id.ts +245 -0
  60. package/src/tool/forensic-age-estimator/i18n/it.ts +245 -0
  61. package/src/tool/forensic-age-estimator/i18n/ja.ts +245 -0
  62. package/src/tool/forensic-age-estimator/i18n/ko.ts +245 -0
  63. package/src/tool/forensic-age-estimator/i18n/nl.ts +245 -0
  64. package/src/tool/forensic-age-estimator/i18n/pl.ts +245 -0
  65. package/src/tool/forensic-age-estimator/i18n/pt.ts +245 -0
  66. package/src/tool/forensic-age-estimator/i18n/ru.ts +245 -0
  67. package/src/tool/forensic-age-estimator/i18n/sv.ts +245 -0
  68. package/src/tool/forensic-age-estimator/i18n/tr.ts +245 -0
  69. package/src/tool/forensic-age-estimator/i18n/zh.ts +246 -0
  70. package/src/tool/forensic-age-estimator/index.ts +11 -0
  71. package/src/tool/forensic-age-estimator/logic.ts +81 -0
  72. package/src/tool/forensic-age-estimator/seo.astro +15 -0
  73. package/src/tool/forensic-blood-test-simulator/bibliography.astro +6 -0
  74. package/src/tool/forensic-blood-test-simulator/bibliography.ts +12 -0
  75. package/src/tool/forensic-blood-test-simulator/component.astro +168 -0
  76. package/src/tool/forensic-blood-test-simulator/dom-utils.ts +40 -0
  77. package/src/tool/forensic-blood-test-simulator/entry.ts +32 -0
  78. package/src/tool/forensic-blood-test-simulator/forensic-presumptive-blood-testing-luminol-kastle-meyer-simulator.css +532 -0
  79. package/src/tool/forensic-blood-test-simulator/helpers.ts +16 -0
  80. package/src/tool/forensic-blood-test-simulator/i18n/de.ts +185 -0
  81. package/src/tool/forensic-blood-test-simulator/i18n/en.ts +185 -0
  82. package/src/tool/forensic-blood-test-simulator/i18n/es.ts +185 -0
  83. package/src/tool/forensic-blood-test-simulator/i18n/fr.ts +220 -0
  84. package/src/tool/forensic-blood-test-simulator/i18n/id.ts +220 -0
  85. package/src/tool/forensic-blood-test-simulator/i18n/it.ts +220 -0
  86. package/src/tool/forensic-blood-test-simulator/i18n/ja.ts +220 -0
  87. package/src/tool/forensic-blood-test-simulator/i18n/ko.ts +220 -0
  88. package/src/tool/forensic-blood-test-simulator/i18n/nl.ts +220 -0
  89. package/src/tool/forensic-blood-test-simulator/i18n/pl.ts +220 -0
  90. package/src/tool/forensic-blood-test-simulator/i18n/pt.ts +220 -0
  91. package/src/tool/forensic-blood-test-simulator/i18n/ru.ts +220 -0
  92. package/src/tool/forensic-blood-test-simulator/i18n/sv.ts +220 -0
  93. package/src/tool/forensic-blood-test-simulator/i18n/tr.ts +220 -0
  94. package/src/tool/forensic-blood-test-simulator/i18n/zh.ts +220 -0
  95. package/src/tool/forensic-blood-test-simulator/index.ts +11 -0
  96. package/src/tool/forensic-blood-test-simulator/logic.ts +174 -0
  97. package/src/tool/forensic-blood-test-simulator/script.ts +192 -0
  98. package/src/tool/forensic-blood-test-simulator/seo.astro +15 -0
  99. package/src/tool/forensic-fiber-comparison-microscope/bibliography.astro +6 -0
  100. package/src/tool/forensic-fiber-comparison-microscope/bibliography.ts +16 -0
  101. package/src/tool/forensic-fiber-comparison-microscope/component.astro +146 -0
  102. package/src/tool/forensic-fiber-comparison-microscope/entry.ts +32 -0
  103. package/src/tool/forensic-fiber-comparison-microscope/forensic-fiber-comparison-microscope.css +629 -0
  104. package/src/tool/forensic-fiber-comparison-microscope/i18n/de.ts +250 -0
  105. package/src/tool/forensic-fiber-comparison-microscope/i18n/en.ts +246 -0
  106. package/src/tool/forensic-fiber-comparison-microscope/i18n/es.ts +246 -0
  107. package/src/tool/forensic-fiber-comparison-microscope/i18n/fr.ts +246 -0
  108. package/src/tool/forensic-fiber-comparison-microscope/i18n/id.ts +250 -0
  109. package/src/tool/forensic-fiber-comparison-microscope/i18n/it.ts +246 -0
  110. package/src/tool/forensic-fiber-comparison-microscope/i18n/ja.ts +250 -0
  111. package/src/tool/forensic-fiber-comparison-microscope/i18n/ko.ts +246 -0
  112. package/src/tool/forensic-fiber-comparison-microscope/i18n/nl.ts +246 -0
  113. package/src/tool/forensic-fiber-comparison-microscope/i18n/pl.ts +250 -0
  114. package/src/tool/forensic-fiber-comparison-microscope/i18n/pt.ts +250 -0
  115. package/src/tool/forensic-fiber-comparison-microscope/i18n/ru.ts +250 -0
  116. package/src/tool/forensic-fiber-comparison-microscope/i18n/sv.ts +250 -0
  117. package/src/tool/forensic-fiber-comparison-microscope/i18n/tr.ts +246 -0
  118. package/src/tool/forensic-fiber-comparison-microscope/i18n/zh.ts +250 -0
  119. package/src/tool/forensic-fiber-comparison-microscope/index.ts +11 -0
  120. package/src/tool/forensic-fiber-comparison-microscope/logic.ts +244 -0
  121. package/src/tool/forensic-fiber-comparison-microscope/render.ts +265 -0
  122. package/src/tool/forensic-fiber-comparison-microscope/seo.astro +15 -0
  123. package/src/tool/forensic-fiber-comparison-microscope/view.ts +267 -0
  124. package/src/tool/forensic-glass-becke-line-simulator/bibliography.astro +6 -0
  125. package/src/tool/forensic-glass-becke-line-simulator/bibliography.ts +16 -0
  126. package/src/tool/forensic-glass-becke-line-simulator/component.astro +81 -0
  127. package/src/tool/forensic-glass-becke-line-simulator/entry.ts +32 -0
  128. package/src/tool/forensic-glass-becke-line-simulator/forensic-glass-becke-line-simulator.css +392 -0
  129. package/src/tool/forensic-glass-becke-line-simulator/i18n/de.ts +231 -0
  130. package/src/tool/forensic-glass-becke-line-simulator/i18n/en.ts +231 -0
  131. package/src/tool/forensic-glass-becke-line-simulator/i18n/es.ts +231 -0
  132. package/src/tool/forensic-glass-becke-line-simulator/i18n/fr.ts +231 -0
  133. package/src/tool/forensic-glass-becke-line-simulator/i18n/id.ts +231 -0
  134. package/src/tool/forensic-glass-becke-line-simulator/i18n/it.ts +231 -0
  135. package/src/tool/forensic-glass-becke-line-simulator/i18n/ja.ts +231 -0
  136. package/src/tool/forensic-glass-becke-line-simulator/i18n/ko.ts +231 -0
  137. package/src/tool/forensic-glass-becke-line-simulator/i18n/nl.ts +231 -0
  138. package/src/tool/forensic-glass-becke-line-simulator/i18n/pl.ts +231 -0
  139. package/src/tool/forensic-glass-becke-line-simulator/i18n/pt.ts +231 -0
  140. package/src/tool/forensic-glass-becke-line-simulator/i18n/ru.ts +231 -0
  141. package/src/tool/forensic-glass-becke-line-simulator/i18n/sv.ts +231 -0
  142. package/src/tool/forensic-glass-becke-line-simulator/i18n/tr.ts +231 -0
  143. package/src/tool/forensic-glass-becke-line-simulator/i18n/zh.ts +231 -0
  144. package/src/tool/forensic-glass-becke-line-simulator/index.ts +11 -0
  145. package/src/tool/forensic-glass-becke-line-simulator/logic.ts +100 -0
  146. package/src/tool/forensic-glass-becke-line-simulator/seo.astro +15 -0
  147. package/src/tool/forensic-glass-becke-line-simulator/view.ts +281 -0
  148. package/src/tool/forensic-image-authenticity-analyzer/bibliography.astro +9 -0
  149. package/src/tool/forensic-image-authenticity-analyzer/bibliography.ts +7 -0
  150. package/src/tool/forensic-image-authenticity-analyzer/component.astro +250 -0
  151. package/src/tool/forensic-image-authenticity-analyzer/entry.ts +29 -0
  152. package/src/tool/forensic-image-authenticity-analyzer/forensic-image-metadata-authenticity-analyzer.css +679 -0
  153. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -0
  154. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -0
  155. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -0
  156. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -0
  157. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +76 -0
  158. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -0
  159. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +72 -0
  160. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +72 -0
  161. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +75 -0
  162. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +75 -0
  163. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -0
  164. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +75 -0
  165. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +76 -0
  166. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +76 -0
  167. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +71 -0
  168. package/src/tool/forensic-image-authenticity-analyzer/index.ts +11 -0
  169. package/src/tool/forensic-image-authenticity-analyzer/logic.ts +283 -0
  170. package/src/tool/forensic-image-authenticity-analyzer/seo.astro +10 -0
  171. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.astro +6 -0
  172. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.ts +12 -0
  173. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +240 -0
  174. package/src/tool/forensic-microcrystal-drug-simulator/entry.ts +32 -0
  175. package/src/tool/forensic-microcrystal-drug-simulator/forensic-microcrystal-drug-simulator.css +430 -0
  176. package/src/tool/forensic-microcrystal-drug-simulator/i18n/de.ts +244 -0
  177. package/src/tool/forensic-microcrystal-drug-simulator/i18n/en.ts +244 -0
  178. package/src/tool/forensic-microcrystal-drug-simulator/i18n/es.ts +244 -0
  179. package/src/tool/forensic-microcrystal-drug-simulator/i18n/fr.ts +244 -0
  180. package/src/tool/forensic-microcrystal-drug-simulator/i18n/id.ts +244 -0
  181. package/src/tool/forensic-microcrystal-drug-simulator/i18n/it.ts +244 -0
  182. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ja.ts +244 -0
  183. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ko.ts +244 -0
  184. package/src/tool/forensic-microcrystal-drug-simulator/i18n/nl.ts +244 -0
  185. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pl.ts +244 -0
  186. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pt.ts +244 -0
  187. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ru.ts +244 -0
  188. package/src/tool/forensic-microcrystal-drug-simulator/i18n/sv.ts +244 -0
  189. package/src/tool/forensic-microcrystal-drug-simulator/i18n/tr.ts +244 -0
  190. package/src/tool/forensic-microcrystal-drug-simulator/i18n/zh.ts +244 -0
  191. package/src/tool/forensic-microcrystal-drug-simulator/index.ts +11 -0
  192. package/src/tool/forensic-microcrystal-drug-simulator/logic.ts +189 -0
  193. package/src/tool/forensic-microcrystal-drug-simulator/seo.astro +15 -0
  194. package/src/tool/forensic-sex-determinator/bibliography.astro +14 -0
  195. package/src/tool/forensic-sex-determinator/bibliography.ts +12 -0
  196. package/src/tool/forensic-sex-determinator/component.astro +463 -0
  197. package/src/tool/forensic-sex-determinator/entry.ts +32 -0
  198. package/src/tool/forensic-sex-determinator/forensic-sex-determinator.css +413 -0
  199. package/src/tool/forensic-sex-determinator/i18n/de.ts +211 -0
  200. package/src/tool/forensic-sex-determinator/i18n/en.ts +211 -0
  201. package/src/tool/forensic-sex-determinator/i18n/es.ts +211 -0
  202. package/src/tool/forensic-sex-determinator/i18n/fr.ts +211 -0
  203. package/src/tool/forensic-sex-determinator/i18n/id.ts +211 -0
  204. package/src/tool/forensic-sex-determinator/i18n/it.ts +211 -0
  205. package/src/tool/forensic-sex-determinator/i18n/ja.ts +211 -0
  206. package/src/tool/forensic-sex-determinator/i18n/ko.ts +211 -0
  207. package/src/tool/forensic-sex-determinator/i18n/nl.ts +211 -0
  208. package/src/tool/forensic-sex-determinator/i18n/pl.ts +211 -0
  209. package/src/tool/forensic-sex-determinator/i18n/pt.ts +211 -0
  210. package/src/tool/forensic-sex-determinator/i18n/ru.ts +211 -0
  211. package/src/tool/forensic-sex-determinator/i18n/sv.ts +211 -0
  212. package/src/tool/forensic-sex-determinator/i18n/tr.ts +211 -0
  213. package/src/tool/forensic-sex-determinator/i18n/zh.ts +211 -0
  214. package/src/tool/forensic-sex-determinator/index.ts +11 -0
  215. package/src/tool/forensic-sex-determinator/logic.ts +89 -0
  216. package/src/tool/forensic-sex-determinator/seo.astro +15 -0
  217. package/src/tool/forensic-stature-estimator/bibliography.astro +14 -0
  218. package/src/tool/forensic-stature-estimator/bibliography.ts +12 -0
  219. package/src/tool/forensic-stature-estimator/component.astro +49 -0
  220. package/src/tool/forensic-stature-estimator/components/EstimationPanel.astro +65 -0
  221. package/src/tool/forensic-stature-estimator/components/OsteometricBoard.astro +39 -0
  222. package/src/tool/forensic-stature-estimator/components/OsteometricSelector.astro +109 -0
  223. package/src/tool/forensic-stature-estimator/dom-utils.ts +71 -0
  224. package/src/tool/forensic-stature-estimator/entry.ts +32 -0
  225. package/src/tool/forensic-stature-estimator/forensic-stature-estimator.css +689 -0
  226. package/src/tool/forensic-stature-estimator/helpers.ts +51 -0
  227. package/src/tool/forensic-stature-estimator/i18n/de.ts +196 -0
  228. package/src/tool/forensic-stature-estimator/i18n/en.ts +196 -0
  229. package/src/tool/forensic-stature-estimator/i18n/es.ts +196 -0
  230. package/src/tool/forensic-stature-estimator/i18n/fr.ts +196 -0
  231. package/src/tool/forensic-stature-estimator/i18n/id.ts +196 -0
  232. package/src/tool/forensic-stature-estimator/i18n/it.ts +196 -0
  233. package/src/tool/forensic-stature-estimator/i18n/ja.ts +196 -0
  234. package/src/tool/forensic-stature-estimator/i18n/ko.ts +196 -0
  235. package/src/tool/forensic-stature-estimator/i18n/nl.ts +196 -0
  236. package/src/tool/forensic-stature-estimator/i18n/pl.ts +196 -0
  237. package/src/tool/forensic-stature-estimator/i18n/pt.ts +196 -0
  238. package/src/tool/forensic-stature-estimator/i18n/ru.ts +196 -0
  239. package/src/tool/forensic-stature-estimator/i18n/sv.ts +196 -0
  240. package/src/tool/forensic-stature-estimator/i18n/tr.ts +196 -0
  241. package/src/tool/forensic-stature-estimator/i18n/zh.ts +196 -0
  242. package/src/tool/forensic-stature-estimator/index.ts +11 -0
  243. package/src/tool/forensic-stature-estimator/logic.ts +119 -0
  244. package/src/tool/forensic-stature-estimator/script.ts +288 -0
  245. package/src/tool/forensic-stature-estimator/seo.astro +15 -0
  246. package/src/tool/forensic-tlc-ink-simulator/bibliography.astro +6 -0
  247. package/src/tool/forensic-tlc-ink-simulator/bibliography.ts +16 -0
  248. package/src/tool/forensic-tlc-ink-simulator/component.astro +245 -0
  249. package/src/tool/forensic-tlc-ink-simulator/entry.ts +32 -0
  250. package/src/tool/forensic-tlc-ink-simulator/forensic-tlc-ink-simulator.css +462 -0
  251. package/src/tool/forensic-tlc-ink-simulator/i18n/de.ts +243 -0
  252. package/src/tool/forensic-tlc-ink-simulator/i18n/en.ts +243 -0
  253. package/src/tool/forensic-tlc-ink-simulator/i18n/es.ts +243 -0
  254. package/src/tool/forensic-tlc-ink-simulator/i18n/fr.ts +243 -0
  255. package/src/tool/forensic-tlc-ink-simulator/i18n/id.ts +243 -0
  256. package/src/tool/forensic-tlc-ink-simulator/i18n/it.ts +243 -0
  257. package/src/tool/forensic-tlc-ink-simulator/i18n/ja.ts +235 -0
  258. package/src/tool/forensic-tlc-ink-simulator/i18n/ko.ts +235 -0
  259. package/src/tool/forensic-tlc-ink-simulator/i18n/nl.ts +243 -0
  260. package/src/tool/forensic-tlc-ink-simulator/i18n/pl.ts +243 -0
  261. package/src/tool/forensic-tlc-ink-simulator/i18n/pt.ts +243 -0
  262. package/src/tool/forensic-tlc-ink-simulator/i18n/ru.ts +243 -0
  263. package/src/tool/forensic-tlc-ink-simulator/i18n/sv.ts +243 -0
  264. package/src/tool/forensic-tlc-ink-simulator/i18n/tr.ts +243 -0
  265. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +235 -0
  266. package/src/tool/forensic-tlc-ink-simulator/index.ts +11 -0
  267. package/src/tool/forensic-tlc-ink-simulator/logic.ts +152 -0
  268. package/src/tool/forensic-tlc-ink-simulator/seo.astro +15 -0
  269. package/src/tool/gsr-dispersion-calculator/bibliography.astro +6 -0
  270. package/src/tool/gsr-dispersion-calculator/bibliography.ts +16 -0
  271. package/src/tool/gsr-dispersion-calculator/component.astro +294 -0
  272. package/src/tool/gsr-dispersion-calculator/entry.ts +32 -0
  273. package/src/tool/gsr-dispersion-calculator/gsr-dispersion-calculator.css +305 -0
  274. package/src/tool/gsr-dispersion-calculator/i18n/de.ts +272 -0
  275. package/src/tool/gsr-dispersion-calculator/i18n/en.ts +272 -0
  276. package/src/tool/gsr-dispersion-calculator/i18n/es.ts +272 -0
  277. package/src/tool/gsr-dispersion-calculator/i18n/fr.ts +272 -0
  278. package/src/tool/gsr-dispersion-calculator/i18n/id.ts +272 -0
  279. package/src/tool/gsr-dispersion-calculator/i18n/it.ts +272 -0
  280. package/src/tool/gsr-dispersion-calculator/i18n/ja.ts +272 -0
  281. package/src/tool/gsr-dispersion-calculator/i18n/ko.ts +272 -0
  282. package/src/tool/gsr-dispersion-calculator/i18n/nl.ts +272 -0
  283. package/src/tool/gsr-dispersion-calculator/i18n/pl.ts +272 -0
  284. package/src/tool/gsr-dispersion-calculator/i18n/pt.ts +272 -0
  285. package/src/tool/gsr-dispersion-calculator/i18n/ru.ts +272 -0
  286. package/src/tool/gsr-dispersion-calculator/i18n/sv.ts +272 -0
  287. package/src/tool/gsr-dispersion-calculator/i18n/tr.ts +272 -0
  288. package/src/tool/gsr-dispersion-calculator/i18n/zh.ts +272 -0
  289. package/src/tool/gsr-dispersion-calculator/index.ts +11 -0
  290. package/src/tool/gsr-dispersion-calculator/logic.ts +148 -0
  291. package/src/tool/gsr-dispersion-calculator/seo.astro +15 -0
  292. package/src/tool/widmark-alcohol-simulator/bibliography.astro +14 -0
  293. package/src/tool/widmark-alcohol-simulator/bibliography.ts +12 -0
  294. package/src/tool/widmark-alcohol-simulator/component.astro +453 -0
  295. package/src/tool/widmark-alcohol-simulator/entry.ts +32 -0
  296. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +193 -0
  297. package/src/tool/widmark-alcohol-simulator/i18n/en.ts +206 -0
  298. package/src/tool/widmark-alcohol-simulator/i18n/es.ts +193 -0
  299. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +193 -0
  300. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +193 -0
  301. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +193 -0
  302. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +193 -0
  303. package/src/tool/widmark-alcohol-simulator/i18n/ko.ts +193 -0
  304. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +193 -0
  305. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +193 -0
  306. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +193 -0
  307. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +193 -0
  308. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +193 -0
  309. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +193 -0
  310. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +193 -0
  311. package/src/tool/widmark-alcohol-simulator/index.ts +11 -0
  312. package/src/tool/widmark-alcohol-simulator/logic.ts +97 -0
  313. package/src/tool/widmark-alcohol-simulator/seo.astro +15 -0
  314. package/src/tool/widmark-alcohol-simulator/widmark-alcohol-simulator.css +386 -0
  315. package/src/tools.ts +27 -0
  316. package/src/types.ts +70 -0
@@ -0,0 +1,243 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'simulador-cromatografia-capa-fina-tlc-tintas';
5
+ const title = 'Simulador de Cromatografía en Capa Fina (TLC) de Tintas Forenses';
6
+ const description = 'Simule la cromatografía en capa fina de tintas de escritura cuestionadas, visualice el desarrollo del frente del disolvente, separe las bandas de colorantes y calcule los valores de Rf exactos para cada pigmento.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Seleccionar la tinta cuestionada o el bolígrafo de comparación',
11
+ text: 'Seleccione la tinta de la nota de rescate o el perfil de un bolígrafo sospechoso. Cada tinta contiene un conjunto diferente de colorantes con distinta polaridad y afinidad por la fase estacionaria.',
12
+ },
13
+ {
14
+ name: 'Seleccionar la fase móvil',
15
+ text: 'Cambie el sistema de disolventes para observar cómo la polaridad del disolvente altera el desarrollo capilar y la migración relativa de cada banda de colorante.',
16
+ },
17
+ {
18
+ name: 'Desarrollar la placa de TLC',
19
+ text: 'Mueva el control deslizante del tiempo de desarrollo y observe cómo el frente del disolvente asciende por la placa mientras aparecen las bandas separadas por encima de la línea de origen.',
20
+ },
21
+ {
22
+ name: 'Leer la tabla de Rf',
23
+ text: 'Compare la distancia de cada pigmento con la distancia del frente del disolvente. El simulador calcula el Rf dividiendo la distancia del pigmento entre la distancia del frente del disolvente.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ key: 'faq-1',
30
+ question: '¿Qué significa Rf en cromatografía en capa fina?',
31
+ answer: 'Rf es el factor de retención: la distancia recorrida por el compuesto dividida por la distancia recorrida por el frente del disolvente desde la misma línea de origen. Es un valor adimensional y normalmente oscila entre 0 y 1.',
32
+ },
33
+ {
34
+ key: 'faq-2',
35
+ question: '¿Puede la TLC demostrar que dos muestras de tinta provienen del mismo bolígrafo?',
36
+ answer: 'No. La TLC puede mostrar si los patrones de los colorantes son consistentes o inconsistentes, pero la atribución de origen requiere métodos de comparación validados, controles, documentación y la interpretación de un experto.',
37
+ },
38
+ {
39
+ key: 'faq-3',
40
+ question: '¿Por qué al cambiar el disolvente se altera el patrón de las bandas?',
41
+ answer: 'Los colorantes se distribuyen de manera diferente entre la fase estacionaria y la fase móvil. Un disolvente con una polaridad más afín puede arrastrar un colorante a mayor distancia, aumentando su valor de Rf.',
42
+ },
43
+ {
44
+ key: 'faq-4',
45
+ question: '¿Por qué es importante la línea de origen?',
46
+ answer: 'Tanto la distancia del frente del disolvente como la del pigmento deben medirse desde la línea de origen. Medir desde el borde inferior de la placa produce valores de Rf incorrectos.',
47
+ },
48
+ ];
49
+
50
+ export const content: ToolLocaleContent = {
51
+ slug,
52
+ title,
53
+ description,
54
+ ui: {
55
+ chamberAria: 'Cámara de cromatografía en capa fina con placa de desarrollo',
56
+ rulerAria: 'Regla milimétrica virtual para medir el frente del disolvente y las bandas de pigmento',
57
+ rulerMarks: '80,60,40,20,0',
58
+ units: 'Sistema de unidades',
59
+ metric: 'Métrico',
60
+ imperial: 'Imperial',
61
+ unitMillimeter: 'mm',
62
+ unitInch: 'in',
63
+ unitMinute: 'min',
64
+ inkSample: 'Muestra de tinta',
65
+ ransomNote: 'Tinta de la nota de rescate cuestionada',
66
+ bluePen: 'Bolígrafo azul incautado',
67
+ blackPen: 'Bolígrafo negro incautado',
68
+ gelPen: 'Bolígrafo de gel incautado',
69
+ solventSystem: 'Fase móvil',
70
+ ethanolWater: 'Etanol / agua',
71
+ butanolAcetic: 'Butanol / ácido acético',
72
+ isopropanolAmmonia: 'Isopropanol / amoníaco',
73
+ developmentTime: 'Tiempo de desarrollo',
74
+ frontDistance: 'Recorrido del disolvente',
75
+ matchScore: 'Similitud del patrón',
76
+ solventFront: 'Frente del disolvente',
77
+ originLine: 'Origen',
78
+ pigment: 'Banda de pigmento',
79
+ pigmentCyanDye: 'colorante cian',
80
+ pigmentVioletDye: 'colorante violeta',
81
+ pigmentGrayCarrier: 'vehículo gris',
82
+ pigmentNavyDye: 'colorante azul marino',
83
+ pigmentYellowDye: 'colorante amarillo',
84
+ pigmentRedDye: 'colorante rojo',
85
+ pigmentBlueDye: 'colorante azul',
86
+ pigmentDarkBinder: 'aglutinante oscuro',
87
+ pigmentTealDye: 'colorante verde azulado',
88
+ pigmentMagentaDye: 'colorante magenta',
89
+ pigmentGelBinder: 'aglutinante de gel',
90
+ distance: 'Distancia',
91
+ rfValue: 'Valor Rf',
92
+ disclaimer: 'Simulación únicamente con fines educativos. La comparación forense de tintas requiere documentos originales, métodos de laboratorio validados, patrones de referencia y examinadores de documentos cualificados.',
93
+ },
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: 'Cromatografía en Capa Fina para la Comparación Forense de Tintas',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'diagnostic',
102
+ variant: 'info',
103
+ icon: 'mdi:test-tube',
104
+ badge: 'Simulador didáctico',
105
+ title: 'Qué ayuda a comprender este simulador de tinta TLC',
106
+ html: 'Esta herramienta explica cómo la <strong>cromatografía en capa fina de tintas de escritura</strong> puede separar una línea de tinta visible en múltiples bandas de colorantes. Está diseñada para estudiantes de ciencias forenses, estudiantes de examen de documentos y cualquier persona que intente comprender cómo se calculan los valores de Rf a partir de una placa de TLC desarrollada.',
107
+ },
108
+ {
109
+ type: 'stats',
110
+ columns: 4,
111
+ items: [
112
+ { value: 'Rf = d banda / d disolvente', label: 'fórmula del factor de retención', icon: 'mdi:division' },
113
+ { value: '4', label: 'perfiles de tinta comparados', icon: 'mdi:pen' },
114
+ { value: '3', label: 'fases móviles simuladas', icon: 'mdi:flask-outline' },
115
+ { value: '2', label: 'lecturas métricas e imperiales', icon: 'mdi:swap-horizontal' },
116
+ ],
117
+ },
118
+ {
119
+ type: 'summary',
120
+ title: 'Lista de verificación para mediciones correctas de TLC',
121
+ items: [
122
+ 'Marque la línea de origen por encima del nivel del disolvente antes de comenzar el desarrollo.',
123
+ 'Retire la placa antes de que el disolvente alcance el borde superior.',
124
+ 'Marque el frente del disolvente de inmediato, ya que puede evaporarse o volverse difícil de ver.',
125
+ 'Mida el recorrido del pigmento y del disolvente desde la misma línea de origen.',
126
+ 'Informe los valores de Rf junto con el sistema de disolventes, el tipo de placa, las condiciones de desarrollo y los controles.',
127
+ ],
128
+ },
129
+ {
130
+ type: 'comparative',
131
+ columns: 2,
132
+ items: [
133
+ {
134
+ title: 'Lo que la TLC puede respaldar',
135
+ icon: 'mdi:check-circle-outline',
136
+ highlight: true,
137
+ description: 'La TLC puede mostrar si las tintas cuestionadas y las conocidas tienen un comportamiento de separación de colorantes similar bajo las mismas condiciones.',
138
+ points: ['Comparación de cribado', 'Visualización del patrón de colorantes', 'Documentación del Rf', 'Selección de muestras para pruebas confirmatorias'],
139
+ },
140
+ {
141
+ title: 'Lo que la TLC no puede probar por sí sola',
142
+ icon: 'mdi:alert-circle-outline',
143
+ description: 'La TLC por sí sola no puede identificar de forma exclusiva un bolígrafo, fechar un documento o probar la autoría.',
144
+ points: ['Sin atribución de fuente única', 'Sin identificación del redactor', 'Sin conclusión de envejecimiento por defecto', 'No reemplaza los protocolos validados'],
145
+ },
146
+ ],
147
+ },
148
+ {
149
+ type: 'table',
150
+ headers: ['Pregunta de los usuarios', 'Concepto de TLC implicado', 'Respuesta detallada'],
151
+ rows: [
152
+ ['¿Cómo se calcula el Rf?', 'Distancia del colorante dividida por la distancia del frente del disolvente.', 'Mida ambas desde la línea de origen y luego divida. El resultado no tiene unidad.'],
153
+ ['¿Por qué las tintas se separan en colores?', 'Diferentes colorantes tienen distinta afinidad por las fases estacionaria y móvil.', 'Un solo trazo escrito puede contener varios colorantes que migran a diferentes velocidades.'],
154
+ ['¿Pueden dos bolígrafos tener el mismo patrón de TLC?', 'Sí, formulaciones similares pueden producir patrones muy parecidos.', 'La similitud respalda la consistencia, no la individualización a un solo bolígrafo.'],
155
+ ['¿Por qué cambió mi Rf?', 'El disolvente, la placa, la humedad, la saturación, la temperatura y el tamaño del punto afectan la migración.', 'Los valores de Rf solo son comparables cuando las condiciones están controladas y documentadas.'],
156
+ ],
157
+ },
158
+ {
159
+ type: 'title',
160
+ text: 'Cómo modela la separación el simulador',
161
+ level: 3,
162
+ },
163
+ {
164
+ type: 'paragraph',
165
+ html: 'El modelo trata el movimiento del frente del disolvente como un proceso de ascenso capilar que se ralentiza con el tiempo, mientras que cada colorante recibe un valor de Rf basado en dos propiedades simplificadas: su afinidad por el disolvente en movimiento y su compatibilidad de polaridad con la fase móvil seleccionada. Esto es intencionadamente educativo y no química de grado instrumental, pero preserva la relación fundamental que los usuarios necesitan aprender: el disolvente se mueve primero, los colorantes se distribuyen entre las fases y el Rf se calcula a partir de las distancias de recorrido medidas.',
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: 'La cromatografía en capa fina es una técnica analítica ampliamente aceptada en los laboratorios forenses debido a su simplicidad, rapidez y rentabilidad. En el contexto del examen de documentos, se utiliza principalmente para comparar la composición de colorantes de diferentes muestras de tinta. Los científicos forenses extraen una pequeña porción de tinta de un documento cuestionado utilizando un bisturí o una aguja hueca, la disuelven en un disolvente adecuado como piridina o metanol, y la aplican en la placa de TLC junto con patrones de tinta de referencia.',
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: 'Una vez que la placa se desarrolla en una cámara cerrada, los componentes individuales de la tinta se separan en función de su distribución diferencial entre la fase estacionaria de gel de sílice y la fase móvil del disolvente. El cromatograma resultante proporciona una huella digital visual de la tinta, mostrando bandas de colores distintas a alturas específicas. Posteriormente, los examinadores de documentos calculan el factor de retención para cada banda de colorante visible, lo que ayuda a determinar si la tinta cuestionada es químicamente consistente con un instrumento de escritura sospechoso o si coincide con una marca y fórmula conocidas en una base de datos de referencia de tintas.',
174
+ },
175
+ {
176
+ type: 'glossary',
177
+ items: [
178
+ { term: 'Fase estacionaria', definition: 'El recubrimiento de la placa de TLC, comúnmente gel de sílice, que interactúa con los compuestos y ralentiza su movimiento.' },
179
+ { term: 'Fase móvil', definition: 'El sistema de disolventes que asciende por la placa y arrastra consigo los componentes del colorante.' },
180
+ { term: 'Línea de origen', definition: 'La línea de lápiz donde se aplica la muestra de tinta antes del desarrollo.' },
181
+ { term: 'Frente del disolvente', definition: 'El punto más alto alcanzado por la fase móvil antes de retirar la placa.' },
182
+ { term: 'Valor Rf', definition: 'El factor de retención: distancia de recorrido del compuesto dividida por la distancia de recorrido del frente del disolvente.' },
183
+ ],
184
+ },
185
+ {
186
+ type: 'tip',
187
+ title: 'Consejo práctico de interpretación',
188
+ html: 'En el examen forense de documentos, una discrepancia puede ser especialmente útil porque puede excluir la fórmula de un bolígrafo candidato. Un patrón de TLC coincidente es un indicio más débil: indica que las muestras son químicamente consistentes bajo esas condiciones, no que provengan necesariamente del mismo bolígrafo.',
189
+ },
190
+ {
191
+ type: 'proscons',
192
+ title: 'Fortalezas y limitaciones de la comparación de tintas mediante TLC',
193
+ items: [
194
+ { pro: 'Rápido, económico y visualmente intuitivo para separar los colorantes de la tinta.', con: 'Normalmente destructivo, ya que se extrae una pequeña muestra del documento.' },
195
+ { pro: 'Los valores de Rf crean una forma estructurada de comparar muestras cuestionadas y conocidas.', con: 'Los valores de Rf cambian cuando varían el disolvente, la placa, la humedad y las condiciones de desarrollo.' },
196
+ { pro: 'Útil como método de cribado antes de análisis más avanzados.', con: 'No puede llevar a una conclusión inequívoca sobre el bolígrafo de origen sin pruebas adicionales más amplias.' },
197
+ ],
198
+ },
199
+ {
200
+ type: 'diagnostic',
201
+ variant: 'warning',
202
+ icon: 'mdi:scale-balance',
203
+ badge: 'Precaución forense',
204
+ title: 'No sobrestime la cromatografía de tintas',
205
+ html: 'Una simulación de navegador no puede examinar el papel, la antigüedad de la tinta, la química de extracción, la calidad de la placa, la contaminación o la confirmación instrumental. Utilícela para aprender la lógica de medición y los límites de interpretación, y confíe en métodos validados de examen forense de documentos para las pruebas reales.',
206
+ },
207
+ ],
208
+ faq,
209
+ bibliography,
210
+ howTo,
211
+ schemas: [
212
+ {
213
+ '@context': 'https://schema.org',
214
+ '@type': 'SoftwareApplication',
215
+ name: title,
216
+ description,
217
+ applicationCategory: 'ForensicApplication',
218
+ operatingSystem: 'Any',
219
+ },
220
+ {
221
+ '@context': 'https://schema.org',
222
+ '@type': 'FAQPage',
223
+ mainEntity: faq.map((item) => ({
224
+ '@type': 'Question',
225
+ name: item.question,
226
+ acceptedAnswer: {
227
+ '@type': 'Answer',
228
+ text: item.answer,
229
+ },
230
+ })),
231
+ },
232
+ {
233
+ '@context': 'https://schema.org',
234
+ '@type': 'HowTo',
235
+ name: title,
236
+ step: howTo.map((step) => ({
237
+ '@type': 'HowToStep',
238
+ name: step.name,
239
+ text: step.text,
240
+ })),
241
+ },
242
+ ],
243
+ };
@@ -0,0 +1,243 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'simulateur-chromatographie-couche-mince-ccm-encre';
5
+ const title = 'Simulateur de Chromatographie sur Couche Mince (CCM) d\'Encre Forensique';
6
+ const description = 'Simulez la chromatographie sur couche mince d\'encres d\'écriture suspectes, visualisez le développement du front de solvant, séparez les bandes de pigments et calculez les valeurs de Rf exactes pour chaque pigment.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Choisir l\'encre suspecte ou le stylo de comparaison',
11
+ text: 'Sélectionnez l\'encre de la demande de rançon ou le profil d\'un stylo suspect. Chaque encre contient un ensemble différent de colorants avec une polarité et une affinité spécifiques pour la phase stationnaire.',
12
+ },
13
+ {
14
+ name: 'Sélectionner la phase mobile',
15
+ text: 'Modifiez le système de solvants pour observer comment la polarité du solvant altère le développement capillaire et la migration relative de chaque bande de colorant.',
16
+ },
17
+ {
18
+ name: 'Développer la plaque de CCM',
19
+ text: 'Déplacez le curseur de temps de développement et observez le front de solvant monter sur la plaque tandis que les bandes séparées apparaissent au-dessus de la ligne de dépôt.',
20
+ },
21
+ {
22
+ name: 'Lire le tableau des Rf',
23
+ text: 'Comparez la distance de chaque pigment avec la distance du front de solvant. Le simulateur calcule le Rf en divisant la distance du pigment par la distance du front.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ key: 'faq-1',
30
+ question: 'Que signifie Rf en chromatographie sur couche mince ?',
31
+ answer: 'Le Rf est le rapport de front (ou facteur de rétention): la distance parcourue par le composé divisée par la distance parcourue par le front de solvant depuis la même ligne de dépôt. C\'est une valeur sans unité qui varie normalement de 0 à 1.',
32
+ },
33
+ {
34
+ key: 'faq-2',
35
+ question: 'La CCM peut-elle prouver que deux échantillons d\'encre proviennent du même stylo ?',
36
+ answer: 'Non. La CCM peut montrer si les profils de colorants sont cohérents ou incohérents, mais l\'attribution de la source exige des méthodes de comparaison validées, des contrôles, de la documentation et l\'interprétation d\'un expert.',
37
+ },
38
+ {
39
+ key: 'faq-3',
40
+ question: 'Pourquoi le changement de solvant modifie-t-il le profil des bandes ?',
41
+ answer: 'Les colorants se répartissent différemment entre la phase stationnaire et la phase mobile. Un solvant ayant une meilleure affinité de polarité peut entraîner un colorant plus loin, augmentant ainsi sa valeur de Rf.',
42
+ },
43
+ {
44
+ key: 'faq-4',
45
+ question: 'Pourquoi la ligne de dépôt est-elle importante ?',
46
+ answer: 'La distance du front de solvant et celle du pigment doivent toutes deux être mesurées à partir de la ligne de dépôt. Mesurer depuis le bas de la plaque produit des valeurs de Rf incorrectes.',
47
+ },
48
+ ];
49
+
50
+ export const content: ToolLocaleContent = {
51
+ slug,
52
+ title,
53
+ description,
54
+ ui: {
55
+ chamberAria: 'Chambre de chromatographie sur couche mince avec plaque de développement',
56
+ rulerAria: 'Règle millimétrée virtuelle pour mesurer le front de solvant et les bandes de pigments',
57
+ rulerMarks: '80,60,40,20,0',
58
+ units: 'Système d\'unités',
59
+ metric: 'Métrique',
60
+ imperial: 'Impérial',
61
+ unitMillimeter: 'mm',
62
+ unitInch: 'in',
63
+ unitMinute: 'min',
64
+ inkSample: 'Échantillon d\'encre',
65
+ ransomNote: 'Encre suspecte de la lettre de rançon',
66
+ bluePen: 'Stylo à bille bleu saisi',
67
+ blackPen: 'Stylo à bille noir saisi',
68
+ gelPen: 'Stylo gel saisi',
69
+ solventSystem: 'Phase mobile',
70
+ ethanolWater: 'Éthanol / eau',
71
+ butanolAcetic: 'Butanol / acide acétique',
72
+ isopropanolAmmonia: 'Isopropanol / ammoniaque',
73
+ developmentTime: 'Temps de développement',
74
+ frontDistance: 'Parcours du solvant',
75
+ matchScore: 'Similitude du profil',
76
+ solventFront: 'Front de solvant',
77
+ originLine: 'Ligne de dépôt',
78
+ pigment: 'Bande de pigment',
79
+ pigmentCyanDye: 'colorant cyan',
80
+ pigmentVioletDye: 'colorant violet',
81
+ pigmentGrayCarrier: 'support gris',
82
+ pigmentNavyDye: 'colorant bleu marine',
83
+ pigmentYellowDye: 'colorant jaune',
84
+ pigmentRedDye: 'colorant rouge',
85
+ pigmentBlueDye: 'colorant bleu',
86
+ pigmentDarkBinder: 'liant sombre',
87
+ pigmentTealDye: 'colorant vert d\'eau',
88
+ pigmentMagentaDye: 'colorant magenta',
89
+ pigmentGelBinder: 'liant gel',
90
+ distance: 'Distance',
91
+ rfValue: 'Valeur de Rf',
92
+ disclaimer: 'Simulation éducative uniquement. La comparaison forensique d\'encres nécessite les documents originaux, des méthodes de laboratoire validées, des étalons de référence et des examinateurs de documents qualifiés.',
93
+ },
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: 'Chromatographie sur couche mince pour la comparaison forensique des encres',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'diagnostic',
102
+ variant: 'info',
103
+ icon: 'mdi:test-tube',
104
+ badge: 'Simulateur pédagogique',
105
+ title: 'Ce que ce simulateur CCM d\'encre vous aide à comprendre',
106
+ html: 'Cet outil explique comment la <strong>chromatographie sur couche mince des encres d\'écriture</strong> permet de séparer un trait d\'encre visible en plusieurs bandes de colorants. Il est conçu pour les étudiants en sciences forensiques, les apprentis examinateurs de documents et toute personne cherchant à comprendre comment les valeurs de Rf sont calculées à partir d\'une plaque CCM développée.',
107
+ },
108
+ {
109
+ type: 'stats',
110
+ columns: 4,
111
+ items: [
112
+ { value: 'Rf = d bande / d solvant', label: 'formule du rapport de front', icon: 'mdi:division' },
113
+ { value: '4', label: 'profils d\'encre comparés', icon: 'mdi:pen' },
114
+ { value: '3', label: 'phases mobiles simulées', icon: 'mdi:flask-outline' },
115
+ { value: '2', label: 'affichages métriques et impériaux', icon: 'mdi:swap-horizontal' },
116
+ ],
117
+ },
118
+ {
119
+ type: 'summary',
120
+ title: 'Checklist pour des mesures CCM correctes',
121
+ items: [
122
+ 'Tracez la ligne de dépôt au-dessus du niveau du solvant avant de lancer le développement.',
123
+ 'Retirez la plaque avant que le solvant n\'atteigne le bord supérieur.',
124
+ 'Marquez le front de solvant immédiatement, car il s\'évapore et devient vite invisible.',
125
+ 'Mesurez le parcours du pigment et celui du solvant depuis la même ligne de dépôt.',
126
+ 'Indiquez les valeurs de Rf en mentionnant le système de solvants, le type de plaque, les conditions de développement et les contrôles.',
127
+ ],
128
+ },
129
+ {
130
+ type: 'comparative',
131
+ columns: 2,
132
+ items: [
133
+ {
134
+ title: 'Ce que la CCM peut appuyer',
135
+ icon: 'mdi:check-circle-outline',
136
+ highlight: true,
137
+ description: 'La CCM peut montrer si les encres suspectes et connues présentent un comportement de séparation des colorants similaire dans les mêmes conditions.',
138
+ points: ['Comparaison de dépistage', 'Visualisation du profil des colorants', 'Documentation du Rf', 'Sélection d\'échantillons pour tests de confirmation'],
139
+ },
140
+ {
141
+ title: 'Ce que la CCM ne peut pas pouver seule',
142
+ icon: 'mdi:alert-circle-outline',
143
+ description: 'La CCM seule ne peut pas identifier de manière unique un stylo, dater un document ou prouver l\'identité de l\'auteur.',
144
+ points: ['Pas d\'attribution exclusive de source', 'Pas d\'identification du scripteur', 'Pas de conclusion d\'ancienneté par défaut', 'Ne remplace pas les protocoles validés'],
145
+ },
146
+ ],
147
+ },
148
+ {
149
+ type: 'table',
150
+ headers: ['Question courante', 'Concept CCM impliqué', 'Réponse détaillée'],
151
+ rows: [
152
+ ['Comment calcule-t-on le Rf ?', 'Distance du colorant divisée par la distance du front de solvant.', 'Mesurez les deux distances depuis la ligne de dépôt, puis divisez. Le résultat n\'a pas d\'unité.'],
153
+ ['Pourquoi les encres se séparent-elles ?', 'Différents colorants ont des affinités distinctes pour les phases stationnaire et mobile.', 'Un simple trait écrit peut contenir plusieurs colorants qui migrent à des vitesses différentes.'],
154
+ ['Deux stylos peuvent-ils avoir le même profil CCM ?', 'Oui, des formulations similaires peuvent produire des profils très proches.', 'La similitude soutient la cohérence chimique, non l\'individualisation à un seul stylo.'],
155
+ ['Pourquoi ma valeur de Rf a-t-elle changé ?', 'Le solvant, la plaque, l\'humidité, la saturation, la température et la taille du dépôt affectent la migration.', 'Les valeurs de Rf ne sont comparables que si les conditions sont contrôlées et documentées.'],
156
+ ],
157
+ },
158
+ {
159
+ type: 'title',
160
+ text: 'Comment le simulateur modélise la séparation',
161
+ level: 3,
162
+ },
163
+ {
164
+ type: 'paragraph',
165
+ html: 'Le modèle décrit le mouvement du front de solvant comme un processus d\'ascension capillaire qui ralentit avec le temps, tandis que chaque colorant se voit attribuer une valeur de Rf basée sur deux propriétés simplifiées: son affinité pour le solvant mobile et sa correspondance de polarité avec la phase mobile sélectionnée. C\'est une approche délibérément éducative plutôt que de la chimie instrumentale avancée, mais elle préserve la relation fondamentale à assimiler: le solvant migre en premier, les colorants se partagent entre les phases, et le Rf est calculé d\'après les distances parcourues.',
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: 'La chromatographie sur couche mince est une technique analytique largement acceptée dans les laboratoires de police scientifique en raison de sa simplicité, de sa rapidité et de sa rentabilité. Dans le cadre de l\'examen de documents, elle est principalement utilisée pour comparer la composition des colorants de différents échantillons d\'encre. Les experts prélèvent un minuscule échantillon d\'encre sur le document suspect à l\'aide d\'un scalpel ou d\'une aiguille creuse, le dissolvent dans un solvant approprié tel que la pyridine ou le méthanol, puis le déposent sur la plaque de CCM aux côtés d\'encres de référence.',
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: 'Une fois la plaque développée dans une chambre fermée, les composants individuels de l\'encre se séparent en fonction de leur partage de distribution différentiel entre la phase stationnaire de gel de silice et la phase mobile du solvant. Le chromatogramme obtenu fournit une empreinte visuelle de l\'encre, affichant des bandes de couleurs distinctes à des hauteurs spécifiques. Les examinateurs de documents calculent ensuite le rapport de front pour chaque bande de colorant visible, ce qui permet de déterminer si l\'encre suspecte est chimiquement cohérente avec un instrument d\'écriture saisi ou si elle correspond à une marque et une formule connues dans une base de données de référence.',
174
+ },
175
+ {
176
+ type: 'glossary',
177
+ items: [
178
+ { term: 'Phase stationnaire', definition: 'Le revêtement de la plaque CCM, généralement du gel de silice, qui interagit avec les composés et ralentit leur progression.' },
179
+ { term: 'Mobile phase', definition: 'Le système de solvants qui monte le long de la plaque en entraînant les constituants des colorants.' },
180
+ { term: 'Ligne de dépôt', definition: 'La ligne tracée au crayon sur laquelle l\'échantillon d\'encre est appliqué avant le développement.' },
181
+ { term: 'Front de solvant', definition: 'Le point le plus haut atteint par la phase mobile avant le retrait de la plaque.' },
182
+ { term: 'Valeur de Rf', definition: 'Le rapport de front (retention factor): distance de migration du composé divisée par la distance de migration du front de solvant.' },
183
+ ],
184
+ },
185
+ {
186
+ type: 'tip',
187
+ title: 'Conseil pratique d\'interprétation',
188
+ html: 'Dans l\'examen forensique de documents, une non-concordance est particulièrement utile car elle permet d\'exclure une formulation de stylo suspecte. Un profil CCM identique est moins catégorique: il indique que les échantillons sont chimiquement cohérents dans ces conditions, pas qu\'ils proviennent nécessairement du même stylo.',
189
+ },
190
+ {
191
+ type: 'proscons',
192
+ title: 'Forces et limites de la comparaison d\'encres par CCM',
193
+ items: [
194
+ { pro: 'Rapide, peu coûteuse et visuellement intuitive pour séparer les colorants d\'encre.', con: 'Généralement destructive, car un micro-échantillon doit être prélevé sur le document.' },
195
+ { pro: 'Les valeurs de Rf fournissent un cadre structuré pour comparer échantillons suspects et connus.', con: 'Les valeurs de Rf varient en fonction du solvant, de la plaque, de l\'humidité et des conditions de développement.' },
196
+ { pro: 'Utile comme méthode de dépistage avant des analyses plus avancées.', con: 'Ne permet pas de conclure de manière unique à la source du stylo sans preuves complémentaires.' },
197
+ ],
198
+ },
199
+ {
200
+ type: 'diagnostic',
201
+ variant: 'warning',
202
+ icon: 'mdi:scale-balance',
203
+ badge: 'Mise en garde forensique',
204
+ title: 'Ne pas surestimer la chromatographie des encres',
205
+ html: 'Une simulation sur navigateur ne peut pas examiner le papier, l\'âge de l\'encre, la chimie d\'extraction, la qualité de la plaque, la contamination ou les confirmations instrumentales. Utilisez-la pour assimiler la logique de mesure et les limites d\'interprétation, puis fiez-vous aux méthodes validées d\'examen forense de documents pour les preuves réelles.',
206
+ },
207
+ ],
208
+ faq,
209
+ bibliography,
210
+ howTo,
211
+ schemas: [
212
+ {
213
+ '@context': 'https://schema.org',
214
+ '@type': 'SoftwareApplication',
215
+ name: title,
216
+ description,
217
+ applicationCategory: 'ForensicApplication',
218
+ operatingSystem: 'Any',
219
+ },
220
+ {
221
+ '@context': 'https://schema.org',
222
+ '@type': 'FAQPage',
223
+ mainEntity: faq.map((item) => ({
224
+ '@type': 'Question',
225
+ name: item.question,
226
+ acceptedAnswer: {
227
+ '@type': 'Answer',
228
+ text: item.answer,
229
+ },
230
+ })),
231
+ },
232
+ {
233
+ '@context': 'https://schema.org',
234
+ '@type': 'HowTo',
235
+ name: title,
236
+ step: howTo.map((step) => ({
237
+ '@type': 'HowToStep',
238
+ name: step.name,
239
+ text: step.text,
240
+ })),
241
+ },
242
+ ],
243
+ };