Foundations

Tokens & Standards

One source of truth for the newsroom interface. Editorial restraint set in Anek Latin and Anek Malayalam, with the MediaOne blue as the single accent. Every token here lives in src/styles/app.css — change it there and it propagates everywhere.

01

Typography

Two metrically matched faces carry the whole system. Latin leads the stack; Malayalam falls through per-glyph, so mixed lines stay on one baseline. Size, line-height, and weight are fixed per token — never set ad hoc in markup.

Anek Latin

AaBbGg 0123

The press guards democracy.

Anek Malayalam

അആഇ ൦൧൨൩

മാധ്യമം ജനാധിപത്യത്തിന്റെ കാവലാൾ.

text-display

3.5rem · 1.06 · 700

Cover splash, system hero

വാർത്ത ലോകത്തെ മാറ്റുന്നു

text-hero

2.75rem · 1.12 · 700

Lead story headline

വാർത്ത ലോകത്തെ മാറ്റുന്നു

text-title

1.875rem · 1.2 · 700

Section feature

വാർത്ത ലോകത്തെ മാറ്റുന്നു

text-section

1.5rem · 1.27 · 600

Section heading

വാർത്ത ലോകത്തെ മാറ്റുന്നു

text-headline

1.125rem · 1.34 · 600

Card / list headline

വാർത്ത ലോകത്തെ മാറ്റുന്നു

text-lead

1.1875rem · 1.62 · 400

Article lead paragraph

വാർത്ത ലോകത്തെ മാറ്റുന്നു

text-body

1.0625rem · 1.72 · 400

Long-form body

വാർത്ത ലോകത്തെ മാറ്റുന്നു

text-nav

0.875rem · 1.4 · 600

Navigation, links

വാർത്ത ലോകത്തെ മാറ്റുന്നു

text-meta

0.8125rem · 1.5 · 500

Timestamps, bylines

വാർത്ത ലോകത്തെ മാറ്റുന്നു

text-caption

0.75rem · 1.45 · 400

Fine print, captions

വാർത്ത ലോകത്തെ മാറ്റുന്നു

Category Eyebrow

The one place letter-spacing is allowed. Use the eyebrow utility on uppercase Latin labels only — never on Malayalam, where tracking collides conjuncts.

02

Color

Cool navy and slate neutrals matched to mediaoneonline.com, never pure black or white. The MediaOne blue (#166bc0) over a navy ink (#2e4164) is the only chromatic voice, reserved for eyebrows, links, hover, and the masthead rule. Values are OKLCH so lightness and chroma stay perceptually even.

Neutrals

ink

0.376 0.065 262

Headlines, body, footer — navy #2e4164

ink-light

0.52 0.018 256

Secondary text

ink-muted

0.555 0.013 256

Timestamps, captions

rule

0.905 0.006 250

Hairline dividers

ivory-dark

0.965 0.004 250

Soft bands, hovers

ivory

0.988 0.002 250

Page canvas

Accent & Dark

azure-dark

0.43 0.123 254

Hover / pressed

azure

0.527 0.153 253

MediaOne blue #166bc0 — accent

azure-light

0.68 0.125 245

Blue on dark

brand-dark

0.145 0.018 262

Dark-mode canvas — Radix-style near-black

brand-elevated

0.195 0.022 262

Dark-mode cards / placeholders

brand-overlay

0.245 0.026 262

Dark-mode hover / overlay

Do

Let ink-on-ivory carry the page. Spend azure once per view — a label, a link, the rule. Restraint is the identity.

Don't

No gradients, no second accent, no pure #000 / #fff. Hierarchy comes from scale and weight, not color.

03

Space & Geometry

A 4px base unit, a 1280px editorial measure, square corners, and no shadows. Elevation is a single hairline. Surfaces meet with rules, not drop-shadows.

Spacing — 4px base

4px
8px
12px
16px
24px
32px
48px

Vary rhythm by hierarchy. Uniform padding everywhere reads as monotony.

Geometry & Elevation

Square, hairline

Default surface. 0px radius, 1px rule, flat.

Rows divide with a single rule

No shadow
Container max-w-site = 80rem · body measure ≤ 72ch
04

Components

The newsroom's working parts, built only from the tokens above. Cards are the exception, not the default — most content is hairline-separated rows.

05

Composition

The interface is built in three layers. Atoms set a single decision (a kicker, a timestamp, one headline size). Blocks compose atoms into a story unit. Patterns arrange blocks into a page. Build by composing these — never re-style markup ad hoc. The full set is rendered live in the kitchen sink →

Anatomy · StoryCard = Media + Kicker + Headline + meta

തിരുവല്ലയിലെ തോൽവിയിൽ നടപടി; ഏരിയ കമ്മിറ്റി അംഗത്തെ തരംതാഴ്ത്തി സിപിഎം

4:30 PM

  • Media 16/9 frame · square · optional zoom/overlay
  • Kicker the one tracked label · azure
  • Headline size token only · hover inherits group
  • meta caption · tabular-nums timestamp

Pattern · Editorial Shelf — Columns Variant (as used for /shelf)

Shelf

In Depth
View all →

Pattern · Editorial Shelf — Lists Variant (as used for /kerala)

Kerala

Kerala News
View all →
Kerala

കെപിസിസി പ്രസിഡന്റ് സ്ഥാനം ലക്ഷ്യമിട്ട് ജോസഫ് വാഴക്കൻ

പൂർണ്ണമായും പാർട്ടിക്ക് വേണ്ടി പ്രവർത്തിക്കാൻ കഴിയുന്ന ഒരു സമയമാണിത്. മറ്റ് ചുമതലകളൊന്നുമില്ലെന്നും ഡൽഹിയിലെത്തിയ ജോസഫ് വാഴക്കൻ പറഞ്ഞു

Pattern · Asymmetric Shelf — Magazine Variant

Top News

Featured Features
View all →

Pattern · Category Columns Shelf — 4-Column Category Grid

Do

  • Compose blocks; pass data in as a story.
  • One type role → one size token, set in the atom.
  • Square frames, hairline rules, flat surfaces.

Don't

  • Re-style a block inline or fork a near-duplicate.
  • Set headline/​meta type ad hoc in markup.
  • Nest a card link inside another link.