Satin Graphite GT
Satin graphite over factory white, gloss-black roof, chrome delete.
Engine showcase
Nothing on this page is a screenshot. Each block is the same component a client site uses, with the file that provides it printed beside it.
Line, word and character reveals that keep the original string in the accessibility tree.
components/animation/*Lines rise out of their own mask.
Words arrive one after another.
Character by character.
Any element, wiped open.
Every split element keeps its original string in an aria-label and marks the generated spans aria-hidden, so a screen reader hears one ordinary sentence.
Scroll depth on scrubbed transforms, plus optional pointer depth. Reduced on mobile, removed under reduced motion.
components/animation/Parallax.tsxForeground layer
speed 0.25 · mouse 26px
speed 0.8
Magnetic buttons, cursor states and counters — the layer that makes a page feel handled rather than generated.
components/animation/MagneticButton.tsx · system/CursorFollower.tsxNothing binds on touch devices or under reduced motion, so there is no dangling listener and no unexpected movement.
A pinned section, a WebGL scene and a text layer driven by one normalized progress value.
components/cinematic/PinSection.tsx · ScrollScene.tsx · StorySequence.tsxBeat one
Each beat owns a slice of scroll progress from 0 to 1.
Beat two
Camera, object transform, lighting and colour all blend continuously.
Beat three
Text cross-fades on its own ramp while the camera keeps travelling.
A story is a list of beats.
Named presets, interpolated by a damped rig with pointer parallax and idle drift. Click a preset — the camera travels, it never cuts.
components/three/CameraRig.tsx · lib/three/camera.tsCanvas-rendered frames scrubbed by scroll, loaded sparse-first so the sequence is usable long before every frame has decoded.
components/media/ImageSequence.tsx60 frames · scrubbed
0% decoded
This viewer is loading a real .glb — an original placeholder generated by npm run assets:model. Point it at a client model and nothing else changes; point it at a file that does not exist and the procedural subject takes over.
components/three/ModelViewer.tsx · GLTFModel.tsxVertical scrolling drives horizontal travel, then hands scrolling back. On touch it becomes a native snap carousel.
components/animation/HorizontalScroll.tsxSatin graphite over factory white, gloss-black roof, chrome delete.
Two-stage candy over a metallic base, hand-finished edges.
Full-body protection film with ceramic top layer.
Expedition livery designed around roof rack and door geometry.
Deep green satin with a matte accent stripe over the shoulder line.
Grain, noise, vignette, glow, light sweep and velocity-driven displacement. Shown here at exaggerated intensity; production values are a fraction of this.
components/effects/*SCROLL
An SVG displacement filter driven by scroll velocity. High tier only — it settles back to zero the moment scrolling stops.
Scrubbed seams between acts, so the visitor controls the cut.
components/cinematic/SectionTransition.tsxEverything above is shared infrastructure. A template only decides section order, density, motion budget and scene.