# Visual Design Language for Flutter Mobile App

This document defines the **visual design language** for the mobile app.  
It is intended to guide AI agents, designers, and developers toward a **consistent, premium, mobile-native product experience**.

This file focuses on **visual style, surface hierarchy, interaction feel, motion tone, and design intent**.  
Implementation constraints such as token usage, component reuse, testing, and protocol requirements remain defined elsewhere.

---

## 0) Scope and Role (MUST)

- This file applies to all mobile UI work under `apps/**`.
- This file defines the **design intent** and **visual system**.
- This file does **not** replace implementation constraints; it complements them.
- If implementation and visual intent conflict, prefer the stricter rule while preserving as much visual intent as possible.
- The agent **MUST** treat this file as the source of truth for:
  - visual tone
  - aesthetic direction
  - surface hierarchy
  - perceived product quality
  - motion feel
  - assistant-product identity

---

## 1) Product Design Goal (MUST)

The app is a **personal assistant mobile app**.  
Its UI must feel like a **premium consumer product**, not a wireframe, dashboard, admin console, or document page.

The overall product impression must be:

- calm
- intelligent
- trustworthy
- soft
- polished
- mobile-native
- slightly futuristic
- assistant-oriented

The UI must communicate:

- clarity without coldness
- capability without heaviness
- elegance without visual noise
- structure without rigidity

The visual result must feel closer to a refined consumer app than to a productivity back office tool.

---

## 2) Core Style Direction (MUST)

The app’s visual design language is based on the following style blend:

- **soft blue brand atmosphere**
- **layered card-based interface**
- **subtle depth and hierarchy**
- **selective soft neumorphic influence**
- **light glassmorphism accents where appropriate**
- **modern iOS-inspired spacing and composition**
- **premium startup-product polish**

The UI should feel:

- soft, not blunt
- layered, not flat
- tactile, not decorative
- modern, not trendy for its own sake
- structured, not mechanical

The visual system must avoid extremes:
- not overly flat
- not heavily skeuomorphic
- not toy-like
- not enterprise-heavy
- not overly ornamental

---

## 3) Brand Mood (MUST)

The brand mood is:

- soft blue
- airy
- supportive
- composed
- focused
- warm-tech
- light but capable

The assistant should feel like:

- a calm expert
- a thoughtful companion
- a reliable digital helper

The assistant should **not** feel like:

- a chatbot demo
- a mechanical enterprise workflow engine
- a gaming interface
- a childish mascot product
- a harsh cyberpunk system

Avoid visual moods that are:
- overly playful
- overly sharp
- overly dark and oppressive
- sterile and lifeless
- loud or attention-seeking

---

## 4) Visual Hierarchy Principles (MUST)

Every screen must present a clear and intentional visual hierarchy.

The hierarchy should generally be readable as:

1. page background / spatial field
2. primary surfaces
3. grouped secondary surfaces
4. highlighted interactive elements
5. text and status accents
6. transient states and feedback

The UI must always help the user understand:

- what is primary
- what is grouped
- what is interactive
- what is informational
- what is temporary
- what is currently changing

Hierarchy must not rely on color alone.  
It should also be expressed through:

- spacing
- surface grouping
- radius
- depth
- density
- contrast
- scale
- motion

---

## 5) Surface Model (MUST)

The app must be designed as a **surface-based system**, not as a collection of raw containers.

Every major screen should define at least these conceptual surface layers:

- **Background Surface**  
  The calm spatial field behind all content.

- **Primary Content Surface**  
  The main assistant response area, key card, major module, or central interaction container.

- **Secondary Grouped Surfaces**  
  Supporting cards, grouped actions, metadata blocks, previews, summaries, or widgets.

- **Interactive Emphasis Surface**  
  Elements that deserve stronger presence, such as quick actions, active cards, selected states, or focused modules.

Surfaces must feel intentional and product-grade.  
A surface should never read as “just another box”.

Surfaces should feel:
- softly separated
- visually organized
- breathable
- cohesive with surrounding layers

---

## 6) Depth and Elevation Language (MUST)

The UI must use depth carefully and consistently.

Depth should be expressed through:
- layered surfaces
- subtle shadows
- gentle highlights
- tonal contrast
- grouped spacing
- controlled overlap when appropriate

Depth is used to:
- separate surfaces from background
- indicate focus
- elevate important actions
- support tactile feel
- avoid paper-flat layouts

Depth must **not** be used as random decoration.

The app must avoid:
- harsh shadow stacks
- muddy over-layering
- fake 3D gimmicks
- heavy embossed skeuomorphism
- noisy glow effects

The preferred depth quality is:
- soft
- understated
- calm
- premium
- readable

---

## 7) Shape Language (MUST)

The shape language should feel soft, modern, and coherent.

Shapes should communicate:
- friendliness
- calmness
- safety
- clarity

Preferred characteristics:
- rounded corners
- smooth modules
- softened containers
- pill-like or capsule-like actions where appropriate
- continuous visual flow across adjacent surfaces

Avoid:
- sharp aggressive geometry as default
- inconsistent corner treatments
- randomly mixing square and rounded systems
- highly ornamental silhouettes

Shape consistency is important to product polish.  
If a screen mixes too many shape styles, it will feel unrefined.

---

## 8) Composition Style (MUST)

The app must use **layered modular composition** rather than flat linear stacking wherever reasonable.

Preferred composition patterns:
- grouped cards
- floating modules
- segmented content blocks
- clearly separated information zones
- visually anchored action regions
- progressive disclosure sections

The screen should feel like a composed product surface, not a long sheet of stacked rectangles.

The design should avoid:
- full-screen blank white slabs
- ungrouped content dumps
- evenly weighted sections with no focal point
- spreadsheet-like layouts
- dashboard density unless explicitly needed

Content layout should guide the eye through the screen in a deliberate way.

---

## 9) Spacing Rhythm (MUST)

Spacing must create visual rhythm, hierarchy, and calmness.

Spacing should:
- separate conceptual groups clearly
- keep related content close enough to feel connected
- create a breathable reading experience
- support scanning within a few seconds

The app should feel:
- compact enough to be useful
- spacious enough to feel premium

Avoid both:
- cramped layouts
- excessively empty layouts

Spacing rhythm should create a sense of:
- confidence
- order
- softness
- ease of use

---

## 10) Color Usage Philosophy (MUST)

The app uses a **soft blue-centered palette**, but blue must be used strategically.

Blue is a brand signal, not a paint bucket.

Use brand color to:
- anchor important actions
- signal focus
- support assistant identity
- reinforce important states
- create premium calmness

Do not use blue by flooding all surfaces equally.

Color distribution must preserve:
- hierarchy
- readability
- tonal balance
- calmness

Preferred color impression:
- light
- trustworthy
- airy
- intelligent
- non-aggressive

Avoid:
- oversaturated color blocks
- excessive accent competition
- flat monochrome sameness
- harsh enterprise-blue overuse

---

## 11) Typography Feel (MUST)

Typography should feel:

- clean
- modern
- readable
- calm
- product-grade

Text hierarchy must be immediately understandable.

The text system should communicate:
- primary focus
- supportive explanation
- metadata
- actionability
- transient status

Avoid:
- text-heavy document appearance
- dense paragraph dumps
- weak heading contrast
- decorative typography
- oversized headline drama unless intentionally needed

Typography should support assistant use cases:
- fast scanning
- digestible summaries
- calm reading
- structured conversation
- confidence in results

---

## 12) Information Density (MUST)

The product is a personal assistant, so information density must be carefully balanced.

The UI must avoid:
- toy-like under-information
- enterprise-dashboard over-information

The ideal density is:
- compact but breathable
- rich but organized
- helpful without overwhelming

Assistant outputs should be:
- quickly scannable
- clearly grouped
- progressively explorable
- structured for decision support

When complexity increases, use:
- grouping
- folding
- summarization
- layered detail reveal

Do not dump all content at the same visual weight.

---

## 13) Interaction Feel (MUST)

Interactions must feel:
- responsive
- soft
- clear
- premium
- mobile-native

The UI should feel alive, but not noisy.

Interaction feedback should reinforce:
- user action
- state transition
- focus shift
- hierarchy change
- successful completion
- temporary waiting

The product should feel smooth and intentional under touch.

Avoid interaction feel that is:
- abrupt
- dead
- jittery
- overly animated
- flashy for its own sake

---

## 14) Motion Language (MUST)

Motion is part of the product language and must be treated as meaningful.

Motion should communicate:
- causality
- continuity
- spatial relationship
- emphasis
- system responsiveness

Preferred motion patterns:
- soft press feedback
- gentle surface transition
- smooth card expand/collapse
- subtle content entrance
- assistant response reveal continuity
- calm loading transitions
- state changes that feel connected rather than replaced

Motion must not feel:
- bouncy in a toy-like way
- abrupt and mechanical
- dramatic and distracting
- overloaded with simultaneous effects

The best motion is:
- noticeable enough to feel polished
- restrained enough to remain calm

---

## 15) Assistant-Specific UI Tone (MUST)

This is not a generic CRUD app.  
It is an assistant product.

Therefore, the UI must visually support:
- conversation
- guidance
- summaries
- suggestions
- action handoff
- confidence-building
- clarity of next steps

Assistant screens should feel:
- structured but conversational
- intelligent but approachable
- helpful rather than commanding

Key assistant outputs should feel like:
- curated result modules
- decision-support surfaces
- intelligent summaries
- actionable insight cards

They should not feel like:
- raw logs
- plain transcript dumps
- developer console output
- generic list rows only

---

## 16) Visual Anti-Patterns (MUST NOT)

The UI must not look like any of the following:

- a plain document page
- a white sheet with blue buttons
- a spreadsheet-like admin panel
- a low-fidelity wireframe
- a default Flutter demo app
- an over-glowing concept shot that is not implementable
- a generic template marketplace screen
- a visually noisy Dribbble-style mockup without product discipline

Specifically avoid:
- full-screen flat white blocks with little hierarchy
- arbitrary shadow usage
- inconsistent card treatments
- too many competing accent colors
- overly dense content without grouping
- equally weighted sections with no focus
- raw container stacking with no surface semantics
- excessive decorative gradients
- empty “pretty” layouts with weak usability

---

## 17) Preferred Inspirations (SHOULD)

The product should loosely evoke qualities found in:

- modern iOS app composition
- premium startup productivity apps
- calm AI-native product interfaces
- refined card-based mobile layouts
- soft glass / soft depth surface systems

Useful inspiration qualities include:
- compositional discipline
- strong spacing rhythm
- excellent hierarchy
- restrained polish
- tactile clarity
- premium consumer feel

Inspiration must be translated into this product’s identity, not copied literally.

---

## 18) Screen-Level Decision Rules (MUST)

When generating or refining a screen, the agent must decide in this order:

1. What is the primary focus of the screen?
2. What is the surface hierarchy?
3. What needs strongest emphasis?
4. What should be grouped together?
5. What should remain lightweight or secondary?
6. Where should motion reinforce understanding?
7. How can the result feel more like a premium assistant app and less like a document page?

When multiple valid layouts exist, prefer the one that:
- has clearer hierarchy
- feels more mobile-native
- has stronger surface semantics
- feels calmer and more polished
- better supports future micro-interactions
- better matches the assistant-product identity

For top navigation and title areas:
- prefer concise, high-signal header titles to communicate page identity
- avoid repeating equivalent helper text in the first body section when it does not add new actionable meaning
- use body copy only for new context, constraints, or decision guidance

---

## 19) AI Generation Guidance (MUST)

When an AI agent generates UI, it must think in terms of:

- visual hierarchy
- surface system
- product polish
- interaction states
- motion readiness
- assistant identity
- premium mobile composition

It must not think in terms of:

- raw widget stacking only
- “just make it functional”
- generic default mobile layouts
- admin or dashboard templates
- flat page sections without depth
- a document-first visual model

Before finalizing a UI, the agent should mentally verify:

- Does this feel like a product, not a page?
- Is there clear hierarchy?
- Do surfaces feel intentional?
- Does the screen feel calm and premium?
- Is the assistant identity visually present?
- Would this look plausible in a polished shipping app?

If the answer is no, the UI is not finished.

---

## 20) Relationship with Design Tokens (MUST)

This document defines **what the UI should feel like**.  
Implementation files define **how those values are encoded**.

Therefore:

- the visual language must be realized through the project’s design token system
- any missing visual semantics should be added to tokens or shared theme primitives
- the agent must not bypass the design system to approximate the visual intent locally

The correct workflow is:

1. understand desired visual effect
2. map it into shared tokens / shared components
3. implement consistently
4. preserve future reusability

---

## 21) Final Design Standard (MUST)

Every shipped screen should aim to satisfy all of the following:

- visually coherent
- recognizably premium
- mobile-native
- calm and intelligent
- structurally clear
- not flat
- not noisy
- clearly assistant-oriented
- implementation-realistic
- design-system-compatible

The final bar is not merely:
- “works”
- “renders”
- “uses tokens”
- “passes lint”

The final bar is:
- **feels like a polished personal assistant product**
