oh-my-design-cli 1.1.0 → 1.2.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.
- package/README.ja.md +7 -7
- package/README.ko.md +7 -7
- package/README.md +7 -7
- package/README.zh-TW.md +7 -7
- package/agents/omd-ux-writer.md +1 -1
- package/data/architecture-proposals/2026-05-13-thin-install-fresh-fetch.md +189 -0
- package/data/reference-audits/2026-05-13-kr10.md +132 -0
- package/data/reference-fingerprints.json +291 -2
- package/package.json +1 -1
- package/skills/omd-apply/SKILL.md +1 -1
- package/skills/omd-harness/SKILL.md +3 -3
- package/skills/omd-init/SKILL.md +1 -1
- package/web/references/29cm/DESIGN.md +445 -0
- package/web/references/ably/DESIGN.md +582 -0
- package/web/references/banksalad/DESIGN.md +606 -0
- package/web/references/gangnamunni/DESIGN.md +605 -0
- package/web/references/kakaopay/DESIGN.md +529 -0
- package/web/references/remember/DESIGN.md +445 -0
- package/web/references/socar/DESIGN.md +370 -0
- package/web/references/wanted/DESIGN.md +515 -0
- package/web/references/zigbang/DESIGN.md +457 -0
- package/web/references/zigzag/DESIGN.md +618 -0
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
---
|
|
2
|
+
omd: 0.1
|
|
3
|
+
brand: Zigbang (직방)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Design System Inspiration of Zigbang (직방)
|
|
7
|
+
|
|
8
|
+
## 1. Visual Theme & Atmosphere
|
|
9
|
+
|
|
10
|
+
Zigbang's web product is a study in restraint applied to a data-dense domain. Where almost every other Korean real-estate service crowds the viewport with red flags, yellow "신규!" badges, and saturated promotional overlays, Zigbang renders a near-monochrome map canvas with a near-black neutral (`#171719`) for primary type and a single functional blue (`#0066ff`) reserved for auth and primary interaction. The result reads less like a classified-ad site and more like a financial map tool — the visual register of a Bloomberg terminal compressed into consumer real-estate.
|
|
11
|
+
|
|
12
|
+
The signature typeface is **Pretendard Variable** (open-source Korean/Latin variable font), set on top of a Japanese-locale fallback (`Pretendard JP Variable`) and Apple system stack. This is the same family Toss, Karrot, and a generation of modern Korean apps converged on, but Zigbang uses it with notably lighter intensity than its peers — weight 400 across nav, weight 400 on station chips, and reliance on size + color rather than weight contrast for hierarchy. The disabled state uses transparency on a near-black (`rgba(55, 56, 60, 0.16)` and `rgba(55, 56, 60, 0.28)`) rather than a separate grey, which keeps the entire surface chromatically consistent — every element on the page is some opacity of the same near-black.
|
|
13
|
+
|
|
14
|
+
The brand mark is the one place warmth enters. Following the 2022 "Beyond Home" rebrand, the logo retains Zigbang's signature **orange** — described by the company as "deeper, more premium" than the original — paired with a house glyph encircled by an expanding ellipse, signifying the company's pivot from listings service to "Home OS". On the production surface this orange is reserved almost entirely for brand chrome and never bleeds into functional UI. The product UI is neutral; the brand mark carries the warmth. This separation is intentional and is the most important structural rule of the system: **orange = brand, blue = action, near-black = surface**.
|
|
15
|
+
|
|
16
|
+
Radius is generous but never frivolous. 8px on nav buttons, 10px on station chips and pagination, 9999px on icon-only and bookmark controls, 50% for circular bookmark toggles. There are no pill-shaped CTAs on the map surface — the closest is the 10px station chip, which reads as comfortable rather than playful. The map dominates the layout; chrome is built around not obscuring it.
|
|
17
|
+
|
|
18
|
+
**Key Characteristics:**
|
|
19
|
+
- **Pretendard Variable** as the universal typeface across nav, body, chips, and headings
|
|
20
|
+
- **Near-black `#171719`** as the primary text neutral — not pure black, slightly warm, designed to sit on a white map canvas without harshness
|
|
21
|
+
- **Functional blue `#0066ff`** as the single interactive color (auth links, primary CTA) — never used decoratively
|
|
22
|
+
- **Signature orange** as brand-mark-only — does not appear on functional UI on the map surface
|
|
23
|
+
- **Disabled-by-transparency** (`rgba(55,56,60,0.16)` / `0.28`) rather than dedicated grey tokens — every UI state is an opacity stop of the same neutral
|
|
24
|
+
- 8/10/9999/50% radius scale — 8px nav, 10px chips & paginators, 9999px icon controls, 50% circular toggles
|
|
25
|
+
- Weight 400 dominant — Zigbang resists the bold-Korean-headline default
|
|
26
|
+
- White map canvas is the design's largest surface — chrome must never compete with it
|
|
27
|
+
|
|
28
|
+
## 2. Color Palette & Roles
|
|
29
|
+
|
|
30
|
+
### Brand
|
|
31
|
+
- **Zigbang Orange** (`#FF6600` approx, premium tone): Logo mark only following 2022 "Beyond Home" rebrand. Encircles the house-glyph in the wordmark. *Not* used in functional product UI on the map surface.
|
|
32
|
+
- **Map Canvas White** (`#FFFFFF`): The dominant surface of the entire product — the map background that listing chrome floats over.
|
|
33
|
+
|
|
34
|
+
### Text Neutrals
|
|
35
|
+
- **Heading / Primary Text** (`#171719`, observed `rgb(23, 23, 25)`): Near-black with a slight warm cast. Used for the search button, nav labels, station-name chip text, and primary content.
|
|
36
|
+
- **Bookmark Icon** (`#333333`, observed `rgb(51, 51, 51)`): Slightly lighter than primary text — used on icon-only bookmark toggles in the listing rail.
|
|
37
|
+
|
|
38
|
+
### Interactive
|
|
39
|
+
- **Action Blue** (`#0066ff`, observed `rgb(0, 102, 255)`): The single functional accent. Used on auth links ("회원가입/로그인"), primary text-link CTAs, and active states. Reserved — does not appear decoratively.
|
|
40
|
+
|
|
41
|
+
### Disabled / Muted (opacity tokens)
|
|
42
|
+
- **Muted 28%** (`rgba(55, 56, 60, 0.28)`): Bookmark-this-position icons, secondary disabled controls.
|
|
43
|
+
- **Muted 16%** (`rgba(55, 56, 60, 0.16)`): Paginator inactive arrows, deep-disabled states.
|
|
44
|
+
|
|
45
|
+
### Surface
|
|
46
|
+
- **Page Background** (`#FFFFFF`): Map canvas and floating panel backgrounds.
|
|
47
|
+
- **Transparent Chrome** (`rgba(0, 0, 0, 0)`): Nav buttons sit on transparent backgrounds — chrome is structured by typography, not by fill.
|
|
48
|
+
|
|
49
|
+
### Notes on the orange/blue split
|
|
50
|
+
Pre-2022, Zigbang's product UI itself was orange-tinted. The "Beyond Home" rebrand re-cast orange as a brand-only signal and migrated interactive UI to neutral + blue. This is the system Zigbang now ships. The orange wordmark reads as warm and human; the product reads as technical and data-rich. This split is the brand's most distinctive design decision and the reason Zigbang doesn't feel like a competing listings site.
|
|
51
|
+
|
|
52
|
+
## 3. Typography Rules
|
|
53
|
+
|
|
54
|
+
### Font Family
|
|
55
|
+
- **Primary**: `"Pretendard Variable"`, with fallback chain `"Pretendard JP Variable", -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif`
|
|
56
|
+
- **OpenType Features**: standard; Pretendard's variable axis is used implicitly via `font-weight` values
|
|
57
|
+
|
|
58
|
+
### Hierarchy
|
|
59
|
+
|
|
60
|
+
| Role | Font | Size | Weight | Color | Notes |
|
|
61
|
+
|------|------|------|--------|-------|-------|
|
|
62
|
+
| Base body | Pretendard Variable | 16px | 400 | `#171719` | Browser default body text inherits this |
|
|
63
|
+
| Nav button label | Pretendard Variable | 14px | 400 | `#171719` (default) / `#0066ff` (auth) | 7px 14px padding, 32px tall |
|
|
64
|
+
| Search button (icon) | Pretendard Variable | 24px | 400 | `#171719` | Icon-only, 24px glyph, 9999px hit area |
|
|
65
|
+
| Station chip | Pretendard Variable | 22px | 400 | `#171719` | Comfortable size — map labels are read at distance |
|
|
66
|
+
| Paginator arrows | Pretendard Variable | 20px | 400 | `rgba(55,56,60,0.16-0.28)` | Disabled-by-default |
|
|
67
|
+
| Bookmark icon | Pretendard Variable | 22-24px | 400 | `#333333` / `rgba(55,56,60,0.28)` | Glyph-only |
|
|
68
|
+
| Heading (h2 example "NOTICE") | Pretendard Variable | 13px | 700 | `#000000` | Headings are *smaller* than body — Zigbang uses weight, not size, to mark structure in chrome |
|
|
69
|
+
|
|
70
|
+
### Principles
|
|
71
|
+
- **Pretendard Variable is non-negotiable.** The fallback chain to `Pretendard JP Variable` shows the company expects the same family across all Korean and JP locales — no per-locale type swap.
|
|
72
|
+
- **Weight 400 as default.** Most Korean services lean on weight 600-700 for nav and chip labels to "feel substantial". Zigbang stays at 400 and uses size + color separation instead. This is the source of the system's quiet confidence.
|
|
73
|
+
- **Headings can be smaller than body.** The `h2 NOTICE` heading at 13px / 700 against 16px / 400 body is the inverted convention: when chrome must label rather than dominate, Zigbang shrinks the heading and adds weight. This is deliberate and worth preserving.
|
|
74
|
+
- **Color carries hierarchy.** With weight pinned to 400, hierarchy is built by `#171719` → `#333333` → `rgba(55,56,60,0.28)` → `rgba(55,56,60,0.16)` — a four-stop opacity ramp on a single neutral.
|
|
75
|
+
- **No italic, no underline as decoration.** Underline is reserved for link affordance only. Italic does not appear on the map surface.
|
|
76
|
+
|
|
77
|
+
## 4. Component Stylings
|
|
78
|
+
|
|
79
|
+
### Buttons
|
|
80
|
+
|
|
81
|
+
**Nav Auth Link (회원가입/로그인)**
|
|
82
|
+
- Background: transparent (`rgba(0, 0, 0, 0)`)
|
|
83
|
+
- Text: `#0066ff`
|
|
84
|
+
- Border: none
|
|
85
|
+
- Radius: 8px
|
|
86
|
+
- Padding: 7px 14px
|
|
87
|
+
- Height: 32px
|
|
88
|
+
- Font: 14px Pretendard Variable / 400
|
|
89
|
+
- Use: Auth-related actions in the header — sign-in, sign-up, account entry
|
|
90
|
+
|
|
91
|
+
**Nav Default Link (기업 서비스 etc.)**
|
|
92
|
+
- Background: transparent (`rgba(0, 0, 0, 0)`)
|
|
93
|
+
- Text: `#171719`
|
|
94
|
+
- Border: none
|
|
95
|
+
- Radius: 8px
|
|
96
|
+
- Padding: 7px 14px
|
|
97
|
+
- Height: 32px
|
|
98
|
+
- Font: 14px Pretendard Variable / 400
|
|
99
|
+
- Use: Standard nav entries — non-auth top bar links
|
|
100
|
+
|
|
101
|
+
**Search Trigger (Icon-only)**
|
|
102
|
+
- Background: transparent (`rgba(0, 0, 0, 0)`)
|
|
103
|
+
- Icon: `#171719`
|
|
104
|
+
- Border: none
|
|
105
|
+
- Radius: 9999px (circular hit area)
|
|
106
|
+
- Padding: 0
|
|
107
|
+
- Height: 24px
|
|
108
|
+
- Font: 24px / 400 (glyph)
|
|
109
|
+
- Use: Search-icon button at the right of the top bar
|
|
110
|
+
|
|
111
|
+
### Listing & Map Chrome
|
|
112
|
+
|
|
113
|
+
**Station Chip (map label / region filter, e.g., "강남역")**
|
|
114
|
+
- Background: transparent (`rgba(0, 0, 0, 0)`)
|
|
115
|
+
- Text: `#171719`
|
|
116
|
+
- Border: none
|
|
117
|
+
- Radius: 10px
|
|
118
|
+
- Padding: 7px 9px 7px 11px (asymmetric — extra left for icon-glyph)
|
|
119
|
+
- Height: 32px
|
|
120
|
+
- Font: 22px Pretendard Variable / 400
|
|
121
|
+
- Use: Subway-station and region chips on the map surface — the largest piece of text on the chrome
|
|
122
|
+
|
|
123
|
+
**Bookmark Toggle (listing card)**
|
|
124
|
+
- Background: transparent
|
|
125
|
+
- Icon color (default): `#333333`
|
|
126
|
+
- Icon color (muted/empty state): `rgba(55, 56, 60, 0.28)`
|
|
127
|
+
- Border: none
|
|
128
|
+
- Radius: 50%
|
|
129
|
+
- Padding: 8px
|
|
130
|
+
- Height: 40px
|
|
131
|
+
- Font: 22-24px glyph
|
|
132
|
+
- Use: Save-this-listing toggle on every listing card and map-position pin
|
|
133
|
+
|
|
134
|
+
**Pagination Arrow (이전 / 다음)**
|
|
135
|
+
- Background: transparent
|
|
136
|
+
- Icon: `rgba(55, 56, 60, 0.16)` (disabled/inactive) — becomes `#333333` when active
|
|
137
|
+
- Radius (prev): `10px 0px 0px 10px` (left-rounded only)
|
|
138
|
+
- Radius (next): `0px 10px 10px 0px` (right-rounded only)
|
|
139
|
+
- Padding: 8px
|
|
140
|
+
- Height: 32px
|
|
141
|
+
- Font: 20px / 400
|
|
142
|
+
- Border: none
|
|
143
|
+
- Use: Paired previous/next paginators — the split-corner radius makes the pair read as a single segmented control
|
|
144
|
+
|
|
145
|
+
**Bookmark-this-Position (icon, map pin)**
|
|
146
|
+
- Background: transparent
|
|
147
|
+
- Icon color: `rgba(55, 56, 60, 0.28)` (default)
|
|
148
|
+
- Radius: 9999px
|
|
149
|
+
- Padding: 0
|
|
150
|
+
- Height: 24px
|
|
151
|
+
- Font: 24px glyph
|
|
152
|
+
- Use: "Save this map position" affordance — sits on the map at decision points
|
|
153
|
+
|
|
154
|
+
### Cards & Containers
|
|
155
|
+
- Listing cards on the map surface are predominantly white (`#FFFFFF`) on the white map canvas, separated by 1px hairlines or subtle shadows
|
|
156
|
+
- Border-radius on listing cards: matches the chrome scale (8-10px range observed; specific tokens vary by surface)
|
|
157
|
+
- Shadow: minimal — the map is the dominant visual; cards lift via narrow shadows rather than heavy elevation
|
|
158
|
+
- Padding: aligned to 8px multiples
|
|
159
|
+
|
|
160
|
+
### Inputs & Search
|
|
161
|
+
- Search input is launched as a dedicated mode rather than always-visible on the map; entry is via the search-trigger icon
|
|
162
|
+
- Placeholder reads "Search" (English on the production input observed) — Korean placeholder variants exist on other surfaces
|
|
163
|
+
|
|
164
|
+
### Navigation
|
|
165
|
+
- Header sits on the white canvas with no border-bottom by default; sticky on scroll
|
|
166
|
+
- Logo (Zigbang wordmark) left-aligned
|
|
167
|
+
- Right-side cluster: nav links + auth link in `#0066ff` + icon controls
|
|
168
|
+
- Mobile: collapses to icon-only top bar with hamburger affordance
|
|
169
|
+
|
|
170
|
+
### Map Overlay Components
|
|
171
|
+
The map surface is Zigbang's most distinctive component class. Every overlay must:
|
|
172
|
+
- Float on `#FFFFFF` map canvas without competing with map tiles
|
|
173
|
+
- Use transparent or low-opacity backgrounds where possible
|
|
174
|
+
- Reserve `#0066ff` for primary actions only — overuse drowns the map
|
|
175
|
+
- Use `#171719` near-black for type, never pure black
|
|
176
|
+
- Disable via opacity (`rgba(55,56,60,0.16)`) rather than swap to grey
|
|
177
|
+
- Pin / marker variants live as floating chrome; bookmark toggles use 50% radius
|
|
178
|
+
|
|
179
|
+
### Price Chips (real-estate-domain-specific)
|
|
180
|
+
Price chips on listing cards follow the chip pattern (10px radius, 22px Pretendard, weight 400) but lean on color separation:
|
|
181
|
+
- **Active / featured price**: `#171719` text on white
|
|
182
|
+
- **Past / sold**: `rgba(55, 56, 60, 0.28)` muted neutral
|
|
183
|
+
- **Highlight (new listing, optional)**: `#0066ff` for indicator dot — never as background fill
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
**Verified:** 2026-05-13
|
|
188
|
+
**Tier 1 sources:** zigbang.com/ (home — live DOM, computed-style observation on header buttons, station chips, bookmark toggles, paginators, body); zigbang.com/home/apt/map (map surface — partial inspect; second-pass evaluate disrupted by parallel browser-session tab contention)
|
|
189
|
+
**Tier 2 sources:** getdesign.md/zigbang (no entry — "No designs found for 'zigbang'"); styles.refero.design/?q=zigbang (no public style entry surfaced via search); designcompass.org Beyond Home rebrand commentary (token-light, design rationale only); company.zigbang.com/en/newsroom/view?idx=314 (rebrand announcement, CEO quote, color-direction "deeper, more premium orange" — no hex value published)
|
|
190
|
+
**Conflicts unresolved:** Zigbang's exact brand orange hex is not published publicly. The 2022 rebrand commentary describes the orange as "deeper, more premium" than the original, but no canonical token is exposed in the company-published materials reviewed. The `#FF6600`-approx label in §2 is a conservative estimate aligned with the wordmark; treat as illustrative until token publication is confirmed. The map surface is JS-rendered with a long bootstrap; listing-card and price-chip values in §4 are inferred from the chrome inspected and the visual rendering — exact card-surface tokens (border color, shadow) should be re-verified on a stable inspect session.
|
|
191
|
+
|
|
192
|
+
## 5. Layout Principles
|
|
193
|
+
|
|
194
|
+
### Spacing System
|
|
195
|
+
- Base unit: 4px
|
|
196
|
+
- Observed scale: 4px, 7px, 8px, 9px, 11px, 14px (from button padding `7px 14px` and chip padding `7px 9px 7px 11px`)
|
|
197
|
+
- Asymmetric padding is used deliberately — the 11px-left / 9px-right station chip padding accounts for an embedded glyph
|
|
198
|
+
|
|
199
|
+
### Grid & Container
|
|
200
|
+
- The map surface is the container — full-bleed, edge-to-edge
|
|
201
|
+
- Floating chrome panels (filter rail, listing rail, detail sheet) sit over the map at fixed widths (typically 360-440px)
|
|
202
|
+
- Header is full-width with content-bounded inner padding (~16-24px lateral)
|
|
203
|
+
- No marketing-style centered max-width container on the map surface — the map *is* the layout
|
|
204
|
+
|
|
205
|
+
### Whitespace Philosophy
|
|
206
|
+
- **The map is the negative space.** Zigbang's whitespace is the white map canvas itself. Floating chrome must respect this — no overlay should cover more than ~40% of viewport width at desktop
|
|
207
|
+
- **Asymmetric padding is fine.** The station chip uses `7px 9px 7px 11px` precisely because the leading glyph needs 11px of breathing room and the trailing text only needs 9px. Symmetric padding would feel mechanical
|
|
208
|
+
- **Air over decoration.** No decorative dividers, no badge clusters. If chrome can be removed without losing function, it is removed
|
|
209
|
+
|
|
210
|
+
### Border Radius Scale
|
|
211
|
+
- 8px: nav buttons, standard interactive chrome
|
|
212
|
+
- 10px: station chips, segmented controls (with split-corner application)
|
|
213
|
+
- 9999px (effective ∞): icon-only hit areas, bookmark-position toggles
|
|
214
|
+
- 50%: circular toggles (bookmark on listing card)
|
|
215
|
+
- Split-corner application: paginators use `10px 0 0 10px` / `0 10px 10px 0` to read as a connected pair
|
|
216
|
+
|
|
217
|
+
## 6. Depth & Elevation
|
|
218
|
+
|
|
219
|
+
| Level | Treatment | Use |
|
|
220
|
+
|-------|-----------|-----|
|
|
221
|
+
| Flat (0) | No shadow, transparent background | Nav buttons, page chrome on map |
|
|
222
|
+
| Map-pin lift (1) | Subtle 1-2px shadow on white background | Map markers, station chips with overlay state |
|
|
223
|
+
| Floating panel (2) | Soft shadow, 8-10px radius, white surface | Listing rail, filter rail |
|
|
224
|
+
| Sheet (3) | Stronger shadow, top-radius only (`16px 16px 0 0`) | Bottom-sheet detail panels on mobile |
|
|
225
|
+
| Modal (4) | Backdrop dim (`rgba(0,0,0,0.4-0.5)`) + center-aligned white panel | Sign-in, filter modals |
|
|
226
|
+
| Focus ring | 2px solid `#0066ff` outline | Keyboard focus on interactive elements |
|
|
227
|
+
|
|
228
|
+
**Shadow Philosophy.** Zigbang uses elevation sparingly. The map already implies depth via tile shading and scroll; over-layering shadows on chrome would compete. The system favors *position* over *shadow* — a panel reads as elevated because it floats over the map at a fixed offset, not because it has a heavy drop shadow.
|
|
229
|
+
|
|
230
|
+
## 7. Do's and Don'ts
|
|
231
|
+
|
|
232
|
+
### Do
|
|
233
|
+
- Use Pretendard Variable everywhere with weight 400 as default
|
|
234
|
+
- Reserve `#0066ff` for auth and primary interaction only
|
|
235
|
+
- Use `#171719` (near-black) for all primary text — never pure black
|
|
236
|
+
- Build hierarchy with opacity ramps on `rgba(55,56,60,...)`, not with separate grey tokens
|
|
237
|
+
- Use 10px radius on chips and segmented controls; 8px on nav; 9999px on icon-only
|
|
238
|
+
- Treat the white map canvas as the dominant surface — chrome floats, never dominates
|
|
239
|
+
- Use orange only for the wordmark and brand-chrome moments — never for functional UI on the map
|
|
240
|
+
- Use split-corner radius on paired paginators to read as one segmented control
|
|
241
|
+
- Apply asymmetric padding when a leading glyph needs more breathing room than trailing text
|
|
242
|
+
|
|
243
|
+
### Don't
|
|
244
|
+
- Don't use bold weight (600-700) on nav, chip, or station labels — weight 400 is the signature
|
|
245
|
+
- Don't introduce a second accent color alongside `#0066ff` — the system is single-accent on functional UI
|
|
246
|
+
- Don't use pure black (`#000`) for text — `#171719` is the warmer, on-brand neutral
|
|
247
|
+
- Don't paint the product orange — orange is brand-mark-only post-2022 rebrand
|
|
248
|
+
- Don't use heavy drop shadows on map chrome — the map already implies depth
|
|
249
|
+
- Don't add decorative dividers, badges, or "신규!" flags — Zigbang's restraint is the differentiator vs. competitor real-estate sites
|
|
250
|
+
- Don't use pill-radius (full-round) on long-text CTAs — keep it at 10px max for content chrome
|
|
251
|
+
- Don't ever cover more than ~40% of viewport width with overlay panels at desktop
|
|
252
|
+
|
|
253
|
+
## 8. Responsive Behavior
|
|
254
|
+
|
|
255
|
+
### Breakpoints
|
|
256
|
+
| Name | Width | Key Changes |
|
|
257
|
+
|------|-------|-------------|
|
|
258
|
+
| Mobile | <640px | Bottom-sheet detail; map full-bleed; collapsed nav to hamburger |
|
|
259
|
+
| Tablet | 640-1024px | Side panels become bottom-sheet on narrow tablets; map remains dominant |
|
|
260
|
+
| Desktop | 1024-1440px | Listing rail at left/right of map; full nav surfaced |
|
|
261
|
+
| Large Desktop | >1440px | Listing rail width grows; map expands to fill remaining width |
|
|
262
|
+
|
|
263
|
+
### Touch Targets
|
|
264
|
+
- Bookmark toggle: 40px (`8px padding` + 24px glyph) — comfortably above 44pt iOS guidance
|
|
265
|
+
- Nav buttons: 32px tall — borderline; relies on horizontal padding for tap area
|
|
266
|
+
- Paginators: 32px square — adequate; benefits from split-corner pairing
|
|
267
|
+
- Station chip: 32px — same scale as paginators, intentional for chrome consistency
|
|
268
|
+
|
|
269
|
+
### Collapsing Strategy
|
|
270
|
+
- Map: always present, never collapsed
|
|
271
|
+
- Listing rail: side panel on desktop → bottom-sheet on mobile, swipe-up to expand
|
|
272
|
+
- Filter rail: dropdown chips on desktop → full-screen modal on mobile
|
|
273
|
+
- Nav: full link cluster on desktop → hamburger + search icon on mobile
|
|
274
|
+
- Sign-in CTA: visible as link on desktop → moved into hamburger drawer on mobile
|
|
275
|
+
|
|
276
|
+
### Image Behavior
|
|
277
|
+
- Listing photos in cards crop to fixed aspect (commonly 4:3 or 16:9)
|
|
278
|
+
- Map pins remain at fixed pixel size — no scaling on zoom (avoids visual chaos)
|
|
279
|
+
- Logo wordmark preserves orange at all sizes
|
|
280
|
+
|
|
281
|
+
## 9. Agent Prompt Guide
|
|
282
|
+
|
|
283
|
+
### Quick Color Reference
|
|
284
|
+
- Primary text: Near-black (`#171719`)
|
|
285
|
+
- Body neutral fallback: `#333333`
|
|
286
|
+
- Interactive (auth, primary action): Action Blue (`#0066ff`)
|
|
287
|
+
- Disabled / muted: `rgba(55,56,60,0.16)` (deep) / `rgba(55,56,60,0.28)` (medium)
|
|
288
|
+
- Background: White (`#FFFFFF`)
|
|
289
|
+
- Brand mark only: Premium Orange (~`#FF6600`)
|
|
290
|
+
- Focus ring: `#0066ff`
|
|
291
|
+
|
|
292
|
+
### Example Component Prompts
|
|
293
|
+
- "Create a Zigbang-style nav header on white. Left: Zigbang wordmark in orange. Right: nav links in Pretendard Variable 14px / 400, color `#171719`, 8px radius, 7px 14px padding, transparent background. Auth link uses `#0066ff` text. Search trigger is an icon-only button with 9999px hit area and 24px glyph."
|
|
294
|
+
- "Build a station chip for the map surface. 22px Pretendard Variable / 400, color `#171719`, transparent background, 10px radius, 7px 9px 7px 11px padding (asymmetric for leading glyph), 32px tall."
|
|
295
|
+
- "Design paired paginators (이전 / 다음). 32px square, transparent background. Left arrow uses radius `10px 0 0 10px`, right arrow uses `0 10px 10px 0`. Disabled state: `rgba(55,56,60,0.16)` icon. Active: `#333333` icon. 20px glyph, no border."
|
|
296
|
+
- "Make a bookmark toggle for a listing card. 40px circular button (50% radius), 8px padding, 22-24px heart/star glyph. Default state: `#333333`. Empty/muted: `rgba(55,56,60,0.28)`. Transparent background. No border."
|
|
297
|
+
- "Listing card on the map surface: white background, ~8-10px radius, soft shadow (avoid heavy lifts — the map already implies depth). 16px Pretendard Variable / 400 body. Price emphasized in `#171719`. Bookmark toggle in upper-right corner. Maximum 40% viewport width when floating over the map."
|
|
298
|
+
|
|
299
|
+
### Iteration Guide
|
|
300
|
+
1. Pretendard Variable is non-negotiable across all locales — never swap to a Korean-specific or Japanese-specific family
|
|
301
|
+
2. Weight 400 is the default. Use 700 *only* on tiny labels like a 13px "NOTICE" header — never on nav or content
|
|
302
|
+
3. The map canvas is the largest design surface. Chrome must never compete with it
|
|
303
|
+
4. Action Blue (`#0066ff`) is the only functional accent. Don't add a second accent
|
|
304
|
+
5. Orange is brand-mark-only. Do not paint UI orange — that was the pre-2022 system
|
|
305
|
+
6. Build hierarchy with opacity ramps on `rgba(55,56,60,...)` — not separate grey tokens
|
|
306
|
+
7. Split-corner radius on paired controls is a signature pattern — use it on segmented paginators
|
|
307
|
+
8. Asymmetric padding is fine when content requires it — don't force symmetry on a glyph-prefixed chip
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## 10. Voice & Tone
|
|
312
|
+
|
|
313
|
+
Zigbang's voice is **trustworthy, data-rich, and neutral-utilitarian** — the tone of a regional analyst rather than a salesperson. Where Korean real-estate has historically traded on urgency ("지금 안 보면 놓쳐요!"), Zigbang chose the opposite register after the 2022 rebrand: declarative, fact-forward, and quiet. CEO 안성우's most-quoted founding observation was that "most listings online were 허위매물 (fake)" — the brand voice is the brand's response to that history. Trust is performed through restraint, not through claims of trust.
|
|
314
|
+
|
|
315
|
+
| Context | Tone |
|
|
316
|
+
|---|---|
|
|
317
|
+
| Home / landing | Declarative, vision-forward. "Beyond Home". "공간에서 경험까지". No exclamation. |
|
|
318
|
+
| Map chrome | Functional, label-only. "강남역", "이전", "다음", "검색". Never decorative. |
|
|
319
|
+
| Listing card | Data-first. Price, size, floor, address — in that order, every time. No "great deal!" qualifiers. |
|
|
320
|
+
| Filter chips | Single-noun labels. "전세", "월세", "매매". The category *is* the label. |
|
|
321
|
+
| Empty states | Honest. "조건에 맞는 매물이 없습니다." Never "Oops!" Never an apology animation. |
|
|
322
|
+
| Error states | Mechanism-first. The error names what went wrong; the recovery action follows. |
|
|
323
|
+
| Marketing / company | Vision-register. "Home OS", "주거 혁신", "Beyond Home" — confident but not superlative. |
|
|
324
|
+
| Smart Home product | Slightly warmer, lifestyle-flavored — but still factual. "집의 디지털화". |
|
|
325
|
+
| Customer service | Patient, structured. Real-estate disputes are emotional; voice does not match the emotion, it grounds it. |
|
|
326
|
+
|
|
327
|
+
**Forbidden phrases.** "지금 바로!", "놓치지 마세요!", "최저가 보장", "단 한 번뿐인 기회". Performative urgency. Exclamation marks on routine CTAs. Star ratings as marketing claims (they are data, not a claim). Stacked superlatives ("최고의 프리미엄 매물"). Emoji on functional chrome. "혁신적인" as an adjective applied to UI ("혁신적인 검색 경험") — the word may appear in vision statements but never as marketing dressing.
|
|
328
|
+
|
|
329
|
+
**Voice samples** (illustrative; align with verified vision register from CEO statements):
|
|
330
|
+
- *"Beyond Home."* — Brand-level positioning, verified ([Zigbang Smart Home newsroom](http://en.smarthome.zigbang.com/index/?bmode=view&idx=162547182))
|
|
331
|
+
- *"공간에서 경험까지, 완전히 새롭게."* — From [company.zigbang.com/who-we-are](https://company.zigbang.com/who-we-are), verbatim
|
|
332
|
+
- *"Our next chapter goes beyond listings—we're building the Home OS."* — CEO Ahn Sung-woo, [company.zigbang.com newsroom](https://company.zigbang.com/en/newsroom/view?idx=314), verbatim
|
|
333
|
+
|
|
334
|
+
## 11. Brand Narrative
|
|
335
|
+
|
|
336
|
+
Zigbang was founded in **2010** as **채널브리즈 (Channel Breeze)** by **안성우 (Ahn Sung-woo)**, a Seoul National University Statistics graduate who, while looking for a place to rent after graduation, discovered that the overwhelming majority of online real-estate listings were 허위매물 — fake listings staged to lure renters into calling offices for a different unit ([나무위키 안성우](https://namu.wiki/w/%EC%95%88%EC%84%B1%EC%9A%B0), [아주경제 창업 스토리](https://www.ajunews.com/view/20210805150341038)). The **Zigbang app launched in March 2012**; the parent company renamed itself from 채널브리즈 to 직방 in **October 2015** ([company.zigbang.com/who-we-are](https://company.zigbang.com/who-we-are)).
|
|
337
|
+
|
|
338
|
+
The name itself encodes the founding rejection. *직방* literally reads as "직접 찍은 방" — "rooms photographed directly". The product premise was that every listing on Zigbang would carry the actual photographs of the actual unit, not stock interior photos or competitive bait. This was an aggressive position in a market built on the opposite practice, and it shaped the brand's tone for the next decade: trust is performed through evidence, not asserted through copy.
|
|
339
|
+
|
|
340
|
+
In **November 2022**, Zigbang unveiled the **"Beyond Home"** rebrand — the first identity change since the 2012 launch ([Zigbang Smart Home newsroom](http://en.smarthome.zigbang.com/index/?bmode=view&idx=162547182)). The new wordmark replaced the Korean name with the English "zigbang", added a house glyph encircled by an expanding ellipse, and re-cast the signature orange in a "deeper, more premium" tone. CEO 안성우 framed the rebrand in a published statement: *"Our next chapter goes beyond listings—we're building the Home OS. Zigbang will evolve into a proptech company that supports every part of the residential experience, from home search to home life."* The 2022 rebrand is also when the product UI dropped its orange-heavy chrome and migrated to the neutral + functional-blue system documented here.
|
|
341
|
+
|
|
342
|
+
What Zigbang refuses: urgency-driven marketing (no "right now / limited time" CTAs), fake-listing tolerance (the original founding rejection — operationalized as a verification system), and orange-tinted UI chrome (orange is now strictly a brand signal). What it embraces: a near-monochrome product surface that lets the map carry the design, Pretendard Variable as a quiet typographic baseline, and an English-forward wordmark that signals global ambition without abandoning the Korean meaning of the name.
|
|
343
|
+
|
|
344
|
+
## 12. Principles
|
|
345
|
+
|
|
346
|
+
1. **Show the room, don't claim it.** The founding rejection of fake listings is the entire brand. Every design surface should support evidence (photos, measurements, verified-broker badges) and avoid claims that could be unverified. *UI implication:* Listing card hierarchy is photo → price → size → floor → address. Marketing copy is below this fold, never above.
|
|
347
|
+
2. **The map is the product.** Zigbang's defining design choice is that the map dominates and chrome floats. *UI implication:* No overlay covers more than ~40% of viewport width. Chrome uses transparent backgrounds wherever it can.
|
|
348
|
+
3. **One accent is enough.** `#0066ff` is the only functional color outside the neutral ramp. Adding a second accent would compete with the brand orange and turn the system into a flag of confusion. *UI implication:* No "second CTA color". No urgent-red, no success-green outside semantic states.
|
|
349
|
+
4. **Orange is the wordmark. Blue is the action.** The 2022 rebrand split these intentionally. *UI implication:* If you find yourself painting a CTA orange, stop. Orange belongs to the logo and to brand-chrome moments only.
|
|
350
|
+
5. **Restraint is trust.** In a market saturated with red-flag urgency and yellow promotional badges, the absence of decoration is itself a positioning statement. *UI implication:* When in doubt, remove the badge.
|
|
351
|
+
6. **Weight 400 is the signature.** Most Korean services lean on 600-700 for chrome to "feel substantial". Zigbang's quiet confidence comes from refusing that. *UI implication:* Reserve 700 for tiny labels (13px or smaller) only.
|
|
352
|
+
7. **Hierarchy by opacity, not by hue.** Zigbang's four-stop neutral ramp is a single near-black at four opacity levels. *UI implication:* Don't introduce a "grey-300" or "grey-500" — use `rgba(55,56,60,...)` opacity stops.
|
|
353
|
+
8. **Asymmetry is okay when content asks for it.** The 11px-left / 9px-right chip padding exists because a glyph leads. *UI implication:* Don't force symmetric padding on chrome with leading glyphs.
|
|
354
|
+
|
|
355
|
+
## 13. Personas
|
|
356
|
+
|
|
357
|
+
*Personas below are fictional archetypes informed by publicly observable Zigbang user segments (first-time renters in Seoul, mid-career apartment buyers, returning expats, Smart Home customers), not individual people.*
|
|
358
|
+
|
|
359
|
+
**김지윤, 27, 서울 마포구.** First-time monthly-rental seeker, two years out of university, looking for a 원룸 under ₩600,000 deposit + ₩50만 월세. Uses Zigbang on commute every evening. Trusts Zigbang specifically because she once called about a listing on a competitor and was offered a different unit ("그건 나갔어요, 비슷한 거 보여드릴게요") — Zigbang's verified-photo policy is the entire reason she still has the app. Cares more about the photos being real than about the price being lowest.
|
|
360
|
+
|
|
361
|
+
**박재훈, 41, 경기 성남시 분당구.** Mid-career buyer with a school-age child, looking to upgrade from his current apartment within a 2km school-zone radius. Spends 30+ minutes per session on the map view, comparing 단지 by 단지. Reads every listing's transaction history before contacting an agent. Values that Zigbang's filter chips don't try to upsell premium listings — the data is presented flat and he ranks it himself.
|
|
362
|
+
|
|
363
|
+
**Sarah Lim, 33, returning from London.** Korean-American returning to Seoul after six years abroad, looking for a 전세 oh in 한남동. Uses the English logo and the international-ready interface as a signal that Zigbang is the modern option among Korean real-estate apps. Does not speak fluent Korean for legal documents but can navigate the map and listing chrome confidently because the icon language is universal.
|
|
364
|
+
|
|
365
|
+
**이수진, 52, 부산 해운대구.** Apartment owner who installed Zigbang Smart Home digital locks two years ago and discovered the listings app later through the cross-promo. Uses Zigbang as a household-management tool, not primarily as a real-estate tool. Trusts the brand because the lock has not failed once in 24 months.
|
|
366
|
+
|
|
367
|
+
## 14. States
|
|
368
|
+
|
|
369
|
+
| State | Treatment |
|
|
370
|
+
|---|---|
|
|
371
|
+
| **Empty (map area with no listings)** | Map remains visible. Floating panel center-aligned over the map: 16px Pretendard Variable / 400 in `#171719`: "조건에 맞는 매물이 없어요". One secondary line in muted: "필터를 조정해 보세요." One blue text-link: "필터 초기화". No illustration. |
|
|
372
|
+
| **Empty (saved listings)** | White panel. 16px line in `#171719`: "찜한 매물이 없어요." Below in `rgba(55,56,60,0.28)`: "지도에서 ♡ 아이콘을 눌러 저장할 수 있어요." |
|
|
373
|
+
| **Loading (map first paint)** | Map tiles load progressively; chrome (listing rail) shows skeleton blocks at exact dimensions in a low-opacity neutral. 1.0s shimmer. No spinner over the map itself — the tile load *is* the loading affordance. |
|
|
374
|
+
| **Loading (filter applied)** | Subtle 2px `#0066ff` progress bar at the top of the listing rail. Previous results remain visible underneath. |
|
|
375
|
+
| **Error (network failed)** | Inline banner above the listing rail. Text: 14px / 400 in `#171719`. Pattern: error type + retry link in `#0066ff`. No alarm color — Zigbang trusts the user to read. |
|
|
376
|
+
| **Error (geolocation denied)** | Banner over the map: "위치 권한이 거부되어 현재 위치를 표시할 수 없어요." Recovery: "주소 직접 검색" link in `#0066ff`. |
|
|
377
|
+
| **Success (listing saved)** | Bookmark glyph fills (`#333333` → filled `#FF6600` brand orange — the one place orange touches functional UI, as a momentary state). 2s auto-dismiss confirmation: "찜 목록에 저장됐어요." Sentence case, declarative. |
|
|
378
|
+
| **Success (agent contacted)** | Inline confirmation in the listing detail: "문의가 전송됐어요. 곧 연락받으실 수 있어요." Past tense, factual. |
|
|
379
|
+
| **Skeleton** | Low-opacity neutral blocks (`rgba(55,56,60,0.08-0.12)`) at final dimensions. No shimmer hue — the shimmer is opacity-only, consistent with the entire design system's anti-second-color rule. |
|
|
380
|
+
| **Disabled** | Action Blue actions fade to `rgba(0,102,255,0.3)`. Neutral actions fade to `rgba(55,56,60,0.16)`. Text stays at `rgba(55,56,60,0.28)`. |
|
|
381
|
+
| **Map pin hover** | Pin scales 1.05× over 120ms; no color change. The size delta is enough. |
|
|
382
|
+
| **Listing card hover** | 1-2px lift via subtle shadow increase; never a background-color change. |
|
|
383
|
+
|
|
384
|
+
## 15. Motion & Easing
|
|
385
|
+
|
|
386
|
+
**Durations:**
|
|
387
|
+
|
|
388
|
+
| Token | Value | Use |
|
|
389
|
+
|---|---|---|
|
|
390
|
+
| `motion-instant` | 0ms | State commits, bookmark toggles, focus rings |
|
|
391
|
+
| `motion-fast` | 120ms | Hover lifts, pin scale, button press feedback |
|
|
392
|
+
| `motion-standard` | 200ms | Filter rail open, listing rail slide, dropdown |
|
|
393
|
+
| `motion-slow` | 320ms | Bottom-sheet expand, modal enter |
|
|
394
|
+
| `motion-map` | 400-600ms | Map pan/zoom transitions (Naver Maps / Kakao Maps default) |
|
|
395
|
+
|
|
396
|
+
**Easings:**
|
|
397
|
+
|
|
398
|
+
| Token | Curve | Use |
|
|
399
|
+
|---|---|---|
|
|
400
|
+
| `ease-enter` | `cubic-bezier(0.2, 0.7, 0.3, 1)` | Sheet, modal, rail enter |
|
|
401
|
+
| `ease-exit` | `cubic-bezier(0.4, 0, 1, 1)` | Dismissal |
|
|
402
|
+
| `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Hover, focus, generic two-way |
|
|
403
|
+
| `ease-map` | (provided by underlying map SDK) | Pan/zoom — Zigbang inherits rather than overrides |
|
|
404
|
+
|
|
405
|
+
**Explicitly forbidden.** Spring, bounce, overshoot. `cubic-bezier` middle control above 1.0. Bouncing "drop the pin" pin-animation. Confetti, success-celebration motion. Real-estate decisions are weighty; the motion language must signal stability, not delight.
|
|
406
|
+
|
|
407
|
+
**Signature motions:**
|
|
408
|
+
|
|
409
|
+
1. **Bottom-sheet expand.** On mobile, tapping a listing rail item or a map pin lifts a sheet from the bottom with `motion-slow` / `ease-enter`. The sheet uses top-only radius (`16px 16px 0 0`). Backdrop dims to `rgba(0,0,0,0.4)` simultaneously.
|
|
410
|
+
2. **Map-pin selection.** Tapping a pin scales it to 1.1× with `motion-fast`. The corresponding listing card in the rail scrolls into view with `motion-standard` / `ease-standard`. No color flash — the size delta + scroll is the affordance.
|
|
411
|
+
3. **Filter chip activation.** Tapping a filter chip applies `motion-fast` border/fill change. The listing rail behind it refreshes with a `#0066ff` top progress bar — never a full content blur or replacement.
|
|
412
|
+
4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`. Map pan/zoom respects the underlying SDK's reduced-motion handling. Bottom sheets snap rather than slide. Pin scaling on selection disables entirely.
|
|
413
|
+
|
|
414
|
+
<!--
|
|
415
|
+
OmD v0.1 Sources — Philosophy Layer (sections 10-15)
|
|
416
|
+
|
|
417
|
+
Verified via WebFetch (2026-05-13):
|
|
418
|
+
- https://company.zigbang.com/who-we-are — confirms vision phrasing "Living Forward, Zigbang",
|
|
419
|
+
brand values (Reliability / Innovation / Efficiency / Possibility), and founding timeline
|
|
420
|
+
(채널브리즈 1115/2010 → Zigbang web launch 03/2012 → rename to 직방 10/2015).
|
|
421
|
+
- https://company.zigbang.com/en/newsroom/view?idx=314 — confirms 2022 "Beyond Home" rebrand,
|
|
422
|
+
CEO Ahn Sung-woo's verbatim quote: "Our next chapter goes beyond listings—we're building
|
|
423
|
+
the Home OS. Zigbang will evolve into a proptech company that supports every part of the
|
|
424
|
+
residential experience, from home search to home life." Confirms "deeper, more premium
|
|
425
|
+
orange" color direction.
|
|
426
|
+
- http://en.smarthome.zigbang.com/index/?bmode=view&idx=162547182 — confirms English Beyond
|
|
427
|
+
Home rebrand article, logo description (house icon encircled by expanding ellipse).
|
|
428
|
+
- https://designcompass.org/en/2022/11/30/zigbang-rebranding-beyond-home/ — third-party
|
|
429
|
+
design commentary on the rebrand; rationale rather than specs.
|
|
430
|
+
|
|
431
|
+
Verified via WebSearch (2026-05-13):
|
|
432
|
+
- 안성우 founding story (Seoul National Univ. Statistics graduate, post-graduation rental
|
|
433
|
+
search → discovered prevalent fake listings → founded 채널브리즈 1115/2010): aju news +
|
|
434
|
+
나무위키 + 서울경제 CEO&Story corroborate.
|
|
435
|
+
- 직방 name etymology ("직접 찍은 방"): standard interpretation across CEO interviews
|
|
436
|
+
available in the cited search results.
|
|
437
|
+
|
|
438
|
+
Tier 1 live inspect (2026-05-13):
|
|
439
|
+
- zigbang.com home — Pretendard Variable confirmed, #171719 confirmed, #0066ff confirmed
|
|
440
|
+
on auth link, 8px nav radius, 10px chip radius, 9999px icon, 50% bookmark toggle,
|
|
441
|
+
rgba(55,56,60,0.16/0.28) muted ramp.
|
|
442
|
+
- zigbang.com/home/apt/map — partial inspect; tab contention from parallel browser
|
|
443
|
+
sessions prevented full second-pass. Map-overlay tokens in §4 are inferred from the
|
|
444
|
+
chrome inspected on the home surface + visual rendering.
|
|
445
|
+
|
|
446
|
+
Personas (§13) are fictional archetypes informed by publicly observable Zigbang user
|
|
447
|
+
segments. Names are illustrative; they do not refer to real people.
|
|
448
|
+
|
|
449
|
+
Interpretive claims (e.g., "weight 400 is the signature", "the map is the negative space",
|
|
450
|
+
"orange = brand, blue = action") are editorial readings connecting Zigbang's observed
|
|
451
|
+
design choices to its founding rejection of fake listings, not directly sourced Zigbang
|
|
452
|
+
statements.
|
|
453
|
+
|
|
454
|
+
Brand-orange hex value is NOT publicly published; the ~#FF6600 estimate in §2 is
|
|
455
|
+
conservative and labeled as illustrative. Treat as unresolved until official token
|
|
456
|
+
publication is confirmed.
|
|
457
|
+
-->
|