Website

Build a fast AI product site with a CSS aurora background, glass cards and a dark and light theme toggle

Builds an AI product site on your hosting server with a pure CSS aurora background, frosted glass cards and a dark and light theme toggle that follows the system setting and remembers the choice. Contrast is measured in both themes, the glass has a solid fallback and every page is measured on mobile to 100.

When to use it

When you want a modern, luminous site with dark mode for your AI or software product without the effects hurting speed or readability.

What you get

A five-page site with an aurora background, glass cards and two themes, plus a contrast audit in both themes, a per-page mobile and desktop Lighthouse table and the list of fixes applied.

Does it change anything in my account?

Only with your approval. The assistant first shows a preview of every change and waits for your go-ahead.

Works with

SEO Intelligence, Search Console

Fill in before sending

[AI product name][server name][what it does, for whom][three steps][4 to 6 features][trial length, sign-up URL][email][phone][WhatsApp number][address][domain][colours, or "you choose"]
Build a multi-page product site with an aurora background, frosted glass cards and light and dark themes for [AI product name] on the [server name] site on my Opus Growth hosting server. Product: [what it does, for whom]. How it works: [three steps]. What it produces or does: [4 to 6 features]. Data and security: [where data is stored, for how long, whether it is used for model training]. Trial or sign-up path: [trial length, sign-up URL]. Contact: [email], [phone], [WhatsApp number], [address]. Domain: [domain]. Brand colours: [colours, or "you choose"]. Product screenshots or photos: [links, or "none"]. Pages: home (/), features (/ozellikler/), security (/guvenlik/), contact (/iletisim/), privacy (/gizlilik/) and 404.html. Home sections in order: hero (h1, two-sentence intro, two buttons and the product card that is the signature element), three steps, who it is for (with a photo), FAQ and a closing call to action. For AI products the security page is half of the buying decision; state retention, access and model training plainly. No form on the contact page, because the server only serves static files. Style: aurora and glass. A soft, multi-coloured light drifting slowly in the background (the aurora), with the content on frosted glass cards. No purple to blue palette; choose three soft tones that suit the brand, such as mint, apricot and ice blue. Typography: a soft serif display from Fontshare (for example Gambetta 500) with a calm body face (for example Synonym 400 and 600). Use the glass effect on card surfaces only; do not drown the page in glass. No canvas, WebGL, video, GSAP, Lenis or Swiper. The only JavaScript is a small inline theme toggle. Signature element: a glass card in the hero with a real HTML example of what the product does (for example a decision and a task extracted from a meeting transcript). Aurora, glass and theme rules (where this style most easily breaks performance and contrast): 1. Make the aurora in pure CSS: one aria-hidden `position: fixed` layer, two pseudo-elements (::before and ::after) and three large radial-gradients inside them. Animate with transform only (translate3d, rotate, scale) on a 25 to 35 second `alternate` loop and add `will-change: transform`. Do not animate the gradient itself, background-position or filter: blur; those repaint every frame. Put the animation inside `@media (prefers-reduced-motion: no-preference)`; with reduced motion the aurora stops but stays visible. 2. Define the colours as CSS variables (--bg, --fg, --mute, --line, --card, --solid, --acc, --accfg and the aurora tones) and point the Tailwind colours at them (for example colors: {bg: "var(--bg)"}). Write the dark values under both `:root[data-theme="dark"]` and `@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) }`, so the system theme applies even with JavaScript off. 3. Theme toggle: a one-line script in `<head>`, after the stylesheet, reads the saved choice from localStorage, writes data-theme on `<html>` and adds the `js` class; because it runs before the first paint, the page never flashes in the wrong theme. Wrap the localStorage access in try. A small script at the end of the page switches the theme on click, saves the choice and updates the button when the system theme changes. The button is a real `<button type="button">` with `aria-pressed` true while dark is on, and it keeps its accessible name ("Dark theme") even when only the icon shows on mobile. Hide the button without JavaScript (`html:not(.js) .theme-toggle { display: none }`). Also add `<meta name="color-scheme" content="light dark">`. 4. Keep the glass card in one `.glass` class: a solid background first (--solid), then inside `@supports (backdrop-filter: blur(1px))` a translucent background with `backdrop-filter: blur(18px) saturate(140%)` (with the -webkit- prefix for Safari). Under `@media (prefers-reduced-transparency: reduce), (prefers-contrast: more)` the card turns solid and the aurora is hidden. Do not use the backdrop-blur utility in the HTML; design-check warns about "glassmorphism everywhere" when it sees more than five on a page. 5. Measure contrast in BOTH themes. Lighthouse only audits the light theme; if you do not check dark separately, faint text in dark mode slips through. Make the card's translucent background opaque enough to keep text above 4.5:1 even over the brightest aurora colour (in the demo, white at 66 percent in light and dark green at 58 percent in dark). Switch the accent button's text colour per theme (white on dark pine in light, dark green on pale mint in dark). 6. Give the hero card its entrance with transform only and a data-reveal attribute (design-check recognises motion by that attribute); never hide or fade the h1, because it is the LCP element. Setup and known traps (each one cost points or failed a gate in the demo measurement, do not skip): 1. If a site is already live on the server, tell me first, because setup overwrites index.html and the assets folder. Preview scaffold_site with confirm=false first, then call confirm=true once I approve. Then read site_design_guide and site_seo_guide. Before writing code, write the design direction (typography, colour, grid, signature element, motion language and the libraries that will NOT be loaded) into a short ART.md outside assets and show it to me. 2. Compile Tailwind, do not load it from the CDN. Install `npm i -D tailwindcss@3` with site_run_command and background=true, and follow it with site_command_status. The content paths in `tailwind.config.js` must cover every HTML file including subfolders, the `_src/*.tpl` templates and any JS file that writes classes. `_src/tw.css` holds the line `@import "../assets/app.css";` and the three `@tailwind` lines; compile it into one file with `npx tailwindcss -c tailwind.config.js -i _src/tw.css -o assets/site.css --minify`. Remove the cdn.tailwindcss.com script, the inline tailwind.config, chrome.js and motion.js from the pages and link only `/assets/site.css`. Recompile after every HTML change. Because the theme colours are variables, Tailwind's opacity shorthands (such as bg-fg/50) do not work; define a separate variable if you need a translucent colour. 3. Self-host the fonts. Read the Fontshare CSS with one request per family and weight (`https://api.fontshare.com/v2/css?f[]=family@weight`), download each woff2 file into `assets/fonts/` with site_fetch and write the @font-face rules with `font-display: swap` into `assets/app.css`; design-check looks for the custom font there. Preload EVERY weight used above the fold (heading, body and buttons) on every page with `<link rel="preload" as="font" type="font/woff2" crossorigin>` and put these lines before the stylesheet link. Most Fontshare fonts have no ₺ sign, so write prices with "TL". 4. Make the menu and footer static HTML. Write a small `chrome-stamp.mjs` that reads the nav list from site.config.js and stamps `_src/header.tpl` and `_src/footer.tpl` between the `<!-- nav:start --><!-- nav:end -->` and `<!-- footer:start --><!-- footer:end -->` markers on every page, adding aria-current="page" to the active link. Do not give the templates a .html extension and use placeholders like `[[NAV]]` instead of `{{...}}`. Build the mobile menu with `<details>` and no JS. Keep the business name, address and phone in the footer as plain text, and make footer and breadcrumb links at least 44 pixels tall. 5. Convert images while downloading them with site_fetch: write the same photo to separate files with resize="480x", "800x" and "1120x" (or the widths the page needs), image_format="webp" and quality=65. Give every `<img>` srcset, sizes and a width and height that match the real ratio. The main above-the-fold image gets fetchpriority="high" and is not lazy; give fetchpriority only to the real LCP element, and loading="lazy" decoding="async" to the rest. 6. Write a small `favicon.svg` in the site root and add `<link rel="icon" href="/favicon.svg" type="image/svg+xml">` to every page; if there is a PNG logo, make an apple-touch-icon with site_fetch, resize="180x180" and image_format="png". Without a favicon the browser logs a 404 for /favicon.ico and Best Practices drops to 96. 7. HTML validator rules: start every document with an uppercase `<!DOCTYPE html>`, quote attributes with double quotes, use `&nbsp;` for the spaces in the visible text of tel: links, never use a style="" attribute (if you need a CSS variable, use a Tailwind arbitrary property class such as `[--r:-4deg]`), give every button type="button", do not put aria-label on role-less elements such as `<ul>` or `<div>`, and use `<section aria-label="...">` instead of role="region". SEO, AEO and GEO: 1. Use directory-style URLs with a trailing slash (/ozellikler/, /guvenlik/, /iletisim/, /gizlilik/ or their equivalents in your language). Fill in the seo block of site.config.js and run `node seo-stamp.mjs`. For a software company with no physical shop, set localBusiness:false in site.config.js. Page schemas: home WebPage and FAQPage; features SoftwareApplication (applicationCategory, operatingSystem, featureList) and FAQPage; security WebPage and FAQPage; contact ContactPage; BreadcrumbList on inner pages. Do not list a security certificate or compliance document you do not hold; if you hold one, give its number and validity date. Write every page-specific schema in its own `<script type="application/ld+json">` block and link it to the base graph with @id. Do not nest BreadcrumbList inside @graph; keep it in its own block, because that is the only way seo-check sees it. 2. Titles 48 to 60 characters (seo-check treats over 65 as an error), descriptions 145 to 158 characters, one h1 per page. The main content of every page is at least 150 words. In the demo the contact and privacy pages came in at 84 and 116 words on the first try and were completed with real information such as "what happens during the trial" and "who the data is shared with". 3. The first paragraph of every page answers the page's question directly, and the h1 is phrased as that question. Write the page's own FAQ with `<details>` and mark it up as FAQPage. Show the publishing organisation and a "Last updated" date with `<time datetime>`. 4. In robots.txt, write your decision with the reason for GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended, Bingbot and CCBot, and point to the sitemap. sitemap.xml has a real lastmod. llms.txt has an accurate two-sentence summary of the site and a list of the important pages. 5. No invention: do not write reviews, ratings, awards, customer counts, certificates, opening hours, coordinates, prices or product figures without asking me. Leave any field you do not know out of the schema entirely. Gates (in order; do not say "done" until all pass): 1. With site_run_command, run in order `node chrome-stamp.mjs`, the Tailwind build, `node seo-stamp.mjs`, `node seo-check.mjs` (0 errors, 0 warnings), `node design-check.mjs` (0 errors; justify any remaining warning) and `npx html-validate "**/*.html"` (0 errors). 2. View every page with site_preview, view="mobile" and view="desktop". site_preview captures the page with motion turned off; if the content is not complete in that capture, the no-motion state is broken. Lazy images further down may be blank in a full-page capture; do not count that as an error, but check their paths. Check the dark theme too: since site_preview cannot change the system theme, run a contrast audit in dark mode (for example axe-core's color-contrast rule with prefers-color-scheme: dark), or make dark the default temporarily and preview it once. 3. Run core_web_vitals for every page with strategy="mobile" and strategy="desktop". Acceptance: on mobile Performance at least 95 and Accessibility, Best Practices and SEO at 100; on desktop all four at least 95, target 100. For a page that misses, find the slow file with resources=true, fix it and measure again. Then run seo_audit on the home page with strategy="mobile" and runs=2. The network request list must contain no address outside your own domain (store and WhatsApp links are links, not requests). 4. No horizontal scrolling at 360, 390, 768 and 1440 pixels wide, touch targets at least 44 pixels, no console errors. Interaction check: since site_preview cannot run motion or switch themes, tell me what to look for in my own browser: the light in the background drifts very slowly; clicking the toggle switches the theme, the choice survives a page change and the page never flashes in the other theme while loading; if the operating system is in dark mode the site opens dark; with reduce motion on the aurora stops; with reduce transparency on the cards turn solid; with JavaScript off the toggle is hidden but the system theme still applies. After publishing: preview the rule `/assets/* Cache-Control: public, max-age=31536000, immutable` with site_headers and apply it once I approve; from then on, version the file name whenever CSS or JS changes (site-v2.css and so on). Submit sitemap.xml with gsc_submit_sitemap and check the home page with gsc_url_inspect. At the end give me: a per-page score table (page, four mobile scores, four desktop scores, LCP, CLS), the gate results and the list of fixes you applied.

Example result

An example of the output this prompt produces. Its structure comes from the tools' real output; numbers and names are fictional.

Example output (from a fictional demo brand, not real customer data; the scores are real measurements of the demo)

This prompt was applied word for word to "Tutanak", a fictional AI meeting notes product: a mint, apricot and ice blue aurora, frosted glass cards, Gambetta and Synonym, light and dark themes, five pages. The only JavaScript is a 0.6 KB inline theme toggle.

PageMobile (P/A/BP/SEO)Mobile LCPDesktop (P/A/BP/SEO)CLS
/100/100/100/1001.6 s100/100/100/1000
/ozellikler/100/100/100/1001.4 s100/100/100/1000
/guvenlik/100/100/100/1001.4 s100/100/100/1000
/iletisim/100/100/100/1001.4 s100/100/100/1000
/gizlilik/100/100/100/1001.4 s100/100/100/1000

Gates: seo-check 0 errors 0 warnings, design-check 0 errors 0 warnings, html-validate 0 errors, no overflow at 360/390/768/1440 pixels, clean console, no outside network requests. The axe-core color-contrast audit found 0 violations on all five pages in both light and dark themes.

Interaction test: clicking the toggle set aria-pressed to true and the background to #07110F; the choice was saved to localStorage and the next page opened dark from the first paint. With a dark system theme the site opened dark. With reduced motion the aurora animation was none; with reduced transparency the cards were solid.

Fixes applied:
1. The same home page with the Tailwind CDN and Fontshare CSS measured 91/100/100/100 on mobile (LCP 2.7 s); with compiled CSS and self-hosted fonts 100/100/100/100.
2. Lighthouse only measures the light theme, so dark theme contrast was audited separately with axe-core and added to the prompt as a gate.
3. The glass effect moved from utility classes in the HTML to a single .glass class, with a solid fallback and a reduced transparency rule.
4. The contact and privacy pages came in at 84 and 116 words; real information took them past 150.

A sample site built with this prompt

Aurora and glass: an aurora that drifts using pure CSS transforms, frosted glass cards with a solid-color fallback, a dark/light theme that follows the system theme and is remembered, a single 0.6 KB

Built for a fictional brand by following this prompt to the letter. Scores were measured with Lighthouse on every page.

Build a fast AI product site with a CSS aurora background, glass cards and a dark and light theme toggle
Lighthouse scores (lowest page)
MobileDesktop
Performance100100
Accessibility100100
Best practices100100
SEO100100

Checks passed

  • seo check: 0 hata 0 uyarı
  • design check: 0 hata 0 uyarı
  • html validate: 0 hata
  • overflow: 360/390/768/1440 taşma yok, dokunma hedefleri 44 px ve üstü, konsol temiz, axe kontrast açık ve koyu temada 0 ihlal, JS kapalıyken sistem teması uygulanıyor, dış ağ isteği yok
  • tailwind before after: Ana sayfa Tailwind CDN + Fontshare CSS ile mobil 91/100/100/100 (LCP 2.7 s), derlenmiş CSS + yerel font ile 100/100/100/100
Screenshots
Build a fast AI product site with a CSS aurora background, glass cards and a dark and light theme toggle: Mobile
Mobile
Build a fast AI product site with a CSS aurora background, glass cards and a dark and light theme toggle: Desktop
Desktop

Measured on: 2026-10-11

Related searches

These prompts work best when your AI assistant is connected to your accounts with Opus Growth.

Connect your accounts free

More prompts

WebsiteChanges after your approvalLive demo

Build an editorial expert site with a guides section and author schema

Has your assistant build an expert's site with a magazine-cover home page, long-form guides and an author profile. Serif typography, Article and Person schema and dated, sourced articles produce a publication people read and AI answers can cite.

When to use itWhen you are a consultant, specialist or one-person knowledge business and want your site to read like a publication that shows your expertise through writing, not like a brochure.

SEO Intelligence, Search Console
WebsiteChanges after your approvalLive demo

Build a heritage family business site with a classic look and modern standards

Has your assistant build a site in the spirit of an old label and shop sign for a producer in its third generation, framed and with a paper texture. The look is old, the build is new: mobile first, JavaScript-free, self-hosted fonts, WebP, Product and HowTo schema.

When to use itWhen you sell a craft passed down through generations, such as Turkish delight, olive oil, cheese or copperware, and want a classic look that carries that history without giving up speed or accessibility.

SEO Intelligence, Search Console
WebsiteChanges after your approvalLive demo

Build a Swiss-minimal law or accounting firm site with strong trust signals

Has your assistant build a still firm site on a strict grid, with hierarchy carried by a single type family. It puts the trust signals a YMYL field needs on the page: practitioner profiles, a dated and sourced guidance note, wording that respects professional advertising rules, and Person schema.

When to use itWhen a law, accounting or similar professional practice needs a site that looks serious and plain, stays within professional advertising rules and proves its expertise.

SEO Intelligence, Search Console
WebsiteChanges after your approvalLive demo

Build a JavaScript-free multi-page corporate site and deliver it at 100

Has your assistant build a still, fast and accessible site for corporate work such as architecture, engineering or consulting. Menu and footer are static HTML, fonts and CSS are self-hosted, and every page is measured before hand-over.

When to use itWhen a corporate business needs a multi-page site where speed and accessibility matter more than decoration, with no animation and no JavaScript.

SEO Intelligence, Search Console