Boutique Hotel · Ubud, Bali, Indonesia
The Brief
A family-owned Ubud resort since 1994 — twelve private villas in the rice terraces, chef breakfast, private infinity pools per villa. No direct booking capability, no visual storytelling, and nothing communicating why Tanah Sari was worth choosing over a chain hotel at a lower price.
The Challenge
Luxury hospitality is one of the few categories where the experience of browsing the website must itself feel luxurious. If the site loads like a government form, the villa looks cheap by association. The challenge was building something that made guests feel the humidity, the birdsong, the mist at 6am — before they'd made a reservation.
The Approach
Jungle green (#1a2e1a) as the background colour was the first decision and it determined everything else. Not forest green, not dark green — the exact colour of deep Balinese shadow. Ivory (#f0ead6) text because white would be too bright, too digital. Gold (#c9a84c) accents because that is the colour of afternoon light through ricefields.
Cormorant Garamond headings with generous letter-spacing (0.06em+) and deliberate italics — these are the typographic choices of someone who has designed art books. Not web design defaults. The difference is visible and it's felt even by people who couldn't name the font.
Twelve CSS keyframe firefly particles in the hero: each a 4px gold dot, drifting upward on a unique path, appearing and disappearing at different intervals. No JavaScript. Pure CSS keyframes. They take thirty seconds to notice consciously but create the right mood from the first frame.
Tech Stack
Technical Decisions
12 pseudo-elements on the hero container, each with unique animation-delay and animation-duration — no JS whatsoever. The variation in timing prevents the pattern from feeling mechanical.
1.2s ease-in-out instead of standard 0.6s — the slowness is the luxury. Every reveal says: we are not in a hurry here.
CSS grid with 3 columns, nightly rate displayed without the word "per night" — the number alone commands more respect.