Spaces:
Sleeping
Sleeping
| @tailwind base; | |
| @tailwind components; | |
| @tailwind utilities; | |
| @layer base { | |
| * { | |
| box-sizing: border-box; | |
| } | |
| body { | |
| font-family: 'Inter', system-ui, sans-serif; | |
| @apply bg-slate-50 text-slate-900 antialiased; | |
| } | |
| ::-webkit-scrollbar { | |
| width: 5px; | |
| height: 5px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| @apply bg-transparent; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| @apply bg-slate-300 rounded-full; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| @apply bg-slate-400; | |
| } | |
| } | |
| @layer components { | |
| .card { | |
| @apply bg-white rounded-2xl shadow-sm border border-slate-100 p-5; | |
| } | |
| .card-hover { | |
| @apply card transition-all duration-200 hover:shadow-md hover:border-brand-200; | |
| } | |
| .badge-pass { | |
| @apply inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-semibold bg-success-50 text-success-600 border border-success-500/20; | |
| } | |
| .badge-fail { | |
| @apply inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-semibold bg-danger-50 text-danger-600 border border-danger-500/20; | |
| } | |
| .badge-warning { | |
| @apply inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-semibold bg-warning-50 text-warning-600 border border-warning-500/20; | |
| } | |
| .btn-primary { | |
| @apply inline-flex items-center gap-2 px-4 py-2.5 rounded-xl bg-brand-600 text-white font-semibold text-sm transition-all duration-200 hover:bg-brand-700 active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed; | |
| } | |
| .btn-secondary { | |
| @apply inline-flex items-center gap-2 px-4 py-2.5 rounded-xl bg-white text-slate-700 font-semibold text-sm border border-slate-200 transition-all duration-200 hover:bg-slate-50 active:scale-95; | |
| } | |
| .score-bar { | |
| @apply h-2 rounded-full transition-all duration-700 ease-out; | |
| } | |
| .metric-label { | |
| @apply text-xs font-medium text-slate-500 uppercase tracking-wide; | |
| } | |
| } | |
| .typing-dot { | |
| width: 7px; | |
| height: 7px; | |
| border-radius: 50%; | |
| display: inline-block; | |
| animation: bounceDot 1.4s infinite ease-in-out both; | |
| @apply bg-brand-400; | |
| } | |
| .typing-dot:nth-child(1) { animation-delay: -0.32s; } | |
| .typing-dot:nth-child(2) { animation-delay: -0.16s; } | |
| .typing-dot:nth-child(3) { animation-delay: 0s; } | |
| @keyframes bounceDot { | |
| 0%, 80%, 100% { transform: scale(0); opacity: 0.4; } | |
| 40% { transform: scale(1.0); opacity: 1; } | |
| } | |
| .message-enter { | |
| animation: fadeIn 0.3s ease-out; | |
| } | |
| @keyframes fadeIn { | |
| from { opacity: 0; transform: translateY(10px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .score-ring { | |
| stroke-dasharray: 251.2; | |
| stroke-dashoffset: 251.2; | |
| transition: stroke-dashoffset 1s ease-in-out; | |
| stroke-linecap: round; | |
| transform: rotate(-90deg); | |
| transform-origin: center; | |
| } | |
| .gradient-text { | |
| background: linear-gradient(135deg, #4f55e5, #8196f8); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| .shimmer { | |
| background: linear-gradient(90deg, #f0f4ff 25%, #e0eaff 50%, #f0f4ff 75%); | |
| background-size: 200% 100%; | |
| animation: shimmer 1.5s infinite; | |
| } | |
| @keyframes shimmer { | |
| 0% { background-position: 200% 0; } | |
| 100% { background-position: -200% 0; } | |
| } | |