Internal reference

Style guide & component library

Everything available when building a Perfected page: the section components, the props on each, the color and spacing tokens, and the rules that keep pages consistent. Live examples of every component sit at the bottom of this page.

Building a page

Pages are assembled from section components. You should almost never need to build a section from raw elements — if a layout you want does not exist, it is usually a variant of something that does.

1

Duplicate an existing page, or start blank and drag in section components.

The component panel is grouped into Sections, Primitives, Icons and Global.

2

Set the section's theme on the component's Variant property.

That recolors the whole section at once. Never restyle a section by hand.

3

Fill in the props in the component settings panel on the right.

Text, images, links and show/hide toggles are all props — you do not enter the component to edit them.

4

Check the first section carries its "is first" treatment.

The leading section needs extra top padding to clear the fixed header.

5

Preview at 1440, 991, 767 and 375 before publishing.

Those are the four Webflow breakpoints the site is built against.

The one rule

Use components and tokens. If you find yourself typing a hex code, a pixel value or a font name into the style panel, stop — there is a token for it, and hand-entered values are what break the site when the brand changes.

Color

Every chip below is bound to the Webflow variable it names, so these specimens update themselves when a token changes. Apply color by selecting the variable — never by typing a hex code.

cream
Default page ground
deep-cream
Separates adjacent sections
teal
Primary brand, body type
teal-accent
Accent on teal grounds
fig
Theme primary
fig-accent
Theme accent
neutral-900
Darkest neutral, button hover
neutral-700
Body copy on cream
neutral-500
Supporting and sub-labels
neutral-300
Hairlines and dividers
pink
Unused campaign palette
pink-accent
Unused campaign palette
error
Form validation only

Section themes

Every section supports up to four themes. Switching the theme swaps background, text, accent and button colors together, so contrast stays correct. Set it on the Variant property — not by changing colors.

Default
Cream ground. The default for most sections.
Teal
Dark teal ground, cream type.
Accent
Points at the Theme collection.
Secondary
Slightly deeper cream. Separates adjacent sections.
Why Accent is indirect

Accent does not point at a color — it points at the Theme collection, which currently resolves to fig. Repointing that one collection restyles every Accent section on the site at once. That is how a campaign palette gets swapped, and why the unused pink tokens exist.

Semantic tokens

These are the tokens to reach for when styling. They point at the primitives above and change meaning with the section theme, which is why using them keeps contrast correct automatically.

bg-primary
Section background
bg-secondary
Panel / card background inside a section
bg-accent
Accent fill
fg-primary
Headings and primary text
fg-inverse
Text on an inverted ground
fg-accent
Accent text
fg-neutral-dark
Body copy
fg-neutral-mid
Eyebrows, captions, muted text
button-primary
Button fill
button-primary-hover
Button fill on hover

Typography

Apply type as a class. Each specimen below carries the real class, so what you see is exactly what the site renders — never set a font, size or weight by hand.

Justice made human
text-1Page-defining hero headline. One per page at most.
Justice made human
text-2Hero headline.
Justice made human
text-3Section headline — the usual choice.
Justice made human
text-4Sub-section headline, card titles in stacking cards.
Justice made human
text-5Card title. Bold sans.
Justice made human
text-6Card title, medium weight.
We guide people harmed by corporations through the legal process.
text-p1Default body copy.
We guide people harmed by corporations through the legal process.
text-p2Small body copy.
Eyebrow label
text-eyebrowThe small label above a headline.
Learn more
text-ctaButton and link labels.
Image caption
text-captionImage captions.
We guide people harmed by corporations through the legal process.
text-p1-boldEmphasized body copy.
We guide people harmed by corporations through the legal process.
text-p2-boldSmall body copy, bold.

Spacing

Each bar is bound to its spacing variable and is drawn at the current window width. Three of the steps shrink on smaller breakpoints, so resize the window and watch them change rather than trusting a single number.

xxxs
xxs
xs
s
m
l
xl
xxl
xxxl
Step
Mobile → Tablet → Desktop
xxxl
96px → 120px → 120px
xxl
64px → 96px → 96px
xl
48px → 64px → 64px
l
32px → 48px → 48px
m and below
Fixed at every breakpoint
spacing-inline (page gutter)
24px → 24px → 64px

Corner radius

Six steps, each bound to its radius variable. Pill is used for buttons; the rest are for panels and cards.

s
m
base
l
xl
pill

Layout & grid

Sections are full width; their contents sit inside a centered container. Do not set widths on sections by hand — use the container, and let the spacing tokens handle the rhythm.

content-width
1600px — the maximum measure for section contents
spacing-inline
The page gutter: 24px on mobile and tablet, 64px on desktop
global-header-height
80px — the first section must clear this
Breakpoints
Desktop (base), Tablet ≤991px, Mobile L ≤767px, Mobile ≤479px
Check all four

Preview at 1440, 991, 767 and 375 before publishing. Those are the four breakpoints the site is built against, and a layout that works at two of them often breaks at the others.

Component library

Usage counts are a snapshot taken on 8 September 2026 and will drift as pages are added — treat them as a rough guide to how load-bearing each component is, not a live figure. Live examples of every component sit below this documentation.

Sections
Hero5 uses
Homepage-style hero: centered heading, 16:9 media, body and CTAs.
Variants Default, Teal, Teal / Story, Accent
Props Eyebrow, Heading, Heading Emphasis, Heading Suffix, Body, Media, Media Alt, Show CTAs, CTA 1 Label/Link
Secondary Hero8 uses
Split hero — text one side, 4:5 media the other.
Variants Teal / Media Right, Teal / Media Left, Teal / Media Left / Text 2, Accent / Media Right, Accent / Media Left
Props Eyebrow, Heading, Heading Emphasis/Suffix, Body, Media, Media Alt, Caption, Show Caption, CTA 1 + CTA 2
Text Hero11 uses
Centered text-only hero. The most-used hero on the site.
Variants Default, Teal, Accent
Props Eyebrow, Heading, Heading Tag, Heading Emphasis/Suffix, Body, Show CTAs, CTA 1 Label/Link
Full Bleed Hero1 use
Edge-to-edge media with gradient scrim and bottom-anchored heading.
Props None — edit contents directly.
Text and Media3 uses
Split text/media section.
Variants 50/50 Text | Media, 50/50 Media | Text, 50/50 Media | Text · Accent, 60/40 Text | Media, 60/40 Media | Text
Props Eyebrow, Heading, Heading Emphasis/Suffix, Body, Media, Media Alt, Show CTAs, CTA 1 + CTA 2
Highlight Cards1 use
Card grid. Drop Highlight Card Items into the slot.
Variants Default, Teal, Accent
Props Eyebrow, Heading, Body, Show CTAs, Slot
Stacking Cards0 uses
Sticky-stacking card sequence. Drop Stacking Card Items into the slot. What We Do and Careers build this section inline rather than from the component, which is why the count reads zero — use the component on new pages.
Props Eyebrow, Heading, Heading Emphasis/Suffix, Body, Show Heading, Slot
Accordion1 use
FAQ accordion, full width.
Props None — edit items directly.
Media Accordion1 use
Accordion paired with cross-fading imagery. First item opens on load.
Props None — edit items directly.
Two Image Gallery4 uses
Two-up gallery. Ratio combos set per image wrapper.
Props Eyebrow, Heading, Body, Show Heading, Image 1 + 2 with Alt and Caption
Four Image Gallery2 uses
Two columns of two. Ratios fixed 4:5, 5:4, 5:4, 4:5 by position.
Variants Base, Accent
Props Eyebrow, Heading, Body, Show Heading, CTA 1, Images 1–4 with Alt
Six Image Gallery3 uses
Three columns of two. Ratios fixed by position.
Variants Base, Accent
Props Eyebrow, Heading, Body, Show Heading, CTA 1, Images 1–6 with Alt and Caption
Image Block8 uses
Standalone image with optional caption.
Variants 16:9, 5:4, 4:5, 1:1
Props Image, Image Alt, Caption, Show Caption
Pullquote4 uses
Large serif pull quote with attribution on a rounded panel.
Variants Default, Secondary, Teal, Accent
Props Quote, Attribution, Show Attribution
PreFooter10 uses
Full-width CTA panel with optional background image and dark overlay.
Props Eyebrow, Heading, Heading Emphasis/Suffix, Body, Background Image, Show Background Image, CTA 1 + CTA 2
Video1 use
16:9 video block. Wraps a YouTube embed or a self-hosted clip.
Props Video (URL)
RTE1 use
Rich text block on a narrow centered measure. Used on article pages.
Props None — type directly into the block.
Newsletter Social1 use
Newsletter signup panel with heading, social links and Mailchimp form.
Props None.
Primitives
Heading & Text82 uses
Eyebrow + heading + body + CTAs. Nested inside nearly every section — this is the block you will edit most.
Variants Base, Heading Text 4, Text 1, Text 2, Text 5, Text 4 Left
Props Eyebrow Text, Heading Tag, Heading Text, Heading Emphasis, Heading Suffix, Body Richtext, Show CTA Section, CTA 1 + CTA 2
CTA164 uses
Pill button link.
Variants Primary, Secondary
Props Text, Link, Visible
Card Item8 uses
Card with eyebrow, image, title, description and CTA.
Variants Base, Preview, Timeline
Props Eyebrow, Show Eyebrow, Image, Title, Description, CTA Label, Show CTA, Destination URL
Highlight Card Item18 uses
One highlight card: icon or number decorator, headline, body.
Props Icon, Show Icon, Decorator Text, Show Decorator Text, Headline, Body
Stacking Card Item11 uses
One card in a stacking sequence: number, headline, body, square media.
Props Number, Show Number, Headline, Body, Image, Image Alt
Global
Global Header24 uses
Sticky header: dual logo, nav, mobile menu, shy-nav on scroll.
Props None.
Global Footer24 uses
Footer: logo, nav, social, newsletter, legal.
Props None.
Banner1 use
Announcement bar with optional countdown and 2-day dismissal memory.
Props Set data-expires (ISO with offset) and data-banner-id on the element.
Social / Social Link5 uses
Social icon row. Per-network visibility toggles.
Variants Base, Centered
Props Title, Destination URL, one Visibility toggle per network

Custom code

Some behavior on this site comes from custom scripts rather than from Webflow. Those scripts find elements by class name, so renaming a class in the list below can silently break the thing it powers. Read this before renaming anything.

pcForms
Formstack form styling — depends on .formstack-mount and .fsForm
pcVideo
Video players — video URLs are hard-coded by page path, so a developer must change them
pcAnim
Scroll reveal animations — depends on .heading-text, .heading-text__*, .image-gallery-item, .component
Stacking Cards
Sticky card behavior — depends on .stacking-card-item and .stacking-cards__*
Site head CSS
Header inversion, spacing, mobile menu, hero fade — depends on .global-header, .component, .heading-text__*, .stacking-card-item__left
Before you rename a class

Check it against the list above. If it appears there, or starts with one of those prefixes, ask a developer first — the Designer will not warn you, and the breakage shows up only on the published site.

Videos need a developer

Video sources are hard-coded in the pcVideo script and keyed to the page path, so swapping a video is not something you can do from the Designer today. Flag it and it can be moved into an editable field.

We’re here when you need us most.

<p>Body copy.</p>

Rich text content. Unlink this section on the page to author real copy.

Heading

Body copy.

Heading

Body copy.

Heading

Body copy.

01

First card

Body for the first card.

02

Second card

Body for the second card.

03

Third card

Body for the third card.

Quote text goes here.
Attribution

Heading

Body copy.

Heading

Body copy.

Eyebrow

Header

This is the body.

Answer text goes here.

Answer text goes here.

Eyebrow

Full bleed hero headline

This is the body.

Eyebrow

Header

This is the body.

Answer text goes here.

Answer text goes here.

01

Headline

Body copy for this card.

How We Support You

Real support. Every step of the way.

You don’t need to know everything about how a lawsuit works to take action. That’s why we’re here.
01

We identify who’s been harmed.

We work in affected communities to understand what happened and who was impacted.

02

We help build the case.

That includes gathering documents and evidence, reviewing information, and working with our experienced legal partners.

03

We demand responsibility.

We work alongside our legal partners to help people harmed by corporations hold them accountable.