BrandToPrompt

Appspot Design System: Minimal Enterprise UI Clarity

Visit Site

Explore Appspot's design system - Material 3 colors, typography, and UI specs. Build secure, predictable enterprise apps with Google cloud style.

5 min read916 words

Brand Identity

Color Palette

Primary
Secondary

Typography

Primary Font
Google Sans
Secondary Font
Roboto

Design Style

Style
minimalist with functional clarity and restrained Material 3 elements
Visual Density
compact grid-based with 8px base spacing scale
Border Style
mixed: 4px inputs, 8px cards, 20px pill buttons, up to 28px containers

Full Analysis

Alright — let’s break down Appspot’s design DNA, pixel by pixel.


1. Brand Overview

Appspot isn’t a consumer-facing “brand” in the traditional sense — it’s part of Google’s cloud infrastructure, specifically the App Engine hosting platform. The design language here is Google’s Material 3 (M3) interpretation, tuned for enterprise login and console contexts. This means: no fluff, no marketing gloss. It’s functional UI with ruthless clarity.

The vibe: clean, structured, and trust-oriented. This is the design you get when a product’s primary job is authentication and onboarding into a technical toolchain. The main audience is developers, technical managers, and enterprise IT admins. They aren’t here to browse — they’re here to sign in, deploy, and manage apps.

Appspot’s interface inherits Google’s broader ecosystem rules: the blue primary action, white backgrounds, subtle greys for text, and restrained border radii. It’s not trying to entertain — it’s trying to make every interaction predictable.

Two notable things:

  1. Primary blue (#0b57d0) dominates interactive elements — buttons, links, focus states. This is almost a visual handshake saying “this is trustworthy and official.”
  2. The typography stack is pure Google Sans and Roboto — legible, neutral, no personality beyond clarity. The hierarchy is subtle, designed for minimal distraction.

I’ll say it: this design works because it refuses to be clever. No gradients, no skeuomorphism, no “fun” microinteractions. Just a consistent Material 3 application.


2. Color System

2.1 Primary Colors

The main brand color is rgb(11, 87, 208) — normalized to #0b57d0. This is Google’s “primary blue” in the M3 palette. It’s a strong mid-blue — saturated enough to stand out against white backgrounds, but not so bright that it feels childish. Psychologically, it signals stability and trust (think IBM’s blue, Microsoft’s blue).

Compared to AWS, which uses orange (#FF9900), Google’s blue feels calmer, less aggressive. Compared to Azure’s lighter #0078D4, Appspot’s blue is deeper and slightly more formal.

2.2 Complete Palette

Color NameHexRoleUsage
Primary Blue#0b57d0PrimaryButtons, links, focus outlines
White#ffffffBackground / Text on DarkPage background, text in primary buttons
Dark Grey#444746Text Secondary / UI iconsOn-surface variant text
Medium Grey#747775Border / OutlineHover/focus outlines, dividers
Inverse Surface#303030Dark mode backgroundDark mode container
Outline Variant#c4c7c5Border variantSecondary dividers
Inverse On Surface#f2f2f2Text on darkDark mode text
Shadow#000000ShadowsElevation shadows
Surface Container Low#f8fafdLight backgroundLowest elevation surfaces
Surface Container#f0f4f9Default surfaceCards, modal backgrounds
Surface Dim#d3dbe5Slightly darker surfaceLayered UI
Surface Container Highest#dde3eaHighest elevation container
Error Container#f9dedcError backgroundValidation error zones
Error#b3261eError text/iconForm validation
Inverse Primary#a8c7faDark mode primaryPrimary in dark contexts
Surface Variant#e1e3e1Surface altAlternate backgrounds
On Error#ffffffText on errorError button text
Tertiary Container#c4eed0Alt accent containerTertiary UI
On Secondary Container#004a77Text in secondary container
On Error Container#8c1d18Text in error container
Tertiary#146c2eTertiary accentPositive actions
Surface Container High#e9eef6Elevated surface
Outline#747775OutlineBorders
On Primary Container#0842a0Text in primary container
Secondary#00639bSecondary accentLinks, alt CTAs
Secondary Container#c2e7ffSecondary background
Primary Container#d3e3fdPrimary background
On Surface Variant#444746Text on surface variant
On Background#1f1f1fMain text
On Tertiary Container#0f5223Text in tertiary container

2.3 Color Relationships

Contrast is solid. Primary blue on white easily passes WCAG AA for normal text. White on blue also passes. The greys (#444746 and #747775) are used sparingly and at sizes that keep readability acceptable. Dark mode variables like --gm3-sys-color-inverse-surface: rgb(48 48 48) ensure the palette flips without inventing new hues.

2.4 Usage Guide

  • Use #0b57d0 only for interactive elements — primary buttons, links, focus outlines.
  • White backgrounds keep the UI airy; avoid mixing with off-white unless it’s a container.
  • Greys (#444746, #747775) are for text and borders — don’t use them for backgrounds.
  • Error red (#b3261e) should be paired with light error container backgrounds (#f9dedc) for visibility.
  • Tertiary green (#146c2e) is rare — use for specific positive actions, not decoration.

3. Typography

3.1 Font Families

Primary font is Google Sans, with a fallback stack:

Google Sans, roboto, Noto Sans Myanmar UI, Noto Sans Khmer, arial

Secondary font is Roboto, fallback:

Roboto, Arial

No external font loading — these are system-available for Google properties.

3.2 Type Scale

ElementFontSizeWeightLine Height
Heading-1Google Sans44px (2.75rem)4001.18
Heading-1Google Sans16px (1rem)4001.50
Heading-1Roboto16px (1rem)4001.50
CaptionGoogle Sans14px (0.88rem)4001.43
ButtonGoogle Sans14px (0.88rem)500
ButtonGoogle Sans14px (0.88rem)5001.43
CaptionGoogle Sans14px (0.88rem)5001.43
LinkGoogle Sans14px (0.88rem)5001.43
CaptionGoogle Sans12px (0.75rem)4001.33
LinkGoogle Sans12px (0.75rem)4001.33

3.3 Hierarchy

Hierarchy is minimal. The jump from 44px H1 to 16px body text is stark — titles dominate, body text is subdued. Buttons and links sit at 14px, keeping them legible without overpowering. Captions at 12px work for secondary info but should be used sparingly for accessibility.


4. Spacing & Layout

4.1 Spacing Scale

Base scale: 8px. All spacing values are multiples or near-multiples.

ValueRemFrequency
1px0.06rem3
2px0.13rem1
3px0.19rem3
6px0.38rem6
8px0.50rem9
9px0.56rem3
11px0.69rem1
12px0.75rem2
13px0.81rem2
16px1.00rem13
24px1.50rem1
32px2.00rem2
36px2.25rem1
48px3.00rem2
108px6.75rem1

4.2 Layout

Breakpoints are tight — starting at 400px and scaling up to 1600px. This suggests fluid layouts that adapt early, not just at desktop widths.


5. Visual Elements

Border Radius Values:

  • 0px 8px 8px 0px — used on span elements
  • 4px — common (inputs, buttons)
  • 8px 0px 0px 8px — span elements
  • 8px — some links
  • 16px — div containers
  • 20px — buttons, some divs
  • 22px — divs
  • 28px — divs

Shadows: One complex M3 shadow:

rgba(0,0,0,0.2) 0px 3px 5px -1px,
rgba(0,0,0,0.14) 0px 6px 10px 0px,
rgba(0,0,0,0.12) 0px 1px 18px 0px

Used sparingly — buttons and elevated elements.

Borders: Mostly 1px or 2px solids in greys or primary blue. Inset borders appear in iframes — likely for legacy rendering.


6. Components

6.1 Buttons

Primary button:

  • Default: background #0b57d0, white text, padding 0px 24px, radius 20px, no border, no shadow.
  • Hover: opacity 0.08, subtle elevation shadow, text stays white.
  • Active: opacity 0.1, heavier shadow.
  • Focus: outline 2px solid #0b57d0, boxShadow 0 0 0 2px primary container (#d3e3fd), background changes to surface container (#f0f4f9).

Two styles:

  1. Blue (#0b57d0), font-weight 500, no underline unless hover defined.
  2. Dark (#1f1f1f), font-weight 400, underline on hover.

6.3 Forms

Email input:

  • Default: transparent bg, #1f1f1f text, radius 4px, padding 12px 14px.
  • Focus: text color switches to primary blue (#0b57d0).

7. Design Tokens

:root {
  /* Colors */
  --color-primary: #0b57d0;
  --color-white: #ffffff;
  --color-dark-grey: #444746;
  --color-medium-grey: #747775;
  --gm3-sys-color-inverse-surface: rgb(48 48 48);
  --gm3-sys-color-outline-variant: rgb(196 199 197);
  --gm3-sys-color-inverse-on-surface: rgb(242 242 242);
  --gm3-sys-color-shadow: rgb(0 0 0);
  --gm3-sys-color-surface-container-low: rgb(248 250 253);
  --gm3-sys-color-surface-container: rgb(240 244 249);
  --gm3-sys-color-surface-dim: rgb(211 219 229);
  --gm3-sys-color-surface-container-highest: rgb(221 227 234);
  --gm3-sys-color-error-container: rgb(249 222 220);
  --gm3-sys-color-error: rgb(179 38 30);
  --gm3-sys-color-inverse-primary: rgb(168 199 250);
  --gm3-sys-color-surface-variant: rgb(225 227 225);
  --gm3-sys-color-on-error: rgb(255 255 255);
  --gm3-sys-color-tertiary-container: rgb(196 238 208);
  --gm3-sys-color-on-secondary-container: rgb(0 74 119);
  --gm3-sys-color-on-error-container: rgb(140 29 24);
  --gm3-sys-color-tertiary: rgb(20 108 46);
  --gm3-sys-color-surface-container-high: rgb(233 238 246);
  --gm3-sys-color-outline: rgb(116 119 117);
  --gm3-sys-color-on-primary-container: rgb(8 66 160);
  --gm3-sys-color-secondary: rgb(0 99 155);
  --gm3-sys-color-secondary-container: rgb(194 231 255);
  --gm3-sys-color-primary-container: rgb(211 227 253);
  --gm3-sys-color-primary: rgb(11 87 208);
  --gm3-sys-color-on-surface-variant: rgb(68 71 70);
  --gm3-sys-color-on-background: rgb(31 31 31);
  --gm3-sys-color-on-tertiary-container: rgb(15 82 35);

  /* Typography */
  --font-google-sans: 'Google Sans', roboto, 'Noto Sans Myanmar UI', 'Noto Sans Khmer', arial;
  --font-roboto: 'Roboto', Arial;

  /* Spacing */
  --space-1: 1px;
  --space-2: 2px;
  --space-3: 3px;
  --space-6: 6px;
  --space-8: 8px;
  --space-9: 9px;
  --space-11: 11px;
  --space-12: 12px;
  --space-13: 13px;
  --space-16: 16px;
  --space-24: 24px;
  --space-32: 32px;
  --space-36: 36px;
  --space-48: 48px;
  --space-108: 108px;

  /* Border Radius */
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 16px;
  --radius-xl: 20px;
  --radius-xxl: 22px;
  --radius-xxxl: 28px;

  /* Shadows */
  --shadow-m3: rgba(0,0,0,0.2) 0px 3px 5px -1px, rgba(0,0,0,0.14) 0px 6px 10px 0px, rgba(0,0,0,0.12) 0px 1px 18px 0px;
}

8. AI Coding Assistant Prompt

# Appspot Design System Specification

You are an Appspot design expert. Build UIs matching their visual language exactly.

## Brand Context
Appspot’s design is part of Google’s Material 3 language, optimized for secure, predictable enterprise login flows. It’s functional, minimal, and consistent — high-trust blue actions, white surfaces, subtle grey text, restrained radii.

## Color Palette
- Primary Blue: #0b57d0 — Primary CTAs, links, focus outlines
- White: #ffffff — Page backgrounds, text on primary buttons
- Dark Grey: #444746 — Secondary text, icons
- Medium Grey: #747775 — Borders, outlines
- Error Red: #b3261e — Error text/icons
- Error Container: #f9dedc — Error backgrounds
- Tertiary Green: #146c2e — Positive actions
- Secondary Blue: #00639b — Secondary CTAs
- Surface Container: #f0f4f9 — Card backgrounds
- Shadow: #000000 — Elevation shadows

## Typography
- Headings: Google Sans, roboto, Noto Sans Myanmar UI, Noto Sans Khmer, arial
- Body: Roboto, Arial
| Level | Size | Weight | Line Height | Use For |
|-------|------|--------|-------------|---------|
| H1 | 44px | 400 | 1.18 | Page titles |
| Body | 16px | 400 | 1.50 | Paragraphs |
| Button | 14px | 500 | — | CTAs |
| Caption | 12px | 400 | 1.33 | Secondary info |

## Spacing & Grid
Base: 8px. Scale: 1px, 2px, 3px, 6px, 8px, 9px, 11px, 12px, 13px, 16px, 24px, 32px, 36px, 48px, 108px.

## Border Radius
- sm: 4px — inputs, small buttons
- md: 8px — cards, some links
- lg: 16px — containers
- xl: 20px — pill buttons
- xxl: 22px — large containers
- xxxl: 28px — largest containers

## Shadows & Depth
- Material 3 shadow: rgba(0,0,0,0.2) 0px 3px 5px -1px, rgba(0,0,0,0.14) 0px 6px 10px 0px, rgba(0,0,0,0.12) 0px 1px 18px 0px

## Components

### Primary Button
Default:
```css
background: #0b57d0;
color: #ffffff;
padding: 0px 24px;
border-radius: 20px;
border: none;
font-weight: 500;
font-size: 14px;
```
Hover: opacity: 0.08; shadow applied.
Active: opacity: 0.1; heavier shadow.
Focus: outline: 2px solid #0b57d0; box-shadow: 0 0 0 2px #d3e3fd.

### Navigation Links
Blue variant: #0b57d0, weight 500, no underline on default.
Dark variant: #1f1f1f, weight 400, underline on hover.

### Input Fields
Email:
Default: transparent background, #1f1f1f text, 4px radius, padding 12px 14px.
Focus: text color #0b57d0.

## Layout & Responsive Rules
Breakpoints: 400px, 450px, 480px, 568px, 592px, 600px, 672px, 720px, 800px, 840px, 960px, 1240px, 1600px.

## Interaction Rules
Transition timing: 150ms ease for state changes.
Focus indicators: 2px outline in primary blue or container colors.

## DO List
- Use ONLY colors from palette
- Maintain 8px grid
- Use Google Sans for headings, Roboto for body
- Keep border radii consistent with component rules
- Apply shadows only where elevation is needed

## DON'T List
- Don’t use non-palette colors
- Don’t mix sharp and rounded corners
- Don’t invent hover states — follow opacity/shadow rules
- Don’t overload tertiary green — keep for positive actions

## Code Examples

### Primary Button
```css
.btn-primary {
  background: #0b57d0;
  color: #ffffff;
  padding: 0px 24px;
  border-radius: 20px;
  font-weight: 500;
  font-size: 14px;
  border: none;
  transition: opacity 150ms ease;
}
.btn-primary:hover {
  opacity: 0.08;
  box-shadow: 0 1px 2px rgba(60,64,67,0.3), 0 1px 3px 1px rgba(60,64,67,0.15);
}
.btn-primary:focus {
  outline: 2px solid #0b57d0;
}
```

### Input Field
```css
.input-email {
  background: transparent;
  color: #1f1f1f;
  border-radius: 4px;
  padding: 12px 14px;
  border: none;
}
.input-email:focus {
  color: #0b57d0;
}
```

9. Summary

TL;DR: Appspot’s design is pure Material 3 — predictable, minimal, and functional. Blue actions, white surfaces, and restrained typography make it ideal for enterprise login contexts.

Brand Keywords:

  • enterprise-minimal
  • trust-blue
  • functional-material
  • developer-focused
  • no-frills