
Mercari is Japan's largest C2C marketplace (50M+ downloads, 350K daily listings) and its design system is a textbook example of mature semantic token architecture. The production site at jp.mercari.com exposes 681 CSS custom properties on :root, organized into the well-named --alias-color-* namespace: --alias-color-background-{role}-{state}, --alias-color-text-{role}-{state}, --alias-color-border-{role}-{state}, --alias-color-icon-{role}-{state}, --alias-color-overlay-*. This isn't internal documentation — it's the actual design system surfaced at runtime, ready to read directly from any production page.
The brand color is the famous Mercari Red (#ff333f) — vivid, attention-grabbing, used as the attention semantic role for badges, error states, danger actions, and the iconic price-tag aesthetic. Around it sits a balanced palette: accent blue (#0095ee), success green (#0aa466), decorative yellow (#ffb818). Text hierarchy uses dark gray (#333333 primary, #666666 secondary) on a pure white surface (#ffffff), with a soft secondary background (#f5f5f5) for grouped sections.
Typography is system-stack with Japanese-first fallbacks: Helvetica Neue, Arial, Hiragino Kaku Gothic ProN Custom, Hiragino Sans Custom, Meiryo Custom, sans-serif. The "Custom" suffix on the Hiragino/Meiryo fonts indicates Mercari's deployment of optically-tuned variants for their production app — same font families, but adjusted spacing/hinting for marketplace UI. Buttons use weight 700 for primary CTAs at a tight 4px radius, while body text holds at weight 400.
Key Characteristics:
:root — the public design system surface#ff333f) as the attention semantic — used for badges, error/danger states, sale prices, the brand markHelvetica Neue → Arial → Hiragino Kaku Gothic ProN Custom → Hiragino Sans Custom → Meiryo Custom4px border-radius on buttons and cards — sharp, commerce-functionalalias-color-{property}-{role}-{state} (e.g., --alias-color-background-attention-default)--grid-layout-gutter: 24px and --grid-layout-page-padding-horizontal: 36px--bnfXaU: 6px, --exLgvR: 8px, --fwPfWM: 8px, etc.) with named alias tokensborder-radius: 50%) for category navigationAll values verified live from :root CSS custom properties on jp.mercari.com.
#ff333f): --alias-color-background-attention-default, --alias-color-text-attention-default. The signature brand red. Used for danger actions, sale price emphasis, the brand mark.#ff6574): --alias-color-background-attention-highlight, --alias-color-border-attention-highlight. Lighter variant for hover states.#e32b36): --alias-color-background-attention-active, --alias-color-border-attention-active. Pressed state.#fdf1f3): --alias-color-background-attentionThin-default. Very light pink for subtle background emphasis (e.g., error message bg).#ffdcdf): --alias-color-background-attentionThin-highlight.#0095ee): --alias-color-background-accent-default, --alias-color-text-accent-default, --alias-color-icon-accent-default. Links, info badges, accent CTAs.#63c5ff): --alias-color-background-accent-highlight.#0073cc): --alias-color-background-accent-active, --alias-color-text-accent-active.#0073cc): --alias-color-text-link-default, --alias-color-icon-link-default.#30b2ff): --alias-color-text-link-highlight.#0056ab): --alias-color-text-link-active.#e8f8ff): --alias-color-background-accentThin-default. Light blue notification bg.#0aa466): --alias-color-text-success-default, --alias-color-icon-success-default, --alias-color-border-success-default.#0fbf67): --alias-color-text-success-highlight, --alias-color-icon-success-highlight.#078962): --alias-color-text-success-active, --alias-color-icon-success-active.#e4ffec): --alias-color-background-success-default.#cdfbd2): --alias-color-background-success-highlight.#ffb818): --alias-color-icon-decorativeYellow-default. Reviews, ratings, premium markers.#ffdc74): Lighter yellow for hover.#db9611): Darker amber for pressed.#333333): --alias-color-text-primary-default. Default body text and headlines.#999999): --alias-color-text-primary-highlight.#222222): --alias-color-text-primary-active.#666666): --alias-color-text-secondary-default. Captions, metadata.#999999): --alias-color-text-secondary-highlight.#4c4c4c): --alias-color-text-secondary-active.#cccccc): --alias-color-text-disabled-default.#999999): --alias-color-text-placeholder-default.#ffffff): --alias-color-text-inverse-default. White text on dark surfaces.#ffffff): --alias-color-background-primary-default. Default page bg.#f5f5f5): --alias-color-background-primary-active. Pressed/hover state for white-bg controls.#f5f5f5): --alias-color-background-primary-highlight.#f5f5f5): --alias-color-background-secondary-default. Grouped section bg.#e5e5e5): --alias-color-background-secondary-highlight.#333333): --alias-color-background-tertiary-default. Dark surfaces (e.g., snackbar contrast).#cccccc): --alias-color-background-disabled-default.#cccccc): --alias-color-border-primary-default. Standard component border.#e5e5e5): --alias-color-border-primary-highlight.#999999): --alias-color-border-primary-active.#333333): --alias-color-border-secondary-default. Strong dividers.#cccccc): --alias-color-border-disabled-default.rgba(34,34,34,0.2)): --alias-color-overlay-weak.rgba(34,34,34,0.4)): --alias-color-overlay-middle.rgba(34,34,34,0.6)): --alias-color-overlay-midStrong.rgba(34,34,34,0.8)): --alias-color-overlay-strong.rgba(255,255,255,0.2)): --alias-color-overlay-inverseWeak. White overlay on dark surface.#333333): --alias-color-icon-primary-default.#cccccc): --alias-color-icon-secondary-default.#666666): --alias-color-icon-tertiary-default.#ffffff): --alias-color-icon-inverse-default.#ffffff): --alias-color-system-staticWhite-default.#000000): --alias-color-system-staticBlack-default.rgba(255,255,255,0)): --alias-color-system-staticClear-default."Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN Custom", "Hiragino Sans Custom", "Meiryo Custom", sans-serif
For non-Japanese locales the secondary stack adds Traditional Chinese support:
Helvetica Neue, Arial, "PingFang TC Custom", "Noto Sans TC Custom", "Microsoft JhengHei", "Hiragino Kaku Gothic ProN Custom", "Hiragino Sans Custom", "Meiryo Custom", sans-serif
The "Custom" suffix indicates Mercari runs optically-tuned variants of these system fonts in production — same families, adjusted spacing for marketplace UI density.
Verified: primary attention CTAs (e.g., "コンテンツにスキップ" skip link) use weight 700 with bg #ff333f and 4px radius. Secondary actions (login, signup, language) use weight 400.
15px (verified bodySize)15-20px for H1/H2 with weight 700)--typography-*-font-size-mobile tokensPrimary attention CTA (red):
#ff333f, text #ffffff, border-radius: 4px, padding: 11px 15px, font-weight: 700Accent CTA (blue, e.g., "Shop Now"):
#ffffff, text #0095ee, border-radius: 4px, padding: 8px 12px, font-weight: 700Login / Signup (secondary, neutral):
#ffffff, text #333333, border-radius: 4px, padding: 8px, font-weight: 400Icon button:
transparent, color #000000 or #333333, border-radius: 4px, padding: 4px, font-weight: 400Language toggle:
transparent, text #333333, border-radius: 4px, padding: 8px 16px, font-weight: 700--alias-color-background-primary-default)1px solid #e0e0e0 border or no border (image-led cards)border-radius: 50% (circular) — distinctive Mercari pattern for category navigation#ff333f (Mercari Red) for sale pricesbg: #f5f5f5 (secondary surface), border-radius: 4px, dark gray placeholder #999999#ff333f for active tab)#333333 weight 400#ff333f (or #222222) weight 700 with 2px red underline--alias-color-background-tertiary-default: #333333)--alias-color-text-inverse-default: #ffffff)--mer-z-index-snackbar: 1500border-radius: 8px--alias-color-overlay-strong: rgba(34,34,34,0.8)--mer-z-index-modal: 14001440px (--bqHLTv, --gIsGsE)40px (--grid-layout-page-padding-top), bottom 64px (--grid-layout-page-padding-bottom), horizontal 36px (--grid-layout-page-padding-horizontal)24px (--grid-layout-gutter)16px (--grid-layout-inset)Mercari uses Panda CSS-generated hashed token names alongside semantic aliases. Common values from CSS:
4px, 6px, 8px, 12px, 16px, 20px, 24px, 28px, 32px, 36px, 40px, 44px, 48px, 56px, 64px, 80px, 96px, 128px, 164pxThis is a 4dp baseline scale extended with named tokens.
Mercari is commerce-density — tight product grids with minimal card chrome, image-led visual hierarchy. The 6-column product grid on homepage uses ~190-240px card widths with 12-16px gutters.
Mercari has explicit shadow tokens for floating UI:
0px 2px 4px 0px rgba(0,0,0,.2) (--ljPKsT)0px 4px 8px 0px rgba(0,0,0,.2) (--coocrY)0px 8px 10px 0px rgba(0,0,0,.2) (--jcKRRc)0px 0px 16px 0px rgba(0,0,0,.2) (--gQVqIQ)1100 (--mer-z-index-menu)1200 (--mer-z-index-navigation-top)1200 (--mer-z-index-navigation-bottom)1300 (--mer-z-index-autocomplete)1400 (--mer-z-index-dialog)1400 (--mer-z-index-modal)1400 (--mer-z-index-side-sheet)1400 (--mer-z-index-information-popup)1400 (--mer-z-index-action-sheet)1500 (--mer-z-index-snackbar)1600 (--mer-z-index-tooltip)cubic-bezier(0.65, 0, 0.35, 1) (sheets), cubic-bezier(0.33, 1, 0.68, 1) (snackbars/dialogs)0.25s1.25s 8-step rotation--alias-color-* semantic tokens. The 681 variables cover virtually every UI surface — never hardcode hex values when an alias exists.#ff333f) for the attention semantic — sale prices, danger actions, the brand mark, error states.#0095ee) or neutral, not red.border-radius: 4px on buttons and cards. Mercari's commerce voice is sharp and functional.border-radius: 50%) to brand/category icons in navigation. It's a distinctive Mercari pattern.#f5f5f5 secondary bg provide separation.--mer-z-index-*) — Mercari's stacking order is deliberate.9999 — that breaks the layered system.--typography-*-font-size-mobile tokens and --vbMobileBoundaryWidth-style patterns)| Width | Behavior |
|---|---|
Desktop >1440px | Centered max-width container, full grid |
Desktop 1024–1440px | 6-column product grid, full nav |
Tablet 768–1024px | 4-column product grid, condensed nav |
Mobile <768px | 2-column grid, hamburger nav, sticky bottom navigation |
36px, medium ~48px, large ~56px (estimated from spacing tokens)44px per Apple HIG conventions4px corner radius (matches button/card scheme)50% radius)--color-shimmer-bg / --color-shimmer-fg pattern#ff333f (--alias-color-background-attention-default)#0095ee#0aa466#ffb818#333333#666666#ffffff#f5f5f5#cccccc#ffffff (on dark surfaces)#ff333f, white text, border-radius: 4px, padding: 11px 15px, font-weight: 700. Hover: bg darkens to #ff6574. Active: #e32b36. Use this for danger actions, sale CTAs, the brand-mark button — never for generic 'primary' actions (those use accent blue)."1px solid #e0e0e0, 4px radius. Image fills top 70% in 4px rounded square. Title in 14px weight 400 #333333 (2-line clamp), price below in 16px weight 700 #333333 for normal price OR #ff333f for sale price. Optional sale badge in top-left corner using #ff333f bg + white text + 2px radius."border-radius: 50%, ~64-80px diameter, white bg with 1px solid #f5f5f5 border, brand image centered. Below: brand name in 12px weight 400 #333333, max 1 line ellipsis."#f5f5f5 (secondary surface), border-radius: 4px, padding 12-16px, placeholder #999999. Right side: camera icon + magnifier icon, both #666666. On focus: bg shifts to white, border becomes 1px solid #cccccc."#333333 (--alias-color-background-tertiary-default), white text, border-radius: 4px, padding: 12px 16px, fixed at bottom with z-index 1500. Slides in via cubic-bezier(0.33, 1, 0.68, 1) over 0.25s. Auto-dismiss after 3-4s."--alias-color-* tokens, not raw hex. Mercari's 681 vars are the canonical source.#ff333f) is the attention role — destructive, sale-emphasis, brand mark. Not a default primary.border-radius: 4px is the workhorse. Cards, buttons, badges. Brand thumbnails get 50% (circular).--mer-z-index-*) — never arbitrary numbers.cubic-bezier(0.65, 0, 0.35, 1) for sheets, cubic-bezier(0.33, 1, 0.68, 1) for snackbars/dialogs. Duration 0.25s.#ffffff cards on #f5f5f5 page bg) handles separation — minimal shadow needed on flat layouts.#333333, secondary #666666, tertiary #999999 — three-tier text hierarchy across the entire system.24px gutter — the layout grid is explicit.Mercari's voice is pragmatic, transparent, and functionally-warm — the voice of a trust infrastructure, not a lifestyle brand. Where LINE sells belonging ("Life on LINE") and where Apple sells aspiration, Mercari sells circulation: moving value from someone who no longer needs it to someone who does. The copy reflects that — action verbs, concrete amounts, shipping logistics, and a Japanese-origin register that favors politeness without ceremony. The "Move Fast" value is balanced by "Safe Rollout" — safety copy is direct ("ID verified", "payment held until delivery"), never reassurance-only ("don't worry!").
| Context | Tone |
|---|---|
| Headlines | Declarative about value and circulation. "Sell what you don't need. Buy what someone didn't." No superlatives, no "revolutionary marketplace". |
| Product CTAs | Imperative verb + noun ("List item", "Ship now", "Request refund"). Plain, never clever. |
| Listings copy | Matter-of-fact. The condition labels (New, Like New, Good) carry the judgment; subjective adjectives like "amazing" or "must-have" are banned from platform chrome. |
| Error messages | In Japanese UI, proper 丁寧語 (teineigo) — blameless and concrete. In English, direct and action-oriented ("Upload failed. Tap to retry."). |
| Trust / safety copy | Explicit rather than reassuring. "Payment held until buyer confirms receipt" beats "Secure and trusted". |
| Engineering / culture content | Professional and retrospective; documents failures openly ("Lessons from…", "Behind the Scenes of…") — in line with the "Go Bold" + document-learnings value. |
| Onboarding | Functional orientation first — what you can buy and sell, how fees work, how shipping is handled — not aspirational framing. |
| Push notifications | Transactional specificity — item title + action ("Your listing sold: iPhone 14 Pro"). Never promotional spam in the primary notification surface. |
Forbidden phrases. "Revolutionary", "game-changer", "world's best", "amazing deals". In Japanese UI: avoid カタカナ tech-marketing language (イノベーティブ, ディスラプティブ). Generic hype emoji (🔥 ✨ 💯 🚀) on listings or system copy — emoji is reserved for user-generated message content between buyer and seller, not for platform voice.
Representative voice samples. Where a verified live string exists on Mercari's public surfaces it is cited with a source marker; where no public surface carries the string (logged-in-only copy, error states), the sample is marked illustrative and a production team should replace it with Mercari's real live copy before shipping.
Mercari was founded in 2013 in Tokyo by Shintaro Yamada, after he left Rakuten Auctions and travelled the world asking one question — "What can I do to help society thrive with the finite resources we have?" (about.mercari.com). That question became the company's founding premise: circulate all forms of value to unleash the potential in all people. The answer took the shape of a smartphone-first C2C marketplace that made listing an item fast enough (3 minutes, 3 photos) to be worth doing for a single pair of used jeans.
From that origin Mercari grew into Japan's largest C2C marketplace (50M+ downloads, 350K daily listings ), expanded to the US in 2014, and spun up adjacent divisions: Merpay (2019, payments — "Building trust for a seamless society"), Mercoin (2023, crypto — "Circulate your value, anywhere and everywhere"). The consistent thread across divisions is the word circulate — not sell, not exchange, not marketplace. Every product framing returns to that verb.
What Mercari refuses: the auction-complexity aesthetic of eBay (bidding clocks, snipe warnings); the spam-forward commerce chrome of flash-sale marketplaces (flashing banners, permanent 50%-off overlays); the corporate-blue sterility of legacy Japanese e-commerce (Rakuten Ichiba, Yahoo! JAPAN Auctions). What it embraces: a semantic-token-first design system (681 :root variables — see §2), Mercari Red as a finite attention signal (never decorative), mobile-first listing flow, and explicit trust infrastructure (ID verification, escrow, ratings) surfaced directly in the UI rather than hidden in settings.
Circulate, don't just sell. Product framing uses the verb circulate; listings flow from one user to another, not from a retailer to a consumer. UI implication: both sides of a transaction are peers — no "seller dashboard" / "customer account" asymmetry. The same person is often both on the same day, and the interface reflects that symmetry.
Semantic tokens are the source of truth. All 681 :root CSS custom properties (--alias-color-background-attention-default and friends) resolve through the token layer before any pixel is painted. UI implication: components never hardcode hex values. A theme swap (dark mode, regional variant) is a :root redefinition, not a UI refactor.
Mercari Red is the attention role, not a primary accent. #ff333f signals danger, sale emphasis, and the brand mark — nothing else. Using it as a decorative accent on buttons, illustrations, or empty-state icons dilutes its function as a warning signal. UI implication: primary CTA surfaces use neutral dark text on white, not red; red is reserved for destructive actions and sale-price emphasis.
4px radius is the commerce signature. Sharp 4px corners read as "browse the catalog efficiently" — LINE's 50px pills would make Mercari feel social when it is transactional. UI implication: never round corners to match a reference aesthetic ("softer", "friendlier"); the 4px is intentional functional rigor.
Two weights: 700 and 400. Nothing in between. Price, badge, primary CTA, and section headings use 700. Body, secondary labels, and helper text use 400. Middle weights (500, 600) are absent — they blur the hierarchy between scan-value (price, button) and read-value (description). UI implication: disable imported fonts' "medium" weight; design tokens expose only two.
Hiragino / Meiryo "Custom" variants are first-class, not fallbacks. The optically-tuned Japanese faces are the primary reading surface for 50M+ Japanese users; they lead the stack, not end it. UI implication: never specify -apple-system or system-ui alone — the fallback chain must name the Japanese optical variants explicitly (verified at runtime on jp.mercari.com).
"Move Fast" pairs with "Safe Rollout." The engineering culture (Go Bold, All for One, Be a Pro, Move Fast — careers.mercari.com/mission-values) is explicitly paired with documented-failure practice. Blog titles like "Safe Chunked Execution" and "Behind the Scenes" are intentional; failures are surfaced, not buried. UI implication: error and recovery states are visible on the failing element ("Upload failed. Tap to retry"), not hidden behind a modal or a support ticket.
Disagree & commit. Once decisions are made — after debate — the team commits fully (mission-values). UI implication: there is no "legacy styles" escape hatch in the design system. Deprecated tokens are removed on a schedule, not left for "gradual migration forever."
Personas are fictional archetypes informed by publicly described Mercari user segments and mission documentation; not individual people.
Yuki Sato, 28, Tokyo. Office worker who declutters every 2–3 weeks — a jacket, a manga set, a hand mixer. Lists in under 3 minutes during her evening commute and expects the "sold" notification to tell her exactly how to ship. Japanese-language-first; sub-¥20,000 items only, rarer collectibles still go to Yahoo! Auctions.
Takeshi Nakamura, 42, Osaka. Secondhand-bookshop owner using Mercari as a secondary retail channel — photographs overstock at the shop, lists in the evening. A 1-star rating materially damages his shop's income, so he treats the platform's forced taxonomy (Like New, Good) as a feature that protects him from subjective disputes.
Sarah Kim, 19, Los Angeles. Mercari US user since 2022; thrifts Y2K fashion and old consumer electronics. Never uses eBay ("too auction-y, too slow"); compares Mercari to Depop and picks Mercari for lower-budget finds, Depop for curated vintage.
Hiroko Tanaka, 56, Kobe. Retiree selling handmade knit goods — supplemental income that Yahoo! Auctions' complexity never allowed. Depends on the ID-verification badge as social proof; buyers hesitate on higher-priced items without it. Her listings are spare — 3 photos, 2 sentences, 1 honest condition label.
Copy strings below are illustrative treatments of Mercari's tone applied to each state, not verified live copy. A production team should replace them with Mercari's actual copy (observable via Playwright against jp.mercari.com's logged-in surfaces) before shipping.
| State | Treatment |
|---|---|
| Empty (home, new user) | White canvas (--alias-color-background-primary-default). One line of body copy (15px weight 400, #333333) explaining what Mercari does in the local register. One 4px-radius --alias-color-background-attention-default (Mercari Red) CTA "List your first item". No illustration — the category thumbnails below serve as visual orientation. |
| Empty (search results) | Neutral gray (#666666) microcopy: "No results for ''. Try a broader keyword or browse categories below." Suggested-category chips follow immediately. Never a "sorry" apology or emoji. |
| Loading (listing grid) | Skeleton tiles at the exact final card dimensions (--alias-color-background-secondary-default #f5f5f5 blocks, 4px radius). Shimmer pass ≤ 1.2s. Skeleton never shows placeholder text — only rectangles. |
| Loading (price / amount field) | Currency-localized placeholder, never a number: ¥ - for JP, $ - for US. Never ¥ 0 — zero reads as "this item is free." |
| Error (photo upload failed) | Red icon (--alias-color-icon-attention-default #ff333f) attached to the failed photo slot. Inline text: "Upload failed. Tap to retry." Retry tap reattempts without full form resubmission. Never a blocking modal. |
| Error (network) | Top banner in --alias-color-background-tertiary-default (#333333) with white text. One sentence + retry pill. Banner disappears silently when connectivity returns. |
| Error (listing rejected, policy violation) | Modal is used here — this is not a transient error. Headline states the violation plainly ("This item type isn't allowed"), body links to the policy page, CTA is "Edit listing". Never hide the policy reason behind a support ticket. |
| Success (listed) | Bottom toast snackbar at --mer-z-index-snackbar (1500), --alias-color-background-tertiary-default (#333333) bg, white text, 3–4s auto-dismiss: "Listed. View your item →" — the link inside the toast goes to the listing. |
| Success (sold) | Full-width banner at top of the listing-detail view using the success-green family (derived from #0aa466, not brand red — red is for attention, not celebration). Body: "Sold to @buyer. Package within 3 days." Primary CTA: "Generate shipping label" — the platform takes the user straight into the next step. |
| Skeleton | #f5f5f5 (--alias-color-background-secondary-default) at exact final dimensions. Never over the price field — that stays currency-placeholder. |
| Disabled | Opacity applied to text and fill together. Disabled CTA keeps its 4px radius — never flattens or rounds to a different shape. |
Mercari's motion vocabulary is disciplined commerce motion: fast feedback on interaction, measured confirmation on completion, no spring or bounce. This is deliberate. Spring motion reads as delight; commerce requires precision about amounts and states. LINE's ease-sticker overshoot would be wrong here — a Mercari user watching a purchase-confirmation animation should feel confidence, not whimsy.
Durations:
| Token | Value | Use |
|---|---|---|
motion-instant | 0ms | Toggle commits, selection state |
motion-fast | 150ms | Button/card tap feedback, image thumbnail expand |
motion-standard | 250ms | Bottom sheet rise, snackbar enter/exit, dialog appear |
motion-slow | 400ms | Listing-submit success confirmation, payment complete |
motion-page | 300ms | In-app navigation push/pop |
Easings (verified from live :root computed styles on jp.mercari.com):
| Token | Curve | Use |
|---|---|---|
ease-standard | cubic-bezier(0.33, 1, 0.68, 1) | Snackbars, dialogs, toasts — the everyday easing |
ease-sheet | cubic-bezier(0.65, 0, 0.35, 1) | Bottom sheet rise/dismiss — more deliberate, like a drawer |
ease-exit | cubic-bezier(0.4, 0, 0.9, 1) | Dismissals, cancellations |
No ease-bounce, no ease-overshoot, no cubic-bezier with y-values > 1 or < 0 anywhere in the system. Commerce has no spring.
Signature motions.
1.0 → 0.98 over motion-fast on press, returning to 1.0 on release. Subtle, thumb-oriented, feels tactile without bouncing.ease-sheet over motion-standard. The deliberate easing matches the Japanese-origin UX tradition of drawers sliding smoothly, not snapping into place.motion-fast with a simple crossfade — no scaling pulse. The commit is the signal; no decorative reinforcement.motion-slow with ease-standard. No confetti, no illustration — the ship-now CTA that appears is the reward.prefers-reduced-motion: reduce, all motion-* tokens collapse to motion-instant. Sheets and modals appear via opacity only. The app remains fully functional; motion is never load-bearing for comprehension.Mercari is Japan's largest C2C marketplace (50M+ downloads, 350K daily listings) and its design system is a textbook example of **mature semantic token architecture**. The production site at `jp.mercari.com` exposes **681 CSS custom properties on `:root`**, organized into the well-named `--alias-color-*` namespace: `--alias-color-background-{role}-{state}`,
Top 24 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.