复古爵士酒吧体验网站

复古爵士酒吧 The Velvet Note 的中英双语单页站,哑光黑配金色和勃艮第酒红,GSAP 滚动动画带 Lenis 平滑滚动。

正在加载预览…
从这段提示词开始

复古爵士酒吧 The Velvet Note 的中英双语纯前端单页站,用 React 和 GSAP 搭,哑光黑底配金色和勃艮第酒红,Lenis 平滑滚动,演出阵容、菜单和预订都在一页里滚动呈现。

试用建站智能体
帮我创建一个名为"The Velvet Note"的复古爵士酒吧沉浸式体验网站,支持中英文双语切换(仅中文和英文,不需要其他语言)。这是一个纯前端单页应用,无后端。

## 一、技术栈

- React 19 + TypeScript + Vite 7
- react-router v7(BrowserRouter)
- Tailwind CSS 3.4 + tailwindcss-animate 插件
- GSAP 3.14(含 ScrollTrigger、Observer 插件)
- @studio-freight/lenis(平滑滚动,lerp:0.1, smoothWheel:true)
- shadcn/ui(Radix UI + class-variance-authority)
- lucide-react 图标库

## 二、色彩系统

| 名称 | 值 | 用途 |
|------|-----|------|
| 哑光黑 | #0a0a0a | 全局背景、Hero遮罩、Footer |
| 浅灰白 | #e0e0e0 | 正文文字、标题 |
| 金色 | #d4af37 | 品牌色、导航hover、标题高亮、按钮边框、SVG描边 |
| 酒红/勃艮第 | #4a0e16 | Lineup文字、卡片hover遮罩 rgba(74,14,22,0.6) |
| 羊皮纸 | #f0e6d2 | Lineup区块背景 |
| 深灰线条 | #333333 | 输入框下划线默认、语言菜单边框 |
| 暗灰 | #1a1a1a | 菜单hover背景、Footer分割线、黑胶唱片纹理 |
| CSS变量 primary | hsl(43,65%,52%) | 金色 |
| CSS变量 secondary | hsl(350,70%,18%) | 酒红色 |

## 三、字体系统

| 类别 | font-family | 权重 | 用途 |
|-----|------------|------|------|
| font-display | 'Playfair Display', serif | 400-900 含italic | 所有标题、品牌名 |
| font-body | 'Inter', sans-serif | 300-700 | 正文、导航、表单 |
| font-mono | 'Courier Prime', monospace | 400/700 | 时间标签、"Est.1957"、版权 |

## 四、国际化实现

使用 React Context(LanguageContext),不依赖 i18n 库:
- Language 类型: 'en' | 'zh'
- t(key) 支持嵌套点分 key 如 'lineup.musician1.name'

### 翻译内容
- hero.title: "The Velvet Note" ↔ "丝绒音符"
- hero.subtitle: "A journey through sound and time" ↔ "一场穿越声音与时光的私密旅程"
- nav: Lineup/Story/Reservations/Gallery ↔ 演出阵容/我们的故事/预订/画廊
- 三位音乐家: Marcus Cole萨克斯21:00 / Elena Voss声乐22:45 / James Parker低音提琴00:30
- story.title: "Our Story" ↔ "我们的故事"
- reservations.title: "Reserve Your Seat" ↔ "预订您的座位"
- gallery: "Gallery" ↔ "画廊"

## 五、胶片颗粒效果(FilmGrain)

- fixed 全屏覆盖, z-index:9999, pointer-events:none
- opacity: 0.04, mix-blend-mode: overlay
- SVG feTurbulence: type="fractalNoise" baseFrequency="0.85" numOctaves="4" stitchTiles="stitch"
- 内联 data URI 背景图

## 六、页面区块详细设计

### 6.1 导航栏
- fixed, z-[100], mix-blend-mode: difference(与背景反色混合)
- 滚动超 80px: rgba(10,10,10,0.92) + blur(12px),否则透明
- Logo SVG: 4层同心圆(r=14/10/6/2),全部金色 #d4af37,hover rotate-180 500ms
- 旁边 "TVN" Playfair Display text-lg tracking-wide
- 导航链接: uppercase, letter-spacing:0.1em, font-size:0.8rem, #e0e0e0
- hover 下划线: ::after 从中心展开 h:1px bg:#d4af37, 0.3s ease

### 6.2 Hero
- h-screen, 视频背景 /videos/hero.mp4, autoPlay muted loop playsInline
- 暗角遮罩: radial-gradient(circle at center, transparent 0%, #0a0a0a 120%)
- 加载遮罩: 纯黑 #0a0a0a, GSAP opacity 1→0, 2s power2.out delay 0.5
- 标题: Playfair Display, fontSize clamp(3rem,8vw,7rem), letterSpacing -0.02em, textShadow 0 4px 30px rgba(0,0,0,0.8)
  - GSAP: opacity 0→1 + y 40→0, 1.5s power3.out (在遮罩动画 '-=1' 时开始)
- 副标题: Inter 1rem, letterSpacing 0.2em, uppercase, textShadow 0 2px 15px
  - GSAP: opacity 0→1 + y 20→0, 1s power3.out ('-=0.8')
- 滚动指示: "Scroll" text-xs + 金色箭头 SVG stroke:#d4af37 strokeWidth:1.5, animate-pulse + bounce

### 6.3 Lineup 演出阵容
- 背景 #f0e6d2(羊皮纸色)
- 动态排版层 z-[100] pointer-events-none: 三行大字 clamp(2rem,8vw,6rem) Playfair Display uppercase
  - 第1行 "TONIGHT" / "今晚": 实心 #4a0e16
  - 第2行 "'S": 描边空心 -webkit-text-stroke:2px #4a0e16, color:transparent
  - 第3行 "LINEUP" / "演出": 实心 #4a0e16
  - GSAP scrub: 第1行 xPercent 0→-100, 第2行 yPercent 0→100, 第3行 xPercent 0→100
- 背景缩略图: 3列网格 grayscale opacity-30, GSAP scrub yPercent 0→20
- 音乐家卡片 z-[50], md:grid-cols-3:
  - 图片 aspect-[3/4] grayscale, hover 取消灰度 + scale-105 700ms
  - 名字 Playfair Display 2xl #4a0e16
  - 乐器 Inter sm uppercase tracking-widest
  - 时间 Courier Prime sm
  - GSAP入场: opacity 0→1 + y 60→0, 0.8s, stagger 0.15, power3.out, start 'top 80%'

### 6.4 Story 我们的故事
- 背景 #0a0a0a
- 标题金色 Playfair Display clamp(2.5rem,6vw,5rem) 居中
- 双栏 lg:flex-row: 左图 aspect-[16/10] + 底部渐变;右3段文字 text-lg
- 底部装饰线 w-12 h-[1px] #d4af37 + "Est. 1957" Courier Prime
- GSAP: 图片 x:-60→0 1.2s power3.out; 段落 y:40→0 0.8s stagger 0.2

### 6.5 Reservations 预订
- 背景 #4a0e16(酒红色)
- 模拟打字机风格输入框 .analog-input: 透明背景 + 底部 2px #333 下划线, focus 变 #d4af37
- 浮动标签 .analog-label: 金色 uppercase, focus 时 rotateX(-90deg) 翻转隐藏, 0.4s cubic-bezier(0.2,1,0.3,1)
- 4字段: 姓名/邮箱/日期/人数(1-8)
- 提交按钮: bg-#0a0a0a text-#d4af37 border-#d4af37, hover 反转, 500ms
- 打字音效: Web Audio API 20ms 衰减白噪声 gain:0.08
- GSAP: .form-element opacity+y:30→0, 0.6s stagger 0.1

### 6.6 Gallery 3D 黑胶唱片旋转画廊
- 100vh, 背景 #0a0a0a
- 6张图: The Crowd/The Bar/Vinyl/The Stage/The Keys/The Quartet
- 3D圆形布局: perspective:1000px, radius=min(w,h)*0.32
  - 360°均匀分布, GSAP.set x=sin(angle)*r, z=cos(angle)*r-r, rotateY=angle
  - 激活项: .decks__img opacity 0→1 + scale 0.5→1, 0.5s
- 交互: GSAP Observer wheel/touch, deltaY*0.002 增量旋转
- 黑胶唱片样式: border-radius:50%, repeating-radial-gradient(#1a1a1a 4px, #000 5px), border 8px #0a0a0a
- 滚动提示: 金色旋转 SVG 3s + "Scroll to browse"

### 6.7 Footer
- bg-#0a0a0a, border-t #222
- 三栏: 品牌(SVG Logo+"The Velvet Note"+营业时间) / Location(地址) / Follow(Instagram/Facebook/Twitter)
- 社交 white/50 hover 金色 300ms
- 版权 Courier Prime #e0e0e0/30

## 七、静态资源

### 图片 (/public/images/) — 10 张
- bar-interior.jpg (16:10 酒吧内部)
- musician-1/2/3.jpg (3:4 音乐家)
- gallery-1~6.jpg (圆形裁切画廊)

### 视频 (/public/videos/)
- hero.mp4 — 爵士酒吧氛围(暗调,全屏循环)

## 八、Lenis 平滑滚动
- lerp:0.1, smoothWheel:true
- lenis.on('scroll', ScrollTrigger.update)
- gsap.ticker.add 驱动 RAF
- gsap.ticker.lagSmoothing(0)

## 九、关键动效参数

| 效果 | 参数 |
|------|------|
| 加载遮罩淡出 | opacity 1→0, 2s power2.out delay 0.5 |
| Hero标题入场 | opacity+y:40→0, 1.5s power3.out ('-=1') |
| Hero副标题入场 | opacity+y:20→0, 1s power3.out ('-=0.8') |
| Lineup排版第1行 | xPercent 0→-100, scrub |
| Lineup排版第2行 | yPercent 0→100, scrub |
| Lineup排版第3行 | xPercent 0→100, scrub |
| Lineup缩略图 | yPercent 0→20, scrub |
| 音乐家卡片入场 | opacity+y:60→0, 0.8s stagger 0.15, power3.out |
| Story图片 | x:-60→0, 1.2s power3.out |
| Story文字 | y:40→0, 0.8s stagger 0.2 |
| 预订表单元素 | opacity+y:30→0, 0.6s stagger 0.1 |
| Gallery激活项 | opacity+scale 0.5→1, 0.5s |
| 导航Logo hover | rotate-180, 500ms |
| 导航下划线 | width 0→100%, 0.3s ease |
| 按钮hover | bg/text反转, 500ms |
换成精酿啤酒吧

把场所从爵士酒吧换成精酿啤酒吧,演出阵容改成招牌酒单(IPA/Stout/Tripel),配色和动效保留。

用建站智能体改写
帮我创建一个名为"The Velvet Note"的精酿啤酒吧沉浸式体验网站,支持中英文双语切换(仅中文和英文,不需要其他语言)。这是一个纯前端单页应用,无后端。

## 一、技术栈

- React 19 + TypeScript + Vite 7
- react-router v7(BrowserRouter)
- Tailwind CSS 3.4 + tailwindcss-animate 插件
- GSAP 3.14(含 ScrollTrigger、Observer 插件)
- @studio-freight/lenis(平滑滚动,lerp:0.1, smoothWheel:true)
- shadcn/ui(Radix UI + class-variance-authority)
- lucide-react 图标库

## 二、色彩系统

| 名称 | 值 | 用途 |
|------|-----|------|
| 哑光黑 | #0a0a0a | 全局背景、Hero遮罩、Footer |
| 浅灰白 | #e0e0e0 | 正文文字、标题 |
| 金色 | #d4af37 | 品牌色、导航hover、标题高亮、按钮边框、SVG描边 |
| 酒红/勃艮第 | #4a0e16 | Lineup文字、卡片hover遮罩 rgba(74,14,22,0.6) |
| 羊皮纸 | #f0e6d2 | Lineup区块背景 |
| 深灰线条 | #333333 | 输入框下划线默认、语言菜单边框 |
| 暗灰 | #1a1a1a | 菜单hover背景、Footer分割线、黑胶唱片纹理 |
| CSS变量 primary | hsl(43,65%,52%) | 金色 |
| CSS变量 secondary | hsl(350,70%,18%) | 酒红色 |

## 三、字体系统

| 类别 | font-family | 权重 | 用途 |
|-----|------------|------|------|
| font-display | 'Playfair Display', serif | 400-900 含italic | 所有标题、品牌名 |
| font-body | 'Inter', sans-serif | 300-700 | 正文、导航、表单 |
| font-mono | 'Courier Prime', monospace | 400/700 | 时间标签、"Est.1957"、版权 |

## 四、国际化实现

使用 React Context(LanguageContext),不依赖 i18n 库:
- Language 类型: 'en' | 'zh'
- t(key) 支持嵌套点分 key 如 'lineup.musician1.name'

### 翻译内容
- hero.title: "The Velvet Note" ↔ "丝绒音符"
- hero.subtitle: "A journey through sound and time" ↔ "一场穿越声音与时光的私密旅程"
- nav: Taplist/Story/Reservations/Gallery ↔ 酒单/我们的故事/预订/画廊
- 三款招牌精酿: Hazy IPA / Imperial Stout / Belgian Tripel
- story.title: "Our Story" ↔ "我们的故事"
- reservations.title: "Reserve Your Seat" ↔ "预订您的座位"
- gallery: "Gallery" ↔ "画廊"

## 五、胶片颗粒效果(FilmGrain)

- fixed 全屏覆盖, z-index:9999, pointer-events:none
- opacity: 0.04, mix-blend-mode: overlay
- SVG feTurbulence: type="fractalNoise" baseFrequency="0.85" numOctaves="4" stitchTiles="stitch"
- 内联 data URI 背景图

## 六、页面区块详细设计

### 6.1 导航栏
- fixed, z-[100], mix-blend-mode: difference(与背景反色混合)
- 滚动超 80px: rgba(10,10,10,0.92) + blur(12px),否则透明
- Logo SVG: 4层同心圆(r=14/10/6/2),全部金色 #d4af37,hover rotate-180 500ms
- 旁边 "TVN" Playfair Display text-lg tracking-wide
- 导航链接: uppercase, letter-spacing:0.1em, font-size:0.8rem, #e0e0e0
- hover 下划线: ::after 从中心展开 h:1px bg:#d4af37, 0.3s ease

### 6.2 Hero
- h-screen, 视频背景 /videos/hero.mp4, autoPlay muted loop playsInline
- 暗角遮罩: radial-gradient(circle at center, transparent 0%, #0a0a0a 120%)
- 加载遮罩: 纯黑 #0a0a0a, GSAP opacity 1→0, 2s power2.out delay 0.5
- 标题: Playfair Display, fontSize clamp(3rem,8vw,7rem), letterSpacing -0.02em, textShadow 0 4px 30px rgba(0,0,0,0.8)
  - GSAP: opacity 0→1 + y 40→0, 1.5s power3.out (在遮罩动画 '-=1' 时开始)
- 副标题: Inter 1rem, letterSpacing 0.2em, uppercase, textShadow 0 2px 15px
  - GSAP: opacity 0→1 + y 20→0, 1s power3.out ('-=0.8')
- 滚动指示: "Scroll" text-xs + 金色箭头 SVG stroke:#d4af37 strokeWidth:1.5, animate-pulse + bounce

### 6.3 Lineup 演出阵容
- 背景 #f0e6d2(羊皮纸色)
- 动态排版层 z-[100] pointer-events-none: 三行大字 clamp(2rem,8vw,6rem) Playfair Display uppercase
  - 第1行 "TONIGHT" / "今晚": 实心 #4a0e16
  - 第2行 "'S": 描边空心 -webkit-text-stroke:2px #4a0e16, color:transparent
  - 第3行 "LINEUP" / "演出": 实心 #4a0e16
  - GSAP scrub: 第1行 xPercent 0→-100, 第2行 yPercent 0→100, 第3行 xPercent 0→100
- 背景缩略图: 3列网格 grayscale opacity-30, GSAP scrub yPercent 0→20
- 音乐家卡片 z-[50], md:grid-cols-3:
  - 图片 aspect-[3/4] grayscale, hover 取消灰度 + scale-105 700ms
  - 名字 Playfair Display 2xl #4a0e16
  - 乐器 Inter sm uppercase tracking-widest
  - 时间 Courier Prime sm
  - GSAP入场: opacity 0→1 + y 60→0, 0.8s, stagger 0.15, power3.out, start 'top 80%'

### 6.4 Story 我们的故事
- 背景 #0a0a0a
- 标题金色 Playfair Display clamp(2.5rem,6vw,5rem) 居中
- 双栏 lg:flex-row: 左图 aspect-[16/10] + 底部渐变;右3段文字 text-lg
- 底部装饰线 w-12 h-[1px] #d4af37 + "Est. 1957" Courier Prime
- GSAP: 图片 x:-60→0 1.2s power3.out; 段落 y:40→0 0.8s stagger 0.2

### 6.5 Reservations 预订
- 背景 #4a0e16(酒红色)
- 模拟打字机风格输入框 .analog-input: 透明背景 + 底部 2px #333 下划线, focus 变 #d4af37
- 浮动标签 .analog-label: 金色 uppercase, focus 时 rotateX(-90deg) 翻转隐藏, 0.4s cubic-bezier(0.2,1,0.3,1)
- 4字段: 姓名/邮箱/日期/人数(1-8)
- 提交按钮: bg-#0a0a0a text-#d4af37 border-#d4af37, hover 反转, 500ms
- 打字音效: Web Audio API 20ms 衰减白噪声 gain:0.08
- GSAP: .form-element opacity+y:30→0, 0.6s stagger 0.1

### 6.6 Gallery 3D 黑胶唱片旋转画廊
- 100vh, 背景 #0a0a0a
- 6张图: The Crowd/The Bar/Vinyl/The Stage/The Keys/The Quartet
- 3D圆形布局: perspective:1000px, radius=min(w,h)*0.32
  - 360°均匀分布, GSAP.set x=sin(angle)*r, z=cos(angle)*r-r, rotateY=angle
  - 激活项: .decks__img opacity 0→1 + scale 0.5→1, 0.5s
- 交互: GSAP Observer wheel/touch, deltaY*0.002 增量旋转
- 黑胶唱片样式: border-radius:50%, repeating-radial-gradient(#1a1a1a 4px, #000 5px), border 8px #0a0a0a
- 滚动提示: 金色旋转 SVG 3s + "Scroll to browse"

### 6.7 Footer
- bg-#0a0a0a, border-t #222
- 三栏: 品牌(SVG Logo+"The Velvet Note"+营业时间) / Location(地址) / Follow(Instagram/Facebook/Twitter)
- 社交 white/50 hover 金色 300ms
- 版权 Courier Prime #e0e0e0/30

## 七、静态资源

### 图片 (/public/images/) — 10 张
- bar-interior.jpg (16:10 酒吧内部)
- musician-1/2/3.jpg (3:4 音乐家)
- gallery-1~6.jpg (圆形裁切画廊)

### 视频 (/public/videos/)
- hero.mp4 — 精酿啤酒吧氛围(暗调,全屏循环)

## 八、Lenis 平滑滚动
- lerp:0.1, smoothWheel:true
- lenis.on('scroll', ScrollTrigger.update)
- gsap.ticker.add 驱动 RAF
- gsap.ticker.lagSmoothing(0)

## 九、关键动效参数

| 效果 | 参数 |
|------|------|
| 加载遮罩淡出 | opacity 1→0, 2s power2.out delay 0.5 |
| Hero标题入场 | opacity+y:40→0, 1.5s power3.out ('-=1') |
| Hero副标题入场 | opacity+y:20→0, 1s power3.out ('-=0.8') |
| Lineup排版第1行 | xPercent 0→-100, scrub |
| Lineup排版第2行 | yPercent 0→100, scrub |
| Lineup排版第3行 | xPercent 0→100, scrub |
| Lineup缩略图 | yPercent 0→20, scrub |
| 音乐家卡片入场 | opacity+y:60→0, 0.8s stagger 0.15, power3.out |
| Story图片 | x:-60→0, 1.2s power3.out |
| Story文字 | y:40→0, 0.8s stagger 0.2 |
| 预订表单元素 | opacity+y:30→0, 0.6s stagger 0.1 |
| Gallery激活项 | opacity+scale 0.5→1, 0.5s |
| 导航Logo hover | rotate-180, 500ms |
| 导航下划线 | width 0→100%, 0.3s ease |
| 按钮hover | bg/text反转, 500ms |
加在线订座

在已有预订表单上加时段选择,提交后弹出一张带确认编号的预订确认卡。

用建站智能体改写
帮我创建一个名为"The Velvet Note"的复古爵士酒吧沉浸式体验网站,支持中英文双语切换(仅中文和英文,不需要其他语言)。这是一个纯前端单页应用,无后端。

## 一、技术栈

- React 19 + TypeScript + Vite 7
- react-router v7(BrowserRouter)
- Tailwind CSS 3.4 + tailwindcss-animate 插件
- GSAP 3.14(含 ScrollTrigger、Observer 插件)
- @studio-freight/lenis(平滑滚动,lerp:0.1, smoothWheel:true)
- shadcn/ui(Radix UI + class-variance-authority)
- lucide-react 图标库

## 二、色彩系统

| 名称 | 值 | 用途 |
|------|-----|------|
| 哑光黑 | #0a0a0a | 全局背景、Hero遮罩、Footer |
| 浅灰白 | #e0e0e0 | 正文文字、标题 |
| 金色 | #d4af37 | 品牌色、导航hover、标题高亮、按钮边框、SVG描边 |
| 酒红/勃艮第 | #4a0e16 | Lineup文字、卡片hover遮罩 rgba(74,14,22,0.6) |
| 羊皮纸 | #f0e6d2 | Lineup区块背景 |
| 深灰线条 | #333333 | 输入框下划线默认、语言菜单边框 |
| 暗灰 | #1a1a1a | 菜单hover背景、Footer分割线、黑胶唱片纹理 |
| CSS变量 primary | hsl(43,65%,52%) | 金色 |
| CSS变量 secondary | hsl(350,70%,18%) | 酒红色 |

## 三、字体系统

| 类别 | font-family | 权重 | 用途 |
|-----|------------|------|------|
| font-display | 'Playfair Display', serif | 400-900 含italic | 所有标题、品牌名 |
| font-body | 'Inter', sans-serif | 300-700 | 正文、导航、表单 |
| font-mono | 'Courier Prime', monospace | 400/700 | 时间标签、"Est.1957"、版权 |

## 四、国际化实现

使用 React Context(LanguageContext),不依赖 i18n 库:
- Language 类型: 'en' | 'zh'
- t(key) 支持嵌套点分 key 如 'lineup.musician1.name'

### 翻译内容
- hero.title: "The Velvet Note" ↔ "丝绒音符"
- hero.subtitle: "A journey through sound and time" ↔ "一场穿越声音与时光的私密旅程"
- nav: Lineup/Story/Reservations/Gallery ↔ 演出阵容/我们的故事/预订/画廊
- 三位音乐家: Marcus Cole萨克斯21:00 / Elena Voss声乐22:45 / James Parker低音提琴00:30
- story.title: "Our Story" ↔ "我们的故事"
- reservations.title: "Reserve Your Seat" ↔ "预订您的座位"
- gallery: "Gallery" ↔ "画廊"

## 五、胶片颗粒效果(FilmGrain)

- fixed 全屏覆盖, z-index:9999, pointer-events:none
- opacity: 0.04, mix-blend-mode: overlay
- SVG feTurbulence: type="fractalNoise" baseFrequency="0.85" numOctaves="4" stitchTiles="stitch"
- 内联 data URI 背景图

## 六、页面区块详细设计

### 6.1 导航栏
- fixed, z-[100], mix-blend-mode: difference(与背景反色混合)
- 滚动超 80px: rgba(10,10,10,0.92) + blur(12px),否则透明
- Logo SVG: 4层同心圆(r=14/10/6/2),全部金色 #d4af37,hover rotate-180 500ms
- 旁边 "TVN" Playfair Display text-lg tracking-wide
- 导航链接: uppercase, letter-spacing:0.1em, font-size:0.8rem, #e0e0e0
- hover 下划线: ::after 从中心展开 h:1px bg:#d4af37, 0.3s ease

### 6.2 Hero
- h-screen, 视频背景 /videos/hero.mp4, autoPlay muted loop playsInline
- 暗角遮罩: radial-gradient(circle at center, transparent 0%, #0a0a0a 120%)
- 加载遮罩: 纯黑 #0a0a0a, GSAP opacity 1→0, 2s power2.out delay 0.5
- 标题: Playfair Display, fontSize clamp(3rem,8vw,7rem), letterSpacing -0.02em, textShadow 0 4px 30px rgba(0,0,0,0.8)
  - GSAP: opacity 0→1 + y 40→0, 1.5s power3.out (在遮罩动画 '-=1' 时开始)
- 副标题: Inter 1rem, letterSpacing 0.2em, uppercase, textShadow 0 2px 15px
  - GSAP: opacity 0→1 + y 20→0, 1s power3.out ('-=0.8')
- 滚动指示: "Scroll" text-xs + 金色箭头 SVG stroke:#d4af37 strokeWidth:1.5, animate-pulse + bounce

### 6.3 Lineup 演出阵容
- 背景 #f0e6d2(羊皮纸色)
- 动态排版层 z-[100] pointer-events-none: 三行大字 clamp(2rem,8vw,6rem) Playfair Display uppercase
  - 第1行 "TONIGHT" / "今晚": 实心 #4a0e16
  - 第2行 "'S": 描边空心 -webkit-text-stroke:2px #4a0e16, color:transparent
  - 第3行 "LINEUP" / "演出": 实心 #4a0e16
  - GSAP scrub: 第1行 xPercent 0→-100, 第2行 yPercent 0→100, 第3行 xPercent 0→100
- 背景缩略图: 3列网格 grayscale opacity-30, GSAP scrub yPercent 0→20
- 音乐家卡片 z-[50], md:grid-cols-3:
  - 图片 aspect-[3/4] grayscale, hover 取消灰度 + scale-105 700ms
  - 名字 Playfair Display 2xl #4a0e16
  - 乐器 Inter sm uppercase tracking-widest
  - 时间 Courier Prime sm
  - GSAP入场: opacity 0→1 + y 60→0, 0.8s, stagger 0.15, power3.out, start 'top 80%'

### 6.4 Story 我们的故事
- 背景 #0a0a0a
- 标题金色 Playfair Display clamp(2.5rem,6vw,5rem) 居中
- 双栏 lg:flex-row: 左图 aspect-[16/10] + 底部渐变;右3段文字 text-lg
- 底部装饰线 w-12 h-[1px] #d4af37 + "Est. 1957" Courier Prime
- GSAP: 图片 x:-60→0 1.2s power3.out; 段落 y:40→0 0.8s stagger 0.2

### 6.5 Reservations 预订
- 背景 #4a0e16(酒红色)
- 模拟打字机风格输入框 .analog-input: 透明背景 + 底部 2px #333 下划线, focus 变 #d4af37
- 浮动标签 .analog-label: 金色 uppercase, focus 时 rotateX(-90deg) 翻转隐藏, 0.4s cubic-bezier(0.2,1,0.3,1)
- 5字段: 姓名/邮箱/日期/时段/人数(1-8),提交后弹出一张带确认编号的预订确认卡
- 提交按钮: bg-#0a0a0a text-#d4af37 border-#d4af37, hover 反转, 500ms
- 打字音效: Web Audio API 20ms 衰减白噪声 gain:0.08
- GSAP: .form-element opacity+y:30→0, 0.6s stagger 0.1

### 6.6 Gallery 3D 黑胶唱片旋转画廊
- 100vh, 背景 #0a0a0a
- 6张图: The Crowd/The Bar/Vinyl/The Stage/The Keys/The Quartet
- 3D圆形布局: perspective:1000px, radius=min(w,h)*0.32
  - 360°均匀分布, GSAP.set x=sin(angle)*r, z=cos(angle)*r-r, rotateY=angle
  - 激活项: .decks__img opacity 0→1 + scale 0.5→1, 0.5s
- 交互: GSAP Observer wheel/touch, deltaY*0.002 增量旋转
- 黑胶唱片样式: border-radius:50%, repeating-radial-gradient(#1a1a1a 4px, #000 5px), border 8px #0a0a0a
- 滚动提示: 金色旋转 SVG 3s + "Scroll to browse"

### 6.7 Footer
- bg-#0a0a0a, border-t #222
- 三栏: 品牌(SVG Logo+"The Velvet Note"+营业时间) / Location(地址) / Follow(Instagram/Facebook/Twitter)
- 社交 white/50 hover 金色 300ms
- 版权 Courier Prime #e0e0e0/30

## 七、静态资源

### 图片 (/public/images/) — 10 张
- bar-interior.jpg (16:10 酒吧内部)
- musician-1/2/3.jpg (3:4 音乐家)
- gallery-1~6.jpg (圆形裁切画廊)

### 视频 (/public/videos/)
- hero.mp4 — 爵士酒吧氛围(暗调,全屏循环)

## 八、Lenis 平滑滚动
- lerp:0.1, smoothWheel:true
- lenis.on('scroll', ScrollTrigger.update)
- gsap.ticker.add 驱动 RAF
- gsap.ticker.lagSmoothing(0)

## 九、关键动效参数

| 效果 | 参数 |
|------|------|
| 加载遮罩淡出 | opacity 1→0, 2s power2.out delay 0.5 |
| Hero标题入场 | opacity+y:40→0, 1.5s power3.out ('-=1') |
| Hero副标题入场 | opacity+y:20→0, 1s power3.out ('-=0.8') |
| Lineup排版第1行 | xPercent 0→-100, scrub |
| Lineup排版第2行 | yPercent 0→100, scrub |
| Lineup排版第3行 | xPercent 0→100, scrub |
| Lineup缩略图 | yPercent 0→20, scrub |
| 音乐家卡片入场 | opacity+y:60→0, 0.8s stagger 0.15, power3.out |
| Story图片 | x:-60→0, 1.2s power3.out |
| Story文字 | y:40→0, 0.8s stagger 0.2 |
| 预订表单元素 | opacity+y:30→0, 0.6s stagger 0.1 |
| Gallery激活项 | opacity+scale 0.5→1, 0.5s |
| 导航Logo hover | rotate-180, 500ms |
| 导航下划线 | width 0→100%, 0.3s ease |
| 按钮hover | bg/text反转, 500ms |
首屏换实拍视频

把首屏的视频背景换成一段爵士酒吧实拍现场,金色霓虹和乐手特写做背景。

用建站智能体改写
帮我创建一个名为"The Velvet Note"的复古爵士酒吧沉浸式体验网站,支持中英文双语切换(仅中文和英文,不需要其他语言)。这是一个纯前端单页应用,无后端。

## 一、技术栈

- React 19 + TypeScript + Vite 7
- react-router v7(BrowserRouter)
- Tailwind CSS 3.4 + tailwindcss-animate 插件
- GSAP 3.14(含 ScrollTrigger、Observer 插件)
- @studio-freight/lenis(平滑滚动,lerp:0.1, smoothWheel:true)
- shadcn/ui(Radix UI + class-variance-authority)
- lucide-react 图标库

## 二、色彩系统

| 名称 | 值 | 用途 |
|------|-----|------|
| 哑光黑 | #0a0a0a | 全局背景、Hero遮罩、Footer |
| 浅灰白 | #e0e0e0 | 正文文字、标题 |
| 金色 | #d4af37 | 品牌色、导航hover、标题高亮、按钮边框、SVG描边 |
| 酒红/勃艮第 | #4a0e16 | Lineup文字、卡片hover遮罩 rgba(74,14,22,0.6) |
| 羊皮纸 | #f0e6d2 | Lineup区块背景 |
| 深灰线条 | #333333 | 输入框下划线默认、语言菜单边框 |
| 暗灰 | #1a1a1a | 菜单hover背景、Footer分割线、黑胶唱片纹理 |
| CSS变量 primary | hsl(43,65%,52%) | 金色 |
| CSS变量 secondary | hsl(350,70%,18%) | 酒红色 |

## 三、字体系统

| 类别 | font-family | 权重 | 用途 |
|-----|------------|------|------|
| font-display | 'Playfair Display', serif | 400-900 含italic | 所有标题、品牌名 |
| font-body | 'Inter', sans-serif | 300-700 | 正文、导航、表单 |
| font-mono | 'Courier Prime', monospace | 400/700 | 时间标签、"Est.1957"、版权 |

## 四、国际化实现

使用 React Context(LanguageContext),不依赖 i18n 库:
- Language 类型: 'en' | 'zh'
- t(key) 支持嵌套点分 key 如 'lineup.musician1.name'

### 翻译内容
- hero.title: "The Velvet Note" ↔ "丝绒音符"
- hero.subtitle: "A journey through sound and time" ↔ "一场穿越声音与时光的私密旅程"
- nav: Lineup/Story/Reservations/Gallery ↔ 演出阵容/我们的故事/预订/画廊
- 三位音乐家: Marcus Cole萨克斯21:00 / Elena Voss声乐22:45 / James Parker低音提琴00:30
- story.title: "Our Story" ↔ "我们的故事"
- reservations.title: "Reserve Your Seat" ↔ "预订您的座位"
- gallery: "Gallery" ↔ "画廊"

## 五、胶片颗粒效果(FilmGrain)

- fixed 全屏覆盖, z-index:9999, pointer-events:none
- opacity: 0.04, mix-blend-mode: overlay
- SVG feTurbulence: type="fractalNoise" baseFrequency="0.85" numOctaves="4" stitchTiles="stitch"
- 内联 data URI 背景图

## 六、页面区块详细设计

### 6.1 导航栏
- fixed, z-[100], mix-blend-mode: difference(与背景反色混合)
- 滚动超 80px: rgba(10,10,10,0.92) + blur(12px),否则透明
- Logo SVG: 4层同心圆(r=14/10/6/2),全部金色 #d4af37,hover rotate-180 500ms
- 旁边 "TVN" Playfair Display text-lg tracking-wide
- 导航链接: uppercase, letter-spacing:0.1em, font-size:0.8rem, #e0e0e0
- hover 下划线: ::after 从中心展开 h:1px bg:#d4af37, 0.3s ease

### 6.2 Hero
- h-screen, 首屏换成爵士酒吧实拍现场 /videos/hero-live.mp4(金色霓虹+乐手特写), autoPlay muted loop playsInline
- 暗角遮罩: radial-gradient(circle at center, transparent 0%, #0a0a0a 120%)
- 加载遮罩: 纯黑 #0a0a0a, GSAP opacity 1→0, 2s power2.out delay 0.5
- 标题: Playfair Display, fontSize clamp(3rem,8vw,7rem), letterSpacing -0.02em, textShadow 0 4px 30px rgba(0,0,0,0.8)
  - GSAP: opacity 0→1 + y 40→0, 1.5s power3.out (在遮罩动画 '-=1' 时开始)
- 副标题: Inter 1rem, letterSpacing 0.2em, uppercase, textShadow 0 2px 15px
  - GSAP: opacity 0→1 + y 20→0, 1s power3.out ('-=0.8')
- 滚动指示: "Scroll" text-xs + 金色箭头 SVG stroke:#d4af37 strokeWidth:1.5, animate-pulse + bounce

### 6.3 Lineup 演出阵容
- 背景 #f0e6d2(羊皮纸色)
- 动态排版层 z-[100] pointer-events-none: 三行大字 clamp(2rem,8vw,6rem) Playfair Display uppercase
  - 第1行 "TONIGHT" / "今晚": 实心 #4a0e16
  - 第2行 "'S": 描边空心 -webkit-text-stroke:2px #4a0e16, color:transparent
  - 第3行 "LINEUP" / "演出": 实心 #4a0e16
  - GSAP scrub: 第1行 xPercent 0→-100, 第2行 yPercent 0→100, 第3行 xPercent 0→100
- 背景缩略图: 3列网格 grayscale opacity-30, GSAP scrub yPercent 0→20
- 音乐家卡片 z-[50], md:grid-cols-3:
  - 图片 aspect-[3/4] grayscale, hover 取消灰度 + scale-105 700ms
  - 名字 Playfair Display 2xl #4a0e16
  - 乐器 Inter sm uppercase tracking-widest
  - 时间 Courier Prime sm
  - GSAP入场: opacity 0→1 + y 60→0, 0.8s, stagger 0.15, power3.out, start 'top 80%'

### 6.4 Story 我们的故事
- 背景 #0a0a0a
- 标题金色 Playfair Display clamp(2.5rem,6vw,5rem) 居中
- 双栏 lg:flex-row: 左图 aspect-[16/10] + 底部渐变;右3段文字 text-lg
- 底部装饰线 w-12 h-[1px] #d4af37 + "Est. 1957" Courier Prime
- GSAP: 图片 x:-60→0 1.2s power3.out; 段落 y:40→0 0.8s stagger 0.2

### 6.5 Reservations 预订
- 背景 #4a0e16(酒红色)
- 模拟打字机风格输入框 .analog-input: 透明背景 + 底部 2px #333 下划线, focus 变 #d4af37
- 浮动标签 .analog-label: 金色 uppercase, focus 时 rotateX(-90deg) 翻转隐藏, 0.4s cubic-bezier(0.2,1,0.3,1)
- 4字段: 姓名/邮箱/日期/人数(1-8)
- 提交按钮: bg-#0a0a0a text-#d4af37 border-#d4af37, hover 反转, 500ms
- 打字音效: Web Audio API 20ms 衰减白噪声 gain:0.08
- GSAP: .form-element opacity+y:30→0, 0.6s stagger 0.1

### 6.6 Gallery 3D 黑胶唱片旋转画廊
- 100vh, 背景 #0a0a0a
- 6张图: The Crowd/The Bar/Vinyl/The Stage/The Keys/The Quartet
- 3D圆形布局: perspective:1000px, radius=min(w,h)*0.32
  - 360°均匀分布, GSAP.set x=sin(angle)*r, z=cos(angle)*r-r, rotateY=angle
  - 激活项: .decks__img opacity 0→1 + scale 0.5→1, 0.5s
- 交互: GSAP Observer wheel/touch, deltaY*0.002 增量旋转
- 黑胶唱片样式: border-radius:50%, repeating-radial-gradient(#1a1a1a 4px, #000 5px), border 8px #0a0a0a
- 滚动提示: 金色旋转 SVG 3s + "Scroll to browse"

### 6.7 Footer
- bg-#0a0a0a, border-t #222
- 三栏: 品牌(SVG Logo+"The Velvet Note"+营业时间) / Location(地址) / Follow(Instagram/Facebook/Twitter)
- 社交 white/50 hover 金色 300ms
- 版权 Courier Prime #e0e0e0/30

## 七、静态资源

### 图片 (/public/images/) — 10 张
- bar-interior.jpg (16:10 酒吧内部)
- musician-1/2/3.jpg (3:4 音乐家)
- gallery-1~6.jpg (圆形裁切画廊)

### 视频 (/public/videos/)
- hero-live.mp4 — 爵士酒吧实拍现场(金色霓虹+乐手特写,暗调,全屏循环)

## 八、Lenis 平滑滚动
- lerp:0.1, smoothWheel:true
- lenis.on('scroll', ScrollTrigger.update)
- gsap.ticker.add 驱动 RAF
- gsap.ticker.lagSmoothing(0)

## 九、关键动效参数

| 效果 | 参数 |
|------|------|
| 加载遮罩淡出 | opacity 1→0, 2s power2.out delay 0.5 |
| Hero标题入场 | opacity+y:40→0, 1.5s power3.out ('-=1') |
| Hero副标题入场 | opacity+y:20→0, 1s power3.out ('-=0.8') |
| Lineup排版第1行 | xPercent 0→-100, scrub |
| Lineup排版第2行 | yPercent 0→100, scrub |
| Lineup排版第3行 | xPercent 0→100, scrub |
| Lineup缩略图 | yPercent 0→20, scrub |
| 音乐家卡片入场 | opacity+y:60→0, 0.8s stagger 0.15, power3.out |
| Story图片 | x:-60→0, 1.2s power3.out |
| Story文字 | y:40→0, 0.8s stagger 0.2 |
| 预订表单元素 | opacity+y:30→0, 0.6s stagger 0.1 |
| Gallery激活项 | opacity+scale 0.5→1, 0.5s |
| 导航Logo hover | rotate-180, 500ms |
| 导航下划线 | width 0→100%, 0.3s ease |
| 按钮hover | bg/text反转, 500ms |