提示词
**逐像素复刻这个落地页。**
## 技术栈
React + Vite + TypeScript + Tailwind CSS。单页:先是 `<Hero />`,然后是 `<Marquee />`。不使用路由,不添加额外区域。Body:`font-family: 'Inter', sans-serif`、`background: #000`、`overflow-x: hidden`。`html { scroll-behavior: smooth }`。页面标题:`Beyond Hero`。
## 字体(确切 URL)
在 `<head>` 中加载:
1. **Bamboly Demo**(展示文字/标题/跑马灯):
```html
<link href="https://db.onlinewebfonts.com/c/58ee300970307a1cc399e6bebd7617ce?family=Bamboly+Demo" rel="stylesheet">
```
如有需要,可使用直接文件:
- `https://db.onlinewebfonts.com/t/58ee300970307a1cc399e6bebd7617ce.woff2`
- `https://db.onlinewebfonts.com/t/58ee300970307a1cc399e6bebd7617ce.woff`
- `https://db.onlinewebfonts.com/t/58ee300970307a1cc399e6bebd7617ce.ttf`
`font-family: "Bamboly Demo", sans-serif` · 标题辅助类使用 letter-spacing `0.02em`。
2. **Inter + Poppins**(Google Fonts):
```html
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet">
```
- Inter = 仅用作 body 默认字体
- Poppins 字重 **500** = 两侧文字列
## 调色板
| 角色 | 十六进制值 |
|------|-----|
| 首屏背景 | `#EC612C` |
| BEYOND 前层 | `#FFFFFF` |
| BEYOND 层(绿色) | `#90EE90` |
| BEYOND 层(橙色间隙,与背景相同) | `#EC612C` |
| BEYOND 后层(蓝色) | `#89CFF0` |
| 两侧文字 | `white`,通过文字列设置 `opacity`(基础类 `text-white/80`) |
| 跑马灯背景 | `#FFFFFF` |
| 跑马灯文字 | `#EC612C` |
| Body 页面背景 | `#000000` |
## 素材——人物图像(代码中使用的确切 URL)
```
https://images.higgs.ai/?default=1&output=webp&url=https%3A%2F%2Fd8j0ntlcm91z4.cloudfront.net%2Fuser_38xzZboKViGWJOttwIXH07lWA1P%2Fhf_20260801_104316_80b428ea-dc99-4399-afb3-8ccb7b34b2d0.png&w=1280&q=85
```
代理背后的原始 PNG 源文件:
```
https://d8j0ntlcm91z4.cloudfront.net/user_38xzZboKViGWJOttwIXH07lWA1P/hf_20260801_104316_80b428ea-dc99-4399-afb3-8ccb7b34b2d0.png
```
主体:一位年轻黑人男性的 3D 半身像,电光蓝辫子配银色珠饰,明亮的蓝色眼睛向上看,身穿霓虹绿色罗纹高领衫,背景透明/带橙色抠图。居中,胸部以上入镜。
*(本地存在未使用的文件 `/public/images/{0B435C65-A382-4437-BCE3-E275271AEB12}.png` 和 `{A01C6A0D-C4E6-496C-BC3D-D942405C2DBB}.png`——不要使用它们;线上页面使用上面的 Higgs URL。)*
---
## 区域 1——首屏
### 结构与布局
- `<section>` 高度为 **`120vh`**,`backgroundColor: #EC612C`,使用 `relative w-full overflow-hidden`。
- 两层:
**A. 人物(z-index 10)**——绝对定位 `inset-0`,`pointer-events-none`:
- `<img>` 使用 `absolute bottom-0 left-1/2 -translate-x-1/2`
- `w-auto max-w-none block`
- 内联样式:`height: 115%`、`maxHeight: 115%`、`minHeight: 80%`
- 位于标题前方(遮挡“BEYOND”的中央部分)。
**B. Sticky 文字叠层(z-index 5)**——`sticky top-0 h-screen w-full`:
### “BEYOND”堆叠标题
- 顶部居中:`absolute inset-0 flex items-start justify-center pt-[2vh] md:pt-[3vh]`
- 四个绝对堆叠的 `<h1>` 层(前层除外,其 `position: relative`),文字均为 `BEYOND`,使用相同容器,并设置 `leading-[0.85] tracking-tight select-none`
- 字体:`"Bamboly Demo", sans-serif`
- 字号:`clamp(7.5rem, 30vw, 28rem)`
- 堆叠顺序(从后向前渲染),每层使用 `transform: translateY(offset)`:
| 层 | 颜色 | 桌面端偏移 | 移动端(`<768px`)偏移 |
|-------|-------|----------------|---------------------------|
| 0(后层) | `#89CFF0` | `36px` | `18px` |
| 1 | `#EC612C` | `24px` | `12px` |
| 2 | `#90EE90` | `12px` | `6px` |
| 3(前层) | `#FFFFFF` | `0` | `0` |
视觉效果:白色“BEYOND”文字下方依次露出绿色 → 橙色间隙 → 淡蓝色条纹,形成复古堆叠下沉效果。
### 两侧文字列
- 数组(源字符串为小写;CSS 使用 `uppercase`):
- 左侧:`spark`、`imagine`、`evolve`、`render`
- 右侧:`blaze`、`genesis`、`purpose`、`ignite`
- 容器:`absolute inset-0 flex items-end justify-between px-[3vw] md:px-[6vw]`、`bottom: -8vh`、`pointer-events-none`
- 左侧文字列:`flex flex-col gap-1 md:gap-2`
- 右侧文字列:相同设置,再加 `items-end`,文字使用 `text-right`
- 每个单词:`"Poppins", sans-serif`、`fontWeight: 500`、`fontSize: clamp(1.6rem, 7vw, 9rem)`、`lineHeight: 1.1`、`text-white/80`、`select-none`、`transition: transform 0.05s linear`
### 滚动驱动动画(确切计算方式)
跟踪 120vh 区域内的滚动进度:
```
progress = clamp(0..1, -rect.top / (sectionHeight - window.innerHeight))
```
`scaleFactor = window.innerWidth < 768 ? 0.5 : 1`
**水平偏移**(progress 为 `0` = 开始;progress 为 `1` = 完全滚过 Sticky 范围):
```
leftOffset[i] = -(60 + i * 40) * scaleFactor * (1 - progress)
rightOffset[i] = +(60 + i * 40) * scaleFactor * (1 - progress)
```
桌面端各索引的初始偏移:±60、±100、±140、±180 px。移动端减半。用户滚动时,文字向内滑动至 `0`。
**不透明度**(左右两列):
```
opacity = 0.35 + progress * 0.65 // 0.35 → 1.0
```
监听器:`scroll`(passive)+ `resize`。在下方较高区域滚动时,Sticky 文字会在约 20vh 的滚动范围内保持固定。
---
## 区域 2——跑马灯
- 全宽白色条带:`w-full bg-white overflow-hidden py-6 md:py-8`
- 轨道类 `marquee-track`:`display flex`、`whitespace-nowrap`
- CSS 动画:
```css
@keyframes marquee-scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
.marquee-track {
animation: marquee-scroll 18s linear infinite;
}
```
- 确切字符串(中间圆点 = `u00B7` / `·`):
```
SPARK · RENDER · IGNITE · UNFOLD · GENESIS · EVOLVE · PURPOSE · BEYOND ·
```
- 将该字符串并排渲染 **4 个完全相同的副本**(`shrink-0`),使 `-50%` 实现无缝循环。
- 样式:`"Bamboly Demo", sans-serif`、`uppercase`、`color: #EC612C`、`fontSize: clamp(2.5rem, 6vw, 5rem)`、`lineHeight: 1`、`paddingRight: 0.25em`、`select-none`
---
## 构图/z-order 摘要
1. 橙色 `#EC612C` 首屏平面(120vh)
2. Sticky 白色/彩色文字排印(z5)——BEYOND 位于顶部,文字列位于左下角/右下角
3. 人物图像(z10)居中、底部锚定、高度 115%——与标题重叠,并位于两侧文字列之间
4. 首屏下方为白色跑马灯条带,Bamboly 橙色品牌词汇无限水平滚动
## 响应式断点
- 移动端 `<768px`:滚动偏移减半,BEYOND 层偏移减半,内边距更紧凑(`px-[3vw]`、`pt-[2vh]`,跑马灯 py 更小)。
- 桌面端:使用完整偏移、`px-[6vw]`、`pt-[3vh]`。
## 禁止添加
不要添加导航栏、卡片、CTA、统计数据、紫色渐变,不要将 Inter 用于首屏展示文字,也不要使用未采用的本地 PNG。严格匹配字体、颜色、素材 URL、滚动计算方式以及跑马灯字符串/时间设置。原文提示词(English)
**Recreate this exact landing page pixel-for-pixel.**
## Tech stack
React + Vite + TypeScript + Tailwind CSS. Single page: `<Hero />` then `<Marquee />`. No router, no extra sections. Body: `font-family: 'Inter', sans-serif`, `background: #000`, `overflow-x: hidden`. `html { scroll-behavior: smooth }`. Page title: `Beyond Hero`.
## Fonts (exact URLs)
Load in `<head>`:
1. **Bamboly Demo** (display / title / marquee):
```html
<link href="https://db.onlinewebfonts.com/c/58ee300970307a1cc399e6bebd7617ce?family=Bamboly+Demo" rel="stylesheet">
```
Direct files if needed:
- `https://db.onlinewebfonts.com/t/58ee300970307a1cc399e6bebd7617ce.woff2`
- `https://db.onlinewebfonts.com/t/58ee300970307a1cc399e6bebd7617ce.woff`
- `https://db.onlinewebfonts.com/t/58ee300970307a1cc399e6bebd7617ce.ttf`
`font-family: "Bamboly Demo", sans-serif` · letter-spacing `0.02em` on the heading helper class.
2. **Inter + Poppins** (Google Fonts):
```html
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet">
```
- Inter = body default only
- Poppins weight **500** = side word columns
## Color palette
| Role | Hex |
|------|-----|
| Hero background | `#EC612C` |
| BEYOND front layer | `#FFFFFF` |
| BEYOND layer (green) | `#90EE90` |
| BEYOND layer (orange gap, same as bg) | `#EC612C` |
| BEYOND back layer (blue) | `#89CFF0` |
| Side words | `white` at `opacity` via column (base class `text-white/80`) |
| Marquee background | `#FFFFFF` |
| Marquee text | `#EC612C` |
| Body page bg | `#000000` |
## Asset — character image (exact URL used in code)
```
https://images.higgs.ai/?default=1&output=webp&url=https%3A%2F%2Fd8j0ntlcm91z4.cloudfront.net%2Fuser_38xzZboKViGWJOttwIXH07lWA1P%2Fhf_20260801_104316_80b428ea-dc99-4399-afb3-8ccb7b34b2d0.png&w=1280&q=85
```
Original PNG source behind the proxy:
```
https://d8j0ntlcm91z4.cloudfront.net/user_38xzZboKViGWJOttwIXH07lWA1P/hf_20260801_104316_80b428ea-dc99-4399-afb3-8ccb7b34b2d0.png
```
Subject: 3D bust of a young Black man, electric-blue braids with silver beads, bright blue eyes looking upward, neon-green ribbed turtleneck, transparent/orange-cutout background. Centered, chest-up.
*(Local unused files exist at `/public/images/{0B435C65-A382-4437-BCE3-E275271AEB12}.png` and `{A01C6A0D-C4E6-496C-BC3D-D942405C2DBB}.png` — do not use them; the live page uses the Higgs URL above.)*
---
## SECTION 1 — Hero
### Structure & layout
- `<section>` height **`120vh`**, `backgroundColor: #EC612C`, `relative w-full overflow-hidden`.
- Two layers:
**A. Character (z-index 10)** — absolute `inset-0`, `pointer-events-none`:
- `<img>` `absolute bottom-0 left-1/2 -translate-x-1/2`
- `w-auto max-w-none block`
- inline style: `height: 115%`, `maxHeight: 115%`, `minHeight: 80%`
- Sits in front of the title (covers center of “BEYOND”).
**B. Sticky text overlay (z-index 5)** — `sticky top-0 h-screen w-full`:
### “BEYOND” stacked title
- Top-centered: `absolute inset-0 flex items-start justify-center pt-[2vh] md:pt-[3vh]`
- Four absolutely stacked `<h1>` layers (except front layer `position: relative`), all text `BEYOND`, same box, `leading-[0.85] tracking-tight select-none`
- Font: `"Bamboly Demo", sans-serif`
- Size: `clamp(7.5rem, 30vw, 28rem)`
- Stack order (render back→front), each with `transform: translateY(offset)`:
| Layer | Color | Desktop offset | Mobile (`<768px`) offset |
|-------|-------|----------------|---------------------------|
| 0 (back) | `#89CFF0` | `36px` | `18px` |
| 1 | `#EC612C` | `24px` | `12px` |
| 2 | `#90EE90` | `12px` | `6px` |
| 3 (front) | `#FFFFFF` | `0` | `0` |
Visual effect: white “BEYOND” with green → orange-gap → baby-blue stripes peeking downward under the letters (retro stacked drop).
### Side word columns
- Arrays (source lowercase; CSS `uppercase`):
- Left: `spark`, `imagine`, `evolve`, `render`
- Right: `blaze`, `genesis`, `purpose`, `ignite`
- Container: `absolute inset-0 flex items-end justify-between px-[3vw] md:px-[6vw]`, `bottom: -8vh`, `pointer-events-none`
- Left column: `flex flex-col gap-1 md:gap-2`
- Right column: same + `items-end`, words `text-right`
- Each word: `"Poppins", sans-serif`, `fontWeight: 500`, `fontSize: clamp(1.6rem, 7vw, 9rem)`, `lineHeight: 1.1`, `text-white/80`, `select-none`, `transition: transform 0.05s linear`
### Scroll-driven animation (exact math)
Track scroll progress on the 120vh section:
```
progress = clamp(0..1, -rect.top / (sectionHeight - window.innerHeight))
```
`scaleFactor = window.innerWidth < 768 ? 0.5 : 1`
**Horizontal offsets** (at progress `0` = start; progress `1` = fully scrolled through sticky range):
```
leftOffset[i] = -(60 + i * 40) * scaleFactor * (1 - progress)
rightOffset[i] = +(60 + i * 40) * scaleFactor * (1 - progress)
```
Desktop start offsets by index: ±60, ±100, ±140, ±180 px. Mobile half of that. As user scrolls, words slide inward to `0`.
**Opacity** (both columns):
```
opacity = 0.35 + progress * 0.65 // 0.35 → 1.0
```
Listeners: `scroll` (passive) + `resize`. Sticky text stays pinned for the ~20vh scroll range while the tall section scrolls underneath.
---
## SECTION 2 — Marquee
- Full-width white band: `w-full bg-white overflow-hidden py-6 md:py-8`
- Track class `marquee-track`: `display flex`, `whitespace-nowrap`
- CSS animation:
```css
@keyframes marquee-scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
.marquee-track {
animation: marquee-scroll 18s linear infinite;
}
```
- Exact string (middle dots = `u00B7` / `·`):
```
SPARK · RENDER · IGNITE · UNFOLD · GENESIS · EVOLVE · PURPOSE · BEYOND ·
```
- Render **4 identical copies** of that string side-by-side (`shrink-0`) so `-50%` loops seamlessly.
- Style: `"Bamboly Demo", sans-serif`, `uppercase`, `color: #EC612C`, `fontSize: clamp(2.5rem, 6vw, 5rem)`, `lineHeight: 1`, `paddingRight: 0.25em`, `select-none`
---
## Composition / z-order summary
1. Orange `#EC612C` hero plane (120vh)
2. Sticky white/colored typography (z5) — BEYOND top, word columns bottom-left/right
3. Character image (z10) centered, bottom-anchored, height 115% — overlaps title and sits between the word columns
4. White marquee strip below hero, infinite horizontal scroll of brand words in Bamboly orange
## Responsive breakpoints
- Mobile `<768px`: half scroll offsets, half BEYOND layer offsets, tighter padding (`px-[3vw]`, `pt-[2vh]`, smaller marquee py).
- Desktop: full offsets, `px-[6vw]`, `pt-[3vh]`.
## Do not add
No nav, cards, CTAs, stats, purple gradients, Inter for the hero display, or the unused local PNGs. Match fonts, colors, asset URL, scroll math, and marquee string/timing exactly as above.