Style LibraryNew · weekly review
Launch Keynote
StylemodernAn Apple-keynote product-reveal aesthetic: a pitch-black stage, luminous product imagery, huge tight-tracking headlines and one electric-blue accent. The signature is a scroll-scrubbed frame sequence - a sticky canvas p…
#000000#F5F5F7#2997FF#1D1D1F#86868BPreview
A sample page drawn from this style’s tokens — a guide to the look, not the exact output.
Plan the week in ten minutes
Pull in every task, see what matters, and share one clear plan with the team.
Get startedSee how it worksDocs
Tasks done1,284+12% this week
Sign in
Emailyou@example.com
Remember meContinueToday
Review roadmapDone
Ship onboardingIn progress
Team sync3 pm
Prompt
Paste into any AI assistant before describing what to build — or attach it to a project below.
# Visual style: Launch Keynote
An Apple-keynote product-reveal aesthetic: a pitch-black stage, luminous product imagery, huge tight-tracking headlines and one electric-blue accent. The signature is a scroll-scrubbed frame sequence - a sticky canvas plays a pre-rendered product animation as you scroll, one product and one message per viewport, like a trillion-dollar product page.
## Philosophy
The launch-keynote creed: the page is a product unveiling, not a flyer. The whole screen is a pitch-black stage where light falls only on the product, and the audience is pulled forward one viewport at a time - one message per screen, one reveal per screen.
Core principles:
- Pitch-black stage (#000000): no card borders, no decorative texture. Black is an infinitely deep backdrop and the product lights itself. Whitespace is dramatic tension
- One product, one message per viewport: each screen carries a single claim. Scroll is the narrative beat, never a pile of information
- Frame-by-frame reveal (scroll-scrub): the signature. A sticky full-screen canvas plays a 96-frame pre-rendered animation as you scroll - the product spins, disassembles, lights up, and the scrollbar is the playhead
- Huge, tight tracking: hero headlines use a system SF-grade sans, clamp up to ~7rem, tracking pulled tight (-0.03em), weight contrast of 600 against 400 for tension
- One electric blue (#2997FF): the entire site has a single accent, on links, CTAs and key spec numbers. Everything else is black, near-white (#F5F5F7) and mid gray (#86868B)
- Spec grids: technical numbers land in a calm, restrained, monospaced-aligned grid of large figures that reads as credible
Design principles:
- Performance line: the frame sequence uses webp frames + IntersectionObserver lazy-loading, preloading 96 Image objects only when the section nears view; a poster paints first to prevent a blank frame; rAF throttling reads scroll position once per frame, never layout-thrashing
- No CLS: every image and the canvas carry an explicit aspect-ratio; canvas is devicePixelRatio-aware but capped at 2x to avoid a memory blowup
- Fallback: under prefers-reduced-motion, skip the scroll wiring and statically render the final frame with all callouts visible
- Accessibility: give the decorative canvas aria-hidden; critical information always lives in the text layer, never baked into the frames
## Do
- Pitch-black #000000 stage, no borders or texture, the product self-lights, whitespace is tension
- One product and one message per viewport; scroll is a narrative beat, not stacked info
- Frame-by-frame reveal: a sticky full-screen canvas plays a webp frame sequence on scroll, scrollbar as playhead
- Lazy-load the frame sequence only in view (IntersectionObserver); paint the poster first to avoid a blank frame
- Huge, tight hero type: a system SF-grade sans, clamp up to ~7rem, tracking -0.03em
- One electric-blue #2997FF accent for links/CTAs/key numbers; everything else black, near-white #F5F5F7, mid gray #86868B
- Present specs as a calm grid of large numbers; explicit aspect-ratio to prevent CLS
- Under prefers-reduced-motion, statically render the final frame with all callouts visible
## Don't
- Never use rainbow gradients or a second accent (beyond the one electric blue it is all black/white/gray)
- Never read offsetTop / getBoundingClientRect per frame inside a scroll handler (layout thrash)
- Never preload all 96 frames on page load (IO lazy-load or it is a data disaster)
- Never bake critical information into the frame images (frames may not load; reduced-motion shows one frame)
- Never pile on card borders and rounded decoration that break the infinite depth of the black stage
- Never ignore prefers-reduced-motion or a devicePixelRatio cap
## Rules for the AI
# Launch Keynote Design System
You are an expert frontend developer specializing in Apple-keynote product-reveal interfaces. Generate all code strictly following these specifications.
## Style Identity
- **Name**: Launch Keynote
- **Essence**: The page is a product unveiling; a pitch-black stage, a scroll-scrubbed frame sequence, one product and one message per viewport
- **Mood**: Premium, cinematic, restrained, trillion-dollar product page
- **Inspiration**: apple.com product pages, keynote reveals, flagship hardware launches
---
## Forbidden
| Pattern | Reason |
|---------|--------|
| Rainbow gradients or a second accent color | Beyond one electric blue it is all black/white/gray |
| Reading offsetTop / getBoundingClientRect per frame in a scroll handler | Layout thrash |
| Preloading all frames on page load | Data disaster; lazy-load via IntersectionObserver |
| Baking critical info into the frame images | Frames may not load; reduced-motion shows one frame |
| Piling on card borders and rounded decoration | Breaks the infinite depth of the black stage |
| Ignoring prefers-reduced-motion or a devicePixelRatio cap | Accessibility + memory blowup |
## Required
### Pitch-black stage + one electric blue
- Background is always #000000, raised surface #1D1D1F, text near-white #F5F5F7, secondary mid-gray #86868B
- The whole site has one accent #2997FF (pressed #0071E3): links, CTAs, key spec numbers
- No decorative texture; whitespace is dramatic tension; one product and one message per viewport
### Signature: scroll-scrubbed frame sequence
Structure = a section ~350vh tall containing a sticky top-0 h-screen canvas:
```html
<section class="relative h-[350vh]">
<div class="sticky top-0 h-screen flex items-center justify-center">
<canvas aria-hidden="true"></canvas>
</div>
</section>
```
Lazy-load (preload the 96 webp frames only in view):
```js
const io = new IntersectionObserver(([e]) => {
if (!e.isIntersecting) return; io.disconnect();
for (let i = 0; i < 96; i++) {
const img = new Image();
img.src = "/frames/frame-" + String(i).padStart(4, "0") + ".webp";
frames[i] = img;
}
}, { rootMargin: "50% 0px" });
io.observe(sectionEl);
```
rAF scrub (read scroll position once per frame):
```js
let raf = 0;
function draw() {
raf = 0;
const rect = sectionEl.getBoundingClientRect();
const total = rect.height - innerHeight;
const p = Math.min(1, Math.max(0, -rect.top / total));
const idx = Math.min(95, Math.floor(p * 95));
const img = frames[idx];
if (img && img.complete) paint(canvas, img); // keep last frame if not loaded
}
addEventListener("scroll", () => { if (!raf) raf = requestAnimationFrame(draw); }, { passive: true });
```
Canvas sizing (devicePixelRatio-aware, capped at 2):
```js
const dpr = Math.min(2, devicePixelRatio || 1);
canvas.width = w * dpr; canvas.height = h * dpr;
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
// object-fit: contain by hand: compute a uniform scale, letterbox with black
```
Frame count/size: a webp sequence (e.g. 1280x720), around 96 frames; always pair a poster.webp painted first to avoid a blank frame.
### Callout milestones
3-4 text blocks fade in + translateY at specific progress (e.g. p>0.2, p>0.5, p>0.8), animating opacity/transform only.
### Fallbacks (critical)
- prefers-reduced-motion: skip the scroll wiring, statically render the final frame frame-0095 with all callouts visible
- Frame not loaded: keep the last drawn frame (a drawn cache), never clear to a white flash
### Typography
System SF stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto...; hero clamps up to ~7rem with -0.03em tracking; weight contrast 600/400; specs in a grid of large numbers.
## Self-Verification Checklist
- [ ] Background is pitch-black with one electric blue and no second accent
- [ ] Scrub = sticky canvas + rAF, reading scroll once per frame
- [ ] 96 frames lazy-loaded via IO, poster painted first, last frame kept if not loaded
- [ ] devicePixelRatio capped at 2, explicit aspect-ratio to prevent CLS
- [ ] prefers-reduced-motion statically renders the final frame with all callouts visible
- [ ] Critical information is in the text layer, not the framesExample prompts
Ready-made page requests in this style.
Flagship Hardware Launch Page
Create an Apple-keynote style flagship hardware launch page with: 1. A pitch-black #000000 stage, near-white #F5F5F7 text, one electric-blue #2997FF accent for links, CTAs and key spec numbers - no second color 2. A frosted keynote nav bar (black/70 backdrop-blur) with an Overview/Specs/Buy set, Buy in blue 3. A huge tight-tracking hero headline (system SF stack, clamp up to ~7rem, -0.03em) 4. THE SIGNATURE: a section ~350vh tall with a sticky top-0 h-screen canvas that plays a 96-frame webp sequence as the scrollbar becomes the playhead; lazy-load the frames only in view via IntersectionObserver, paint a poster first, throttle the scroll with requestAnimationFrame reading position once per frame, and keep the last drawn frame if one has not loaded 5. 3-4 feature callouts that fade + translate in at progress milestones (opacity/transform only) 6. A spec grid of large numbers, dark #1D1D1F cards for chip/camera/battery 7. prefers-reduced-motion: skip the scroll wiring and statically render the final frame with all callouts visible; devicePixelRatio capped at 2; explicit aspect-ratios to prevent CLS
Minimal SaaS Reveal
Create a keynote-style SaaS product reveal with: 1. A black stage, one electric-blue #2997FF accent, near-white text, mid-gray #86868B captions 2. A hero with a huge tight headline and a single blue pill CTA plus a hairline "Learn more" text link 3. A sticky-canvas scroll section that scrubs a webp frame sequence of the app UI assembling itself, lazy-loaded via IntersectionObserver with a poster painted first 4. Feature callouts fading in at scroll milestones; all real text, never baked into the frames 5. Below the fold, quiet black sections with a spec/plan grid of large numbers on #1D1D1F cards 6. A frosted top nav and a calm footer in gray; the only accent anywhere is the one blue 7. Honor prefers-reduced-motion by rendering the final frame statically with callouts visible; cap devicePixelRatio at 2
Use it in an app
Create a free account to attach this style to a project: the hub adds it to the prompt your AI assistant gets, so it builds every page in this look.
From StyleKit (MIT, commit 0156849).View source