Our brand, in the open.
Everything you need to put WA.cr on a page: the logos as SVG, the colour and type system the product is built from, the shared component library rendered live, and how every share card is drawn for the platform it lands on.
One logo, four files.
Every asset is an SVG straight from the repository — the same bytes the product ships. Download one, or take the whole kit.
Wordmark, light
0 0 512 128The full logo on white or any light surface: ink "WA", blue ".cr", the orange mark.
Download SVGWordmark, dark
0 0 512 128The same logo for any surface darker than mid-grey: the "WA" flips to paper, nothing else moves.
Download SVGBrand mark
0 0 1080 1080The keeda in its chat bubble on paper: app tiles, avatars, anywhere the wordmark would be too small.
Download SVGIcon glyph
0 0 512 512The orange-only glyph on a transparent ground: the favicon, monochrome contexts, 16 px and up.
Download SVG
Rules
- Clear space on every side equals the height of the chat bubble in the mark.
- Minimum height: 20 px for the wordmark, 16 px for the mark and the icon.
- Use the dark wordmark on any surface darker than mid-grey.
- Never recolour the orange.
- Never stretch, rotate or crop.
- Never add a shadow, outline or gradient.
- Never set "WA.cr" in another typeface as a substitute logo.
- The "WA" flips ink to paper with the theme; the ".cr" blue and the orange never change.
Four colours, one accent.
The palette is lifted straight off the logo. Orange is the only colour that ever asks for attention; everything else is ground.
- Brand orange#fe771cpalette.brandOrange
The chat-bubble mark and the primary accent: buttons, focus rings, the one emphasised word in a heading.
- brandOrangeLight
#ff924a - brandOrangeDark
#d2620f
- brandOrangeLight
- Brand blue#3d6792palette.brandBlue
The ".cr" in the wordmark and the secondary accent. It doubles as the informational status ink, so there is never a second blue.
- brandBlueLight
#5a86b3 - brandBlueDark
#2b4a6a
- brandBlueLight
- Ink#121212palette.brandInk
The "WA" of the wordmark in light mode, and the page background in dark mode.
- Paper#edededpalette.brandPaper
The "WA" of the wordmark in dark mode, and body text on ink.
Reserved
WhatsApp green is kept for WhatsApp-action UI only — a Send on WhatsApp button, a read receipt — never as a brand surface. If a surface is ours, it is orange.
- palette.waGreen
#25D366 - palette.waGreenDark
#128C7E
Semantic roles
Components never name a palette colour. They name a role, and the role resolves per theme through an HSL CSS variable.
| Role | Light | Dark | Used for |
|---|---|---|---|
| --background | #ffffff | #121212 | The page: white in light, brand ink in dark. |
| --foreground | #121212 | #ededed | Body text: ink on white, paper on ink. |
| --primary | #fe771c | #fe771c | Brand orange in both themes. A tenant accent overrides this one role only. |
| --primary-foreground | #121212 | #121212 | The label painted on orange: ink (7.02:1), never paper (2.67:1). |
| --border | #e4e4e7 | #27272a | Hairlines, tile edges, input outlines. |
| --muted-foreground | #71717a | #a1a1aa | Subheads, captions, secondary copy. |
| --ring | #fe771c | #ff924a | The focus ring: orange in light, the lighter orange in dark so it clears the ink. |
| --raised | #fafafa | #1f1f23 | A surface one step above the card: menus, popovers, the drawer. |
Contrast. The label on orange is ink, at 7.02:1 — not paper, which manages only 2.67:1 on the same orange and fails AA.
Status pairs. Success, warning, info and danger are each an ink on its own soft chip, and every pair clears AA. A mid-ramp green is legible as a dot and illegible as text, so a status is never a coloured block.
Tenant accents. A tenant’s brand accent overrides only --primary (see Pill tone="primary" below), never a brand-* colour.
Every value on this page is read from @wacr/tokens at build time, so it cannot drift from the product.
Three voices, one page.
A display face for the headline, a workhorse for everything readable, and a mono for the technical kicker.
Clash Display
Display — headings & share-card headlines · variable 400–700 · self-hostedSend. Sell. Serve.
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
By Indian Type Foundry, via Fontshare. Loaded once with next/font and served from our own origin — no third-party font request, ever. The share cards embed the Semibold.
Inter
Body & UI — the sans stack · 400/500/600/700Connect a WhatsApp number, send your first message, and decide once you see it land. Every action leaves a trail, every message is priced before it is sent, and the console reads the same on a phone at a shop counter as it does on a desk.
Inter heads the stack, then ui-sans-serif, system-ui, … — the system face stands in when Inter is absent, so the product never waits on a font download.
JetBrains Mono
Kickers, code & the technical voice● 03 TYPOGRAPHY · 1200×630 · #fe771c
JetBrains Mono, then ui-monospace, SFMono-Regular, … Used for chapter eyebrows, hexes, paths and anything a developer will copy.
Type scale
- Aaxs · 0.75rem
- Aasm · 0.875rem
- Aabase · 1rem
- Aalg · 1.125rem
- Aaxl · 1.25rem
- Aa2xl · 1.5rem
- Aa3xl · 1.875rem
- Aa4xl · 2.25rem
- Aa5xl · 3rem
- Aa6xl · 3.75rem
Weights
- Aanormal · 400
- Aamedium · 500
- Aasemibold · 600
- Aabold · 700
- Headings. Clash Display, tight tracking, one emphasised phrase in orange at most.
- Body. Inter stack, never below the sm step for anything a person has to read.
- Figures. Tabular numerals whenever numbers sit in a column, so 3,35,174 lines up under 12,004.
- Grouping. en-IN digit grouping: 3,35,174 not 335,174. Currency as text (₹1,499), never an icon.
Say it plainly.
The product is written in Indian English for people running a business, not for people evaluating a platform.
Casing
Do: WA.cr, in every sentence — copy, comments, commit messages, changelog.
Don’t: Any other case in prose. Lowercase only inside a hostname such as app.wa.cr.
Spelling
Do: en-IN: colour, finalise, centre, organisation, licence.
Don’t: color, finalize, center — or mixing the two on one screen.
Plain, benefit-led
Do: "Send your first message in five minutes." Say what happens for the reader.
Don’t: "Leverage our omnichannel engagement layer." Platform jargon and empty superlatives.
Partner
Do: "Partner" for anyone who sells WA.cr onward — it is a relationship, not a channel.
Don’t: "Reseller", "affiliate" or "agent" in anything a customer reads.
Currency
Do: ₹1,499 as text, with en-IN grouping, next to a neutral glyph if one is needed.
Don’t: A currency-symbol icon standing in for the amount, or a receipt icon meaning "money".
The sign-off
Do: "WA.cr by qTap is a KDC keeda" — the lockup, verbatim, wherever the maker is named.
Don’t: "Powered by", "Made with love by", or any rewording of the lockup.
One package, every surface.
The console, the storefront, this site, the help centre and the blog all render from the same components — so the brand is a dependency, not a document.
Tokens first. @wacr/tokens holds colour, type, radius and spacing as plain data — the same values this page reads. Nothing downstream types a hex.
Then the sheet. The tokens feed @wacr/ui/tailwind-preset and a shared globals.css, where every role becomes an HSL CSS variable. Dark mode is one attribute, [data-theme="dark"], and every role swaps under it.
Then the parts. @wacr/ui components name roles, never colours. Icons are Lucide only, through one barrel. When a tenant sets a brand accent, --primary flips and every component follows without a rebuild.
Pill
6 tones · dot on/offneutralsuccesswarningdangerinfoprimary12 openThe dot means “a state that can change”; a count or a label leaves it off.
tone="primary"follows a tenant’s accent.Field · Input · Select · Textarea
3 controlsShown to customers in every conversation.
Variables in double braces.
Checkbox · Radio
2 + 2Card
header · title · description · contentDiwali broadcastSent to 3,35,174 contacts · 98.2% deliveredReplies are landing in the shared inbox as they arrive.Disclosure
summary · bodyWhy is this template pending?
Meta reviews every new template. Most clear within an hour; a marketing template can take up to a day.Skeleton
3 linesLogo
3 heights20 px
32 px
48 px
Theme-swapped from the two wordmark files; the width follows the 4:1 viewBox.
Rendered from the real package, in your current theme — toggle dark mode in the header to see the tokens swap.
Three marks, one maker.
WA.cr sits in a family. Each mark is its own; none is a variant of another.
WA.cr
The product. The keeda in its chat bubble is the only mark that ever stands for WA.cr.
qTap
The commerce family WA.cr belongs to, alongside the payments and storefront work it leans on. Never recolour.
KDC
KDC Tek Private Limited, the company that builds and runs it. Its orange, #F37521, is reserved for KDC and is never used as a WA.cr surface.
The lockup
The attribution line, as the footer sets it: mono, the KDC mark at 16 px, verbatim.
WA.cr by qTap is a KDC keeda
Using the sister marks
The WA.cr kit is free to take. The qTap and KDC marks are available for co-marketing only with KDC’s say-so — ask before you place one, and we will send the right file for the surface.
Ask about co-marketingBuilding with the WA.cr brand?
Partners, press and integrators: take the kit, follow the rules, and ask us when in doubt.