/* UI-UX-Pro-Max Design System */ :root { /* ========== Color Palette ========== */ --color-primary: #6366F1; /* Indigo */ --color-primary-light: #818CF8; --color-primary-dark: #4F46E5; --color-primary-50: #EEF2FF; --color-primary-100: #E0E7FF; --color-primary-200: #C7D2FE; --color-primary-300: #A5B4FC; --color-primary-400: #818CF8; --color-primary-500: #6366F1; --color-primary-600: #4F46E5; --color-primary-700: #4338CA; --color-primary-800: #3730A3; --color-primary-900: #312E81; --color-secondary: #10B981; /* Emerald */ --color-secondary-light: #34D399; --color-secondary-dark: #059669; --color-accent: #F59E0B; /* Amber */ --color-accent-light: #FBBF24; --color-accent-dark: #D97706; --color-danger: #EF4444; /* Red */ --color-danger-light: #FCA5A5; --color-danger-dark: #DC2626; --color-warning: #F59E0B; /* Amber */ --color-success: #10B981; /* Emerald */ --color-info: #3B82F6; /* Blue */ /* ========== Neutral Colors ========== */ --color-background: #0F172A; --color-surface: rgba(255, 255, 255, 0.06); --color-surface-hover: rgba(255, 255, 255, 0.08); --color-surface-active: rgba(255, 255, 255, 0.12); --color-text-primary: #F1F5F9; --color-text-secondary: #94A3B8; --color-text-tertiary: #64748B; --color-text-quaternary: #475569; --color-border: rgba(255, 255, 255, 0.12); --color-border-light: rgba(255, 255, 255, 0.08); --color-border-dark: rgba(255, 255, 255, 0.16); /* ========== Fonts ========== */ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; --font-mono: 'JetBrains Mono', 'Fira Code', Consolas, monospace; /* ========== Font Sizes ========== */ --text-xs: 0.75rem; /* 12px */ --text-sm: 0.875rem; /* 14px */ --text-base: 1rem; /* 16px */ --text-lg: 1.125rem; /* 18px */ --text-xl: 1.25rem; /* 20px */ --text-2xl: 1.5rem; /* 24px */ --text-3xl: 1.875rem; /* 30px */ --text-4xl: 2.25rem; /* 36px */ --text-5xl: 3rem; /* 48px */ /* ========== Font Weights ========== */ --font-light: 300; --font-normal: 400; --font-medium: 500; --font-semibold: 600; --font-bold: 700; --font-extrabold: 800; /* ========== Line Heights ========== */ --leading-tight: 1.25; --leading-snug: 1.375; --leading-normal: 1.5; --leading-relaxed: 1.625; --leading-loose: 2; /* ========== Letter Spacing ========== */ --tracking-tighter: -0.05em; --tracking-tight: -0.025em; --tracking-normal: 0em; --tracking-wide: 0.025em; --tracking-wider: 0.05em; --tracking-widest: 0.1em; /* ========== Spacing ========== */ --space-1: 0.25rem; /* 4px */ --space-2: 0.5rem; /* 8px */ --space-3: 0.75rem; /* 12px */ --space-4: 1rem; /* 16px */ --space-5: 1.25rem; /* 20px */ --space-6: 1.5rem; /* 24px */ --space-7: 1.75rem; /* 28px */ --space-8: 2rem; /* 32px */ --space-9: 2.25rem; /* 36px */ --space-10: 2.5rem; /* 40px */ --space-12: 3rem; /* 48px */ --space-16: 4rem; /* 64px */ --space-20: 5rem; /* 80px */ --space-24: 6rem; /* 96px */ --space-32: 8rem; /* 128px */ /* ========== Border Radius ========== */ --radius-sm: 0.125rem; /* 2px */ --radius-md: 0.375rem; /* 6px */ --radius-lg: 0.5rem; /* 8px */ --radius-xl: 0.75rem; /* 12px */ --radius-2xl: 1rem; /* 16px */ --radius-3xl: 1.5rem; /* 24px */ --radius-full: 9999px; /* ========== Shadows ========== */ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25); --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); /* ========== Glow Effects ========== */ --glow-primary: 0 0 15px rgba(99, 102, 241, 0.5); --glow-secondary: 0 0 15px rgba(16, 185, 129, 0.5); --glow-accent: 0 0 15px rgba(245, 158, 11, 0.5); --glow-danger: 0 0 15px rgba(239, 68, 68, 0.5); /* ========== Transitions ========== */ --transition-none: none; --transition-fast: 150ms ease-in-out; --transition-normal: 250ms ease-in-out; --transition-slow: 350ms ease-in-out; --transition-all: all var(--transition-normal); --transition-colors: color var(--transition-normal), background-color var(--transition-normal), border-color var(--transition-normal), text-decoration-color var(--transition-normal), fill var(--transition-normal), stroke var(--transition-normal); --transition-transform: transform var(--transition-normal); --transition-opacity: opacity var(--transition-normal); --transition-shadow: box-shadow var(--transition-normal); --transition-border: border-color var(--transition-normal), box-shadow var(--transition-normal); /* ========== Z-Index ========== */ --z-dropdown: 1000; --z-sticky: 1020; --z-fixed: 1030; --z-modal-backdrop: 1040; --z-modal: 1050; --z-popover: 1060; --z-tooltip: 1070; --z-toast: 1080; /* ========== Breakpoints ========== */ --breakpoint-sm: 640px; --breakpoint-md: 768px; --breakpoint-lg: 1024px; --breakpoint-xl: 1280px; --breakpoint-2xl: 1536px; /* ========== Animations ========== */ --ease-linear: linear; --ease-in: cubic-bezier(0.4, 0, 1, 1); --ease-out: cubic-bezier(0, 0, 0.2, 1); --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); /* ========== Glass Morphism ========== */ /* Surface layers — from subtle to heavy */ --glass-subtle: rgba(255, 255, 255, 0.03); --glass-surface: rgba(255, 255, 255, 0.06); --glass-light: rgba(255, 255, 255, 0.08); --glass-medium: rgba(255, 255, 255, 0.12); --glass-heavy: rgba(255, 255, 255, 0.18); --glass-solid: rgba(15, 23, 42, 0.75); /* Backdrop blur levels */ --glass-blur-sm: blur(8px); --glass-blur-md: blur(16px); --glass-blur: blur(24px); --glass-blur-lg: blur(40px); --glass-blur-xl: blur(64px); /* Borders */ --glass-border-subtle: rgba(255, 255, 255, 0.06); --glass-border: rgba(255, 255, 255, 0.10); --glass-border-strong: rgba(255, 255, 255, 0.16); /* Glass shadow — soft halo effect */ --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.05); --glass-shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.06); /* Shorthand backdrop (kept for backward compat) */ --glass-backdrop: blur(24px) saturate(180%); } /* ========== Base Styles ========== */ * { box-sizing: border-box; margin: 0; padding: 0; } html { font-size: 16px; line-height: 1.5; -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; } body { font-family: var(--font-sans); font-size: var(--text-base); font-weight: var(--font-normal); line-height: var(--leading-normal); color: var(--color-text-primary); background-color: var(--color-background); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* ========== Typography ========== */ h1, h2, h3, h4, h5, h6 { font-family: var(--font-sans); font-weight: var(--font-bold); line-height: var(--leading-tight); color: var(--color-text-primary); margin-bottom: var(--space-4); } h1 { font-size: var(--text-4xl); } h2 { font-size: var(--text-3xl); } h3 { font-size: var(--text-2xl); } h4 { font-size: var(--text-xl); } h5 { font-size: var(--text-lg); } h6 { font-size: var(--text-base); } p { margin-bottom: var(--space-4); color: var(--color-text-secondary); } a { color: var(--color-primary); text-decoration: none; transition: var(--transition-colors); } a:hover { color: var(--color-primary-light); text-decoration: underline; } /* ========== Buttons ========== */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); padding: var(--space-3) var(--space-6); font-family: var(--font-sans); font-size: var(--text-base); font-weight: var(--font-medium); line-height: 1; color: var(--color-text-primary); background-color: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); cursor: pointer; transition: var(--transition-all); text-align: center; white-space: nowrap; user-select: none; } .btn:hover { background-color: var(--color-surface-hover); border-color: var(--color-border-dark); transform: translateY(-1px); } .btn:active { transform: translateY(0); } .btn:focus { outline: none; box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2); } .btn:disabled { opacity: 0.6; cursor: not-allowed; transform: none; } /* ========== Button Variants ========== */ .btn-primary { background-color: var(--color-primary); border-color: var(--color-primary); color: white; } .btn-primary:hover { background-color: var(--color-primary-dark); border-color: var(--color-primary-dark); box-shadow: var(--glow-primary); } .btn-secondary { background-color: var(--color-secondary); border-color: var(--color-secondary); color: white; } .btn-secondary:hover { background-color: var(--color-secondary-dark); border-color: var(--color-secondary-dark); box-shadow: var(--glow-secondary); } .btn-accent { background-color: var(--color-accent); border-color: var(--color-accent); color: white; } .btn-accent:hover { background-color: var(--color-accent-dark); border-color: var(--color-accent-dark); box-shadow: var(--glow-accent); } .btn-danger { background-color: var(--color-danger); border-color: var(--color-danger); color: white; } .btn-danger:hover { background-color: var(--color-danger-dark); border-color: var(--color-danger-dark); box-shadow: var(--glow-danger); } .btn-outline { background-color: transparent; border-color: var(--color-border); color: var(--color-text-primary); } .btn-outline:hover { background-color: var(--color-surface-hover); border-color: var(--color-border-dark); } .btn-ghost { background-color: transparent; border-color: transparent; color: var(--color-text-primary); } .btn-ghost:hover { background-color: var(--color-surface-hover); border-color: transparent; } /* ========== Button Sizes ========== */ .btn-sm { padding: var(--space-2) var(--space-4); font-size: var(--text-sm); border-radius: var(--radius-md); } .btn-md { padding: var(--space-3) var(--space-6); font-size: var(--text-base); border-radius: var(--radius-lg); } .btn-lg { padding: var(--space-4) var(--space-8); font-size: var(--text-lg); border-radius: var(--radius-xl); } .btn-xl { padding: var(--space-5) var(--space-10); font-size: var(--text-xl); border-radius: var(--radius-2xl); } /* ========== Inputs ========== */ .input { width: 100%; padding: var(--space-3) var(--space-4); font-family: var(--font-sans); font-size: var(--text-base); font-weight: var(--font-normal); line-height: 1.5; color: var(--color-text-primary); background-color: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); transition: var(--transition-border); outline: none; } .input:hover { border-color: var(--color-border-dark); } .input:focus { border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); } .input::placeholder { color: var(--color-text-tertiary); } .input:disabled { opacity: 0.6; cursor: not-allowed; } /* ========== Input Sizes ========== */ .input-sm { padding: var(--space-2) var(--space-3); font-size: var(--text-sm); border-radius: var(--radius-md); } .input-md { padding: var(--space-3) var(--space-4); font-size: var(--text-base); border-radius: var(--radius-lg); } .input-lg { padding: var(--space-4) var(--space-5); font-size: var(--text-lg); border-radius: var(--radius-xl); } /* ========== Cards ========== */ .card { background-color: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-xl); padding: var(--space-6); box-shadow: var(--shadow-md); transition: var(--transition-all); } .card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); } .card-header { margin-bottom: var(--space-4); } .card-title { font-size: var(--text-xl); font-weight: var(--font-semibold); color: var(--color-text-primary); margin-bottom: var(--space-2); } .card-subtitle { font-size: var(--text-sm); color: var(--color-text-secondary); } .card-body { margin-bottom: var(--space-4); } .card-footer { display: flex; align-items: center; justify-content: flex-end; gap: var(--space-3); padding-top: var(--space-4); border-top: 1px solid var(--color-border-light); } /* ========== Tabs ========== */ .tabs { display: flex; align-items: center; gap: var(--space-1); margin-bottom: var(--space-6); border-bottom: 1px solid var(--color-border-light); } .tab { padding: var(--space-3) var(--space-4); font-family: var(--font-sans); font-size: var(--text-base); font-weight: var(--font-medium); color: var(--color-text-secondary); background-color: transparent; border: none; border-bottom: 2px solid transparent; border-radius: var(--radius-md) var(--radius-md) 0 0; cursor: pointer; transition: var(--transition-all); position: relative; overflow: hidden; } .tab:hover { color: var(--color-text-primary); background-color: var(--color-surface-hover); } .tab.active { color: var(--color-primary); border-bottom-color: var(--color-primary); } .tab.active::before { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; background-color: var(--color-primary); animation: tabSlideIn 0.3s var(--ease-out); } /* ========== Animations ========== */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideIn { from { transform: translateX(-100%); } to { transform: translateX(0); } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } @keyframes breathe { 0%, 100% { transform: scale(1); opacity: 0.6; } 50% { transform: scale(1.1); opacity: 0.8; } } @keyframes shimmer { 0% { background-position: -1000px 0; } 100% { background-position: 1000px 0; } } @keyframes tabSlideIn { from { width: 0; left: 50%; } to { width: 100%; left: 0; } } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes bounce { 0%, 20%, 53%, 80%, 100% { animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transform: translate3d(0,0,0); } 40%, 43% { animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); transform: translate3d(0, -8px, 0); } 70% { animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); transform: translate3d(0, -4px, 0); } 90% { transform: translate3d(0,-2px,0); } } /* ========== Utilities ========== */ .fade-in { animation: fadeIn 0.5s var(--ease-out) both; } .pulse { animation: pulse 2s var(--ease-in-out) infinite; } .breathe { animation: breathe 4s var(--ease-in-out) infinite; } .spin { animation: spin 1s var(--ease-linear) infinite; } .bounce { animation: bounce 1s var(--ease-out); } /* ========== Flex Utilities ========== */ .flex { display: flex; } .flex-col { flex-direction: column; } .items-center { align-items: center; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .gap-2 { gap: var(--space-2); } .gap-4 { gap: var(--space-4); } .gap-6 { gap: var(--space-6); } /* ========== Text Utilities ========== */ .text-center { text-align: center; } .text-left { text-align: left; } .text-right { text-align: right; } .text-primary { color: var(--color-primary); } .text-secondary { color: var(--color-secondary); } .text-danger { color: var(--color-danger); } .text-warning { color: var(--color-warning); } .text-success { color: var(--color-success); } .text-sm { font-size: var(--text-sm); } .text-base { font-size: var(--text-base); } .text-lg { font-size: var(--text-lg); } .text-xl { font-size: var(--text-xl); } .font-medium { font-weight: var(--font-medium); } .font-semibold { font-weight: var(--font-semibold); } .font-bold { font-weight: var(--font-bold); } /* ========== Spacing Utilities ========== */ .m-0 { margin: 0; } .m-4 { margin: var(--space-4); } .mb-4 { margin-bottom: var(--space-4); } .mt-4 { margin-top: var(--space-4); } .p-0 { padding: 0; } .p-4 { padding: var(--space-4); } .py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); } .px-4 { padding-left: var(--space-4); padding-right: var(--space-4); } /* ========== Responsive Utilities ========== */ @media (max-width: 768px) { .md\:hidden { display: none; } .md\:block { display: block; } .md\:flex { display: flex; } .md\:items-center { align-items: center; } .md\:justify-center { justify-content: center; } } @media (max-width: 640px) { .sm\:hidden { display: none; } .sm\:block { display: block; } .sm\:flex { display: flex; } .sm\:items-center { align-items: center; } .sm\:justify-center { justify-content: center; } } /* ========== Accessibility ========== */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } } /* ========== Print Styles ========== */ @media print { *, *::before, *::after { background: #fff !important; color: #000 !important; box-shadow: none !important; text-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]::after { content: " (" attr(href) ")"; } @page { margin: 1cm; } } /* ========== Dark Mode Optimization ========== */ @media (prefers-color-scheme: dark) { :root { color-scheme: dark; } body { color-scheme: dark; } } /* ========== End of UI-UX-Pro-Max Design System ========== */