Bright
Smile
A neighbourhood dental clinic in Nagpur. The whole site exists to defuse one feeling — that a dental visit will be sudden, painful and a surprise.
- Client
- Bright Smile Dental, Nagpur
- Year
- 2026
- Scope
- Identity, copy, site design, build
- Shape
- Five views, routed from one document
- Stack
- Static HTML, CSS, vanilla JS. No framework.
Nobody avoids the dentist because the website was ugly.
They avoid it because they do not know what it will cost, how much it will hurt, or how long they will be in the chair. Every clinic site we looked at answered none of those and led with a stock photo of a stranger's teeth.
So the brief became a list of promises the site had to keep on the page rather than in a brochure: the price before the drill, a realistic booking slot, a reply window, and a first consultation that is waived if you go ahead. Everything else was arrangement.
The operatory lamp is the most anxiety-loaded object in the room. We reclaimed it as the hero. Marshmallow, project note
A hero that breathes
A WebGL shader paints a warm pool of light on a 5.5-second cycle — the rate people are taught to breathe at when asked to calm down. It never flares and never strobes. Reduced motion holds a single frame at the top of the breath; no WebGL falls back to a CSS gradient.
One curve, everywhere
The mark is a smile, and that arc is the only geometry on the site. Every boundary between dark and light is the same curve, so is the nav underline, the eyebrow tick and the headline underscore. There is no second motif.
Teal night into warm paper
The page opens as one continuous dark block — hero, marquee, numbers — then breaks into paper along the smile edge at the price list. Fear, then relief. The dark is the only place the site raises its voice.
- Night · 08201D
- Teal · 0C5F59
- Mint · DCEFEC
- Paper · F7F4EE
- Apricot · EE9E6E
Five views, routed live.
Home, services and pricing, the dentists, reviews and FAQ, and booking — routed client-side from a single document. Click into the frame and move between them; the WebGL hero keeps breathing while you do.
The real site, running here Open it in its own tab ↗
The price list is the product
Every treatment carries a figure you can read before you sit down, set in mono because a price is a record rather than a claim. Nothing is "from ₹—, call for details".
Numbers only where there is a sequence
Exactly one section is numbered — the first-visit walkthrough, which really is ordered. Each step restates a promise made elsewhere, so it reads as a summary of commitments rather than new marketing.
No portraits of the dentists
The roster is set like the price list — monogram, name, credentials in mono, then specialisms. Credentials are a record, and records already have a vocabulary on this site.
-
Ask what people are afraid of
Not what they want from a dentist. The answers were cost, pain and being trapped into more treatment — in that order, every time.
-
Turn each fear into a promise on the page
Published prices, a waived consultation, a stated reply window, and the line that nothing happens in the chair that was not agreed first.
-
Spend the flourish once
The breathing lamp and the drawn underline are the only two moments of motion. Everything else is still, because a nervous reader does not want a site that moves at them.
-
Make it survive without anything
No JavaScript and it becomes one long readable page with every view shown. No WebGL and the hero is a gradient. Reduced motion and it simply holds.
-
Live in this site
-
Live in this site