oh-my-design-cli 1.8.7 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +1995 -38
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/alipay/DESIGN.md +179 -420
  71. package/web/references/apple/DESIGN.md +224 -498
  72. package/web/references/asleep/DESIGN.md +402 -0
  73. package/web/references/au/DESIGN.md +334 -0
  74. package/web/references/autopedia/DESIGN.md +382 -0
  75. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  76. package/web/references/baemin/DESIGN.md +332 -491
  77. package/web/references/banksalad/DESIGN.md +269 -180
  78. package/web/references/barogo/DESIGN.md +416 -0
  79. package/web/references/beusable/DESIGN.md +464 -0
  80. package/web/references/bilibili/DESIGN.md +206 -374
  81. package/web/references/bmw/DESIGN.md +162 -276
  82. package/web/references/brandi/DESIGN.md +184 -325
  83. package/web/references/catchtable/DESIGN.md +219 -264
  84. package/web/references/cgv/DESIGN.md +317 -0
  85. package/web/references/channeltalk/DESIGN.md +210 -336
  86. package/web/references/china-airlines/DESIGN.md +291 -0
  87. package/web/references/cjonstyle/DESIGN.md +453 -0
  88. package/web/references/class101/DESIGN.md +168 -387
  89. package/web/references/classum/DESIGN.md +228 -203
  90. package/web/references/claude/DESIGN.md +242 -479
  91. package/web/references/clay/DESIGN.md +179 -377
  92. package/web/references/clickhouse/DESIGN.md +254 -343
  93. package/web/references/cohere/DESIGN.md +214 -324
  94. package/web/references/coinone/DESIGN.md +199 -179
  95. package/web/references/corca/DESIGN.md +414 -0
  96. package/web/references/coupang/DESIGN.md +205 -475
  97. package/web/references/cursor/DESIGN.md +240 -381
  98. package/web/references/dabang/DESIGN.md +248 -213
  99. package/web/references/dable/DESIGN.md +431 -0
  100. package/web/references/datarize/DESIGN.md +217 -330
  101. package/web/references/dealicious/DESIGN.md +402 -0
  102. package/web/references/drdiary/DESIGN.md +404 -0
  103. package/web/references/elastic/DESIGN.md +238 -0
  104. package/web/references/elevenlabs/DESIGN.md +183 -321
  105. package/web/references/eslite/DESIGN.md +257 -0
  106. package/web/references/evaair/DESIGN.md +338 -0
  107. package/web/references/expo/DESIGN.md +238 -331
  108. package/web/references/familymart-tw/DESIGN.md +254 -0
  109. package/web/references/ferrari/DESIGN.md +160 -377
  110. package/web/references/figma/DESIGN.md +197 -451
  111. package/web/references/fitpet/DESIGN.md +445 -0
  112. package/web/references/flex/DESIGN.md +170 -253
  113. package/web/references/framer/DESIGN.md +197 -340
  114. package/web/references/freee/DESIGN.md +211 -533
  115. package/web/references/friendliai/DESIGN.md +431 -0
  116. package/web/references/frip/DESIGN.md +440 -0
  117. package/web/references/gangnamunni/DESIGN.md +154 -591
  118. package/web/references/gaudiolab/DESIGN.md +414 -0
  119. package/web/references/google/DESIGN.md +290 -398
  120. package/web/references/hashicorp/DESIGN.md +273 -318
  121. package/web/references/heydealer/DESIGN.md +429 -0
  122. package/web/references/humanscape/DESIGN.md +433 -0
  123. package/web/references/hyundai/DESIGN.md +158 -368
  124. package/web/references/hyundaicard/DESIGN.md +171 -121
  125. package/web/references/ibm/DESIGN.md +227 -378
  126. package/web/references/idus/DESIGN.md +450 -0
  127. package/web/references/igaworks/DESIGN.md +437 -0
  128. package/web/references/inflearn/DESIGN.md +221 -366
  129. package/web/references/intuit/DESIGN.md +244 -0
  130. package/web/references/jandi/DESIGN.md +191 -291
  131. package/web/references/jobplanet/DESIGN.md +415 -0
  132. package/web/references/kakao/DESIGN.md +287 -475
  133. package/web/references/kakaobank/DESIGN.md +220 -521
  134. package/web/references/kakaogames/DESIGN.md +220 -0
  135. package/web/references/kakaopay/DESIGN.md +207 -526
  136. package/web/references/karrot/DESIGN.md +227 -251
  137. package/web/references/kb-kookmin/DESIGN.md +308 -0
  138. package/web/references/kbank/DESIGN.md +220 -175
  139. package/web/references/kmong/DESIGN.md +281 -356
  140. package/web/references/krds/DESIGN.md +245 -19
  141. package/web/references/kream/DESIGN.md +224 -359
  142. package/web/references/kurly/DESIGN.md +211 -533
  143. package/web/references/lamborghini/DESIGN.md +198 -360
  144. package/web/references/lguplus/DESIGN.md +259 -0
  145. package/web/references/likelion/DESIGN.md +283 -0
  146. package/web/references/line/DESIGN.md +396 -355
  147. package/web/references/linear.app/DESIGN.md +209 -562
  148. package/web/references/lotteon/DESIGN.md +386 -0
  149. package/web/references/lovable/DESIGN.md +255 -349
  150. package/web/references/makinarocks/DESIGN.md +149 -349
  151. package/web/references/maum-ai/DESIGN.md +423 -0
  152. package/web/references/medibloc/DESIGN.md +425 -0
  153. package/web/references/megabox/DESIGN.md +232 -0
  154. package/web/references/mercari/DESIGN.md +217 -434
  155. package/web/references/microsoft/DESIGN.md +234 -388
  156. package/web/references/mildang/DESIGN.md +411 -0
  157. package/web/references/millie/DESIGN.md +183 -504
  158. package/web/references/minimax/DESIGN.md +264 -322
  159. package/web/references/miricanvas/DESIGN.md +182 -355
  160. package/web/references/miro/DESIGN.md +234 -232
  161. package/web/references/mistral.ai/DESIGN.md +231 -314
  162. package/web/references/mixi/DESIGN.md +234 -0
  163. package/web/references/moin/DESIGN.md +445 -0
  164. package/web/references/mongodb/DESIGN.md +219 -316
  165. package/web/references/musinsa/DESIGN.md +184 -510
  166. package/web/references/mynavi/DESIGN.md +242 -0
  167. package/web/references/myrealtrip/DESIGN.md +169 -406
  168. package/web/references/naver/DESIGN.md +328 -499
  169. package/web/references/naverwebtoon/DESIGN.md +172 -395
  170. package/web/references/nhn/DESIGN.md +169 -346
  171. package/web/references/nhncloud/DESIGN.md +185 -123
  172. package/web/references/notion/DESIGN.md +271 -475
  173. package/web/references/nrise/DESIGN.md +417 -0
  174. package/web/references/ohouse/DESIGN.md +210 -549
  175. package/web/references/oliveyoung/DESIGN.md +217 -326
  176. package/web/references/ollama/DESIGN.md +241 -308
  177. package/web/references/onestore/DESIGN.md +248 -0
  178. package/web/references/palantir/DESIGN.md +256 -0
  179. package/web/references/panasonic/DESIGN.md +276 -0
  180. package/web/references/patternfly/DESIGN.md +259 -0
  181. package/web/references/payhere/DESIGN.md +438 -0
  182. package/web/references/pega/DESIGN.md +262 -0
  183. package/web/references/peoplefund/DESIGN.md +431 -0
  184. package/web/references/petfriends/DESIGN.md +428 -0
  185. package/web/references/pinkfong/DESIGN.md +199 -367
  186. package/web/references/pinterest/DESIGN.md +258 -308
  187. package/web/references/poya/DESIGN.md +286 -0
  188. package/web/references/pozalabs/DESIGN.md +438 -0
  189. package/web/references/protopie/DESIGN.md +419 -0
  190. package/web/references/qraft/DESIGN.md +448 -0
  191. package/web/references/quotabook/DESIGN.md +449 -0
  192. package/web/references/recruit/DESIGN.md +247 -0
  193. package/web/references/remember/DESIGN.md +202 -396
  194. package/web/references/resend/DESIGN.md +274 -348
  195. package/web/references/sakura-internet/DESIGN.md +269 -0
  196. package/web/references/samsung/DESIGN.md +157 -359
  197. package/web/references/sandoll/DESIGN.md +445 -0
  198. package/web/references/sanity/DESIGN.md +241 -375
  199. package/web/references/scatterlab/DESIGN.md +412 -0
  200. package/web/references/selectstar/DESIGN.md +439 -0
  201. package/web/references/servicenow/DESIGN.md +289 -0
  202. package/web/references/shinhanbank/DESIGN.md +161 -341
  203. package/web/references/shinhancard/DESIGN.md +208 -319
  204. package/web/references/sionic/DESIGN.md +454 -0
  205. package/web/references/sktelecom/DESIGN.md +310 -0
  206. package/web/references/socar/DESIGN.md +125 -32
  207. package/web/references/softbank/DESIGN.md +231 -0
  208. package/web/references/sony/DESIGN.md +234 -0
  209. package/web/references/soop/DESIGN.md +261 -0
  210. package/web/references/spacex/DESIGN.md +184 -323
  211. package/web/references/spotify/DESIGN.md +253 -394
  212. package/web/references/squeezebits/DESIGN.md +441 -0
  213. package/web/references/stayfolio/DESIGN.md +422 -0
  214. package/web/references/stripe/DESIGN.md +212 -491
  215. package/web/references/supabase/DESIGN.md +244 -316
  216. package/web/references/tabling/DESIGN.md +415 -0
  217. package/web/references/taishinbank/DESIGN.md +243 -0
  218. package/web/references/teamlab/DESIGN.md +240 -0
  219. package/web/references/teamsparta/DESIGN.md +472 -0
  220. package/web/references/tellingme/DESIGN.md +392 -0
  221. package/web/references/tesla/DESIGN.md +244 -427
  222. package/web/references/thsr/DESIGN.md +284 -0
  223. package/web/references/thumbtack/DESIGN.md +302 -0
  224. package/web/references/together.ai/DESIGN.md +257 -304
  225. package/web/references/toss/DESIGN.md +251 -593
  226. package/web/references/toss-securities/DESIGN.md +255 -178
  227. package/web/references/tossbank/DESIGN.md +195 -491
  228. package/web/references/toyota/DESIGN.md +238 -0
  229. package/web/references/tving/DESIGN.md +197 -245
  230. package/web/references/typed/DESIGN.md +413 -0
  231. package/web/references/uber/DESIGN.md +256 -333
  232. package/web/references/udn/DESIGN.md +250 -0
  233. package/web/references/upbit/DESIGN.md +145 -256
  234. package/web/references/upstage/DESIGN.md +211 -204
  235. package/web/references/uswds/DESIGN.md +287 -0
  236. package/web/references/vercel/DESIGN.md +236 -440
  237. package/web/references/wanted/DESIGN.md +215 -487
  238. package/web/references/wise/DESIGN.md +223 -231
  239. package/web/references/wisetracker/DESIGN.md +462 -0
  240. package/web/references/wooribank/DESIGN.md +245 -0
  241. package/web/references/yanolja/DESIGN.md +250 -419
  242. package/web/references/yeogiotte/DESIGN.md +235 -418
  243. package/web/references/zapier/DESIGN.md +256 -377
  244. package/web/references/zendesk/DESIGN.md +288 -0
  245. package/web/references/zigzag/DESIGN.md +200 -621
  246. package/dist/install-skills-7UUDOLG2.js +0 -734
  247. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -8,349 +8,266 @@ primary_color: "#000000"
8
8
  logo:
9
9
  type: favicon
10
10
  slug: "https://www.google.com/s2/favicons?domain=flex.team&sz=256"
11
- verified: "2026-05-14"
11
+ verified: "2026-07-13"
12
12
  omd: "0.1"
13
+ verification_v2:
14
+ schema: 2
15
+ checked: "2026-07-13"
16
+ surfaces:
17
+ - { id: home, kind: marketing, url: "https://flex.team/", inspected: "2026-07-13" }
18
+ - { id: about, kind: corporate-marketing, url: "https://flex.team/about", inspected: "2026-07-13" }
19
+ sources:
20
+ - { id: home-live, kind: product-surface, url: "https://flex.team/", captured: "2026-07-13" }
21
+ - { id: about-live, kind: product-surface, url: "https://flex.team/about", captured: "2026-07-13" }
22
+ conflicts: []
23
+ claims:
24
+ "tokens.colors.canvas": &home { surface_id: home, source_id: home-live, method: live-inspect, captured: "2026-07-13" }
25
+ "tokens.colors.ink": *home
26
+ "tokens.colors.on-dark": *home
27
+ "tokens.colors.action-lime": *home
28
+ "tokens.colors.announcement-orange": *home
29
+ "tokens.typography.family.ui": *home
30
+ "tokens.typography.about-display.size": &about { surface_id: about, source_id: about-live, method: live-inspect, captured: "2026-07-13" }
31
+ "tokens.typography.about-display.weight": *about
32
+ "tokens.typography.about-display.lineHeight": *about
33
+ "tokens.typography.about-display.use": *about
34
+ "tokens.typography.about-display-inverse.size": *about
35
+ "tokens.typography.about-display-inverse.weight": *about
36
+ "tokens.typography.about-display-inverse.lineHeight": *about
37
+ "tokens.typography.about-display-inverse.use": *about
38
+ "tokens.typography.body-emphasis.size": *about
39
+ "tokens.typography.body-emphasis.weight": *about
40
+ "tokens.typography.body-emphasis.lineHeight": *about
41
+ "tokens.typography.body-emphasis.use": *about
42
+ "tokens.typography.navigation.size": *about
43
+ "tokens.typography.navigation.weight": *about
44
+ "tokens.typography.navigation.lineHeight": *about
45
+ "tokens.typography.navigation.use": *about
46
+ "tokens.spacing.compact": *about
47
+ "tokens.spacing.nav-action-x": *about
48
+ "tokens.spacing.cta-y": *home
49
+ "tokens.spacing.cta-x": *home
50
+ "tokens.rounded.nav": *about
51
+ "tokens.rounded.badge": *home
52
+ "tokens.rounded.cta": *home
53
+ "tokens.components.relationship-story-card.type": *home
54
+ "tokens.components.relationship-story-card.bg": *home
55
+ "tokens.components.relationship-story-card.border": *home
56
+ "tokens.components.relationship-story-card.radius": *home
57
+ "tokens.components.relationship-story-card.padding": *home
58
+ "tokens.components.relationship-story-card.use": *home
13
59
  tokens:
14
- source: prose-derived
15
- extracted: "2026-06-09"
60
+ source: reconciled
61
+ extracted: "2026-07-13"
62
+ components_harvested: true
16
63
  colors:
17
- ink: "#1d1d1f"
18
64
  canvas: "#ffffff"
19
- page-dark: "#000000"
20
- card-graphite: "#2d3338"
21
- soft-white: "#fdfdfd"
65
+ ink: "#111111"
66
+ on-dark: "#ffffff"
67
+ action-lime: "#00ff44"
68
+ announcement-orange: "#ff4d00"
22
69
  typography:
23
- family: { sans: "Pretendard Variable", mono: "Pretendard Variable" }
24
- display: { size: 52, weight: 700, lineHeight: 1.20, tracking: -1.56, use: "In-page h2 argument display" }
25
- hero-h1: { size: 28, weight: 700, lineHeight: 1.00, use: "Compact hero banner h1" }
26
- card: { size: 17, weight: 600, lineHeight: 1.53, use: "Manifesto card body" }
27
- pill: { size: 15, weight: 600, lineHeight: 1.40, use: "Service pill / button label" }
28
- meta: { size: 14, weight: 500, lineHeight: 1.00, use: "Meta / nav text" }
29
- spacing: { xs: 6, sm: 8, md: 12, base: 16, lg: 30, xl: 60, section: 96 }
30
- rounded: { sm: 8, md: 10, lg: 16, full: 9999 }
31
- shadow:
32
- halo: "rgba(0,0,0,0.06) 0px 8px 20px -4px"
33
- ring-active: "rgba(29,29,31,0.24) 0px 0px 0px 1px inset"
34
- ring-inactive: "rgba(29,29,31,0.10) 0px 0px 0px 1px inset"
70
+ family: { ui: "Pretendard Variable" }
71
+ about-display: { size: 96, weight: 600, lineHeight: 1.00, use: "About-page relationship statement" }
72
+ about-display-inverse: { size: 80, weight: 600, lineHeight: 1.20, use: "Dark About-page statement" }
73
+ body-emphasis: { size: 17, weight: 600, lineHeight: 1.55, use: "About-page explanatory copy" }
74
+ navigation: { size: 14, weight: 700, lineHeight: 1.00, use: "Global navigation controls" }
75
+ spacing: { compact: 8, nav-action-x: 14, cta-y: 30, cta-x: 44 }
76
+ rounded: { nav: 8, badge: 18, cta: 24 }
35
77
  components:
36
- pill-active: { type: tab, bg: "#ffffff", fg: "#1d1d1f", radius: "10px", padding: "9px 12px", font: "15px / 700", active: "rgba(29,29,31,0.24) inset ring", use: "Currently-selected service category in SERVICES filter row" }
37
- pill-inactive: { type: tab, bg: "#ffffff", fg: "#1d1d1f", radius: "10px", padding: "9px 12px", font: "15px / 600", use: "Other tabs in the SERVICES row" }
38
- header-cta: { type: button, bg: "#000000", fg: "#ffffff", radius: "8px", padding: "8px 6px 8px 8px", font: "14px / 700", use: "Top navigation items over dark hero" }
39
- card-manifesto: { type: card, bg: "#2d3338", fg: "#fdfdfd", radius: "16px", padding: "30px", font: "17px / 600", use: "Three-beat narrative cards in main-intro" }
40
- components_harvested: true
78
+ relationship-story-card: { type: card, bg: "rgba(255,255,255,0.04)", border: "1px solid rgba(255,255,255,0.08)", radius: "16px", padding: "24px", use: "Non-interactive relationship-data story item observed on the public home surface" }
41
79
  ---
42
80
 
43
81
  # flex — Design Reference
44
82
 
45
- > **모든 HR 데이터, flex 하나로.** (Observed on flex.team, 2026-05-14)
83
+ > **Relations Driven AX.** (Observed on `flex.team`, 2026-07-13)
46
84
  >
47
- > Korean HR SaaS reference: dark-mode authority hero light-mode manifesto cards service pill navigation. Pretendard 52px display with -1.56px tracking. Quietly confident; one-color discipline (graphite + ink); no rainbow accents.
85
+ > Korean HR-data and AI platform reference: a black-and-white information field punctuated by an acid-lime conversion action. The public marketing surface frames AI as an understanding of organizational relationships and context, while the corporate About surface makes that same thesis concrete through very large editorial type and stark light/dark transitions.
48
86
 
49
87
  ---
50
88
 
51
89
  ## 1. Visual Theme & Atmosphere
52
90
 
53
- **flex** is a Korean HR SaaS targeting mid-market and enterprise teams (founded 2019-05, Seongnam HQ, Series B, ~213 employees as of 2026-03). The product unifies employee management, attendance, contracts, workflow, payroll, and HR analytics. The 2024 site refresh ("l2024-c-*" class system observed live) signaled a deliberate pivot upmarketaway from the playful color-block aesthetic of early Korean SaaS toward a quieter, Apple-adjacent surface: black hero, white manifesto, dark graphite cards (#2D3338).
91
+ flex is a Korean company building an HR-data-based AI platform for organizations: its public product language spans people and organization management, performance, payroll and benefits, and operational workflows. Its current expression is not the earlier “one ink / graphite card” system. The 2026 public site leads with **Relations Driven AX**—the claim that AI becomes useful when it understands the relationships and context inside an organizationand turns that idea into a high-contrast, editorial marketing system. Black or white fields establish the serious enterprise register; `#00FF44` appears as a deliberately loud action color rather than a general-purpose semantic palette. The About page gives the brand’s “Human Relations” reinterpretation of HR room to breathe in 80–96px type, then alternates dark and light narrative sections. This reference describes those current public marketing and corporate surfaces only; it does not treat the separate help center as product UI evidence.
54
92
 
55
- What's design-noteworthy:
93
+ What is distinctive in the observed surfaces:
56
94
 
57
- - **One ink color**: nearly every text element resolves to `#1D1D1F` or one of its alpha variants (`0.96`, `0.72`, `0.04`). No semantic color soup.
58
- - **52px display with -1.56px letter-spacing**: tight, confident, very deliberate (Pretendard Variable handles both hangul and latin at this weight).
59
- - **Pill nav with inset ring shadows**: instead of borders. Active pill uses `rgba(29,29,31,0.04)` fill + `rgba(29,29,31,0.24)` 1px inset ring; inactive uses white fill + `0.10` ring. No filled blue/primary.
60
- - **Manifesto cards on white**: `#2D3338` graphite cards, 16px radius, 30px padding, `0 8px 20px -4px rgba(0,0,0,0.06)` halo. Three-card narrative beat ("문제 해결 → 효과").
61
-
62
- ---
95
+ - **Relationship data as the visual argument.** Large, plain-spoken statements carry the thesis before any UI treatment; application screenshots serve the story rather than becoming generic SaaS decoration.
96
+ - **Hard contrast, selective lime.** `#111111`/white carry most chrome and text, while `#00FF44` is reserved for primary conversion links.
97
+ - **Editorial scale plus dense enterprise copy.** About-page statements reach 96px, then resolve into 17px/600 explanatory copy and 15px supporting copy.
98
+ - **Rounded actions rather than rounded everything.** Global nav actions use 8px corners; campaign CTAs use 24px pills. No universal card-radius rule is asserted.
63
99
 
64
100
  ## 2. Layout & Grid
65
101
 
66
- - **Container width**: 1280px viewport observed; section content clamps near 1024px (h1/h2 widths).
67
- - **Outer gutter**: `60px` left/right (`padding: 160px 60px` on hero, `172px 60px 96px` on service section).
68
- - **Vertical rhythm**: hero `860px` total height; service block `993px`; sections breathe with 96-172px top padding.
69
- - **Card grid**: three side-by-side cards inside `main-intro` (~315 / 349 / 335px widths visibly asymmetric on purpose, not equal-thirds).
70
- - **Header**: `117px` tall, dark theme over hero, fades to light on light sections (`.l2024_dark` / `.l2024_light` toggle).
71
-
72
- ---
102
+ - **Global announcement strip:** the two captured public surfaces begin with a 48px-high announcement link; it uses 60px horizontal padding at the 1440px collector viewport.
103
+ - **Global navigation:** on `/about`, the captured menu controls use 8px radius and 8px internal padding; the two conversion actions use 8px 14px padding.
104
+ - **About-page editorial hierarchy:** measured headline styles include 96px/600/96px on a light field and 80px/600/96px on a dark field. These are surface-local display treatments, not a claimed product-app type scale.
105
+ - **Conversion action:** the observed lime action is a 24px-radius link with 30px 44px padding and 17px/700 text on both captured public surfaces.
106
+ - **Boundary:** no container maximum, page section height, or responsive breakpoint is promoted because the supplied 1440×900 capture does not establish those values across viewports.
73
107
 
74
108
  ## 3. Color & Typography
75
109
 
76
- ### Color tokens (from `tokens.json`)
77
-
78
- **Ink scale (single hue, alpha-stepped):**
79
- - `#1D1D1F` — primary text on light
80
- - `rgba(29,29,31,0.96)` — h2 (slight softening)
81
- - `rgba(29,29,31,0.72)` — secondary copy
82
- - `rgba(29,29,31,0.04)` — active pill fill / ghost button
83
- - `rgba(29,29,31,0.10)` — inactive pill ring
84
- - `rgba(29,29,31,0.24)` — active pill ring
85
-
86
- **Surfaces:**
87
- - `#FFFFFF` — light page
88
- - `#000000` — hero pageDark
89
- - `#2D3338` — graphite card (manifesto)
90
- - `#FDFDFD` — soft white (card text)
110
+ ### Color tokens
91
111
 
92
- **On-dark:**
93
- - `#FFFFFF` text
94
- - `rgba(255,255,255,0.48)`muted on-dark
112
+ - `#000000` — public-surface black field and the catalog primary color
113
+ - `#111111` — light-surface navigation text and solid navigation action background
114
+ - `#FFFFFF` — light canvas, on-dark text, and outline navigation action background
115
+ - `#00FF44` — primary marketing conversion action on home and About
116
+ - `#FF4D00` — compact “new” badge in the announcement strip
117
+ - `rgba(17,17,17,0.84)` — measured dark-on-light long-form emphasis
118
+ - `rgba(255,255,255,0.84)` and `rgba(255,255,255,0.48)` — measured on-dark supporting copy and label tones
95
119
 
96
- No blue. No green. No yellow. flex's 2024 refresh deliberately deletes the SaaS accent-color habit.
120
+ The lime and orange are observed marketing accents with separate purposes; neither is promoted as a product-app status color.
97
121
 
98
- ### Typography
122
+ ### Typography evidence classes
99
123
 
100
- - **Family**: `Pretendard Variable` (variable axis) with full system fallback chain.
101
- - **Weights observed live**: 500, 600, 700.
102
- - **Display h2**: `52px / 62.4px line-height / -1.56px letter-spacing / 700`. The negative tracking is the visual signature.
103
- - **Card body**: `17px / 26px / 600`.
104
- - **Pill / button**: `15px / 21px / 600-700`.
105
- - **Meta / nav**: `14px / 14px / 500`.
106
- - **Hero h1**: `28px / 28px / 700` — note the *compact* h1 (smaller than h2 below). flex inverts the usual hierarchy — the hero is a banner, the in-page h2 is the argument.
107
-
108
- ---
124
+ - **Live loaded Flex webfont:** both supplied public surfaces resolve visible text to `"Pretendard Variable", Pretendard, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif`. The collector classifies `Pretendard Variable` as loaded/high-confidence, records 351 visible uses across headings, body, navigation, badges, and actions, and resolves 92 Flex-hosted subset URLs under `static.flex.team`. The machine family token therefore names only `Pretendard Variable`.
125
+ - **Declared but unused fallback:** static `Pretendard` is present in declarations but has zero observed visible uses. `system-ui` appears once as an operating-system stack. Neither is promoted as another Flex UI-family token or rendered as a substitute specimen.
126
+ - **Measured public hierarchy:** `/about` includes 96px/600/96px and 80px/600/96px display samples, 17px/600/24.65–26.35px body-emphasis samples, and 14px/700 global-navigation controls. These sizes are retained as measured styles without assigning a family token.
127
+ - **Documentation chrome:** `guide.flex.team` is a separate Help Center surface. It was inspected only to classify the source domain and contributes no color, typography, or component token here.
109
128
 
110
129
  ## 4. Components
111
130
 
112
- ### Button primary pill (active service tab)
131
+ ### Global navigation action outline
113
132
 
114
- **Active**
115
- - Background: `rgba(29, 29, 31, 0.04)`
116
- - Text: `#1D1D1F`
117
- - Border: none
118
- - Shadow: `rgba(29, 29, 31, 0.24) 0px 0px 0px 1px inset`
119
- - Radius: `10px`
120
- - Padding: `9px 12px`
121
- - Height: `39px`
122
- - Font: `15px / 21px / 700 / Pretendard Variable`
123
- - Use: currently-selected service category in the SERVICES filter row
124
-
125
- **Inactive**
133
+ **Light-surface secondary action**
126
134
  - Background: `#FFFFFF`
127
- - Text: `#1D1D1F`
128
- - Border: none
129
- - Shadow: `rgba(29, 29, 31, 0.10) 0px 0px 0px 1px inset`
130
- - Radius: `10px`
131
- - Padding: `9px 12px`
132
- - Height: `39px`
133
- - Font: `15px / 21px / 600 / Pretendard Variable`
134
- - Use: other tabs in the same row (rest of SERVICES)
135
-
136
- ### Button — header CTA (gnb)
137
-
138
- **Default (transparent over dark hero)**
139
- - Background: `rgba(0, 0, 0, 0)`
140
- - Text: `#FFFFFF`
141
- - Border: none
135
+ - Text: `#111111`
136
+ - Border: `1px solid #111111`
142
137
  - Radius: `8px`
143
- - Padding: `8px 6px 8px 8px`
144
- - Height: `33px`
145
- - Font: `14px / normal / 700 / Pretendard Variable`
146
- - Use: top navigation items (서비스 / 리소스 / 플렉스팀 채용 / 로그인)
138
+ - Padding: `8px 14px`
139
+ - Font: `13px / 700`
140
+ - Use: `/about` light global navigation secondary conversion action; evidence `surface-2::[data-omd-capture="8"]`
147
141
 
148
- ### Card manifesto (dark on light)
142
+ ### Global navigation action solid
149
143
 
150
- **Default**
151
- - Background: `#2D3338`
152
- - Text: `#FDFDFD`
153
- - Border: none
154
- - Radius: `16px`
155
- - Padding: `30px`
156
- - Shadow: `rgba(0, 0, 0, 0.12) 0px 0px 0px 0.5px, rgba(0, 0, 0, 0.06) 0px 8px 20px -4px`
157
- - Height: `380px` (fixed in observed grid)
158
- - Font: `17px / 26px / 600 / Pretendard Variable`
159
- - Use: three-beat narrative cards in `main-intro` section ("문제 → 해결 → 효과")
160
-
161
- ### Section — hero (dark)
162
-
163
- **Default**
164
- - Background: `#000000`
144
+ **Light-surface primary action**
145
+ - Background: `#111111`
165
146
  - Text: `#FFFFFF`
166
- - Padding: `160px 60px`
167
- - Height: `860px` (observed)
168
- - Use: top of marketing landing; carries h1 + subhead + primary CTA
147
+ - Radius: `8px`
148
+ - Padding: `8px 14px`
149
+ - Font: `13px / 700`
150
+ - Use: `/about` light global navigation primary conversion action; evidence `surface-2::[data-omd-capture="9"]`
169
151
 
170
- ### Sectionmanifesto (light)
152
+ ### Marketing CTA lime
171
153
 
172
- **Default**
173
- - Background: `#FFFFFF`
174
- - Text: `#1D1D1F`
175
- - Padding: `240px 60px 96px`
176
- - Height: `877px` (observed)
177
- - Use: directly under hero; carries the company's "why" + three dark cards
154
+ **Primary conversion**
155
+ - Background: `#00FF44`
156
+ - Text: `#111111`
157
+ - Radius: `24px`
158
+ - Padding: `30px 44px`
159
+ - Font: `17px / 700`
160
+ - Use: high-emphasis marketing conversion link on home and `/about`; evidence `home::[data-omd-capture="13"]`, `surface-2::[data-omd-capture="25"]`
178
161
 
179
- ### Headerpage chrome
162
+ ### Announcement badge new
180
163
 
181
- **Default (dark theme over hero)**
182
- - Background: `rgba(0, 0, 0, 0)` (transparent over black hero)
183
- - Text: `#FFFFFF`
184
- - Border: none
185
- - Height: `117px`
186
- - Nav padding: `0px 60px`
187
- - Use: persistent top bar; theme flips light/dark via `.l2024_dark` / `.l2024_light` class on the parent section
164
+ **Default**
165
+ - Background: `#FF4D00`
166
+ - Text: `#000000`
167
+ - Radius: `18px`
168
+ - Padding: `0px 8px`
169
+ - Font: `12px / 700`
170
+ - Use: compact “new” label in the public announcement strip; evidence `home::span`, `surface-2::span`
171
+
172
+ Only the defaults above are documented. The evidence bundle reports no interaction coverage, so hover, pressed, focus, disabled, menu, dialog, and form states are intentionally omitted.
188
173
 
189
174
  ---
190
175
 
191
- **Verified:** 2026-05-14
192
- **Tier 1 sources:** `https://flex.team/` live CDP inspect (40 samples `assets/_reference/.live-inspect-proof.json` curates 9), `https://thevc.kr/Flex` (corporate facts)
193
- **Tier 2 sources:** `https://getdesign.md/flex` no entry; `https://styles.refero.design/?q=flex.team` no results (KR-coverage gap, same pattern as 2026-05-13 KR-10 batch)
176
+ **Verified:** 2026-07-13
177
+ **Tier 1 sources:** `https://flex.team/` (marketing surface), `https://flex.team/about` (corporate/marketing surface), `https://guide.flex.team/en/` (documentation-domain classification only), `https://github.com/orioncactus/pretendard/blob/main/packages/pretendard/docs/en/README.md` and `https://github.com/orioncactus/pretendard/blob/main/LICENSE` (font availability and licence boundary only)
178
+ **Tier 2 sources:** `https://getdesign.md/flex` (attempted; safe-open failure/no usable record), `https://styles.refero.design/?q=flex` (attempted; safe-open failure/no usable record), web search for both names (no Flex Team design record returned)
194
179
  **Conflicts unresolved:** none
195
180
 
181
+ The legacy `#1D1D1F`/graphite/pill-service-card claims conflict with the supplied 2026 live public capture and were removed; no usable Tier 2 token record was available for a second comparison.
182
+
196
183
  ---
197
184
 
198
185
  ## 5. Iconography
199
186
 
200
- Site uses primarily inline SVG for service-category pictograms and arrow glyphs (`→` in CTA "flex 도입 문의하기 →"). No icon-set library brand signal observed in live capture. Hairline weight, monochrome ink-color matched to surrounding text — no two-tone or color-fill icons.
201
-
202
- ---
187
+ The captured public surfaces expose inline brand/product imagery and ordinary navigation affordances, but no named icon library or reusable icon-size/weight rule. No icon token is promoted.
203
188
 
204
189
  ## 6. Imagery & Illustration
205
190
 
206
- - **Product UI snapshots** dominate downstream sections (employee directory, attendance calendar, contract flow). Captured at 1:1 product fidelity no faux-3D, no isometric.
207
- - **No stock photography** of "diverse smiling team" the page leans on UI screenshots and ambient gradients instead.
208
- - **Manifesto cards are pure type** no illustration, no icon, no image inside the dark cards. The graphite-on-white card itself is the visual.
209
-
210
- ---
191
+ - The home page uses application screenshots to demonstrate contextual AI answers, organizational signals, and connected-work-system data; these are marketing illustrations of the platform, not a component library.
192
+ - The About page is primarily typographic and narrative. Its light/dark editorial fields frame the company story rather than adding a stock-photo visual language.
193
+ - No imagery crop ratio, overlay treatment, or product-screen frame is promoted because the supplied evidence does not identify a repeatable image component.
211
194
 
212
195
  ## 7. Motion
213
196
 
214
- Not directly observable from a single static getComputedStyle pass — but the `l2024-c-*` class system uses Stitches/CSS-in-JS, and scroll-triggered fade/translate on section entry is the dominant pattern on the live site (subtle, ~200-300ms). No spring-bounce, no parallax. Treat motion as **assist, not perform**.
215
-
216
- ---
197
+ No duration, easing, transition, or scroll-trigger state was recorded in the supplied evidence. Motion is intentionally undocumented rather than extrapolated from the static surfaces.
217
198
 
218
199
  ## 8. Accessibility
219
200
 
220
- - Pretendard Variable carries strong hangul + latin glyph parity handles weight 500-700 cleanly at 14-52px.
221
- - Text contrast on white: `#1D1D1F` on `#FFFFFF` = 18.27:1 (AAA).
222
- - Card body `#FDFDFD` on `#2D3338` = 13.21:1 (AAA).
223
- - On-dark muted `rgba(255,255,255,0.48)` on `#000000` 4.7:1 passes WCAG AA for body, fails AAA. flex uses this for de-emphasized chrome only.
224
- - Header overlay (`#FFFFFF` over hero black) = 21:1.
225
- - Service pill rings (1px inset) are a contrast-safe alternative to filled borders — but rely on shadow not border, so screen-reader / forced-color-mode users get focus from native button styles + the inner shadow degrades gracefully to outline.
226
-
227
- ---
201
+ - `#111111` on `#FFFFFF` and `#FFFFFF` on `#111111` are high-contrast text pairs in the captured light/dark chrome.
202
+ - The lime primary CTA uses `#111111` text over `#00FF44`; retain this pairing when reproducing the observed action treatment.
203
+ - The collector did not record focus-visible or keyboard interaction states. Do not infer focus treatment from the 8px or 24px radii; provide an accessible focus indicator in an implementation.
204
+ - `Pretendard Variable` is backed by loaded-face evidence and Flex-hosted subset URLs. Static `Pretendard` and `system-ui` remain declared/system fallbacks and must not be presented as additional Flex font roles.
228
205
 
229
206
  ## 9. Content & Voice
230
207
 
231
- The product hierarchy (live observed):
232
-
233
- 1. **Hero h1**: "모든 HR 데이터, flex 하나로." — declarative, no verb, period at end.
234
- 2. **Hero subhead**: "데이터가 유기적으로 흐를 때 팀은 더 똑똑하게 성장합니다." — second-clause-first structure.
235
- 3. **Manifesto h2**: "flex는 조직이 일하는 방식을 바꿉니다." — first-person company statement.
236
- 4. **Card 1**: identify the friction ("담당자 의존적인 조직 운영과 반복 업무는 …").
237
- 5. **Card 2**: state the mechanism ("flex는 흩어진 HR 데이터를 한 곳에 모아 연결하고, AI로 자동화하고 …").
238
- 6. **Card 3**: name the outcome ("이제 팀은 정보의 불균형과 반복 업무 부담에서 벗어나, … 몰입할 수 있습니다.").
239
-
240
- The pattern is **friction → mechanism → outcome**, told in three cards. CTAs are operational: "도입 문의하기" / "무료 체험하기" / "자세히 알아보기".
241
-
242
- ---
208
+ The public narrative starts from organizational context rather than generic AI capability. The home page asks whether blanket AI subscriptions actually change how a company works, then answers through three forms of knowledge: knowing the user, anticipating work, and connecting enterprise context. The About page reframes HR as **Human Relations** and positions the company’s mission around solving organizational and employee problems. CTA language is direct and operational—trial or inquiry—while the surrounding prose remains declarative and explanatory.
243
209
 
244
210
  ## 10. Voice & Tone
245
211
 
246
- **Voice adjectives:** 차분한 권위 · 운영자 시선 · 명사형 단정
247
-
248
- **Do / Don't**
212
+ **Voice adjectives:** contextual · declarative · enterprise-serious
249
213
 
250
- | Do | Don't |
214
+ | Do | Don't |
251
215
  |---|---|
252
- | 마침표로 끝낸다. ("flex는 조직이 일하는 방식을 바꿉니다.") | 느낌표·물음표 남발 ("일하는 방식, 진짜 바뀝니다!") |
253
- | 운영자 화자 시점 ("팀이 몰입할 있습니다") | 사용자에게 명령 ("지금 시작하세요!") |
254
- | 짧은 호흡 + 평서형 | 마케팅 슬로건 |
255
- | 데이터·자동화·맥락 같은 구체 명사 | "혁신적인", "최고의" 형용사 |
256
- | 한 화면에 1개 메시지 | 카드 안에 3가지 USP 욱여넣기 |
257
-
258
- **Voice samples** *(observed on flex.team, 2026-05-14 — illustrative, used for style anatomy not redistribution)*
216
+ | Start with a concrete organizational condition or question. | Lead with abstract “AI transformation” claims without context. |
217
+ | Explain how context, access, and relationships change an outcome. | Treat every user or team as interchangeable. |
218
+ | Use a clear conversion label for a trial or inquiry. | Turn every paragraph into a sales CTA. |
219
+ | Pair confident headlines with explanatory follow-through. | Use playful hype that conflicts with the governance and safety message. |
259
220
 
260
- 1. **Hero**: "모든 HR 데이터, flex 하나로." 4어절. 동사 없음. 마침표.
261
- 2. **Manifesto**: "flex는 조직이 일하는 방식을 바꿉니다." — 주어-목적어-서술어, 격언적 평서형.
262
- 3. **Card 3 outcome**: "이제 팀은 정보의 불균형과 반복 업무 부담에서 벗어나, 효율을 넘어 더 큰 성장을 위해 몰입할 수 있습니다." — 긴 호흡 1문장으로 인과 묶음, 결말은 "있습니다"로 가능성 제시 (단정하지 않음).
263
-
264
- **Voice when adopted for fresh copy** (catalog-safe, no verbatim borrow): 운영자 관점 + 마침표 + 명사형 + 단정형. 사용자 직접호명·명령형은 회피.
265
-
266
- ---
221
+ The examples are a source-derived style description, not a license to reproduce Flex copy verbatim.
267
222
 
268
223
  ## 11. Brand Narrative
269
224
 
270
- **Origin (2019).** 장해남 대표가 2019년 5월 성남에서 창업. 초기 타깃은 한국 스타트업·중견기업의 HR 운영 엑셀과 메신저로 흩어진 인사 데이터를 시스템으로 모으는 출발점.
271
-
272
- **Mission.** "데이터가 유기적으로 흐를 때 팀은 더 똑똑하게 성장합니다" (flex.team 2026-05-14 관찰). 흩어진 HR 데이터를 모으고, AI로 자동화하고, 맥락을 더해 **근본부터** 해결한다는 시각. 단순 SaaS가 아니라 'Human Relations Platform'으로 포지셔닝.
273
-
274
- **Why now.** 2023→2025 매출 ₩160억 → ₩279억 (연 +30%대 성장), 2026-03 기준 213명, Series B 후 valuation ₩5,000억. 한국 HR SaaS 시장이 분절(근태/급여/평가 각각 별도 SaaS)에서 통합 플랫폼으로 재편되는 시점에, flex는 "AI 기반 통합 HR" 포지션을 선점. 2024년 사이트 리프레시(`l2024-c-*` 클래스 체계)는 이 업마켓 이동을 시각적으로 선언한 변화 — 컬러풀했던 초기 SaaS 아이덴티티를 graphite + ink 단색 체계로 정리.
275
-
276
- *Source: thevc.kr/Flex (corporate facts), flex.team (live copy & visual signal).*
277
-
278
- ---
225
+ Flex says it was established in 2019 and launched its flex service in 2020. Its current About page describes a progression from establishing an HR-platform standard (2019–2021), through enterprise expansion (2022–2024), toward an AX platform grounded in HR data (2025–2027). The current brand thesis is **Relations Driven AX**: HR is redefined from “Human Resources” to “Human Relations,” and relationship data is presented as the context that lets AI diagnose, suggest, and execute work safely. The company frames its mission as solving organizations’ and employees’ problems so that it becomes an essential service for everyone who works.
279
226
 
280
227
  ## 12. Principles
281
228
 
282
- 1. **One ink, many alphas.** 색이 의미를 만들지 않는다. `#1D1D1F`를 0.04 / 0.10 / 0.24 / 0.72 / 0.96으로 단계화해서 위계를 만든다. *UI implication:* semantic blue/green/red를 본문에 쓰지 말 것. 상태는 weight + alpha로 표현.
283
- 2. **Display tight, body loose.** 52px h2는 `-1.56px` 트래킹으로 단단하게, 17px 카드 본문은 `26px` line-height로 쉬게. *UI implication:* 글자일수록 트래킹 음수, 작을수록 line-height 1.5+.
284
- 3. **Section flips theme, not palette.** 다크 hero 라이트 manifesto 다크 카드는 *같은 ink + 같은 graphite*를 surface 반전으로 쓴 것. *UI implication:* light/dark variant는 token 교체가 아니라 `_dark` / `_light` 클래스 토글.
285
- 4. **Ring, not border.** 1px 테두리 대신 1px inset shadow ring (`0 0 0 1px inset`). *UI implication:* hover/active 전환 시 `box-shadow`만 바꾸면 layout shift 0.
286
- 5. **Friction mechanism → outcome.** 모든 manifesto는 카드 구조. *UI implication:* 마케팅 hero 아래 섹션은 USP 리스트가 아니라 3-beat narrative.
287
-
288
- ---
229
+ 1. **Context before capability.** Explain what the organization knows and how access is bounded before claiming AI benefit.
230
+ 2. **Contrast carries authority.** Build the public hierarchy with black, white, and measured opacity; reserve lime for the decisive conversion point.
231
+ 3. **Use lime as an action, not a status system.** `#00FF44` is evidenced on marketing CTA links, not as a universal product semantic token.
232
+ 4. **Let scale establish the thesis.** Keep editorial statements distinct from supporting explanation; the recorded 80–96px About styles are a surface-specific example.
233
+ 5. **Keep source domains separate.** Marketing/corporate pages, Help Center chrome, and unverified app surfaces must not be mixed into one inferred product design system.
289
234
 
290
235
  ## 13. Personas
291
236
 
292
- > *Personas below are derived from flex's observed positioning and TheVC corporate data they are illustrative of who flex appears to design for, not official customer segments.*
237
+ Flex’s official copy names organizations, members, leaders, and teams as the stakeholders of its platform. It also describes HR teams dealing with attendance, evaluation, compensation, compliance, and data-informed decisions. This reference therefore recognizes those official stakeholder groups without inventing named fictional personas or unverified audience demographics:
293
238
 
294
- - **운영팀 리더 (HR ops lead) at 50-300명 규모.** 엑셀 + 메신저 + 별도 근태 SaaS로 매달 결산하는 사람. flex의 "통합" 약속과 graphite 무채색 톤이 "장난감이 아닌 도구"라는 신호로 작동한다.
295
- - **CHRO / COO at Series B-D 스타트업.** 임원에게 보고할 데이터 신뢰성이 중요. AI·자동화 카피와 manifesto의 마침표형 단정 문장이 "결정자 톤"으로 읽힌다.
296
- - **백오피스 헤드 at 전통 중견기업.** SaaS 도입. 화면에 1개 메시지·운영자 시점 카피·과장 없는 비주얼이 "한국 회사 정서에 맞는다"고 느낀다.
297
-
298
- ---
239
+ - **Organization and HR operators:** need connected organizational and employee data to handle HR operations and compliance.
240
+ - **Leaders:** use organizational context and goal/health signals to make decisions.
241
+ - **Employees:** receive access and AI assistance bounded by their role and organizational relationship.
299
242
 
300
243
  ## 14. States
301
244
 
302
- | Surface | Empty | Loading | Error | Success | Skeleton | Disabled |
303
- |---|---|---|---|---|---|---|
304
- | Service filter pill | n/a — 항상 5개 고정 | n/a | n/a | active pill: `rgba(29,29,31,0.04)` fill + 0.24 ring + weight 700 | n/a | inactive pill: white fill + 0.10 ring + weight 600 |
305
- | CTA "도입 문의하기" | n/a | submit 중 → 동일 chrome 유지 (라이브 관찰 한정) | 폼 단위 inline 메시지 (페이지 단위 toast 회피) | 별도 thank-you 페이지 라우팅 | n/a | `rgba(29,29,31,0.04)` 유지 + cursor not-allowed |
306
- | Manifesto card | 항상 3개 고정 — 1-2개 fallback 패턴은 관찰되지 않음 | n/a (정적 콘텐츠) | n/a | n/a | possibility: 동일 dims `#2D3338` + 16px radius + 30px padding의 빈 박스 | n/a |
307
- | Header CTA | n/a | n/a | n/a | active 페이지 표시는 underline·dot 없이 weight 700 토글로 추정 | n/a | `rgba(255,255,255,0.48)` text on dark |
308
-
309
- States 카탈로그가 사이트에 명시되지 않은 곳은 **observed shape 유지 + Pretendard weight·alpha만 조정**하는 것이 flex 톤 보존의 안전 룰.
310
-
311
- ---
245
+ No loading, error, empty, disabled, or success state was captured for a Flex product workflow. The supplied evidence also reports zero interaction coverage. The only state-like observations are surface-theme variants (dark versus light navigation) and static component defaults in §4; they are not promoted as behavioral state specifications.
312
246
 
313
247
  ## 15. Motion & Easing
314
248
 
315
- 라이브 관찰 패스 기준 단정적 듀레이션·이징 값은 추출하지 못함. 일반 패턴으로부터 권장 토큰:
316
-
317
- **Duration**
318
- - `instant`: 0ms — 토글 즉시 반영 (pill active 전환)
319
- - `short`: 150ms — hover ring 두께 변화
320
- - `default`: 240ms — section fade-in on scroll
321
- - `long`: 400ms — 카드 stagger (3개 카드가 80ms 간격으로 enter)
322
-
323
- **Easing**
324
- - `out-quart` (`cubic-bezier(0.25, 1, 0.5, 1)`) — scroll-trigger fade (자연스러운 도착감)
325
- - `in-out-cubic` (`cubic-bezier(0.65, 0, 0.35, 1)`) — pill 전환
326
-
327
- **Motion rules**
328
- 1. *Translate ≤ 12px.* flex는 parallax·과한 슬라이드를 쓰지 않는다.
329
- 2. *Opacity is the primary verb.* fade-in + tiny translateY가 거의 모든 entry 모션.
330
- 3. *No spring bounce.* 항상 ease-out 류. overshoot 0.
331
- 4. *Stagger ≤ 100ms.* 3-card grid stagger는 잘게.
332
-
249
+ No motion values were captured. Preserve the absence of a claimed motion system rather than assigning easing curves, delays, or stagger behavior from visual inference.
333
250
 
334
251
  ## 16. Do's and Don'ts
335
252
 
336
253
  ### Do
337
- - Build hierarchy from a single ink hue `#1D1D1F` stepped through alpha values (0.04 / 0.10 / 0.24 / 0.72 / 0.96) instead of introducing semantic colors
338
- - Set the 52px display h2 with tight `-1.56px` letter-spacing in Pretendard Variable 700 — the negative tracking is flex's visual signature
339
- - Define component edges with a 1px inset ring (`rgba(29,29,31,0.24) 0 0 0 1px inset` for active pills, `0.10` for inactive) rather than CSS borders, so hover/active transitions cause zero layout shift
340
- - Render the first section under the hero as a three-beat narrative (friction mechanism → outcome) using `#2D3338` graphite cards with 16px radius and 30px padding
341
- - Flip light/dark by toggling `.l2024_dark` / `.l2024_light` surface classes while keeping the same ink and graphite tokens, rather than swapping the palette
342
- - Keep motion as assist: opacity fade plus a translateY of ≤12px on scroll entry, ease-out only, with 3-card stagger ≤100ms
254
+
255
+ - Use `#111111` and `#FFFFFF` as the dominant public-surface contrast pair.
256
+ - Reserve `#00FF44` for the large, high-emphasis conversion action observed on the current public pages.
257
+ - Use the 8px navigation action and 24px campaign CTA radii only in their observed contexts.
258
+ - Treat 80–96px editorial type as a current About-page treatment, not proof of a product-app display scale.
259
+ - Keep help-center chrome and any unobserved logged-in application UI out of this public-surface reference.
343
260
 
344
261
  ### Don't
345
- - Introduce blue, green, or yellow accent colors — flex's 2024 refresh deliberately deletes the SaaS accent-color habit and resolves nearly every element to the ink scale
346
- - Fill the active service pill with a solid primary color — it uses a quiet `rgba(29,29,31,0.04)` fill with an inset ring, never a filled blue/primary
347
- - Make the hero h1 larger than the in-page h2 — flex inverts the usual hierarchy with a compact 28px h1 banner under the 52px h2 argument
348
- - Use spring-bounce, parallax, or slides with overshoot motion is always ease-out with overshoot 0 and translate capped at 12px
349
- - Put illustrations, icons, or images inside the manifesto cards — they are pure type on `#2D3338`, where the graphite-on-white card itself is the visual
350
- - Cram multiple USPs into one card or screen flex holds to one message per screen across its three-card structure
262
+
263
+ - Reintroduce the legacy graphite manifesto cards, service-filter pills, or inset-ring variants as current Flex components.
264
+ - Treat the orange announcement badge as a general error or warning semantic color.
265
+ - Render static `Pretendard` or a system fallback as though it were the verified `Pretendard Variable` family.
266
+ - Invent hover, disabled, form, dialog, or loading variants from the static collector output.
267
+ - Turn relationship-data positioning into generic AI copy that omits access, role, and organizational context.
351
268
 
352
269
  ---
353
270
 
354
- **Verified:** 2026-05-14
355
- **Pipeline:** omd:add-reference CREATE (3-tier)
356
- **Catalog position:** KR · saas · hr
271
+ **Verified:** 2026-07-13
272
+ **Pipeline:** omd:add-reference UPDATE (3-tier reconcile)
273
+ **Catalog position:** KR · saas · HR-data/AI platform