At first glance, Apple HIG and Google’s Material Design 3 seem like opposing philosophies. One is restrained, subtle, almost austere. The other is vibrant, layered, and emotionally expressive. But when you look closer — and especially when you try to build something with both — they share more DNA than you’d expect.
The Common Ground
Both systems prioritize accessibility, elevate content over chrome, and use layering to communicate hierarchy. Most importantly, both are built on design tokens as atomic visual units. By mapping color, shape, and motion to named values, we can craft interfaces that feel native to both worlds.
The differences are in execution, not principle:
| Aspect | Apple HIG | Material 3 Expressive |
|---|---|---|
| Color | Opacity-based text hierarchy | Tonal palette system (primary/secondary/tertiary) |
| Typography | SF Pro, precise optical sizes | Variable fonts, expressive scale (Google Sans Flex) |
| Surfaces | Translucent materials (liquid glass) | Elevation with tonal overlays |
| Motion | Spring physics, subtle | Emphasized easing, bold |
| Shape | Continuous rounded rectangles (superellipse) | Corner token system (xs/sm/md/lg/xl) |
Where They Complement Each Other
Color & Surfaces
Apple uses opacity-based text colors (rgba(0,0,0,0.88)) and translucent materials (glassmorphism) that naturally adapt to any background. Material 3 uses tonal palettes generated from a seed color — rich, harmonious, and systematically derived.
In M3E, these are merged: HIG’s liquid-glass containers handle structural layout chrome (header, sidebar, navigation pills), while Material 3’s dynamic tonal accents drive state highlights, interactive surfaces, and brand expression. The glassmorphism effect is implemented with backdrop-filter: blur(20px) saturate(1.8) — a specific choice that preserves color vibrancy while creating depth.
Motion & Typography
HIG’s spring animations feel physical and tactile — perfect for micro-interactions (toggles, color dots, pill hover states). Material 3’s emphasized easing curves (cubic-bezier(0.2, 0, 0, 1)) have strong directional guidance — ideal for page transitions and layout shifts.
The blog uses CSS custom properties for motion tokens (--motion-ease-emphasized, --motion-duration-short), allowing the easing system to be themed independently. No JavaScript runtime required for the base motion system.
Typography: The Hybrid Stack
The type system pairs HIG’s precision with M3E’s expressiveness:
- Headings: Google Sans Flex (variable font, weight 100–900) — expressive scale with tight letter-spacing
- Body: System font stack with SF Pro priority on macOS — HIG’s readability standards
- Code: Prism-powered server-side tokenization — zero client JS, syntax colors from the Material 3 tonal palette
The M3E Token Architecture
The fusion is implemented through a three-layer token system defined in the @m3e/framework workspace package:
Reference → System → Component
↓ ↓ ↓
Raw values Semantic Component-scoped
(hex, px) roles token references
Reference tokens are the raw values — --ref-blue-500: #3B5CF6;. System tokens map them to semantic roles — --sys-color-primary: var(--ref-blue-500);. Component tokens scope them further — --btn-bg: var(--sys-color-primary);.
On top of this, layout tokens (--layout-base-unit: 11 = 44px) act as a single scaling hinge: every layout dimension derives from this base unit via calc() chains. Change one value, the entire spatial system scales.
The Synthesis
The result isn’t a compromise — it’s a synthesis. HIG’s restraint anchors the composition; Material 3’s vitality breathes life into it. The liquid-glass header feels distinctly Apple; the tonal color swatches and corner-token shapes feel distinctly Material. Together, they feel like something new.
This blog is the proof-of-concept. Every page is static HTML compiled by Astro — the visual fusion compiles down to pure CSS custom properties and backdrop-filter declarations. No heavy runtime, no framework lock-in. Just tokens, layers, and careful craft.