DESIGN.md · Analysis

Aside

aside.com · 11 Sept 2026 · 47 colors · displayFont, displayFont Fallback, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif, Geist, Geist Fallback, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif

Aside

Aside is an AI-powered browser designed to automate complex workflows across websites, accounts, and browsing history. The design system emphasizes clarity, productivity, and approachable intelligence through a bright, optimistic aesthetic.

Colors

surface#ffffff
surface-dim#fafafa
surface-bright#ffffff
surface-container-lowest#f5f5f5
surface-container-low#eeeeee
surface-container#e9ecef
surface-container-high#e0e0e0
surface-container-highest#d4d4d4
on-surface#090b0c
on-surface-variant#6c757d
inverse-surface#171717
inverse-on-surface#f5f5f5
outline#737373
outline-variant#cccccc
surface-tint#d0d6d8
primary#0a7ea4
on-primary#ffffff
primary-container#b3e5fc
on-primary-container#004d6d
inverse-primary#4fc3f7
secondary#5a9fb5
on-secondary#ffffff
secondary-container#b3dce8
on-secondary-container#1a3a47
tertiary#7cb342
on-tertiary#ffffff
tertiary-container#c5e1a5
on-tertiary-container#33600a
error#d32f2f
on-error#ffffff
error-container#ffcdd2
on-error-container#b71c1c
primary-fixed#b3e5fc
primary-fixed-dim#80deea
on-primary-fixed#004d6d
on-primary-fixed-variant#0277bd
secondary-fixed#b3dce8
secondary-fixed-dim#80c9d8
on-secondary-fixed#1a3a47
on-secondary-fixed-variant#3d6b7f
tertiary-fixed#c5e1a5
tertiary-fixed-dim#aed581
on-tertiary-fixed#33600a
on-tertiary-fixed-variant#558b2f
background#ffffff
on-background#090b0c
surface-variant#e9ecef

Typography

display
fontFamily: displayFont, displayFont Fallback, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif · fontSize: 48px · fontWeight: 400 · lineHeight: 56px · letterSpacing: -0.02em
headline-lg
fontFamily: displayFont, displayFont Fallback, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif · fontSize: 36px · fontWeight: 400 · lineHeight: 44px · letterSpacing: -0.015em
headline-md
fontFamily: displayFont, displayFont Fallback, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif · fontSize: 28px · fontWeight: 400 · lineHeight: 36px
title-lg
fontFamily: Geist, Geist Fallback, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif · fontSize: 20px · fontWeight: 600 · lineHeight: 28px
body-lg
fontFamily: Geist, Geist Fallback, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif · fontSize: 18px · fontWeight: 400 · lineHeight: 28px
body-md
fontFamily: Geist, Geist Fallback, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif · fontSize: 16px · fontWeight: 400 · lineHeight: 24px
label-md
fontFamily: Geist, Geist Fallback, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif · fontSize: 14px · fontWeight: 500 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Geist, Geist Fallback, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif · fontSize: 12px · fontWeight: 500 · lineHeight: 16px

Design guidance

Overview

Aside is an AI-powered browser designed for knowledge workers who juggle multiple accounts, websites, and complex workflows. The design system embodies 'Productive Minimalism'—a philosophy that strips away visual noise while maintaining warmth and approachability. The bright, optimistic cyan-to-white palette (primary #0a7ea4 anchoring a clean white canvas) conveys intelligence without coldness, and the generous use of whitespace and soft shadows creates a sense of calm focus. The brand personality is confident yet helpful: precise, action-oriented, and never condescending. Voice example: 'Aside learns your workflow and handles repetitive tasks—so you focus on what matters.'

Colors

The color system prioritizes clarity and task-driven interaction. Primary (#0a7ea4) is the signature teal used exclusively on CTAs, active states, and key interactive elements—it signals 'do this now' without aggression. Surface colors range from pure white (#ffffff) down through carefully calibrated grays (surface-container #e9ecef, outline-variant #cccccc) to support hierarchy without introducing visual clutter. Secondary (#5a9fb5) provides a softer teal for supporting UI elements and hover states. Tertiary (#7cb342) is reserved for success states and positive feedback. Error (#d32f2f) is a decisive red for destructive actions and validation failures. The gray scale (on-surface #090b0c for text, on-surface-variant #6c757d for secondary copy) ensures 4.5:1+ contrast ratios across all text

Typography

The type system pairs a distinctive display font (displayFont) for headlines with Geist for body copy, creating visual hierarchy through weight and scale rather than multiple typefaces. Display (48px, 400 weight, -0.02em tracking) anchors hero sections and major headings with elegant restraint. Headline-lg (36px, 400 weight) and headline-md (28px, 400 weight) scale down for section titles, maintaining the same refined weight. Body-lg (18px, 400 weight, 28px line-height) and body-md (16px, 400 weight, 24px line-height) provide comfortable reading rhythm for long-form content. Label-md (14px, 500 weight, 0.01em tracking) and label-sm (12px, 500 weight) are used for buttons, badges, and UI labels. Apply text-shadow: 0 1px 2px rgba(0, 0, 0, 0.08) on small labels (label-sm) when placed over lig

Layout

The layout system uses a 12-column grid with a max-width of 1320px, allowing flexible content arrangement while maintaining visual coherence. Spacing follows a semantic scale: unit (8px) as the base, with sm (12px) for tight grouping, md (24px) for standard section separation, lg (40px) for major section breaks, and xl (64px) for hero-to-content transitions. The gutter (24px) is applied consistently to horizontal padding on containers. Whitespace is treated as a design element—sections breathe with lg spacing between them, and cards use md padding internally. Container max-width of 1320px ensures readability on ultra-wide displays while maintaining focus.

Elevation & Depth

Elevation is conveyed through subtle shadows and layering rather than dramatic depth. Level 1 (Base): flat white surface with no shadow, establishing the primary reading plane. Level 2 (Cards/Containers): box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1) creates a soft lift, suggesting interactive surfaces. Level 3 (Modals/Popovers): box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12) provides additional separation for modal dialogs and floating panels. Focus states add a 3px inset shadow in primary color (rgba(10, 126, 164, 0.1)) to indicate keyboard navigation without disrupting the visual hierarchy. Transit

Shapes

The shape philosophy is 'Functional Softness'—rounded corners are applied strategically to reduce visual harshness while maintaining clarity. Buttons use full radius (9999px) for pill-shaped CTAs, creating a friendly, approachable affordance. Cards and containers use lg radius (8px) for a subtle, modern look that avoids the sterility of sharp corners. Input fields use DEFAULT radius (4px) for a more technical, form-like appearance that signals data entry. Badges and small UI elements use full radius (9999px) to emphasize their compact, self-contained nature. The rationale: larger, more promine

Components

Action Elements Buttons are the primary interaction mechanism. Button-primary uses {colors.primary} (#0a7ea4) background with white text, full radius (9999px), and 12px 24px padding for a 40px height. On hover, background shifts to #0277bd (primary-fixed-dim) with a 200ms ease transition. Button-secondary uses transparent background with a 1px outline-variant border, maintaining the same dimensions and radius. Button-ghost removes the border entirely, using only text color change on hover (to primary). All buttons use label-md typography (14px, 500 weight) and include a focus state with box-shadow: 0 0 0 3px rgba(10, 126, 164, 0.1).

Containers & Surfaces Cards are the primary content container. Card base uses white background (#ffffff), lg radius (8px), md padding (24px), and a 1p

Do's and Don'ts

**Do**

  • Do use primary (#0a7ea4) exclusively for CTAs, active states, and key interactive elements—never for decorative or background purposes.
  • Do apply md spacing (24px) between major sections and lg spacing (40px) between hero and content to create breathing room.
  • Do use full radius (9999px) on buttons and badges to signal friendliness; use DEFAULT radius (4px) on inputs to signal precision.
  • Do include focus states with box-shadow: 0 0 0 3px rgba(10, 126, 164, 0.1) on all interactive elements for keyboard accessibility.
  • Do transition between states (hover, focus, active) using 200ms ease timing to feel responsive without being jarring.
  • Do maintain 4.5:1+ contrast ratios on all text by using on-surface (#090b0c) for primary copy and on-surface-variant (#6c757d) for secondary copy.

**Don't**

  • Don't use primary color for backgrounds, borders, or non-interactive elements—it must remain reserved for CTAs and active states.
  • Don't apply shadows deeper than lg elevation (0 8px 24px rgba(0, 0, 0, 0.12)) as it creates visual noise and reduces focus.
  • Don't use sharp corners (0px radius) on any interactive element; minimum DEFAULT radius (4px) maintains the brand's approachable aesthetic.
  • Don't apply transitions longer than 300ms or use easing functions other than ease/ease-in-out, as they feel sluggish and reduce perceived responsiveness.
  • Don't mix display font and Geist in the same heading—use display font for hero/display scales and Geist for title/label scales.
  • Don't place small text (label-sm, 12px) over low-contrast backgrounds without text-shadow: 0 1px 2px rgba(0, 0, 0, 0.08) to ensure legibility.