Best For
cinematic / video hero / background video
电影视频首屏
A cinematic opener led by a short looping video. A poster frame paints first as the LCP; the muted video autoplays and loops only once in view; text sits on a readability scrim. Dark grading and slow motion build a trailer-like immersive entrance.
Best For
cinematic / video hero / background video
Primary Move
Poster frame as LCP: poster attribute + AVIF/WebP, small and sharp, instant
Watch Out
Never make the video the LCP dependency or omit the poster (blank first paint, LCP blowup)
Showcase Entry
Live preview of the showcase page. Click to explore the full experience.
Color Palette
Primary
#05060A
Secondary
#F3EFE8
Accent 1
#E4C063
Accent 2
#141821
AI Implementation
Use the Hard Prompt by default to generate UI. Use the Design Spec to understand, modify, and review the style. Use the Creative Brief for early exploration.
Use this by default: copy it, append the concrete requirement, and let AI generate consistent production UI.
When to use
How to use
STYLEKIT_STYLE_REFERENCE
style_name: Cinematic Video Hero
style_slug: cinematic-video-hero
style_source: /styles/cinematic-video-hero
# Hard Prompt
## When To Use
Use this when you want AI to generate code with strict style consistency. It is the safest default for production UI.
## How To Use
- Copy the full prompt into ChatGPT, Claude, Cursor, or another coding assistant.
- Append the concrete product/page requirement after the prompt.
- After generation, check the forbidden rules and interaction states before accepting the output.
Strictly follow the style rules below and maintain consistency. No style drift allowed.
## Requirements
- Prioritize style consistency first, then creative extension.
- When conflicts arise, treat prohibitions as the highest priority.
- Self-check before output: verify colors, typography, spacing, and interactions still match this style.
## Style Rules
# Cinematic Video Hero Design System
You are an expert frontend developer specializing in cinematic video-hero interfaces. Generate all code strictly following these specifications.
## Style Identity
- **Name**: Cinematic Video Hero
- **Essence**: The opener is a trailer; a short looping video injects a sense of time, but the poster leads for performance
- **Mood**: Filmic, atmospheric, premium, trailer-like
- **Inspiration**: Film studio landing pages, product launch teasers, streaming-service hero reels
---
## Forbidden
| Pattern | Reason |
|---------|--------|
| Video as the LCP dependency / no poster | Blank first paint, LCP blowup |
| preload="auto" or auto-loading a large video | Data + performance disaster |
| Critical information inside the video | It may not play or may be downgraded |
| Autoplay with sound | Browsers block it and it disturbs users |
| Text directly on video with no scrim | Unreadable, fails contrast |
| Fast / jump-cut motion or a non-seamless loop | Breaks the cinematic feel |
| Ignoring prefers-reduced-motion or a mobile fallback | Accessibility + data fail |
## Required
### Poster First (poster = LCP)
The video must carry a poster attribute pointing at a small, sharp AVIF/WebP first frame. The poster paints instantly and is the LCP; the video is progressive enhancement. Set an explicit aspect-ratio (e.g. h-screen or aspect-video) to prevent CLS.
### Video Loading and Playback
- Attributes: muted loop playsInline preload="none" + poster
- Play only in view (IntersectionObserver), never load on page load:
```js
const io = new IntersectionObserver(([e]) => {
if (e.isIntersecting) { v.load(); v.play().catch(() => {}); io.disconnect(); }
}, { threshold: 0.25 });
io.observe(v);
```
- Dual source: `<source src="x.webm" type="video/webm"><source src="x.mp4" type="video/mp4">`
### Readability Scrim
Before text over video, lay a gradient darkening for 4.5:1:
`linear-gradient(to top, rgba(5,6,10,0.78), rgba(5,6,10,0.2) 45%, rgba(5,6,10,0.45))`
### Dark Cinematic Grade
- Near-black base #05060A / raised surface #141821 / paper text #F3EFE8
- Text on footage: text-white + white/80 + white/60
- One warm gold #E4C063: primary CTA, chapter kickers, highlights; steel #9AA6B8 for secondary
- Optional: cv-letterbox top/bottom black bars for a widescreen frame
### Fallbacks (critical)
- prefers-reduced-motion: do not autoplay, show the poster still, offer a play button for opt-in
- Save-Data (navigator.connection.saveData): skip the video entirely, show poster only
- Mobile may show poster only (saves data + battery)
### Accessibility
- Decorative video aria-hidden="true"; informational video gets <track kind="captions">
- Provide a pause/play affordance; never strip user control
## Self-Verification Checklist
- [ ] Video has a poster and the poster is the LCP, instant
- [ ] preload="none" + play only in view (IntersectionObserver)
- [ ] muted loop playsInline, a silent seamless short loop
- [ ] Text over video sits on a scrim and passes contrast
- [ ] Critical information is in the text layer, not the video
- [ ] prefers-reduced-motion / Save-Data fallbacks present
- [ ] Dark grade + single warm-gold accent + CLS prevented
## Absolute Bans (Match and Refuse)
If any of the following patterns appear, it is a style violation — rewrite without exception.
- make the video the LCP dependency or omit the poster (blank first paint, LCP blowup)
- preload="auto" or auto-load a large video (data + performance disaster)
- put critical information inside the video (it may not play or may be downgraded)
- autoplay with sound (browsers block it and it disturbs users)
- place text directly on video with no scrim
- use fast / jump-cut motion or a loop that does not seam
- ignore prefers-reduced-motion or a mobile fallback
## Self-Check (Verify Before Shipping)
If any item fails, the style has drifted — fix before shipping.
- [ ] No purple-to-blue gradients
- [ ] No overused fonts (Inter, Roboto, Geist, Fraunces, Plus Jakarta Sans)
- [ ] No nested cards (cards inside cards)
- [ ] No gray text on colored backgrounds
- [ ] Body text contrast meets WCAG AA (>= 4.5:1)
- [ ] No bounce or elastic easing curves
- [ ] Animations have a prefers-reduced-motion fallback
- [ ] Body text line length capped at 65-75 characters
- [ ] No side-stripe accent borders (border-left/right > 1px)
- [ ] No gradient text (background-clip: text)
- [ ] No glassmorphism used as the default surface treatment
- [ ] No tiny uppercase tracked eyebrow labels above every section heading
- [ ] never make the video the LCP dependency or omit the poster (blank first paint, LCP blowup)
- [ ] never preload="auto" or auto-load a large video (data + performance disaster)
- [ ] never put critical information inside the video (it may not play or may be downgraded)
- [ ] never autoplay with sound (browsers block it and it disturbs users)
- [ ] never place text directly on video with no scrimUse it in your workflow
Drop this style's theme into an existing shadcn project with one command.
npx shadcn add https://www.stylekit.top/r/cinematic-video-hero.jsonContributors can build the unpublished CLI from a local checkout.
pnpm --filter stylekit-cli build && node packages/cli/dist/index.js add cinematic-video-heroContributors can preview Cinematic Video Hero through the repository-local MCP package.
pnpm --filter stylekit-mcp build && node packages/mcp/dist/index.jsComponent Templates
Warm-gold cinematic CTA and a frosted secondary
Frontend Readiness
This layer tracks whether the style is ready for real websites: theme modes, state feedback, keyboard access, and performance constraints.
Overall
51%
Fallback
Dark Mode
0%
MissingUI States
79%
PartialMotion
70%
PartialA11y
70%
PartialPerformance
35%
FallbackButton
Default / Hover / Focus Visible / Active / Disabled
Input
Default / Hover / Focus Visible / Disabled / Error
Card
Default / Hover / Focus Visible / Loading / Skeleton
Form
Default / Focus Visible / Disabled / Loading / Error
/* Cinematic Video Hero Global Styles */
:root {
--cv-base: #05060A;
--cv-surface: #141821;
--cv-paper: #F3EFE8;
--cv-gold: #E4C063;
--cv-steel: #9AA6B8;
}
/* Full-bleed video / poster base */
.cv-cover {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: cover;
}
/* Readability scrims */
.cv-scrim-cinematic { background: linear-gradient(to top, rgba(5,6,10,0.78), rgba(5,6,10,0.2) 45%, rgba(5,6,10,0.45)); }
/* Letterbox bars for a filmic frame (optional) */
.cv-letterbox::before,
.cv-letterbox::after {
content: "";
position: absolute;
left: 0; right: 0;
height: 6vh;
background: #05060A;
z-index: 20;
pointer-events: none;
}
.cv-letterbox::before { top: 0; }
.cv-letterbox::after { bottom: 0; }
@media (prefers-reduced-motion: reduce) {
/* video is not autoplayed by script; poster stays. Nothing to animate. */
}IDE Integration
Download configuration files for AI coding assistants to generate code in this style.
Style Pack
Get complete machine-readable style assets including design tokens, Tailwind presets, CSS variables, and shadcn/ui themes.
Metadata
Style metadata including version information
Design Tokens
Compatible with Figma / Style Dictionary / Tokens Studio
Tailwind Preset
Tailwind CSS theme preset, import directly in config
Global CSS
CSS variables and base styles
shadcn Theme
shadcn/ui theme configuration
CSS Variables
Pure CSS variables, works with any project
SKILL.md
Loadable skill pack for Cursor / Claude Code / VS Code
The cinematic-video-hero creed: the opener is a trailer, not a slide. Video injects a sense of time into a static page — light flowing, mist drifting, color breathing — but it must first yield to performance: the poster paints instantly, the video slips in behind it.
WCAG 2.1 compliance analysis based on color contrast and typography readability.
Overall Score
Grade: B - Good
Contrast Ratios
| Context | Colors | Ratio | AA | AAA |
|---|---|---|---|---|
| Text on background | /#ffffff / #05060A | 20.25:1 | ||
| Text on secondary background | /#ffffff / #141821 | 17.76:1 | ||
| Button primary | /#05060A / #E4C063 | 11.59:1 | ||
| Text on accent 1 | /#ffffff / #E4C063 | 1.75:1 |
Readability
Score
85/100
Font Size
text-base md:text-lg
Font Weight
font-semibold text-white tracking-tight
Line Height
default
Scoring is based on WCAG 2.1 standards. AA requires 4.5:1 contrast for normal text, 3:1 for large text; AAA requires 7:1 for normal text, 4.5:1 for large text.