Skip to content

Neon Lime Performance DESIGN.md

Athletic. Instrumented. After-dark. This is a near-black performance dashboard aesthetic, the kind of UI that lives on a wrist or a phone strapped to a forearm at 6 AM. A single radioactive lime accent does all the emotional work against a deep cool-black ground; everything else is calibrated grey on grey, lit only by data.

Screen example: Neon Running.

Describe your app to generate screens with this visual style.

Read and download the full DESIGN.md
Neon Lime Performance, mobile app screen 1
Neon Lime Performance, mobile app screen 2

Color palette

  • primary#CCFF00
  • on-primary#0A0A0A
  • surface#0F1115
  • surface-alt#181B21
  • surface-muted#2A2F38
  • on-surface#F0F2F5
  • on-surface-variant#9CA3AF
  • border#22262E
  • error#FF3B30
  • chart-1#CCFF00
  • chart-2#A3CC00
  • chart-3#7A9900
  • chart-4#526600
  • chart-5#293300

Typography

Typography tokens from this DESIGN.md
TokenFontSizeWeightLine height
display-lgSpace Grotesk96px9001
display-mdSpace Grotesk72px9001
display-smSpace Grotesk48px9001
headline-lgSpace Grotesk30px7001.1
headline-mdSpace Grotesk20px7001.2
headline-smSpace Grotesk16px7001.2
numeral-statSpace Grotesk30px7001
body-mdManrope14px5001.4
body-smManrope12px5001.4
label-uppercaseManrope12px7001
label-microManrope10px7001
mono-dataJetBrains Mono14px5001.2
mono-microJetBrains Mono10px5001
tab-labelManrope10px5001

Corner radii

xs
4px
sm
6px
md
10px
lg
12px
xl
16px
2xl
20px
3xl
28px
4xl
40px
full
9999px

Spacing

xs
4px
sm
8px
md
16px
lg
24px
xl
32px
2xl
48px
gutter
20px
card-padding
20px
section-gap
32px

The full DESIGN.md

Copy the source into your project. No sign-in required.

Download DESIGN.md

---
version: 1
name: "Neon Lime Performance Mobile"
colors:
  primary: "#CCFF00"
  on-primary: "#0A0A0A"
  surface: "#0F1115"
  surface-alt: "#181B21"
  surface-muted: "#2A2F38"
  on-surface: "#F0F2F5"
  on-surface-variant: "#9CA3AF"
  border: "#22262E"
  error: "#FF3B30"
  chart-1: "#CCFF00"
  chart-2: "#A3CC00"
  chart-3: "#7A9900"
  chart-4: "#526600"
  chart-5: "#293300"
typography:
  display-lg:
    fontFamily: Space Grotesk
    fontSize: 96px
    fontWeight: 900
    lineHeight: 1
    letterSpacing: -0.04em
  display-md:
    fontFamily: Space Grotesk
    fontSize: 72px
    fontWeight: 900
    lineHeight: 1
    letterSpacing: -0.03em
  display-sm:
    fontFamily: Space Grotesk
    fontSize: 48px
    fontWeight: 900
    lineHeight: 1
    letterSpacing: -0.03em
  headline-lg:
    fontFamily: Space Grotesk
    fontSize: 30px
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: -0.02em
  headline-md:
    fontFamily: Space Grotesk
    fontSize: 20px
    fontWeight: 700
    lineHeight: 1.2
    letterSpacing: -0.01em
  headline-sm:
    fontFamily: Space Grotesk
    fontSize: 16px
    fontWeight: 700
    lineHeight: 1.2
    letterSpacing: 0em
  numeral-stat:
    fontFamily: Space Grotesk
    fontSize: 30px
    fontWeight: 700
    lineHeight: 1
    letterSpacing: -0.02em
  body-md:
    fontFamily: Manrope
    fontSize: 14px
    fontWeight: 500
    lineHeight: 1.4
    letterSpacing: 0em
  body-sm:
    fontFamily: Manrope
    fontSize: 12px
    fontWeight: 500
    lineHeight: 1.4
    letterSpacing: 0em
  label-uppercase:
    fontFamily: Manrope
    fontSize: 12px
    fontWeight: 700
    lineHeight: 1
    letterSpacing: 0.2em
  label-micro:
    fontFamily: Manrope
    fontSize: 10px
    fontWeight: 700
    lineHeight: 1
    letterSpacing: 0.15em
  mono-data:
    fontFamily: JetBrains Mono
    fontSize: 14px
    fontWeight: 500
    lineHeight: 1.2
    letterSpacing: 0em
  mono-micro:
    fontFamily: JetBrains Mono
    fontSize: 10px
    fontWeight: 500
    lineHeight: 1
    letterSpacing: 0.05em
  tab-label:
    fontFamily: Manrope
    fontSize: 10px
    fontWeight: 500
    lineHeight: 1
    letterSpacing: 0.02em
rounded:
  xs: 4px
  sm: 6px
  md: 10px
  lg: 12px
  xl: 16px
  2xl: 20px
  3xl: 28px
  4xl: 40px
  full: 9999px
spacing:
  xs: 4px
  sm: 8px
  md: 16px
  lg: 24px
  xl: 32px
  2xl: 48px
  gutter: 20px
  card-padding: 20px
  section-gap: 32px
icons:
  set: solar
  default_variant: linear
  active_variant: bold
  stroke_weight: 1.5px
  default_size: 24px
components:
  card:
    backgroundColor: "{colors.surface-alt}"
    textColor: "{colors.on-surface}"
    borderColor: "{colors.border}"
    borderWidth: 1px
    boxShadow: none
    rounded: "{rounded.xl}"
    padding: "{spacing.card-padding}"
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "{colors.on-primary}"
    typography: "{typography.headline-md}"
    rounded: "{rounded.xl}"
    height: 64px
    paddingX: 32px
    border: none
    boxShadow: "0 10px 30px rgba(204,255,0,0.2)"
  button-secondary:
    backgroundColor: "{colors.surface-muted}"
    textColor: "{colors.on-surface}"
    typography: "{typography.headline-md}"
    borderColor: "{colors.border}"
    borderWidth: 1px
    rounded: "{rounded.2xl}"
    height: 80px
    paddingX: 24px
    boxShadow: none
  button-text:
    backgroundColor: transparent
    textColor: "{colors.on-surface-variant}"
    typography: "{typography.body-sm}"
    border: none
    boxShadow: none
    paddingX: 0px
    paddingY: 0px
  button-icon-circle:
    backgroundColor: "{colors.surface-muted}"
    textColor: "{colors.on-surface}"
    borderColor: "{colors.border}"
    borderWidth: 1px
    boxShadow: none
    rounded: "{rounded.full}"
    size: 40px
    iconSize: 20px
  input-text:
    backgroundColor: "{colors.surface-alt}"
    textColor: "{colors.on-surface}"
    typography: "{typography.body-md}"
    borderColor: "{colors.border}"
    borderWidth: 1px
    focusRingColor: "{colors.primary}"
    boxShadow: none
    rounded: "{rounded.lg}"
    paddingX: 16px
    paddingY: 12px
  chip:
    backgroundColor: "{colors.surface-alt}"
    textColor: "{colors.on-surface}"
    typography: "{typography.body-sm}"
    borderColor: "{colors.border}"
    borderWidth: 1px
    boxShadow: none
    rounded: "{rounded.lg}"
    paddingX: 16px
    paddingY: 12px
    gap: 12px
    iconSize: 18px
  chip-active:
    backgroundColor: "{colors.surface-muted}"
    textColor: "{colors.on-surface}"
    typography: "{typography.body-sm}"
    borderColor: "{colors.border}"
    borderWidth: 1px
    boxShadow: none
    rounded: "{rounded.lg}"
    paddingX: 16px
    paddingY: 12px
  badge-pill:
    backgroundColor: "{colors.primary}/20"
    textColor: "{colors.primary}"
    typography: "{typography.label-micro}"
    borderColor: "{colors.primary}/30"
    borderWidth: 1px
    boxShadow: none
    rounded: "{rounded.full}"
    paddingX: 12px
    paddingY: 4px
    gap: 6px
  avatar:
    backgroundColor: "{colors.surface-muted}"
    borderColor: "{colors.border}"
    borderWidth: 1px
    rounded: "{rounded.full}"
    size: 40px
    boxShadow: none
  list-row:
    backgroundColor: "{colors.surface-alt}"
    textColor: "{colors.on-surface}"
    borderColor: "{colors.border}"
    borderWidth: 1px
    boxShadow: none
    rounded: "{rounded.lg}"
    paddingX: 16px
    paddingY: 16px
  progress-bar:
    backgroundColor: "{colors.surface-muted}"
    textColor: "{colors.primary}"
    rounded: "{rounded.full}"
    height: 4px
    border: none
    boxShadow: none
  top-app-bar:
    backgroundColor: "{colors.surface}/80"
    textColor: "{colors.on-surface}"
    borderColor: "{colors.border}"
    borderWidth: 1px
    boxShadow: none
    height: 88px
    paddingX: 24px
  tab-bar:
    backgroundColor: "{colors.surface}/90"
    borderColor: "{colors.border}"
    borderWidth: 1px
    boxShadow: none
    height: 72px
    paddingX: 28px
  tab-item-active:
    textColor: "{colors.primary}"
    typography: "{typography.tab-label}"
    iconSize: 24px
    background: transparent
    border: none
    boxShadow: none
  tab-item-inactive:
    textColor: "{colors.on-surface-variant}"
    typography: "{typography.tab-label}"
    iconSize: 24px
    background: transparent
    border: none
    boxShadow: none
---

# Neon Lime Performance Mobile

## Overview

**Athletic. Instrumented. After-dark.** This is a near-black performance dashboard aesthetic — the kind of UI that lives on a wrist or a phone strapped to a forearm at 6 AM. A single radioactive lime accent (`{colors.primary}`) does all the emotional work against a deep cool-black ground; everything else is calibrated grey on grey, lit only by data.

The personality is **technical-not-clinical**: oversized italic display numerals shout the metric that matters, mono captions whisper the supporting context, and a small repertoire of subtle glows (lime drop-shadow on charts, primary-tinted shadow on the hero CTA) suggest energy rather than decoration. Card chrome is restrained — hairline borders on a slightly-lifted surface — so the data and the lime can carry the screen.

The implicit references are race-track HUDs, performance watch faces, and the high-contrast instrumentation panels of professional gear. Avoid friendly, pastel, or rounded-soft moves; this aesthetic earns trust by looking like measurement equipment.

## Colors

The palette is a **single-accent dark system**. There is one chrome stack and one accent:

- **Chrome stack** (top → bottom of layering): `{colors.surface}` (`#0F1115`, the page) → `{colors.surface-alt}` (`#181B21`, every card and list row) → `{colors.surface-muted}` (`#2A2F38`, inset wells, secondary buttons, inactive bar fills). Borders are `{colors.border}` (`#22262E`) — a hairline that's barely brighter than the card it surrounds, never assertive.
- **Text stack**: `{colors.on-surface}` (`#F0F2F5`, near-white headlines and key numerals), `{colors.on-surface-variant}` (`#9CA3AF`, body, units, captions, inactive icons). There is no third tier — when something needs to whisper further, drop opacity (e.g. `/60`) on the variant.
- **Accent** (`{colors.primary}`, `#CCFF00`): radioactive lime. Reserved for **active/current state, primary CTA, achievement, and live data series**. It must remain rare on each screen — typically one large hit (a CTA or a hero numeral) plus 1–3 small hits (an active tab, a current chart bar, a PR pill). Never use it as a card background, never as body text, never to color decorative chrome.
- **Semantic**: `{colors.error}` (`#FF3B30`) only for negative-delta indicators (e.g. a slower-than-target reading) and destructive actions.
- **Chart palette**: `chart-1` through `chart-5` is a monochromatic lime ramp from full-saturation to near-black-green. Use only inside data visualizations; never assign to UI chrome.

**Hard rule**: lime never bleeds into surface fills. The accent appears as text color, icon color, hairline border (`border-primary/30`), tinted overlay (`bg-primary/10` or `bg-primary/20`), or a small filled shape (a 2px progress fill, a 2x2 dot). It is a signal, not a substrate.

## Typography

Three families, three jobs:

- **Space Grotesk** (`{typography.display-*}`, `{typography.headline-*}`, `{typography.numeral-stat}`) — geometric sans with humanist warmth. The workhorse for everything that wants weight. Use **800–900 (black)** for the hero numerals and primary buttons; the heaviness is half the aesthetic. Italic + black + tight tracking on the largest displays creates a forward-leaning, motion-blurred feel — apply italic to the loudest single moment per screen (a hero CTA word, a featured title) and not elsewhere.
- **Manrope** (`{typography.body-*}`, `{typography.label-*}`, `{typography.tab-label}`) — neutral humanist sans for body, captions, and any text that should disappear into context. Weight 500 default; weight 700 with `tracking-[0.2em]` and uppercase becomes the signature kicker (`{typography.label-uppercase}`) used above every metric, every section, every card.
- **JetBrains Mono** (`{typography.mono-data}`, `{typography.mono-micro}`) — fixed-width for tabular data, timestamps, split times, distance/pace values inside list rows, and any inline code-like read-out. The mono shift signals "this is a measurement," distinct from prose.

Three load-bearing typographic moves:

1. **Tabular numerals everywhere a number can change**: hero stats, splits, durations, paces. Use `tabular-nums` so digits don't jitter as values update.
2. **Tracked-out uppercase micro-labels** (`{typography.label-uppercase}` and `{typography.label-micro}`) above every metric and every section. The +0.15–0.2em letter-spacing on 10–12px is the design's "instrument label" voice — it should appear 4–8 times per screen.
3. **Unit demotion**: the unit appended to a stat (`KM`, `/KM`, `bpm`, `m`, `cal`) is always rendered smaller and in `{colors.on-surface-variant}` — typically `text-sm` next to a `text-3xl` value. This keeps the magnitude dominant.

## Spacing & Layout

Density is **balanced-tight**: the screen is dense with information but each card breathes via internal padding. Page-level horizontal gutter is `{spacing.gutter}` (20px). Cards use `{spacing.card-padding}` (16–20px) inside, with `{spacing.md}` (16px) gap between elements. Sections separate by `{spacing.section-gap}` (32px) of vertical air.

A common card-grid layout is 2-column with `{spacing.sm}` (12px) gap between square-ish stat tiles. Horizontal scrollers (chip rails) use `{spacing.sm}` between items and intentionally bleed off the right edge to signal more content.

The home/dashboard rhythm is: short uppercase kicker → primary content → metadata strip → next kicker. Implementers should NOT fight this rhythm by adding decorative dividers; the kickers ARE the dividers.

## Elevation & Depth

The aesthetic is **flat-with-glow**. There is no traditional drop-shadow vocabulary on cards or surfaces — depth comes from tonal layering (`{colors.surface}` → `{colors.surface-alt}` → `{colors.surface-muted}`) and hairline borders.

The one shadow recipe is **lime aura**, used sparingly on three things only:

- The primary CTA: `shadow-[0_10px_30px_rgba(204,255,0,0.2)]`
- A featured chart bar (current/best): `shadow-[0_0_10px_rgba(204,255,0,0.3)]`
- A live progress-bar fill: `shadow-[0_0_8px_rgba(204,255,0,0.6)]`

These glows are emissive, not occlusive — they read as light coming from the element, not a shadow being cast. Never apply them to plain text or to non-accent surfaces.

For sticky chrome (top app bar, bottom tab bar, fixed CTA bar), use a translucent surface with backdrop blur (`bg-background/90 backdrop-blur-lg`) and a hairline border (`border-t border-border` / `border-b border-border`) to separate from scrolling content. Fixed bottom CTAs additionally fade into the page via a top-edge gradient (`bg-gradient-to-t from-background via-background/90 to-transparent`).

## Shapes

Geometry is **rectilinear with consistently rounded corners** — no asymmetry, no organic shapes, no pill chips. The rounding scale is fine-grained:

- `{rounded.xs}` (4px) — micro inset bars inside chart cells
- `{rounded.sm}` (6px) — small list-row insets
- `{rounded.md}` (10px) — secondary surfaces (the volume bar background)
- `{rounded.lg}` (12px) — standard card and chip
- `{rounded.xl}` (16px) — primary CTA, prominent cards
- `{rounded.2xl}` (20px) — stat tiles, summary cards
- `{rounded.3xl}` (28px) — hero/feature card frames (e.g. map containers)
- `{rounded.4xl}` (40px) — bottom-sheet top edge
- `{rounded.full}` — circular icon buttons, avatar, badge pills, progress-bar tracks

Rule of thumb: the larger and more important the surface, the larger the radius. A page-spanning hero feature uses `{rounded.3xl}`; a 4-up stat tile uses `{rounded.2xl}`; a list row uses `{rounded.lg}`. Never mix radii within a single visual group.

## Components

### card

Hairline-bordered surface lifted one tonal step above the page. No shadow.

```html
<div class="bg-[#181B21] border border-[#22262E] rounded-2xl p-5">
  <span class="block text-[10px] font-bold text-[#9CA3AF] uppercase tracking-[0.2em] mb-2">[Metric Label]</span>
  <p class="text-3xl font-[Space_Grotesk] font-bold text-white tabular-nums">[Value]<span class="text-sm text-[#9CA3AF] font-normal ml-1 italic">[Unit]</span></p>
</div>
```

A **stat tile** is a `card` with an `{typography.label-uppercase}` kicker, a `{typography.numeral-stat}` value with demoted italic unit, and an optional 20%-opacity icon absolutely positioned top-right (`absolute top-0 right-0 p-3 opacity-20`).

### button-primary

The lime hero — used at most once per screen for the most important forward action.

```html
<button class="w-full h-16 bg-[#CCFF00] text-[#0A0A0A] font-[Space_Grotesk] font-black text-xl rounded-2xl shadow-[0_10px_30px_rgba(204,255,0,0.2)] active:scale-95 transition-all">
  [ACTION LABEL]
</button>
```

For an even more expressive variant (a "quick start" hero), the label can be split into a small uppercase eyebrow and a `text-5xl italic font-black tracking-tighter` headline word, with a circular black-tinted play affordance docked right.

### button-secondary

Used for paired/alternate actions and large utility surfaces. Translucent muted fill with hairline border.

```html
<button class="w-full h-20 bg-[#2A2F38]/50 backdrop-blur-md rounded-2xl flex items-center justify-center gap-4 border border-[#22262E] active:scale-95 transition-all">
  <div class="h-10 w-10 rounded-full bg-[#CCFF00] flex items-center justify-center">
    <iconify-icon icon="solar:[icon-name]-bold" class="text-[#0A0A0A] size-6"></iconify-icon>
  </div>
  <span class="text-xl font-[Space_Grotesk] font-bold text-[#F0F2F5] tracking-tight">[ACTION]</span>
</button>
```

### button-text

Bare interactive label, typically with a trailing chevron, used for navigation affordances ("see all," "show more"). No background, no padding.

```html
<a href="#" class="text-xs font-medium text-[#9CA3AF] flex items-center hover:text-[#CCFF00] transition-colors">
  [Label] <iconify-icon icon="solar:alt-arrow-right-linear" class="ml-1 size-4"></iconify-icon>
</a>
```

### button-icon-circle

The default for top-app-bar actions (close, share, back). Hairline-bordered circle on the muted surface tone.

```html
<button class="h-10 w-10 rounded-full bg-[#2A2F38] flex items-center justify-center border border-[#22262E]">
  <iconify-icon icon="solar:[icon-name]-bold" class="text-xl size-5"></iconify-icon>
</button>
```

### input-text

Hairline-bordered field on the elevated surface, with the lime as focus ring color.

```html
<input class="w-full bg-[#181B21] border border-[#22262E] rounded-xl px-4 py-3 text-[#F0F2F5] text-sm placeholder:text-[#9CA3AF] focus:outline-none focus:border-[#CCFF00] focus:ring-1 focus:ring-[#CCFF00]" placeholder="[Placeholder]" />
```

### chip

Filter / quick-select chip. Always horizontal-icon-plus-text, with a small uppercase eyebrow above a bold value.

```html
<button class="flex-shrink-0 px-4 py-3 bg-[#181B21] border border-[#22262E] rounded-lg flex items-center gap-3 min-w-[140px] active:bg-[#2A2F38] transition-colors">
  <iconify-icon icon="solar:[icon-name]-bold" class="text-[#9CA3AF] size-5"></iconify-icon>
  <div class="flex flex-col items-start">
    <span class="text-xs text-[#9CA3AF] font-medium uppercase">[Type Label]</span>
    <span class="text-sm font-bold">[Value]</span>
  </div>
</button>
```

### chip-active

Same as chip, but with `bg-[#2A2F38]` (one tonal step up). Active state in this aesthetic is communicated more by lime *content* (lime icon, lime text) than by lime background.

### badge-pill

Tinted-lime achievement/status pill. The only place where lime appears as both a background tint and a foreground.

```html
<span class="inline-flex items-center gap-1.5 px-3 py-1 rounded-full bg-[#CCFF00]/20 border border-[#CCFF00]/30 text-[#CCFF00] text-[10px] font-bold uppercase tracking-[0.2em]">
  <iconify-icon icon="solar:[icon-name]-bold" class="size-3"></iconify-icon>[Label]
</span>
```

### avatar

Hairline-bordered circle with cover-fit image.

```html
<div class="h-10 w-10 rounded-full bg-[#2A2F38] overflow-hidden border border-[#22262E]">
  <img alt="[alt]" src="[src]" class="h-full w-full object-cover" />
</div>
```

### list-row

A bordered card row, typically used for split times, gear entries, or comparable list items. Mono numerals on the right edge, semantic content on the left.

```html
<div class="flex items-center justify-between p-4 bg-[#181B21] border border-[#22262E] rounded-xl">
  <div class="flex items-center gap-4">
    <span class="font-mono text-sm text-[#9CA3AF] w-6">[Index]</span>
    <div class="h-1 flex-1 w-24 bg-[#2A2F38] rounded-full overflow-hidden">
      <div class="h-full bg-[#CCFF00] w-[80%]"></div>
    </div>
  </div>
  <div class="flex items-center gap-4">
    <span class="font-mono font-bold">[Value]</span>
    <span class="text-[10px] text-[#9CA3AF] flex items-center gap-0.5"><iconify-icon icon="solar:[arrow-icon]-bold" class="size-3"></iconify-icon> [Delta]</span>
  </div>
</div>
```

A **highlighted** list row (e.g. the best in the set) gets `border-[#CCFF00]/30` and `shadow-[0_0_15px_rgba(204,255,0,0.05)]`, plus lime-colored index, value, and delta.

### progress-bar

Thin track with lime fill. The fill on a live/active progress carries the lime drop-glow.

```html
<div class="h-1 w-full bg-[#2A2F38] rounded-full overflow-hidden">
  <div class="h-full bg-[#CCFF00] w-[64%] shadow-[0_0_8px_rgba(204,255,0,0.6)]"></div>
</div>
```

### top-app-bar

Translucent, sticky, hairline-separated. Title centered, icon-circle buttons left and right; or eyebrow-plus-headline left and avatar right.

```html
<header class="px-6 pt-12 pb-6 flex items-center justify-between sticky top-0 z-20 bg-[#0F1115]/80 backdrop-blur-md border-b border-[#22262E]/50">
  <button class="h-10 w-10 rounded-full bg-[#2A2F38] flex items-center justify-center border border-[#22262E]">
    <iconify-icon icon="solar:[icon-name]-bold" class="text-xl size-5"></iconify-icon>
  </button>
  <h1 class="text-xl font-[Space_Grotesk] font-bold tracking-tight">[Screen Title]</h1>
  <button class="h-10 w-10 rounded-full bg-[#2A2F38] flex items-center justify-center border border-[#22262E]">
    <iconify-icon icon="solar:[icon-name]-bold" class="text-xl size-5"></iconify-icon>
  </button>
</header>
```

### tab-bar / tab-item-active / tab-item-inactive

Translucent floating-feeling bottom bar with hairline top border. Active tab uses lime icon + lime text + bold-variant icon; inactive uses muted text + linear-variant icon. No pill, no underline — color and weight do the work.

```html
<nav class="fixed bottom-0 left-0 w-full bg-[#0F1115]/90 backdrop-blur-lg border-t border-[#22262E] z-50 pb-6 pt-2 px-7">
  <div class="flex justify-between items-center max-w-sm mx-auto">
    <button class="flex flex-col items-center gap-1 p-2 text-[#CCFF00]">
      <iconify-icon icon="solar:[icon-name]-bold" class="text-2xl size-6"></iconify-icon>
      <span class="text-[10px] font-medium tracking-wide">[Label]</span>
    </button>
    <button class="flex flex-col items-center gap-1 p-2 text-[#9CA3AF] hover:text-[#F0F2F5] transition-colors">
      <iconify-icon icon="solar:[icon-name]-linear" class="text-2xl size-6"></iconify-icon>
      <span class="text-[10px] font-medium tracking-wide">[Label]</span>
    </button>
  </div>
</nav>
```

### Composition recipes (not separate components)

- **Hero numeric readout**: `{typography.label-uppercase}` kicker in `{colors.on-surface-variant}` above a `text-7xl` to `text-9xl` Space-Grotesk-black tabular numeral. The featured numeral takes `{colors.primary}`; supporting numerals take `{colors.on-surface}`. Demoted unit (`text-2xl` in `text-muted-foreground/50`) sits inline-baseline to the right.
- **Bar-chart sparkline** (weekly/distance distribution): a 7-cell flex grid where each cell is a `bg-[#181B21] rounded-sm` track containing a bottom-anchored fill — `bg-[#2A2F38]` for default cells, `bg-[#CCFF00]` (with the lime glow shadow) for the current/highlight cell. Below each cell, a single mono-uppercase letter caption.
- **Hero-image card**: a `{rounded.3xl}` container holding an image (see Imagery) with a top-to-bottom `bg-gradient-to-t from-background` overlay so text laid over the bottom remains legible. Metadata badges (date, location pill) sit absolutely positioned with `bg-background/80 backdrop-blur` chips.

For a low-attention secondary action, render `button-primary` with `bg-[#CCFF00]/10` background and `text-[#CCFF00]` foreground (no shadow).

## Iconography

Icon set is **Solar** (Iconify `solar:*`). Variant convention:

- **Default / inactive**: `linear` (e.g. `solar:home-2-linear`, `solar:graph-new-linear`).
- **Active / emphasized / inside filled buttons**: `bold` (e.g. `solar:home-2-bold`, `solar:play-bold`, `solar:pause-bold`).

Default icon size is 24px (`size-6`); list-row inline icons are 16–20px (`size-4` / `size-5`); micro-icons inside badges or deltas are 12px (`size-3`); large decorative icons (the 20%-opacity stat-tile background icons) are 28–32px (`size-7` / `size-8`).

Color rules: icons inherit `currentColor`. Default chrome icons are `{colors.on-surface-variant}`; active states flip to `{colors.primary}`; icons inside the lime CTA flip to `{colors.on-primary}`.

A small set of **expressive emoji-style icons** from `fluent-emoji` (`fluent-emoji:fire`) and `openmoji` (`openmoji:running-shoe`) appear inline alongside calorie / shoe metrics. Use sparingly — these are "warmth tokens" against the otherwise austere chrome — and never as primary navigation icons. A general implementer rule: if a metric has a culturally well-known emoji (fire = burn, lightning = power), an emoji icon is allowed inline; otherwise stick to Solar.

## Illustration & Imagery

**Style / Technique**: Photo-real top-down or low-angle 3D renders of a near-black city street grid, with the subject (a route, a path, a track, an outline of any [SUBJECT]) drawn ON the ground plane as a glowing neon lime line — as if a laser were tracing the shape onto wet asphalt at night. The technique is rendered, not flat-vector: there's atmospheric depth, soft falloff, faint reflections in the surrounding pavement, and a subtle haze of bloom around the glow. The base map underneath is desaturated to near-monochrome cool-black, with grid lines barely brighter than the asphalt.

**Palette**: Two colors only inside any image. (1) The `{colors.primary}` lime (`#CCFF00`) — used exclusively for the glowing subject line, with its bloom halo a slightly desaturated yellow-green at lower opacity. (2) A near-black ground that lives in the same family as `{colors.surface}` and `{colors.surface-alt}` — `#0A0D11` to `#181B21` range, with hairline grid details in `#22262E`. No third hue. No warm tones. No saturated sky color.

**Edge treatment**: The lime line has NO hard outline — its edge IS its glow. The line's core is solid `#CCFF00` at 2–4px equivalent thickness, surrounded by a 12–24px soft falloff to transparent. The base ground has subtle hairline strokes describing streets / surface details, ~1px in `#22262E`, never crisp.

**Shading & light**: The lime line is the only light source in the scene. The pavement immediately under and beside the line picks up a faint green wash; the rest of the scene falls off into deep cool-black. No directional sun, no sky lighting, no ambient warmth.

**Composition & framing**: The subject (the glowing shape) sits centered or slightly off-center in the frame, occupying ~50–65% of the canvas. Generous dark negative space on all sides so the bloom can breathe. The viewing angle is either flat top-down (orthographic) or a shallow ¾ perspective (~15–25° tilt) suggesting the subject is on a real surface. Subject never bleeds to the edge — it floats in dark space.

**Background within the illustration**: A near-black map / surface / grid texture. Streets and surface lines are visible but desaturated and out-of-focus relative to the glowing subject. Never a transparent background; the dark ground is essential to the aesthetic.

**Container styling**: Image lives in a `{rounded.3xl}` (28px) frame for hero/feature placement, or a `{rounded.2xl}` (20px) frame for inline cards. The frame has a `border border-[#22262E]` hairline on all sides. No internal padding — the image fills the frame edge-to-edge. The container background is `{colors.surface-alt}` so the image sits on the elevated surface tone.

**CSS treatment on the `<img>`**: `class="w-full h-full object-cover opacity-60 mix-blend-screen"` for atmospheric/decorative placement (the image becomes part of the dark surface, with lime glow punching through); `class="w-full h-full object-cover"` (no blend, full opacity) for hero/featured placement where the image IS the content. A top-to-bottom gradient overlay (`bg-gradient-to-t from-background via-background/80 to-transparent`) is layered above the image to anchor any text laid over the bottom.

**Box-shadow on the image or its frame**: None. The frame sits flat; depth comes from the image's internal glow.

**Aspect ratio rule**: Hero/feature images use 16:9 to 4:3 landscape (height 256–320px at full container width). Inline thumbnails use 1:1 square. Always preserve the image's framing — crop with `object-cover` rather than letterbox.

**Anti-references**: NOT flat 2D vector. NOT line art. NOT cartoon. NOT illustrated/hand-drawn. NOT pastel. NOT bright/daylit. NOT photographic-real-world (no actual streets recognizable as a place). NOT multi-color. NOT warm-toned. NOT minimal-grayscale (the lime glow is non-negotiable).

**Style recipe prompt**:

> *A near-black overhead view of a city street grid rendered in deep cool-black tones (#0A0D11 to #181B21) with hairline desaturated street markings. Drawn on the ground surface in a single glowing neon lime line (#CCFF00, ~3px equivalent core with soft 16px bloom halo) is the shape of [SUBJECT]. The lime line is the ONLY light source — pavement under and beside it picks up a faint green wash, falling off into deep darkness. Shallow ¾ perspective or flat top-down framing, subject centered occupying 50–65% of canvas, generous dark negative space around it. Atmospheric, slightly hazy, with subtle bloom diffusion. Photo-real 3D rendered look, not vector, not cartoon. Two-color palette only: glowing lime + near-black ground. NOT flat illustration, NOT pastel, NOT daylit, NOT multi-color, NOT recognizable real-world location.*

## Hierarchy & Emphasis

Visual weight in this aesthetic is earned by, in order of dominance:

1. **Size + italic + black weight** on Space Grotesk numerals (the loudest moment per screen).
2. **Lime color** — small in area but maximally salient.
3. **Bold-variant icon + lime color** for active state.
4. **Tabular weight contrast** — bold mono on muted mono.
5. Everything else recedes into `{colors.on-surface-variant}` and tracked-out micro-labels.

The rule: each screen has exactly one "loudest" element (the hero numeral or the primary CTA), one to three lime accents (active states, deltas, pills), and a body of muted grey instrumentation. If two elements are competing for the loudest slot, the design is wrong.

## Distinctive Details

1. **Italic-black display numerals** with negative letter-spacing (`tracking-tighter` / `-0.03em` to `-0.04em`). Forward lean = motion = performance. Reserve italic for the single most kinetic moment per screen.
2. **The lime drop-glow** (`shadow-[0_0_8px_rgba(204,255,0,...)]` family). Used on live progress fills, current chart bars, and the primary CTA — and absolutely nowhere else. It is the design's pulse.
3. **Tracked-out uppercase micro-labels** above every metric (`{typography.label-uppercase}` and `{typography.label-micro}`). The +0.2em tracking on 10–12px Manrope-bold-uppercase reads as instrument-panel typography and appears 4–8 times per screen.
4. **20%-opacity decorative icons** absolutely positioned in stat-tile corners (`absolute top-0 right-0 p-3 opacity-20`). They categorize the metric without competing with the value. Never above 30% opacity, never positioned anywhere except a card corner.

## Do's and Don'ts

### Do
- Use lime (`{colors.primary}`) as a rare, signaling accent — at most ~5% of any screen's pixel area.
- Default to Space Grotesk black-weight italic for hero numerals and use `tabular-nums` on every changeable number.
- Place a `{typography.label-uppercase}` kicker above every metric, every section, every card group.
- Layer surfaces by tonal step (`#0F1115` → `#181B21` → `#2A2F38`) and separate with hairline `{colors.border}` borders, not shadows.
- Apply the lime drop-glow ONLY to live progress fills, current/best chart bars, and the primary CTA.
- Use Solar `linear` for default icons and Solar `bold` for active/emphasized icons.
- Render images as glowing neon lime subjects on near-black ground with bloom; preserve the two-color palette.
- Demote units (`KM`, `/KM`, `bpm`) inline at smaller size and `{colors.on-surface-variant}`.

### Don't
- Don't use lime as a card or surface fill — it lives only as text, icon, hairline, tinted overlay, or small glowing fill.
- Don't add traditional drop-shadows to cards, list rows, or chips. The system is flat-with-glow.
- Don't introduce a second accent color (orange, blue, magenta) — the single-accent discipline IS the aesthetic.
- Don't use italic on more than one element per screen.
- Don't use Manrope where Space Grotesk belongs (numerals, headings, CTA labels) or vice versa.
- Don't render images in flat-vector, cartoon, pastel, or photoreal-real-world style — they must be the dark-ground neon-glow style.
- Don't use rounded-full pill chips for filters or selection — chips here are `{rounded.lg}` rectangles.
- Don't decorate with sparkles, dots, gradients, or atmospheric blobs. Decoration is monochrome and structural (grid textures, hairline borders, micro-bars), never ornamental.
- Don't write body copy in mono — mono is reserved for measurement values and timestamps.
- Don't let any non-data element compete with the hero numeral or primary CTA for visual weight.

These files follow the Google Labs format with Sleek extensions. Learn how to load DESIGN.md in your coding agent.