/* ui/styles/modern.css - Design System Foundation */ :root { /* Primary Colors (matching your current scheme) */ --color-primary-50: #eff6ff; --color-primary-100: #dbeafe; --color-primary-200: #bfdbfe; --color-primary-300: #93c5fd; --color-primary-400: #60a5fa; --color-primary-500: #3b82f6; --color-primary-600: #2563eb; --color-primary-700: #1d4ed8; --color-primary-800: #1e40af; --color-primary-900: #1e3a8a; /* Success Colors */ --color-success-50: #f0fdf4; --color-success-100: #dcfce7; --color-success-200: #bbf7d0; --color-success-300: #86efac; --color-success-400: #4ade80; --color-success-500: #22c55e; --color-success-600: #16a34a; --color-success-700: #15803d; --color-success-800: #166534; --color-success-900: #14532d; /* Warning Colors */ --color-warning-50: #fffbeb; --color-warning-100: #fef3c7; --color-warning-200: #fde68a; --color-warning-300: #fcd34d; --color-warning-400: #fbbf24; --color-warning-500: #f59e0b; --color-warning-600: #d97706; --color-warning-700: #b45309; --color-warning-800: #92400e; --color-warning-900: #78350f; /* Danger Colors */ --color-danger-50: #fef2f2; --color-danger-100: #fee2e2; --color-danger-200: #fecaca; --color-danger-300: #fca5a5; --color-danger-400: #f87171; --color-danger-500: #ef4444; --color-danger-600: #dc2626; --color-danger-700: #b91c1c; --color-danger-800: #991b1b; --color-danger-900: #7f1d1d; /* Neutral Colors */ --color-neutral-50: #f8fafc; --color-neutral-100: #f1f5f9; --color-neutral-200: #e2e8f0; --color-neutral-300: #cbd5e1; --color-neutral-400: #94a3b8; --color-neutral-500: #64748b; --color-neutral-600: #475569; --color-neutral-700: #334155; --color-neutral-800: #1e293b; --color-neutral-900: #0f172a; /* Spacing */ --spacing-1: 0.25rem; --spacing-2: 0.5rem; --spacing-3: 0.75rem; --spacing-4: 1rem; --spacing-5: 1.25rem; --spacing-6: 1.5rem; --spacing-8: 2rem; --spacing-10: 2.5rem; --spacing-12: 3rem; --spacing-16: 4rem; --spacing-20: 5rem; /* Typography */ --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; --font-mono: 'JetBrains Mono', 'SF Mono', Monaco, monospace; /* Border Radius */ --radius-sm: 0.25rem; --radius-md: 0.5rem; --radius-lg: 0.75rem; --radius-xl: 1rem; --radius-2xl: 1.5rem; --radius-full: 9999px; /* Shadows */ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05); --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1); --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1); --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1); /* Transitions */ --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-normal: 250ms cubic-bezier(0.4, 0, 0.2, 1); --transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1); } /* Semantic aliases for easier use */ :root { --color-primary: var(--color-primary-500); --color-success: var(--color-success-500); --color-warning: var(--color-warning-500); --color-danger: var(--color-danger-500); --color-border: var(--color-neutral-200); --color-bg: var(--color-neutral-50); --color-text: var(--color-neutral-900); --color-text-secondary: var(--color-neutral-600); } /* Dark mode overrides */ [data-theme="dark"] { --color-primary: var(--color-primary-400); --color-success: var(--color-success-400); --color-warning: var(--color-warning-400); --color-danger: var(--color-danger-400); --color-border: var(--color-neutral-700); --color-bg: var(--color-neutral-900); --color-text: var(--color-neutral-100); --color-text-secondary: var(--color-neutral-400); } /* Base styles */ * { box-sizing: border-box; } body { font-family: var(--font-sans); color: var(--color-text); background: var(--color-bg); margin: 0; padding: 0; line-height: 1.5; } /* Container utilities */ .container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 var(--spacing-4); } .container-sm { max-width: 800px; } .container-lg { max-width: 1400px; } /* Grid system */ .grid { display: grid; gap: var(--spacing-4); } .grid-2 { grid-template-columns: repeat(2, 1fr); } .grid-3 { grid-template-columns: repeat(3, 1fr); } .grid-4 { grid-template-columns: repeat(4, 1fr); } /* Flex utilities */ .flex { display: flex; } .flex-col { flex-direction: column; } .items-center { align-items: center; } .justify-between { justify-content: space-between; } .justify-center { justify-content: center; } .gap-2 { gap: var(--spacing-2); } .gap-4 { gap: var(--spacing-4); } .gap-6 { gap: var(--spacing-6); } /* Card base styles */ .card { background: white; border-radius: var(--radius-lg); border: 1px solid var(--color-border); padding: var(--spacing-6); transition: box-shadow var(--transition-normal); } .card:hover { box-shadow: var(--shadow-md); } .card-elevated { box-shadow: var(--shadow-lg); border: none; } .card-outlined { border: 2px solid var(--color-primary); background: transparent; } /* Button base styles */ .btn { display: inline-flex; align-items: center; justify-content: center; padding: var(--spacing-2) var(--spacing-4); border-radius: var(--radius-md); font-weight: 500; font-size: 0.875rem; border: none; cursor: pointer; transition: all var(--transition-fast); text-decoration: none; gap: var(--spacing-2); } .btn:disabled { opacity: 0.5; cursor: not-allowed; } .btn-primary { background: var(--color-primary); color: white; } .btn-primary:hover:not(:disabled) { background: var(--color-primary-600); } .btn-secondary { background: var(--color-neutral-100); color: var(--color-text); border: 1px solid var(--color-border); } .btn-secondary:hover:not(:disabled) { background: var(--color-neutral-200); } /* Typography utilities */ .text-sm { font-size: 0.875rem; } .text-base { font-size: 1rem; } .text-lg { font-size: 1.125rem; } .text-xl { font-size: 1.25rem; } .text-2xl { font-size: 1.5rem; } .font-medium { font-weight: 500; } .font-semibold { font-weight: 600; } .font-bold { font-weight: 700; } .text-primary { color: var(--color-primary); } .text-success { color: var(--color-success); } .text-warning { color: var(--color-warning); } .text-danger { color: var(--color-danger); } .text-muted { color: var(--color-text-secondary); } /* Utility classes for gradients */ .gradient-primary { background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-700) 100%); } .gradient-success { background: linear-gradient(135deg, var(--color-success) 0%, var(--color-success-700) 100%); } .gradient-warning { background: linear-gradient(135deg, var(--color-warning) 0%, var(--color-warning-700) 100%); } /* Focus styles for accessibility */ :focus { outline: 2px solid var(--color-primary); outline-offset: 2px; } :focus:not(:focus-visible) { outline: none; }