DESIGN.md@lumina-frontend · git:20260708.15b592f · 2026-07-08 · sha256 02d86f33e4e2a0c4

DESIGN.md@lumina-frontend git:20260708.15b592fA

Immutable. This exact content is served forever at /api/v1/blob/02d86f33e4e2a0c4.

# Lumina Design State — "Luminous" Theme

> This file is the persistent source of truth for Lumina's UI design.
> The frontend design skill reads this before every UI task.
> Update this file when design tokens, patterns, or principles change.

## Brand Identity

- **Name**: Luminous
- **Primary**: Indigo-Violet `#7c3aed` — confident, creative, premium
- **Accent**: Amber `#f59e0b` — warmth, energy, attention
- **Philosophy**: Dark-first, deep space backgrounds with glowing accents. Like a nebula — dark voids with luminous points of light.

## Color System

### Brand Colors
| Token | Value | Usage |
|-------|-------|-------|
| `--lumina-primary` | `#7c3aed` | Buttons, links, active states, focus |
| `--lumina-primary-light` | `#a78bfa` | Hover states, secondary accents |
| `--lumina-primary-dark` | `#5b21b6` | Pressed states |
| `--lumina-accent` | `#f59e0b` | Highlights, badges, warm accents |
| `--lumina-accent-light` | `#fbbf24` | Accent hover |

### Semantic Colors
| Token | Value | Usage |
|-------|-------|-------|
| `--lumina-success` | `#10b981` | Success messages, completed status |
| `--lumina-warning` | `#f59e0b` | Warnings, pending status |
| `--lumina-danger` | `#ef4444` | Errors, delete actions, failed status |
| `--lumina-info` | `#3b82f6` | Info messages, informational tags |

### Surface Palette (Dark-first)
| Token | Value | Usage |
|-------|-------|-------|
| `--lumina-bg-base` | `#0f172a` | Page background, deepest layer |
| `--lumina-bg-elevated` | `#1e293b` | Cards, panels, elevated surfaces |
| `--lumina-bg-card` | `#1e293b` | Card backgrounds |
| `--lumina-bg-input` | `#0f172a` | Input fields (recessed) |
| `--lumina-bg-hover` | `rgba(255,255,255,0.04)` | Hover overlay |

### Text Hierarchy
| Token | Value | Usage |
|-------|-------|-------|
| `--lumina-text-primary` | `#f1f5f9` | Headlines, primary content |
| `--lumina-text-regular` | `#cbd5e1` | Body text, default |
| `--lumina-text-secondary` | `#94a3b8` | Labels, descriptions |
| `--lumina-text-muted` | `#64748b` | Placeholders, disabled |

## Typography

| Role | Font | Weight |
|------|------|--------|
| Display (titles) | Outfit | 600-700 |
| Body | IBM Plex Sans | 400-500 |
| Code/Mono | JetBrains Mono | 400 |

Font sizes: 12px (xs) → 14px (base) → 18px (lg) → 24px (2xl) → 36px (4xl)

## Spacing Scale

4px (xs) → 8px (sm) → 16px (md) → 24px (lg) → 32px (xl) → 48px (2xl) → 64px (3xl)

All spacing MUST use these steps or 8px grid multiples.

## Motion

| Token | Duration | Usage |
|-------|----------|-------|
| `--lumina-transition-fast` | 150ms | Hover, toggle, small state changes |
| `--lumina-transition-base` | 250ms | Card transitions, dialog open |
| `--lumina-transition-slow` | 400ms | Page transitions, large element animations |

Easing: `cubic-bezier(0.4, 0, 0.2, 1)` for all transitions.

## Shadow System

| Token | Value | Usage |
|-------|-------|-------|
| `--lumina-shadow-sm` | 0 1px 2px rgba(0,0,0,0.3) | Subtle elevation |
| `--lumina-shadow-md` | 0 4px 12px rgba(0,0,0,0.4) | Cards, dropdowns |
| `--lumina-shadow-lg` | 0 8px 24px rgba(0,0,0,0.5) | Modals, overlays |
| `--lumina-shadow-glow` | 0 0 20px primary-glow | Active/featured elements |

## Component Patterns

### Stat Cards (Dashboard)
- Gradient icon circle (48px, brand color light-8 background)
- Staggered entrance animation (0.08s delay per card)
- Clickable cards navigate to detail page
- Glass morphism on hover (slight lift + shadow)

### Sidebar
- Dark gradient background (`#0f172a` → `#1e1b4b`)
- 3px gradient active indicator bar (primary → accent)
- Collapse to 64px with icon-only display
- Menu items from DB permission table (dynamic)

### Header
- Glass backdrop blur (backdrop-filter: blur(12px))
- Gradient bottom border (1px, primary → transparent)
- Avatar with glow ring on hover
- Language switch as segmented button

### Login Page
- Radial gradient orbs (purple top-left, amber bottom-right)
- Animated drift (18s ease-in-out infinite)
- Glass morphism card (backdrop-blur + translucent bg)
- Hexagonal SVG logo with gradient stroke

### Tables
- Dark header row (`--lumina-bg-elevated`)
- Alternating row tint via `--lumina-bg-hover` on even rows
- Action column right-aligned, fixed
- Status tags use semantic colors with `size="small"`

### Forms
- Labels above inputs (not inline)
- Input background = `--lumina-bg-input` (recessed)
- Focus border = `--lumina-border-focus` (primary color)
- Submit button full-width in dialogs

## Page-Specific Overrides

### Dashboard
- 4-column stat card row (responsive: 2 cols on tablet, 1 on mobile)
- Quick actions as vertical button stack in right panel
- Recent tasks table with compact rows

### Agent Chat
- Full-height layout (sidebar + chat area)
- Streaming text with cursor animation
- Debug panel collapsible on right
- RAG sources as collapsible accordion

### Workflow Designer
- Vue Flow canvas with dark background
- Custom node components with brand-colored ports
- YAML sync panel as side drawer

## Element Plus Overrides

The following EP components have custom styling in `index.scss`:
- `el-card` — dark bg, custom radius, hover lift
- `el-table` — dark header, striped rows, custom borders
- `el-button` — gradient primary, ghost secondary
- `el-input` / `el-select` — recessed dark bg, focus glow
- `el-dialog` — glass morphism header, dark body
- `el-menu` — sidebar gradient, active indicator
- `el-tag` — semantic color mapping, small size default
- `el-pagination` — dark theme adapted

## What NOT to Do

- ❌ Hardcode hex colors in `.vue` files — always use `var(--lumina-*)`
- ❌ Use `transition: all` — specify exact properties
- ❌ Mix font families — stick to Outfit/IBM Plex/JetBrains Mono
- ❌ Create card styles per page — use consistent `--lumina-bg-card` + `--lumina-radius-md`
- ❌ Use `z-index: 9999` — use `--lumina-z-*` scale
- ❌ Forget empty/loading/error states
- ❌ Test only in light mode — dark is the primary theme