:root{--bg-color:#f3f4f6;--sidebar-bg:#fff;--text-primary:#1f2937;--text-secondary:#4b5563;--border-color:#e5e7eb;--accent-color:#3b82f6;--accent-hover:#2563eb;--user-bubble:#e0f2fe;--user-bubble-text:#0369a1;--ai-bubble:#fff;--ai-bubble-text:#1f2937;--shadow:0 4px 6px -1px #0000001a, 0 2px 4px -1px #0000000f;--error:#ef4444;--success:#10b981}[data-theme=dark]{--bg-color:#111827;--sidebar-bg:#1f2937;--text-primary:#f9fafb;--text-secondary:#9ca3af;--border-color:#374151;--accent-color:#3b82f6;--accent-hover:#60a5fa;--user-bubble:#1e3a8a;--user-bubble-text:#bfdbfe;--ai-bubble:#374151;--ai-bubble-text:#f9fafb;--shadow:0 4px 6px -1px #00000080}body{background-color:var(--bg-color);color:var(--text-primary);margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;transition:background-color .3s,color .3s}*{box-sizing:border-box}.app-container{width:100vw;height:100vh;display:flex;overflow:hidden}.sidebar{background-color:var(--sidebar-bg);border-right:1px solid var(--border-color);flex-direction:column;width:300px;transition:background-color .3s,border-color .3s;display:flex}.sidebar-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:20px;display:flex}.sidebar-title{margin:0;font-size:1.25rem;font-weight:600}.theme-toggle{border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;background:0 0;border-radius:6px;padding:6px 10px;font-size:.9rem;transition:all .2s}.theme-toggle:hover{background-color:var(--border-color)}.new-chat-btn{background-color:var(--accent-color);color:#fff;cursor:pointer;border:none;border-radius:8px;margin:15px;padding:10px;font-weight:500;transition:background-color .2s}.new-chat-btn:hover{background-color:var(--accent-hover)}.sessions-list{flex-direction:column;flex:1;gap:8px;padding:10px;display:flex;overflow-y:auto}.session-item{cursor:pointer;color:var(--text-primary);background:0 0;border:1px solid #0000;border-radius:8px;justify-content:space-between;align-items:center;padding:10px;transition:all .2s;display:flex}.session-item:hover{background-color:#9ca3af1a}.session-item.active{background-color:#3b82f61a;border-color:#3b82f64d;font-weight:500}.session-title{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.delete-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 8px}.delete-btn:hover{color:var(--error);background-color:#ef44441a}.backend-status{border-top:1px solid var(--border-color);color:var(--text-secondary);padding:15px;font-size:.85rem}.status-indicator{border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.status-indicator.online{background-color:var(--success)}.status-indicator.offline{background-color:var(--error)}.chat-area{background-color:var(--bg-color);flex-direction:column;flex:1;display:flex}.chat-header{border-bottom:1px solid var(--border-color);background-color:var(--sidebar-bg);padding:20px}.chat-header h2{margin:0;font-size:1.5rem;font-weight:600}.chat-header p{color:var(--text-secondary);margin:5px 0 0;font-size:.9rem}.messages-container{flex-direction:column;flex:1;gap:20px;padding:20px;display:flex;overflow-y:auto}.message-wrapper{flex-direction:column;max-width:80%;display:flex}.message-wrapper.user{align-self:flex-end}.message-wrapper.assistant{align-self:flex-start}.message-bubble{box-shadow:var(--shadow);border-radius:12px;padding:12px 16px;line-height:1.5}.message-wrapper.user .message-bubble{background-color:var(--user-bubble);color:var(--user-bubble-text);border-bottom-right-radius:4px}.message-wrapper.assistant .message-bubble{background-color:var(--ai-bubble);color:var(--ai-bubble-text);border-bottom-left-radius:4px}.message-source{color:var(--text-secondary);margin-top:6px;font-size:.8rem}.message-bubble pre{background-color:#0000000d;border-radius:6px;padding:10px;overflow-x:auto}[data-theme=dark] .message-bubble pre{background-color:#ffffff0d}.input-area{border-top:1px solid var(--border-color);background-color:var(--sidebar-bg);padding:20px}.input-form{gap:10px;max-width:900px;margin:0 auto;display:flex}.input-form input{border:1px solid var(--border-color);background-color:var(--bg-color);color:var(--text-primary);border-radius:24px;outline:none;flex:1;padding:14px 16px;font-size:1rem;transition:border-color .2s}.input-form input:focus{border-color:var(--accent-color)}.input-form button{background-color:var(--accent-color);color:#fff;cursor:pointer;border:none;border-radius:24px;padding:0 24px;font-weight:600;transition:background-color .2s}.input-form button:hover:not(:disabled){background-color:var(--accent-hover)}.input-form button:disabled{opacity:.6;cursor:not-allowed}.typing-indicator{align-items:center;gap:4px;padding:12px 16px;display:flex}.typing-dot{background-color:var(--text-secondary);border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite both typing}.typing-dot:first-child{animation-delay:-.32s}.typing-dot:nth-child(2){animation-delay:-.16s}@keyframes typing{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.followup-pill{transition:all .2s ease-in-out!important}.followup-pill:hover{transform:translateY(-1px);box-shadow:0 4px 6px -1px #0000001a;background-color:var(--accent-color)!important;color:#fff!important;border-color:var(--accent-color)!important}@keyframes fadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.mobile-sidebar-toggle{background:var(--sidebar-bg);border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;padding:6px 12px;font-size:1.2rem;display:none}.sidebar-close-btn{border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;background:0 0;border-radius:6px;padding:4px 10px;font-size:1rem;display:none}.sidebar-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:999;background:#00000080;width:100vw;height:100dvh;position:fixed;top:0;left:0}.admin-container{background-color:var(--bg-color);min-height:100vh;color:var(--text-primary);padding:40px 24px}.admin-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:30px;display:flex}.admin-card{background-color:var(--sidebar-bg);border:1px solid var(--border-color);border-radius:12px;margin-bottom:24px;padding:24px}.responsive-table-wrapper{-webkit-overflow-scrolling:touch;border-radius:8px;width:100%;margin-top:12px;overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;min-width:650px}@media screen and (max-width:768px){body{overflow-x:hidden}.app-container{width:100%;height:100dvh;position:relative;overflow:hidden}.mobile-sidebar-toggle{display:inline-flex}.sidebar-close-btn{display:inline-block}.sidebar{z-index:1000;width:280px;height:100dvh;max-height:100dvh;box-shadow:var(--shadow);transition:transform .3s cubic-bezier(.4,0,.2,1);position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.mobile-open{transform:translate(0)}.sidebar-header{padding:14px}.new-chat-btn{width:calc(100% - 20px);margin:10px;padding:12px}.sessions-list{padding:8px}.chat-header{padding:12px 14px}.chat-header h2{font-size:1.1rem}.chat-header p{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.85rem;display:-webkit-box;overflow:hidden}.messages-container{gap:14px;padding:12px}.message-wrapper{max-width:95%}.message-bubble{overflow-wrap:anywhere;word-break:break-word;padding:10px 12px;font-size:15px}.message-bubble pre{max-width:100%;font-size:.82rem;overflow-x:auto}.message-source{font-size:12px}.input-area{padding:12px}.input-form{gap:8px}.input-form input{padding:12px 14px;font-size:16px}.input-form button{white-space:nowrap;min-height:44px;padding:0 18px}.theme-toggle,.delete-btn{min-width:40px;min-height:40px}.followups-list{-webkit-overflow-scrolling:touch;padding-bottom:6px;overflow-x:auto;flex-wrap:nowrap!important}.followup-pill{flex-shrink:0}.admin-container{padding:16px 12px}.admin-header{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:20px}.admin-card{margin-bottom:16px;padding:16px 12px}}.dummy-auth-banner{color:#fff;text-align:center;background:linear-gradient(90deg,#1e3a8a,#3b82f6);border-bottom:1px solid #fff3;justify-content:center;align-items:center;gap:8px;padding:6px 16px;font-size:.85rem;display:flex}.auth-gate-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:9999;background:#0f172abf;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;top:0;left:0}.auth-gate-loading{color:#fff;flex-direction:column;align-items:center;gap:16px;font-size:1.1rem;font-weight:500;display:flex}.auth-spinner{border:4px solid #fff3;border-top-color:#3b82f6;border-radius:50%;width:48px;height:48px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-gate-modal{background:var(--sidebar-bg);border:1px solid var(--border-color);text-align:center;border-radius:16px;width:90%;max-width:480px;padding:32px;animation:.3s ease-out modalFadeIn;box-shadow:0 20px 25px -5px #0000004d,0 10px 10px -5px #0003}@keyframes modalFadeIn{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.auth-gate-header{flex-direction:column;align-items:center;gap:8px;margin-bottom:16px;display:flex}.auth-gate-icon{background:#3b82f61a;border-radius:50%;justify-content:center;align-items:center;padding:12px;font-size:2.5rem;display:inline-flex}.auth-badge{text-transform:uppercase;letter-spacing:.05em;color:#3b82f6;background:#3b82f61a;border-radius:12px;padding:4px 10px;font-size:.75rem;font-weight:700}.auth-gate-title{color:var(--text-primary);margin:0 0 10px;font-size:1.4rem;font-weight:700}.auth-gate-subtitle{color:var(--text-secondary);margin:0 0 20px;font-size:.95rem;line-height:1.5}.auth-error-banner{color:#ef4444;text-align:left;background:#ef44441a;border:1px solid #ef444433;border-radius:8px;margin-bottom:16px;padding:10px 14px;font-size:.88rem}.auth-gate-actions{margin-bottom:20px}.auth-btn-primary{color:#fff;background:#2563eb;border-radius:8px;width:100%;padding:12px 20px;font-size:1rem;font-weight:600;text-decoration:none;transition:background .2s,transform .1s;display:inline-block}.auth-btn-primary:hover{background:#1d4ed8;transform:translateY(-1px)}.auth-gate-divider{text-align:center;color:var(--text-secondary);letter-spacing:.05em;align-items:center;margin:20px 0;font-size:.75rem;font-weight:600;display:flex}.auth-gate-divider:before,.auth-gate-divider:after{content:"";border-bottom:1px solid var(--border-color);flex:1}.auth-gate-divider span{padding:0 10px}.auth-manual-form{flex-direction:column;gap:10px;display:flex}.auth-token-input{border:1px solid var(--border-color);background:var(--bg-color);width:100%;color:var(--text-primary);border-radius:8px;outline:none;padding:10px 14px;font-size:.9rem}.auth-token-input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.auth-btn-secondary{background:var(--bg-color);width:100%;color:var(--text-primary);border:1px solid var(--border-color);cursor:pointer;border-radius:8px;padding:10px;font-weight:600;transition:all .2s}.auth-btn-secondary:hover{background:var(--border-color)}.auth-gate-footer{color:var(--text-secondary);margin-top:20px;margin-bottom:0;font-size:.78rem}.citation-card{background-color:var(--sidebar-bg);border:1px solid var(--border-color);border-radius:8px;margin-top:8px;padding:10px 14px;transition:transform .2s,box-shadow .2s;box-shadow:0 1px 3px #0000000d}.citation-card:hover{transform:translateY(-1px);box-shadow:0 4px 8px #0000000d}.citation-doc-name{color:var(--text-primary);margin-bottom:4px;font-size:.85rem;font-weight:600}.citation-description{color:var(--text-secondary);font-size:.8rem;line-height:1.4}.source-details-box{background-color:var(--sidebar-bg);border:1px solid var(--border-color);box-shadow:var(--shadow);border-radius:10px;flex-direction:column;gap:6px;padding:12px 16px;font-size:.85rem;line-height:1.5;transition:transform .2s,box-shadow .2s;display:flex}.source-details-box:hover{transform:translateY(-2px);box-shadow:0 6px 12px #00000014}
