Sasha Studio Design System
Complete visual and interaction design reference for the Sasha Studio AI Knowledge Management Platform
Overview
This design system defines the visual language, components, and interaction patterns used across all Sasha Studio interfaces. It ensures consistency, scalability, and maintainability while providing a cohesive user experience.
Foundation Layer
Color System
Primary Colors
- Primary Blue:
#2563eb
- Primary Dark:
#1d4ed8
- Primary Light:
#dbeafe
- Secondary Purple:
#7c3aed
- Secondary Light:
#ede9fe
Semantic Colors
- Success:
#10b981
- Warning:
#f59e0b
- Error:
#ef4444
Neutral Palette
- Background:
#ffffff
- Surface:
#f9fafb
- Surface Hover:
#f3f4f6
- Text Primary:
#111827
- Text Secondary:
#6b7280
- Text Muted:
#9ca3af
- Border:
#e5e7eb
CSS Custom Properties
:root {
--primary: #2563eb;
--primary-dark: #1d4ed8;
--primary-light: #dbeafe;
--secondary: #7c3aed;
--secondary-light: #ede9fe;
--success: #10b981;
--warning: #f59e0b;
--error: #ef4444;
--background: #ffffff;
--surface: #f9fafb;
--surface-hover: #f3f4f6;
--text: #111827;
--text-secondary: #6b7280;
--text-muted: #9ca3af;
--border: #e5e7eb;
}
Typography System
Font Stacks
- Primary (Sans-serif):
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif - Monospace:
'SF Mono', Monaco, 'Cascadia Mono', 'Roboto Mono', Consolas, 'Courier New', monospace
Font Scale
- 0.625rem (10px) - Small badges, labels
- 0.75rem (12px) - Caption text, timestamps
- 0.875rem (14px) - Body text, descriptions
- 1rem (16px) - Base body text
- 1.125rem (18px) - Large body text
- 1.25rem (20px) - H5, large text
Font Weights
- 400 - Normal body text
- 500 - Medium emphasis
- 600 - Semi-bold headings
- 700 - Bold headings
Shadows & Elevation
:root {
--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
--shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
}
Border Radius
- Standard:
0.5rem(8px) - Large:
0.75rem(12px)
Z-Index Hierarchy
:root {
--z-base: 1; /* Base content */
--z-dropdown: 100; /* Dropdowns and tooltips */
--z-sidebar: 200; /* Sidebar (mobile) */
--z-panel: 300; /* Slide panels */
--z-overlay: 400; /* Overlay backdrop */
--z-modal: 500; /* Modal dialogs */
--z-toast: 600; /* Notifications */
}
Component Library
Unified Panel System
Base Panel Structure
.panel-container {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
pointer-events: none;
z-index: var(--z-panel);
}
.panel-backdrop {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
opacity: 0;
transition: opacity 0.3s ease;
pointer-events: none;
}
.panel-content {
position: absolute;
background: var(--surface);
box-shadow: var(--shadow-lg);
border-radius: var(--radius);
transition: var(--transition);
}
Panel Variants
- Slide-out panels: Right/left sliding drawers
- Modal panels: Center-positioned overlays
- Dropdown panels: Contextual menus and selectors
Button System
Primary Button
.btn-primary {
background: var(--primary);
color: white;
border: none;
padding: 0.75rem 1.5rem;
border-radius: var(--radius);
font-weight: 500;
transition: var(--transition);
cursor: pointer;
}
.btn-primary:hover {
background: var(--primary-dark);
transform: translateY(-1px);
}
Secondary Button
.btn-secondary {
background: var(--surface);
color: var(--text);
border: 1px solid var(--border);
padding: 0.75rem 1.5rem;
border-radius: var(--radius);
font-weight: 500;
transition: var(--transition);
cursor: pointer;
}
.btn-secondary:hover {
background: var(--surface-hover);
border-color: var(--primary);
}
Card Components
Standard Card
.card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 1.5rem;
box-shadow: var(--shadow-sm);
transition: var(--transition);
}
.card:hover {
box-shadow: var(--shadow);
transform: translateY(-1px);
}
Dashboard Card
.dashboard-card {
background: var(--background);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 2rem;
box-shadow: var(--shadow);
min-height: 200px;
}
Form Components
Input Fields
.form-input {
width: 100%;
padding: 0.75rem 1rem;
border: 1px solid var(--border);
border-radius: var(--radius);
background: var(--background);
color: var(--text);
font-size: 0.875rem;
transition: var(--transition);
}
.form-input:focus {
outline: none;
border-color: var(--primary);
box-shadow: 0 0 0 3px var(--primary-light);
}
Select Dropdowns
.form-select {
width: 100%;
padding: 0.75rem 1rem;
border: 1px solid var(--border);
border-radius: var(--radius);
background: var(--background);
color: var(--text);
cursor: pointer;
}
Navigation Components
Header
.header {
background: var(--surface);
border-bottom: 1px solid var(--border);
padding: 1rem 2rem;
position: sticky;
top: 0;
z-index: var(--z-dropdown);
}
.header-content {
max-width: 1600px;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
}
Sidebar
.sidebar {
width: 280px;
background: var(--surface);
border-right: 1px solid var(--border);
height: 100vh;
position: fixed;
left: 0;
top: 0;
padding: 1rem;
z-index: var(--z-sidebar);
}
Animation & Interactions
Transition System
:root {
--transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
--transition-slow: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
Hover States
- Buttons: Background color change + subtle upward transform
- Cards: Shadow elevation + upward transform
- Links: Color change to primary
- Interactive elements: Background color lightening
Panel Animations
/* Slide-in from right */
.panel-slide-right {
right: -400px;
transition: right 0.3s ease;
}
.panel-slide-right.active {
right: 0;
}
/* Fade-in modal */
.panel-modal {
opacity: 0;
transform: scale(0.95);
transition: opacity 0.3s ease, transform 0.3s ease;
}
.panel-modal.active {
opacity: 1;
transform: scale(1);
}
Microinteractions
- Loading states: Subtle pulse animations
- Typing indicators: Animated dots
- Button feedback: Scale transform on click
- Form validation: Color transitions for error states
Responsive Patterns
Breakpoint System
/* Mobile-first approach */
@media (min-width: 768px) { /* Tablet */ }
@media (min-width: 1024px) { /* Desktop */ }
@media (min-width: 1280px) { /* Large desktop */ }
@media (min-width: 1600px) { /* Extra large */ }
Layout Adaptations
Mobile (< 768px)
- Sidebar converts to overlay
- Cards stack vertically
- Reduced padding and margins
- Touch-friendly button sizes (min 44px)
Tablet (768px - 1024px)
- Two-column card layouts
- Collapsible sidebar
- Optimized form layouts
Desktop (> 1024px)
- Multi-column layouts
- Hover states enabled
- Full sidebar visibility
- Maximum container width: 1600px
Mobile-Specific Components
.mobile-overlay {
display: none;
}
@media (max-width: 767px) {
.mobile-overlay {
display: block;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
z-index: var(--z-overlay);
}
}
Usage Guidelines
Color Usage
- Primary blue for main actions and links
- Secondary purple for secondary actions and accents
- Semantic colors only for their intended meaning
- Neutral palette for backgrounds, text, and structure
Typography Hierarchy
- Headings: Weight 600-700, progressive size scaling
- Body text: Weight 400, 0.875rem - 1rem
- Labels: Weight 500, 0.75rem - 0.875rem
- Captions: Weight 400, 0.625rem - 0.75rem
Component Selection
- Cards for content grouping and information display
- Panels for contextual actions and detailed views
- Buttons with clear hierarchy (primary > secondary > tertiary)
- Forms with consistent styling and clear validation states
Animation Principles
- Subtle and purposeful - enhance UX without distraction
- Fast timing - 0.2s for most interactions
- Consistent easing - cubic-bezier(0.4, 0, 0.2, 1)
- Meaningful motion - indicate relationships and state changes
Implementation Notes
CSS Custom Properties Usage
All design tokens are defined as CSS custom properties for easy theming and consistency. Use var(--token-name) throughout the codebase.
Component Modularity
Each component should be self-contained with its own CSS class and minimal dependencies on parent containers.
Accessibility Considerations
- Minimum contrast ratios met for all text colors
- Focus states clearly visible with blue outline
- Interactive elements meet 44px minimum touch target
- Semantic HTML structure maintained
Performance
- Transitions use transform and opacity when possible
- Box-shadow changes avoided during animations
- Efficient selectors and minimal repaints
- CSS custom properties for runtime theme switching
This design system serves as the single source of truth for all visual design decisions in Sasha Studio, ensuring consistency, accessibility, and maintainability across all interfaces.