Skip to content
Khelo खेलो
the paint box

Foundations

Seven truck-art hues, two grounds, three faces, block lettering, drawn art, one kind of shadow, five borders and one motion.

Color

Seven hues, painted twice

Each hue has a Hindi name and a ramp. In Mela, 100 is a pale wash and 700 is a deep shade that holds text on paper. In Raat the ramp turns over: 100 is a dim wash for a night surface and 500 is the lamp-lit glow. Components never use a step directly; they read semantic tokens such as --accent-primary and --wash-genda.

Genda marigold · --marigold-*

The garland. The primary sticker.

100#fae2b2
300#f8c662
500#f5a300
700#a36b10
100#3e2f3b
300#95703c
500#ffbe3d
700#785a2d
Haldi turmeric · --haldi-*

Selection: what you picked.

100#faeab7
300#f9de72
500#f7cf1d
700#a48622
100#3e3643
300#958354
500#ffe16a
700#786a41
Kesar saffron · --kesar-*

A thing that needs a look. Never alarm.

100#f9d8b7
300#f5a671
500#f06a1c
700#9f4721
100#3e263d
300#955344
500#ff8a4c
700#784334
Rani hot pink · --rani-*

The loud voice: “let’s go”.

100#f5cac9
300#e87ba8
500#d81b7f
700#91165f
100#3e1e4f
300#953b7b
500#ff5fb0
700#782f61
Firozi turquoise · --firozi-*

Calm, cool panels.

100#d1e3cf
300#7ac8bc
500#11a8a4
700#156e76
100#1c3555
300#2c828d
500#3fe0d0
700#22696f
Tota parrot green · --tota-*

Done. Finished, not “winning”.

100#dce3ba
300#9cc879
500#4fa82a
700#3c6e2a
100#2b3541
300#5a824f
500#93e060
700#48693d
Mor peacock blue · --mor-*

Links and focus.

100#d2d6d2
300#7da1c2
500#1660b0
700#18417d
100#252d5d
300#4869a6
500#72b2ff
700#395484
Grounds and ink

Mela: paper and kajal (aubergine, not black). Raat: lamplight on neel sky (not white on black).

paper-50#fff9ee
paper-100#fbf0d9
paper-200#f4e4c4
paper-300#e8d2a8
kajal-300#a796ab
kajal-500#75637f
kajal-700#4a3a5c
kajal-900#2a1840
lamp-50#fbefd6
lamp-100#e9e2f4
lamp-300#c9c0e2
lamp-500#8e86b8
sky-700#2b2566
sky-800#1e1950
sky-900#14103a
sky-950#0c0928

Every pair of ink and ground, every filled control and every poster band at every gradient stop is measured by tools/check-contrast.mjs. Loud is allowed. Unreadable is not.

Poster bands

Big fields of color, ink included

A band is a large, still poster surface that carries its own measured ink. Use one behind a headline or a short line, not behind long reading.

Genda

.kh-band--genda

Rani

.kh-band--rani

Firozi

.kh-band--firozi

Mor

.kh-band--mor

Type

The poster, the sign painter and the reader

Rozha One · display · --font-display

Dil Se Khelo

दिल से खेलो

A Bollywood-poster serif from the Indian Type Foundry. For a few words, large, in block lettering: a solid face on a painted extrusion that runs down and right (--shadow-block). Mela paints a kajal face on a marigold side with a burnt-saffron base; Raat lights the face and paints the side pink.

Yatra One · lettering · --font-sign

Horn OK Please · धीरे चलें

A sign painter’s hand, for stickers, tile titles and labels. Short, and never for paragraphs.

Baloo 2 · reading · --font-body

Everything you actually read is set in Baloo 2: rounded, warm, Devanagari-native.

जो कुछ भी आप पढ़ते हैं, वह बालू में है — गोल, गरम, और देवनागरी में सहज।

Hindi is set as a peer of English, never as a translation footnote. The scale is in rem, so a person’s own text size setting always wins.

Illustration

Draw it. Never an emoji.

An emoji is drawn by someone else’s platform. It looks different on every device and brings that platform’s voice into yours. Khelo’s art is drawn in one hand: a 48-unit grid, an ink outline that follows the text color, round joins, and flat fills from the seven hues. The motifs come from everyday Indian play and life.

patang
lattu
kulhad
genda
kamal
morpankh
dhol
rangoli
nazar
chitthi
surya
chand

Fills come from --icon-genda, --icon-rani and the rest, so the same file is painted by day and lamplit by night. Decorative art is aria-hidden; meaning lives in the words next to it. Drawing a new one? Keep the outline, keep the fills flat, keep it to two or three hues, and draw something a person in India would have played with or seen today.

<svg class="kh-icon" viewBox="0 0 48 48" fill="none" stroke="currentColor"
     stroke-width="2.5" stroke-linejoin="round" aria-hidden="true">
  <path class="kh-f-rani"  d="M24 4 L40 22 H8 Z"/>
  <path class="kh-f-genda" d="M8 22 H40 L24 40 Z"/>
</svg>

Shadow

Stickers, not clouds

Khelo has one kind of shadow: a hard offset with no blur, like a sticker on a truck panel. A blurred shadow says “floating, look at me”. A sticker says “here, solid, yours”. In Raat a dark shadow would vanish on the sky, so the offset glows pink like neon on a wall.

--shadow-sticker-s
--shadow-sticker
--shadow-sticker-l
--shadow-pressed

Ornament

Painted edges

Borders from Indian ornament, as static SVG inlined as tokens. They frame edges and fill empty grounds. They never sit behind body text, they never move, and they drop out in forced colors.

.kh-kangura · the stepped temple border of a Kanjeevaram sari’s edge and a truck’s roofline

.kh-bel · the flowering vine on a truck’s side panels

.kh-toran · mango leaves and marigolds strung over a doorway

.kh-lights · bulbs on a wire, made for Raat

.kh-dots · the grid a rangoli is drawn on

Motion

The squish

Press any button on this page. It sinks into its shadow in 110ms and comes back when you let go. That is the whole motion vocabulary: it answers a touch, it is over before you notice it, and the curve ends at exactly 1.0. Nothing bounces, wobbles, pulses or loops. With reduced motion turned on, it simply doesn’t move.

--ease-squish: cubic-bezier(0.25, 0.8, 0.3, 1);
--dur-press: 110ms;
--dur-settle: 220ms;