# Visual Style Guide
Status: T02 baseline complete
Scope: Global design tokens + component baseline only (no full page redesign)
## 1) Design intent
A warm, appetizing visual language for a modern recipe app:
- **Warm brand hue:** orange/amber (food-forward, inviting)
- **Clean surfaces:** soft cream background + white cards
- **Readable typography:** high contrast body text, expressive heading serif
- **Low-friction interactions:** consistent focus ring, elevation, and control sizing
## 2) Token sources
- **TS token source:** `frontend/src/theme.ts`
- **Global CSS token source:** `frontend/src/styles/tokens.css`
- **Baseline component classes:** `frontend/src/index.css` (`@layer components`)
## 3) Core tokens
### Color palette
- Brand scale: `brand50` → `brand800`
- Semantic:
- `primary` / `primaryDark` / `primaryLight`
- `accent`
- `success`, `warning`, `error` (+ light variants)
- Surfaces/text:
- `bg`, `bgAlt`, `surface`, `surfaceMuted`, `border`
- `text`, `textHeading`, `textDim`
### Typography scale
- Families:
- Sans: `Inter, Manrope, system-ui...`
- Heading: `Fraunces, Inter, Georgia, serif`
- Mono: `ui-monospace...`
- Sizes: `xs`, `sm`, `base`, `lg`, `xl`, `2xl`, `3xl`, `4xl`
- Line heights: `tight`, `normal`, `relaxed`
### Layout primitives
- Spacing: `xxs`, `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`
- Radius: `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `full`
- Elevation:
- `subtle`
- `card`
- `hover`
- Focus:
- `focus` token in TS
- `--focus-ring` token in CSS
## 4) Component baseline classes
Defined in `frontend/src/index.css`:
- **Page container:** `.ui-page`
- **Section container:** `.ui-section`
- **Card container:** `.ui-card`
- **Buttons:**
- base `.ui-btn`
- variants `.ui-btn-primary`, `.ui-btn-secondary`
- **Inputs:** `.ui-input`, `.ui-textarea`, `.ui-select`
- **Chips/Badges:** `.ui-chip`, `.ui-badge`
All of these share tokenized radius, border, spacing, shadows, and focus behavior.
## 5) Adoption in current baseline
Initial integration applied to reduce disruption:
- `RecipeListPage` page/section/button/input/chip/badge usage
- `RecipeForm` input/textarea/button usage
- `TagSelector` chip/input/button usage
- `RecipeCard` card/chip usage
## 6) Usage pattern
Prefer semantic baseline classes + utility classes for layout only.
Example:
```tsx
Vegetarian
```
## 7) Notes for next tasks (T04+)
- Reuse these primitives before introducing one-off visual patterns.
- Keep all new colors mapped to semantic tokens.
- Preserve AA contrast and focus visibility for every interactive control.
## 8) Imagery and icon direction update (Photo-First)
- Food storytelling should use real photography as the default medium.
- Legacy custom illustrations are fallback/decorative only.
- Prefer photographic aspect ratios:
- list cards: 4:3
- detail hero: 16:9 (or 3:2)
- square thumbnails: 1:1
- Keep icons modern and restrained; standardize on `lucide-react` for action/navigation icons.
- Avoid emoji icons in production UI where a system icon exists.
See also: `docs/visual-audit/photo-first-assets.md` and `frontend/public/assets/photos/manifest.json`.