Dimension
Exceptional
You can clone, edit, and host in modulify.ai
More sections
Explore the collection
- New
MorphA full-viewport photographic hang you scroll through forever. A dozen oversized prints stand on ONE straight line running away from the camera — each stepping right, up and back from the one in front, so the near ones are enormous and spill past the bottom-left of the frame while the far ones lie almost flat against the top-right corner. The hang is RIGID: every print is the same rectangle at the same angle, and a single perspective divide supplies the whole effect — the near ones lean about thirty degrees and the far ones lie flat, none of it faked per card, and because parallel planes cannot intersect the depth order can never go wrong. Each print carries the stretcher the yaw turns toward the lens: a warm bone edge along the top and the right, the top face grazed and the right face near square-on, so it reads as real canvas depth rather than a border. THE PAGE LOADS AS A HANG BEING PUT UP — the wall arrives one print at a time, nearest the lens first, each coming up from below carrying too much angle so you see its stretcher wide before you see the picture, then opening onto the shared rake as it takes its place; it ends composed because every print that lands is already in its final spot. Wheel, vertical drag or arrow keys CYCLE the line infinitely: the front print sweeps off toward the lower-left and a new one enters at the back, and the hand-off happens where the print is already outside the frame, so the wrap has no seam. Hover one and it pushes toward the lens and lifts out of the room's dark while the WALL LABEL in the left column becomes its label — title, location, year, and a caption that says what is actually in the frame. Click it and THE LINE PARTS: the prints in front run on down the line and off the bottom-left, the ones behind run up and off the top-right, and the split ripples outward from the work so the two halves peel rather than shunt as blocks — opposite directions at once, which is the one thing scrolling the hang can never look like. The work itself holds still while the line opens around it, because the reveal is the others leaving rather than the work arriving; then it squares up to the lens last of all and settles on its mark a hair too close before easing back onto it, alone with its full index line — body and glass, exposure, series. It is a CAMERA move as much as a card move: the perspective origin pans and the FOV widens, and because the mark is recomputed from the live camera every frame the print stays locked in the frame while the room moves behind it — a dolly with the subject pinned, not a card sliding over a backdrop. Everything is one blended pose per print on one requestAnimationFrame loop, so the whole thing is reversible frame-for-frame and never a lightbox; the cursor is hit-tested against each print's projected quad, so the target is the leaning print you can see, at the angle you see it. Click SETTINGS and a real camera panel drops in — draggable sliders for camera position, dolly and FOV, the shared yaw, roll and size, the cascade's march and the cursor parallax — every one a real term in the projection, with a live code read-out and a Copy Values button. Theme-aware (a near-black room, or a warm white cube where depth washes toward the room rather than to black), responsive by one decision made in the engine rather than by breakpoints a stylesheet guesses at — a portrait frame stacks the opened print above its label — and it honours prefers-reduced-motion, pauses off-screen, and owns the wheel while it fills the frame. Ships with a demo hang of eleven landscape photographs and a photographer's own index — title, location, year, body and glass, exposure, series — and a caption for each that says what is actually in the frame. The whole portfolio lives in one data file, so swapping the show is replacing the images and the text. - New
AmourA studio's entire archive, assembled into one shape and then taken apart into a wall. The section opens on BLACK — nothing on the stage, no spinner, no placeholder, because the photographs are already decoded and waiting below the frame — and then forty neon-lit studio portraits RISE UP out of the dark and settle into a MOSAIC HEART. They land row by row from the top down, so the lobes arrive first and the point finishes the shape, and the cells shrink as they descend on a written row profile rather than a constant ratio: the top TWO rows share one size so the lobes read as a single band of hero frames, the next two step down together, and everything below drops away fast into a fine point — three registers instead of nine faint gradations. The silhouette is built the way a PIXEL heart is built, from two separated discs and a tapering skirt, because the textbook implicit curve's cleft is too shallow to survive being sampled on a lattice — at any row height a mosaic can use, the notch has closed and the top row comes out as one solid bar. Here the notch is a measured one row deep and two cells wide, and each row's cell count is pinned by an editorial parity table, so the cleft and the hole appear in the same place on every screen instead of by accident. The middle of the heart is MISSING: exactly one cell of the third row is never dealt — sized to the cell rather than to the heart, so the centre photograph is removed whole and its six neighbours are untouched — and the frames that straddle the box are clipped against it, so the hole keeps a true rectangular edge instead of a mosaic's staircase. Then the hole FILLS. Single squares fly out of the surrounding photographs and settle into a second, much smaller heart with the same outer silhouette as the big one — an authored 11x9 piece of pixel art, symmetric because every row of it was WRITTEN as a palindrome rather than sampled off a curve, which is the only way a nine-column heart comes out with two equal lobes and its point on the axis. Most tiles land as white paper and a scattered few carry the photograph they left, so the small heart is visibly made out of the big one; and the tiles never stop turning over — each runs its own seeded clock, fading a photograph up, holding it, fading it out and going back to paper, so roughly a third of the heart is carrying a picture at any instant and the set is never the same twice. Then the heart BURSTS. Every photograph travels outward from the centre — the middle letting go first and the point last — until the mosaic has spread across the whole section as a WALL of frames at every distance, cropped by all four edges so it reads as continuing past the window, while the pixel heart grows with it and settles dead centre at the one spot the wall was solved to keep clear. NON-OVERLAP IS STRUCTURAL, not a collision test: every frame is contained inside its own grid slot, inset by half a gutter, so two frames cannot touch because their slots do not — and the frames near the heart are nudged WITHIN their own slots rather than evicted, which is what keeps the hole the size of the heart instead of the size of four slots. Depth is ONE number per frame driving four cues at once — how big it is printed, how sharp it is, how much of the room's dark sits in front of it, and what paints over what — biased toward the back, because near things are rare in a real room and an even spread of sizes reads as inconsistency rather than as distance. The split headline that framed the heart leaves as the wall arrives: type laid over fifty photographs is not type any more. Move the pointer and the photographs AROUND it lean toward it — the nearest furthest, the rest of the wall dead still, and the one directly under the cursor barely at all, because the pull points at the cursor and a frame it has already arrived at has nowhere to go; what you see is the ring around the pointer leaning in, the gesture of gathering something toward your hand. It is budgeted against the GUTTER rather than the viewport — two frames either side of the cursor close on each other by twice it, so the wall's no-overlap guarantee survives the pointer — and it is switched off entirely while the heart is whole, because a mosaic is a composition and cells dragged out of it are just a broken picture. Hover any frame on the settled wall and it lifts; CLICK it and that exact photograph GROWS OUT OF THE WALL and flies to the middle as a DETAIL CARD — it is not a card that appears over a wall, it is the photograph you pointed at, travelling, squaring up out of its lean and rounding its corners on the way — while the rest of the wall dims behind it and the card's serif name, verified tick, tag chips, collection pill and side rail cross-fade in only once the frame has stopped, because type sliding and scaling across a screen for half a second is unreadable. The arrow keys walk the wall without ever replaying the flight, so the keyboard never fights the animation; Esc or a click anywhere off the card sends the frame home to its exact slot. There is NO BLUR FILTER anywhere in the section — a canvas filter pass per draw stalls the main thread outright — so softness is a 32-pixel bake of each photograph cross-faded against the sharp original, which is free, is a better match for how an out-of-focus frame actually resolves, and pays three times over: the rise, the wall's depth-of-field, and the pixel heart's tiles all read off the same bake. ONE canvas, ONE requestAnimationFrame clock at fixed substeps, and the entire sequence is a pure function of a single elapsed-seconds scalar — GSAP owns nothing — so it can be scrubbed, replayed, or handed to a scroll position later without rewriting a beat. Black in both themes, because the photographs are the only colour on the stage and a bone-coloured version of this would put forty saturated frames on a light ground and lose the one thing the composition is doing. The whole mosaic re-solves for the board it is actually on — a wide solve and a tall one chosen by ASPECT rather than by width, since a portrait tablet and a landscape phone are the same width and want opposite hearts — measuring what it laid down and shrinking to fit rather than trusting the clamp, DPR-capped, pausing off-screen and in hidden tabs, and honouring prefers-reduced-motion by opening on the finished wall.
BurstA cinematic, theme-aware curved video wall — three rows of landscape media cards laid on a convex cylinder: the centre column is head-on and closest, and each column steps around the cylinder, swinging out, receding, and rotating to stay tangent, so the sides angle inward and foreshorten. Because the spacing and each card compress together around the curve, the black gap between cards stays even the whole way around (a true cylinder, not a linear cover-flow that skews the edges and unevens the gaps). After any scroll the wall SNAPS onto the nearest slot — a card head-on at the centre — and rests still, so it never settles mid-angle. On load the wall arrives from the distance — the whole stage scales up from small while the cards light up ONE BY ONE, centre-out, each de-blurring from a soft blur (no spin) — and a thin top bar (wordmark + nav) resolves as a late beat. Every card carries its own title (category kicker over name). Under the hood the three rows are infinite rings: scroll, drag (1:1 grab with release momentum), or arrow-key and the rows ALTERNATE direction — row one travels right, row two left, row three right — each on spring-friction momentum with a whisper of idle drift, wrapping seamlessly around the back. Cards in motion smear with a fine motion blur written only to the leaf image (never a 3D ancestor, which would flatten the wall). There is no hover state — the cards simply sit, scroll, and snap to place. Click any card and it opens to a large centred full-frame view with its title, while the wall dollies up and dissolves behind it; Esc, the close button, or the backdrop reverses the move and returns it to its exact slot. ONE requestAnimationFrame clock owns every card's transform, opacity, z-index and motion blur; GSAP owns only the intro and the open/close zoom, on separate layers so the physics and the reveal never fight. Ships as a reusable component that takes any array of media (image, poster frame, or video) with a title and kicker. Theme-aware light and dark, keyboard-operable, honours prefers-reduced-motion with a still assembled wall, pointer-driven, and responsive — the curved wall holds down to a 390-wide mobile portrait.- New
Lens BloomA scroll-choreographed photoshoot reveal driven by a single timeline scalar. On load, a large two-word display-serif title fades in as a centred phrase, then the two words split apart while the photo cards appear one by one into a fanned row in the opening gap. Scroll or drag and the words fade out as the row gathers into one dominant, dead-centre hero card with the rest of the deck stacked behind and peeking at the top; a restrained editorial layer then rises in as a second beat — a roman-numeral name, a one-line description, and a fraction counter ringed by two concentric circles, joined by a hairline that draws itself from the name across to the number and softly lights the ring on contact. Keep scrolling and the deck advances vertically — the next photo descends from the top stack into the hero slot while the passed one drops away, each switch carrying a velocity-driven chromatic motion-streak; the name, description and counter cross-update. One requestAnimationFrame loop eases the timeline toward the scroll target and lays out every card, word and chrome element; a tween library owns only the one automatic load beat. Wheel, drag, arrow-key or swipe all drive it, and it lets the page scroll past at either end. A one-time bob after load and a persistent "Scroll or drag" cue teach the interaction. Below 768px it becomes an edge-to-edge full-bleed swipe gallery with a lift-to-reveal advance, a bottom-left caption over a scrim, and a thin progress bar. Theme-aware paper/dark stage, honours prefers-reduced-motion (composed, no auto-play), and pauses when the tab is hidden. Ships with a demo photo set — swap the files to use your own shoot.