Scope: this file governs the visual identity of the Two-party binary bet app at
example/two-party-binary-bet/. It supersedes the rootDESIGN.mdfor this directory only.
Kannagi is a Bitcoin-native two-party binary bet. The product is a financial-decision tool — users compare percentages, sat amounts, and volumes vertically all day — so the chrome stays out of the way. The brand expresses itself in three places only:
- The wordmark in the header (Klee One mincho + the kana subline).
- The torii glyph next to it.
- The resolve / bet-fill moment — sakura petals fall briefly when the user commits a bet or a market resolves. 神和ぎ (kannagi) means "spirit-pacifying"; the petals fall when the outcome is decided.
Outside those three moments, the canvas is silent: warm shoji-paper cream, sumi-ink type, single coral primary on CTAs and focus rings. No background patterns, no decorative motifs, no constant petals.
Key characteristics
- Light, warm, calm — Polymarket-style restraint with a Japanese accent
- Sumi ink (
#251F18) on shoji-paper cream (#FBF6EC) - Single brand accent: sakura coral
#FF6B85, ONLY on primary actions and focus rings - Outcome pair: pastel sakaki green YES / vermillion NO (domain colors, never decorative)
- Inter for all UI text; Klee One restricted to the brand wordmark; Geist Mono for every numeric value (sats, %, hashes)
- Card radius 15px (the designer's sweet spot — Polymarket 8 feels cheap, Kalshi 6 feels banky, our 15 keeps "Kannagi" without infantilizing)
Reference works
- The 2008 anime かんなぎ — naming + the resolve-moment sakura motif
- Polymarket — featured hero, sort tabs, market-card information density
- Kalshi — light-theme calm, restrained shadows, mobile-first sticky bet bar
- Coral
#FF6B85/hsl(350, 100%, 71%)— primary CTA, focus ring, brand wordmark color when needed. The singular interactive accent. - Coral hover
~#FF4F6E— slight darken on hover viahover:bg-primary/90.
Discipline rule (binding): Coral appears on a pixel only if that pixel
is (a) a primary action button, (b) a focus ring, or (c) the Kannagi
wordmark / footer mention. Nowhere else. No decorative pills, no coral
shadows, no coral hover lifts on cards. If you reach for coral elsewhere,
use text-foreground or bg-foreground instead.
- YES — Sakaki Green
#5FBFA0/hsl(165, 45%, 56%)— pastel sakaki pine. Distinctive vs. every emerald-green competitor. - YES Foreground
#1A4D31— dark forest text on green bg. - NO — Vermillion
#E63946/hsl(354, 78%, 56%)— torii red, deeper than the coral primary so it's clearly a different signal. - NO Foreground
#FFFFFF— white on vermillion bg.
| Token | Hex | HSL | Use |
|---|---|---|---|
--background |
#FBF6EC |
42 50% 96% |
Page background — shoji paper |
--card |
#FFFFFF |
0 0% 100% |
Cards, panels — shrine wall |
--muted |
#F1ECDF |
42 38% 92% |
Inputs, muted surfaces |
--border |
#E5DCC4 |
42 28% 86% |
Borders, dividers |
A single 240px-tall top-vignette (rgba(255, 200, 210, 0.06)) keeps the
canvas from reading as "unfinished Polymarket clone." No radial washes,
no scattered ambient gradients.
| Token | Hex | HSL | Use |
|---|---|---|---|
--foreground |
#251F18 |
25 22% 12% |
Primary — sumi ink |
--muted-foreground |
#837A6F |
30 12% 46% |
Secondary text, labels |
- UI text: Inter (with
Zen Kaku Gothic NewJP fallback). Proven for data density and tabular numerics. - Brand wordmark only: Klee One (
.font-shrine). Used for "Kannagi" in the header and footer. Never on body text or buttons. - Numeric data: Geist Mono. Sat amounts, percentages, hashes, pubkeys, durations — everything the user might compare vertically.
https://fonts.googleapis.com/css2?family=Inter:wght@300..700&family=Geist+Mono:wght@400;500;600&family=Klee+One:wght@400;600&family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap
| Role | Font | Size | Weight | Use |
|---|---|---|---|---|
| Brand wordmark | Klee One | 20px | 600 | Header "Kannagi" |
| Page Title (rare) | Inter | 24-30px | 700 | Detail-page title only |
| Section heading | Inter | 14px | 600 | Card headers |
| Body | Inter | 14px | 400 | Descriptions |
| Label | Inter | 11–12px | 500 | Uppercase, tracking-wider |
| Probability Large | Geist Mono | 36–48px | 700 | Featured % |
| Probability Card | Geist Mono | 18px | 600 | Card YES/NO % |
| Data | Geist Mono | 12–14px | 500 | Sats, volumes, percentages |
| Token | Px | Use |
|---|---|---|
--radius-sm |
6px | Pills, small badges, inline tags |
--radius-md |
10px | Buttons, inputs, side selectors |
--radius-lg |
15px | Cards, panels (default --radius) |
--radius-xl |
18px | Featured / hero cards (rare) |
--radius-pill |
9999px | Sort tabs, search, wallet pill |
Polymarket lives at 8px and feels generic; Kalshi at 6px and feels banky; Kannagi sits at 15px — recognizable without being toy.
- Max content width 1152px (
max-w-6xl) - Markets grid: 1-up mobile → 2-up tablet → 3-up xl
- Detail page: 3-col grid on
lg. Chart top-left (cols 1–2), bet panel rows 1–2 col 3 (sticky), rest of left column rows 2 cols 1–2 - Mobile reorder: bet panel comes after the Chart in DOM order, before Activity / TopHolders / About. This puts the buy CTA above the fold even without sticky chrome.
- Base unit 4px
- Card padding 20px desktop, 16px mobile
- Card gap 16-20px
- Above-the-fold: Header → Create-market button → Featured market → Sort tabs → Category + search → Grid. No StatsBar above the fold; it lives below the grid as quick context.
Default: nothing animates. Specifically excluded:
- No constant background drift (no falling petals as wallpaper)
- No hover lifts on cards
- No glow shadows
- No entrance animations
Allowed:
- Probability bar width transition on data change (500ms)
- PriceChart line width / range-selector pill state change
- Sakura burst — fired once when (a)
placeBetMutation.isSuccessor (b) marketstatustransitions toresolved_*. 36 petals fall over ~9s, then unmount. This is the brand's only ambient motion, and it earns its presence by mapping to a meaningful event. prefers-reduced-motiondisables the sakura burst entirely
- Render every numeric value in
font-mono - Use
bg-foreground text-backgroundfor active sort/category pills - Use
bg-yes/bg-noonly for bet outcomes (buttons, badges, resolved states, sparkline trend color) - Truncate hashes / pubkeys with
…and surface full value intitle - Land the user on the Featured market — let it carry the hero
- Don't add a coral hover glow, coral pill background, or coral underline
- Don't render numbers in Inter (use Geist Mono)
- Don't run sakura petals on the page background
- Don't use
rounded-2xl/rounded-3xlon cards (15px is the cap) - Don't add "Verified by TLSNotary" or other technical chrome to user-facing copy unless the user is acting on it
- Don't put a Page Title above the Featured market — Kannagi is the two-party-binary-bet platform; the header already says that
Phones are the primary surface (60%+ of two-party-binary-bet traffic).
- Header height 56px, pubkey pill hidden under
md - Cards 1-up at all mobile widths
- Bet panel reorder on detail (described in §5) is the most important conversion fix — it puts the CTA in the user's first scroll
- All tap targets ≥ 36px (sort tabs h-9, buttons h-10/h-11, side selectors h-11)
- Category pill row scrolls horizontally; bleed past page padding via
-mx-4 px-4so the first/last pill don't get clipped
| Date | Decision | Rationale |
|---|---|---|
| 2026-04-27 | Rebrand from Anchr → Kannagi | Distinct identity for the two-party-binary-bet surface, separate from the underlying protocol. |
| 2026-04-27 | Light theme as the only mode | The anime's atmosphere is daylight; dark mode would betray the source. Kalshi precedent shows light works for two-party binary bets. |
| 2026-04-27 | Klee One restricted to the brand wordmark | Mincho is too heavy for body UI; Inter does the dense work. Klee earns its presence by appearing twice (header + footer). |
| 2026-04-27 | Sakura coral #FF6B85 as the only brand color |
Replaces the earlier vermillion. Softer, less ceremonial; pairs with the kawaii-but-not-noisy direction. |
| 2026-04-27 | Sakura on background → resolve / bet-fill moment | Designer review: the field was visual noise. Resolving the brand to an event-triggered burst maps the petal motif to its meaning (神和ぎ = ritual completion). |
| 2026-04-27 | Card radius 15px | Designer review: Polymarket 8 felt cheap, Kalshi 6 felt banky. 15 keeps Kannagi's softness without infantilizing. |
| 2026-04-27 | Mobile bet-panel reorder | Designer flagged "audit at 390px before touching anything else." Bet panel was at the bottom of the mobile detail page, killing conversion. Reordered grid placement so it sits right after the chart on mobile, sticky right-column on desktop. |
| 2026-04-27 | Drop hero "Two-party binary bets / 予想市場" subtitle | Kannagi is the platform; the header already names it. Page lands on the create-market CTA, then Featured. |