DESIGN.md · Analysis

Revolution Express

revolution.webcanhcam.vn · 19 Jun 2026 · 47 colors · Montserrat

Revolution Express

A premium Vietnamese transportation brand combining heritage aesthetics with modern digital experience. The design system balances luxury minimalism with functional clarity, evoking the romance of train travel through a sophisticated dark-light contrast palette.

Colors

surface#000500
surface-dim#000000
surface-bright#1a1a1a
surface-container-lowest#050505
surface-container-low#0d0d0d
surface-container#151515
surface-container-high#242424
surface-container-highest#333333
on-surface#ffffff
on-surface-variant#e1e1e1
inverse-surface#ffffff
inverse-on-surface#000500
outline#808080
outline-variant#4a4a4a
surface-tint#d4af37
primary#d4af37
on-primary#000500
primary-container#f4d89f
on-primary-container#3d2f00
inverse-primary#8b7500
secondary#2098d1
on-secondary#ffffff
secondary-container#4db8e8
on-secondary-container#001f33
tertiary#ff6900
on-tertiary#ffffff
tertiary-container#ffa040
on-tertiary-container#331a00
error#cf2e2e
on-error#ffffff
error-container#f5a5a5
on-error-container#5a0000
primary-fixed#f4d89f
primary-fixed-dim#d4af37
on-primary-fixed#1a1400
on-primary-fixed-variant#6b5a00
secondary-fixed#4db8e8
secondary-fixed-dim#2098d1
on-secondary-fixed#001f33
on-secondary-fixed-variant#004d6b
tertiary-fixed#ffa040
tertiary-fixed-dim#ff6900
on-tertiary-fixed#331a00
on-tertiary-fixed-variant#664000
background#000500
on-background#ffffff
surface-variant#3a3a3a

Typography

display
fontFamily: Montserrat · fontSize: 60px · fontWeight: 700 · lineHeight: 68px · letterSpacing: -0.04em
headline-lg
fontFamily: Montserrat · fontSize: 40px · fontWeight: 600 · lineHeight: 48px · letterSpacing: -0.02em
headline-md
fontFamily: Montserrat · fontSize: 28px · fontWeight: 600 · lineHeight: 36px · letterSpacing: -0.01em
title-lg
fontFamily: Montserrat · fontSize: 20px · fontWeight: 600 · lineHeight: 28px · letterSpacing: 0em
body-lg
fontFamily: Montserrat · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0.02em
body-md
fontFamily: Montserrat · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0.01em
label-md
fontFamily: Montserrat · fontSize: 14px · fontWeight: 600 · lineHeight: 20px · letterSpacing: 0.02em
label-sm
fontFamily: Montserrat · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.03em

Design guidance

Overview

Revolution Express is a premium Vietnamese transportation service brand that marries heritage railway aesthetics with contemporary digital minimalism. The design system serves travelers seeking authentic, curated journeys through Vietnam—positioning the brand as both nostalgic and forward-thinking. The visual language employs a "Luxury Minimalism" aesthetic: a near-black canvas (rgb(0, 5, 0)) punctuated by warm gold accents (#d4af37) and cool cyan highlights (#2098d1), evoking the interplay of train windows at dusk and the precision of vintage timetables. The UI evokes a sense of anticipation and sophistication—every interaction feels deliberate, every surface intentional.

The brand voice is refined yet approachable: precise, poetic, never rushed. Vocabulary leans toward journey-centric language: "Build Your Journey," "Step Aboard," "Ride the Vietnam Revolution." Tone is conversational but authoritative—the brand speaks as a knowledgeable guide, not a salesperson. Example sentence in brand voice: "Your seat awaits by the window; the Mekong Delta unfolds at 6:47 AM."

Colors

The color system operates on a principle of **Contrast & Warmth**: a deep, near-black foundation (#000500, rgb(0, 5, 0)) provides visual rest and luxury, while a warm metallic gold (#d4af37) serves as the primary accent—used exclusively on CTAs, active states, and brand moments. This gold is never applied to body text or backgrounds; it is reserved for moments of intentional interaction. Secondary accent cyan (#2098d1) provides a cool counterpoint, used for secondary CTAs, status indicators, and data visualization. The surface stack progresses from pure black (#000000) at the dimmest level through carefully calibrated grays (#0d0d0d, #151515, #242424) to create subtle depth without breaking the dark aesthetic. On-surface text is pure white (#ffffff) for maximum legibility over dark backgro

Typography

The type system is anchored in Montserrat, a geometric sans-serif that conveys modernity and precision—qualities essential to a transportation brand. The hierarchy spans from Display (60px, 700 weight) for hero moments down to Label-sm (12px, 500 weight) for micro-interactions. Headlines use tighter letter-spacing (-0.04em to -0.01em) to create visual compression and sophistication, while body text employs 0.01–0.02em spacing for clarity. All type is set in white (#ffffff) or near-black (#000500) for maximum contrast; no gray text is used except in disabled states. Italic styling is reserved for hero taglines (e.g., "Ride the Vietnam Revolution" rendered in italic at 40px, 400 weight). Apply text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) on white text overlaid on photographic backgrounds to ens

Layout

The layout employs a 12-column grid with a max-width of 1280px, centered on the viewport. Horizontal rhythm is governed by the spacing scale: lg (40px) separates major sections, md (24px) divides subsections, and sm (12px) creates breathing room within components. The gutter is fixed at 24px on desktop, reducing to 16px on tablet and 12px on mobile. White-space is treated as a design material—negative space around CTAs and hero imagery is never compressed. The hero section spans full-width with a 16:9 aspect ratio, overlaid with a semi-transparent dark gradient (rgba(0, 5, 0, 0.4)) to ensure text legibility. Cards and containers use md (24px) padding internally, with lg (40px) margins between them. Container backgrounds are always surface-container or darker; never white or light gray. Sec

Elevation & Depth

Depth is conveyed through subtle shadows and border definition rather than layering or blur effects. The elevation system uses three tiers: sm (0 1px 2px rgba(0, 0, 0, 0.06)) for minor interactive elements like hover states on text links; md (0 3px 8px rgba(0, 0, 0, 0.15)) for cards, input fields, and standard buttons; lg (0 8px 24px rgba(0, 0, 0, 0.25)) for modals, dropdowns, and elevated surfaces. All surfaces receive a 1px solid border at {colors.surface-container-high} or {colors.outline-variant} to define edges crisply. No blur, no glassmorphism, no transparency overlays—the aesthetic is

Shapes

The shape philosophy is **Technical Minimalism**: rounded corners are used sparingly and consistently to signal interactivity without softening the brand's precision. Buttons and inputs use md (0.75rem / 12px) border-radius—enough to feel modern, not so much as to appear playful. Cards use lg (1rem / 16px) for a slightly more generous curve that suggests containment. The navigation bar and hero section use no border-radius (0px) to anchor the layout with architectural sharpness. Badges and pills use full (9999px) for maximum roundness, signaling status or metadata. This graduated approach—shar

Components

Action Elements Buttons are the primary interaction mechanism and must command attention without aggression. **button-primary** uses {colors.primary} (#d4af37) background with {colors.on-primary} text, 12px 32px padding, 48px height, and md border-radius. Apply {elevation.md} (0 3px 8px rgba(0, 0, 0, 0.15)) on default state. On hover, shift to **button-primary-hover**: background becomes {colors.primary-fixed-dim} (#d4af37 at 90% opacity), shadow elevates to {elevation.lg}, and a 200ms ease-out transition animates the change. **button-secondary** uses transparent background with {colors.primary} text and a 1px border at {colors.primary}; on hover (**button-secondary-hover**), apply rgba(212, 175, 55, 0.08) background. **button-ghost** is text-only with no border or background; on hover

Do's and Don'ts

**Do**

  • Do use {colors.primary} (#d4af37) exclusively on CTAs, active navigation states, and focus rings—never on body text or backgrounds.
  • Do apply {elevation.md} (0 3px 8px rgba(0, 0, 0, 0.15)) to cards and buttons; elevate to {elevation.lg} on hover or focus.
  • Do maintain the dark surface stack ({colors.surface} #000500 as base) across all pages; never introduce white or light-gray backgrounds.
  • Do use Montserrat at 600+ weight for headlines and 400 for body text; never use serif fonts or system fonts.
  • Do include 200–300ms ease-out transitions on all interactive state changes (hover, focus, active).
  • Do apply 1px borders at {colors.surface-container-high} or {colors.outline-variant} to define card and input edges.
  • Do use {colors.secondary} (#2098d1) for secondary CTAs and status indicators; never mix it with primary gold on the same component.

**Don't**

  • Don't use white (#ffffff) or light gray backgrounds; the brand is dark-first. All surfaces must be {colors.surface-container} or darker.
  • Don't apply {colors.primary} to body text, disabled states, or non-interactive elements—it is reserved for CTAs and active states only.
  • Don't use box-shadow values outside the defined elevation scale (sm, md, lg); no custom shadows or blur effects.
  • Don't apply border-radius > lg (1rem) to buttons or inputs; reserve full (9999px) for badges and pills only.
  • Don't use transparency, gradients, or glassmorphism effects; the aesthetic is flat, precise, and opaque.
  • Don't mix typefaces; Montserrat is the sole font family. Never fall back to system fonts or serif alternatives.
  • Don't animate opacity or scale on hover; use only background-color, box-shadow, and border-color transitions.
  • Don't apply text-shadow on white text over dark backgrounds; use it only on white text over photographic imagery.