gemBrand book
GEM / DESIGN & VOICE

Recognizably Gem Clearly useful

The words, shapes and interface rules that make Gem feel familiar — on the web, in Telegram and inside the apps people build.

Identity · Interface · LanguageBotFather foundation · Gem identity
01 / THE IDEA

Make the next step clear

Gem helps with everyday questions and tasks, gives projects a place on the web, and runs small apps in Telegram. Across those jobs, people should recognize the same controls, understand what is happening and know what to do next.

01

Clear before clever

Start with the useful outcome. Give each section one job. Put the essential answer before the explanation.

02

Quiet, with a spark

Use familiar Telegram surfaces, comfortable spacing and blue to guide attention. Let the drawings explain something.

03

One family, many places

Keep the mark, palette and voice consistent across pages, apps, documentation and messages. Adjust the density to the task.

BotFather provides the interface foundation: surfaces, controls, corners and states. Gem adds its upright sparkle, custom pictograms, Noto Sans typography and plain language. These rules apply to the public pages and product interfaces.

02 / IDENTITY

The Gem mark

The curved four-point Gem
gem
Primary web lockup

The name

Write Gem in prose: Gem Apps, Gem Projects, Gem: Telegram How To. The interface wordmark is lowercase gem. Use @gembot for the Telegram handle. Avoid all-caps GEM in running text.

The construction

Use the original outlined four-point SVG, upright. Set the wordmark in Noto Sans at weight 800 with tight tracking. The wordmark is typeset; it does not need a separate logo font.

THE MASTER

Upright by design

Four curved points meet around an open center. Keep the original path and proportions. Give it room instead of changing its shape.

16px24px32px48px
On the canvas
Square avatar treatment
Single-color use

Keep its shape

Keep the path unchanged. Use a single outline color, without fills, gradients or stretching. The standalone mark stays upright. Only a small sparkle paired with another object may tilt slightly.

Give it space

Leave at least half the mark’s width clear around a standalone logo. Start with the 24px SVG for interface use and check the result at its actual display size.

Download the original mark ↗ · Light avatar ↗ · Dark avatar ↗
03 / COLOR

BotFather foundations
Gem character

Build on a graphite canvas, flat grouped surfaces, rounded controls and blue actions. The dark palette comes from BotFather’s public stylesheet; the light palette is Gem’s adaptation. Use the semantic tokens below so both themes stay consistent.

RoleLightDark
--bgCanvas
--surfaceFields, cards, grouped content
--bg2Table headers and secondary surfaces
--textHeadings and primary values
--hintSecondary text
--linkLinks and icon outlines
--accentEmphasis
--buttonPrimary action
--button-textOn primary action
--lineBorder / BotFather inactive color
--softAccent wash
--hoverSecondary hover
--button-hoverPrimary hover
--button-disabled-textDisabled primary text
--placeholderPlaceholder
--dropdownDropdown surface
--dropdown-hoverDropdown hover
--footer-bgFooter surface
--footer-textFooter text
--goodSuccess
--warningWarning
--dangerDanger
--good-bgSuccess wash
--warning-bgWarning wash
--danger-bgDanger wash
LIGHT

A place for your ideas

Clear text and a visible next step.

Open Gem ↗
DARK

A place for your ideas

The same reading order in dark mode.

Open Gem ↗
8pxDefault corners12pxPopups0Control shadows0.2sState transitions

BotFather uses 12px × 15px button padding and 11px × 14px field padding. In Gem, controls must also meet the 44–48px target size. Keep keyboard focus visible, text selectable and browser zoom available.

The theme belongs to the person

In Telegram, use the host’s theme parameters and respond to themeChanged. Outside Telegram, follow prefers-color-scheme, including changes while the page is open. The selector here is for comparing the two palettes.

Telegram → Gem token mapping
bg_color → --bg
secondary_bg_color → --bg2
section_bg_color → --surface
text_color → --text
hint_color → --hint
link_color → --link
accent_text_color → --accent
button_color → --button
button_text_color → --button-text
header_bg_color → --header

When Telegram omits a value, use the matching Gem theme token. Keep borders and accent washes within that palette. The shared theme script combines safe-area and content-safe-area insets.

The dark status, dropdown, hover and accent-wash colors follow BotFather’s published variables. Light equivalents are adapted for Gem. Telegram theme parameters override the defaults inside Telegram.

04 / TYPOGRAPHY

Type that reads comfortably

Mobile-first scale

Headlines: 36px on phones, 48px on tablets, 56px on wide screens. Section titles: 28 / 32 / 36px. Body: 16px with 1.6 line height. Controls: 14px. Supporting labels: at least 13px. Never shrink a desktop composition to fit a phone; stack its content and let headings wrap naturally.

Use the variables in www/design/foundation.css. Run node www/tools/sync-design.cjs after editing the foundation. Cards and buttons use 8px corners; dialogs use 12px. Touch targets are at least 44px, with 48px primary actions.

Aa Бб
Say what you want
Расскажи об идее

Use Noto Sans for headings, body text and controls in both English and Russian. Establish hierarchy through size, weight and spacing; keep all type sans serif.

'Noto Sans', Arial, sans-serif
DisplayLaunch it today36 / 48 / 56px · 700 · 1.15 line-height
SectionEverything in its place28 / 32 / 36px · 700 · 1.25 line-height
CardOne useful thing18px · 650–700 · 1.4 line-height
Body

Explain the useful part, then leave room to read it.

16px · 400 · 1.6 line-height
Technical
gem.bot/yourname
Noto Sans · tabular numerals

Headings

Write headings in sentence case, with restrained tracking (−0.025em). Use blue to emphasize a meaningful phrase. Omit a terminal full stop; keep question marks and other punctuation when the wording calls for them.

Small text

Supporting labels use 13px or 14px. Never use tiny text to make a layout fit. Controls use 14px, fields use 16px, and the minimum touch target is 44px.

Noto Sans was selected with reference to Kogda’s style guide. Gem uses it for body text too. The font is self-hosted under the SIL Open Font License. It is the shared font for the brand book, builder kit and public pages.

05 / ICONS

The sparkle has a family

The library contains 34 symbols with a shared stroke weight and rounded construction. It includes the original sparkle and 12 editorial symbols for writing, diagrams, charts and publishing.

24 × 24 viewBox1.5-unit strokeRound caps & joinscurrentColorNo fill
One consistent 1.5-unit drawing weight

34 icons

Draw in the same hand

Draw a recognizable silhouette with open shapes and rounded ends. Add a small sparkle only when it helps identify the function. Use the supplied SVGs and their stable symbol IDs. The offer icon is a tag; keep it distinct from the Gem mark and Telegram Stars.

Scale with purpose

Use 16–20px icons in navigation, 24–32px on cards and 40–56px for larger accents. Illustrations can use larger marks. Hide decorative icons from assistive technology and name every icon-only control.

<svg class="icon" aria-hidden="true">
  <use href="#gem-memory" />
</svg>

.icon { width: 24px; height: 24px; color: var(--link); }

Do not replace this family with emoji or a mixed stock icon set. Telegram Stars may appear as ⭐ when describing the currency, not as a generic interface icon.

06 / LAYOUT

Space is part of the voice

4
8
12
16
20
24
32
48
64

Use the shared spacing scale to keep related items close and separate distinct sections.

Public pages

Use the shared 1160px content width, with 20px phone gutters and 32–40px gutters on wider screens. Section spacing grows from 56px to 88px. Stack columns on phones and let headings wrap; never shrink the whole composition.

Cards and fields

Separate content with 1px borders and surface colors. Use 8px corners for cards, buttons and fields, and 12px for dialogs and larger panels. Keep shadows restrained.

Product screens

Product screens can hold more information, but controls still need room. Respect Telegram’s safe insets and the keyboard. Keep primary navigation reachable, settings in Settings and a clear way back from inner screens.

One clear promise
One helpful visual
A single reading order on phones
07 / COMPONENTS

Controls that behave as expected

BotFather-style actions / working sample

One primary next step

Name the action with a verb. Use blue for the primary choice and a quieter treatment for alternatives. Use links for navigation and buttons for actions.

Fields
gem.bot/

A field example, not an availability check.

Saved answer / Preview
Updated just now

What did I ask Gem?

Keep the original question beside its latest answer. Show when it was updated and when another update is available.

Navigation / visual example
CardsNotesTasksReminders

Pair icons with short labels and mark the current destination. Examples should use real product routes.

✓ Saved! Needs attention× Couldn’t save
Empty

No notes yet

Explain how to add the first item.
Waiting

Checking availability…

Say what is happening.
Error

Couldn’t check. Try again.

Keep the person’s input and offer Retry.
Preview

Sample data

Label examples so they cannot be mistaken for live results.

Public pages finish with Gem by Labs. The Mini App has no marketing footer. Native disclosure elements work well for FAQs and keep content readable without JavaScript.

08 / ILLUSTRATION

Show what Gem does

A page on the webgem.bot/yourname
A place for your peopleGem answers with a source
An app that does somethingSmall, useful, yours

Pictograms become scenes

Build illustrations from recognizable product elements: messages, saved cards, forms, progress indicators and charts. Use the Gem mark to connect related pieces. Each scene should help explain the section.

Restraint gives it character

Use the same blue and graphite surfaces as the interface. Keep product cards aligned, corners consistent and shadows light. Illustration objects may tilt slightly; the standalone sparkle stays upright. On phones, replace overlapping scenes with readable stacks. Mark sample metrics as Preview.

Social cover composition: the headline is centered horizontally and vertically; the sparkle illustration sits above it, @gembot below. Use the same palette and type. Russian copy is rewritten naturally. This is a reconstructed layout specimen, not a claim to be the archived cover file.

Graphics with a clear reading order

Carry the interface’s line weight and corners into diagrams. Connect only related items, keep labels readable and give charts labels as well as color.

Editorial hierarchyPROJECT NOTES

A place to begin

One useful thought. A little context. Then the next step.

Make the important thing easy to find.
A quiet note belongs with the thing it explains.
A simple process
  1. DescribeStart with the idea
  2. ReviewSee it take shape
  3. ShareGive it a place to live
Funnel / illustrative data

See the next step

Visits2,400
Opens1,150
Welcome finished640

Direct labels. One accent. Shared baseline. No decorative axes.

Formatting vocabulary

Let the words lead

  • One heading per idea
  • Short paragraphs with breathing room
  • Lists when the items belong together
  • Rules and notes with a clear purpose

Motion should settle

Keep decorative motion brief and optional. Avoid continuous sparkle loops. Remove animations and transitions for prefers-reduced-motion: reduce. Keep the content complete in the still frame.

09 / WORDS

Sound like you know what matters

Gem is the chat you turn to with a question, a half-written reply or something you keep forgetting. Write for that moment. Name the thing the person needs, say what Gem can do with it, and stop before the explanation becomes a pitch.

Name the actual job

“Help with your day” could describe anything. “Send the voice note. Ask for the next steps” tells someone when to use Gem. A concrete task, document or decision earns its place in the copy; another claim about being helpful does not.

Say how far you got

A draft is not a published page. A request is not a confirmed booking. Say “Saved” only after the save succeeds. When a feature is planned, name what people can use today instead. The useful detail is often the difference between two states.

WriteInstead of
Your draft is ready. Check it before you publish.Your project is ready.
Saved to Notes.You’re all set.
Couldn’t check that name. Try again.Something went wrong.
Group answers are planned. People can ask on your project page now.Keep your community connected everywhere.

Give each product its own reason to exist

Assistant copy starts with something to ask or hand over. Project copy starts with the person’s work and the people who need it. App copy starts with something to make or use. The examples below show different situations in each language; they are writing samples, not live results.

EN · ASSISTANT

The plan is in a voice note

Forward it to Gem and ask for the next steps.

RU · ПОМОЩНИК

Что важного в этом документе?

Пришли PDF и спроси о том, что непонятно. Текст не придётся переносить в чат.

EN · PROJECTS

A page for your Saturday run

Post the meeting point, answer first-timers’ questions and collect sign-ups.

RU · ПРОЕКТЫ

Покажи, что происходит в мастерской

Расскажи о занятиях, добавь расписание и принимай заявки на странице проекта.

EN · APPS

Keep score on game night

Build a small scorekeeper, send the code to Gem and open it in Telegram.

RU · ПРИЛОЖЕНИЯ

Дочитал главу? Отметь

Собери свой счётчик чтения. Отправь код Gem — и отмечай прочитанное в Telegram.

Write Russian from the situation

Start again with what the reader wants to do. “Get more done” does not have to become «Успевай больше»: name the unfinished letter, the question or the forgotten appointment. Use «ты», short verbs and ordinary word order. Read the result aloud. If it sounds like a translated button or a presentation slide, rewrite it.

«Осуществить публикацию» → «Опубликовать». «Ваш запрос успешно обработан» → «Заметка сохранена». «Узнай, как использовать возможности платформы» → «Посмотри, как сделать приложение».

Headings and controls

Use sentence case. Omit terminal full stops in headings; keep real questions as questions. Name the next action on the button: Save, Publish, Open in Telegram. A short label still needs to say what happens. Use an arrow only when it helps show a destination.

Use the words people will see

Keep Gem, Gem Apps, Gem Projects and Gem: Telegram How To as product names. Match exact interface labels when giving directions. In public explanations, say “materials” / «материалы» for the files a person adds; use Knowledge / «Знания» when naming that menu. Introduce «Панель управления» once, then use «панель».

Keep the facts aligned across languages: availability, limits, prices and what happens after a click. English uses 1,000,000 Stars; Russian uses 1 000 000 ⭐. A different example or headline is welcome. A different promise is not.

10 / APPLICATION

Same Gem, different jobs

01

Landing pages

Begin with a focused overview: the purpose, a useful illustration, a few capabilities and a primary action. Put Learn more at the end to reveal the detailed sections on the same page. Write English and Russian independently, with the same facts and clear next steps.

02

Mini App

Use Telegram colors and safe areas. One-word screen titles and short icon labels. Keep marketing eyebrows, subtitles, help paragraphs and footers out of routine screens. Put account, preferences and dated memories in Settings.

03

Creator dashboard

Reach the owner dashboard from Settings. Group projects and apps, show the selected time period and make drafts and unanswered questions easy to spot. Label sample data and report only activity Gem can measure.

04

Docs and builder apps

Keep API names exact, examples copyable and explanations close to the code they describe. Builder terminology belongs here. The interface defaults use 8px corners, a safe top bar, 48px actions and 16px field text.

05

Bot messages

Answer the question in a short text or card, then offer the next useful action. Use the person’s language and project context. Make it clear whether Gem has completed something or is asking the person to do it.

Use this book for presentation decisions. Use the current product code and API documentation for routes, behavior and availability.

11 / INCLUSION

Clarity includes everyone

Structure and control

Semantic headings, real buttons and links, explicit input labels and visible keyboard focus. Use aria-current for the current page and accessible names for icon-only controls. Never use color alone for status.

Space and scale

Test at 375, 768 and 1280px, both languages and themes. No horizontal page scrolling. Prefer 44–48px action targets. Allow longer Russian copy and browser zoom; don’t hide overflow to conceal layout errors.

A contrast detail to carry forward

BotFather’s primary button token is #248bda with white text. Its contrast is about 3.6:1, below the 4.5:1 target for normal-sized text. This guide retains the requested BotFather palette and records the issue; a contrast-adjusted action variant remains a separate design decision. Also test custom Telegram theme combinations.

Keep core content readable without JavaScript. Respect reduced motion and system appearance changes. Loading, error and empty states should explain what happened without blaming the person.

12 / HANDOFF

Take the system with you

Where this comes from

Primary reference: Telegram BotFather and its public stylesheet, inspected 20 October 2026. The app itself required an active Telegram session; measurements here come from the stylesheet, not an authenticated screen review. Gem’s 34-symbol library, public page patterns, Mini App conventions and writing rules complete the system.

Start new work from this reference. Check capability claims against the current product, refresh examples as it changes and extend the icon library with the same construction rules.

Published reference: gem.bot/style. This edition defines the brand book and reusable assets used by Gem’s public pages. Functional pages are checked separately against these tokens. The assets are vector/code originals; Noto Sans is bundled locally, with no external font service.