@tailwind base; @tailwind components; @tailwind utilities; @layer base { body { @apply bg-white text-slate-800 antialiased; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; } } @keyframes blink { 50% { opacity: 0; } } .animate-blink { animation: blink 0.8s step-end infinite; } @keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-in { animation: fadeIn 0.3s ease-out; } @keyframes thinking-dot { 0%, 80%, 100% { transform: scale(0.6); opacity: 0.3; } 40% { transform: scale(1); opacity: 1; } } .thinking-dot { animation: thinking-dot 1.4s infinite; } @keyframes shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } .animate-shimmer { animation: shimmer 2s ease-in-out infinite; } .scrollbar-thin { scrollbar-width: thin; scrollbar-color: #e2e8f0 transparent; } .scrollbar-thin::-webkit-scrollbar { width: 5px; } .scrollbar-thin::-webkit-scrollbar-track { background: transparent; } .scrollbar-thin::-webkit-scrollbar-thumb { background-color: #e2e8f0; border-radius: 3px; } @keyframes slideUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } .animate-slide-up { animation: slideUp 0.3s ease-out; } @keyframes scaleIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } .animate-scale-in { animation: scaleIn 0.2s ease-out; } @keyframes floatUp { 0% { opacity: 0; transform: translateY(12px); } 100% { opacity: 1; transform: translateY(0); } } .animate-float-up { animation: floatUp 0.4s ease-out both; } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 0 0 rgba(236, 72, 153, 0.3); } 50% { box-shadow: 0 0 0 6px rgba(236, 72, 153, 0); } } .animate-pulse-glow { animation: pulse-glow 2s ease-in-out infinite; } @keyframes slideInRight { from { opacity: 0; transform: translateX(10px); } to { opacity: 1; transform: translateX(0); } } .animate-slide-in-right { animation: slideInRight 0.25s ease-out; } .message-enter { animation: slideUp 0.3s ease-out; } .message-user { animation: slideInRight 0.3s ease-out; } .message-assistant { animation: slideUp 0.35s ease-out; } @keyframes shimmer-bg { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } .btn-hover-effect { position: relative; overflow: hidden; } .btn-hover-effect::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent); background-size: 200% 100%; animation: shimmer-bg 2s infinite; opacity: 0; transition: opacity 0.3s; } .btn-hover-effect:hover::after { opacity: 1; }