---
name: liquid-glass-agency
description: "Use this plugin when the user wants a dark, luxury single-page landing for an AI web-design agency: cinematic video backgrounds, editorial Instrument Serif italic headings, liquid-glass (glassmorphism) cards and CTAs, BlurText word-by-word reveals, and section-by-section storytelling. Invoke for 'liquid glass agency', 'glass landing page', 'AI agency site', or when the user references the Liquid Glass Agency template."
version: 0.1.0
od:
  mode: prototype
  surface: web
  scenario: design
  preview:
    type: html
    entry: example.html
  design_system:
    requires: false
---

# Liquid Glass Agency — Cinematic AI Web-Design Landing

Produce a dark, premium, single-page landing page for an AI-powered web-design agency with a luxury editorial aesthetic: black backgrounds, white text, **liquid glass (glassmorphism)** effects, and cinematic video backgrounds. A complete, rendered reference implementation ships beside this skill at `example.html` — **start from it**. Copy `example.html`, then adjust copy and data; do not rewrite the CSS or invent a new visual language. The seed already encodes the exact tokens, glass utilities, section layout, video wiring, and reveal animations described below.

This is the authoritative build brief. Follow it exactly — the named CSS variables, fonts, media URLs, and animation patterns are locked.

**Assets (critical):** `example.html` ships the logo, hero poster, and the two feature-preview images as **inlined `data:image/svg+xml;base64,…` URIs** — keep those exactly as they are when you copy the seed. The large **CloudFront `.mp4`** background video and the **Mux HLS `.m3u8`** section videos are intentionally kept as **remote CDN URLs** — do not inline multi-MB video. Do NOT swap any inlined data URI for a remote avatar/image host (`i.pravatar.cc`, `api.dicebear.com`, `figma.site`, etc.): remote image hosts rate-limit / 403 inside the preview sandbox and render broken. Only replace an inlined asset if the user supplies a real image, and prefer a data URI.

## Stack

- Default output: the single self-contained `example.html` seed (vanilla HTML/CSS/JS). It already includes everything inline.
- If the user explicitly asks for a React + Vite + Tailwind + shadcn/ui + Framer Motion (`motion/react`) project, port the seed faithfully: same tokens, same section structure, `lucide-react` for icons, Instrument Serif + Barlow from Google Fonts. Do not change the design while porting. Key deps for the React port: `motion ^12.35.0`, `hls.js ^1.6.15` (for the Mux HLS section videos), `lucide-react ^0.462.0`, `react-router-dom ^6.30.1`.
- **Motion loading (locked).** If you emit a single self-contained inline-JSX file instead of the Vite project, Motion's React hooks (`useScroll`, `useTransform`, `useAnimationFrame`, …) exist only in the **React** UMD build: load `<script src="https://unpkg.com/framer-motion@11.11.13/dist/framer-motion.js"></script>` and read them off `window.Motion` — never the vanilla `https://unpkg.com/motion@.../dist/motion.js` DOM bundle, which lacks `useScroll` and renders a blank page. (The Vite project imports from npm and is unaffected.)

## Fonts

Load from Google Fonts:
`https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Barlow:wght@300;400;500;600&display=swap`

- Headings: **Instrument Serif, italic** → `.font-heading` (`font-family:'Instrument Serif',serif; font-style:italic`).
- Body: **Barlow** (weights 300, 400, 500, 600) → `.font-body`. Body default weight is 300.

In a Tailwind port, extend `fontFamily`: `heading: ["'Instrument Serif'","serif"]`, `body: ["'Barlow'","sans-serif"]`.

## Color Theme — locked (CSS custom properties, HSL triplets)

```
:root {
  --background: 213 45% 67%;
  --foreground: 0 0% 100%;
  --card: 213 45% 62%;
  --card-foreground: 0 0% 100%;
  --primary: 0 0% 100%;
  --primary-foreground: 213 45% 67%;
  --secondary: 213 45% 72%;
  --secondary-foreground: 0 0% 100%;
  --muted: 213 35% 60%;
  --muted-foreground: 0 0% 100% / 0.7;
  --accent: 213 45% 72%;
  --accent-foreground: 0 0% 100%;
  --destructive: 0 84.2% 60.2%;
  --border: 0 0% 100% / 0.2;
  --input: 0 0% 100% / 0.2;
  --ring: 0 0% 100% / 0.3;
  --radius: 9999px;
  --glass-bg: rgba(255, 255, 255, 0.12);
  --glass-border: rgba(255, 255, 255, 0.25);
  --glass-shadow: 0 4px 30px rgba(0, 0, 0, 0.08);
  --glass-blur: 16px;
}
```

The page `body` background is **pure black `#000`**; the desaturated-blue `--background` triplet shows through the cinematic video and glass surfaces. White text everywhere; muted text uses `rgba(255,255,255,0.6)` / `0.7`. `--radius: 9999px` ⇒ pills/round buttons by default.

## Liquid Glass CSS (the core visual effect) — locked

Two utility classes, defined under `@layer components` in a Tailwind build (inline `<style>` in the seed):

- `.liquid-glass` (subtle): `background: rgba(255,255,255,0.01); background-blend-mode: luminosity; backdrop-filter: blur(4px); border:none; box-shadow: inset 0 1px 1px rgba(255,255,255,0.1); position:relative; overflow:hidden;`
- `.liquid-glass-strong` (prominent, for CTA buttons): same recipe but `backdrop-filter: blur(50px)` and `box-shadow: 4px 4px 4px rgba(0,0,0,0.05), inset 0 1px 1px rgba(255,255,255,0.15);`

Both get a `::before` pseudo-element that paints a **thin glowing gradient border** via the `mask-composite` trick: `inset:0; border-radius:inherit; padding:1.4px;` with a vertical `linear-gradient(180deg, …)` that is bright (`rgba(255,255,255,0.45/0.5)`) at top and bottom and transparent in the middle, masked with `-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events:none;`. Keep these recipes byte-for-byte.

## Assets & Media URLs — locked

- Hero background video (CloudFront MP4, kept remote): `https://plugin-assets.open-design.ai/plugins/liquid-glass-agency/hf_20260307_083826_e938b29f-a43a-41ec-a153-3d4730578ab8-b7258e.mp4`
- Hero poster: inlined `data:image/svg+xml` in the seed (desaturated-blue atmospheric still). In a fuller React build the original was `/images/hero_bg.jpeg`.
- StartSection video (Mux HLS): `https://stream.mux.com/9JXDljEVWYwWu01PUkAemafDugK89o01BR6zqJ3aS9u00A.m3u8`
- Stats section video (Mux HLS, rendered **desaturated** `filter: saturate(0)`): `https://stream.mux.com/NcU3HlHeF7CUL86azTTzpy3Tlb00d6iF3BmCdFslMJYM.m3u8`
- CTA/Footer video (Mux HLS): `https://stream.mux.com/8wrHPCX2dC3msyYU9ObwqNdm00u3ViXvOSHUMRYSEe5Q.m3u8`
- Feature GIFs (originals): `https://plugin-assets.open-design.ai/plugins/liquid-glass-agency/hero-finlytic-preview-CV9g0FHP-9d3cb6.gif` (row 1, right) and `https://plugin-assets.open-design.ai/plugins/liquid-glass-agency/hero-wealth-preview-B70idl_u-7969db.gif` (row 2, left). The seed ships inlined SVG mock previews in their place so the card never breaks; you may use the GIF URLs in a React port.
- Logo icon: inlined SVG data URI in the seed (`h-12 w-12` ⇒ 48×48).

**Note for the vanilla seed:** HLS `.m3u8` cannot play in `<video>` without `hls.js`. To keep the seed self-contained and dependency-free, every video-background section reuses the CloudFront MP4 (which plays natively) as a stand-in. In a React port, wire each section's Mux HLS URL through `hls.js`.

All video backgrounds: `autoPlay loop muted playsInline`, `object-fit: cover`, with **top + bottom black gradient fades** (`linear-gradient(to bottom/top, #000, transparent)`, ~200px each; hero bottom fade is 300px), `pointer-events: none`.

## Section-by-section layout

### Navbar (fixed, floating)
`position: fixed; top:16px; left:0; right:0; z-index:50; padding: 12px 32px` (lg `px-16`). Left: logo image (48×48). Center (desktop only, `hidden md:flex`): a `liquid-glass rounded-full` pill (`px-1.5 py-1`) of links **Home, Services, Work, Process, Pricing**, each `px-3 py-2 text-sm font-medium text-foreground/90`; last item is a solid white "Get Started" button (`bg-white text-black rounded-full px-3.5 py-1.5 text-sm`) with a lucide `ArrowUpRight` icon. Hide the pill below ~900px.

### Hero
`relative; height: 1000px; overflow: visible`. Background `<video>` absolutely positioned `left-0 w-full h-auto object-contain z-0` with `top: 20%`, CloudFront MP4 source, poster = inlined still. Dark overlay `absolute inset-0 bg-black/5 z-0`. Bottom gradient fade 300px (`to bottom, transparent, #000`). Content (`z-10`, centered, `paddingTop: 150px`):
- Badge pill: `liquid-glass rounded-full px-1 py-1` with inner white "New" badge (`bg-white text-black rounded-full px-3 py-1 text-xs font-semibold`) + text "Introducing AI-powered web design."
- Heading (**BlurText**): "The Website Your Brand Deserves" — `text-6xl md:text-7xl lg:text-[5.5rem] font-heading italic leading-[0.8] max-w-2xl tracking-[-4px]`, animated word-by-word from bottom with blur, 100ms stagger.
- Subtext (`motion.p`): "Stunning design. Blazing performance. Built by AI, refined by experts. This is web design, wildly reimagined." — blur-in, `text-sm md:text-base text-white font-light`.
- CTAs: "Get Started" (`liquid-glass-strong rounded-full px-5 py-2.5` + `ArrowUpRight`) and "Watch the Film" (text-only with filled `Play`).
- Partners bar (`mt-auto pb-8 pt-16`): a `liquid-glass` pill "Trusted by the teams behind", then 5 partner names in `text-2xl md:text-3xl font-heading italic text-white`, `gap-12 md:gap-16`: **Stripe, Vercel, Linear, Notion, Figma**.

### Start ("How It Works")
Full-width video-background section (StartSection Mux HLS). Content centered, `minHeight: 500px`: badge "How It Works" (`liquid-glass rounded-full px-3.5 py-1`); heading "You dream it. We ship it." (`text-4xl md:text-5xl lg:text-6xl font-heading italic tracking-tight leading-[0.9]`); subtext "Share your vision. Our AI handles the rest—wireframes, design, code, launch. All in days, not quarters." (`text-white/60 font-light`); CTA "Get Started" (`liquid-glass-strong rounded-full px-6 py-3`).

### Features Chess (alternating rows)
Header: "Capabilities" badge + "Pro features. Zero complexity." heading. Row 1 (content left / image right): title "Designed to convert. Built to perform.", body "Every pixel is intentional. Our AI studies what works across thousands of top sites—then builds yours to outperform them all.", button "Learn more" (`liquid-glass-strong`), media = feature-1 GIF inside `liquid-glass rounded-2xl overflow-hidden`. Row 2 (`flex-row-reverse`, content right / image left): title "It gets smarter. Automatically.", body "Your site evolves on its own. AI monitors every click, scroll, and conversion—then optimizes in real time. No manual updates. Ever.", button "See how it works", media = feature-2 GIF in `liquid-glass rounded-2xl`.

### Features Grid ("Why Us")
Header: "Why Us" badge + "The difference is everything." heading. 4-column grid (`grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6`), each card `liquid-glass rounded-2xl p-6` with a lucide icon in a `liquid-glass-strong rounded-full w-10 h-10` circle:
- `Zap` — "Days, Not Months" — "Concept to launch at a pace that redefines fast. Because waiting isn't a strategy."
- `Palette` — "Obsessively Crafted" — "Every detail considered. Every element refined. Design so precise, it feels inevitable."
- `BarChart3` — "Built to Convert" — "Layouts informed by data. Decisions backed by performance. Results you can measure."
- `Shield` — "Secure by Default" — "Enterprise-grade protection comes standard. SSL, DDoS mitigation, compliance. All included."

### Stats
Video-background section (Stats Mux HLS, **`filter: saturate(0)`** desaturated B&W). Content: a `liquid-glass rounded-3xl p-12 md:p-16` card with a 4-column grid; values `text-4xl md:text-5xl lg:text-6xl font-heading italic`, labels `text-white/60 font-light text-sm`:
- "200+" / "Sites launched"
- "98%" / "Client satisfaction"
- "3.2x" / "More conversions"
- "5 days" / "Average delivery"

### Testimonials
Header: "What They Say" badge + "Don't take our word for it." heading. 3-column grid (`md:grid-cols-3 gap-6`), each card `liquid-glass rounded-2xl p-8`; quote `text-white/80 font-light text-sm italic`, name `text-white font-medium text-sm`, role `text-white/50 font-light text-xs`:
- "A complete rebuild in five days. The result outperformed everything we'd spent months building before." — Sarah Chen, CEO, Luminary
- "Conversions up 4x. That's not a typo. The design just works differently when it's built on real data." — Marcus Webb, Head of Growth, Arcline
- "They didn't just design our site. They defined our brand. World-class doesn't begin to cover it." — Elena Voss, Brand Director, Helix

### CTA + Footer
Video-background section (CTA Mux HLS). Heading "Your next website starts here." (`text-5xl md:text-6xl lg:text-7xl font-heading italic leading-[0.85]`); subtext "Book a free strategy call. See what AI-powered design can do. No commitment, no pressure. Just possibilities."; buttons "Book a Call" (`liquid-glass-strong rounded-full px-6 py-3`) and "View Pricing" (`bg-white text-black rounded-full px-6 py-3`). Footer bar (`mt-32 pt-8 border-t border-white/10`): left "© 2026 Studio. All rights reserved." (`text-white/40 text-xs`); right "Privacy", "Terms", "Contact" links (`text-white/40 text-xs`).

## Overall page structure

```
<div bg-black>
  <Navbar/>           // fixed floating nav
  <Hero/>             // 1000px tall, CloudFront MP4 bg
  <div bg-black>
    <StartSection/>   // HLS video bg, "How It Works"
    <FeaturesChess/>  // alternating text/gif rows
    <FeaturesGrid/>   // 4-card grid
    <Stats/>          // HLS video bg (desaturated), stats card
    <Testimonials/>   // 3-card grid
    <CtaFooter/>      // HLS video bg, CTA + footer
  </div>
</div>
```

## Animations (map Framer-Motion down to vanilla in the seed)

- **BlurText (hero heading):** split text by words; each word is a span animating from `{filter:blur(10px), opacity:0, y:50}` → `{filter:blur(0), opacity:1, y:0}`, staggered ~100ms per word, triggered by `IntersectionObserver`. In the seed, `[data-blur]` is split into `.blur-word` spans toggled via IO; in React, `motion.span` keyframes.
- **Reveal (subtext, CTAs, badges, cards, headings):** `whileInView` → in the seed an `IntersectionObserver` adds `.in` to `.reveal` (from `{opacity:0, translateY(28px), blur(10px)}` to settled). Hero subtext delay ~0.8s, CTAs ~1.1s in the React original.
- All video backgrounds autoplay/loop/muted/playsInline with top+bottom black gradient fades.
- Respect `prefers-reduced-motion`: force reveals visible.

## Icons (lucide / lucide-react)

`ArrowUpRight`, `Play` (filled), `Zap`, `Palette`, `BarChart3`, `Shield`. In the vanilla seed these are inline SVGs; in a React port use `lucide-react`.

## Color Rules — hard

Dark editorial palette only: black `#000` page, white text, desaturated-blue glass tint via the locked `--background`/`--card` HSL triplets. Muted text = `white/60`–`/80`. **Do not introduce a saturated accent hue** (no purple/indigo/teal/green) — the luxury look comes from monochrome white-on-black + glass, not a colored accent. Keep `--radius: 9999px` (pill geometry) and the two liquid-glass recipes intact.
