A paper-craft picture-book studio, built end-to-end by Claude (Fable 5) — concept, art direction, code, and every illustration generated with GPT Image 2.
The brief: a children's picture-book studio whose site makes adults smile — a paper-craft world in the spirit of Oliver Jeffers crossed with a hand-cut paper diorama. Never clip-arty, never saccharine. The tagline "We make books children sleep with" sets the tone: warm, confident, a little wry. Every surface is built from torn and cut paper with soft drop shadows, gouache texture, and a hand-written margin voice.
Six muted paper tones on a warm cream ground. Nothing is pure or glossy — every hue reads like pigment on stone paper.
Display & headlines — chunky, rounded, warm. Does the shouting.
Body copy — soft-cornered humanist sans that stays legible small.
Hand-written margin notes — the studio's aside voice.
Five originals: four portrait book covers (1024×1536) sharing one consistent gouache/cut-paper style anchor, and one landscape interior spread (1536×1024, no text) for the read-a-spread interactive. Model: gpt-image-2, quality high. Every image was inspected and kept only if the title text rendered cleanly and the anatomy held.
data-depth. A rAF loop eases both mouse offset and scroll into per-layer transforms, so the diorama drifts as you move and gently disassembles as you scroll..flip leaf with front & back faces; rotateY(-172deg) on an 1100ms eased transition turns the page. Click the corner or the buttons.stroke-dashoffset so they draw themselves in as each heading scrolls into view.// page-turn hinge
function set(turned){
bookEl.classList.toggle('turned', turned); // -> rotateY(-172deg)
next.disabled = turned; prev.disabled = !turned;
flip.style.zIndex = turned ? 1 : 5;
}
Verified the parallax eased correctly on both axes, tuned mote density for mobile, fixed page-turn z-index so the flipped leaf settles beneath the revealed page, and confirmed every cover carried real alt text and a coloured fallback if an image fails to load.
Tightened section spacing, enlarged the read-a-spread stage, ensured spread caption text sits on a translucent paper card for AA contrast over illustration, and refined the underline draw-in timing so it fires on scroll rather than on load.
Compressed all five illustrations to hit the page-weight budget, added the mobile nav fallback, checked 375 / 768 / 1280px for overflow, verified reduced-motion disables the heavy loops, and swept the console clean.
npx wrangler pages deploy . --project-name storybloom