| name | Arcanea Design System |
| description | Complete visual design language for Arcanea - cosmic theme tokens, component patterns, animation standards, and Academy-specific aesthetics |
| version | 1.0.0 |
Arcanea Design System Skill
Purpose
This skill defines the complete visual design language for Arcanea, ensuring consistent, magical, and accessible interfaces across all platform features. Every component should feel like it belongs in the Kingdom of Light.
Design Philosophy
Core Principles
- Cosmic Elegance - Dark, starlit backgrounds with luminous accents
- Magical Realism - Fantastical elements grounded in usable UI
- Academy Identity - Distinct visual languages for each Academy
- Accessible Magic - Beauty that doesn't sacrifice usability
- Responsive Fluidity - Adapts gracefully across all devices
The Arcanean Aesthetic
What It Is:
- Dark, cosmic backgrounds
- Gradient glows and light effects
- Floating, ethereal elements
- Subtle particle systems
- Crystalline and fluid forms
- Smooth, flowing animations
What It Isn't:
- Flat, corporate design
- Harsh, angular brutalism
- Cluttered fantasy kitsch
- Inaccessible effects-only
- Static, lifeless layouts
Color System
Core Palette
--arcanea-cosmic-950: #050510;
--arcanea-cosmic-900: #0a0a1a;
--arcanea-cosmic-800: #121230;
--arcanea-cosmic-700: #1a1a45;
--arcanea-cosmic-600: #252560;
--arcanea-primary-50: #f5f3ff;
--arcanea-primary-100: #ede9fe;
--arcanea-primary-200: #ddd6fe;
--arcanea-primary-300: #c4b5fd;
--arcanea-primary-400: #a78bfa;
--arcanea-primary-500: #8b5cf6;
--arcanea-primary-600: #7c3aed;
--arcanea-primary-700: #6d28d9;
--arcanea-primary-800: #5b21b6;
--arcanea-primary-900: #4c1d95;
--arcanea-accent-50: #ecfeff;
--arcanea-accent-100: #cffafe;
--arcanea-accent-200: #a5f3fc;
--arcanea-accent-300: #67e8f9;
--arcanea-accent-400: #22d3ee;
--arcanea-accent-500: #06b6d4;
--arcanea-accent-600: #0891b2;
--arcanea-accent-700: #0e7490;
--arcanea-accent-800: #155e75;
--arcanea-accent-900: #164e63;
--arcanea-gold-50: #fffbeb;
--arcanea-gold-100: #fef3c7;
--arcanea-gold-200: #fde68a;
--arcanea-gold-300: #fcd34d;
--arcanea-gold-400: #fbbf24;
--arcanea-gold-500: #f59e0b;
--arcanea-gold-600: #d97706;
--arcanea-gold-700: #b45309;
--arcanea-gold-800: #92400e;
--arcanea-gold-900: #78350f;
--arcanea-text-primary: #ffffff;
--arcanea-text-secondary: rgba(255, 255, 255, 0.7);
--arcanea-text-tertiary: rgba(255, 255, 255, 0.5);
--arcanea-text-muted: rgba(255, 255, 255, 0.3);
--arcanea-success: #10b981;
--arcanea-warning: #f59e0b;
--arcanea-error: #ef4444;
--arcanea-info: #3b82f6;
Academy Color Palettes
--atlantean-deep: #0a2540;
--atlantean-primary: #0ea5e9;
--atlantean-secondary: #06b6d4;
--atlantean-accent: #5eead4;
--atlantean-glow: rgba(14, 165, 233, 0.3);
--draconic-shadow: #1c0a0a;
--draconic-primary: #ef4444;
--draconic-secondary: #f97316;
--draconic-accent: #fbbf24;
--draconic-sky: #38bdf8;
--draconic-glow: rgba(239, 68, 68, 0.3);
--creation-void: #0a0a1a;
--creation-primary: #f5f5f5;
--creation-secondary: #8b5cf6;
: ;
: (,
, , , ,
, , );
: (, , , );
Typography
Font Stack
--font-display: 'Cal Sans', 'Inter', system-ui, sans-serif;
--font-body: 'Inter', system-ui, -apple-system, sans-serif;
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
Type Scale
--text-xs: 0.75rem;
--text-sm: 0.875rem;
--text-base: 1rem;
--text-lg: 1.125rem;
--text-xl: 1.25rem;
--text-2xl: 1.5rem;
--text-3xl: 1.875rem;
--text-4xl: 2.25rem;
--text-5xl: 3rem;
--text-6xl: 3.75rem;
--text-7xl: 4.5rem;
Line Heights
--leading-none: 1;
--leading-tight: 1.25;
--leading-snug: 1.375;
--leading-normal: 1.5;
--leading-relaxed: 1.625;
--leading-loose: 2;
Spacing System
Base Scale
--space-0: 0;
--space-1: 0.25rem;
--space-2: 0.5rem;
--space-3: 0.75rem;
--space-4: 1rem;
--space-5: 1.25rem;
--space-6: 1.5rem;
--space-8: 2rem;
--space-10: 2.5rem;
--space-12: 3rem;
--space-16: 4rem;
--space-20: 5rem;
--space-24: 6rem;
Border Radius
--radius-none: 0;
--radius-sm: 0.25rem;
--radius-md: 0.375rem;
--radius-lg: 0.5rem;
--radius-xl: 0.75rem;
--radius-2xl: 1rem;
--radius-3xl: 1.5rem;
--radius-full: 9999px;
Shadows & Effects
Glow Effects
--glow-primary: 0 0 20px rgba(139, 92, 246, 0.4);
--glow-accent: 0 0 20px rgba(6, 182, 212, 0.4);
--glow-gold: 0 0 20px rgba(245, 158, 11, 0.4);
--glow-atlantean: 0 0 30px rgba(14, 165, 233, 0.3);
--glow-draconic: 0 0 30px rgba(239, 68, 68, 0.3);
--glow-creation: 0 0 30px rgba(255, 255, 255, 0.2);
--glow-hover: 0 (, , , );
: (, , , );
: (, , , );
Box Shadows
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2);
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.3);
--shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.4);
--shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.5);
--shadow-2xl: 0 25px 50px rgba(0, 0, 0, 0.6);
--shadow-cosmic:
0 10px 15px rgba(0, 0, 0, 0.4),
0 0 20px rgba(139, , , );
:
(, , , ),
(, , , );
Gradients
--gradient-cosmic: linear-gradient(180deg,
var(--arcanea-cosmic-900) 0%,
var(--arcanea-cosmic-950) 100%);
--gradient-surface: linear-gradient(135deg,
rgba(255, 255, 255, 0.05) 0%,
rgba(255, 255, 255, 0.02) 100%);
--gradient-primary: linear-gradient(135deg,
var(--arcanea-primary-500) 0%,
var(--arcanea-primary-600) 100%);
--gradient-glow: linear-gradient(135deg,
var(--arcanea-primary-500) 0%,
var(--arcanea-accent-500) 100%);
--gradient-atlantean: linear-gradient(180deg,
rgba(14, 165, 233, 0.2) 0%,
transparent );
: (,
(, , , ) ,
transparent );
: (ellipse at center,
(, , , ) ,
transparent );
Animation Standards
Timing Functions
--ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
--ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
--ease-elastic: cubic-bezier(0.68, -0.6, 0.32, 1.6);
--ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
Duration Scale
--duration-instant: 50ms;
--duration-fast: 150ms;
--duration-normal: 250ms;
--duration-slow: 400ms;
--duration-slower: 600ms;
--duration-slowest: 1000ms;
Common Animations
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes slideUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes scaleIn {
from {
opacity: 0;
transform: scale(0.95);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes glowPulse {
0%, 100% { box-shadow: 0 0 20px rgba(139, 92, 246, 0.4); }
50% { box-shadow: 0 0 40px (, , , ); }
}
float {
, { : (); }
{ : (-); }
}
shimmer {
{ : - ; }
{ : ; }
}
twinkle {
, { : ; }
{ : ; }
}
Framer Motion Variants
export const transitions = {
spring: { type: "spring", stiffness: 300, damping: 30 },
smooth: { type: "tween", ease: [0.4, 0, 0.2, 1], duration: 0.25 },
bounce: { type: "spring", stiffness: 400, damping: 10 },
};
export const fadeIn = {
initial: { opacity: 0 },
animate: { opacity: 1 },
exit: { opacity: 0 },
transition: transitions.smooth,
};
export const slideUp = {
initial: { opacity: 0, y: 20 },
animate: { opacity: 1, y: 0 },
exit: { opacity: 0, : },
: transitions.,
};
scale = {
: { : , : },
: { : , : },
: { : , : },
: transitions.,
};
stagger = {
: {
: {
: ,
},
},
};
Component Patterns
Cards
<div className="
bg-arcanea-cosmic-800/50
backdrop-blur-sm
border border-arcanea-cosmic-600/50
rounded-2xl
p-6
transition-all duration-300
hover:border-arcanea-primary-500/50
hover:shadow-cosmic
">
<div className="
bg-gradient-to-br from-atlantean-deep/80 to-arcanea-cosmic-800/50
backdrop-blur-sm
border border-atlantean-primary/30
rounded-2xl
p-6
shadow-[0_0_20px_rgba(14,165,233,0.1)]
transition-all duration-300
hover:shadow-glow-atlantean
hover:border-atlantean-primary/50
">
Buttons
<button className="
px-6 py-3
bg-gradient-to-r from-arcanea-primary-500 to-arcanea-primary-600
hover:from-arcanea-primary-400 hover:to-arcanea-primary-500
text-white font-medium
rounded-xl
shadow-glow-primary
transition-all duration-300
hover:shadow-glow-hover
hover:-translate-y-0.5
focus:outline-none focus:ring-2 focus:ring-arcanea-primary-400/50
">
<button className="
px-6 py-3
bg-transparent
border border-arcanea-cosmic-600
hover:border-arcanea-primary-500
hover:bg-arcanea-primary-500/10
text-arcanea-text-secondary
hover:text-arcanea-text-primary
rounded-xl
transition-all duration-300
">
Inputs
<input className="
w-full px-4 py-3
bg-arcanea-cosmic-800/50
border border-arcanea-cosmic-600
rounded-xl
text-arcanea-text-primary
placeholder:text-arcanea-text-muted
transition-all duration-300
focus:outline-none
focus:border-arcanea-primary-500
focus:ring-2 focus:ring-arcanea-primary-500/20
focus:shadow-glow-focus
" />
Luminor Presence Indicator
<div className="relative">
<div className="
w-12 h-12
rounded-full
bg-gradient-to-br from-arcanea-primary-400 to-arcanea-accent-500
shadow-glow-primary
animate-[glowPulse_3s_ease-in-out_infinite]
">
<img src={luminor.avatar} className="w-full h-full rounded-full" />
</div>
{}
<div className="
absolute bottom-0 right-0
w-3 h-3
bg-arcanea-success
rounded-full
border-2 border-arcanea-cosmic-900
shadow-[0_0_10px_rgba(16,185,129,0.5)]
" />
</div>
Academy Badge
const academyStyles = {
atlantean: "from-atlantean-primary to-atlantean-secondary shadow-glow-atlantean",
draconic: "from-draconic-primary to-draconic-accent shadow-glow-draconic",
creation: "from-creation-primary to-creation-secondary shadow-glow-creation",
};
<div className={`
px-3 py-1
bg-gradient-to-r ${academyStyles[academy]}
rounded-full
text-xs font-medium
uppercase tracking-wide
`}>
{academyName}
</div>
Accessibility Requirements
Color Contrast
All text must meet WCAG 2.1 AA standards:
- Normal text: 4.5:1 contrast ratio
- Large text (18px+): 3:1 contrast ratio
- UI components: 3:1 contrast ratio
Focus States
All interactive elements must have visible focus indicators:
.focus-visible:focus {
outline: none;
ring: 2px;
ring-color: var(--arcanea-primary-400);
ring-offset: 2px;
ring-offset-color: var(--arcanea-cosmic-900);
}
Motion Preferences
Respect user's motion preferences:
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
Screen Reader Support
- All images have meaningful alt text
- Icon-only buttons have aria-labels
- Dynamic content uses aria-live regions
- Modal dialogs trap focus appropriately
Responsive Breakpoints
--screen-sm: 640px;
--screen-md: 768px;
--screen-lg: 1024px;
--screen-xl: 1280px;
--screen-2xl: 1536px;
Component Library Reference
Using shadcn/ui components with Arcanean customization:
- Button, Card, Dialog, Dropdown
- Input, Textarea, Select
- Tabs, Accordion, Avatar
- Toast, Tooltip, Popover
All components override default themes with Arcanean tokens.
Integration Guidelines
When Building UI
- Start with tokens - Use design tokens, not raw values
- Layer properly - cosmic-900 → cosmic-800 → cosmic-700 for depth
- Glow intentionally - Use glows for interactive elements and focus
- Animate purposefully - Motion should guide attention
- Academy-aware - Adapt colors when in academy context
Quality Checklist
## Design System Compliance
- [ ] Uses Arcanean color tokens
- [ ] Correct typography scale
- [ ] Proper spacing (4px grid)
- [ ] Glow effects for interactives
- [ ] Smooth animations (spring-based)
- [ ] Academy colors if applicable
- [ ] Accessible contrast ratios
- [ ] Focus states visible
- [ ] Motion preference respected
- [ ] Responsive across breakpoints
This design system ensures every pixel of Arcanea feels magical, consistent, and welcoming. Build with care.