Typography
Offline uses three primary font families: Satoshi for UI and body text, Cabinet Grotesk for large display text, and DM Mono for numerical data.
Display Styles (Cabinet Grotesk)
Hero headlines for landing pages
<h1 class="display-large">Hero headlines</h1>
Section hero text
<h2 class="display-medium">Section hero text</h2>
Smaller hero text, feature callouts
<h3 class="display-small">Feature callouts</h3>
Headline Styles (Satoshi)
$30 to spend at Restaurant Name
<h1 class="headline-large">Main page titles</h1>
Secondary section headers
<h2 class="headline-medium">Section headers</h2>
Restaurant Info, How can I use this?
<h3 class="headline-small">Subsection headers</h3>
Title Styles (Satoshi)
Card titles, emphasized list items
<h4 class="title-large">Card titles</h4>
FAQ questions, small card headers
<h5 class="title-medium">Small headers</h5>
Small UI headers, emphasized labels
<h6 class="title-small">Labels</h6>
Body Styles (Satoshi)
Primary paragraph text and main content. This is the most common body text size used throughout the application for readable content.
<p class="body-large">Primary text</p>
Secondary text, descriptions, and help text. Used for supporting information and details.
<p class="body-medium">Secondary text</p>
Fine print, captions, and small descriptive text.
<p class="body-small">Fine print</p>
Micro copy and legal text
<p class="body-x-small">Micro copy</p>
Label Styles (Satoshi)
BUTTON TEXT, PRIMARY LABELS
<label class="label-large">Label</label>
FORM LABELS, SMALL BUTTONS
<label class="label-medium">Label</label>
TINY LABELS, BADGES
<label class="label-small">Label</label>
Monospace (DM Mono)
1,234,567
<span style="font-family: 'DM Mono'; font-weight: 600;">1,234</span>
Color System
Primary Yellow
The signature Offline brand color for CTAs, accents, and Premium borders.
Yellow 25
#FFF2D8
--colors-yellow-25
Yellow 50
#FFE9BD
--colors-yellow-50
Yellow 100
#FFD386
--colors-yellow-100
Yellow 200
#FFBD54
--colors-yellow-200
Yellow 300
#F0A52C
--colors-yellow-300
Yellow 400 ⭐
#DE8E0F
--colors-yellow-400
Secondary Blue
Used for links, secondary actions, and landing page CTAs.
Blue 25
#D8E7FF
--colors-blue-25
Blue 50
#BED6FF
--colors-blue-50
Blue 100
#85AFFF
--colors-blue-100
Blue 400 ⭐
#004FFF
--colors-blue-400
Neutral Grays
Foundation for text, borders, and backgrounds.
Gray 25
#F2F2F2
--colors-gray-25
Gray 100
#DFDFDF
--colors-gray-100
Gray 500
#7C7C7C
--colors-gray-500
Gray 900 ⭐
#191919
--colors-gray-900
Semantic Colors
Error Red
#D31A0C
--colors-red-400
Success Green
#099250
--semantic-success500
Info Teal
#2594AB
--colors-teal-500
Layout & Responsive Patterns
Consistent layout patterns for content centering and responsive design.
Container Structure
All public-facing pages use a consistent container pattern with max-width 1280px.
max-w-7xl mx-auto w-full
Content centered at 1280px max width
<div class="flex relative flex-col md:flex-row max-w-7xl mx-auto w-full min-h-screen">
{/* Content */}
</div>
Two-Column Layout Pattern
Primary layout pattern for OfferShare and EventShare pages.
Left Column (w-full md:w-1/2)
Sticky on desktop
Images, media content
md:pr-12 (right padding)
Right Column (w-full md:w-1/2)
Scrollable content
Text, details, descriptions
md:pl-12 (left padding)
<div class="flex relative flex-col md:flex-row max-w-7xl mx-auto w-full">
<!-- Left Column - Images -->
<div class="w-full md:w-1/2 md:pr-12">
<div class="md:pt-9 md:sticky md:top-0">...</div>
</div>
<!-- Right Column - Content -->
<div class="w-full md:w-1/2 px-4 md:pl-12">
<div class="pt-4 md:pt-9">...</div>
</div>
</div>
Spacing System
Consistent Tailwind spacing scale.
gap-2, gap-3, gap-4
8px, 12px, 16px
Small gaps
gap-6, gap-8
24px, 32px
Medium gaps
gap-12, gap-16
48px, 64px
Large gaps
py-4, py-6, py-8
16px, 24px, 32px
Section padding
Component Patterns
Reusable UI components with consistent styling and behavior.
Buttons
Three color variants for different contexts and emphasis levels.
Black Button (Primary)
Hover: Gray-700
Active: Pure black
White Button (Secondary)
Hover: Gray-25
Active: Gray-200
Gray Button (Tertiary)
Hover: Gray-100
Active: Gray-200
<Button color="black">Download the app</Button>
<Button color="white">Learn More</Button>
<Button color="gray">Cancel</Button>
Form Inputs
Standard input styling with multiple states.
<div class="input-wrapper">
<label class="input-label">Label Text</label>
<div class="input-container">
<input class="input-field" type="text" placeholder="Enter text" />
</div>
</div>