10 KiB
10 KiB
MonacoUSA Portal Design System - Glass Bolt Theme
Overview
The MonacoUSA Portal uses a sophisticated glassmorphic design system inspired by bolt.ai's subtle and professional aesthetic. This design language emphasizes clarity, hierarchy, and modern visual appeal while maintaining excellent readability and performance.
Core Design Principles
1. Subtle Glassmorphism
- Primary Glass Effect:
rgba(255, 255, 255, 0.6)background with 4px blur - Ultra Glass Variant:
rgba(255, 255, 255, 0.8)for higher contrast areas - Minimal Blur: 2-4px backdrop-filter for performance
- Light Borders:
rgba(0, 0, 0, 0.05)for subtle definition - Soft Shadows:
0 4px 12px rgba(0, 0, 0, 0.08)for depth
2. Color Palette
Monaco Red Spectrum
$monaco-red-50: #fef2f2;
$monaco-red-100: #fee2e2;
$monaco-red-200: #fecaca;
$monaco-red-300: #fca5a5;
$monaco-red-400: #f87171;
$monaco-red-500: #ef4444;
$monaco-red-600: #dc2626; // Primary Brand Color
$monaco-red-700: #b91c1c;
$monaco-red-800: #991b1b;
$monaco-red-900: #7f1d1d;
Neutral Palette
$gray-50: #fafafa;
$gray-100: #f4f4f5;
$gray-200: #e4e4e7;
$gray-300: #d4d4d8;
$gray-400: #a1a1aa;
$gray-500: #71717a;
$gray-600: #52525b;
$gray-700: #3f3f46;
$gray-800: #27272a;
$gray-900: #18181b;
3. Typography
- Font Family: Inter, system-ui, sans-serif
- Headings: Bold weight, slight letter-spacing
- Body Text: Regular weight, optimized line-height
- Text Colors:
- Primary:
rgba(0, 0, 0, 0.87) - Secondary:
rgba(0, 0, 0, 0.6) - Disabled:
rgba(0, 0, 0, 0.38)
- Primary:
4. Component Patterns
Glass Cards
.glass-card {
background: rgba(255, 255, 255, 0.6);
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
border: 1px solid rgba(0, 0, 0, 0.05);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
border-radius: 16px;
padding: 1.5rem;
transition: all 0.3s ease;
&:hover {
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
transform: translateY(-2px);
}
}
Stat Cards
.stat-card {
@extend .glass-card;
.stat-icon {
width: 48px;
height: 48px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(220, 38, 38, 0.08);
border-radius: 12px;
color: $monaco-red-600;
}
.stat-value {
font-size: 2rem;
font-weight: 700;
color: rgba(0, 0, 0, 0.87);
}
.stat-label {
font-size: 0.875rem;
color: rgba(0, 0, 0, 0.6);
text-transform: uppercase;
letter-spacing: 0.05em;
}
}
Navigation Sidebar
.glass-sidebar {
background: rgba(255, 255, 255, 0.7);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border-right: 1px solid rgba(0, 0, 0, 0.05);
box-shadow: 4px 0 12px rgba(0, 0, 0, 0.05);
.nav-item {
padding: 0.75rem 1rem;
border-radius: 8px;
transition: all 0.2s ease;
&:hover {
background: rgba(220, 38, 38, 0.05);
}
&.active {
background: rgba(220, 38, 38, 0.1);
color: $monaco-red-600;
font-weight: 600;
}
}
}
Forms & Inputs
.glass-input {
background: rgba(255, 255, 255, 0.9);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 8px;
padding: 0.75rem 1rem;
transition: all 0.2s ease;
&:focus {
outline: none;
border-color: $monaco-red-600;
box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}
}
Buttons
.btn-glass {
background: rgba(255, 255, 255, 0.9);
backdrop-filter: blur(4px);
border: 1px solid rgba(0, 0, 0, 0.1);
padding: 0.75rem 1.5rem;
border-radius: 8px;
font-weight: 600;
transition: all 0.2s ease;
&:hover {
background: rgba(255, 255, 255, 1);
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
&.btn-primary {
background: rgba(220, 38, 38, 0.9);
color: white;
border-color: transparent;
&:hover {
background: rgba(220, 38, 38, 1);
}
}
}
5. Layout Patterns
Dashboard Grid
- Desktop: 4 columns for stat cards
- Tablet: 2 columns
- Mobile: Single column
- Gap: 1.5rem between cards
Page Structure
┌─────────────────────────────────────┐
│ Sidebar │ Main Content │
│ 280px │ Flexible │
│ │ ┌───────────────────────┐ │
│ │ │ Header Section │ │
│ │ ├───────────────────────┤ │
│ │ │ Stats Grid │ │
│ │ ├───────────────────────┤ │
│ │ │ Content Cards │ │
│ │ └───────────────────────┘ │
└─────────────────────────────────────┘
Enhanced Sidebar Design
.enhanced-glass-sidebar {
// Subtle glass background with gradient
background: linear-gradient(135deg,
rgba(255, 255, 255, 0.6) 0%,
rgba(248, 249, 250, 0.8) 100%);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border-right: 1px solid rgba(0, 0, 0, 0.05);
position: relative;
overflow: hidden;
// Decorative floating orbs (non-interactive)
.floating-orb {
position: absolute;
border-radius: 50%;
filter: blur(30px);
pointer-events: none;
animation: float 8s ease-in-out infinite;
&.orb-1 {
top: 20%;
right: -50px;
width: 100px;
height: 100px;
background: radial-gradient(circle,
rgba(220, 38, 38, 0.05), transparent);
}
&.orb-2 {
bottom: 30%;
left: -30px;
width: 80px;
height: 80px;
background: radial-gradient(circle,
rgba(220, 38, 38, 0.03), transparent);
animation-delay: 3s;
}
}
}
// Navigation Items with Premium Feel
.nav-item {
border-radius: 12px;
margin: 6px 16px;
padding: 12px 16px;
position: relative;
overflow: hidden;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
// Shimmer effect on hover
&::after {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg,
transparent,
rgba(255, 255, 255, 0.1),
transparent);
pointer-events: none;
transition: left 0.5s ease;
}
&:hover {
background: rgba(220, 38, 38, 0.05);
transform: translateX(2px);
&::after {
left: 100%;
}
}
&.active {
background: rgba(220, 38, 38, 0.1);
border-left: 3px solid $monaco-red-600;
transform: scale(1.02);
.icon {
animation: subtle-pulse 3s ease-in-out infinite;
}
}
}
// System Status Indicator
.system-status {
margin-top: auto;
padding: 1rem;
border-top: 1px solid rgba(0, 0, 0, 0.05);
.status-indicator {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.75rem;
background: rgba(16, 185, 129, 0.05);
border-radius: 8px;
.status-dot {
width: 8px;
height: 8px;
background: #10b981;
border-radius: 50%;
animation: pulse 2s infinite;
}
}
}
6. Animation & Transitions
Hover Effects
- Lift:
transform: translateY(-2px) - Shadow Enhancement: Increase shadow opacity/blur
- Duration: 200-300ms
- Easing:
cubic-bezier(0.4, 0, 0.2, 1)
Page Transitions
- Fade In: 300ms ease-out
- Slide Up: 400ms ease-out with 20px offset
7. Responsive Breakpoints
$breakpoint-xs: 320px; // Small phones
$breakpoint-sm: 640px; // Phones
$breakpoint-md: 768px; // Tablets
$breakpoint-lg: 1024px; // Desktop
$breakpoint-xl: 1280px; // Large desktop
$breakpoint-2xl: 1536px; // Extra large desktop
8. Accessibility
Contrast Requirements
- Text on Glass: Minimum 4.5:1 contrast ratio
- Interactive Elements: 3:1 contrast ratio
- Focus Indicators: Visible outline with 3px offset
Focus States
*:focus-visible {
outline: 2px solid $monaco-red-600;
outline-offset: 3px;
border-radius: 4px;
}
9. Performance Optimizations
Blur Performance
- Limit backdrop-filter to essential elements
- Use will-change sparingly
- Prefer transform over position changes
- Group glass elements to reduce paint areas
CSS Variables for Dynamic Theming
:root {
--glass-bg: rgba(255, 255, 255, 0.6);
--glass-blur: 4px;
--glass-border: rgba(0, 0, 0, 0.05);
--glass-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
10. Implementation Guidelines
Portal-Specific Styles
Admin Portal
- Full glass sidebar with navigation
- Complex data tables with glass headers
- System monitoring cards
- Advanced form controls
Board Portal
- Executive dashboard layout
- Meeting management cards
- Document viewers with glass frames
- Governance tools
Member Portal
- Simplified navigation
- Personal dashboard
- Event registration forms
- Resource cards
Authentication Pages
- Centered glass card layout
- Minimal distractions
- Clear call-to-action buttons
- Subtle branding elements
11. Best Practices
- Consistency: Use predefined glass classes, don't create variations
- Performance: Test blur effects on lower-end devices
- Accessibility: Always ensure sufficient contrast
- Responsiveness: Test all breakpoints thoroughly
- Browser Support: Provide fallbacks for browsers without backdrop-filter
12. Migration Checklist
When updating existing pages to the Glass Bolt theme:
- Replace solid backgrounds with glass effects
- Update color scheme to use Monaco red accents
- Apply consistent border-radius (8-16px)
- Add hover states with lift effect
- Ensure proper spacing (1.5rem standard gap)
- Test backdrop-filter browser support
- Verify contrast ratios meet WCAG standards
- Update button styles to glass variants
- Apply glass effect to navigation elements
- Test responsive behavior on all breakpoints
Version History
-
v2.0.0 (Current) - Glass Bolt Theme
- Subtle glassmorphism inspired by bolt.ai
- Improved performance with minimal blur
- Enhanced accessibility with better contrast
- Consistent design language across all portals
-
v1.0.0 - Original design system
- Basic Material Design implementation
- Monaco red color scheme
- Standard component library