$ cat ./design-md/creative-agency/metadata.yaml
Creative Agency
Bold, editorial, refined, intentional, and confident design system inspired by Pentagram, Collins, and Base Design.
Author
Tags
creative-agencyeditorialportfoliotypography-ledminimal
Live Preview
Tokens: COLOR
Items: 13
primary
Hex: #0A0A0A
primary inverse
Hex: #F5F5F0
bg
Hex: #F5F5F0
bg dark
Hex: #0A0A0A
surface
Hex: #FFFFFF
border
Hex: #D4D4CD
text primary
Hex: #0A0A0A
text secondary
Hex: #52524E
text muted
Hex: #8A8A85
text on dark
Hex: #F5F5F0
accent
Hex: #E63B2E
accent hover
Hex: #CC2E22
image placeholder
Hex: #E8E8E3
Tokens: SPACING
Items: 16
max-content-width
1440px
max-text-width
640px
page-margin-desktop
80px
page-margin-tablet
48px
page-margin-mobile
24px
gutter
32px
section-gap-desktop
120px
space-1
8px
space-2
16px
space-3
24px
space-4
32px
space-6
48px
space-8
64px
space-10
80px
space-15
120px
space-20
160px
Tokens: ROUNDED
Items: 2
none
0px
full
9999px
Tokens: TYPOGRAPHY
Items: 9
display
The quick brown fox jumps over the lazy dog
Family: Playfair Display
Size: 72px
Weight: 700
Letter Spacing: -2px
h1
The quick brown fox jumps over the lazy dog
Family: Playfair Display
Size: 48px
Weight: 700
Letter Spacing: -1px
h2
The quick brown fox jumps over the lazy dog
Family: Satoshi
Size: 32px
Weight: 600
Letter Spacing: -0.5px
h3
The quick brown fox jumps over the lazy dog
Family: Satoshi
Size: 20px
Weight: 600
Letter Spacing: 0px
h4
The quick brown fox jumps over the lazy dog
Family: Satoshi
Size: 14px
Weight: 600
Letter Spacing: 2px
body
The quick brown fox jumps over the lazy dog
Family: Satoshi
Size: 17px
Weight: 400
Letter Spacing: 0px
body lg
The quick brown fox jumps over the lazy dog
Family: Satoshi
Size: 21px
Weight: 400
Letter Spacing: -0.2px
small
The quick brown fox jumps over the lazy dog
Family: Satoshi
Size: 14px
Weight: 400
Letter Spacing: 0px
caption
The quick brown fox jumps over the lazy dog
Family: JetBrains Mono
Size: 12px
Weight: 500
Letter Spacing: 0.5px
Tailwind v3 Config
{
"theme": {
"extend": {
"colors": {
"primary": "#0a0a0a",
"primary-inverse": "#f5f5f0",
"bg": "#f5f5f0",
"bg-dark": "#0a0a0a",
"surface": "#ffffff",
"border": "#d4d4cd",
"text-primary": "#0a0a0a",
"text-secondary": "#52524e",
"text-muted": "#8a8a85",
"text-on-dark": "#f5f5f0",
"accent": "#e63b2e",
"accent-hover": "#cc2e22",
"image-placeholder": "#e8e8e3"
},
"fontFamily": {
"display": [
"Playfair Display"
],
"h1": [
"Playfair Display"
],
"h2": [
"Satoshi"
],
"h3": [
"Satoshi"
],
"h4": [
"Satoshi"
],
"body": [
"Satoshi"
],
"body-lg": [
"Satoshi"
],
"small": [
"Satoshi"
],
"caption": [
"JetBrains Mono"
]
},
"fontSize": {
"display": [
"72px",
{
"letterSpacing": "-2px",
"fontWeight": "700"
}
],
"h1": [
"48px",
{
"letterSpacing": "-1px",
"fontWeight": "700"
}
],
"h2": [
"32px",
{
"letterSpacing": "-0.5px",
"fontWeight": "600"
}
],
"h3": [
"20px",
{
"letterSpacing": "0px",
"fontWeight": "600"
}
],
"h4": [
"14px",
{
"letterSpacing": "2px",
"fontWeight": "600"
}
],
"body": [
"17px",
{
"letterSpacing": "0px",
"fontWeight": "400"
}
],
"body-lg": [
"21px",
{
"letterSpacing": "-0.2px",
"fontWeight": "400"
}
],
"small": [
"14px",
{
"letterSpacing": "0px",
"fontWeight": "400"
}
],
"caption": [
"12px",
{
"letterSpacing": "0.5px",
"fontWeight": "500"
}
]
},
"borderRadius": {
"none": "0px",
"full": "9999px"
},
"spacing": {
"max-content-width": "1440px",
"max-text-width": "640px",
"page-margin-desktop": "80px",
"page-margin-tablet": "48px",
"page-margin-mobile": "24px",
"gutter": "32px",
"section-gap-desktop": "120px",
"space-1": "8px",
"space-2": "16px",
"space-3": "24px",
"space-4": "32px",
"space-6": "48px",
"space-8": "64px",
"space-10": "80px",
"space-15": "120px",
"space-20": "160px"
}
}
}
}
Tailwind v4 @theme
// No content available
DESIGN.md
---
version: alpha
name: Creative Agency
description: Bold, editorial, refined, intentional, and confident design system inspired by Pentagram, Collins, and Base Design.
colors:
primary: "#0A0A0A"
primary-inverse: "#F5F5F0"
bg: "#F5F5F0"
bg-dark: "#0A0A0A"
surface: "#FFFFFF"
border: "#D4D4CD"
text-primary: "#0A0A0A"
text-secondary: "#52524E"
text-muted: "#8A8A85"
text-on-dark: "#F5F5F0"
accent: "#E63B2E"
accent-hover: "#CC2E22"
image-placeholder: "#E8E8E3"
typography:
display:
fontFamily: Playfair Display
fontSize: 72px
fontWeight: 700
lineHeight: 1.05
letterSpacing: -2px
h1:
fontFamily: Playfair Display
fontSize: 48px
fontWeight: 700
lineHeight: 1.10
letterSpacing: -1px
h2:
fontFamily: Satoshi
fontSize: 32px
fontWeight: 600
lineHeight: 1.15
letterSpacing: -0.5px
h3:
fontFamily: Satoshi
fontSize: 20px
fontWeight: 600
lineHeight: 1.30
letterSpacing: 0px
h4:
fontFamily: Satoshi
fontSize: 14px
fontWeight: 600
lineHeight: 1.40
letterSpacing: 2px
body:
fontFamily: Satoshi
fontSize: 17px
fontWeight: 400
lineHeight: 1.70
letterSpacing: 0px
body-lg:
fontFamily: Satoshi
fontSize: 21px
fontWeight: 400
lineHeight: 1.65
letterSpacing: -0.2px
small:
fontFamily: Satoshi
fontSize: 14px
fontWeight: 400
lineHeight: 1.50
letterSpacing: 0px
caption:
fontFamily: JetBrains Mono
fontSize: 12px
fontWeight: 500
lineHeight: 1.40
letterSpacing: 0.5px
rounded:
none: 0px
full: 9999px
spacing:
max-content-width: 1440px
max-text-width: 640px
page-margin-desktop: 80px
page-margin-tablet: 48px
page-margin-mobile: 24px
gutter: 32px
section-gap-desktop: 120px
space-1: 8px
space-2: 16px
space-3: 24px
space-4: 32px
space-6: 48px
space-8: 64px
space-10: 80px
space-15: 120px
space-20: 160px
components:
button-primary:
backgroundColor: "{colors.primary}"
textColor: "{colors.primary-inverse}"
typography: "{typography.h4}"
rounded: "{rounded.none}"
padding: 14px 32px
minHeight: 48px
button-primary-hover:
backgroundColor: "{colors.accent}"
textColor: "#FFFFFF"
button-primary-active:
backgroundColor: "{colors.accent-hover}"
button-secondary:
backgroundColor: transparent
textColor: "{colors.primary}"
borderColor: "{colors.primary}"
rounded: "{rounded.none}"
padding: 14px 32px
button-secondary-hover:
backgroundColor: "{colors.primary}"
textColor: "{colors.primary-inverse}"
text-link:
textColor: "{colors.text-primary}"
underlineOffset: 4px
text-link-hover:
textColor: "{colors.accent}"
nav-bar:
backgroundColor: transparent
textColor: "{colors.text-primary}"
height: 72px
nav-overlay:
backgroundColor: "{colors.bg-dark}"
textColor: "{colors.text-on-dark}"
case-study-card:
textColor: "{colors.text-primary}"
rounded: "{rounded.none}"
titleTypography: "{typography.h2}"
metaTypography: "{typography.caption}"
footer:
backgroundColor: "{colors.bg-dark}"
textColor: "{colors.text-on-dark}"
---
## Brand & Style
Inspired by Pentagram, Collins, and Base Design. Typography leads every decision. The grid exists to be broken — intentionally. Generous whitespace signals confidence. Photography and work samples are treated as art, not content blocks.
Personality keywords: Bold, editorial, refined, intentional, confident.
The work speaks — the interface listens.
### Brand Voice in UI
- **Headlines:** Provocative or declarative. Short. "We make things people care about." Not "Welcome to our agency."
- **Body text:** Thoughtful, measured. Third person. No exclamation marks. Period.
- **Microcopy:** Minimal. Navigation labels are one word where possible.
- **Case studies:** The work is the hero. Surrounding text is supporting, never competing.
## Colors
The palette is intentionally limited. Black, off-white, and one red. That's the entire chromatic budget.
- **Primary (#0A0A0A):** Near-black is the brand color, used for backgrounds and text.
- **Primary Inverse (#F5F5F0):** Text on dark, cream-tinted white.
- **Background (#F5F5F0):** Page background — warm off-white, not sterile. Alternate with `--color-bg-dark` for section rhythm.
- **Accent (#E63B2E):** One accent — a confident red. Links, hover states, active indicators. Accent red is for interactive elements and editorial emphasis only — never backgrounds, never decorative.
- **Photography:** Photography and project imagery provide all the vibrancy the site needs. No gradients. No colored backgrounds.
## Typography
Typography leads every decision. Playfair Display is used for moments of impact only (hero, case study titles, pull quotes), while Satoshi is the workhorse for everything else.
- **Display:** "Playfair Display", Georgia, serif — for hero headlines and impact moments. Can break onto multiple lines with tight line-height to create density.
- **Body:** "Satoshi", "DM Sans", -apple-system, sans-serif — clean geometric sans for everything else. Body text at 17px is larger than standard SaaS, with generous line-height for editorial readability.
- **Monospace:** "JetBrains Mono", ui-monospace, monospace — captions, dates, technical details.
- **Uppercase:** Reserved for H4 overlines and navigation. Never for headings or body.
- **Emphasis:** No bold within body text. Use italic for emphasis, or restructure the sentence.
## Layout & Spacing
Whitespace is a design element, not wasted space. Sections breathe with 120px+ gaps.
The grid system is designed to be broken intentionally.
- **Grid System:** 12-column, but often used as 2, 3, or asymmetric splits. Max content width is 1440px, but text blocks never exceed 640px width.
- **Page margin:** Generous margins, 80px on desktop. Content feels curated, not crammed.
- **Images:** Images are never contained in rounded cards — they sit directly in the layout. One image per page can bleed to the edge.
- **Desktop Grid:** 2-column grid, asymmetric (60/40 or equal). Alternate between rows for visual rhythm.
## Elevation & Depth
Depth comes from content, contrast, and scale, not from shadows.
- **Shadows:** Almost nonexistent. Depth comes from dark/light section alternation and scale contrast.
- **Images:** Create depth through content — the photography provides all visual dimension.
- **Cards:** No cards with shadows. Cards are defined by their content grouping and spacing, not borders or shadows.
- **Overlay:** The only elevation that exists is the mobile navigation overlay (`0 16px 48px rgba(0,0,0,0.12)`).
## Shapes
The grid is sharp. This system uses sharp corners exclusively.
- **Buttons & Cards:** 0px border-radius (sharp corners — this is a design statement).
- **Exceptions:** Avatars (if team section exists) can use a full border-radius.
## Components
### Buttons
Buttons are uppercase with letter-spacing. This is an editorial design decision. Maximum 1 button per section. Let the work draw clicks, not the UI. On dark backgrounds, invert: white outline/fill, dark text.
### Navigation
Minimal top bar, full-width, 72px height. Logo is left-aligned, wordmark only. Nav items right-aligned, uppercase. Active items have a 2px solid underline. Becomes sticky after scroll, adding a 1px bottom border.
### Project/Case Study Card
Structure is stacked, not side-by-side. Image is full-width, 16:10 aspect ratio, no border-radius. Hover scale (1.03) over 500ms.
### Footer
Background is dark, text is light. Structure: large CTA headline, contact info in 3 columns, bottom copyright links.
## Do's and Don'ts
- Do let images breathe — generous spacing above and below.
- Do use typographic contrast (serif vs sans, large vs small) for hierarchy.
- Do alternate dark and light sections for pacing.
- Don't use border-radius on anything except avatars.
- Don't use shadows — depth comes from contrast and scale.
- Don't add decorative elements (lines, dots, abstract shapes) — let content be the decoration.
- Don't center-align body text. Left-aligned always.
- Don't crop project images into thumbnails — show them large.
## Animation & Motion
- **Hover:** 200ms ease-out for link color and button backgrounds.
- **Image hover:** 500ms ease-out thumbnail zoom is the signature interaction.
- **Scroll reveal:** 600ms cubic-bezier(0.16, 1, 0.3, 1), staggered when needed.
- **Page transitions:** Crossfade between pages, no slide.
- **Reduced motion:** Disable scroll reveals and image zoom when `prefers-reduced-motion` is enabled.
- **Loading:** No loading spinners. Content appears complete or not at all.
## Accessibility Standards
Compliance Level: WCAG 2.1 AA.
Tab order follows visual reading order. Focus-visible: 2px solid accent red, 2px offset.
Project images must have descriptive alt text.
## Edge Cases & Error Patterns
- **Empty States:** Not typically applicable — portfolio sites are curated, not user-generated.
- **404 page:** Full-screen, Display headline "Page not found." + "Back to work" link.
- **Loading States:** Image placeholders: solid #E8E8E3 blocks matching aspect ratio. Fade to image on load. No skeleton screens — the editorial aesthetic requires complete content or nothing. Page loads: entire page fades in once content is ready. No partial loading.
- **Overflow:** Headlines: allow wrapping, never truncate. Adjust font-size responsively. Project descriptions: 2-line clamp in grid view, full text in detail view.