@import "tailwindcss";
:root {
/* Color System - Vibrant Gradients */
--color-primary-start: #3b82f6; /* blue-500 */
--color-primary-end: #06b6d4; /* cyan-500 */
--color-secondary-start: #fb923c; /* orange-400 */
--color-secondary-end: #ec4899; /* pink-500 */
--color-success: #10b981;
--color-warning: #f59e0b;
--color-error: #ef4444;
/* Background */
--background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
--foreground: #111827;
/* Glassmorphism */
--glass-bg: rgba(255, 255, 255, 0.7);
--glass-border: rgba(255, 255, 255, 0.18);
--glass-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37);
/* 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-glow: 0 0 20px rgba(59, 130, 246, 0.3);
/* Spacing */
--spacing-xs: 0.25rem; /* 4px */
--spacing-sm: 0.5rem; /* 8px */
--spacing-md: 1rem; /* 16px */
--spacing-lg: 1.5rem; /* 24px */
--spacing-xl: 2rem; /* 32px */
--spacing-2xl: 3rem; /* 48px */
--spacing-3xl: 4rem; /* 64px */
/* Border Radius */
--radius-sm: 0.5rem; /* 8px */
--radius-md: 0.75rem; /* 12px */
--radius-lg: 1rem; /* 16px */
--radius-xl: 1.5rem; /* 24px */
/* Transitions */
--transition-fast: 150ms ease-out;
--transition-base: 250ms ease-out;
--transition-slow: 350ms ease-out;
}
body {
background: var(--background);
background-attachment: fixed;
color: var(--foreground);
font-family: var(--font-inter), system-ui, -apple-system, sans-serif;
min-height: 100vh;
}
/* Gradient Background Animation */
@keyframes gradient-shift {
0%, 100% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
}
.gradient-bg {
background: linear-gradient(-45deg, #3b82f6, #06b6d4, #fb923c, #ec4899);
background-size: 400% 400%;
animation: gradient-shift 15s ease infinite;
}
/* Glassmorphism Effect */
.glass {
background: var(--glass-bg);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border: 1px solid var(--glass-border);
box-shadow: var(--glass-shadow);
}
/* Smooth Animations */
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideIn {
from {
opacity: 0;
transform: translateX(-20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes scaleIn {
from {
opacity: 0;
transform: scale(0.95);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes pulse-glow {
0%, 100% {
box-shadow: 0 0 20px rgba(59, 130, 246, 0.3);
}
50% {
box-shadow: 0 0 30px rgba(59, 130, 246, 0.5);
}
}
.animate-fade-in {
animation: fadeIn 0.5s ease-out;
}
.animate-slide-in {
animation: slideIn 0.4s ease-out;
}
.animate-scale-in {
animation: scaleIn 0.3s ease-out;
}
@keyframes infoTooltipEnter {
from {
opacity: 0;
transform: scale(0.96);
}
to {
opacity: 1;
transform: scale(1);
}
}
.info-tooltip-enter {
animation: infoTooltipEnter 0.15s ease-out;
}
.animate-pulse-glow {
animation: pulse-glow 2s ease-in-out infinite;
}
/* Hover Effects */
.hover-lift {
transition: transform var(--transition-base), box-shadow var(--transition-base);
}
.hover-lift:hover {
transform: translateY(-4px);
box-shadow: var(--shadow-xl);
}
.hover-glow {
transition: box-shadow var(--transition-base);
}
.hover-glow:hover {
box-shadow: var(--shadow-glow);
}
/* Gradient Text */
.gradient-text {
background: linear-gradient(135deg, var(--color-primary-start), var(--color-primary-end));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.gradient-text-secondary {
background: linear-gradient(135deg, var(--color-secondary-start), var(--color-secondary-end));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* Scrollbar Styling */
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: linear-gradient(135deg, var(--color-primary-start), var(--color-primary-end));
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: linear-gradient(135deg, var(--color-primary-end), var(--color-primary-start));
}
/* Selection */
::selection {
background: rgba(59, 130, 246, 0.3);
color: inherit;
}
/* Shimmer animation for skeleton loaders */
@keyframes shimmer {
0% {
background-position: -200% 0;
}
100% {
background-position: 200% 0;
}
}
.animate-shimmer {
animation: shimmer 2s linear infinite;
}
/* Grid pattern background */
.bg-grid-pattern {
background-image:
linear-gradient(to right, rgba(0,0,0,0.1) 1px, transparent 1px),
linear-gradient(to bottom, rgba(0,0,0,0.1) 1px, transparent 1px);
background-size: 20px 20px;
}
/* Slow spin animation for icons */
@keyframes spin-slow {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.animate-spin-slow {
animation: spin-slow 3s linear infinite;
}
/* Enhanced gradient shift for progress bar */
@keyframes gradient-shift {
0%, 100% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
}