Spaces:
Sleeping
Sleeping
File size: 3,886 Bytes
15225f7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | @tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
html {
scroll-behavior: smooth;
}
body {
@apply bg-dark-50 text-dark-800 font-sans antialiased;
}
}
@layer components {
.btn {
@apply inline-flex items-center justify-center px-6 py-3 rounded-lg font-semibold transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2;
}
.btn-primary {
@apply bg-gradient-to-r from-primary-500 to-primary-600 text-white hover:from-primary-600 hover:to-primary-700 focus:ring-primary-500 shadow-lg shadow-primary-500/25 hover:shadow-xl hover:shadow-primary-500/30;
}
.btn-secondary {
@apply bg-dark-800 text-white hover:bg-dark-700 focus:ring-dark-500;
}
.btn-accent {
@apply bg-gradient-to-r from-accent-500 to-accent-600 text-white hover:from-accent-600 hover:to-accent-700 focus:ring-accent-500 shadow-lg shadow-accent-500/25;
}
.btn-outline {
@apply border-2 border-primary-500 text-primary-600 hover:bg-primary-50 focus:ring-primary-500;
}
.card {
@apply bg-white rounded-xl shadow-lg border border-dark-100 p-6;
}
.card-hover {
@apply card hover:shadow-xl hover:border-primary-200 transition-all duration-300 hover:-translate-y-1;
}
.stat-card {
@apply bg-white rounded-xl p-6 border border-dark-100 shadow-md;
}
.gradient-text {
@apply bg-gradient-to-r from-primary-500 to-accent-500 bg-clip-text text-transparent;
}
.section-padding {
@apply py-16 md:py-24 px-4 md:px-8;
}
.input {
@apply w-full px-4 py-3 rounded-lg border border-dark-200 focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20 outline-none transition-all duration-200;
}
.label {
@apply block text-sm font-medium text-dark-600 mb-2;
}
.page-transition {
@apply animate-page-in;
}
.hover-lift {
@apply transition-transform duration-200 hover:-translate-y-0.5;
}
.glow-ring {
@apply shadow-[0_0_0_0_rgba(14,165,233,0.0)] transition-shadow duration-300 hover:shadow-[0_0_0_6px_rgba(14,165,233,0.12)];
}
.stagger-1 { animation-delay: 60ms; }
.stagger-2 { animation-delay: 120ms; }
.stagger-3 { animation-delay: 180ms; }
.stagger-4 { animation-delay: 240ms; }
.stagger-5 { animation-delay: 300ms; }
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
@apply bg-dark-100;
}
::-webkit-scrollbar-thumb {
@apply bg-dark-300 rounded-full hover:bg-dark-400;
}
/* React Flow customizations */
.react-flow__node {
@apply shadow-lg;
}
.react-flow__edge-path {
stroke-width: 2;
}
/* Animations */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes pageIn {
from { opacity: 0; transform: translateY(16px) scale(0.99); filter: blur(4px); }
to { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
}
@keyframes floatSlow {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-8px); }
}
@keyframes shimmer {
0% { background-position: 0% 50%; }
100% { background-position: 100% 50%; }
}
@keyframes pulse-glow {
0%, 100% { box-shadow: 0 0 5px rgba(14, 165, 233, 0.5); }
50% { box-shadow: 0 0 20px rgba(14, 165, 233, 0.8); }
}
.animate-fade-in {
animation: fadeIn 0.5s ease-out forwards;
}
.animate-page-in {
animation: pageIn 520ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
}
.animate-float-slow {
animation: floatSlow 6s ease-in-out infinite;
}
.animate-shimmer {
background-size: 200% 200%;
animation: shimmer 5s ease-in-out infinite;
}
.animate-pulse-glow {
animation: pulse-glow 2s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
.animate-fade-in,
.animate-page-in,
.animate-float-slow,
.animate-shimmer,
.animate-pulse-glow {
animation: none !important;
}
}
|