@tailwind base; @tailwind components; @tailwind utilities; @layer base { body { @apply bg-gray-50 dark:bg-gray-900 text-gray-900 dark:text-gray-100 antialiased; } } @layer components { .btn-primary { @apply inline-flex items-center justify-center gap-2 px-6 py-3 bg-[rgb(20_113_76)] text-white font-semibold rounded-xl transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed shadow-lg hover:shadow-xl transform hover:-translate-y-0.5; } .btn-primary:hover { @apply bg-[rgb(16_89_60)]; } .btn-secondary { @apply bg-white dark:bg-gray-800 text-gray-800 dark:text-gray-200 font-semibold py-3 px-6 rounded-xl transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed border-2 border-gray-200 dark:border-gray-700 shadow-md hover:shadow-lg; } .btn-secondary:hover { @apply bg-gray-50 dark:bg-gray-700 border-[rgb(20_113_76)] dark:border-[rgb(20_113_76)]; } .btn-ghost { @apply text-[rgb(20_113_76)] font-medium py-2 px-4 rounded-lg transition-colors; } .btn-ghost:hover { background-color: rgba(20, 113, 76, 0.1); } @media (prefers-color-scheme: dark) { .btn-ghost:hover { background-color: rgba(20, 113, 76, 0.2); } } .input-field { @apply w-full px-4 py-3 border-2 border-gray-200 dark:border-gray-700 rounded-xl focus:outline-none focus:ring-2 focus:ring-[rgb(20_113_76)] focus:border-transparent disabled:bg-gray-50 dark:disabled:bg-gray-800 disabled:cursor-not-allowed transition-all duration-200 text-base bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100; } .card { @apply bg-white dark:bg-gray-800 rounded-2xl shadow-sm p-6 border border-gray-100 dark:border-gray-700; } .card:hover { @apply shadow-md; } .card-interactive { @apply bg-white dark:bg-gray-800 rounded-2xl shadow-sm p-6 border-2 border-gray-100 dark:border-gray-700 cursor-pointer transition-all duration-200; } .card-interactive:hover { @apply border-[rgb(20_113_76)] shadow-lg; } .badge { @apply inline-flex items-center px-3 py-1 rounded-full text-xs font-medium; } .badge-success { @apply bg-green-100 dark:bg-green-900/30 text-green-800 dark:text-green-300; } .badge-warning { @apply bg-yellow-100 dark:bg-yellow-900/30 text-yellow-800 dark:text-yellow-300; } .badge-info { @apply bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-300; } .section-title { @apply text-2xl md:text-3xl font-bold text-gray-900 dark:text-gray-100 mb-2; } .section-subtitle { @apply text-base md:text-lg text-gray-600 dark:text-gray-400; } } @layer utilities { .text-balance { text-wrap: balance; } @keyframes bounce-in { 0% { opacity: 0; transform: translateY(20px) scale(0.9); } 50% { opacity: 1; } 100% { opacity: 1; transform: translateY(0) scale(1); } } @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-20px); } } @keyframes shimmer { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } } @keyframes progressBar { 0% { width: 0%; } 50% { width: 60%; } 100% { width: 90%; } } @keyframes slide-in-left { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } @keyframes slide-in-right { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } } @keyframes slide-up { from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .animate-bounce-in { animation: bounce-in 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); } .animate-float { animation: float 6s ease-in-out infinite; } .animate-shimmer { background-size: 1000px 100%; animation: shimmer 2s infinite; } .animate-slide-in-left { animation: slide-in-left 0.5s ease-out; } .animate-slide-in-right { animation: slide-in-right 0.5s ease-out; } .animate-slide-up { animation: slide-up 0.25s cubic-bezier(0.32, 0.72, 0, 1); } .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } .scrollbar-hide::-webkit-scrollbar { display: none; } }