Material 3 Expressive: UI design prompt

Palette, type rules and a pasteable prompt for material 3 expressive. Also called Material You, Material Design 3, M3 Expressive, Android 16 style, dynamic colour. 2021 (Material You), 2025 (M3 Expressive update).

Traits

  • tonal palettes derived from one seed colour: primary, secondary, tertiary at many tones
  • surface containers at five elevation tints instead of shadows
  • very large radius (28px) on cards and dialogs, full pills on buttons and chips
  • bold, oversized type with variable weight and shape-shifting components
  • filled, tonal, outlined and text button variants with strict roles
  • springy, physics-based motion with overshoot; components morph between states
  • big touch targets, expressive shapes (squircles, scallops, cookies) as accents

Palette

seed #6750a4 -> primary #6750a4, on-primary #ffffff, primary-container #eaddff, secondary-container #e8def8, tertiary #7d5260, surface #fef7ff, surface-container #f3edf7, on-surface #1d1b20, outline #79747e

Type

Roboto or Roboto Flex (variable); display 400 at 57px, headline 400 at 32px, title 500 at 22px, body 400 at 16px, label 500 at 14px; M3 Expressive allows 700-900 weights on display

Do

  • generate the tonal palette from one seed and use container colours for surfaces, not shadows
  • use the M3 type scale names (display, headline, title, body, label) and stick to them
  • use spring easing (cubic-bezier(0.2,0,0,1) for standard, overshoot for expressive) at 300-500ms

Don't

  • do not use drop shadows for hierarchy; use surface tint levels
  • do not mix small radii; M3 is 28px on containers and 999px on buttons
  • do not use the 2014 Material FAB shadow look; that is Material 1

Known for it: Android 12-16, Google Pixel apps, Google Photos, Google Wallet

CSS seed
:root {
  --bg: #fef7ff;
   --surface: #f3edf7;
   --fg: #1d1b20;
   --accent: #6750a4;
   --accent-container: #eaddff;
   --secondary-container: #e8def8;
   --radius: 28px;
   --font: 'Roboto Flex',sans-serif
}
Prompt

Build the site in Material 3 Expressive style. Seed colour #6750a4; derive primary #6750a4, primary-container #eaddff, secondary-container #e8def8, tertiary #7d5260, surface #fef7ff, surface-container #f3edf7, surface-container-high #ece6f0, on-surface #1d1b20, outline #79747e. No drop shadows; hierarchy comes from container tints. Font Roboto Flex: display 700 at 57px, headline 500 at 32px, title 500 at 22px, body 400 at 16px, label 500 at 14px. Cards: surface-container with border-radius 28px and 24px padding. Buttons: filled (primary, white text), tonal (secondary-container), outlined (1px outline) and text variants, all pill-shaped (999px) at 40px height; a large expressive FAB at 56px with 16px radius. Chips as pills with 8px gap. Add one decorative expressive shape (a 12-point cookie SVG in primary-container) behind the hero. Motion: state changes use cubic-bezier(0.2,0,0,1) at 300ms; the FAB morphs into a full-width bar on press with a 450ms spring overshoot.
For design.md, .cursorrules or AGENTS.md
## Design direction
Build the site in Material 3 Expressive style. Seed colour #6750a4; derive primary #6750a4, primary-container #eaddff, secondary-container #e8def8, tertiary #7d5260, surface #fef7ff, surface-container #f3edf7, surface-container-high #ece6f0, on-surface #1d1b20, outline #79747e. No drop shadows; hierarchy comes from container tints. Font Roboto Flex: display 700 at 57px, headline 500 at 32px, title 500 at 22px, body 400 at 16px, label 500 at 14px. Cards: surface-container with border-radius 28px and 24px padding. Buttons: filled (primary, white text), tonal (secondary-container), outlined (1px outline) and text variants, all pill-shaped (999px) at 40px height; a large expressive FAB at 56px with 16px radius. Chips as pills with 8px gap. Add one decorative expressive shape (a 12-point cookie SVG in primary-container) behind the hero. Motion: state changes use cubic-bezier(0.2,0,0,1) at 300ms; the FAB morphs into a full-width bar on press with a 450ms spring overshoot.

## Tokens
:root { --bg:#fef7ff; --surface:#f3edf7; --fg:#1d1b20; --accent:#6750a4; --accent-container:#eaddff; --secondary-container:#e8def8; --radius:28px; --font:'Roboto Flex',sans-serif }

Keep hover and focus-visible states on every interactive element. Do not add a CSS framework.