oh-my-design-cli 1.6.1 → 1.6.2
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.ko.md +12 -0
- package/README.md +12 -0
- package/data/reference-fingerprints.json +979 -402
- package/dist/bin/oh-my-design.js +4 -3
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/{install-skills-UKEVE3KT.js → install-skills-6QFSN5BN.js} +98 -34
- package/dist/install-skills-6QFSN5BN.js.map +1 -0
- package/package.json +2 -1
- package/skills/claude-design/SKILL.md +385 -0
- package/skills/claude-design/references/claude-design-flow.md +425 -0
- package/skills/claude-design/references/codebase-analysis.md +373 -0
- package/skills/claude-design/scripts/analyze_codebase.py +1369 -0
- package/skills/claude-design/scripts/clickable_link.sh +48 -0
- package/skills/claude-design/scripts/collect_source.py +178 -0
- package/skills/claude-design/scripts/drive_claude_design.cjs +378 -0
- package/skills/claude-design/scripts/gather_references.py +437 -0
- package/web/references/bunjang/DESIGN.md +1 -1
- package/web/references/classting/DESIGN.md +251 -0
- package/web/references/coinone/DESIGN.md +218 -0
- package/web/references/devsisters/DESIGN.md +253 -0
- package/web/references/drnow/DESIGN.md +331 -0
- package/web/references/flo/DESIGN.md +306 -0
- package/web/references/fugle/DESIGN.md +250 -0
- package/web/references/gogolook/DESIGN.md +5 -0
- package/web/references/grip/DESIGN.md +250 -0
- package/web/references/hogangnono/DESIGN.md +308 -0
- package/web/references/hyundaicard/DESIGN.md +5 -0
- package/web/references/jkopay/DESIGN.md +249 -0
- package/web/references/jobkorea/DESIGN.md +310 -0
- package/web/references/krafton/DESIGN.md +230 -0
- package/web/references/laftel/DESIGN.md +253 -0
- package/web/references/lezhin/DESIGN.md +301 -0
- package/web/references/momoshop/DESIGN.md +279 -0
- package/web/references/mustit/DESIGN.md +282 -0
- package/web/references/payco/DESIGN.md +227 -0
- package/web/references/piccollage/DESIGN.md +277 -0
- package/web/references/riiid/DESIGN.md +228 -0
- package/web/references/trenbe/DESIGN.md +252 -0
- package/web/references/voicetube/DESIGN.md +227 -0
- package/dist/install-skills-UKEVE3KT.js.map +0 -1
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: devsisters
|
|
3
|
+
name: "Devsisters"
|
|
4
|
+
country: KR
|
|
5
|
+
category: consumer-tech
|
|
6
|
+
homepage: "https://www.devsisters.com"
|
|
7
|
+
primary_color: "#FF5F00"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=devsisters.com&sz=256"
|
|
11
|
+
verified: "2026-06-03"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Devsisters
|
|
16
|
+
|
|
17
|
+
Korean game company behind the Cookie Run franchise — building joyful, globally loved play experiences since 2007.
|
|
18
|
+
|
|
19
|
+
## 1. Visual Theme & Atmosphere
|
|
20
|
+
|
|
21
|
+
Devsisters' digital product language is bold, energetic, and unambiguously orange. The homepage announces itself in a full-bleed deep orange (`#FF5F00`) navigation bar that carries through to the footer, wrapping the entire experience in brand warmth. Against this chromatic confidence, content cards surface on pure white with subtle grey borders and generously rounded corners (20 px on cards, 36 px on buttons), giving the layout a playful softness that balances the brand's intensity. Typography oscillates between the heavyweight display face `azo-sans-web` (used at weights 800–900 for English headlines) and the versatile Korean system stack `Pretendard` (used at weight 500–700 for body and UI copy), creating a bilingual dual-register hierarchy that reads as global without feeling generic. The overall atmosphere is that of a confident entertainer: vivid, rounded, action-forward, with just enough restraint in whitespace and card structure to keep the experience legible across ages and screen sizes.
|
|
22
|
+
|
|
23
|
+
## 2. Color Palette & Roles
|
|
24
|
+
|
|
25
|
+
- **Brand Orange:** `#FF5F00` — primary background (nav, footer, CTA buttons, section fills); the brand's dominant signal colour
|
|
26
|
+
- **Bright Orange:** `#FF8200` — hover/active tint on nav border; lighter orange accent for secondary states
|
|
27
|
+
- **Yellow Accent:** `#FFCE00` — tag badges and highlight chips, always paired with `#000000` text for contrast
|
|
28
|
+
- **Pure Black:** `#000000` — body text, black pill-style secondary buttons, dark section backgrounds
|
|
29
|
+
- **Pure White:** `#FFFFFF` — content card backgrounds, reversed text on orange/black surfaces
|
|
30
|
+
- **Warm Peach:** `#F8E8DA` — accordion/expanded nav background; softened orange tone for nested UI
|
|
31
|
+
- **Grey Border:** `#DCDCDC` — card borders, dividers on white backgrounds
|
|
32
|
+
- **Mid Grey:** `#666666` — secondary body text, labels on white
|
|
33
|
+
|
|
34
|
+
## 3. Typography Rules
|
|
35
|
+
|
|
36
|
+
- **Display / English headings:** `azo-sans-web`, fallback `Dotum,돋움,굴림,arial`; weights 900 (H1), 800 (H2/CTA labels), 700 (H3). All-caps treatment for nav and section labels (`text-transform: uppercase`).
|
|
37
|
+
- **Body / Korean UI:** `Pretendard`, fallback `Dotum,돋움,굴림,arial`; weights 500 (body), 600 (subheadings), 700 (emphasis). Registered at Black → ExtraLight across nine weight steps via `@font-face`.
|
|
38
|
+
- **Base body size:** 16 px; `line-height: 1.5` for paragraphs.
|
|
39
|
+
- **UI label size:** 14 px / weight 500 (nav links, footer items).
|
|
40
|
+
- **Heading scale:** 32 px (H1 desktop), 24 px (H2), 18 px (H3), 14 px (body-sm).
|
|
41
|
+
- **Letter-spacing:** `0.01em` on uppercase display copy; `letter-spacing: -0.56px` on large-format hero numerals.
|
|
42
|
+
- **No italic** usage detected across any brand-owned surface.
|
|
43
|
+
|
|
44
|
+
## 4. Component Stylings
|
|
45
|
+
|
|
46
|
+
### Primary CTA Button
|
|
47
|
+
|
|
48
|
+
**Orange Primary (css-1d80czy)**
|
|
49
|
+
- Background: `#FF5F00`
|
|
50
|
+
- Text: `#FFFFFF`
|
|
51
|
+
- Border: none
|
|
52
|
+
- Radius: 36px
|
|
53
|
+
- Padding: 12px 24px
|
|
54
|
+
- Height: 48px
|
|
55
|
+
- Font: azo-sans-web / 800
|
|
56
|
+
|
|
57
|
+
**Black Secondary (css-w3127n)**
|
|
58
|
+
- Background: `#000000`
|
|
59
|
+
- Text: `#FFFFFF`
|
|
60
|
+
- Border: none
|
|
61
|
+
- Radius: 36px
|
|
62
|
+
- Padding: 12px 24px
|
|
63
|
+
- Height: 48px
|
|
64
|
+
- Font: azo-sans-web / 800
|
|
65
|
+
|
|
66
|
+
### Navigation Bar
|
|
67
|
+
|
|
68
|
+
**Top Nav (css-15afoiw)**
|
|
69
|
+
- Background: `#FF5F00`
|
|
70
|
+
- Text: `#FFFFFF`
|
|
71
|
+
- Height: 48px
|
|
72
|
+
- Padding: 0px 20px
|
|
73
|
+
- Font: azo-sans-web / 800
|
|
74
|
+
|
|
75
|
+
**Mobile Nav Drawer (css-1wp6ena)**
|
|
76
|
+
- Background: `#FF5F00`
|
|
77
|
+
- Text: `#FFFFFF`
|
|
78
|
+
- Border: none
|
|
79
|
+
|
|
80
|
+
### Content Card
|
|
81
|
+
|
|
82
|
+
**Standard Card (css-136jai7 / css-1v6f5oy)**
|
|
83
|
+
- Background: `#FFFFFF`
|
|
84
|
+
- Border: 1px solid `#DCDCDC`
|
|
85
|
+
- Radius: 8px
|
|
86
|
+
|
|
87
|
+
**News/Feature Card**
|
|
88
|
+
- Background: `#FFFFFF`
|
|
89
|
+
- Radius: 20px
|
|
90
|
+
- Padding: 52px 80px
|
|
91
|
+
|
|
92
|
+
### Tag Badge
|
|
93
|
+
|
|
94
|
+
**Accent Tag (css-1vxk175)**
|
|
95
|
+
- Background: `#FFCE00`
|
|
96
|
+
- Text: `#000000`
|
|
97
|
+
- Radius: 36px
|
|
98
|
+
- Padding: 5.5px 12px
|
|
99
|
+
|
|
100
|
+
**Active State Tag**
|
|
101
|
+
- Background: `#FF5F00`
|
|
102
|
+
- Text: `#FFFFFF`
|
|
103
|
+
- Radius: 36px
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
**Verified:** 2026-06-03
|
|
107
|
+
**Tier 1 sources:** https://www.devsisters.com (homepage HTML + inline CSS), https://www.devsisters.com/_next/static/css/bab2a2ef530354d9.css (CSS bundle), https://www.devsisters.com/resource (brand resource page), https://www.devsisters.com/about (about page)
|
|
108
|
+
**Tier 2 sources:** getdesign.md/devsisters — 0 DESIGN.md files (NOT LISTED). refero — no result for Devsisters KR.
|
|
109
|
+
**Conflicts unresolved:** none
|
|
110
|
+
|
|
111
|
+
## 5. Layout Principles
|
|
112
|
+
|
|
113
|
+
- **Full-bleed orange chrome:** Nav (48 px) and footer share `#FF5F00` background, creating a colour-wrapped container around all page content.
|
|
114
|
+
- **Card grid:** News and game cards use a fluid multi-column grid; cards have `border-radius: 20px` and a subtle overlay gradient (`rgba(0,0,0,0.6)→rgba(0,0,0,0)`) for hero image cards.
|
|
115
|
+
- **Max-width centred content:** Content sections are horizontally centred with symmetric horizontal padding; desktop padding expands to `52px 80px` for inset cards.
|
|
116
|
+
- **Section rhythm:** Alternating white and orange sections create a visual beat; each section is `position: relative` with generous vertical padding (~11–22 vw on mobile).
|
|
117
|
+
- **Sticky nav:** The top bar is `position: sticky; top: 0; z-index: 2` so the orange anchor persists while scrolling.
|
|
118
|
+
|
|
119
|
+
## 6. Depth & Elevation
|
|
120
|
+
|
|
121
|
+
- **Card hover lift:** `transition: transform 0.3s ease-out, box-shadow 0.3s ease-out` — cards translate up slightly on hover.
|
|
122
|
+
- **Image card overlay:** `linear-gradient(0deg, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0) 60%)` at `opacity: 0.5` by default, removing on hover for reveal.
|
|
123
|
+
- **No heavy drop shadows** detected across the system — elevation is conveyed through colour contrast (orange vs. white) and border radius rather than shadows.
|
|
124
|
+
- **Mobile nav overlay:** Full-screen orange drawer translates in with `transform: translate(100%, 0)` → `translate(0, 0)`.
|
|
125
|
+
|
|
126
|
+
## 7. Do's and Don'ts
|
|
127
|
+
|
|
128
|
+
### Do
|
|
129
|
+
- Use `#FF5F00` as the primary action colour for all main CTAs, nav chrome, and section backgrounds.
|
|
130
|
+
- Pair `#FFCE00` badges with `#000000` text — this is the only accessible combination for yellow.
|
|
131
|
+
- Use `azo-sans-web` weight 800–900 in all-caps for English display copy; use `Pretendard` weight 500–700 for Korean body text.
|
|
132
|
+
- Apply `border-radius: 36px` on all pill-shaped buttons and tags; `border-radius: 20px` on content cards.
|
|
133
|
+
- Keep button height at 48 px (desktop) with 12 px/24 px padding.
|
|
134
|
+
- Use `#000000` for the secondary black pill button when an alternative to orange is needed on white backgrounds.
|
|
135
|
+
|
|
136
|
+
### Don't
|
|
137
|
+
- Don't use `#FFCE00` without `#000000` text — it fails contrast on white or orange backgrounds.
|
|
138
|
+
- Don't mix `azo-sans-web` (display) and `Pretendard` (body) at the same hierarchical level — they serve distinct roles.
|
|
139
|
+
- Don't introduce border-radius values other than 36 px (pills/tags), 20 px (cards), or 8 px (images/thumbnails).
|
|
140
|
+
- Don't place orange text on an orange background — reversed white text is the only on-brand contrast pairing.
|
|
141
|
+
- Don't use italic or light weights (100–300) in UI components — the brand voice reads as bold and direct.
|
|
142
|
+
- Don't add heavy drop shadows; depth is communicated through colour field transitions and border radius, not elevation.
|
|
143
|
+
|
|
144
|
+
## 8. Responsive Behavior
|
|
145
|
+
|
|
146
|
+
- **Mobile breakpoint:** < 720 px — single-column card grid; font sizes shift to vw-based scaling (e.g., `3.6vw` display, `3.3vw` body).
|
|
147
|
+
- **Tablet breakpoint:** ≥ 720 px — two-column grids; nav switches from hamburger drawer to inline links; button radius locks to `36px`.
|
|
148
|
+
- **Desktop breakpoint:** ≥ 1024 px — full multi-column layouts; font sizes resolve to fixed px values (32 px H1, 18 px H3, 14 px label); nav padding fixed at `20px`.
|
|
149
|
+
- **Large desktop:** ≥ 1280 px — content max-width caps; nav padding stays `20px`; images use `w=3840` srcset.
|
|
150
|
+
- **All breakpoints:** Orange nav and footer remain full-bleed; button height stays 48 px on tablet/desktop.
|
|
151
|
+
|
|
152
|
+
## 9. Agent Prompt Guide
|
|
153
|
+
|
|
154
|
+
When generating Devsisters-style UI:
|
|
155
|
+
- Set the primary surface to `#FF5F00`; default text on it to `#FFFFFF`.
|
|
156
|
+
- Primary buttons: background `#FF5F00`, text `#FFFFFF`, radius `36px`, height `48px`, font weight `800`, all-caps English label.
|
|
157
|
+
- Secondary buttons: background `#000000`, same geometry.
|
|
158
|
+
- Tag chips: background `#FFCE00`, text `#000000`, radius `36px`, padding `5.5px 12px`.
|
|
159
|
+
- Cards: background `#FFFFFF`, border `1px solid #DCDCDC`, radius `20px`.
|
|
160
|
+
- Heading font `azo-sans-web` (weight 900) for English; `Pretendard` (weight 700) for Korean.
|
|
161
|
+
- Body font `Pretendard` weight 500, size 16px.
|
|
162
|
+
- Transitions: `color 0.2s linear, background 0.2s linear` on interactive elements; content reveals `0.8s cubic-bezier(0.075, 0.82, 0.165, 1)`.
|
|
163
|
+
- Avoid gradients, shadows, or pastel tones — keep the palette disciplined to the five core swatches.
|
|
164
|
+
|
|
165
|
+
## 10. Voice & Tone
|
|
166
|
+
|
|
167
|
+
**Brand register:** Energetic, global, warm-direct.
|
|
168
|
+
|
|
169
|
+
Three adjectives: **Joyful · Brave · Essential**
|
|
170
|
+
|
|
171
|
+
| Do | Don't |
|
|
172
|
+
|---|---|
|
|
173
|
+
| Speak with conviction and warmth ("세상을 즐겁게") | Use hedged, corporate language ("we aim to try to") |
|
|
174
|
+
| Lead with action verbs ("Run Brave", "Create", "Build") | Bury the point in qualifiers |
|
|
175
|
+
| Address a global audience without losing Korean warmth | Over-localize to a single market in global copy |
|
|
176
|
+
| Keep sentences short and declarative | Write multi-clause academic sentences |
|
|
177
|
+
|
|
178
|
+
**Voice samples (illustrative):**
|
|
179
|
+
- *Illustrative:* "We don't settle for experiences that fade. We build worlds people live inside."
|
|
180
|
+
- *Illustrative:* "In a market that gets harder every day, running brave isn't a slogan — it's how we survive."
|
|
181
|
+
- *Illustrative:* "세상을 즐겁게. 더 넓은 곳에서, 더 많은 사람들에게, 더 오랜 시간 동안." (Make the world joyful. In more places, for more people, for longer.)
|
|
182
|
+
|
|
183
|
+
## 11. Brand Narrative
|
|
184
|
+
|
|
185
|
+
Founded in 2007 in Seoul, Devsisters started as a small Korean mobile studio and grew through the Cookie Run franchise into one of Korea's most recognised game IP creators. The studio's breakout moment came with Cookie Run: OvenBreak and accelerated to global scale with Cookie Run: Kingdom, which reached Apple App Store top-10 rankings in the United States and built a fandom spanning more than 300 million cumulative users across all titles. Today Devsisters operates four global offices, three development studios, and one investment subsidiary (Devsisters Ventures), with reach extending into animation, licensing, and new platform categories including PC, console, and VR.
|
|
186
|
+
|
|
187
|
+
The company's stated mission is "We Create a Joyful World — in more places, for more people, for longer." This is not framed as aspiration but as operating mandate: every product, from the games themselves to the corporate website, is expected to deliver the same quality of lived experience that earns a long-term place in users' daily lives. Devsisters' "Brave Journey" timeline on the about page frames the studio's history as a series of courageous bets — each expansion into a new platform or IP category described as an act of deliberate boldness rather than incremental growth.
|
|
188
|
+
|
|
189
|
+
Three philosophical pillars govern Devsisters' creative and product decisions: **Focus on Core** (pursue the essential goal without being constrained by convention), **Run Brave** (compete with courage even in a harsh market environment), and **Touch Hearts** (create not just useful but genuinely moving experiences that people return to long after the initial novelty fades). These pillars surface visibly in UI decisions — the brand's unapologetically bold orange palette and all-caps display typography reflect the same "no hedging" stance the company articulates in its mission language.
|
|
190
|
+
|
|
191
|
+
## 12. Principles
|
|
192
|
+
|
|
193
|
+
1. **Focus on Core** — strip away convention and pursue the essential outcome with relentless focus.
|
|
194
|
+
*UI implication:* Avoid decorative complexity; every visual element should earn its place by serving the user's primary goal. Remove anything that dilutes the orange-signal hierarchy.
|
|
195
|
+
|
|
196
|
+
2. **Run Brave** — act with courage and intensity even when conditions are difficult.
|
|
197
|
+
*UI implication:* Make primary actions unambiguously visible — bold orange buttons, full-bleed colour fields. Never let the interface be timid about what it wants the user to do next.
|
|
198
|
+
|
|
199
|
+
3. **Touch Hearts** — create experiences that resonate emotionally and last beyond the first encounter.
|
|
200
|
+
*UI implication:* Motion timing and easing should feel alive (`0.8s cubic-bezier(0.075, 0.82, 0.165, 1)` for content reveals); card imagery should be rich and emotionally engaging, not generic stock.
|
|
201
|
+
|
|
202
|
+
4. **Global by Default** — design for every culture, language, and generation from the first commit.
|
|
203
|
+
*UI implication:* All typographic hierarchies must work in both `azo-sans-web` (Latin/English) and `Pretendard` (Korean); layout padding must accommodate longer Korean strings without breaking.
|
|
204
|
+
|
|
205
|
+
5. **Earned Simplicity** — complexity is acceptable in the product; the interface should absorb that complexity so users don't have to.
|
|
206
|
+
*UI implication:* Navigation collapses gracefully into a single-layer drawer on mobile; colour does the heavy lifting of wayfinding so users never need to read a label twice.
|
|
207
|
+
|
|
208
|
+
## 13. Personas
|
|
209
|
+
|
|
210
|
+
*Illustrative persona — not based on proprietary user research:*
|
|
211
|
+
**The Global Cookie Fan (age 12–22):** Plays Cookie Run: Kingdom daily across mobile and web; follows Devsisters on YouTube and social media; expects the website to feel as polished as the game itself. Reacts to bold visuals and new character reveals. Needs: fast load, strong imagery, quick links to game download and patch notes.
|
|
212
|
+
|
|
213
|
+
*Illustrative persona — not based on proprietary user research:*
|
|
214
|
+
**The Korean Parent (age 35–50):** Monitors their child's gaming activity; visits the site to check parental guidance and privacy policy. Expects a trustworthy, legible institutional presence underneath the brand's playfulness. Needs: clear footer navigation to policy pages, Korean-first information hierarchy.
|
|
215
|
+
|
|
216
|
+
*Illustrative persona — not based on proprietary user research:*
|
|
217
|
+
**The International Press / Analyst (age 25–45):** Arrives via news search after a new partnership announcement; scans for investor relations, company size, studio pipeline. Needs: structured company/about page, downloadable brand resources, English-language toggle.
|
|
218
|
+
|
|
219
|
+
*Illustrative persona — not based on proprietary user research:*
|
|
220
|
+
**The Prospective Hire (age 22–35):** Korean or international game developer drawn to the brand's culture narrative. Evaluates Devsisters' three philosophical pillars and office locations before applying. Needs: careers link in footer, clear studio descriptions, the "Brave Journey" timeline as social proof.
|
|
221
|
+
|
|
222
|
+
## 14. States
|
|
223
|
+
|
|
224
|
+
- **Empty state:** No-content zones (e.g., empty game roster tab) render a white card with a `#DCDCDC` border and centre-aligned `#666666` label; no placeholder animation.
|
|
225
|
+
- **Loading state:** Content sections use opacity-based fade-in (`opacity 0.8s cubic-bezier(0.075, 0.82, 0.165, 1)`) from `opacity: 0` to `opacity: 1`; images use Next.js blur placeholder (transparent colour token).
|
|
226
|
+
- **Error — network failure:** Page degradation is graceful; the orange nav chrome and footer remain rendered from static HTML; content areas show a white card with an inline retry prompt in `#FF5F00` text.
|
|
227
|
+
- **Error — 404/Not Found:** Inherits full orange-chrome layout; body card is white with centred content and a primary orange CTA back to homepage.
|
|
228
|
+
- **Success state:** After form submission (e.g., contact form), a white card with `#FF5F00` border-top accent and a checkmark icon in `#FF5F00` confirms the action.
|
|
229
|
+
- **Skeleton loading:** Image cards display a `border-radius: 20px` rectangle in `#F3F3F3` that fills the card area while the image loads; no animation shimmer detected (simple placeholder colour).
|
|
230
|
+
- **Disabled state:** Buttons reduce to `opacity: 0.4`; background and radius preserved; cursor changes to `not-allowed`; no colour change that could be confused with a hover state.
|
|
231
|
+
|
|
232
|
+
## 15. Motion & Easing
|
|
233
|
+
|
|
234
|
+
**Duration scale:**
|
|
235
|
+
- `0.2s` — micro-interactions: button colour/fill transitions, tag hover, icon fill changes
|
|
236
|
+
- `0.3s` — moderate: nav background transition on scroll, card hover lift
|
|
237
|
+
- `0.4–0.5s` — moderate-slow: CTA arrow transforms, mobile nav translate-in
|
|
238
|
+
- `0.6s` — slow: accordion expand/collapse (`max-height` transitions)
|
|
239
|
+
- `0.8s` — content reveal: section entrance animations (opacity + transform)
|
|
240
|
+
- `1.0–1.2s` — very slow: hero element staggered entrances
|
|
241
|
+
|
|
242
|
+
**Easing tokens:**
|
|
243
|
+
- `linear` — used for colour/fill/opacity micro-transitions (`color 0.2s linear`)
|
|
244
|
+
- `ease-out` — card hover lift, opacity fade-outs (`0.3s ease-out`)
|
|
245
|
+
- `cubic-bezier(0.075, 0.82, 0.165, 1)` — primary content reveal (easeOutCirc feel; overshoots slightly, settles softly)
|
|
246
|
+
- `cubic-bezier(0.83, 0, 0.17, 1)` — accordion snap (fast-out, slow-in; snappy close/open)
|
|
247
|
+
- `cubic-bezier(0.22, 1, 0.36, 1)` — nav max-height expand (spring-like deceleration)
|
|
248
|
+
- `cubic-bezier(0.61, 1, 0.88, 1)` — background colour transitions on nav state changes
|
|
249
|
+
|
|
250
|
+
**Rules:**
|
|
251
|
+
- Never animate layout-affecting properties (width, height) without a cubic-bezier easing — linear layout animation reads as mechanical.
|
|
252
|
+
- Content entrance animations trigger on scroll intersection; they do not replay on re-scroll.
|
|
253
|
+
- Reduce-motion: no `prefers-reduced-motion` query detected in source; treat all motion as decorative and ensure content is fully readable without it.
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: drnow
|
|
3
|
+
name: "Dr.Now (닥터나우)"
|
|
4
|
+
country: KR
|
|
5
|
+
category: healthcare
|
|
6
|
+
homepage: "https://doctornow.co.kr"
|
|
7
|
+
primary_color: "#FF8D00"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=doctornow.co.kr&sz=256"
|
|
11
|
+
verified: "2026-06-03"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Dr.Now (닥터나우)
|
|
16
|
+
|
|
17
|
+
Korea's #1 telemedicine platform — making medical care instantly accessible, any hour of the day.
|
|
18
|
+
|
|
19
|
+
## 1. Visual Theme & Atmosphere
|
|
20
|
+
|
|
21
|
+
Dr.Now (닥터나우) is built around a single emotional promise: "아플 땐 닥터나우" — when you're sick, Dr.Now is there. The interface translates this into a warm, energetic orange language set against a clean off-white and neutral gray canvas. Where most Korean healthcare apps reach for clinical blues or sterile whites to signal trust, Dr.Now deliberately chose vibrant orange — a color that radiates urgency, warmth, and approachability without the coldness of institutional medicine. The result feels closer to a sympathetic neighbor than a hospital waiting room.
|
|
22
|
+
|
|
23
|
+
The typography is Pretendard Variable, the gold-standard Korean system font — its clean geometric letterforms balance medical authority with consumer-app readability. The neutral gray scale runs from the near-white surface `#FBFCFD` (G10) through rich charcoal `#1C1D1F` (G900), creating quiet, clean backdrops that let the orange CTAs and primary actions demand attention without visual noise. Card surfaces use `#FFFFFF` with `1px solid #DFE1E2` borders and 32px radii for a friendly, rounded feel.
|
|
24
|
+
|
|
25
|
+
Motion is purposefully gentle — slide-up sheets and fade-in transitions at 300ms reinforce that Dr.Now is reliable and steady, not frantic. The interface hierarchy is clear: orange acts, gray informs, white breathes.
|
|
26
|
+
|
|
27
|
+
## 2. Color Palette & Roles
|
|
28
|
+
|
|
29
|
+
### Primary (Orange Scale — official CSS vars --P100 to --P900)
|
|
30
|
+
- **Primary 500:** `#FF8D00` — brand anchor orange; used in timeline markers, accent text, key stats
|
|
31
|
+
- **Primary 600:** `#FD7E14` — CTA button fills, active nav link text, featured badge backgrounds
|
|
32
|
+
- **Primary 700:** `#F76707` — hover on orange elements, pressed states, high-emphasis text
|
|
33
|
+
- **Primary 800:** `#E8590C` — deep hover, secondary destructive-adjacent accents
|
|
34
|
+
- **Primary 900:** `#D9480F` — CTA gradient start, deepest brand orange
|
|
35
|
+
- **Primary 100:** `#FFF4E6` — tinted surfaces, pill tag backgrounds, info banners
|
|
36
|
+
- **Primary 300:** `#FFD8A8` — divider gradient, warm illustration fill
|
|
37
|
+
|
|
38
|
+
### Neutral (Gray Scale — official CSS vars --G10 to --G900)
|
|
39
|
+
- **Surface 10:** `#FBFCFD` — page background variant (G10)
|
|
40
|
+
- **Surface 20:** `#F7F9FA` — secondary page background, tag fills (G20)
|
|
41
|
+
- **Surface 40:** `#F1F3F6` — review section background, card dividers (G40)
|
|
42
|
+
- **Gray 100:** `#DFE1E2` — default border, card outline, separator lines (G100)
|
|
43
|
+
- **Gray 300:** `#A9AEB1` — placeholder text, disabled borders (G300)
|
|
44
|
+
- **Gray 400:** `#8D9297` — secondary labels, metadata text (G400)
|
|
45
|
+
- **Gray 500:** `#71767A` — body text default (G500)
|
|
46
|
+
- **Gray 600:** `#565C65` — body color root default (G600)
|
|
47
|
+
- **Gray 700:** `#3D4551` — secondary headings, strong body (G700)
|
|
48
|
+
- **Gray 900:** `#1C1D1F` — primary headings, dark emphasis (G900)
|
|
49
|
+
|
|
50
|
+
### Accent & System
|
|
51
|
+
- **White:** `#FFFFFF` — card surface, modal background, CTA text
|
|
52
|
+
- **Blue 600:** `#228BE6` — information chips, system links, secondary action text
|
|
53
|
+
- **Yellow 500:** `#FCC419` — star rating, highlight badge
|
|
54
|
+
- **Error Red:** `#FA5252` — destructive action, form error state
|
|
55
|
+
|
|
56
|
+
## 3. Typography Rules
|
|
57
|
+
|
|
58
|
+
Dr.Now uses **Pretendard Variable** exclusively — defined in both the main CSS bundle (`userweb-static.doctornow.co.kr`) and the official brand CSS (`file.doctornow.co.kr/official/css/default.css`). The font is also specified as `Pretendard Variable, Pretendard` with a full Korean system font fallback chain.
|
|
59
|
+
|
|
60
|
+
**Type Scale (from CSS typography utility classes):**
|
|
61
|
+
|
|
62
|
+
| Class suffix | Size | Line-height | Weights available |
|
|
63
|
+
|---|---|---|---|
|
|
64
|
+
| `-32b/sb` | 32px | 42px | 700 / 600 |
|
|
65
|
+
| `-28b` | 28px | 38px | 700 |
|
|
66
|
+
| `-24b/sb` | 24px | 32px | 700 / 600 |
|
|
67
|
+
| `-22b/sb` | 22px | 30px | 700 / 600 |
|
|
68
|
+
| `-20b/sb` | 20px | 28px | 700 / 600 |
|
|
69
|
+
| `-18b/sb/m` | 18px | 26px | 700 / 600 / 500 |
|
|
70
|
+
| `-17b/sb/m/r` | 17px | 24px | 700 / 600 / 500 / 400 |
|
|
71
|
+
| `-16b/sb/m/r` | 16px | 24px | 700 / 600 / 500 / 400 |
|
|
72
|
+
| `-15b/sb/m/r` | 15px | 22px | 700 / 600 / 500 / 400 |
|
|
73
|
+
| `-14b/sb/m/r` | 14px | 20px | 700 / 600 / 500 / 400 |
|
|
74
|
+
| `-12sb` | 12px | 18px | 600 |
|
|
75
|
+
|
|
76
|
+
**Rules:**
|
|
77
|
+
- CTA button labels: 17px / 600 (SemiBold)
|
|
78
|
+
- Body default: 15px–16px / 400–500
|
|
79
|
+
- Section headings: 22px–32px / 700
|
|
80
|
+
- Meta / timestamps: 12px–14px / 400
|
|
81
|
+
- All text: `-webkit-font-smoothing: antialiased` applied globally
|
|
82
|
+
- No italic in UI text; `font-style: normal` enforced in typography utility classes
|
|
83
|
+
|
|
84
|
+
## 4. Component Stylings
|
|
85
|
+
|
|
86
|
+
### Primary CTA Button
|
|
87
|
+
|
|
88
|
+
**Brand Gradient CTA (`.btn-now`)**
|
|
89
|
+
- Background: `linear-gradient(90deg, #D9480F 0%, #F3463B 100%)`
|
|
90
|
+
- Text: `#FFFFFF`
|
|
91
|
+
- Radius: 12px
|
|
92
|
+
- Padding: 16px 54px
|
|
93
|
+
- Font: 17px / 600
|
|
94
|
+
|
|
95
|
+
**Primary Solid (`.bg-primary-600`)**
|
|
96
|
+
- Background: `#FD7E14`
|
|
97
|
+
- Text: `#FFFFFF`
|
|
98
|
+
- Radius: 12px
|
|
99
|
+
- Font: 17px / 600
|
|
100
|
+
|
|
101
|
+
**Primary Outline**
|
|
102
|
+
- Background: `#FFFFFF`
|
|
103
|
+
- Text: `#FD7E14`
|
|
104
|
+
- Border: 1px solid `#FD7E14`
|
|
105
|
+
- Radius: 12px
|
|
106
|
+
- Padding: 16px 24px
|
|
107
|
+
- Font: 16px / 600
|
|
108
|
+
|
|
109
|
+
**Ghost / Disabled**
|
|
110
|
+
- Background: `#DFE1E2`
|
|
111
|
+
- Text: `#A9AEB1`
|
|
112
|
+
- Radius: 12px
|
|
113
|
+
- Padding: 16px 24px
|
|
114
|
+
- Font: 16px / 500
|
|
115
|
+
|
|
116
|
+
### Tag / Badge Chip
|
|
117
|
+
|
|
118
|
+
**Primary Tag**
|
|
119
|
+
- Background: `#FFF4E6`
|
|
120
|
+
- Text: `#F76707`
|
|
121
|
+
- Radius: 99px
|
|
122
|
+
- Padding: 4px 10px
|
|
123
|
+
- Font: 12px / 600
|
|
124
|
+
|
|
125
|
+
**Gray Tag**
|
|
126
|
+
- Background: `#F1F3F6`
|
|
127
|
+
- Text: `#71767A`
|
|
128
|
+
- Radius: 99px
|
|
129
|
+
- Padding: 4px 10px
|
|
130
|
+
- Font: 12px / 500
|
|
131
|
+
|
|
132
|
+
### Card / Review Slide
|
|
133
|
+
|
|
134
|
+
**Content Card**
|
|
135
|
+
- Background: `#FFFFFF`
|
|
136
|
+
- Border: 1px solid `#DFE1E2`
|
|
137
|
+
- Radius: 32px
|
|
138
|
+
- Padding: 24px
|
|
139
|
+
|
|
140
|
+
**Section Background Card**
|
|
141
|
+
- Background: `#F1F3F6`
|
|
142
|
+
- Radius: 32px
|
|
143
|
+
|
|
144
|
+
### Navigation Item
|
|
145
|
+
|
|
146
|
+
**Active Nav Link**
|
|
147
|
+
- Background: transparent
|
|
148
|
+
- Text: `#FD7E14`
|
|
149
|
+
- Radius: 8px
|
|
150
|
+
- Height: 40px
|
|
151
|
+
- Padding: 0px 12px
|
|
152
|
+
- Font: 16px / 700
|
|
153
|
+
|
|
154
|
+
**Default Nav Link**
|
|
155
|
+
- Background: transparent
|
|
156
|
+
- Text: `#DFE1E2`
|
|
157
|
+
- Radius: 8px
|
|
158
|
+
- Height: 40px
|
|
159
|
+
- Padding: 0px 12px
|
|
160
|
+
- Font: 16px / 400
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
**Verified:** 2026-06-03
|
|
164
|
+
**Tier 1 sources:** https://doctornow.co.kr (HTML + styled-components), https://userweb-static.doctornow.co.kr/20260602-2002-38d1546d91/_next/static/css/72c28a0cfb28f079.css (Tailwind + SC bundle), https://file.doctornow.co.kr/official/css/style.css (official brand CSS with --P/--G token :root), https://file.doctornow.co.kr/official/css/default.css (Pretendard font import + reset), https://company.doctornow.co.kr/company (brand CSS served from file.doctornow.co.kr)
|
|
165
|
+
**Tier 2 sources:** getdesign.md/drnow — NOT LISTED (no data). refero ?q=닥터나우 — no result found for this brand.
|
|
166
|
+
**Conflicts unresolved:** The hero banner gradient uses `#FF7501` (slightly warmer than token --P500 `#FF8D00`); the official :root token system treats `#FF8D00` as P500 canonical. Both are genuine observed values. The `.btn-now` CTA uses a deep `#D9480F → #F3463B` gradient while the web app uses `#FD7E14` solid for most buttons — two surface contexts maintained separately.
|
|
167
|
+
|
|
168
|
+
## 5. Layout Principles
|
|
169
|
+
|
|
170
|
+
Dr.Now uses a **max-width 1050px centered content container** (`width: 92%; max-width: 1050px`) for all landing and company pages, with generous vertical section padding of 96px–128px. The mobile breakpoint is at 768px, where multi-column grids collapse to single-column vertical stacks.
|
|
171
|
+
|
|
172
|
+
- **Web app (doctornow.co.kr):** Tailwind-based, responsive grid, max-width 1064px for some breakpoints
|
|
173
|
+
- **Company pages:** Fixed-width centered layout, 92% container, generous whitespace
|
|
174
|
+
- **Spacing system:** 8px base unit; common values are 4, 8, 12, 16, 24, 32, 40, 48, 64, 96px
|
|
175
|
+
- **Card grid:** Items arranged in 2–3 columns on desktop, stacking to 1 on mobile
|
|
176
|
+
- **Navigation:** Fixed 64px top bar; content offset by `padding-top: 64px`
|
|
177
|
+
|
|
178
|
+
## 6. Depth & Elevation
|
|
179
|
+
|
|
180
|
+
Dr.Now employs a restrained shadow system — surfaces are differentiated primarily through background color rather than heavy drop shadows.
|
|
181
|
+
|
|
182
|
+
- **Level 0 — Page surface:** `#FBFCFD` or `#F7F9FA` — no shadow
|
|
183
|
+
- **Level 1 — Default card:** `#FFFFFF` with `1px solid #DFE1E2` — flat border elevation
|
|
184
|
+
- **Level 2 — Floating card:** `box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.08)` — light lift
|
|
185
|
+
- **Level 3 — Modal / Bottom sheet:** `box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.08)` — medium elevation
|
|
186
|
+
- **Level 4 — Tooltip / Dropdown:** `box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.16)` — prominent float
|
|
187
|
+
- **Level 5 — Overlay scrim:** `background-color: rgba(0, 0, 0, 0.06)` to `rgba(0, 0, 0, 0.12)` — modal backdrop
|
|
188
|
+
- **Inset surface accent:** `inset 0px 0px 32px rgba(0, 0, 0, 0.04)` — used on section review blocks
|
|
189
|
+
|
|
190
|
+
## 7. Do's and Don'ts
|
|
191
|
+
|
|
192
|
+
### Do
|
|
193
|
+
- Use `#FF8D00` (P500) or `#FD7E14` (P600) as the primary brand orange for all key CTAs and active states
|
|
194
|
+
- Apply 12px radius to primary buttons and 32px radius to cards and content panels
|
|
195
|
+
- Use Pretendard Variable with the full Korean fallback chain for all UI text
|
|
196
|
+
- Keep neutral grays for secondary content — body copy defaults to `#71767A` (G500) against `#FBFCFD` backgrounds
|
|
197
|
+
- Apply `ease-out` transitions at 200–300ms for all enter/exit micro-interactions
|
|
198
|
+
- Use the full gray scale (G10–G900) for nuanced text and surface hierarchy
|
|
199
|
+
- Maintain 64px of top breathing room for the fixed navigation bar
|
|
200
|
+
|
|
201
|
+
### Don't
|
|
202
|
+
- Use blue as a primary brand color — Dr.Now's identity is orange; blue is reserved for informational chips only
|
|
203
|
+
- Apply the deep gradient (`#D9480F → #F3463B`) outside the hero/brand marketing context — it reads as urgent; web app CTAs use flat `#FD7E14`
|
|
204
|
+
- Use font weights below 400 or above 700 — the type scale uses Regular (400), Medium (500), SemiBold (600), Bold (700) only
|
|
205
|
+
- Mix heavy drop shadows with the card system — Dr.Now elevation is purposefully flat with border-based differentiation
|
|
206
|
+
- Place orange text on orange-tinted backgrounds (P700 on P100 may fail contrast at small sizes)
|
|
207
|
+
- Use border-radius values that aren't in the established scale (4 / 6 / 8 / 12 / 16 / 32 / 99px)
|
|
208
|
+
|
|
209
|
+
## 8. Responsive Behavior
|
|
210
|
+
|
|
211
|
+
- **Breakpoint:** 768px (mobile) and 1064px (large desktop cap for web app)
|
|
212
|
+
- **Navigation:** Desktop horizontal nav collapses to a hamburger button at ≤768px
|
|
213
|
+
- **Section padding:** Reduces from 96–128px to 48–64px on mobile
|
|
214
|
+
- **Typography:** Large display sizes (32–56px) reduce by 1–2 steps on mobile
|
|
215
|
+
- **Grid:** 2–3 column layouts collapse to single column at 768px
|
|
216
|
+
- **Cards:** Full-width card pattern on mobile, with reduced padding (8px gap instead of 12px)
|
|
217
|
+
- **Max widths:** Content capped at 1050px for company pages; web app has flexible grid to 1064px
|
|
218
|
+
|
|
219
|
+
## 9. Agent Prompt Guide
|
|
220
|
+
|
|
221
|
+
To generate UI consistent with Dr.Now's design language:
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
Use Pretendard Variable (Korean system font fallback: Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic).
|
|
225
|
+
Primary brand color: #FF8D00 (orange). CTA button background: #FD7E14 with white text, 12px radius.
|
|
226
|
+
Surface hierarchy: page background #F7F9FA → card #FFFFFF with 1px solid #DFE1E2 border → elevated card with box-shadow 0 2px 8px rgba(0,0,0,0.08).
|
|
227
|
+
Neutral text: headings #1C1D1F (G900), body #71767A (G500), meta #8D9297 (G400).
|
|
228
|
+
Transitions: 200–300ms ease-out for all state changes.
|
|
229
|
+
Card radius: 32px for large content panels, 12px for interactive components, 99px for badge/chip.
|
|
230
|
+
Typography scale: 15–16px body (400–500), 17px button (600), 22–32px headings (700).
|
|
231
|
+
Avoid clinical blue as primary; blue is used only for informational contexts (#228BE6).
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## 10. Voice & Tone
|
|
235
|
+
|
|
236
|
+
**Three-word fingerprint:** Warm, Accessible, Trustworthy
|
|
237
|
+
|
|
238
|
+
Dr.Now's voice is empathetic without being overly clinical — it speaks to patients at vulnerable moments with directness and warmth. The brand avoids medical jargon in favor of plain Korean that anyone can understand at any hour of the night when they're sick and anxious.
|
|
239
|
+
|
|
240
|
+
| Dimension | Do | Don't |
|
|
241
|
+
|---|---|---|
|
|
242
|
+
| Sentence length | Short, declarative — "아플 땐 닥터나우" | Long subordinate clauses |
|
|
243
|
+
| Vocabulary | Plain Korean, patient-centric ("당신이 아픈 순간") | Medical jargon, formal hospital language |
|
|
244
|
+
| Tone | Warm, reassuring, slightly energetic | Clinical cold, alarmist |
|
|
245
|
+
| Perspective | "We're here for you" — 1st person plural | Institutional 3rd person |
|
|
246
|
+
| Urgency | Gentle accessibility ("언제든지") | Pushy scarcity tactics |
|
|
247
|
+
|
|
248
|
+
**Voice samples (illustrative — modeled on brand copy):**
|
|
249
|
+
|
|
250
|
+
- *"늦은 밤에도, 주말에도 — 당신 곁에 있습니다."* (Late at night, on weekends — we're by your side.) — Illustrative, modeled on brand positioning.
|
|
251
|
+
- *"약 처방부터 배송까지, 집에서 끝내세요."* (From prescription to delivery, finish it all at home.) — Illustrative, modeled on feature communication style.
|
|
252
|
+
- *"병원까지의 거리가 걱정되지 않게."* (So the distance to the hospital is no longer a worry.) — Illustrative, reflecting brand manifesto language.
|
|
253
|
+
|
|
254
|
+
## 11. Brand Narrative
|
|
255
|
+
|
|
256
|
+
Dr.Now (닥터나우) was founded in 2019 in Seoul with a single observation: Koreans were enduring pain, delaying care, or going without medical help not because they didn't want it, but because accessing it was inconvenient — hospitals closed at night, wait times were long, and the psychological barrier to seeking care was higher than it needed to be. The founding team set out to dissolve that barrier, beginning with a medication delivery service and evolving rapidly into Korea's first scaled telemedicine platform.
|
|
257
|
+
|
|
258
|
+
By 2026 the platform counts more than 4 million consultations, 5,500+ partner medical institutions, and has passed an 8 million+ download milestone. The brand mission crystallized into a three-pillar commitment: solve the healthcare inconveniences people have accepted as normal, shift the medical market from provider-driven to patient-driven by making symptom-based hospital selection and transparent pricing standard, and be available "늦은 밤에도, 주말에도" — late nights and weekends, whenever patients need care most. The tagline "의료를 더욱 가깝게, 닥터나우" (Healthcare closer with Dr.Now) captures this positioning in four words.
|
|
259
|
+
|
|
260
|
+
The brand's choice of orange as its primary color is not accidental. Orange refuses the clinical associations of hospital blue and the cold sterility of medical white — it is warm, accessible, and slightly urgent in the best sense, the color of someone who picks up when you call at midnight. Combined with the approachable Pretendard typeface and a conversational voice, Dr.Now has built a brand that feels like a trusted friend who happens to connect you to doctors — not an institution that processes you.
|
|
261
|
+
|
|
262
|
+
## 12. Principles
|
|
263
|
+
|
|
264
|
+
1. **Accessibility at Every Hour**
|
|
265
|
+
Healthcare shouldn't depend on whether it's a weekday at 3pm. The product must work flawlessly for a parent at 2am with a sick child. *UI implication:* Emergency-feel hierarchy — the primary CTA must be immediately findable without scrolling; orange ensures it commands attention without noise.
|
|
266
|
+
|
|
267
|
+
2. **Patient-Centered, Not Provider-Centered**
|
|
268
|
+
Patients search by symptom, not by medical specialty. Navigation should mirror how people think about illness, not how hospitals organize themselves. *UI implication:* Symptom-based entry points and specialty discovery that hides complexity; surface the most accessible path first.
|
|
269
|
+
|
|
270
|
+
3. **Transparency as Trust**
|
|
271
|
+
Showing consultation prices before booking is a core brand differentiator. Surfacing this information early — without making it feel transactional — builds the trust that drives repeat use. *UI implication:* Price information surfaces at the consultation card level, not buried in a separate screen; use neutral G700 not warning orange for pricing labels.
|
|
272
|
+
|
|
273
|
+
4. **Warm Urgency Without Alarm**
|
|
274
|
+
Orange signals "act now" without inducing anxiety. The brand's energy must feel helpful-urgent, not panic-inducing. *UI implication:* Reserve the deep gradient (`#D9480F → #F3463B`) for hero marketing contexts only; use flat `#FD7E14` for in-app CTAs to keep urgency calibrated.
|
|
275
|
+
|
|
276
|
+
5. **Own the Moment of Illness**
|
|
277
|
+
The product meets users at a vulnerable moment — sick, worried, often alone. Every touchpoint should feel like a calm, competent presence. *UI implication:* Loading states use gentle skeleton shimmer (1.5s ease-in-out), not spinning indicators; empty states use empathetic copy, never sterile error codes.
|
|
278
|
+
|
|
279
|
+
## 13. Personas
|
|
280
|
+
|
|
281
|
+
*Illustrative — not derived from published Dr.Now research; modeled on the brand's stated use cases.*
|
|
282
|
+
|
|
283
|
+
**지민 (Ji-min), 32 — The Midnight Parent**
|
|
284
|
+
A working parent in Seoul whose toddler spikes a fever at 11pm on Sunday. Her neighborhood clinic is closed; the ER seems excessive for a fever. She opens Dr.Now, finds a pediatrician available in minutes, gets a prescription, and schedules home delivery. *Design implication:* The fastest possible path from symptom to consultation must require ≤3 taps; the specialty "소아과" (pediatrics) card must be prominently featured.
|
|
285
|
+
|
|
286
|
+
**준혁 (Jun-hyuk), 27 — The Busy Professional**
|
|
287
|
+
A startup employee who gets a cough mid-project sprint and can't spend 90 minutes at a clinic. He uses Dr.Now's phone consultation during a coffee break, gets prescribed and picked up at the nearest partner pharmacy on his way home. *Design implication:* Session brevity matters; consultation duration, wait time estimates, and pharmacy proximity are key information hierarchy elements.
|
|
288
|
+
|
|
289
|
+
**은지 (Eun-ji), 45 — The Price-Conscious Patient**
|
|
290
|
+
A freelancer without employer health insurance who worries about non-covered drug costs. She uses Dr.Now's "최저가 약국 찾기" (lowest-price pharmacy finder) to compare prescription costs before confirming. *Design implication:* Price transparency surfaces early in the flow; comparison UI must be scannable (not a data table).
|
|
291
|
+
|
|
292
|
+
**민준 (Min-jun), 58 — The Condition Manager**
|
|
293
|
+
A patient with a chronic dermatology issue who needs monthly prescription refills. He's moved Dr.Now into his monthly routine, using the dermatology prescription repeat feature. *Design implication:* Repeat-prescription flows must surface in the home dashboard for logged-in users; history-aware CTAs ("마지막 처방 반복하기") reduce friction.
|
|
294
|
+
|
|
295
|
+
## 14. States
|
|
296
|
+
|
|
297
|
+
- **Empty — No results:** Search returns nothing: show a sympathetic icon and "검색 결과가 없어요" with a suggestion to try a broader keyword or browse by specialty — never a blank white screen
|
|
298
|
+
- **Loading — Initial fetch:** Full-page skeleton using `.animate-skeleton-shimmer` (1.5s ease-in-out infinite) — gray placeholder rectangles match expected content geometry
|
|
299
|
+
- **Loading — In-consultation:** Pulsing "의사를 연결 중이에요" copy with a circular spinner at 0.8s linear infinite — conveys activity without panic
|
|
300
|
+
- **Error — Network fail:** Toast notification with `#FA5252` border-left accent, human copy "연결이 끊겼어요. 다시 시도해 주세요", retry CTA in `#FD7E14`
|
|
301
|
+
- **Error — Prescription unavailable:** Inline card state with `#FFF4E6` background and `#F76707` icon — explains limitation and surfaces an alternative action (find an open pharmacy)
|
|
302
|
+
- **Success — Consultation complete:** Bottom sheet slides up (300ms ease-out) with green checkmark and "진료가 완료되었어요" — prescription delivery CTA follows immediately
|
|
303
|
+
- **Skeleton — Doctor card:** Rectangular placeholder with shimmer animation matching the doctor card's height (approximately 96px) and radius (16px)
|
|
304
|
+
- **Disabled — Unavailable specialty:** Chip or button with `#DFE1E2` background, `#A9AEB1` text — still shows the specialty label so users know it exists but is unavailable
|
|
305
|
+
|
|
306
|
+
## 15. Motion & Easing
|
|
307
|
+
|
|
308
|
+
Dr.Now uses a focused animation vocabulary: enter/exit, slide, and shimmer. Motion reinforces the product's calm-urgency balance — fast enough to feel responsive, smooth enough to feel reassuring.
|
|
309
|
+
|
|
310
|
+
**Duration Scale:**
|
|
311
|
+
- `100ms` — micro-interactions (focus ring, checkbox check)
|
|
312
|
+
- `200ms` — button hover/press state transitions
|
|
313
|
+
- `300ms` — panel enter/exit, toast appear, slide-up sheets (primary UI motion)
|
|
314
|
+
- `500ms` — page-level fade transitions
|
|
315
|
+
- `1500ms` — skeleton shimmer loop
|
|
316
|
+
- `15000ms` — marquee / scroll animations (brand testimonial carousels)
|
|
317
|
+
|
|
318
|
+
**Easing:**
|
|
319
|
+
- `ease-out` (`cubic-bezier(0, 0, 0.2, 1)`) — default for all enter transitions; elements decelerate into rest
|
|
320
|
+
- `ease-in` — exit transitions; elements accelerate out cleanly
|
|
321
|
+
- `cubic-bezier(0.4, 0, 0.2, 1)` — Material-style standard for screen-level transitions (`screen-slide-in`)
|
|
322
|
+
- `linear` — spinner rotation, marquee scrolls
|
|
323
|
+
- `ease-in-out` — skeleton shimmer, shake animations (periodic/looping)
|
|
324
|
+
|
|
325
|
+
**Motion Rules:**
|
|
326
|
+
- Bottom sheet: slide up `0.3s ease-out` from `translateY(100%)` to `translateY(0)`
|
|
327
|
+
- Page enter: fade+slide — `opacity 500ms ease-out, transform 500ms ease-out` from `translateY(20px)`
|
|
328
|
+
- Screen navigation: `screen-slide-in 0.32s cubic-bezier(0.4,0,0.2,1)` from opacity 0
|
|
329
|
+
- Skeleton: `skeleton-shimmer 1.5s ease-in-out infinite` — translateX -100% to +100%
|
|
330
|
+
- Accordion: `0.2s ease-out` open/close — height from 0 to content height
|
|
331
|
+
- Never animate layout-affecting properties; prefer `transform` and `opacity` for 60fps compositing
|