oh-my-design-cli 1.8.7 → 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 (247) 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 +1995 -38
  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/alipay/DESIGN.md +179 -420
  71. package/web/references/apple/DESIGN.md +224 -498
  72. package/web/references/asleep/DESIGN.md +402 -0
  73. package/web/references/au/DESIGN.md +334 -0
  74. package/web/references/autopedia/DESIGN.md +382 -0
  75. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  76. package/web/references/baemin/DESIGN.md +332 -491
  77. package/web/references/banksalad/DESIGN.md +269 -180
  78. package/web/references/barogo/DESIGN.md +416 -0
  79. package/web/references/beusable/DESIGN.md +464 -0
  80. package/web/references/bilibili/DESIGN.md +206 -374
  81. package/web/references/bmw/DESIGN.md +162 -276
  82. package/web/references/brandi/DESIGN.md +184 -325
  83. package/web/references/catchtable/DESIGN.md +219 -264
  84. package/web/references/cgv/DESIGN.md +317 -0
  85. package/web/references/channeltalk/DESIGN.md +210 -336
  86. package/web/references/china-airlines/DESIGN.md +291 -0
  87. package/web/references/cjonstyle/DESIGN.md +453 -0
  88. package/web/references/class101/DESIGN.md +168 -387
  89. package/web/references/classum/DESIGN.md +228 -203
  90. package/web/references/claude/DESIGN.md +242 -479
  91. package/web/references/clay/DESIGN.md +179 -377
  92. package/web/references/clickhouse/DESIGN.md +254 -343
  93. package/web/references/cohere/DESIGN.md +214 -324
  94. package/web/references/coinone/DESIGN.md +199 -179
  95. package/web/references/corca/DESIGN.md +414 -0
  96. package/web/references/coupang/DESIGN.md +205 -475
  97. package/web/references/cursor/DESIGN.md +240 -381
  98. package/web/references/dabang/DESIGN.md +248 -213
  99. package/web/references/dable/DESIGN.md +431 -0
  100. package/web/references/datarize/DESIGN.md +217 -330
  101. package/web/references/dealicious/DESIGN.md +402 -0
  102. package/web/references/drdiary/DESIGN.md +404 -0
  103. package/web/references/elastic/DESIGN.md +238 -0
  104. package/web/references/elevenlabs/DESIGN.md +183 -321
  105. package/web/references/eslite/DESIGN.md +257 -0
  106. package/web/references/evaair/DESIGN.md +338 -0
  107. package/web/references/expo/DESIGN.md +238 -331
  108. package/web/references/familymart-tw/DESIGN.md +254 -0
  109. package/web/references/ferrari/DESIGN.md +160 -377
  110. package/web/references/figma/DESIGN.md +197 -451
  111. package/web/references/fitpet/DESIGN.md +445 -0
  112. package/web/references/flex/DESIGN.md +170 -253
  113. package/web/references/framer/DESIGN.md +197 -340
  114. package/web/references/freee/DESIGN.md +211 -533
  115. package/web/references/friendliai/DESIGN.md +431 -0
  116. package/web/references/frip/DESIGN.md +440 -0
  117. package/web/references/gangnamunni/DESIGN.md +154 -591
  118. package/web/references/gaudiolab/DESIGN.md +414 -0
  119. package/web/references/google/DESIGN.md +290 -398
  120. package/web/references/hashicorp/DESIGN.md +273 -318
  121. package/web/references/heydealer/DESIGN.md +429 -0
  122. package/web/references/humanscape/DESIGN.md +433 -0
  123. package/web/references/hyundai/DESIGN.md +158 -368
  124. package/web/references/hyundaicard/DESIGN.md +171 -121
  125. package/web/references/ibm/DESIGN.md +227 -378
  126. package/web/references/idus/DESIGN.md +450 -0
  127. package/web/references/igaworks/DESIGN.md +437 -0
  128. package/web/references/inflearn/DESIGN.md +221 -366
  129. package/web/references/intuit/DESIGN.md +244 -0
  130. package/web/references/jandi/DESIGN.md +191 -291
  131. package/web/references/jobplanet/DESIGN.md +415 -0
  132. package/web/references/kakao/DESIGN.md +287 -475
  133. package/web/references/kakaobank/DESIGN.md +220 -521
  134. package/web/references/kakaogames/DESIGN.md +220 -0
  135. package/web/references/kakaopay/DESIGN.md +207 -526
  136. package/web/references/karrot/DESIGN.md +227 -251
  137. package/web/references/kb-kookmin/DESIGN.md +308 -0
  138. package/web/references/kbank/DESIGN.md +220 -175
  139. package/web/references/kmong/DESIGN.md +281 -356
  140. package/web/references/krds/DESIGN.md +245 -19
  141. package/web/references/kream/DESIGN.md +224 -359
  142. package/web/references/kurly/DESIGN.md +211 -533
  143. package/web/references/lamborghini/DESIGN.md +198 -360
  144. package/web/references/lguplus/DESIGN.md +259 -0
  145. package/web/references/likelion/DESIGN.md +283 -0
  146. package/web/references/line/DESIGN.md +396 -355
  147. package/web/references/linear.app/DESIGN.md +209 -562
  148. package/web/references/lotteon/DESIGN.md +386 -0
  149. package/web/references/lovable/DESIGN.md +255 -349
  150. package/web/references/makinarocks/DESIGN.md +149 -349
  151. package/web/references/maum-ai/DESIGN.md +423 -0
  152. package/web/references/medibloc/DESIGN.md +425 -0
  153. package/web/references/megabox/DESIGN.md +232 -0
  154. package/web/references/mercari/DESIGN.md +217 -434
  155. package/web/references/microsoft/DESIGN.md +234 -388
  156. package/web/references/mildang/DESIGN.md +411 -0
  157. package/web/references/millie/DESIGN.md +183 -504
  158. package/web/references/minimax/DESIGN.md +264 -322
  159. package/web/references/miricanvas/DESIGN.md +182 -355
  160. package/web/references/miro/DESIGN.md +234 -232
  161. package/web/references/mistral.ai/DESIGN.md +231 -314
  162. package/web/references/mixi/DESIGN.md +234 -0
  163. package/web/references/moin/DESIGN.md +445 -0
  164. package/web/references/mongodb/DESIGN.md +219 -316
  165. package/web/references/musinsa/DESIGN.md +184 -510
  166. package/web/references/mynavi/DESIGN.md +242 -0
  167. package/web/references/myrealtrip/DESIGN.md +169 -406
  168. package/web/references/naver/DESIGN.md +328 -499
  169. package/web/references/naverwebtoon/DESIGN.md +172 -395
  170. package/web/references/nhn/DESIGN.md +169 -346
  171. package/web/references/nhncloud/DESIGN.md +185 -123
  172. package/web/references/notion/DESIGN.md +271 -475
  173. package/web/references/nrise/DESIGN.md +417 -0
  174. package/web/references/ohouse/DESIGN.md +210 -549
  175. package/web/references/oliveyoung/DESIGN.md +217 -326
  176. package/web/references/ollama/DESIGN.md +241 -308
  177. package/web/references/onestore/DESIGN.md +248 -0
  178. package/web/references/palantir/DESIGN.md +256 -0
  179. package/web/references/panasonic/DESIGN.md +276 -0
  180. package/web/references/patternfly/DESIGN.md +259 -0
  181. package/web/references/payhere/DESIGN.md +438 -0
  182. package/web/references/pega/DESIGN.md +262 -0
  183. package/web/references/peoplefund/DESIGN.md +431 -0
  184. package/web/references/petfriends/DESIGN.md +428 -0
  185. package/web/references/pinkfong/DESIGN.md +199 -367
  186. package/web/references/pinterest/DESIGN.md +258 -308
  187. package/web/references/poya/DESIGN.md +286 -0
  188. package/web/references/pozalabs/DESIGN.md +438 -0
  189. package/web/references/protopie/DESIGN.md +419 -0
  190. package/web/references/qraft/DESIGN.md +448 -0
  191. package/web/references/quotabook/DESIGN.md +449 -0
  192. package/web/references/recruit/DESIGN.md +247 -0
  193. package/web/references/remember/DESIGN.md +202 -396
  194. package/web/references/resend/DESIGN.md +274 -348
  195. package/web/references/sakura-internet/DESIGN.md +269 -0
  196. package/web/references/samsung/DESIGN.md +157 -359
  197. package/web/references/sandoll/DESIGN.md +445 -0
  198. package/web/references/sanity/DESIGN.md +241 -375
  199. package/web/references/scatterlab/DESIGN.md +412 -0
  200. package/web/references/selectstar/DESIGN.md +439 -0
  201. package/web/references/servicenow/DESIGN.md +289 -0
  202. package/web/references/shinhanbank/DESIGN.md +161 -341
  203. package/web/references/shinhancard/DESIGN.md +208 -319
  204. package/web/references/sionic/DESIGN.md +454 -0
  205. package/web/references/sktelecom/DESIGN.md +310 -0
  206. package/web/references/socar/DESIGN.md +125 -32
  207. package/web/references/softbank/DESIGN.md +231 -0
  208. package/web/references/sony/DESIGN.md +234 -0
  209. package/web/references/soop/DESIGN.md +261 -0
  210. package/web/references/spacex/DESIGN.md +184 -323
  211. package/web/references/spotify/DESIGN.md +253 -394
  212. package/web/references/squeezebits/DESIGN.md +441 -0
  213. package/web/references/stayfolio/DESIGN.md +422 -0
  214. package/web/references/stripe/DESIGN.md +212 -491
  215. package/web/references/supabase/DESIGN.md +244 -316
  216. package/web/references/tabling/DESIGN.md +415 -0
  217. package/web/references/taishinbank/DESIGN.md +243 -0
  218. package/web/references/teamlab/DESIGN.md +240 -0
  219. package/web/references/teamsparta/DESIGN.md +472 -0
  220. package/web/references/tellingme/DESIGN.md +392 -0
  221. package/web/references/tesla/DESIGN.md +244 -427
  222. package/web/references/thsr/DESIGN.md +284 -0
  223. package/web/references/thumbtack/DESIGN.md +302 -0
  224. package/web/references/together.ai/DESIGN.md +257 -304
  225. package/web/references/toss/DESIGN.md +251 -593
  226. package/web/references/toss-securities/DESIGN.md +255 -178
  227. package/web/references/tossbank/DESIGN.md +195 -491
  228. package/web/references/toyota/DESIGN.md +238 -0
  229. package/web/references/tving/DESIGN.md +197 -245
  230. package/web/references/typed/DESIGN.md +413 -0
  231. package/web/references/uber/DESIGN.md +256 -333
  232. package/web/references/udn/DESIGN.md +250 -0
  233. package/web/references/upbit/DESIGN.md +145 -256
  234. package/web/references/upstage/DESIGN.md +211 -204
  235. package/web/references/uswds/DESIGN.md +287 -0
  236. package/web/references/vercel/DESIGN.md +236 -440
  237. package/web/references/wanted/DESIGN.md +215 -487
  238. package/web/references/wise/DESIGN.md +223 -231
  239. package/web/references/wisetracker/DESIGN.md +462 -0
  240. package/web/references/wooribank/DESIGN.md +245 -0
  241. package/web/references/yanolja/DESIGN.md +250 -419
  242. package/web/references/yeogiotte/DESIGN.md +235 -418
  243. package/web/references/zapier/DESIGN.md +256 -377
  244. package/web/references/zendesk/DESIGN.md +288 -0
  245. package/web/references/zigzag/DESIGN.md +200 -621
  246. package/dist/install-skills-7UUDOLG2.js +0 -734
  247. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -0,0 +1,250 @@
1
+ ---
2
+ id: udn
3
+ name: 聯合新聞網
4
+ country: TW
5
+ category: consumer-tech
6
+ homepage: "https://udn.com/news/index"
7
+ primary_color: "#2f76aa"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=udn.com&sz=128"
11
+ verified: "2026-07-13"
12
+ omd: "0.1"
13
+ verification_v2:
14
+ schema: 2
15
+ checked: "2026-07-13"
16
+ surfaces:
17
+ - { id: home, kind: product-surface, url: "https://udn.com/news/index", inspected: "2026-07-13" }
18
+ - { id: politics, kind: product-surface, url: "https://udn.com/news/cate/2/6638", inspected: "2026-07-13" }
19
+ - { id: finance, kind: product-surface, url: "https://udn.com/news/cate/2/6649", inspected: "2026-07-13" }
20
+ sources:
21
+ - { id: home-live, kind: product-surface, url: "https://udn.com/news/index", captured: "2026-07-13" }
22
+ - { id: politics-live, kind: product-surface, url: "https://udn.com/news/cate/2/6638", captured: "2026-07-13" }
23
+ - { id: finance-live, kind: product-surface, url: "https://udn.com/news/cate/2/6649", captured: "2026-07-13" }
24
+ - { id: group-history, kind: official-doc, url: "https://www.udngroup.com/", captured: "2026-07-13" }
25
+ - { id: group-journalism, kind: official-doc, url: "https://www.udngroup.com/journalism", captured: "2026-07-13" }
26
+ - { id: mobile-product, kind: official-doc, url: "https://mobile.udn.com/re/udnnews.shtml", captured: "2026-07-13" }
27
+ - { id: noto-license, kind: license, url: "https://notofonts.github.io/noto-docs/website/use/", captured: "2026-07-13" }
28
+ conflicts: []
29
+ claims:
30
+ "tokens.colors.canvas": &home_live { surface_id: home, source_id: home-live, method: computed-style, captured: "2026-07-13" }
31
+ "tokens.colors.foreground": *home_live
32
+ "tokens.colors.muted": *home_live
33
+ "tokens.colors.primary": *home_live
34
+ "tokens.colors.action-muted": &politics_live { surface_id: politics, source_id: politics-live, method: computed-style, captured: "2026-07-13" }
35
+ "tokens.colors.accent": *home_live
36
+ "tokens.typography.family.ui": *home_live
37
+ "tokens.typography.feature-headline.size": *home_live
38
+ "tokens.typography.feature-headline.weight": *home_live
39
+ "tokens.typography.feature-headline.lineHeight": *home_live
40
+ "tokens.typography.feature-headline.tracking": *home_live
41
+ "tokens.typography.feature-headline.use": *home_live
42
+ "tokens.typography.body.size": *home_live
43
+ "tokens.typography.body.weight": *home_live
44
+ "tokens.typography.body.lineHeight": *home_live
45
+ "tokens.typography.body.tracking": *home_live
46
+ "tokens.typography.body.use": *home_live
47
+ "tokens.typography.control.size": *politics_live
48
+ "tokens.typography.control.weight": *politics_live
49
+ "tokens.typography.control.lineHeight": *politics_live
50
+ "tokens.typography.control.use": *politics_live
51
+ "tokens.spacing.xs": *home_live
52
+ "tokens.spacing.sm": *home_live
53
+ "tokens.spacing.md": *home_live
54
+ "tokens.spacing.lg": *politics_live
55
+ "tokens.rounded.none": *home_live
56
+ "tokens.rounded.control": *home_live
57
+ "tokens.shadow.none": *home_live
58
+ "tokens.components.load-more-button.type": *politics_live
59
+ "tokens.components.load-more-button.bg": *politics_live
60
+ "tokens.components.load-more-button.fg": *politics_live
61
+ "tokens.components.load-more-button.radius": *politics_live
62
+ "tokens.components.load-more-button.padding": *politics_live
63
+ "tokens.components.load-more-button.height": *politics_live
64
+ "tokens.components.load-more-button.font": *politics_live
65
+ "tokens.components.load-more-button.states": *politics_live
66
+ "tokens.components.load-more-button.use": *politics_live
67
+ "tokens.components.newsletter-email-input.type": *home_live
68
+ "tokens.components.newsletter-email-input.bg": *home_live
69
+ "tokens.components.newsletter-email-input.fg": *home_live
70
+ "tokens.components.newsletter-email-input.radius": *home_live
71
+ "tokens.components.newsletter-email-input.padding": *home_live
72
+ "tokens.components.newsletter-email-input.height": *home_live
73
+ "tokens.components.newsletter-email-input.font": *home_live
74
+ "tokens.components.newsletter-email-input.states": *home_live
75
+ "tokens.components.newsletter-email-input.use": *home_live
76
+ tokens:
77
+ source: live-extract
78
+ extracted: "2026-07-13"
79
+ colors:
80
+ canvas: "#fafafa"
81
+ foreground: "#000000"
82
+ muted: "#777777"
83
+ primary: "#2f76aa"
84
+ action-muted: "#c7c7c7"
85
+ accent: "#ee5103"
86
+ typography:
87
+ family: { ui: "Noto Sans TC" }
88
+ feature-headline: { size: 32, weight: 500, lineHeight: "48px", tracking: "1px", use: "Observed white home h2 on editorial feature blocks; not a universal display scale." }
89
+ body: { size: 16, weight: 300, lineHeight: "18.4px", tracking: "1px", use: "Observed home body baseline only." }
90
+ control: { size: 15, weight: 400, lineHeight: "18.75px", use: "Observed real load-more button on the politics and finance category surfaces." }
91
+ spacing: { xs: 2, sm: 5, md: 8, lg: 10 }
92
+ rounded: { none: 0, control: 3 }
93
+ shadow: { none: "none" }
94
+ components:
95
+ load-more-button: { type: button, bg: "#c7c7c7", fg: "#ffffff", radius: "0px 0px 3px 3px", padding: "6px 40px", height: "31px", font: "15px / 400 / 18.75px / Noto Sans TC", states: "Observed default only; no hover, focus, pressed, or disabled value was captured.", use: "Real button at politics selector surface-2::[data-omd-capture=90], repeated on the finance category surface." }
96
+ newsletter-email-input: { type: input, bg: "#ffffff", fg: "#000000", radius: "3px 0px 0px 3px", padding: "8px 10px", height: "31px", font: "13px / 400 / 14.95px / Noto Sans TC", states: "Default geometry is observed; form-error interaction targets were captured, but the packet records no distinct error-style value. No hover, focus, pressed, or disabled value was captured.", use: "Email input at home selector home::[data-omd-capture=331], also present on the two category surfaces." }
97
+ components_harvested: true
98
+ ---
99
+
100
+ # Design System Inspiration of 聯合新聞網
101
+
102
+ ## 1. Visual Theme & Atmosphere
103
+
104
+ 聯合新聞網 (udn) is United Daily News Group’s public platform for immediate news and diverse editorial content. The group says udn launched in 1999, connected its original reporting operation, and brought 24-hour news to a digital audience. Its public news pages distinguish themselves through dense but scannable sections, short navigation links, and an editorial rhythm made from an off-white canvas, black text, restrained gray, compact blue controls, and occasional orange section emphasis. The supplied evidence is deliberately bounded to a home page and two category pages, not an undisclosed all-product design system. The group’s documented move from paper-first to digital-first, plus its 2020 subscription-economy initiative, explains a continuing shift toward content and reader services; it does not establish unobserved app, personalized, or paid-reading interface patterns. [聯合報系](https://www.udngroup.com/) · [新聞媒體](https://www.udngroup.com/journalism)
105
+
106
+ **Key Characteristics:**
107
+
108
+ - `#fafafa` public-page canvas with `#000000` foreground text
109
+ - Loaded Noto Sans TC across the three captured public news surfaces
110
+ - `#2f76aa` measured on compact blue category controls; `#ee5103` on a home tab treatment
111
+ - Flat, 0–3px-radius public controls with no measured elevation
112
+ - Editorial/news-page evidence only; product, corporate, mobile-app, and subscription-flow claims stay separate
113
+
114
+ ## 2. Color Palette & Roles
115
+
116
+ - **Canvas — `#fafafa`:** home body background in the supplied packet.
117
+ - **Foreground — `#000000`:** repeated public text and border value on all three captured routes.
118
+ - **Muted — `#777777`:** repeated secondary public text/border value on all three routes.
119
+ - **Primary — `#2f76aa`:** measured background of compact blue public category controls; it is not asserted as a universal brand or CTA value.
120
+ - **Action muted — `#c7c7c7`:** measured load-more button fill on the two category pages.
121
+ - **Accent — `#ee5103`:** measured home tab-link text value; it is not promoted to a general alert or status color.
122
+
123
+ No raw packet value establishes semantic success, warning, error, subscription, paywall, or authenticated-account colors. Corporate identity prose is kept separate from these public-surface CSS values.
124
+
125
+ ## 3. Typography Rules
126
+
127
+ ### Evidence classes
128
+
129
+ | Evidence class | Family and boundary |
130
+ |---|---|
131
+ | Official product-use | No first-party statement inspected in this CREATE pass names a proprietary udn product typeface. |
132
+ | Live computed surface-use | **Noto Sans TC** is loaded/high confidence with 1,279 visible uses across body, headings, controls, inputs, and tabs; the supplied packet records 105 Google Fonts source URLs. It is the verified public-web UI-family token. |
133
+ | Official distributed brand asset | None established for a udn-specific typeface in the inspected material. |
134
+ | Declared-only | `fontello` has `@font-face` declarations and six udn-hosted source URLs, but zero visible usage in the packet; it is not a text-family token. |
135
+ | System / unresolved | `helvetica` occurs as a system stack on 21 text uses. It is not substituted for or presented as a udn brand font. Noto’s official documentation describes its Open Font License boundary. [Noto documentation](https://notofonts.github.io/noto-docs/website/use/) |
136
+
137
+ | Role | Size | Weight | Line height | Tracking | Evidence boundary |
138
+ |---|---:|---:|---:|---:|---|
139
+ | Feature headline | 32px | 500 | 48px | 1px | White `h2` samples on home feature blocks only |
140
+ | Body baseline | 16px | 300 | 18.4px | 1px | Home `body` sample only |
141
+ | Category load-more control | 15px | 400 | 18.75px | — | Real category-page button only |
142
+
143
+ The live Noto Sans TC family may be used only where it can load; a system fallback must not be labeled Noto Sans TC. No broader editorial type scale is inferred from aggregates.
144
+
145
+ ## 4. Component Stylings
146
+
147
+ ### Category-page load-more control
148
+
149
+ **Observed default**
150
+ - Background: `#c7c7c7`
151
+ - Text: `#ffffff`
152
+ - Radius: `0px 0px 3px 3px`
153
+ - Padding: `6px 40px`
154
+ - Height: `31px`
155
+ - Font: `15px / 400 / 18.75px / Noto Sans TC`
156
+ - Use: Real `button` at `surface-2::[data-omd-capture="90"]`, class `btn-more--news`, repeated on the finance category surface.
157
+
158
+ ### Newsletter email input
159
+
160
+ **Observed default**
161
+ - Background: `#ffffff`
162
+ - Text: `#000000`
163
+ - Radius: `3px 0px 0px 3px`
164
+ - Padding: `8px 10px`
165
+ - Height: `31px`
166
+ - Font: `13px / 400 / 14.95px / Noto Sans TC`
167
+ - Use: Email `input` at `home::[data-omd-capture="331"]`, also present on the two category surfaces.
168
+
169
+ The packet contains three `form-error` interaction captures. Their targets preserve the measured input geometry above and do not expose a distinct error color, border, or other style value. No hover, focus, pressed, disabled, selected, or success state is specified. Observed anchors and rows remain raw evidence rather than being recast as buttons.
170
+
171
+ ---
172
+ **Verified:** 2026-07-13
173
+ **Tier 1 sources:** https://udn.com/news/index; https://udn.com/news/cate/2/6638; https://udn.com/news/cate/2/6649; https://www.udngroup.com/; https://www.udngroup.com/journalism; https://mobile.udn.com/re/udnnews.shtml; https://notofonts.github.io/noto-docs/website/use/
174
+ **Tier 2 sources:** https://getdesign.md/udn (attempted; no usable record returned); https://styles.refero.design/?q=udn (attempted; no usable record returned)
175
+ **Conflicts unresolved:** none
176
+
177
+ ## 5. Layout Principles
178
+
179
+ The supplied evidence is a 1440×900 desktop capture of a long, multi-module public news page and two category pages. Measured spacing clusters include 2, 5, 8, and 10px; those values are preserved as observed compact-control/layout rhythm, not a universal page grid. Category controls use 6px 40px or compact 5–10px padding, while the page body has no measured mobile or paywall layout rule. Responsive breakpoints, reading-column width, sticky behavior, and authenticated layouts are absent.
180
+
181
+ ## 6. Depth & Elevation
182
+
183
+ The promoted body, button, and input samples all report `box-shadow: none`. No selector-backed card, sheet, dialog, floating panel, or elevation scale is available in the packet, so depth tokens beyond `none` are omitted.
184
+
185
+ ## 7. Do's and Don'ts
186
+
187
+ ### Do
188
+
189
+ - Use Noto Sans TC only when the verified webfont can be loaded.
190
+ - Keep the blue category control, muted load-more fill, and orange tab treatment in their observed public-news contexts.
191
+ - Preserve the low-radius, no-shadow geometry where the matching selector-backed public component is appropriate.
192
+ - Distinguish news-page evidence from corporate history, mobile-app messaging, and unknown subscriber flows.
193
+
194
+ ### Don't
195
+
196
+ - Do not treat `#2f76aa` as a universal udn brand, subscription, or confirmation color.
197
+ - Do not turn a captured anchor or editorial row into a button component without button semantics.
198
+ - Do not invent a red error treatment from the presence of a form-error interaction.
199
+ - Do not substitute Helvetica or a system stack and call it Noto Sans TC.
200
+
201
+ ## 8. Responsive Behavior
202
+
203
+ Only the 1440×900 collector viewport is supplied. No breakpoint, mobile grid, touch target, safe-area, content truncation, or responsive navigation transition is observed. The official mobile-product page is narrative/product context, not raw responsive CSS evidence for these tokens.
204
+
205
+ ## 9. Agent Prompt Guide
206
+
207
+ For a public Taiwanese news-index or category-page concept, use an off-white canvas, black editorial text, Noto Sans TC only when available, restrained 0–3px corners, and no elevation. Use the measured blue, muted-gray, and orange values only for their documented public-news roles. Do not generate a subscriber dashboard, personal-feed flow, article paywall, mobile-app navigation, toast, dialog, or semantic state library from this reference.
208
+
209
+ ## 10. Voice & Tone
210
+
211
+ The group’s official language is public-interest oriented: its mission is to make Taiwan better, and its listed values are integrity, justice, quality, and innovation. The official mobile product positions udn News as fast, broad, deep, and personalized. Together these support a precise, reader-serving public voice rather than promotional superlatives. [Group mission and values](https://www.udngroup.com/) · [udn News mobile product](https://mobile.udn.com/re/udnnews.shtml)
212
+
213
+ | Context | Observed direction |
214
+ |---|---|
215
+ | News navigation | Short category labels and scannable hierarchy |
216
+ | Product positioning | State breadth or speed plainly, then explain the reader benefit |
217
+ | Public-interest communication | Prefer accountable, evidence-led language over decorative claims |
218
+
219
+ Voice examples below are grounded paraphrases, not a specification for unseen editorial or notification copy:
220
+
221
+ - “Latest coverage, organized by the topic you need now.”
222
+ - “Read the context before forming a view.”
223
+ - “Save this channel to return to reporting that matters to you.”
224
+
225
+ ## 11. Brand Narrative
226
+
227
+ 聯合報 was founded in 1951; the group says 聯合新聞網 launched in 1999 and connected the group’s original editorial content to 24-hour digital news. The organisation frames its mission as making Taiwan better and describes its journalism as present wherever audiences read: paper, computer, phone, and tablet. [聯合報系](https://www.udngroup.com/) · [新聞媒體](https://www.udngroup.com/journalism)
228
+
229
+ Its current evolution is explicitly digital rather than merely a visual refresh. The group documents a shift from paper-first to digital-first, and says it began a subscription economy in 2020 to offer more precise, deeper, advertising-free reading experiences. Its mobile product describes always-on news, depth, diversity, social connection, and personal channel ordering. These first-party claims explain the platform’s service direction; they do not supply unobserved UI tokens or reader-data flows. [新聞媒體](https://www.udngroup.com/journalism) · [udn News mobile product](https://mobile.udn.com/re/udnnews.shtml)
230
+
231
+ ## 12. Principles
232
+
233
+ 1. **Serve the public through accountable journalism.** The group states a mission to make Taiwan better and values integrity, justice, quality, and innovation. *UI implication:* make source, section, and reading context easy to identify; do not use visual urgency to overstate a claim.
234
+ 2. **Meet readers across media and moments.** The group describes news delivery across paper, computers, phones, and tablets. *UI implication:* treat the captured desktop news page as one source domain, not a substitute for unknown mobile behavior.
235
+ 3. **Make depth discoverable.** The journalism page describes digital storytelling through graphics, animation, video, data, maps, and podcasts. *UI implication:* preserve clear editorial hierarchy before adding media treatments; do not infer a generic card system.
236
+ 4. **Evolve around reader service.** The documented digital transformation includes subscriptions, user operation, and more precise services. *UI implication:* distinguish public navigation from unobserved personalization and payment decisions.
237
+
238
+ ## 13. Personas
239
+
240
+ **Public-source audience cues, not research personas:** readers seeking 24-hour updates, people looking for deeper explanatory or multimedia reporting, and readers who want to save or order preferred channels are all described by the official mobile-product material. [udn News mobile product](https://mobile.udn.com/re/udnnews.shtml)
241
+
242
+ The public category pages also indicate an audience navigating broad news sections. No demographic, behavioral, or subscription persona is invented because the supplied evidence does not establish one.
243
+
244
+ ## 14. States
245
+
246
+ The raw artifact records three `form-error` interactions across the public routes. Their captured input targets retain the observed default geometry and expose no distinct error color, border, text, message, loading, success, disabled, skeleton, toast, or empty-state value. Those unobserved state specifications are absent rather than synthesized.
247
+
248
+ ## 15. Motion & Easing
249
+
250
+ No transition duration, easing curve, reduced-motion behavior, animation, or state transition was captured. Motion tokens are intentionally absent.