chengzeyi commited on
Commit
18a37b7
·
1 Parent(s): 1c0ec4c

Rewrite as a model reference page; drop auto-redirect and ad copy

Browse files
Files changed (5) hide show
  1. README.md +12 -50
  2. index.html +118 -516
  3. script.js +0 -203
  4. style.css +400 -2029
  5. tabs.js +15 -0
README.md CHANGED
@@ -1,61 +1,23 @@
1
  ---
2
- title: Video Arena
3
- emoji: 🏆
4
  colorFrom: pink
5
  colorTo: red
6
  sdk: static
7
  pinned: false
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
11
 
12
- # AI Video Generation Model Arena
 
 
13
 
14
- A static webpage showcasing the latest AI video generation models, highlighting the leading advantages of ByteDance's Seedance model.
15
 
16
- ## 🌟 Highlights
 
17
 
18
- - **Comprehensive Comparison**: Compare leading AI models across cost, speed, quality, and stability
19
- - **Data Visualization**: Intuitive charts and animations demonstrating performance differences
20
- - **Responsive Design**: Perfect adaptation across all devices
21
- - **Marketing Optimized**: Designed for advertising campaigns, emphasizing Seedance's advantages
22
-
23
- ## 🚀 Key Features
24
-
25
- 1. **Overall Performance** - Seedance leads with 1352 ELO score
26
- 2. **Cost Efficiency** - 90% cost savings compared to competitors
27
- 3. **Generation Speed** - 2.5-second generation time, 2.5x faster
28
- 4. **Video Quality** - Supports 4K ultra-high-definition output
29
- 5. **Reliability** - 99.9% service availability
30
- 6. **User Satisfaction** - 98% positive user feedback
31
-
32
- ## 📊 Model Comparison
33
-
34
- - ByteDance Seedance 1.0 (ELO Score: 1352)
35
- - MiniMax Hailuo 02 (ELO Score: 1330)
36
- - Google Veo 3 Preview (ELO Score: 1243)
37
- - Kuaishou Kling 2.0 (ELO Score: 1195)
38
-
39
- ## 🛠 Tech Stack
40
-
41
- - HTML5
42
- - CSS3 (with animations and gradients)
43
- - JavaScript (native JS for interactions)
44
- - Responsive Design
45
- - Performance Optimization
46
-
47
- ## 📱 Usage
48
-
49
- 1. Open `index.html` directly in any browser
50
- 2. Or deploy to any static web hosting service
51
-
52
- ## 🎯 Target Audience
53
-
54
- - Video Content Creators
55
- - Marketing Professionals
56
- - Technical Developers
57
- - Business Decision Makers
58
-
59
- ## 💡 Design Philosophy
60
-
61
- The website features a modern design with gradient colors and smooth animations to engage users while maintaining professionalism. All data visualizations are carefully crafted to ensure clear and effective information delivery.
 
1
  ---
2
+ title: Seedance Gallery
3
+ emoji: 🎞️
4
  colorFrom: pink
5
  colorTo: red
6
  sdk: static
7
  pinned: false
8
+ short_description: Unedited sample output from ByteDance Seedance 1.0
9
  ---
10
 
11
+ # Seedance sample gallery
12
 
13
+ Unedited sample videos released by ByteDance alongside **Seedance 1.0**, grouped by the
14
+ capability each clip demonstrates: consistency across shot changes, motion stability,
15
+ prompted camera direction, and style range.
16
 
17
+ No re-grading or re-cutting has been applied the clips are the official release assets.
18
 
19
+ - Model reference: [wavespeed/bytedance-seedance](https://huggingface.co/spaces/wavespeed/bytedance-seedance)
20
+ - Hosted endpoints: [wavespeed.ai/collections/bytedance](https://wavespeed.ai/collections/bytedance)
21
 
22
+ Seedance is developed by ByteDance. This Space is maintained by WaveSpeed AI, which
23
+ provides hosted inference for the model.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
index.html CHANGED
@@ -1,525 +1,127 @@
1
- <!DOCTYPE html>
2
  <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Seedance by ByteDance - Next-Gen AI Video Creation</title>
7
- <link rel="stylesheet" href="style.css">
8
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
9
- </head>
10
- <body>
11
- <header>
12
- <nav class="nav-container">
13
- <div class="logo">
14
- <span class="logo-icon">🎬</span>
15
- <span class="logo-text">Seedance</span>
16
- </div>
17
- <div class="nav-links">
18
- <a href="#features">Features</a>
19
- <a href="#benchmarks">Benchmarks</a>
20
- <a href="#performance">Performance</a>
21
- <a href="#pricing">Pricing</a>
22
- <a href="https://wavespeed.ai/collections/bytedance" target="_blank" class="cta-button">Start Free</a>
23
- </div>
24
- </nav>
25
- </header>
26
 
27
- <section class="hero">
28
- <div class="container">
29
- <div class="hero-content">
30
- <h1 class="hero-title">
31
- <span class="brand-text">Transform Your Ideas Into Video</span>
32
- <span class="tagline">Professional AI Video Generation in Seconds</span>
33
- </h1>
34
- <p class="hero-subtitle">
35
- Rated #1 in video generation with industry-leading 1352 ELO score
36
- </p>
37
-
38
- <div class="hero-stats">
39
- <div class="stat">
40
- <div class="stat-number">1352</div>
41
- <div class="stat-label">Benchmark Score</div>
42
- </div>
43
- <div class="stat">
44
- <div class="stat-number">80%</div>
45
- <div class="stat-label">Lower Cost</div>
46
- </div>
47
- <div class="stat">
48
- <div class="stat-number">6x</div>
49
- <div class="stat-label">Faster</div>
50
- </div>
51
- </div>
52
 
53
- <div class="hero-cta">
54
- <a href="https://wavespeed.ai/collections/bytedance" target="_blank" class="primary-button">Start Free Trial</a>
55
- <a href="#benchmarks" class="secondary-button">View Comparison</a>
56
- </div>
57
-
58
- <div class="leaderboard-preview">
59
- <div class="leaderboard-item winner">
60
- <span class="rank">#1</span>
61
- <div class="model-badge">
62
- <div class="model-icon bytedance">BD</div>
63
- <span class="model-name">Seedance 1.0</span>
64
- </div>
65
- <span class="score">1352</span>
66
- </div>
67
- <div class="leaderboard-item">
68
- <span class="rank">#2</span>
69
- <div class="model-badge">
70
- <div class="model-icon minimax">MM</div>
71
- <span class="model-name">MiniMax Hailuo</span>
72
- </div>
73
- <span class="score">1330</span>
74
- </div>
75
- <div class="leaderboard-item">
76
- <span class="rank">#3</span>
77
- <div class="model-badge">
78
- <div class="model-icon google">G</div>
79
- <span class="model-name">Google Veo 3</span>
80
- </div>
81
- <span class="score">1243</span>
82
- </div>
83
- </div>
84
- </div>
85
  </div>
86
- </section>
87
-
88
- <section id="features" class="capabilities-showcase">
89
- <div class="container">
90
- <h2 class="section-title">Key Features</h2>
91
- <div class="capabilities-grid">
92
- <div class="capability-section">
93
- <h3 class="capability-title">
94
- <span class="capability-number">01</span>
95
- Smart Scene Transitions
96
- </h3>
97
- <p class="capability-description">
98
- First-ever AI that maintains perfect consistency across multiple shots and scenes
99
- </p>
100
- <div class="demo-videos-grid">
101
- <div class="demo-video-card">
102
- <video controls style="width: 100%; max-width: 400px; border-radius: 4px;" src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part1/video1.mp4"></video>
103
- </div>
104
- <div class="demo-video-card">
105
- <video controls style="width: 100%; max-width: 400px; border-radius: 4px;" src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part1/video2.mp4"></video>
106
- </div>
107
- </div>
108
- </div>
109
-
110
- <div class="capability-section">
111
- <h3 class="capability-title">
112
- <span class="capability-number">02</span>
113
- Natural Motion
114
- </h3>
115
- <p class="capability-description">
116
- Lifelike movements with industry-leading stability and realism
117
- </p>
118
- <div class="demo-videos-grid">
119
- <div class="demo-video-card">
120
- <video controls style="width: 100%; max-width: 400px; border-radius: 4px;" src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part1/video3.mp4"></video>
121
- </div>
122
- <div class="demo-video-card">
123
- <video controls style="width: 100%; max-width: 400px; border-radius: 4px;" src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part1/video4.mp4"></video>
124
- </div>
125
- </div>
126
- </div>
127
-
128
- <div class="capability-section">
129
- <h3 class="capability-title">
130
- <span class="capability-number">03</span>
131
- Intelligent Direction
132
- </h3>
133
- <p class="capability-description">
134
- Turn simple text prompts into professionally directed scenes
135
- </p>
136
- <div class="demo-videos-grid">
137
- <div class="demo-video-card enhanced">
138
- <div class="video-wrapper">
139
- <video controls style="width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: 12px;" src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part2/video1.mp4"></video>
140
- </div>
141
- <div class="video-caption">
142
- <h4>Skateboard Demonstration</h4>
143
- <p>Accurately captures motion trajectory and pose changes</p>
144
- </div>
145
- </div>
146
- <div class="demo-video-card enhanced">
147
- <div class="video-wrapper">
148
- <video controls style="width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: 12px;" src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part2/video2.mp4"></video>
149
- </div>
150
- <div class="video-caption">
151
- <h4>Drone Perspective</h4>
152
- <p>Perfectly restores complex scenes and camera movements</p>
153
- </div>
154
- </div>
155
- </div>
156
- </div>
157
-
158
- <div class="capability-section">
159
- <h3 class="capability-title">
160
- <span class="capability-number">04</span>
161
- Creative Styles
162
- </h3>
163
- <p class="capability-description">
164
- From cinematic realism to stylized animation - all in one tool
165
- </p>
166
- <div class="demo-videos-grid">
167
- <div class="demo-video-card enhanced">
168
- <div class="video-wrapper">
169
- <video controls style="width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: 12px;" src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part3/video1.mp4"></video>
170
- </div>
171
- <div class="video-caption">
172
- <h4>Photorealistic Style</h4>
173
- <p>Highly restores real scene details</p>
174
- </div>
175
- </div>
176
- <div class="demo-video-card enhanced">
177
- <div class="video-wrapper">
178
- <video controls style="width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: 12px;" src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part3/video2.mp4"></video>
179
- </div>
180
- <div class="video-caption">
181
- <h4>Artistic Style</h4>
182
- <p>Unique artistic effect interpretation</p>
183
- </div>
184
- </div>
185
- </div>
186
- </div>
187
- </div>
188
- </div>
189
- </section>
190
-
191
- <section id="benchmarks" class="benchmark-results">
192
- <div class="container">
193
- <h2 class="section-title">Benchmark Results</h2>
194
- <p class="section-subtitle">SeedVideoBench-1.0 Evaluation & Artificial Analysis Public Testing</p>
195
-
196
- <div class="benchmark-grid">
197
- <div class="benchmark-card main">
198
- <h3>SeedVideoBench-1.0 Evaluation</h3>
199
- <div class="benchmark-image">
200
- <div class="image-placeholder">
201
- <span class="placeholder-icon">📊</span>
202
- <p>T2V & I2V Multi-dimensional Evaluation Radar Chart</p>
203
- <small>Showing scores in various dimensions: instruction following, visual aesthetics, motion performance, etc.</small>
204
- </div>
205
- <div>
206
- <img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/intro/image1.png" alt="T2V Comparison Radar Chart" style="width: 100%; border-radius: 8px;">
207
- </div>
208
- </div>
209
- <div class="benchmark-highlights">
210
- <div class="highlight-item">
211
- <span class="metric-name">Overall Quality</span>
212
- <span class="metric-score">95.8</span>
213
- </div>
214
- <div class="highlight-item">
215
- <span class="metric-name">Temporal Coherence</span>
216
- <span class="metric-score">94.2</span>
217
- </div>
218
- <div class="highlight-item">
219
- <span class="metric-name">Visual Aesthetics</span>
220
- <span class="metric-score">96.5</span>
221
- </div>
222
- </div>
223
- </div>
224
-
225
- <div class="benchmark-card">
226
- <h3>Arena Rankings</h3>
227
- <div class="benchmark-image small">
228
- <div class="image-placeholder">
229
- <span class="placeholder-icon">🏆</span>
230
- <p>Arena ELO Rankings</p>
231
- </div>
232
- </div>
233
- <div class="ranking-info">
234
- <div class="rank-display">
235
- <span class="rank-number">#1</span>
236
- <span class="rank-label">Global Rank</span>
237
- </div>
238
- <p class="rank-description">Winner in 14,000+ real user comparisons</p>
239
- </div>
240
- </div>
241
-
242
- <div class="benchmark-card">
243
- <h3>Performance Comparison</h3>
244
- <div class="benchmark-image small">
245
- <div class="image-placeholder">
246
- <span class="placeholder-icon">📈</span>
247
- <p>Performance Bar Chart</p>
248
- </div>
249
- </div>
250
- <ul class="performance-list">
251
- <li><strong>6x</strong> faster than Hailuo</li>
252
- <li><strong>3.4x</strong> faster than Kling</li>
253
- <li><strong>1.8x</strong> faster than Veo3</li>
254
- </ul>
255
- </div>
256
- </div>
257
-
258
- <div class="benchmark-source">
259
- <p>Data Sources:
260
- <a href="https://console.volcengine.com/ark/region:ark+cn-beijing/model/detail?Id=doubao-seedance-1-0-pro" target="_blank">Volcano Engine Official Evaluation</a> |
261
- <a href="https://artificialanalysis.ai/text-to-video/arena?tab=leaderboard&input=image" target="_blank">Artificial Analysis</a>
262
- </p>
263
- </div>
264
- </div>
265
- </section>
266
-
267
- <section id="performance" class="performance-section">
268
- <div class="container">
269
- <h2 class="section-title">Performance Results</h2>
270
- <div class="charts-grid">
271
- <div class="chart-card">
272
- <h3>Generation Speed Comparison</h3>
273
- <div class="bar-chart">
274
- <div class="bar-item">
275
- <div class="bar-label">Seedance 1.0</div>
276
- <div class="bar-container">
277
- <div class="bar seedance" style="width: 100%">50 seconds</div>
278
- </div>
279
- </div>
280
- <div class="bar-item">
281
- <div class="bar-label">MiniMax Hailuo</div>
282
- <div class="bar-container">
283
- <div class="bar" style="width: 17%">300 seconds</div>
284
- </div>
285
- </div>
286
- <div class="bar-item">
287
- <div class="bar-label">Google Veo 3</div>
288
- <div class="bar-container">
289
- <div class="bar" style="width: 56%">90 seconds</div>
290
- </div>
291
- </div>
292
- <div class="bar-item">
293
- <div class="bar-label">Kling 2.0</div>
294
- <div class="bar-container">
295
- <div class="bar" style="width: 29%">170 seconds</div>
296
- </div>
297
- </div>
298
- </div>
299
- </div>
300
-
301
- <div class="chart-card">
302
- <h3>Cost-Benefit Analysis</h3>
303
- <div class="cost-comparison">
304
- <div class="cost-item winner">
305
- <h4>Seedance 1.0 Lite</h4>
306
- <div class="cost-value">$0.08</div>
307
- <div class="cost-label">per video</div>
308
- <div class="savings-badge">Save 80%</div>
309
- </div>
310
- <div class="cost-item">
311
- <h4>Competitor Average</h4>
312
- <div class="cost-value">$0.40</div>
313
- <div class="cost-label">per video</div>
314
- </div>
315
- </div>
316
- </div>
317
-
318
- <div class="chart-card">
319
- <h3>User Satisfaction</h3>
320
- <div class="satisfaction-scores">
321
- <div class="score-circle seedance">
322
- <div class="score-value">98%</div>
323
- <div class="score-label">Seedance</div>
324
- </div>
325
- <div class="score-circle">
326
- <div class="score-value">85%</div>
327
- <div class="score-label">Industry Average</div>
328
- </div>
329
- </div>
330
- </div>
331
- </div>
332
- </div>
333
- </section>
334
-
335
- <section id="pricing" class="pricing-section">
336
- <div class="container">
337
- <h2 class="section-title">Simple, Transparent Pricing</h2>
338
- <p class="section-subtitle">Start creating videos in minutes with our flexible pricing plans</p>
339
-
340
- <div class="pricing-comparison">
341
- <div class="price-table">
342
- <table>
343
- <thead>
344
- <tr>
345
- <th class="plan-header">Model</th>
346
- <th class="quality-header">Quality</th>
347
- <th class="price-header">Price</th>
348
- <th class="features-header">Features</th>
349
- <th class="speed-header">Speed</th>
350
- <th class="action-header">Action</th>
351
- </tr>
352
- </thead>
353
- <tbody>
354
- <tr class="highlight-row featured">
355
- <td class="plan-cell">
356
- <div class="model-name">
357
- <div class="model-icon bytedance">BD</div>
358
- <strong>Seedance Pro</strong>
359
- <span class="badge new">PREMIUM</span>
360
- </div>
361
- </td>
362
- <td class="quality-cell">HD 720p</td>
363
- <td class="price-cell">$0.30 per video</td>
364
- <td class="features-cell">Cinematic multi-shot coherence</td>
365
- <td class="speed-cell">50 seconds</td>
366
- <td class="action-cell"><a href="https://wavespeed.ai/collections/bytedance" target="_blank" class="try-button">Try Free</a></td>
367
- </tr>
368
-
369
- <tr class="highlight-row featured">
370
- <td class="plan-cell">
371
- <div class="model-name">
372
- <div class="model-icon bytedance">BD</div>
373
- <strong>Seedance Lite</strong>
374
- <span class="badge best-value">BEST VALUE</span>
375
- </div>
376
- </td>
377
- <td class="quality-cell">SD 480p</td>
378
- <td class="price-cell">$0.08 per video</td>
379
- <td class="features-cell">Great quality at lowest cost</td>
380
- <td class="speed-cell">20 seconds</td>
381
- <td class="action-cell"><a href="https://wavespeed.ai/collections/bytedance" target="_blank" class="try-button">Try Free</a></td>
382
- </tr>
383
- <tr class="competitor-row">
384
- <td class="plan-cell">
385
- <div class="model-name">
386
- <div class="model-icon minimax">MM</div>
387
- <strong>MiniMax Hailuo</strong>
388
- </div>
389
- </td>
390
- <td class="quality-cell">HD 720p</td>
391
- <td class="price-cell">$0.35 per video</td>
392
- <td class="features-cell">6-second video generation</td>
393
- <td class="speed-cell">300 seconds</td>
394
- <td class="action-cell"><a href="https://wavespeed.ai" target="_blank" class="try-button secondary">Compare</a></td>
395
- </tr>
396
- <tr class="competitor-row">
397
- <td class="plan-cell">
398
- <div class="model-name">
399
- <div class="model-icon google">G</div>
400
- <strong>Google Veo3</strong>
401
- </div>
402
- </td>
403
- <td class="quality-cell">HD 1080p</td>
404
- <td class="price-cell">$8.00 per video</td>
405
- <td class="features-cell">Includes audio generation</td>
406
- <td class="speed-cell">90 seconds</td>
407
- <td class="action-cell"><a href="https://wavespeed.ai" target="_blank" class="try-button secondary">Compare</a></td>
408
- </tr>
409
- <tr class="competitor-row">
410
- <td class="plan-cell">
411
- <div class="model-name">
412
- <div class="model-icon kuaishou">K</div>
413
- <strong>Kling 2.1 Pro</strong>
414
- </div>
415
- </td>
416
- <td class="quality-cell">HD 1080p</td>
417
- <td class="price-cell">$0.45 per video</td>
418
- <td class="features-cell">Professional visual effects</td>
419
- <td class="speed-cell">170 seconds</td>
420
- <td class="action-cell"><a href="https://wavespeed.ai" target="_blank" class="try-button secondary">Compare</a></td>
421
- </tr>
422
-
423
- </tbody>
424
- </table>
425
- </div>
426
-
427
- <div class="model-comparison-note">
428
- <p class="comparison-text" style="color: #333; font-weight: bold; margin: 8px 0;">* All comparisons based on official documentation and Artificial Analysis Arena benchmark data</p>
429
- <p class="comparison-text" style="color: #333; font-weight: bold; margin: 8px 0;">* Prices and features may vary based on region and subscription type</p>
430
- </div>
431
 
432
- <div class="price-highlights">
433
- <div class="highlight-card">
434
- <div class="highlight-icon">💰</div>
435
- <h3>Highly Competitive Pricing</h3>
436
- <p>Starting at just $0.08 per video - up to 80% cheaper than competitors</p>
437
- </div>
438
- <div class="highlight-card">
439
- <div class="highlight-icon">🚀</div>
440
- <h3>Start Free</h3>
441
- <p>Get 10 free credits instantly - no credit card required</p>
442
- </div>
443
- <div class="highlight-card">
444
- <div class="highlight-icon">🎯</div>
445
- <h3>Pay As You Go</h3>
446
- <p>No subscriptions or commitments - only pay for what you use</p>
447
- </div>
448
- </div>
449
- </div>
450
- </div>
451
- </section>
452
 
453
- <section class="use-cases-section">
454
- <div class="container">
455
- <h2 class="section-title">Wide-ranging Applications</h2>
456
- <p class="section-subtitle">Seedance is powering video generation across industries</p>
457
-
458
- <div class="use-cases-grid">
459
- <div class="use-case-card">
460
- <div class="use-case-icon">🎬</div>
461
- <h3>Film Production</h3>
462
- <p>Quickly generate concept videos and preview clips, significantly reducing pre-production costs</p>
463
- <a href="https://wavespeed.ai" target="_blank" class="learn-more">Learn More </a>
464
- </div>
465
-
466
- <div class="use-case-card">
467
- <div class="use-case-icon">📱</div>
468
- <h3>Social Media</h3>
469
- <p>Provide unlimited creative possibilities for content creators, boosting content production efficiency</p>
470
- <a href="https://wavespeed.ai" target="_blank" class="learn-more">Learn More →</a>
471
- </div>
472
-
473
- <div class="use-case-card">
474
- <div class="use-case-icon">🛍️</div>
475
- <h3>E-commerce Marketing</h3>
476
- <p>Automatically generate product showcase videos to improve conversion rates</p>
477
- <a href="https://wavespeed.ai" target="_blank" class="learn-more">Learn More </a>
478
- </div>
479
-
480
- <div class="use-case-card">
481
- <div class="use-case-icon">🎓</div>
482
- <h3>Education & Training</h3>
483
- <p>Transform text-based materials into engaging video courses, enhancing learning experiences</p>
484
- <a href="https://wavespeed.ai" target="_blank" class="learn-more">Learn More →</a>
485
- </div>
486
-
487
- <div class="use-case-card">
488
- <div class="use-case-icon">🎮</div>
489
- <h3>Game Development</h3>
490
- <p>Rapidly generate game CGI and cutscenes, accelerating game development process</p>
491
- <a href="https://wavespeed.ai" target="_blank" class="learn-more">Learn More </a>
492
- </div>
493
-
494
- <div class="use-case-card">
495
- <div class="use-case-icon">📢</div>
496
- <h3>Advertising</h3>
497
- <p>Batch generate creative ad videos, quickly test different creative directions</p>
498
- <a href="https://wavespeed.ai" target="_blank" class="learn-more">Learn More →</a>
499
- </div>
500
- </div>
501
-
502
- <div class="case-study-cta">
503
- <h3>Want to see more success stories?</h3>
504
- <p>Explore our complete case study library to see how Seedance is revolutionizing video creation across industries</p>
505
- <a href="https://wavespeed.ai" target="_blank" class="primary-button">View All Case Studies</a>
506
- </div>
507
- </div>
508
- </section>
 
 
 
 
 
 
 
 
 
509
 
510
- <section class="cta-section">
511
- <div class="container">
512
- <div class="cta-content">
513
- <h2>Ready to Create Amazing Videos?</h2>
514
- <div class="cta-buttons">
515
- <a href="https://wavespeed.ai/collections/bytedance" target="_blank" class="primary-button large">Start Free Trial</a>
516
- <a href="https://wavespeed.ai" target="_blank" class="secondary-button large">Read Documentation</a>
517
- </div>
518
- <p class="cta-note">✓ Free Credits Included &nbsp; ✓ No Credit Card Required &nbsp; ✓ Instant Access</p>
519
- </div>
520
- </div>
521
- </section>
522
 
523
- <script src="script.js"></script>
524
- </body>
525
  </html>
 
1
+ <!doctype html>
2
  <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Seedance 1.0 sample output gallery</title>
7
+ <meta name="description" content="Unedited sample videos from ByteDance&#x27;s Seedance 1.0, grouped by the capability each clip is meant to show." />
8
+ <link rel="canonical" href="https://huggingface.co/spaces/wavespeed/seedance" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
+ <meta property="og:type" content="website" />
11
+ <meta property="og:title" content="Seedance 1.0 — sample output gallery" />
12
+ <meta property="og:description" content="Unedited sample videos from ByteDance&#x27;s Seedance 1.0, grouped by the capability each clip is meant to show." />
13
+ <meta property="og:url" content="https://huggingface.co/spaces/wavespeed/seedance" />
14
+ <meta name="twitter:card" content="summary_large_image" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
+ <link rel="stylesheet" href="style.css" />
17
+ </head>
18
+ <body>
19
+ <header class="site-header">
20
+ <div class="wrap">
21
+ <a class="brand" href="https://wavespeed.ai" target="_blank" rel="noopener">
22
+ <span class="brand-mark" aria-hidden="true"></span>
23
+ <span>WaveSpeed AI</span>
24
+ </a>
25
+ <nav class="header-nav">
26
+ <a class="jump opt" href="#shots">Shot changes</a>
27
+ <a class="jump opt" href="#motion">Motion</a>
28
+ <a class="jump opt" href="#direction">Direction</a>
29
+ <a class="jump opt" href="#style">Style</a>
30
+ <a class="jump" href="#run">Run it</a>
31
+ <a href="https://wavespeed.ai/collections/bytedance" target="_blank" rel="noopener">wavespeed.ai &#8599;</a>
32
+ </nav>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  </div>
34
+ </header>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
+ <main class="wrap">
37
+ <div class="hero">
38
+ <p class="eyebrow">ByteDance · sample gallery</p>
39
+ <h1>Seedance in motion</h1>
40
+ <p class="lede">Sample clips released by ByteDance alongside Seedance 1.0, grouped by what each one is meant to demonstrate. Nothing here is re-graded or re-cut this is raw model output, so you can judge it yourself.</p>
41
+ <ul class="meta">
42
+ <li><b>Developer</b> ByteDance</li>
43
+ <li><b>Source</b> official release assets</li>
44
+ <li><b>Post-processing</b> none</li>
45
+ </ul>
46
+ </div>
 
 
 
 
 
 
 
 
 
47
 
48
+ <section id="shots">
49
+ <h2>Consistency across shot changes</h2>
50
+ <p class="section-note">Cutting between shots is where video models usually lose the subject. These two clips each contain more than one camera setup.</p>
51
+ <div class="figure-grid">
52
+ <figure>
53
+ <video src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part1/video1.mp4" controls preload="metadata"></video>
54
+ <figcaption>Multiple setups within one generation.</figcaption>
55
+ </figure>
56
+ <figure>
57
+ <video src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part1/video2.mp4" controls preload="metadata"></video>
58
+ <figcaption>Subject appearance held across the cut.</figcaption>
59
+ </figure>
60
+ </div>
61
+ </section>
62
+ <section id="motion">
63
+ <h2>Motion stability</h2>
64
+ <p class="section-note">Continuous movement, where temporal flicker and limb drift usually appear.</p>
65
+ <div class="figure-grid">
66
+ <figure>
67
+ <video src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part1/video3.mp4" controls preload="metadata"></video>
68
+ <figcaption>Sustained movement without frame-to-frame drift.</figcaption>
69
+ </figure>
70
+ <figure>
71
+ <video src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part1/video4.mp4" controls preload="metadata"></video>
72
+ <figcaption>Contact and weight transfer across the clip.</figcaption>
73
+ </figure>
74
+ </div>
75
+ </section>
76
+ <section id="direction">
77
+ <h2>Camera direction from the prompt</h2>
78
+ <p class="section-note">Both clips were driven by prompts that specify camera behaviour, not just subject.</p>
79
+ <div class="figure-grid">
80
+ <figure>
81
+ <video src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part2/video1.mp4" controls preload="metadata"></video>
82
+ <figcaption><b>Skateboarding.</b> Trajectory and pose tracked through the trick.</figcaption>
83
+ </figure>
84
+ <figure>
85
+ <video src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part2/video2.mp4" controls preload="metadata"></video>
86
+ <figcaption><b>Aerial.</b> Sustained drone move over a complex scene.</figcaption>
87
+ </figure>
88
+ </div>
89
+ </section>
90
+ <section id="style">
91
+ <h2>Style range</h2>
92
+ <p class="section-note">Same model, two ends of the stylistic range.</p>
93
+ <div class="figure-grid">
94
+ <figure>
95
+ <video src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part3/video1.mp4" controls preload="metadata"></video>
96
+ <figcaption><b>Photographic.</b> Scene detail and lighting held to a realistic look.</figcaption>
97
+ </figure>
98
+ <figure>
99
+ <video src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_sth/ljhwZthlaukjlkulzlp/ark/model_introduction/seedance/pro/part3/video2.mp4" controls preload="metadata"></video>
100
+ <figcaption><b>Stylised.</b> Non-photographic rendering from the same checkpoint.</figcaption>
101
+ </figure>
102
+ </div>
103
+ </section>
104
+ <section id="run">
105
+ <h2>Run it</h2>
106
+ <p class="section-note">Seedance is served as a hosted endpoint — see the <a href="https://huggingface.co/spaces/wavespeed/bytedance-seedance">model reference</a> for the full variant list, request format and code samples.</p>
107
+ <div class="btn-row">
108
+ <a class="btn" href="https://wavespeed.ai/collections/bytedance" target="_blank" rel="noopener">Open Seedance on WaveSpeed</a>
109
+ <a class="btn secondary" href="https://huggingface.co/spaces/wavespeed/bytedance-seedance" target="_blank" rel="noopener">Model reference</a>
110
+ </div>
111
+ </section>
112
+ </main>
113
 
114
+ <footer class="site-footer">
115
+ <div class="wrap">
116
+ <p>This page is a model reference maintained by WaveSpeed AI. The model itself is developed and released by its respective authors; trademarks belong to them. WaveSpeed AI provides hosted inference for it.</p>
117
+ <div class="footer-links">
118
+ <a href="https://wavespeed.ai" target="_blank" rel="noopener">WaveSpeed AI</a>
119
+ <a href="https://wavespeed.ai/docs" target="_blank" rel="noopener">Docs</a>
120
+ <a href="https://huggingface.co/wavespeed" target="_blank" rel="noopener">Hugging Face</a>
121
+ </div>
122
+ </div>
123
+ </footer>
 
 
124
 
125
+ <script src="tabs.js"></script>
126
+ </body>
127
  </html>
script.js DELETED
@@ -1,203 +0,0 @@
1
- // 平滑滚动效果
2
- document.querySelectorAll('a[href^="#"]').forEach(anchor => {
3
- anchor.addEventListener('click', function (e) {
4
- e.preventDefault();
5
- const target = document.querySelector(this.getAttribute('href'));
6
- if (target) {
7
- target.scrollIntoView({
8
- behavior: 'smooth',
9
- block: 'start'
10
- });
11
- }
12
- });
13
- });
14
-
15
- // 数字动画效果
16
- function animateValue(element, start, end, duration) {
17
- let startTimestamp = null;
18
- const step = (timestamp) => {
19
- if (!startTimestamp) startTimestamp = timestamp;
20
- const progress = Math.min((timestamp - startTimestamp) / duration, 1);
21
- const value = Math.floor(progress * (end - start) + start);
22
- element.textContent = value;
23
- if (progress < 1) {
24
- window.requestAnimationFrame(step);
25
- }
26
- };
27
- window.requestAnimationFrame(step);
28
- }
29
-
30
- // 页面加载时触发数字动画
31
- window.addEventListener('load', () => {
32
- const statNumbers = document.querySelectorAll('.stat-number');
33
- statNumbers.forEach(stat => {
34
- const text = stat.textContent;
35
- if (text.includes('%')) {
36
- const value = parseInt(text);
37
- stat.textContent = '0%';
38
- animateValue(stat, 0, value, 2000);
39
- setTimeout(() => {
40
- stat.textContent = value + '%';
41
- }, 2000);
42
- } else if (text.includes('x')) {
43
- stat.textContent = '0x';
44
- setTimeout(() => {
45
- stat.textContent = text;
46
- }, 1500);
47
- } else {
48
- const value = parseInt(text);
49
- animateValue(stat, 0, value, 2000);
50
- }
51
- });
52
- });
53
-
54
- // 滚动时的淡入效果
55
- const observerOptions = {
56
- threshold: 0.1,
57
- rootMargin: '0px 0px -100px 0px'
58
- };
59
-
60
- const observer = new IntersectionObserver((entries) => {
61
- entries.forEach(entry => {
62
- if (entry.isIntersecting) {
63
- entry.target.classList.add('visible');
64
- }
65
- });
66
- }, observerOptions);
67
-
68
- // 监听需要动画的元素
69
- document.querySelectorAll('.chart-card, .pricing-card, .testimonial-card').forEach(el => {
70
- el.style.opacity = '0';
71
- el.style.transform = 'translateY(30px)';
72
- observer.observe(el);
73
- });
74
-
75
- // 添加visible类的样式
76
- const style = document.createElement('style');
77
- style.textContent = `
78
- .visible {
79
- opacity: 1 !important;
80
- transform: translateY(0) !important;
81
- transition: opacity 0.6s ease, transform 0.6s ease;
82
- }
83
- `;
84
- document.head.appendChild(style);
85
-
86
- // 导航栏滚动效果
87
- let lastScroll = 0;
88
- const header = document.querySelector('header');
89
-
90
- window.addEventListener('scroll', () => {
91
- const currentScroll = window.pageYOffset;
92
-
93
- if (currentScroll > 100) {
94
- header.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)';
95
- } else {
96
- header.style.boxShadow = 'var(--shadow-sm)';
97
- }
98
-
99
- lastScroll = currentScroll;
100
- });
101
-
102
- // 按钮点击效果
103
- document.querySelectorAll('.primary-button, .secondary-button, .pricing-button').forEach(button => {
104
- button.addEventListener('click', function(e) {
105
- // 创建涟漪效果
106
- const ripple = document.createElement('span');
107
- const rect = this.getBoundingClientRect();
108
- const size = Math.max(rect.width, rect.height);
109
- const x = e.clientX - rect.left - size / 2;
110
- const y = e.clientY - rect.top - size / 2;
111
-
112
- ripple.style.width = ripple.style.height = size + 'px';
113
- ripple.style.left = x + 'px';
114
- ripple.style.top = y + 'px';
115
- ripple.classList.add('ripple');
116
-
117
- this.appendChild(ripple);
118
-
119
- setTimeout(() => {
120
- ripple.remove();
121
- }, 600);
122
- });
123
- });
124
-
125
- // 添加涟漪效果样式
126
- const rippleStyle = document.createElement('style');
127
- rippleStyle.textContent = `
128
- .primary-button, .secondary-button, .pricing-button {
129
- position: relative;
130
- overflow: hidden;
131
- }
132
-
133
- .ripple {
134
- position: absolute;
135
- border-radius: 50%;
136
- background: rgba(255, 255, 255, 0.5);
137
- transform: scale(0);
138
- animation: ripple-animation 0.6s ease-out;
139
- }
140
-
141
- @keyframes ripple-animation {
142
- to {
143
- transform: scale(4);
144
- opacity: 0;
145
- }
146
- }
147
- `;
148
- document.head.appendChild(rippleStyle);
149
-
150
- // 表格行悬停效果
151
- document.querySelectorAll('tbody tr').forEach(row => {
152
- row.addEventListener('mouseenter', function() {
153
- this.style.transform = 'scale(1.02)';
154
- this.style.transition = 'transform 0.3s ease';
155
- });
156
-
157
- row.addEventListener('mouseleave', function() {
158
- this.style.transform = 'scale(1)';
159
- });
160
- });
161
-
162
- // 加载进度条动画
163
- window.addEventListener('load', () => {
164
- const bars = document.querySelectorAll('.bar');
165
- bars.forEach(bar => {
166
- const width = bar.style.width;
167
- bar.style.width = '0';
168
- setTimeout(() => {
169
- bar.style.width = width;
170
- }, 500);
171
- });
172
- });
173
-
174
- // 演示画廊交互
175
- const galleryItems = document.querySelectorAll('.gallery-item');
176
- const prevBtn = document.querySelector('.demo-nav.prev');
177
- const nextBtn = document.querySelector('.demo-nav.next');
178
- let currentIndex = 0;
179
-
180
- function updateGallery(index) {
181
- galleryItems.forEach((item, i) => {
182
- item.classList.toggle('active', i === index);
183
- });
184
- }
185
-
186
- if (prevBtn && nextBtn) {
187
- prevBtn.addEventListener('click', () => {
188
- currentIndex = (currentIndex - 1 + galleryItems.length) % galleryItems.length;
189
- updateGallery(currentIndex);
190
- });
191
-
192
- nextBtn.addEventListener('click', () => {
193
- currentIndex = (currentIndex + 1) % galleryItems.length;
194
- updateGallery(currentIndex);
195
- });
196
- }
197
-
198
- galleryItems.forEach((item, index) => {
199
- item.addEventListener('click', () => {
200
- currentIndex = index;
201
- updateGallery(currentIndex);
202
- });
203
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
style.css CHANGED
@@ -1,2204 +1,575 @@
1
- /* 全局样式重置和变量定义 - WaveSpeed.ai 风格 */
2
- * {
3
- margin: 0;
4
- padding: 0;
5
- box-sizing: border-box;
6
- }
7
 
8
  :root {
9
- /* 主背景色 - 深色主题 */
10
- --primary-bg: #0a0a0a;
11
- --secondary-bg: #111111;
12
- --card-bg: #161616;
13
- --card-hover-bg: #1a1a1a;
14
- --border-color: #27272a;
15
-
16
- /* 品牌色 - 紫色调 */
17
- --primary-color: #8b5cf6;
18
- --secondary-color: #a78bfa;
19
- --accent-color: #c4b5fd;
20
- --success-color: #10b981;
21
- --warning-color: #f59e0b;
22
- --danger-color: #ef4444;
23
-
24
- /* 旧色彩兼容 */
25
- --dark-color: #1a1a1a;
26
- --light-color: #f5f5f5;
27
-
28
- /* 文字颜色 */
29
- --text-color: #ffffff;
30
- --text-primary: #ffffff;
31
- --text-secondary: #a1a1aa;
32
- --text-muted: #71717a;
33
-
34
- /* 渐变 */
35
- --gradient-primary: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
36
- --gradient-success: linear-gradient(135deg, #10b981 0%, #059669 100%);
37
- --gradient-danger: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
38
- --gradient-dark: linear-gradient(135deg, #161616 0%, #0a0a0a 100%);
39
-
40
- /* 阴影 - 深色主题 */
41
- --shadow-sm: 0 2px 4px rgba(0,0,0,0.5);
42
- --shadow-md: 0 4px 6px rgba(0,0,0,0.5);
43
- --shadow-lg: 0 10px 15px rgba(0,0,0,0.5);
44
- --shadow-xl: 0 20px 25px rgba(0,0,0,0.5);
45
- --shadow-glow: 0 0 20px rgba(139, 92, 246, 0.3);
46
- }
47
-
48
- body {
49
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
50
- line-height: 1.6;
51
- color: var(--text-primary);
52
- background-color: var(--primary-bg);
53
- overflow-x: hidden;
54
- }
55
-
56
- .container {
57
- max-width: 1200px;
58
- margin: 0 auto;
59
- padding: 0 20px;
60
- }
61
-
62
- /* 导航栏样式 */
63
- header {
64
- background: rgba(10, 10, 10, 0.8);
65
- backdrop-filter: blur(20px);
66
- border-bottom: 1px solid var(--border-color);
67
- position: fixed;
68
- top: 0;
69
- width: 100%;
70
- z-index: 1000;
71
- }
72
-
73
- .nav-container {
74
- display: flex;
75
- justify-content: space-between;
76
- align-items: center;
77
- padding: 1rem 2rem;
78
- max-width: 1200px;
79
- margin: 0 auto;
80
  }
81
 
82
- .logo {
83
- display: flex;
84
- align-items: center;
85
- font-size: 1.5rem;
86
- font-weight: 700;
87
- color: var(--text-primary);
88
  }
89
 
90
- .logo-icon {
91
- font-size: 2rem;
92
- margin-right: 0.5rem;
93
  }
94
 
95
- .nav-links {
96
- display: flex;
97
- align-items: center;
98
- gap: 2rem;
 
 
 
 
99
  }
100
 
101
- .nav-links a {
 
102
  text-decoration: none;
103
- color: var(--text-color);
104
- font-weight: 500;
105
- transition: color 0.3s ease;
106
- }
107
-
108
- .nav-links a:hover {
109
- color: var(--primary-color);
110
- }
111
-
112
- .cta-button {
113
- background: var(--gradient-primary);
114
- color: white !important;
115
- padding: 0.75rem 1.5rem;
116
- border-radius: 50px;
117
- transition: transform 0.3s ease, box-shadow 0.3s ease;
118
- text-shadow: 0 1px 2px rgba(0,0,0,0.15);
119
- }
120
-
121
- .cta-button:hover {
122
- transform: translateY(-2px);
123
- box-shadow: var(--shadow-md);
124
  }
125
 
126
- /* 英雄区域 */
127
- .hero {
128
- margin-top: 80px;
129
- padding: 6rem 2rem;
130
- background: var(--primary-bg);
131
- color: white;
132
- position: relative;
133
- overflow: hidden;
134
  }
135
 
136
- .hero::before {
137
- content: '';
138
- position: absolute;
139
- top: -50%;
140
- left: -50%;
141
- width: 200%;
142
- height: 200%;
143
- background: radial-gradient(circle at center, rgba(139, 92, 246, 0.1) 0%, transparent 70%);
144
- animation: pulse 20s ease-in-out infinite;
145
  }
146
 
147
- @keyframes pulse {
148
- 0%, 100% { transform: scale(1) rotate(0deg); }
149
- 50% { transform: scale(1.1) rotate(180deg); }
 
150
  }
151
 
152
- .hero-content {
153
- max-width: 1000px;
154
  margin: 0 auto;
155
- text-align: center;
156
- position: relative;
157
- z-index: 1;
158
- }
159
-
160
- .hero-title {
161
- font-size: 3rem;
162
- font-weight: 800;
163
- margin-bottom: 1.5rem;
164
- line-height: 1.3;
165
- }
166
-
167
- .brand-text {
168
- display: block;
169
- font-size: 3.5rem;
170
- background: var(--gradient-primary);
171
- -webkit-background-clip: text;
172
- -webkit-text-fill-color: transparent;
173
- background-clip: text;
174
- margin-bottom: 0.5rem;
175
- }
176
-
177
- .tagline {
178
- display: block;
179
- font-size: 2.5rem;
180
- color: var(--text-primary);
181
  }
182
 
183
- .highlight {
184
- background: var(--gradient-primary);
185
- -webkit-background-clip: text;
186
- -webkit-text-fill-color: transparent;
187
- background-clip: text;
188
- }
189
 
190
- .hero-subtitle {
191
- font-size: 1.25rem;
192
- margin-bottom: 3rem;
193
- color: var(--text-secondary);
 
 
194
  }
195
 
196
- .hero-stats {
197
  display: flex;
198
- gap: 4rem;
199
- margin-bottom: 3rem;
200
- justify-content: center;
201
- }
202
-
203
- .stat {
204
- text-align: center;
205
- }
206
-
207
- .stat-number {
208
- font-size: 3rem;
209
- font-weight: 800;
210
- background: var(--gradient-primary);
211
- -webkit-background-clip: text;
212
- -webkit-text-fill-color: transparent;
213
- background-clip: text;
214
- }
215
-
216
- .stat-label {
217
- font-size: 0.875rem;
218
- color: var(--text-secondary);
219
  }
220
 
221
- .hero-cta {
222
  display: flex;
223
- gap: 1rem;
224
- justify-content: center;
225
- flex-wrap: wrap;
 
 
 
226
  }
227
 
228
- .primary-button, .secondary-button {
229
- padding: 1rem 2rem;
230
- border-radius: 8px;
231
- font-weight: 600;
232
- border: none;
233
- cursor: pointer;
234
- transition: all 0.3s ease;
235
- font-size: 1rem;
236
- display: inline-block;
237
- text-decoration: none;
238
- text-align: center;
239
  }
240
 
241
- .primary-button {
242
- background: var(--gradient-primary);
243
- color: white;
 
 
 
244
  position: relative;
245
- overflow: hidden;
246
- text-shadow: 0 1px 2px rgba(0,0,0,0.15);
247
  }
248
 
249
- .primary-button::before {
250
- content: '';
251
  position: absolute;
252
- top: 0;
253
- left: -100%;
254
- width: 100%;
255
- height: 100%;
256
- background: rgba(255, 255, 255, 0.2);
257
- transition: left 0.3s ease;
258
  }
259
 
260
- .primary-button:hover::before {
261
- left: 100%;
 
 
 
262
  }
263
 
264
- .primary-button:hover {
265
- transform: translateY(-2px);
266
- box-shadow: var(--shadow-glow);
267
  }
268
 
269
- .secondary-button {
270
- background: transparent;
271
- color: var(--text-primary);
272
- border: 2px solid var(--primary-color);
273
  }
274
 
275
- .secondary-button:hover {
276
- background: var(--primary-color);
277
- color: white;
278
  }
279
 
280
- .hero-visual {
281
- position: absolute;
282
- right: 2rem;
283
- top: 50%;
284
- transform: translateY(-50%);
285
- display: none; /* 暂时隐藏右侧的预览卡片 */
286
  }
287
 
288
- /* 移动端显示 */
289
- @media (min-width: 1200px) {
290
- .hero-visual {
291
- display: block;
 
292
  }
293
  }
294
 
295
- /* 排行榜预览 */
296
- .leaderboard-preview {
297
- display: flex;
298
- gap: 1.5rem;
299
- justify-content: center;
300
- margin-top: 3rem;
301
- flex-wrap: wrap;
302
- }
303
 
304
- .leaderboard-item {
305
- background: var(--card-bg);
306
- border: 1px solid var(--border-color);
307
- border-radius: 16px;
308
- padding: 1.5rem 2rem;
309
- min-width: 250px;
310
- display: flex;
311
- align-items: center;
312
- gap: 1rem;
313
- transition: all 0.3s ease;
314
  }
315
 
316
- .leaderboard-item:hover {
317
- transform: translateY(-5px);
318
- border-color: var(--primary-color);
319
- box-shadow: var(--shadow-glow);
 
 
 
320
  }
321
 
322
- .leaderboard-item.winner {
323
- background: linear-gradient(135deg, rgba(139, 92, 246, 0.1) 0%, rgba(139, 92, 246, 0.05) 100%);
324
- border-color: var(--primary-color);
 
 
 
325
  }
326
 
327
- .leaderboard-item .rank {
328
- font-size: 1.5rem;
329
- font-weight: 800;
330
- color: var(--text-muted);
331
- min-width: 40px;
332
  }
333
 
334
- .leaderboard-item.winner .rank {
335
- background: var(--gradient-primary);
336
- -webkit-background-clip: text;
337
- -webkit-text-fill-color: transparent;
338
- background-clip: text;
 
 
339
  }
340
 
341
- .model-badge {
 
342
  display: flex;
343
- align-items: center;
344
- gap: 0.75rem;
345
- flex: 1;
346
- }
347
-
348
- .leaderboard-item .model-icon {
349
- width: 32px;
350
- height: 32px;
351
- font-size: 14px;
352
- }
353
-
354
- .leaderboard-item .model-name {
355
- font-weight: 600;
356
- color: var(--text-primary);
357
- }
358
-
359
- .leaderboard-item .score {
360
- font-size: 1.75rem;
361
- font-weight: 800;
362
- color: var(--text-primary);
363
- }
364
-
365
- .leaderboard-item.winner .score {
366
- background: var(--gradient-primary);
367
- -webkit-background-clip: text;
368
- -webkit-text-fill-color: transparent;
369
- background-clip: text;
370
  }
371
 
372
- .comparison-preview {
373
- background: rgba(22, 22, 22, 0.8);
374
- backdrop-filter: blur(20px);
375
- border-radius: 16px;
376
- padding: 2rem;
377
- box-shadow: var(--shadow-xl);
378
- border: 1px solid var(--border-color);
 
379
  }
380
 
381
- .preview-item {
382
- background: var(--card-bg);
383
- border-radius: 12px;
384
- padding: 1.5rem;
385
- margin-bottom: 1rem;
386
- color: var(--text-primary);
387
- transition: all 0.3s ease;
388
- border: 1px solid var(--border-color);
389
  }
390
 
391
- .preview-item:hover {
392
- transform: translateX(-10px);
393
- border-color: var(--primary-color);
394
- }
395
 
396
- .preview-item.winner {
397
- background: var(--gradient-primary);
398
- color: white;
399
- border: none;
400
  }
401
 
402
- .preview-header {
403
- display: flex;
404
- align-items: center;
405
- gap: 0.5rem;
406
- margin-bottom: 0.5rem;
 
407
  }
408
 
409
- .crown {
410
- font-size: 1.5rem;
 
 
 
411
  }
412
 
413
- .preview-item h3 {
414
- font-size: 1.25rem;
415
- margin-bottom: 0.5rem;
 
 
416
  }
417
 
418
- .score {
419
- font-size: 2rem;
420
- font-weight: 800;
421
  }
422
 
423
- /* 对比表格部分 */
424
- .comparison-section {
425
- padding: 5rem 0;
426
- background: var(--secondary-bg);
427
- }
428
 
429
- .section-title {
430
- font-size: 2.5rem;
431
- font-weight: 800;
432
- text-align: center;
433
- margin-bottom: 1rem;
434
- color: var(--text-primary);
435
  }
436
 
437
- .section-subtitle {
438
- text-align: center;
439
- color: var(--text-secondary);
440
- margin-bottom: 1rem;
441
- font-size: 1.125rem;
442
  }
443
 
444
- .data-source {
445
- text-align: center;
446
- font-size: 0.875rem;
447
- color: var(--text-muted);
448
- margin-bottom: 3rem;
449
  }
450
 
451
- .data-source a {
452
- color: var(--primary-color);
453
- text-decoration: none;
454
- font-weight: 500;
455
  }
456
 
457
- .data-source a:hover {
458
- text-decoration: underline;
459
- }
460
 
461
- .comparison-table {
462
- background: var(--card-bg);
463
- border-radius: 16px;
 
464
  overflow: hidden;
465
- box-shadow: var(--shadow-lg);
466
  }
467
 
468
- table {
 
469
  width: 100%;
470
- border-collapse: collapse;
471
- }
472
-
473
- th {
474
- background: var(--card-hover-bg);
475
- padding: 1.5rem 1rem;
476
- text-align: left;
477
- font-weight: 600;
478
- color: var(--text-primary);
479
- border-bottom: 1px solid var(--border-color);
480
- }
481
-
482
- td {
483
- padding: 1.5rem 1rem;
484
- border-bottom: 1px solid var(--border-color);
485
- color: var(--text-secondary);
486
- }
487
-
488
- tr:last-child td {
489
- border-bottom: none;
490
- }
491
-
492
- tr:hover {
493
- background: var(--card-hover-bg);
494
- }
495
-
496
- .winner-row {
497
- background: linear-gradient(to right, rgba(139, 92, 246, 0.1), rgba(139, 92, 246, 0.05));
498
- }
499
-
500
- .model-info {
501
- display: flex;
502
- align-items: center;
503
- gap: 1rem;
504
- }
505
-
506
- .rank-badge {
507
- background: var(--gradient-primary);
508
- color: white;
509
- width: 32px;
510
- height: 32px;
511
- border-radius: 8px;
512
- display: flex;
513
- align-items: center;
514
- justify-content: center;
515
- font-weight: 700;
516
- font-size: 0.875rem;
517
- flex-shrink: 0;
518
- text-shadow: 0 1px 2px rgba(0,0,0,0.2);
519
- }
520
-
521
- .winner-row .rank-badge {
522
- background: var(--gradient-primary);
523
- box-shadow: var(--shadow-glow);
524
- }
525
-
526
- .model-icon-wrapper {
527
- display: flex;
528
- align-items: center;
529
- justify-content: center;
530
- }
531
-
532
- .model-icon {
533
- width: 40px;
534
- height: 40px;
535
- border-radius: 8px;
536
- display: flex;
537
- align-items: center;
538
- justify-content: center;
539
- font-weight: 700;
540
- font-size: 16px;
541
- color: white;
542
- position: relative;
543
- overflow: hidden;
544
- transition: all 0.3s ease;
545
- text-shadow: 0 1px 2px rgba(0,0,0,0.3);
546
- }
547
-
548
- .model-icon:hover {
549
- transform: translateY(-2px);
550
- box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
551
- }
552
-
553
- .model-icon.bytedance {
554
- background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
555
- }
556
-
557
- .model-icon.minimax {
558
- background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
559
- }
560
-
561
- .model-icon.google {
562
- background: linear-gradient(135deg, #4285F4 0%, #34A853 50%, #FBBC04 75%, #EA4335 100%);
563
- }
564
-
565
- .model-icon.kuaishou {
566
- background: linear-gradient(135deg, #ec4899 0%, #f43f5e 100%);
567
- }
568
-
569
- .preview-header .model-icon {
570
- width: 30px;
571
- height: 30px;
572
- font-size: 14px;
573
- margin: 0 0.5rem;
574
- }
575
-
576
- .winner-row .model-icon {
577
- transform: scale(1.1);
578
- }
579
-
580
- .winner-row .model-icon:hover {
581
- transform: scale(1.2);
582
- box-shadow: 0 6px 20px rgba(255, 107, 107, 0.4);
583
- }
584
-
585
- .model-version {
586
- font-size: 0.875rem;
587
- color: var(--text-muted);
588
- }
589
-
590
- .score-badge {
591
- display: inline-block;
592
- padding: 0.5rem 1rem;
593
- border-radius: 8px;
594
- background: var(--card-hover-bg);
595
- font-weight: 700;
596
- color: var(--text-primary);
597
- }
598
-
599
- .winner-row .score-badge {
600
- background: var(--gradient-primary);
601
- color: white;
602
- text-shadow: 0 1px 2px rgba(0,0,0,0.15);
603
- }
604
-
605
- .elo-range {
606
- font-size: 0.75rem;
607
- opacity: 0.8;
608
- font-weight: 400;
609
- }
610
-
611
- .rating {
612
- color: #fbbf24;
613
- font-size: 1.125rem;
614
  }
615
 
616
- .metric {
617
- font-weight: 600;
618
- color: var(--text-primary);
 
 
 
619
  }
620
 
621
- .percentage {
 
622
  font-weight: 600;
623
- color: var(--text-primary);
624
- }
625
-
626
- /* 演示视频区域 */
627
- .demo-section {
628
- padding: 5rem 0;
629
- background: var(--secondary-bg);
630
- }
631
-
632
- .demo-grid {
633
- display: grid;
634
- grid-template-columns: 2fr 1fr;
635
- gap: 2rem;
636
- margin-bottom: 3rem;
637
- }
638
-
639
- .demo-card {
640
- background: var(--card-bg);
641
- border-radius: 16px;
642
- padding: 2rem;
643
- transition: all 0.3s ease;
644
- border: 1px solid var(--border-color);
645
- }
646
-
647
- .demo-card:hover {
648
- border-color: var(--primary-color);
649
- box-shadow: var(--shadow-glow);
650
- }
651
-
652
- .demo-card.main {
653
- grid-column: 1;
654
- grid-row: 1 / span 2;
655
- }
656
-
657
- .demo-card h3 {
658
- margin-bottom: 1.5rem;
659
- color: var(--text-primary);
660
- }
661
-
662
- .demo-gallery {
663
- display: grid;
664
- grid-template-columns: repeat(2, 1fr);
665
- gap: 1rem;
666
- margin-bottom: 1rem;
667
- }
668
-
669
- .gallery-item {
670
- position: relative;
671
- border-radius: 12px;
672
- overflow: hidden;
673
- cursor: pointer;
674
- transition: all 0.3s ease;
675
- border: 2px solid transparent;
676
- }
677
-
678
- .gallery-item:hover,
679
- .gallery-item.active {
680
- border-color: var(--primary-color);
681
- transform: scale(1.05);
682
- }
683
-
684
- .gallery-placeholder {
685
- aspect-ratio: 16/9;
686
- background: var(--gradient-dark);
687
- display: flex;
688
- flex-direction: column;
689
- align-items: center;
690
- justify-content: center;
691
- color: var(--text-primary);
692
- }
693
-
694
- .gallery-item img {
695
- width: 100%;
696
- height: 100%;
697
- object-fit: cover;
698
- display: block;
699
- }
700
-
701
- .placeholder-icon {
702
- font-size: 3rem;
703
- margin-bottom: 0.5rem;
704
  }
705
 
706
- .gallery-placeholder p {
707
- font-size: 1rem;
708
- font-weight: 600;
709
- }
710
-
711
- .demo-controls {
712
- display: flex;
713
- justify-content: center;
714
- gap: 1rem;
715
- margin: 1rem 0;
716
- }
717
-
718
- .demo-nav {
719
- width: 40px;
720
- height: 40px;
721
- border-radius: 8px;
722
- border: none;
723
- background: var(--card-hover-bg);
724
- color: var(--text-primary);
725
- font-size: 1.25rem;
726
- cursor: pointer;
727
- transition: all 0.3s ease;
728
- }
729
-
730
- .demo-nav:hover {
731
- background: var(--primary-color);
732
- color: white;
733
- }
734
-
735
- .demo-cta {
736
- display: inline-block;
737
- margin-top: 1rem;
738
- padding: 0.75rem 1.5rem;
739
- background: var(--gradient-primary);
740
- color: white;
741
- border-radius: 8px;
742
- font-weight: 600;
743
- text-decoration: none;
744
- transition: all 0.3s ease;
745
- }
746
-
747
- .demo-cta:hover {
748
- transform: translateY(-2px);
749
- box-shadow: var(--shadow-glow);
750
- }
751
-
752
- .demo-description {
753
- color: var(--text-secondary);
754
- line-height: 1.8;
755
- margin-bottom: 1rem;
756
- }
757
-
758
- .comparison-visual {
759
- display: flex;
760
- flex-direction: column;
761
- gap: 1rem;
762
- }
763
-
764
- .speed-bar {
765
- display: flex;
766
- justify-content: space-between;
767
- align-items: center;
768
- background: var(--card-hover-bg);
769
- padding: 1rem 1.5rem;
770
- border-radius: 8px;
771
- position: relative;
772
- overflow: hidden;
773
- margin-bottom: 1rem;
774
- }
775
-
776
- .speed-bar::before {
777
- content: '';
778
- position: absolute;
779
- left: 0;
780
- top: 0;
781
- height: 100%;
782
- background: var(--gradient-primary);
783
- transition: width 1s ease;
784
- z-index: 0;
785
- opacity: 0.2;
786
- }
787
-
788
- .speed-bar.seedance::before {
789
- width: 100%;
790
- }
791
-
792
- .speed-bar.competitor::before {
793
- width: 37%; /* 187/50 ≈ 37% of Seedance's speed */
794
  }
795
 
796
- .speed-bar span {
797
- position: relative;
798
- z-index: 1;
799
  }
800
 
801
- .model-name {
802
- font-weight: 600;
803
- color: var(--text-primary);
804
- }
805
 
806
- .time {
807
- font-weight: 700;
808
- color: var(--primary-color);
 
809
  }
810
 
811
- .quality-showcase {
812
- display: flex;
813
- justify-content: space-around;
814
- align-items: center;
 
815
  }
816
 
817
- .quality-item {
818
- text-align: center;
 
 
 
819
  }
820
 
821
- .quality-badge {
822
- display: inline-block;
823
- padding: 1rem 2rem;
824
- border-radius: 12px;
825
- font-size: 1.5rem;
826
- font-weight: 700;
827
- background: var(--card-hover-bg);
828
- color: var(--text-primary);
829
- margin-bottom: 0.5rem;
830
  }
831
 
832
- .quality-badge.best {
833
- background: var(--gradient-primary);
834
- color: white;
835
  }
836
 
837
- .demo-features {
838
- background: var(--card-bg);
839
- border-radius: 16px;
840
- padding: 2rem;
841
- margin-top: 2rem;
842
- border: 1px solid var(--border-color);
843
  }
844
 
845
- .demo-features h3 {
846
- text-align: center;
847
- margin-bottom: 2rem;
848
- color: var(--text-primary);
849
- }
850
 
851
- .features-grid {
852
- display: grid;
853
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
854
- gap: 2rem;
 
 
855
  }
856
 
857
- .feature-item {
858
- text-align: center;
 
 
 
 
859
  }
860
 
861
- .feature-icon {
862
- display: inline-block;
863
- font-size: 3rem;
864
- margin-bottom: 1rem;
 
 
 
 
 
 
 
865
  }
866
 
867
- .feature-item h4 {
868
- color: #ffffff;
869
- margin-bottom: 0.5rem;
870
- font-weight: 600;
871
  }
872
 
873
- .feature-item p {
874
- color: #e0e0e0;
875
- line-height: 1.6;
876
- font-size: 0.875rem;
877
- font-weight: 400;
878
  }
879
 
880
- /* 评测结果部分 */
881
- .benchmark-results {
882
- padding: 5rem 0;
883
- background: var(--primary-bg);
 
 
 
 
884
  }
885
 
886
- .benchmark-grid {
887
- display: grid;
888
- grid-template-columns: 2fr 1fr 1fr;
889
- gap: 2rem;
890
- margin-bottom: 2rem;
891
  }
892
 
893
- .benchmark-card {
894
- background: var(--card-bg);
895
- border-radius: 16px;
896
- padding: 2rem;
897
- transition: all 0.3s ease;
898
- border: 1px solid var(--border-color);
899
  }
900
 
901
- .benchmark-card:hover {
902
- border-color: var(--primary-color);
903
- box-shadow: var(--shadow-glow);
 
 
 
904
  }
905
 
906
- .benchmark-card.main {
907
- grid-column: 1;
908
- grid-row: 1 / span 2;
909
- }
910
 
911
- .benchmark-card h3 {
912
- margin-bottom: 1.5rem;
913
- color: var(--text-primary);
 
 
 
 
914
  }
915
 
916
- .benchmark-image {
917
- margin-bottom: 1.5rem;
918
- border-radius: 15px;
919
- overflow: hidden;
 
 
 
 
 
 
 
920
  }
921
 
922
- .benchmark-image.small {
923
- height: 200px;
 
 
924
  }
925
 
926
- .image-placeholder {
927
- background: var(--gradient-dark);
928
- padding: 3rem;
929
- text-align: center;
930
- min-height: 300px;
931
- display: flex;
932
- flex-direction: column;
933
- align-items: center;
934
- justify-content: center;
935
- border-radius: 12px;
936
  }
937
 
938
- .benchmark-image.small .image-placeholder {
939
- min-height: 200px;
940
- padding: 2rem;
941
- }
942
 
943
- .image-placeholder .placeholder-icon {
944
- font-size: 3rem;
945
- margin-bottom: 1rem;
 
 
 
 
 
946
  }
947
 
948
- .image-placeholder p {
949
- font-weight: 600;
950
- color: var(--text-secondary);
951
- margin-bottom: 0.5rem;
952
  }
953
 
954
- .image-placeholder small {
955
- color: var(--text-muted);
956
- font-size: 0.875rem;
957
  }
958
 
959
- .benchmark-image img {
960
- width: 100%;
961
- height: 100%;
962
- object-fit: contain;
 
963
  }
964
 
965
- .benchmark-highlights {
966
- display: flex;
967
- justify-content: space-around;
968
- gap: 1rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
969
  }
970
 
971
- .highlight-item {
972
- display: flex;
973
- justify-content: space-between;
974
- padding: 0.75rem;
975
- background: var(--card-hover-bg);
976
- border-radius: 8px;
977
  }
978
 
979
- .metric-name {
980
- color: var(--text-secondary);
981
- font-size: 0.875rem;
982
  }
983
 
984
- .metric-score {
985
- color: var(--primary-color);
986
- font-weight: 700;
987
- font-size: 1.125rem;
988
  }
989
 
990
- .ranking-info {
991
- text-align: center;
992
- padding: 2rem 0;
993
- }
994
 
995
- .rank-display {
996
- display: inline-flex;
997
- flex-direction: column;
998
- align-items: center;
999
- margin-bottom: 1rem;
 
1000
  }
1001
 
1002
- .rank-number {
1003
- font-size: 3rem;
1004
- font-weight: 800;
1005
- background: var(--gradient-primary);
1006
- -webkit-background-clip: text;
1007
- -webkit-text-fill-color: transparent;
1008
- background-clip: text;
1009
- line-height: 1;
1010
  }
1011
 
1012
- .rank-label {
1013
- font-size: 0.875rem;
1014
- color: var(--text-secondary);
1015
- margin-top: 0.5rem;
1016
  }
1017
 
1018
- .rank-description {
1019
- color: var(--text-secondary);
1020
- line-height: 1.6;
1021
- font-size: 0.875rem;
1022
  }
1023
 
1024
- .performance-list {
1025
- list-style: none;
1026
- padding: 0;
1027
- }
1028
-
1029
- .performance-list li {
1030
- padding: 0.5rem 0;
1031
- color: var(--text-secondary);
1032
- font-size: 0.875rem;
1033
- }
1034
-
1035
- .performance-list strong {
1036
- color: var(--primary-color);
1037
- font-size: 1rem;
1038
- }
1039
-
1040
- .benchmark-source {
1041
- text-align: center;
1042
- padding: 1.5rem;
1043
- background: var(--card-bg);
1044
- border-radius: 12px;
1045
- margin-top: 2rem;
1046
- }
1047
-
1048
- .benchmark-source p {
1049
- margin: 0;
1050
- color: var(--text-secondary);
1051
- font-size: 0.875rem;
1052
- }
1053
-
1054
- .benchmark-source a {
1055
- color: var(--primary-color);
1056
- text-decoration: none;
1057
- font-weight: 500;
1058
- }
1059
-
1060
- .benchmark-source a:hover {
1061
- text-decoration: underline;
1062
- }
1063
-
1064
- /* 技术优势部分 */
1065
- .tech-advantages {
1066
- padding: 5rem 0;
1067
- background: var(--secondary-bg);
1068
- }
1069
-
1070
- .tech-grid {
1071
- display: grid;
1072
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1073
- gap: 2rem;
1074
- margin-bottom: 3rem;
1075
- }
1076
-
1077
- .tech-card {
1078
- background: var(--card-bg);
1079
- border-radius: 16px;
1080
- padding: 2rem;
1081
- text-align: center;
1082
- transition: all 0.3s ease;
1083
- border: 1px solid var(--border-color);
1084
- }
1085
-
1086
- .tech-card:hover {
1087
- transform: translateY(-5px);
1088
- border-color: var(--primary-color);
1089
- box-shadow: var(--shadow-glow);
1090
- }
1091
-
1092
- .tech-icon {
1093
- font-size: 3rem;
1094
- margin-bottom: 1rem;
1095
- display: inline-block;
1096
- }
1097
-
1098
- .tech-card h3 {
1099
- color: #ffffff;
1100
- margin-bottom: 1rem;
1101
- font-size: 1.25rem;
1102
- font-weight: 600;
1103
- }
1104
-
1105
- .tech-card p {
1106
- color: #e0e0e0;
1107
- line-height: 1.6;
1108
- font-size: 0.875rem;
1109
- font-weight: 400;
1110
- }
1111
-
1112
- .platform-cta {
1113
- text-align: center;
1114
- background: var(--card-bg);
1115
- padding: 3rem;
1116
- border-radius: 16px;
1117
- border: 1px solid var(--border-color);
1118
- }
1119
-
1120
- .platform-cta h3 {
1121
- font-size: 1.75rem;
1122
- margin-bottom: 1rem;
1123
- color: #ffffff;
1124
- font-weight: 600;
1125
- }
1126
-
1127
- .platform-cta p {
1128
- font-size: 1.125rem;
1129
- margin-bottom: 2rem;
1130
- color: #e0e0e0;
1131
- font-weight: 400;
1132
- }
1133
-
1134
- /* 性能图表部分 */
1135
- .performance-section {
1136
- padding: 5rem 0;
1137
- background: var(--primary-bg);
1138
- }
1139
-
1140
- .charts-grid {
1141
- display: grid;
1142
- grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
1143
- gap: 2rem;
1144
- }
1145
-
1146
- .chart-card {
1147
- background: var(--card-bg);
1148
- border-radius: 16px;
1149
- padding: 2rem;
1150
- border: 1px solid var(--border-color);
1151
- }
1152
-
1153
- .chart-card h3 {
1154
- margin-bottom: 1.5rem;
1155
- color: var(--text-primary);
1156
- }
1157
-
1158
- .bar-chart {
1159
- display: flex;
1160
- flex-direction: column;
1161
- gap: 1rem;
1162
- }
1163
-
1164
- .bar-item {
1165
- display: flex;
1166
- align-items: center;
1167
- gap: 1rem;
1168
- }
1169
-
1170
- .bar-label {
1171
- min-width: 120px;
1172
- font-weight: 500;
1173
- color: var(--text-primary);
1174
- }
1175
-
1176
- .bar-container {
1177
- flex: 1;
1178
- background: #E9ECEF;
1179
- border-radius: 10px;
1180
- overflow: hidden;
1181
- }
1182
-
1183
- .bar {
1184
- background: #7F8C8D;
1185
- color: white;
1186
- padding: 0.5rem 1rem;
1187
- font-weight: 600;
1188
- transition: width 1s ease;
1189
- }
1190
-
1191
- .bar.seedance {
1192
- background: var(--gradient-success);
1193
- }
1194
-
1195
- .cost-comparison {
1196
- display: flex;
1197
- justify-content: space-around;
1198
- align-items: center;
1199
- }
1200
-
1201
- .cost-item {
1202
- text-align: center;
1203
- padding: 1.5rem;
1204
- border-radius: 15px;
1205
- background: #F8F9FA;
1206
- color: #1a1a1a;
1207
- }
1208
-
1209
- .cost-item.winner {
1210
- background: var(--gradient-primary);
1211
- color: white;
1212
- }
1213
-
1214
- .cost-value {
1215
- font-size: 2.5rem;
1216
- font-weight: 800;
1217
- margin: 0.5rem 0;
1218
- }
1219
-
1220
- .cost-label {
1221
- font-size: 0.875rem;
1222
- opacity: 0.8;
1223
- }
1224
-
1225
- .savings-badge {
1226
- background: white;
1227
- color: var(--primary-color);
1228
- padding: 0.5rem 1rem;
1229
- border-radius: 20px;
1230
- font-weight: 600;
1231
- margin-top: 0.5rem;
1232
- display: inline-block;
1233
- }
1234
-
1235
- .satisfaction-scores {
1236
- display: flex;
1237
- justify-content: space-around;
1238
- align-items: center;
1239
- }
1240
-
1241
- .score-circle {
1242
- width: 150px;
1243
- height: 150px;
1244
- border-radius: 50%;
1245
- background: #E9ECEF;
1246
  display: flex;
1247
- flex-direction: column;
1248
- align-items: center;
1249
- justify-content: center;
1250
- position: relative;
1251
- color: #1a1a1a;
1252
- }
1253
-
1254
- .score-circle.seedance {
1255
- background: var(--gradient-success);
1256
- color: white;
1257
- text-shadow: 0 1px 3px rgba(0,0,0,0.2);
1258
- }
1259
-
1260
- .score-value {
1261
- font-size: 2.5rem;
1262
- font-weight: 800;
1263
- }
1264
-
1265
- .score-label {
1266
- font-size: 0.875rem;
1267
- margin-top: 0.5rem;
1268
- }
1269
-
1270
- /* 价格部分 */
1271
- .pricing-section {
1272
- padding: 5rem 0;
1273
- background: white;
1274
- }
1275
-
1276
- .pricing-comparison {
1277
- display: flex;
1278
- flex-direction: column;
1279
- gap: 3rem;
1280
- }
1281
-
1282
- .price-table {
1283
- overflow-x: auto;
1284
- border-radius: 16px;
1285
- border: 1px solid var(--border-color);
1286
- }
1287
-
1288
- .price-table table {
1289
- width: 100%;
1290
- background: var(--card-bg);
1291
- border-collapse: collapse;
1292
- }
1293
-
1294
- .price-table th {
1295
- background: var(--card-hover-bg);
1296
- padding: 1.25rem 1rem;
1297
- text-align: left;
1298
- font-weight: 600;
1299
- color: var(--text-primary);
1300
- border-bottom: 1px solid var(--border-color);
1301
- }
1302
-
1303
- .price-table td {
1304
- padding: 1.25rem 1rem;
1305
- border-bottom: 1px solid var(--border-color);
1306
- vertical-align: middle;
1307
- color: var(--text-primary);
1308
- }
1309
-
1310
- .highlight-row {
1311
- background: linear-gradient(to right, rgba(139, 92, 246, 0.1), rgba(139, 92, 246, 0.05));
1312
- border-left: 3px solid var(--primary-color);
1313
- }
1314
-
1315
- .model-name {
1316
- font-weight: 500;
1317
- display: flex;
1318
- align-items: center;
1319
- gap: 0.75rem;
1320
- }
1321
-
1322
- .model-icon.small {
1323
- width: 32px;
1324
- height: 32px;
1325
- font-size: 14px;
1326
- flex-shrink: 0;
1327
- border: 2px solid rgba(255, 255, 255, 0.2);
1328
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
1329
- }
1330
-
1331
- .badge {
1332
- font-size: 0.75rem;
1333
- padding: 0.25rem 0.75rem;
1334
- border-radius: 20px;
1335
- font-weight: 600;
1336
- text-transform: uppercase;
1337
- }
1338
-
1339
- .badge.new {
1340
- background: var(--gradient-danger);
1341
- color: white;
1342
- text-shadow: 0 1px 2px rgba(0,0,0,0.2);
1343
- }
1344
-
1345
- .badge.best-value {
1346
- background: var(--gradient-success);
1347
- color: white;
1348
- text-shadow: 0 1px 2px rgba(0,0,0,0.2);
1349
- }
1350
-
1351
- .price-cell {
1352
- font-weight: 700;
1353
- white-space: nowrap;
1354
- }
1355
-
1356
- .price-value {
1357
- font-size: 1.5rem;
1358
- font-weight: 800;
1359
- background: var(--gradient-primary);
1360
- -webkit-background-clip: text;
1361
- -webkit-text-fill-color: transparent;
1362
- background-clip: text;
1363
- }
1364
-
1365
- .price-unit {
1366
- font-size: 0.875rem;
1367
- color: var(--text-secondary);
1368
- font-weight: 400;
1369
- }
1370
-
1371
- .try-button {
1372
- padding: 0.5rem 1.5rem;
1373
- border-radius: 50px;
1374
- font-weight: 600;
1375
- text-decoration: none;
1376
- display: inline-block;
1377
- transition: all 0.3s ease;
1378
- background: var(--gradient-primary);
1379
- color: white;
1380
- white-space: nowrap;
1381
- text-shadow: 0 1px 2px rgba(0,0,0,0.15);
1382
- }
1383
-
1384
- .try-button.secondary {
1385
- background: rgba(255, 255, 255, 0.05);
1386
- border: 1px solid var(--border-color);
1387
- color: var(--text-secondary);
1388
- }
1389
-
1390
- .try-button:hover {
1391
- transform: translateY(-2px);
1392
- box-shadow: var(--shadow-md);
1393
- }
1394
-
1395
- .leaderboard-cta {
1396
- text-align: center;
1397
- padding: 2rem;
1398
- background: #F8F9FA;
1399
- border-radius: 15px;
1400
- margin: 2rem 0;
1401
- }
1402
-
1403
- .leaderboard-cta p {
1404
- margin-bottom: 1rem;
1405
- color: #333333;
1406
- font-weight: 400;
1407
- }
1408
-
1409
- .leaderboard-link {
1410
- display: inline-block;
1411
- color: var(--primary-color);
1412
- font-weight: 600;
1413
- text-decoration: none;
1414
- padding: 0.75rem 1.5rem;
1415
- border: 2px solid var(--primary-color);
1416
- border-radius: 50px;
1417
- transition: all 0.3s ease;
1418
- }
1419
-
1420
- .leaderboard-link:hover {
1421
- background: var(--primary-color);
1422
- color: white;
1423
- transform: translateY(-2px);
1424
- box-shadow: var(--shadow-md);
1425
- }
1426
-
1427
- .price-highlights {
1428
- display: grid;
1429
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
1430
- gap: 2rem;
1431
- }
1432
-
1433
- .highlight-card {
1434
- background: #F8F9FA;
1435
- border-radius: 20px;
1436
- padding: 2rem;
1437
- text-align: center;
1438
- transition: transform 0.3s ease;
1439
- }
1440
-
1441
- .highlight-card:hover {
1442
- transform: translateY(-5px);
1443
- box-shadow: var(--shadow-md);
1444
- }
1445
-
1446
- .highlight-icon {
1447
- font-size: 3rem;
1448
- margin-bottom: 1rem;
1449
- opacity: 0.9;
1450
- }
1451
-
1452
- .highlight-card h3 {
1453
- color: #1a1a1a;
1454
- margin-bottom: 0.5rem;
1455
- font-weight: 600;
1456
- }
1457
-
1458
- .highlight-card p {
1459
- color: #333333;
1460
- line-height: 1.6;
1461
- font-weight: 400;
1462
- }
1463
-
1464
- /* 应用案例部分 */
1465
- .use-cases-section {
1466
- padding: 5rem 0;
1467
- background: white;
1468
- }
1469
-
1470
- .use-cases-grid {
1471
- display: grid;
1472
- grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
1473
- gap: 2rem;
1474
- margin-bottom: 3rem;
1475
- }
1476
-
1477
- .use-case-card {
1478
- background: #F8F9FA;
1479
- border-radius: 20px;
1480
- padding: 2.5rem;
1481
- text-align: center;
1482
- transition: all 0.3s ease;
1483
- position: relative;
1484
- overflow: hidden;
1485
- }
1486
-
1487
- .use-case-card::before {
1488
- content: '';
1489
- position: absolute;
1490
- top: 0;
1491
- left: 0;
1492
- width: 100%;
1493
- height: 5px;
1494
- background: var(--gradient-primary);
1495
- transform: scaleX(0);
1496
- transition: transform 0.3s ease;
1497
- }
1498
-
1499
- .use-case-card:hover {
1500
- transform: translateY(-10px);
1501
- box-shadow: var(--shadow-xl);
1502
- }
1503
-
1504
- .use-case-card:hover::before {
1505
- transform: scaleX(1);
1506
- }
1507
-
1508
- .use-case-icon {
1509
- font-size: 3rem;
1510
- margin-bottom: 1rem;
1511
- display: inline-block;
1512
- }
1513
-
1514
- .use-case-card h3 {
1515
- color: #1a1a1a;
1516
- margin-bottom: 1rem;
1517
- font-weight: 600;
1518
- }
1519
-
1520
- .use-case-card p {
1521
- color: #333333;
1522
- line-height: 1.8;
1523
- margin-bottom: 1.5rem;
1524
- font-weight: 400;
1525
- }
1526
-
1527
- .learn-more {
1528
- color: var(--primary-color);
1529
- text-decoration: none;
1530
- font-weight: 600;
1531
- transition: color 0.3s ease;
1532
- }
1533
-
1534
- .learn-more:hover {
1535
- color: var(--secondary-color);
1536
- }
1537
-
1538
- .case-study-cta {
1539
- text-align: center;
1540
- background: var(--gradient-primary);
1541
- color: white;
1542
- padding: 3rem;
1543
- border-radius: 20px;
1544
- }
1545
-
1546
- .case-study-cta h3 {
1547
- font-size: 2rem;
1548
- margin-bottom: 1rem;
1549
- }
1550
-
1551
- .case-study-cta p {
1552
- font-size: 1.125rem;
1553
- margin-bottom: 2rem;
1554
- opacity: 0.9;
1555
- }
1556
-
1557
- /* 客户评价部分 */
1558
- .testimonials-section {
1559
- padding: 5rem 0;
1560
- background: #F8F9FA;
1561
- }
1562
-
1563
- .testimonials-section .section-title {
1564
- color: #2c3e50;
1565
- }
1566
-
1567
- /* 确保白色背景部分的标题是深色 */
1568
- .pricing-section .section-title,
1569
- .use-cases-section .section-title {
1570
- color: #2c3e50;
1571
- }
1572
-
1573
- .pricing-section .section-subtitle,
1574
- .use-cases-section .section-subtitle {
1575
- color: #5a5a5a;
1576
- }
1577
-
1578
- .testimonials-grid {
1579
- display: grid;
1580
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
1581
- gap: 2rem;
1582
- }
1583
-
1584
- .testimonial-card {
1585
- background: white;
1586
- border-radius: 20px;
1587
- padding: 2.5rem;
1588
- box-shadow: var(--shadow-md);
1589
- transition: transform 0.3s ease;
1590
- position: relative;
1591
- border: 1px solid #e8e8e8;
1592
- }
1593
-
1594
- .testimonial-card:hover {
1595
- transform: translateY(-5px);
1596
- box-shadow: var(--shadow-xl);
1597
- border-color: #3498db;
1598
- }
1599
-
1600
- .testimonial-label {
1601
- position: absolute;
1602
- top: -14px;
1603
- left: 30px;
1604
- background: #3498db;
1605
- color: white;
1606
- padding: 6px 20px;
1607
- border-radius: 20px;
1608
- font-size: 0.875rem;
1609
- font-weight: 600;
1610
- letter-spacing: 0.5px;
1611
- text-shadow: 0 1px 2px rgba(0,0,0,0.2);
1612
- }
1613
-
1614
- .stars {
1615
- color: #FFC107;
1616
- font-size: 1.5rem;
1617
- margin-bottom: 1.25rem;
1618
- letter-spacing: 3px;
1619
- }
1620
-
1621
- .testimonial-text {
1622
- font-size: 1.125rem;
1623
- margin-bottom: 2rem;
1624
- line-height: 1.9;
1625
- color: #2c3e50;
1626
- font-weight: 400;
1627
- min-height: 100px;
1628
- }
1629
-
1630
- .testimonial-author {
1631
- display: flex;
1632
- align-items: center;
1633
- gap: 1rem;
1634
- padding-top: 1.5rem;
1635
- border-top: 1px solid #f0f0f0;
1636
- }
1637
-
1638
- .author-avatar {
1639
- width: 52px;
1640
- height: 52px;
1641
- background: linear-gradient(135deg, #3498db, #2c3e50);
1642
- color: white;
1643
- border-radius: 50%;
1644
- display: flex;
1645
- align-items: center;
1646
- justify-content: center;
1647
- font-weight: 600;
1648
- font-size: 1.125rem;
1649
- flex-shrink: 0;
1650
- text-shadow: 0 1px 2px rgba(0,0,0,0.3);
1651
- }
1652
-
1653
- .testimonial-author > div:not(.author-avatar) {
1654
- flex: 1;
1655
- }
1656
-
1657
- .testimonial-author strong {
1658
- color: var(--dark-color);
1659
- font-size: 1.125rem;
1660
- display: block;
1661
- margin-bottom: 0.25rem;
1662
- font-weight: 600;
1663
- }
1664
-
1665
- .testimonial-author span {
1666
- color: #7F8C8D;
1667
- font-size: 0.9375rem;
1668
- display: block;
1669
- }
1670
-
1671
- /* CTA区域 */
1672
- .cta-section {
1673
- padding: 5rem 0;
1674
- background: var(--gradient-primary);
1675
- color: white;
1676
- text-align: center;
1677
- }
1678
-
1679
- .cta-content h2 {
1680
- font-size: 2.5rem;
1681
- margin-bottom: 1rem;
1682
- }
1683
-
1684
- .cta-content p {
1685
- font-size: 1.25rem;
1686
- margin-bottom: 2rem;
1687
- opacity: 0.9;
1688
- }
1689
-
1690
- .cta-buttons {
1691
- display: flex;
1692
- gap: 1rem;
1693
- justify-content: center;
1694
- margin-bottom: 1rem;
1695
- }
1696
-
1697
- .primary-button.large,
1698
- .secondary-button.large {
1699
- padding: 1.25rem 2.5rem;
1700
- font-size: 1.125rem;
1701
- }
1702
-
1703
- .cta-note {
1704
- font-size: 0.875rem;
1705
- opacity: 0.8;
1706
- }
1707
-
1708
- /* 页脚 */
1709
- footer {
1710
- background: var(--dark-color);
1711
- color: white;
1712
- padding: 3rem 0 1rem;
1713
- }
1714
-
1715
- .footer-content {
1716
- display: grid;
1717
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1718
- gap: 2rem;
1719
- margin-bottom: 2rem;
1720
- }
1721
-
1722
- .footer-section h4 {
1723
- margin-bottom: 1rem;
1724
- }
1725
-
1726
- .footer-section ul {
1727
- list-style: none;
1728
- }
1729
-
1730
- .footer-section ul li {
1731
- margin-bottom: 0.5rem;
1732
- }
1733
-
1734
- .footer-section a {
1735
- color: #BDC3C7;
1736
- text-decoration: none;
1737
- transition: color 0.3s ease;
1738
- }
1739
-
1740
- .footer-section a:hover {
1741
- color: white;
1742
- }
1743
-
1744
- .footer-bottom {
1745
- text-align: center;
1746
- padding-top: 2rem;
1747
- border-top: 1px solid #34495E;
1748
- color: #7F8C8D;
1749
- }
1750
-
1751
- /* 响应式设计 */
1752
- @media (max-width: 768px) {
1753
- .hero {
1754
- text-align: center;
1755
- }
1756
-
1757
- .hero-title {
1758
- font-size: 1.75rem;
1759
- }
1760
-
1761
- .brand-text {
1762
- font-size: 2.25rem;
1763
- }
1764
-
1765
- .tagline {
1766
- font-size: 1.5rem;
1767
- }
1768
-
1769
- .hero-stats {
1770
- justify-content: center;
1771
- }
1772
-
1773
- .hero-visual {
1774
- position: relative;
1775
- right: auto;
1776
- top: auto;
1777
- transform: none;
1778
- margin-top: 2rem;
1779
- }
1780
-
1781
- .leaderboard-preview {
1782
- flex-direction: column;
1783
- align-items: center;
1784
- }
1785
-
1786
- .leaderboard-item {
1787
- width: 100%;
1788
- max-width: 400px;
1789
- min-width: unset;
1790
- }
1791
-
1792
- .nav-links {
1793
- display: none;
1794
- }
1795
-
1796
- .comparison-table {
1797
- font-size: 0.875rem;
1798
- }
1799
-
1800
- th, td {
1801
- padding: 0.75rem 0.5rem;
1802
- }
1803
-
1804
- .charts-grid {
1805
- grid-template-columns: 1fr;
1806
- }
1807
-
1808
- .price-table {
1809
- font-size: 0.875rem;
1810
- }
1811
-
1812
- .price-table th, .price-table td {
1813
- padding: 0.75rem 0.5rem;
1814
- }
1815
-
1816
- .price-highlights {
1817
- grid-template-columns: 1fr;
1818
- }
1819
-
1820
- .cta-buttons {
1821
- flex-direction: column;
1822
- align-items: center;
1823
- }
1824
-
1825
- .primary-button.large,
1826
- .secondary-button.large {
1827
- width: 100%;
1828
- max-width: 300px;
1829
- }
1830
-
1831
- .demo-grid {
1832
- grid-template-columns: 1fr;
1833
- }
1834
-
1835
- .demo-card.main {
1836
- grid-column: 1;
1837
- grid-row: auto;
1838
- }
1839
-
1840
- .features-grid {
1841
- grid-template-columns: 1fr;
1842
- }
1843
-
1844
- .demo-gallery {
1845
- grid-template-columns: 1fr;
1846
- }
1847
-
1848
- .benchmark-grid {
1849
- grid-template-columns: 1fr;
1850
- }
1851
-
1852
- .benchmark-card.main {
1853
- grid-column: 1;
1854
- grid-row: auto;
1855
- }
1856
- }
1857
-
1858
- /* 动画效果 */
1859
- @keyframes fadeIn {
1860
- from {
1861
- opacity: 0;
1862
- transform: translateY(20px);
1863
- }
1864
- to {
1865
- opacity: 1;
1866
- transform: translateY(0);
1867
- }
1868
- }
1869
-
1870
- .hero-content,
1871
- .chart-card,
1872
- .pricing-card,
1873
- .testimonial-card {
1874
- animation: fadeIn 0.8s ease-out;
1875
- }
1876
-
1877
- /* 加载动画 */
1878
- @keyframes pulse {
1879
- 0% {
1880
- transform: scale(1);
1881
- }
1882
- 50% {
1883
- transform: scale(1.05);
1884
- }
1885
- 100% {
1886
- transform: scale(1);
1887
- }
1888
- }
1889
-
1890
- .primary-button:active {
1891
- animation: pulse 0.3s ease;
1892
- }
1893
-
1894
- /* 核心能力展示部分 */
1895
- .capabilities-showcase {
1896
- padding: 80px 0;
1897
- background: var(--secondary-bg);
1898
- }
1899
-
1900
- .capabilities-grid {
1901
- margin-top: 60px;
1902
- }
1903
-
1904
- .capability-section {
1905
- margin-bottom: 80px;
1906
- padding: 40px;
1907
- background: var(--card-bg);
1908
- border-radius: 16px;
1909
- border: 1px solid var(--border-color);
1910
- transition: all 0.3s ease;
1911
- }
1912
-
1913
- .capability-section:hover {
1914
- border-color: var(--primary-color);
1915
- box-shadow: var(--shadow-glow);
1916
- }
1917
-
1918
- .capability-title {
1919
- display: flex;
1920
- align-items: center;
1921
- gap: 20px;
1922
- margin-bottom: 20px;
1923
- font-size: 28px;
1924
- color: var(--text-primary);
1925
- }
1926
-
1927
- .capability-number {
1928
- display: inline-block;
1929
- width: 50px;
1930
- height: 50px;
1931
- background: var(--gradient-primary);
1932
- color: white;
1933
- border-radius: 12px;
1934
- display: flex;
1935
- align-items: center;
1936
- justify-content: center;
1937
- font-weight: 700;
1938
- font-size: 18px;
1939
- text-shadow: 0 1px 2px rgba(0,0,0,0.2);
1940
- }
1941
-
1942
- .capability-description {
1943
- font-size: 18px;
1944
- color: var(--text-secondary);
1945
- margin-bottom: 30px;
1946
- line-height: 1.8;
1947
- }
1948
-
1949
- .demo-videos-grid {
1950
- display: grid;
1951
- grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
1952
- gap: 30px;
1953
- }
1954
-
1955
- .demo-video-card {
1956
- background: var(--card-hover-bg);
1957
- border-radius: 16px;
1958
- overflow: hidden;
1959
- transition: transform 0.3s ease, box-shadow 0.3s ease;
1960
- border: 1px solid var(--border-color);
1961
- }
1962
-
1963
- .demo-video-card:hover {
1964
- transform: translateY(-5px);
1965
- border-color: var(--primary-color);
1966
- box-shadow: var(--shadow-glow);
1967
- }
1968
-
1969
- .video-container {
1970
- position: relative;
1971
- background: var(--gradient-dark);
1972
- border-radius: 12px;
1973
- overflow: hidden;
1974
- }
1975
-
1976
- .video-container video {
1977
- width: 100%;
1978
- height: auto;
1979
- display: block;
1980
- background: var(--gradient-dark);
1981
- min-height: 300px;
1982
- }
1983
-
1984
- /* 当视频无法加载时显示占位符 */
1985
- .video-container video:not([src]) + .video-placeholder,
1986
- .video-container video[src=""] + .video-placeholder {
1987
- display: flex !important;
1988
- }
1989
-
1990
- .video-placeholder {
1991
- padding: 40px;
1992
- text-align: center;
1993
- background: var(--gradient-dark);
1994
- min-height: 300px;
1995
- display: flex;
1996
- flex-direction: column;
1997
- justify-content: center;
1998
- align-items: center;
1999
- }
2000
-
2001
- .video-info {
2002
- padding: 20px;
2003
- background: var(--card-bg);
2004
- border-top: 1px solid var(--border-color);
2005
- }
2006
-
2007
- .video-icon {
2008
- font-size: 60px;
2009
- margin-bottom: 20px;
2010
- filter: grayscale(0%);
2011
- }
2012
-
2013
- .video-placeholder h4 {
2014
- font-size: 20px;
2015
- color: var(--text-primary);
2016
- margin-bottom: 15px;
2017
- }
2018
-
2019
- .video-info h4 {
2020
- font-size: 18px;
2021
- color: var(--text-primary);
2022
- margin-bottom: 10px;
2023
- }
2024
-
2025
- .video-placeholder .prompt {
2026
- font-size: 14px;
2027
- color: var(--text-secondary);
2028
- line-height: 1.6;
2029
- margin-bottom: 20px;
2030
- padding: 0 20px;
2031
- font-style: italic;
2032
- }
2033
-
2034
- .video-specs {
2035
- display: flex;
2036
- gap: 20px;
2037
- justify-content: center;
2038
- margin-top: 15px;
2039
- }
2040
-
2041
- .video-specs span {
2042
- background: var(--card-bg);
2043
- padding: 5px 15px;
2044
- border-radius: 20px;
2045
- font-size: 12px;
2046
- color: var(--primary-color);
2047
- font-weight: 500;
2048
- border: 1px solid var(--border-color);
2049
- }
2050
-
2051
- .play-button {
2052
- display: block;
2053
- padding: 15px 30px;
2054
- background: var(--gradient-primary);
2055
- color: white;
2056
- text-decoration: none;
2057
- font-weight: 600;
2058
- text-align: center;
2059
- transition: all 0.3s ease;
2060
- text-shadow: 0 1px 2px rgba(0,0,0,0.15);
2061
- }
2062
-
2063
- .play-button:hover {
2064
- transform: translateX(5px);
2065
- box-shadow: var(--shadow-glow);
2066
- }
2067
-
2068
- .experience-cta {
2069
- text-align: center;
2070
- margin-top: 80px;
2071
- padding: 60px;
2072
- background: var(--card-bg);
2073
- border-radius: 16px;
2074
- border: 1px solid var(--border-color);
2075
- }
2076
-
2077
- .experience-cta h3 {
2078
- font-size: 32px;
2079
- color: var(--text-primary);
2080
- margin-bottom: 15px;
2081
- }
2082
-
2083
- .experience-cta p {
2084
- font-size: 18px;
2085
- color: var(--text-secondary);
2086
- margin-bottom: 30px;
2087
- }
2088
-
2089
- .cta-buttons {
2090
- display: flex;
2091
- gap: 20px;
2092
- justify-content: center;
2093
- flex-wrap: wrap;
2094
- }
2095
-
2096
- .primary-button.large,
2097
- .secondary-button.large {
2098
- padding: 18px 40px;
2099
- font-size: 18px;
2100
- }
2101
-
2102
- /* 响应式设计 */
2103
- @media (max-width: 768px) {
2104
- .capability-section {
2105
- padding: 30px 20px;
2106
- }
2107
-
2108
- .capability-title {
2109
- font-size: 22px;
2110
- flex-wrap: wrap;
2111
- }
2112
-
2113
- .capability-number {
2114
- width: 40px;
2115
- height: 40px;
2116
- font-size: 16px;
2117
- }
2118
-
2119
- .demo-videos-grid {
2120
- grid-template-columns: 1fr;
2121
- gap: 20px;
2122
- }
2123
-
2124
- .video-placeholder {
2125
- padding: 30px 20px;
2126
- min-height: 250px;
2127
- }
2128
-
2129
- .video-icon {
2130
- font-size: 48px;
2131
- }
2132
-
2133
- .experience-cta {
2134
- padding: 40px 20px;
2135
- }
2136
-
2137
- .experience-cta h3 {
2138
- font-size: 24px;
2139
- }
2140
-
2141
- .cta-buttons {
2142
- flex-direction: column;
2143
- align-items: center;
2144
- }
2145
-
2146
- .primary-button.large,
2147
- .secondary-button.large {
2148
- width: 100%;
2149
- max-width: 300px;
2150
- }
2151
- }
2152
-
2153
- .demo-video-card.enhanced {
2154
- background: var(--card-bg);
2155
- border-radius: 16px;
2156
- overflow: hidden;
2157
- transition: all 0.3s ease;
2158
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
2159
- }
2160
-
2161
- .demo-video-card.enhanced:hover {
2162
- transform: translateY(-5px);
2163
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
2164
- }
2165
-
2166
- .video-wrapper {
2167
- position: relative;
2168
- width: 100%;
2169
- background: #000;
2170
- border-radius: 12px;
2171
- overflow: hidden;
2172
- }
2173
-
2174
- .video-caption {
2175
- padding: 20px;
2176
- background: var(--card-bg);
2177
- }
2178
-
2179
- .video-caption h4 {
2180
- font-size: 18px;
2181
- font-weight: 600;
2182
- color: var(--text-primary);
2183
- margin-bottom: 8px;
2184
- }
2185
-
2186
- .video-caption p {
2187
- font-size: 14px;
2188
- color: var(--text-secondary);
2189
- margin: 0;
2190
- line-height: 1.5;
2191
- }
2192
-
2193
- .demo-videos-grid {
2194
- display: grid;
2195
- grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
2196
- gap: 30px;
2197
- margin-top: 30px;
2198
- }
2199
-
2200
- @media (max-width: 768px) {
2201
- .demo-videos-grid {
2202
- grid-template-columns: 1fr;
2203
- }
2204
  }
 
1
+ /* ==========================================================================
2
+ Shared stylesheet for wavespeed model reference pages.
3
+ Edit here, then run _shared/sync.sh to copy into each Space.
4
+ ========================================================================== */
 
 
5
 
6
  :root {
7
+ --bg: #ffffff;
8
+ --bg-soft: #f7f8fa;
9
+ --bg-code: #f4f5f7;
10
+ --fg: #14161a;
11
+ --fg-muted: #5b6270;
12
+ --fg-faint: #868d9b;
13
+ --line: #e4e6eb;
14
+ --line-strong: #d2d6de;
15
+ --accent: #2f5bd7;
16
+ --accent-soft: #eef2fd;
17
+ --radius: 10px;
18
+ --radius-sm: 6px;
19
+ --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
20
+ --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue",
21
+ "Noto Sans", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
22
+ --maxw: 880px;
23
+ }
24
+
25
+ @media (prefers-color-scheme: dark) {
26
+ :root {
27
+ --bg: #0e1014;
28
+ --bg-soft: #161920;
29
+ --bg-code: #14171d;
30
+ --fg: #e7e9ee;
31
+ --fg-muted: #99a1b0;
32
+ --fg-faint: #6f7788;
33
+ --line: #252a33;
34
+ --line-strong: #333a46;
35
+ --accent: #7ba1ff;
36
+ --accent-soft: #172136;
37
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  }
39
 
40
+ *,
41
+ *::before,
42
+ *::after {
43
+ box-sizing: border-box;
 
 
44
  }
45
 
46
+ html {
47
+ -webkit-text-size-adjust: 100%;
48
+ scroll-behavior: smooth;
49
  }
50
 
51
+ body {
52
+ margin: 0;
53
+ background: var(--bg);
54
+ color: var(--fg);
55
+ font-family: var(--sans);
56
+ font-size: 16px;
57
+ line-height: 1.65;
58
+ -webkit-font-smoothing: antialiased;
59
  }
60
 
61
+ a {
62
+ color: var(--accent);
63
  text-decoration: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  }
65
 
66
+ a:hover {
67
+ text-decoration: underline;
 
 
 
 
 
 
68
  }
69
 
70
+ img,
71
+ video {
72
+ max-width: 100%;
73
+ height: auto;
74
+ display: block;
 
 
 
 
75
  }
76
 
77
+ hr {
78
+ border: 0;
79
+ border-top: 1px solid var(--line);
80
+ margin: 3rem 0;
81
  }
82
 
83
+ .wrap {
84
+ max-width: var(--maxw);
85
  margin: 0 auto;
86
+ padding: 0 20px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
88
 
89
+ /* --- header ------------------------------------------------------------- */
 
 
 
 
 
90
 
91
+ .site-header {
92
+ border-bottom: 1px solid var(--line);
93
+ background: var(--bg);
94
+ position: sticky;
95
+ top: 0;
96
+ z-index: 20;
97
  }
98
 
99
+ .site-header .wrap {
100
  display: flex;
101
+ align-items: center;
102
+ justify-content: space-between;
103
+ gap: 16px;
104
+ height: 56px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  }
106
 
107
+ .brand {
108
  display: flex;
109
+ align-items: center;
110
+ gap: 9px;
111
+ font-weight: 600;
112
+ font-size: 0.9rem;
113
+ color: var(--fg);
114
+ letter-spacing: -0.01em;
115
  }
116
 
117
+ .brand:hover {
118
+ text-decoration: none;
 
 
 
 
 
 
 
 
 
119
  }
120
 
121
+ .brand-mark {
122
+ width: 20px;
123
+ height: 20px;
124
+ border-radius: 5px;
125
+ background: var(--accent);
126
+ flex: 0 0 auto;
127
  position: relative;
 
 
128
  }
129
 
130
+ .brand-mark::after {
131
+ content: "";
132
  position: absolute;
133
+ inset: 6px 4px;
134
+ border-left: 2px solid var(--bg);
135
+ border-right: 2px solid var(--bg);
136
+ opacity: 0.85;
 
 
137
  }
138
 
139
+ .header-nav {
140
+ display: flex;
141
+ align-items: center;
142
+ gap: 20px;
143
+ font-size: 0.86rem;
144
  }
145
 
146
+ .header-nav a {
147
+ color: var(--fg-muted);
 
148
  }
149
 
150
+ .header-nav a:hover {
151
+ color: var(--fg);
152
+ text-decoration: none;
 
153
  }
154
 
155
+ .brand span:last-child {
156
+ white-space: nowrap;
 
157
  }
158
 
159
+ @media (max-width: 760px) {
160
+ .header-nav a.opt {
161
+ display: none;
162
+ }
 
 
163
  }
164
 
165
+ /* On phones the in-page anchors aren't worth the crowding — the page is short
166
+ enough to scroll, and the one outbound link needs the room. */
167
+ @media (max-width: 560px) {
168
+ .header-nav a.jump {
169
+ display: none;
170
  }
171
  }
172
 
173
+ /* --- hero --------------------------------------------------------------- */
 
 
 
 
 
 
 
174
 
175
+ .hero {
176
+ padding: 56px 0 12px;
 
 
 
 
 
 
 
 
177
  }
178
 
179
+ .eyebrow {
180
+ font-size: 0.72rem;
181
+ font-weight: 600;
182
+ letter-spacing: 0.08em;
183
+ text-transform: uppercase;
184
+ color: var(--fg-faint);
185
+ margin: 0 0 14px;
186
  }
187
 
188
+ h1 {
189
+ font-size: 2.6rem;
190
+ line-height: 1.15;
191
+ letter-spacing: -0.025em;
192
+ font-weight: 700;
193
+ margin: 0 0 14px;
194
  }
195
 
196
+ .lede {
197
+ font-size: 1.12rem;
198
+ color: var(--fg-muted);
199
+ margin: 0;
200
+ max-width: 68ch;
201
  }
202
 
203
+ @media (max-width: 620px) {
204
+ h1 {
205
+ font-size: 2rem;
206
+ }
207
+ .hero {
208
+ padding-top: 36px;
209
+ }
210
  }
211
 
212
+ /* metadata strip under the title */
213
+ .meta {
214
  display: flex;
215
+ flex-wrap: wrap;
216
+ gap: 8px 10px;
217
+ margin: 26px 0 0;
218
+ padding: 0;
219
+ list-style: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  }
221
 
222
+ .meta li {
223
+ font-size: 0.78rem;
224
+ font-family: var(--mono);
225
+ color: var(--fg-muted);
226
+ border: 1px solid var(--line);
227
+ border-radius: 999px;
228
+ padding: 3px 11px;
229
+ white-space: nowrap;
230
  }
231
 
232
+ .meta li b {
233
+ font-weight: 500;
234
+ color: var(--fg-faint);
 
 
 
 
 
235
  }
236
 
237
+ /* --- sections ----------------------------------------------------------- */
 
 
 
238
 
239
+ section {
240
+ padding: 44px 0 0;
 
 
241
  }
242
 
243
+ h2 {
244
+ font-size: 1.35rem;
245
+ letter-spacing: -0.015em;
246
+ font-weight: 650;
247
+ margin: 0 0 6px;
248
+ scroll-margin-top: 76px;
249
  }
250
 
251
+ .section-note {
252
+ color: var(--fg-muted);
253
+ margin: 0 0 22px;
254
+ font-size: 0.95rem;
255
+ max-width: 70ch;
256
  }
257
 
258
+ h3 {
259
+ font-size: 1rem;
260
+ font-weight: 620;
261
+ margin: 0 0 6px;
262
+ letter-spacing: -0.005em;
263
  }
264
 
265
+ p {
266
+ margin: 0 0 1rem;
 
267
  }
268
 
269
+ /* --- cards -------------------------------------------------------------- */
 
 
 
 
270
 
271
+ .grid {
272
+ display: grid;
273
+ grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
274
+ gap: 14px;
275
+ margin: 0;
 
276
  }
277
 
278
+ .card {
279
+ border: 1px solid var(--line);
280
+ border-radius: var(--radius);
281
+ padding: 18px 18px 16px;
282
+ background: var(--bg);
283
  }
284
 
285
+ .card p {
286
+ margin: 0;
287
+ color: var(--fg-muted);
288
+ font-size: 0.9rem;
289
+ line-height: 1.6;
290
  }
291
 
292
+ .card p + p {
293
+ margin-top: 0.6rem;
 
 
294
  }
295
 
296
+ /* --- figures ------------------------------------------------------------ */
 
 
297
 
298
+ figure {
299
+ margin: 0 0 18px;
300
+ border: 1px solid var(--line);
301
+ border-radius: var(--radius);
302
  overflow: hidden;
303
+ background: var(--bg-soft);
304
  }
305
 
306
+ figure img,
307
+ figure video {
308
  width: 100%;
309
+ display: block;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  }
311
 
312
+ figcaption {
313
+ font-size: 0.82rem;
314
+ color: var(--fg-muted);
315
+ padding: 10px 14px;
316
+ border-top: 1px solid var(--line);
317
+ background: var(--bg);
318
  }
319
 
320
+ figcaption b {
321
+ color: var(--fg);
322
  font-weight: 600;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
323
  }
324
 
325
+ .figure-grid {
326
+ display: grid;
327
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
328
+ gap: 14px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  }
330
 
331
+ .figure-grid figure {
332
+ margin: 0;
 
333
  }
334
 
335
+ /* --- tables ------------------------------------------------------------- */
 
 
 
336
 
337
+ .table-scroll {
338
+ overflow-x: auto;
339
+ border: 1px solid var(--line);
340
+ border-radius: var(--radius);
341
  }
342
 
343
+ table {
344
+ border-collapse: collapse;
345
+ width: 100%;
346
+ font-size: 0.88rem;
347
+ min-width: 480px;
348
  }
349
 
350
+ th,
351
+ td {
352
+ text-align: left;
353
+ padding: 10px 14px;
354
+ border-bottom: 1px solid var(--line);
355
  }
356
 
357
+ th {
358
+ font-weight: 600;
359
+ font-size: 0.76rem;
360
+ letter-spacing: 0.05em;
361
+ text-transform: uppercase;
362
+ color: var(--fg-faint);
363
+ background: var(--bg-soft);
364
+ white-space: nowrap;
 
365
  }
366
 
367
+ tbody tr:last-child td {
368
+ border-bottom: 0;
 
369
  }
370
 
371
+ td code {
372
+ font-size: 0.85em;
 
 
 
 
373
  }
374
 
375
+ /* --- code --------------------------------------------------------------- */
 
 
 
 
376
 
377
+ .code {
378
+ border: 1px solid var(--line);
379
+ border-radius: var(--radius);
380
+ overflow: hidden;
381
+ background: var(--bg-code);
382
+ margin: 0 0 14px;
383
  }
384
 
385
+ .code-tabs {
386
+ display: flex;
387
+ gap: 2px;
388
+ padding: 6px 6px 0;
389
+ border-bottom: 1px solid var(--line);
390
+ background: var(--bg-soft);
391
  }
392
 
393
+ .code-tabs button {
394
+ appearance: none;
395
+ border: 0;
396
+ background: transparent;
397
+ font-family: var(--mono);
398
+ font-size: 0.78rem;
399
+ color: var(--fg-muted);
400
+ padding: 7px 12px;
401
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
402
+ cursor: pointer;
403
+ line-height: 1;
404
  }
405
 
406
+ .code-tabs button:hover {
407
+ color: var(--fg);
 
 
408
  }
409
 
410
+ .code-tabs button[aria-selected="true"] {
411
+ background: var(--bg-code);
412
+ color: var(--fg);
413
+ font-weight: 600;
414
+ box-shadow: inset 0 -1px 0 var(--bg-code);
415
  }
416
 
417
+ .code pre {
418
+ margin: 0;
419
+ padding: 16px 18px;
420
+ overflow-x: auto;
421
+ font-family: var(--mono);
422
+ font-size: 0.815rem;
423
+ line-height: 1.65;
424
+ tab-size: 2;
425
  }
426
 
427
+ .code pre[hidden] {
428
+ display: none;
 
 
 
429
  }
430
 
431
+ code {
432
+ font-family: var(--mono);
433
+ font-size: 0.88em;
 
 
 
434
  }
435
 
436
+ p code,
437
+ li code {
438
+ background: var(--bg-code);
439
+ border: 1px solid var(--line);
440
+ border-radius: 4px;
441
+ padding: 1px 5px;
442
  }
443
 
444
+ /* --- links list --------------------------------------------------------- */
 
 
 
445
 
446
+ .links {
447
+ display: grid;
448
+ grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
449
+ gap: 10px;
450
+ list-style: none;
451
+ padding: 0;
452
+ margin: 0;
453
  }
454
 
455
+ .links a {
456
+ display: flex;
457
+ align-items: baseline;
458
+ justify-content: space-between;
459
+ gap: 10px;
460
+ border: 1px solid var(--line);
461
+ border-radius: var(--radius-sm);
462
+ padding: 11px 14px;
463
+ color: var(--fg);
464
+ font-size: 0.9rem;
465
+ font-weight: 500;
466
  }
467
 
468
+ .links a:hover {
469
+ border-color: var(--line-strong);
470
+ background: var(--bg-soft);
471
+ text-decoration: none;
472
  }
473
 
474
+ .links .host {
475
+ font-family: var(--mono);
476
+ font-size: 0.72rem;
477
+ color: var(--fg-faint);
478
+ font-weight: 400;
 
 
 
 
 
479
  }
480
 
481
+ /* --- run-it callout (the one place we ask for a click) ------------------- */
 
 
 
482
 
483
+ .callout {
484
+ border: 1px solid var(--line);
485
+ border-left: 3px solid var(--accent);
486
+ background: var(--bg-soft);
487
+ border-radius: var(--radius-sm);
488
+ padding: 16px 18px;
489
+ font-size: 0.92rem;
490
+ color: var(--fg-muted);
491
  }
492
 
493
+ .callout p {
494
+ margin: 0;
 
 
495
  }
496
 
497
+ .callout p + p {
498
+ margin-top: 0.5rem;
 
499
  }
500
 
501
+ .btn-row {
502
+ display: flex;
503
+ flex-wrap: wrap;
504
+ gap: 10px;
505
+ margin-top: 18px;
506
  }
507
 
508
+ .btn {
509
+ display: inline-flex;
510
+ align-items: center;
511
+ gap: 7px;
512
+ border-radius: var(--radius-sm);
513
+ padding: 9px 16px;
514
+ font-size: 0.89rem;
515
+ font-weight: 550;
516
+ border: 1px solid var(--accent);
517
+ background: var(--accent);
518
+ color: #fff;
519
+ line-height: 1.4;
520
+ }
521
+
522
+ .btn:hover {
523
+ text-decoration: none;
524
+ filter: brightness(1.08);
525
  }
526
 
527
+ .btn.secondary {
528
+ background: transparent;
529
+ color: var(--fg);
530
+ border-color: var(--line-strong);
 
 
531
  }
532
 
533
+ .btn.secondary:hover {
534
+ background: var(--bg-soft);
535
+ filter: none;
536
  }
537
 
538
+ @media (prefers-color-scheme: dark) {
539
+ .btn {
540
+ color: #0e1014;
541
+ }
542
  }
543
 
544
+ /* --- footer ------------------------------------------------------------- */
 
 
 
545
 
546
+ .site-footer {
547
+ margin-top: 64px;
548
+ border-top: 1px solid var(--line);
549
+ padding: 26px 0 44px;
550
+ font-size: 0.83rem;
551
+ color: var(--fg-faint);
552
  }
553
 
554
+ .site-footer .wrap {
555
+ display: flex;
556
+ flex-wrap: wrap;
557
+ gap: 10px 24px;
558
+ align-items: baseline;
559
+ justify-content: space-between;
 
 
560
  }
561
 
562
+ .site-footer a {
563
+ color: var(--fg-muted);
 
 
564
  }
565
 
566
+ .site-footer p {
567
+ margin: 0;
568
+ max-width: 60ch;
 
569
  }
570
 
571
+ .footer-links {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
572
  display: flex;
573
+ gap: 16px;
574
+ flex-wrap: wrap;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
575
  }
tabs.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Code-sample tab switcher. Progressive enhancement: with JS disabled every
2
+ // panel except the first stays hidden via the `hidden` attribute in the markup,
3
+ // so the page still shows one working example.
4
+ document.querySelectorAll(".code-tabs").forEach((tabs) => {
5
+ const buttons = [...tabs.querySelectorAll("button")];
6
+ const panels = buttons.map((b) => document.getElementById(b.dataset.panel));
7
+
8
+ const select = (i) => {
9
+ buttons.forEach((b, j) => b.setAttribute("aria-selected", String(i === j)));
10
+ panels.forEach((p, j) => p && (p.hidden = i !== j));
11
+ };
12
+
13
+ buttons.forEach((b, i) => b.addEventListener("click", () => select(i)));
14
+ select(0);
15
+ });