SDK 1.4.0: WebMCP tool registration
GEO Docs
Design language

Type, shape & icons

Geist with system CJK fonts, the console type scale and typesetting rules; radius tokens and the concentric rule; Lucide icons and icon tiles.

Font stack

RoleFontToken
InterfaceGeist (Latin) → PingFang SC → Noto Sans SC → Microsoft YaHei → system-ui--font
Data and codeGeist Mono → ui-monospace → SF Mono → Menlo--mono
  • Numbers always use font-variant-numeric: tabular-nums (tables, metrics, axes, counts).
  • Geist's geometric precision matches the "optical instrument" feel and pairs well with system CJK weights; no web font is loaded for Chinese.

Console type scale (default density)

TokenSize / line heightWeightTrackingUse
display40 / 44600-0.03emThe page's main figure (at most one per page)
metric28 / 34 (phone 24 / 32)600-0.02emMetric card numbers; one step smaller on phones so two cards fit side by side
title-lg26 / 32600-0.02emPage title
title17 / 24600-0.01emCard and drawer titles
headline15 / 226000List primary lines, group titles
body14 / 224000Body text, tables
body-sm13 / 204000Secondary text
label13 / 185000Buttons, navigation, form labels
caption12 / 16500+0.01emTimestamps, axes, helper text
overline11 / 14600+0.06em (Latin capitals only)Sidebar group names, card eyebrows

Website (comfortable density): hero 64 / 68 (phone 40 / 44), section titles 40 / 48, lead 18 / 30.

Typesetting rules

  • At most three levels inside a card: title → main content (metric / body) → supporting text (caption).
  • Put a space between a metric and its unit; set the unit one size smaller in ink-2.
  • Headings use text-wrap: balance; body lines stay ≤ 68ch.
  • No italics or all-caps for Chinese; add a space between Chinese and Latin text.

Shape

TokenValueUse
r-xs6pxSmall tags, checkboxes, tooltips
r-sm10pxButtons, inputs, nav items, icon tiles
r-md14pxMenus, dropdowns, small cards, row hover fill, toasts
r-lg20pxCards, dialogs
r-xl28pxLarge panels, top corners of mobile bottom sheets
r-full999pxPills, segmented controls, chips, switches, avatars, badges
  • Concentric rule: inner radius = outer radius − padding, minimum 6px (a 20px card with 12px padding → 8px inside; round to the nearest token from r-xs up).
  • Polished glass edges: add corner-shape: squircle (continuous-curvature corners) where supported; elsewhere fall back to normal corners at the same size.

Icons

  • Lucide at stroke width 1.75. Sizes: navigation 20, inside buttons 16, inside icon tiles 18 (28 in a 64 tile), inside badges 12.
  • Icon tile: domain tint fill + domain solid icon, r-sm (r-md at 64), sizes 32 / 36 / 44 / 64. Used on card titles, metric cards, detail headers, settings groups and empty states.
  • The current nav item's icon uses brand; other nav icons use ink-2.
  • Icon-only buttons always have an aria-label and a tooltip.