Design System · Phase 1

The editorial language of Shiv Ganga

One quiet, confident system — hairline surfaces, restrained gold, a single lightweight motion runtime. Every token and component below is production code. Nothing here is a mockup.

Navy · Gold · TealPlayfair Display + Plus Jakarta Sans~4 KB motion runtimeWCAG AA
Foundations

Design principles

Quiet over loud

Hairlines and whitespace do the structural work. Shadows and colour are earned, never default. Gold appears once per view, as punctuation.

Editorial rhythm

A serif display against a humanist sans, generous measure, a strict vertical cadence. It should read like a travel journal, not a booking funnel.

Motion as luxury

One IntersectionObserver, one rAF loop. Content reveals on the way up the page; nothing bounces. Motion is GPU-only and fully reversible under reduced-motion.

Trust through candour

Specificity reads as honesty on a pilgrimage booking — a hut is called a hut. The type system exists to make plain facts legible, not to dress them up.

Server-first

Components render as static markup with data-attributes. The whole design layer costs almost no client JS, which is what keeps it fast on a Himalayan 3G connection.

Accessible by default

AA contrast, visible focus rings, reduced-motion and reduced-transparency fallbacks, and a no-JS safety net so content is never trapped behind an animation.

Tokens

Colour

The palette is unchanged from the brand — deep navy for trust, sacred gold for devotion and calls to action, Himalayan teal as a cool secondary. Everything else is a derived ink or paper tone.

Brand

Navy#0F2B5B
Navy Mid#1A3E75
Ink#0B1B38
Sacred Gold#E8920A
Gold Dark#C67A08
Himalayan Teal#0B7B8B

Ink scale · text

Ink#0B1B38
Ink Soft#2C3E5C
Ink Faint#7A8699

Paper · surfaces

Paper#FBFAF7
Paper Deep#F3F1EC
Paper Cool#F6F8FC
White#FFFFFF

Semantic · status

Success#1E7A4D
Info (Teal)#0B7B8B
Warning#B7791F
Danger#C23A34
Tokens

Typography

Playfair Display for editorial headlines, Plus Jakarta Sans for everything else. The scale is fluid — it breathes with the viewport using clamp().

display · xl

Char Dham Yatra


display · lg

Four shrines, one journey

display · md

Kedarnath & Badrinath

display · sm

Overnight at Gaurikund


eyebrow
Since 2009 · Haridwar
figure · stat numeral

12,400+


lede

The editorial lede sets the tone for a section — larger, looser, and held to a comfortable reading measure of about sixty characters.

body

Body copy runs at a relaxed line height for long-form legibility. It never exceeds sixty-eight characters wide, so the eye never loses its place across a line — the single most important typographic decision on a content-heavy site.

caption

Photograph · Kedarnath temple at first light

accent · reserved for one word

A truly sacred passage

Tokens

Spacing & rhythm

Component spacing runs on a 4px rhythm. Section spacing is separate and cinematic — a fluid clamp from 72px to 148px that gives every section room to breathe.

--ds-space-14px
--ds-space-28px
--ds-space-312px
--ds-space-416px
--ds-space-520px
--ds-space-624px
--ds-space-832px
--ds-space-1040px
--ds-space-1248px
--ds-space-1664px
Tokens

Grid

A single responsive grid primitive — 2, 3 or 4 columns that collapse to 2, then 1, at fixed breakpoints. Max content width 1320px, editorial reading measure 720px.

lux-grid--4

lux-grid--3

lux-grid--2

Tokens

Radius & elevation

Corners stay nearly square — the editorial voice. Elevation is navy-tinted and used sparingly, only for surfaces that genuinely float.

Radius

--ds-r-0
--ds-r-1
--ds-r-2
--ds-r-3
--ds-r-4
--ds-r-pill

Elevation

elev-1
elev-2
elev-3
float
Surfaces

Glass & overlays

Frosted surfaces for sticky rails and the booking bar, over a gradient scrim for text-over-image. Both degrade to opaque fallbacks on mobile and under reduced-transparency.

Himalayan peaks above Kedarnath

.lux-glass

Light frosted panel — sticky booking rail, filters bar.

.lux-glass--dark

Dark frosted panel over imagery — hero metadata, mobile book bar.

Components

Buttons

Uppercase, wide-tracked, square-cornered. Gold is the primary action and appears once per view. Every variant has hover, focus-visible, disabled and loading states.

Variants

On dark

Sizes

States

Loading keeps the button width fixed — no layout shift.
Components

Links, pills & status

Pills

11 Nights · 12 DaysBestsellerFeatured

Status chips

AvailableFilling fastFew seatsSold out
Components

Cards & fact lists

Surfaces are hairline-bordered, not shadowed. The fact list is the quiet-luxury spec device used throughout package pages.

Kedarnath
Char Dham

Classic Char Dham

Eleven nights across all four shrines, at an unhurried pace.

.lux-facts

Duration
11 Nights · 12 Days
Transport
Private AC vehicle
Start
Haridwar
Difficulty
Moderate
Best season
May – Oct
Assurance

Direct operator

No aggregator markup. You speak to the team that runs the yatra.

Components

Iconography

One line-icon system — a single 1.8 stroke weight on a 24px grid, drawn in currentColor. No emoji, so iconography renders identically on every device.

phone
chat
mail
headset
car
helicopter
route
map
mountain
temple
compass
shield
badgeCheck
medal
star
calendar
clipboard
receipt
rupee
handshake
medical
meal
users
user
ticket
oxygen
sun
calculator
book
backpack
megaphone
alert
info
check
arrowRight
external
city
flower
water
leaf
pray
Components

Form controls

Hairline fields with a gold focus ring. Validation states are built in, ready for the Phase 5 booking wizard.

Looks good.
Enter a valid 10-digit number.
States

Loading

Async feedback in the editorial voice — a thin gold spinner, an indeterminate bar, and a three-dot thinking indicator for the chat assistant.

sm

default

lg

dots

indeterminate bar

States

Skeletons

Paper-toned loading placeholders that mirror the footprint of the real content — so when data arrives, nothing shifts (CLS stays at zero).

Motion

Motion primitives

Scroll into this section to watch the system move. Every effect is a data-attribute observed by one shared runtime — sections stay static server markup. Reduced-motion resolves all of it instantly.

Reveal · directions

up (default)
fade
left
scale

Stagger · children in sequence

1
2
3
4

Line-by-line headline

A journey of four shrines,told the way it deserves.

Image curtain reveal + slow zoom

Himalayan valley
Temple at dawn
Non-negotiable

Accessibility

The design system is WCAG AA by construction, not by audit-afterthought.

Contrast

Body ink on paper clears 4.5:1; large display and UI clear 3:1. Gold is used for fills and accents, never for small body text on white.

Focus

Every interactive element shows a 2px gold focus-visible ring at a 3px offset. Focus is never removed, only styled.

Reduced motion

prefers-reduced-motion resolves all reveals, spinners, curtains and parallax instantly. Nothing depends on an animation completing.

Reduced transparency & mobile

Glass drops its blur under prefers-reduced-transparency and on small screens, falling back to an opaque surface so text stays legible and the GPU stays free.

No-JS safety net

A .no-js fallback forces revealed content visible, so a failed script never hides copy or a call to action.

Semantic markup

Fact lists are real <dl> pairs; sections carry headings; icons are decorative currentColor SVG with text labels alongside.


Phase 1 · Design system complete. Awaiting approval before Phase 2 (homepage).