Build a single-file HTML landing page for "Sortie", a fictional AI agent for game developers by the fictional "Sortie Labs". Sortie works inside the studio's engine and repo: it writes gameplay code, blocks out levels, playtests the build overnight and files the bugs it finds. The page proves the claim with its hero: not a screenshot but a small live game scene in three.js that the visitor can fly without leaving the page. Fictional product, studios, quotes, awards and numbers, labelled as such in the footer.
STACK
- three.js 0.170.0 as an ES module through an import map: "three" maps to https://cdn.jsdelivr.net/npm/three@0.170.0/build/three.module.js and "three/addons/" to .../examples/jsm/ (EffectComposer, RenderPass, UnrealBloomPass, ShaderPass, OutputPass, RoomEnvironment, RoundedBoxGeometry, Horizontal/VerticalTiltShiftShader). The map must come before the module script. Everything is generated in code: no models, textures, images or audio files.
- Google Fonts: Fredoka 500/600/700 for display (rounded, game-like), Nunito 400/600/800 for body at 17px/1.6, and M PLUS Rounded 1c 700 loaded with the text= parameter set to only the kana used on the signs.
- Three scripts: a tiny classic loader script, a classic script for the page chrome, one module for the world. They talk through CustomEvents on document: "corgi:progress" ({p, label}), "corgi:coat" (a crew key), "corgi:play" and "corgi:shots" (a map of data URLs).
THE SYSTEM
- Tokens on :root: sky #8fbdea, sky-2 #c9def3, haze #f3e1de, peach #f6dccd, paper #fbf6ee, card #fffdf9, ink #39324f, ink-soft #6d6680, line #eadfd2, orange #e08a3c / deep #b9652a, blossom #f6b6c8 / deep #e7839f, leaf #5aa578 / deep #3f6b4f, gold #f2a93b, radius 22px, easing cubic-bezier(.2,.8,.2,1). A paper grain from an feTurbulence SVG data URI sits on the body and the crew section.
- Everything is outlined in ink like the game: cards and buttons have a 2-3px ink border and a hard 5-6px ink drop shadow that grows on hover and collapses on press. Primary buttons are gold pills, ghost buttons translucent white.
- The headline "Hand it the grind. / Keep the fun." is styled like game subtitle text: Fredoka 700 at clamp(50px, 7.6vw, 108px), gold fill, the second line orange, a thick white rim built from sixteen 5px text-shadow offsets, then a soft orange drop. No background-clip tricks: they fight the rim.
- One inline SVG of a corgi face filled with var(--coat), var(--saddle) and var(--white). Custom properties inherit into