The concept
TrueCoat Painters is a fictional Pasadena painting company built as a conversion-first service template. Every decision answers one homeowner question — "what if I pick a color and hate it?" — and turns that hesitation into a phone call.
The aesthetic school is gallery minimalism meets the paint-chip aisle: a warm gallery-white canvas (#F6F3EE), near-black ink, one warm gray, and deliberately no fixed brand color. Instead the accent is a variable that the visitor sets themselves. Poppins — a friendly, rounded geometric sans — carries the display type like hand-lettered signage; Inter keeps the body neutral so the color, not the layout, is the loudest thing on the page. The composition is an asymmetric gallery grid: a wide-then-narrow service row and an off-kilter, slightly rotated photo frame, like prints hung on a wall.
The techniques
1 · Live repaint via a masked multiply layer
The hero is a single photo of a painter rolling a wall. Above it sits one absolutely-positioned <div> with mix-blend-mode: multiply, so whatever color it holds tints the pixels beneath it like a real glaze of paint. A soft gradient mask fades the tint out toward the bottom of the frame, so the wall recolors while the painter and floor stay believable.
/* the tint layer that "repaints" the wall */
#hero-wall{
mix-blend-mode: multiply;
background: var(--accent);
mask-image: linear-gradient(180deg,#000 46%,transparent);
transition: background .55s cubic-bezier(.22,1,.36,1);
}
Swapping the layer's background eases from one color to the next, so the wall dissolves between shades instead of snapping.
2 · One variable, repainted everywhere
Each swatch is a real <button> carrying its colors as data attributes. Choosing one doesn't just tint the wall — it rewrites a site-wide --accent custom property, so buttons, links, the section kickers, the step numbers and the review stars all shift to the chosen color in the same breath.
function apply(s){
root.style.setProperty("--accent", s.accent);
root.style.setProperty("--on-accent", s.on);
wall.style.background = s.wall; // repaint the hero
}
Every accent ships with a paired --on-accent text color and a darkened --accent-deep for links on the white background, so contrast holds no matter which swatch wins — the light ochre flips its button text to ink, the darker shades stay white.
3 · Hover previews, a click commits
Because the swatches are buttons, they work by keyboard, tap and mouse identically. mouseenter and focus preview a color live; mouseleave and blur revert to the last committed choice; a click locks it in and moves the aria-pressed state. It feels like flipping through paint chips, then setting one down.
4 · Guarding the flourish
The interaction is deliberately subordinate to the call-to-action: the phone button and "Get a Free Quote" sit above the swatch bar, and the swatch copy openly says "it's the fun part; the free quote is the real one." Under prefers-reduced-motion the global transition override makes every repaint instant — no eased fades, no pulsing map marker — so the feature still works but never moves for people who asked it not to.
5 · Art-directed photography
Both supplied photos are treated with the palette rather than dropped in raw. The hero carries the repaint layer plus a diagonal ink scrim (linear-gradient(102deg, rgba(20,18,16,.9) → transparent)) that keeps white headline text above AA on every swatch. The roller macro is hung in a slightly rotated frame with a corner color-chip and a neighborhood caption, so it reads as a hung print, not stock.
Why this converts
- It defuses the #1 objection in the hero. Color is the scary, seemingly irreversible part of painting. Letting a homeowner see real shades on a real wall — in the first five seconds — replaces "what if I hate it" with "oh, I could do that," which is the mindset that fills out a form.
- The phone number appears six times and twice above the fold — header pill, hero button, quote panel, the thank-you state, sticky mobile bar and footer — always a live
tel:link. The playful part never buries the profitable part. - Trust sits directly under the headline: 4.9★ from 521 reviews, "licensed, bonded & insured," and 14 years in business, answering "are these people legit?" before the first scroll.
- The sticky mobile call bar keeps "Call Now" and "Free Quote" under the thumb for the whole scroll, and the body reserves bottom padding so it never covers content.
- The process section sells certainty, not services: Call → free color consult & quote → prep & protect → flawless finish. It frames the whole job as low-risk, echoing the swatch promise made in the hero.
- Locality is everywhere — a 626 number, a Pasadena base, eight named Valley cities, and neighborhood-tagged reviews (South Pasadena, San Marino, Pasadena). "They're from here" is a local service business's strongest trust cue.
How it was made
This site was hand-coded — plain HTML, CSS, and JavaScript, written line by line. No page builders, no drag-and-drop themes, no off-the-shelf frameworks. Every detail, from the live repaint swatches that recolor the hero wall to the sticky call bar, was engineered specifically to move a homeowner toward one action: picking up the phone.
That's the Tiny Mammoth approach to a client website: a template built to convert, not just to look good.
Why this one is unique
Every template in our library moves along a few axes: its signature interaction, its relationship to color, and its aesthetic school. TrueCoat is deliberately different on all three.
Different axes from earlier templates
- Signature: earlier service sites leaned on scroll-driven decoration (a copper pipe drawing itself) or the tired before/after slider. This one's signature is generative and user-driven — the visitor repaints the hero and reskins the site, so no two visits look the same.
- Color: most templates commit to a fixed brand palette. TrueCoat commits to having no fixed accent — the base is an intentionally neutral gallery white so the one shifting variable can shout. The brand color is whatever the customer is considering.
- Aesthetic: where the warm-trade sites go navy-and-slab-serif "competence," this goes gallery-white and rounded-geometric Poppins — showroom, not toolbox.
The hypothesis
Color is the scary, seemingly irreversible part of a paint job. The number-one hesitation isn't price or trust — it's "what if I hate it on the wall?" Letting a homeowner preview real colors on a real wall removes that hesitation and makes booking feel safe, which should raise quote-request rates versus a static gallery hero.
The advantages
- The interaction is the sales pitch — playing with it rehearses the exact value proposition ("we'll show you the color first"), so engagement and message reinforce each other.
- Because it's driven by one CSS variable and one blend layer, it costs a few lines of JS and zero extra assets, and degrades to a perfectly good static hero under reduced-motion or if scripting fails.
- A neutral base palette ages well and re-skins instantly for any real painter who adopts it — swap five hex values and it's their brand.