The Creative North Star for this design system is "The Kinetic Curator."
We are moving away from the rigid, boxy constraints of traditional SaaS dashboards toward a digital experience that feels like a high-end editorial gallery. The goal is to balance the efficiency of a professional tool with the aesthetic soul of a premium publication.
By utilizing intentional asymmetry, overlapping layers, and a rigorous adherence to tonal depth over structural lines, we create a workspace that feels breathing and alive. We don't just "display" data; we curate it. This system prioritizes whitespace as a functional element, using it to guide the eye through complex workflows with sophisticated ease.
The palette is a transition from high-vibrancy digital tones to a "muted-luxury" spectrum, now adapted for a dark mode experience. We utilize slate blues, soft plums, and terracotta reds to signify action without causing cognitive fatigue, appearing richer and more saturated against the dark background.
Explicit Instruction: Designers are prohibited from using 1px solid borders for sectioning or containment. Boundaries must be defined solely through:
- Background Shifts: Placing a
surface-container-lowcomponent against asurfacebackground. - Tonal Transitions: Using the
outline-variantat 10-15% opacity only when absolutely necessary for accessibility.
Treat the UI as a physical stack of fine paper. Use the following tiers to define depth:
- Base Layer:
surface(#1B1C1E) – The canvas, providing a rich, dark foundation. - Secondary Areas:
surface-container-low(#252629) – Used for sidebars or secondary utilities. - Interactive Components:
surface-container-lowest(#303134) – Used for cards or high-priority inputs to make them "pop" against the darker base. - Elevated Modals:
surface-bright(#1B1C1E) – Combined with glassmorphism.
To break the "flat" SaaS aesthetic, floating elements (menus, tooltips, navigation bars) should utilize Glassmorphism:
- Background: Semi-transparent
surfaceorprimary-container. - Effect:
backdrop-filter: blur(20px). - Signature Polish: Use a subtle linear gradient on primary CTAs transitioning from
primary(#4A628A) toprimary-dim(#3B537A) to give buttons a tactile, "pressed-ink" quality.
We use Manrope exclusively. Its geometric yet humanist qualities allow it to scale from aggressive editorial headlines to micro-labeling without losing character.
- Display (LG/MD/SM): Set with tight letter-spacing (-0.02em). Use these for high-impact data points or "Kinetic Gallery" hero moments.
- Headlines: The "Anchor." High contrast is mandatory. Use
on-surface(#E3E2E6) for all headlines to ensure a bold, authoritative hierarchy against the dark background. - Body (LG/MD/SM): Optimized for readability. Use
on-surface-variant(#C4C6CA) for long-form text to reduce visual weight while maintaining WCAG AA contrast. - Labels: Always uppercase with +0.05em letter-spacing. Labels should feel like architectural annotations on a blueprint.
Depth in this system is achieved through Tonal Layering, not shadows.
- The Layering Principle: Place a
surface-container-lowest(#303134) card on top of asurface-container(#2C2D30) section. This creates a natural, soft lift that feels integrated into the environment. - Ambient Shadows: For floating elements only.
- Blur: 40px – 60px.
- Opacity: 4% – 8%.
- Color: Use a tinted shadow based on
on-surface(e.g., a deep slate tint) rather than pure black. - The "Ghost Border" Fallback: If a container lacks sufficient contrast against its parent, use the
outline-varianttoken at 15% opacity. This provides a "suggestion" of a boundary without the harshness of a traditional border.
- Primary: Gradient fill (
primarytoprimary-dim). White text (on-primary). Roundedness: Maximum, pill-shaped (reflectingroundedness: 3). - Secondary: Surface-based.
surface-container-highbackground withon-primary-containertext. No border. - Tertiary: Text-only. Uses
primarycolor with a subtlesurface-containerhover state.
-
The Divider Ban: Do not use
tags or border-bottoms to separate list items. Use Vertical White Space (spacing4or5) or alternating tonal shifts betweensurface-container-lowandsurface-container-lowest. -
Interactive State: On hover, a card should transition from
surface-container-lowesttosurface-brightwith a 4% ambient shadow.
- Styling: Use
surface-container-lowas the field background. - Focus State: Transition the background to
surface-container-lowestand add a 1px "Ghost Border" using theprimarytoken at 40% opacity. - Error State: Use
error(#9f403d) for the label and anerror-container(#601410) tint for the field background to signify a "warning glow."
- Selection Chips: Use
secondary-container(#90708f) withon-secondary-container(#FFDBF3) text. The soft plum tone provides a professional, sophisticated distinction from the primary blue actions.
- Do embrace asymmetry. In a gallery layout, allow some columns to be wider than others or offset images/data-viz.
- Do use the Spacing Scale rigorously. Use large gaps (
spacing-12orspacing-16) to separate major conceptual groups. - Do use
tertiary(#A65D52) for "Human" or "Organic" touchpoints—notifications, user feedback, or celebratory states.
- Don't use 100% opaque borders. They clutter the "Kinetic" flow and make the UI feel like a legacy spreadsheet.
- Don't use pure black (#000000) for text. Use
on-background(#E3E2E6) to maintain the "premium ink" feel. - Don't overcrowd the viewport. If a screen feels busy, increase the background-to-component ratio using the
surfacecolor.
| Role | Token | Hex |
|---|---|---|
| Primary Action | primary |
#4A628A |
| Secondary (Plum) | secondary |
#765B75 |
| Accent (Terracotta) | tertiary |
#A65D52 |
| Main Canvas | surface |
#1B1C1E |
| High-Priority Card | surface-container-lowest |
#303134 |
| Text (Primary) | on-surface |
#E3E2E6 |
| Text (Secondary) | on-surface-variant |
#C4C6CA |
| Border Fallback | outline-variant |
#7E909B (at 15% opacity) |