zugzbot 1.2.0 → 1.4.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 (786) hide show
  1. package/.opencode/agents/sdd-coder.md +5 -4
  2. package/.opencode/agents/sdd-orchestrator.md +11 -10
  3. package/.opencode/agents/sdd-spec-writer.md +3 -4
  4. package/.opencode/commands/loop.md +1 -1
  5. package/.opencode/plugins/loop-enforcer.ts +0 -1
  6. package/.opencode/plugins/sdd-bridge.ts +1 -1
  7. package/.opencode/rules/sdd-global.md +8 -0
  8. package/.opencode/scripts/lint-charts.js +1 -2
  9. package/.opencode/skills/sdd-foundation-overview/SKILL.md +3 -4
  10. package/.opencode/skills/sdd-methodology/SKILL.md +8 -10
  11. package/.opencode/skills/sdd-quickstart/SKILL.md +5 -9
  12. package/.opencode/skills/shadcn-templates/SKILL.md +93 -32
  13. package/.opencode/templates/nextjs-shadcn/components.json +4 -1
  14. package/.opencode/tools/sdd_bootstrap.ts +21 -0
  15. package/.opencode/tools/sdd_catalog.ts +1040 -0
  16. package/.opencode/tools/sdd_core.ts +8 -6
  17. package/.opencode/tools/sdd_lucide.ts +112 -0
  18. package/README.md +1 -7
  19. package/opencode.json +0 -10
  20. package/package.json +1 -3
  21. package/.opencode/oh-my-design/design-md/11st/.verification.md +0 -37
  22. package/.opencode/oh-my-design/design-md/11st/DESIGN.md +0 -400
  23. package/.opencode/oh-my-design/design-md/17live/DESIGN.md +0 -467
  24. package/.opencode/oh-my-design/design-md/29cm/DESIGN.md +0 -495
  25. package/.opencode/oh-my-design/design-md/29cm/_promo.json +0 -23
  26. package/.opencode/oh-my-design/design-md/29cm/_research.md +0 -103
  27. package/.opencode/oh-my-design/design-md/3o3/.verification.md +0 -73
  28. package/.opencode/oh-my-design/design-md/3o3/DESIGN.md +0 -454
  29. package/.opencode/oh-my-design/design-md/91app/.verification.md +0 -25
  30. package/.opencode/oh-my-design/design-md/91app/DESIGN.md +0 -182
  31. package/.opencode/oh-my-design/design-md/abema/.verification.md +0 -64
  32. package/.opencode/oh-my-design/design-md/abema/DESIGN.md +0 -535
  33. package/.opencode/oh-my-design/design-md/ably/DESIGN.md +0 -646
  34. package/.opencode/oh-my-design/design-md/ably/_promo.json +0 -18
  35. package/.opencode/oh-my-design/design-md/ably/_research.md +0 -120
  36. package/.opencode/oh-my-design/design-md/accupass/.verification.md +0 -66
  37. package/.opencode/oh-my-design/design-md/accupass/DESIGN.md +0 -494
  38. package/.opencode/oh-my-design/design-md/adobe/.verification.md +0 -63
  39. package/.opencode/oh-my-design/design-md/adobe/DESIGN.md +0 -458
  40. package/.opencode/oh-my-design/design-md/airbnb/.verification.md +0 -143
  41. package/.opencode/oh-my-design/design-md/airbnb/DESIGN.md +0 -639
  42. package/.opencode/oh-my-design/design-md/airbnb/README.md +0 -23
  43. package/.opencode/oh-my-design/design-md/airbnb/preview-dark.html +0 -234
  44. package/.opencode/oh-my-design/design-md/airbnb/preview.html +0 -233
  45. package/.opencode/oh-my-design/design-md/airtable/.verification.md +0 -136
  46. package/.opencode/oh-my-design/design-md/airtable/DESIGN.md +0 -314
  47. package/.opencode/oh-my-design/design-md/airtable/README.md +0 -23
  48. package/.opencode/oh-my-design/design-md/airtable/preview-dark.html +0 -165
  49. package/.opencode/oh-my-design/design-md/airtable/preview.html +0 -164
  50. package/.opencode/oh-my-design/design-md/alipay/DESIGN.md +0 -506
  51. package/.opencode/oh-my-design/design-md/amazingtalker/.verification.md +0 -38
  52. package/.opencode/oh-my-design/design-md/amazingtalker/DESIGN.md +0 -434
  53. package/.opencode/oh-my-design/design-md/appier/DESIGN.md +0 -465
  54. package/.opencode/oh-my-design/design-md/apple/.verification.md +0 -162
  55. package/.opencode/oh-my-design/design-md/apple/DESIGN.md +0 -613
  56. package/.opencode/oh-my-design/design-md/apple/README.md +0 -24
  57. package/.opencode/oh-my-design/design-md/apple/preview-dark.html +0 -420
  58. package/.opencode/oh-my-design/design-md/apple/preview.html +0 -414
  59. package/.opencode/oh-my-design/design-md/baemin/.verification.md +0 -132
  60. package/.opencode/oh-my-design/design-md/baemin/DESIGN.md +0 -578
  61. package/.opencode/oh-my-design/design-md/baemin/README.md +0 -19
  62. package/.opencode/oh-my-design/design-md/baemin/_research.md +0 -84
  63. package/.opencode/oh-my-design/design-md/banksalad/DESIGN.md +0 -688
  64. package/.opencode/oh-my-design/design-md/banksalad/_promo.json +0 -29
  65. package/.opencode/oh-my-design/design-md/banksalad/_research.md +0 -190
  66. package/.opencode/oh-my-design/design-md/bilibili/DESIGN.md +0 -471
  67. package/.opencode/oh-my-design/design-md/bithumb/.verification.md +0 -31
  68. package/.opencode/oh-my-design/design-md/bithumb/DESIGN.md +0 -208
  69. package/.opencode/oh-my-design/design-md/bmw/.verification.md +0 -114
  70. package/.opencode/oh-my-design/design-md/bmw/DESIGN.md +0 -360
  71. package/.opencode/oh-my-design/design-md/bmw/README.md +0 -23
  72. package/.opencode/oh-my-design/design-md/bmw/preview-dark.html +0 -211
  73. package/.opencode/oh-my-design/design-md/bmw/preview.html +0 -210
  74. package/.opencode/oh-my-design/design-md/brandi/.verification.md +0 -29
  75. package/.opencode/oh-my-design/design-md/brandi/DESIGN.md +0 -414
  76. package/.opencode/oh-my-design/design-md/bunjang/DESIGN.md +0 -374
  77. package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/.live-inspect-proof.json +0 -260
  78. package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/fonts.json +0 -33
  79. package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/logo-icon.svg +0 -10
  80. package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/structure.json +0 -131
  81. package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/tokens.json +0 -147
  82. package/.opencode/oh-my-design/design-md/cakeresume/.verification.md +0 -25
  83. package/.opencode/oh-my-design/design-md/cakeresume/DESIGN.md +0 -191
  84. package/.opencode/oh-my-design/design-md/cal/.verification.md +0 -145
  85. package/.opencode/oh-my-design/design-md/cal/DESIGN.md +0 -481
  86. package/.opencode/oh-my-design/design-md/cal/README.md +0 -23
  87. package/.opencode/oh-my-design/design-md/cal/preview-dark.html +0 -449
  88. package/.opencode/oh-my-design/design-md/cal/preview.html +0 -575
  89. package/.opencode/oh-my-design/design-md/catchtable/DESIGN.md +0 -341
  90. package/.opencode/oh-my-design/design-md/catchtable/_research.md +0 -54
  91. package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/.live-inspect-proof.json +0 -204
  92. package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/.live-inspect-raw.json +0 -22
  93. package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/fonts.json +0 -21
  94. package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/structure.json +0 -42
  95. package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/tokens.json +0 -95
  96. package/.opencode/oh-my-design/design-md/cathay/.verification.md +0 -44
  97. package/.opencode/oh-my-design/design-md/cathay/DESIGN.md +0 -432
  98. package/.opencode/oh-my-design/design-md/channeltalk/DESIGN.md +0 -422
  99. package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/.live-inspect-proof.json +0 -320
  100. package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/fonts.json +0 -53
  101. package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/structure.json +0 -47
  102. package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/tokens.json +0 -78
  103. package/.opencode/oh-my-design/design-md/class101/DESIGN.md +0 -484
  104. package/.opencode/oh-my-design/design-md/classting/.verification.md +0 -32
  105. package/.opencode/oh-my-design/design-md/classting/DESIGN.md +0 -292
  106. package/.opencode/oh-my-design/design-md/classum/DESIGN.md +0 -279
  107. package/.opencode/oh-my-design/design-md/classum/assets/_reference/.live-inspect-proof.json +0 -72
  108. package/.opencode/oh-my-design/design-md/classum/assets/_reference/fonts.json +0 -20
  109. package/.opencode/oh-my-design/design-md/classum/assets/_reference/structure.json +0 -21
  110. package/.opencode/oh-my-design/design-md/classum/assets/_reference/tokens.json +0 -56
  111. package/.opencode/oh-my-design/design-md/claude/.verification.md +0 -106
  112. package/.opencode/oh-my-design/design-md/claude/DESIGN.md +0 -561
  113. package/.opencode/oh-my-design/design-md/claude/README.md +0 -24
  114. package/.opencode/oh-my-design/design-md/claude/preview-dark.html +0 -803
  115. package/.opencode/oh-my-design/design-md/claude/preview.html +0 -826
  116. package/.opencode/oh-my-design/design-md/clay/.verification.md +0 -129
  117. package/.opencode/oh-my-design/design-md/clay/DESIGN.md +0 -454
  118. package/.opencode/oh-my-design/design-md/clay/README.md +0 -23
  119. package/.opencode/oh-my-design/design-md/clay/preview-dark.html +0 -316
  120. package/.opencode/oh-my-design/design-md/clay/preview.html +0 -315
  121. package/.opencode/oh-my-design/design-md/clickhouse/.verification.md +0 -132
  122. package/.opencode/oh-my-design/design-md/clickhouse/DESIGN.md +0 -424
  123. package/.opencode/oh-my-design/design-md/clickhouse/README.md +0 -24
  124. package/.opencode/oh-my-design/design-md/clickhouse/preview-dark.html +0 -834
  125. package/.opencode/oh-my-design/design-md/clickhouse/preview.html +0 -786
  126. package/.opencode/oh-my-design/design-md/cloudflare/.verification.md +0 -21
  127. package/.opencode/oh-my-design/design-md/cloudflare/DESIGN.md +0 -637
  128. package/.opencode/oh-my-design/design-md/cohere/.verification.md +0 -136
  129. package/.opencode/oh-my-design/design-md/cohere/DESIGN.md +0 -409
  130. package/.opencode/oh-my-design/design-md/cohere/README.md +0 -24
  131. package/.opencode/oh-my-design/design-md/cohere/preview-dark.html +0 -803
  132. package/.opencode/oh-my-design/design-md/cohere/preview.html +0 -807
  133. package/.opencode/oh-my-design/design-md/coinbase/.verification.md +0 -116
  134. package/.opencode/oh-my-design/design-md/coinbase/DESIGN.md +0 -353
  135. package/.opencode/oh-my-design/design-md/coinbase/README.md +0 -23
  136. package/.opencode/oh-my-design/design-md/coinbase/preview-dark.html +0 -164
  137. package/.opencode/oh-my-design/design-md/coinbase/preview.html +0 -163
  138. package/.opencode/oh-my-design/design-md/coinone/.verification.md +0 -38
  139. package/.opencode/oh-my-design/design-md/coinone/DESIGN.md +0 -257
  140. package/.opencode/oh-my-design/design-md/composio/.verification.md +0 -143
  141. package/.opencode/oh-my-design/design-md/composio/DESIGN.md +0 -441
  142. package/.opencode/oh-my-design/design-md/composio/README.md +0 -24
  143. package/.opencode/oh-my-design/design-md/composio/preview-dark.html +0 -958
  144. package/.opencode/oh-my-design/design-md/composio/preview.html +0 -933
  145. package/.opencode/oh-my-design/design-md/cookpad/DESIGN.md +0 -394
  146. package/.opencode/oh-my-design/design-md/coupang/.verification.md +0 -141
  147. package/.opencode/oh-my-design/design-md/coupang/DESIGN.md +0 -557
  148. package/.opencode/oh-my-design/design-md/cursor/.verification.md +0 -141
  149. package/.opencode/oh-my-design/design-md/cursor/DESIGN.md +0 -460
  150. package/.opencode/oh-my-design/design-md/cursor/README.md +0 -24
  151. package/.opencode/oh-my-design/design-md/cursor/preview-dark.html +0 -393
  152. package/.opencode/oh-my-design/design-md/cursor/preview.html +0 -383
  153. package/.opencode/oh-my-design/design-md/dabang/DESIGN.md +0 -267
  154. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/.live-inspect-proof.json +0 -145
  155. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/fonts.json +0 -22
  156. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/raw-capture-map.json +0 -718
  157. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/raw-capture.json +0 -1125
  158. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/structure.json +0 -53
  159. package/.opencode/oh-my-design/design-md/dabang/assets/_reference/tokens.json +0 -130
  160. package/.opencode/oh-my-design/design-md/danawa/.verification.md +0 -60
  161. package/.opencode/oh-my-design/design-md/danawa/DESIGN.md +0 -477
  162. package/.opencode/oh-my-design/design-md/dcard/.verification.md +0 -118
  163. package/.opencode/oh-my-design/design-md/dcard/DESIGN.md +0 -633
  164. package/.opencode/oh-my-design/design-md/dcard/README.md +0 -12
  165. package/.opencode/oh-my-design/design-md/dcard/_research/forum-1440px.png +0 -0
  166. package/.opencode/oh-my-design/design-md/dcard/_research.md +0 -133
  167. package/.opencode/oh-my-design/design-md/dell/.verification.md +0 -21
  168. package/.opencode/oh-my-design/design-md/dell/DESIGN.md +0 -636
  169. package/.opencode/oh-my-design/design-md/devsisters/.verification.md +0 -32
  170. package/.opencode/oh-my-design/design-md/devsisters/DESIGN.md +0 -282
  171. package/.opencode/oh-my-design/design-md/discord/.verification.md +0 -21
  172. package/.opencode/oh-my-design/design-md/discord/DESIGN.md +0 -604
  173. package/.opencode/oh-my-design/design-md/dji/DESIGN.md +0 -454
  174. package/.opencode/oh-my-design/design-md/drnow/.verification.md +0 -41
  175. package/.opencode/oh-my-design/design-md/drnow/DESIGN.md +0 -383
  176. package/.opencode/oh-my-design/design-md/dropbox/.verification.md +0 -61
  177. package/.opencode/oh-my-design/design-md/dropbox/DESIGN.md +0 -445
  178. package/.opencode/oh-my-design/design-md/duolingo/.verification.md +0 -20
  179. package/.opencode/oh-my-design/design-md/duolingo/DESIGN.md +0 -563
  180. package/.opencode/oh-my-design/design-md/elevenlabs/.verification.md +0 -128
  181. package/.opencode/oh-my-design/design-md/elevenlabs/DESIGN.md +0 -415
  182. package/.opencode/oh-my-design/design-md/elevenlabs/README.md +0 -23
  183. package/.opencode/oh-my-design/design-md/elevenlabs/preview-dark.html +0 -252
  184. package/.opencode/oh-my-design/design-md/elevenlabs/preview.html +0 -251
  185. package/.opencode/oh-my-design/design-md/expo/.verification.md +0 -141
  186. package/.opencode/oh-my-design/design-md/expo/DESIGN.md +0 -412
  187. package/.opencode/oh-my-design/design-md/expo/README.md +0 -24
  188. package/.opencode/oh-my-design/design-md/expo/preview-dark.html +0 -533
  189. package/.opencode/oh-my-design/design-md/expo/preview.html +0 -533
  190. package/.opencode/oh-my-design/design-md/fastcampus/DESIGN.md +0 -529
  191. package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/.live-inspect-proof.json +0 -950
  192. package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/fonts.json +0 -14
  193. package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/structure.json +0 -30
  194. package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/tokens.json +0 -109
  195. package/.opencode/oh-my-design/design-md/ferrari/.verification.md +0 -119
  196. package/.opencode/oh-my-design/design-md/ferrari/DESIGN.md +0 -447
  197. package/.opencode/oh-my-design/design-md/ferrari/README.md +0 -23
  198. package/.opencode/oh-my-design/design-md/ferrari/preview-dark.html +0 -1162
  199. package/.opencode/oh-my-design/design-md/ferrari/preview.html +0 -1122
  200. package/.opencode/oh-my-design/design-md/figma/.verification.md +0 -206
  201. package/.opencode/oh-my-design/design-md/figma/DESIGN.md +0 -534
  202. package/.opencode/oh-my-design/design-md/figma/README.md +0 -24
  203. package/.opencode/oh-my-design/design-md/figma/preview-dark.html +0 -822
  204. package/.opencode/oh-my-design/design-md/figma/preview.html +0 -832
  205. package/.opencode/oh-my-design/design-md/finda/.verification.md +0 -33
  206. package/.opencode/oh-my-design/design-md/finda/DESIGN.md +0 -413
  207. package/.opencode/oh-my-design/design-md/firstory/.verification.md +0 -70
  208. package/.opencode/oh-my-design/design-md/firstory/DESIGN.md +0 -487
  209. package/.opencode/oh-my-design/design-md/flex/DESIGN.md +0 -356
  210. package/.opencode/oh-my-design/design-md/flex/_research.md +0 -49
  211. package/.opencode/oh-my-design/design-md/flex/assets/_reference/.live-inspect-proof.json +0 -192
  212. package/.opencode/oh-my-design/design-md/flex/assets/_reference/.raw-inspect.json +0 -873
  213. package/.opencode/oh-my-design/design-md/flex/assets/_reference/fonts.json +0 -17
  214. package/.opencode/oh-my-design/design-md/flex/assets/_reference/structure.json +0 -58
  215. package/.opencode/oh-my-design/design-md/flex/assets/_reference/tokens.json +0 -75
  216. package/.opencode/oh-my-design/design-md/flo/.verification.md +0 -33
  217. package/.opencode/oh-my-design/design-md/flo/DESIGN.md +0 -349
  218. package/.opencode/oh-my-design/design-md/framer/.verification.md +0 -147
  219. package/.opencode/oh-my-design/design-md/framer/DESIGN.md +0 -431
  220. package/.opencode/oh-my-design/design-md/framer/README.md +0 -23
  221. package/.opencode/oh-my-design/design-md/framer/preview-dark.html +0 -902
  222. package/.opencode/oh-my-design/design-md/framer/preview.html +0 -883
  223. package/.opencode/oh-my-design/design-md/freee/.verification.md +0 -145
  224. package/.opencode/oh-my-design/design-md/freee/DESIGN.md +0 -620
  225. package/.opencode/oh-my-design/design-md/freee/README.md +0 -12
  226. package/.opencode/oh-my-design/design-md/freee/_research/vibes-storybook-1440px.png +0 -0
  227. package/.opencode/oh-my-design/design-md/freee/_research.md +0 -116
  228. package/.opencode/oh-my-design/design-md/fugle/.verification.md +0 -40
  229. package/.opencode/oh-my-design/design-md/fugle/DESIGN.md +0 -290
  230. package/.opencode/oh-my-design/design-md/funnow/.verification.md +0 -62
  231. package/.opencode/oh-my-design/design-md/funnow/DESIGN.md +0 -431
  232. package/.opencode/oh-my-design/design-md/gangnamunni/DESIGN.md +0 -677
  233. package/.opencode/oh-my-design/design-md/gangnamunni/_promo.json +0 -26
  234. package/.opencode/oh-my-design/design-md/gangnamunni/_research.md +0 -113
  235. package/.opencode/oh-my-design/design-md/genie/.verification.md +0 -29
  236. package/.opencode/oh-my-design/design-md/genie/DESIGN.md +0 -415
  237. package/.opencode/oh-my-design/design-md/github/.verification.md +0 -21
  238. package/.opencode/oh-my-design/design-md/github/DESIGN.md +0 -727
  239. package/.opencode/oh-my-design/design-md/gmarket/DESIGN.md +0 -534
  240. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/.live-inspect-proof.json +0 -217
  241. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/fonts.json +0 -41
  242. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/raw-capture-bestsellers.json +0 -1929
  243. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/raw-capture-home.json +0 -3675
  244. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/structure.json +0 -65
  245. package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/tokens.json +0 -210
  246. package/.opencode/oh-my-design/design-md/gogolook/.verification.md +0 -31
  247. package/.opencode/oh-my-design/design-md/gogolook/DESIGN.md +0 -155
  248. package/.opencode/oh-my-design/design-md/gogoro/DESIGN.md +0 -441
  249. package/.opencode/oh-my-design/design-md/google/.verification.md +0 -61
  250. package/.opencode/oh-my-design/design-md/google/DESIGN.md +0 -499
  251. package/.opencode/oh-my-design/design-md/greenvines/.verification.md +0 -72
  252. package/.opencode/oh-my-design/design-md/greenvines/DESIGN.md +0 -454
  253. package/.opencode/oh-my-design/design-md/greeting/.verification.md +0 -64
  254. package/.opencode/oh-my-design/design-md/greeting/DESIGN.md +0 -462
  255. package/.opencode/oh-my-design/design-md/grip/.verification.md +0 -36
  256. package/.opencode/oh-my-design/design-md/grip/DESIGN.md +0 -289
  257. package/.opencode/oh-my-design/design-md/hahow/.verification.md +0 -31
  258. package/.opencode/oh-my-design/design-md/hahow/DESIGN.md +0 -184
  259. package/.opencode/oh-my-design/design-md/hashicorp/.verification.md +0 -142
  260. package/.opencode/oh-my-design/design-md/hashicorp/DESIGN.md +0 -411
  261. package/.opencode/oh-my-design/design-md/hashicorp/README.md +0 -24
  262. package/.opencode/oh-my-design/design-md/hashicorp/preview-dark.html +0 -1202
  263. package/.opencode/oh-my-design/design-md/hashicorp/preview.html +0 -1193
  264. package/.opencode/oh-my-design/design-md/hogangnono/.verification.md +0 -33
  265. package/.opencode/oh-my-design/design-md/hogangnono/DESIGN.md +0 -349
  266. package/.opencode/oh-my-design/design-md/hp/.verification.md +0 -21
  267. package/.opencode/oh-my-design/design-md/hp/DESIGN.md +0 -563
  268. package/.opencode/oh-my-design/design-md/hyperconnect/.verification.md +0 -40
  269. package/.opencode/oh-my-design/design-md/hyperconnect/DESIGN.md +0 -393
  270. package/.opencode/oh-my-design/design-md/hyundaicard/.verification.md +0 -25
  271. package/.opencode/oh-my-design/design-md/hyundaicard/DESIGN.md +0 -201
  272. package/.opencode/oh-my-design/design-md/ibm/.verification.md +0 -102
  273. package/.opencode/oh-my-design/design-md/ibm/DESIGN.md +0 -464
  274. package/.opencode/oh-my-design/design-md/ibm/README.md +0 -24
  275. package/.opencode/oh-my-design/design-md/ibm/preview-dark.html +0 -443
  276. package/.opencode/oh-my-design/design-md/ibm/preview.html +0 -428
  277. package/.opencode/oh-my-design/design-md/ichef/DESIGN.md +0 -455
  278. package/.opencode/oh-my-design/design-md/ikala/.verification.md +0 -35
  279. package/.opencode/oh-my-design/design-md/ikala/DESIGN.md +0 -400
  280. package/.opencode/oh-my-design/design-md/imweb/.verification.md +0 -61
  281. package/.opencode/oh-my-design/design-md/imweb/DESIGN.md +0 -460
  282. package/.opencode/oh-my-design/design-md/inflearn/DESIGN.md +0 -453
  283. package/.opencode/oh-my-design/design-md/inflearn/_promo.json +0 -29
  284. package/.opencode/oh-my-design/design-md/inflearn/_research.md +0 -85
  285. package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/.live-inspect-proof-courses.json +0 -679
  286. package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/.live-inspect-proof.json +0 -448
  287. package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/fonts.json +0 -41
  288. package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/structure.json +0 -110
  289. package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/tokens.json +0 -54
  290. package/.opencode/oh-my-design/design-md/intercom/.verification.md +0 -144
  291. package/.opencode/oh-my-design/design-md/intercom/DESIGN.md +0 -271
  292. package/.opencode/oh-my-design/design-md/intercom/README.md +0 -23
  293. package/.opencode/oh-my-design/design-md/intercom/preview-dark.html +0 -185
  294. package/.opencode/oh-my-design/design-md/intercom/preview.html +0 -184
  295. package/.opencode/oh-my-design/design-md/jandi/.verification.md +0 -26
  296. package/.opencode/oh-my-design/design-md/jandi/DESIGN.md +0 -382
  297. package/.opencode/oh-my-design/design-md/jkopay/.verification.md +0 -32
  298. package/.opencode/oh-my-design/design-md/jkopay/DESIGN.md +0 -283
  299. package/.opencode/oh-my-design/design-md/jobkorea/.verification.md +0 -30
  300. package/.opencode/oh-my-design/design-md/jobkorea/DESIGN.md +0 -349
  301. package/.opencode/oh-my-design/design-md/jumpit/DESIGN.md +0 -403
  302. package/.opencode/oh-my-design/design-md/jumpit/_research.md +0 -119
  303. package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/.live-inspect-proof.json +0 -182
  304. package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/fonts.json +0 -20
  305. package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/structure.json +0 -66
  306. package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/tokens.json +0 -108
  307. package/.opencode/oh-my-design/design-md/kakao/.verification.md +0 -137
  308. package/.opencode/oh-my-design/design-md/kakao/DESIGN.md +0 -568
  309. package/.opencode/oh-my-design/design-md/kakao/README.md +0 -18
  310. package/.opencode/oh-my-design/design-md/kakao/_research.md +0 -98
  311. package/.opencode/oh-my-design/design-md/kakaobank/.verification.md +0 -133
  312. package/.opencode/oh-my-design/design-md/kakaobank/DESIGN.md +0 -602
  313. package/.opencode/oh-my-design/design-md/kakaopay/DESIGN.md +0 -603
  314. package/.opencode/oh-my-design/design-md/kakaopay/_promo.json +0 -22
  315. package/.opencode/oh-my-design/design-md/kakaopay/_research.md +0 -84
  316. package/.opencode/oh-my-design/design-md/kakaot/DESIGN.md +0 -507
  317. package/.opencode/oh-my-design/design-md/karrot/.verification.md +0 -143
  318. package/.opencode/oh-my-design/design-md/karrot/DESIGN.md +0 -494
  319. package/.opencode/oh-my-design/design-md/karrot/README.md +0 -18
  320. package/.opencode/oh-my-design/design-md/karrot/_research.md +0 -57
  321. package/.opencode/oh-my-design/design-md/kbank/DESIGN.md +0 -252
  322. package/.opencode/oh-my-design/design-md/kbank/assets/_reference/.live-inspect-proof.json +0 -215
  323. package/.opencode/oh-my-design/design-md/kbank/assets/_reference/.live-inspect-raw.json +0 -1
  324. package/.opencode/oh-my-design/design-md/kbank/assets/_reference/fonts.json +0 -20
  325. package/.opencode/oh-my-design/design-md/kbank/assets/_reference/structure.json +0 -151
  326. package/.opencode/oh-my-design/design-md/kbank/assets/_reference/tokens.json +0 -101
  327. package/.opencode/oh-my-design/design-md/kdan/.verification.md +0 -30
  328. package/.opencode/oh-my-design/design-md/kdan/DESIGN.md +0 -193
  329. package/.opencode/oh-my-design/design-md/kintone/.verification.md +0 -21
  330. package/.opencode/oh-my-design/design-md/kintone/DESIGN.md +0 -586
  331. package/.opencode/oh-my-design/design-md/kkbox/.verification.md +0 -27
  332. package/.opencode/oh-my-design/design-md/kkbox/DESIGN.md +0 -136
  333. package/.opencode/oh-my-design/design-md/kkday/DESIGN.md +0 -470
  334. package/.opencode/oh-my-design/design-md/kmong/.verification.md +0 -30
  335. package/.opencode/oh-my-design/design-md/kmong/DESIGN.md +0 -427
  336. package/.opencode/oh-my-design/design-md/krafton/.verification.md +0 -38
  337. package/.opencode/oh-my-design/design-md/krafton/DESIGN.md +0 -267
  338. package/.opencode/oh-my-design/design-md/kraken/.verification.md +0 -143
  339. package/.opencode/oh-my-design/design-md/kraken/DESIGN.md +0 -277
  340. package/.opencode/oh-my-design/design-md/kraken/README.md +0 -23
  341. package/.opencode/oh-my-design/design-md/kraken/preview-dark.html +0 -169
  342. package/.opencode/oh-my-design/design-md/kraken/preview.html +0 -168
  343. package/.opencode/oh-my-design/design-md/krds/.verification.md +0 -373
  344. package/.opencode/oh-my-design/design-md/krds/DESIGN.md +0 -1060
  345. package/.opencode/oh-my-design/design-md/kream/DESIGN.md +0 -432
  346. package/.opencode/oh-my-design/design-md/kream/assets/_reference/.live-inspect-proof.json +0 -289
  347. package/.opencode/oh-my-design/design-md/kream/assets/_reference/fonts.json +0 -26
  348. package/.opencode/oh-my-design/design-md/kream/assets/_reference/structure.json +0 -56
  349. package/.opencode/oh-my-design/design-md/kream/assets/_reference/tokens.json +0 -154
  350. package/.opencode/oh-my-design/design-md/kurly/.verification.md +0 -126
  351. package/.opencode/oh-my-design/design-md/kurly/DESIGN.md +0 -620
  352. package/.opencode/oh-my-design/design-md/laftel/.verification.md +0 -39
  353. package/.opencode/oh-my-design/design-md/laftel/DESIGN.md +0 -293
  354. package/.opencode/oh-my-design/design-md/lamborghini/.verification.md +0 -127
  355. package/.opencode/oh-my-design/design-md/lamborghini/DESIGN.md +0 -430
  356. package/.opencode/oh-my-design/design-md/lamborghini/README.md +0 -23
  357. package/.opencode/oh-my-design/design-md/lamborghini/preview-dark.html +0 -303
  358. package/.opencode/oh-my-design/design-md/lamborghini/preview.html +0 -381
  359. package/.opencode/oh-my-design/design-md/laundrygo/.verification.md +0 -60
  360. package/.opencode/oh-my-design/design-md/laundrygo/DESIGN.md +0 -434
  361. package/.opencode/oh-my-design/design-md/layerx/.verification.md +0 -21
  362. package/.opencode/oh-my-design/design-md/layerx/DESIGN.md +0 -615
  363. package/.opencode/oh-my-design/design-md/lezhin/.verification.md +0 -47
  364. package/.opencode/oh-my-design/design-md/lezhin/DESIGN.md +0 -348
  365. package/.opencode/oh-my-design/design-md/line/.verification.md +0 -137
  366. package/.opencode/oh-my-design/design-md/line/DESIGN.md +0 -467
  367. package/.opencode/oh-my-design/design-md/line/README.md +0 -12
  368. package/.opencode/oh-my-design/design-md/line/_research/home-1440px.png +0 -0
  369. package/.opencode/oh-my-design/design-md/line/_research.md +0 -65
  370. package/.opencode/oh-my-design/design-md/linear.app/.verification.md +0 -143
  371. package/.opencode/oh-my-design/design-md/linear.app/DESIGN.md +0 -642
  372. package/.opencode/oh-my-design/design-md/linear.app/README.md +0 -24
  373. package/.opencode/oh-my-design/design-md/linear.app/preview-dark.html +0 -383
  374. package/.opencode/oh-my-design/design-md/linear.app/preview.html +0 -373
  375. package/.opencode/oh-my-design/design-md/loom/.verification.md +0 -31
  376. package/.opencode/oh-my-design/design-md/loom/DESIGN.md +0 -396
  377. package/.opencode/oh-my-design/design-md/lovable/.verification.md +0 -154
  378. package/.opencode/oh-my-design/design-md/lovable/DESIGN.md +0 -423
  379. package/.opencode/oh-my-design/design-md/lovable/README.md +0 -24
  380. package/.opencode/oh-my-design/design-md/lovable/preview-dark.html +0 -349
  381. package/.opencode/oh-my-design/design-md/lovable/preview.html +0 -348
  382. package/.opencode/oh-my-design/design-md/lunit/DESIGN.md +0 -296
  383. package/.opencode/oh-my-design/design-md/lunit/assets/_reference/.live-inspect-proof.json +0 -249
  384. package/.opencode/oh-my-design/design-md/lunit/assets/_reference/fonts.json +0 -24
  385. package/.opencode/oh-my-design/design-md/lunit/assets/_reference/structure.json +0 -162
  386. package/.opencode/oh-my-design/design-md/lunit/assets/_reference/tokens.json +0 -115
  387. package/.opencode/oh-my-design/design-md/mastercard/.verification.md +0 -19
  388. package/.opencode/oh-my-design/design-md/mastercard/DESIGN.md +0 -587
  389. package/.opencode/oh-my-design/design-md/meituan/DESIGN.md +0 -466
  390. package/.opencode/oh-my-design/design-md/melon/.verification.md +0 -27
  391. package/.opencode/oh-my-design/design-md/melon/DESIGN.md +0 -179
  392. package/.opencode/oh-my-design/design-md/mercari/.verification.md +0 -155
  393. package/.opencode/oh-my-design/design-md/mercari/DESIGN.md +0 -514
  394. package/.opencode/oh-my-design/design-md/mercari/README.md +0 -12
  395. package/.opencode/oh-my-design/design-md/mercari/_research/home-1440px.png +0 -0
  396. package/.opencode/oh-my-design/design-md/mercari/_research.md +0 -137
  397. package/.opencode/oh-my-design/design-md/mercury/.verification.md +0 -21
  398. package/.opencode/oh-my-design/design-md/mercury/DESIGN.md +0 -589
  399. package/.opencode/oh-my-design/design-md/meta/.verification.md +0 -21
  400. package/.opencode/oh-my-design/design-md/meta/DESIGN.md +0 -615
  401. package/.opencode/oh-my-design/design-md/microsoft/.verification.md +0 -62
  402. package/.opencode/oh-my-design/design-md/microsoft/DESIGN.md +0 -508
  403. package/.opencode/oh-my-design/design-md/millie/DESIGN.md +0 -584
  404. package/.opencode/oh-my-design/design-md/minimax/.verification.md +0 -135
  405. package/.opencode/oh-my-design/design-md/minimax/DESIGN.md +0 -396
  406. package/.opencode/oh-my-design/design-md/minimax/README.md +0 -24
  407. package/.opencode/oh-my-design/design-md/minimax/preview-dark.html +0 -1262
  408. package/.opencode/oh-my-design/design-md/minimax/preview.html +0 -1248
  409. package/.opencode/oh-my-design/design-md/mintlify/.verification.md +0 -160
  410. package/.opencode/oh-my-design/design-md/mintlify/DESIGN.md +0 -472
  411. package/.opencode/oh-my-design/design-md/mintlify/README.md +0 -24
  412. package/.opencode/oh-my-design/design-md/mintlify/preview-dark.html +0 -409
  413. package/.opencode/oh-my-design/design-md/mintlify/preview.html +0 -398
  414. package/.opencode/oh-my-design/design-md/miricanvas/.verification.md +0 -61
  415. package/.opencode/oh-my-design/design-md/miricanvas/DESIGN.md +0 -464
  416. package/.opencode/oh-my-design/design-md/miro/.verification.md +0 -138
  417. package/.opencode/oh-my-design/design-md/miro/DESIGN.md +0 -319
  418. package/.opencode/oh-my-design/design-md/miro/README.md +0 -23
  419. package/.opencode/oh-my-design/design-md/miro/preview-dark.html +0 -174
  420. package/.opencode/oh-my-design/design-md/miro/preview.html +0 -173
  421. package/.opencode/oh-my-design/design-md/mistral.ai/.verification.md +0 -146
  422. package/.opencode/oh-my-design/design-md/mistral.ai/DESIGN.md +0 -390
  423. package/.opencode/oh-my-design/design-md/mistral.ai/README.md +0 -24
  424. package/.opencode/oh-my-design/design-md/mistral.ai/preview-dark.html +0 -806
  425. package/.opencode/oh-my-design/design-md/mistral.ai/preview.html +0 -805
  426. package/.opencode/oh-my-design/design-md/modusign/.verification.md +0 -58
  427. package/.opencode/oh-my-design/design-md/modusign/DESIGN.md +0 -524
  428. package/.opencode/oh-my-design/design-md/momoshop/.verification.md +0 -36
  429. package/.opencode/oh-my-design/design-md/momoshop/DESIGN.md +0 -322
  430. package/.opencode/oh-my-design/design-md/money-forward/DESIGN.md +0 -443
  431. package/.opencode/oh-my-design/design-md/mongodb/.verification.md +0 -145
  432. package/.opencode/oh-my-design/design-md/mongodb/DESIGN.md +0 -401
  433. package/.opencode/oh-my-design/design-md/mongodb/README.md +0 -23
  434. package/.opencode/oh-my-design/design-md/mongodb/preview-dark.html +0 -260
  435. package/.opencode/oh-my-design/design-md/mongodb/preview.html +0 -259
  436. package/.opencode/oh-my-design/design-md/muji/.verification.md +0 -20
  437. package/.opencode/oh-my-design/design-md/muji/DESIGN.md +0 -605
  438. package/.opencode/oh-my-design/design-md/musinsa/.verification.md +0 -59
  439. package/.opencode/oh-my-design/design-md/musinsa/DESIGN.md +0 -593
  440. package/.opencode/oh-my-design/design-md/mustit/.verification.md +0 -37
  441. package/.opencode/oh-my-design/design-md/mustit/DESIGN.md +0 -328
  442. package/.opencode/oh-my-design/design-md/myrealtrip/DESIGN.md +0 -494
  443. package/.opencode/oh-my-design/design-md/naver/.verification.md +0 -134
  444. package/.opencode/oh-my-design/design-md/naver/DESIGN.md +0 -582
  445. package/.opencode/oh-my-design/design-md/naverwebtoon/DESIGN.md +0 -477
  446. package/.opencode/oh-my-design/design-md/netflix/.verification.md +0 -21
  447. package/.opencode/oh-my-design/design-md/netflix/DESIGN.md +0 -572
  448. package/.opencode/oh-my-design/design-md/nexon/.verification.md +0 -27
  449. package/.opencode/oh-my-design/design-md/nexon/DESIGN.md +0 -389
  450. package/.opencode/oh-my-design/design-md/nhncloud/.verification.md +0 -23
  451. package/.opencode/oh-my-design/design-md/nhncloud/DESIGN.md +0 -207
  452. package/.opencode/oh-my-design/design-md/nike/.verification.md +0 -21
  453. package/.opencode/oh-my-design/design-md/nike/DESIGN.md +0 -588
  454. package/.opencode/oh-my-design/design-md/note/DESIGN.md +0 -346
  455. package/.opencode/oh-my-design/design-md/notion/.verification.md +0 -141
  456. package/.opencode/oh-my-design/design-md/notion/DESIGN.md +0 -557
  457. package/.opencode/oh-my-design/design-md/notion/README.md +0 -24
  458. package/.opencode/oh-my-design/design-md/notion/preview-dark.html +0 -372
  459. package/.opencode/oh-my-design/design-md/notion/preview.html +0 -364
  460. package/.opencode/oh-my-design/design-md/nvidia/.verification.md +0 -127
  461. package/.opencode/oh-my-design/design-md/nvidia/DESIGN.md +0 -550
  462. package/.opencode/oh-my-design/design-md/nvidia/README.md +0 -24
  463. package/.opencode/oh-my-design/design-md/nvidia/_research.md +0 -68
  464. package/.opencode/oh-my-design/design-md/nvidia/preview-dark.html +0 -374
  465. package/.opencode/oh-my-design/design-md/nvidia/preview.html +0 -366
  466. package/.opencode/oh-my-design/design-md/ohouse/.verification.md +0 -87
  467. package/.opencode/oh-my-design/design-md/ohouse/DESIGN.md +0 -635
  468. package/.opencode/oh-my-design/design-md/oliveyoung/DESIGN.md +0 -407
  469. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/.live-inspect-proof.json +0 -158
  470. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_best_capture.json +0 -644
  471. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_detail_capture.json +0 -447
  472. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_main.html +0 -419
  473. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_main_capture.json +0 -1126
  474. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_search_capture.json +0 -912
  475. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/fonts.json +0 -20
  476. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/structure.json +0 -91
  477. package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/tokens.json +0 -79
  478. package/.opencode/oh-my-design/design-md/ollama/.verification.md +0 -138
  479. package/.opencode/oh-my-design/design-md/ollama/DESIGN.md +0 -393
  480. package/.opencode/oh-my-design/design-md/ollama/README.md +0 -24
  481. package/.opencode/oh-my-design/design-md/ollama/preview-dark.html +0 -678
  482. package/.opencode/oh-my-design/design-md/ollama/preview.html +0 -678
  483. package/.opencode/oh-my-design/design-md/omnichat/.verification.md +0 -74
  484. package/.opencode/oh-my-design/design-md/omnichat/DESIGN.md +0 -499
  485. package/.opencode/oh-my-design/design-md/openai/.verification.md +0 -21
  486. package/.opencode/oh-my-design/design-md/openai/DESIGN.md +0 -641
  487. package/.opencode/oh-my-design/design-md/opencode.ai/.verification.md +0 -136
  488. package/.opencode/oh-my-design/design-md/opencode.ai/DESIGN.md +0 -425
  489. package/.opencode/oh-my-design/design-md/opencode.ai/README.md +0 -24
  490. package/.opencode/oh-my-design/design-md/opencode.ai/preview-dark.html +0 -366
  491. package/.opencode/oh-my-design/design-md/opencode.ai/preview.html +0 -357
  492. package/.opencode/oh-my-design/design-md/payco/.verification.md +0 -28
  493. package/.opencode/oh-my-design/design-md/payco/DESIGN.md +0 -267
  494. package/.opencode/oh-my-design/design-md/paypay/.verification.md +0 -21
  495. package/.opencode/oh-my-design/design-md/paypay/DESIGN.md +0 -656
  496. package/.opencode/oh-my-design/design-md/pchome/.verification.md +0 -38
  497. package/.opencode/oh-my-design/design-md/pchome/DESIGN.md +0 -439
  498. package/.opencode/oh-my-design/design-md/perplexity/.verification.md +0 -21
  499. package/.opencode/oh-my-design/design-md/perplexity/DESIGN.md +0 -546
  500. package/.opencode/oh-my-design/design-md/piccollage/.verification.md +0 -34
  501. package/.opencode/oh-my-design/design-md/piccollage/DESIGN.md +0 -320
  502. package/.opencode/oh-my-design/design-md/pinkoi/.verification.md +0 -147
  503. package/.opencode/oh-my-design/design-md/pinkoi/DESIGN.md +0 -639
  504. package/.opencode/oh-my-design/design-md/pinkoi/README.md +0 -12
  505. package/.opencode/oh-my-design/design-md/pinkoi/_research/browse-1440px.png +0 -0
  506. package/.opencode/oh-my-design/design-md/pinkoi/_research.md +0 -167
  507. package/.opencode/oh-my-design/design-md/pinterest/.verification.md +0 -141
  508. package/.opencode/oh-my-design/design-md/pinterest/DESIGN.md +0 -366
  509. package/.opencode/oh-my-design/design-md/pinterest/README.md +0 -23
  510. package/.opencode/oh-my-design/design-md/pinterest/preview-dark.html +0 -233
  511. package/.opencode/oh-my-design/design-md/pinterest/preview.html +0 -232
  512. package/.opencode/oh-my-design/design-md/pixiv/.verification.md +0 -20
  513. package/.opencode/oh-my-design/design-md/pixiv/DESIGN.md +0 -613
  514. package/.opencode/oh-my-design/design-md/pixnet/.verification.md +0 -31
  515. package/.opencode/oh-my-design/design-md/pixnet/DESIGN.md +0 -430
  516. package/.opencode/oh-my-design/design-md/posthog/.verification.md +0 -159
  517. package/.opencode/oh-my-design/design-md/posthog/DESIGN.md +0 -480
  518. package/.opencode/oh-my-design/design-md/posthog/README.md +0 -23
  519. package/.opencode/oh-my-design/design-md/posthog/preview-dark.html +0 -699
  520. package/.opencode/oh-my-design/design-md/posthog/preview.html +0 -749
  521. package/.opencode/oh-my-design/design-md/postype/.verification.md +0 -61
  522. package/.opencode/oh-my-design/design-md/postype/DESIGN.md +0 -431
  523. package/.opencode/oh-my-design/design-md/publy/DESIGN.md +0 -563
  524. package/.opencode/oh-my-design/design-md/qanda/.verification.md +0 -121
  525. package/.opencode/oh-my-design/design-md/qanda/DESIGN.md +0 -516
  526. package/.opencode/oh-my-design/design-md/ragic/.verification.md +0 -37
  527. package/.opencode/oh-my-design/design-md/ragic/DESIGN.md +0 -444
  528. package/.opencode/oh-my-design/design-md/rakuten/.verification.md +0 -60
  529. package/.opencode/oh-my-design/design-md/rakuten/DESIGN.md +0 -440
  530. package/.opencode/oh-my-design/design-md/ramp/.verification.md +0 -21
  531. package/.opencode/oh-my-design/design-md/ramp/DESIGN.md +0 -634
  532. package/.opencode/oh-my-design/design-md/rayark/.verification.md +0 -22
  533. package/.opencode/oh-my-design/design-md/rayark/DESIGN.md +0 -154
  534. package/.opencode/oh-my-design/design-md/raycast/.verification.md +0 -138
  535. package/.opencode/oh-my-design/design-md/raycast/DESIGN.md +0 -467
  536. package/.opencode/oh-my-design/design-md/raycast/README.md +0 -23
  537. package/.opencode/oh-my-design/design-md/raycast/preview-dark.html +0 -606
  538. package/.opencode/oh-my-design/design-md/raycast/preview.html +0 -688
  539. package/.opencode/oh-my-design/design-md/remember/.verification.md +0 -135
  540. package/.opencode/oh-my-design/design-md/remember/DESIGN.md +0 -504
  541. package/.opencode/oh-my-design/design-md/remember/_promo.json +0 -27
  542. package/.opencode/oh-my-design/design-md/remember/_research.md +0 -90
  543. package/.opencode/oh-my-design/design-md/renault/.verification.md +0 -139
  544. package/.opencode/oh-my-design/design-md/renault/DESIGN.md +0 -439
  545. package/.opencode/oh-my-design/design-md/renault/README.md +0 -23
  546. package/.opencode/oh-my-design/design-md/renault/preview-dark.html +0 -406
  547. package/.opencode/oh-my-design/design-md/renault/preview.html +0 -606
  548. package/.opencode/oh-my-design/design-md/replicate/.verification.md +0 -154
  549. package/.opencode/oh-my-design/design-md/replicate/DESIGN.md +0 -387
  550. package/.opencode/oh-my-design/design-md/replicate/README.md +0 -24
  551. package/.opencode/oh-my-design/design-md/replicate/preview-dark.html +0 -828
  552. package/.opencode/oh-my-design/design-md/replicate/preview.html +0 -831
  553. package/.opencode/oh-my-design/design-md/resend/.verification.md +0 -143
  554. package/.opencode/oh-my-design/design-md/resend/DESIGN.md +0 -440
  555. package/.opencode/oh-my-design/design-md/resend/README.md +0 -23
  556. package/.opencode/oh-my-design/design-md/resend/preview-dark.html +0 -355
  557. package/.opencode/oh-my-design/design-md/resend/preview.html +0 -354
  558. package/.opencode/oh-my-design/design-md/retool/.verification.md +0 -21
  559. package/.opencode/oh-my-design/design-md/retool/DESIGN.md +0 -645
  560. package/.opencode/oh-my-design/design-md/revolut/.verification.md +0 -140
  561. package/.opencode/oh-my-design/design-md/revolut/DESIGN.md +0 -319
  562. package/.opencode/oh-my-design/design-md/revolut/README.md +0 -23
  563. package/.opencode/oh-my-design/design-md/revolut/preview-dark.html +0 -234
  564. package/.opencode/oh-my-design/design-md/revolut/preview.html +0 -233
  565. package/.opencode/oh-my-design/design-md/richart/.verification.md +0 -41
  566. package/.opencode/oh-my-design/design-md/richart/DESIGN.md +0 -465
  567. package/.opencode/oh-my-design/design-md/ridi/.verification.md +0 -108
  568. package/.opencode/oh-my-design/design-md/ridi/DESIGN.md +0 -573
  569. package/.opencode/oh-my-design/design-md/riiid/.verification.md +0 -33
  570. package/.opencode/oh-my-design/design-md/riiid/DESIGN.md +0 -260
  571. package/.opencode/oh-my-design/design-md/ringle/.verification.md +0 -53
  572. package/.opencode/oh-my-design/design-md/ringle/DESIGN.md +0 -444
  573. package/.opencode/oh-my-design/design-md/robinhood/.verification.md +0 -21
  574. package/.opencode/oh-my-design/design-md/robinhood/DESIGN.md +0 -604
  575. package/.opencode/oh-my-design/design-md/runwayml/.verification.md +0 -141
  576. package/.opencode/oh-my-design/design-md/runwayml/DESIGN.md +0 -431
  577. package/.opencode/oh-my-design/design-md/runwayml/README.md +0 -24
  578. package/.opencode/oh-my-design/design-md/runwayml/preview-dark.html +0 -664
  579. package/.opencode/oh-my-design/design-md/runwayml/preview.html +0 -665
  580. package/.opencode/oh-my-design/design-md/salesforce/.verification.md +0 -66
  581. package/.opencode/oh-my-design/design-md/salesforce/DESIGN.md +0 -473
  582. package/.opencode/oh-my-design/design-md/sanity/.verification.md +0 -174
  583. package/.opencode/oh-my-design/design-md/sanity/DESIGN.md +0 -499
  584. package/.opencode/oh-my-design/design-md/sanity/README.md +0 -24
  585. package/.opencode/oh-my-design/design-md/sanity/preview-dark.html +0 -990
  586. package/.opencode/oh-my-design/design-md/sanity/preview.html +0 -1135
  587. package/.opencode/oh-my-design/design-md/sansan/.verification.md +0 -21
  588. package/.opencode/oh-my-design/design-md/sansan/DESIGN.md +0 -631
  589. package/.opencode/oh-my-design/design-md/sendbird/.verification.md +0 -67
  590. package/.opencode/oh-my-design/design-md/sendbird/DESIGN.md +0 -331
  591. package/.opencode/oh-my-design/design-md/sentry/.verification.md +0 -157
  592. package/.opencode/oh-my-design/design-md/sentry/DESIGN.md +0 -397
  593. package/.opencode/oh-my-design/design-md/sentry/README.md +0 -24
  594. package/.opencode/oh-my-design/design-md/sentry/preview-dark.html +0 -626
  595. package/.opencode/oh-my-design/design-md/sentry/preview.html +0 -951
  596. package/.opencode/oh-my-design/design-md/shinhancard/.verification.md +0 -31
  597. package/.opencode/oh-my-design/design-md/shinhancard/DESIGN.md +0 -421
  598. package/.opencode/oh-my-design/design-md/shopline/.verification.md +0 -34
  599. package/.opencode/oh-my-design/design-md/shopline/DESIGN.md +0 -431
  600. package/.opencode/oh-my-design/design-md/slack/.verification.md +0 -21
  601. package/.opencode/oh-my-design/design-md/slack/DESIGN.md +0 -635
  602. package/.opencode/oh-my-design/design-md/smarthr/DESIGN.md +0 -452
  603. package/.opencode/oh-my-design/design-md/smartnews/DESIGN.md +0 -360
  604. package/.opencode/oh-my-design/design-md/socar/DESIGN.md +0 -438
  605. package/.opencode/oh-my-design/design-md/socar/_promo.json +0 -28
  606. package/.opencode/oh-my-design/design-md/socar/_research.md +0 -55
  607. package/.opencode/oh-my-design/design-md/soomgo/.verification.md +0 -27
  608. package/.opencode/oh-my-design/design-md/soomgo/DESIGN.md +0 -326
  609. package/.opencode/oh-my-design/design-md/spacex/.verification.md +0 -132
  610. package/.opencode/oh-my-design/design-md/spacex/DESIGN.md +0 -415
  611. package/.opencode/oh-my-design/design-md/spacex/README.md +0 -23
  612. package/.opencode/oh-my-design/design-md/spacex/_research.md +0 -69
  613. package/.opencode/oh-my-design/design-md/spacex/preview-dark.html +0 -221
  614. package/.opencode/oh-my-design/design-md/spacex/preview.html +0 -220
  615. package/.opencode/oh-my-design/design-md/spoon/DESIGN.md +0 -492
  616. package/.opencode/oh-my-design/design-md/spotify/.verification.md +0 -128
  617. package/.opencode/oh-my-design/design-md/spotify/DESIGN.md +0 -489
  618. package/.opencode/oh-my-design/design-md/spotify/README.md +0 -23
  619. package/.opencode/oh-my-design/design-md/spotify/preview-dark.html +0 -231
  620. package/.opencode/oh-my-design/design-md/spotify/preview.html +0 -230
  621. package/.opencode/oh-my-design/design-md/starbucks/.verification.md +0 -21
  622. package/.opencode/oh-my-design/design-md/starbucks/DESIGN.md +0 -597
  623. package/.opencode/oh-my-design/design-md/stores/.verification.md +0 -61
  624. package/.opencode/oh-my-design/design-md/stores/DESIGN.md +0 -447
  625. package/.opencode/oh-my-design/design-md/stripe/.verification.md +0 -140
  626. package/.opencode/oh-my-design/design-md/stripe/DESIGN.md +0 -571
  627. package/.opencode/oh-my-design/design-md/stripe/README.md +0 -24
  628. package/.opencode/oh-my-design/design-md/stripe/preview-dark.html +0 -428
  629. package/.opencode/oh-my-design/design-md/stripe/preview.html +0 -419
  630. package/.opencode/oh-my-design/design-md/studio/.verification.md +0 -21
  631. package/.opencode/oh-my-design/design-md/studio/DESIGN.md +0 -602
  632. package/.opencode/oh-my-design/design-md/supabase/.verification.md +0 -145
  633. package/.opencode/oh-my-design/design-md/supabase/DESIGN.md +0 -389
  634. package/.opencode/oh-my-design/design-md/supabase/README.md +0 -24
  635. package/.opencode/oh-my-design/design-md/supabase/preview-dark.html +0 -977
  636. package/.opencode/oh-my-design/design-md/supabase/preview.html +0 -955
  637. package/.opencode/oh-my-design/design-md/superhuman/.verification.md +0 -184
  638. package/.opencode/oh-my-design/design-md/superhuman/DESIGN.md +0 -453
  639. package/.opencode/oh-my-design/design-md/superhuman/README.md +0 -23
  640. package/.opencode/oh-my-design/design-md/superhuman/preview-dark.html +0 -973
  641. package/.opencode/oh-my-design/design-md/superhuman/preview.html +0 -951
  642. package/.opencode/oh-my-design/design-md/surveycake/.verification.md +0 -31
  643. package/.opencode/oh-my-design/design-md/surveycake/DESIGN.md +0 -442
  644. package/.opencode/oh-my-design/design-md/tada/DESIGN.md +0 -579
  645. package/.opencode/oh-my-design/design-md/teamblind/.verification.md +0 -76
  646. package/.opencode/oh-my-design/design-md/teamblind/DESIGN.md +0 -497
  647. package/.opencode/oh-my-design/design-md/tesla/.verification.md +0 -149
  648. package/.opencode/oh-my-design/design-md/tesla/DESIGN.md +0 -501
  649. package/.opencode/oh-my-design/design-md/tesla/README.md +0 -23
  650. package/.opencode/oh-my-design/design-md/tesla/_research.md +0 -70
  651. package/.opencode/oh-my-design/design-md/tesla/preview-dark.html +0 -947
  652. package/.opencode/oh-my-design/design-md/tesla/preview.html +0 -925
  653. package/.opencode/oh-my-design/design-md/theverge/.verification.md +0 -21
  654. package/.opencode/oh-my-design/design-md/theverge/DESIGN.md +0 -500
  655. package/.opencode/oh-my-design/design-md/timee/.verification.md +0 -67
  656. package/.opencode/oh-my-design/design-md/timee/DESIGN.md +0 -444
  657. package/.opencode/oh-my-design/design-md/together.ai/.verification.md +0 -145
  658. package/.opencode/oh-my-design/design-md/together.ai/DESIGN.md +0 -389
  659. package/.opencode/oh-my-design/design-md/together.ai/README.md +0 -24
  660. package/.opencode/oh-my-design/design-md/together.ai/preview-dark.html +0 -892
  661. package/.opencode/oh-my-design/design-md/together.ai/preview.html +0 -897
  662. package/.opencode/oh-my-design/design-md/toss/.verification.md +0 -120
  663. package/.opencode/oh-my-design/design-md/toss/DESIGN.md +0 -698
  664. package/.opencode/oh-my-design/design-md/toss/README.md +0 -19
  665. package/.opencode/oh-my-design/design-md/toss-securities/DESIGN.md +0 -247
  666. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/.live-inspect-proof.json +0 -126
  667. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/.live-inspect-raw.json +0 -619
  668. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/.live-inspect-stock.json +0 -525
  669. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/fonts.json +0 -24
  670. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/structure.json +0 -35
  671. package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/tokens.json +0 -87
  672. package/.opencode/oh-my-design/design-md/tossbank/DESIGN.md +0 -576
  673. package/.opencode/oh-my-design/design-md/trenbe/.verification.md +0 -32
  674. package/.opencode/oh-my-design/design-md/trenbe/DESIGN.md +0 -293
  675. package/.opencode/oh-my-design/design-md/triple/DESIGN.md +0 -481
  676. package/.opencode/oh-my-design/design-md/tumblbug/DESIGN.md +0 -578
  677. package/.opencode/oh-my-design/design-md/tving/DESIGN.md +0 -317
  678. package/.opencode/oh-my-design/design-md/tving/assets/_reference/.live-inspect-proof.json +0 -131
  679. package/.opencode/oh-my-design/design-md/tving/assets/_reference/LICENSE-NOTE.md +0 -37
  680. package/.opencode/oh-my-design/design-md/tving/assets/_reference/attribution.md +0 -52
  681. package/.opencode/oh-my-design/design-md/tving/assets/_reference/fonts.json +0 -31
  682. package/.opencode/oh-my-design/design-md/tving/assets/_reference/screenshots/hero-desktop.png +0 -0
  683. package/.opencode/oh-my-design/design-md/tving/assets/_reference/structure.json +0 -55
  684. package/.opencode/oh-my-design/design-md/tving/assets/_reference/tokens.json +0 -115
  685. package/.opencode/oh-my-design/design-md/uber/.verification.md +0 -128
  686. package/.opencode/oh-my-design/design-md/uber/DESIGN.md +0 -423
  687. package/.opencode/oh-my-design/design-md/uber/README.md +0 -24
  688. package/.opencode/oh-my-design/design-md/uber/preview-dark.html +0 -1120
  689. package/.opencode/oh-my-design/design-md/uber/preview.html +0 -1119
  690. package/.opencode/oh-my-design/design-md/ubie/.verification.md +0 -21
  691. package/.opencode/oh-my-design/design-md/ubie/DESIGN.md +0 -615
  692. package/.opencode/oh-my-design/design-md/uniqlo/.verification.md +0 -21
  693. package/.opencode/oh-my-design/design-md/uniqlo/DESIGN.md +0 -575
  694. package/.opencode/oh-my-design/design-md/upbit/DESIGN.md +0 -337
  695. package/.opencode/oh-my-design/design-md/upbit/_research.md +0 -83
  696. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/.live-inspect-proof.json +0 -263
  697. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/fonts.json +0 -18
  698. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/raw-capture-exchange.json +0 -1901
  699. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/raw-capture.json +0 -1121
  700. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/structure.json +0 -52
  701. package/.opencode/oh-my-design/design-md/upbit/assets/_reference/tokens.json +0 -169
  702. package/.opencode/oh-my-design/design-md/upstage/DESIGN.md +0 -270
  703. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/.live-inspect-proof.json +0 -157
  704. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_brand-resource-center.json +0 -44
  705. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_curated-samples.json +0 -310
  706. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_raw-capture.json +0 -1560
  707. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_root-vars.json +0 -76
  708. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_structure-raw.json +0 -298
  709. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/fonts.json +0 -35
  710. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/structure.json +0 -72
  711. package/.opencode/oh-my-design/design-md/upstage/assets/_reference/tokens.json +0 -183
  712. package/.opencode/oh-my-design/design-md/velog/.verification.md +0 -26
  713. package/.opencode/oh-my-design/design-md/velog/DESIGN.md +0 -196
  714. package/.opencode/oh-my-design/design-md/vercel/.verification.md +0 -134
  715. package/.opencode/oh-my-design/design-md/vercel/DESIGN.md +0 -523
  716. package/.opencode/oh-my-design/design-md/vercel/README.md +0 -24
  717. package/.opencode/oh-my-design/design-md/vercel/preview-dark.html +0 -368
  718. package/.opencode/oh-my-design/design-md/vercel/preview.html +0 -367
  719. package/.opencode/oh-my-design/design-md/voicetube/.verification.md +0 -34
  720. package/.opencode/oh-my-design/design-md/voicetube/DESIGN.md +0 -266
  721. package/.opencode/oh-my-design/design-md/voltagent/.verification.md +0 -159
  722. package/.opencode/oh-my-design/design-md/voltagent/DESIGN.md +0 -454
  723. package/.opencode/oh-my-design/design-md/voltagent/README.md +0 -24
  724. package/.opencode/oh-my-design/design-md/voltagent/preview-dark.html +0 -487
  725. package/.opencode/oh-my-design/design-md/voltagent/preview.html +0 -766
  726. package/.opencode/oh-my-design/design-md/wadiz/DESIGN.md +0 -415
  727. package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/.live-inspect-proof.json +0 -137
  728. package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/fonts.json +0 -17
  729. package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/structure.json +0 -35
  730. package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/tokens.json +0 -80
  731. package/.opencode/oh-my-design/design-md/wanted/DESIGN.md +0 -575
  732. package/.opencode/oh-my-design/design-md/wanted/_promo.json +0 -31
  733. package/.opencode/oh-my-design/design-md/wanted/_research.md +0 -119
  734. package/.opencode/oh-my-design/design-md/wantedly/.verification.md +0 -53
  735. package/.opencode/oh-my-design/design-md/wantedly/DESIGN.md +0 -437
  736. package/.opencode/oh-my-design/design-md/warp/.verification.md +0 -156
  737. package/.opencode/oh-my-design/design-md/warp/DESIGN.md +0 -431
  738. package/.opencode/oh-my-design/design-md/warp/README.md +0 -23
  739. package/.opencode/oh-my-design/design-md/warp/preview-dark.html +0 -500
  740. package/.opencode/oh-my-design/design-md/warp/preview.html +0 -533
  741. package/.opencode/oh-my-design/design-md/watcha/DESIGN.md +0 -465
  742. package/.opencode/oh-my-design/design-md/wavve/DESIGN.md +0 -480
  743. package/.opencode/oh-my-design/design-md/wconcept/DESIGN.md +0 -556
  744. package/.opencode/oh-my-design/design-md/webflow/.verification.md +0 -151
  745. package/.opencode/oh-my-design/design-md/webflow/DESIGN.md +0 -330
  746. package/.opencode/oh-my-design/design-md/webflow/README.md +0 -23
  747. package/.opencode/oh-my-design/design-md/webflow/preview-dark.html +0 -147
  748. package/.opencode/oh-my-design/design-md/webflow/preview.html +0 -146
  749. package/.opencode/oh-my-design/design-md/wired/.verification.md +0 -21
  750. package/.opencode/oh-my-design/design-md/wired/DESIGN.md +0 -572
  751. package/.opencode/oh-my-design/design-md/wise/.verification.md +0 -141
  752. package/.opencode/oh-my-design/design-md/wise/DESIGN.md +0 -317
  753. package/.opencode/oh-my-design/design-md/wise/README.md +0 -23
  754. package/.opencode/oh-my-design/design-md/wise/preview-dark.html +0 -230
  755. package/.opencode/oh-my-design/design-md/wise/preview.html +0 -229
  756. package/.opencode/oh-my-design/design-md/x.ai/.verification.md +0 -140
  757. package/.opencode/oh-my-design/design-md/x.ai/DESIGN.md +0 -397
  758. package/.opencode/oh-my-design/design-md/x.ai/README.md +0 -24
  759. package/.opencode/oh-my-design/design-md/x.ai/preview-dark.html +0 -356
  760. package/.opencode/oh-my-design/design-md/x.ai/preview.html +0 -407
  761. package/.opencode/oh-my-design/design-md/xiaohongshu/DESIGN.md +0 -462
  762. package/.opencode/oh-my-design/design-md/yanolja/.verification.md +0 -83
  763. package/.opencode/oh-my-design/design-md/yanolja/DESIGN.md +0 -508
  764. package/.opencode/oh-my-design/design-md/yeogiotte/.verification.md +0 -210
  765. package/.opencode/oh-my-design/design-md/yeogiotte/DESIGN.md +0 -500
  766. package/.opencode/oh-my-design/design-md/yogiyo/DESIGN.md +0 -515
  767. package/.opencode/oh-my-design/design-md/yourator/.verification.md +0 -39
  768. package/.opencode/oh-my-design/design-md/yourator/DESIGN.md +0 -453
  769. package/.opencode/oh-my-design/design-md/zapier/.verification.md +0 -156
  770. package/.opencode/oh-my-design/design-md/zapier/DESIGN.md +0 -474
  771. package/.opencode/oh-my-design/design-md/zapier/README.md +0 -24
  772. package/.opencode/oh-my-design/design-md/zapier/preview-dark.html +0 -380
  773. package/.opencode/oh-my-design/design-md/zapier/preview.html +0 -372
  774. package/.opencode/oh-my-design/design-md/zigbang/DESIGN.md +0 -500
  775. package/.opencode/oh-my-design/design-md/zigbang/_promo.json +0 -16
  776. package/.opencode/oh-my-design/design-md/zigbang/_research.md +0 -101
  777. package/.opencode/oh-my-design/design-md/zigzag/DESIGN.md +0 -695
  778. package/.opencode/oh-my-design/design-md/zigzag/_promo.json +0 -23
  779. package/.opencode/oh-my-design/design-md/zigzag/_research.md +0 -64
  780. package/.opencode/oh-my-design/design-md/zozotown/.verification.md +0 -20
  781. package/.opencode/oh-my-design/design-md/zozotown/DESIGN.md +0 -578
  782. package/.opencode/oh-my-design/packages/mcp/dist/index.mjs +0 -21685
  783. package/.opencode/oh-my-design/packages/mcp/dist/index.mjs.map +0 -1
  784. package/.opencode/tools/akash_catalog.ts +0 -596
  785. package/.opencode/tools/extract-design-pattern.py +0 -182
  786. package/.opencode/tools/sdd_design.ts +0 -303
@@ -1,495 +0,0 @@
1
- ---
2
- id: "29cm"
3
- name: "29CM"
4
- country: KR
5
- category: ecommerce
6
- homepage: "https://www.29cm.co.kr"
7
- primary_color: "#000000"
8
- logo:
9
- type: favicon
10
- slug: "https://asset.29cm.co.kr/icon/apple-icon-144x144.png"
11
- verified: "2026-05-15"
12
- tokens:
13
- source: prose-derived
14
- extracted: "2026-06-08"
15
- note: "monochrome system — brand 'color' is the absence of color; #000 ink on #fff, single muted grey, sale-red badge-only accent"
16
- colors:
17
- primary: "#000000"
18
- foreground: "#000000"
19
- body: "#000000"
20
- canvas: "#ffffff"
21
- background: "#ffffff"
22
- on-primary: "#ffffff"
23
- hairline: "#c4c4c4"
24
- border: "#c4c4c4"
25
- sale: "#ff0066"
26
- error: "#ff003c"
27
- skeleton: "#f5f5f5"
28
- typography:
29
- family: { sans: "Pretendard Variable" }
30
- section-headline: { size: 30, weight: 700, lineHeight: 1.13, use: "Special-Order / 29Magazine section headlines, lowercase-English / mixed Korean editorial" }
31
- sub-headline: { size: 24, weight: 700, lineHeight: 1.21, use: "Smaller category nav items" }
32
- card-title: { size: 22, weight: 700, lineHeight: 1.36, use: "Signature editorial card title — PT subjects, themed collections" }
33
- card-body: { size: 15, weight: 400, lineHeight: 1.50, use: "Card descriptions, editorial blurbs" }
34
- nav-link: { size: 16, weight: 200, use: "Primary nav link — 200 inactive, 800 active BEST/current section" }
35
- floating-cta: { size: 15, weight: 400, use: "FAQ / 1:1 문의 — black bg, white text, 2px radius" }
36
- ghost-cta: { size: 14, weight: 700, use: "더보기 — white bg, 1px #c4c4c4 border" }
37
- footer-heading: { size: 13, weight: 700, lineHeight: 1.40, use: "Caps Latin section labels — NOTICE, ABOUT US, MY ORDER, HELP" }
38
- product-name: { size: 12, weight: 400, lineHeight: 1.36, use: "Card product name, restrained, under the image" }
39
- product-price: { size: 12, weight: 700, lineHeight: 1.36, use: "Card price — same size as name, never dominates" }
40
- price-caption: { size: 12, weight: 400, lineHeight: 1.36, use: "옵션비 별도 in muted grey" }
41
- spacing: { xs: 4, sm: 8, md: 12, base: 16, page: 20, lg: 24, xl: 32, margin: 48 }
42
- rounded: { sm: 2, md: 4 }
43
- shadow:
44
- flat: "none — depth comes from photography on white, not box-shadow"
45
- inverted: "#000000 background on #ffffff page — elevation by colour inversion"
46
- components_harvested: true
47
- components:
48
- ghost-outline: { type: button, bg: "#ffffff", fg: "#000000", radius: 4, padding: "52px height", font: "14px/700", use: "workhorse 더보기 CTA, 1px solid #c4c4c4 border" }
49
- inverted-solid: { type: button, bg: "#000000", fg: "#ffffff", radius: 2, padding: "31px height", font: "15px/400", use: "floating FAQ / 1:1 문의 help control" }
50
- editorial-tile: { type: card, bg: "#ffffff", radius: 0, font: "22px/700 title + 15px/400 body", use: "full-bleed editorial image, no border, no shadow" }
51
- product-card: { type: card, bg: "#ffffff", radius: 0, font: "12px/400 name, 12px/700 price", use: "card name then price (#ff0066 if on sale); caption in muted grey" }
52
- sale-pill: { type: badge, fg: "#ff0066", radius: 0, font: "12px/700", use: "percent-off badge only" }
53
- omd: "0.1"
54
- ---
55
-
56
- # Design System Inspiration of 29CM
57
-
58
- ## 1. Visual Theme & Atmosphere
59
-
60
- 29CM is the editorial select-shop of Korean e-commerce — a curated department store that happens to live online, whose homepage reads more like the cover of a printed lookbook than the landing page of a retailer. The signature surface is pure white (`#ffffff`) carrying pure black (`#000000`) display type and quietly minimal chrome: no shadows, no gradients, no decorative iconography. The composition leans on the photography to do the heavy lifting and on typography to do the directing. Where Musinsa is street-utility and Ohouse is interior-lifestyle, 29CM is the magazine — generous margins, oversized image columns, captions that read like editorial blurbs, and an unmistakable belief that white space is the most expensive material in the room.
61
-
62
- The defining typographic move is **Pretendard Variable** running across the entire surface in a tight three-step hierarchy: 30px/700 category headlines, 22px/700 editorial card titles, 12-15px body. There is no display-only face, no decorative weight; the same Korean sans does the magazine title, the product price, and the footer note. Buttons are unornamented — the workhorse CTA is a 1px `#C4C4C4` outlined pill on white with 4px corners ("더보기"), and the floating help affordances ("FAQ", "1:1 문의") are solid `#000000` rectangles with white text and 2px radius, treated like editorial captions rather than UI controls. There is no "primary blue", no accent purple, no brand red. The brand color is the absence of color.
63
-
64
- Image presentation is the second signature: full-bleed editorial photography sets the rhythm, each PT (Presentation) or Showcase tile leads with one large image and one Korean sentence underneath as caption. Prices are demoted — set at 12px/700, sitting under a 12px/400 product title in muted `rgba(93,93,93,0.64)` (a soft grey nearly invisible until you look for it). The visual order is: photo first, story second, product third, price last. That ordering is the brand's whole thesis.
65
-
66
- **Key Characteristics:**
67
- - Pretendard Variable across all surfaces — one font, three weights (400 / 700 / 800), no display companion
68
- - Pure `#ffffff` page background, pure `#000000` ink — no off-whites, no warm neutrals
69
- - Three-tier display hierarchy: 30px section headline / 22px card title / 12-15px body & price
70
- - Border-radius restraint: 2px for inverted CTAs, 4px for ghost buttons, 0px on most editorial chrome
71
- - Muted secondary text via `rgba(93,93,93,0.64)` — a single transparent grey, not a swatch
72
- - 1px solid `#C4C4C4` outlines for ghost buttons — never colored, never thicker
73
- - 12px/700 prices, 12px/400 product names — both subordinate to the image
74
- - Generous editorial padding: 20-48px page margins, multi-line lh ≈ 1.36-1.5 on Korean body
75
- - No shadow system on the homepage — elevation reads as "raised image", not "elevated card"
76
- - Lowercase, English-leaning category labels (`Special-Order`, `Showcase`, `Lookbook`, `29Magazine`) at 24-30px/700 — the brand's editorial register made literal
77
-
78
- ## 2. Color Palette & Roles
79
-
80
- ### Primary
81
- - **Pure Black** (`#000000`): Body ink, headings, inverted CTA backgrounds, footer headings. The brand's only "color" in the strictest sense.
82
- - **Pure White** (`#ffffff`): Page background, ghost-button background, inverted-CTA text. Total white — not `#fafafa`, not `#f5f5f5`.
83
-
84
- ### Greys (functional, not branded)
85
- - **Muted Grey 64%** (`rgba(93, 93, 93, 0.64)`): Secondary captions, "옵션비 별도" hints, badge counts, inactive nav items. The single most-used non-primary color on the site, and it is a transparency, not a swatch — meaning the actual rendered colour shifts with whatever sits behind it.
86
- - **Outline Grey** (`#c4c4c4`): The only border colour used for ghost-style buttons and editorial tile dividers. Mid-light, neutral, no warm tint.
87
-
88
- ### Accent / State (sparse)
89
- - **Sale Red** (`#ff0066` / `#ff003c` family): Appears only on discount badges and percent-off pills on product cards. Never used for UI affordances or CTAs.
90
- - **Brand Black on Brand Black**: Floating help CTAs ("FAQ", "1:1 문의") use `#000000` background with `#ffffff` text — the inverse of the page, treated as a high-contrast, low-frequency control.
91
-
92
- ### What 29CM Explicitly Does Not Use
93
- - No brand blue, brand purple, or brand red. The category buttons that read "FAQ"/"1:1 문의" are not "primary" — they are inverted black, the same as the footer.
94
- - No tinted neutrals (no `#fafafa`, no warm cream). Backgrounds are `#ffffff`, full stop.
95
- - No semantic colour system beyond the discount-red badge. There is no success-green, warning-yellow, or info-blue on the marketing surface.
96
-
97
- ## 3. Typography Rules
98
-
99
- ### Font Family
100
- - **Primary**: `Pretendard Variable`, with fallback chain `ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"`
101
- - **Single-family system**: There is no separate display face, no serif companion, no monospace. Pretendard Variable handles 100% of legible surfaces.
102
-
103
- ### Hierarchy
104
-
105
- | Role | Size | Weight | Line Height | Notes |
106
- |------|------|--------|-------------|-------|
107
- | Section Headline (Special-Order / 29Magazine) | 30px | 700 | ~1.13 | Lowercase-English / mixed Korean editorial headlines |
108
- | Sub-Headline (lower category) | 24px | 700 | ~1.21 | Smaller category nav items |
109
- | Editorial Card Title | 22px | 700 | 29.92px (1.36) | The signature card title — PT subjects, themed collections |
110
- | Editorial Body / Description | 15px | 400 | 22.5px (1.50) | Card descriptions, editorial blurbs |
111
- | Nav Link (primary) | 16px | 200-800 | normal | 200 = inactive secondary, 800 = active "BEST" / current section |
112
- | Floating CTA ("FAQ", "1:1 문의") | 15px | 400 | normal | Black bg, white text, 2px radius |
113
- | Ghost CTA ("더보기") | 14px | 700 | normal | White bg, 1px `#c4c4c4` border |
114
- | Footer Heading | 13px | 700 | 18.2px (1.40) | Caps Latin section labels — `NOTICE`, `ABOUT US`, `MY ORDER`, `HELP` |
115
- | Product Name (card) | 12px | 400 | 16.32px (1.36) | Black ink, restrained, sits under the image |
116
- | Product Price | 12px | 700 | 16.32px (1.36) | Same size as the name — price never dominates the card |
117
- | Price Caption ("옵션비 별도") | 12px | 400 | 16.32px (1.36) | In `rgba(93,93,93,0.64)` grey |
118
-
119
- ### Principles
120
-
121
- - **One family, three weights.** Pretendard Variable at 400 (body, captions), 700 (titles, prices, ghost CTAs), and 800 (active navigation). 200 appears on inactive secondary nav as a quiet hint. There is no italic; emphasis is by weight, never style.
122
- - **Editorial card title = 22px/700.** This is the unit of voice. Most magazine-style tiles on the homepage carry one 22-29px Korean sentence at weight 700, then a 15px/400 description in the same line-height ratio. The pair is the brand's grammar.
123
- - **Latin labels at large sizes, Korean at body sizes.** Category navigation uses English (`Special-Order`, `Showcase`, `PT`, `29Magazine`) at display sizes (24-30px), while Korean dominates body and editorial copy. The mixing is intentional — the English serves as a magazine table-of-contents register.
124
- - **Prices are never the loudest thing on a card.** 12px/700 is by design subordinate to the 22px title and the photo. Where Coupang puts price first, 29CM puts price last.
125
- - **Letter-spacing is `normal` almost everywhere.** No tight tracking, no display-tracking compensation. The font is well-cut enough to carry display sizes without spacing intervention.
126
- - **Line-height ≈ 1.36-1.50.** Korean bodies need air; the editorial register needs more. 1.36 on titles, 1.50 on prose — never tighter.
127
-
128
- ## 4. Component Stylings
129
-
130
- ### Buttons
131
-
132
- **Ghost Outline (the workhorse — "더보기")**
133
- - Background: `#ffffff`
134
- - Text: `#000000`
135
- - Border: `1px solid #c4c4c4`
136
- - Radius: 4px
137
- - Padding: 16px 16px 16px 20px (asymmetric — slightly larger left for trailing-arrow icon)
138
- - Height: 52px
139
- - Font: 14px Pretendard Variable weight 700
140
- - Use: "더보기 / View more" on every editorial section ending, primary "load more" affordance
141
-
142
- **Inverted Solid (floating help — "FAQ", "1:1 문의")**
143
- - Background: `#000000`
144
- - Text: `#ffffff`
145
- - Border: none
146
- - Radius: 2px
147
- - Padding: 4px 8px 4px 14px (asymmetric — leading icon space)
148
- - Height: 31px
149
- - Font: 15px Pretendard Variable weight 400
150
- - Use: Fixed-position floating help controls on the bottom-right; the only persistent solid-fill control on the site
151
-
152
- **Category Pill (navigation count badges — "63", "175", "6K")**
153
- - Background: transparent
154
- - Text: `rgba(93, 93, 93, 0.64)`
155
- - Border: none
156
- - Radius: 4px (inherited from container)
157
- - Padding: 0
158
- - Height: 52px (tap target, not visual height)
159
- - Font: 16px Pretendard Variable weight 400
160
- - Use: Category nav row count badges — number-only, large tap target, no visual chrome
161
-
162
- **Sale Discount Pill** (product card overlay)
163
- - Background: `#ffffff` or transparent
164
- - Text: `#ff0066` (sale red)
165
- - Border: none
166
- - Radius: 0px
167
- - Font: 12px weight 700
168
- - Use: Percent-off badge on product cards, often paired with the price
169
-
170
- ### Cards & Containers
171
-
172
- **Editorial Tile** (PT / Showcase / Magazine)
173
- - Background: `#ffffff`
174
- - Border: none
175
- - Radius: 0px on the outer container; image inherits 0px (square / hard-edged)
176
- - Padding: image full-bleed; caption block has 16-20px top padding
177
- - Shadow: none — relies on photography and whitespace for separation
178
- - Title: 22px / 700 / `#000000` / lh 29.92px sitting directly under the image
179
- - Body: 15px / 400 / `#000000` / lh 22.5px
180
- - Use: The dominant homepage unit — themed brand stories, lookbooks, editor curations
181
-
182
- **Product Card**
183
- - Background: `#ffffff`
184
- - Border: none
185
- - Radius: 0px
186
- - Image: square or 4:5 portrait, 0px radius
187
- - Title: 12px / 400 / `#000000` directly under the image
188
- - Price: 12px / 700 / `#000000` (or red `#ff0066` if on sale)
189
- - Caption ("옵션비 별도", "무료배송"): 12px / 400 / `rgba(93,93,93,0.64)`
190
- - Spacing: 8-12px between rows of the card meta block
191
- - Use: Standard catalog item — image-first, text small, no chrome
192
-
193
- ### Inputs & Forms
194
-
195
- - Background: `#ffffff`
196
- - Border: none on the homepage search affordance; bottom-rule only on focus
197
- - Radius: 0px
198
- - Font: Pretendard Variable
199
- - Style: Editorial — search reads as a header-bar input, not a boxed UI control. When boxed elsewhere (PDP, checkout) it uses a 1px `#c4c4c4` border and 4px radius matching the ghost button.
200
-
201
- ### Navigation
202
-
203
- - Header background: `#ffffff` (transparent over hero on scroll)
204
- - Layout: logo center / utility links left and right at 16px / weight 200
205
- - Primary category row: 16-30px Latin labels, weight 700-800 active, 200 inactive
206
- - Logo: 29CM wordmark — see Logo asset
207
- - Sticky behaviour: header stays, drops the secondary category row after scroll
208
- - Mobile: hamburger toggle, full-screen sheet with same hierarchy
209
-
210
- ### Footer
211
-
212
- - Background: `#ffffff`
213
- - Padding: 20px 48px 48px (asymmetric — tight top, generous bottom)
214
- - Section headings: 13px / weight 700 / `#000000`, all-caps Latin (`NOTICE`, `ABOUT US`, `MY ORDER`, `MY ACCOUNT`, `HELP`)
215
- - Body links: ~13-14px / weight 400 / `#000000`
216
- - No background tint, no top border — the footer is just more whitespace with denser type
217
-
218
- ### Decorative Elements
219
-
220
- - **No iconography on hero/editorial surfaces.** Decorative graphics are intentionally absent; the image is the decoration.
221
- - **Trailing-arrow on ghost CTAs.** "더보기" buttons carry a thin `>` chevron at the right — the only systematic icon use on marketing surfaces.
222
- - **Sale red as the single accent.** When a percent-off ribbon appears on a product, it is the only chromatic moment on that tile. The restraint makes it work.
223
-
224
- ---
225
-
226
- **Verified:** 2026-05-13 (omd:add-reference CREATE)
227
- **Tier 1 sources:** www.29cm.co.kr/ (live DOM inspect, Pretendard Variable + #000/#fff + 22px/700 editorial cards + 1px `#c4c4c4` ghost CTAs + 2px-radius floating black CTAs — confirmed via getComputedStyle on home surface, scroll-loaded editorial tiles, footer, and floating help affordances)
228
- **Tier 2 sources:** getdesign.md/29cm — *no entry returned* ("No designs found for '29cm'"); styles.refero.design/?q=29cm — *no 29CM-tagged styles found* (search returned generic editorial/gallery references unrelated to 29CM)
229
- **Conflicts unresolved:** none — Tier 2 was silent on every claim, so Tier 1 live observation is the sole source. Token values in this section come exclusively from live `getComputedStyle()` on www.29cm.co.kr 2026-05-13.
230
-
231
- ## 5. Layout Principles
232
-
233
- ### Spacing System
234
- - Base unit: 4px (derived from 4-8-12-16-20-24-32-48 cascade observed in padding values)
235
- - Page horizontal margin: 48px desktop, ~16-20px mobile
236
- - Editorial tile gap: 24-32px between major sections
237
- - Card meta gap (image → title → price): 8-12px between rows
238
- - Footer block padding: 20px top / 48px bottom — asymmetric, generous at the bottom
239
-
240
- ### Grid & Container
241
- - Max content width: ~1280px centered, with full-bleed exceptions for hero editorial
242
- - Editorial grid: 2-column on tablet, 3-4 column on desktop for product tiles, 1-2 column for PT/Magazine stories
243
- - Hero: typically full-bleed image with 30px/700 caption sitting beneath, not overlaid
244
- - Category nav row: horizontal scroll on mobile, fully visible on desktop
245
-
246
- ### Whitespace Philosophy
247
- - **Whitespace is the brand asset.** 29CM treats empty space the way Apple treats it on iPhone hero pages — as proof that the curation was tight enough to remove rather than add.
248
- - **Photography is the second voice.** Image columns are oversized relative to text columns; captions stay short and well-set rather than competing with the image.
249
- - **Price is not the destination.** The vertical rhythm of a product card — image, title, price — keeps price last so the user reads narrative before number.
250
-
251
- ### Border Radius Scale
252
- - 0px: Images, editorial tiles, search inputs, category labels — most surfaces
253
- - 2px: Inverted black CTAs (`FAQ`, `1:1 문의`) — the smallest radius in the system, used on the highest-contrast control
254
- - 4px: Ghost outline buttons (`더보기`), boxed form inputs on PDP
255
- - No pill shapes, no >8px radii anywhere on the marketing surface
256
-
257
- ## 6. Depth & Elevation
258
-
259
- | Level | Treatment | Use |
260
- |-------|-----------|-----|
261
- | Flat (Level 0) | No shadow, no border | Page background, editorial tiles, product cards — the dominant state |
262
- | Outline (Level 1) | `1px solid #c4c4c4` | Ghost CTAs, boxed form inputs |
263
- | Inverted (Level 2) | `#000000` background on `#ffffff` page | Floating help CTAs, footer headings — "elevation by colour inversion" |
264
- | Image-as-elevation | Photography on white | Editorial tiles — the photograph itself reads as the lifted layer, no shadow needed |
265
- | Focus | 2px black outline offset | Keyboard focus ring on interactive elements |
266
-
267
- **Shadow Philosophy.** 29CM's marketing surface has no shadow system. The page is flat by design — depth comes from photographic content sitting on white, not from CSS box-shadows. The closest thing to "elevation" is the high-contrast inverted black CTA, which reads as an editorial pull-quote callout rather than a UI button. Adding a `0px 4px 8px rgba(0,0,0,0.1)` shadow to a 29CM tile would immediately look off-brand — it would push the page from "magazine" toward "SaaS dashboard".
268
-
269
- ## 7. Do's and Don'ts
270
-
271
- ### Do
272
- - Use Pretendard Variable on every text element — there is no second face.
273
- - Pair every editorial tile with one photograph and one short Korean caption at 22px/700.
274
- - Use `#000000` and `#ffffff` as the only structural colours; `rgba(93,93,93,0.64)` for muted captions.
275
- - Keep border-radius at 0px, 2px, or 4px — nothing above 4px on marketing surfaces.
276
- - Subordinate price (12px/700) to title and image; never invert this order.
277
- - Lean on whitespace for separation — 24-48px between sections, not borders or dividers.
278
- - Use the inverted black CTA (`#000000` bg / `#ffffff` text / 2px radius) sparingly for high-priority, persistent affordances only.
279
- - Mix Latin labels (Special-Order, Showcase, 29Magazine) at display sizes with Korean body copy at smaller sizes.
280
-
281
- ### Don't
282
- - Don't add box-shadows to editorial tiles or product cards — the homepage is flat.
283
- - Don't introduce a brand blue, brand red, or brand purple for CTAs. The brand "colour" is monochrome.
284
- - Don't use pill-shaped buttons or radii above 8px anywhere on marketing surfaces.
285
- - Don't promote price to the top of a card or to the largest size — image first, price last.
286
- - Don't use italic for emphasis; emphasis is by weight (400 → 700).
287
- - Don't tint backgrounds (`#fafafa`, `#f5f5f5`) — 29CM is pure white.
288
- - Don't compose hero text overlaid on photography; 29CM almost always sets caption *below* the image, not on top.
289
- - Don't use decorative iconography on hero — the image is the decoration.
290
-
291
- ## 8. Responsive Behavior
292
-
293
- ### Breakpoints
294
- | Name | Width | Key Changes |
295
- |------|-------|-------------|
296
- | Mobile | <768px | 1-column editorial tiles, 2-column product grid, hamburger nav, 16-20px page margin |
297
- | Tablet | 768-1024px | 2-column editorial, 3-column product grid, condensed nav |
298
- | Desktop | 1024-1440px | 2-3 column editorial, 4-column product grid, full top nav row |
299
- | Large Desktop | >1440px | 1280px max centered content, generous margins flanking |
300
-
301
- ### Touch Targets
302
- - Category badge buttons: 52px tap height even when visually smaller
303
- - Floating CTAs ("FAQ", "1:1 문의"): 31px height — minimum acceptable on mobile, paired with 8-12px padding
304
- - Editorial tiles: full tile is tappable, no separate "view" button
305
-
306
- ### Collapsing Strategy
307
- - Section headlines: 30px → 22px on mobile, weight 700 maintained
308
- - Nav row: full horizontal list → hamburger sheet
309
- - Product grid: 4-column → 2-column on mobile, image-aspect maintained
310
- - Page margin: 48px → 16-20px on mobile
311
- - Floating help CTA: stays bottom-right at all viewports — the one consistent control
312
-
313
- ### Image Behavior
314
- - Editorial photography: full-bleed at all sizes; aspect ratio held
315
- - Product cards: square or 4:5 portrait, maintained on mobile
316
- - No lazy-load skeletons styled as cards — placeholder is a flat grey block, no shimmer
317
-
318
- ## 9. Agent Prompt Guide
319
-
320
- ### Quick Token Reference
321
- - Page background: `#ffffff`
322
- - Body text: `#000000`
323
- - Muted text: `rgba(93,93,93,0.64)` (transparent grey on white = `#5d5d5d` at 64% opacity)
324
- - Outline grey: `#c4c4c4`
325
- - Sale red: `#ff0066` family (badge-only)
326
- - Primary CTA: inverted black — `#000000` bg, `#ffffff` text, 2px radius
327
- - Secondary CTA: ghost — `#ffffff` bg, `#000000` text, `1px solid #c4c4c4`, 4px radius
328
- - Font family: `Pretendard Variable, ui-sans-serif, system-ui, sans-serif`
329
- - Section headline: 30px / 700 / lh 1.13
330
- - Editorial title: 22px / 700 / lh 29.92px
331
- - Editorial body: 15px / 400 / lh 22.5px
332
- - Product name: 12px / 400
333
- - Product price: 12px / 700
334
-
335
- ### Example Component Prompts
336
- - "Create an editorial tile: full-bleed photograph on top, then 16px gap, then 22px Pretendard Variable weight 700 Korean headline in `#000000`, then 8px gap, then 15px weight 400 description in `#000000`. No border, no shadow, no radius. White page background."
337
- - "Build a 'View more' ghost button: white background, 1px solid `#c4c4c4` border, 4px radius, 14px Pretendard Variable weight 700 black text, padding 16px 16px 16px 20px, height 52px. Trailing chevron `>` right-aligned."
338
- - "Build a product card: square photograph at 0px radius, then 12px Pretendard Variable weight 400 product name in `#000000`, then 12px weight 700 price in `#000000` directly below. Caption row '옵션비 별도' in 12px weight 400 `rgba(93,93,93,0.64)`. No card border, no shadow."
339
- - "Floating help CTA: `#000000` background, `#ffffff` text, 2px radius, padding 4px 8px 4px 14px, height 31px, 15px Pretendard Variable weight 400. Fixed bottom-right, 24px inset."
340
- - "Footer: white background, padding 20px 48px 48px. Column headings in 13px Pretendard Variable weight 700 uppercase Latin (`NOTICE`, `ABOUT US`, `HELP`). Link body 13-14px weight 400 black. No background tint, no top border."
341
-
342
- ### Iteration Guide
343
- 1. Always use Pretendard Variable — it is the brand font; do not substitute Noto Sans KR or Apple SD Gothic Neo unless the runtime cannot load Pretendard.
344
- 2. Default to `#000000` on `#ffffff`. Reach for `rgba(93,93,93,0.64)` only for secondary captions. Reach for any other colour only if you can name a specific brand reason.
345
- 3. Editorial card titles are 22px/700 with 29.92px line-height. This pair is the single most distinctive typographic unit in the system — replicate it precisely.
346
- 4. Product price is 12px/700 and lives under the title, not above. Inverting this order is the most common mistake when adapting other commerce designs to 29CM.
347
- 5. Radius scale is 0 / 2 / 4 — never 8, never pill. The 4px ghost button is the largest radius on the marketing surface.
348
- 6. White space is the brand. If a layout feels "empty", you are probably close to correct. Resist the urge to fill.
349
- 7. The inverted black CTA is high-cost. Use it once or twice per screen at most.
350
- 8. Photography does the visual heavy lifting. If you have weak imagery, no amount of typography will recover the 29CM register.
351
-
352
- ---
353
-
354
- ## 10. Voice & Tone
355
-
356
- 29CM speaks like an editor curating a magazine, not a marketer running a sale — calm, considered, never excited, never urgent. The brand book (`Guide to better 29CM`) defines the voice as personable but quiet: the brand persona is described as "착하지만 엉뚱한" (kind but offbeat), and the tone is treated as a deliberate craft layer that must stay consistent across every product caption, push notification, and email. Korean is the primary voice; English appears only as section labels and category names (`Special-Order`, `Showcase`, `29Magazine`) borrowed from print-magazine convention.
357
-
358
- | Context | Tone |
359
- |---|---|
360
- | Editorial card titles | Short Korean phrases, often poetic or sensory (`나폴리의 산들바람`, `쿨링 시스템`). No imperatives. |
361
- | Editorial card body | One sensory sentence + invitation. `스치는 바람처럼 여유로운 여름을 담은 지노키오의 여름 컬렉션을 같이 구경해요.` — the verb endings (`~해요`) are friendly-formal, never `~합니다`. |
362
- | Product names | Brand-led, restrained — `[29CM 단독] (uni)Breeze 아이보리 솔리드 파자마`. Brackets carry exclusivity markers. |
363
- | CTAs | `더보기`, `자세히 보기`, `장바구니 담기`. Bare verb-stems with `~기` endings. Never English (`SHOP NOW`), never exclamatory. |
364
- | Price captions | Bare numerals + `원` later in the line. Modifier captions (`옵션비 별도`, `무료배송`) sit quietly under the price in muted grey. |
365
- | PT (Presentation) copy | Long-form editorial — opens with a thesis sentence, then product context, then story. Reads like a Brunch essay. |
366
- | Push / email | Same magazine register — `오늘의 컬렉션을 큐레이션했어요` rather than `세일 시작! 지금 클릭!`. |
367
- | Empty states | Single Korean line explaining the absence — `아직 찜한 상품이 없어요`. Never `데이터가 없습니다`. |
368
-
369
- **Forbidden phrases.** `최저가`, `초특가`, `긴급세일`, `오늘만`, English exclamatory CTAs (`SHOP NOW!`, `BUY!`), emoji of any kind on marketing surfaces, urgency-driven countdowns (`마감 임박!`), and the corporate-formal `~합니다` ending on consumer-facing voice. (`~합니다` is reserved for legal disclosure pages only.) Stacked superlatives on a single product (`프리미엄 럭셔리 시그니처 컬렉션`) read as Coupang-grade promo and are off-brand.
370
-
371
- ## 11. Brand Narrative
372
-
373
- 29CM was founded in **2011** as a media-commerce hybrid — the **C stands for Commerce** and the **M stands for Media** — under the parent operator Cafe24's incubator before passing through several owners. The name itself encodes the thesis: **29 centimeters** is, in the brand's own framing, *"the closest distance at which two people can open their hearts"* — the editorial premise that shopping is less about transaction than about taste, and that 29CM stands at conversational distance from its customer rather than retail distance ([NamuWiki / Asiance](https://blog.asiance.com/2021/03/24/vertical-platform-for-mz-generation/)). The brand's official identity statement is **"Guide to Better Choice"** — a curated selection promise rather than a discount promise.
374
-
375
- The company was acquired by **Musinsa (무신사)** in **2021** and now operates as the editorial counterweight inside the Musinsa group: where Musinsa is street-utility and scale, 29CM is curation and editorial depth, with a dedicated PT (Presentation) format introduced in 2013 that publishes ~1.5 long-form brand stories per week ([29CM Brunch — likenoothers](https://brunch.co.kr/@likenoothers/11)). The 2023 Seongsu offline store and the [2023 BX renewal](https://designcompass.org/2023/08/21/29cm-seongsu/) reinforced the editorial framing — the wordmark uses dotted "2" and "9" digits to express the brand's *"착하지만 엉뚱한"* (kind-but-offbeat) personality, and the visual identity centres on a ruler-mark motif that frames the wordmark "like a container for the brand".
376
-
377
- The internal brand book is titled **`Guide to better 29CM, 더 나은 29CM를 위한 가이드북`** — roughly 180 pages, with four parts: "우리다운 방식" (our way), "우리의 초상" (our portrait — brand persona as a person, complete with imagined clothes and weekend habits), "우리만의 목소리" (our voice — tone-and-manner guide for copy), and "그들의 취향" (their taste — nine taste-based customer personas, explicitly rejecting demographic segmentation) ([29CM Brand Book — Brunch](https://brunch.co.kr/@likenoothers/11)).
378
-
379
- What 29CM refuses: discount-led merchandising (no permanent sale banners), demographic segmentation (age/gender bins are replaced by taste-based personas), urgency theatre (no countdowns, no "마감 임박"), and decorative chrome (no gradients, no shadows, no brand colour beyond black-on-white). What it embraces: long-form editorial inside the storefront, photography as the primary voice, Korean as the primary language with English borrowed from magazine convention, and the conviction that the customer is a reader first and a buyer second.
380
-
381
- ## 12. Principles
382
-
383
- 1. **The image is the headline.** Every editorial tile leads with a photograph at 22px-headline scale of visual weight. The Korean caption sits underneath, never overlaid. If the image cannot carry the tile, the tile is not ready.
384
- *UI implication:* Reserve the top 60-70% of every editorial unit for photography. Captions are subordinates, not co-headlines.
385
-
386
- 2. **Price is the punctuation, not the verb.** Product prices render at 12px/700 — the same size as the product name. Promoting price violates the editorial hierarchy and reframes the page as discount commerce.
387
- *UI implication:* Price never exceeds product-name size on a card. Discount red is a single accent, used sparingly on percent badges only.
388
-
389
- 3. **Whitespace is more expensive than ink.** 29CM's curation is proven by what is removed, not what is added. Page margins of 48px, section gaps of 32px, and an absence of dividers are the brand's structural commitment.
390
- *UI implication:* Default to more padding, fewer borders. If a layout reads "spacious", you are likely close to correct.
391
-
392
- 4. **One face, three weights, no italic.** Pretendard Variable is the entire typographic system. Emphasis is by weight (400 → 700 → 800). Adding a serif companion or a display face dilutes the editorial register.
393
- *UI implication:* Reject design contributions that introduce a second family. Bold is the only emphasis primitive.
394
-
395
- 5. **Korean is the primary voice; English is the section label.** Body copy, captions, error states, and onboarding are Korean. English appears at display sizes for navigation categories — borrowed from print-magazine convention, not adopted as parallel UI language.
396
- *UI implication:* Avoid English microcopy in body strings. Reserve English for top-level category names where it functions as decoration.
397
-
398
- 6. **Restraint is the brand.** The only "colour" is the discount-red badge. The only "elevation" is colour inversion. The only iconography is a trailing chevron. Every additional visual element competes with the photography.
399
- *UI implication:* Before adding a shadow, a border, an icon, or a colour — name a specific editorial reason. If there isn't one, remove.
400
-
401
- 7. **The customer is a reader.** PT, Showcase, and 29Magazine treat brand stories as long-form editorial. The site rewards browsing time, not click-through speed. Conversion follows attention; attention follows curation.
402
- *UI implication:* Allow long pages. Don't compress brand stories into "view more" gated cards. The full editorial is the funnel.
403
-
404
- ## 13. Personas
405
-
406
- *Personas below are fictional archetypes informed by 29CM's stated taste-based segmentation (9 personas defined in the internal brand book) and publicly described 29CM user profiles. Not individual people.*
407
-
408
- **지윤 (Jiyoon), 29, Seoul.** Marketing manager at a small lifestyle startup. Opens 29CM on her phone during the commute and on desktop at lunch. Reads PT pieces front-to-back before adding anything to cart — the editorial is the reason she's there. Owns one item from at least 12 different niche Korean brands, none of which she would have discovered on Musinsa. Resists discount notifications; deletes the app immediately if it starts pushing "오늘만" banners.
409
-
410
- **민호 (Minho), 34, Seongsu.** Industrial designer. Treats 29CM as a curated showroom rather than a shop. Goes to the Seongsu offline store on weekends to handle objects in person, then buys online a week later. Will spend ₩280,000 on a single ceramic vase without flinching but considers a ₩9,900 cable organizer beneath consideration. The brand-story PT format is the deciding factor on every purchase above ₩100,000.
411
-
412
- **서연 (Seoyeon), 26, Busan.** Recent grad, working her first office job. Uses 29CM as her "taste education" — she follows specific brand collections that 29CM has curated and slowly builds a wardrobe around them. Knows the difference between 29Magazine and Showcase. Reads Lookbook on Sunday evenings like other people read magazines. Has never used a 29CM coupon code.
413
-
414
- **현우 (Hyeonwoo), 41, Gangnam.** Senior consultant. Buys gifts on 29CM — for partners, clients, parents. The site's editorial framing solves a problem ordinary commerce can't: it produces gift recommendations that feel "considered" rather than "expensive". Trusts the 29CM curation enough to buy without comparison shopping. Reads PT for vocabulary he can use in the card.
415
-
416
- ## 14. States
417
-
418
- | State | Treatment |
419
- |---|---|
420
- | **Empty (wishlist / cart)** | Single Korean line of `#000000` 15px weight 400 body text explaining the absence (`아직 찜한 상품이 없어요`, `장바구니가 비어있어요`), plus one ghost outline CTA below (`상품 둘러보기`). Never an illustration, never a mascot. |
421
- | **Empty (search / filter)** | One line of 14px `rgba(93,93,93,0.64)` caption (`검색 결과가 없어요`). No button — user adjusts filters themselves. |
422
- | **Loading (first paint)** | Flat grey blocks at `#f5f5f5` (functional, not styled) at the final layout's geometry. No shimmer animation on editorial tiles — would compete with photography. |
423
- | **Loading (more products)** | Bottom-of-list 3-dot loader in `#000000`. No overlay, no skeleton — the existing list stays visible. |
424
- | **Error (inline field)** | 1px `#ff003c` border on the input, error text below in `#ff003c` 13px weight 400. One sentence (`이메일 형식이 올바르지 않아요`). Friendly-formal `~요` ending. |
425
- | **Error (toast)** | `#000000` background, `#ffffff` 14px weight 400 text, 2px radius matching the inverted CTA, bottom-center placement, 3s auto-dismiss. No icon. |
426
- | **Error (screen-blocking)** | Reserved for server outage. White screen, centered single-line message in `#000000` 16px weight 700, ghost CTA below (`다시 시도하기`). No illustration. |
427
- | **Success (inline)** | Brief 200ms flash of the `#000000`/`#ffffff` inversion on the affected control — toggle flip, like-button activation. No green checkmark on routine UI. |
428
- | **Success (purchase confirmation)** | Dedicated confirmation screen. Black-on-white order number in 22px/700, item summary below in 15px/400, single ghost CTA (`주문 내역 보기`). Money figures rendered in 22px/700 with comma separators. |
429
- | **Skeleton** | `#f5f5f5` blocks at final dimensions, 0px radius (matching the editorial-tile and product-card geometry). 1.0s fade pulse, never shimmer. Never used on prices — those render as `--` until resolved. |
430
- | **Disabled** | Button opacity drops to 0.4. Border colour does not change — disabled ghost buttons retain `#c4c4c4` border so geometry stays stable when re-enabled. |
431
- | **Sale badge active** | `#ff0066` text on white tile corner — the single chromatic state on the marketing surface. Used for percent-off only, never for "NEW" or "BEST" (those are weight-only treatments in nav). |
432
-
433
- ## 15. Motion & Easing
434
-
435
- **Durations** (named, not raw milliseconds):
436
-
437
- | Token | Value | Use |
438
- |---|---|---|
439
- | `motion-instant` | 0ms | Toggle flips, like-button state changes |
440
- | `motion-quick` | 150ms | Hover state on ghost buttons, focus ring fades |
441
- | `motion-standard` | 250ms | Default — image hover scale, sheet opens, tile reveal |
442
- | `motion-editorial` | 400ms | Editorial transitions — hero image cross-fade, PT chapter advance |
443
- | `motion-page` | 350ms | Full-screen route transitions |
444
-
445
- **Easings:**
446
-
447
- | Token | Curve | Use |
448
- |---|---|---|
449
- | `ease-out` | `cubic-bezier(0.2, 0.0, 0.0, 1.0)` | Appearing — sheets enter, tiles reveal, hovers settle |
450
- | `ease-in` | `cubic-bezier(0.4, 0.0, 1.0, 1.0)` | Leaving — dismissals, pops |
451
- | `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1.0)` | Two-way transitions — accordion expand, tab content |
452
- | `linear` | `linear` | Image scrubbing in editorial galleries — preserves perceptual neutrality |
453
-
454
- **Signature motions.**
455
-
456
- 1. **Image hover scale.** Hovering an editorial tile scales the image to 1.04 over `motion-standard` with `ease-out`; the surrounding tile chrome does not move. The motion is photographic, not interface — the photograph leans toward the cursor.
457
- 2. **Tile reveal on scroll.** Editorial tiles fade in from opacity 0 with a 12px upward translate over `motion-editorial` with `ease-out`. The stagger between tiles is 80-120ms, mimicking page-turn rhythm rather than dashboard pop-in.
458
- 3. **CTA hover (ghost outline).** The `#c4c4c4` border darkens to `#000000` over `motion-quick`, no fill change. The change is felt, not announced — typical of editorial restraint.
459
- 4. **CTA hover (inverted black).** Background lightens 4% over `motion-quick`. No transform, no shadow added. The brand never animates depth.
460
- 5. **Reduce motion.** If `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`. Image hover scale disables. Cross-fades replace translates. The site stays usable; just less kinetic.
461
-
462
- <!--
463
- OmD v0.1 Sources — Philosophy Layer (sections 10-15)
464
-
465
- Direct verification via WebFetch / live inspect (2026-05-13):
466
- - https://www.29cm.co.kr/ — confirmed homepage tagline "감도 깊은 취향 셀렉트샵 29CM",
467
- editorial tile structure, Pretendard Variable typography, monochrome palette,
468
- inverted-black FAQ/1:1 CTA pattern (live getComputedStyle 2026-05-13).
469
- - https://brunch.co.kr/@likenoothers/11 — confirmed brand book title
470
- "Guide to better 29CM, 더 나은 29CM를 위한 가이드북", 4-part structure (우리다운
471
- 방식 / 우리의 초상 / 우리만의 목소리 / 그들의 취향), 9 taste-based personas,
472
- "착하지만 엉뚱한" persona description.
473
- - https://designcompass.org/2023/08/21/29cm-seongsu/ — confirmed wordmark dot
474
- motif, ruler-mark visual identity, "변하지 않는 본질" framing, "Guide to
475
- Better Choice" mission language.
476
- - https://blog.asiance.com/2021/03/24/vertical-platform-for-mz-generation/ —
477
- confirmed "C = Commerce, M = Media" name etymology and editorial commerce
478
- positioning, Musinsa acquisition timeline.
479
-
480
- Tier 2 (getdesign.md/refero) returned no 29CM-specific entries — §4 token
481
- values are sourced exclusively from Tier 1 live inspect.
482
-
483
- Not independently verified — widely documented public facts used:
484
- - 29CM founding year (2011), Musinsa acquisition (2021).
485
- - "29CM = 29 centimeters = closest distance to open hearts" — brand's own
486
- framing as referenced in Asiance and NamuWiki; treated as brand-stated
487
- mythology rather than externally documented etymology.
488
-
489
- Personas (§13) are fictional archetypes informed by 29CM's stated taste-based
490
- 9-persona segmentation. Any resemblance to specific individuals is unintended.
491
-
492
- Interpretive claims (e.g., "the image is the headline", "whitespace is more
493
- expensive than ink") are editorial readings of the live design surface, not
494
- documented 29CM statements.
495
- -->
@@ -1,23 +0,0 @@
1
- {
2
- "id": "29cm",
3
- "korean": "29CM",
4
- "logo_url": "https://asset.29cm.co.kr/next-contents/2023/06/08/3f8131682d124d16b336774ba51c4a3e_20230608162823.png",
5
- "highlight": {
6
- "type": "voice",
7
- "tokens": {
8
- "font_family": "Pretendard Variable",
9
- "page_bg": "#ffffff",
10
- "ink": "#000000",
11
- "muted": "rgba(93, 93, 93, 0.64)",
12
- "outline": "#c4c4c4",
13
- "primary_cta_bg": "#000000",
14
- "primary_cta_text": "#ffffff",
15
- "primary_cta_radius": "2px",
16
- "ghost_cta_border": "1px solid #c4c4c4",
17
- "ghost_cta_radius": "4px",
18
- "editorial_title": "22px / 700 / lh 29.92px",
19
- "tagline_ko": "감도 깊은 취향 셀렉트샵"
20
- },
21
- "label": "감도 깊은 취향 — 흑백 에디토리얼"
22
- }
23
- }
@@ -1,103 +0,0 @@
1
- # 29CM — Research Trail
2
-
3
- **Date:** 2026-05-13
4
- **Mode:** CREATE (omd-add-reference)
5
- **Operator:** Claude (Opus 4.7) via subagent
6
-
7
- ---
8
-
9
- ## Tier 1 — Live inspection (truth source)
10
-
11
- | Source | Method | Date | Confidence |
12
- |---|---|---|---|
13
- | `https://www.29cm.co.kr/` | Playwright `getComputedStyle` on body, h1-h3, button, a, input, footer, header img, scroll-loaded editorial tiles | 2026-05-13 | high |
14
-
15
- **Raw findings (verbatim from `getComputedStyle`):**
16
-
17
- - `body.fontFamily` = `"Pretendard Variable", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"`
18
- - `body.fontSize` = `16px`
19
- - `body.color` = `rgb(0, 0, 0)` (`#000000`)
20
- - `body.backgroundColor` = `rgba(0, 0, 0, 0)` (transparent → resolves to `#ffffff` page)
21
- - Document title: `감도 깊은 취향 셀렉트샵 29CM`
22
- - Logo: `https://asset.29cm.co.kr/next-contents/2023/06/08/3f8131682d124d16b336774ba51c4a3e_20230608162823.png` (alt="29CM", `h-16 min-h-16 w-60 min-w-60` Tailwind utility classes)
23
- - Footer headings: `13px / 700 / rgb(0,0,0) / lh 18.2px` — `NOTICE`, `ABOUT US`, `MY ORDER`, `MY ACCOUNT`, `HELP`
24
- - Footer container: `padding: 20px 48px 48px`, transparent bg
25
- - Category nav (Special-Order, Showcase, PT, 29Magazine): `24px / 700 / rgb(0,0,0)` at h=29 transparent bg, 0px radius, 0 padding
26
- - BEST nav item (active): `16px / 800 / rgb(0,0,0)` — same family, heavier weight = active state
27
- - Inactive nav items (MY PAGE, Event, Lookbook, MY LIKE, SHOPPING BAG): `16px / 200 / rgb(0,0,0)` — weight 200 is the "inactive" register
28
- - Ghost CTA "더보기": `bg rgb(255,255,255)`, `color rgb(0,0,0)`, `border 1px solid rgb(196,196,196)` = `#c4c4c4`, `radius 4px`, `padding 16px 16px 16px 20px`, `h=52`, `14px / 700`
29
- - Inverted CTA "FAQ" / "1:1 문의": `bg rgb(0,0,0)`, `color rgb(255,255,255)`, `border 0`, `radius 2px`, `padding 4px 8px 4px 14px`, `h=31`, `15px / 400`
30
- - Editorial card title (`나폴리의 산들바람`, `쿨링 시스템`): `22px / 700 / rgb(0,0,0) / lh 29.92px (1.36)`
31
- - Editorial card body: `15px / 400 / rgb(0,0,0) / lh 22.5px (1.50)`
32
- - Product name: `12px / 400 / rgb(0,0,0) / lh 16.32px (1.36)`
33
- - Product price (e.g. `60,380`): `12px / 700 / rgb(0,0,0)` — same size as the name
34
- - Modifier caption (`옵션비 별도`): `12px / 400 / rgba(93,93,93,0.64) / lh 16.32px`
35
- - Category count badges (`63`, `175`, `6K`): `16px / 400 / rgba(93,93,93,0.64) / radius 4px / h=52` (tap target)
36
-
37
- **Surfaces inspected:** home (`/`), with scroll to ~1500px to load lazy editorial tiles.
38
- **Not inspected this run:** PDP, checkout, sign-up, mobile-app web view. These are noted in §8 as conventional extensions of the home register.
39
-
40
- ---
41
-
42
- ## Tier 2 — Cross-verification (silent on 29CM)
43
-
44
- | Source | Method | Date | Result |
45
- |---|---|---|---|
46
- | `https://getdesign.md/29cm` | WebFetch | 2026-05-13 | **Empty** — "No designs found for '29cm'" |
47
- | `https://styles.refero.design/?q=29cm` | Playwright navigate + DOM scrape of `/style/<uuid>` cards | 2026-05-13 | **No 29CM-tagged styles** — search returned 10 generic editorial/gallery references (Cosmos, Acme Cups, ARTU, etc.) unrelated to 29CM |
48
-
49
- **Implication:** Tier 2 returned no 29CM-specific tokens. §4 component values are sourced exclusively from Tier 1 live inspection. This is documented in §4 footer.
50
-
51
- ---
52
-
53
- ## Tier 3 — Editorial / philosophy context
54
-
55
- | Source | Method | Date | Use |
56
- |---|---|---|---|
57
- | `https://brunch.co.kr/@likenoothers/11` | WebFetch | 2026-05-13 | §11 brand book title, 4-part structure, "착하지만 엉뚱한" persona |
58
- | `https://designcompass.org/2023/08/21/29cm-seongsu/` | WebFetch | 2026-05-13 | §11 wordmark dot motif, ruler-mark identity, "Guide to Better Choice" |
59
- | `https://blog.asiance.com/2021/03/24/vertical-platform-for-mz-generation/` | WebSearch result citation | 2026-05-13 | §11 C=Commerce M=Media etymology, MZ vertical-platform context |
60
- | WebSearch `"29CM" 디자인 시스템 브랜드 가이드 editorial` | WebSearch | 2026-05-13 | Discovery — surfaced Brunch + designcompass sources |
61
- | WebSearch `"29CM" brand philosophy "guide to better life" editorial commerce` | WebSearch | 2026-05-13 | Discovery — confirmed "Guide to Better Choice" mission language |
62
-
63
- NamuWiki entry (`https://en.namu.wiki/w/29CM`) returned HTTP 403 to WebFetch and was not used as a direct source. Founding-year and acquisition facts (2011 / Musinsa 2021) are treated as widely documented and noted as such in the §10-15 source comment block.
64
-
65
- ---
66
-
67
- ## Conflict matrix
68
-
69
- | Field | Tier 1 (live) | Tier 2 (getdesign + refero) | Resolution |
70
- |---|---|---|---|
71
- | Primary font | `Pretendard Variable` | — (silent) | Tier 1 |
72
- | Page bg / ink | `#ffffff` / `#000000` | — (silent) | Tier 1 |
73
- | Primary CTA color | inverted black (`#000`/`#fff`) | — (silent) | Tier 1 |
74
- | Ghost CTA border | `#c4c4c4` 1px | — (silent) | Tier 1 |
75
- | Radius scale | 0 / 2 / 4 | — (silent) | Tier 1 |
76
- | Editorial card title | 22px / 700 / lh 29.92 | — (silent) | Tier 1 |
77
- | Product price weight | 12px / 700 (subordinate to image) | — (silent) | Tier 1 |
78
- | Brand voice | editorial, magazine, `~요` endings | — (silent on tokens; philosophy from Tier 3) | Tier 1 + Tier 3 |
79
-
80
- **Conflicts unresolved:** none. Tier 2 returned no tokens; Tier 1 is the sole authority and is recorded in §4 footer accordingly.
81
-
82
- ---
83
-
84
- ## Style-ref pick for §10-15 Philosophy
85
-
86
- - Brand region: KR
87
- - Style-ref base: `toss` (KR brand convention per skill spec) — voice/tone table, brand-narrative pattern, principles-with-UI-implications, fictional-persona disclaimer
88
- - Tonal adjustments: editorial-magazine register (not fintech-trust register), `~요` endings as friendly-formal (not Toss's calm-fiduciary register), photography-as-decoration framing (not Toss's restraint-as-trust framing)
89
-
90
- ---
91
-
92
- ## Files produced
93
-
94
- - `web/references/29cm/DESIGN.md` — 9-section spec + §10-15 OmD v0.1 philosophy layer (`omd: 0.1` frontmatter)
95
- - `web/references/29cm/_research.md` — this file
96
- - `web/references/29cm/_promo.json` — landing promo metadata
97
-
98
- ## Not done (out of scope this run)
99
-
100
- - No SYNC step executed (README counts, hero copy, llms.txt, fingerprints) — caller instructed not to update README counts.
101
- - No git commit (per user memory: never auto-commit).
102
- - No PDP / checkout surface inspection — only home was inspected. UPDATE pass should add those surfaces.
103
- - No `.verification.md` conflict matrix file (omitted — single-source from Tier 1 means matrix collapses; documented inline in this `_research.md` instead).