Build guide

How this site was designed & built

A genuine walkthrough of the Isabell's Home Care showcase β€” the creative reasoning, the imagery art direction, the animation techniques, and the accessibility decisions. Everything here is reproducible with plain HTML, CSS, JS and a couple of CDN scripts.

1 Β· The concept: the opposite of an insurance brochure

Most senior-care websites fail the same way: they look like insurance paperwork. Cold blues, stock photos of worried seniors staring out of windows, clinical language ("activities of daily living", "care solutions"), and a quote form where a phone number should be. The emotional read is pity and process β€” exactly what an adult child feels guilty about, and exactly what a senior dreads.

So the design brief was one sentence: make it feel like a well-loved home, not a facility. Every decision below traces back to that.

2 Β· Palette: linen, terracotta rose, plum ink

Warm ivory ground so the pages feel like linen and lamplight rather than paper and fluorescent tube. Terracotta rose carries warmth and action; a deep plum-charcoal replaces pure black so even the text feels soft; sage and honey gold are supporting notes (icons, flourishes, card accents). Deliberately distinct from the showcase's dental site (cream/mint/apricot) and wellness retreat (sage/sand) β€” here sage is a garnish, never the lead.

Linen#FAF3EA
Blush#F5E6DE
Terracotta#A14D3F
Dusty rose#C98B7E
Plum ink#3B2C33
Sage#75855F
Honey gold#C0912E

3 Β· Typography & the large-type decision

Fraunces (a warm, wonky humanist serif with real character) for display, Nunito Sans (rounded, gentle, extremely legible) for body, and Caveat only for Isabell's signature and one photo caption β€” handwriting is a spice, not a font.

The body size is 19px with 1.75 line-height β€” noticeably larger than a typical marketing site. That's deliberate: the audience is adult children and seniors themselves. Presbyopia is near-universal after 60, so 16px body text quietly excludes half the audience. Larger type, generous line-height, and real contrast (plum ink on linen is ~11:1, well past WCAG AA β€” most pairings clear AAA) make the site readable without anyone reaching for their glasses. Big type also feels calmer and more confident, which suits the brand.

4 Β· Imagery: art-directing away from the category clichΓ©

All eight photos are AI-generated, then compressed to ≀1600px JPEGs to keep the site fast. The creative direction was the point: every scene shows genuine joy and activity β€” laughing, baking, card games β€” never anything passive, clinical, or pitying, with warm natural light and caregivers dressed like family rather than staff.

How each photo was briefed

Every image began as a carefully art-directed brief β€” the lighting, lens feel, palette, composition and emotional register specified shot by shot β€” and was iterated until it matched the warm, dignified world of the brand. The eight scenes: the hero tea-and-laughter moment, Isabell's window-light portrait, hands over a photo album, a garden walk at golden hour, baking together, reading aloud on the sofa, a card game with a big laugh, and arranging flowers in a bright kitchen. The full brief library is proprietary to the studio β€” available to clients on request.

Baking together β€” one of the generated photos Garden walk at golden hour β€” one of the generated photos Hands over a photo album β€” one of the generated photos

5 Β· Motion: tender and unhurried

GSAP 3 + ScrollTrigger from the jsDelivr CDN. The motion language is deliberately slow and soft β€” nothing snaps, nothing bounces. Three techniques carry the whole site:

a. The self-drawing flourish (the signature move)

The underline beneath "warmth" in the hero, the little heart in the wordmark, and the dotted thread connecting the three steps are all SVG paths that draw themselves using the classic stroke-dash technique β€” measure the path, offset the dash by its full length, then animate the offset to zero when the element scrolls into view:

document.querySelectorAll(".draw-me path").forEach(function (path) {
  var len = path.getTotalLength();
  gsap.set(path, { strokeDasharray: len, strokeDashoffset: len, opacity: 1 });
  gsap.to(path, {
    strokeDashoffset: 0,
    duration: 1.4,
    ease: "power2.inOut",
    scrollTrigger: { trigger: path.closest("svg"), start: "top 88%", once: true }
  });
});

A hand-drawn line that draws itself reads as human β€” it's the motion equivalent of the founder's signature.

b. Soft reveals with stagger

Everything content-level uses a single [data-reveal] attribute (fade + 28px rise, 1.05s, power2.out) or [data-reveal-group] for card grids, where children rise one after another at a 0.14s stagger. One system, applied everywhere, keeps the two pages feeling like one hand built them.

c. Gentle parallax + count-ups

The hero photo is scaled to 112% and drifts Β±6% on scroll (scrub: 1.2 so it lags dreamily behind the scrollbar). The trust stats count up from zero the first time they enter the viewport.

Accessibility note: all motion is wrapped in a prefers-reduced-motion check β€” reduced-motion users get a fully static, fully visible page. And because reveals are applied via a .js class on <html>, users without JavaScript see all content too.

6 Β· Design details that say "care"

7 Β· Structure & tech

8 Β· Deploying on Netlify

The site is a static folder, so deployment is drag-and-drop:

  1. Go to app.netlify.com β†’ "Add new site" β†’ "Deploy manually".
  2. Drag the isabells-care folder onto the drop zone. Netlify serves index.html at the root and the care/ and guide/ subfolders as clean URLs (/care/, /guide/) automatically.
  3. Rename the site (Site settings β†’ Change site name) or attach a custom domain.

Or with the CLI:

npm i -g netlify-cli
cd isabells-care
netlify deploy --prod --dir .

No build command, no environment variables, no framework β€” that's the point.

← Back to the site