Design System

Foundations and components

Design System · Version 1.1 · Complete · Proposed

Built from the page.Ready for the web.

Every token below was measured from Wakefield at Home, then extended for screens, states and accessibility. All components used on the example website are documented here, and each maps one-to-one to a planned WordPress block.

Files: tokens.css · base.css · components.css · site.css · tokens.json · theme.json

Proposed · awaiting approval
FoundationsDesign System

Navy for authority.Ivory for warmth.

Gold is a line, not a fill. The brand stays luxurious by holding back.

Brand primitives

Sampled from the print file. The deeper Gold Ink is new: the magazine's gold labels on ivory measure 2.45:1, below the WCAG minimum for small text.

TokenValueSourceUse
--ot-navy #071D2Dp1, p4, p7, p8Navigation, footer, cover heroes, CTA panels, display type
--ot-ink #142A38p2–p6 bodyBody text on light grounds
--ot-ivory #F7F3ECp2–p6 groundPage background, text on navy
--ot-paper#FBF9F5NewInputs, raised cards on ivory
--ot-sandstone#E9E2D5p3 history bandAlternating sections, stat and callout panels
--ot-gold #B49A65All pagesRules, frames, linework; labels on navy only
--ot-gold-ink#7A6438NewGold-toned text on ivory and paper (5.1:1)
--ot-gold-pale#D9C9A5NewFocus ring and hover on navy
--ot-slate#59656Ap2–p6 captionsCaptions, metadata, secondary text
--ot-mist#A3AEB3NewSecondary text on navy (7.6:1)

Semantic layer

Components read semantic tokens only. Navy sections remap them with .surface-inverse, so one component works on either ground.

GroupTokensOn ivoryOn navy
Surface--surface-page --surface-raised --surface-muted --surface-inverseivory · paper · sandstonenavy · navy-800
Text--text-display --text-body --text-muted --text-accentnavy · ink · slate · gold-inkivory · #E4E0D8 · mist · gold
Rules--rule-gold --rule-hair --border-subtle --border-inputgold · 55% goldgold · 45% gold
Focus--focus-ring --focus-width --focus-offsetnavy, 2px, 3px offsetgold-pale
States--hover-tint --press-tint --disabled-*Tints derived from navy or ivory; never a new hue
Forms--input-bg --input-border --input-placeholder --input-border-focuspaper · #8E8778 (3.2:1)navy-800 · #6F8090
Status--success --warning --error --info (+ -bg)Muted heritage tones: pine, ochre, brick. All ≥ 6:1 on their tint.
Source-confirmed Proposed Demo content Needs verification

Content-integrity badges are part of the system. They must appear on any demo listing, unverified claim or placeholder until it is replaced.

Contrast checks

WCAG 2.2: 4.5:1 for body text, 3:1 for large text (24px+, or 18.5px+ bold) and UI boundaries.

PairingSampleRatioSmall textLarge text / UI
Navy on ivoryAa15.53PassPass
Ink on ivoryAa13.39PassPass
Slate on ivoryAa5.43PassPass
Slate on sandstoneAa4.67PassPass
Gold on ivory (magazine labels)Aa2.45FailLines only
Gold Ink on ivoryAa5.12PassPass
Gold on navyAa6.34PassPass
Ivory on navyAa15.53PassPass
Mist on navyAa7.58PassPass
Input border on ivoryField3.23n/aPass
The Oberdorfer TeamDesign System · 202601
FoundationsDesign System

Light headlines.Legible everything else.

The PDF sets every headline in Cormorant Garamond Light and its text in Manrope ExtraLight. Headlines keep Light. Text moves up to Regular, because ExtraLight is too faint for screens.

Display XL--step-display-xl
52 → 96px · 300 · 1.02

Luxury at every price point.

Display L--step-display-l
44 → 76px · 300

Fall in love with your home.

Display M--step-display-m
36 → 56px · 300

Close to Boston.Closer to what matters.

H1--step-h1
34 → 52px · 300

Know the market. Love the home.

H2--step-h2
30 → 44px · 300

The best plans are close to home.

H3--step-h3
24 → 34px · 400

What these numbers can tell you

H4--step-h4
21 → 26px · 400

If you are selling

H5--step-h5
20px · 500 serif

Roasted squash & apple soup

H6--step-h6
13px · 600 sans

Start with the right comparisons.

Lead--step-lead
18 → 21px · Manrope 300

A useful snapshot helps you ask better questions. A thoughtful comparison helps you make better decisions.

Body--step-body
16px · 400 · 1.65 · 68ch

Whether you are buying your first home, making room for your next chapter, or preparing to sell, we want you to feel heard, informed, and supported from the first conversation through closing.

Body small--step-body-s
14px · 400

Lot size, renovation quality, layout, parking, and condominium fees all belong in the comparison.

Caption--step-caption
13px · slate

Source: Redfin, Wakefield Housing Market, accessed October 10, 2026.
An evening on Lake Quannapowitt.

Label--step-label
12px · 600 · 0.18em caps

Real estate / Wakefield, Massachusetts

Button0.78rem · 600 · 0.14em

Request a consultation

Navigation13px · 500 · 0.06em

Buy   Sell   Communities   Our Team   Journal

Statistic--step-stat
40 → 64px · 300 · tabular

$786,979

Rules

Two lines that answer

Headlines are often two short sentences, the second answering the first. Break the line where the thought turns, using .answer.

Light is reserved

Use weight 300 only from 30px up. Smaller serif text uses 400–500, and body text never goes below Manrope 400.

Capitals are small

Uppercase is limited to sans labels and buttons, tracked 0.14–0.18em. Never set a serif headline in all caps, except the stacked logo.

The Oberdorfer TeamDesign System · 202602
FoundationsDesign System

Generous margins.Precise lines.

The magazine's whitespace, on Concept B's architectural twelve-column grid.

Spacing scale

4px base with editorial jumps. Sections breathe with --section-y (64 → 136px).

--space-14px
--space-28px
--space-312px
--space-416px
--space-524px
--space-632px
--space-748px
--space-864px
--space-996px
--space-10128px

Grid

12 columns, gutter 16 → 32px, page margin 16 → 80px, content max 1312px. Editorial layouts favour 6 + 5 offsets (image left, text from column 8).

Lines

Square corners everywhere. Depth comes from rules and grounds, almost never shadows.


.rule: 1px antique gold. Section and column dividers, as in the magazine.


.rule--hair: softened gold for long dividers on ivory.


.dim-rule: dimension line with end ticks, taken from the house drawing on page 7. Use it for measurements, ranges and architectural sections.

.folio-frame: the cover's inset double frame. Use one per view, on covers, heroes and the closing panel.

The Oberdorfer TeamDesign System · 202603
FoundationsDesign System

Twelve columns.Four breakpoints.

How pages are composed: the grid helpers, the points where layouts change, and the few places anything is lifted off the page.

Breakpoints

Content-first breakpoints. Media queries use the values directly; the tokens record them for design tools.

TokenValueWhat changes
--bp-sm36rem · 576pxCard grids go from one column to two; listing facts go 2 × 2
--bp-md52rem · 832pxTwelve-column splits, page heroes and footers collapse to one column
--bp-lg64rem · 1024pxDesktop navigation appears; the full-screen mobile menu retires
--bp-xl90rem · 1440pxDesign reference width; content stops growing at 82rem

Layout helpers

Compose pages from these before writing new CSS.

ClassDoes
.containerCentres content at max 82rem with fluid page margins (16 → 80px)
.section · .section--tightVertical rhythm: 64 → 136px, or 60% of that
.surface-inverse · .surface-mutedNavy or sandstone ground; remaps every semantic token inside
.gridRaw 12-column grid with the fluid gutter
.split · .split--reverseImage across columns 1–6, text from column 8 (or mirrored); one column below 52rem
.card-grid-3 · .card-grid-4 · .listing-gridCard grids that step down 4 → 2 → 1 and 3 → 2 → 1
.stack (--stack) · .cluster (--cluster)Vertical spacing between children; wrapping horizontal groups
.cols · .cols--3 · .cols--4 · .col-ruleEqual text columns, each optionally under a gold rule

Image and text split

.split, the magazine's 40/60 page, as used on the home and profile pages.

Autumn at Breakheart Reservation

Seasonal features

A little fresh air. A few good memories.

Body copy sits from column 8, leaving the gutter as air. Add .split--reverse to mirror it.

Elevation and layers

Print has no shadows, so the screen uses them only where something floats.

--shadow-1 · paper mockups, raised cards on photography

--shadow-2 · dialogs, toasts, focused search

Layers: --z-nav 50 · --z-overlay 80 (menus) · --z-modal 90 · --z-toast 95.

Corners: --radius: 0 everywhere. Only the yard-sign and phone mockups are rounded, because the objects are.

Page templates

Page-level layouts in site.css. Each becomes a WordPress template; open one to see it working.

TemplateLayout
Home.home-hero (cover + search), .intro (portrait + story), .paths, .promise
Listing.detail with a sticky .detail__aside showing panel
Team directory.directory-bar filters over .card-grid-3 of agent cards and open seats
Agent profile.profile (__photo 5 cols, __body 6 cols) with a quick-facts list, answer-first summary, FAQ and the phone .action-bar. One page per person, plus a template page for future agents
Article.article: body across columns 3–9, sticky .article__aside, .article__lede
Community guide.page-hero with a search-facing .page-hero__kicker h1 and an answer-first lead; overview beside .quick-facts--aside; neighborhoods, commute and schools, places and history, a .market-table with its source, FAQ, a town form and a .source-list. Built from tools/data/communities.json
Contact.contact-grid: contact lines left, tabbed forms right

Modifiers: .btn--block makes a button full width (phone forms); .panel--navy sets a form panel on navy.

The Oberdorfer TeamDesign System · 202604
FoundationsDesign System

Drawn, not decorated.

One authored set on a 24px grid with a 1.25 stroke and square ends, matching the page 7 linework. Icons support labels and never replace them.

search
menu
close
arrow
phone
mail
pin
save
beds
baths
area
calendar
map
office
agent
success
error
info
download
external

Illustrations

Massachusetts house types drawn in the same line, used as placeholders for demo listings and community cards until licensed photography arrives.

Colonial
Triple-decker (Worcester, Greater Boston)
Cape
The Oberdorfer TeamDesign System · 202605
Componentsot/button

Every action,clearly named.

Square, tracked and quiet. On hover a gold rule draws under the label, the magazine's line put into motion.

On ivory

Primary · defaultRequest a consultation
Primary · hoverRequest a consultation
Primary · focusRequest a consultation
Primary · loading
Primary · disabled
Text link with arrowRead the market update

On navy

Copy rules

Use

Request a consultation · Schedule a showing · Get a market review · Call Brandon and Kaitlyn · Send my question

Avoid

Submit · Click here · Learn more · Get started now! · Unlock your dream home

The Oberdorfer TeamDesign System · 202606
Componentsot/hero-cover · ot/page-hero · ot/section-head

The cover,translated.

Full-bleed photography under a navy scrim, inside the inset gold frame, with the issue line at the top and the promise at the bottom. Mark the focal point with --focal so the crop survives on mobile.

Brandon and Kaitlyn Oberdorfer outside a home with autumn plantings

Massachusetts · Buying · Selling · Local living

Luxury atevery price point.

Thoughtful service. Creative marketing. A personal connection to every move.

Photo: Wakefield at Home cover portrait. Confirm approved photography

Inner page hero

Every other page opens with a quieter header: breadcrumbs, a two-line headline, a lead and an optional action.

Find the homethat fits your life.

Ivory: .page-hero. The default for search, team and journal pages.

Make your homefeel exceptional.

Navy: .page-hero--navy. For selling, recruiting and other persuasive pages.

Close to Boston.Closer to what matters.

Photo: .page-hero--photo. For community guides and articles; the scrim keeps text at AA.

Section head

Opens every section inside a page: running head, two-line title, an optional lead and an aside link.

Featured homesDemonstration listings

Homes presentedlike a feature.

Optional lead, up to two lines.

The Oberdorfer TeamDesign System · 202608
Componentsot/listing-card · ot/agent-card · ot/community-card · ot/article-card

Image first.Facts underneath.

Cards are unboxed. The photograph and a hairline do the framing, as on the magazine's pages.

Property gallery

One lead image and two supporting views. The last tile opens the full gallery.

Agent card

Brandon and Kaitlyn lead, as one card, the way the magazine presents them. Future agents use the same card. Fields for unverified details stay empty, never invented.

Brandon and Kaitlyn Oberdorfer

Team leaders

Brandon & Kaitlyn Oberdorfer

Husband. Wife. Your Team.

BuyersSellersMassachusetts
View profile

Headshot pending
4:5, natural light, ivory or navy backdrop

Agent title

Future Agent

Biography, license and specialties are added in WordPress once verified.

Placeholder

Fields

  • Name, photo, title
  • Verified license information
  • Specialties and service areas (filterable)
  • Languages
  • Phone, email, social links
  • Authorized listings, testimonials, articles
  • Lead attribution ID

Community card

Portrait 3:4 cards for the Massachusetts community hub. Use real local photography with the source credited; use the line illustration until it arrives.

Lake Quannapowitt Panorama, RedSoxFan274 / Wikimedia Commons, CC BY-SA 4.0, cropped.

Community guide

ot/community-guide · one page per town at /communities/town/. Every fact has a source; schools are a DESE link, never a rating; no description of who lives there.

Market rows with source, period and geography

Calendar year20242025Change
Single-family median sale price$420,000$430,000+2.4%
Single-family sales904884-2.2%

Source: The Warren Group, MA December 2025 Sales, Prices by Town. Geography: city of Worcester.

Sources list

County
Worcester County
Population
206,518 (2020 Census)
Rail
Framingham/Worcester Line
Single-family median
$430,000 in 2025 Warren Group

Open seat

.seat · the honest empty state for the agent directory.

Your seat at the table

The team is growing. New agent profiles appear here as they join.

Join our team

The directory never pads itself with invented agents. Empty places become a recruiting invitation, and they disappear automatically as real profiles are published.

Agent profile

ot/agent-profile · one page per person at /agents/agent-name/. Unconfirmed fields render as placeholders, never invented copy.

Template preview Not a real agent. Shown only on the template page.

Pending headshot, 4:5 (1:1 on phones)

Headshot pending

Biography placeholder

Biography · first person

[120 to 250 words, verified facts only.]

To confirm

Publish checklist

  • Verified MA license number
  • Headshot, 4:5
  • Principal broker approval

Quick facts, with a placeholder value

Brokerage
REWAP Brokerage LLC
License
[MA license number to be supplied]

Phone action bar (fixed below 832px; shown static here)

Search and answer engines

One person per page, named in the title and h1. An answer-first summary sentence, a quick-facts list, an FAQ and a visible "profile updated" date. JSON-LD: ProfilePage with a Person linked to the team and brokerage by @id, plus FAQPage and BreadcrumbList. No review or rating markup until real, permitted reviews exist.

Conversion

Two actions above the fold (message, call), the action bar on phones, services that link into Buy and Sell, a partner card, and a form at the foot of the page whose lead type names the agent (agent:<slug>) for routing and attribution.

The Oberdorfer TeamDesign System · 202610
Componentsot/listing-detail

The details,in the right order.

A listing page leads with pictures, then the four numbers people compare, then the story, then the facts. Contact stays in reach the whole way down.

Key facts

.facts · four numbers under a gold rule; 2 × 2 on phones.

4Bedrooms
2.5Baths
2,400Sq. ft.
1928Built

Specification table

.spec-table · MLS fields, never retyped by hand.

Home typeSingle-family
StyleColonial
Taxes, fees[From MLS data]
MLS number[From MLS data]

Agent mini and showing panel

The sticky aside on desktop: request a showing, then the people behind it.

Request a showing

Brandon & Kaitlyn Oberdorfer

Team leaders · 406-250-7620

Video and 3D tour

.embed · click to load. The poster is the listing's main photo; the player (YouTube, Vimeo, Matterport, iGuide, Kuula, CloudPano) loads only when pressed, so the page stays fast and no video host sees a visit that never plays. States: rest, hover and focus (gold label), playing (the iframe fills the frame).

Rest
Explore the 3D tour
Hover and focus

Listing actions and share

.listing-actions · .share-row · under the gallery: request a showing, watch the tour, add the open house to a calendar (.ics or Google), then share through the phone's share sheet, copy link, Facebook, email or text. No share scripts or trackers. On phones the .action-bar keeps Call and Request a showing at the foot of the screen.

Payment estimate

.estimator · price, taxes and condo fee come from the listing when entered; the down payment starts at 20 percent; the interest rate is always the visitor's own (the site never states a rate). States: waiting for a rate (shown), then the monthly total and its parts.

Estimate a monthly payment

From your lender.

Estimated monthly payment

Enter a rate

An estimate for planning only, not a loan offer.

Attribution

Every live listing names its source. The placeholders show where.

Listing courtesy of [Listing brokerage]. Information deemed reliable but not guaranteed. Data from [MLS name], last updated [timestamp].

The Oberdorfer TeamDesign System · 202611
Componentsot/market-stats

Every numbercarries its date.

The navy two-by-two panel from page 4. Each value shows its period, and the panel always carries its geography, source and access date. Values are entered per report and are never live.

Data through August 2026 / All home types / Wakefield

$786,979Median sale price3 months ending August 2026
21Median days on marketAugust 2026
$483Median sold price / sq. ft.Redfin rolling 3-month snapshot
103.3%Sale-to-list priceAugust 2026

Source: Redfin, Wakefield Housing Market, accessed October 10, 2026. Geography: Wakefield town, all home types. Figures may be revised. This is not a valuation of any individual home.

Source-confirmed · historical

What these numbers can tell you

The townwide median is a starting point. Your best comparisons are recent closed sales that resemble your property.

Ask for a property-specific review

Before launch: choose a licensed, maintainable data source. These Wakefield figures must not appear as current or statewide.

The Oberdorfer TeamDesign System · 202612
Componentsot/inquiry-form

Short forms.Clear next steps.

Labels sit above the fields, errors say how to fix the problem, and every form explains what happens next. No one has to create an account.

Field states

Enter an email address like name@example.com.

Working example

Try sending it empty. Validation is real, and nothing is transmitted.

Request a seller consultation

Best way to reach you

We use these details only to respond to your request. Your inquiry goes to Brandon and Kaitlyn and is not sold or shared. Privacy policy to be written

Tabs

One contact page, four inquiry types. Arrow keys move between tabs; #seller in the URL opens that tab.

General message form.

Submission states

.form-status appears under the button and receives focus, so screen readers hear it.

A few details are missing.Fix the highlighted fields and send again.
Thank you. Brandon and Kaitlyn have your request.You will hear back by your preferred method.

Hint text: .field__hint, linked with aria-describedby.

The Oberdorfer TeamDesign System · 202613
Componentsot/alert · ot/toast · ot/dialog

Say what happened.Then get out of the way.

Alerts, toasts, dialogs and status messages. Each names the problem or the result in plain words, and none relies on colour alone.

Alerts

Section-level messages. Status colours stay muted heritage tones and always pair with an icon and words.

Market figures are historical.

Wakefield, data through August 2026 (Redfin).

Search saved.

We will let you know when a match is listed.

Open house time changed.

Sunday, 1–3 PM (demonstration).

Toast

A brief confirmation after an action, announced politely and gone after five seconds.

Navy, gold rule, bottom centre, always dismissible.

Dialog

Only for tasks that need protected focus. Native <dialog>: focus is trapped, Escape closes it, focus returns.

Save this search?

We will email you when a new home matches Wakefield, 3+ beds, up to $900k. No account needed.

Prototype notice

The ribbon on every example-site page. It is removed at launch.

Concept prototype: listings, future agents and form submissions are demonstrations. Project overview

The Oberdorfer TeamDesign System · 202614
Componentsot/triad · ot/steps · ot/pull-quote · ot/faq · ot/breadcrumbs

The magazine's furniture,made reusable.

Principles triad

From page 2. Three columns under one gold rule each.

Personal

Two partners invested in your goals.

Purposeful

A plan shaped around your home and life.

Prepared

Clear guidance and attention to the details.

Numbered steps

From page 7. Use numbers only when the order matters.

If you are selling

  1. Start with the right comparisons.

    Review recent closed sales with similar location, style, condition, and living area.

  2. Create a strong first impression.

    Clear the entry, simplify the rooms, and show the home in good light.

  3. Build a plan around your life.

    Discuss your timing, showing preferences, and next move.

If you are buying

  1. Get ready before you find the one.

    Connect with a lender for preapproval and review a comfortable monthly budget.

  2. Know your everyday priorities.

    Test the routine as well as the floor plan.

  3. Look beyond the listing price.

    Consider taxes, insurance, condominium fees, and maintenance.

Pull quote and testimonial

Testimonials appear only with the client's written permission. Until then the block shows its empty state.

Home holds the everyday moments that become a life.

Verified client testimonial will appear here, quoted exactly, with the client's permission on file.
Client first name, town · Year · Empty state

FAQ accordion

Native <details> for keyboard and screen-reader support, plus FAQPage structured data.

How do I start the buying process?

Begin with a lender conversation about preapproval and a comfortable monthly budget. The Consumer Financial Protection Bureau's guide to preapproval letters is a useful first read.

What is a property-specific market review?

A comparison of recent closed sales that resemble your home in location, size, condition and style. It is more useful than a townwide median.

Which Massachusetts towns do you serve?

Statewide, including Worcester and Greater Boston. Final list to be confirmed

Breadcrumbs

Buy and sell pathways

.paths · two doors, navy and sandstone, each with a line drawing behind.

If you are buying

Get ready before you find the one.

If you are selling

Make your home feel exceptional.

Promise band

A centred statement between denser sections, closed with a dimension rule.

Our promise

The same care for a first condo as for a family estate.


Feature article and archive card

The journal's lead story, and a past issue offered as a download.

Field guide list

.guide-list · large serif numerals for a guide the reader works through.

  1. Walk the lake

    Choose a stretch of the Lake Quannapowitt shoreline and leave time to pause at the Common.

  2. Shop the harvest

    Wakefield Farmers Market: Saturdays, 9 AM–1 PM, through October 31.

History band

.history · dates as display numerals on sandstone, from page 3.

1812

Established as South Reading.

1868

Renamed in honor of industrialist Cyrus Wakefield.

Look up the story of a street, a landmark, or a home before your next walk.

Letter and signature

For the leadership letter: a gold drop cap and an italic signature.

When we started The Oberdorfer Team, we built it on what we bring to our own family: care, honesty, hard work, and showing up for the people who count on us.

Brandon & Kaitlyn

On-this-page list and values list

Quiet navigation inside long pages, and a list of single words set large.

The Oberdorfer TeamDesign System · 202615
Componentsot/cta-panel · ot/newsletter · ot/office · ot/map

Ready for a personal plan?Call Brandon and Kaitlyn.

A personal standard of service

For the home you have. For the life you are building.

406-250-7620

The seasonal At Home publication

Local living, real estate insight and recipes to share, four times a year.

The Oberdorfer Team Office

Planned · details unconfirmed
Address
To be confirmed
Phone
406-250-7620
Hours
By appointment (to be confirmed)
Brokerage
A team office of REWAP Brokerage LLC (formal status to be confirmed)
Request an appointment

Map

A static, styled map plate in place of a third-party map embed: faster, private, and on brand. An interactive map loads only when the visitor asks for it.

O

Illustrative map · no real location

Contact lines

.contact-line · icon, label, detail; used on the contact page.

Call or text

Brandon & Kaitlyn Oberdorfer · 406-250-7620

Email

[Team email to be confirmed]

Service area

Massachusetts

The Oberdorfer TeamDesign System · 202616
BehaviourDesign System

One gesture:the line draws.

The brand moves the way a pen rules a page. Gold lines draw from left to right and content settles beneath them. There is no parallax, bounce or looping animation.

Motion tokens


Rule draw · --dur-reveal 1100ms · --ease-out cubic-bezier(0.16, 1, 0.3, 1)

--dur-fast160msColour, border
--dur-base280msButton rule, nav underline
--dur-slow720msSection settle, menu wipe
--dur-reveal1100msGold rule draw, image ease-in on hover

Accessibility floor

Target: WCAG 2.2 AA.

Perceivable

Contrast is checked for every pairing above. Photos carry alt text, and decorative linework is aria-hidden. Content is visible by default if JavaScript fails.

Operable

2px focus rings with a 3px offset in navy, or pale gold on dark grounds. Targets are at least 44px. A skip link, Escape to close panels, and no keyboard traps. prefers-reduced-motion removes all movement.

Understandable

Labels sit above fields. Errors name the problem and the fix, and statuses are announced. Buttons say what they do, and forms say what happens next.

The Oberdorfer TeamDesign System · 202618
Implementationtokens.json · theme.json

Same tokens,every tool.

The tokens leave the browser in two portable formats: one for design tools, one for the WordPress theme.

Files

Generated from tokens.css by tools/export_tokens.py. Change a value in the CSS, then re-run the script.

tokens.css

CSS custom properties. The source of truth, loaded by every page.

Download

tokens.json

W3C Design Tokens format, with semantic aliases and fluid sizes. For Figma (Tokens Studio) and Style Dictionary.

Download

theme.json

WordPress (version 3): palette, font families, fluid font sizes, spacing, layout and element styles for the custom theme.

Download

Naming

One name per idea, everywhere.

CSStokens.jsonWordPress
--ot-navycolor.navy--wp--preset--color--navy
--text-accentsemantic.text.accent → {color.gold-ink}Block style variation
--step-display-xlfont.size.display-xl (fluid 3.25 → 6rem)--wp--preset--font-size--display-xl
--space-5space.5--wp--preset--spacing--50
--ease-outmotion.easing.out--wp--custom--ease--out
The Oberdorfer TeamDesign System · 202619
ImplementationDesign System

One component,one block.

Tokens become theme.json presets, and components become server-rendered Gutenberg blocks with the same class names. Editors compose pages and never touch CSS.

BlockComponentEditable fieldsData source
ot/hero-coverEditorial heroImage + focal point, issue line, headline (2 lines), lead, 2 buttonsPost content
ot/property-searchSearch bar + filtersDefault town, visible filtersIDX provider (TBD)
ot/listing-gridListing cardQuery: agent, community, status, countIDX / MLS feed only
ot/agent-card · ot/agent-directoryAgent cardFilters: specialty, service area, languageCPT agent
ot/agent-profileAgent profile pageName, headshot, role, title, verified license, biography, specialties, service areas, languages, direct phone, email, socials, partner, FAQ; outputs ProfilePage, Person and FAQPage JSON-LDCPT agent (post meta + block bindings)
ot/community-card · ot/community-hubCommunity cardRegion, county, 2025 median, featured image + credit; hub grouped by regionCPT community, taxonomy region
ot/community-guideCommunity guideAnswer (40 to 60 words), overview, housing, villages, rail lines and stations, highways, school district + DESE link, places, history, market rows (source, period, geography required), FAQ, nearby guides, sources (URL per fact); outputs WebPage + City JSON-LDCPT community (post meta + block bindings)
ot/market-statsStatistics panel4 values, labels, periods, source, access date, geography (all required)Fields per report
ot/inquiry-formFormsLead type, routing agent, consent copy, success copyForm plugin → CRM (TBD)
ot/triad · ot/steps · ot/pull-quoteEditorial furnitureText onlyPost content
ot/testimonialTestimonialQuote, name, town, permission on file (required)CPT testimonial
ot/faqAccordionQ & A pairs; outputs FAQPage JSON-LDPost content
ot/officeOffice card + mapAddress, hours, phone, agentsCPT office
ot/brokerage-attributionFooter attributionLocked; edited in Site Settings onlyGlobal options
ot/page-hero · ot/section-headPage headersVariant (ivory, navy, photo), headline, lead, actionPost content
ot/listing-detailGallery, facts, specs, showing panelNone: fully data-drivenIDX / MLS feed only
ot/listing media · actions · estimatorVideo and 3D tour, social links, floor plan and brochure; showing, calendar and share; payment estimateNone: from the listing's "Listing details"Team listings (ot-core)
ot/pathways · ot/promiseBuy/sell doors, promise bandHeadlines, links, illustration choicePost content
ot/alert · ot/dialogFeedbackMessage, variant, dismissiblePost content / theme JS
ot/publicationFeature article, archive cardIssue, cover, PDF fileCPT publication

Component inventory

30 component families, each documented on this page and used on the example site.

ComponentBlockUsed onStatus
Buttons and linksot/buttonEvery pageDocumented
Site header and mobile menuot/site-headerEvery site pageDocumented
Cover heroot/hero-coverHomeDocumented
Page hero (ivory, navy, photo)ot/page-heroBuy, Sell, Team, Journal, Wakefield, Article, Join, Office, ContactDocumented
Section headot/section-headHome, Buy, Sell, Wakefield, ProfileDocumented
Property search and quick filtersot/property-searchHome, BuyDocumented
Results bar, saved count, sortot/resultsBuyDocumented
Chip filterot/chip-filterJournalDocumented
Skeleton and empty stateot/resultsBuyDocumented
Paginationot/paginationJournal archive (when it grows)Documented
Listing cardot/listing-cardHome, Buy, Listing, Wakefield, ProfileDocumented
Agent card and open seatot/agent-cardHome, TeamDocumented
Agent profile, placeholders, action barot/agent-profileBrandon, Kaitlyn, agent templateDocumented
Community cardot/community-cardHome, CommunitiesDocumented
Article cardot/article-cardHome, Journal, ProfileDocumented
Gallery, facts, spec table, agent miniot/listing-detailListing pagesDocumented
Video and 3D tour, listing actions, payment estimateot/listing (media, actions, estimator)Listing pages; agent profiles (introduction video)Documented
Market statisticsot/market-statsHome, Market, WakefieldDocumented
Forms, choices, checkboxesot/inquiry-formBuy, Sell, Listing, Profile, Join, Office, ContactDocumented
Tabsot/tabsContactDocumented
Alerts, toast, dialog, form statusot/alert · ot/dialogAll forms; save actionsDocumented
Triad, steps, pull quote, testimonialot/triad · ot/stepsHome, Sell, ProfileDocumented
Pathways, promise bandot/pathways · ot/promiseHomeDocumented
Feature article, archive card, guide listot/publicationJournal, ArticleDocumented
History band, letter, on-this-pageot/history · ot/letterWakefield, JoinDocumented
FAQ accordion, breadcrumbsot/faq · ot/breadcrumbsSell; every inner pageDocumented
CTA panel, newsletter, office card, mapot/cta-panel · ot/officeEvery site page; Office, ListingDocumented
Contact linesot/contact-linesContactDocumented
Footer and brokerage attributionot/site-footerEvery site pageDocumented
The Oberdorfer TeamDesign System · 202620