codeply-cli 0.5.5 → 0.6.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 (429) hide show
  1. package/LICENSE +21 -21
  2. package/THIRD_PARTY_NOTICES.md +65 -65
  3. package/bin/codeply.js +8 -3
  4. package/lib/agent.mjs +2596 -2268
  5. package/lib/ai.js +135 -27
  6. package/lib/ai.mjs +6 -6
  7. package/lib/apply-patch.js +217 -217
  8. package/lib/arity-table.json +138 -138
  9. package/lib/arity.js +70 -70
  10. package/lib/auth.mjs +6 -6
  11. package/lib/autopilot.js +84 -0
  12. package/lib/bot-mail.js +46 -0
  13. package/lib/bots.js +142 -15
  14. package/lib/brain.js +914 -0
  15. package/lib/call-assist.js +120 -0
  16. package/lib/chatgpt.js +282 -282
  17. package/lib/cloud-browser.mjs +143 -143
  18. package/lib/cloud.mjs +1396 -1312
  19. package/lib/commands.js +103 -103
  20. package/lib/computer.js +136 -0
  21. package/lib/design-library/assemble-artifact.mjs +21 -21
  22. package/lib/design-library/cleanup.mjs +45 -45
  23. package/lib/design-library/index.json +22379 -22379
  24. package/lib/design-library/make-table-data.mjs +39 -39
  25. package/lib/design-tools.mjs +173 -0
  26. package/lib/diagnostics.js +192 -192
  27. package/lib/dsh-acp.mjs +444 -0
  28. package/lib/edit-engine.js +364 -364
  29. package/lib/github-agent.mjs +326 -326
  30. package/lib/handoff.mjs +245 -0
  31. package/lib/history.js +78 -75
  32. package/lib/life-sources.js +319 -0
  33. package/lib/life-store.js +356 -0
  34. package/lib/life-triggers.js +286 -0
  35. package/lib/life.js +487 -0
  36. package/lib/mail-watch.js +3 -3
  37. package/lib/mcp.js +258 -258
  38. package/lib/native-tools.mjs +17 -5
  39. package/lib/oauth-connectors.js +76 -21
  40. package/lib/permissions.js +109 -109
  41. package/lib/plugins.js +356 -353
  42. package/lib/reach.js +67 -67
  43. package/lib/render-md.mjs +647 -617
  44. package/lib/screen.js +77 -0
  45. package/lib/server.mjs +458 -457
  46. package/lib/session-db.js +220 -220
  47. package/lib/share.js +208 -168
  48. package/lib/skills.js +4 -1
  49. package/lib/snapshot.js +146 -146
  50. package/lib/subagents.js +4 -2
  51. package/lib/telemetry.js +105 -105
  52. package/lib/terminal-hints.js +154 -154
  53. package/lib/textarea.mjs +264 -258
  54. package/lib/tools.mjs +326 -40
  55. package/lib/tui.mjs +1459 -1086
  56. package/lib/typecheck-worker.js +147 -147
  57. package/lib/web-tools.js +209 -209
  58. package/package.json +1 -1
  59. package/skills/SOURCE.md +58 -58
  60. package/skills/accessibility/SKILL.md +147 -147
  61. package/skills/agent-architecture-audit/SKILL.md +257 -257
  62. package/skills/agent-eval/SKILL.md +147 -147
  63. package/skills/agent-harness-construction/SKILL.md +74 -74
  64. package/skills/agent-introspection-debugging/SKILL.md +154 -154
  65. package/skills/agent-payment-x402/SKILL.md +225 -225
  66. package/skills/agent-self-evaluation/SKILL.md +182 -182
  67. package/skills/agent-self-evaluation/references/evaluation-criteria.md +71 -71
  68. package/skills/agent-self-evaluation/references/hook-integration.md +64 -64
  69. package/skills/agent-sort/SKILL.md +216 -216
  70. package/skills/agentic-engineering/SKILL.md +64 -64
  71. package/skills/agentic-os/SKILL.md +388 -388
  72. package/skills/ai-first-engineering/SKILL.md +52 -52
  73. package/skills/ai-regression-testing/SKILL.md +386 -386
  74. package/skills/android-clean-architecture/SKILL.md +340 -340
  75. package/skills/angular-developer/SKILL.md +155 -155
  76. package/skills/angular-developer/references/angular-animations.md +160 -160
  77. package/skills/angular-developer/references/angular-aria.md +410 -410
  78. package/skills/angular-developer/references/cli.md +86 -86
  79. package/skills/angular-developer/references/component-harnesses.md +59 -59
  80. package/skills/angular-developer/references/component-styling.md +91 -91
  81. package/skills/angular-developer/references/components.md +117 -117
  82. package/skills/angular-developer/references/creating-services.md +97 -97
  83. package/skills/angular-developer/references/data-resolvers.md +69 -69
  84. package/skills/angular-developer/references/define-routes.md +67 -67
  85. package/skills/angular-developer/references/defining-providers.md +72 -72
  86. package/skills/angular-developer/references/di-fundamentals.md +120 -120
  87. package/skills/angular-developer/references/e2e-testing.md +56 -56
  88. package/skills/angular-developer/references/effects.md +83 -83
  89. package/skills/angular-developer/references/hierarchical-injectors.md +43 -43
  90. package/skills/angular-developer/references/host-elements.md +80 -80
  91. package/skills/angular-developer/references/injection-context.md +63 -63
  92. package/skills/angular-developer/references/inputs.md +101 -101
  93. package/skills/angular-developer/references/linked-signal.md +59 -59
  94. package/skills/angular-developer/references/loading-strategies.md +61 -61
  95. package/skills/angular-developer/references/mcp.md +108 -108
  96. package/skills/angular-developer/references/navigate-to-routes.md +69 -69
  97. package/skills/angular-developer/references/outputs.md +86 -86
  98. package/skills/angular-developer/references/reactive-forms.md +122 -122
  99. package/skills/angular-developer/references/rendering-strategies.md +44 -44
  100. package/skills/angular-developer/references/resource.md +77 -77
  101. package/skills/angular-developer/references/route-animations.md +56 -56
  102. package/skills/angular-developer/references/route-guards.md +52 -52
  103. package/skills/angular-developer/references/router-lifecycle.md +45 -45
  104. package/skills/angular-developer/references/router-testing.md +87 -87
  105. package/skills/angular-developer/references/show-routes-with-outlets.md +68 -68
  106. package/skills/angular-developer/references/signal-forms.md +795 -795
  107. package/skills/angular-developer/references/signals-overview.md +94 -94
  108. package/skills/angular-developer/references/tailwind-css.md +69 -69
  109. package/skills/angular-developer/references/template-driven-forms.md +114 -114
  110. package/skills/angular-developer/references/testing-fundamentals.md +65 -65
  111. package/skills/api-connector-builder/SKILL.md +121 -121
  112. package/skills/api-design/SKILL.md +524 -524
  113. package/skills/architecture-decision-records/SKILL.md +180 -180
  114. package/skills/article-writing/SKILL.md +80 -80
  115. package/skills/automation-audit-ops/SKILL.md +143 -143
  116. package/skills/autonomous-agent-harness/SKILL.md +274 -274
  117. package/skills/autonomous-loops/SKILL.md +611 -611
  118. package/skills/backend-patterns/SKILL.md +562 -562
  119. package/skills/benchmark/SKILL.md +95 -95
  120. package/skills/benchmark-methodology/SKILL.md +191 -191
  121. package/skills/benchmark-optimization-loop/SKILL.md +71 -71
  122. package/skills/blender-motion-state-inspection/SKILL.md +165 -165
  123. package/skills/blueprint/SKILL.md +106 -106
  124. package/skills/brand-discovery/SKILL.md +145 -145
  125. package/skills/brand-discovery/references/10_purpose-why.md +40 -40
  126. package/skills/brand-discovery/references/20_positioning.md +44 -44
  127. package/skills/brand-discovery/references/30_audience-niche.md +52 -52
  128. package/skills/brand-discovery/references/40_personality-archetype.md +57 -57
  129. package/skills/brand-discovery/references/50_voice-tone.md +59 -59
  130. package/skills/brand-discovery/references/60_narrative-story.md +50 -50
  131. package/skills/brand-discovery/references/70_founder-tension.md +49 -49
  132. package/skills/brand-discovery/references/90_SYNTHESIS.md +133 -133
  133. package/skills/brand-voice/SKILL.md +98 -98
  134. package/skills/brand-voice/references/voice-profile-schema.md +55 -55
  135. package/skills/browser-qa/SKILL.md +105 -105
  136. package/skills/bun-runtime/SKILL.md +85 -85
  137. package/skills/canary-watch/SKILL.md +108 -108
  138. package/skills/carrier-relationship-management/SKILL.md +212 -212
  139. package/skills/cisco-ios-patterns/SKILL.md +164 -164
  140. package/skills/ck/SKILL.md +148 -148
  141. package/skills/claude-devfleet/SKILL.md +112 -112
  142. package/skills/click-path-audit/SKILL.md +245 -245
  143. package/skills/clickhouse-io/SKILL.md +445 -445
  144. package/skills/code-tour/SKILL.md +254 -254
  145. package/skills/codebase-onboarding/SKILL.md +234 -234
  146. package/skills/codehealth-mcp/SKILL.md +167 -167
  147. package/skills/codeply-taste/LICENSE +21 -0
  148. package/skills/codeply-taste/SKILL.md +100 -0
  149. package/skills/codeply-taste/SOURCE.md +10 -0
  150. package/skills/codeply-taste/assets/base.css +100 -0
  151. package/skills/codeply-taste/assets/base.js +37 -0
  152. package/skills/codeply-taste/library/directions.json +1078 -0
  153. package/skills/codeply-taste/library/heroes.json +894 -0
  154. package/skills/codeply-taste/library/motions.json +57 -0
  155. package/skills/codeply-taste/library/palettes.json +1485 -0
  156. package/skills/codeply-taste/library/photos.json +7240 -0
  157. package/skills/codeply-taste/library/sections.json +4136 -0
  158. package/skills/codeply-taste/library/sites.json +7274 -0
  159. package/skills/codeply-taste/library/type.json +2024 -0
  160. package/skills/codeply-taste/references/colour.md +141 -0
  161. package/skills/codeply-taste/references/copy.md +177 -0
  162. package/skills/codeply-taste/references/critique.md +171 -0
  163. package/skills/codeply-taste/references/imagery.md +377 -0
  164. package/skills/codeply-taste/references/layout.md +178 -0
  165. package/skills/codeply-taste/references/motion.md +292 -0
  166. package/skills/codeply-taste/references/research.md +306 -0
  167. package/skills/codeply-taste/references/tells.md +115 -0
  168. package/skills/codeply-taste/references/type.md +170 -0
  169. package/skills/codeply-taste/scripts/assets.mjs +865 -0
  170. package/skills/codeply-taste/scripts/draw.mjs +525 -0
  171. package/skills/codeply-taste/scripts/inspect.mjs +205 -0
  172. package/skills/codeply-taste/scripts/lib/cdp.mjs +205 -0
  173. package/skills/codeply-taste/scripts/lib/probe.mjs +569 -0
  174. package/skills/codeply-taste/scripts/lib/rules.mjs +137 -0
  175. package/skills/codeply-taste/scripts/lint.mjs +108 -0
  176. package/skills/coding-standards/SKILL.md +551 -551
  177. package/skills/competitive-platform-analysis/SKILL.md +214 -214
  178. package/skills/competitive-report-structure/SKILL.md +162 -162
  179. package/skills/compose-multiplatform-patterns/SKILL.md +300 -300
  180. package/skills/config-gc/SKILL.md +120 -120
  181. package/skills/configure-ecc/SKILL.md +385 -385
  182. package/skills/connections-optimizer/SKILL.md +190 -190
  183. package/skills/content-engine/SKILL.md +132 -132
  184. package/skills/content-hash-cache-pattern/SKILL.md +162 -162
  185. package/skills/context-budget/SKILL.md +136 -136
  186. package/skills/continuous-agent-loop/SKILL.md +46 -46
  187. package/skills/continuous-learning/SKILL.md +132 -132
  188. package/skills/continuous-learning-v2/SKILL.md +361 -361
  189. package/skills/contract-first/SKILL.md +287 -287
  190. package/skills/cost-aware-llm-pipeline/SKILL.md +184 -184
  191. package/skills/cost-tracking/SKILL.md +97 -97
  192. package/skills/council/SKILL.md +204 -204
  193. package/skills/cpp-coding-standards/SKILL.md +724 -724
  194. package/skills/cpp-testing/SKILL.md +325 -325
  195. package/skills/crosspost/SKILL.md +112 -112
  196. package/skills/csharp-testing/SKILL.md +322 -322
  197. package/skills/customer-billing-ops/SKILL.md +141 -141
  198. package/skills/customs-trade-compliance/SKILL.md +263 -263
  199. package/skills/dart-flutter-patterns/SKILL.md +564 -564
  200. package/skills/dashboard-builder/SKILL.md +109 -109
  201. package/skills/data-scraper-agent/SKILL.md +765 -765
  202. package/skills/data-throughput-accelerator/SKILL.md +74 -74
  203. package/skills/database-migrations/SKILL.md +430 -430
  204. package/skills/deep-research/SKILL.md +160 -160
  205. package/skills/defi-amm-security/SKILL.md +167 -167
  206. package/skills/delivery-gate/SKILL.md +126 -126
  207. package/skills/deployment-patterns/SKILL.md +428 -428
  208. package/skills/design-system/SKILL.md +83 -83
  209. package/skills/django-celery/SKILL.md +458 -458
  210. package/skills/django-patterns/SKILL.md +735 -735
  211. package/skills/django-security/SKILL.md +644 -644
  212. package/skills/django-tdd/SKILL.md +730 -730
  213. package/skills/django-verification/SKILL.md +470 -470
  214. package/skills/dmux-workflows/SKILL.md +192 -192
  215. package/skills/docker-patterns/SKILL.md +365 -365
  216. package/skills/documentation-lookup/SKILL.md +91 -91
  217. package/skills/dotnet-patterns/SKILL.md +322 -322
  218. package/skills/dynamic-workflow-mode/SKILL.md +124 -124
  219. package/skills/e2e-testing/SKILL.md +327 -327
  220. package/skills/ecc-guide/SKILL.md +190 -190
  221. package/skills/ecc-recipes/SKILL.md +149 -149
  222. package/skills/ecc-tools-cost-audit/SKILL.md +161 -161
  223. package/skills/email-ops/SKILL.md +122 -122
  224. package/skills/energy-procurement/SKILL.md +228 -228
  225. package/skills/enterprise-agent-ops/SKILL.md +51 -51
  226. package/skills/error-handling/SKILL.md +377 -377
  227. package/skills/eval-harness/SKILL.md +271 -271
  228. package/skills/evm-token-decimals/SKILL.md +131 -131
  229. package/skills/exa-search/SKILL.md +108 -108
  230. package/skills/fal-ai-media/SKILL.md +289 -289
  231. package/skills/fastapi-patterns/SKILL.md +514 -514
  232. package/skills/finance-billing-ops/SKILL.md +128 -128
  233. package/skills/flox-environments/SKILL.md +497 -497
  234. package/skills/flutter-dart-code-review/SKILL.md +436 -436
  235. package/skills/foundation-models-on-device/SKILL.md +243 -243
  236. package/skills/frontend-a11y/SKILL.md +446 -446
  237. package/skills/frontend-design-direction/SKILL.md +93 -93
  238. package/skills/frontend-patterns/SKILL.md +657 -657
  239. package/skills/frontend-slides/SKILL.md +185 -185
  240. package/skills/fsharp-testing/SKILL.md +281 -281
  241. package/skills/gan-style-harness/SKILL.md +279 -279
  242. package/skills/gateguard/SKILL.md +133 -133
  243. package/skills/generating-python-installer/SKILL.md +820 -820
  244. package/skills/git-workflow/SKILL.md +716 -716
  245. package/skills/github-ops/SKILL.md +145 -145
  246. package/skills/golang-patterns/SKILL.md +676 -676
  247. package/skills/golang-testing/SKILL.md +721 -721
  248. package/skills/google-workspace-ops/SKILL.md +96 -96
  249. package/skills/growth-log/SKILL.md +128 -128
  250. package/skills/healthcare-cdss-patterns/SKILL.md +246 -246
  251. package/skills/healthcare-emr-patterns/SKILL.md +160 -160
  252. package/skills/healthcare-eval-harness/SKILL.md +208 -208
  253. package/skills/healthcare-phi-compliance/SKILL.md +146 -146
  254. package/skills/hermes-imports/SKILL.md +89 -89
  255. package/skills/hexagonal-architecture/SKILL.md +277 -277
  256. package/skills/hipaa-compliance/SKILL.md +79 -79
  257. package/skills/homelab-network-readiness/SKILL.md +170 -170
  258. package/skills/homelab-network-setup/SKILL.md +130 -130
  259. package/skills/homelab-pihole-dns/SKILL.md +275 -275
  260. package/skills/homelab-vlan-segmentation/SKILL.md +312 -312
  261. package/skills/homelab-wireguard-vpn/SKILL.md +306 -306
  262. package/skills/hookify-rules/SKILL.md +128 -128
  263. package/skills/inherit-legacy-style/SKILL.md +157 -157
  264. package/skills/intent-driven-development/SKILL.md +360 -360
  265. package/skills/inventory-demand-planning/SKILL.md +247 -247
  266. package/skills/investor-materials/SKILL.md +97 -97
  267. package/skills/investor-outreach/SKILL.md +92 -92
  268. package/skills/ios-icon-gen/SKILL.md +158 -158
  269. package/skills/iterative-retrieval/SKILL.md +212 -212
  270. package/skills/ito-basket-compare/SKILL.md +64 -64
  271. package/skills/ito-compute/SKILL.md +129 -129
  272. package/skills/ito-data-atlas-agent/SKILL.md +64 -64
  273. package/skills/ito-market-intelligence/SKILL.md +61 -61
  274. package/skills/ito-trade-planner/SKILL.md +68 -68
  275. package/skills/java-coding-standards/SKILL.md +384 -384
  276. package/skills/jira-integration/SKILL.md +303 -303
  277. package/skills/jpa-patterns/SKILL.md +152 -152
  278. package/skills/knowledge-ops/SKILL.md +155 -155
  279. package/skills/kotlin-coroutines-flows/SKILL.md +285 -285
  280. package/skills/kotlin-exposed-patterns/SKILL.md +720 -720
  281. package/skills/kotlin-ktor-patterns/SKILL.md +690 -690
  282. package/skills/kotlin-patterns/SKILL.md +712 -712
  283. package/skills/kotlin-testing/SKILL.md +825 -825
  284. package/skills/kubernetes-patterns/SKILL.md +756 -756
  285. package/skills/laravel-patterns/SKILL.md +416 -416
  286. package/skills/laravel-plugin-discovery/SKILL.md +230 -230
  287. package/skills/laravel-security/SKILL.md +948 -948
  288. package/skills/laravel-tdd/SKILL.md +675 -675
  289. package/skills/laravel-verification/SKILL.md +180 -180
  290. package/skills/latency-critical-systems/SKILL.md +75 -75
  291. package/skills/lead-intelligence/SKILL.md +322 -322
  292. package/skills/liquid-glass-design/SKILL.md +279 -279
  293. package/skills/llm-trading-agent-security/SKILL.md +147 -147
  294. package/skills/logistics-exception-management/SKILL.md +222 -222
  295. package/skills/loop-design-check/SKILL.md +143 -143
  296. package/skills/mailtrap-email-integration/SKILL.md +77 -77
  297. package/skills/make-interfaces-feel-better/SKILL.md +152 -152
  298. package/skills/manim-video/SKILL.md +90 -90
  299. package/skills/market-research/SKILL.md +76 -76
  300. package/skills/marketing-campaign/SKILL.md +114 -114
  301. package/skills/mcp-server-patterns/SKILL.md +70 -70
  302. package/skills/messages-ops/SKILL.md +105 -105
  303. package/skills/ml-adoption-playbook/SKILL.md +57 -57
  304. package/skills/mle-workflow/SKILL.md +348 -348
  305. package/skills/motion-advanced/SKILL.md +596 -596
  306. package/skills/motion-foundations/SKILL.md +299 -299
  307. package/skills/motion-patterns/SKILL.md +434 -434
  308. package/skills/motion-ui/SKILL.md +576 -576
  309. package/skills/mysql-patterns/SKILL.md +413 -413
  310. package/skills/nanoclaw-repl/SKILL.md +34 -34
  311. package/skills/nestjs-patterns/SKILL.md +231 -231
  312. package/skills/netmiko-ssh-automation/SKILL.md +174 -174
  313. package/skills/network-bgp-diagnostics/SKILL.md +168 -168
  314. package/skills/network-config-validation/SKILL.md +211 -211
  315. package/skills/network-interface-health/SKILL.md +153 -153
  316. package/skills/nextjs-turbopack/SKILL.md +58 -58
  317. package/skills/nodejs-keccak256/SKILL.md +103 -103
  318. package/skills/nutrient-document-processing/SKILL.md +168 -168
  319. package/skills/nuxt4-patterns/SKILL.md +101 -101
  320. package/skills/openclaw-persona-forge/SKILL.md +289 -289
  321. package/skills/openclaw-persona-forge/references/avatar-style.md +124 -124
  322. package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -53
  323. package/skills/openclaw-persona-forge/references/error-handling.md +53 -53
  324. package/skills/openclaw-persona-forge/references/identity-tension.md +48 -48
  325. package/skills/openclaw-persona-forge/references/naming-system.md +39 -39
  326. package/skills/openclaw-persona-forge/references/output-template.md +166 -166
  327. package/skills/opensource-pipeline/SKILL.md +256 -256
  328. package/skills/orch-add-feature/SKILL.md +45 -45
  329. package/skills/orch-build-mvp/SKILL.md +49 -49
  330. package/skills/orch-change-feature/SKILL.md +43 -43
  331. package/skills/orch-fix-defect/SKILL.md +43 -43
  332. package/skills/orch-pipeline/SKILL.md +121 -121
  333. package/skills/orch-refine-code/SKILL.md +44 -44
  334. package/skills/parallel-execution-optimizer/SKILL.md +74 -74
  335. package/skills/perl-patterns/SKILL.md +505 -505
  336. package/skills/perl-security/SKILL.md +504 -504
  337. package/skills/perl-testing/SKILL.md +476 -476
  338. package/skills/plan-canvas/SKILL.md +153 -153
  339. package/skills/plan-orchestrate/SKILL.md +263 -263
  340. package/skills/plankton-code-quality/SKILL.md +237 -237
  341. package/skills/postgres-patterns/SKILL.md +148 -148
  342. package/skills/prediction-market-oracle-research/SKILL.md +64 -64
  343. package/skills/prediction-market-risk-review/SKILL.md +61 -61
  344. package/skills/premium-web-design/SKILL.md +154 -154
  345. package/skills/prisma-patterns/SKILL.md +401 -401
  346. package/skills/product-capability/SKILL.md +142 -142
  347. package/skills/product-lens/SKILL.md +93 -93
  348. package/skills/production-audit/SKILL.md +207 -207
  349. package/skills/production-scheduling/SKILL.md +238 -238
  350. package/skills/project-flow-ops/SKILL.md +112 -112
  351. package/skills/prompt-optimizer/SKILL.md +398 -398
  352. package/skills/python-patterns/SKILL.md +751 -751
  353. package/skills/python-testing/SKILL.md +817 -817
  354. package/skills/pytorch-patterns/SKILL.md +397 -397
  355. package/skills/quality-nonconformance/SKILL.md +260 -260
  356. package/skills/quarkus-patterns/SKILL.md +723 -723
  357. package/skills/quarkus-security/SKILL.md +468 -468
  358. package/skills/quarkus-tdd/SKILL.md +812 -812
  359. package/skills/quarkus-verification/SKILL.md +480 -480
  360. package/skills/ralphinho-rfc-pipeline/SKILL.md +68 -68
  361. package/skills/react-native-patterns/SKILL.md +326 -326
  362. package/skills/react-patterns/SKILL.md +342 -342
  363. package/skills/react-performance/SKILL.md +575 -575
  364. package/skills/react-testing/SKILL.md +424 -424
  365. package/skills/recsys-pipeline-architect/SKILL.md +115 -115
  366. package/skills/recursive-decision-ledger/SKILL.md +81 -81
  367. package/skills/redis-patterns/SKILL.md +404 -404
  368. package/skills/regex-vs-llm-structured-text/SKILL.md +221 -221
  369. package/skills/remotion-video-creation/SKILL.md +43 -43
  370. package/skills/repo-scan/SKILL.md +79 -79
  371. package/skills/research-ops/SKILL.md +113 -113
  372. package/skills/returns-reverse-logistics/SKILL.md +240 -240
  373. package/skills/rules-distill/SKILL.md +265 -265
  374. package/skills/rust-patterns/SKILL.md +500 -500
  375. package/skills/rust-testing/SKILL.md +501 -501
  376. package/skills/safety-guard/SKILL.md +76 -76
  377. package/skills/santa-method/SKILL.md +307 -307
  378. package/skills/scientific-db-pubmed-database/SKILL.md +176 -176
  379. package/skills/scientific-db-uspto-database/SKILL.md +178 -178
  380. package/skills/scientific-pkg-gget/SKILL.md +167 -167
  381. package/skills/scientific-thinking-literature-review/SKILL.md +193 -193
  382. package/skills/scientific-thinking-scholar-evaluation/SKILL.md +161 -161
  383. package/skills/search-first/SKILL.md +183 -183
  384. package/skills/security-bounty-hunter/SKILL.md +100 -100
  385. package/skills/security-review/SKILL.md +504 -504
  386. package/skills/security-scan/SKILL.md +166 -166
  387. package/skills/seo/SKILL.md +155 -155
  388. package/skills/skill-comply/SKILL.md +59 -59
  389. package/skills/skill-scout/SKILL.md +141 -141
  390. package/skills/skill-stocktake/SKILL.md +195 -195
  391. package/skills/social-graph-ranker/SKILL.md +155 -155
  392. package/skills/social-publisher/SKILL.md +130 -130
  393. package/skills/springboot-patterns/SKILL.md +315 -315
  394. package/skills/springboot-security/SKILL.md +273 -273
  395. package/skills/springboot-tdd/SKILL.md +159 -159
  396. package/skills/springboot-verification/SKILL.md +232 -232
  397. package/skills/strategic-compact/SKILL.md +142 -142
  398. package/skills/swift-actor-persistence/SKILL.md +144 -144
  399. package/skills/swift-concurrency-6-2/SKILL.md +216 -216
  400. package/skills/swift-protocol-di-testing/SKILL.md +191 -191
  401. package/skills/swiftui-patterns/SKILL.md +259 -259
  402. package/skills/taste/SKILL.md +264 -264
  403. package/skills/taste/references/genre-taxonomy.md +87 -87
  404. package/skills/tdd-workflow/SKILL.md +583 -583
  405. package/skills/team-agent-orchestration/SKILL.md +111 -111
  406. package/skills/team-builder/SKILL.md +169 -169
  407. package/skills/terminal-ops/SKILL.md +110 -110
  408. package/skills/tinystruct-patterns/SKILL.md +279 -279
  409. package/skills/tinystruct-patterns/references/architecture.md +90 -90
  410. package/skills/tinystruct-patterns/references/data-handling.md +60 -60
  411. package/skills/tinystruct-patterns/references/database.md +99 -99
  412. package/skills/tinystruct-patterns/references/routing.md +64 -64
  413. package/skills/tinystruct-patterns/references/system-usage.md +97 -97
  414. package/skills/tinystruct-patterns/references/testing.md +72 -72
  415. package/skills/token-budget-advisor/SKILL.md +134 -134
  416. package/skills/ui-demo/SKILL.md +466 -466
  417. package/skills/ui-to-vue/SKILL.md +135 -135
  418. package/skills/uncloud/SKILL.md +344 -344
  419. package/skills/unified-memory/SKILL.md +170 -170
  420. package/skills/unified-notifications-ops/SKILL.md +188 -188
  421. package/skills/verification-loop/SKILL.md +129 -129
  422. package/skills/video-editing/SKILL.md +311 -311
  423. package/skills/videodb/SKILL.md +375 -375
  424. package/skills/visa-doc-translate/SKILL.md +117 -117
  425. package/skills/vite-patterns/SKILL.md +450 -450
  426. package/skills/vue-patterns/SKILL.md +471 -471
  427. package/skills/windows-desktop-e2e/SKILL.md +888 -888
  428. package/skills/workspace-surface-audit/SKILL.md +126 -126
  429. package/skills/x-api/SKILL.md +235 -235
@@ -0,0 +1,2024 @@
1
+ [
2
+ {
3
+ "id": "switzer-semibold",
4
+ "name": "Switzer",
5
+ "class": "grotesk-tight",
6
+ "display": {
7
+ "family": "Switzer",
8
+ "source": "fontshare",
9
+ "slug": "switzer",
10
+ "weights": [
11
+ 600
12
+ ],
13
+ "italic": false,
14
+ "settings": "weight 600 · tracking -0.04em · leading 0.95 · sentence case; charcoal rather than pure black",
15
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=switzer@400,500,600&display=swap\" rel=\"stylesheet\">"
16
+ },
17
+ "text": {
18
+ "family": "Switzer",
19
+ "source": "fontshare",
20
+ "slug": "switzer",
21
+ "weights": [
22
+ 400,
23
+ 500
24
+ ],
25
+ "italic": false,
26
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking -0.005em",
27
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=switzer@400,500,600&display=swap\" rel=\"stylesheet\">"
28
+ },
29
+ "standsInFor": [
30
+ "Suisse Intl",
31
+ "Neue Haas Grotesk"
32
+ ],
33
+ "note": "One neo-grotesk doing everything: semibold headings pulled tight, small regular text, no capitals and no second voice. Suits software, hardware and studio pages that want to look exact and unshowy.",
34
+ "seenIn": [
35
+ "aww-noho",
36
+ "opl-vessa",
37
+ "aww-aspen-search",
38
+ "opl-rows"
39
+ ],
40
+ "links": [
41
+ "https://api.fontshare.com/v2/css?f[]=switzer@400,500,600&display=swap"
42
+ ],
43
+ "scale": {
44
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
45
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
46
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
47
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
48
+ }
49
+ },
50
+ {
51
+ "id": "general-sans-bold",
52
+ "name": "General Sans",
53
+ "class": "grotesk-tight",
54
+ "display": {
55
+ "family": "General Sans",
56
+ "source": "fontshare",
57
+ "slug": "general-sans",
58
+ "weights": [
59
+ 700
60
+ ],
61
+ "italic": false,
62
+ "settings": "weight 700 · tracking -0.02em · leading 0.9 · sentence case; sizes jump straight from 16px text to 10vw and larger",
63
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=general-sans@400,500,700&display=swap\" rel=\"stylesheet\">"
64
+ },
65
+ "text": {
66
+ "family": "General Sans",
67
+ "source": "fontshare",
68
+ "slug": "general-sans",
69
+ "weights": [
70
+ 400,
71
+ 500
72
+ ],
73
+ "italic": false,
74
+ "settings": "400 for body and lists, 500 for emphasis · leading 1.45 · tracking 0",
75
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=general-sans@400,500,700&display=swap\" rel=\"stylesheet\">"
76
+ },
77
+ "standsInFor": [
78
+ "PP Neue Montreal",
79
+ "Aeonik"
80
+ ],
81
+ "note": "A grotesk with slightly geometric bowls, set bold and very large against plain 16px text with nothing in between. Suits studios, type and product launches, and finance or tech brands that lead with the name.",
82
+ "seenIn": [
83
+ "aww-pp-neue-montreal",
84
+ "aww-moto-finance",
85
+ "opl-brikkenco",
86
+ "aww-nothin"
87
+ ],
88
+ "links": [
89
+ "https://api.fontshare.com/v2/css?f[]=general-sans@400,500,700&display=swap"
90
+ ],
91
+ "scale": {
92
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
93
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
94
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
95
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
96
+ }
97
+ },
98
+ {
99
+ "id": "schibsted-heavy",
100
+ "name": "Schibsted Grotesk",
101
+ "class": "grotesk-tight",
102
+ "display": {
103
+ "family": "Schibsted Grotesk",
104
+ "source": "google",
105
+ "weights": [
106
+ 800
107
+ ],
108
+ "italic": false,
109
+ "settings": "weight 800 · tracking -0.05em · leading 0.88 · sentence case or all lowercase",
110
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Schibsted+Grotesk:wght@400;600;800&display=swap\" rel=\"stylesheet\">"
111
+ },
112
+ "text": {
113
+ "family": "Schibsted Grotesk",
114
+ "source": "google",
115
+ "weights": [
116
+ 400,
117
+ 600
118
+ ],
119
+ "italic": false,
120
+ "settings": "400 for paragraphs, 600 for navigation and other functional text · leading 1.4 · tracking -0.01em",
121
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Schibsted+Grotesk:wght@400;600;800&display=swap\" rel=\"stylesheet\">"
122
+ },
123
+ "standsInFor": [
124
+ "ABC Diatype",
125
+ "Khteka"
126
+ ],
127
+ "note": "A compact, warm grotesk set heavy with letters almost touching; small text stays in the same family at semibold. Suits music, events and culture pages where the type is the image.",
128
+ "seenIn": [
129
+ "aww-paul-kalkbrenner",
130
+ "opl-rendez-vous-franceclat",
131
+ "aww-monolog"
132
+ ],
133
+ "links": [
134
+ "https://fonts.googleapis.com/css2?family=Schibsted+Grotesk:wght@400;600;800&display=swap"
135
+ ],
136
+ "scale": {
137
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
138
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
139
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
140
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
141
+ }
142
+ },
143
+ {
144
+ "id": "hanken-medium",
145
+ "name": "Hanken Grotesk",
146
+ "class": "grotesk-tight",
147
+ "display": {
148
+ "family": "Hanken Grotesk",
149
+ "source": "google",
150
+ "weights": [
151
+ 500
152
+ ],
153
+ "italic": false,
154
+ "settings": "weight 500 · tracking -0.05em · leading 0.9 · sentence case; one statement size (about 6vw) used for every heading",
155
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500&display=swap\" rel=\"stylesheet\">"
156
+ },
157
+ "text": {
158
+ "family": "Hanken Grotesk",
159
+ "source": "google",
160
+ "weights": [
161
+ 400,
162
+ 500
163
+ ],
164
+ "italic": false,
165
+ "settings": "400 for body, 500 for emphasis · leading 1.45 · tracking -0.005em",
166
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500&display=swap\" rel=\"stylesheet\">"
167
+ },
168
+ "standsInFor": [
169
+ "Akzidenz Grotesk",
170
+ "LayGrotesk"
171
+ ],
172
+ "note": "Medium-weight grotesk statements at one large size against caption-size text: a two-size system with no bold. Suits portfolios, agencies and tools that speak in short declarative lines.",
173
+ "seenIn": [
174
+ "aww-bleibtgleich26",
175
+ "aww-made-with-gsap-1",
176
+ "opl-locker-land",
177
+ "opl-builders-table"
178
+ ],
179
+ "links": [
180
+ "https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500&display=swap"
181
+ ],
182
+ "scale": {
183
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
184
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
185
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
186
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
187
+ }
188
+ },
189
+ {
190
+ "id": "bricolage-contrast",
191
+ "name": "Bricolage Grotesque",
192
+ "class": "grotesk-tight",
193
+ "display": {
194
+ "family": "Bricolage Grotesque",
195
+ "source": "google",
196
+ "weights": [
197
+ 600
198
+ ],
199
+ "italic": false,
200
+ "settings": "weight 600 · tracking -0.04em · leading 0.92 · sentence case; leave optical sizing on so large sizes tighten and gain contrast",
201
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:wght@400;500;600&display=swap\" rel=\"stylesheet\">"
202
+ },
203
+ "text": {
204
+ "family": "Bricolage Grotesque",
205
+ "source": "google",
206
+ "weights": [
207
+ 400,
208
+ 500
209
+ ],
210
+ "italic": false,
211
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
212
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:wght@400;500;600&display=swap\" rel=\"stylesheet\">"
213
+ },
214
+ "standsInFor": [
215
+ "Beausite Classic",
216
+ "F37 Analog"
217
+ ],
218
+ "note": "A grotesk with visible stroke contrast and slightly irregular curves, so headings look drawn rather than engineered. Suits reports, consultancies and design-led software that want warmth without a serif.",
219
+ "seenIn": [
220
+ "aww-ai-in-design-report-2026",
221
+ "aww-illoca",
222
+ "opl-ohhmydesign"
223
+ ],
224
+ "links": [
225
+ "https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:wght@400;500;600&display=swap"
226
+ ],
227
+ "scale": {
228
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
229
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
230
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
231
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
232
+ }
233
+ },
234
+ {
235
+ "id": "franklin-source",
236
+ "name": "Libre Franklin / Source Serif 4",
237
+ "class": "grotesk-tight",
238
+ "display": {
239
+ "family": "Libre Franklin",
240
+ "source": "google",
241
+ "weights": [
242
+ 700
243
+ ],
244
+ "italic": false,
245
+ "settings": "weight 700 · tracking -0.035em · leading 0.92 · uppercase for the title, sentence case for section headings",
246
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Libre+Franklin:wght@700&family=Source+Serif+4:ital,wght@0,400;0,600;1,400;1,600&display=swap\" rel=\"stylesheet\">"
247
+ },
248
+ "text": {
249
+ "family": "Source Serif 4",
250
+ "source": "google",
251
+ "weights": [
252
+ 400,
253
+ 600
254
+ ],
255
+ "italic": true,
256
+ "settings": "400 for body, 600 for emphasis, italic for quotations · leading 1.55 · tracking 0",
257
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Libre+Franklin:wght@700&family=Source+Serif+4:ital,wght@0,400;0,600;1,400;1,600&display=swap\" rel=\"stylesheet\">"
258
+ },
259
+ "standsInFor": [
260
+ "Founders Grotesk",
261
+ "Die Grotesk",
262
+ "NON Natural Grotesk"
263
+ ],
264
+ "note": "An American gothic for headings over a sober transitional serif for reading, the pairing of a newspaper front page. Suits essays, annual reports, archives and finance pages that have real paragraphs.",
265
+ "seenIn": [
266
+ "aww-dragonfly-redux",
267
+ "aww-trevor-noah",
268
+ "aww-mosbys-files"
269
+ ],
270
+ "links": [
271
+ "https://fonts.googleapis.com/css2?family=Libre+Franklin:wght@700&family=Source+Serif+4:ital,wght@0,400;0,600;1,400;1,600&display=swap"
272
+ ],
273
+ "scale": {
274
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
275
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
276
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
277
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
278
+ }
279
+ },
280
+ {
281
+ "id": "switzer-roman",
282
+ "name": "Switzer",
283
+ "class": "grotesk-light",
284
+ "display": {
285
+ "family": "Switzer",
286
+ "source": "fontshare",
287
+ "slug": "switzer",
288
+ "weights": [
289
+ 400
290
+ ],
291
+ "italic": false,
292
+ "settings": "weight 400 · tracking -0.03em · leading 1.1 · sentence case; headings stay small (28–40px) and at most one line jumps to 5vw",
293
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=switzer@400,500&display=swap\" rel=\"stylesheet\">"
294
+ },
295
+ "text": {
296
+ "family": "Switzer",
297
+ "source": "fontshare",
298
+ "slug": "switzer",
299
+ "weights": [
300
+ 400,
301
+ 500
302
+ ],
303
+ "italic": false,
304
+ "settings": "400 for everything, 500 only for names and links · leading 1.45 · tracking -0.01em; hierarchy by ink against mid-grey",
305
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=switzer@400,500&display=swap\" rel=\"stylesheet\">"
306
+ },
307
+ "standsInFor": [
308
+ "Neue Haas Grotesk 55 Roman",
309
+ "Helvetica Now"
310
+ ],
311
+ "note": "A single roman weight of a Swiss neo-grotesk at two or three modest sizes; position and grey value do the work that size and bold usually do. Suits architects, galleries, studios and any quiet page where photographs carry the scale.",
312
+ "seenIn": [
313
+ "aww-revelatio-studio",
314
+ "opl-spatial",
315
+ "aww-pensatori-irrazionali",
316
+ "opl-compile"
317
+ ],
318
+ "links": [
319
+ "https://api.fontshare.com/v2/css?f[]=switzer@400,500&display=swap"
320
+ ],
321
+ "scale": {
322
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
323
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
324
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
325
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
326
+ }
327
+ },
328
+ {
329
+ "id": "archivo-regular",
330
+ "name": "Archivo",
331
+ "class": "grotesk-light",
332
+ "display": {
333
+ "family": "Archivo",
334
+ "source": "google",
335
+ "weights": [
336
+ 400
337
+ ],
338
+ "italic": false,
339
+ "settings": "weight 400 · tracking -0.02em · leading 1.0 · sentence case; never bold, inactive items fade to grey",
340
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Archivo:wght@400;600&display=swap\" rel=\"stylesheet\">"
341
+ },
342
+ "text": {
343
+ "family": "Archivo",
344
+ "source": "google",
345
+ "weights": [
346
+ 400,
347
+ 600
348
+ ],
349
+ "italic": false,
350
+ "settings": "400 for body, 600 for buttons and short emphasis · leading 1.5 · tracking 0",
351
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Archivo:wght@400;600&display=swap\" rel=\"stylesheet\">"
352
+ },
353
+ "standsInFor": [
354
+ "Scto Grotesk A",
355
+ "Cash Sans"
356
+ ],
357
+ "note": "A sturdy grotesque kept at regular weight even at 88px, so the page reads as composed rather than loud. Suits finance, infrastructure and research pages that need to look sober and current.",
358
+ "seenIn": [
359
+ "aww-sharplink",
360
+ "opl-plastic",
361
+ "opl-lovably",
362
+ "opl-berd"
363
+ ],
364
+ "links": [
365
+ "https://fonts.googleapis.com/css2?family=Archivo:wght@400;600&display=swap"
366
+ ],
367
+ "scale": {
368
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
369
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
370
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
371
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
372
+ }
373
+ },
374
+ {
375
+ "id": "clash-grotesk-regular",
376
+ "name": "Clash Grotesk",
377
+ "class": "grotesk-light",
378
+ "display": {
379
+ "family": "Clash Grotesk",
380
+ "source": "fontshare",
381
+ "slug": "clash-grotesk",
382
+ "weights": [
383
+ 400
384
+ ],
385
+ "italic": false,
386
+ "settings": "weight 400 · tracking -0.03em · leading 0.95 · sentence case, or uppercase for one statement",
387
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=clash-grotesk@400,500&display=swap\" rel=\"stylesheet\">"
388
+ },
389
+ "text": {
390
+ "family": "Clash Grotesk",
391
+ "source": "fontshare",
392
+ "slug": "clash-grotesk",
393
+ "weights": [
394
+ 400,
395
+ 500
396
+ ],
397
+ "italic": false,
398
+ "settings": "400 for body, 500 for emphasis · leading 1.4 · tracking 0",
399
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=clash-grotesk@400,500&display=swap\" rel=\"stylesheet\">"
400
+ },
401
+ "standsInFor": [
402
+ "Sneak",
403
+ "ABC Monument Grotesk"
404
+ ],
405
+ "note": "A slightly narrow neo-grotesk with closed apertures, used at regular weight from marquee size down to paragraphs. Suits agencies and digital studios that want large type without heaviness.",
406
+ "seenIn": [
407
+ "aww-px-push",
408
+ "opl-wild-as",
409
+ "aww-sstr-friction-reduction"
410
+ ],
411
+ "links": [
412
+ "https://api.fontshare.com/v2/css?f[]=clash-grotesk@400,500&display=swap"
413
+ ],
414
+ "scale": {
415
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
416
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
417
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
418
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
419
+ }
420
+ },
421
+ {
422
+ "id": "work-sans-light",
423
+ "name": "Work Sans",
424
+ "class": "grotesk-light",
425
+ "display": {
426
+ "family": "Work Sans",
427
+ "source": "google",
428
+ "weights": [
429
+ 300
430
+ ],
431
+ "italic": false,
432
+ "settings": "weight 300 · tracking -0.035em · leading 1.0 · sentence case",
433
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;400;500&display=swap\" rel=\"stylesheet\">"
434
+ },
435
+ "text": {
436
+ "family": "Work Sans",
437
+ "source": "google",
438
+ "weights": [
439
+ 400,
440
+ 500
441
+ ],
442
+ "italic": false,
443
+ "settings": "400 for body, 500 for emphasis · leading 1.55 · tracking 0",
444
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;400;500&display=swap\" rel=\"stylesheet\">"
445
+ },
446
+ "standsInFor": [
447
+ "ABC Favorit",
448
+ "Clarkson Light",
449
+ "PP Mori"
450
+ ],
451
+ "note": "A light grotesque with open, slightly old-fashioned shapes; large headings look airy and the text weight beneath stays easy to read. Suits AI and research products, fashion houses and calm brand sites.",
452
+ "seenIn": [
453
+ "aww-cerebrium",
454
+ "aww-squarespace-foundations",
455
+ "aww-boc-studio"
456
+ ],
457
+ "links": [
458
+ "https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;400;500&display=swap"
459
+ ],
460
+ "scale": {
461
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
462
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
463
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
464
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
465
+ }
466
+ },
467
+ {
468
+ "id": "anton-work",
469
+ "name": "Anton / Work Sans",
470
+ "class": "condensed-heavy",
471
+ "display": {
472
+ "family": "Anton",
473
+ "source": "google",
474
+ "weights": [
475
+ 400
476
+ ],
477
+ "italic": false,
478
+ "settings": "weight 400 (single heavy cut) · tracking -0.01em · leading 0.86 · uppercase",
479
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Anton:wght@400&family=Work+Sans:wght@400;600&display=swap\" rel=\"stylesheet\">"
480
+ },
481
+ "text": {
482
+ "family": "Work Sans",
483
+ "source": "google",
484
+ "weights": [
485
+ 400,
486
+ 600
487
+ ],
488
+ "italic": false,
489
+ "settings": "400 for body, 600 for links and short emphasis · leading 1.5 · tracking 0",
490
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Anton:wght@400&family=Work+Sans:wght@400;600&display=swap\" rel=\"stylesheet\">"
491
+ },
492
+ "standsInFor": [
493
+ "Druk",
494
+ "Thunder",
495
+ "Acme Gothic"
496
+ ],
497
+ "note": "Compressed heavy capitals stacked tight, with a neutral grotesque kept small beneath. Suits fashion drops, sport, nightlife and any page built as a poster.",
498
+ "seenIn": [
499
+ "aww-serotoninn",
500
+ "opl-juggle",
501
+ "opl-lorenzo-bocchi-photography"
502
+ ],
503
+ "links": [
504
+ "https://fonts.googleapis.com/css2?family=Anton:wght@400&family=Work+Sans:wght@400;600&display=swap"
505
+ ],
506
+ "scale": {
507
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
508
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
509
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
510
+ "step-head": "clamp(2.5rem, 1.2rem + 5vw, 5.5rem)"
511
+ }
512
+ },
513
+ {
514
+ "id": "big-shoulders-public",
515
+ "name": "Big Shoulders / Public Sans",
516
+ "class": "condensed-heavy",
517
+ "display": {
518
+ "family": "Big Shoulders",
519
+ "source": "google",
520
+ "weights": [
521
+ 800
522
+ ],
523
+ "italic": false,
524
+ "settings": "weight 800 · tracking -0.005em · leading 0.88 · uppercase",
525
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Big+Shoulders:wght@800&family=Public+Sans:wght@400;600&display=swap\" rel=\"stylesheet\">"
526
+ },
527
+ "text": {
528
+ "family": "Public Sans",
529
+ "source": "google",
530
+ "weights": [
531
+ 400,
532
+ 600
533
+ ],
534
+ "italic": false,
535
+ "settings": "400 for body, 600 for emphasis · leading 1.5 · tracking 0",
536
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Big+Shoulders:wght@800&family=Public+Sans:wght@400;600&display=swap\" rel=\"stylesheet\">"
537
+ },
538
+ "standsInFor": [
539
+ "Founders Grotesk Condensed",
540
+ "PP Neue York",
541
+ "Knockout"
542
+ ],
543
+ "note": "A tall American gothic taken from city signage, blunt and civic, over a plain public-service sans. Suits culture indexes, community projects, bars, sport clubs and local campaigns.",
544
+ "seenIn": [
545
+ "aww-mosbys-files",
546
+ "opl-the-sapphic-bar-index",
547
+ "opl-the-deep-end",
548
+ "aww-colonia-zacamil"
549
+ ],
550
+ "links": [
551
+ "https://fonts.googleapis.com/css2?family=Big+Shoulders:wght@800&family=Public+Sans:wght@400;600&display=swap"
552
+ ],
553
+ "scale": {
554
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
555
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
556
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
557
+ "step-head": "clamp(2.5rem, 1.2rem + 5vw, 5.5rem)"
558
+ }
559
+ },
560
+ {
561
+ "id": "archivo-compressed",
562
+ "name": "Archivo",
563
+ "class": "condensed-heavy",
564
+ "display": {
565
+ "family": "Archivo",
566
+ "source": "google",
567
+ "weights": [
568
+ 800
569
+ ],
570
+ "italic": false,
571
+ "settings": "weight 800 at font-stretch 62% (load the wdth axis and use its narrowest setting) · tracking -0.01em · leading 0.86 · uppercase",
572
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@62..125,100..900&display=swap\" rel=\"stylesheet\">"
573
+ },
574
+ "text": {
575
+ "family": "Archivo",
576
+ "source": "google",
577
+ "weights": [
578
+ 400,
579
+ 500
580
+ ],
581
+ "italic": false,
582
+ "settings": "normal width · 400 for body, 500 for buttons and emphasis · leading 1.5 · tracking 0",
583
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@62..125,100..900&display=swap\" rel=\"stylesheet\">"
584
+ },
585
+ "standsInFor": [
586
+ "Helvetica Now Display Condensed"
587
+ ],
588
+ "note": "One variable family pushed to its narrowest, heaviest setting for headlines and relaxed to normal width for text, so display and body share a skeleton. Suits sportswear, campaigns and fintech pages that speak in capitals.",
589
+ "seenIn": [
590
+ "aww-decathlon-yestalgia",
591
+ "opl-uglycash",
592
+ "opl-juggle"
593
+ ],
594
+ "links": [
595
+ "https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@62..125,100..900&display=swap"
596
+ ],
597
+ "scale": {
598
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
599
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
600
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
601
+ "step-head": "clamp(2.5rem, 1.2rem + 5vw, 5.5rem)"
602
+ }
603
+ },
604
+ {
605
+ "id": "bebas-garamond",
606
+ "name": "Bebas Neue / EB Garamond",
607
+ "class": "condensed-heavy",
608
+ "display": {
609
+ "family": "Bebas Neue",
610
+ "source": "google",
611
+ "weights": [
612
+ 400
613
+ ],
614
+ "italic": false,
615
+ "settings": "weight 400 (single cut, capitals only) · tracking -0.02em, tightening to -0.06em above 15vw · leading 0.85 · uppercase",
616
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Bebas+Neue:wght@400&family=EB+Garamond:ital,wght@0,400;0,500;1,400;1,500&display=swap\" rel=\"stylesheet\">"
617
+ },
618
+ "text": {
619
+ "family": "EB Garamond",
620
+ "source": "google",
621
+ "weights": [
622
+ 400,
623
+ 500
624
+ ],
625
+ "italic": true,
626
+ "settings": "leading 1.45 · tracking 0",
627
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Bebas+Neue:wght@400&family=EB+Garamond:ital,wght@0,400;0,500;1,400;1,500&display=swap\" rel=\"stylesheet\">"
628
+ },
629
+ "standsInFor": [
630
+ "Founders Grotesk Condensed",
631
+ "Cardinal Classic Long",
632
+ "Signifier"
633
+ ],
634
+ "note": "Huge condensed capitals against a light old-style serif with italics: an industrial voice and a literary one, with a twenty-fold size gap between them. Suits crafted physical products, spirits, outdoor goods and hospitality.",
635
+ "seenIn": [
636
+ "aww-longbow",
637
+ "aww-white-desert",
638
+ "aww-mosbys-files"
639
+ ],
640
+ "links": [
641
+ "https://fonts.googleapis.com/css2?family=Bebas+Neue:wght@400&family=EB+Garamond:ital,wght@0,400;0,500;1,400;1,500&display=swap"
642
+ ],
643
+ "scale": {
644
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
645
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
646
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
647
+ "step-head": "clamp(2.5rem, 1.2rem + 5vw, 5.5rem)"
648
+ }
649
+ },
650
+ {
651
+ "id": "barlow-condensed",
652
+ "name": "Barlow Condensed / Barlow",
653
+ "class": "condensed-heavy",
654
+ "display": {
655
+ "family": "Barlow Condensed",
656
+ "source": "google",
657
+ "weights": [
658
+ 700
659
+ ],
660
+ "italic": false,
661
+ "settings": "weight 700 · tracking -0.02em · leading 0.9 · uppercase for statements, mixed case for item titles",
662
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@700&family=Barlow:wght@400;500&display=swap\" rel=\"stylesheet\">"
663
+ },
664
+ "text": {
665
+ "family": "Barlow",
666
+ "source": "google",
667
+ "weights": [
668
+ 400,
669
+ 500
670
+ ],
671
+ "italic": false,
672
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
673
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@700&family=Barlow:wght@400;500&display=swap\" rel=\"stylesheet\">"
674
+ },
675
+ "standsInFor": [
676
+ "FF DIN Condensed",
677
+ "Helvetica Now Display Condensed"
678
+ ],
679
+ "note": "Road-sign condensed type with squared curves, bold but not compressed into a wall, with its normal-width sibling for text. Suits logistics, motorsport, hardware and directories with many short titles.",
680
+ "seenIn": [
681
+ "aww-julien-calot",
682
+ "opl-medium-rare",
683
+ "opl-uglycash"
684
+ ],
685
+ "links": [
686
+ "https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@700&family=Barlow:wght@400;500&display=swap"
687
+ ],
688
+ "scale": {
689
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
690
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
691
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
692
+ "step-head": "clamp(2.5rem, 1.2rem + 5vw, 5.5rem)"
693
+ }
694
+ },
695
+ {
696
+ "id": "panchang-switzer",
697
+ "name": "Panchang / Switzer",
698
+ "class": "extended-heavy",
699
+ "display": {
700
+ "family": "Panchang",
701
+ "source": "fontshare",
702
+ "slug": "panchang",
703
+ "weights": [
704
+ 700
705
+ ],
706
+ "italic": false,
707
+ "settings": "weight 700 · tracking -0.02em · leading 1.0 · uppercase; four words or fewer per line because the face is very wide",
708
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=panchang@700&display=swap\" rel=\"stylesheet\">\n<link href=\"https://api.fontshare.com/v2/css?f[]=switzer@400,500&display=swap\" rel=\"stylesheet\">"
709
+ },
710
+ "text": {
711
+ "family": "Switzer",
712
+ "source": "fontshare",
713
+ "slug": "switzer",
714
+ "weights": [
715
+ 400,
716
+ 500
717
+ ],
718
+ "italic": false,
719
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
720
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=panchang@700&display=swap\" rel=\"stylesheet\">\n<link href=\"https://api.fontshare.com/v2/css?f[]=switzer@400,500&display=swap\" rel=\"stylesheet\">"
721
+ },
722
+ "standsInFor": [
723
+ "Monument Extended",
724
+ "Owners Wide",
725
+ "Nimbus Sans Extended"
726
+ ],
727
+ "note": "A flat-sided extended grotesk in heavy capitals, wide enough that two words fill the screen, with a neutral sans kept small. Suits portfolios, real estate, travel and brand sites that want a broad, confident wordmark.",
728
+ "seenIn": [
729
+ "opl-belen-jones",
730
+ "aww-lxl-creative",
731
+ "aww-realevate",
732
+ "aww-the-tuscan-journey-begins"
733
+ ],
734
+ "links": [
735
+ "https://api.fontshare.com/v2/css?f[]=panchang@700&display=swap",
736
+ "https://api.fontshare.com/v2/css?f[]=switzer@400,500&display=swap"
737
+ ],
738
+ "scale": {
739
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
740
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
741
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
742
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
743
+ }
744
+ },
745
+ {
746
+ "id": "tiktok-sans-wide",
747
+ "name": "TikTok Sans",
748
+ "class": "extended-heavy",
749
+ "display": {
750
+ "family": "TikTok Sans",
751
+ "source": "google",
752
+ "weights": [
753
+ 800
754
+ ],
755
+ "italic": false,
756
+ "settings": "weight 800 at font-stretch 150% (load the wdth axis and use its widest setting) · tracking -0.01em · leading 1.0 · uppercase",
757
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=TikTok+Sans:wdth,wght@75..150,300..900&display=swap\" rel=\"stylesheet\">"
758
+ },
759
+ "text": {
760
+ "family": "TikTok Sans",
761
+ "source": "google",
762
+ "weights": [
763
+ 400,
764
+ 500
765
+ ],
766
+ "italic": false,
767
+ "settings": "normal width · 400 for body, 500 for emphasis · leading 1.45 · tracking 0",
768
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=TikTok+Sans:wdth,wght@75..150,300..900&display=swap\" rel=\"stylesheet\">"
769
+ },
770
+ "standsInFor": [
771
+ "Herokid Wide",
772
+ "At Aero",
773
+ "Wintyr"
774
+ ],
775
+ "note": "One variable grotesk stretched wide and bold for the headline and the closing statement, then returned to normal width for reading. Suits personal portfolios, apps and tech brands that want width without a second family.",
776
+ "seenIn": [
777
+ "aww-haoqi-design",
778
+ "opl-tara",
779
+ "aww-produx-design",
780
+ "opl-proooof"
781
+ ],
782
+ "links": [
783
+ "https://fonts.googleapis.com/css2?family=TikTok+Sans:wdth,wght@75..150,300..900&display=swap"
784
+ ],
785
+ "scale": {
786
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
787
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
788
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
789
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
790
+ }
791
+ },
792
+ {
793
+ "id": "unbounded-onest",
794
+ "name": "Unbounded / Onest",
795
+ "class": "extended-heavy",
796
+ "display": {
797
+ "family": "Unbounded",
798
+ "source": "google",
799
+ "weights": [
800
+ 800
801
+ ],
802
+ "italic": false,
803
+ "settings": "weight 800 · tracking -0.03em · leading 1.0 · uppercase",
804
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Unbounded:wght@800&family=Onest:wght@400;500&display=swap\" rel=\"stylesheet\">"
805
+ },
806
+ "text": {
807
+ "family": "Onest",
808
+ "source": "google",
809
+ "weights": [
810
+ 400,
811
+ 500
812
+ ],
813
+ "italic": false,
814
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
815
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Unbounded:wght@800&family=Onest:wght@400;500&display=swap\" rel=\"stylesheet\">"
816
+ },
817
+ "standsInFor": [
818
+ "IntraNet",
819
+ "Nekst",
820
+ "Owners Wide"
821
+ ],
822
+ "note": "A wide display sans built from rounded squares, heavy and a little architectural, beside a clean text grotesk. Suits architecture indexes, watches, mobility and events that want a title with a constructed feel.",
823
+ "seenIn": [
824
+ "opl-belgrade-architecture",
825
+ "aww-the-watch",
826
+ "aww-risk",
827
+ "aww-house-of-honey-1"
828
+ ],
829
+ "links": [
830
+ "https://fonts.googleapis.com/css2?family=Unbounded:wght@800&family=Onest:wght@400;500&display=swap"
831
+ ],
832
+ "scale": {
833
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
834
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
835
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
836
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
837
+ }
838
+ },
839
+ {
840
+ "id": "chivo-black",
841
+ "name": "Chivo",
842
+ "class": "heavy-black",
843
+ "display": {
844
+ "family": "Chivo",
845
+ "source": "google",
846
+ "weights": [
847
+ 900
848
+ ],
849
+ "italic": false,
850
+ "settings": "weight 900 · tracking -0.05em · leading 0.88 · uppercase",
851
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Chivo:wght@400;700;900&display=swap\" rel=\"stylesheet\">"
852
+ },
853
+ "text": {
854
+ "family": "Chivo",
855
+ "source": "google",
856
+ "weights": [
857
+ 400,
858
+ 700
859
+ ],
860
+ "italic": false,
861
+ "settings": "400 for paragraphs, 700 for navigation, tags and links · leading 1.35 · tracking -0.01em",
862
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Chivo:wght@400;700;900&display=swap\" rel=\"stylesheet\">"
863
+ },
864
+ "standsInFor": [
865
+ "Elza",
866
+ "ABC Diatype Heavy",
867
+ "Suisse Intl Black"
868
+ ],
869
+ "note": "A black grotesque in capitals with letters nearly colliding, and only two sizes on the page: enormous and small. Suits agencies, city and culture projects and musicians who want the type to land like a headline.",
870
+ "seenIn": [
871
+ "aww-glitch-grit",
872
+ "opl-city-of-angels",
873
+ "aww-warm-fuzzy"
874
+ ],
875
+ "links": [
876
+ "https://fonts.googleapis.com/css2?family=Chivo:wght@400;700;900&display=swap"
877
+ ],
878
+ "scale": {
879
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
880
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
881
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
882
+ "step-head": "clamp(2.5rem, 1.2rem + 5vw, 5.5rem)"
883
+ }
884
+ },
885
+ {
886
+ "id": "cabinet-grotesk-black",
887
+ "name": "Cabinet Grotesk",
888
+ "class": "heavy-black",
889
+ "display": {
890
+ "family": "Cabinet Grotesk",
891
+ "source": "fontshare",
892
+ "slug": "cabinet-grotesk",
893
+ "weights": [
894
+ 800
895
+ ],
896
+ "italic": false,
897
+ "settings": "weight 800 · tracking -0.035em · leading 0.9 · lowercase or sentence case, one or two words per line",
898
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=cabinet-grotesk@400,500,800&display=swap\" rel=\"stylesheet\">"
899
+ },
900
+ "text": {
901
+ "family": "Cabinet Grotesk",
902
+ "source": "fontshare",
903
+ "slug": "cabinet-grotesk",
904
+ "weights": [
905
+ 400,
906
+ 500
907
+ ],
908
+ "italic": false,
909
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
910
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=cabinet-grotesk@400,500,800&display=swap\" rel=\"stylesheet\">"
911
+ },
912
+ "standsInFor": [
913
+ "Champ",
914
+ "Uncut Sans"
915
+ ],
916
+ "note": "A heavy sans with tight joins and an eccentric lowercase, friendly but loud. Suits bookshops, food, consumer subscriptions and marketing studios.",
917
+ "seenIn": [
918
+ "aww-aardvark-book-club",
919
+ "opl-protip-marketing",
920
+ "opl-rendez-vous-franceclat"
921
+ ],
922
+ "links": [
923
+ "https://api.fontshare.com/v2/css?f[]=cabinet-grotesk@400,500,800&display=swap"
924
+ ],
925
+ "scale": {
926
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
927
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
928
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
929
+ "step-head": "clamp(2.5rem, 1.2rem + 5vw, 5.5rem)"
930
+ }
931
+ },
932
+ {
933
+ "id": "epilogue-black",
934
+ "name": "Epilogue",
935
+ "class": "heavy-black",
936
+ "display": {
937
+ "family": "Epilogue",
938
+ "source": "google",
939
+ "weights": [
940
+ 900
941
+ ],
942
+ "italic": false,
943
+ "settings": "weight 900 · tracking -0.04em · leading 0.9 · sentence case or title case",
944
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Epilogue:wght@400;500;900&display=swap\" rel=\"stylesheet\">"
945
+ },
946
+ "text": {
947
+ "family": "Epilogue",
948
+ "source": "google",
949
+ "weights": [
950
+ 400,
951
+ 500
952
+ ],
953
+ "italic": false,
954
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
955
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Epilogue:wght@400;500;900&display=swap\" rel=\"stylesheet\">"
956
+ },
957
+ "standsInFor": [
958
+ "Die Grotesk D",
959
+ "Acme Gothic",
960
+ "FH Oscar"
961
+ ],
962
+ "note": "A broad black grotesque with a slightly uneven rhythm, at its best as a name set very large in mixed case. Suits entertainers, podcasts, consumer apps and blunt SaaS pages; emphasis comes from colour, not from a change of weight.",
963
+ "seenIn": [
964
+ "aww-trevor-noah",
965
+ "opl-juggle"
966
+ ],
967
+ "links": [
968
+ "https://fonts.googleapis.com/css2?family=Epilogue:wght@400;500;900&display=swap"
969
+ ],
970
+ "scale": {
971
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
972
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
973
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
974
+ "step-head": "clamp(2.5rem, 1.2rem + 5vw, 5.5rem)"
975
+ }
976
+ },
977
+ {
978
+ "id": "red-hat-black",
979
+ "name": "Red Hat Display / Red Hat Text",
980
+ "class": "heavy-black",
981
+ "display": {
982
+ "family": "Red Hat Display",
983
+ "source": "google",
984
+ "weights": [
985
+ 900
986
+ ],
987
+ "italic": false,
988
+ "settings": "weight 900 · tracking -0.03em · leading 0.92 · uppercase; centred three-line stacks work well",
989
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Red+Hat+Display:wght@900&family=Red+Hat+Text:wght@400;500&display=swap\" rel=\"stylesheet\">"
990
+ },
991
+ "text": {
992
+ "family": "Red Hat Text",
993
+ "source": "google",
994
+ "weights": [
995
+ 400,
996
+ 500
997
+ ],
998
+ "italic": false,
999
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
1000
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Red+Hat+Display:wght@900&family=Red+Hat+Text:wght@400;500&display=swap\" rel=\"stylesheet\">"
1001
+ },
1002
+ "standsInFor": [
1003
+ "FH Oscar",
1004
+ "Futura Bold"
1005
+ ],
1006
+ "note": "A geometric black with round bowls and flat terminals, cleaner and more even than a grotesque at the same weight. Suits fintech, apps and portfolios that want heavy type with a tidy, technical finish.",
1007
+ "seenIn": [
1008
+ "aww-risk",
1009
+ "aww-leo-parpeix-portfolio-2026"
1010
+ ],
1011
+ "links": [
1012
+ "https://fonts.googleapis.com/css2?family=Red+Hat+Display:wght@900&family=Red+Hat+Text:wght@400;500&display=swap"
1013
+ ],
1014
+ "scale": {
1015
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1016
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1017
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1018
+ "step-head": "clamp(2.5rem, 1.2rem + 5vw, 5.5rem)"
1019
+ }
1020
+ },
1021
+ {
1022
+ "id": "jost-caps",
1023
+ "name": "Jost",
1024
+ "class": "geometric",
1025
+ "display": {
1026
+ "family": "Jost",
1027
+ "source": "google",
1028
+ "weights": [
1029
+ 700
1030
+ ],
1031
+ "italic": false,
1032
+ "settings": "weight 700 · tracking -0.03em · leading 0.9 · uppercase",
1033
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Jost:wght@400;500;700&display=swap\" rel=\"stylesheet\">"
1034
+ },
1035
+ "text": {
1036
+ "family": "Jost",
1037
+ "source": "google",
1038
+ "weights": [
1039
+ 400,
1040
+ 500
1041
+ ],
1042
+ "italic": false,
1043
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
1044
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Jost:wght@400;500;700&display=swap\" rel=\"stylesheet\">"
1045
+ },
1046
+ "standsInFor": [
1047
+ "Futura Std Bold",
1048
+ "Futura PT"
1049
+ ],
1050
+ "note": "The pointed, circular geometry of the 1920s in bold capitals, with the same family at reading size. Suits space, science, museums, architecture and anything that should feel like a mid-century poster.",
1051
+ "seenIn": [
1052
+ "aww-21-hrs-on-the-moon",
1053
+ "aww-leo-parpeix-portfolio-2026"
1054
+ ],
1055
+ "links": [
1056
+ "https://fonts.googleapis.com/css2?family=Jost:wght@400;500;700&display=swap"
1057
+ ],
1058
+ "scale": {
1059
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1060
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1061
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1062
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1063
+ }
1064
+ },
1065
+ {
1066
+ "id": "stack-sans-light",
1067
+ "name": "Stack Sans Headline / Stack Sans Text",
1068
+ "class": "geometric",
1069
+ "display": {
1070
+ "family": "Stack Sans Headline",
1071
+ "source": "google",
1072
+ "weights": [
1073
+ 300
1074
+ ],
1075
+ "italic": false,
1076
+ "settings": "weight 300 · tracking -0.022em · leading 1.05 · sentence case; a heading may be two-tone, grey then full ink",
1077
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Stack+Sans+Headline:wght@300&family=Stack+Sans+Text:wght@400;500&display=swap\" rel=\"stylesheet\">"
1078
+ },
1079
+ "text": {
1080
+ "family": "Stack Sans Text",
1081
+ "source": "google",
1082
+ "weights": [
1083
+ 400,
1084
+ 500
1085
+ ],
1086
+ "italic": false,
1087
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
1088
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Stack+Sans+Headline:wght@300&family=Stack+Sans+Text:wght@400;500&display=swap\" rel=\"stylesheet\">"
1089
+ },
1090
+ "standsInFor": [
1091
+ "Mluvka",
1092
+ "Roobert"
1093
+ ],
1094
+ "note": "A geometric sans in a light weight at large size, soft and exact at once, with its text cut underneath. Suits consumer apps, utilities and developer tools that want to feel calm and modern.",
1095
+ "seenIn": [
1096
+ "opl-screentune",
1097
+ "opl-dialkit",
1098
+ "opl-typewave"
1099
+ ],
1100
+ "links": [
1101
+ "https://fonts.googleapis.com/css2?family=Stack+Sans+Headline:wght@300&family=Stack+Sans+Text:wght@400;500&display=swap"
1102
+ ],
1103
+ "scale": {
1104
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1105
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1106
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1107
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1108
+ }
1109
+ },
1110
+ {
1111
+ "id": "albert-sans-semibold",
1112
+ "name": "Albert Sans",
1113
+ "class": "geometric",
1114
+ "display": {
1115
+ "family": "Albert Sans",
1116
+ "source": "google",
1117
+ "weights": [
1118
+ 600
1119
+ ],
1120
+ "italic": false,
1121
+ "settings": "weight 600 · tracking -0.035em · leading 1.0 · sentence case",
1122
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Albert+Sans:wght@400;500;600&display=swap\" rel=\"stylesheet\">"
1123
+ },
1124
+ "text": {
1125
+ "family": "Albert Sans",
1126
+ "source": "google",
1127
+ "weights": [
1128
+ 400,
1129
+ 500
1130
+ ],
1131
+ "italic": false,
1132
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
1133
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Albert+Sans:wght@400;500;600&display=swap\" rel=\"stylesheet\">"
1134
+ },
1135
+ "standsInFor": [
1136
+ "BT Steinhart",
1137
+ "TT Norms Pro",
1138
+ "Objektiv"
1139
+ ],
1140
+ "note": "A geometric grotesque with Scandinavian restraint: round letters, even colour, nothing decorative. Suits logistics, health, property and corporate sites that need to look clear and dependable.",
1141
+ "seenIn": [
1142
+ "aww-united-carriers",
1143
+ "aww-likova"
1144
+ ],
1145
+ "links": [
1146
+ "https://fonts.googleapis.com/css2?family=Albert+Sans:wght@400;500;600&display=swap"
1147
+ ],
1148
+ "scale": {
1149
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1150
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1151
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1152
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1153
+ }
1154
+ },
1155
+ {
1156
+ "id": "spartan-figtree",
1157
+ "name": "League Spartan / Figtree",
1158
+ "class": "geometric",
1159
+ "display": {
1160
+ "family": "League Spartan",
1161
+ "source": "google",
1162
+ "weights": [
1163
+ 700
1164
+ ],
1165
+ "italic": false,
1166
+ "settings": "weight 700 · tracking -0.04em · leading 0.88 · lowercase or sentence case",
1167
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=League+Spartan:wght@700&family=Figtree:wght@400;600&display=swap\" rel=\"stylesheet\">"
1168
+ },
1169
+ "text": {
1170
+ "family": "Figtree",
1171
+ "source": "google",
1172
+ "weights": [
1173
+ 400,
1174
+ 600
1175
+ ],
1176
+ "italic": false,
1177
+ "settings": "400 for body, 600 for emphasis · leading 1.5 · tracking 0",
1178
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=League+Spartan:wght@700&family=Figtree:wght@400;600&display=swap\" rel=\"stylesheet\">"
1179
+ },
1180
+ "standsInFor": [
1181
+ "Degular",
1182
+ "Roobert"
1183
+ ],
1184
+ "note": "A compact bold geometric with a low waist, punchy in short lowercase lines, over a friendly open text sans. Suits newsletters, consumer products, creators and small shops.",
1185
+ "seenIn": [
1186
+ "opl-lennys-newsletter-product-pass",
1187
+ "opl-near",
1188
+ "opl-sand-studio",
1189
+ "aww-aardvark-book-club"
1190
+ ],
1191
+ "links": [
1192
+ "https://fonts.googleapis.com/css2?family=League+Spartan:wght@700&family=Figtree:wght@400;600&display=swap"
1193
+ ],
1194
+ "scale": {
1195
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1196
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1197
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1198
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1199
+ }
1200
+ },
1201
+ {
1202
+ "id": "pilcrow-rounded",
1203
+ "name": "Pilcrow Rounded",
1204
+ "class": "rounded-friendly",
1205
+ "display": {
1206
+ "family": "Pilcrow Rounded",
1207
+ "source": "fontshare",
1208
+ "slug": "pilcrow-rounded",
1209
+ "weights": [
1210
+ 700
1211
+ ],
1212
+ "italic": false,
1213
+ "settings": "weight 700 · tracking -0.05em · leading 0.9 · all lowercase, one or two words per line",
1214
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=pilcrow-rounded@400,500,700&display=swap\" rel=\"stylesheet\">"
1215
+ },
1216
+ "text": {
1217
+ "family": "Pilcrow Rounded",
1218
+ "source": "fontshare",
1219
+ "slug": "pilcrow-rounded",
1220
+ "weights": [
1221
+ 400,
1222
+ 500
1223
+ ],
1224
+ "italic": false,
1225
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0; lowercase throughout is fine",
1226
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=pilcrow-rounded@400,500,700&display=swap\" rel=\"stylesheet\">"
1227
+ },
1228
+ "standsInFor": [
1229
+ "Milling Triplex",
1230
+ "Ease"
1231
+ ],
1232
+ "note": "A sturdy sans with fully rounded stroke ends, set bold and tight in lowercase with one small size for everything else. Suits toys, gadgets, cosmetics and other objects with soft moulded edges.",
1233
+ "seenIn": [
1234
+ "opl-when-you-wish-upon-a-starboy",
1235
+ "opl-anidachi",
1236
+ "aww-artem-shcherbakov"
1237
+ ],
1238
+ "links": [
1239
+ "https://api.fontshare.com/v2/css?f[]=pilcrow-rounded@400,500,700&display=swap"
1240
+ ],
1241
+ "scale": {
1242
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1243
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1244
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1245
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1246
+ }
1247
+ },
1248
+ {
1249
+ "id": "roundo-soft",
1250
+ "name": "Roundo",
1251
+ "class": "rounded-friendly",
1252
+ "display": {
1253
+ "family": "Roundo",
1254
+ "source": "fontshare",
1255
+ "slug": "roundo",
1256
+ "weights": [
1257
+ 500
1258
+ ],
1259
+ "italic": false,
1260
+ "settings": "weight 500 · tracking -0.025em · leading 1.05 · sentence case; colour the type to its section instead of black",
1261
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=roundo@400,500,600&display=swap\" rel=\"stylesheet\">"
1262
+ },
1263
+ "text": {
1264
+ "family": "Roundo",
1265
+ "source": "fontshare",
1266
+ "slug": "roundo",
1267
+ "weights": [
1268
+ 400,
1269
+ 600
1270
+ ],
1271
+ "italic": false,
1272
+ "settings": "400 for body, 600 for emphasis · leading 1.5 · tracking 0",
1273
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=roundo@400,500,600&display=swap\" rel=\"stylesheet\">"
1274
+ },
1275
+ "standsInFor": [
1276
+ "Ease",
1277
+ "Open Runde"
1278
+ ],
1279
+ "note": "A rounded geometric sans at medium weight and a generous text size, gentle without looking childish. Suits wellness, home goods, family apps and everyday money tools.",
1280
+ "seenIn": [
1281
+ "opl-anidachi",
1282
+ "opl-billow"
1283
+ ],
1284
+ "links": [
1285
+ "https://api.fontshare.com/v2/css?f[]=roundo@400,500,600&display=swap"
1286
+ ],
1287
+ "scale": {
1288
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1289
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1290
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1291
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1292
+ }
1293
+ },
1294
+ {
1295
+ "id": "chillax-semibold",
1296
+ "name": "Chillax",
1297
+ "class": "rounded-friendly",
1298
+ "display": {
1299
+ "family": "Chillax",
1300
+ "source": "fontshare",
1301
+ "slug": "chillax",
1302
+ "weights": [
1303
+ 600
1304
+ ],
1305
+ "italic": false,
1306
+ "settings": "weight 600 · tracking -0.03em · leading 1.0 · sentence case",
1307
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=chillax@400,500,600&display=swap\" rel=\"stylesheet\">"
1308
+ },
1309
+ "text": {
1310
+ "family": "Chillax",
1311
+ "source": "fontshare",
1312
+ "slug": "chillax",
1313
+ "weights": [
1314
+ 400,
1315
+ 500
1316
+ ],
1317
+ "italic": false,
1318
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
1319
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=chillax@400,500,600&display=swap\" rel=\"stylesheet\">"
1320
+ },
1321
+ "standsInFor": [
1322
+ "SF Pro Rounded",
1323
+ "Open Runde"
1324
+ ],
1325
+ "note": "A soft geometric sans with wide round letters and relaxed joins, warm at semibold and easy at text size. Suits consumer apps, community products, cafes and small friendly brands.",
1326
+ "seenIn": [
1327
+ "opl-uncle-rudy",
1328
+ "opl-mat"
1329
+ ],
1330
+ "links": [
1331
+ "https://api.fontshare.com/v2/css?f[]=chillax@400,500,600&display=swap"
1332
+ ],
1333
+ "scale": {
1334
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1335
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1336
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1337
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1338
+ }
1339
+ },
1340
+ {
1341
+ "id": "gambarino-general",
1342
+ "name": "Gambarino / General Sans",
1343
+ "class": "serif-display",
1344
+ "display": {
1345
+ "family": "Gambarino",
1346
+ "source": "fontshare",
1347
+ "slug": "gambarino",
1348
+ "weights": [
1349
+ 400
1350
+ ],
1351
+ "italic": false,
1352
+ "settings": "weight 400 (single cut) · tracking -0.02em · leading 0.92 · sentence case",
1353
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=gambarino@400&display=swap\" rel=\"stylesheet\">\n<link href=\"https://api.fontshare.com/v2/css?f[]=general-sans@400,500&display=swap\" rel=\"stylesheet\">"
1354
+ },
1355
+ "text": {
1356
+ "family": "General Sans",
1357
+ "source": "fontshare",
1358
+ "slug": "general-sans",
1359
+ "weights": [
1360
+ 400,
1361
+ 500
1362
+ ],
1363
+ "italic": false,
1364
+ "settings": "400 for body, navigation and buttons, 500 for emphasis · leading 1.5",
1365
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=gambarino@400&display=swap\" rel=\"stylesheet\">\n<link href=\"https://api.fontshare.com/v2/css?f[]=general-sans@400,500&display=swap\" rel=\"stylesheet\">"
1366
+ },
1367
+ "standsInFor": [
1368
+ "PP Editorial New",
1369
+ "Migra"
1370
+ ],
1371
+ "note": "A narrow, sharp display serif for headlines against a small plain sans: a five-to-one jump with nothing between. Suits agencies, bakeries and restaurants, fashion and editorial brands.",
1372
+ "seenIn": [
1373
+ "aww-hilden-kaira",
1374
+ "opl-tab-kitchen-bakery",
1375
+ "opl-glide-typeface",
1376
+ "aww-milledollars"
1377
+ ],
1378
+ "links": [
1379
+ "https://api.fontshare.com/v2/css?f[]=gambarino@400&display=swap",
1380
+ "https://api.fontshare.com/v2/css?f[]=general-sans@400,500&display=swap"
1381
+ ],
1382
+ "scale": {
1383
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1384
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1385
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1386
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1387
+ }
1388
+ },
1389
+ {
1390
+ "id": "bodoni-jost",
1391
+ "name": "Bodoni Moda / Jost",
1392
+ "class": "serif-display",
1393
+ "display": {
1394
+ "family": "Bodoni Moda",
1395
+ "source": "google",
1396
+ "weights": [
1397
+ 500
1398
+ ],
1399
+ "italic": true,
1400
+ "settings": "weight 500 with optical sizing on · tracking -0.02em · leading 0.95 · uppercase or sentence case; italic for a whole line, never for one word",
1401
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Bodoni+Moda:ital,wght@0,500;1,500&family=Jost:wght@400;500&display=swap\" rel=\"stylesheet\">"
1402
+ },
1403
+ "text": {
1404
+ "family": "Jost",
1405
+ "source": "google",
1406
+ "weights": [
1407
+ 400,
1408
+ 500
1409
+ ],
1410
+ "italic": false,
1411
+ "settings": "400 for body, 500 for emphasis · leading 1.6 · tracking 0.01em",
1412
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Bodoni+Moda:ital,wght@0,500;1,500&family=Jost:wght@400;500&display=swap\" rel=\"stylesheet\">"
1413
+ },
1414
+ "standsInFor": [
1415
+ "TT Ramillas",
1416
+ "Freight Big"
1417
+ ],
1418
+ "note": "A true didone with hairline serifs and vertical stress over a light geometric sans, the classic fashion-magazine pairing. Suits luxury property, jewellery, fragrance and fashion.",
1419
+ "seenIn": [
1420
+ "aww-sobha-privy-collection",
1421
+ "opl-april-leihuanani-evangelista"
1422
+ ],
1423
+ "links": [
1424
+ "https://fonts.googleapis.com/css2?family=Bodoni+Moda:ital,wght@0,500;1,500&family=Jost:wght@400;500&display=swap"
1425
+ ],
1426
+ "scale": {
1427
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1428
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1429
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1430
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1431
+ }
1432
+ },
1433
+ {
1434
+ "id": "imbue-albert",
1435
+ "name": "Imbue / Albert Sans",
1436
+ "class": "serif-display",
1437
+ "display": {
1438
+ "family": "Imbue",
1439
+ "source": "google",
1440
+ "weights": [
1441
+ 400
1442
+ ],
1443
+ "italic": false,
1444
+ "settings": "weight 400 with optical sizing on · tracking -0.01em · leading 0.9 · uppercase, sized so one short word fills its column (6–12vw)",
1445
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Imbue:wght@400&family=Albert+Sans:wght@400;500&display=swap\" rel=\"stylesheet\">"
1446
+ },
1447
+ "text": {
1448
+ "family": "Albert Sans",
1449
+ "source": "google",
1450
+ "weights": [
1451
+ 400,
1452
+ 500
1453
+ ],
1454
+ "italic": false,
1455
+ "settings": "400 for body, 500 for emphasis · leading 1.55 · tracking 0",
1456
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Imbue:wght@400&family=Albert+Sans:wght@400;500&display=swap\" rel=\"stylesheet\">"
1457
+ },
1458
+ "standsInFor": [
1459
+ "Ambroise Francois"
1460
+ ],
1461
+ "note": "A tall, condensed high-contrast serif whose capitals read like a masthead or a shop fascia. Suits residences, hotels, restaurants and wine, where a short name can stand floor to ceiling.",
1462
+ "seenIn": [
1463
+ "aww-era-residence",
1464
+ "opl-le-petit-bleu"
1465
+ ],
1466
+ "links": [
1467
+ "https://fonts.googleapis.com/css2?family=Imbue:wght@400&family=Albert+Sans:wght@400;500&display=swap"
1468
+ ],
1469
+ "scale": {
1470
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1471
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1472
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1473
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1474
+ }
1475
+ },
1476
+ {
1477
+ "id": "erode-sharp",
1478
+ "name": "Erode",
1479
+ "class": "serif-display",
1480
+ "display": {
1481
+ "family": "Erode",
1482
+ "source": "fontshare",
1483
+ "slug": "erode",
1484
+ "weights": [
1485
+ 500
1486
+ ],
1487
+ "italic": false,
1488
+ "settings": "weight 500 · tracking -0.025em · leading 0.95 · sentence case, or tight capitals at 32–40px for a single statement",
1489
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=erode@400,500,600&display=swap\" rel=\"stylesheet\">"
1490
+ },
1491
+ "text": {
1492
+ "family": "Erode",
1493
+ "source": "fontshare",
1494
+ "slug": "erode",
1495
+ "weights": [
1496
+ 400,
1497
+ 600
1498
+ ],
1499
+ "italic": true,
1500
+ "settings": "400 for body, 600 for emphasis, italic for titles of works · leading 1.5 · tracking 0",
1501
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=erode@400,500,600&display=swap\" rel=\"stylesheet\">"
1502
+ },
1503
+ "standsInFor": [
1504
+ "Noe Text",
1505
+ "Reckless",
1506
+ "Migra"
1507
+ ],
1508
+ "note": "A serif with chiselled, angular curves and wedge serifs, sharp at display size and firm in text. Suits studios, galleries, advisory firms and written guides.",
1509
+ "seenIn": [
1510
+ "aww-house-of-honey-1",
1511
+ "aww-milledollars",
1512
+ "aww-colonia-zacamil"
1513
+ ],
1514
+ "links": [
1515
+ "https://api.fontshare.com/v2/css?f[]=erode@400,500,600&display=swap"
1516
+ ],
1517
+ "scale": {
1518
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1519
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1520
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1521
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1522
+ }
1523
+ },
1524
+ {
1525
+ "id": "boska-roman-italic",
1526
+ "name": "Boska",
1527
+ "class": "serif-display",
1528
+ "display": {
1529
+ "family": "Boska",
1530
+ "source": "fontshare",
1531
+ "slug": "boska",
1532
+ "weights": [
1533
+ 400
1534
+ ],
1535
+ "italic": true,
1536
+ "settings": "weight 400 · tracking -0.02em · leading 0.95 · roman capitals for the main words with lowercase italic for the connecting words at the same size, or sentence case throughout; centred lines work",
1537
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=boska@400,500&display=swap\" rel=\"stylesheet\">"
1538
+ },
1539
+ "text": {
1540
+ "family": "Boska",
1541
+ "source": "fontshare",
1542
+ "slug": "boska",
1543
+ "weights": [
1544
+ 400,
1545
+ 500
1546
+ ],
1547
+ "italic": true,
1548
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0.005em",
1549
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=boska@400,500&display=swap\" rel=\"stylesheet\">"
1550
+ },
1551
+ "standsInFor": [
1552
+ "Louize Display",
1553
+ "PP Pangaia"
1554
+ ],
1555
+ "note": "A high-contrast serif with pointed serifs and a lively italic, used roman and italic together at one size. Suits perfume, jewellery, lodges, weddings and other occasions for ceremony.",
1556
+ "seenIn": [
1557
+ "aww-vero-new-york",
1558
+ "opl-eagles-nest",
1559
+ "opl-sarah-matt-wedding"
1560
+ ],
1561
+ "links": [
1562
+ "https://api.fontshare.com/v2/css?f[]=boska@400,500&display=swap"
1563
+ ],
1564
+ "scale": {
1565
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1566
+ "step-body": "clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem)",
1567
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1568
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1569
+ }
1570
+ },
1571
+ {
1572
+ "id": "newsreader-light",
1573
+ "name": "Newsreader",
1574
+ "class": "serif-light-large",
1575
+ "display": {
1576
+ "family": "Newsreader",
1577
+ "source": "google",
1578
+ "weights": [
1579
+ 300
1580
+ ],
1581
+ "italic": false,
1582
+ "settings": "weight 300 with optical sizing on · tracking -0.05em · leading 0.9 · sentence case at 12–14vw; chapter headings drop to the text weight at about 30px",
1583
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Newsreader:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap\" rel=\"stylesheet\">"
1584
+ },
1585
+ "text": {
1586
+ "family": "Newsreader",
1587
+ "source": "google",
1588
+ "weights": [
1589
+ 400,
1590
+ 500
1591
+ ],
1592
+ "italic": true,
1593
+ "settings": "400 for body, 500 for emphasis, italic for titles · leading 1.6 · tracking 0",
1594
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Newsreader:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap\" rel=\"stylesheet\">"
1595
+ },
1596
+ "standsInFor": [
1597
+ "Self Modern",
1598
+ "PP Editorial New Light"
1599
+ ],
1600
+ "note": "One news serif with optical sizes: light and very tight when huge, open and bookish at 18px. Suits long-form stories, culture pieces, journals and research write-ups.",
1601
+ "seenIn": [
1602
+ "opl-the-queue",
1603
+ "opl-leedlime",
1604
+ "opl-le-petit-bleu"
1605
+ ],
1606
+ "links": [
1607
+ "https://fonts.googleapis.com/css2?family=Newsreader:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap"
1608
+ ],
1609
+ "scale": {
1610
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1611
+ "step-body": "clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem)",
1612
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1613
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1614
+ }
1615
+ },
1616
+ {
1617
+ "id": "zodiak-hairline",
1618
+ "name": "Zodiak / Hanken Grotesk",
1619
+ "class": "serif-light-large",
1620
+ "display": {
1621
+ "family": "Zodiak",
1622
+ "source": "fontshare",
1623
+ "slug": "zodiak",
1624
+ "weights": [
1625
+ 100,
1626
+ 300
1627
+ ],
1628
+ "italic": false,
1629
+ "settings": "weight 100 above 96px, 300 for 28–36px statements · tracking -0.01em · leading 1.0 · capitals for the headline, sentence case for statements; never bold",
1630
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500&display=swap\" rel=\"stylesheet\">\n<link href=\"https://api.fontshare.com/v2/css?f[]=zodiak@100,300&display=swap\" rel=\"stylesheet\">"
1631
+ },
1632
+ "text": {
1633
+ "family": "Hanken Grotesk",
1634
+ "source": "google",
1635
+ "weights": [
1636
+ 400,
1637
+ 500
1638
+ ],
1639
+ "italic": false,
1640
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
1641
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500&display=swap\" rel=\"stylesheet\">\n<link href=\"https://api.fontshare.com/v2/css?f[]=zodiak@100,300&display=swap\" rel=\"stylesheet\">"
1642
+ },
1643
+ "standsInFor": [
1644
+ "PP Fragment",
1645
+ "PP Editorial New Ultralight",
1646
+ "Cardinal Classic Long"
1647
+ ],
1648
+ "note": "Hairline serif capitals set large enough that the thin strokes read as drawing, with a small neutral sans for everything practical. Suits lodges, spas, architecture and interiors; keep it on flat pale or dark fields where the strokes have full contrast.",
1649
+ "seenIn": [
1650
+ "aww-tengile-malamala-collection",
1651
+ "opl-deeo-studio-2",
1652
+ "aww-normal-is-boring",
1653
+ "aww-white-desert"
1654
+ ],
1655
+ "links": [
1656
+ "https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500&display=swap",
1657
+ "https://api.fontshare.com/v2/css?f[]=zodiak@100,300&display=swap"
1658
+ ],
1659
+ "scale": {
1660
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1661
+ "step-body": "clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem)",
1662
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1663
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1664
+ }
1665
+ },
1666
+ {
1667
+ "id": "sentient-light",
1668
+ "name": "Sentient",
1669
+ "class": "serif-light-large",
1670
+ "display": {
1671
+ "family": "Sentient",
1672
+ "source": "fontshare",
1673
+ "slug": "sentient",
1674
+ "weights": [
1675
+ 300
1676
+ ],
1677
+ "italic": false,
1678
+ "settings": "weight 300 · tracking -0.015em · leading 1.0 · sentence case; about 8vw for the headline, 40px for statements",
1679
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=sentient@300,400,500&display=swap\" rel=\"stylesheet\">"
1680
+ },
1681
+ "text": {
1682
+ "family": "Sentient",
1683
+ "source": "fontshare",
1684
+ "slug": "sentient",
1685
+ "weights": [
1686
+ 400,
1687
+ 500
1688
+ ],
1689
+ "italic": true,
1690
+ "settings": "400 for body, 500 for emphasis · leading 1.55 · tracking 0",
1691
+ "css": "<link rel=\"preconnect\" href=\"https://api.fontshare.com\">\n<link rel=\"preconnect\" href=\"https://cdn.fontshare.com\" crossorigin>\n<link href=\"https://api.fontshare.com/v2/css?f[]=sentient@300,400,500&display=swap\" rel=\"stylesheet\">"
1692
+ },
1693
+ "standsInFor": [
1694
+ "Season Mix",
1695
+ "Exposure",
1696
+ "Self Modern"
1697
+ ],
1698
+ "note": "A soft, low-contrast serif in a light weight, more book than fashion magazine, large and calm in sentence case. Suits outdoor and craft products, restaurants, cameras and slow consumer goods.",
1699
+ "seenIn": [
1700
+ "aww-seasats",
1701
+ "opl-poetry-camera",
1702
+ "opl-le-petit-bleu"
1703
+ ],
1704
+ "links": [
1705
+ "https://api.fontshare.com/v2/css?f[]=sentient@300,400,500&display=swap"
1706
+ ],
1707
+ "scale": {
1708
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1709
+ "step-body": "clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem)",
1710
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1711
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1712
+ }
1713
+ },
1714
+ {
1715
+ "id": "eb-garamond-quiet",
1716
+ "name": "EB Garamond",
1717
+ "class": "serif-text",
1718
+ "display": {
1719
+ "family": "EB Garamond",
1720
+ "source": "google",
1721
+ "weights": [
1722
+ 400
1723
+ ],
1724
+ "italic": true,
1725
+ "settings": "weight 400, italic for the title · tracking -0.01em · leading 1.1 · sentence case or all lowercase; the largest size stays near 40px",
1726
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;1,400;1,500&display=swap\" rel=\"stylesheet\">"
1727
+ },
1728
+ "text": {
1729
+ "family": "EB Garamond",
1730
+ "source": "google",
1731
+ "weights": [
1732
+ 400,
1733
+ 500
1734
+ ],
1735
+ "italic": true,
1736
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
1737
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;1,400;1,500&display=swap\" rel=\"stylesheet\">"
1738
+ },
1739
+ "standsInFor": [
1740
+ "Edict",
1741
+ "Louize"
1742
+ ],
1743
+ "note": "A humanist Garamond in roman and italic at two modest sizes, with no capitals and no bold. Suits set designers, antique dealers, wine, publishers and portfolios that whisper.",
1744
+ "seenIn": [
1745
+ "aww-depo-luxe",
1746
+ "opl-hebbia"
1747
+ ],
1748
+ "links": [
1749
+ "https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;1,400;1,500&display=swap"
1750
+ ],
1751
+ "scale": {
1752
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1753
+ "step-body": "clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem)",
1754
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1755
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1756
+ }
1757
+ },
1758
+ {
1759
+ "id": "literata-book",
1760
+ "name": "Literata",
1761
+ "class": "serif-text",
1762
+ "display": {
1763
+ "family": "Literata",
1764
+ "source": "google",
1765
+ "weights": [
1766
+ 500
1767
+ ],
1768
+ "italic": false,
1769
+ "settings": "weight 500 with optical sizing on · tracking -0.02em · leading 1.05 · sentence case",
1770
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Literata:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap\" rel=\"stylesheet\">"
1771
+ },
1772
+ "text": {
1773
+ "family": "Literata",
1774
+ "source": "google",
1775
+ "weights": [
1776
+ 400,
1777
+ 600
1778
+ ],
1779
+ "italic": true,
1780
+ "settings": "400 for body, 600 for emphasis, italic for titles · leading 1.6 · tracking 0",
1781
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Literata:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap\" rel=\"stylesheet\">"
1782
+ },
1783
+ "standsInFor": [
1784
+ "Albra Book",
1785
+ "Signifier",
1786
+ "Domaine Text"
1787
+ ],
1788
+ "note": "A sturdy screen-reading serif with a large x-height; headings are simply the text face at medium weight and a larger size. Suits essays, reports, newsletters and knowledge products.",
1789
+ "seenIn": [
1790
+ "opl-the-new-industrials",
1791
+ "aww-mosbys-files",
1792
+ "opl-monte"
1793
+ ],
1794
+ "links": [
1795
+ "https://fonts.googleapis.com/css2?family=Literata:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap"
1796
+ ],
1797
+ "scale": {
1798
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1799
+ "step-body": "clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem)",
1800
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1801
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1802
+ }
1803
+ },
1804
+ {
1805
+ "id": "stix-plain-roman",
1806
+ "name": "STIX Two Text",
1807
+ "class": "serif-text",
1808
+ "display": {
1809
+ "family": "STIX Two Text",
1810
+ "source": "google",
1811
+ "weights": [
1812
+ 400
1813
+ ],
1814
+ "italic": true,
1815
+ "settings": "weight 400 · tracking -0.026em · leading 1.1 · sentence case at 2.6–3.6vw; one running line may be set in italic capitals",
1816
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=STIX+Two+Text:ital,wght@0,400;0,600;1,400;1,600&display=swap\" rel=\"stylesheet\">"
1817
+ },
1818
+ "text": {
1819
+ "family": "STIX Two Text",
1820
+ "source": "google",
1821
+ "weights": [
1822
+ 400,
1823
+ 600
1824
+ ],
1825
+ "italic": false,
1826
+ "settings": "400 for body, 600 for emphasis · leading 1.45 · tracking 0",
1827
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=STIX+Two+Text:ital,wght@0,400;0,600;1,400;1,600&display=swap\" rel=\"stylesheet\">"
1828
+ },
1829
+ "standsInFor": [
1830
+ "Untitled Serif",
1831
+ "Times New Roman",
1832
+ "FK Roman Standard"
1833
+ ],
1834
+ "note": "The plain Times-style roman of a typed document, slightly tightened and never larger than a few vw. Suits vehicles and tools presented dryly, artists' pages, investment memos and anything meant to look undesigned on purpose.",
1835
+ "seenIn": [
1836
+ "opl-transport",
1837
+ "opl-shawn-golden",
1838
+ "aww-dragonfly-redux"
1839
+ ],
1840
+ "links": [
1841
+ "https://fonts.googleapis.com/css2?family=STIX+Two+Text:ital,wght@0,400;0,600;1,400;1,600&display=swap"
1842
+ ],
1843
+ "scale": {
1844
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1845
+ "step-body": "clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem)",
1846
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1847
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1848
+ }
1849
+ },
1850
+ {
1851
+ "id": "young-source",
1852
+ "name": "Young Serif / Source Serif 4",
1853
+ "class": "serif-text",
1854
+ "display": {
1855
+ "family": "Young Serif",
1856
+ "source": "google",
1857
+ "weights": [
1858
+ 400
1859
+ ],
1860
+ "italic": false,
1861
+ "settings": "weight 400 (single heavy cut) · tracking -0.02em · leading 0.95 · sentence case",
1862
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Young+Serif:wght@400&family=Source+Serif+4:ital,wght@0,400;0,600;1,400;1,600&display=swap\" rel=\"stylesheet\">"
1863
+ },
1864
+ "text": {
1865
+ "family": "Source Serif 4",
1866
+ "source": "google",
1867
+ "weights": [
1868
+ 400,
1869
+ 600
1870
+ ],
1871
+ "italic": true,
1872
+ "settings": "400 for body, 600 for emphasis, italic for quotations · leading 1.55 · tracking 0",
1873
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Young+Serif:wght@400&family=Source+Serif+4:ital,wght@0,400;0,600;1,400;1,600&display=swap\" rel=\"stylesheet\">"
1874
+ },
1875
+ "standsInFor": [
1876
+ "FS Kim",
1877
+ "Recoleta",
1878
+ "Gelica"
1879
+ ],
1880
+ "note": "A heavy, round old-style headline face with soft bracketed serifs over a clear transitional text serif. Suits essays, food, independent publishers and personal sites that want warmth with weight.",
1881
+ "seenIn": [
1882
+ "opl-applied-imagination",
1883
+ "opl-flowjam-2",
1884
+ "opl-marina-rachello"
1885
+ ],
1886
+ "links": [
1887
+ "https://fonts.googleapis.com/css2?family=Young+Serif:wght@400&family=Source+Serif+4:ital,wght@0,400;0,600;1,400;1,600&display=swap"
1888
+ ],
1889
+ "scale": {
1890
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1891
+ "step-body": "clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem)",
1892
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1893
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1894
+ }
1895
+ },
1896
+ {
1897
+ "id": "zilla-slab-even",
1898
+ "name": "Zilla Slab",
1899
+ "class": "slab",
1900
+ "display": {
1901
+ "family": "Zilla Slab",
1902
+ "source": "google",
1903
+ "weights": [
1904
+ 600
1905
+ ],
1906
+ "italic": false,
1907
+ "settings": "weight 600 · tracking -0.025em · leading 1.0 · sentence case",
1908
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Zilla+Slab:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap\" rel=\"stylesheet\">"
1909
+ },
1910
+ "text": {
1911
+ "family": "Zilla Slab",
1912
+ "source": "google",
1913
+ "weights": [
1914
+ 400,
1915
+ 500
1916
+ ],
1917
+ "italic": true,
1918
+ "settings": "400 for body, 500 for emphasis · leading 1.5 · tracking 0",
1919
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Zilla+Slab:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap\" rel=\"stylesheet\">"
1920
+ },
1921
+ "standsInFor": [
1922
+ "Museo Slab"
1923
+ ],
1924
+ "note": "A contemporary slab with smooth curves and unbracketed serifs, even enough to carry headings and paragraphs alike. Suits developer tools, personal sites, open-source and nonprofit projects.",
1925
+ "seenIn": [
1926
+ "opl-justin-lerner"
1927
+ ],
1928
+ "links": [
1929
+ "https://fonts.googleapis.com/css2?family=Zilla+Slab:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap"
1930
+ ],
1931
+ "scale": {
1932
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1933
+ "step-body": "clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem)",
1934
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1935
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1936
+ }
1937
+ },
1938
+ {
1939
+ "id": "besley-franklin",
1940
+ "name": "Besley / Libre Franklin",
1941
+ "class": "slab",
1942
+ "display": {
1943
+ "family": "Besley",
1944
+ "source": "google",
1945
+ "weights": [
1946
+ 800
1947
+ ],
1948
+ "italic": false,
1949
+ "settings": "weight 800 · tracking -0.02em · leading 0.95 · sentence case or uppercase",
1950
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Besley:wght@800&family=Libre+Franklin:wght@400;600&display=swap\" rel=\"stylesheet\">"
1951
+ },
1952
+ "text": {
1953
+ "family": "Libre Franklin",
1954
+ "source": "google",
1955
+ "weights": [
1956
+ 400,
1957
+ 600
1958
+ ],
1959
+ "italic": false,
1960
+ "settings": "400 for body, 600 for emphasis · leading 1.5 · tracking 0",
1961
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Besley:wght@800&family=Libre+Franklin:wght@400;600&display=swap\" rel=\"stylesheet\">"
1962
+ },
1963
+ "standsInFor": [
1964
+ "FS Kim",
1965
+ "Museo Slab"
1966
+ ],
1967
+ "note": "A fat Clarendon with ball terminals and bracketed slabs over a plain gothic, the look of a nineteenth-century bill poster. Suits breweries, barbers, markets, fairs and heritage goods.",
1968
+ "seenIn": [
1969
+ "opl-applied-imagination",
1970
+ "opl-justin-lerner"
1971
+ ],
1972
+ "links": [
1973
+ "https://fonts.googleapis.com/css2?family=Besley:wght@800&family=Libre+Franklin:wght@400;600&display=swap"
1974
+ ],
1975
+ "scale": {
1976
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
1977
+ "step-body": "clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem)",
1978
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
1979
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
1980
+ }
1981
+ },
1982
+ {
1983
+ "id": "rokkitt-literata",
1984
+ "name": "Rokkitt / Literata",
1985
+ "class": "slab",
1986
+ "display": {
1987
+ "family": "Rokkitt",
1988
+ "source": "google",
1989
+ "weights": [
1990
+ 800
1991
+ ],
1992
+ "italic": false,
1993
+ "settings": "weight 800 · tracking -0.01em · leading 0.85 · uppercase, sized by cap height (about 14vw)",
1994
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Rokkitt:wght@800&family=Literata:ital,wght@0,400;0,600;1,400;1,600&display=swap\" rel=\"stylesheet\">"
1995
+ },
1996
+ "text": {
1997
+ "family": "Literata",
1998
+ "source": "google",
1999
+ "weights": [
2000
+ 400,
2001
+ 600
2002
+ ],
2003
+ "italic": true,
2004
+ "settings": "400 for body, 600 for emphasis · leading 1.6 · tracking 0",
2005
+ "css": "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link href=\"https://fonts.googleapis.com/css2?family=Rokkitt:wght@800&family=Literata:ital,wght@0,400;0,600;1,400;1,600&display=swap\" rel=\"stylesheet\">"
2006
+ },
2007
+ "standsInFor": [
2008
+ "Albra Book"
2009
+ ],
2010
+ "note": "Narrow geometric slab capitals as a tall title block, then a bookish serif for a long essay beneath. Suits manufacturing, trades, manifestos and industrial history.",
2011
+ "seenIn": [
2012
+ "opl-the-new-industrials"
2013
+ ],
2014
+ "links": [
2015
+ "https://fonts.googleapis.com/css2?family=Rokkitt:wght@800&family=Literata:ital,wght@0,400;0,600;1,400;1,600&display=swap"
2016
+ ],
2017
+ "scale": {
2018
+ "step-small": "clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem)",
2019
+ "step-body": "clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem)",
2020
+ "step-lead": "clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem)",
2021
+ "step-head": "clamp(2rem, 1.3rem + 3.2vw, 4rem)"
2022
+ }
2023
+ }
2024
+ ]