The Yard

Index
/system

The Yard / Brand Reference

Backyard
energy.
Next-level
training.

Tokens, typography, brand artifacts, and primitives. This page is the source of truth — iterate here before shipping product UI.

Last updated

v0.3 · stat-sheet

01

Color

Palette

Indigo anchors the brand. Periwinkle handles primary action and links. Neon is the single splash accent — one per viewport, never on body. Secondary colors are reserved for splashy moments and seasonal accents.

Primary

Indigo

#090031

Background · dark / Primary · light

Periwinkle

#6070E2

Primary · dark / Ring + link

Neon

#E6F083

Accent · splash

Cyan

#C5FCFF

Foreground · dark

Secondary

Mint

#99E99E

Teal

#002221

Salmon

#F7ADAD

Oxblood

#5C1412

02

Typography

Type system

Industry Inc Base for splashy display. Geist for body — refined, modern, distinctive. Tenacious for tags, eyebrows, micro-labels.

Display · Industry Inc Base

Welcome to your
home yard

Tag · Tenacious Heavy

Open · 6am – 10pm

Premier baseball & softball

Established · Long Island NY

Body · Geist Sans

Multi-sport training, on demand. Book a HitTrax cage, lock in a lesson with a coach, or block out the bullpen for an hour.

Smaller body sizes carry secondary information — captions, helper text, and metadata.

Mono · Geist Mono

Time

10:30 AM

Velocity

88 mph

Rate

$80/hr

Ref

YARD-042

03

Brand

Logo & marks

Primary lockup is the default. Eye variants and Y-stroke marks are reserved for accent moments. Texture backgrounds are hero-only at 30-50% opacity.

The Yard

Primary / Black

The Yard

Primary / White

The Yard

Eye / Neon Green

The Yard

Eye / Neon Blue

Y-Stroke marks · accent only

Y-stroke Neon Blue

Neon Blue

Y-stroke Neon Green

Neon Green

Y-stroke Salmon

Salmon

Y-stroke Light Blue

Light Blue

Y-stroke Yellow

Yellow

Textures · hero only

Blue · primary

Blue · primary

Green · secondary

Green · secondary

Red · secondary

Red · secondary

04

Primitives

Buttons & badges

MemberPendingCoachOverdue
05

Forms

Inputs & controls

Sign up
Create a family account to start booking.
JD

Coach

Jordan Diaz

Next session

10:30 AM

06

Navigation

Tabs

Three upcoming bookings.
07

Status

Booking states

Color-coded status tokens for booking types and lifecycle states. Each pair (bg + fg) is theme-aware and passes WCAG AA. Always paired with a label — never communicate via color alone.

Booking type

LessonRentalClinicS&C

Lifecycle

Report pendingOverdue 24hCompleted

Cage 2 · HitTrax

Mason Diaz · 12yrs

Sat May 4 · 10:30 AM

Lesson

Bullpen 1 · Trackman

Self-serve · 1hr

Sun May 5 · 9:00 AM

Rental
08

Loading

Skeleton states

Use Skeleton primitive for any awaiting-data state. Match the shape and rhythm of the real content so the layout doesn't shift on data arrival.

09

Motion

Animations

Layout animations, stagger reveals, and mount/unmount transitions. All patterns respect prefers-reduced-motion. Framer Motion handles complex sequences; Tailwind transitions handle hover/focus chrome. See .claude/rules/motion.md for the decision matrix.

Stagger reveal · viewport-triggered

Coach · Diaz

Cage 2 — HitTrax

10:30 AM

Coach · Park

Bullpen 1 — Trackman

12:00 PM

Self-serve

Cage 4 — Modular

3:00 PM

Layout animation · shared element via layoutId

Hover lift · per-card whileHover

Hover me

Cage 2 — HitTrax

Hover me

Bullpen 1 — Trackman

Hover me

Cage 4 — Modular

Mount + unmount · animated height pushes content below smoothly

Anything below the detail (this paragraph, the section divider, section 10) reflows organically as the panel grows or collapses.

List reorder · layout prop animates position changes

  • Coach · Diaz

    Cage 2 — HitTrax

    10:30 AM

  • Coach · Park

    Bullpen 1 — Trackman

    12:00 PM

  • Self-serve

    Cage 4 — Modular

    3:00 PM

10

Product · Data

Stat sheet

Admin + product surfaces read like an athletic stat sheet — mono tag-labels, oversized tabular figures, a brand accent rule. Compose tables, KPI cards, and metrics from this vocabulary so data stays cohesive across the app.

.tag-label

This month

Mono micro-label. Column headers, stat captions, product eyebrows. (Marketing eyebrows use the Tenacious .font-tag.)

.stat-value

$1,995

Scoreboard figure. Display face, tabular numerals, tight tracking. Size at the call site.

.accent-rule

A quiet periwinkle hairline that fades out. Tops a data card or underlines a section — present, not loud.

.gradient-border

A subtle, theme-aware gradient ring (border-only, painted via a masked pseudo-element — it never touches the element's background). This is the default on every <Card>; the element supplies its own bg-card. Light is a quiet neutral gray fade; dark is periwinkle → cyan.

.no-gradient-border

Colored / hero cards opt OUT of the ring with .no-gradient-border so a periwinkle/gray frame never sits on a colored surface. Inputs, selects, separators, and internal table dividers keep the standard --border — the ring is for Card-level containers only.

Today's revenue

$2,480

18 sessions

Utilization

74%

Across 9 spaces

Active members

126

+8 this month

CoachThis monthVisibility
MD

Maria Diaz

Head Hitting

$1,99510 lessons
JR

Jamal Reed

Pitching

$1,56311 lessons
SP

Sam Park

Catching

$6004 lessons
11

Reference

Iterate.
Ship.
Repeat.

This page is the source of truth for tokens and primitives. Product UI follows what lands here. Open /design-system in dev and iterate.

Version

v0.3 · stat-sheet

Tokens

src/app/globals.css

Spec

docs/DESIGN.md