# OPUS 5.5 — Landing Page Factory · Build Spec (read fully before starting) You are one of several parallel builders. Every page is designed AND built by Claude Opus 5.5. The whole collection ships as ONE static site (nginx) at `https://opus55sites.agntc.io`. This is a public showcase that will be seen by a very large audience and credited to Opus 5.5. The bar: award-level (Awwwards SOTD / FWA) craft. Taste over gimmicks. Every page must feel like a different studio made it. ## Repo layout (repo root = ) ``` ///index.html ← your page (you may add style.css, main.js, etc. next to it) ///media/ ← optimized, published media for that page ONLY /assets/vendor/ ← audited, pinned libraries (DO NOT modify; DO NOT add CDNs for JS) /refs// ← Pinterest mood references (NOT published; never link them) /tools/fal.py, /tools/shoot.cjs ← asset + QA tools /_raw// ← raw generations (NOT published — put full-size PNG/MP4 here) ``` Only touch your own `//` dir, `/_raw//` and `/refs//`. Do not touch other projects, the root index, `/guide`, the Dockerfile or `/assets/vendor`. ## Libraries (self-hosted, already audited — use root-absolute paths) - three.js r185 (ES modules). Use this import map in ``: ```html ``` Addons available under `three/addons/`: controls, postprocessing, shaders, environments, geometries, loaders, utils, lines, math, objects, modifiers, misc, effects, curves, helpers, textures. - GSAP 3.15 (all plugins free): `/assets/vendor/gsap/{gsap,ScrollTrigger,SplitText,Flip,Observer,MotionPathPlugin,DrawSVGPlugin,MorphSVGPlugin,CustomEase,ScrambleTextPlugin,TextPlugin,Draggable,InertiaPlugin,ScrollToPlugin,Physics2DPlugin,EasePack}.min.js` (UMD, globals). - Lenis 1.3 smooth scroll: `/assets/vendor/lenis/lenis.min.js` (+ `lenis.css`). - matter-js 0.20: `/assets/vendor/matter/matter.min.js`. - Raw WebGL / Canvas2D / SVG / CSS (scroll-driven animations, view transitions, @property, container queries) — all fair game and encouraged. - Fonts: Google Fonts `` is allowed (fonts.googleapis.com / fonts.gstatic.com). No other third-party hosts at runtime: no analytics, no external images, no other CDNs, no iframes, no forms posting anywhere. - If you think you need a library that isn't here, write it yourself (you can). - Brand fonts named in your brief override the generic font advice below. Fonts not on Google Fonts may be self-hosted as woff2 in your page's `media/fonts/` when the licence allows it (Fontshare fonts are free for commercial use); fetch them once at build time. - Do NOT run git commands (the orchestrator commits). Do NOT start/stop the local server unless `curl -s localhost:8555` fails (then: `cd && nohup python3 -m http.server 8555 --bind 0.0.0.0 >/dev/null 2>&1 &`). ## Assets — generate them, they are key to the look `python3 tools/fal.py …` (run from repo root; stdlib only, reads FAL key itself; logs every call). - Images: GPT Image 2 — `python3 tools/fal.py image --prompt "…" --size 1920x1088 --quality high --out _raw//x.png` - Sizes must be multiples of 16, ≤3840 edge, aspect ≤3:1 (e.g. 1920x1088, 1088x1920, 1536x1536, 2560x1088). - `--ref refs//pin-3.jpg` (repeatable) switches to GPT-Image-2 edit, using Pinterest pins as STYLE references ("similar but different" — never reproduce a pin; describe the new subject explicitly). - `--transparent` for cut-out objects/sprites (png with alpha → optimize to webp keeps alpha). - ~35–60 s per image. Run several in parallel with `&` + `wait`. - Video: `python3 tools/fal.py video --image _raw//x.png --prompt "camera + motion description" --duration 6 --model veo --out _raw//x.mp4` (Veo 3.1 fast, 1080p, no audio, 4/6/8 s; `--model kling` = Kling 2.5 turbo 5/10 s). ~1–3 min each. Budget: at most 2 videos per page (≤ 4 per project). Prefer seamless-looping motion prompts (slow drift, subtle parallax, no cuts). Images: aim ≤ 8 per page. - Optimize before publishing (publish ONLY optimized files into the page's `media/`): - `python3 tools/fal.py optimize-image _raw//x.png //media/x.webp --width 2000 --q 80` - `python3 tools/fal.py optimize-video _raw//x.mp4 //media/x --width 1280` (→ x.mp4 + x.jpg poster) - Target: page total media ≤ ~6 MB; hero video ≤ ~2.5 MB; images ≤ 400 KB each. - Use `