oh-my-design-cli 1.8.6 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +2761 -85
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/airbridge/DESIGN.md +451 -0
  71. package/web/references/alipay/DESIGN.md +179 -420
  72. package/web/references/apple/DESIGN.md +224 -498
  73. package/web/references/asleep/DESIGN.md +402 -0
  74. package/web/references/au/DESIGN.md +334 -0
  75. package/web/references/autopedia/DESIGN.md +382 -0
  76. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  77. package/web/references/baemin/DESIGN.md +332 -491
  78. package/web/references/banksalad/DESIGN.md +269 -180
  79. package/web/references/barogo/DESIGN.md +416 -0
  80. package/web/references/beusable/DESIGN.md +464 -0
  81. package/web/references/bigin/DESIGN.md +454 -0
  82. package/web/references/bilibili/DESIGN.md +206 -374
  83. package/web/references/bmw/DESIGN.md +162 -276
  84. package/web/references/brandi/DESIGN.md +184 -325
  85. package/web/references/buzzvil/DESIGN.md +457 -0
  86. package/web/references/cafe24/DESIGN.md +472 -0
  87. package/web/references/catchtable/DESIGN.md +219 -264
  88. package/web/references/cgv/DESIGN.md +317 -0
  89. package/web/references/channeltalk/DESIGN.md +210 -336
  90. package/web/references/china-airlines/DESIGN.md +291 -0
  91. package/web/references/cjonstyle/DESIGN.md +453 -0
  92. package/web/references/class101/DESIGN.md +168 -387
  93. package/web/references/classum/DESIGN.md +228 -203
  94. package/web/references/claude/DESIGN.md +242 -479
  95. package/web/references/clay/DESIGN.md +179 -377
  96. package/web/references/clickhouse/DESIGN.md +254 -343
  97. package/web/references/codeit/DESIGN.md +470 -0
  98. package/web/references/cohere/DESIGN.md +214 -324
  99. package/web/references/coinone/DESIGN.md +199 -179
  100. package/web/references/corca/DESIGN.md +414 -0
  101. package/web/references/coupang/DESIGN.md +205 -475
  102. package/web/references/cursor/DESIGN.md +240 -381
  103. package/web/references/dabang/DESIGN.md +248 -213
  104. package/web/references/dable/DESIGN.md +431 -0
  105. package/web/references/datarize/DESIGN.md +338 -0
  106. package/web/references/dealicious/DESIGN.md +402 -0
  107. package/web/references/drdiary/DESIGN.md +404 -0
  108. package/web/references/elastic/DESIGN.md +238 -0
  109. package/web/references/elevenlabs/DESIGN.md +183 -321
  110. package/web/references/elice/DESIGN.md +445 -0
  111. package/web/references/eslite/DESIGN.md +257 -0
  112. package/web/references/evaair/DESIGN.md +338 -0
  113. package/web/references/expo/DESIGN.md +238 -331
  114. package/web/references/familymart-tw/DESIGN.md +254 -0
  115. package/web/references/ferrari/DESIGN.md +160 -377
  116. package/web/references/figma/DESIGN.md +197 -451
  117. package/web/references/fitpet/DESIGN.md +445 -0
  118. package/web/references/flex/DESIGN.md +170 -253
  119. package/web/references/framer/DESIGN.md +197 -340
  120. package/web/references/freee/DESIGN.md +211 -533
  121. package/web/references/friendliai/DESIGN.md +431 -0
  122. package/web/references/frip/DESIGN.md +440 -0
  123. package/web/references/furiosaai/DESIGN.md +450 -0
  124. package/web/references/gangnamunni/DESIGN.md +154 -591
  125. package/web/references/gaudiolab/DESIGN.md +414 -0
  126. package/web/references/google/DESIGN.md +290 -398
  127. package/web/references/goorm/DESIGN.md +470 -0
  128. package/web/references/greencar/DESIGN.md +420 -0
  129. package/web/references/hackle/DESIGN.md +472 -0
  130. package/web/references/hashicorp/DESIGN.md +273 -318
  131. package/web/references/heydealer/DESIGN.md +429 -0
  132. package/web/references/humanscape/DESIGN.md +433 -0
  133. package/web/references/hwahae/DESIGN.md +453 -0
  134. package/web/references/hyundai/DESIGN.md +158 -368
  135. package/web/references/hyundaicard/DESIGN.md +171 -121
  136. package/web/references/ibm/DESIGN.md +227 -378
  137. package/web/references/idus/DESIGN.md +450 -0
  138. package/web/references/igaworks/DESIGN.md +437 -0
  139. package/web/references/inflearn/DESIGN.md +221 -366
  140. package/web/references/intuit/DESIGN.md +244 -0
  141. package/web/references/jandi/DESIGN.md +191 -291
  142. package/web/references/jobplanet/DESIGN.md +415 -0
  143. package/web/references/kakao/DESIGN.md +287 -475
  144. package/web/references/kakaobank/DESIGN.md +220 -521
  145. package/web/references/kakaogames/DESIGN.md +220 -0
  146. package/web/references/kakaopay/DESIGN.md +207 -526
  147. package/web/references/karrot/DESIGN.md +227 -251
  148. package/web/references/kb-kookmin/DESIGN.md +308 -0
  149. package/web/references/kbank/DESIGN.md +220 -175
  150. package/web/references/kcd/DESIGN.md +432 -0
  151. package/web/references/kmong/DESIGN.md +281 -356
  152. package/web/references/krds/DESIGN.md +245 -19
  153. package/web/references/kream/DESIGN.md +224 -359
  154. package/web/references/kurly/DESIGN.md +211 -533
  155. package/web/references/kyobobook/DESIGN.md +445 -0
  156. package/web/references/lablup/DESIGN.md +474 -0
  157. package/web/references/lamborghini/DESIGN.md +198 -360
  158. package/web/references/lemonbase/DESIGN.md +452 -0
  159. package/web/references/lguplus/DESIGN.md +259 -0
  160. package/web/references/likelion/DESIGN.md +283 -0
  161. package/web/references/line/DESIGN.md +396 -355
  162. package/web/references/linear.app/DESIGN.md +209 -562
  163. package/web/references/lotteon/DESIGN.md +386 -0
  164. package/web/references/lovable/DESIGN.md +255 -349
  165. package/web/references/makinarocks/DESIGN.md +242 -0
  166. package/web/references/maum-ai/DESIGN.md +423 -0
  167. package/web/references/medibloc/DESIGN.md +425 -0
  168. package/web/references/megabox/DESIGN.md +232 -0
  169. package/web/references/mercari/DESIGN.md +217 -434
  170. package/web/references/microsoft/DESIGN.md +234 -388
  171. package/web/references/mildang/DESIGN.md +411 -0
  172. package/web/references/millie/DESIGN.md +183 -504
  173. package/web/references/minimax/DESIGN.md +264 -322
  174. package/web/references/miricanvas/DESIGN.md +182 -355
  175. package/web/references/miro/DESIGN.md +234 -232
  176. package/web/references/mistral.ai/DESIGN.md +231 -314
  177. package/web/references/mixi/DESIGN.md +234 -0
  178. package/web/references/moin/DESIGN.md +445 -0
  179. package/web/references/mongodb/DESIGN.md +219 -316
  180. package/web/references/moreh/DESIGN.md +437 -0
  181. package/web/references/musinsa/DESIGN.md +184 -510
  182. package/web/references/mynavi/DESIGN.md +242 -0
  183. package/web/references/myrealtrip/DESIGN.md +169 -406
  184. package/web/references/naver/DESIGN.md +328 -499
  185. package/web/references/naverwebtoon/DESIGN.md +172 -395
  186. package/web/references/neosapience/DESIGN.md +441 -0
  187. package/web/references/nhn/DESIGN.md +169 -346
  188. package/web/references/nhncloud/DESIGN.md +185 -123
  189. package/web/references/nota/DESIGN.md +451 -0
  190. package/web/references/notion/DESIGN.md +271 -475
  191. package/web/references/nrise/DESIGN.md +417 -0
  192. package/web/references/ohouse/DESIGN.md +210 -549
  193. package/web/references/oliveyoung/DESIGN.md +217 -326
  194. package/web/references/ollama/DESIGN.md +241 -308
  195. package/web/references/onestore/DESIGN.md +248 -0
  196. package/web/references/palantir/DESIGN.md +256 -0
  197. package/web/references/panasonic/DESIGN.md +276 -0
  198. package/web/references/patternfly/DESIGN.md +259 -0
  199. package/web/references/payhere/DESIGN.md +438 -0
  200. package/web/references/pega/DESIGN.md +262 -0
  201. package/web/references/peoplefund/DESIGN.md +431 -0
  202. package/web/references/petfriends/DESIGN.md +428 -0
  203. package/web/references/pinkfong/DESIGN.md +199 -367
  204. package/web/references/pinterest/DESIGN.md +258 -308
  205. package/web/references/portone/DESIGN.md +446 -0
  206. package/web/references/poya/DESIGN.md +286 -0
  207. package/web/references/pozalabs/DESIGN.md +438 -0
  208. package/web/references/protopie/DESIGN.md +419 -0
  209. package/web/references/qraft/DESIGN.md +448 -0
  210. package/web/references/queenit/DESIGN.md +432 -0
  211. package/web/references/quotabook/DESIGN.md +449 -0
  212. package/web/references/rebellions/DESIGN.md +449 -0
  213. package/web/references/recruit/DESIGN.md +247 -0
  214. package/web/references/remember/DESIGN.md +202 -396
  215. package/web/references/resend/DESIGN.md +274 -348
  216. package/web/references/returnzero/DESIGN.md +460 -0
  217. package/web/references/sakura-internet/DESIGN.md +269 -0
  218. package/web/references/samsung/DESIGN.md +157 -359
  219. package/web/references/sandoll/DESIGN.md +445 -0
  220. package/web/references/sanity/DESIGN.md +241 -375
  221. package/web/references/saramin/DESIGN.md +465 -0
  222. package/web/references/scatterlab/DESIGN.md +412 -0
  223. package/web/references/selectstar/DESIGN.md +439 -0
  224. package/web/references/servicenow/DESIGN.md +289 -0
  225. package/web/references/shiftee/DESIGN.md +468 -0
  226. package/web/references/shinhanbank/DESIGN.md +161 -341
  227. package/web/references/shinhancard/DESIGN.md +208 -319
  228. package/web/references/sionic/DESIGN.md +454 -0
  229. package/web/references/sktelecom/DESIGN.md +310 -0
  230. package/web/references/socar/DESIGN.md +125 -32
  231. package/web/references/softbank/DESIGN.md +231 -0
  232. package/web/references/solapi/DESIGN.md +483 -0
  233. package/web/references/sony/DESIGN.md +234 -0
  234. package/web/references/soop/DESIGN.md +261 -0
  235. package/web/references/spacex/DESIGN.md +184 -323
  236. package/web/references/spotify/DESIGN.md +253 -394
  237. package/web/references/squeezebits/DESIGN.md +441 -0
  238. package/web/references/stayfolio/DESIGN.md +422 -0
  239. package/web/references/stripe/DESIGN.md +212 -491
  240. package/web/references/supabase/DESIGN.md +244 -316
  241. package/web/references/supertone/DESIGN.md +413 -0
  242. package/web/references/tabling/DESIGN.md +415 -0
  243. package/web/references/taishinbank/DESIGN.md +243 -0
  244. package/web/references/teamlab/DESIGN.md +240 -0
  245. package/web/references/teamsparta/DESIGN.md +472 -0
  246. package/web/references/tellingme/DESIGN.md +392 -0
  247. package/web/references/tesla/DESIGN.md +244 -427
  248. package/web/references/thsr/DESIGN.md +284 -0
  249. package/web/references/thumbtack/DESIGN.md +302 -0
  250. package/web/references/together.ai/DESIGN.md +257 -304
  251. package/web/references/toss/DESIGN.md +251 -593
  252. package/web/references/toss-securities/DESIGN.md +255 -178
  253. package/web/references/tossbank/DESIGN.md +195 -491
  254. package/web/references/toyota/DESIGN.md +238 -0
  255. package/web/references/tving/DESIGN.md +197 -245
  256. package/web/references/typed/DESIGN.md +413 -0
  257. package/web/references/uber/DESIGN.md +256 -333
  258. package/web/references/udn/DESIGN.md +250 -0
  259. package/web/references/upbit/DESIGN.md +145 -256
  260. package/web/references/upstage/DESIGN.md +211 -204
  261. package/web/references/uswds/DESIGN.md +287 -0
  262. package/web/references/vercel/DESIGN.md +236 -440
  263. package/web/references/vuno/DESIGN.md +413 -0
  264. package/web/references/wanted/DESIGN.md +215 -487
  265. package/web/references/weverse/DESIGN.md +437 -0
  266. package/web/references/wise/DESIGN.md +223 -231
  267. package/web/references/wisetracker/DESIGN.md +462 -0
  268. package/web/references/wooribank/DESIGN.md +245 -0
  269. package/web/references/yanolja/DESIGN.md +250 -419
  270. package/web/references/yeogiotte/DESIGN.md +235 -418
  271. package/web/references/zapier/DESIGN.md +256 -377
  272. package/web/references/zendesk/DESIGN.md +288 -0
  273. package/web/references/zigzag/DESIGN.md +200 -621
  274. package/dist/install-skills-7UUDOLG2.js +0 -734
  275. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -0,0 +1,415 @@
1
+ ---
2
+ id: tabling
3
+ name: Tabling
4
+ display_name_kr: 테이블링
5
+ country: KR
6
+ category: consumer-tech
7
+ homepage: "https://www.tabling.co.kr/"
8
+ primary_color: "#ff5100"
9
+ logo:
10
+ type: favicon
11
+ slug: "https://www.google.com/s2/favicons?domain=tabling.co.kr&sz=128"
12
+ verified: "2026-07-02"
13
+ added: "2026-07-02"
14
+ omd: "0.1"
15
+ tokens:
16
+ source: live-extract
17
+ extracted: "2026-07-02"
18
+ note: "primary = Tabling brand orange (#ff5100) reserved for logo + one emphasis headline; the signature functional accent is a bright mint (#1cfbce) used only for the live waiting-team count. Web marketing surface is white, shadowless, Pretendard throughout; primary filled interactive element is a blue-tint region pill (#f0f4ff), not an orange button."
19
+ colors:
20
+ primary: "#ff5100"
21
+ primary-tint: "#fff7eb"
22
+ primary-wash: "#ffece8"
23
+ waiting: "#1cfbce"
24
+ ink: "#2e3137"
25
+ ink-strong: "#131517"
26
+ heading-black: "#000000"
27
+ slate: "#505c81"
28
+ muted: "#6d7583"
29
+ faint: "#969fac"
30
+ canvas: "#ffffff"
31
+ surface: "#f0f0f0"
32
+ surface-alt: "#f8f9fa"
33
+ chip: "#f0f4ff"
34
+ hairline: "#dfe3e6"
35
+ border: "#d7dbdf"
36
+ typography:
37
+ family: { display: "Pretendard", body: "Pretendard" }
38
+ hero: { size: 24, weight: 700, lineHeight: 1.3, use: "Hero heading, Pretendard Bold" }
39
+ emphasis: { size: 22, weight: 700, use: "Orange emphasis headline (#ff5100)" }
40
+ section: { size: 20, weight: 700, use: "Section titles" }
41
+ card-title: { size: 18, weight: 700, use: "Store / list-item name" }
42
+ search: { size: 16, weight: 600, use: "Search input text" }
43
+ body: { size: 14, weight: 400, lineHeight: 1.5, use: "Body / UI default" }
44
+ rating: { size: 13, weight: 700, use: "Rating value (#131517)" }
45
+ meta: { size: 13, weight: 400, use: "Category·location metadata (#6d7583)" }
46
+ badge: { size: 12, weight: 700, use: "Live waiting-team count (mint #1cfbce)" }
47
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 40 }
48
+ rounded: { xs: 4, sm: 8, md: 12, chip: 24, pill: 100, full: 9999 }
49
+ shadow:
50
+ none: "none"
51
+ components:
52
+ region-chip: { type: badge, bg: "#f0f4ff", fg: "#2e3137", radius: "24px", padding: "8px 16px", border: "1px solid rgba(0,0,0,0.04)", font: "14px / 400 Pretendard", use: "Region filter pill on hero (전국/서울/부산…) — the primary filled interactive element" }
53
+ waiting-badge: { type: badge, fg: "#1cfbce", font: "12px / 700 Pretendard", use: "Live waiting-team count (17팀) — signature mint real-time signal" }
54
+ search-input: { type: input, bg: "#ffffff", fg: "#2e3137", radius: "8px", font: "16px / 600 Pretendard", use: "Store search field, placeholder 매장을 검색해 보세요" }
55
+ store-card: { type: card, bg: "#ffffff", border: "1px solid #d7dbdf", radius: "8px", use: "Bordered content card / thumbnail container" }
56
+ warm-card: { type: card, bg: "#fff7eb", radius: "12px", use: "Warm-tint promo / feature media card" }
57
+ grey-card: { type: card, bg: "#f0f0f0", radius: "12px", use: "Neutral media / thumbnail card" }
58
+ store-row: { type: listItem, fg: "#2e3137", height: "146px", use: "TOP100 store list row — name 18px/700, meta #6d7583, rating #131517" }
59
+ components_harvested: true
60
+ ---
61
+
62
+ # Design System Inspiration of Tabling
63
+
64
+ ## 1. Visual Theme & Atmosphere
65
+
66
+ Tabling (테이블링) is Korea's leading restaurant remote-waiting and discovery app — its tagline "맛집 도착 전 앱으로 미리 줄서기" (line up in advance via the app before you arrive) — and its web surface reads like a bright, appetite-forward consumer product rather than a utility. The canvas is pure white (`#ffffff`) with content organized into airy, shadowless blocks separated by soft grey surfaces (`#f0f0f0`, `#f8f9fa`) and thin hairlines (`#dfe3e6`, `#d7dbdf`). Body text sits in a warm near-black slate (`#2e3137`) rather than pure black, while hero and section headings step up to pure black (`#000000`) for maximum appetite-grabbing contrast. Everything is set in **Pretendard**, the de-facto Korean product font, tuned for dense hangul legibility.
67
+
68
+ The brand's identity color is a hot, saturated **Tabling orange (`#ff5100`)** — the color of the logo and of a single emphasis headline ("더 많은 맛집 정보, 테이블링 앱에서 확인하세요!") set at 22px weight 700. Rather than painting the interface orange, Tabling holds it back so the eye reads it as "the brand" and "look here." The genuinely distinctive functional accent is a bright electric **mint (`#1cfbce`)**, used in exactly one place: the real-time waiting-team count ("17팀", "45팀") on ranking rows. That mint is the product's soul — it signals live, moving queue data at a glance, and nothing else on the page competes for that hue.
69
+
70
+ Depth is deliberately flat. Live inspection found `box-shadow: none` across the hero, nav, chips, cards, and list rows; separation comes entirely from background tints and hairlines, never elevation. Interactive chrome favors soft rounding — 24px region pills on a cool blue-tint (`#f0f4ff`), 12px media cards (some on a warm `#fff7eb` or `#ffece8` wash), and 8px bordered containers. The result is a fast, mobile-native, food-friendly aesthetic: clean whitespace, warm ink, one orange for brand, one mint for "it's happening now."
71
+
72
+ **Key Characteristics:**
73
+ - Pretendard everywhere — weight 700 for headings, weight 400 for body/UI (Korean-optimized)
74
+ - Tabling orange (`#ff5100`) reserved for the logo and a single emphasis headline — brand, not chrome
75
+ - Signature mint (`#1cfbce`) used exclusively for the live waiting-team count — the real-time signal
76
+ - Warm near-black slate (`#2e3137`) for body; pure black (`#000000`) for hero/section headings
77
+ - Flat, shadow-free system — separation via `#f0f0f0` / `#f8f9fa` surfaces and `#dfe3e6` / `#d7dbdf` hairlines
78
+ - Blue-tint region pills (`#f0f4ff`, 24px radius) as the primary filled interactive element
79
+ - Warm tint surfaces (`#fff7eb`, `#ffece8`) for promotional / appetite moments
80
+ - Cool-grey text ladder (`#505c81` → `#6d7583` → `#969fac`) plus a strong-ink `#131517` for ratings
81
+
82
+ ## 2. Color Palette & Roles
83
+
84
+ ### Brand
85
+ - **Tabling Orange** (`#ff5100`): The brand color — logo and the single emphasis headline. Hot, saturated, appetite-forward. Held back from general UI so it always reads as "brand / look here."
86
+ - **Warm Tint** (`#fff7eb`): Soft orange-cream surface for warm promo and feature media cards.
87
+ - **Warm Wash** (`#ffece8`): A pinker orange wash used behind the app-download promotion band.
88
+
89
+ ### Functional Accent
90
+ - **Waiting Mint** (`#1cfbce`): Bright electric mint reserved exclusively for the live waiting-team count ("17팀"). The product's real-time signal — used nowhere else.
91
+
92
+ ### Text & Ink
93
+ - **Ink Slate** (`#2e3137`): Primary body and UI text — a warm near-black, never pure black for reading.
94
+ - **Strong Ink** (`#131517`): Near-black used for high-emphasis values like the rating figure ("4.6").
95
+ - **Heading Black** (`#000000`): Pure black for hero and section headings, for maximum contrast.
96
+ - **Slate Blue** (`#505c81`): Secondary label / structural text.
97
+ - **Muted Slate** (`#6d7583`): Tertiary text — category·location metadata ("한식·청진동").
98
+ - **Faint Grey** (`#969fac`): Lowest-emphasis text — review counts, dividers, placeholders.
99
+
100
+ ### Surface & Border
101
+ - **Canvas White** (`#ffffff`): Page background and card surfaces.
102
+ - **Surface Grey** (`#f0f0f0`): Neutral media / thumbnail card background.
103
+ - **Surface Soft** (`#f8f9fa`): Lightest cool-grey section separation.
104
+ - **Chip Tint** (`#f0f4ff`): Cool blue-tint background for region filter pills.
105
+ - **Hairline** (`#dfe3e6`): Thin dividers and borders in the shadow-free system.
106
+ - **Border** (`#d7dbdf`): Slightly stronger 1px card outline.
107
+
108
+ ## 3. Typography Rules
109
+
110
+ ### Font Family
111
+ - **Display & Body**: `Pretendard` (with `Pretendard Fallback`) — used across the entire surface. Bold (700) for headings and store names; Regular (400) for body and metadata; a 600 mid-weight for the search field.
112
+
113
+ ### Hierarchy
114
+
115
+ | Role | Font | Size | Weight | Notes |
116
+ |------|------|------|--------|-------|
117
+ | Hero Heading | Pretendard | 24px | 700 | "오늘 뭐 먹지? 맛집 검색은 테이블링", pure black `#000000` |
118
+ | Emphasis Headline | Pretendard | 22px | 700 | Orange `#ff5100` app-promo headline |
119
+ | Section Heading | Pretendard | 20px | 700 | "지역별 인기 웨이팅 맛집", pure black |
120
+ | Store / List Title | Pretendard | 18px | 700 | Store names on TOP100, ink slate `#2e3137` |
121
+ | Search Input | Pretendard | 16px | 600 | Store search field text |
122
+ | Body / UI | Pretendard | 14px | 400 | Standard reading + nav + chip labels, `#2e3137` |
123
+ | Rating Value | Pretendard | 13px | 700 | "4.6" strong ink `#131517` |
124
+ | Metadata | Pretendard | 13px | 400 | "한식·청진동" muted `#6d7583` |
125
+ | Waiting Badge | Pretendard | 12px | 700 | "17팀" mint `#1cfbce` |
126
+
127
+ ### Principles
128
+ - **One family, weight-driven hierarchy**: Pretendard carries everything; the 700/400 split is the primary hierarchy signal, not size jumps or a second typeface.
129
+ - **Bold black for appetite, warm slate for reading**: Headings go pure black (`#000000`) to grab; body drops to warm `#2e3137` to read comfortably.
130
+ - **Numbers earn their own weight**: Ratings render at 700 in strong ink (`#131517`); the live team count renders at 700 in mint — data is treated as first-class typography.
131
+ - **Hangul-first sizing**: Body sits at 14px, generous for hangul legibility inside an information-dense discovery layout.
132
+
133
+ ## 4. Component Stylings
134
+
135
+ ### Buttons
136
+
137
+ **Region Filter Pill**
138
+ - Background: `#f0f4ff`
139
+ - Text: `#2e3137`
140
+ - Radius: 24px
141
+ - Padding: 8px 16px
142
+ - Border: 1px solid `rgba(0,0,0,0.04)`
143
+ - Font: 14px Pretendard weight 400
144
+ - Use: Region filter pills on the hero ("전국", "서울 남부", "부산") — the primary filled interactive element on web
145
+
146
+ ### Inputs
147
+
148
+ **Store Search**
149
+ - Background: `#ffffff`
150
+ - Text: `#2e3137`
151
+ - Radius: 8px
152
+ - Font: 16px Pretendard weight 600
153
+ - Use: Store search field, placeholder "매장을 검색해 보세요"
154
+
155
+ ### Cards & Containers
156
+
157
+ **Bordered Card**
158
+ - Background: `#ffffff`
159
+ - Border: 1px solid `#d7dbdf`
160
+ - Radius: 8px
161
+ - Use: Bordered content / thumbnail container (no shadow)
162
+
163
+ **Warm Media Card**
164
+ - Background: `#fff7eb`
165
+ - Radius: 12px
166
+ - Use: Warm-tint promo / feature media card
167
+
168
+ **Neutral Media Card**
169
+ - Background: `#f0f0f0`
170
+ - Radius: 12px
171
+ - Use: Neutral thumbnail / media card
172
+
173
+ ### Badges
174
+
175
+ **Waiting Count**
176
+ - Text: `#1cfbce`
177
+ - Font: 12px Pretendard weight 700
178
+ - Use: Live waiting-team count ("17팀") — the signature real-time mint signal
179
+
180
+ ### List Items
181
+
182
+ **TOP100 Store Row**
183
+ - Text: `#2e3137`
184
+ - Height: 146px
185
+ - Use: Ranking list row — store name 18px/700 `#2e3137`, category·location meta `#6d7583` at 13px, rating value `#131517` at 13px/700, review count `#969fac`, live waiting count in mint `#1cfbce`
186
+
187
+ ---
188
+
189
+ **Verified:** 2026-07-02
190
+ **Tier 1 sources:** https://www.tabling.co.kr/ , https://www.tabling.co.kr/top100 , https://techblog.tabling.co.kr/
191
+ **Tier 2 sources:** getdesign.md/tabling (HTTP 200 generic template — no Tabling entry) ; styles.refero.design/?q=tabling (no Tabling match — KR under-coverage)
192
+ **Conflicts unresolved:** none
193
+
194
+ ## 5. Layout Principles
195
+
196
+ ### Spacing System
197
+ - Base unit: 4px, scaling 4 / 8 / 12 / 16 / 24 / 40
198
+ - Hero container padding measured at 40px 16px 12px; region pills at 8px 16px
199
+ - Generous vertical rhythm between full-width bands
200
+
201
+ ### Grid & Container
202
+ - Centered single-column mobile-first layout
203
+ - Hero: black heading anchor over a search field and a horizontally wrapping row of category buttons
204
+ - Region filter pills arranged in a wrapping pill row beneath a section heading
205
+ - TOP100 ranking as a vertical list of ~146px rows (thumbnail + name + meta + live count)
206
+ - Feature bands alternate white (`#ffffff`) with tinted surfaces (`#f0f0f0`, `#f8f9fa`, warm `#fff7eb` / `#ffece8`)
207
+
208
+ ### Whitespace Philosophy
209
+ - **Airy over dense**: despite being a data-rich discovery product, the marketing surface breathes with generous section spacing.
210
+ - **Flat segmentation**: sections separate by background tint and hairlines (`#dfe3e6`, `#d7dbdf`), never shadow.
211
+ - **Pill rhythm**: repeated 24px region pills create a consistent horizontal cadence.
212
+
213
+ ### Border Radius Scale
214
+ - Extra-small (4px): fine inner elements
215
+ - Small (8px): bordered cards, search field, inputs
216
+ - Medium (12px): media / feature cards — the card workhorse
217
+ - Chip (24px): region filter pills
218
+ - Pill (100px) / Full (9999px): fully-rounded chips and avatars
219
+
220
+ ## 6. Depth & Elevation
221
+
222
+ | Level | Treatment | Use |
223
+ |-------|-----------|-----|
224
+ | Flat (Level 0) | No shadow | Page background, most surfaces |
225
+ | Tint (Level 1) | `#f0f0f0` / `#f8f9fa` background shift | Card / section separation |
226
+ | Warm Tint (Level 1) | `#fff7eb` / `#ffece8` background | Promo / appetite moments |
227
+ | Hairline (Level 2) | 1px solid `#dfe3e6` or `#d7dbdf` | Card outlines, dividers |
228
+
229
+ **Shadow Philosophy**: Tabling is a near-shadowless system. Live inspection found `box-shadow: none` across the hero, nav, region pills, cards, and ranking rows. Depth and grouping are communicated through flat tinted surfaces and thin hairlines, keeping the discovery UI feeling fast and mobile-native. When emphasis is needed the system reaches for color — the mint (`#1cfbce`) waiting count, the orange (`#ff5100`) brand mark, or a warm surface (`#fff7eb`) — never elevation.
230
+
231
+ ## 7. Do's and Don'ts
232
+
233
+ ### Do
234
+ - Use Pretendard throughout — weight 700 for headings/store names, weight 400 for body and metadata
235
+ - Reserve orange (`#ff5100`) for the brand mark and a single emphasis headline — keep it rare
236
+ - Use mint (`#1cfbce`) only for the live waiting-team count — it is the real-time signal
237
+ - Set hero and section headings in pure black (`#000000`) for appetite-grabbing contrast
238
+ - Use warm near-black slate (`#2e3137`) for body text, not pure black
239
+ - Separate sections with flat tints (`#f0f0f0`, `#f8f9fa`) and hairlines (`#dfe3e6`, `#d7dbdf`), never shadow
240
+ - Use 24px blue-tint pills (`#f0f4ff`) for region/filter chips and 12px radius for media cards
241
+ - Render ratings at 700 weight in strong ink (`#131517`) so numbers read as data
242
+
243
+ ### Don't
244
+ - Paint large UI areas orange — `#ff5100` is brand accent, not a background
245
+ - Reuse the mint (`#1cfbce`) for anything but the live waiting count — it dilutes the signal
246
+ - Add drop shadows for elevation — Tabling is a flat, shadow-free system
247
+ - Use pure black (`#000000`) for body copy — reserve warm slate `#2e3137`
248
+ - Introduce a second typeface — Pretendard owns display and body alike
249
+ - Use sharp square corners on chips or cards — geometry is softly rounded (8–24px)
250
+ - Mix in extra saturated hues — orange and mint are the only two accents
251
+
252
+ ## 8. Responsive Behavior
253
+
254
+ ### Breakpoints
255
+ | Name | Width | Key Changes |
256
+ |------|-------|-------------|
257
+ | Mobile | <640px | Single column, category buttons wrap, ranking rows stack |
258
+ | Tablet | 640-1024px | Moderate padding, 2-up feature cards |
259
+ | Desktop | 1024-1440px | Centered layout, wider media bands |
260
+
261
+ ### Touch Targets
262
+ - Region pills at generous 8px 16px padding for comfortable tapping
263
+ - Category buttons sit in a large ~72px hit block on the hero
264
+ - Search field spans the hero width for an unmistakable target
265
+
266
+ ### Collapsing Strategy
267
+ - Hero: heading + search + category row compress; category buttons wrap
268
+ - Region pill row: wraps / scrolls horizontally on narrow viewports
269
+ - TOP100 list: fixed vertical rows maintained across sizes
270
+ - Tinted / warm bands maintain full-width treatment
271
+
272
+ ### Image Behavior
273
+ - Restaurant thumbnails sit in 12px-radius cards, no shadow at any size
274
+ - Warm-tint promo cards (`#fff7eb`) keep their radius and flat treatment across breakpoints
275
+
276
+ ## 9. Agent Prompt Guide
277
+
278
+ ### Quick Color Reference
279
+ - Brand / logo: Tabling Orange (`#ff5100`)
280
+ - Live waiting signal: Waiting Mint (`#1cfbce`)
281
+ - Body text: Ink Slate (`#2e3137`)
282
+ - Rating / strong value: Strong Ink (`#131517`)
283
+ - Heading: Pure Black (`#000000`)
284
+ - Metadata: Muted Slate (`#6d7583`)
285
+ - Faint / review counts: Faint Grey (`#969fac`)
286
+ - Background: Canvas White (`#ffffff`)
287
+ - Surfaces: Grey (`#f0f0f0`), Soft (`#f8f9fa`), Warm (`#fff7eb`), Wash (`#ffece8`)
288
+ - Chip tint: Chip (`#f0f4ff`); Hairline (`#dfe3e6`); Border (`#d7dbdf`)
289
+
290
+ ### Example Component Prompts
291
+ - "Create a discovery hero on white background. Heading 24px Pretendard weight 700, pure black #000000: '오늘 뭐 먹지? 맛집 검색은 테이블링'. Below it a search field (white, 8px radius, 16px Pretendard weight 600) and a wrapping row of region pills: #f0f4ff background, #2e3137 text, 24px radius, 8px 16px padding, 14px Pretendard, 1px solid rgba(0,0,0,0.04) border. No shadow."
292
+ - "Build a restaurant ranking row (146px): store name 18px Pretendard weight 700 #2e3137; below it a live waiting badge '17팀' in 12px weight 700 mint #1cfbce; rating '4.6' 13px weight 700 #131517 with review count '(2,172)' in #969fac; category·location '한식·청진동' 13px weight 400 #6d7583."
293
+ - "Design a warm promo band: #ffece8 wash background, emphasis headline 22px Pretendard weight 700 in orange #ff5100. Media cards inside use #fff7eb or #f0f0f0 background with 12px radius, no shadow."
294
+
295
+ ### Iteration Guide
296
+ 1. Pretendard for everything; 700 for headings/names, 400 for body/meta, 600 for search
297
+ 2. Orange (`#ff5100`) is brand-only; mint (`#1cfbce`) is the live-waiting signal only
298
+ 3. No shadows — separate with `#f0f0f0`/`#f8f9fa` tints and `#dfe3e6`/`#d7dbdf` hairlines
299
+ 4. Rounded geometry — 24px pills, 12px cards, 8px bordered containers
300
+ 5. Body text is warm `#2e3137`; headings are pure `#000000`; ratings are strong `#131517`
301
+ 6. Keep the palette to two accents; let white and warm tints carry the appetite
302
+
303
+ ---
304
+
305
+ ## 10. Voice & Tone
306
+
307
+ Tabling's voice is **friendly, appetite-first, and practical** — a knowledgeable local friend who helps you decide where to eat and skips the line for you. The hero "오늘 뭐 먹지? 맛집 검색은 테이블링" ("What should we eat today? Restaurant search is Tabling") opens with the everyday question every diner asks, then answers it. Copy is casual-polite Korean, benefit-led, and concrete: it names the action (미리 줄서기 / line up in advance), the payoff (no waiting on-site), and the scope (전국 맛집 / restaurants nationwide).
308
+
309
+ | Context | Tone |
310
+ |---|---|
311
+ | Hero headline | Casual, question-led. "오늘 뭐 먹지? 맛집 검색은 테이블링." Warm, inviting. |
312
+ | Section headings | Plain and descriptive. "지역별 인기 웨이팅 맛집". |
313
+ | Feature / promo copy | Benefit-first, mild enthusiasm. "더 많은 맛집 정보, 테이블링 앱에서 확인하세요!" |
314
+ | Metadata | Terse, functional. "한식·청진동", "17팀", "4.6". |
315
+ | CTAs | Direct, low-pressure. "앱 다운로드", "미리 줄서기". |
316
+
317
+ **Voice samples (verbatim from live surfaces):**
318
+ - "오늘 뭐 먹지? 맛집 검색은 테이블링" — hero heading, 24px/700 pure black. *(verified live 2026-07-02)*
319
+ - "지역별 인기 웨이팅 맛집" — section heading, 20px/700. *(verified live 2026-07-02)*
320
+ - "더 많은 맛집 정보, 테이블링 앱에서 확인하세요!" — emphasis headline, 22px/700 orange `#ff5100`. *(verified live 2026-07-02)*
321
+ - Page title: "테이블링 | 맛집 도착 전 앱으로 미리 줄서기". *(verified live 2026-07-02)*
322
+
323
+ **Forbidden register**: fear-based urgency, hard-sell discounting language, undefined jargon, exclamation-stacked hype. One friendly exclamation on a promo headline is the ceiling.
324
+
325
+ ## 11. Brand Narrative
326
+
327
+ Tabling (테이블링) is a Korean restaurant remote-waiting and discovery service operated by Wad Inc. (와드). Its founding premise addresses a distinctly everyday Korean pain point: standing in a physical line outside a popular 맛집 (well-reviewed restaurant). Tabling lets diners join a restaurant's waiting queue remotely from the app — "맛집 도착 전 앱으로 미리 줄서기" (line up in advance before you arrive) — so time spent queuing on the pavement becomes time free to do anything else until a table is ready.
328
+
329
+ The product grew from a single remote-waiting feature into a broader restaurant-discovery platform: nationwide search by cuisine and region, popularity rankings ("전국 테이블링 순위 TOP 100"), ratings, and real-time waiting-team counts. The homepage frames the brand as the answer to the daily "오늘 뭐 먹지?" question — first help me choose, then get me seated without the wait.
330
+
331
+ What Tabling refuses, visible in its design: the heavy, coupon-cluttered chrome of legacy deal apps and the anxiety of on-site queuing. What it embraces: a bright, appetite-forward white surface; a single warm orange for the brand; and — most distinctively — a live mint (`#1cfbce`) waiting count that turns an invisible, stressful wait into a visible, moving number you can trust.
332
+
333
+ ## 12. Principles
334
+
335
+ 1. **Answer "what should we eat?" first.** Discovery precedes the queue. *UI implication:* lead with search, cuisine categories, and regional rankings before any waiting mechanics.
336
+ 2. **Make the wait visible.** The stress of queuing comes from not knowing how long. *UI implication:* the live team count renders in the one unmistakable mint (`#1cfbce`), never buried in body text.
337
+ 3. **One brand color, held back.** *UI implication:* reserve orange (`#ff5100`) for the logo and rare emphasis so it always reads as brand, never as decoration.
338
+ 4. **Flat and fast.** Mobile-native clarity beats decorative depth. *UI implication:* no shadows; separate with tint and hairlines; keep the page quick to scan while hungry.
339
+ 5. **Appetite through warmth, not clutter.** *UI implication:* warm tints (`#fff7eb`, `#ffece8`) and pure-black headings create appetite; avoid stacked badges, banners, and discount noise.
340
+
341
+ ## 13. Personas
342
+
343
+ *Personas below are fictional archetypes informed by publicly observable Tabling user segments (Korean diners avoiding on-site queues, groups deciding where to eat), not individual people.*
344
+
345
+ **김민준, 28, 서울.** Meets friends on weekends and hates arriving to a 40-minute line. Uses Tabling to join the queue on the subway ride over, watching the live team count drop. Chose the app because the wait finally felt knowable, not random.
346
+
347
+ **이서연, 33, 경기.** Plans family dinners and searches by region and cuisine before deciding. Values the TOP100 ranking and star ratings to avoid a bad pick. Trusts the calm, non-spammy interface over coupon-heavy rivals.
348
+
349
+ **박도윤, 41, 부산.** A frequent traveler who lands in a new city and needs a reliable local 맛집 fast. Relies on regional rankings and the real-time waiting signal to pick somewhere good that he can actually get into tonight.
350
+
351
+ ## 14. States
352
+
353
+ | State | Treatment |
354
+ |---|---|
355
+ | **Empty (no search results)** | White canvas. Single Ink Slate (`#2e3137`) line explaining no matching restaurants, with a path to broaden region/cuisine. No clutter. |
356
+ | **Empty (no saved places)** | Muted Slate (`#6d7583`) single line: nothing saved yet, plus a link back to discovery. Calm, honest. |
357
+ | **Loading (list fetch)** | Skeleton rows on `#f8f9fa` at final row dimensions (146px), 12px radius on thumbnails. Flat pulse — no shadow shimmer, consistent with the shadowless system. |
358
+ | **Loading (waiting count refresh)** | The mint (`#1cfbce`) count updates in place; previous value stays visible until the new one arrives. |
359
+ | **Error (search failed)** | Inline message in Ink Slate with a plain-language explanation and a retry. Never a bare "오류가 발생했습니다" — states the next step. |
360
+ | **Error (form validation)** | Field-level message below the input describing what is valid, not just "필수". |
361
+ | **Success (queue joined)** | Brief inline confirmation with the assigned waiting position and live team count; next-step detail linked below. No celebratory emoji. |
362
+ | **Skeleton** | `#f0f0f0` blocks at final dimensions, 12px radius, flat pulse. |
363
+ | **Disabled** | Faint Grey (`#969fac`) text on reduced-opacity surface; the mint and orange fade rather than turn grey to preserve brand read. |
364
+
365
+ ## 15. Motion & Easing
366
+
367
+ **Durations**:
368
+
369
+ | Token | Value | Use |
370
+ |---|---|---|
371
+ | `motion-fast` | 120ms | Hover, chip press, focus |
372
+ | `motion-standard` | 220ms | Card / list reveal, sheet, dropdown |
373
+ | `motion-slow` | 320ms | Page-level transitions |
374
+
375
+ **Easings**:
376
+
377
+ | Token | Curve | Use |
378
+ |---|---|---|
379
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving — cards, sheets, list rows |
380
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
381
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions |
382
+
383
+ **Motion rules**: Motion is functional and quiet, matching the flat, fast aesthetic. Region pills respond to press with a subtle scale/opacity shift; list rows fade-in from below at `motion-standard / ease-enter`. The one place motion carries meaning is the live waiting-team count — it updates with a brief mint highlight so a changing number reads as fresh, live data rather than a silent swap. No bounce or spring — a queue product signals steadiness. Under `prefers-reduced-motion: reduce`, all transitions collapse to instant and the waiting count updates without the highlight; the product remains fully functional.
384
+
385
+ <!--
386
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
387
+
388
+ Tier 1 live inspect (2026-07-02) via playwright getComputedStyle:
389
+ - https://www.tabling.co.kr/ — hero H2 "오늘 뭐 먹지? 맛집 검색은 테이블링" Pretendard 24px/700 rgb(0,0,0);
390
+ section H2 "지역별 인기 웨이팅 맛집" 20px/700; emphasis "더 많은 맛집 정보…" 22px/700 rgb(255,81,0) #ff5100;
391
+ region pills bg rgb(240,244,255) #f0f4ff radius 24px padding 8px 16px; body Pretendard 14px rgb(46,49,55) #2e3137;
392
+ box-shadow none across the surface; page title "테이블링 | 맛집 도착 전 앱으로 미리 줄서기".
393
+ - https://www.tabling.co.kr/top100 — "전국 테이블링 순위 TOP 100"; store name H2 18px/700 #2e3137;
394
+ live waiting count "17팀"/"45팀" 12px/700 rgb(28,251,206) #1cfbce; rating "4.6" 13px/700 rgb(19,21,23) #131517;
395
+ review count rgb(150,159,172) #969fac; meta "한식·청진동" 13px/400 rgb(109,117,131) #6d7583.
396
+ - https://techblog.tabling.co.kr/ — "테이블링 기술블로그" (Tabling official engineering blog; Medium-hosted, so
397
+ its computed styles are Medium's chrome, NOT Tabling's — cited as a brand-owned regional source only, no tokens
398
+ extracted from it).
399
+
400
+ Token-level claims (§1-9) are sourced from the two Tabling-designed surfaces (homepage + /top100) live inspect.
401
+
402
+ Voice samples (§10) are verbatim from the live homepage (hero H2, section H2, emphasis headline, page title).
403
+
404
+ Brand narrative (§11): Tabling (테이블링) is a Korean restaurant remote-waiting / discovery service operated by
405
+ Wad Inc. (와드). The remote-waiting positioning and nationwide discovery framing are taken from the live homepage
406
+ and /top100 surfaces; corporate-entity and founding details beyond the homepage are general public knowledge, not
407
+ directly quoted from a verified Tabling statement in this turn.
408
+
409
+ Personas (§13) are fictional archetypes informed by publicly observable Tabling user segments (Korean diners
410
+ avoiding on-site queues). Names are illustrative; they do not refer to real people.
411
+
412
+ Interpretive claims (e.g., "make the wait visible", "one brand color held back", "flat and fast as a rejection of
413
+ coupon-cluttered deal-app chrome") are editorial readings connecting Tabling's observed design to its positioning,
414
+ not directly sourced Tabling statements.
415
+ -->