:root { --bg: #0e1117; --panel: #111827; --accent: #22c55e; --accent-2: #16a34a; --text: #e5e7eb; --muted: #9ca3af; --ai: #1f2937; --user: #0b5ed7; --shadow: 0 10px 30px rgba(0,0,0,.35); --ai-gradient: linear-gradient(135deg, #1f2937 0%, #374151 100%); --user-gradient: linear-gradient(135deg, #0b5ed7 0%, #0d6efd 100%); } body { background: radial-gradient(1200px 600px at 10% -10%, #1f2937 0, #0e1117 50%); color: var(--text); font-family: 'Nunito', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; min-height: 100vh; overflow-x: hidden; } /* Name Gate Styles */ .gate { position: fixed; inset: 0; background: rgba(0,0,0,.8); display: flex; align-items: center; justify-content: center; z-index: 9999; backdrop-filter: blur(10px); } .gate .panel { width: min(520px, 92vw); background: var(--panel); border: 1px solid rgba(255,255,255,.12); border-radius: 20px; padding: 30px; box-shadow: var(--shadow); animation: slideInUp 0.5s ease-out; } @keyframes slideInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .badge-free { background: rgba(34,197,94,.14); color: #86efac; border: 1px solid rgba(34,197,94,.35); } .select, select, input { background: #0f172a; color: var(--text); border: 1px solid rgba(255,255,255,.12); transition: all 0.3s ease; } .select:focus, select:focus, input:focus { background: #0f172a; color: var(--text); border-color: var(--accent); box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.25); transform: translateY(-1px); } /* Main App Styles */ .app { max-width: 1000px; margin: 0 auto; padding: 0; height: 100vh; display: flex; flex-direction: column; } .card { background: linear-gradient(180deg, rgba(255,255,255,0.06), rgba(255,255,255,0.02)); border: 1px solid rgba(255,255,255,0.08); backdrop-filter: blur(6px); box-shadow: var(--shadow); color: var(--text); height: 100vh; display: flex; flex-direction: column; border-radius: 0; } /* Header */ .card .p-3 { background: rgba(255,255,255,0.03); border-bottom: 1px solid rgba(255,255,255,0.08); backdrop-filter: blur(10px); } /* Chat Wrap */ .chat-wrap { flex: 1; overflow-y: auto; padding: 20px; scroll-behavior: smooth; background: linear-gradient(180deg, rgba(15, 23, 42, 0.3) 0%, rgba(15, 23, 42, 0.1) 100%); } /* Message Styles */ .msg { display: flex; gap: 16px; margin: 24px 0; animation: fadeInUp 0.4s ease-out; position: relative; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .msg .avatar { width: 40px; height: 40px; border-radius: 12px; display: flex; align-items: center; justify-content: center; background: #0b1220; border: 1px solid rgba(255,255,255,0.08); font-size: 18px; flex-shrink: 0; box-shadow: 0 4px 12px rgba(0,0,0,0.3); } .msg.user .avatar { background: var(--user-gradient); border-color: rgba(13, 110, 253, 0.3); } .msg.ai .avatar { background: var(--ai-gradient); border-color: rgba(34, 197, 94, 0.3); } .bubble { max-width: 85%; padding: 16px 20px; border-radius: 18px; border: 1px solid rgba(255,255,255,0.08); line-height: 1.6; position: relative; box-shadow: 0 4px 12px rgba(0,0,0,0.2); transition: all 0.3s ease; } .bubble:hover { transform: translateY(-1px); box-shadow: 0 6px 20px rgba(0,0,0,0.3); } .ai .bubble { background: var(--ai-gradient); border-color: rgba(34, 197, 94, 0.2); border-bottom-left-radius: 6px; } .user .bubble { background: var(--user-gradient); border-color: rgba(13, 110, 253, 0.3); border-bottom-right-radius: 6px; margin-left: auto; } /* Enhanced AI Response Styling */ .ai .bubble { position: relative; overflow: hidden; } .ai .bubble::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(34, 197, 94, 0.5), transparent); } .ai .bubble h1, .ai .bubble h2, .ai .bubble h3, .ai .bubble h4, .ai .bubble h5, .ai .bubble h6 { color: #86efac; margin-top: 0; margin-bottom: 12px; font-weight: 600; } .ai .bubble p { margin-bottom: 12px; } .ai .bubble code { background: rgba(0,0,0,0.3); padding: 2px 6px; border-radius: 4px; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; color: #fbbf24; } .ai .bubble pre { background: rgba(0,0,0,0.4); padding: 16px; border-radius: 8px; overflow-x: auto; border: 1px solid rgba(255,255,255,0.1); margin: 12px 0; } .ai .bubble pre code { background: none; padding: 0; color: #e5e7eb; } .ai .bubble ul, .ai .bubble ol { padding-left: 20px; margin: 12px 0; } .ai .bubble li { margin-bottom: 6px; } .ai .bubble blockquote { border-left: 4px solid var(--accent); padding-left: 16px; margin: 12px 0; font-style: italic; color: #d1d5db; } .ai .bubble table { width: 100%; border-collapse: collapse; margin: 12px 0; background: rgba(0,0,0,0.2); border-radius: 8px; overflow: hidden; } .ai .bubble th, .ai .bubble td { padding: 8px 12px; text-align: left; border-bottom: 1px solid rgba(255,255,255,0.1); } .ai .bubble th { background: rgba(34, 197, 94, 0.1); color: #86efac; font-weight: 600; } .meta { font-size: 11px; color: var(--muted); margin-top: 8px; opacity: 0.8; font-weight: 500; } /* Tools Bar */ .tools { border-top: 1px solid rgba(255,255,255,.08); padding: 12px 20px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; background: rgba(255,255,255,0.02); backdrop-filter: blur(10px); } /* Input Bar */ .input-bar { border-top: 1px solid rgba(255,255,255,.08); gap: 12px; padding: 20px; display: flex; align-items: flex-end; background: rgba(255,255,255,.02); backdrop-filter: blur(10px); } .input-bar textarea { resize: none; width: 100%; background: #0f172a; color: var(--text); border: 1px solid rgba(255,255,255,.12); border-radius: 12px; padding: 16px; min-height: 52px; max-height: 150px; outline: none; font-size: 14px; line-height: 1.5; transition: all 0.3s ease; } .input-bar textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.25); transform: translateY(-1px); } .input-bar textarea::placeholder { color: #6b7280; } /* Buttons */ .btn-success { background: var(--user-gradient); border: none; border-radius: 12px; padding: 12px 20px; font-weight: 600; transition: all 0.3s ease; box-shadow: 0 4px 12px rgba(13, 110, 253, 0.3); } .btn-success:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(13, 110, 253, 0.4); filter: brightness(1.1); } .btn-outline-light { border: 1px solid rgba(255,255,255,0.2); background: rgba(255,255,255,0.05); transition: all 0.3s ease; } .btn-outline-light:hover { background: rgba(255,255,255,0.1); border-color: rgba(255,255,255,0.3); transform: translateY(-1px); } /* Typing Indicator */ .typing { display: inline-flex; gap: 6px; align-items: center; padding: 8px 12px; border-radius: 12px; background: rgba(255,255,255,.05); } .dot { width: 8px; height: 8px; border-radius: 50%; background: #86efac; opacity: .6; animation: blink 1.3s infinite; } .dot:nth-child(2) { animation-delay: .2s; } .dot:nth-child(3) { animation-delay: .4s; } @keyframes blink { 0%, 80%, 100% { transform: translateY(0); opacity: .4; } 40% { transform: translateY(-4px); opacity: 1; } } /* Utility Classes */ .small-muted { color: var(--muted); font-size: 12px; } a, a:visited { color: #a5b4fc; } /* Responsive Design */ @media (max-width: 768px) { .app { height: 100vh; margin: 0; } .card { border-radius: 0; height: 100vh; } .chat-wrap { padding: 16px; } .bubble { max-width: 92%; padding: 14px 16px; } .msg { gap: 12px; margin: 16px 0; } .msg .avatar { width: 36px; height: 36px; font-size: 16px; } .input-bar { padding: 16px; } .tools { padding: 10px 16px; } .gate .panel { width: 95vw; margin: 20px; padding: 24px; } } @media (max-width: 480px) { .bubble { max-width: 95%; padding: 12px 14px; } .msg { gap: 8px; } .msg .avatar { width: 32px; height: 32px; font-size: 14px; } .input-bar textarea { padding: 12px; font-size: 16px; /* Prevents zoom on iOS */ } } /* Scrollbar Styling */ .chat-wrap::-webkit-scrollbar { width: 6px; } .chat-wrap::-webkit-scrollbar-track { background: rgba(255,255,255,.05); border-radius: 3px; } .chat-wrap::-webkit-scrollbar-thumb { background: rgba(255,255,255,.2); border-radius: 3px; } .chat-wrap::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.3); } /* Loading Animation */ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .loading { animation: pulse 2s infinite; } /* Enhanced Focus States */ *:focus { outline: none; } *:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } /* Notification System */ .notification { position: fixed; top: 20px; right: 20px; background: var(--panel); border: 1px solid rgba(255,255,255,0.12); border-radius: 12px; padding: 16px 20px; color: var(--text); font-size: 14px; font-weight: 500; box-shadow: var(--shadow); backdrop-filter: blur(10px); z-index: 10000; display: flex; align-items: center; gap: 12px; transform: translateX(400px); transition: transform 0.3s ease; max-width: 350px; } .notification.show { transform: translateX(0); } .notification-success { border-color: rgba(34, 197, 94, 0.3); background: linear-gradient(135deg, rgba(34, 197, 94, 0.1), rgba(34, 197, 94, 0.05)); } .notification-error { border-color: rgba(239, 68, 68, 0.3); background: linear-gradient(135deg, rgba(239, 68, 68, 0.1), rgba(239, 68, 68, 0.05)); } .notification-info { border-color: rgba(59, 130, 246, 0.3); background: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(59, 130, 246, 0.05)); } .notification i { font-size: 18px; } .notification-success i { color: #22c55e; } .notification-error i { color: #ef4444; } .notification-info i { color: #3b82f6; }