- Maven · AI Prototyping for Designers
- Everything
- Side project
- v0 · Next.js · CSS
- Published · 2026
It's live: go look before reading
This case is about a thing that exists, not a mockup of one. The captures below hold the layout, but the flicker, the scanlines and the marquee only exist in motion. Open it, then come back.
homepage-christofer.vercel.appWhy this exists
Nine years designing products used by millions, and I had never shipped anything where I owned every decision, including the ones I wasn't qualified to make.
The course gave me the excuse. The brief I set myself was narrow on purpose: one page, one aesthetic, published. Not a portfolio, not a product. Something with no stakeholders to align.
I'm the type who keeps Figma and the terminal open on the same screen. This page is what happens when nobody makes me choose.
What I was actually testing
Can I direct an AI toward a specific aesthetic, or only a generic one?
Generative tools drift toward the safe middle. Getting to retro-futurism (CRT scanlines, chromatic glow, monospace status bars) meant describing a look precisely enough that it couldn't be flattened into another gradient landing page.
Where does prompting stop and editing start?
v0 got the structure up fast. The character came from going into the CSS afterwards and adjusting timings, opacities and blend modes by hand. Knowing which of the two a given problem needs turned out to be the actual skill.
Can an effect-heavy page still be readable?
Glow, flicker and scanlines fight legibility by nature. Every effect had to be dialled back until the text won, which is the same restraint the day job demands, just with nobody else enforcing it.
The bio card with its corner brackets, and the auto-scrolling carousel: Manaus, Japan and Korea behind a cyan wash.
It's all CSS
No WebGL, no shaders, no animation runtime.
The whole aesthetic runs on layered gradients, a repeating-linear-gradient for the scanlines, text-shadow for the neon glow, and a keyframe with irregular timing for the flicker. 224 lines of CSS.
That was a deliberate constraint. A 3D scene would have been more impressive to describe and less honest about what the exercise was: the point was to see how far plain platform features go when pushed with intent.
The flicker keyframe is the detail I'd defend: the steps are deliberately uneven, because a regular pulse reads as a loading state and an irregular one reads as a failing tube.
NEO-MANAUS
neon rain · irregular by design
The exact keyframe from the published page, values copied as-is. The steps are uneven on purpose: a regular pulse reads as a loading state, an irregular one reads as a failing tube. Turns off under reduced motion.
The marquee, the tag row, and a contact block that stays in character to the last line.
What I cut
A WebGL background
Tempting, and it would have looked the part. It also would have turned a one-page experiment into a project with a dependency budget, and made the page slower for no gain in what it was testing.
Sound
The aesthetic asks for it. Autoplaying audio on a personal page is hostile, and gating it behind a button meant almost nobody would hear it. Not worth the code.
Making it my actual homepage
It's the wrong front door for someone applying to senior roles abroad. It stays a side project on purpose: this portfolio is the front door, and that separation is itself the decision.
Who did what
- Concept, art direction and every word on the page
- Prompt direction toward the aesthetic, and the calls on when to stop prompting
- Hand-tuning of the CSS: glow curves, scanline density, flicker timing
- Deploy and the decision to keep it separate from the portfolio
- No team. That was the point.
- v0 generated the first structural pass, which I then rewrote in places
Reflections
The useful finding wasn't about the tool.
AI got me to a working page in an afternoon that would have taken me a week. It also produced, by default, exactly the generic result the course was warning about. The distance between those two facts is where the work now lives.
What transferred back to the day job is calibration rather than any technique: knowing sooner when a generated version is close enough to edit, and when it's cheaper to throw away and describe again.