# TEMPLATE.md: Artist portfolio

You are an AI developer building a complete website for my client. Template: **Artist portfolio**. Gallery-first site for artists and architects: work at the center, bio, exhibitions, commission contact.

## What you are building

A Next.js (App Router) site assembled from production-ready LudusVibe UI sections. Sections install through the shadcn registry and automatically follow the project's brand tokens.

## Steps

### 1. Project and registry

If the project does not exist yet: `npx create-next-app@latest my-site --ts --tailwind --app`, then `npx shadcn@latest init`.
Add the registry to `components.json`:

```json
"registries": {
  "@ludusvibe": "https://ui.ludusvibe.com/r/{name}.json"
}
```

### 2. Install the template's sections

```bash
npx shadcn@latest add @ludusvibe/navbar-01 @ludusvibe/hero-10 @ludusvibe/gallery-03 @ludusvibe/about-01 @ludusvibe/about-02 @ludusvibe/contact-01 @ludusvibe/cta-08 @ludusvibe/footer-02
```

### 3. Assemble the page in this order

1. `navbar-01`  (Navbar 01: Floating Pill)
   Great for: Modern SaaS, startups, portfolios and product sites that want a light, airy look.
2. `hero-10`  (Hero 10: Split with full-height artwork panel)
   Great for: Artists, galleries, photographers and premium craft brands.
3. `gallery-03`  (Gallery 03: Masonry Lookbook)
   Great for: Fashion, handmade brands, weddings and visual portfolios.
4. `about-01`  (About 01: Practice Bio)
   Great for: Therapists, coaches, doctors, lawyers: solo practitioners.
5. `about-02`  (About 02: Firm Story)
   Great for: Law firms, agencies and family businesses with history to tell.
6. `contact-01`  (Contact 01: Form & Map)
   Great for: Any business with an office or premises to visit.
7. `cta-08`  (CTA 08: Instagram Follow)
   Great for: Creators, salons, food and visual brands living on Instagram.
8. `footer-02`  (Footer 02: Minimal Watermark)
   Great for: Portfolios, studios and brands with a strong wordmark.

In `app/page.tsx`:

```tsx
import { Navbar01 } from "@/components/sections/navbar-01"
import { Hero10 } from "@/components/sections/hero-10"
import { Gallery03 } from "@/components/sections/gallery-03"
import { About01 } from "@/components/sections/about-01"
import { About02 } from "@/components/sections/about-02"
import { Contact01 } from "@/components/sections/contact-01"
import { Cta08 } from "@/components/sections/cta-08"
import { Footer02 } from "@/components/sections/footer-02"

export default function Page() {
  return (
    <>
      <Navbar01 />
      <Hero10 />
      <Gallery03 />
      <About01 />
      <About02 />
      <Contact01 />
      <Cta08 />
      <Footer02 />
    </>
  )
}
```

Pass `as="h1"` to the first hero section.

### 4. Branding (ask the client before choosing)

All colors live as CSS tokens in `app/globals.css`. Change ONLY tokens, never colors inside components:
- `--primary` and `--primary-foreground`: the brand color (in both themes, :root and .dark)
- `--chart-1` through `--chart-5`: accent colors for charts and visual elements
- Font: swap the font in `app/layout.tsx` (next/font)

### 5. Content

Every section takes its content through props (headings, copy, items, images, CTAs). Replace the default content with the client's real data: names, services, prices, photos, contact, social links.

Copy rules:
- Sales-driven and concrete: benefits first, numbers where they exist
- NEVER use the em dash (—): use a colon, a comma, or restructure the sentence
- Images: replace the Unsplash defaults with the client's photography wherever available

### 6. Verify

- The site works in light and dark themes
- Mobile at 375px with no horizontal scroll
- Every link and CTA points to a real destination (phone, Instagram, form)
