# DESIGN SYSTEM — App 29 · Smart Pedal

Lime e-bike companion. Rebuilt from the reference screenshot `refs/r29-bike.png`. It is a 1024×768 stage showing 3 phones, and every control on it is interactive.

## 1. Foundations
- **Font:** Onest (Google Fonts). Base UI text is 7.5–10px on a 288px-wide phone (≈ 2.6× on device).
- **Frame:** pw 288px · ph 622px · pr 40px · pb 0px. Ring `0 30px 60px -26px rgba(0,0,0,.3)`
- **Screen background:** `#fff` · **Page:** `#D4D9D6`

## 2. Colour tokens (sampled from the reference)
| Token | Value |
|---|---|
| `--page` | `#D4D9D6` |
| `--ink` | `#141414` |
| `--ink-2` | `#7A7C7B` |
| `--lime` | `#D9F240` |
| `--dark` | `#1A1A1A` |
| `--frame` | `#fff` |
| `--frame-ring` | `0 30px 60px -26px rgba(0,0,0,.3)` |
| `--screen` | `#fff` |
| `--toast-bg` | `#1A1A1A` |
| `--toast-fg` | `#D9F240` |

## 3. Components (CSS classes in `App 29 - Smart Pedal.html`)
`.rb` · `.ob` · `.swipe` · `.hm` · `.hd` · `.mdl` · `.batt` · `.panel` · `.grab` · `.tiles` · `.tl` · `.nav` · `.tr` · `.addr` · `.tg` · `.turn` · `.cell`

Each rule is written once, in its screen's CSS block. Selected states always use the `.on` modifier.

## 4. Screens
1. **Onboarding**: headline, bike photo, swipe-to-start slider
2. **Home**: model name, battery pill, bike, 4 toggle tiles
3. **Trip**: road photo, address, turn-by-turn card (tap to advance), live timer

## 5. Brand slot: "Cyborg Design"
Home › bike model name (was "Kenai 21w").
The text comes from `BRAND` in `../shared/kit.jsx`. It keeps the exact font, size, weight and colour of the text it replaced. Nothing else in the layout changes.

## 6. Motion
- Toasts drop in from the top with a spring (`.k-toast`, 450ms).
- List and grid refreshes use `kfade` (350ms), staggered 30–50ms per item.
- Active pills and nav items change colour/width over 200–300ms.
