Spaces:
Running
Running
| @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 ; | |
| } | |
| } | |