
Karrot uses warm orange accents and restrained chrome to keep neighborhood content and human relationships dominant. The reference treats SEED v2 as the canonical product-system source while preserving the public marketing site as a separate source for its font stack and CTA geometry.
Evidence boundary: SEED product primary #ff6f0f and marketing CTA #ff6600 are both valid, but neither replaces the other outside its documented surface.
Karrot is a hyperlocal platform built around the idea that technology should make neighborhood relationships feel more human, not more anonymous. Its design keeps community content dominant through warm orange accents, calm neutrals, direct language, and light interface chrome. Two related but non-identical public surfaces express that identity: the current SEED v2 product system defines semantic Primary as carrot-500 (#ff6f0f), while the public Karrot marketing site renders its CTA orange as #ff6600. Keeping those values separate preserves both product-system truth and the recognizable warmth of the brand.
SEED is the canonical source for product-system colors, type roles, and component behavior. The public marketing pages are evidence for the web font stack and marketing CTA geometry only. Both use warm neutrals, direct hierarchy, and restrained ornament so neighborhood content remains dominant.
Key Characteristics:
#ff6f0f; current marketing CTA: #ff6600Pretendard Variable is declared as a fallback but was not the computed first family in the inspected pagesglobal.css#ff6f0f): --seed-semantic-color-primary, mapped to carrot-500.#ff9e66): current light-theme state mapping.#ffffff): gray-00 and paper-default.#f2f3f6): gray-100 and paper-background.#f7f8fa): gray-50 and paper-contents.#212124): gray-900 and ink-text.#868b94): gray-600 and ink-text-low.#eaebee): gray-200 and divider-2.#fff5f0): carrot-50 and paper-accent.#fa2314): red-600.#009ceb): blue-500.#1aa174): green-500.#ff6600): computed background on both inspected Karrot public pages. Do not label it carrot-500 or substitute it for SEED Primary.System. The computed first family was -apple-system across 420 visible elements.Pretendard Variable appeared in the stack and FontFace declarations but had no visible first-family usage in this capture.| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| H1 | System | 48px | 700 | 135% | 0 | SEED semantic h1 |
| H2 | System | 42px | 700 | 135% | 0 | SEED semantic h2 |
| H3 | System | 34px | 700 | 135% | 0 | SEED semantic h3 |
| Title 1 Bold | System | 24px | 700 | 135% | 0 | Section or chapter title |
| Body L1 | System | 16px | 400 | 150% | -0.02em on web | Long-form body |
| Body L2 | System | 14px | 400 | 150% | -0.02em on web | Compact body |
| Evidence class | Karrot status |
|---|---|
| Official product-use | SEED v2 defines product typography roles around platform/system families rather than a branded display face |
| Live surface-use | -apple-system was the visible first family across the inspected Karrot marketing surfaces |
| Official distributed asset | SEED design tokens and components are published openly; no separate public Karrot typeface asset is asserted |
| Declared-only | Pretendard Variable appeared in public stacks and FontFace declarations without visible first-family use in this capture |
| Unresolved | Exact native-app runtime family resolution outside the published SEED semantic roles |
Primary CTA
#ff6600#ffffffBox Button
Text Field
Tabs
Snackbar
The inspected public controls were flat and reported box-shadow: none. No universal shadow tokens are published in the canonical frontmatter until current component-style sources are captured claim by claim.
#ff6f0f for product-system work.#ff6600 explicitly scoped to the observed public website.#ff6600 as SEED carrot-500.hug and fill; fill is limited to five stable top-level items, while hug is recommended for six or more or variable categories.#ff6f0f#ff9e66#ff6600#ffffff; Background: #f2f3f6; Surface: #f7f8fa#212124; Muted: #868b94; Hairline: #eaebee#fa2314; Accent: #009ceb; Success: #1aa174#ff6f0f; use the Box Button's documented size and state contract rather than inventing geometry."#ff6600, white text, 14px/500 System type, 36px height, and full-pill radius."#ff6f0f and #ff6600 distinct.Karrot speaks like a trustworthy neighbor who just moved in next door: warm, plain-spoken, low-friction, and allergic to anything that sounds like corporate marketing. The voice assumes two strangers are about to hand each other a used crib across a parking lot — it protects that trust with earnestness, removes barriers with 부담 없이 (without burden) framing, and stays in everyday Korean sentence endings (-어요, -예요) rather than the formal -ㅂ니다. English surfaces (Karrot in US/Canada/UK/JP) mirror this in plain, contraction-friendly English — "Buy and sell for free with locals", not "Discover premium local marketplace experiences".
| Context | Tone |
|---|---|
| CTAs | Short verb-first Korean (판매하기, 채팅하기, 거래 완료) / plain imperative English (Sell, Chat, Apply) |
| Empty states | One warm line explaining why it's empty + one low-pressure suggestion. Never 데이터가 없습니다. |
| Error messages | Specific, blameless, actionable. Prefer 다시 시도해 주세요 over 오류가 발생했습니다. |
| Success toasts | Past-tense single sentence (거래가 완료되었어요). Quiet, not celebratory. |
| Community guidelines | Second-person, direct, grounded in neighborhood norms. Reads like a house rule, not a ToS. |
| Trust & safety | Calm, factual, never fearmongering. The goal is to keep people transacting, not to scare them off. |
| Local / hyperlocal copy | Always name the neighborhood (강남구 역삼동, Manhattan). Proximity is the brand — surface it. |
| Onboarding | One screen, one idea, one action. No bullet lists. No feature tours. |
Forbidden phrases. 불편을 드려 죄송합니다, 죄송하지만, 데이터가 없습니다, 오류가 발생했습니다, 혁신적인, English boilerplate like Oops, something went wrong or We apologize for the inconvenience. Marketing-speak bans: amazing deals, best-in-class, revolutionary, world-class. Emoji are permitted sparingly in community chat and stickers, but never in error messages, never in trust/safety copy, and never in financial/payment confirmations.
Voice samples.
Buy and sell for free with locals — homepage hero, English. Welcome to your new neighborhood buy & sell — homepage sub-hero. It's easier in the apps / Download the Karrot app — app-install nudge. 동네를 여는 문, 당근 — brand narrative tagline (corporate site). 로컬의 모든 것을 연결해, 동네의 숨은 가치를 깨워요 — mission statement. <neighborhood>에서 <product>을(를) 찾고 있어요 — illustrative search/wanted-listing pattern (variable placeholders). 이 거래, 직접 만나서 할까요? — illustrative in-chat nudge for face-to-face meeting (hyperlocal behavior). Karrot (당근, daangn) launched in 2015 in Pangyo, South Korea, founded by Kim Yong-hyun and Kim Jae-hyun — both former Kakao engineers who had watched the open-marketplace model (Korean e-commerce giants, nationwide shipping, anonymous counterparties) fail the one job users actually cared about: trust. Their founding bet was that secondhand transactions are not a logistics problem; they are a neighborhood problem. The first version of the app hard-capped transactions to a 6 km radius (later relaxed to 10 km in KR/JP, up to 50 km in North America), on the theory that if you can walk to the meeting, you can look the other person in the eye (Crunchbase, KED Global).
The product is built around that proximity constraint. Every listing surfaces the neighborhood name. Every match is geo-scoped. Every CTA assumes the buyer and seller will eventually stand in the same parking lot. The design language follows suit: a warm orange (#ff6600) that reads as a fresh carrot — not the corporate orange of enterprise dashboards, not the alarm orange of warnings — and no custom typeface, because the brand doesn't want a distinctive voice around user content; it wants user content to feel like the voice of the neighborhood itself. Series D $162M August 2021 at $2.7B valuation made Danggeun Market Inc. Korea's 13th unicorn (>1 trillion KRW). Earlier September 2019 raise: 40 billion KRW from Altos Ventures + Goodwater Capital (Silicon Valley). By early 2025 the company reports 40M+ cumulative registered users and 20M+ monthly active users across 1,400+ regions worldwide, with 227B KRW in cumulative funding (Crunchbase — Karrot Market, KED Global — Korea's top flea market $180M, about.daangn.com).
What Karrot refuses: the anonymity of nationwide marketplaces (eBay, Coupang), the impersonal aesthetics of enterprise commerce (data-heavy dashboards, filter-rich search UIs), and the gamified engagement loops of consumer social (streaks, badges, algorithmic feeds). The brand's mission, stated on its own corporate page, is "로컬의 모든 것을 연결해 동네의 숨은 가치를 기술로 깨우는" — connecting everything local, awakening hidden neighborhood value through technology (medium.com/daangn). Orange is the accent because the brand is supposed to feel like one warm thing in an otherwise neutral room.
#ff6600 appears only on the primary CTA, active states, and a small set of brand moments. It never decorates, never fills a hero background, never tints a shadow. UI implication: at most one orange element per viewport in the primary flow; if a design has two orange CTAs competing on one screen, one must demote to neutral-weak.동 / neighborhood) as visible metadata, not hidden in a detail screen.{4, 8, 12, 16, 20, 24, 32, 40, 48, 56, 64} must be justified in a comment or corrected.fg-critical, fg-informative, fg-positive) exist — but they are utility, not brand. UI implication: if a design introduces a second brand-scale color, it has drifted off-system; reject or re-scope to semantic.filter: invert() or runtime HSL math. Every component reads from semantic tokens that already account for theme.These are official product and stakeholder contexts, not invented demographic personas.
| State | Treatment |
|---|---|
| Empty (no listings nearby) | Warm one-line explanation (아직 우리 동네에 올라온 물건이 없어요) + one secondary CTA in neutral-weak (내 동네 바꾸기 / change neighborhood). Never an illustration. Never 데이터가 없습니다. |
| Empty (filter cleared) | Single line of gray-700 caption (조건에 맞는 물건이 없어요). No button — user resets the filter themselves. |
| Empty (new user, first paint) | Single welcome sentence naming the user's detected neighborhood, plus a primary CTA 둘러보기 (browse) in Karrot Orange. No onboarding carousel. |
| Loading (first paint) | Skeleton blocks at gray-200 matching the final listing-card layout — 1:1 thumbnail box, two text lines, one metadata line. Shimmer at 1.2s with 8% white highlight. |
| Loading (infinite scroll) | Bottom-of-list spinner in Karrot Orange, 24px diameter. No overlay. Existing cards stay visible. |
| Loading (refresh / pull-to-refresh) | Pull-down reveals a carrot-glyph progress indicator in Karrot Orange; never a generic iOS spinner on branded surfaces. |
| Error (inline field) | Input border becomes #fa342c (red-700) 2px, helper text below in red-700 13px. One actionable sentence (동네를 다시 선택해 주세요). |
| Error (toast) | #1a1c20 (gray-1000) background, white 14px weight 400 text, 3s auto-dismiss. Bottom of screen with 16px inset above the tab bar. One sentence. No icon. |
| Error (network / server-blocking) | Full-screen centered message in gray-1000 16px weight 600, gray-800 14px weight 400 subline, retry button in Karrot Orange. No illustration. |
| Success (inline flash) | Brief 300ms flash of #fff2ec (carrot-100) behind the updated element, fading back to default. For routine confirmations (favorited, saved search). |
| Success (transaction complete) | Dedicated confirmation screen — not a toast. #079171 (positive green) check icon top-center, one-line past-tense sentence (거래가 완료되었어요), and a single primary button 매너 평가 남기기 (leave manner rating). |
| Skeleton | gray-200 blocks at exact final dimensions matching the listing-card layout (1:1 thumbnail, two text lines, one metadata line). Shimmer 1.2s with 8% white highlight. Never over the neighborhood-name metadata — that slot stays blank until resolved, so the UI never implies a location that hasn't been confirmed. |
| Disabled | Button background drops to gray-200, text to gray-500. No color inversion. Geometry stays identical so re-enable is frame-stable. |
Durations (named, not raw milliseconds):
| Token | Value | Use |
|---|---|---|
motion-instant | 0ms | Toggle flips, checkbox state changes |
motion-fast | 150ms | Hover, focus, button press overlays, inline flash success |
motion-standard | 250ms | The default — card taps, tab switches, bottom-sheet reveals |
motion-slow | 350ms | Emphasized transitions — full-sheet presentations, success screens |
motion-page | 300ms | Native-style push/pop between routes |
Easings:
| Token | Curve | Use |
|---|---|---|
ease-enter | cubic-bezier(0.0, 0.0, 0.2, 1) | Sheets, toasts, screen pushes appearing |
ease-exit | cubic-bezier(0.4, 0.0, 1, 1) | Dismissals, pops, toast auto-close |
ease-standard | cubic-bezier(0.4, 0.0, 0.2, 1) | Two-way transitions — expandable cards, tab content |
Spring stance. Spring and overshoot easings are forbidden across Karrot surfaces. The brand is a neighborhood marketplace between strangers; playful bounce undermines the calm trust the rest of the system works to establish. Money and goods change hands on this app — a button that wobbles on press reads as toy-like, and a success card that springs in reads as celebratory in a way Karrot deliberately isn't. The one licensed exception is the native-platform pull-to-refresh indicator, which inherits the OS's default spring because overriding it would feel more jarring than accepting it. Every other motion uses ease-enter, ease-exit, or ease-standard.
Signature motions.
motion-fast / ease-standard), releases on tap-up before navigation begins. Feedback is immediate; the route transition follows on motion-page / ease-enter.y+40px with motion-standard / ease-enter and a synchronized backdrop fade from rgba(0,0,0,0) to rgba(0,0,0,0.5) (bg-overlay-muted). Dismissal uses motion-fast / ease-exit — leaving is lighter than entering.motion-slow rather than sliding — sliding would imply geographic direction, which is misleading (Korean neighborhoods aren't ordered on an axis).prefers-reduced-motion: reduce, all motion-* tokens collapse to motion-instant. No exceptions. Cross-fades replace slides. Pull-to-refresh indicator simplifies to a static spinner. The app stays fully usable; just less kinetic.Not independently verified — widely documented public facts:
Personas (§13) are fictional archetypes informed by publicly described Karrot user segments (KR urban young adult, KR secondary-city student, NA expat, KR retiree 동네생활 user). Any resemblance to specific individuals is unintended.
Interpretive claims (editorial, not documented Karrot statements):
Verified: 2026-07-11 (CAP0 evidence v1 + SEED v2 source reconciliation)
Tier 1 sources: https://www.karrotmarket.com/ (marketing live DOM); https://www.karrotmarket.com/about/ (second public surface); https://v2.seed-design.io/foundation/color/palette/ and https://v2.seed-design.io/foundation/typography/ (official SEED); https://github.com/daangn/seed-design/blob/fb4459e90f84e049112395964319b163f980b821/packages/stylesheet/global.css (official token source).
Tier 2 sources: https://getdesign.md/karrot and https://styles.refero.design/?q=Karrot were attempted; neither yielded an importable Karrot claim in this run.
Tier 2 (Philosophy/founders): Crunchbase (Karrot + Kim Jae-hyun + Kim Yong-hyun profiles), KED Global ($180M unicorn 2021), Korea Herald (Canada 2M), ZoomInfo (HQ Gangnam), KoreaTechDesk.
Style ref: toss (KR neighbor tone, retained).
Conflicts unresolved: none
Resolved drift: current SEED product Primary is #ff6f0f; current marketing-web CTA #ff6600 is retained as a separate surface token. The prior 26px maximum and exact Pretendard/SF Mono claims were removed.

Karrot is a hyperlocal platform built around the idea that technology should make neighborhood relationships feel more human, not more anonymous. Its design keeps community content dominant through warm orange accents, calm neutrals, direct language, and light interface chrome. Two related but non-identical public surfaces express that identity: the current SEED v2 product system defines semantic Primary as carrot-500 (#ff6f0f), while the public Karrot marketing site renders its CTA orange as #ff6600. Keeping those values separate preserves both product-system truth and the recognizable warmth of the brand.
Brand
Neutrals
Semantic
Type Scale
Verified size, weight, line-height, and tracking. Family is omitted when unresolved.
Fonts
Spacing
| Purpose | Value | Preview |
|---|---|---|
| sm | 4px | |
| md | 8px | |
| lg | 12px | |
| xl | 16px | |
| section | 64px |
Border Radius
| Element | Value | Preview |
|---|---|---|
| fullStructured token | 9999px | |
| mdStructured token | 8px | |
| smStructured token | 6px |
Do and Don't guidelines parsed from DESIGN.md.
Do
Don't
Buttons
Toasts
Tabs
Inputs