SectionShell
LOWWrapper for all page sections. Controls variant (dark/light), optional full-bleed mode, and consistent padding.
| Prop | Type | Default |
|---|---|---|
| variant | 'dark' | 'light' | 'light' |
| fullBleed | boolean | false |
| id | string? | — |
SectionHeader
LOWMono-styled numbered label at the top of each section. Pattern: [number] label_
| Prop | Type | Default |
|---|---|---|
| number | string | — |
| label | string | — |
| variant | 'dark' | 'light' | 'light' |
AccentButton
LOWCTA button with arrow glyph. Three variants: accent (primary), dark, ghost.
| Prop | Type | Default |
|---|---|---|
| variant | 'accent' | 'dark' | 'ghost' | 'accent' |
| arrow | boolean | true |
| href | string? | — |
StatCard
LOWMetric display with large value + mono label. Three sizes, three color variants.
QuoteBlock
LOWTestimonial block with oversized quote mark, author avatar + name/role.
| Prop | Type | Default |
|---|---|---|
| quote | string | — |
| author | string | — |
| role | string | — |
| variant | 'dark' | 'light' | 'light' |
| avatarSize | 'sm' | 'md' | 'sm' |
AvatarStack
LOWOverlapping avatar row with +N remaining count and optional label.
| Prop | Type | Default |
|---|---|---|
| count | number | — |
| label | string? | — |
| variant | 'dark' | 'light' | 'light' |
Navbar
MED// Body scroll lock on menu open
useEffect(() => {
document.body.style.overflow = menuOpen ? "hidden" : "";
}, [menuOpen]);
// Left panel: dark feature card with stats
// Right panel: full-height nav linksHeroSection
HIGH// Giant "AI" text behind content font-size: 45vw opacity: white/[0.04] tracking: -0.05em translate-y: 30%
// Headline reveal
initial={{ opacity: 0, y: 30 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.6 }}
// Video preview
initial={{ opacity: 0, scale: 0.97 }}
transition={{ duration: 0.8, delay: 0.3 }}PainPoints
MEDconst topTicker = string[] // duplicated 3x const bottomTicker = string[] // duplicated 3x
WhoWeAre
MED// Staircase padding — each row offset 6%
{stats.map((stat, i) => (
<div style={{ paddingLeft: `${i * 6}%` }}>
<StatCard size="lg" />
<div className="flex-1 h-3 bg-black/4%" />
</div>
))}CustomerStory
MEDTestimonials
HIGHinterface Testimonial {
quote: string
author: string
role: string
stats: { value: string; label: string }[]
}Services
MEDinterface Service {
id: string // "01"-"06"
name: string
description: string
capabilities: string[] // 4 items
}HowItWorks
HIGH// Cards offset vertically by index
marginTop: isMobile ? '24px' : `${i * 50 + 24}px`
// Progress bar tracks hovered step
width: `${((hovered + 1) / steps.length) * 100}%`
// 48-column tick marks below bar
Array.from({ length: 48 }).map(() =>
<div className="flex-1 border-l border-black/15" />
)TechStack
LOWPricing
MEDinterface Tier {
name: string // Explorer | Creator | Pro
monthly: number // 0 | 497 | 1997
description: string
features: string[]
cta: string
popular: boolean
}ROICalculator
HIGH| Slider | Range | Step |
|---|---|---|
| Employees | 1–100 | 1 |
| Hours/week | 5–40 | 5 |
| Hourly cost | R$15–200 | 5 |
const baseCost = employees * hours * cost * 52 const annual = includeBenefits ? Math.round(baseCost * 1.3) : baseCost
FAQ
MEDinterface FAQ {
id: string // "01"-"06"
q: string
a: string
}Articles
MEDinterface Article {
date: string
category: string
author: string
authorTitle: string
title: string
excerpt: string
}Team
MEDContact
MEDHairline Grid (gap-px)
LOWParent has colored background + gap-px. Children have opaque background. The 1px gap reveals the parent color as grid lines.
// Dark variant <div className="grid gap-px bg-white/[0.06]"> <div className="bg-brand-dark">...</div> </div> // Light variant <div className="grid gap-px bg-black/[0.06]"> <div className="bg-brand-light">...</div> </div>
Ticker & Marquee
LOW@keyframes ticker {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
@keyframes ticker-reverse {
0% { transform: translateX(-50%); }
100% { transform: translateX(0); }
}
@keyframes marquee {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}Mono Label System
LOWfont-family: IBM Plex Mono font-size: 10-11px text-transform: uppercase letter-spacing: 0.15em – 0.2em font-weight: 400-700
Staircase Pattern
MEDItems are offset progressively to create a descending staircase visual.
// HowItWorks: vertical offset
marginTop: isMobile ? '24px' : `${i * 50 + 24}px`
// WhoWeAre: horizontal offset
paddingLeft: `${i * 6}%`Framer Motion Reveals
LOW// Fade-up (most common)
initial={{ opacity: 0, y: 20-40 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.6-0.7 }}
// Staggered children
transition={{ delay: i * 0.04-0.1 }}
// Scale reveal (hero video)
initial={{ opacity: 0, scale: 0.97 }}
animate={{ opacity: 1, scale: 1 }}Dark/Light Section Alternation
LOWLP alternates between dark (#050505) and light (#F5F4E7) sections. Some sections (PainPoints, FAQ, ROICalculator) use standalone backgrounds outside SectionShell for custom layouts.
| Section | Background |
|---|---|
| Navbar | dark/95 (fixed) |
| Hero | dark |
| WhoWeAre | light |
| PainPoints | dark → light |
| ROICalculator | cream |
| Services | dark |
| HowItWorks | light |
| CustomerStory | dark |
| Testimonials | light |
| TechStack | dark |
| Team | light |
| Pricing | dark |
| FAQ | cream |
| Articles | dark |
| Contact | light |
| Footer | dark |