@tailwind base; @tailwind components; @tailwind utilities; :root { --primary: #6366f1; --secondary: #8b5cf6; --accent: #a855f7; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #0a0a0f; color: #f9fafb; min-height: 100vh; } ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #1f2937; border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: #374151; } .glass { background: rgba(17, 24, 39, 0.8); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.1); } .card { @apply glass rounded-xl p-6; } .btn-primary { @apply px-6 py-3 bg-gradient-to-r from-primary to-secondary rounded-lg font-semibold transition-all duration-200 hover:scale-105 hover:shadow-lg hover:shadow-primary/30; } .btn-secondary { @apply px-4 py-2 bg-dark3 rounded-lg border border-white/10 transition-all duration-200 hover:bg-dark2 hover:border-primary; } .input { @apply w-full px-4 py-3 bg-dark3 rounded-lg border border-white/10 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/30 transition-all duration-200; } .stat-card { @apply glass rounded-xl p-4 text-center; } .prediction-card { @apply glass rounded-lg p-4 border-l-4 border-primary cursor-pointer transition-all duration-200 hover:scale-[1.02] hover:shadow-lg; } .confusion-bar { height: 8px; border-radius: 4px; background: linear-gradient(90deg, #10b981, #f59e0b, #ef4444); transition: width 0.3s ease; } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 20px rgba(99, 102, 241, 0.4); } 50% { box-shadow: 0 0 40px rgba(99, 102, 241, 0.8); } } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } @keyframes swim { 0% { transform: translateX(-100%) scaleX(1); } 49% { transform: translateX(100%) scaleX(1); } 50% { transform: translateX(100%) scaleX(-1); } 99% { transform: translateX(-100%) scaleX(-1); } 100% { transform: translateX(-100%) scaleX(1); } } @keyframes rise { 0% { transform: translateY(100%); opacity: 0; } 50% { opacity: 1; } 100% { transform: translateY(-100%); opacity: 0; } } .glow { animation: pulse-glow 2s ease-in-out infinite; } .float { animation: float 3s ease-in-out infinite; } .swim { animation: swim 8s linear infinite; } /* LLM Flow Styles */ .llm-response-card { @apply glass rounded-lg p-4 border border-primary/30 transition-all duration-300; } .llm-response-card:hover { @apply border-primary/60 shadow-lg shadow-primary/20; } .gesture-action-badge { @apply inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium; } .gesture-badge-swipe { @apply bg-blue-500/20 text-blue-400; } .gesture-badge-pinch { @apply bg-purple-500/20 text-purple-400; } .gesture-badge-tap { @apply bg-green-500/20 text-green-400; } .rate-limit-indicator { @apply flex items-center gap-2 px-3 py-2 rounded-lg text-sm; } .rate-limit-ok { @apply bg-green-500/20 text-green-400; } .rate-limit-warning { @apply bg-yellow-500/20 text-yellow-400; } .rate-limit-error { @apply bg-red-500/20 text-red-400; } .llm-provider-logo { @apply w-8 h-8 rounded-lg flex items-center justify-center text-xs font-bold; } .provider-chatgpt { @apply bg-green-500 text-white; } .provider-gemini { @apply bg-blue-500 text-white; } .provider-claude { @apply bg-orange-500 text-white; } .prompt-template-btn { @apply px-3 py-2 rounded-lg text-sm transition-all duration-200; } .prompt-template-btn-active { @apply bg-primary text-white; } .prompt-template-btn-inactive { @apply bg-dark3 text-gray-400 hover:bg-dark2 hover:text-white; } @keyframes slide-in { from { transform: translateX(-20px); opacity: 0; } to { transform: translateX(0); opacity: 1; } } .slide-in { animation: slide-in 0.3s ease-out; } @keyframes typing { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } .typing-indicator { @apply flex items-center gap-1; } .typing-indicator span { @apply w-2 h-2 rounded-full bg-primary; animation: typing 1s ease-in-out infinite; } .typing-indicator span:nth-child(2) { animation-delay: 0.2s; } .typing-indicator span:nth-child(3) { animation-delay: 0.4s; } /* Settings Page Styles */ input[type="checkbox"] { @apply w-5 h-5 rounded border-gray-500 text-primary focus:ring-primary bg-dark3; } input[type="checkbox"]:checked { @apply bg-primary border-primary; } select { @apply w-full px-4 py-3 bg-dark3 rounded-lg border border-white/10 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/30 transition-all duration-200; } input[type="number"] { @apply px-4 py-2 bg-dark3 rounded-lg border border-white/10 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/30 transition-all duration-200; } /* Toast Notifications */ .llm-toast { position: fixed; bottom: 20px; right: 20px; padding: 12px 16px; border-radius: 8px; display: flex; align-items: center; gap: 8px; z-index: 9999; transform: translateY(100px); opacity: 0; transition: all 0.3s ease; max-width: 350px; } .llm-toast.show { transform: translateY(0); opacity: 1; } .llm-toast-info { background: rgba(99, 102, 241, 0.95); color: white; } .llm-toast-success { background: rgba(16, 185, 129, 0.95); color: white; } .llm-toast-error { background: rgba(239, 68, 68, 0.95); color: white; } .llm-toast button { background: none; border: none; color: white; font-size: 18px; cursor: pointer; opacity: 0.8; } .llm-toast button:hover { opacity: 1; }