oh-my-design-cli 1.8.6 → 1.9.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 (275) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +2761 -85
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/airbridge/DESIGN.md +451 -0
  71. package/web/references/alipay/DESIGN.md +179 -420
  72. package/web/references/apple/DESIGN.md +224 -498
  73. package/web/references/asleep/DESIGN.md +402 -0
  74. package/web/references/au/DESIGN.md +334 -0
  75. package/web/references/autopedia/DESIGN.md +382 -0
  76. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  77. package/web/references/baemin/DESIGN.md +332 -491
  78. package/web/references/banksalad/DESIGN.md +269 -180
  79. package/web/references/barogo/DESIGN.md +416 -0
  80. package/web/references/beusable/DESIGN.md +464 -0
  81. package/web/references/bigin/DESIGN.md +454 -0
  82. package/web/references/bilibili/DESIGN.md +206 -374
  83. package/web/references/bmw/DESIGN.md +162 -276
  84. package/web/references/brandi/DESIGN.md +184 -325
  85. package/web/references/buzzvil/DESIGN.md +457 -0
  86. package/web/references/cafe24/DESIGN.md +472 -0
  87. package/web/references/catchtable/DESIGN.md +219 -264
  88. package/web/references/cgv/DESIGN.md +317 -0
  89. package/web/references/channeltalk/DESIGN.md +210 -336
  90. package/web/references/china-airlines/DESIGN.md +291 -0
  91. package/web/references/cjonstyle/DESIGN.md +453 -0
  92. package/web/references/class101/DESIGN.md +168 -387
  93. package/web/references/classum/DESIGN.md +228 -203
  94. package/web/references/claude/DESIGN.md +242 -479
  95. package/web/references/clay/DESIGN.md +179 -377
  96. package/web/references/clickhouse/DESIGN.md +254 -343
  97. package/web/references/codeit/DESIGN.md +470 -0
  98. package/web/references/cohere/DESIGN.md +214 -324
  99. package/web/references/coinone/DESIGN.md +199 -179
  100. package/web/references/corca/DESIGN.md +414 -0
  101. package/web/references/coupang/DESIGN.md +205 -475
  102. package/web/references/cursor/DESIGN.md +240 -381
  103. package/web/references/dabang/DESIGN.md +248 -213
  104. package/web/references/dable/DESIGN.md +431 -0
  105. package/web/references/datarize/DESIGN.md +338 -0
  106. package/web/references/dealicious/DESIGN.md +402 -0
  107. package/web/references/drdiary/DESIGN.md +404 -0
  108. package/web/references/elastic/DESIGN.md +238 -0
  109. package/web/references/elevenlabs/DESIGN.md +183 -321
  110. package/web/references/elice/DESIGN.md +445 -0
  111. package/web/references/eslite/DESIGN.md +257 -0
  112. package/web/references/evaair/DESIGN.md +338 -0
  113. package/web/references/expo/DESIGN.md +238 -331
  114. package/web/references/familymart-tw/DESIGN.md +254 -0
  115. package/web/references/ferrari/DESIGN.md +160 -377
  116. package/web/references/figma/DESIGN.md +197 -451
  117. package/web/references/fitpet/DESIGN.md +445 -0
  118. package/web/references/flex/DESIGN.md +170 -253
  119. package/web/references/framer/DESIGN.md +197 -340
  120. package/web/references/freee/DESIGN.md +211 -533
  121. package/web/references/friendliai/DESIGN.md +431 -0
  122. package/web/references/frip/DESIGN.md +440 -0
  123. package/web/references/furiosaai/DESIGN.md +450 -0
  124. package/web/references/gangnamunni/DESIGN.md +154 -591
  125. package/web/references/gaudiolab/DESIGN.md +414 -0
  126. package/web/references/google/DESIGN.md +290 -398
  127. package/web/references/goorm/DESIGN.md +470 -0
  128. package/web/references/greencar/DESIGN.md +420 -0
  129. package/web/references/hackle/DESIGN.md +472 -0
  130. package/web/references/hashicorp/DESIGN.md +273 -318
  131. package/web/references/heydealer/DESIGN.md +429 -0
  132. package/web/references/humanscape/DESIGN.md +433 -0
  133. package/web/references/hwahae/DESIGN.md +453 -0
  134. package/web/references/hyundai/DESIGN.md +158 -368
  135. package/web/references/hyundaicard/DESIGN.md +171 -121
  136. package/web/references/ibm/DESIGN.md +227 -378
  137. package/web/references/idus/DESIGN.md +450 -0
  138. package/web/references/igaworks/DESIGN.md +437 -0
  139. package/web/references/inflearn/DESIGN.md +221 -366
  140. package/web/references/intuit/DESIGN.md +244 -0
  141. package/web/references/jandi/DESIGN.md +191 -291
  142. package/web/references/jobplanet/DESIGN.md +415 -0
  143. package/web/references/kakao/DESIGN.md +287 -475
  144. package/web/references/kakaobank/DESIGN.md +220 -521
  145. package/web/references/kakaogames/DESIGN.md +220 -0
  146. package/web/references/kakaopay/DESIGN.md +207 -526
  147. package/web/references/karrot/DESIGN.md +227 -251
  148. package/web/references/kb-kookmin/DESIGN.md +308 -0
  149. package/web/references/kbank/DESIGN.md +220 -175
  150. package/web/references/kcd/DESIGN.md +432 -0
  151. package/web/references/kmong/DESIGN.md +281 -356
  152. package/web/references/krds/DESIGN.md +245 -19
  153. package/web/references/kream/DESIGN.md +224 -359
  154. package/web/references/kurly/DESIGN.md +211 -533
  155. package/web/references/kyobobook/DESIGN.md +445 -0
  156. package/web/references/lablup/DESIGN.md +474 -0
  157. package/web/references/lamborghini/DESIGN.md +198 -360
  158. package/web/references/lemonbase/DESIGN.md +452 -0
  159. package/web/references/lguplus/DESIGN.md +259 -0
  160. package/web/references/likelion/DESIGN.md +283 -0
  161. package/web/references/line/DESIGN.md +396 -355
  162. package/web/references/linear.app/DESIGN.md +209 -562
  163. package/web/references/lotteon/DESIGN.md +386 -0
  164. package/web/references/lovable/DESIGN.md +255 -349
  165. package/web/references/makinarocks/DESIGN.md +242 -0
  166. package/web/references/maum-ai/DESIGN.md +423 -0
  167. package/web/references/medibloc/DESIGN.md +425 -0
  168. package/web/references/megabox/DESIGN.md +232 -0
  169. package/web/references/mercari/DESIGN.md +217 -434
  170. package/web/references/microsoft/DESIGN.md +234 -388
  171. package/web/references/mildang/DESIGN.md +411 -0
  172. package/web/references/millie/DESIGN.md +183 -504
  173. package/web/references/minimax/DESIGN.md +264 -322
  174. package/web/references/miricanvas/DESIGN.md +182 -355
  175. package/web/references/miro/DESIGN.md +234 -232
  176. package/web/references/mistral.ai/DESIGN.md +231 -314
  177. package/web/references/mixi/DESIGN.md +234 -0
  178. package/web/references/moin/DESIGN.md +445 -0
  179. package/web/references/mongodb/DESIGN.md +219 -316
  180. package/web/references/moreh/DESIGN.md +437 -0
  181. package/web/references/musinsa/DESIGN.md +184 -510
  182. package/web/references/mynavi/DESIGN.md +242 -0
  183. package/web/references/myrealtrip/DESIGN.md +169 -406
  184. package/web/references/naver/DESIGN.md +328 -499
  185. package/web/references/naverwebtoon/DESIGN.md +172 -395
  186. package/web/references/neosapience/DESIGN.md +441 -0
  187. package/web/references/nhn/DESIGN.md +169 -346
  188. package/web/references/nhncloud/DESIGN.md +185 -123
  189. package/web/references/nota/DESIGN.md +451 -0
  190. package/web/references/notion/DESIGN.md +271 -475
  191. package/web/references/nrise/DESIGN.md +417 -0
  192. package/web/references/ohouse/DESIGN.md +210 -549
  193. package/web/references/oliveyoung/DESIGN.md +217 -326
  194. package/web/references/ollama/DESIGN.md +241 -308
  195. package/web/references/onestore/DESIGN.md +248 -0
  196. package/web/references/palantir/DESIGN.md +256 -0
  197. package/web/references/panasonic/DESIGN.md +276 -0
  198. package/web/references/patternfly/DESIGN.md +259 -0
  199. package/web/references/payhere/DESIGN.md +438 -0
  200. package/web/references/pega/DESIGN.md +262 -0
  201. package/web/references/peoplefund/DESIGN.md +431 -0
  202. package/web/references/petfriends/DESIGN.md +428 -0
  203. package/web/references/pinkfong/DESIGN.md +199 -367
  204. package/web/references/pinterest/DESIGN.md +258 -308
  205. package/web/references/portone/DESIGN.md +446 -0
  206. package/web/references/poya/DESIGN.md +286 -0
  207. package/web/references/pozalabs/DESIGN.md +438 -0
  208. package/web/references/protopie/DESIGN.md +419 -0
  209. package/web/references/qraft/DESIGN.md +448 -0
  210. package/web/references/queenit/DESIGN.md +432 -0
  211. package/web/references/quotabook/DESIGN.md +449 -0
  212. package/web/references/rebellions/DESIGN.md +449 -0
  213. package/web/references/recruit/DESIGN.md +247 -0
  214. package/web/references/remember/DESIGN.md +202 -396
  215. package/web/references/resend/DESIGN.md +274 -348
  216. package/web/references/returnzero/DESIGN.md +460 -0
  217. package/web/references/sakura-internet/DESIGN.md +269 -0
  218. package/web/references/samsung/DESIGN.md +157 -359
  219. package/web/references/sandoll/DESIGN.md +445 -0
  220. package/web/references/sanity/DESIGN.md +241 -375
  221. package/web/references/saramin/DESIGN.md +465 -0
  222. package/web/references/scatterlab/DESIGN.md +412 -0
  223. package/web/references/selectstar/DESIGN.md +439 -0
  224. package/web/references/servicenow/DESIGN.md +289 -0
  225. package/web/references/shiftee/DESIGN.md +468 -0
  226. package/web/references/shinhanbank/DESIGN.md +161 -341
  227. package/web/references/shinhancard/DESIGN.md +208 -319
  228. package/web/references/sionic/DESIGN.md +454 -0
  229. package/web/references/sktelecom/DESIGN.md +310 -0
  230. package/web/references/socar/DESIGN.md +125 -32
  231. package/web/references/softbank/DESIGN.md +231 -0
  232. package/web/references/solapi/DESIGN.md +483 -0
  233. package/web/references/sony/DESIGN.md +234 -0
  234. package/web/references/soop/DESIGN.md +261 -0
  235. package/web/references/spacex/DESIGN.md +184 -323
  236. package/web/references/spotify/DESIGN.md +253 -394
  237. package/web/references/squeezebits/DESIGN.md +441 -0
  238. package/web/references/stayfolio/DESIGN.md +422 -0
  239. package/web/references/stripe/DESIGN.md +212 -491
  240. package/web/references/supabase/DESIGN.md +244 -316
  241. package/web/references/supertone/DESIGN.md +413 -0
  242. package/web/references/tabling/DESIGN.md +415 -0
  243. package/web/references/taishinbank/DESIGN.md +243 -0
  244. package/web/references/teamlab/DESIGN.md +240 -0
  245. package/web/references/teamsparta/DESIGN.md +472 -0
  246. package/web/references/tellingme/DESIGN.md +392 -0
  247. package/web/references/tesla/DESIGN.md +244 -427
  248. package/web/references/thsr/DESIGN.md +284 -0
  249. package/web/references/thumbtack/DESIGN.md +302 -0
  250. package/web/references/together.ai/DESIGN.md +257 -304
  251. package/web/references/toss/DESIGN.md +251 -593
  252. package/web/references/toss-securities/DESIGN.md +255 -178
  253. package/web/references/tossbank/DESIGN.md +195 -491
  254. package/web/references/toyota/DESIGN.md +238 -0
  255. package/web/references/tving/DESIGN.md +197 -245
  256. package/web/references/typed/DESIGN.md +413 -0
  257. package/web/references/uber/DESIGN.md +256 -333
  258. package/web/references/udn/DESIGN.md +250 -0
  259. package/web/references/upbit/DESIGN.md +145 -256
  260. package/web/references/upstage/DESIGN.md +211 -204
  261. package/web/references/uswds/DESIGN.md +287 -0
  262. package/web/references/vercel/DESIGN.md +236 -440
  263. package/web/references/vuno/DESIGN.md +413 -0
  264. package/web/references/wanted/DESIGN.md +215 -487
  265. package/web/references/weverse/DESIGN.md +437 -0
  266. package/web/references/wise/DESIGN.md +223 -231
  267. package/web/references/wisetracker/DESIGN.md +462 -0
  268. package/web/references/wooribank/DESIGN.md +245 -0
  269. package/web/references/yanolja/DESIGN.md +250 -419
  270. package/web/references/yeogiotte/DESIGN.md +235 -418
  271. package/web/references/zapier/DESIGN.md +256 -377
  272. package/web/references/zendesk/DESIGN.md +288 -0
  273. package/web/references/zigzag/DESIGN.md +200 -621
  274. package/dist/install-skills-7UUDOLG2.js +0 -734
  275. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -0,0 +1,284 @@
1
+ ---
2
+ id: thsr
3
+ name: Taiwan High Speed Rail
4
+ display_name_kr: 台灣高鐵
5
+ country: TW
6
+ category: consumer-tech
7
+ homepage: "https://www.thsrc.com.tw/"
8
+ primary_color: "#ca4f0f"
9
+ logo:
10
+ type: favicon
11
+ slug: "https://www.google.com/s2/favicons?domain=thsrc.com.tw&sz=128"
12
+ verified: "2026-07-13"
13
+ omd: "0.1"
14
+ verification_v2:
15
+ schema: 2
16
+ checked: "2026-07-13"
17
+ surfaces:
18
+ - { id: home, kind: public-product-web, url: "https://www.thsrc.com.tw/", inspected: "2026-07-13" }
19
+ - { id: article-46de4c5f, kind: public-product-web, url: "https://www.thsrc.com.tw/ArticleContent/46de4c5f-7c2e-4583-bd4c-0f5d67fbb9b8", inspected: "2026-07-13" }
20
+ - { id: article-743c51ac, kind: public-product-web, url: "https://www.thsrc.com.tw/ArticleContent/743c51ac-124d-4b1a-a57b-1fd820848032", inspected: "2026-07-13" }
21
+ sources:
22
+ - { id: product-home, kind: product-surface, url: "https://www.thsrc.com.tw/", captured: "2026-07-13" }
23
+ - { id: product-article-46de4c5f, kind: product-surface, url: "https://www.thsrc.com.tw/ArticleContent/46de4c5f-7c2e-4583-bd4c-0f5d67fbb9b8", captured: "2026-07-13" }
24
+ - { id: product-article-743c51ac, kind: product-surface, url: "https://www.thsrc.com.tw/ArticleContent/743c51ac-124d-4b1a-a57b-1fd820848032", captured: "2026-07-13" }
25
+ - { id: corporate-identity, kind: brand-asset, url: "https://www.thsrc.com.tw/ArticleContent/605d1cb2-2d98-4d73-9586-7e8363ee44e3", captured: "2026-07-13" }
26
+ - { id: sustainability-mission, kind: official-doc, url: "https://www.thsrc.com.tw/corp/9012aea2-04b9-45f4-b3a4-8bcb6782f735", captured: "2026-07-13" }
27
+ - { id: annual-report, kind: official-doc, url: "https://www.thsrc.com.tw/Corp/e5d9a893-ea05-4ff7-80e6-cc71c46d2fb4/assets/d3d47001-95a2-457e-aeef-22b2e1cb45cd.pdf", captured: "2026-07-13" }
28
+ conflicts: []
29
+ claims:
30
+ "tokens.colors.primary": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
31
+ "tokens.colors.canvas": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
32
+ "tokens.colors.foreground": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
33
+ "tokens.colors.body": { surface_id: article-743c51ac, source_id: product-article-743c51ac, method: computed-style, captured: "2026-07-13" }
34
+ "tokens.colors.on-primary": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
35
+ "tokens.typography.family.ui": { surface_id: home, source_id: product-home, method: computed-style-and-FontFaceSet, captured: "2026-07-13" }
36
+ "tokens.typography.body.size": { surface_id: article-743c51ac, source_id: product-article-743c51ac, method: computed-style, captured: "2026-07-13" }
37
+ "tokens.typography.body.weight": { surface_id: article-743c51ac, source_id: product-article-743c51ac, method: computed-style, captured: "2026-07-13" }
38
+ "tokens.typography.body.lineHeight": { surface_id: article-743c51ac, source_id: product-article-743c51ac, method: computed-style, captured: "2026-07-13" }
39
+ "tokens.typography.body.use": { surface_id: article-743c51ac, source_id: product-article-743c51ac, method: selector-provenance, captured: "2026-07-13" }
40
+ "tokens.typography.section-heading.size": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
41
+ "tokens.typography.section-heading.weight": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
42
+ "tokens.typography.section-heading.lineHeight": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
43
+ "tokens.typography.section-heading.tracking": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
44
+ "tokens.typography.section-heading.use": { surface_id: home, source_id: product-home, method: selector-provenance, captured: "2026-07-13" }
45
+ "tokens.spacing.control-vertical": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
46
+ "tokens.spacing.control-horizontal": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
47
+ "tokens.spacing.dialog-inset": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
48
+ "tokens.rounded.square": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
49
+ "tokens.rounded.action": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
50
+ "tokens.rounded.dialog": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
51
+ "tokens.shadow.none": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
52
+ "tokens.components.public-booking-action.type": { surface_id: home, source_id: product-home, method: selector-provenance, captured: "2026-07-13" }
53
+ "tokens.components.public-booking-action.bg": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
54
+ "tokens.components.public-booking-action.fg": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
55
+ "tokens.components.public-booking-action.radius": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
56
+ "tokens.components.public-booking-action.padding": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
57
+ "tokens.components.public-booking-action.height": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
58
+ "tokens.components.public-booking-action.font": { surface_id: home, source_id: product-home, method: computed-style, captured: "2026-07-13" }
59
+ "tokens.components.public-booking-action.states": { surface_id: home, source_id: product-home, method: collector-interaction-summary, captured: "2026-07-13" }
60
+ "tokens.components.public-booking-action.use": { surface_id: home, source_id: product-home, method: selector-provenance, captured: "2026-07-13" }
61
+ tokens:
62
+ source: reconciled
63
+ extracted: "2026-07-13"
64
+ note: "Machine tokens are selector-backed observations from the supplied three-route public THSR capture. Corporate identity, mission, and declared-only fonts are retained as separate context or asset evidence; no unobserved state or fallback face is promoted."
65
+ colors:
66
+ primary: "#ca4f0f"
67
+ canvas: "#ffffff"
68
+ foreground: "#333333"
69
+ body: "#666666"
70
+ on-primary: "#ffffff"
71
+ typography:
72
+ family: { ui: "Noto Sans TC" }
73
+ body: { size: 16, weight: 400, lineHeight: "24px", use: "Observed on supplied public article list items; do not generalize to the T-EX app or unobserved purchase flows." }
74
+ section-heading: { size: 28, weight: 700, lineHeight: "42px", tracking: "5px", use: "Observed on the supplied public home heading only." }
75
+ spacing:
76
+ control-vertical: 12
77
+ control-horizontal: 20
78
+ dialog-inset: 20
79
+ rounded:
80
+ square: 0
81
+ action: 3
82
+ dialog: 5
83
+ shadow:
84
+ none: "none"
85
+ components_harvested: true
86
+ components:
87
+ public-booking-action: { type: button, bg: "#ca4f0f", fg: "#ffffff", radius: "3px", padding: "12px 20px", height: "53px", font: "16px / 400 / Noto Sans TC", states: "Default only; the supplied capture contains zero interaction records, so no hover, focus, pressed, disabled, or transition value is observed.", use: "Public home booking control at home::[data-omd-capture=\"46\"]; static geometry only." }
88
+ ---
89
+
90
+ # Taiwan High Speed Rail — Design Reference
91
+
92
+ ## 1. Visual Theme & Atmosphere
93
+
94
+ Taiwan High Speed Rail (THSR, 台灣高鐵) operates Taiwan’s north–south high-speed rail service and frames itself as more than transport: a life-service platform built around safer, faster, more comfortable travel. Its official history places incorporation in 1998, full Taipei–Zuoying operation in 2007, and a corporate-identity update in 2006. That long public-infrastructure role gives the brand a particular balance: the official flying-flag mark represents speed and advanced technology, while its flowing lines and orange-plus-gray palette are intended to carry care, optimism, and depth. The current corporate narrative keeps evolving from rail operation toward service, sustainability, local connection, and technology through its 4T framework—Transportation, Technology, Taiwan, and Touch. The supplied public-web capture expresses that intent in a restrained, flat interface: orange action fills punctuate a mostly white, charcoal, and gray reading environment. These product tokens describe only the three captured public web routes, not the T-EX app, ticketing completion, account, or station systems.
95
+
96
+ **Key characteristics:**
97
+
98
+ - Official brand meaning joins a flying-flag / “T” mark, orange optimism, gray depth, speed, and service detail.
99
+ - Supplied public routes use `#CA4F0F` as a measured orange action fill against a white canvas with `#333333` and `#666666` text.
100
+ - Noto Sans TC is the only loaded, high-confidence visible text family in the supplied capture.
101
+ - The public controls observed here are flat and predominantly square; the 3px booking control and 5px dialog are bounded local exceptions.
102
+
103
+ ## 2. Layout & Grid
104
+
105
+ - The evidence packet covers the public home route plus two official article routes at the collector viewport. It does not establish a breakpoint system, mobile layout, authenticated account layout, T-EX app layout, station kiosk, or purchase-completion layout.
106
+ - The home capture includes a 53px orange booking control with `12px 20px` padding; the article routes include a 64px orange back-to-top control. Those are local component measurements, not a universal action scale.
107
+ - Static list-item samples span 24px, 30px, and 82px heights across navigation and article content. They are preserved as observed reading/navigation geometry only, rather than promoted into a generic row system.
108
+
109
+ ## 3. Color & Typography
110
+
111
+ ### Color tokens
112
+
113
+ - `#CA4F0F` — computed orange fill of the selector-backed public booking action and other supplied public action samples. THSR’s official identity describes orange as the mark color for a bright future and optimism, but it does not provide this exact hexadecimal token.
114
+ - `#FFFFFF` — observed public canvas and orange-action label color.
115
+ - `#333333` — observed structural text and list/menu color.
116
+ - `#666666` — observed body/list text and public outline color.
117
+
118
+ The official identity also describes two levels of gray in the logo, but neither those logo colors nor a broader brand palette is promoted as a product token without a measured public-web value.
119
+
120
+ ### Typography evidence classes
121
+
122
+ - **Official product-use:** no first-party source reviewed names a text family as the THSR product or app typeface.
123
+ - **Live computed surface-use:** Noto Sans TC is `loaded` with high confidence, 308 observed uses, and Google Fonts WOFF2 source records across the supplied public home, article, dialog, button, tab, and list samples. It is the sole UI-family token because both visible computed use and loaded-font evidence are present.
124
+ - **Live system use:** Arial appears in 13 visible button/tab samples and Helvetica in six input samples. They are operating-system stack evidence, not THSR brand fonts and not substitutes for Noto Sans TC.
125
+ - **Official distributed brand asset:** no separately distributed THSR text-font asset was located in the first-party material reviewed.
126
+ - **Declared-only:** FontAwesome, kyicon, Open Sans, slick, and weathericons have `@font-face` records but zero observed visible uses in this packet. They are not UI-family tokens.
127
+ - **Unresolved license boundary:** the packet identifies third-party Google Fonts delivery for the loaded Noto Sans TC files, but the reviewed first-party THSR material does not state a THSR font license or rehosting permission. Do not infer either from runtime availability.
128
+
129
+ | Role | Size | Weight | Line height | Boundary |
130
+ |---|---:|---:|---:|---|
131
+ | Public article body/list | 16px | 400 | 24px | Supplied article samples; Noto Sans TC loaded |
132
+ | Public home section heading | 28px | 700 | 42px | Home only; 5px tracking observed |
133
+ | Booking action | 16px | 400 | 24px | Selector-backed home button; Noto Sans TC |
134
+
135
+ ## 4. Components
136
+
137
+ ### Public booking action
138
+
139
+ **Default**
140
+ - Background: `#CA4F0F`
141
+ - Text: `#FFFFFF`
142
+ - Radius: `3px`
143
+ - Padding: `12px 20px`
144
+ - Height: `53px`
145
+ - Font: `16px / 400 / Noto Sans TC`
146
+ - States: Default only; the supplied capture reports zero interaction records, so hover, focus, pressed, disabled, and transition values are unobserved.
147
+ - Use: `home::[data-omd-capture="46"]`; a public-home booking control, not a universal THSR CTA or a ticket-purchase-flow contract.
148
+
149
+ ### Public selected navigation tab
150
+
151
+ **Selected**
152
+ - Background: `#CA4F0F`
153
+ - Text: `#FFFFFF`
154
+ - Radius: `0px`
155
+ - Padding: `12px 0px`
156
+ - Height: `48px`
157
+ - Font: `16px / 400 / Noto Sans TC`
158
+ - States: A selected element is observed through `aria-selected="true"`; no tab-change interaction, hover, focus, pressed, or disabled value was captured.
159
+ - Use: `home::[data-omd-capture="60"]`; this is a public home navigation sample only.
160
+
161
+ ### Public date field
162
+
163
+ **Default**
164
+ - Background: `#FFFFFF`
165
+ - Text: `#000000`
166
+ - Radius: `0px`
167
+ - Padding: `6px 20px 6px 5px`
168
+ - Height: `35px`
169
+ - Font: `18.4px / 400 / Helvetica`
170
+ - States: Default only; no focus, error, disabled, or interaction value was captured.
171
+ - Use: `home::[data-omd-capture="43"]`; system-font field evidence, not a THSR brand-type claim.
172
+
173
+ The structured token component above deliberately promotes only the selector-backed booking action. The tab and field remain useful measured prose siblings but are not additional machine component tokens. `interactionCount: 0`, `interactionKinds: 0`, and an empty interaction array remove only unobserved interactive claims; they do not erase the default geometry recorded here.
174
+
175
+ ---
176
+ **Verified:** 2026-07-13
177
+ **Tier 1 sources:** `https://www.thsrc.com.tw/`, `https://www.thsrc.com.tw/ArticleContent/46de4c5f-7c2e-4583-bd4c-0f5d67fbb9b8`, `https://www.thsrc.com.tw/ArticleContent/743c51ac-124d-4b1a-a57b-1fd820848032`, `https://www.thsrc.com.tw/ArticleContent/605d1cb2-2d98-4d73-9586-7e8363ee44e3`, `https://www.thsrc.com.tw/corp/9012aea2-04b9-45f4-b3a4-8bcb6782f735`, and `https://www.thsrc.com.tw/Corp/e5d9a893-ea05-4ff7-80e6-cc71c46d2fb4/assets/d3d47001-95a2-457e-aeef-22b2e1cb45cd.pdf`
178
+ **Tier 2 sources:** `https://getdesign.md/thsr` and `https://styles.refero.design/?q=Taiwan%20High%20Speed%20Rail` were both attempted with built-in web open and returned internal errors; no values were used.
179
+ **Conflicts unresolved:** none
180
+
181
+ ## 5. Elevation
182
+
183
+ The selector-backed booking action and the supplied dialog samples report `box-shadow: none`. This is a flatness observation for those public routes, not a global elevation scale for carriages, the T-EX app, ticketing, or unobserved overlays.
184
+
185
+ ## 6. Spacing & Shape
186
+
187
+ - The captured public booking action is 53px high with `12px 20px` padding and a 3px radius.
188
+ - The public selected tab is square at 48px high with `12px 0px` padding; its selected state is an element observation only.
189
+ - The captured SweetAlert dialog has 20px padding and a 5px radius. It appears as a static DOM sample; no dialog-opening interaction was captured.
190
+ - The evidence packet also records 1px, 2px, 3px, 5px, 6px, 8px, 10px, 11px, 12px, 14px, 15px, 16px, 18px, 20px, 23px, 25px, 30px, 34px, 35px, 40px, and 47px spacing values. No global scale is inferred from those occurrence clusters.
191
+
192
+ ## 7. Iconography & Imagery
193
+
194
+ THSR’s official corporate-identity page defines the flying-flag mark and its “T” reading; the mark is an identity asset rather than a captured application icon system. Orange, two gray levels, and the flag’s light yet tense line work carry the official speed/technology and human-care message. The supplied capture also declares FontAwesome, kyicon, slick, and weathericons, but none has visible use evidence; their declarations must not be rendered as a verified THSR icon library. No captured SVG set, illustration ratio, image-treatment rule, or favicon source establishes a reusable product asset specification.
195
+
196
+ ### Do
197
+
198
+ - Keep the official flying-flag mark and the measured public orange action treatment in their respective brand-asset and public-surface boundaries.
199
+ - Use Noto Sans TC only where the supplied public-web evidence applies; retain system faces as system evidence.
200
+ - Preserve the flat, square public geometry when reproducing the specific captured controls.
201
+
202
+ ### Don't
203
+
204
+ - Treat logo-orange meaning as permission to invent an unmeasured app, kiosk, or transaction palette.
205
+ - Substitute Arial, Helvetica, or a declared-but-unused icon face as a THSR brand typeface or component system.
206
+ - Invent hover, focus, pressed, disabled, error, success, responsive, or animation behavior from the static capture.
207
+
208
+ ## 8. Accessibility
209
+
210
+ - The captured booking action pairs `#FFFFFF` text with `#CA4F0F`. This reference records its computed colors; it is not a contrast, keyboard, semantic-label, or flow accessibility audit.
211
+ - No focus-visible, keyboard, disabled, validation, form-error, toast, or interaction expansion was captured. Any implementation needs those states designed and verified on its actual public or transaction flow.
212
+ - The official identity’s logo-background guidance is brand-asset context. It is not evidence for control contrast, accessible names, landmark structure, or responsive behavior.
213
+
214
+ ## 9. Content & Voice
215
+
216
+ THSR’s first-party material consistently joins operational assurance—safe, fast, punctual, comfortable travel—with a broader invitation to modern life, local connection, and sustainable progress. Its corporate language names “Go Extra Mile” as a commitment to improve service quality and uses the 4T framework to explain the company’s development direction. Public travel content can therefore be direct and practical, while service, safety, eligibility, or disruption communication should remain specific rather than borrowing promotional warmth as a substitute for operating detail.
217
+
218
+ ## 10. Voice & Tone
219
+
220
+ - **Assured and operational:** safety, speed, punctuality, and comfortable travel are recurring first-party commitments.
221
+ - **Progressive and civic-minded:** the company frames itself as a platform for advancement and enjoyment, not only a transport operator.
222
+ - **Warmly service-oriented:** the identity language joins modern technology with care in the details of service.
223
+
224
+ ### Do
225
+
226
+ - State travel information and service conditions plainly before adding brand warmth.
227
+ - Connect progress or technology claims to a concrete traveler or community benefit.
228
+ - Keep safety, access, disruption, and transaction information precise.
229
+
230
+ ### Don't
231
+
232
+ - Invent executive quotations, passenger testimonials, or unobserved emergency copy.
233
+ - Treat the 4T framework as evidence for interface behavior or a product design system.
234
+ - Use optimistic marketing language to obscure eligibility, timing, or service constraints.
235
+
236
+ ## 11. Brand Narrative
237
+
238
+ Taiwan High Speed Rail was incorporated in 1998 and began full Taipei–Zuoying service in 2007. The company’s own history positions high-speed rail as a way to close distance and support a different daily life across Taiwan, while its current framing extends from transportation into a life-service platform.
239
+
240
+ Its corporate identity makes that movement visible through a flying-flag mark whose lines also suggest the letter T. THSR says the orange-and-gray mark combines a sense of bright optimism, technological quality, and human attention to service detail. The same source connects the letterform to Transportation, Technology, Taiwan, and Touch.
241
+
242
+ The company’s current sustainability material anchors that expression in five values—discipline, integrity, efficiency, innovation, and sensibility—and its “Go Extra Mile” commitment. Those official facts inform the narrative and the principles below; they do not convert into uncaptured UI tokens or interaction states.
243
+
244
+ ## 12. Principles
245
+
246
+ 1. **Put safe, reliable movement first.** THSR’s mission material repeatedly centers safe, fast, punctual, and comfortable travel.
247
+ *UI implication:* communicate essential trip and service information before promotional additions.
248
+ 2. **Make progress tangible.** The company frames its vision as advancement and better life through transportation, technology, local connection, and care.
249
+ *UI implication:* explain a feature’s traveler or community outcome, not only its technical mechanism.
250
+ 3. **Practice Go Extra Mile with precision.** First-party sustainability material presents continuous improvement as service quality and thoughtful attention to needs.
251
+ *UI implication:* use clear next steps and operationally specific help; do not invent delight states where evidence is absent.
252
+ 4. **Balance technology with humanity.** The official identity combines speed and advanced transport with attention to service detail.
253
+ *UI implication:* avoid treating technical efficiency and accessible, considerate language as opposing goals.
254
+ 5. **Keep public trust legible.** Discipline, integrity, and sensibility are listed corporate values.
255
+ *UI implication:* make important conditions, disruptions, and accessibility choices explicit and reviewable.
256
+
257
+ ## 13. Personas
258
+
259
+ These are source-grounded stakeholder groups, not fictional research personas.
260
+
261
+ - **Intercity traveler:** THSR’s public mission addresses people seeking safe, fast, punctual, and comfortable movement between cities; no authenticated booking-profile behavior was captured.
262
+ - **Passenger planning a journey:** the public web surfaces include travel-information and booking-control context, but no completed purchase or account journey.
263
+ - **Local community and partner:** THSR’s 4T and sustainability material name local connection, transport-industry collaboration, and social value as part of its operating direction.
264
+ - **Employee and operator:** safety, service quality, discipline, and professional capability are central to first-party corporate material; internal systems were not captured.
265
+
266
+ ## 14. States
267
+
268
+ | Category | Evidence boundary |
269
+ |---|---|
270
+ | Empty | [FILL IN — no public empty state captured] |
271
+ | Loading | [FILL IN — no loading state captured] |
272
+ | Error: form validation | [FILL IN — no validation state captured] |
273
+ | Error: service disruption | [FILL IN — no operational-error state captured] |
274
+ | Success | [FILL IN — no success state captured] |
275
+ | Skeleton | [FILL IN — no skeleton state captured] |
276
+ | Disabled | [FILL IN — no disabled control captured] |
277
+ | Focus | [FILL IN — no focus-visible state captured] |
278
+ | Pressed | [FILL IN — no pressed state captured] |
279
+ | Hover | [FILL IN — no hover state captured] |
280
+ | Selected tab | Public home `aria-selected="true"` element only; no selection-change interaction captured. |
281
+
282
+ ## 15. Motion & Easing
283
+
284
+ The supplied raw evidence contains no interaction records, interaction kinds, motion values, transition values, or easing values. Motion tokens and behavioral rules remain `[FILL IN]`; the selected tab and static SweetAlert dialog DOM samples are not proof of transitions, opening behavior, or easing.
@@ -0,0 +1,302 @@
1
+ ---
2
+ id: thumbtack
3
+ name: Thumbtack Thumbprint
4
+ country: US
5
+ category: consumer-tech
6
+ homepage: "https://thumbprint.design/"
7
+ primary_color: "#009fd9"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=thumbprint.design&sz=128"
11
+ verified: "2026-07-13"
12
+ omd: "0.1"
13
+ ds:
14
+ name: Thumbprint
15
+ url: "https://thumbprint.design/"
16
+ type: system
17
+ description: Thumbtack's public design-system documentation.
18
+ verification_v2:
19
+ schema: 2
20
+ checked: "2026-07-13"
21
+ surfaces:
22
+ - { id: home, kind: design-system-home, url: "https://thumbprint.design/", inspected: "2026-07-13" }
23
+ - { id: button-doc, kind: design-system-component-doc, url: "https://thumbprint.design/components/button/v2/react", inspected: "2026-07-13" }
24
+ - { id: token-doc, kind: design-system-token-doc, url: "https://thumbprint.design/tokens", inspected: "2026-07-13" }
25
+ sources:
26
+ - { id: thumbprint-home, kind: product-surface, url: "https://thumbprint.design/", captured: "2026-07-13" }
27
+ - { id: thumbprint-button-doc, kind: official-doc, url: "https://thumbprint.design/components/button/v2/react", captured: "2026-07-13" }
28
+ - { id: thumbprint-token-doc, kind: product-surface, url: "https://thumbprint.design/tokens", captured: "2026-07-13" }
29
+ - { id: thumbprint-type-guide, kind: official-doc, url: "https://thumbprint.thumbtack.com/guidelines/typography", captured: "2026-07-13" }
30
+ - { id: thumbprint-product-design, kind: official-doc, url: "https://thumbprint.thumbtack.com/overview/product-design", captured: "2026-07-13" }
31
+ - { id: rise-webfont, kind: brand-asset, url: "https://fonts.thumbtack.com/thumbtack-rise/v10/ThumbtackRiseVF.woff2", captured: "2026-07-13" }
32
+ - { id: ai-home-care, kind: official-doc, url: "https://press.thumbtack.com/announcements/thumbtack-introduces-ai-powered-experience-to-reinvent-how-homeowners-care-for-their-homes/", captured: "2026-07-13" }
33
+ conflicts: []
34
+ claims:
35
+ "tokens.colors.primary": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
36
+ "tokens.colors.canvas": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
37
+ "tokens.colors.foreground": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
38
+ "tokens.colors.muted": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
39
+ "tokens.colors.hairline": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style, captured: "2026-07-13" }
40
+ "tokens.typography.family.ui": { surface_id: home, source_id: rise-webfont, method: font-face-and-computed-style, captured: "2026-07-13" }
41
+ "tokens.typography.display.size": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style, captured: "2026-07-13" }
42
+ "tokens.typography.display.weight": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style, captured: "2026-07-13" }
43
+ "tokens.typography.display.lineHeight": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style, captured: "2026-07-13" }
44
+ "tokens.typography.display.use": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style, captured: "2026-07-13" }
45
+ "tokens.typography.heading.size": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style, captured: "2026-07-13" }
46
+ "tokens.typography.heading.weight": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style, captured: "2026-07-13" }
47
+ "tokens.typography.heading.lineHeight": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style, captured: "2026-07-13" }
48
+ "tokens.typography.heading.use": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style, captured: "2026-07-13" }
49
+ "tokens.typography.body.size": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
50
+ "tokens.typography.body.weight": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
51
+ "tokens.typography.body.lineHeight": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
52
+ "tokens.typography.body.use": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
53
+ "tokens.typography.label.size": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
54
+ "tokens.typography.label.weight": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
55
+ "tokens.typography.label.lineHeight": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
56
+ "tokens.typography.label.use": { surface_id: home, source_id: thumbprint-home, method: computed-style, captured: "2026-07-13" }
57
+ "tokens.spacing.xs": { surface_id: home, source_id: thumbprint-home, method: computed-style-cluster, captured: "2026-07-13" }
58
+ "tokens.spacing.sm": { surface_id: home, source_id: thumbprint-home, method: computed-style-cluster, captured: "2026-07-13" }
59
+ "tokens.spacing.md": { surface_id: home, source_id: thumbprint-home, method: computed-style-cluster, captured: "2026-07-13" }
60
+ "tokens.spacing.lg": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style-cluster, captured: "2026-07-13" }
61
+ "tokens.spacing.xl": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style-cluster, captured: "2026-07-13" }
62
+ "tokens.rounded.square": { surface_id: home, source_id: thumbprint-home, method: computed-style-cluster, captured: "2026-07-13" }
63
+ "tokens.rounded.control": { surface_id: home, source_id: thumbprint-home, method: computed-style-cluster, captured: "2026-07-13" }
64
+ "tokens.rounded.pill": { surface_id: button-doc, source_id: thumbprint-button-doc, method: computed-style-cluster, captured: "2026-07-13" }
65
+ "tokens.components.docs-primary-button.type": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
66
+ "tokens.components.docs-primary-button.bg": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
67
+ "tokens.components.docs-primary-button.fg": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
68
+ "tokens.components.docs-primary-button.border": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
69
+ "tokens.components.docs-primary-button.radius": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
70
+ "tokens.components.docs-primary-button.padding": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
71
+ "tokens.components.docs-primary-button.height": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
72
+ "tokens.components.docs-primary-button.font": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
73
+ "tokens.components.docs-primary-button.states": { surface_id: button-doc, source_id: thumbprint-button-doc, method: static-state-observation, captured: "2026-07-13" }
74
+ "tokens.components.docs-primary-button.use": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
75
+ "tokens.components.global-search.type": { surface_id: home, source_id: thumbprint-home, method: selector-backed-computed-style, captured: "2026-07-13" }
76
+ "tokens.components.global-search.bg": { surface_id: home, source_id: thumbprint-home, method: selector-backed-computed-style, captured: "2026-07-13" }
77
+ "tokens.components.global-search.fg": { surface_id: home, source_id: thumbprint-home, method: selector-backed-computed-style, captured: "2026-07-13" }
78
+ "tokens.components.global-search.radius": { surface_id: home, source_id: thumbprint-home, method: selector-backed-computed-style, captured: "2026-07-13" }
79
+ "tokens.components.global-search.padding": { surface_id: home, source_id: thumbprint-home, method: selector-backed-computed-style, captured: "2026-07-13" }
80
+ "tokens.components.global-search.height": { surface_id: home, source_id: thumbprint-home, method: selector-backed-computed-style, captured: "2026-07-13" }
81
+ "tokens.components.global-search.font": { surface_id: home, source_id: thumbprint-home, method: selector-backed-computed-style, captured: "2026-07-13" }
82
+ "tokens.components.global-search.states": { surface_id: home, source_id: thumbprint-home, method: static-state-observation, captured: "2026-07-13" }
83
+ "tokens.components.global-search.use": { surface_id: home, source_id: thumbprint-home, method: selector-backed-computed-style, captured: "2026-07-13" }
84
+ "tokens.components.documentation-list-item.type": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
85
+ "tokens.components.documentation-list-item.fg": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
86
+ "tokens.components.documentation-list-item.border": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
87
+ "tokens.components.documentation-list-item.padding": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
88
+ "tokens.components.documentation-list-item.font": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
89
+ "tokens.components.documentation-list-item.use": { surface_id: button-doc, source_id: thumbprint-button-doc, method: selector-backed-computed-style, captured: "2026-07-13" }
90
+ tokens:
91
+ source: reconciled
92
+ extracted: "2026-07-13"
93
+ note: "Only selector-backed values from the supplied public Thumbprint capture are machine tokens. Corporate, marketplace, and narrative sources remain separate domains."
94
+ colors:
95
+ primary: "#009fd9"
96
+ canvas: "#ffffff"
97
+ foreground: "#2f3033"
98
+ muted: "#676d73"
99
+ hairline: "#e9eced"
100
+ typography:
101
+ family: { ui: "Rise" }
102
+ display: { size: 40, weight: 700, lineHeight: 1.1, use: "Observed h1 on the public button documentation route" }
103
+ heading: { size: 24, weight: 700, lineHeight: 1.333, use: "Observed h2 on the public button documentation route" }
104
+ body: { size: 16, weight: 400, lineHeight: 1.6, use: "Repeated body and documentation list content on the supplied public surfaces" }
105
+ label: { size: 14, weight: 400, lineHeight: 1.4, use: "Repeated navigation, list, and search-input text on the supplied public surfaces" }
106
+ spacing: { xs: 4, sm: 8, md: 16, lg: 24, xl: 32 }
107
+ rounded: { square: 0, control: 4, pill: 9999 }
108
+ components:
109
+ docs-primary-button: { type: button, bg: "#07344a", fg: "#7cdcfd", border: "1px solid transparent", radius: "9999px", padding: "0px 24px", height: "48px", font: "16px / 700 Rise", states: "Default and a separate disabled specimen were captured; no hover, focus, pressed, or interaction transition was captured.", use: "Public Button v2 documentation primary example; selector surface-2::[data-omd-capture=63]" }
110
+ global-search: { type: input, bg: "transparent", fg: "#2f3033", radius: "4px", padding: "9px 16px 9px 12px", height: "38px", font: "14px / 400 Rise", states: "Default only; no focus, error, disabled, or input interaction was captured.", use: "Public Thumbprint navigation search combobox; selector home::[data-omd-capture=1]" }
111
+ documentation-list-item: { type: listItem, fg: "#2f3033", border: "1px solid #e9eced (top only)", padding: "24px 0px", font: "16px / 400 Rise", use: "Public component-documentation content row; selector surface-2::li" }
112
+ components_harvested: true
113
+ ---
114
+
115
+ # Design System Inspiration of Thumbtack Thumbprint
116
+
117
+ ## 1. Visual Theme & Atmosphere
118
+
119
+ Thumbtack helps homeowners identify, plan, and complete home projects with local professionals; its current public framing is a continuing relationship with the home rather than a one-time directory search. That practical, confidence-building premise comes through in Thumbprint, the public design-system surface captured here: a white documentation canvas, near-black readable text, a lively cyan call-to-action color, and a custom Rise typeface used in a deliberately compact hierarchy. The supplied routes are the Thumbprint home, Button v2 documentation, and tokens documentation—not the consumer marketplace, a homeowner account, or a pro workflow—so this reference records the design-system public surface only. Current company messaging describes an AI-guided experience that lets a homeowner start with a problem in text, photos, or voice and then receive guidance toward the right professional. That evolution reinforces the system’s direct, reassuring expression without converting marketplace or press language into CSS facts.
120
+
121
+ **Key characteristics:**
122
+
123
+ - White documentation surfaces anchored by #2f3033 text and #e9eced separators.
124
+ - #009fd9 is a selector-backed public Thumbprint CTA color, not a universal marketplace-product claim.
125
+ - Rise is loaded from Thumbtack’s font host and carries the observed public UI hierarchy.
126
+ - Fully rounded, dark-blue documentation buttons provide the strongest observed component geometry.
127
+ - No hover, focus, pressed, menu, dialog, toast, or form-error interaction was captured.
128
+
129
+ ## 2. Color Palette & Roles
130
+
131
+ ### Observed public-surface values
132
+
133
+ - **Thumbprint cyan** (#009fd9): public home CTA background and the reference primary color.
134
+ - **Canvas** (#ffffff): observed solid public button and page surface.
135
+ - **Foreground** (#2f3033): repeated home, documentation, list, input, and button text.
136
+ - **Muted text** (#676d73): repeated secondary public text.
137
+ - **Hairline** (#e9eced): observed one-pixel top border on component-documentation list rows.
138
+
139
+ ### Boundary
140
+
141
+ The Button v2 documentation also contains a dark #07344a / light #7cdcfd button recipe. It remains a component-local docs specimen; it is not promoted to a global product color role. The packet supplies no selector-backed focus-ring, success, warning, or general error token, so those roles are absent.
142
+
143
+ ## 3. Typography Rules
144
+
145
+ ### Evidence classes
146
+
147
+ | Evidence class | Family and boundary |
148
+ |---|---|
149
+ | Official product-use | Thumbprint’s official Product Design page says Thumbtack Rise is its primary font and is used across its product; its Typography guide identifies 400 and 700 weights. This is product/design-system context, separate from the three captured routes. |
150
+ | Live computed surface-use | Rise is the visible computed family on 358 sampled body, heading, button, input, list, and text observations. The supplied packet reports it as loaded/high with Thumbtack-hosted WOFF and WOFF2 sources. |
151
+ | Official distributed brand asset | `ThumbtackRiseVF.woff2` is served from `fonts.thumbtack.com` on the captured public surface. This verifies browser delivery for this reference, not a right to redistribute the file. |
152
+ | Declared-only | Source Code Pro and Source Code Pro Fallback have declared `@font-face` records but zero visible computed uses. They are not UI typography tokens. |
153
+ | System / unresolved | A two-use system-ui occurrence is system evidence only. It is not a Rise substitute or a Thumbtack brand-family claim. No standalone public font license was located in this pass. |
154
+
155
+ ### Captured hierarchy
156
+
157
+ | Role | Family | Size | Weight | Line height | Evidence boundary |
158
+ |---|---|---:|---:|---:|---|
159
+ | Public h1 | Rise | 40px | 700 | 44px | one Button v2 documentation heading |
160
+ | Public h2 | Rise | 24px | 700 | 32px | repeated Button v2 documentation headings |
161
+ | Public h3 | Rise | 18px | 700 | 24px | repeated Button v2 documentation headings |
162
+ | Body | Rise | 16px | 400 | 25.6px | public body and documentation content |
163
+ | Label/search | Rise | 14px | 400 | 19.6–20px | navigation, lists, and search input |
164
+
165
+ ## 4. Component Stylings
166
+
167
+ ### Documentation primary button
168
+
169
+ **Default large**
170
+ - Background: #07344a
171
+ - Text: #7cdcfd
172
+ - Border: 1px solid transparent
173
+ - Radius: 9999px
174
+ - Padding: 0px 24px
175
+ - Height: 48px
176
+ - Font: 16px / 700 / Rise
177
+ - Disabled: Separate static specimen observed with #f5f6f6 background and #b9bbbf text; no transition is claimed.
178
+ - Use: Public Button v2 primary example; selector surface-2::[data-omd-capture="63"]
179
+
180
+ ### Global search input
181
+
182
+ **Small default**
183
+ - Background: transparent
184
+ - Text: #2f3033
185
+ - Radius: 4px
186
+ - Padding: 9px 16px 9px 12px
187
+ - Height: 38px
188
+ - Font: 14px / 400 / Rise
189
+ - Use: Public Thumbprint navigation search combobox; selector home::[data-omd-capture="1"]
190
+
191
+ ### Documentation content row
192
+
193
+ **Separated list item**
194
+ - Text: #2f3033
195
+ - Border: 1px solid #e9eced (top only)
196
+ - Padding: 24px 0px
197
+ - Font: 16px / 400 / Rise
198
+ - Use: Public component-documentation list row; selector surface-2::li
199
+
200
+ No hover, focus, pressed, error, selected, menu, dialog, toast, or input-validation state is added: the capture reports zero interactions. The default button, input, and list geometry remains measured static evidence.
201
+
202
+ ## 5. Layout Principles
203
+
204
+ The supplied public documentation capture clusters 4px, 8px, 16px, 24px, and 32px spacing values. The global search uses asymmetric 9px 16px 9px 12px padding, while the captured documentation primary button uses horizontal 24px padding. Documentation list rows use 24px vertical padding with a top divider. These are observed route measurements, not a claim that Thumbtack marketplace or native product screens use the same layout scale.
205
+
206
+ ## 6. Depth & Elevation
207
+
208
+ The representative default button, search input, and documentation list rows have no observed box shadow. No shadow token is emitted. A lack of a sampled shadow does not imply that all Thumbtack product overlays or cards are flat.
209
+
210
+ ## 7. Do's and Don'ts
211
+
212
+ ### Do
213
+
214
+ - Use Rise only where the exact Thumbtack-hosted face is licensed and available.
215
+ - Preserve the observed distinction between the cyan home CTA and the dark Button v2 documentation specimen.
216
+ - Use 9999px radius only for the measured documentation button recipe; retain the 4px search-input control radius.
217
+ - Keep a 24px vertically padded documentation row tied to its divider-led content context.
218
+
219
+ ### Don't
220
+
221
+ - Do not render system-ui or Source Code Pro while labeling it Rise.
222
+ - Do not treat #07344a and #7cdcfd as global marketplace color roles.
223
+ - Do not invent hover, focus, pressed, selected, validation, menu, dialog, toast, or loading component states.
224
+ - Do not generalize public Thumbprint documentation measurements to signed-in homeowner, pro, checkout, or mobile-app surfaces.
225
+
226
+ ## 8. Responsive Behavior
227
+
228
+ All supplied surfaces were captured at 1440x900. The packet gives desktop computed values only. No smaller viewport, collapsed navigation, touch target, reflow, or responsive Button v2 state was captured, so those behaviors remain unclaimed.
229
+
230
+ ## 9. Agent Prompt Guide
231
+
232
+ - For a public Thumbprint documentation primary action, use #07344a background, #7cdcfd text, 9999px radius, 0px 24px padding, 48px height, and 16px / 700 Rise; keep the default and disabled specimen distinction factual.
233
+ - For the observed public navigation search field, use transparent background, #2f3033 text, 4px radius, 9px 16px 9px 12px padding, 38px height, and 14px / 400 Rise.
234
+ - Use #009fd9 as the observed public Thumbprint home CTA color, not as a guarantee for consumer marketplace flows.
235
+ - Keep Source Code Pro declared-only and system-ui system-only; neither may stand in for Rise.
236
+
237
+ ## 10. Voice & Tone
238
+
239
+ Official Thumbtack language is practical, confidence-building, and homeowner-centered. Its current AI announcement favors describing a home problem naturally, clarifying the work, and choosing an appropriate pro; the company’s career messaging frames the work around peace of mind for homeowners and growth for local businesses. These are narrative and voice sources, not component-token evidence.
240
+
241
+ | Context | Evidence-backed direction |
242
+ |---|---|
243
+ | Project start | Begin with the homeowner’s real problem, question, or goal. |
244
+ | Guidance | Explain what happens next in direct, confidence-building terms. |
245
+ | Pro relationship | Describe fit through expertise, availability, and practical project needs. |
246
+ | Home care | Prefer ongoing-care language to a one-off transaction metaphor. |
247
+
248
+ **Public samples**
249
+
250
+ - “the one app for your home” (official 2024 fact sheet).
251
+ - “helping millions of people confidently care for and improve their homes” (official 2026 announcement).
252
+ - “help homeowners and home professionals accomplish more” (official 2026 announcement).
253
+
254
+ ## 11. Brand Narrative
255
+
256
+ Thumbtack was founded in 2008 to connect customers with local professionals and help service businesses grow. Its public history explains the original tension simply: people need skilled local help but can struggle to find the right professional, while professionals need dependable ways to reach customers. The marketplace’s early framing centered on answering questions, receiving quotes, comparing options, and hiring with confidence.
257
+
258
+ The company’s more recent public story shifts from finding a pro for a discrete task to continuously caring for a home. The 2026 AI-powered experience describes a guided starting point—text, photos, or voice—that interprets a homeowner’s issue, gathers the information needed to clarify scope, and recommends a curated set of relevant professionals. That evolution is documented company/product context; it does not add unobserved UI states to the Thumbprint capture.
259
+
260
+ ## 12. Principles
261
+
262
+ 1. **Start with the problem a homeowner can describe.** *UI implication:* let a first step be clear and plain-language rather than assuming category expertise.
263
+ 2. **Build confidence through useful guidance.** *UI implication:* explain why a next step or recommendation is relevant without inventing unsupported feedback states.
264
+ 3. **Match work to qualified local expertise.** *UI implication:* make practical selection criteria legible when evidence for a particular product flow exists.
265
+ 4. **Treat home care as ongoing.** *UI implication:* connect recurring care information without forcing every screen into a one-time checkout metaphor.
266
+ 5. **Help local businesses grow.** *UI implication:* preserve clear boundaries between homeowner and professional contexts instead of blending their requirements.
267
+
268
+ ## 13. Personas
269
+
270
+ The following are role archetypes inferred from Thumbtack’s first-party homeowner and local-professional positioning; they are not surveyed personas or synthetic-test findings.
271
+
272
+ - **Homeowner starting with an unclear issue.** Wants to describe what is happening in ordinary language and understand a sensible next step before choosing a professional.
273
+ - **Homeowner managing ongoing care.** Needs timely guidance about maintenance, repairs, and improvements across a changing home context.
274
+ - **Local service professional.** Needs a marketplace relationship that can connect relevant project demand with a sustainable business.
275
+
276
+ ## 14. States
277
+
278
+ These are content guidelines derived from the documented service context, not observed Thumbprint component state tokens.
279
+
280
+ | Category | Guidance |
281
+ |---|---|
282
+ | Empty — no project yet | Invite the homeowner to describe a problem or goal. |
283
+ | Empty — no matching pro | State the availability boundary plainly and offer a next search or timing choice when supported. |
284
+ | Loading — project understanding | Explain that the system is clarifying the project, not that a match is guaranteed. |
285
+ | Loading — pro options | Keep progress language practical and avoid unobserved animated treatments. |
286
+ | Error — incomplete description | Ask only for the missing project detail needed to continue. |
287
+ | Error — unavailable match | Explain the constraint without implying a hidden retry result. |
288
+ | Error — service interruption | State the interruption and a safe retry path in direct language. |
289
+ | Success — project clarified | Confirm what was understood and present the verified next step. |
290
+ | Success — pro connection | Confirm the connection without overpromising project completion. |
291
+ | Skeleton | Use only if a measured product surface establishes a skeleton treatment; none is captured here. |
292
+ | Disabled | The Button v2 docs contain a separate static disabled specimen; do not infer timing or hover behavior. |
293
+
294
+ ## 15. Motion & Easing
295
+
296
+ No motion timing, easing curve, or interaction transition was captured in the supplied packet. Do not promote a motion token. If an implementation needs motion, keep it functional and brief, and respect `prefers-reduced-motion: reduce` by removing nonessential motion; this is an accessibility implementation rule, not a Thumbprint-measured easing specification.
297
+
298
+ ---
299
+ **Verified:** 2026-07-13
300
+ **Tier 1 sources:** https://thumbprint.design/ , https://thumbprint.design/components/button/v2/react , https://thumbprint.design/tokens
301
+ **Tier 2 sources:** https://getdesign.md/thumbtack (attempted; no parsed result), https://styles.refero.design/?q=thumbtack (attempted; no parsed result)
302
+ **Conflicts unresolved:** none