.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:#0b0b0b;padding:1rem}.login-card{background:#1a1a1a;border-radius:12px;box-shadow:0 10px 40px #0000001a;padding:2.5rem;width:100%;max-width:420px}.login-header{text-align:center;margin-bottom:2rem}.login-header h1{font-size:2rem;font-weight:700;color:#fee;margin:0 0 .5rem}.login-header p{color:#d6c7c7;margin:0;font-size:.95rem}.login-form{display:flex;flex-direction:column;gap:1.25rem}.login-error{background-color:#fee;border:1px solid #fcc;border-radius:6px;padding:.75rem 1rem;color:#c33;font-size:.9rem;text-align:center}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-size:.9rem;font-weight:600;color:#fee}.form-group input{padding:.75rem 1rem;border:1.5px solid #e2e8f0;border-radius:8px;font-size:1rem;transition:all .2s;outline:none}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input:disabled{background-color:#f7fafc;cursor:not-allowed}.login-button{background:linear-gradient(135deg,#40c8ee,#40c8ee);color:#fff;border:none;border-radius:8px;padding:.875rem 1.5rem;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;margin-top:.5rem}.login-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.flex-col{display:flex;flex-direction:column;gap:4px}.user-info{display:flex;align-items:center;gap:12px}.user-email{font-size:13px;color:var(--text-secondary);font-weight:500}.logout-button{padding:6px 14px;background:#ef44441a;color:#ef4444;border:1px solid rgba(239,68,68,.25);border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit}.logout-button:hover{background:#ef4444;color:#fff;border-color:#ef4444}.logout-button:active{transform:scale(.97)}.error-retry{display:flex;align-items:center;gap:8px;margin-top:8px;padding:6px 10px;background:#ef444414;border:1px solid rgba(239,68,68,.2);border-radius:8px}.error-retry-label{font-size:12px;color:#ef4444;flex:1}.retry-button{padding:4px 12px;background:#ef4444;color:#fff;border:none;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:background .2s;white-space:nowrap;font-family:inherit}.retry-button:hover:not(:disabled){background:#c53030}.retry-button:disabled{opacity:.5;cursor:not-allowed}.app{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--bg-app)}.chat-container{max-width:920px;width:100%;background:var(--bg-primary);border-radius:16px;box-shadow:var(--shadow);border:1px solid var(--border);display:flex;flex-direction:column;height:90vh}.chat-header{padding:14px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--bg-primary);border-radius:16px 16px 0 0;flex-shrink:0}.chat-header h1{font-size:16px;font-weight:700;color:var(--text-primary);letter-spacing:-.01em}.status-badge{padding:3px 10px;border-radius:20px;font-size:11px;font-weight:500;text-transform:capitalize;display:flex;align-items:center;gap:5px}.status-badge:before{content:"●";font-size:7px}.status-badge[data-status=initializing]{background:#fbbf241f;color:#f59e0b}.status-badge[data-status=initializing]:before{color:#f59e0b}.status-badge[data-status=ready]{background:#22c55e1f;color:#22c55e}.status-badge[data-status=ready]:before{color:#22c55e}.status-badge[data-status=error]{background:#ef44441f;color:#ef4444}.status-badge[data-status=error]:before{color:#ef4444}.error-banner{background:#ef444414;color:#ef4444;padding:9px 20px;border-bottom:1px solid rgba(239,68,68,.18);font-size:13px;flex-shrink:0}.messages-wrapper{flex:1;position:relative;overflow:hidden;min-height:0;background:var(--bg-app)}.messages{height:100%;overflow-y:auto;padding:20px 20px 12px;display:flex;flex-direction:column;gap:2px}.messages::-webkit-scrollbar{width:4px}.messages::-webkit-scrollbar-track{background:transparent}.messages::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.messages::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:14px;text-align:center;padding:40px}.scroll-to-bottom{position:absolute;bottom:12px;left:50%;transform:translate(-50%);width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:var(--transition);animation:scrollBtnIn .2s ease-out}.scroll-to-bottom:hover{background:var(--bg-secondary);color:var(--text-primary);transform:translate(-50%) scale(1.08)}.scroll-to-bottom:active{transform:translate(-50%) scale(.95)}@keyframes scrollBtnIn{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.message{display:flex;align-items:flex-end;gap:8px;animation:messageIn .25s cubic-bezier(.4,0,.2,1);margin-bottom:2px}.message-user{flex-direction:row-reverse}@keyframes messageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.message-avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.message-user .message-avatar{background:var(--primary)}.message-assistant .message-avatar{background:var(--bg-tertiary)}.message-content{display:flex;flex-direction:column;gap:3px;max-width:72%}.message-user .message-content{align-items:flex-end}.message-assistant .message-content{align-items:flex-start}.message-text{padding:10px 14px;line-height:1.55;white-space:pre-wrap;word-wrap:break-word;font-size:14px}.message-user .message-text{background:var(--msg-user-bg);color:var(--msg-user-text);border-radius:18px 18px 4px}.message-assistant .message-text{background:var(--bg-secondary);color:var(--msg-bot-text);border-radius:4px 18px 18px;border:1px solid var(--border)}.message-footer{display:flex;align-items:center;gap:6px;padding:0 2px}.message-time{font-size:11px;color:var(--text-muted)}.copy-button{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .2s ease;opacity:0;padding:0}.message:hover .copy-button{opacity:1}.copy-button:hover{background:var(--bg-tertiary);color:var(--text-secondary)}.copy-button.copied{opacity:1;color:#22c55e}.streaming-status{display:flex;align-items:center;gap:8px;margin-top:6px}.typing-dots{display:flex;align-items:center;gap:3px}.typing-dot{width:7px;height:7px;border-radius:50%;background:var(--text-muted);animation:typingWave 1.4s ease-in-out infinite}.typing-dot:nth-child(1){animation-delay:0s}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typingWave{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.status-label{font-size:12px;background:linear-gradient(90deg,var(--text-muted) 0%,var(--primary) 40%,var(--text-muted) 80%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:statusFade .3s ease-out,shimmerWave 2s ease-in-out infinite}@keyframes statusFade{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}@keyframes shimmerWave{0%{background-position:100% 0}to{background-position:-100% 0}}.chat-footer{padding:12px 16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:6px;background:var(--bg-primary);border-radius:0 0 16px 16px;flex-shrink:0}.input-form{display:flex;gap:8px;align-items:center}.message-input{flex:1;padding:10px 16px;border:1.5px solid var(--border);border-radius:24px;font-size:14px;font-family:inherit;outline:none;transition:border-color .2s,background .2s;background:var(--bg-secondary);color:var(--text-primary)}.message-input::placeholder{color:var(--text-muted)}.message-input:focus{border-color:var(--primary);background:var(--bg-primary)}.message-input:disabled{opacity:.5;cursor:not-allowed}.send-button{border:none;border-radius:50%;cursor:pointer;transition:var(--transition);background:var(--primary);color:#fff;width:40px;height:40px;min-width:40px;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 2px 8px #40c8ee59}.send-button:hover:not(:disabled){background:var(--primary-hover);transform:scale(1.06);box-shadow:0 4px 12px #40c8ee73}.send-button:active:not(:disabled){transform:scale(.94)}.send-button:disabled{background:var(--bg-tertiary);color:var(--text-muted);cursor:not-allowed;box-shadow:none}.clear-button{border:none;border-radius:20px;background:transparent;color:var(--text-muted);padding:5px 12px;font-size:12px;cursor:pointer;align-self:center;display:flex;align-items:center;gap:6px;transition:all .2s;font-family:inherit}.clear-button:hover{background:var(--bg-secondary);color:var(--text-secondary)}.footer-note{font-size:11px;color:var(--text-muted);text-align:center}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.message-separator{display:flex;align-items:center;gap:12px;margin:16px 0;font-size:12px;color:var(--primary);font-weight:500}.message-separator:before,.message-separator:after{content:"";flex:1;height:1px;background:var(--border)}:root{--primary: #40C8EE;--primary-hover: #2db8de;--primary-active: #1aa8ce;--bg-app: #f0f2f5;--bg-primary: #ffffff;--bg-secondary: #f1f3f5;--bg-tertiary: #e5e7eb;--text-primary: #111827;--text-secondary: #6b7280;--text-muted: #9ca3af;--border: #e5e7eb;--shadow: 0 4px 24px rgba(0, 0, 0, .08);--msg-user-bg: var(--primary);--msg-user-text: #ffffff;--msg-bot-bg: var(--bg-secondary);--msg-bot-text: var(--text-primary);--transition: all .3s cubic-bezier(.4, 0, .2, 1)}@media(prefers-color-scheme:dark){:root{--bg-app: #0f0f0f;--bg-primary: #1a1a1a;--bg-secondary: #2a2a2a;--bg-tertiary: #3a3a3a;--text-primary: #f9fafb;--text-secondary: #9ca3af;--text-muted: #6b7280;--border: #374151;--shadow: 0 4px 24px rgba(0, 0, 0, .45)}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-app);color:var(--text-primary)}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{min-height:100vh}.markdown-message{line-height:1.6;word-wrap:break-word}.markdown-message strong{font-weight:700}.markdown-message em{font-style:italic;opacity:.9}.markdown-message p{margin:0 0 .5em}.markdown-message p:last-child{margin-bottom:0}.markdown-message .inline-code{background:#0000001f;padding:.15em .45em;border-radius:4px;font-family:Monaco,Menlo,Consolas,monospace;font-size:.875em}.message-user .inline-code{background:#fff3}.markdown-message .code-block{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;padding:.75em 1em;overflow-x:auto;margin:.5em 0}.message-user .code-block{background:#00000026;border-color:#ffffff26}.markdown-message .code-block code{font-family:Monaco,Menlo,Consolas,monospace;font-size:.875em;line-height:1.5}.markdown-message .markdown-link{color:var(--primary);text-decoration:none}.message-user .markdown-link{color:var(--msg-user-text);text-decoration:underline}.markdown-message .markdown-link:hover{text-decoration:underline}.markdown-message .markdown-list{margin:.5em 0;padding-left:1.5em}.markdown-message .markdown-list li{margin:.25em 0}.markdown-message .markdown-heading{margin:.5em 0 .25em;font-weight:600}.markdown-message h1{font-size:1.5em}.markdown-message h2{font-size:1.3em}.markdown-message h3{font-size:1.1em}.markdown-message .markdown-table{border-collapse:collapse;margin:.75em 0;width:100%;border:1px solid var(--border)}.markdown-message .markdown-table td{border:1px solid var(--border);padding:.6em 1em;text-align:left}.markdown-message .markdown-table tr:first-child{background:var(--bg-tertiary);font-weight:600}.markdown-message .markdown-table tr:first-child td{border-bottom:2px solid var(--border)}.markdown-message .markdown-table tr:nth-child(2n) td{background:var(--bg-secondary)}
