oh-my-design-cli 1.3.9 → 1.5.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 (138) hide show
  1. package/README.ja.md +8 -8
  2. package/README.ko.md +7 -7
  3. package/README.md +50 -16
  4. package/README.zh-TW.md +8 -8
  5. package/agents/omd-asset-curator.md +2 -7
  6. package/agents/omd-codex-image.md +49 -0
  7. package/agents/omd-designer-review.md +38 -0
  8. package/agents/omd-final-qa.md +40 -0
  9. package/agents/omd-kr-writer.md +35 -0
  10. package/agents/omd-locale-adapter.md +32 -0
  11. package/agents/omd-master.md +3 -13
  12. package/agents/omd-orchestrator.md +34 -0
  13. package/data/reference-audits/2026-05-14-kr10.md +72 -0
  14. package/data/reference-audits/2026-05-15-kr10.md +124 -0
  15. package/data/reference-fingerprints.json +253 -3
  16. package/data/research/2026-05-18-agent-landscape.md +69 -0
  17. package/data/research/2026-05-18-kr-style-presets.md +572 -0
  18. package/dist/bin/oh-my-design.js +6 -3
  19. package/dist/bin/oh-my-design.js.map +1 -1
  20. package/dist/{install-skills-MVXVXYAY.js → install-skills-IETT2TBJ.js} +91 -8
  21. package/dist/install-skills-IETT2TBJ.js.map +1 -0
  22. package/package.json +9 -3
  23. package/skills/omd-apply/SKILL.md +0 -1
  24. package/skills/omd-codex-image/SKILL.md +162 -0
  25. package/skills/omd-designer-review/SKILL.md +146 -0
  26. package/skills/omd-final-qa/SKILL.md +153 -0
  27. package/skills/omd-kr-writer/SKILL.md +229 -0
  28. package/skills/omd-locale-adapter/SKILL.md +124 -0
  29. package/skills/omd-orchestrator/SKILL.md +124 -0
  30. package/web/references/29cm/DESIGN.md +11 -2
  31. package/web/references/ably/DESIGN.md +12 -2
  32. package/web/references/airbnb/DESIGN.md +17 -2
  33. package/web/references/airtable/DESIGN.md +20 -0
  34. package/web/references/apple/DESIGN.md +17 -2
  35. package/web/references/baemin/DESIGN.md +11 -2
  36. package/web/references/banksalad/DESIGN.md +17 -2
  37. package/web/references/bmw/DESIGN.md +14 -0
  38. package/web/references/bunjang/DESIGN.md +308 -0
  39. package/web/references/cal/DESIGN.md +14 -0
  40. package/web/references/catchtable/DESIGN.md +262 -0
  41. package/web/references/channeltalk/DESIGN.md +374 -0
  42. package/web/references/classum/DESIGN.md +217 -0
  43. package/web/references/claude/DESIGN.md +11 -2
  44. package/web/references/clay/DESIGN.md +19 -0
  45. package/web/references/clickhouse/DESIGN.md +19 -0
  46. package/web/references/cohere/DESIGN.md +20 -0
  47. package/web/references/coinbase/DESIGN.md +14 -0
  48. package/web/references/composio/DESIGN.md +14 -0
  49. package/web/references/coupang/DESIGN.md +17 -2
  50. package/web/references/cursor/DESIGN.md +20 -0
  51. package/web/references/dabang/DESIGN.md +210 -0
  52. package/web/references/dcard/DESIGN.md +11 -2
  53. package/web/references/elevenlabs/DESIGN.md +20 -0
  54. package/web/references/expo/DESIGN.md +20 -0
  55. package/web/references/fastcampus/DESIGN.md +460 -0
  56. package/web/references/ferrari/DESIGN.md +14 -0
  57. package/web/references/figma/DESIGN.md +17 -2
  58. package/web/references/flex/DESIGN.md +309 -0
  59. package/web/references/framer/DESIGN.md +20 -0
  60. package/web/references/freee/DESIGN.md +16 -2
  61. package/web/references/gangnamunni/DESIGN.md +18 -2
  62. package/web/references/gmarket/DESIGN.md +464 -0
  63. package/web/references/hashicorp/DESIGN.md +19 -0
  64. package/web/references/ibm/DESIGN.md +20 -0
  65. package/web/references/inflearn/DESIGN.md +396 -0
  66. package/web/references/intercom/DESIGN.md +14 -0
  67. package/web/references/jumpit/DESIGN.md +366 -0
  68. package/web/references/kakao/DESIGN.md +14 -0
  69. package/web/references/kakaobank/DESIGN.md +17 -2
  70. package/web/references/kakaopay/DESIGN.md +17 -2
  71. package/web/references/karrot/DESIGN.md +16 -2
  72. package/web/references/kbank/DESIGN.md +195 -0
  73. package/web/references/kraken/DESIGN.md +14 -0
  74. package/web/references/krds/DESIGN.md +17 -2
  75. package/web/references/kream/DESIGN.md +382 -0
  76. package/web/references/kurly/DESIGN.md +11 -2
  77. package/web/references/lamborghini/DESIGN.md +14 -0
  78. package/web/references/line/DESIGN.md +17 -2
  79. package/web/references/linear.app/DESIGN.md +17 -2
  80. package/web/references/lovable/DESIGN.md +14 -0
  81. package/web/references/lunit/DESIGN.md +249 -0
  82. package/web/references/mercari/DESIGN.md +11 -2
  83. package/web/references/minimax/DESIGN.md +14 -0
  84. package/web/references/mintlify/DESIGN.md +14 -0
  85. package/web/references/miro/DESIGN.md +20 -0
  86. package/web/references/mistral.ai/DESIGN.md +20 -0
  87. package/web/references/mongodb/DESIGN.md +19 -0
  88. package/web/references/musinsa/DESIGN.md +11 -2
  89. package/web/references/naver/DESIGN.md +17 -2
  90. package/web/references/notion/DESIGN.md +11 -2
  91. package/web/references/nvidia/DESIGN.md +11 -2
  92. package/web/references/ohouse/DESIGN.md +11 -2
  93. package/web/references/oliveyoung/DESIGN.md +342 -0
  94. package/web/references/ollama/DESIGN.md +14 -0
  95. package/web/references/opencode.ai/DESIGN.md +20 -0
  96. package/web/references/pinkoi/DESIGN.md +11 -2
  97. package/web/references/pinterest/DESIGN.md +19 -0
  98. package/web/references/posthog/DESIGN.md +20 -0
  99. package/web/references/qanda/DESIGN.md +11 -2
  100. package/web/references/raycast/DESIGN.md +19 -0
  101. package/web/references/remember/DESIGN.md +17 -2
  102. package/web/references/renault/DESIGN.md +14 -0
  103. package/web/references/replicate/DESIGN.md +14 -0
  104. package/web/references/resend/DESIGN.md +20 -0
  105. package/web/references/revolut/DESIGN.md +14 -0
  106. package/web/references/ridi/DESIGN.md +11 -2
  107. package/web/references/runwayml/DESIGN.md +14 -0
  108. package/web/references/sanity/DESIGN.md +20 -0
  109. package/web/references/sentry/DESIGN.md +14 -0
  110. package/web/references/socar/DESIGN.md +17 -2
  111. package/web/references/spacex/DESIGN.md +11 -2
  112. package/web/references/spotify/DESIGN.md +14 -0
  113. package/web/references/stripe/DESIGN.md +11 -2
  114. package/web/references/supabase/DESIGN.md +20 -0
  115. package/web/references/superhuman/DESIGN.md +20 -0
  116. package/web/references/tesla/DESIGN.md +11 -2
  117. package/web/references/together.ai/DESIGN.md +20 -0
  118. package/web/references/toss/DESIGN.md +16 -2
  119. package/web/references/toss-securities/DESIGN.md +193 -0
  120. package/web/references/tving/DESIGN.md +259 -0
  121. package/web/references/uber/DESIGN.md +19 -0
  122. package/web/references/upbit/DESIGN.md +276 -0
  123. package/web/references/upstage/DESIGN.md +214 -0
  124. package/web/references/vercel/DESIGN.md +17 -2
  125. package/web/references/voltagent/DESIGN.md +14 -0
  126. package/web/references/wadiz/DESIGN.md +344 -0
  127. package/web/references/wanted/DESIGN.md +16 -2
  128. package/web/references/warp/DESIGN.md +14 -0
  129. package/web/references/webflow/DESIGN.md +14 -0
  130. package/web/references/wise/DESIGN.md +19 -0
  131. package/web/references/x.ai/DESIGN.md +14 -0
  132. package/web/references/yanolja/DESIGN.md +17 -2
  133. package/web/references/yeogiotte/DESIGN.md +18 -2
  134. package/web/references/zapier/DESIGN.md +20 -0
  135. package/web/references/zigbang/DESIGN.md +12 -2
  136. package/web/references/zigzag/DESIGN.md +17 -2
  137. package/agents/omd-3d-blender.md +0 -269
  138. package/dist/install-skills-MVXVXYAY.js.map +0 -1
@@ -0,0 +1,366 @@
1
+ ---
2
+ id: jumpit
3
+ name: Jumpit
4
+ country: KR
5
+ category: productivity
6
+ homepage: "https://www.jumpit.co.kr"
7
+ primary_color: "#00dd6d"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=jumpit.co.kr&sz=256"
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ---
14
+
15
+ # Design System Inspiration of Jumpit (점핏)
16
+
17
+ ## 1. Visual Theme & Atmosphere
18
+
19
+ Jumpit (점핏) is the developer-only recruitment channel run by **Saramin HR** (사람인HR, KOSDAQ 143240) — a separate brand spun out so that engineering hiring would not share chrome with the parent's generalist job marketplace. The visual identity reads as a deliberate inversion of two adjacent Korean references: it rejects Wanted's saturated `#0066FF` "growth blue" trust signal **and** the maximalist gradients of fintech marketing — substituting a single high-key green `#00DD6D` used so sparingly that across two surfaces and 112 live element samples it appears on chrome exactly **twice** (one active filter chip, one section eyebrow). Everything else is a tight three-stop greyscale stack on a `#FFFFFF` canvas with `#FBFBFB` footer relief. The product feels closer to a developer terminal than to an HR portal — sharp 0px card corners, no box-shadows, and a vocabulary that reads "요즘 폼 미친 기업s" / "#꿀 피드" / ".zip" in casual recruiter-to-engineer register.
20
+
21
+ The brand colour is a single, decisive **`#00DD6D`** — saturated, high-luminance, intentionally closer to a terminal-prompt green than to a Spotify-style brand green. It is held back from the primary call-to-action: the global "회원가입 / 로그인" pill is `#000000` with white 15/700 type at 8px radius, not green. Green appears only on the *active-state* role-filter chip in `/positions` and on the small "Notice" eyebrow above the announcement card. The result is that green never competes with content density — it is reserved as the system's way of saying "you chose this filter" or "we want you to look at this once."
22
+
23
+ The signature surface is the **role-filter chip row** on `/positions` — twenty-two horizontally-arrayed 40px-tall pill buttons (서버/백엔드 / 프론트엔드 / 웹 풀스택 / 안드로이드 / iOS / DBA / 빅데이터 / AI·ML / DevOps / 정보보안 / QA / 개발PM / HW·임베디드 / 블록체인 / …) at 20px radius, single-select, where the chosen chip flips from transparent-on-`#444` rest to `#00DD6D`-on-white active. Below it sits a second filter row of four 100px-radius **outlined** dropdowns (기술스택 / 경력 / 지역 / 태그) — a deliberate radius-scale separation so the two filter classes never visually merge.
24
+
25
+ **Key Characteristics:**
26
+ - Single brand green `#00DD6D` — chrome use restricted to active state + one eyebrow (2 observed instances across 112 samples)
27
+ - Pretendard Variable across 100% of UI text — no proprietary display face
28
+ - Three-stop ink ladder: `#000` heading → `#444` body → `#888` muted (no hex in between)
29
+ - Three-pill radius scale: **8px** (primary CTA only) / **20px** (role chips) / **100px** (outlined filter dropdowns)
30
+ - Cards at `0px` radius — sharpness is the architectural default, pills are reserved for controls
31
+ - Zero `box-shadow` observed — depth is surface-tint only (`#FBFBFB` footer vs `#FFF` page)
32
+ - Binary weight policy — 400 body, 700 emphasis; no 600 in between
33
+ - Stack: Next.js (App Router) + styled-components — no public `:root` token contract
34
+
35
+ ---
36
+
37
+ ## 2. Color Palette & Roles
38
+
39
+ ### Primary (Brand)
40
+ - **Jumpit Green** (`#00DD6D` / `rgb(0, 221, 109)`): The sole brand accent. Restricted to two chrome uses — active role-filter chip background and the 13/700 "Notice" eyebrow above the announcement card. **Never** on the primary CTA, never on body text, never as a hover wash.
41
+
42
+ ### Ink (text)
43
+ - **Heading Black** (`#000000`): Primary CTA background, h3 hero card body text. The most saturated ink — used as much for the primary button fill as for type.
44
+ - **Heading Soft** (`#222222`): Section h3 titles ("테마별 모음.zip", "회원님을 위한 AI 추천 포지션을 보고싶다면?"). Softer than pure black to relax page rhythm.
45
+ - **Body** (`#444444`): Default reading ink — footer nav, filter-chip rest state, secondary body. The dominant link colour.
46
+ - **Muted Tertiary** (`#888888`): "전체 보기" affordance, metadata. The bottom of the three-stop ladder.
47
+ - **Inverse** (`#FFFFFF`): CTA text, hero carousel overlay titles (32/700 over photos), active filter chip text.
48
+
49
+ ### Surface
50
+ - **Canvas** (`#FFFFFF`): Page background, header, card surface.
51
+ - **Footer Plate** (`#FBFBFB`): The only surface elevation in the system — a near-imperceptible warm-grey tint that signals "you are below the content."
52
+
53
+ ### Semantic
54
+ - **Inferred** — Jumpit's home + positions surfaces did not expose an error/success/warning ladder this pass. Job-status badges (마감 / D-day / 신규) and form-validation states require an UPDATE capture on a saved-job or application-form surface. Until then, downstream designs should adopt a Toss-family semantic ladder (`#F04452` error / `#1FA463` success / `#FFA940` warning) rather than re-tinting `#00DD6D`.
55
+
56
+ ### Discipline rule
57
+ **Green is a binary signal, not a colour ladder.** Jumpit does not ship `#00DD6D-light` / `#00DD6D-dark` / `#00DD6D-tint` derivatives. When you need attention without choice-selection semantics, use weight (700) and size (24/32px) — not a green tint.
58
+
59
+ ---
60
+
61
+ ## 3. Typography Rules
62
+
63
+ ### Font family
64
+ - **UI / Display (single stack)**: `"Pretendard Variable", Pretendard, -apple-system, system-ui, sans-serif` — verified on 100% (112/112) of sampled elements. No `Wanted Sans`-style brand display face is layered over body.
65
+ - **Licence**: SIL OFL 1.1 (open-source). Self-hosted via Next.js static assets.
66
+
67
+ ### Hierarchy
68
+
69
+ | Role | Size | Weight | Line height | Notes |
70
+ |------|------|--------|-------------|-------|
71
+ | Hero card title (over photo) | 32px | 700 | ~1.3 | White, 84px tall block — h3 used semantically as card label |
72
+ | Section h3 | 24px | 700 | ~1.3 | Ink `#222222` |
73
+ | Primary CTA | 15px | 700 | 48px button | White on `#000` |
74
+ | Body / link / chip rest | 16px | 400 | ~1.5 | Ink `#444444` |
75
+ | Filter chip active | 16px | 700 | — | White on `#00DD6D` |
76
+ | Footer link | 14px | 400 | — | Ink `#444444` |
77
+ | Brand eyebrow ("Notice") | 13px | 700 | — | The only 13px appearance, always `#00DD6D` |
78
+
79
+ ### Principles
80
+ - **One family, three weights.** 400 (body), 500 (sparing — ~12% of samples), 700 (heading + active + CTA). No 600.
81
+ - **Emphasis is binary, not graduated.** Either you are content (400) or you are an instruction / heading / active state (700). The skipped 600 weight is intentional — it forces interface labels to commit.
82
+ - **Type does the brand work, not colour.** Because `#00DD6D` is restricted, hierarchy must come from size and weight alone. 32/700 white-over-photo card titles are the loudest typographic moment.
83
+ - **No <h1> on the home page.** Observed and flagged in §8 a11y — the global header's logo image and the hero carousel use h3 directly. Anyone porting this pattern should add a semantic h1 to the announcement section.
84
+
85
+ ---
86
+
87
+ ## 4. Component Stylings
88
+
89
+ ### Button
90
+
91
+ **Primary (Auth CTA)**
92
+ - Background: `#000000`
93
+ - Text: `#FFFFFF`
94
+ - Border: none
95
+ - Radius: 8px
96
+ - Height: 48px
97
+ - Padding: 0px 16px
98
+ - Font: 15px / 700 / Pretendard Variable
99
+ - Use: 회원가입 / 로그인 — the single 8px-radius pill in the chrome. Auth-funnel exclusive.
100
+
101
+ **Role Filter Chip — Active**
102
+ - Background: `#00DD6D`
103
+ - Text: `#FFFFFF`
104
+ - Border: none
105
+ - Radius: 20px
106
+ - Height: 40px
107
+ - Padding: 7px 16px
108
+ - Font: 16px / 700 / Pretendard Variable
109
+ - Use: Single-selected job-role chip in `/positions` (전체 / 서버백엔드 / 프론트엔드 / iOS / DBA / 빅데이터 / AI·ML / DevOps / QA / etc.)
110
+
111
+ **Role Filter Chip — Rest**
112
+ - Background: transparent
113
+ - Text: `#444444`
114
+ - Border: none
115
+ - Radius: 20px
116
+ - Height: 40px
117
+ - Padding: 7px 16px
118
+ - Font: 16px / 400 / Pretendard Variable
119
+ - Use: All unselected role chips in the 22-chip filter row.
120
+
121
+ **Outlined Filter Dropdown**
122
+ - Background: `#FFFFFF`
123
+ - Text: `#000000`
124
+ - Border: 1px solid (border colour not captured cleanly — flagged for UPDATE, likely `#E5E5E5`-tier hairline)
125
+ - Radius: 100px
126
+ - Height: 40px
127
+ - Padding: 8px 30px 8px 12px (asymmetric — right padding holds the caret)
128
+ - Font: 16px / 400 / Pretendard Variable
129
+ - Use: 기술스택 / 경력 / 지역 / 태그 multi-select dropdown triggers — the second filter class.
130
+
131
+ ### Card
132
+
133
+ **Hero Carousel Card** (Inferred — outer chrome captured, inner spacing pending)
134
+ - Background: photographic image (full-bleed)
135
+ - Overlay title text: `#FFFFFF`, 32px / 700, 84px tall block
136
+ - Eyebrow text inside card: `#000000`, 16px / 400
137
+ - Radius: 0px
138
+ - Box shadow: none
139
+ - Height: 340px
140
+ - Use: Sliding 3-up promotion row on home — company-page entry points.
141
+
142
+ **JobCard** (Inferred — needs UPDATE pass)
143
+ - Background: `#FFFFFF`
144
+ - Radius: 0px (consistent with no-rounded-card discipline observed)
145
+ - Box shadow: none
146
+ - Border: hairline tint (exact value pending capture)
147
+ - Use: Result-grid card on `/positions`. Inner anatomy (thumbnail / position title / company / location / D-day) requires a focused capture pass.
148
+
149
+ ### Eyebrow
150
+
151
+ **Brand Eyebrow ("Notice")**
152
+ - Text: `#00DD6D`
153
+ - Font: 13px / 700 / Pretendard Variable
154
+ - Use: 18px-tall label above the home Notice announcement card — the only 13px-size and the second authorised brand-green chrome use.
155
+
156
+ ### Heading
157
+
158
+ **Section H3 Title**
159
+ - Text: `#222222`
160
+ - Font: 24px / 700 / Pretendard Variable
161
+ - Padding: 0px (or 0px 10px on "이번주 인기 포지션" variant)
162
+ - Use: All home section heads — sit on `#FFF` canvas.
163
+
164
+ ### Link
165
+
166
+ **Footer Link (Default)**
167
+ - Text: `#444444`
168
+ - Font: 14px / 400 / Pretendard Variable
169
+ - Border: none
170
+ - Radius: 0
171
+ - Use: 14-link footer nav grid.
172
+
173
+ **Section "View all" Affordance**
174
+ - Text: `#888888`
175
+ - Font: 16px / 400 / Pretendard Variable
176
+ - Use: "전체 보기" inline link at the right edge of section headers.
177
+
178
+ ---
179
+
180
+ **Verified:** 2026-05-15
181
+ **Tier 1 sources:** CDP `:9222` live capture on `jumpit.saramin.co.kr/` (52 samples) + `/positions?sort=popular` (60 samples); `assets/_reference/.live-inspect-proof.json` (10 raw_samples retained)
182
+ **Tier 2 sources:** `getdesign.md/jumpit` → "No designs found"; `styles.refero.design/?q=jumpit` → no result cards (both verified 2026-05-15)
183
+ **Conflicts unresolved:** none. JobCard inner spacing + hover/pressed/focus/disabled states + semantic ladder flagged for UPDATE pass.
184
+
185
+ ---
186
+
187
+ ## 5. Layout Principles
188
+
189
+ - **Single-canvas page model**. `#FFFFFF` from header to last section, then `#FBFBFB` for the footer plate. No alternating section backgrounds, no coloured banners, no full-bleed brand-green strips.
190
+ - **Filter-row pattern is the layout fingerprint**. On `/positions`, two stacked filter rows (22 role chips + 4 outlined dropdowns) precede the result grid — a horizontal-scrolling chip row above a `flex-wrap` dropdown row. The visual contract: pill class signals taxonomy class.
191
+ - **Sticky 121px header** on home — global nav (개발자 채용 / 이력서 / #꿀 피드 / 개발자 인터뷰) on the left, secondary auth (회원가입/로그인) and 기업 서비스 on the right.
192
+ - **Section vertical rhythm** uses ~24/32/40px steps (inferred from sampling, not measured). Card grids appear at 8-up on home, n-up on positions.
193
+ - **No `<h1>` on home**. The semantic heading tree starts at h2 (`Notice`) → h3 (section titles + 12 carousel-card titles). Flagged in §8.
194
+ - **Footer = 363px tall**, padding `40px 0px 30px`, 14/400 `#444` links arranged in 6-7 columns.
195
+
196
+ ---
197
+
198
+ ## 6. Depth & Elevation
199
+
200
+ - **No box-shadow on any sampled element.** Zero. Across 112 raw samples (buttons, cards, inputs, nav, header, footer) every `box-shadow: none`.
201
+ - Depth is communicated entirely by **surface tint**: `#FBFBFB` footer plate against `#FFFFFF` page is the single elevation tier.
202
+ - Cards on photo carousels rely on the photo itself + a black-on-photo overlay text contrast, not on shadow stacking.
203
+ - Borders, where present, are hairline tints rather than `1px solid black` — but the dominant pattern is "no border, no shadow, content separated by whitespace alone."
204
+
205
+ This is a deliberate stylistic position: by withholding depth tokens, the system signals "we are a terminal, not a banking app."
206
+
207
+ ---
208
+
209
+ ## 7. Do's and Don'ts
210
+
211
+ ### Do
212
+ - Keep `#00DD6D` to two semantic uses: active state + brand eyebrow. Two appearances per screen is the comfortable max.
213
+ - Use weight (400 → 700) and size (16 → 24 → 32) to communicate hierarchy. Skip 600.
214
+ - Maintain the three-pill radius scale: 8 (primary CTA), 20 (role chip), 100 (outlined dropdown).
215
+ - Keep cards at 0px radius — this is what makes Jumpit feel like a developer tool, not an HR app.
216
+ - Default body ink to `#444`, not `#000`. Pure black is reserved for primary CTA and the loudest hero card text.
217
+
218
+ ### Don't
219
+ - **Don't introduce a green ladder.** No `#00DD6D-tint`, no `#00DD6D-pressed-darker`. If you need a softer surface, use the `#FBFBFB` footer tint or whitespace.
220
+ - Don't put `#00DD6D` on a primary CTA — Jumpit's CTA is `#000`, that's the signature.
221
+ - Don't add `box-shadow` to cards. If you need separation, add whitespace.
222
+ - Don't reach for 600 weight. 400 or 700, commit.
223
+ - Don't add rounded corners to cards (16px / 20px / 24px). Cards = 0.
224
+ - Don't lift verbatim Jumpit voice — phrases like "요즘 폼 미친 기업s" / "#꿀 피드" are voice **shape** evidence, not adoptable copy.
225
+
226
+ ---
227
+
228
+ ## 8. Responsive Behavior
229
+
230
+ - **Home + positions both inspected at 1280×720 desktop**. Mobile viewport not captured this pass.
231
+ - The 22-chip role-filter row on `/positions` is wider than 1280px content area → horizontal scroll is the inferred behaviour (CSS `overflow-x: auto` typical for this pattern, not validated by this capture).
232
+ - Hero carousel sliding cards retain 340px height at desktop; mobile breakpoint behaviour pending.
233
+ - Footer 6-7 column nav grid is expected to collapse to 2-3 cols at mobile (standard pattern, not validated).
234
+ - No `prefers-color-scheme: dark` support detected — Jumpit ships light-mode only on web.
235
+ - Saramin parent ships a separate mobile app for Jumpit (App Store / Google Play CTAs present in the footer area) — design system for the native app is out of scope for this reference.
236
+
237
+ **UPDATE pass should capture**: 390×844 iPhone viewport with iOS UA, chip-row scroll affordance, mobile filter sheet (likely a bottom-sheet pattern for 기술스택/경력/지역/태그 on mobile).
238
+
239
+ ---
240
+
241
+ ## 9. Agent Prompt Guide
242
+
243
+ When generating Jumpit-styled surfaces, hold these constraints:
244
+
245
+ 1. **One brand green, two chrome uses.** If a screen has more than two appearances of `#00DD6D`, you have failed the system. Audit before shipping.
246
+ 2. **CTA is black, not green.** The primary action pill is `#000000` / `#FFFFFF` / 8px radius / 15/700.
247
+ 3. **Three pill radii encode role.** 8 = primary CTA. 20 = single-select role chip. 100 = outlined multi-select dropdown. Don't mix.
248
+ 4. **Cards have 0 corner radius and no shadow.** If you need depth, use whitespace or the `#FBFBFB` footer tint — that's the only elevation tier you have.
249
+ 5. **Pretendard Variable, 400 or 700 — pick one per element.** Skip 500 unless you have a justified reason (footnotes, micro-meta).
250
+ 6. **Three-stop ink ladder.** `#000` for the loudest moment (primary CTA, hero card text), `#222` for section heads, `#444` for body, `#888` for tertiary muted. No greys outside this set.
251
+ 7. **Voice = developer-vernacular Korean with English keyword inlining.** Don't slip into corporate-HR register ("귀하의 지원이 …"). Don't lift Jumpit verbatim either — write fresh copy in the same register (see §10 samples).
252
+ 8. **A11y caveat to fix downstream**: Jumpit ships home without an `<h1>` — your port should not. Add a semantic h1 to the announcement / hero region. Audit colour contrast on `#888` body text (it is below WCAG AA at 14px).
253
+ 9. **Semantic ladder is yours to add.** Jumpit's production code does not expose error/success/warning tokens publicly. Adopt a Toss-family semantic palette rather than re-tinting `#00DD6D`.
254
+
255
+ ---
256
+
257
+ ## 10. Voice & Tone
258
+
259
+ Jumpit speaks **developer-to-developer in casual recruiter-vernacular Korean**, with English keyword inlining for technical signals. The register is "사람인이 우리 들으면 좀 의외다" — playful, slightly self-aware, never corporate-HR. Compare to Wanted's polished "growth blue" voice or Saramin's neutral marketplace tone — Jumpit deliberately sounds like a Slack message from a tech recruiter who codes on the weekend.
260
+
261
+ ### Voice adjectives
262
+ 1. **Vernacular** — casual contractions, trailing 's' for English-style plurals on Korean nouns, hashtag-style section names.
263
+ 2. **Tech-fluent** — assumes the reader knows what DevOps, QA, K-유니콘, 부트캠프, AI School mean without unpacking.
264
+ 3. **Slightly playful** — emoji-adjacent without using emoji; ".zip" / "꿀" / "T다" / "MZ" idiom adjacent to factual labels.
265
+
266
+ ### Do / Don't
267
+
268
+ | Do | Don't |
269
+ |----|-------|
270
+ | "이번주 인기 포지션" | "금주 추천 채용공고를 확인하세요" (corporate-HR) |
271
+ | "내 연봉 앞자리가 바뀌는 포지션" | "고연봉 채용 정보 확인" (generic-marketplace) |
272
+ | "신입 개발자를 위한 더.루키 포지션" | "신입 개발자 대상 채용" (formal) |
273
+ | "기술스택 / 경력 / 지역 / 태그" filter labels (single-word, comma-aligned) | "원하시는 기술 스택을 선택해 주세요" (formal-imperative) |
274
+
275
+ ### Voice samples *(OmD-original characterisations in the same register — not lifted from Jumpit)*
276
+
277
+ 1. "이번주 가장 떡상하는 포지션 모음"
278
+ 2. "프론트인데 백엔드도 좀 보고싶다면"
279
+ 3. "팀 분위기 좋다 소문난 회사들"
280
+
281
+ All three are illustrative — derived from the *shape* of Jumpit voice (English-keyword inlining + trailing slang + section-as-curation framing), but no observed Jumpit phrasing was reproduced verbatim.
282
+
283
+ ---
284
+
285
+ ## 11. Brand Narrative
286
+
287
+ Jumpit launched as Saramin HR's answer to a specific market gap: by 2019, Korea's developer-recruitment funnel had bifurcated into "premium curated" (Wanted, Programmers) and "high-volume listings" (the parent Saramin marketplace), with no Saramin-operated channel speaking directly to engineers in their own vocabulary. Saramin's challenge: how do you build credibility with developers who associate the parent brand with résumé spam and recruiter cold-outreach? The answer was operational separation — a different domain (`jumpit.co.kr`, later consolidated to `jumpit.saramin.co.kr`), a different voice (developer-vernacular, not corporate-HR), and a visual language (sharp 0px corners, terminal-prompt green, binary type weight) that signals "this is not the same product as the parent."
288
+
289
+ The colour choice itself is a positioning statement. Where Wanted owns `#0066FF` "growth blue" and Programmers leans into a clean blue-and-white code-academy aesthetic, Jumpit picked `#00DD6D` — a green that reads closer to a terminal cursor than to a brand-marketing palette. Then they made the bold move: **restrict it to two appearances per surface.** Most Korean services treat brand colour as something to splash; Jumpit treats it like a syntax highlight. The discipline reads as taste to engineers and as confidence to recruiters.
290
+
291
+ Parent context (factual, not narrative): Saramin HR (KOSDAQ 143240) is the operator. Founded 2005, headquartered in Guro-gu Seoul. Jumpit positions itself within Saramin's portfolio as the engineer-facing channel — companion brands at the parent include the generalist Saramin marketplace, the freelance platform Saramin 잡스, and the headhunter-network Saramin 서치. Specific founder/launch quotes were not located at OmD attribution fidelity in public English-language sources — flagged for future re-research if needed.
292
+
293
+ ---
294
+
295
+ ## 12. Principles
296
+
297
+ 1. **One brand colour, two appearances.**
298
+ *UI implication*: `#00DD6D` is reserved for the active state of single-select controls and a single eyebrow accent per surface. Audit-fail if it appears more than twice on a screen.
299
+
300
+ 2. **Sharp by default, pilled by role.**
301
+ *UI implication*: Cards and surfaces are 0px-radius. Pill radii (8 / 20 / 100) are reserved for interactive controls and encode control class — never use a pill radius on a static surface.
302
+
303
+ 3. **Type carries hierarchy, not colour.**
304
+ *UI implication*: Build hierarchy with weight (400 vs 700) and size (16 → 24 → 32). Don't tint a section heading green to make it pop — make it 24/700 `#222` like everything else.
305
+
306
+ 4. **Depth via tint, never shadow.**
307
+ *UI implication*: `box-shadow: none` is the default. If you need to indicate "this is a different surface tier," use `#FBFBFB` against `#FFFFFF`. No card lift, no hover shadow.
308
+
309
+ 5. **Speak in developer vernacular, write in fresh copy.**
310
+ *UI implication*: Section labels are one or two Korean words plus an optional English keyword inline. Avoid honorific imperatives ("선택해 주세요"). Don't lift Jumpit copy verbatim — write in the same register.
311
+
312
+ ---
313
+
314
+ ## 13. Personas
315
+
316
+ *Personas below are inferred from publicly observable Jumpit + Saramin positioning. They are not sourced from a published Jumpit research artefact and should be treated as illustrative downstream context, not as ground truth.*
317
+
318
+ 1. **연차 3-7년 백엔드 개발자, 이직 탐색 모드**
319
+ Currently employed at a Series-B SaaS in Pangyo. Browses `/positions` filtered to 서버/백엔드 + 5-10년 차 + 강남/판교/원격. Reads the "꿀 피드" weekly because it shows comp data she can't get from her manager.
320
+
321
+ 2. **3년차 프론트엔드, MZ vocabulary native**
322
+ Reads section labels like "요즘 폼 미친 기업s" without irony. Filters by 기술스택 React + TypeScript and ignores any posting that doesn't list a comp range. Treats Jumpit and Wanted as competing tabs in the same browser window.
323
+
324
+ 3. **부트캠프 신입, "더.루키" hunter**
325
+ Just finished 위코드 / 크래프톤 정글 / 우아한테크코스. Lives in the "신입 개발자를 위한 더.루키 포지션" thematic curation row on the home page. Uses Jumpit's "개발자 인터뷰" content as their primary "what's that company actually like" channel.
326
+
327
+ 4. **테크 리크루터 at a Saramin enterprise customer**
328
+ Manages the company-side dashboard (out of scope for this reference). Logs in to the 기업 서비스 surface to post and review applicants. Cares that Jumpit's brand looks credible enough to engineers that the inbound funnel converts.
329
+
330
+ ---
331
+
332
+ ## 14. States
333
+
334
+ | Category | Observed | Notes |
335
+ |---|---|---|
336
+ | **Empty** | inferred | Empty-state visuals (no filtered results / empty 이력서) not captured this pass. Likely follows the same `#FFF` / `#444` 14/400 typography rule with no illustration — flagged for UPDATE. |
337
+ | **Loading** | inferred | No skeleton screens captured. Likely uses Next.js streaming SSR — flagged for UPDATE. |
338
+ | **Error (form)** | not captured | No form errors triggered. Downstream should adopt a Toss-family `#F04452` error ink at 14/700 below the failing input. |
339
+ | **Error (page)** | not captured | 404 / 500 page chrome not inspected. |
340
+ | **Success** | not captured | Application-submitted state pending UPDATE pass. |
341
+ | **Skeleton** | not captured | — |
342
+ | **Disabled (button)** | not captured | Likely a `#444` / 50% alpha pattern (inferred) — flagged. |
343
+ | **Active (filter chip)** | ✓ captured | `#00DD6D` bg + `#FFF` text + 16/700 — the canonical active-state token in the system. |
344
+ | **Hover** | not captured | No mouse-interaction simulated. Likely a `#222` tint on the black primary CTA + a soft `#F5F5F5` plate on chips — flagged. |
345
+ | **Focus (a11y)** | not captured | Keyboard focus-ring colour and width pending — important UPDATE candidate. |
346
+
347
+ ---
348
+
349
+ ## 15. Motion & Easing
350
+
351
+ Motion tokens were **not captured** this pass (single static page-load CDP inspection). Observable behaviours:
352
+
353
+ - Hero carousel auto-rotates 3-up promotion cards (timing not measured — likely 4-6s dwell).
354
+ - Filter-chip selection transition is instant or very short (<150ms inferred from styled-components default behaviour).
355
+ - No page-load fade / hero parallax / scroll-triggered reveal observed in the rendered snapshot.
356
+
357
+ **Recommended downstream defaults** (Toss style-ref per skill rule P-1, since Jumpit publishes no motion table):
358
+
359
+ | Token | Duration | Easing | Use |
360
+ |---|---|---|---|
361
+ | `motion/instant` | 0ms | none | filter chip active flip |
362
+ | `motion/fast` | 120ms | `cubic-bezier(0.4, 0, 0.2, 1)` | button press, hover wash |
363
+ | `motion/standard` | 200ms | `cubic-bezier(0.4, 0, 0.2, 1)` | dropdown open, modal slide |
364
+ | `motion/slow` | 400ms | `cubic-bezier(0.16, 1, 0.3, 1)` | carousel slide |
365
+
366
+ These are **inferred placeholders** — Jumpit's actual production durations should be captured in a follow-up pass with CDP `Animation.enable` + `transitionstart` event recording.
@@ -1,3 +1,17 @@
1
+ ---
2
+ id: kakao
3
+ name: Kakao
4
+ country: KR
5
+ category: consumer-tech
6
+ homepage: "https://www.kakao.com"
7
+ primary_color: "#fee500"
8
+ logo:
9
+ type: simpleicons
10
+ slug: kakaotalk
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ---
14
+
1
15
  # Design System Inspiration of Kakao (카카오)
2
16
 
3
17
  ## 1. Visual Theme & Atmosphere
@@ -1,6 +1,21 @@
1
1
  ---
2
- omd: 0.1
3
- brand: KakaoBank
2
+ id: kakaobank
3
+ name: KakaoBank
4
+ country: KR
5
+ category: fintech
6
+ homepage: "https://www.kakaobank.com"
7
+ primary_color: "#000000"
8
+ logo:
9
+ type: simpleicons
10
+ slug: kakaotalk
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ds:
14
+ name: KakaoBank Brand Resource
15
+ url: "https://www.kakaobank.com/view/about/brand/resource"
16
+ type: brand
17
+ description: "KakaoBank Brand Identity Guidelines V2.0 — logo system, KakaoBank Yellow #FFE300, downloadable CI assets."
18
+ og_image: "https://www.kakaobank.com/view/images/kkb_og_img.png"
4
19
  ---
5
20
 
6
21
  # Design System Inspiration of KakaoBank (카카오뱅크)
@@ -1,6 +1,21 @@
1
1
  ---
2
- omd: 0.1
3
- brand: KakaoPay
2
+ id: kakaopay
3
+ name: KakaoPay
4
+ country: KR
5
+ category: fintech
6
+ homepage: "https://www.kakaopay.com"
7
+ primary_color: "#ffeb00"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=kakaopay.com&sz=256"
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ds:
14
+ name: KakaoPay Story
15
+ url: "https://story.kakaopay.com/"
16
+ type: brand
17
+ description: "KakaoPay's design narrative blog — 3 pillars (Color · Icon · Type), the 3:1 contrast accessibility policy, and the KPDS internal design system context."
18
+ og_image: "https://i0.wp.com/story.kakaopay.com/wp-content/uploads/2024/03/kakaopay_thumb.png"
4
19
  ---
5
20
 
6
21
  # Design System Inspiration of KakaoPay
@@ -1,6 +1,20 @@
1
1
  ---
2
- omd: 0.1
3
- brand: Karrot
2
+ id: karrot
3
+ name: Karrot
4
+ country: KR
5
+ category: consumer-tech
6
+ homepage: "https://www.karrotmarket.com"
7
+ primary_color: "#ff7e36"
8
+ logo:
9
+ type: github
10
+ slug: daangn
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ds:
14
+ name: SEED Design
15
+ url: "https://seed-design.io"
16
+ type: system
17
+ description: Karrot (Daangn)'s open-source design system for marketplace apps.
4
18
  ---
5
19
 
6
20
  # Design System Inspiration of Karrot (당근)
@@ -0,0 +1,195 @@
1
+ ---
2
+ id: kbank
3
+ name: K bank
4
+ country: KR
5
+ category: fintech
6
+ homepage: "https://www.kbanknow.com"
7
+ primary_color: "#0046ff"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=kbanknow.com&sz=256"
11
+ verified: "2026-05-14"
12
+ omd: "0.1"
13
+ ---
14
+
15
+ # K bank — Design Reference
16
+
17
+ > 케이뱅크 — Korea's first internet-only bank (launched 2017). State-licensed digital-only commercial bank; sibling category to Toss Bank and Kakao Bank, but with the most "traditional bank" posture of the three: navy-led, document-forward, partnership-driven (KT, Woori, Bain, MBK).
18
+
19
+ K bank reads as a **regulated bank that happens to be app-native**, not a fintech wearing a bank licence. The visual signal is conservative, the IA is product-catalog-first, and the language defaults to formal `~합니다` rather than the colloquial `~해요` of Toss. The interesting tension: an otherwise austere navy palette is paired with one shockingly bright lime (`#B6F23D`) reserved as the energetic accent — a calculated rule-breaker.
20
+
21
+ ---
22
+
23
+ ## 1. Visual Theme & Atmosphere
24
+
25
+ **K bank** is South Korea's first internet-only bank (launched 2017, KT-led consortium → 2021 KT Strategic Investment recap → 2024 IPO preparation). The product surface reads as a neobank that refuses both fintech-startup playfulness and legacy-bank gravitas: a near-white canvas anchored by a single signature **K bank Navy `#0114A7`**, an energetic **Lime `#B6F23D`** accent used sparingly on activation states, and a tight Pretendard type ladder. Skip-link primary, body 16px / 400 #1A1A1A on white, fixed 1280px desktop canvas — the chrome is sober, mobile-first-translated-to-desktop, and image-replacement H1 (font-size:0) is still in use, which surfaces concrete a11y debt (`a11y_landmark_violation` documented in §8). Where the prior batch's Toss leans warm-trust and KakaoBank leans playful-yellow, K bank leans **executive-restraint**: the brand is the navy, the navy is the trust, and chrome elsewhere stays out of the way.
26
+
27
+ ## 1.1 Foundation tokens (live-captured)
28
+
29
+
30
+ All values pulled from `getComputedStyle(document.documentElement)` on `https://www.kbanknow.com` — see `assets/_reference/tokens.json` for the full machine-readable set and `assets/_reference/.live-inspect-proof.json` for raw samples.
31
+
32
+ ### Color — brand
33
+ | Token | Value | Role |
34
+ |---|---|---|
35
+ | `--color-navy` | `#0114A7` | Signature K bank navy. Sole brand-positive primary. Used on skip-link, CTAs, key labels. |
36
+ | `--color-lime` | `#B6F23D` | Energetic accent. Sparingly applied — never on body text, never on form chrome. |
37
+ | `--txt-pri-sell` | `#047AF1` | "Sell" / promo blue — used for product-detail callouts adjacent to navy primary. |
38
+
39
+ ### Color — neutral ramp (11 stops, dual-emitted as `--color-g*` and `--txt-g*`)
40
+ `g1000 #020616` → `g900 #252B37` → `g800 #3B4659` → `g700 #4D596F` → `g600 #67748E` → `g500 #8694B1` → `g400 #C8D2E4` → `g300 #E0E6F1` → `g200 #EDF1F7` → `g100 #F7F9FD` → `w100 #FFFFFF`. Cool-leaning grayscale (blue-tinted, not neutral) — keeps the ramp coherent with the navy primary.
41
+
42
+ ### Color — semantic state
43
+ | State | Bg | Txt | Use |
44
+ |---|---|---|---|
45
+ | info | `#D1ECFF` | `#066AE5` | informational banner |
46
+ | action | `#E6EBFF` | `#2539E9` | promo / opportunity callout |
47
+ | neutral | `#EDF1F7` | `#4D596F` | quiet badge / chip |
48
+ | error | `#FFE5E0` | `#E23A32` | failure / fraud alert |
49
+
50
+ ### Color — extended palette
51
+ `bu800 #066AE5` · `re700 #E23A32` · `og600 #E46F00` · `yl600 #B78F01` · `lm600 #69A305` · `in700 #4262FF`. Six muted hues, each kept dark/saturated enough to pass AA against `#FFFFFF`.
52
+
53
+ ### Typography
54
+ - **Primary**: `Pretendard K Edition` — the Korean-optimised cut of the open-source Pretendard family. Single global family; no serif/display split.
55
+ - **Stack**: `Pretendard K Edition, -apple-system, system-ui, Roboto, Helvetica Neue, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, sans-serif`.
56
+ - **Body**: 14px / 400 / line-height `normal`.
57
+ - **CTA**: 18px / 500 (medium, not bold) / 56px height / 12px radius. This is the only widely-rounded surface — see §3.
58
+
59
+ ### Radius
60
+ - CTA only: `12px`.
61
+ - Everything else observed: `0px`. **Sharp orthogonal blocks dominate.** This is a deliberate, conservative-bank signal.
62
+
63
+ ### Shadow
64
+ - Not used on the marketing root. Elevation conveyed through 1px borders and `--color-g200/g300` background fills, not Z-axis.
65
+
66
+ ---
67
+
68
+ ## 2. Layout & grid
69
+
70
+ - **Fixed 1280px desktop canvas.** No fluid breakpoint observed on the marketing surface; mobile app is the primary product channel, web is the catalog/regulatory mirror.
71
+ - Body width measured live at `1280px`, height `1126px` above-the-fold for the landing surface.
72
+ - Three vertical bands: top utility row → primary nav → product-tile grid → 새소식/공지 list → footer-equivalent block.
73
+ - No `<header>` / `<nav>` / `<footer>` / `<main>` landmarks — all chrome is `<div class="…">`. Logged as a11y debt in §11.
74
+
75
+ ---
76
+
77
+ ## 3. Component DNA
78
+
79
+ **Buttons**: 56px tall × 12px radius × 18px / 500 type × navy (`#0114A7`) fill + white text. Medium weight, not bold — a small but distinctive choice; most KR finance peers default to 600/700.
80
+
81
+ **Skip-link**: Renders visibly when focused as `padding: 10px 20px; background: #0114A7; color: #fff;` — a rare bank that ships a working "본문 바로가기" affordance.
82
+
83
+ **Links**: Default to `g1000 #020616` body color, underline on hover (not inline-styled — relies on Pretendard's tight optical settings to keep dense 14px nav legible).
84
+
85
+ **Cards / product tiles**: Square-cornered (`0px`), separated by 1px borders in `--color-g300 #E0E6F1`, internal padding generous. No drop-shadow.
86
+
87
+ **Form chrome**: `<input>` elements observed but kept off-DOM until interaction (`display:none` on landing) — the marketing surface is read-only, transactional flows live in the app.
88
+
89
+ **Logo treatment**: `<h1 class="logo">` with `font-size: 0` (image-replacement) — text content `개인 / 기업` is the persona switcher, the visible logo is an inline SVG.
90
+
91
+ ---
92
+
93
+ ## 4. Iconography & illustration
94
+
95
+ - Minimal illustration on the marketing root (8 `<img>` total). The brand leans on type + flat color blocks for hierarchy, not custom artwork.
96
+ - No icon system surfaced in `:root` tokens — icons are inlined or asset-based, not tokenised.
97
+
98
+ ---
99
+
100
+ ## 5. Motion
101
+
102
+ - No CSS transitions/animations declared at `:root` level (no `--motion-*` or `--duration-*` tokens). The marketing surface is static; in-app motion is out-of-scope for web inspection.
103
+
104
+ ---
105
+
106
+ ## 6. Information architecture
107
+
108
+ Four-tab primary nav: `개인 · 기업 · 은행소개 · 상품안내 · 고객센터 · 혜택`. Catalog-first IA, not task-first.
109
+
110
+ | Group | Children |
111
+ |---|---|
112
+ | 은행소개 | 케이뱅크 · 투자정보 · 인재채용 · 새소식 |
113
+ | 상품안내 | 예적금 · 대출 · 카드 · 투자 · 서비스 |
114
+ | 고객센터 | 이용안내 · 소비자보호 · 금융사기대응 · 자료실 · 증명서 · 인증서 |
115
+ | 혜택 | (single landing) |
116
+
117
+ 136 anchors on the landing surface. This is a **directory-style bank site**, not a product funnel. Compare Toss, which collapses everything into a single product narrative.
118
+
119
+ ---
120
+
121
+ ## 7. Content patterns
122
+
123
+ - **Notice-led hero**: top of the marketing root surfaces the most recent 공지사항 (e.g. K-패스 캐시백 지연 안내, 2026.05.06) — regulatory transparency placed above promotion.
124
+ - **Date stamps everywhere**: every notice carries `YYYY.MM.DD` prefix. Provenance > excitement.
125
+ - **Product naming**: short, formal nouns (`예적금 / 대출 / 카드 / 투자`) rather than benefit-led marketing names. Trust signal.
126
+
127
+ ---
128
+
129
+ ## 8. Accessibility posture
130
+
131
+ - ✓ Skip-link present and styled for focus visibility.
132
+ - ✓ `lang="ko-KR"` declared.
133
+ - ✓ Semantic heading outline H1→H2→H3 is logical.
134
+ - ✗ No landmark elements (`<header>`, `<nav>`, `<main>`, `<footer>`).
135
+ - ✗ `font-size: 0` logo pattern requires explicit `aria-label` — not verified on this pass.
136
+ - ✗ Fixed 1280px canvas blocks responsive zoom on small viewports.
137
+
138
+ Overall: meaningful effort on focus order and language tagging; structural semantics behind 2026 norms.
139
+
140
+ ---
141
+
142
+ ## 9. Voice (fresh paraphrase — NOT verbatim)
143
+
144
+ - Formal Korean, `~합니다` register throughout. K bank does not use Toss-style colloquial `~해요`.
145
+ - Headlines are nouns or noun-phrases, not promises. "예적금" not "돈을 모아보세요".
146
+ - Notices lead with the consequence and the date, then the explanation. Apology language is reserved and short.
147
+
148
+ **Don't write**: chatty contractions, emoji, second-person imperatives.
149
+ **Do write**: dated, dispassionate, action-noun headers with a single supporting sentence.
150
+
151
+ ---
152
+
153
+ ## 10. What to steal (and what not to)
154
+
155
+ **Steal**
156
+ 1. The dual-emitted token system (`--color-g*` and `--txt-g*` pointing at the same values) — lets product teams reason about role separately from value.
157
+ 2. The single navy + single lime accent. Disciplined two-color brand.
158
+ 3. Notice-above-promotion landing pattern. Trust-first IA.
159
+ 4. Cool-tinted neutral ramp — keeps grays from clashing with the navy primary.
160
+
161
+ **Don't steal**
162
+ 1. The 0px radius everywhere except CTA — reads dated in 2026 unless you're deliberately signalling "regulated institution".
163
+ 2. Fixed 1280px canvas. Not viable for any modern surface.
164
+ 3. `<div>`-only chrome. Use real landmarks.
165
+ 4. `font-size: 0` image-replacement on H1 logo. Use SVG + `aria-label`.
166
+
167
+ ---
168
+
169
+ ## 11. Open questions / gaps
170
+
171
+ - **Tier 1 official DS lookup — negative result documented.** K bank does **not** publish a public design system site (no `design.kbanknow.com`, no Figma community kit, no GitHub `kbank-design` org as of 2026-05-14). The `:root` token system shipped in production CSS is the closest public artifact. Compared to Toss (Toss Design System site) or Kakao (Kakao Design site), K bank has chosen not to externalise its system.
172
+ - Mobile-app token parity unknown — web tokens may diverge from in-app values.
173
+ - Motion / animation tokens not exposed to web; would need APK inspection to confirm.
174
+
175
+ ---
176
+
177
+ ## 12. Sources & verification
178
+
179
+ - **Tier 1 — Live inspect (production)**: `https://www.kbanknow.com/ib20/mnu/PBKMAN000000` via CDP `:9222` / `Runtime.evaluate` / `getComputedStyle`. 6 raw element samples + 43 CSS variables + 7 observed color frequencies captured. See `assets/_reference/.live-inspect-proof.json`.
180
+ - **Tier 1 — Official DS site**: **No public design system found.** Searched: `design.kbanknow.com` (no DNS), GitHub `kbanknow` / `kbank` orgs (no design-system repo), Figma Community (no official K bank kit). Negative result documented here as authoritative.
181
+ - **Tier 2 — Third-party indexes**: `getdesign.md/kbank` empty; `styles.refero.design/?q=kbank` and `?q=케이뱅크` both empty. Consistent with the systemic finding logged in `2026-05-13-kr10.md` (Korean coverage is weak on English-tooling-oriented directories).
182
+ - **Tier 2 — Press / corp**: `kbanknow.com/ib20/mnu/PBKINT000000` (은행소개), DART filings (regulated bank, public disclosures).
183
+ - **Tier 3 — Reconciliation**: All §1-§3 tokens are Tier 1 live-captured. §6 IA is Tier 1 DOM-derived. §9 voice is Tier 1 observed (notices/headings on production), paraphrased only — no verbatim copy reused. §10-§11 are analyst interpretation.
184
+
185
+ **Conflicts unresolved**: none — Tier 1 live capture is the single source of truth on this pass, with negative Tier 1 official-DS result explicitly documented.
186
+
187
+ **Verified**: 2026-05-14.
188
+
189
+ ---
190
+
191
+ ## 13. IP & guardrails
192
+
193
+ - Brand assets (logo, name, navy `#0114A7`) referenced for inspiration only — not redistributed.
194
+ - No verbatim taglines or copy lifted from kbanknow.com. §9 voice paragraph is a fresh analyst paraphrase of register and structure, not transcription.
195
+ - Token values are facts (CSS custom property values) and not protectable expression; they are reproduced here for engineering reference under fair-use analytical purpose.