DESIGN.md · Analysis

Grass

app.grass.io · 9 Oct 2026 · 47 colors · Karla Variable

Grass

Grass is a rewards dashboard for users monetizing their unused internet bandwidth. The design system emphasizes clarity, accessibility, and a vibrant-minimalist aesthetic that transforms financial data into an intuitive, approachable interface.

Colors

surface#ffffff
surface-dim#f5f5f5
surface-bright#ffffff
surface-container-lowest#fafafa
surface-container-low#f3f3f3
surface-container#eeeeee
surface-container-high#e8e8e8
surface-container-highest#e0e0e0
on-surface#000000
on-surface-variant#545454
inverse-surface#191a23
inverse-on-surface#ffffff
outline#191a23
outline-variant#aeaeae
surface-tint#abf600
primary#abf600
on-primary#191a23
primary-container#d0ecb1
on-primary-container#2d3e00
inverse-primary#5b8902
secondary#23c5ec
on-secondary#000000
secondary-container#b2f5ea
on-secondary-container#003d42
tertiary#ffacb1
on-tertiary#000000
tertiary-container#ffe0e5
on-tertiary-container#3e0009
error#e21212
on-error#ffffff
error-container#ffeded
on-error-container#410004
primary-fixed#d0ecb1
primary-fixed-dim#b4d896
on-primary-fixed#1a2e00
on-primary-fixed-variant#3e5b0c
secondary-fixed#b2f5ea
secondary-fixed-dim#96e8e0
on-secondary-fixed#001f23
on-secondary-fixed-variant#004d54
tertiary-fixed#ffe0e5
tertiary-fixed-dim#ffc4cc
on-tertiary-fixed#2a0008
on-tertiary-fixed-variant#6b1d2a
background#ffffff
on-background#000000
surface-variant#f3f3f3

Typography

display
fontFamily: Karla Variable · fontSize: 56px · fontWeight: 700 · lineHeight: 64px · letterSpacing: -0.02em
headline-lg
fontFamily: Karla Variable · fontSize: 36px · fontWeight: 600 · lineHeight: 44px · letterSpacing: -0.01em
headline-md
fontFamily: Karla Variable · fontSize: 28px · fontWeight: 600 · lineHeight: 36px · letterSpacing: 0em
title-lg
fontFamily: Karla Variable · fontSize: 20px · fontWeight: 600 · lineHeight: 28px · letterSpacing: 0.01em
body-lg
fontFamily: Karla Variable · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0em
body-md
fontFamily: Karla Variable · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0em
label-md
fontFamily: Karla Variable · fontSize: 14px · fontWeight: 600 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Karla Variable · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.02em

Design guidance

Overview

Grass is a financial dashboard for users monetizing their unused internet bandwidth through a peer-to-peer network. The design system embodies 'Accessible Data Minimalism'—a philosophy that prioritizes clarity and user confidence by presenting complex earnings data through a clean, light-first interface with strategic use of a vibrant lime-green accent (#ABF600). The brand serves users who value transparency and control, evoking a sense of empowerment and straightforward progress tracking.

The voice is conversational yet precise: friendly without being patronizing, technical without being opaque. Grass speaks in active, outcome-focused language. Example: 'Your network is earning $2.40 today—keep it online to maximize rewards.' The tone avoids hype; instead, it builds trust through consistent, honest communication about earnings, uptime, and rewards.

Colors

The Grass color system is anchored in a light, open aesthetic with a single, unmissable accent. Primary (#ABF600) is the brand's signature lime-green, used exclusively for call-to-action buttons, success states, and key interactive elements—it commands attention without aggression. On-primary text (#191A23, near-black) ensures legibility at 16px body size with a contrast ratio exceeding 12:1. Secondary (#23C5EC, cyan) provides a supporting accent for data visualization, charts, and secondary UI elements like proxy status indicators. Tertiary (#FFACB1, soft coral) is reserved for error states and warnings, softening the severity of negative feedback.

The surface stack is predominantly white (#FFFFFF) with carefully calibrated grays for depth: surface-container-low (#F3F3F3) for subtle card

Typography

The type system uses Karla Variable as the primary typeface, chosen for its geometric clarity and excellent readability at small sizes (12px label-sm through 16px body-md). Display (56px, 700 weight, -0.02em tracking) is reserved for hero headlines and major section titles; headline-lg (36px, 600 weight) anchors dashboard sections like 'Earnings' and 'Statistics'; headline-md (28px, 600 weight) breaks up subsections. Body-md (16px, 400 weight, 24px line-height) is the default reading size, applied to all body copy and form labels. Label-md (14px, 600 weight) is used for button text and UI labels, with 0.01em tracking for subtle emphasis. Label-sm (12px, 500 weight) is applied to badges, tags, and secondary metadata. All type scales use a 1.5x line-height multiplier minimum to ensure comfor

Layout

The layout follows a 12-column grid with a max-width of 1280px, centered on the viewport. The left sidebar (240px fixed) contains primary navigation; the main content area flows fluidly to fill remaining space. White-space is generous: section separation uses lg spacing (40px), card-to-card gutters use md spacing (24px), and internal card padding uses md spacing (24px) with 20px top/bottom and 24px left/right. The grid is fluid below 768px, collapsing to a single column with md spacing (24px) between sections. Container padding on mobile is sm spacing (12px) on each side. The spacing scale is semantic: xs (4px) for micro-interactions, sm (12px) for component internals, md (24px) for section rhythm, lg (40px) for major section breaks, and xl (64px) for hero-to-content transitions.

Elevation & Depth

Depth is conveyed through subtle shadows and layering, not through color darkening. Level 1 (Base): flat white surface with no shadow. Level 2 (Standard Card): 0 3px 8px rgba(0, 0, 0, 0.15), applied to cards, modals, and lifted UI elements. Level 3 (Elevated/Hover): 0 8px 20px rgba(0, 0, 0, 0.12), applied on card hover and modal overlays. Borders provide additional definition: all cards receive a 1px solid border at #AEAEAE (outline-variant) to separate from the background. Interactive elements (buttons, inputs) use a 1.5px inset border at rgba(0, 0, 0, 0.08) to define their clickable boundary

Shapes

The shape philosophy is 'Soft-Technical': rounded corners are used strategically to soften the interface without sacrificing clarity. Buttons and primary CTAs use full radius (9999px) to create a pill shape, emphasizing their interactive nature and drawing the eye. Cards and containers use lg radius (20px), balancing approachability with structure. Inputs and secondary UI elements use DEFAULT radius (8px), maintaining visual hierarchy while staying functional. Modal dialogs use xl radius (28px) to signal importance and separation from the main interface. The rationale: full-radius buttons feel

Components

Action Elements Buttons are the primary interaction pattern. Button-primary uses #ABF600 background with #191A23 text, 44px height, 12px vertical / 24px horizontal padding, and full radius (9999px). On hover, the background shifts to #D0ECB1 (primary-container) with a transition of 150ms ease-out. Button-secondary uses a transparent background with a 1.5px border at #AEAEAE, same padding and height, and shifts to surface-container-high (#E8E8E8) on hover. Both buttons apply font-weight: 600 and label-md typography (14px, 20px line-height). Focus states add a 3px ring at rgba(171, 246, 0, 0.1).

Containers & Surfaces Cards are the primary container for grouped content. Card base: surface-container-lowest (#FAFAFA) background, lg radius (20px), 20px top/bottom padding and 24px left/r

Do's and Don'ts

**Do**

  • Do use primary (#ABF600) exclusively for CTAs, success states, and key interactive elements—never for backgrounds or body text.
  • Do apply md spacing (24px) between major sections and lg spacing (40px) for hero-to-content transitions to maintain visual rhythm.
  • Do use Karla Variable at 16px body-md with 24px line-height for all body copy to ensure legibility and accessibility.
  • Do apply 0 3px 8px rgba(0, 0, 0, 0.15) shadow to cards and lifted elements; increase to 0 8px 20px rgba(0, 0, 0, 0.12) on hover.
  • Do use full radius (9999px) on all primary buttons and pill-shaped UI elements to signal interactivity.
  • Do apply 1.5px inset borders at rgba(0, 0, 0, 0.08) to input fields and secondary UI to define clickable boundaries.

**Don't**

  • Don't use primary (#ABF600) for body text, backgrounds, or non-interactive elements—reserve it exclusively for actions and success states.
  • Don't apply shadows darker than 0 8px 20px rgba(0, 0, 0, 0.12) or use blur effects; maintain clarity and legibility.
  • Don't use rounded corners smaller than DEFAULT (8px) on interactive elements; smaller radii reduce affordance.
  • Don't mix typefaces; Karla Variable is the sole typeface for all UI text—avoid system fonts or serif alternatives.
  • Don't apply padding smaller than sm (12px) inside cards or containers; maintain breathing room for readability.
  • Don't use secondary (#23C5EC) or tertiary (#FFACB1) as primary CTAs; these are supporting accents only.

Made by Sokosumi: AI coworkers for marketing

This tool is free. Sokosumi gives marketing teams AI coworkers that deliver finished work as files: research, briefings, reports and content.

Start free

*No Credit Card required