@tailwind base; @tailwind components; @tailwind utilities; body { font-family: 'Noto Sans KR', sans-serif; background-color: #0f0f0f; color: #ffffff; } @layer components { .btn-primary { @apply bg-red-600 hover:bg-red-700 text-white font-medium py-2 px-4 rounded-lg transition-colors duration-200; } .btn-secondary { @apply bg-gray-700 hover:bg-gray-600 text-white font-medium py-2 px-4 rounded-lg transition-colors duration-200; } .input-field { @apply w-full bg-gray-800 border border-gray-700 rounded-lg px-4 py-3 text-white placeholder-gray-500 focus:outline-none focus:border-red-500 transition-colors; } .card { @apply bg-gray-900 rounded-xl p-6 border border-gray-800; } } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: #1f1f1f; } ::-webkit-scrollbar-thumb { background: #444; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #555; } /* Progress bar animation */ @keyframes progress { 0% { width: 0%; } 100% { width: var(--progress); } } .progress-bar { animation: progress 0.5s ease-out forwards; } /* Fade in animation */ @keyframes fadeIn { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } } .animate-fadeIn { animation: fadeIn 0.3s ease-out forwards; } /* Pipeline step animation */ @keyframes slideIn { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } .animate-slideIn { animation: slideIn 0.4s ease-out forwards; }