Page layouts, section templates, and common UI compositions — ready-to-use patterns built on foundations and components.
For Claude / LLM Reference
Reference this file when building pages. Call sections by name: "refer to patterns Hero Sections" or "use the Page Layouts section".
Sections
Quick Reference
container mx-auto px-4
py-16 md:py-24
gap-6 md:gap-8
max-w-3xl mx-auto
Key Files
_layouts/default.html
_includes/header.html
_includes/footer.html
LLM Usage Guide:
Layout examples coming soon.
LLM Usage Guide:
container mx-auto px-4
Hero Section Quick Reference
| Type | Background | Layout | Use Case |
|---|---|---|---|
| Hero 1 | bone-200 + grid tiles | Centered text, 2-row carousel below | Homepage |
| Hero 2 | Configurable + grid tiles | Card left, text right | Feature pages, How it works |
| Hero 3 | Blurred image + noise | Card left, text right | Role pages, Use cases |
| Hero 4 | Blurred image + noise | Centered content + image | Role pages (alt), Landing |
| Hero 5 | bone-200 + radial tiles | Images top, text centered below | Meet the Team, Team member |
Full-width bone background with grid tiles. Centered tag, headline, subheading, and CTAs at top, with animated two-row image carousel below scrolling in opposite directions.
Let our AI-powered user researchers do it for you. They plan, conduct then analyse real customer interviews, providing you with essential actionable insights.
Structure
<!-- Hero content -->
<div class="w-full bg-grid-pattern">
<div class="container mx-auto px-4">
<div class="flex flex-col justify-center items-center py-16 lg:py-24">
<!-- Tag chip -->
<div class="text-overline flex items-center bg-white bg-opacity-50 rounded-xl px-4 py-2 mb-6">
<span class="inline-block w-[7px] h-[7px] rounded-full bg-orange-600 mr-2"></span>
TAG TEXT
</div>
<h1 class="text-display text-center pb-4 px-6 max-w-4xl">...</h1>
<p class="text-body md:text-body-lg text-center max-w-5xl opacity-80 px-6">
<span class="font-bold text-orange-600">Highlighted text.</span> Regular text.
</p>
<div class="flex flex-col md:flex-row gap-4 mt-8">
<a href="#" class="btn-primary">...</a>
<a href="#" class="btn-secondary">...</a>
</div>
</div>
</div>
</div>
<!-- Image carousel -->
<div class="w-full overflow-hidden bg-grid-pattern mask-to-b">
<!-- Top row: scrolls left -->
<div class="flex gap-4 md:gap-8 mb-4 md:mb-8 carousel-row-left">
<div class="relative w-[120px] h-[120px] md:w-[200px] md:h-[200px] flex-shrink-0 rounded-3xl overflow-hidden">
<img src="..." class="w-full h-full object-cover" />
<div class="absolute inset-0 rounded-3xl shadow-[inset_0_0_0_4px_rgba(255,255,255,0.5)]"></div>
</div>
<!-- Duplicate images for seamless loop -->
</div>
<!-- Bottom row: scrolls right -->
<div class="flex gap-4 md:gap-8 carousel-row-right">...</div>
</div>
Reusable Partial
The carousel is a shared Jekyll partial for reuse across pages:
{% include hero-carousel.html %}
File:
_includes/hero-carousel.html
Carousel Animation:
shadow-[inset_0_0_0_4px_rgba(255,255,255,0.5)]
adds subtle white border on images
mask-to-b
fades carousel to bottom edge
w-[120px] md:w-[200px]
— images scale up on larger screens
Card on left, text content on right. Background is configurable (bone, white, orange, or charcoal) with appropriate grid tiles.
Background Variants
bg-bone-200
+
bg-grid-pattern
bg-white
+
bg-grid-pattern
bg-orange-600
+
bg-grid-pattern-light
+ white text classes
bg-charcoal-900
+
bg-grid-pattern-light
+ white text classes
Card Content
Describe your goals in plain English. Our AI researcher builds a complete study plan — no research training required.
Bone background variant shown above
Full-width blurred background image with medium visual noise overlay. Card on left, text content on right. Great for role pages and use cases.
Card Content
Describe your goals in plain English. Our AI researcher builds a complete study plan — no research training required.
Blurred Background Image Structure
<div class="relative py-16 md:py-24 overflow-hidden">
<!-- Blurred background image -->
<div
class="absolute inset-0 bg-cover bg-center scale-150"
style="background-image: url('image.jpg'); filter: blur(50px);"
></div>
<!-- Optional tint overlay -->
<div class="absolute inset-0 bg-black/10"></div>
<!-- Noise overlay (medium: 0.40 opacity) -->
<svg class="absolute inset-0 w-full h-full pointer-events-none opacity-[0.40] mix-blend-overlay z-[5]">
<filter id="noise">
<feTurbulence type="fractalNoise" baseFrequency="0.7" numOctaves="5" stitchTiles="stitch" />
</filter>
<rect width="100%" height="100%" filter="url(#noise)" />
</svg>
<div class="container mx-auto px-4 relative z-10">
<!-- Content with white text classes -->
</div>
</div>
Full-width blurred background with centered content at top and image/card below. Alternative layout for role and landing pages.
Describe your goals in plain English. Our AI researcher builds a complete study plan — no research training required.
Image or Card Content
Use
text-center
and
max-w-5xl mx-auto
for centered content
Bone background with centered grid tiles (radial mask fading on all edges). Team member images at top (carousel or single), centered text content below.
Let us find the right participants, conducts interviews, analyse responses, and delivers actionable insights—with results in hours, not weeks.
Image Arrangement (Overlapping Layers, Square):
shadow-[inset_0_0_0_4px_rgba(255,255,255,0.5)]
-mr-6/-ml-6
blur-[1px]
, overlap with
-mr-8/-ml-8
items-center
)
-bottom-3
)
Variants:
Hero Section CSS Reference
Background Classes
bg-bone-200
— Default hero bg
bg-grid-pattern
— Dark tiles (on light)
bg-grid-pattern-light
— Light tiles (on dark)
mask-to-tr
— Fade to top-right
mask-radial-center
— Fade from center
Blurred Background
filter: blur(40px)
— Background blur
transform: scale(1.1)
— Prevent blur edges
opacity-[0.40]
— Medium noise
mix-blend-overlay
— Noise blend
Key principle:
Background fills full width, content uses
container mx-auto px-4
LLM Usage Guide:
Feature grid examples coming soon.
LLM Usage Guide:
Content section examples coming soon.
LLM Usage Guide:
animate-entrance
for above-fold content (instant load)
data-scroll-animate
for scroll-triggered reveals
data-scroll-stagger="0.15"
to section container for sequential child animations
data-scroll-scrub="1"
for scroll-linked animations on hero cards
Choose the right animation approach based on content position and importance.
| Type | Implementation | Use Case | Trigger |
|---|---|---|---|
| CSS Entrance |
animate-entrance
class
|
Hero sections, above-fold content | Page load (immediate) |
| GSAP Triggered | data-scroll-animate |
Below-fold sections, feature grids | Element enters viewport |
| GSAP Scrub | data-scroll-scrub="1" |
Featured cards, parallax effects | Scroll position (linked) |
Above-fold content uses CSS animations that run on page load with staggered delays.
Hero with CSS Entrance Animations
<!-- Hero content - animates on page load -->
<div class="flex flex-col items-center">
<!-- Badge (no delay) -->
<div class="animate-entrance">
AI-powered User Researchers
</div>
<!-- Headline (100ms delay) -->
<h1 class="animate-entrance animate-entrance-delay-1">
Customer insights you need...
</h1>
<!-- Subheading (200ms delay) -->
<p class="animate-entrance animate-entrance-delay-2">
Our AI-powered researcher...
</p>
<!-- CTAs (300ms delay) -->
<div class="animate-entrance animate-entrance-delay-3">
<a class="btn-primary">Get started</a>
<a class="btn-secondary">Learn more</a>
</div>
</div>
Key classes:
animate-entrance
+
animate-entrance-delay-1/2/3
(100ms increments)
Below-fold content uses GSAP for scroll-triggered animations with staggered children.
Section with Staggered Scroll Animations
<!-- Content section - animates on scroll -->
<div class="container mx-auto" data-scroll-stagger="0.15">
<!-- Badge -->
<div class="text-overline" data-scroll-animate="fade-up">
We've all been there
</div>
<!-- Headline -->
<h2 class="text-display-sm" data-scroll-animate="fade-up">
You planned 20 customer interviews...
</h2>
<!-- Body text -->
<p class="text-body-lg" data-scroll-animate="fade-up">
The rest just didn't happen...
</p>
</div>
Key:
Parent has
data-scroll-stagger="0.15"
— each child animates 150ms after the previous
Hero-style cards that scale and move with scroll position using scrub mode.
Scroll-Linked Featured Card
<!-- Card animation tied to scroll position -->
<div
class="card-white w-full md:w-1/3"
data-scroll-animate="scale-up"
data-scroll-scrub="1"
data-scroll-start="top bottom"
data-scroll-end="top 40%"
>
<h3 class="text-display-sm">Meet Alice</h3>
<img src="alice.jpg" alt="Alice" />
</div>
Effect: Card starts at 70% scale and opacity 0 when bottom of viewport reaches it, scales to 100% when top of card reaches 40% viewport height
Best practices for animating different page sections.
Do
Don't
Section Animation Reference
CSS Entrance (Above-Fold)
animate-entrance
— base animation class
animate-entrance-delay-1
— 100ms delay
animate-entrance-delay-2
— 200ms delay
animate-entrance-delay-3
— 300ms delay
GSAP Scroll (Below-Fold)
data-scroll-animate="fade-up"
— standard reveal
data-scroll-stagger="0.15"
— on parent
data-scroll-scrub="1"
— scroll-linked
data-scroll-start/end
— trigger points
Key files:
assets/js/scroll-animations.js
(GSAP),
assets/css/src.css
(CSS entrance)