* chore: update Google Fonts to Bricolage Grotesque, IBM Plex Sans, JetBrains Mono Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: update Tailwind config to Slate & Ice theme colors and fonts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: update CSS variables and glass-card utilities for Slate & Ice theme - Replace all color variables with Slate & Ice palette - Add glass system vars (--glass-bg, --glass-blur, --shadow-float) - Replace legacy glass-card with new variable-driven glass classes - Add breatheGlow, bellWobble, slideDown, fadeInRight keyframes - Update font references to IBM Plex Sans and Bricolage Grotesque Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: recolor BrandLogo to cyan gradient, split BrandWordmark for gradient Flow text Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: update TopBar with glassmorphism backdrop and cyan accent styling Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: update Sidebar with glassmorphism backdrop Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add ambient atmosphere gradient orbs behind app shell Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: update QuickStats and SessionsPanel with glass-card styling Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add WeeklyCalendar, QuickActions, OpenSessions, RecentActivity dashboard components Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: redesign dashboard layout with calendar, open sessions, and glass-card panels New layout: greeting → calendar+actions → sessions+stats → activity Replaces old QuickStats and SessionsPanel with new dashboard components Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: replace remaining purple hex references with ice-cyan accent Sweep of hardcoded purple hex values (#818cf8, #6366f1) replaced with new cyan accent (#06b6d4) in QuickActions, RecentActivity, QuickLaunch, and SVG brand assets. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update CLAUDE.md branding and design system for Slate & Ice Modern Updated Last Updated date, branding section (fonts, colors, glass utilities, atmosphere orbs), component styling rules, and Design System section to reflect the new ice-cyan glassmorphism theme. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add Slate & Ice Modern design doc and implementation plan Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: redesign login page with Slate & Ice Modern design system Apply glassmorphism styling, atmosphere orbs, branded wordmark, and consistent design tokens to match the updated app shell aesthetic. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: raise TopBar z-index so profile dropdown renders above main content Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add AI assistant with in-session copilot and standalone chat with RAG Implements three-phase AI assistant feature: - Phase 0: RAG infrastructure with pgvector embeddings, Voyage AI integration, tree chunking service, and semantic search over team's flow library - Phase 1: In-session copilot panel during flow navigation with contextual AI help, current step awareness, and suggested related flows - Phase 2: Standalone AI chat page with persistent conversation history, pin/delete, and configurable retention policies (account-level) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add account management, email verification, AI fixes, and user guides - Profile settings, account transfer, delete/leave account flows - Email verification with JWT tokens and Resend integration - AI assistant/copilot fixes: markdown rendering, shared RAG helpers, token tracking, input refocus, model_validate usage - User guides hub + detail pages with 13 topic guides - Sidebar and top bar navigation for guides Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: prevent stale chunk errors after deployments - Set Cache-Control no-cache on index.html in nginx so browsers always fetch fresh chunk references after a deploy - Auto-reload on chunk load failures (stale deploy detection) with loop prevention via sessionStorage - Show friendly "App Updated" message if auto-reload doesn't resolve it Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add email verification toggle to admin settings Adds platform-level toggle to enable/disable email verification. When disabled, the verification banner is hidden and the send endpoint returns 403. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
12 KiB
ResolutionFlow Aesthetic Redesign — Design Document
Date: March 3, 2026 Status: Approved Reference Mockup:
/tmp/mockup-j-slate-ice-modern.html
Problem Statement
The current purple gradient theme (#818cf8 → #a78bfa) feels generic and AI-generated. It doesn't convey the professional credibility MSP engineers expect from their daily tooling. The redesign aims for a sharp, modern aesthetic that stands out while remaining easy on the eyes during long troubleshooting sessions.
Design Direction: Slate & Ice Modern
Dark glassmorphism with an ice-cyan accent. Cool charcoal backgrounds, frosted-glass cards with backdrop blur, orchestrated page-load animations, and bold display typography.
Color Palette
Core Colors
| Token | Hex | Usage |
|---|---|---|
--background |
#101114 |
Page background, body |
--surface |
#14161a |
Sidebar/topbar base behind blur |
--card / glass-bg |
rgba(24, 26, 31, 0.55) |
Card backgrounds (semi-transparent) |
--card-hover |
rgba(24, 26, 31, 0.7) |
Card hover state |
--foreground |
#f8fafc |
Primary text |
--muted-foreground |
#8891a0 |
Secondary text, nav labels |
--muted-dim |
#5a6170 |
Section labels, timestamps |
--border |
rgba(255, 255, 255, 0.06) |
Default borders |
--border-hover |
rgba(255, 255, 255, 0.12) |
Hover/active borders |
Accent Colors
| Token | Hex | Usage |
|---|---|---|
--primary |
#06b6d4 |
Accent gradient start, active indicators |
--primary-light |
#22d3ee |
Accent gradient end, highlights |
--gradient-brand |
linear-gradient(135deg, #06b6d4, #22d3ee) |
Primary buttons, avatar, active accent bar, logo "Flow" text |
Functional Colors (unchanged semantics)
| Token | Hex | Usage |
|---|---|---|
--success |
#34d399 / emerald-400 |
Completed, positive |
--warning |
#fbbf24 / amber-400 |
In-progress, caution |
--error |
#f43f5e / rose-500 |
Error, critical, notification dots |
--info |
#60a5fa / blue-400 |
Informational |
Accessibility Notes
- Cyan accent is safe for deuteranopia, protanopia, and tritanopia
- Always pair status colors with icons (not color alone)
- Use shape differentiation (filled vs outline icons) alongside color for colorblind users
#f8fafcon#101114background exceeds WCAG AAA contrast ratio
Typography
Font Stack
| Role | Font | Weights | Google Fonts |
|---|---|---|---|
font-heading |
Bricolage Grotesque | 400, 600, 700, 800 | Yes |
font-body (default) |
IBM Plex Sans | 400, 500, 600 | Yes |
font-label |
JetBrains Mono | 400, 500 | Yes |
Hierarchy
| Element | Font | Size | Weight | Color |
|---|---|---|---|---|
| Page greeting / hero | Bricolage Grotesque | 36px | 800 | --foreground |
| Stat values | Bricolage Grotesque | 30px | 800 | cyan gradient text |
| Card titles | Bricolage Grotesque | 16px | 700 | --foreground |
| Body text | IBM Plex Sans | 14px | 400-500 | --foreground |
| Nav items | IBM Plex Sans | 14px | 500 | --muted-foreground → --foreground on hover/active |
| Section labels | JetBrains Mono | 10px | 500 | --muted-dim, uppercase, letter-spacing: 0.1em |
| Timestamps / metadata | JetBrains Mono | 11-12px | 400 | --muted-foreground |
| Stat labels | IBM Plex Sans | 13px | 500 | --muted-foreground |
Glassmorphism System
Card Variants
Interactive glass card (.glass-card):
background: rgba(24, 26, 31, 0.55);
backdrop-filter: blur(16px);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
/* Hover */
transform: scale(1.02);
border-color: rgba(255, 255, 255, 0.12);
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.08);
Static glass card (.glass-card-static): Same as above without hover transform.
Shell Blur Levels
| Element | Blur | Background |
|---|---|---|
| Sidebar | blur(12px) |
rgba(16, 17, 20, 0.5) |
| Topbar | blur(20px) |
rgba(16, 17, 20, 0.6) |
| Cards | blur(16px) |
rgba(24, 26, 31, 0.55) |
Ambient Atmosphere
Two fixed pointer-events: none gradient orbs behind the app shell:
- Cyan orb: top-right, 600x600px,
rgba(6, 182, 212, 0.15), blur(60px) - Purple orb: bottom-left, 500x500px,
rgba(99, 102, 241, 0.08), blur(50px)
Component Specifications
Primary Button
background: linear-gradient(135deg, #06b6d4, #22d3ee);
color: #101114;
font-weight: 600;
border-radius: 10px;
padding: 10px 20px;
/* Hover: opacity 0.9; Active: scale(0.97) */
Secondary Button
background: rgba(255, 255, 255, 0.04);
border: 1px solid rgba(255, 255, 255, 0.06);
color: #f8fafc;
border-radius: 10px;
/* Hover: border brightens to rgba(255, 255, 255, 0.12) */
Search Bar
width: 320px, expands to400pxon focus- Background:
rgba(255, 255, 255, 0.04), focus:rgba(255, 255, 255, 0.06) - Focus border:
rgba(6, 182, 212, 0.3)— cyan tint - Rounded:
border-radius: 12px
Active Nav Item
- Background:
rgba(6, 182, 212, 0.1)with scaleX reveal animation - Left accent bar: 3px wide, cyan gradient,
border-radius: 0 3px 3px 0 - Text:
--foreground(white)
Avatar
- 34x34px,
border-radius: 10px(rounded square) - Cyan gradient background, dark text
- Hover:
scale(1.08)
Notification Dot
- 8px circle,
#f43f5e(rose), 2px solid#101114border
Scrollbar
- 6px wide, transparent track
- Thumb:
rgba(255,255,255,0.08), hover:rgba(255,255,255,0.12)
Animations
Page Load Sequence (orchestrated)
| Element | Animation | Delay | Duration |
|---|---|---|---|
| Topbar | slideDown (Y: -100% → 0) | 200ms | 400ms |
| Sidebar | slideInLeft (X: -100% → 0) | 250ms | 400ms |
| Greeting | fadeInUp (Y: 20px → 0) | 400ms | 400ms |
| Stat cards | fadeInUp cascade | 500ms, 570ms, 640ms, 710ms | 350ms each |
| Activity items | fadeInUp stagger | 750ms + 40ms each | 300ms each |
| Quick actions | fadeInRight (X: 30px → 0) | 800ms | 400ms |
Micro-interactions
| Element | Effect |
|---|---|
| Glass cards | scale(1.02) + border/shadow upgrade on hover |
| Buttons | scale(0.97) on :active |
| Notification bell | wobble keyframe (rotate ±8° → 0) on hover |
| First stat card | breatheGlow — pulsing cyan shadow, 3s infinite |
| Nav items | Background scaleX reveal from left on hover |
| Search bar | Width expansion 320→400px on focus |
| Avatar | scale(1.08) on hover |
Easing
- Primary:
cubic-bezier(0.4, 0, 0.2, 1)— smooth deceleration - Bounce (optional):
cubic-bezier(0.34, 1.56, 0.64, 1)— slight overshoot
Dashboard Layout
Grid Structure
Row 1: Greeting + date (full width)
Row 2: Weekly Calendar (flex-grow) + Quick Actions (fixed width) — equal height
Row 3: My Open Sessions (flex-grow) + Stats 2x2 grid (fixed width) — equal height
Row 4: Recent Activity (full width)
Weekly Calendar Panel
- 5 tall day columns (Mon–Fri), equal width
- Today column: highlighted with cyan gradient top bar
- Events appear inline within day columns with colored left border (4px)
- Cyan left-border: default events
- Amber left-border: maintenance events
- Empty days show "No events" in muted text
- Calendar and quick actions stretch to match height (
align-items: stretch) - Future: Outlook/Gmail/PSA calendar sync integration
Quick Actions Panel
4 glass cards in a vertical stack:
- New Flow (+ icon, cyan accent)
- Resume Session (play icon, emerald accent)
- Browse Library (book icon, amber accent)
- Invite Team (user-plus icon, purple accent)
My Open Sessions Panel
- Shows 3 oldest open sessions
- Each row: colored dot + flow name + "Step X of Y" + time ago + Resume button
- Resume button: small cyan gradient pill
Stats Panel (2x2 Grid)
4 stat cards:
- Active Flows — with
breatheGlowanimation - This Week (sessions)
- Avg Resolution (time)
- Team Members
Each: stat value (30px Bricolage Grotesque, cyan gradient text) + label + trend indicator
Recent Activity Panel
- Full width, 5 activity items
- Each: icon (colored background circle) + description + JetBrains Mono timestamp
- Staggered fadeInUp animation on page load
Sidebar Structure
- Logo bar (56px height, matches topbar): Decision-tree icon SVG + "Resolution" white + "Flow" cyan gradient
- Pinned Flows: 3 pinned items with cyan pin icons
- Divider
- Navigation:
- Dashboard (active)
- All Flows → Troubleshooting / Projects / Maintenance (sub-items)
- Step Library
- Sessions
- Exports
- Divider
- Footer (pushed to bottom): User avatar + name + role badge
No categories section. No workspace switcher.
Topbar Structure
- Left: Search bar with search icon + "Search flows..." placeholder + keyboard shortcut badge
- Right: Help icon + Notification bell (with dot) + User avatar (rounded square, cyan gradient)
- Subtle cyan gradient underline glow at center-bottom
Logo
The existing decision-tree SVG icon is retained but recolored with the cyan gradient (#06b6d4 → #22d3ee). Nodes have decreasing opacity down the tree (0.9 → 0.7 → 0.5). Connector lines use the gradient stroke at 0.4–0.5 opacity.
Wordmark: "Resolution" in #f8fafc + "Flow" with background: linear-gradient(135deg, #06b6d4, #22d3ee) + -webkit-background-clip: text.
Shadow System
| Token | Value | Usage |
|---|---|---|
--shadow-float |
0 8px 32px rgba(0,0,0,0.3) |
Default card shadow |
--shadow-float-hover |
0 12px 40px rgba(0,0,0,0.4), 0 0 0 1px rgba(255,255,255,0.08) |
Hovered card |
--shadow-cyan-glow |
0 8px 32px rgba(6,182,212,0.08) |
Cyan-tinted glow |
Migration Notes
What Changes
| Current | New |
|---|---|
Purple gradient (#818cf8 → #a78bfa) |
Ice cyan gradient (#06b6d4 → #22d3ee) |
| Plus Jakarta Sans (headings) | Bricolage Grotesque (headings) |
| Inter (body) | IBM Plex Sans (body) |
| Outfit (labels) | JetBrains Mono (labels) |
Flat bg-card cards |
Glassmorphism with backdrop-filter: blur() |
| No page-load animations | Orchestrated entrance sequence |
| No hover scaling on cards | scale(1.02) hover lift |
bg-gradient-brand = purple |
bg-gradient-brand = cyan |
text-gradient-brand = purple |
text-gradient-brand = cyan |
What Stays the Same
- CSS Grid app shell layout (sidebar + topbar + main)
- Dark-first theme (dark only, no light mode)
- Lucide React icons
- Zustand state management
- Component architecture and routing
- Functional color semantics (green=success, amber=warning, red=error)
- "Flows" terminology, "ResolutionFlow" branding
- BrandLogo.tsx component structure (just recolor the SVG + gradient)
New Dashboard Panels (Feature Work)
- Weekly Calendar: New component, requires date logic, event display, future calendar sync API
- My Open Sessions: Queries 3 oldest open sessions (existing API with sort + limit)
- Stat cards and Recent Activity already exist — layout rearrangement only
Implementation Scope
Phase 1: Design System Foundation
- Update CSS variables in
index.css - Update
tailwind.config.js(colors, fonts, gradients) - Add Google Fonts imports (Bricolage Grotesque, IBM Plex Sans, JetBrains Mono)
- Create glassmorphism utility classes
- Create animation keyframes and stagger classes
- Update
BrandLogo.tsxSVG colors
Phase 2: Shell & Navigation
- Update sidebar glassmorphism + nav item styles
- Update topbar glassmorphism + search bar
- Update active nav indicator (purple → cyan accent bar)
Phase 3: Component Updates
- Update button variants (primary gradient, secondary)
- Update card components to glass-card pattern
- Update stat cards, activity items, badges
- Update form inputs (focus states)
Phase 4: Dashboard Redesign
- Rearrange dashboard layout (greeting → calendar+actions → sessions+stats → activity)
- Build Weekly Calendar component
- Build My Open Sessions panel
- Add orchestrated page-load animations
Phase 5: Page-by-Page Sweep
- Update all remaining pages to use new design tokens
- Ensure consistency across tree editor, session pages, admin pages, etc.