@nerdev/skillset 0.2.1

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 (567) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +351 -0
  3. package/bin/skillset.mjs +205 -0
  4. package/curations/README.md +53 -0
  5. package/curations/TEMPLATE/WHY.md +23 -0
  6. package/curations/TEMPLATE/overlay/SKILL.md +6 -0
  7. package/curations/impeccable/WHY.md +34 -0
  8. package/curations/impeccable/overlay/SKILL.md +116 -0
  9. package/package.json +43 -0
  10. package/scripts/ste-gate.mjs +39 -0
  11. package/scripts/ste-lint.py +201 -0
  12. package/scripts/sync.mjs +174 -0
  13. package/skills/ai-agent/agent-docs-writer/SKILL.md +105 -0
  14. package/skills/ai-agent/agent-docs-writer/references/principles.md +73 -0
  15. package/skills/ai-agent/agent-docs-writer/templates/AGENTS.template.md +44 -0
  16. package/skills/ai-agent/agent-docs-writer/templates/README.template.md +19 -0
  17. package/skills/ai-agent/ultra-context-engine/SKILL.md +941 -0
  18. package/skills/architecture/blueprint/SKILL.md +191 -0
  19. package/skills/architecture/code-tour/SKILL.md +204 -0
  20. package/skills/architecture/progress-guard/SKILL.md +148 -0
  21. package/skills/architecture/search-first/SKILL.md +97 -0
  22. package/skills/backend/api-design/SKILL.md +456 -0
  23. package/skills/backend/auth/SKILL.md +596 -0
  24. package/skills/backend/database/SKILL.md +431 -0
  25. package/skills/backend/realtime/SKILL.md +670 -0
  26. package/skills/backend/security/SKILL.md +590 -0
  27. package/skills/business/brag/SKILL.md +177 -0
  28. package/skills/business/brag/assets/music/README.md +20 -0
  29. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.json +3846 -0
  30. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.md +35 -0
  31. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.json +1826 -0
  32. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.md +35 -0
  33. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.json +2266 -0
  34. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.md +35 -0
  35. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.json +2806 -0
  36. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.md +35 -0
  37. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.json +2796 -0
  38. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.md +35 -0
  39. package/skills/business/brag/assets/music/happy-beats-business-moves-vol-1-by-ende-dot-app.mp3 +0 -0
  40. package/skills/business/brag/assets/music/happy-beats-business-moves-vol-10-by-ende-dot-app.mp3 +0 -0
  41. package/skills/business/brag/assets/music/happy-beats-business-moves-vol-11-by-ende-dot-app.mp3 +0 -0
  42. package/skills/business/brag/assets/music/happy-beats-business-moves-vol-12-by-ende-dot-app.mp3 +0 -0
  43. package/skills/business/brag/assets/music/happy-beats-business-moves-vol-9-by-ende-dot-app.mp3 +0 -0
  44. package/skills/business/brag/assets/sfx/casino/card-fan-1.ogg +0 -0
  45. package/skills/business/brag/assets/sfx/casino/card-fan-2.ogg +0 -0
  46. package/skills/business/brag/assets/sfx/casino/card-place-1.ogg +0 -0
  47. package/skills/business/brag/assets/sfx/casino/card-place-2.ogg +0 -0
  48. package/skills/business/brag/assets/sfx/casino/card-place-3.ogg +0 -0
  49. package/skills/business/brag/assets/sfx/casino/card-place-4.ogg +0 -0
  50. package/skills/business/brag/assets/sfx/casino/card-shove-1.ogg +0 -0
  51. package/skills/business/brag/assets/sfx/casino/card-shove-2.ogg +0 -0
  52. package/skills/business/brag/assets/sfx/casino/card-shove-3.ogg +0 -0
  53. package/skills/business/brag/assets/sfx/casino/card-shove-4.ogg +0 -0
  54. package/skills/business/brag/assets/sfx/casino/card-shuffle.ogg +0 -0
  55. package/skills/business/brag/assets/sfx/casino/card-slide-1.ogg +0 -0
  56. package/skills/business/brag/assets/sfx/casino/card-slide-2.ogg +0 -0
  57. package/skills/business/brag/assets/sfx/casino/card-slide-3.ogg +0 -0
  58. package/skills/business/brag/assets/sfx/casino/card-slide-4.ogg +0 -0
  59. package/skills/business/brag/assets/sfx/casino/card-slide-5.ogg +0 -0
  60. package/skills/business/brag/assets/sfx/casino/card-slide-6.ogg +0 -0
  61. package/skills/business/brag/assets/sfx/casino/card-slide-7.ogg +0 -0
  62. package/skills/business/brag/assets/sfx/casino/card-slide-8.ogg +0 -0
  63. package/skills/business/brag/assets/sfx/casino/cards-pack-open-1.ogg +0 -0
  64. package/skills/business/brag/assets/sfx/casino/cards-pack-open-2.ogg +0 -0
  65. package/skills/business/brag/assets/sfx/casino/chip-lay-1.ogg +0 -0
  66. package/skills/business/brag/assets/sfx/casino/chip-lay-2.ogg +0 -0
  67. package/skills/business/brag/assets/sfx/casino/chip-lay-3.ogg +0 -0
  68. package/skills/business/brag/assets/sfx/casino/chips-collide-1.ogg +0 -0
  69. package/skills/business/brag/assets/sfx/casino/chips-collide-2.ogg +0 -0
  70. package/skills/business/brag/assets/sfx/casino/chips-collide-3.ogg +0 -0
  71. package/skills/business/brag/assets/sfx/casino/chips-collide-4.ogg +0 -0
  72. package/skills/business/brag/assets/sfx/casino/chips-handle-1.ogg +0 -0
  73. package/skills/business/brag/assets/sfx/casino/chips-handle-2.ogg +0 -0
  74. package/skills/business/brag/assets/sfx/casino/chips-handle-3.ogg +0 -0
  75. package/skills/business/brag/assets/sfx/casino/chips-handle-4.ogg +0 -0
  76. package/skills/business/brag/assets/sfx/casino/chips-handle-6.ogg +0 -0
  77. package/skills/business/brag/assets/sfx/casino/chips-stack-1.ogg +0 -0
  78. package/skills/business/brag/assets/sfx/casino/chips-stack-2.ogg +0 -0
  79. package/skills/business/brag/assets/sfx/casino/chips-stack-3.ogg +0 -0
  80. package/skills/business/brag/assets/sfx/casino/chips-stack-4.ogg +0 -0
  81. package/skills/business/brag/assets/sfx/casino/chips-stack-5.ogg +0 -0
  82. package/skills/business/brag/assets/sfx/casino/chips-stack-6.ogg +0 -0
  83. package/skills/business/brag/assets/sfx/casino/dice-grab-1.ogg +0 -0
  84. package/skills/business/brag/assets/sfx/casino/dice-grab-2.ogg +0 -0
  85. package/skills/business/brag/assets/sfx/casino/dice-shake-1.ogg +0 -0
  86. package/skills/business/brag/assets/sfx/casino/dice-shake-2.ogg +0 -0
  87. package/skills/business/brag/assets/sfx/casino/dice-shake-3.ogg +0 -0
  88. package/skills/business/brag/assets/sfx/casino/dice-throw-1.ogg +0 -0
  89. package/skills/business/brag/assets/sfx/casino/dice-throw-2.ogg +0 -0
  90. package/skills/business/brag/assets/sfx/casino/dice-throw-3.ogg +0 -0
  91. package/skills/business/brag/assets/sfx/casino/die-throw-1.ogg +0 -0
  92. package/skills/business/brag/assets/sfx/casino/die-throw-2.ogg +0 -0
  93. package/skills/business/brag/assets/sfx/casino/die-throw-3.ogg +0 -0
  94. package/skills/business/brag/assets/sfx/casino/die-throw-4.ogg +0 -0
  95. package/skills/business/brag/assets/sfx/impact/footstep_carpet_000.ogg +0 -0
  96. package/skills/business/brag/assets/sfx/impact/footstep_carpet_003.ogg +0 -0
  97. package/skills/business/brag/assets/sfx/impact/footstep_carpet_004.ogg +0 -0
  98. package/skills/business/brag/assets/sfx/impact/footstep_concrete_000.ogg +0 -0
  99. package/skills/business/brag/assets/sfx/impact/footstep_concrete_001.ogg +0 -0
  100. package/skills/business/brag/assets/sfx/impact/footstep_concrete_002.ogg +0 -0
  101. package/skills/business/brag/assets/sfx/impact/footstep_concrete_003.ogg +0 -0
  102. package/skills/business/brag/assets/sfx/impact/footstep_concrete_004.ogg +0 -0
  103. package/skills/business/brag/assets/sfx/impact/footstep_grass_000.ogg +0 -0
  104. package/skills/business/brag/assets/sfx/impact/footstep_grass_001.ogg +0 -0
  105. package/skills/business/brag/assets/sfx/impact/footstep_grass_002.ogg +0 -0
  106. package/skills/business/brag/assets/sfx/impact/footstep_grass_003.ogg +0 -0
  107. package/skills/business/brag/assets/sfx/impact/footstep_grass_004.ogg +0 -0
  108. package/skills/business/brag/assets/sfx/impact/footstep_snow_000.ogg +0 -0
  109. package/skills/business/brag/assets/sfx/impact/footstep_snow_001.ogg +0 -0
  110. package/skills/business/brag/assets/sfx/impact/footstep_snow_002.ogg +0 -0
  111. package/skills/business/brag/assets/sfx/impact/footstep_snow_003.ogg +0 -0
  112. package/skills/business/brag/assets/sfx/impact/footstep_snow_004.ogg +0 -0
  113. package/skills/business/brag/assets/sfx/impact/footstep_wood_000.ogg +0 -0
  114. package/skills/business/brag/assets/sfx/impact/footstep_wood_001.ogg +0 -0
  115. package/skills/business/brag/assets/sfx/impact/footstep_wood_002.ogg +0 -0
  116. package/skills/business/brag/assets/sfx/impact/footstep_wood_003.ogg +0 -0
  117. package/skills/business/brag/assets/sfx/impact/footstep_wood_004.ogg +0 -0
  118. package/skills/business/brag/assets/sfx/impact/impactBell_heavy_000.ogg +0 -0
  119. package/skills/business/brag/assets/sfx/impact/impactBell_heavy_003.ogg +0 -0
  120. package/skills/business/brag/assets/sfx/impact/impactBell_heavy_004.ogg +0 -0
  121. package/skills/business/brag/assets/sfx/impact/impactGeneric_light_000.ogg +0 -0
  122. package/skills/business/brag/assets/sfx/impact/impactGeneric_light_001.ogg +0 -0
  123. package/skills/business/brag/assets/sfx/impact/impactGeneric_light_002.ogg +0 -0
  124. package/skills/business/brag/assets/sfx/impact/impactGeneric_light_003.ogg +0 -0
  125. package/skills/business/brag/assets/sfx/impact/impactGeneric_light_004.ogg +0 -0
  126. package/skills/business/brag/assets/sfx/impact/impactGlass_heavy_002.ogg +0 -0
  127. package/skills/business/brag/assets/sfx/impact/impactGlass_light_001.ogg +0 -0
  128. package/skills/business/brag/assets/sfx/impact/impactGlass_light_002.ogg +0 -0
  129. package/skills/business/brag/assets/sfx/impact/impactGlass_light_003.ogg +0 -0
  130. package/skills/business/brag/assets/sfx/impact/impactGlass_medium_000.ogg +0 -0
  131. package/skills/business/brag/assets/sfx/impact/impactGlass_medium_002.ogg +0 -0
  132. package/skills/business/brag/assets/sfx/impact/impactGlass_medium_004.ogg +0 -0
  133. package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_000.ogg +0 -0
  134. package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_002.ogg +0 -0
  135. package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_004.ogg +0 -0
  136. package/skills/business/brag/assets/sfx/impact/impactMetal_light_002.ogg +0 -0
  137. package/skills/business/brag/assets/sfx/impact/impactMetal_light_003.ogg +0 -0
  138. package/skills/business/brag/assets/sfx/impact/impactMetal_medium_000.ogg +0 -0
  139. package/skills/business/brag/assets/sfx/impact/impactMetal_medium_001.ogg +0 -0
  140. package/skills/business/brag/assets/sfx/impact/impactMetal_medium_002.ogg +0 -0
  141. package/skills/business/brag/assets/sfx/impact/impactMetal_medium_003.ogg +0 -0
  142. package/skills/business/brag/assets/sfx/impact/impactMetal_medium_004.ogg +0 -0
  143. package/skills/business/brag/assets/sfx/impact/impactMining_001.ogg +0 -0
  144. package/skills/business/brag/assets/sfx/impact/impactPlank_medium_000.ogg +0 -0
  145. package/skills/business/brag/assets/sfx/impact/impactPlank_medium_001.ogg +0 -0
  146. package/skills/business/brag/assets/sfx/impact/impactPlank_medium_002.ogg +0 -0
  147. package/skills/business/brag/assets/sfx/impact/impactPlank_medium_003.ogg +0 -0
  148. package/skills/business/brag/assets/sfx/impact/impactPlank_medium_004.ogg +0 -0
  149. package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_000.ogg +0 -0
  150. package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_001.ogg +0 -0
  151. package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_002.ogg +0 -0
  152. package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_003.ogg +0 -0
  153. package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_004.ogg +0 -0
  154. package/skills/business/brag/assets/sfx/impact/impactPlate_light_000.ogg +0 -0
  155. package/skills/business/brag/assets/sfx/impact/impactPlate_light_001.ogg +0 -0
  156. package/skills/business/brag/assets/sfx/impact/impactPlate_light_002.ogg +0 -0
  157. package/skills/business/brag/assets/sfx/impact/impactPlate_light_003.ogg +0 -0
  158. package/skills/business/brag/assets/sfx/impact/impactPlate_light_004.ogg +0 -0
  159. package/skills/business/brag/assets/sfx/impact/impactPlate_medium_000.ogg +0 -0
  160. package/skills/business/brag/assets/sfx/impact/impactPlate_medium_001.ogg +0 -0
  161. package/skills/business/brag/assets/sfx/impact/impactPlate_medium_002.ogg +0 -0
  162. package/skills/business/brag/assets/sfx/impact/impactPlate_medium_003.ogg +0 -0
  163. package/skills/business/brag/assets/sfx/impact/impactPlate_medium_004.ogg +0 -0
  164. package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_000.ogg +0 -0
  165. package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_001.ogg +0 -0
  166. package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_002.ogg +0 -0
  167. package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_003.ogg +0 -0
  168. package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_004.ogg +0 -0
  169. package/skills/business/brag/assets/sfx/impact/impactPunch_medium_000.ogg +0 -0
  170. package/skills/business/brag/assets/sfx/impact/impactPunch_medium_001.ogg +0 -0
  171. package/skills/business/brag/assets/sfx/impact/impactPunch_medium_002.ogg +0 -0
  172. package/skills/business/brag/assets/sfx/impact/impactPunch_medium_003.ogg +0 -0
  173. package/skills/business/brag/assets/sfx/impact/impactPunch_medium_004.ogg +0 -0
  174. package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_000.ogg +0 -0
  175. package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_001.ogg +0 -0
  176. package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_002.ogg +0 -0
  177. package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_003.ogg +0 -0
  178. package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_004.ogg +0 -0
  179. package/skills/business/brag/assets/sfx/impact/impactSoft_medium_000.ogg +0 -0
  180. package/skills/business/brag/assets/sfx/impact/impactSoft_medium_001.ogg +0 -0
  181. package/skills/business/brag/assets/sfx/impact/impactSoft_medium_002.ogg +0 -0
  182. package/skills/business/brag/assets/sfx/impact/impactSoft_medium_003.ogg +0 -0
  183. package/skills/business/brag/assets/sfx/impact/impactSoft_medium_004.ogg +0 -0
  184. package/skills/business/brag/assets/sfx/impact/impactTin_medium_000.ogg +0 -0
  185. package/skills/business/brag/assets/sfx/impact/impactTin_medium_001.ogg +0 -0
  186. package/skills/business/brag/assets/sfx/impact/impactTin_medium_002.ogg +0 -0
  187. package/skills/business/brag/assets/sfx/impact/impactTin_medium_003.ogg +0 -0
  188. package/skills/business/brag/assets/sfx/impact/impactTin_medium_004.ogg +0 -0
  189. package/skills/business/brag/assets/sfx/impact/impactWood_heavy_000.ogg +0 -0
  190. package/skills/business/brag/assets/sfx/impact/impactWood_heavy_001.ogg +0 -0
  191. package/skills/business/brag/assets/sfx/impact/impactWood_heavy_002.ogg +0 -0
  192. package/skills/business/brag/assets/sfx/impact/impactWood_heavy_003.ogg +0 -0
  193. package/skills/business/brag/assets/sfx/impact/impactWood_heavy_004.ogg +0 -0
  194. package/skills/business/brag/assets/sfx/impact/impactWood_light_000.ogg +0 -0
  195. package/skills/business/brag/assets/sfx/impact/impactWood_light_001.ogg +0 -0
  196. package/skills/business/brag/assets/sfx/impact/impactWood_light_002.ogg +0 -0
  197. package/skills/business/brag/assets/sfx/impact/impactWood_light_003.ogg +0 -0
  198. package/skills/business/brag/assets/sfx/impact/impactWood_light_004.ogg +0 -0
  199. package/skills/business/brag/assets/sfx/impact/impactWood_medium_000.ogg +0 -0
  200. package/skills/business/brag/assets/sfx/impact/impactWood_medium_001.ogg +0 -0
  201. package/skills/business/brag/assets/sfx/impact/impactWood_medium_002.ogg +0 -0
  202. package/skills/business/brag/assets/sfx/impact/impactWood_medium_003.ogg +0 -0
  203. package/skills/business/brag/assets/sfx/impact/impactWood_medium_004.ogg +0 -0
  204. package/skills/business/brag/assets/sfx/interface/bong_001.ogg +0 -0
  205. package/skills/business/brag/assets/sfx/interface/click_001.ogg +0 -0
  206. package/skills/business/brag/assets/sfx/interface/click_002.ogg +0 -0
  207. package/skills/business/brag/assets/sfx/interface/click_003.ogg +0 -0
  208. package/skills/business/brag/assets/sfx/interface/click_004.ogg +0 -0
  209. package/skills/business/brag/assets/sfx/interface/click_005.ogg +0 -0
  210. package/skills/business/brag/assets/sfx/interface/drop_001.ogg +0 -0
  211. package/skills/business/brag/assets/sfx/interface/drop_002.ogg +0 -0
  212. package/skills/business/brag/assets/sfx/interface/drop_003.ogg +0 -0
  213. package/skills/business/brag/assets/sfx/interface/error_005.ogg +0 -0
  214. package/skills/business/brag/assets/sfx/interface/error_006.ogg +0 -0
  215. package/skills/business/brag/assets/sfx/interface/glitch_002.ogg +0 -0
  216. package/skills/business/brag/assets/sfx/interface/glitch_004.ogg +0 -0
  217. package/skills/business/brag/assets/sfx/interface/select_008.ogg +0 -0
  218. package/skills/business/brag/assets/sfx/interface/switch_001.ogg +0 -0
  219. package/skills/business/brag/assets/sfx/interface/switch_002.ogg +0 -0
  220. package/skills/business/brag/assets/sfx/interface/switch_004.ogg +0 -0
  221. package/skills/business/brag/assets/sfx/interface/switch_005.ogg +0 -0
  222. package/skills/business/brag/assets/sfx/interface/switch_006.ogg +0 -0
  223. package/skills/business/brag/assets/sfx/interface/switch_007.ogg +0 -0
  224. package/skills/business/brag/assets/sfx/keyboard/keypress-001.wav +0 -0
  225. package/skills/business/brag/assets/sfx/keyboard/keypress-002.wav +0 -0
  226. package/skills/business/brag/assets/sfx/keyboard/keypress-003.wav +0 -0
  227. package/skills/business/brag/assets/sfx/keyboard/keypress-004.wav +0 -0
  228. package/skills/business/brag/assets/sfx/keyboard/keypress-005.wav +0 -0
  229. package/skills/business/brag/assets/sfx/keyboard/keypress-006.wav +0 -0
  230. package/skills/business/brag/assets/sfx/keyboard/keypress-007.wav +0 -0
  231. package/skills/business/brag/assets/sfx/keyboard/keypress-008.wav +0 -0
  232. package/skills/business/brag/assets/sfx/keyboard/keypress-009.wav +0 -0
  233. package/skills/business/brag/assets/sfx/keyboard/keypress-010.wav +0 -0
  234. package/skills/business/brag/assets/sfx/keyboard/keypress-011.wav +0 -0
  235. package/skills/business/brag/assets/sfx/keyboard/keypress-012.wav +0 -0
  236. package/skills/business/brag/assets/sfx/keyboard/keypress-013.wav +0 -0
  237. package/skills/business/brag/assets/sfx/keyboard/keypress-014.wav +0 -0
  238. package/skills/business/brag/assets/sfx/keyboard/keypress-015.wav +0 -0
  239. package/skills/business/brag/assets/sfx/keyboard/keypress-016.wav +0 -0
  240. package/skills/business/brag/assets/sfx/keyboard/keypress-017.wav +0 -0
  241. package/skills/business/brag/assets/sfx/keyboard/keypress-018.wav +0 -0
  242. package/skills/business/brag/assets/sfx/keyboard/keypress-019.wav +0 -0
  243. package/skills/business/brag/assets/sfx/keyboard/keypress-020.wav +0 -0
  244. package/skills/business/brag/assets/sfx/keyboard/keypress-021.wav +0 -0
  245. package/skills/business/brag/assets/sfx/keyboard/keypress-022.wav +0 -0
  246. package/skills/business/brag/assets/sfx/keyboard/keypress-023.wav +0 -0
  247. package/skills/business/brag/assets/sfx/keyboard/keypress-024.wav +0 -0
  248. package/skills/business/brag/assets/sfx/keyboard/keypress-025.wav +0 -0
  249. package/skills/business/brag/assets/sfx/keyboard/keypress-026.wav +0 -0
  250. package/skills/business/brag/assets/sfx/keyboard/keypress-027.wav +0 -0
  251. package/skills/business/brag/assets/sfx/keyboard/keypress-028.wav +0 -0
  252. package/skills/business/brag/assets/sfx/keyboard/keypress-029.wav +0 -0
  253. package/skills/business/brag/assets/sfx/keyboard/keypress-030.wav +0 -0
  254. package/skills/business/brag/assets/sfx/keyboard/keypress-031.wav +0 -0
  255. package/skills/business/brag/assets/sfx/keyboard/keypress-032.wav +0 -0
  256. package/skills/business/brag/assets/sfx/sfx-analysis.json +15584 -0
  257. package/skills/business/brag/assets/sfx/sfx-analysis.md +75 -0
  258. package/skills/business/brag/assets/sfx/ui/click1.ogg +0 -0
  259. package/skills/business/brag/assets/sfx/ui/click2.ogg +0 -0
  260. package/skills/business/brag/assets/sfx/ui/click3.ogg +0 -0
  261. package/skills/business/brag/assets/sfx/ui/click4.ogg +0 -0
  262. package/skills/business/brag/assets/sfx/ui/click5.ogg +0 -0
  263. package/skills/business/brag/assets/sfx/ui/mouseclick1.ogg +0 -0
  264. package/skills/business/brag/assets/sfx/ui/rollover1.ogg +0 -0
  265. package/skills/business/brag/assets/sfx/ui/rollover2.ogg +0 -0
  266. package/skills/business/brag/assets/sfx/ui/rollover4.ogg +0 -0
  267. package/skills/business/brag/assets/sfx/ui/rollover5.ogg +0 -0
  268. package/skills/business/brag/assets/sfx/ui/switch1.ogg +0 -0
  269. package/skills/business/brag/assets/sfx/ui/switch10.ogg +0 -0
  270. package/skills/business/brag/assets/sfx/ui/switch11.ogg +0 -0
  271. package/skills/business/brag/assets/sfx/ui/switch12.ogg +0 -0
  272. package/skills/business/brag/assets/sfx/ui/switch13.ogg +0 -0
  273. package/skills/business/brag/assets/sfx/ui/switch14.ogg +0 -0
  274. package/skills/business/brag/assets/sfx/ui/switch15.ogg +0 -0
  275. package/skills/business/brag/assets/sfx/ui/switch16.ogg +0 -0
  276. package/skills/business/brag/assets/sfx/ui/switch17.ogg +0 -0
  277. package/skills/business/brag/assets/sfx/ui/switch18.ogg +0 -0
  278. package/skills/business/brag/assets/sfx/ui/switch19.ogg +0 -0
  279. package/skills/business/brag/assets/sfx/ui/switch2.ogg +0 -0
  280. package/skills/business/brag/assets/sfx/ui/switch20.ogg +0 -0
  281. package/skills/business/brag/assets/sfx/ui/switch21.ogg +0 -0
  282. package/skills/business/brag/assets/sfx/ui/switch22.ogg +0 -0
  283. package/skills/business/brag/assets/sfx/ui/switch23.ogg +0 -0
  284. package/skills/business/brag/assets/sfx/ui/switch24.ogg +0 -0
  285. package/skills/business/brag/assets/sfx/ui/switch25.ogg +0 -0
  286. package/skills/business/brag/assets/sfx/ui/switch26.ogg +0 -0
  287. package/skills/business/brag/assets/sfx/ui/switch27.ogg +0 -0
  288. package/skills/business/brag/assets/sfx/ui/switch28.ogg +0 -0
  289. package/skills/business/brag/assets/sfx/ui/switch29.ogg +0 -0
  290. package/skills/business/brag/assets/sfx/ui/switch3.ogg +0 -0
  291. package/skills/business/brag/assets/sfx/ui/switch30.ogg +0 -0
  292. package/skills/business/brag/assets/sfx/ui/switch31.ogg +0 -0
  293. package/skills/business/brag/assets/sfx/ui/switch32.ogg +0 -0
  294. package/skills/business/brag/assets/sfx/ui/switch33.ogg +0 -0
  295. package/skills/business/brag/assets/sfx/ui/switch34.ogg +0 -0
  296. package/skills/business/brag/assets/sfx/ui/switch35.ogg +0 -0
  297. package/skills/business/brag/assets/sfx/ui/switch36.ogg +0 -0
  298. package/skills/business/brag/assets/sfx/ui/switch37.ogg +0 -0
  299. package/skills/business/brag/assets/sfx/ui/switch38.ogg +0 -0
  300. package/skills/business/brag/assets/sfx/ui/switch4.ogg +0 -0
  301. package/skills/business/brag/assets/sfx/ui/switch5.ogg +0 -0
  302. package/skills/business/brag/assets/sfx/ui/switch6.ogg +0 -0
  303. package/skills/business/brag/assets/sfx/ui/switch7.ogg +0 -0
  304. package/skills/business/brag/assets/sfx/ui/switch8.ogg +0 -0
  305. package/skills/business/brag/assets/sfx/ui/switch9.ogg +0 -0
  306. package/skills/business/brag/references/audio.md +307 -0
  307. package/skills/business/brag/references/step-1-inspect.md +133 -0
  308. package/skills/business/brag/references/step-2-plan.md +234 -0
  309. package/skills/business/brag/references/step-3-compose.md +210 -0
  310. package/skills/business/brag/references/step-4-deliver.md +168 -0
  311. package/skills/business/brag/references/tones.md +231 -0
  312. package/skills/business/brag/scripts/analyze_music_cues.py +309 -0
  313. package/skills/business/brag/scripts/pyproject.toml +14 -0
  314. package/skills/business/brag/scripts/uv.lock +819 -0
  315. package/skills/business/copywriting/SKILL.md +178 -0
  316. package/skills/business/customer-research/SKILL.md +259 -0
  317. package/skills/business/freelancing/SKILL.md +679 -0
  318. package/skills/business/launch/SKILL.md +273 -0
  319. package/skills/business/marketing-psychology/SKILL.md +364 -0
  320. package/skills/business/pricing/SKILL.md +233 -0
  321. package/skills/business/resume-revamp-jake-ats/SKILL.md +64 -0
  322. package/skills/business/startup-founder/SKILL.md +400 -0
  323. package/skills/business/startup-founder/references/funding.md +48 -0
  324. package/skills/business/startup-founder/references/further-reading.md +132 -0
  325. package/skills/business/startup-founder/references/gtm-tools.md +57 -0
  326. package/skills/business/startup-founder/references/legal-india.md +36 -0
  327. package/skills/business/startup-founder/references/marketing/README.md +16 -0
  328. package/skills/business/startup-founder/references/marketing/cold-email.md +172 -0
  329. package/skills/business/startup-founder/references/marketing/competitors.md +245 -0
  330. package/skills/business/startup-founder/references/marketing/customer-research.md +276 -0
  331. package/skills/business/startup-founder/references/marketing/free-tools.md +168 -0
  332. package/skills/business/startup-founder/references/marketing/launch.md +343 -0
  333. package/skills/business/startup-founder/references/marketing/marketing-plan.md +270 -0
  334. package/skills/business/startup-founder/references/marketing/pricing.md +237 -0
  335. package/skills/business/startup-founder/references/marketing/product-marketing.md +250 -0
  336. package/skills/business/startup-founder/references/validation.md +267 -0
  337. package/skills/devops/deployments/SKILL.md +339 -0
  338. package/skills/devops/git-ci/SKILL.md +372 -0
  339. package/skills/devops/performance/SKILL.md +523 -0
  340. package/skills/devops/testing/SKILL.md +558 -0
  341. package/skills/engineering/code-review/SKILL.md +149 -0
  342. package/skills/engineering/coding-standards/SKILL.md +229 -0
  343. package/skills/engineering/product-engineering/SKILL.md +219 -0
  344. package/skills/engineering/senior-engineer-prompts/SKILL.md +145 -0
  345. package/skills/engineering/tdd-workflow/SKILL.md +178 -0
  346. package/skills/engineering/verification-loop/SKILL.md +199 -0
  347. package/skills/nerdev/nerdev-abstraction/SKILL.md +412 -0
  348. package/skills/nerdev/nerdev-docs/SKILL.md +527 -0
  349. package/skills/nerdev/nerdev-docs/templates/adr-template.md +39 -0
  350. package/skills/nerdev/nerdev-docs/templates/contributing-template.md +140 -0
  351. package/skills/nerdev/nerdev-docs/templates/deploy-template.md +426 -0
  352. package/skills/nerdev/nerdev-docs/templates/design-template.md +105 -0
  353. package/skills/nerdev/nerdev-docs/templates/incident-template.md +66 -0
  354. package/skills/nerdev/nerdev-monorepo/SKILL.md +522 -0
  355. package/skills/quality/output-skill/SKILL.md +49 -0
  356. package/skills/quality/unslop/SKILL.md +67 -0
  357. package/skills/ui/animaxxing/SKILL.md +58 -0
  358. package/skills/ui/animaxxing/agents/openai.yaml +7 -0
  359. package/skills/ui/animaxxing/references/effect-restoration.md +26 -0
  360. package/skills/ui/animaxxing/references/motion-vocabulary.md +142 -0
  361. package/skills/ui/animaxxing/references/recipes/blast-off.md +119 -0
  362. package/skills/ui/animaxxing/references/recipes/particle-effects.md +718 -0
  363. package/skills/ui/animaxxing/references/recipes/particle-field.md +428 -0
  364. package/skills/ui/animaxxing/references/recipes/route-letters.md +205 -0
  365. package/skills/ui/animaxxing/references/recipes/speak-in.md +181 -0
  366. package/skills/ui/animaxxing/references/recipes/split-entrances.md +345 -0
  367. package/skills/ui/animaxxing/references/recipes/wave.md +144 -0
  368. package/skills/ui/animaxxing/references/text-stability.md +68 -0
  369. package/skills/ui/animaxxing/references/verification.md +44 -0
  370. package/skills/ui/ask-animation/SKILL.md +178 -0
  371. package/skills/ui/ask-base-ui/SKILL.md +400 -0
  372. package/skills/ui/ask-cmdk/SKILL.md +315 -0
  373. package/skills/ui/ask-command-menu/SKILL.md +262 -0
  374. package/skills/ui/ask-drawer/SKILL.md +235 -0
  375. package/skills/ui/ask-form/SKILL.md +229 -0
  376. package/skills/ui/ask-gsap/SKILL.md +435 -0
  377. package/skills/ui/ask-modal/SKILL.md +145 -0
  378. package/skills/ui/ask-motion/SKILL.md +339 -0
  379. package/skills/ui/ask-rhf/SKILL.md +388 -0
  380. package/skills/ui/ask-sonner/API.md +64 -0
  381. package/skills/ui/ask-sonner/SKILL.md +88 -0
  382. package/skills/ui/ask-table/SKILL.md +253 -0
  383. package/skills/ui/ask-tanstack-table/SKILL.md +490 -0
  384. package/skills/ui/ask-toast/SKILL.md +163 -0
  385. package/skills/ui/ask-vaul/SKILL.md +291 -0
  386. package/skills/ui/ask-virtual-list/SKILL.md +304 -0
  387. package/skills/ui/ask-virtuoso/SKILL.md +332 -0
  388. package/skills/ui/email-craft/SKILL.md +258 -0
  389. package/skills/ui/frontend-craftsmanship/SKILL.md +462 -0
  390. package/skills/ui/gsap-astro/SKILL.md +56 -0
  391. package/skills/ui/gsap-astro/agents/openai.yaml +7 -0
  392. package/skills/ui/gsap-astro/references/client-router-navigation.md +139 -0
  393. package/skills/ui/gsap-astro/references/initialization.md +87 -0
  394. package/skills/ui/gsap-astro/references/motion-system.md +152 -0
  395. package/skills/ui/gsap-astro/references/scripts-and-islands.md +65 -0
  396. package/skills/ui/gsap-astro/references/verification.md +44 -0
  397. package/skills/ui/gsap-core/SKILL.md +254 -0
  398. package/skills/ui/gsap-frameworks/SKILL.md +266 -0
  399. package/skills/ui/gsap-nextjs/SKILL.md +51 -0
  400. package/skills/ui/gsap-nextjs/agents/openai.yaml +7 -0
  401. package/skills/ui/gsap-nextjs/references/app-router-navigation.md +189 -0
  402. package/skills/ui/gsap-nextjs/references/initialization.md +87 -0
  403. package/skills/ui/gsap-nextjs/references/motion-system.md +158 -0
  404. package/skills/ui/gsap-nextjs/references/verification.md +40 -0
  405. package/skills/ui/gsap-nuxt/SKILL.md +56 -0
  406. package/skills/ui/gsap-nuxt/agents/openai.yaml +7 -0
  407. package/skills/ui/gsap-nuxt/references/initialization.md +87 -0
  408. package/skills/ui/gsap-nuxt/references/motion-system.md +161 -0
  409. package/skills/ui/gsap-nuxt/references/navigation.md +145 -0
  410. package/skills/ui/gsap-nuxt/references/page-transitions.md +107 -0
  411. package/skills/ui/gsap-nuxt/references/verification.md +42 -0
  412. package/skills/ui/gsap-performance/SKILL.md +79 -0
  413. package/skills/ui/gsap-plugins/SKILL.md +433 -0
  414. package/skills/ui/gsap-react/SKILL.md +136 -0
  415. package/skills/ui/gsap-react-router/SKILL.md +55 -0
  416. package/skills/ui/gsap-react-router/agents/openai.yaml +7 -0
  417. package/skills/ui/gsap-react-router/references/initialization.md +87 -0
  418. package/skills/ui/gsap-react-router/references/motion-system.md +158 -0
  419. package/skills/ui/gsap-react-router/references/react-router-navigation.md +165 -0
  420. package/skills/ui/gsap-react-router/references/route-lifetime.md +74 -0
  421. package/skills/ui/gsap-react-router/references/verification.md +42 -0
  422. package/skills/ui/gsap-scrolltrigger/SKILL.md +296 -0
  423. package/skills/ui/gsap-sveltekit/SKILL.md +54 -0
  424. package/skills/ui/gsap-sveltekit/agents/openai.yaml +7 -0
  425. package/skills/ui/gsap-sveltekit/references/initialization.md +87 -0
  426. package/skills/ui/gsap-sveltekit/references/motion-system.md +156 -0
  427. package/skills/ui/gsap-sveltekit/references/page-lifetime.md +63 -0
  428. package/skills/ui/gsap-sveltekit/references/sveltekit-navigation.md +160 -0
  429. package/skills/ui/gsap-sveltekit/references/verification.md +41 -0
  430. package/skills/ui/gsap-tanstack-router/SKILL.md +56 -0
  431. package/skills/ui/gsap-tanstack-router/agents/openai.yaml +7 -0
  432. package/skills/ui/gsap-tanstack-router/references/initialization.md +87 -0
  433. package/skills/ui/gsap-tanstack-router/references/motion-system.md +160 -0
  434. package/skills/ui/gsap-tanstack-router/references/route-lifetime.md +66 -0
  435. package/skills/ui/gsap-tanstack-router/references/tanstack-navigation.md +156 -0
  436. package/skills/ui/gsap-tanstack-router/references/verification.md +41 -0
  437. package/skills/ui/gsap-timeline/SKILL.md +107 -0
  438. package/skills/ui/gsap-utils/SKILL.md +284 -0
  439. package/skills/ui/gsap-vanilla/SKILL.md +63 -0
  440. package/skills/ui/gsap-vanilla/agents/openai.yaml +7 -0
  441. package/skills/ui/gsap-vanilla/references/cross-document-navigation.md +54 -0
  442. package/skills/ui/gsap-vanilla/references/initialization.md +87 -0
  443. package/skills/ui/gsap-vanilla/references/motion-system.md +150 -0
  444. package/skills/ui/gsap-vanilla/references/page-load.md +96 -0
  445. package/skills/ui/gsap-vanilla/references/spa-navigation.md +70 -0
  446. package/skills/ui/gsap-vanilla/references/verification.md +41 -0
  447. package/skills/ui/house-style/SKILL.md +366 -0
  448. package/skills/ui/imagegen/SKILL.md +49 -0
  449. package/skills/ui/imagegen/references/brandkit.md +48 -0
  450. package/skills/ui/imagegen/references/image-to-code.md +56 -0
  451. package/skills/ui/imagegen/references/mobile.md +58 -0
  452. package/skills/ui/imagegen/references/web.md +63 -0
  453. package/skills/ui/impeccable/SKILL.md +116 -0
  454. package/skills/ui/impeccable/reference/adapt.md +318 -0
  455. package/skills/ui/impeccable/reference/adapt.native.md +58 -0
  456. package/skills/ui/impeccable/reference/android.md +46 -0
  457. package/skills/ui/impeccable/reference/animate.md +89 -0
  458. package/skills/ui/impeccable/reference/audit.md +137 -0
  459. package/skills/ui/impeccable/reference/audit.native.md +139 -0
  460. package/skills/ui/impeccable/reference/bolder.md +33 -0
  461. package/skills/ui/impeccable/reference/clarify.md +94 -0
  462. package/skills/ui/impeccable/reference/colorize.md +86 -0
  463. package/skills/ui/impeccable/reference/craft-floor.md +44 -0
  464. package/skills/ui/impeccable/reference/craft.md +5 -0
  465. package/skills/ui/impeccable/reference/critique.md +806 -0
  466. package/skills/ui/impeccable/reference/degraded/asset-producer.md +37 -0
  467. package/skills/ui/impeccable/reference/degraded/documenter.md +24 -0
  468. package/skills/ui/impeccable/reference/degraded/finish-reviewer.md +38 -0
  469. package/skills/ui/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  470. package/skills/ui/impeccable/reference/delight.md +70 -0
  471. package/skills/ui/impeccable/reference/distill.md +111 -0
  472. package/skills/ui/impeccable/reference/doctor.md +54 -0
  473. package/skills/ui/impeccable/reference/document.md +416 -0
  474. package/skills/ui/impeccable/reference/extract.md +69 -0
  475. package/skills/ui/impeccable/reference/generate.md +101 -0
  476. package/skills/ui/impeccable/reference/harden.md +345 -0
  477. package/skills/ui/impeccable/reference/hooks.md +111 -0
  478. package/skills/ui/impeccable/reference/init.md +131 -0
  479. package/skills/ui/impeccable/reference/ios.md +51 -0
  480. package/skills/ui/impeccable/reference/layout.md +84 -0
  481. package/skills/ui/impeccable/reference/live-setup.md +104 -0
  482. package/skills/ui/impeccable/reference/live.md +325 -0
  483. package/skills/ui/impeccable/reference/new-work.md +145 -0
  484. package/skills/ui/impeccable/reference/onboard.md +234 -0
  485. package/skills/ui/impeccable/reference/operate.md +61 -0
  486. package/skills/ui/impeccable/reference/optimize.md +258 -0
  487. package/skills/ui/impeccable/reference/overdrive.md +127 -0
  488. package/skills/ui/impeccable/reference/polish.md +105 -0
  489. package/skills/ui/impeccable/reference/quieter.md +99 -0
  490. package/skills/ui/impeccable/reference/routing.md +24 -0
  491. package/skills/ui/impeccable/reference/shape.md +59 -0
  492. package/skills/ui/impeccable/reference/typeset.md +80 -0
  493. package/skills/ui/impeccable/reference/visualize.md +46 -0
  494. package/skills/ui/impeccable/scripts/VERSION +1 -0
  495. package/skills/ui/impeccable/scripts/command-metadata.json +98 -0
  496. package/skills/ui/impeccable/scripts/data/font-index-failures.json +121 -0
  497. package/skills/ui/impeccable/scripts/data/font-index.json +1 -0
  498. package/skills/ui/impeccable/scripts/impeccable +206 -0
  499. package/skills/ui/impeccable/scripts/impeccable.cmd +214 -0
  500. package/skills/ui/impeccable/scripts/live-browser-dom.js +167 -0
  501. package/skills/ui/impeccable/scripts/live-browser-ignores.js +242 -0
  502. package/skills/ui/impeccable/scripts/live-browser-session.js +144 -0
  503. package/skills/ui/impeccable/scripts/live-browser.js +13510 -0
  504. package/skills/ui/impeccable/scripts/modern-screenshot.umd.js +14 -0
  505. package/skills/ui/motion/SKILL.md +207 -0
  506. package/skills/ui/pick-ui-library/SKILL.md +85 -0
  507. package/skills/ui/product-messaging/SKILL.md +163 -0
  508. package/skills/ui/product-site/SKILL.md +465 -0
  509. package/skills/ui/prototype/PICKER.md +197 -0
  510. package/skills/ui/prototype/SKILL.md +98 -0
  511. package/skills/ui/refero-design/SKILL.md +534 -0
  512. package/skills/ui/refero-design/agents/openai.yaml +4 -0
  513. package/skills/ui/refero-design/references/anti-ai-slop.md +292 -0
  514. package/skills/ui/refero-design/references/color.md +563 -0
  515. package/skills/ui/refero-design/references/copywriting.md +222 -0
  516. package/skills/ui/refero-design/references/craft-details.md +525 -0
  517. package/skills/ui/refero-design/references/example-workflow.md +264 -0
  518. package/skills/ui/refero-design/references/icons.md +166 -0
  519. package/skills/ui/refero-design/references/mcp-tools.md +258 -0
  520. package/skills/ui/refero-design/references/motion.md +504 -0
  521. package/skills/ui/refero-design/references/typography.md +737 -0
  522. package/skills/ui/refero-design/references/visual-workflow.md +105 -0
  523. package/skills/ui/style-animaxxing/SKILL.md +48 -0
  524. package/skills/ui/style-animaxxing/agents/openai.yaml +7 -0
  525. package/skills/ui/style-animaxxing/references/motion-vocabulary.md +51 -0
  526. package/skills/ui/style-animaxxing/references/tokens.md +288 -0
  527. package/skills/ui/style-animaxxing/references/typography-and-layout.md +149 -0
  528. package/skills/ui/style-animaxxing/references/verification.md +38 -0
  529. package/skills/ui/typography-picker/SKILL.md +305 -0
  530. package/skills/ui/ui-core/SKILL.md +345 -0
  531. package/skills/ui/ui-core/references/accessibility.md +85 -0
  532. package/skills/ui/ui-core/references/build.md +666 -0
  533. package/skills/ui/ui-core/references/copy.md +70 -0
  534. package/skills/ui/ui-core/references/dark-mode.md +76 -0
  535. package/skills/ui/ui-core/references/direction.md +99 -0
  536. package/skills/ui/ui-core/references/redesign.md +74 -0
  537. package/skills/ui/ui-core/references/responsive.md +77 -0
  538. package/skills/ui/ui-core/references/styles.md +42 -0
  539. package/skills/ui/ui-core/references/system.md +190 -0
  540. package/skills/ui/ui-core/references/verify.md +37 -0
  541. package/skills/ui/ui-engineering/SKILL.md +436 -0
  542. package/skills/ui/ui-engineering/references/avatars.md +74 -0
  543. package/skills/ui/ui-engineering/references/card-patterns.md +66 -0
  544. package/skills/ui/ui-engineering/references/floating-actions.md +65 -0
  545. package/skills/ui/ui-engineering/references/navigation.md +81 -0
  546. package/skills/ui/ui-engineering/references/overlays.md +74 -0
  547. package/skills/ui/ui-engineering/references/pagination.md +71 -0
  548. package/skills/ui/ui-engineering/references/progress-indicators.md +77 -0
  549. package/skills/ui/ui-engineering/references/quality-bar.md +293 -0
  550. package/skills/ui/ui-engineering/references/search.md +68 -0
  551. package/skills/ui/ui-engineering/references/tailwind-architecture.md +81 -0
  552. package/skills/ui/ui-theme-picker/SKILL.md +522 -0
  553. package/skills/ui/ui-theme-picker/references/component-sources.md +223 -0
  554. package/skills/ui/ui-theme-picker/references/styles.md +298 -0
  555. package/skills/ui/vitepress-docs/SKILL.md +439 -0
  556. package/skills/ui/vitepress-docs/references/components.md +333 -0
  557. package/skills/ui/vitepress-docs/references/layout.md +128 -0
  558. package/skills/ui/vitepress-docs/references/tokens.md +87 -0
  559. package/skills/ui/vitepress-docs/references/typography.md +76 -0
  560. package/skills/workflow/careful/SKILL.md +48 -0
  561. package/skills/workflow/context-restore/SKILL.md +69 -0
  562. package/skills/workflow/context-save/SKILL.md +96 -0
  563. package/skills/workflow/health/SKILL.md +99 -0
  564. package/skills/workflow/learn/SKILL.md +95 -0
  565. package/skills/workflow/office-hours/SKILL.md +136 -0
  566. package/skills/workflow/ship/SKILL.md +95 -0
  567. package/vendor.json +80 -0
@@ -0,0 +1,737 @@
1
+ # Typography Guide
2
+
3
+ Typography is 90% of web design. Get it right and everything else falls into place. Get it wrong and no amount of polish will save you.
4
+
5
+ ---
6
+
7
+ ## 0. Context First
8
+
9
+ Before choosing fonts, answer these questions:
10
+
11
+ | Question | Why It Matters |
12
+ |----------|----------------|
13
+ | **Work tool or marketing?** | Work products need neutrality, not personality |
14
+ | **Long reading or scanning?** | Changes line-height and density decisions |
15
+ | **B2B, B2C, or Dev tool?** | Affects font character and weight choices |
16
+
17
+ **Default approach:**
18
+
19
+ > When in doubt , go denser, simpler, and more neutral. Clarity beats decoration in most product interfaces.
20
+
21
+ This mindset helps avoid over-designed typography in functional contexts. For branding, editorial, or creative products , different rules apply.
22
+
23
+ ---
24
+
25
+ ## 1. The Safe SaaS Preset
26
+
27
+ Before customizing anything, this works:
28
+
29
+ ```css
30
+ :root {
31
+ --font-family: 'Inter', system-ui, sans-serif;
32
+ --text-base: 16px;
33
+ --line-height: 1.55;
34
+ --scale: 1.2;
35
+
36
+ --font-weight-normal: 400;
37
+ --font-weight-medium: 500;
38
+ --font-weight-semibold: 600;
39
+
40
+ --max-width: 65ch;
41
+
42
+ --text-primary: #111;
43
+ --text-secondary: rgba(0,0,0,0.7);
44
+ --text-tertiary: rgba(0,0,0,0.5);
45
+ }
46
+ ```
47
+
48
+ **If you use this preset as-is, your typography is already good.** Everything below is refinement.
49
+
50
+ ---
51
+
52
+ ## 2. Type Scale
53
+
54
+ A consistent scale creates visual rhythm. Pick a ratio, stick to it.
55
+
56
+ ### Common Ratios
57
+
58
+ | Ratio | Multiplier | Best For |
59
+ |-------|------------|----------|
60
+ | Minor Second | 1.067 | Dense UI, dashboards |
61
+ | Major Second | 1.125 | Compact interfaces |
62
+ | **Minor Third** | **1.200** | **General purpose , default choice** |
63
+ | Major Third | 1.250 | Marketing, editorial |
64
+ | Perfect Fourth | 1.333 | Bold, expressive layouts |
65
+ | Golden Ratio | 1.618 | Rare: hero sections only |
66
+
67
+ > **Note:** Golden Ratio is dramatic. Use only for landing page heroes, not general UI.
68
+
69
+ ### Practical Scale (Minor Third × 16px base)
70
+
71
+ ```
72
+ 11px — Caption, footnote
73
+ 13px — Small text, metadata
74
+ 16px — Body (base)
75
+ 19px — Large body, lead
76
+ 23px — H4
77
+ 28px — H3
78
+ 33px — H2
79
+ 40px — H1
80
+ 48px — Display
81
+ 57px — Hero
82
+ ```
83
+
84
+ ### CSS Tokens
85
+
86
+ ```css
87
+ :root {
88
+ --text-xs: 0.6875rem; /* 11px */
89
+ --text-sm: 0.8125rem; /* 13px */
90
+ --text-base: 1rem; /* 16px */
91
+ --text-lg: 1.1875rem; /* 19px */
92
+ --text-xl: 1.4375rem; /* 23px */
93
+ --text-2xl: 1.75rem; /* 28px */
94
+ --text-3xl: 2.0625rem; /* 33px */
95
+ --text-4xl: 2.5rem; /* 40px */
96
+ --text-5xl: 3rem; /* 48px */
97
+ --text-6xl: 3.5625rem; /* 57px */
98
+ }
99
+ ```
100
+
101
+ **Rule:** Maximum 6-8 sizes in production. More = chaos.
102
+
103
+ ---
104
+
105
+ ## 3. Font Pairing
106
+
107
+ **Most successful SaaS products use one font family.** Two fonts adds complexity , make sure it's justified.
108
+
109
+ ### The One-Font Rule
110
+
111
+ ```
112
+ One font + multiple weights = professional
113
+ Two fonts = requires justification
114
+ Three fonts = almost never
115
+ ```
116
+
117
+ **When you actually need a second font:**
118
+ - Marketing/landing pages (not the app itself)
119
+ - Content-heavy products (editorial, documentation)
120
+ - There's real art direction, not just "looks nice"
121
+
122
+ If you don't have a strong reason , one font, different weights.
123
+
124
+ ### If You Must Pair
125
+
126
+ | Strategy | Example |
127
+ |----------|---------|
128
+ | Serif + Sans | Instrument Serif + Inter |
129
+ | Display + System | Cal Sans + system-ui |
130
+ | Mono accent | JetBrains Mono (code) + Inter (UI) |
131
+
132
+ **Pairing rules:**
133
+ 1. Contrast in structure , serif with sans, not two serifs
134
+ 2. Similar x-height , letters feel proportional
135
+ 3. Intentional contrast , mixing eras (Didot + geometric) can work as a deliberate choice, not an accident
136
+
137
+ ### Safe Font Choices by Product Type
138
+
139
+ | Product | Font |
140
+ |---------|------|
141
+ | **SaaS / Tech** | Inter, SF Pro, Geist |
142
+ | **Finance / Enterprise** | Inter, IBM Plex Sans |
143
+ | **Startup** | Inter, DM Sans, Plus Jakarta |
144
+ | **Dev tools** | Inter + JetBrains Mono (code) |
145
+
146
+ ---
147
+
148
+ ## 4. Text Color System
149
+
150
+ Typography in a vacuum doesn't exist. Most "bad" interfaces look bad because of color, not font choice.
151
+
152
+ ### The System
153
+
154
+ ```css
155
+ :root {
156
+ --text-primary: #0B0B0B; /* 100% — headlines, body */
157
+ --text-secondary: rgba(0,0,0,0.65); /* 65% — descriptions */
158
+ --text-tertiary: rgba(0,0,0,0.45); /* 45% — metadata, captions */
159
+ --text-disabled: rgba(0,0,0,0.3); /* 30% — disabled states (rare) */
160
+ }
161
+ ```
162
+
163
+ ### Rules That Actually Work
164
+
165
+ - **Never pure black** , Use `#0B0B0B` - `#111`, not `#000`
166
+ - **Body text minimum** , Never below 60% opacity for readable text
167
+ - **Fewer shades, stable usage** , 3-4 text colors max, used consistently
168
+ - **Disabled is rare** , If you have lots of disabled text, redesign
169
+
170
+ ### Anti-pattern
171
+
172
+ > "Let's make the text lighter for an airy feel"
173
+
174
+ This almost always destroys readability. If it doesn't pass squint test, it's too light.
175
+
176
+ ### Dark Mode Inversion
177
+
178
+ ```css
179
+ [data-theme="dark"] {
180
+ --text-primary: #F5F5F5;
181
+ --text-secondary: rgba(255,255,255,0.7);
182
+ --text-tertiary: rgba(255,255,255,0.5);
183
+ }
184
+ ```
185
+
186
+ ---
187
+
188
+ ## 5. Font Weight
189
+
190
+ Weight creates hierarchy. Use it deliberately.
191
+
192
+ ### Standard Weights
193
+
194
+ | Weight | Name | Use |
195
+ |--------|------|-----|
196
+ | 300 | Light | Large display text only |
197
+ | 400 | Regular | Body text, descriptions |
198
+ | 500 | Medium | UI labels, subtle emphasis |
199
+ | 600 | Semibold | Subheadings, buttons |
200
+ | 700 | Bold | Headlines, strong emphasis |
201
+
202
+ ### Rules
203
+
204
+ - **Body text:** Always 400. Never bold entire paragraphs.
205
+ - **Headlines:** 400-700 depending on font. Serifs often look better at 400.
206
+ - **UI elements:** 500 for labels, 600 for buttons.
207
+ - **Small text:** 400 or 500. Light weights (300) become illegible below 16px.
208
+
209
+ ### Weight + Size Relationship
210
+
211
+ ```
212
+ Larger size → can use lighter weight
213
+ Smaller size → needs heavier weight
214
+
215
+ 64px heading → 400 weight looks elegant
216
+ 12px caption → 400 minimum, 500 preferred
217
+ ```
218
+
219
+ **Anti-pattern:** Using bold (700) for everything. It flattens hierarchy.
220
+
221
+ ---
222
+
223
+ ## 6. Line Height
224
+
225
+ Line height (leading) affects readability more than any other property.
226
+
227
+ ### Quick Reference
228
+
229
+ | Text Type | Line Height | Why |
230
+ |-----------|-------------|-----|
231
+ | **Body text** | 1.5 - 1.7 | Optimal for reading |
232
+ | **Short paragraphs** | 1.4 - 1.5 | Slightly tighter is fine |
233
+ | **Headlines** | 1.0 - 1.2 | Tight, impactful |
234
+ | **Large display** | 0.9 - 1.1 | Very tight, dramatic |
235
+ | **UI text** | 1.2 - 1.4 | Compact but readable |
236
+ | **Buttons** | 1 | Single line, centered |
237
+
238
+ ### CSS Tokens
239
+
240
+ ```css
241
+ :root {
242
+ --leading-none: 1;
243
+ --leading-tight: 1.15;
244
+ --leading-snug: 1.3;
245
+ --leading-normal: 1.5;
246
+ --leading-relaxed: 1.7;
247
+ --leading-loose: 2;
248
+ }
249
+ ```
250
+
251
+ ### Principles
252
+
253
+ 1. **Longer lines need more leading** , 80+ characters? Use 1.6-1.7
254
+ 2. **Shorter lines need less** , 40 characters? 1.4 is fine
255
+ 3. **Headlines are tight** , Multi-line headlines at 1.5 look broken
256
+ 4. **Sans-serif needs more** , Add 0.1 compared to serif
257
+
258
+ ---
259
+
260
+ ## 7. Vertical Rhythm
261
+
262
+ AI-slop is almost always exposed by bad spacing between text blocks.
263
+
264
+ ### The Simple Rule
265
+
266
+ ```
267
+ Line-height × 0.5 = minimum vertical spacing step
268
+ ```
269
+
270
+ ### Example
271
+
272
+ ```
273
+ Body: 16px / 1.5 → line-height = 24px
274
+ Minimum vertical step = 12px
275
+ Spacing scale: 12 / 24 / 48
276
+ ```
277
+
278
+ ### CSS Implementation
279
+
280
+ ```css
281
+ :root {
282
+ --space-xs: 12px; /* 0.5 × line-height */
283
+ --space-sm: 24px; /* 1 × line-height */
284
+ --space-md: 48px; /* 2 × line-height */
285
+ --space-lg: 72px; /* 3 × line-height */
286
+ }
287
+ ```
288
+
289
+ ### Golden Rule
290
+
291
+ > **Spacing matters more than font size.**
292
+
293
+ Two designs with the same fonts but different spacing will look like different products. Fix spacing before tweaking fonts.
294
+
295
+ ---
296
+
297
+ ## 8. Letter Spacing (Tracking)
298
+
299
+ Letter-spacing is one of the most overlooked properties in web typography. It's a polish detail that separates refined interfaces from rough ones.
300
+
301
+ ### Why It Matters
302
+
303
+ Professional typography isn't just about choosing fonts, it's about the space BETWEEN letters. This single property can make the difference between "looks off" and "looks polished."
304
+
305
+ **Without proper tracking:**
306
+ - ALL CAPS looks cramped and cheap
307
+ - Small text becomes harder to read
308
+ - Large headlines feel loose and unprofessional
309
+ - The entire interface lacks refinement
310
+
311
+ ### Quick Reference
312
+
313
+ | Text Type | Size | Value | Priority |
314
+ |-----------|------|-------|----------|
315
+ | **Body text** | 14-18px | `0` | Default OK |
316
+ | **Small text** | 11-13px | `0.01em` - `0.02em` | **REQUIRED** |
317
+ | **UI labels/buttons** | any | `0.01em` - `0.03em` | **REQUIRED** |
318
+ | **ALL CAPS** | any | `0.06em` - `0.10em` | **MANDATORY** |
319
+ | **Large headings** | 32px+ | `0` to `-0.02em` | Recommended |
320
+ | **Display text** | 48px+ | `-0.02em` to `-0.03em` | Recommended |
321
+
322
+ ### Units
323
+
324
+ **Always use `em`, never `px`.** Em scales with font size.
325
+
326
+ ### CSS Tokens
327
+
328
+ ```css
329
+ :root {
330
+ --tracking-tighter: -0.02em;
331
+ --tracking-tight: -0.01em;
332
+ --tracking-normal: 0em;
333
+ --tracking-wide: 0.015em;
334
+ --tracking-wider: 0.02em;
335
+ --tracking-widest: 0.08em; /* caps */
336
+ }
337
+ ```
338
+
339
+ ### ALL CAPS Rule
340
+
341
+ Uppercase text usually benefits from positive letter-spacing. Default behavior for UI text:
342
+
343
+ ```css
344
+ /* ❌ WRONG — cramped, amateur, unfinished */
345
+ .badge { text-transform: uppercase; }
346
+
347
+ /* ✅ RIGHT — polished, professional */
348
+ .badge {
349
+ text-transform: uppercase;
350
+ letter-spacing: 0.08em;
351
+ }
352
+ ```
353
+
354
+ ### Small Text Rule , Often Forgotten
355
+
356
+ Text below 14px needs extra tracking for readability:
357
+
358
+ ```css
359
+ /* ❌ WRONG — hard to read */
360
+ .caption { font-size: 12px; }
361
+
362
+ /* ✅ RIGHT — improved readability */
363
+ .caption {
364
+ font-size: 12px;
365
+ letter-spacing: 0.015em;
366
+ }
367
+ ```
368
+
369
+ ### When to Tighten
370
+
371
+ Only tighten (negative values) when:
372
+ - Size is 32px+
373
+ - It's a headline, not body
374
+ - Font weight isn't light
375
+ - Problem pairs (AV, WA, To) don't collide
376
+
377
+ ### Pre-Implementation Checklist
378
+
379
+ Before shipping any typography:
380
+ - [ ] ALL CAPS elements have `letter-spacing: 0.06em+`
381
+ - [ ] Small text (11-13px) has positive tracking
382
+ - [ ] UI labels and buttons have tracking
383
+ - [ ] Large headings (32px+) have slight negative tracking
384
+ - [ ] You didn't just skip letter-spacing entirely
385
+
386
+ ---
387
+
388
+ ## 9. Line Length (Measure)
389
+
390
+ Optimal reading width prevents eye fatigue.
391
+
392
+ ### Guidelines
393
+
394
+ | Content | Characters | Pixels (~16px) |
395
+ |---------|------------|----------------|
396
+ | **Optimal** | 50-75 | 500-700px |
397
+ | **Minimum** | 45 | 450px |
398
+ | **Maximum** | 85 | 850px |
399
+
400
+ ### Implementation
401
+
402
+ ```css
403
+ /* Article content */
404
+ .prose {
405
+ max-width: 65ch; /* ~65 characters */
406
+ }
407
+
408
+ /* Compact UI */
409
+ .card-description {
410
+ max-width: 45ch;
411
+ }
412
+ ```
413
+
414
+ **Anti-pattern:** Full-width paragraphs on desktop. Unreadable above 100 characters.
415
+
416
+ ---
417
+
418
+ ## 10. Text Polish Details
419
+
420
+ Small details that separate amateur from professional. AI models often miss these.
421
+
422
+ ### Punctuation
423
+
424
+ | Wrong | Right | Rule |
425
+ |-------|-------|------|
426
+ | `...` | `…` | Use proper ellipsis character (`…` or `…`) |
427
+ | `"` `"` | `"` `"` | Use curly quotes, not straight quotes |
428
+ | `10 MB` | `10 MB` | Non-breaking space between number and unit |
429
+ | `⌘ K` | `⌘ K` | Non-breaking space in keyboard shortcuts |
430
+
431
+ **Loading states:** Always end with `…` → `"Loading…"`, `"Saving…"`, `"Processing…"`
432
+
433
+ ### Tabular Numbers
434
+
435
+ When displaying numbers that need to align (tables, prices, stats):
436
+
437
+ ```css
438
+ .price,
439
+ .table-cell-number,
440
+ .stats-value {
441
+ font-variant-numeric: tabular-nums;
442
+ }
443
+ ```
444
+
445
+ **Why:** Default proportional figures make `111` narrower than `999`. Tabular figures give each digit equal width , essential for columns, counters, prices.
446
+
447
+ ### Text Wrapping for Headings
448
+
449
+ Prevent orphaned words and awkward final lines in important text. A single word on the
450
+ last line of a hero title usually looks accidental, not designed.
451
+
452
+ ```css
453
+ h1, h2, h3,
454
+ .hero-title,
455
+ .card-title {
456
+ text-wrap: balance; /* Balance short headings/display text */
457
+ }
458
+
459
+ .lead,
460
+ .prose p {
461
+ text-wrap: pretty; /* Improve prose wrapping selectively */
462
+ }
463
+ ```
464
+
465
+ Use `balance` for short headings, captions, pull quotes, and card titles. Use `pretty`
466
+ for lead/body prose when typography matters more than maximum performance. Do not apply
467
+ either blindly to nav, buttons, tables, badges, code, form controls, or dense UI labels.
468
+
469
+ Still inspect the actual breakpoints. If wrapping is still awkward, adjust copy, max-width,
470
+ font-size, or line-height instead of trusting CSS alone.
471
+
472
+ **Browser support:** Modern browsers. Graceful degradation , no harm if unsupported.
473
+
474
+ ### Content Overflow
475
+
476
+ Text containers must handle long content:
477
+
478
+ ```css
479
+ /* Truncate single line */
480
+ .truncate {
481
+ overflow: hidden;
482
+ text-overflow: ellipsis;
483
+ white-space: nowrap;
484
+ }
485
+
486
+ /* Clamp to N lines */
487
+ .line-clamp-2 {
488
+ display: -webkit-box;
489
+ -webkit-line-clamp: 2;
490
+ -webkit-box-orient: vertical;
491
+ overflow: hidden;
492
+ }
493
+
494
+ /* Break long words (URLs, emails) */
495
+ .break-words {
496
+ overflow-wrap: break-word;
497
+ word-break: break-word;
498
+ }
499
+ ```
500
+
501
+ **Critical for flex layouts:** Flex children need `min-width: 0` to allow text truncation:
502
+
503
+ ```css
504
+ /* ❌ Text won't truncate */
505
+ .flex-child {
506
+ flex: 1;
507
+ }
508
+
509
+ /* ✅ Text truncates properly */
510
+ .flex-child {
511
+ flex: 1;
512
+ min-width: 0;
513
+ }
514
+ ```
515
+
516
+ ---
517
+
518
+ ## 11. Responsive Typography
519
+
520
+ Font size should respond to viewport, but not linearly.
521
+
522
+ ### Fluid Type (Clamp)
523
+
524
+ ```css
525
+ :root {
526
+ /* Min 16px, preferred 2vw, max 20px */
527
+ --text-base: clamp(1rem, 1.5vw + 0.5rem, 1.25rem);
528
+
529
+ /* Min 32px, scales with viewport, max 56px */
530
+ --text-hero: clamp(2rem, 5vw + 1rem, 3.5rem);
531
+ }
532
+ ```
533
+
534
+ ### Breakpoint Adjustments
535
+
536
+ ```css
537
+ :root {
538
+ --text-base: 16px;
539
+ --text-h1: 36px;
540
+ }
541
+
542
+ @media (min-width: 768px) {
543
+ :root {
544
+ --text-h1: 48px;
545
+ }
546
+ }
547
+
548
+ @media (min-width: 1200px) {
549
+ :root {
550
+ --text-h1: 56px;
551
+ }
552
+ }
553
+ ```
554
+
555
+ ### What Changes
556
+
557
+ | Property | Mobile → Desktop |
558
+ |----------|------------------|
559
+ | Base font | 16px → 16-18px |
560
+ | H1 | 32-36px → 48-64px |
561
+ | Line height | Same or slightly less |
562
+ | Letter spacing | Same |
563
+ | Line length | Shorter → longer |
564
+
565
+ ---
566
+
567
+ ## 12. Performance Typography
568
+
569
+ Beautiful typography on a slow page is bad typography.
570
+
571
+ ### Requirements
572
+
573
+ ```css
574
+ /* Always use font-display: swap */
575
+ @font-face {
576
+ font-family: 'Inter';
577
+ font-display: swap;
578
+ src: url('/fonts/inter.woff2') format('woff2');
579
+ }
580
+ ```
581
+
582
+ ### Rules
583
+
584
+ - **≤2 font families** , One is better
585
+ - **≤3 weights per family** , 400, 500, 600 covers 95% of needs
586
+ - **Variable fonts preferred** , One file, all weights
587
+ - **System stack is fine** , Often better than custom fonts
588
+
589
+ ### System Font Stack
590
+
591
+ ```css
592
+ font-family: system-ui, -apple-system, BlinkMacSystemFont,
593
+ 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
594
+ ```
595
+
596
+ This loads instantly, looks native, and is perfectly professional.
597
+
598
+ ### Performance Rule
599
+
600
+ > If typography is beautiful but the page loads slow , it's bad typography.
601
+
602
+ ---
603
+
604
+ ## 13. AI-Slop Anti-Patterns
605
+
606
+ Things that instantly reveal AI-generated or amateur design:
607
+
608
+ ### Instant Red Flags
609
+
610
+ - **10+ text sizes** , Scale should have 6-8 max
611
+ - **Gray text on gray background** , Contrast failure
612
+ - **Bold in body text** , Flattens hierarchy
613
+ - **Centered paragraphs** , Only for short marketing copy
614
+ - **Decorative display font without intent** , Should serve brand or product personality, not just decoration
615
+ - **ALL CAPS without letter-spacing** , Always needs tracking
616
+ - **Inconsistent spacing** , Random gaps between elements
617
+ - **Too many font weights** , 400/500/600 is enough
618
+
619
+ ### Quick Test
620
+
621
+ Look at any interface and count:
622
+ 1. How many distinct font sizes? (Should be ≤8)
623
+ 2. How many text colors? (Should be ≤4)
624
+ 3. How many font weights? (Should be ≤4)
625
+
626
+ More than these numbers = likely AI-slop or needs editing.
627
+
628
+ ---
629
+
630
+ ## 14. Hierarchy Checklist
631
+
632
+ Clear hierarchy guides the eye. Test by squinting.
633
+
634
+ ### Visual Weight Stack
635
+
636
+ ```
637
+ 1. Size — Biggest impact
638
+ 2. Weight — Bold vs regular
639
+ 3. Color — Dark vs gray vs muted
640
+ 4. Case — Caps for labels
641
+ 5. Spacing — Margins create grouping
642
+ 6. Style — Italic for emphasis (rare)
643
+ ```
644
+
645
+ ### Hierarchy Test
646
+
647
+ 1. **Squint test** , Can you see 3 clear levels?
648
+ 2. **5-second test** , What do users see first?
649
+ 3. **Scan test** , Can you skim headings?
650
+
651
+ ### Anti-patterns
652
+
653
+ - Everything is bold → nothing is bold
654
+ - 10 different sizes → no clear scale
655
+ - Low contrast gray → invisible hierarchy
656
+ - Italic everywhere → meaningless emphasis
657
+
658
+ ---
659
+
660
+ ## 15. Pre-Ship Checklist
661
+
662
+ - [ ] **Scale:** Maximum 6-8 font sizes
663
+ - [ ] **Fonts:** Maximum 2 families (1 is better)
664
+ - [ ] **Weights:** 3-4 weights maximum (400, 500, 600)
665
+ - [ ] **Body:** 16px+, line-height 1.5+, max-width 65ch
666
+ - [ ] **Text colors:** 3-4 levels (primary, secondary, tertiary)
667
+ - [ ] **Headlines:** Tighter leading (1.1-1.2), optional negative tracking
668
+ - [ ] **ALL CAPS:** Has letter-spacing 0.06em+
669
+ - [ ] **Small text:** 11px minimum, has positive tracking
670
+ - [ ] **Contrast:** Passes WCAG AA (4.5:1 body, 3:1 large)
671
+ - [ ] **Performance:** font-display: swap, ≤3 weights loaded
672
+ - [ ] **Spacing:** Consistent vertical rhythm
673
+ - [ ] **Responsive:** Tested at 320px, 768px, 1440px
674
+ - [ ] **Hierarchy:** Passes squint test
675
+ - [ ] **Punctuation:** `…` not `...`, curly quotes, non-breaking spaces
676
+ - [ ] **Numbers:** `tabular-nums` in tables/stats/prices
677
+ - [ ] **Headings:** `text-wrap: balance`; no awkward one-word final lines
678
+ - [ ] **Prose:** `text-wrap: pretty` only where typographic quality matters
679
+ - [ ] **Overflow:** Text containers handle long content (truncate/clamp/break)
680
+
681
+ ---
682
+
683
+ ## Appendix: Complete Token System
684
+
685
+ Reference implementation with all tokens:
686
+
687
+ ```css
688
+ :root {
689
+ /* Font Families */
690
+ --font-body: 'Inter', system-ui, sans-serif;
691
+ --font-mono: 'JetBrains Mono', monospace;
692
+
693
+ /* Font Sizes (Minor Third scale) */
694
+ --text-xs: 0.6875rem; /* 11px */
695
+ --text-sm: 0.8125rem; /* 13px */
696
+ --text-base: 1rem; /* 16px */
697
+ --text-lg: 1.1875rem; /* 19px */
698
+ --text-xl: 1.4375rem; /* 23px */
699
+ --text-2xl: 1.75rem; /* 28px */
700
+ --text-3xl: 2.0625rem; /* 33px */
701
+ --text-4xl: 2.5rem; /* 40px */
702
+
703
+ /* Font Weights */
704
+ --font-normal: 400;
705
+ --font-medium: 500;
706
+ --font-semibold: 600;
707
+
708
+ /* Line Heights */
709
+ --leading-none: 1;
710
+ --leading-tight: 1.15;
711
+ --leading-snug: 1.3;
712
+ --leading-normal: 1.55;
713
+ --leading-relaxed: 1.7;
714
+
715
+ /* Letter Spacing */
716
+ --tracking-tight: -0.01em;
717
+ --tracking-normal: 0em;
718
+ --tracking-wide: 0.015em;
719
+ --tracking-caps: 0.08em;
720
+
721
+ /* Text Colors */
722
+ --text-primary: #0B0B0B;
723
+ --text-secondary: rgba(0,0,0,0.65);
724
+ --text-tertiary: rgba(0,0,0,0.45);
725
+ --text-disabled: rgba(0,0,0,0.3);
726
+
727
+ /* Spacing (based on 24px line-height) */
728
+ --space-xs: 12px;
729
+ --space-sm: 24px;
730
+ --space-md: 48px;
731
+ --space-lg: 72px;
732
+ }
733
+ ```
734
+
735
+ ---
736
+
737
+ *Typography is the voice of your interface. Simple, consistent, intentional.*