$ cat ./design-md/media-editorial/metadata.yaml
Media & Editorial
A content-first editorial design system for blogs and magazines, focused on long-form readability, restrained accent usage, and distraction-free article layouts.
Author
Tags
editorialpublishingtypographylong-form-readingcontent-firstnews
Live Preview
Tokens: COLOR
Items: 17
primary
Hex: #1A1A1A
accent
Hex: #D64045
accent hover
Hex: #B83438
bg
Hex: #FFFFFF
bg warm
Hex: #FAF9F7
bg code
Hex: #F5F5F5
surface
Hex: #FFFFFF
border
Hex: #E8E8E8
text primary
Hex: #1A1A1A
text secondary
Hex: #555555
text muted
Hex: #999999
text caption
Hex: #777777
sepia bg
Hex: #F4EDDF
sepia text
Hex: #3D3229
dark bg
Hex: #1A1A1A
dark text
Hex: #D4D4D4
dark accent
Hex: #E8696D
Tokens: SPACING
Items: 12
space-2
16px
space-3
24px
space-4
32px
space-6
48px
space-8
64px
space-10
80px
space-12
96px
body-max-width
680px
image-max-width
960px
page-max-width
1200px
page-margin-desktop
24px
page-margin-mobile
16px
Tokens: ROUNDED
Items: 5
none
0px
sm
3px
md
6px
lg
24px
full
9999px
Tokens: TYPOGRAPHY
Items: 10
display
The quick brown fox jumps over the lazy dog
Family: Lora
Size: 48px
Weight: 700
Letter Spacing: -1px
h1
The quick brown fox jumps over the lazy dog
Family: Lora
Size: 36px
Weight: 700
Letter Spacing: -0.5px
h2
The quick brown fox jumps over the lazy dog
Family: Lora
Size: 28px
Weight: 700
Letter Spacing: -0.3px
h3
The quick brown fox jumps over the lazy dog
Family: Lora
Size: 22px
Weight: 600
Letter Spacing: 0px
h4 kicker
The quick brown fox jumps over the lazy dog
Family: Inter
Size: 16px
Weight: 600
Letter Spacing: 0.5px
body
The quick brown fox jumps over the lazy dog
Family: Source Serif 4
Size: 19px
Weight: 400
Letter Spacing: 0px
body sm
The quick brown fox jumps over the lazy dog
Family: Source Serif 4
Size: 17px
Weight: 400
Letter Spacing: 0px
caption
The quick brown fox jumps over the lazy dog
Family: Inter
Size: 14px
Weight: 400
Letter Spacing: 0px
meta
The quick brown fox jumps over the lazy dog
Family: Inter
Size: 13px
Weight: 500
Letter Spacing: 0.3px
code
The quick brown fox jumps over the lazy dog
Family: JetBrains Mono
Size: 15px
Weight: 400
Letter Spacing: 0px
Tailwind v3 Config
{
"theme": {
"extend": {
"colors": {
"primary": "#1a1a1a",
"accent": "#d64045",
"accent-hover": "#b83438",
"bg": "#ffffff",
"bg-warm": "#faf9f7",
"bg-code": "#f5f5f5",
"surface": "#ffffff",
"border": "#e8e8e8",
"text-primary": "#1a1a1a",
"text-secondary": "#555555",
"text-muted": "#999999",
"text-caption": "#777777",
"sepia-bg": "#f4eddf",
"sepia-text": "#3d3229",
"dark-bg": "#1a1a1a",
"dark-text": "#d4d4d4",
"dark-accent": "#e8696d"
},
"fontFamily": {
"display": [
"Lora"
],
"h1": [
"Lora"
],
"h2": [
"Lora"
],
"h3": [
"Lora"
],
"h4-kicker": [
"Inter"
],
"body": [
"Source Serif 4"
],
"body-sm": [
"Source Serif 4"
],
"caption": [
"Inter"
],
"meta": [
"Inter"
],
"code": [
"JetBrains Mono"
]
},
"fontSize": {
"display": [
"48px",
{
"letterSpacing": "-1px",
"fontWeight": "700"
}
],
"h1": [
"36px",
{
"letterSpacing": "-0.5px",
"fontWeight": "700"
}
],
"h2": [
"28px",
{
"letterSpacing": "-0.3px",
"fontWeight": "700"
}
],
"h3": [
"22px",
{
"letterSpacing": "0px",
"fontWeight": "600"
}
],
"h4-kicker": [
"16px",
{
"letterSpacing": "0.5px",
"fontWeight": "600"
}
],
"body": [
"19px",
{
"letterSpacing": "0px",
"fontWeight": "400"
}
],
"body-sm": [
"17px",
{
"letterSpacing": "0px",
"fontWeight": "400"
}
],
"caption": [
"14px",
{
"letterSpacing": "0px",
"fontWeight": "400"
}
],
"meta": [
"13px",
{
"letterSpacing": "0.3px",
"fontWeight": "500"
}
],
"code": [
"15px",
{
"letterSpacing": "0px",
"fontWeight": "400"
}
]
},
"borderRadius": {
"none": "0px",
"sm": "3px",
"md": "6px",
"lg": "24px",
"full": "9999px"
},
"spacing": {
"space-2": "16px",
"space-3": "24px",
"space-4": "32px",
"space-6": "48px",
"space-8": "64px",
"space-10": "80px",
"space-12": "96px",
"body-max-width": "680px",
"image-max-width": "960px",
"page-max-width": "1200px",
"page-margin-desktop": "24px",
"page-margin-mobile": "16px"
}
}
}
}
Tailwind v4 @theme
// No content available
DESIGN.md
---
version: alpha
name: Media & Editorial
description: Content-first editorial design system optimized for long-form reading and minimal interface distraction.
colors:
primary: "#1A1A1A"
accent: "#D64045"
accent-hover: "#B83438"
bg: "#FFFFFF"
bg-warm: "#FAF9F7"
bg-code: "#F5F5F5"
surface: "#FFFFFF"
border: "#E8E8E8"
text-primary: "#1A1A1A"
text-secondary: "#555555"
text-muted: "#999999"
text-caption: "#777777"
sepia-bg: "#F4EDDF"
sepia-text: "#3D3229"
dark-bg: "#1A1A1A"
dark-text: "#D4D4D4"
dark-accent: "#E8696D"
typography:
display:
fontFamily: Lora
fontSize: 48px
fontWeight: 700
lineHeight: 1.15
letterSpacing: -1px
h1:
fontFamily: Lora
fontSize: 36px
fontWeight: 700
lineHeight: 1.2
letterSpacing: -0.5px
h2:
fontFamily: Lora
fontSize: 28px
fontWeight: 700
lineHeight: 1.25
letterSpacing: -0.3px
h3:
fontFamily: Lora
fontSize: 22px
fontWeight: 600
lineHeight: 1.3
letterSpacing: 0px
h4-kicker:
fontFamily: Inter
fontSize: 16px
fontWeight: 600
lineHeight: 1.4
letterSpacing: 0.5px
body:
fontFamily: Source Serif 4
fontSize: 19px
fontWeight: 400
lineHeight: 1.8
letterSpacing: 0px
body-sm:
fontFamily: Source Serif 4
fontSize: 17px
fontWeight: 400
lineHeight: 1.75
letterSpacing: 0px
caption:
fontFamily: Inter
fontSize: 14px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
meta:
fontFamily: Inter
fontSize: 13px
fontWeight: 500
lineHeight: 1.4
letterSpacing: 0.3px
code:
fontFamily: JetBrains Mono
fontSize: 15px
fontWeight: 400
lineHeight: 1.6
letterSpacing: 0px
rounded:
none: 0px
sm: 3px
md: 6px
lg: 24px
full: 9999px
spacing:
space-2: 16px
space-3: 24px
space-4: 32px
space-6: 48px
space-8: 64px
space-10: 80px
space-12: 96px
body-max-width: 680px
image-max-width: 960px
page-max-width: 1200px
page-margin-desktop: 24px
page-margin-mobile: 16px
components:
article-body:
typography: "{typography.body}"
textColor: "{colors.text-primary}"
width: "{spacing.body-max-width}"
article-link:
textColor: "{colors.text-primary}"
textColorHover: "{colors.accent}"
article-card-list:
backgroundColor: "{colors.surface}"
dividerColor: "{colors.border}"
dividerSpacing: "{spacing.space-4}"
article-card-grid:
backgroundColor: "{colors.surface}"
textColor: "{colors.text-primary}"
cardGap: "{spacing.space-2}"
pull-quote:
borderColor: "{colors.accent}"
textColor: "{colors.text-primary}"
typography: "{typography.h2}"
padding: "{spacing.space-3}"
code-block:
backgroundColor: "{colors.bg-code}"
typography: "{typography.code}"
rounded: "{rounded.md}"
padding: "{spacing.space-3}"
inline-code:
backgroundColor: "{colors.bg-code}"
typography: "{typography.code}"
rounded: "{rounded.sm}"
nav-minimal:
backgroundColor: "{colors.bg}"
textColor: "{colors.text-primary}"
height: 56px
newsletter-inline:
backgroundColor: "{colors.bg-warm}"
headlineTypography: "{typography.h3}"
buttonBackground: "{colors.accent}"
buttonTextColor: "#FFFFFF"
---
## Brand & Style
Content is sovereign. The interface exists to present words and images at their best and then disappear.
This system is built for blogs, magazines, newsletters, and other content-heavy products where sustained reading is the primary job-to-be-done. The tone is readable, elegant, editorial, and unhurried. Navigation and platform voice stay quiet so the writer's voice leads.
## Colors
The palette is intentionally restrained: near-black text on white reading surfaces with one editorial accent.
- Reading surfaces stay white in default mode to maximize readability.
- The accent red is used sparingly (active nav, pull quotes, hover states, selected highlights).
- Metadata and supporting text move down a neutral scale without reducing contrast below accessible thresholds.
- Reading modes (light, sepia, dark) shift only background/text/accent relationships, not layout or typographic structure.
## Typography
Typography is optimized for long-form reading, not density.
- Serif is mandatory for article content and major headlines.
- Sans-serif is reserved for navigation, controls, labels, and metadata.
- Body copy is set to `19px` with `1.8` line height and a fixed reading measure of `680px`.
- Text is always left-aligned; justified body text is disallowed.
## Layout & Spacing
Layout enforces editorial rhythm through narrow reading measure, image breakout, and generous vertical spacing.
- Article text column max width is `680px`.
- Images can break out to `960px` to create pacing contrast.
- Overall page content caps at `1200px`.
- Base spacing uses the editorial scale (`16px` to `96px`) with larger vertical gaps than typical app UIs.
- No sidebar is shown while reading article content.
Breakpoints:
- Mobile (`<640px`): single column, full-width images, reduced headline sizes.
- Tablet (`640px - 1024px`): body column preserved, two-column grids for listings.
- Desktop (`>1024px`): full editorial layout with breakout images and three-column grids where applicable.
## Elevation & Depth
Reading surfaces stay visually flat. Hierarchy comes from typography, spacing, and dividers rather than layered cards.
- `none`: default article and listing surfaces.
- `sm`: sticky navigation and lightweight floating controls.
- `md`: transient overlays such as share panels and optional newsletter popups.
Shadows remain subtle and rare, so content never feels boxed-in.
## Shapes
Shape language is mostly square and structural, with selective rounding for utility elements.
- Article cards and imagery default to no corner radius.
- Code blocks and inline code use small rounding for scanability (`6px` and `3px`).
- Avatars are circular.
- Pull quotes use a vertical accent rule rather than rounded containers.
## Components
### Article Cards
List view uses media-left layout on desktop and stacked layout on mobile. Dividers separate entries with generous vertical rhythm. Grid cards prioritize headline clarity and metadata legibility, with no ornamental borders.
### Article Page
Article pages center the reading column, allow controlled image breakout, and apply consistent text styles for paragraphs, headings, lists, block quotes, and code. Progress indication is recommended for long reads.
### Pull Quote
Pull quotes are editorial accents: italic serif, accent left rule, and measured spacing. Attribution is muted and secondary.
### Navigation
Navigation is minimal and compact (`56px` height), with very few items. Active state is indicated by an accent underline, and mobile uses a simple left drawer.
### Newsletter Inline Block
Newsletter signup appears between list items or at article end, using warm background contrast, clear heading hierarchy, and concise privacy copy.
## Do's and Don'ts
- Do keep reading comfort as the top priority in every component decision.
- Do maintain the `680px` reading measure and generous body line height.
- Do use serif content typography and preserve clear heading hierarchy.
- Do include read-time metadata and progress indicators for long articles.
- Don't introduce sidebars, modal interruptions, or autoplay media while reading.
- Don't use justified text, undersized body copy, or decorative depth effects in article flow.