Baemin is Korea's beloved food delivery platform -- a brand that turned ordering takeout into a cultural experience through typography, humor, and a fiercely distinctive mint green. The interface opens on a clean white canvas (#ffffff) with warm dark headings (#212529) and that unmistakable Baemin Mint (#2AC1BC) that feels like no other app. This isn't the utilitarian teal of medical software; it's a warm, playful cyan-green chosen specifically because the food industry conventionally uses warm reds and oranges -- Baemin is the deliberate contrast.
Typography IS the brand. Where most companies treat fonts as infrastructure, Baemin has released over a dozen custom typefaces -- each one preserving disappearing Korean signage culture. From the 1960s acrylic-cut Hanna (한나체) to the weathered Euljiro district lettering (을지로체), every font tells a story. But for the functional UI itself, the system uses the platform's native sans-serif -- brand fonts appear only in promotional banners and splash screens, creating a layered personality where the app is professional but the brand is warm and irreverent.
The design philosophy is "playful warmth." The UX writing is legendary in Korea for its conversational wit ("배민다움"), and the illustration-based icon system uses appetizing, sketch-like drawings rather than flat geometric icons. The overall impression is of a neighborhood restaurant's charm scaled to a platform serving millions.
Key Characteristics:
#2AC1BC) as the singular brand accent -- warm, fresh, deliberately counter-industry#2AC1BC): Primary brand color, CTA backgrounds, active states. Warm cyan-green, instantly recognizable. Official spec: CMYK 65:0:29:0 (hex is approximate).#ffffff): Page background, card surfaces. Clean and appetizing.#212529): Primary heading and text color. Warm, not harsh.#12B886): UI primary green, confirmation button fills, positive accents.#20C997): Hover states on teal elements, lighter accent.#FF6B6B): Error states, destructive actions, out-of-stock indicators.#FFB347): Attention-needed states, delivery delays, star ratings.#74C0FC): General information, order status updates.#FF0000): High-urgency alerts, promotional countdown timers.#212529): Headings, menu item names, strong labels.#495057): Body text, descriptions, ingredient lists.#868E96): Captions, timestamps, secondary metadata.#ADB5BD): Placeholder text, disabled labels.#DEE2E6): Standard card borders, dividers, input borders.#F8F9FA): Background fill, secondary canvas.#F1F3F5): Tertiary background, input fills.#DEE2E6. Card borders, list dividers.#343A40. High-contrast borders for emphasis.rgba(0,0,0,0.5). Modal/sheet backdrops.rgba(0,0,0,0.7). Full-screen image viewers.-apple-system, BlinkMacSystemFont, "Helvetica Neue", "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", sans-serif"SF Mono", SFMono-Regular, Menlo, Consolas, monospace"BMHANNA Pro" -- signature Baemin font for brand headings and promotional banners"BMJua" -- rounded, friendly, for casual brand copyAll 12 Baemin fonts are free under OFL license. Four are on Google Fonts (Jua, Do Hyeon, Kirang Haerang, Yeon Sung). Hanna variants available via direct download from woowahan.com.
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display Hero | BMHANNA Pro | 42px | 700 | 1.20 | normal | Splash screens, brand moments |
| Display Large | System | 36px | 700 | 1.25 | normal | Campaign titles, section heroes |
| Heading Large | System | 24px | 700 | 1.33 | normal | Feature section titles |
| Heading | System | 20px | 700 | 1.40 | normal | Card headings, menu categories |
| Title | System | 18px | 600 | 1.44 | normal | Restaurant names, item titles |
| Body Large | System | 16px | 400 | 1.50 | normal | Descriptions, menu details |
| Body | System | 14px | 400 | 1.57 | normal | Standard reading, reviews |
| Body Small | System | 13px | 400 | 1.54 | normal | Secondary info, ingredients |
| Caption | System | 12px | 400 | 1.50 | normal | Timestamps, delivery times |
| Price Display | System | 20px | 700 | 1.30 | normal | Menu item prices, order totals |
Primary (Brand Mint)
#2AC1BC#ffffff#20A8A4 (darkened mint)#DEE2E6 background, #ADB5BD textSecondary (Ghost)
#2AC1BC#2AC1BCrgba(42,193,188,0.08) backgroundNeutral
#F8F9FA#212529Destructive
#FF6B6B#ffffff#ffffff#DEE2E6 or no border with shadow0px 2px 8px rgba(0,0,0,0.06) (standard)#212529#FFB347) + score 14px weight 600#868E96#F1F3F5 bg, #495057 text, 12px#F1F3F5 bg, #495057 text, pill radius, 12px font weight 500#FF6B6B or #FFB347 bg, white text, 4px radius, 11px weight 700#2AC1BC bg, white text, 4px radius#DEE2E6, Radius: 8px#2AC1BC#212529, Placeholder: #ADB5BD#F8F9FA background, search icon left#DEE2E6#2AC1BC icon + text, Inactive: #868E96#FF6B6B circle, white count text| Level | Treatment | Use |
|---|---|---|
| Flat (Level 0) | No shadow | Page background, inline elements |
| Natural (Level 1) | 0px 1px 3px rgba(0,0,0,0.04) | Subtle card separation, list items |
| Deep (Level 2) | 0px 2px 8px rgba(0,0,0,0.08) | Standard restaurant cards |
| Sharp (Level 3) | 0px 4px 12px rgba(0,0,0,0.10) | Floating cart button, active overlays |
| Outlined (Level 4) | 0px 4px 16px rgba(0,0,0,0.12) | Bottom sheets, modal dialogs |
| Crisp (Level 5) | 0px 8px 24px rgba(0,0,0,0.16) | Full-screen overlays, floating menus |
Shadow Philosophy: Baemin uses five tiers -- richer than most mobile apps, reflecting the layered nature of a delivery platform where maps, restaurant lists, order sheets, and cart overlays compete for attention. The naming (Natural, Deep, Sharp, Outlined, Crisp) reflects Baemin's design culture of using evocative, human language rather than cold technical terms.
#2AC1BC) as the primary brand accent for CTAs and active states#000000) for text -- #212529 is the correct dark| Name | Width | Key Changes |
|---|---|---|
| Mobile (Primary) | <480px | Full design, single column, 16px gutter |
| Tablet | 480-768px | 2-column restaurant grid, expanded cards |
| Desktop (Web) | >768px | Centered content, max-width 768px |
#2AC1BC)#20A8A4)#12B886)#ffffff)#F8F9FA)#212529)#495057)#868E96)#ADB5BD)#DEE2E6)#FF6B6B)#FFB347)#2AC1BC (Baemin Mint) -- warm, not coldBaemin's voice is warm, witty, unmistakably Korean-vernacular. It talks to users the way a neighborhood delivery shop would — casual banmal register on marketing surfaces, polite 요-endings on functional UI, and a low-grade sense of humor Koreans call "B급 감성" that mixes retro signboard nostalgia with everyday slang. The copy is allowed to be playful because the act of ordering food is small and low-stakes; money, checkout, and delivery tracking drop the wit and become matter-of-fact. Korean is the primary voice — English UI strings are translations, not parity.
| Context | Tone |
|---|---|
| Marketing surfaces / campaign slogans | Wordplay, rhyme, Korean B급 감성 humor. "세상 모든 것이 식지 않도록" — evocative, never literal. |
| Category / service labels | Two- to four-character declarative nouns: 음식배달, B마트, 선물하기, 전국특가. Never English acronyms on primary nav. |
| CTAs on ordering flow | Short Korean verb form + 요 ending (주문하기, 장바구니에 담기, 결제하기). Imperative but not curt. |
| Empty states | Explain the why conversationally in one line, suggest one action. Lightly playful tolerated; never a blank "데이터 없음". |
| Error messages | Blameless + specific + actionable. Humor retreats here — a failed payment is never funny. |
| Success toasts | Past-tense single sentence (주문이 접수됐어요). Exclamation marks allowed in sparing quantity; emoji allowed in promo-only contexts. |
| Delivery tracking | Matter-of-fact, present tense (가게에서 음식을 준비하고 있어요, 라이더가 픽업했어요). Progression is the drama; copy stays calm. |
| Promotional banners / push | Wordplay + rhyme licensed here. "지금 배민됩니다", "시켜도 시켜도 배달팁 무료 배민클럽!". |
| Payment / refund / dispute | Formal 합니다 endings. Humor forbidden. The only surface where Baemin stops being funny. |
Forbidden phrases. 불편을 드려 죄송합니다 as a boilerplate opener (be specific instead), Oops, English Sorry on Korean UI, generic 데이터가 없습니다 / 오류가 발생했습니다. On payment, refund, or delivery-dispute screens: rhyme, puns, and B급 감성 humor are all forbidden — the brand's playfulness is a marketing-surface privilege, not a universal voice. Never use Baemin Mint (#2AC1BC) as a decorative tone cue in text ("재밌게") — color is not voice.
Representative voice samples. Baemin's most quoted Korean copy (e.g., "치킨은 살 안 쪄요, 살은 내가 쪄요") comes from the annual 배민신춘문예 user-submitted poetry contest — that string is a 2017 grand-prize entry by a Baemin user, not a Baemin product string. When agents generate "Baemin-style" copy they should emulate the register (wordplay, rhyme, retro B급 감성) on marketing surfaces only, not quote the contest entries as if they were live UI.
Baemin (배달의민족) launched in 2010, founded by Kim Bong-jin (김봉진) and bootstrapped into Woowa Brothers (우아한형제들) after Kim scanned restaurant flyers off the streets of Gangnam, Seoul to build the first catalog. The app's name — a pun on "the people of delivery" (배달의 민족) that riffs on the Korean national-identity phrase "배달민족" (descendants of Dangun) — set the tone: a delivery app would be vernacular Korean culture, not a sterile logistics utility. Kim, whose graduate thesis was "Font design reflecting Korea's indigenous visual culture", built the brand around typography as heritage — the Baemin Hanna (한나체) typeface was inspired by 1960s–70s Korean acrylic-cut shop signboards and named after his eldest daughter, Hanna.
From there Baemin grew into Korea's largest food delivery platform (2020 revenue ~₩1.09 trillion, ~US$960M ). Delivery Hero announced its acquisition of Woowa Brothers in December 2019 and completed the deal in December 2020, conditional on Delivery Hero divesting its Korean subsidiary Yogiyo; Baemin continues to operate under its own brand and local leadership. Today the app spans food delivery, B마트 (instant grocery, 24/7), 선물하기 (gift delivery), 배민페이 (payments), 전국특가 (nationwide specials), and 배민클럽 (membership) — one interface, seven service verticals.
What Baemin refuses: the institutional seriousness of Korean legacy e-commerce (G마켓, 11번가 — dense banners, red sale-burst overlays, 90s Helvetica-derivative type); the cold utility aesthetic of Western delivery apps (DoorDash's flat gray, Uber Eats' corporate black); food-industry-standard warm reds and oranges. What it embraces: the deliberate counter-industry mint green (#2AC1BC), a fleet of 13+ free open-source fonts preserving disappearing Korean signage culture, and the ethos captured in the company's four internal values — 규율위의 자율, 스타보다 팀웍, 진지함과 위트, 열심만큼 성과 (autonomy over discipline, teamwork over stars, seriousness with wit, results matched to effort). The third value — 진지함과 위트 (seriousness and wit) — is the one that shows up in the product.
Wit on marketing, calm on money. Campaign surfaces, promo banners, and empty states are licensed for wordplay, rhyme, and B급 감성 humor. Checkout, payment, refund, and dispute screens drop the wit entirely. UI implication: a single screen can host both registers if it spans both surfaces — the promo banner at the top can rhyme, the CTA at the bottom stays imperative-plain. Never mix tones inside the same sentence.
Typography is heritage, not infrastructure. Baemin's custom fonts (한나체, 주아체, 도현체, 을지로체, 기랑해랑체) exist to preserve Korean signboard vocabulary that would otherwise disappear. They are brand-presence fonts, not UI-text fonts. UI implication: system sans-serif for functional UI (menu lists, prices, forms, tracking); BMHANNA / BMJua for hero banners, splash screens, and promotional moments only. Never set body text in a Baemin custom font — the quirks that make it beautiful kill readability at 14px.
Mint is the counter-industry signal. #2AC1BC was chosen specifically because the food-delivery category defaults to warm reds and oranges. Mint is the brand's "we are not a logistics company" flag. UI implication: mint is an accent, not a canvas — use it for CTAs, active tab states, selection highlights, and the app-icon. Flooding a screen with mint (full-width mint hero backgrounds, mint card fills) erases the signal it was meant to carry.
Food is the star; UI is the frame. A restaurant card's job is to make the food photo appetizing. Chrome that crowds, overlays, or desaturates the photography fails the brief. UI implication: 16:9 photo at card-top, no text overlays on photos, no mint badges pinned inside the image area. Promo badges sit in the padding, not on the food.
Scannable bold for decision screens. Food ordering is a high-choice low-value decision (30+ options per list, tap in 1–2 seconds each). Users scan, not read. UI implication: 700-weight for restaurant names, prices, primary CTAs, and delivery ETAs. Reserve 400 for descriptions and metadata. Mid-weight 500/600 is allowed on titles and subtitles but not on scan-value items (names, prices).
Progressive density, spacious summaries. The home screen and category screens are spacious; the menu page and cart page are denser. UI implication: as the user commits (home → restaurant → menu → cart → checkout), horizontal padding tightens (16px → 12px) and row heights compress. The shallower the context, the more whitespace; the deeper, the more information per pixel.
Card-format composition. All service information is rendered as cards that recompose by device. UI implication: every major block (restaurant, menu item, promo, order summary) is a self-contained card with its own corner radius and padding. Two rules: cards never overlap, and adjacent cards never share a border — spacing between cards is the separator.
Illustration over geometry for food categories. Category icons are sketch-style illustrations (치킨, 피자, 한식) rather than flat geometric glyphs. UI implication: when category art is needed, use the hand-drawn illustration family (warm line weight, single-color ink on light background). Never swap to Material-style outline icons for category taxonomy — the warmth of the illustration is load-bearing brand.
Personas are fictional archetypes informed by publicly described Baemin user segments, not individual people.
지현 (Jihyun), 29, Seoul. Marketing manager, lives in a Gangnam officetel. Opens Baemin 4–6 times a week — late-lunch when she skipped the office canteen, post-work dinner, late-night chicken with roommates. Taps the same 5–6 restaurants on repeat; the "Recent orders" row is her actual home screen. Refuses to wait more than 40 minutes for food — anything over 40 and she filters out the restaurant regardless of rating.
대호 (Daeho), 38, Busan. Runs a small ad agency with 4 employees. Uses Baemin for team lunches 2–3 times a week and for the occasional client dinner order. Cares about delivery tip transparency more than food price — a ₩1,000 tip variance matters when ordering for 5 people. Skeptical of promoted banners; actively scrolls past the hero carousel to reach the category row.
수민 (Sumin), 22, Daegu. University student, fourth year, Communications. Baemin is her default food app — she's never used Yogiyo, and treats the Baemin 배민신춘문예 contest as legitimate poetry. Orders small: solo lunches under ₩10,000, split chicken with one friend at 10pm. Reads the promo copy for fun before tapping through to order; the wordplay is part of why she opens the app even when she isn't hungry yet.
지영 (Jiyoung), 45, Incheon. Mother of two, orders through Baemin 3–4 times a week for family meals. Uses Baemin only in Korean — the English option is invisible to her. Primary need: 선물하기 to send grandparents in Gwangju food-gift certificates on holidays, and B마트 for last-minute kitchen items on weekends. Values receipts and can recite her household's monthly Baemin spend; a 20% delivery-fee jump would move her to a competitor.
Copy strings below are illustrative treatments of Baemin's tone applied to each state except where marked verified. A production team should replace illustrative copy with Baemin's actual live strings before shipping.
| State | Treatment |
|---|---|
| Empty (first use, no orders) | White canvas. One line of #495057 body text (14px weight 400) in a lightly warm register ("아직 주문한 내역이 없어요. 맛있는 걸 시켜볼까요?" ). Below: one mint (#2AC1BC) CTA "주문하러 가기". No mascot illustration on functional surfaces. |
| Empty (cart) | Single line of #868E96 caption ("장바구니가 비어 있어요. 메뉴를 담아보세요." ). Cart icon above in #DEE2E6 at 48px. No CTA — user navigates back themselves. |
| Empty (search, no results) | #495057 body text, neutral and specific: "'' 검색 결과가 없어요. 다른 키워드로 찾아보시겠어요?" . Suggested-category chips follow below. Never a "sorry" apology. |
| Loading (restaurant list) | Skeleton cards at exact final dimensions — #F1F3F5 blocks for photo (16:9), name, and meta rows. Ratings skeleton shows as an 80px wide block, never a placeholder star. Shimmer ≤ 1.2s. |
| Loading (map-tracking) | Map renders first; rider icon pulses between two opacity values over 1.5s while position resolves. ETA text shows -- until server returns, never a placeholder minute count. |
| Loading (checkout / payment) | Full-width button shows a 3-dot white animation replacing the label text. Button width does not change. User cannot double-tap; the press is committed. |
| Error (inline field) | 2px #FF6B6B border on the input. Error text below in red500 (13px weight 400). One actionable sentence ("주소를 다시 확인해주세요" ). |
| Error (payment declined) | Modal (this is not a transient error). Headline 18px weight 700 #212529: "결제가 완료되지 않았어요" . Body 14px weight 400 explaining the cause (insufficient funds / card expired / 3DS failed). Two CTAs: "다른 카드로 결제" (primary mint) and "취소" (neutral). No humor on this surface. |
| Error (network / service down) | Top banner, #343A40 bg, white text, one sentence ("일시적으로 연결이 불안정해요" ) + retry pill. Banner auto-dismisses when connectivity returns. |
| Success (order placed) | Dedicated confirmation screen — not a toast. Mint checkmark icon top-center, order number in 16px weight 600 #495057, restaurant name in 20px weight 700 #212529, estimated delivery time in 14px weight 400. Single primary CTA "주문 내역 보기". Ordering is ceremonial here — receipts matter. |
| Success (item added to cart) | Bottom toast, #212529 bg, white 14px 400 text, 2.5s auto-dismiss ("장바구니에 담겼어요" ). Floating cart button badge increments simultaneously. |
| Skeleton | #F1F3F5 blocks at exact final card dimensions (16:9 photo slot, name row, meta row). Shimmer 1.2s. Ratings render as an 80px-wide block, never a placeholder star that could read as 0. Prices render as ---원 until resolved — never 0원, which reads as "free" and misleads. |
| Disabled | Button background drops to #DEE2E6, text to #ADB5BD. Corner radius stays at 8px — never flattens or rounds to a different shape. Disabled state on the "주문하기" CTA shows why inline above the button (e.g., "최소 주문 금액 ₩12,000에 ₩3,000 부족해요" ), not as a separate toast. |
Baemin's motion is warm, responsive, and slightly playful — a touch more kinetic than Toss's fintech restraint, a touch more disciplined than a social app. Spring and overshoot are licensed in two narrow places only (category icon tap feedback, favorite heart toggle) because Baemin's brand voice leans playful and the physicality of those two interactions reinforces the "neighborhood warmth" positioning. Everywhere else — checkout, delivery tracking, payment — motion is standard-easing and functional. A spring on the "결제하기" button would read as unserious with money; a spring on a chicken-category tap reads as a lightly tactile wink.
Durations (named, not raw milliseconds):
| Token | Value | Use |
|---|---|---|
motion-instant | 0ms | Toggle commits, checkbox state changes |
motion-fast | 150ms | Hover, focus, button press overlay, image thumbnail tap |
motion-standard | 250ms | The default — sheet opens, card expands, tab switches, toast appear |
motion-slow | 400ms | Order-confirmation reveal, success checkmark stroke |
motion-page | 300ms | Route transitions between top-level tabs |
Easings:
| Token | Curve | Use |
|---|---|---|
ease-enter | cubic-bezier(0.0, 0.0, 0.2, 1) | Things appearing — sheets, toasts, screen pushes |
ease-exit | cubic-bezier(0.4, 0.0, 1, 1) | Things leaving — dismissals, pops |
ease-standard | cubic-bezier(0.4, 0.0, 0.2, 1) | Two-way transitions — card expand/collapse, tab content |
ease-bounce | cubic-bezier(0.34, 1.56, 0.64, 1) | Licensed only for: category icon tap feedback and favorite heart toggle. Overshoot on CTAs, payment confirmation, or checkout transitions is forbidden — commerce precision outranks kinetic delight on money surfaces. |
Signature motions.
1.0 → 0.98 over motion-fast / ease-standard on press, returns on release. Tactile but not bouncy.1.0 → 1.1 → 1.0 over motion-standard with ease-bounce. This is one of two places overshoot is allowed — the category row is where Baemin's warmth lives most visibly.motion-fast with a brief scale pulse (1.0 → 1.15 → 1.0) using ease-bounce. Second and final licensed overshoot location.y+40px with motion-standard / ease-enter, synchronized with backdrop fade from rgba(0,0,0,0) to rgba(0,0,0,0.5). Dismissal uses motion-fast / ease-exit — leaving is lighter than arriving.motion-slow with ease-standard (not ease-bounce — money-related completions stay precise). Card contents reveal below with a 100ms staggered fade.y+20px with a subtle scale-in (0.9 → 1.0) over motion-standard / ease-enter. Disappearance is a reversed fade, not a slide-out — the empty cart state shouldn't draw attention.prefers-reduced-motion: reduce, all motion-* tokens collapse to motion-instant. ease-bounce is suppressed entirely — category taps and favorite toggles swap to a crossfade. The app stays fully usable; motion is never load-bearing for comprehension.Baemin is Korea's beloved food delivery platform -- a brand that turned ordering takeout into a cultural experience through typography, humor, and a fiercely distinctive mint green. The interface opens on a clean white canvas (`#ffffff`) with warm dark headings (`#212529`) and that unmistakable Baemin Mint (`#2AC1BC`) that feels like no other app. This isn't
Top 16 hex values found in §2 of DESIGN.md, ranked by usage frequency.
A wider example card showing how content sits inside the radius and shadow combination defined by this brand. Card radius is capped at 16px even on pill systems (LINE/Wise/Spotify) so large surfaces stay readable.
Shadow recipes parsed from §6 of DESIGN.md, or default 5-tier scale if none found.