Gas

Gas's iOS app is deliberately, unapologetically joyful.

Back to all styles

A live page in this style is not built yet β€” the CSS variables and the prompt below are enough to reproduce it.

At a glance

17tokens
11type steps
1radius steps
7pxspacing base

Gas, in one page

Gas's iOS app is deliberately, unapologetically *joyful*. It is an anonymous compliments app built for high-schoolers, and every design decision pushes toward warmth, play, and a quick dopamine loop — the opposite of a corporate, dark, "serious" product. The screen is a full-bleed indigo→purple gradient (#6C5CE7 → #A06CFF) from top to bottom, and floating in the center of that purple world is one big, friendly, pure-white poll card with very round corners (28pt) and a soft purple-tinted shadow. There is no feed, no infinite scroll, no profiles to stalk. The entire core experience is: *answer a poll about your classmates, one card at a time, then see flames roll in when people pick you.* This is light-UI by design — Gas has no dark mode in spirit; the brand IS the bright gradient.

The signature moment is the anonymous compliment poll. A question like "Who has the best smile? πŸ˜„" sits in heavy rounded type above four bold gradient name buttons in a 2Γ—2 grid, each a different cheerful color from a fixed rotating palette (indigo, pink, yellow, green). You tap a name (positive-only β€” every question is a compliment), the card springs away, the next one slides in, and a counter advances. The names are pulled from the user's school and reshuffled with a "shuffle" affordance. This poll card β€” emoji + bold question + four colorful name choices β€” is the most recognizable artifact in the app and the thing every clone must nail.

The second signature is the flame πŸ”₯ currency. Voting earns flames; flames are spent to unlock hints about *who* picked you ("a girl from your grade", "someone whose name starts with J"). The flame count lives in a pill in the top-right, glowing flame-orange (#FF7A45) against the purple. It's the game layer β€” the reason to come back, the reason to invite friends (more friends = more polls = more flames). Color is loud and happy: the indigo/purple gradient is the world, the four choice colors are a fixed festive set, and flame-orange is the only "currency" accent. Type is Nunito β€” a rounded, soft, friendly sans set at heavy weights (800–900) β€” chosen because it reads as approachable and middle-school-warm, never austere or techy. Everything about Gas is positive, anonymous, and bright.

Key Characteristics:

Do's and don'ts

Do

  • Use the full-bleed indigoβ†’purple gradient (#6C5CE7 β†’ #A06CFF) as the world β€” Gas is light-UI by design
  • Float ONE big white poll card (28pt radius, soft purple shadow) centered β€” one card at a time
  • Render poll choices as four bold gradient buttons in a strict 2Γ—2 grid
  • Keep questions positive-only and centered with a 50pt emoji headline and a "be nice" tag
  • Use the fixed festive choice palette (indigo/pink/yellow/green) and rotate by slot
  • Make the flame πŸ”₯ (#FF7A45) the single currency accent β€” count pill, earn toasts, unlock gates
  • Set type HEAVY in Nunito (800–900) β€” chunky and rounded is the brand voice
  • Use purple-tinted shadows (rgba(40,20,90,…)) β€” never neutral gray
  • Make motion springy and celebratory β€” cards bounce, flames count up, confetti pops
  • Keep it finite β€” one card, no infinite scroll, no public profiles

Don't

  • Don't ship a dark theme β€” Gas's identity IS the bright purple gradient; light by design
  • Don't show a feed or infinite scroll β€” the loop is one poll card at a time, intentionally bounded
  • Don't make questions negative or comparative-in-a-mean-way β€” every poll is a compliment
  • Don't lay choices out 1Γ—4 or in a list β€” the 2Γ—2 grid of color tiles is iconic
  • Don't use neutral gray shadows β€” all elevation is purple-plum tinted
  • Don't go light-weight on type β€” never below 700; the chunky Nunito is the personality
  • Don't add a second accent color beyond the flame β€” purple gradient + 4 choice colors + flame is the whole system
  • Don't reuse flame-orange for anything but the currency β€” it must mean "flames"
  • Don't make it look corporate, minimal, or "sleek" β€” Gas is candy-bright and teen-warm on purpose
  • Don't surface real names/photos in poll context β€” anonymity and safety are core

Copy this into your AI builder

Paste it as-is. Every value below was measured from the original site, not guessed.

Assembled from the measured tokens β€” the source document has no prompt block.

Build a page in the Gas design language. Follow the measured tokens below β€” do not substitute your own palette.

Colors:
- Flame πŸ”₯ currency: #ff7a45
- Brand Gradient: #6c5ce7
- Gas Indigo: #6c5ce7
- Gas Purple: #a06cff
- Gas Violet: #7b4dff
- Indigo Pressed: #5a4ad1
- Card White: #ffffff
- Tint Surface: #f4f2ff
- Divider: #ece9fb
- Card Text Primary: #1a1530

Type:
- families: Nunito, Fallback Stack, Primary CTA, Dynamic Type
- scale: 10, 12, 13, 14, 15, 16, 18, 23, 26
- weights: 700, 800, 900

Shape:
- radius: 28
- elevation: Shadow: `0 10px 24px rgba(108,92,231,0.45)` β€” a colored glow, not gray | Shadow: `0 24px 50px -20px rgba(40,20,90,0.55)` β€” soft, purple-tinted, generous | Soft purple shadow `0 12px 28px -14px rgba(40,20,90,0.4)`

Spacing: 7, 12, 15, 16, 18, 26

Rules:
- Use the full-bleed indigo→purple gradient (`#6C5CE7 → #A06CFF`) as the world — Gas is light-UI by design
- Float ONE big white poll card (28pt radius, soft purple shadow) centered β€” one card at a time
- Render poll choices as four bold gradient buttons in a strict 2Γ—2 grid
- Keep questions positive-only and centered with a 50pt emoji headline and a "be nice" tag
- Use the fixed festive choice palette (indigo/pink/yellow/green) and rotate by slot
- Make the flame πŸ”₯ (`#FF7A45`) the single currency accent β€” count pill, earn toasts, unlock gates

Avoid:
- Don't ship a dark theme β€” Gas's identity IS the bright purple gradient; light by design
- Don't show a feed or infinite scroll β€” the loop is one poll card at a time, intentionally bounded
- Don't make questions negative or comparative-in-a-mean-way β€” every poll is a compliment
- Don't lay choices out 1Γ—4 or in a list β€” the 2Γ—2 grid of color tiles is iconic
- Don't use neutral gray shadows β€” all elevation is purple-plum tinted
- Don't go light-weight on type β€” never below 700; the chunky Nunito is the personality

Keep every value literal. If a token is given, use that exact value.

The specification

Colour paletteRead the full spec

Primary (Interactive)

  • Brand Gradient (#6C5CE7 β†’ #A06CFF, 135–180Β°): The app world background and primary CTA fill.
  • Gas Indigo (#6C5CE7): The brand anchor β€” gradient top, primary buttons, choice color #1.
  • Gas Purple (#A06CFF): Gradient bottom, lighter brand accent.
  • Gas Violet (#7B4DFF): The on-white brand tint β€” used for the poll tag, links, accents on the white card.
  • Indigo Pressed (#5A4AD1): Pressed state for indigo buttons/choices.

Canvas & Surfaces

  • App Background (gradient #6C5CE7 β†’ #A06CFF): The full-bleed world β€” every screen.
  • Card White (#FFFFFF): The poll card and all primary content cards β€” bright, high-contrast on purple.
  • Tint Surface (#F4F2FF): Secondary surfaces inside white cards (pressed rows, sub-panels) β€” a faint lavender.
  • Divider (#ECE9FB): Hairline dividers inside white cards β€” a soft lilac.
  • Glass Bar (rgba(255,255,255,0.16) + blur): The translucent tab bar over the gradient.
  • Scrim (rgba(40,20,90,0.45)): Dim behind modals/sheets β€” a purple-tinted scrim, never gray-black.

Gas is light-UI by design. There is no separate dark theme; the brand identity *is* the bright purple gradient. (If a system-level dark accommodation is ever required, deepen the gradient to #4A3FB0 β†’ #6C5CE7 and keep cards white β€” but the product intent is always light.)

Text (on white cards)

  • Card Text Primary (#1A1530): Poll questions, titles β€” a near-black plum, warmer than pure black.
  • Card Text Secondary (#6B6588): Body, descriptions β€” a muted purple-gray.
  • Card Text Tertiary (#A29DB8): Metadata, counts, hints β€” light lavender-gray.

Text (on the gradient)

  • On-Purple Primary (#FFFFFF): Top-bar labels, tab labels, skip β€” pure white.
  • On-Purple Secondary (rgba(255,255,255,0.8)): Sub-labels, de-emphasized.

Choice Palette (fixed festive set, rotates per poll)

SlotGradientText
Choice 1 (Indigo)#6C5CE7 β†’ #8B6CFF#FFFFFF
Choice 2 (Pink)#FF6CC8 β†’ #FF9CDB#FFFFFF
Choice 3 (Yellow)#FFC93C β†’ #FFB13C#4A3300
Choice 4 (Green)#2BC48A β†’ #4FD9A6#FFFFFF

Accent & Currency

  • Flame (#FF7A45): The flame πŸ”₯ currency color β€” count pill, "earned", "unlock for N". The single non-purple, non-choice accent. Means exactly "flames".
  • Flame Glow (rgba(255,122,69,0.15)): Lit/active flame chip background.

Semantic

  • Success (#2BC48A): "Vote counted!", milestone reached (reuses Choice Green for palette discipline).
  • Error (#FF5470): Failed action, "no more polls right now", validation.
  • Celebrate Pink (#FF6CC8): Confetti / celebration accents (reuses Choice Pink).
Type scaleRead the full spec

Font Family

  • Primary: Nunito (by Vernon Adams / Jacques Le Bailly, SIL OFL) β€” a balanced, rounded, friendly sans-serif. The rounded terminals read as warm and approachable β€” exactly Gas's middle-school-friendly, anti-corporate voice. Closest free Google Font to Gas's playful rounded type.
  • Fallback Stack: -apple-system, BlinkMacSystemFont, 'SF Pro Rounded', 'SF Pro Display', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif
  • Weight philosophy: Gas runs HEAVY. Most text is 800 (ExtraBold) or 900 (Black). Regular 400 barely appears. The chunky weight is part of the playful identity.

Hierarchy

RoleFontSizeWeightLine HeightLetter SpacingNotes
DisplayNunito32pt9001.15-0.4pt"Polls", big screen titles
Screen TitleNunito26pt9001.2-0.3pt"Your flames", "Inbox"
Poll QuestionNunito23pt9001.25-0.2ptThe poll prompt on the card
Card TitleNunito18pt8001.3-0.1pt"Someone is thinking about you"
Choice ButtonNunito16pt8001.10ptThe four name buttons
BodyNunito15pt7001.450ptCard body copy, hints
Big NumberNunito28pt9001.0-0.5ptFlame counts, big stats
MetadataNunito13pt7001.30pt"5 people voted Β· 2m ago"
Poll TagNunito12pt8001.00.5pt"ANONYMOUS Β· BE NICE" uppercase
ButtonNunito16pt9001.00.2ptPrimary CTA
Pill / FlameNunito15pt9001.00ptFlame count pill
Tab LabelNunito10pt8001.00.1ptBottom tab labels
Skip / LinkNunito14pt8001.00pt"Skip β€Ί", text links

Principles

  • Heavy and rounded: 800–900 weight everywhere β€” the chunkiness IS the brand voice; never set body below 700.
  • Big and centered on cards: poll questions are large (23pt) and center-aligned β€” readable at a glance, screenshot-friendly.
  • Emoji as a first-class type element: a 50pt emoji crowns nearly every poll card; treat it as part of the headline.
  • Numbers shout: flame counts and stats use 28pt 900 β€” the game layer should feel celebratory.
  • Dynamic Type: poll questions, titles, body scale; tab labels, poll tags, choice button labels stay fixed (layout-critical 2Γ—2 grid).
Components and layoutRead the full spec

Buttons

Primary Button (Get my flames / Continue)

  • Shape: Full pill, 999pt corner radius
  • Background: brand gradient #6C5CE7 β†’ #A06CFF
  • Text: #FFFFFF, Nunito 16pt weight 900
  • Padding: 15pt vertical, 30pt horizontal
  • Pressed: filter: brightness(0.96) + scale 0.97 (springy)
  • Shadow: 0 10px 24px rgba(108,92,231,0.45) β€” a colored glow, not gray

Choice Button (the four poll names)

  • Shape: Large rounded rect, 20pt corner radius (NOT a pill β€” distinct chunky tile)
  • Background: one of the 4 fixed choice gradients (rotates by slot)
  • Text: white (or #4A3300 on the yellow slot), Nunito 16pt weight 800, centered
  • Padding: 16pt vertical, 10pt horizontal
  • Pressed: scale 0.96 + brightness 0.94; selected: scales 1.04 then springs back as the card exits
  • Always rendered in a 2-column grid with 12pt gaps

Flame Button (Unlock hint)

  • Background: #FF7A45 (flame)
  • Text: #FFFFFF, Nunito 15pt weight 900, with a leading πŸ”₯
  • Corner radius: 999pt
  • Pressed: brightness 0.94 + scale 0.97

Ghost / Skip Button

  • Background: rgba(255,255,255,0.18) (on gradient) OR #F4F2FF (on white card)
  • Text: #FFFFFF (on gradient) / #6B6588 (on card), Nunito 14–15pt weight 800
  • Corner radius: 999pt
  • Often just text: "Skip β€Ί" in #FFFFFF 80% opacity

Text Button (Shuffle names)

  • Text: #7B4DFF (on card) / #FFFFFF (on gradient), Nunito 14pt weight 800
  • Often paired with an emoji ("πŸ”„ Shuffle names")
  • No background; pressed: 70% opacity

Core Atoms

Poll Card (the hero)

  • Background: #FFFFFF
  • Corner radius: 28pt (very round β€” friendly)
  • Shadow: 0 24px 50px -20px rgba(40,20,90,0.55) β€” soft, purple-tinted, generous
  • Padding: 26pt top, 20pt sides, 24pt bottom
  • Floats centered in the gradient with breathing room above/below
  • Content stack: 50pt emoji β†’ 23pt question β†’ 12pt tag β†’ 2Γ—2 choices β†’ footer

Flame Pill (top-right currency)

  • Background: rgba(255,255,255,0.22) (on gradient) or #FFF with flame text (on card)
  • Content: πŸ”₯ emoji + count, Nunito 15pt weight 900 white
  • Corner radius: 999pt, padding 7pt/14pt

Avatar / Identity

  • Gas is anonymous-first β€” avatars are rare. Where present: 40pt circle, gradient or emoji fill, never a real photo in poll context

Card (generic, e.g. inbox item)

  • Background: #FFFFFF, 20pt radius
  • Soft purple shadow 0 12px 28px -14px rgba(40,20,90,0.4)
  • Internal padding 18–20pt

Navigation

Top Bar

  • Height: 44pt + safe area, transparent over the gradient
  • Leading: school name (small, 80% white) + screen label (17pt 900 white) stacked
  • Trailing: the flame pill
  • No border (it floats over the gradient)

Bottom Tab Bar

  • Height: ~54pt + safe area (70pt visual)
  • Background: rgba(255,255,255,0.16) + 16px blur (frosted over the gradient)
  • 5 slots: Polls, Inbox, Add/Invite (center, raised white circle), School, You
  • Icon size: 23pt; center action is a 50pt white circle raised -16pt with an indigo + glyph
  • Active color: #FFFFFF (icons fill solid); inactive: rgba(255,255,255,0.6)
  • Labels: Nunito 10pt weight 800, always shown (center action has no label)

Profile / "You"

  • Big flame total (28pt 900), polls answered, school, invite-friends CTA
  • Positive-only β€” no follower counts, no public activity

Input Fields

Search (school / friends)

  • Height: 48pt
  • Background: #FFFFFF, 999pt pill radius
  • Border: none (focus: 2pt #7B4DFF)
  • Leading magnifier #A29DB8
  • Placeholder: "Find your school" Nunito 15pt weight 700 #A29DB8

Name Entry / Onboarding fields

  • Background: #FFFFFF, 18pt radius, generous 16pt padding
  • Text Nunito 17pt weight 800 #1A1530
  • Big, chunky, easy for teens

Distinctive Components

Anonymous Compliment Poll (the signature)

  • Emoji headline (50pt) + bold centered question (23pt 900) + uppercase tag ("ANONYMOUS Β· BE NICE", 12pt 800 #7B4DFF)
  • Four name buttons in a 2Γ—2 grid, each a fixed-slot gradient (indigo/pink/yellow/green), 20pt radius
  • Footer: "πŸ”„ Shuffle names" + a "Skip β€Ί" affordance
  • A progress indicator (segmented dots) shows position in the current poll set
  • Tapping a name: button springs (scale 1.04), card flies out, next card springs in (~350ms)

Flame Currency System

  • Flame pill (count) top-right; "+N earned" toasts after voting
  • "Unlock for πŸ”₯ N" gates on hint reveals ("who picked you")
  • Flame count animates up digit-by-digit with a soft haptic + tiny flame burst

Choice Result / "Who picked you" Reveal

  • A white card: "Someone picked you for πŸ˜„ best smile"
  • Blurred/locked hint rows; tapping spends flames to reveal one attribute ("a girl in your grade")
  • Reveal animates with a shimmer + confetti pop (#FF6CC8 / #FFC93C)

Progress Dots

  • Row of segmented bars: 22pt wide, 5pt tall, 3pt radius
  • Inactive rgba(255,255,255,0.35); active #FFFFFF, widened to 30pt
  • Sits below the poll card on the gradient

Invite / Add Friends (center tab action)

  • Raised 50pt white circle with indigo +
  • Opens a share sheet β€” "more friends = more polls = more πŸ”₯" is the core growth loop

Celebration / Confetti

  • On flame milestones and first poll: a burst of pink/yellow/green confetti over the gradient
  • Spring scale-in on the milestone number

Spacing System

Responsive behaviourRead the full spec

Device Sizes

DeviceWidthKey Changes
iPhone SE (3rd gen)375ptPoll card tighter (22pt padding); question 21pt; choices stay 2Γ—2
iPhone 13/14/15390ptStandard layout
iPhone 15/16 Pro393ptDynamic Island accommodated; flame pill clears it
iPhone 15/16 Pro Max430ptLarger card, 26pt question, more breathing room
iPad (portrait)768ptCard centered, max-width ~440pt β€” does NOT widen to a grid; phone-shaped focus
iPad (landscape)1024pt+Same centered card; gradient fills the rest β€” never a multi-column layout

Dynamic Type

  • Scales: poll questions, card titles, body
  • Fixed: choice button labels (2Γ—2 grid is layout-critical), tab labels, poll tags, progress dots
  • Very long names truncate with ellipsis inside the choice tile (never reflow the grid)

Orientation

  • Portrait-only in practice (a one-handed teen app); if rotated, the card stays centered and capped
  • No landscape-specific layout β€” the focused single-card loop is portrait-native

Touch Targets

  • Choice buttons: full tile, β‰₯ 56pt tall β€” big, easy, thumb-friendly
  • Center tab action: 50pt circle, 56pt hit
  • Flame pill: 44pt hit
  • Skip / shuffle: β‰₯ 44pt hit
  • Tab items: 23pt glyph, 48pt hit

Safe Area Handling

  • Top: flame pill + school label respect the Dynamic Island
  • Bottom: frosted tab bar + home indicator respected; the raised center circle clears the indicator
  • Sides: ~18pt gutter from screen edge to the poll card
  • The gradient extends fully edge-to-edge under everything (it's the world)

Drop-in CSS variables

The same values as a theme block. Add the class to <body> and the site repaints.

body.theme-gas {--page-bg: #ffffff;
  --page-bg-gradient: none;
  --text-color: #1a1530;
  --heading-color: #1a1530;
  --link-color: #cc3700;
  --link-hover-color: #992900;
  --border-color: #d6d5da;
  --card-bg: #ffffff;
  --card-shadow: 0 1px 2px rgba(26,21,48,0.06);
  --card-hover-shadow: 0 6px 18px rgba(26,21,48,0.12);
  --header-bg: #1a1530;
  --header-text-color: #ffffff;
  --header-shadow: none;
  --footer-bg: #ffffff;
  --footer-text-color: #6a6778;
  --button-bg: #ff7a45;
  --button-text-color: #000000;
  --button-hover-bg: #ff5612;
  --button-border: none;
  --button-border-radius: 28px;
  --button-secondary-bg: #f1f1f3;
  --button-secondary-text-color: #1a1530;
  --button-secondary-hover-bg: #e4e3e6;
  --button-secondary-border: 1px solid #d6d5da;
  --prompt-bg: #f4f3f5;
  --prompt-text-color: #1a1530;
  --base-font: var(--font-sans);
  --heading-font: var(--font-sans);
  --card-border-radius: 28px;
}

Download theme.css

Visually close to

Measured with a deterministic colour + geometry comparison across 958 styles. Not a hand-picked list.

Where this came from

Source document
ios/design-md/social/gas/DESIGN.md Β· 24.8 KB
Repository
Meliwat/awesome-ios-design-md
Licence
MIT

Source text is reproduced under its original licence. Tokens, similarity scores and page structure are ours.