petter2025's picture
Create styles/modern.css
bb3ba38 verified
raw
history blame
6.94 kB
/* 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;
}