:root{--color-bg: #f8fafc;--color-surface: #ffffff;--color-sidebar: #0f172a;--color-sidebar-hover: #1e293b;--color-sidebar-active:#1e293b;--color-primary: #6366f1;--color-primary-dark: #4f46e5;--color-primary-soft: #eef2ff;--color-text: #1e293b;--color-text-muted: #64748b;--color-text-light: #94a3b8;--color-border: #e2e8f0;--color-border-hover: #cbd5e1;--color-success: #10b981;--color-success-bg: #d1fae5;--color-warning: #f59e0b;--color-warning-bg: #fef3c7;--color-error: #ef4444;--color-error-bg: #fee2e2;--color-user-bubble: #6366f1;--color-user-text: #ffffff;--color-assistant-bg: #ffffff;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.25rem;--sp-6: 1.5rem;--sp-8: 2rem;--sp-10: 2.5rem;--sp-12: 3rem;--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "Cascadia Code", "Fira Code", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--radius-xl: 24px;--shadow-sm: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.05);--shadow: 0 4px 16px rgba(0,0,0,.08);--shadow-lg: 0 10px 40px rgba(0,0,0,.12);--sidebar-width: 240px;--sidebar-collapsed-width: 0px;--transition: .15s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:1.6;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr;height:100vh;overflow:hidden}.app-content{display:flex;flex-direction:column;overflow:hidden;background:var(--color-bg)}.sidebar{display:flex;flex-direction:column;background:var(--color-sidebar);color:#e2e8f0;overflow:hidden;flex-shrink:0}.sidebar-logo{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-5) var(--sp-5);border-bottom:1px solid rgba(255,255,255,.06)}.sidebar-logo-mark{width:34px;height:34px;background:var(--color-primary);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:var(--text-sm);color:#fff;flex-shrink:0;letter-spacing:-.5px}.sidebar-logo-name{font-weight:700;font-size:var(--text-base);color:#f1f5f9;letter-spacing:-.3px}.sidebar-nav{flex:1;display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-4) var(--sp-3);overflow-y:auto}.sidebar-nav-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-3);border-radius:var(--radius);color:#94a3b8;font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:background var(--transition),color var(--transition);text-decoration:none;border:none;background:transparent;width:100%;text-align:left}.sidebar-nav-item:hover{background:#ffffff0f;color:#e2e8f0;text-decoration:none}.sidebar-nav-item.active{background:#6366f140;color:#a5b4fc}.sidebar-nav-item svg{flex-shrink:0;opacity:.8}.sidebar-footer{padding:var(--sp-4) var(--sp-4);border-top:1px solid rgba(255,255,255,.06);display:flex;flex-direction:column;gap:var(--sp-2)}.sidebar-model-info{font-size:var(--text-xs);color:#64748b;line-height:1.5}.sidebar-model-info strong{color:#94a3b8;font-weight:500}.sidebar-logout{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius);color:#64748b;font-size:var(--text-sm);cursor:pointer;transition:background var(--transition),color var(--transition);border:none;background:transparent;width:100%;text-align:left}.sidebar-logout:hover{background:#ef444426;color:#fca5a5}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--sp-6);background:linear-gradient(135deg,#f8fafc,#eef2ff)}.auth-card{width:100%;max-width:420px;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--sp-10) var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-6)}.auth-header{display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);text-align:center}.auth-logo-mark{width:56px;height:56px;background:var(--color-primary);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:var(--text-xl);color:#fff;box-shadow:0 8px 24px #6366f159;letter-spacing:-1px}.auth-title{font-size:var(--text-2xl);font-weight:700;color:var(--color-text);letter-spacing:-.5px}.auth-subtitle{font-size:var(--text-sm);color:var(--color-text-muted)}.auth-form{display:flex;flex-direction:column;gap:var(--sp-4)}.form-group{display:flex;flex-direction:column;gap:var(--sp-1)}.form-group label{font-size:var(--text-sm);font-weight:500;color:var(--color-text)}.form-error{font-size:var(--text-xs);color:var(--color-error);margin-top:var(--sp-1)}.auth-footer{text-align:center;font-size:var(--text-sm);color:var(--color-text-muted)}.input{width:100%;padding:var(--sp-3) var(--sp-4);background:var(--color-bg);border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:var(--text-sm);color:var(--color-text);font-family:var(--font-sans);transition:border-color var(--transition),box-shadow var(--transition);outline:none}.input:hover{border-color:var(--color-border-hover)}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #6366f11f;background:var(--color-surface)}.input::placeholder{color:var(--color-text-light)}.input.error{border-color:var(--color-error)}.input.error:focus{box-shadow:0 0 0 3px #ef44441f}textarea.input{resize:vertical;min-height:100px}select.input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:var(--sp-10);cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius);font-size:var(--text-sm);font-weight:500;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition);border:1.5px solid transparent;text-decoration:none;white-space:nowrap;line-height:1}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark);box-shadow:0 4px 12px #6366f14d;text-decoration:none}.btn-secondary{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-bg);border-color:var(--color-border-hover);text-decoration:none}.btn-ghost{background:transparent;color:var(--color-text-muted);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-bg);color:var(--color-text);text-decoration:none}.btn-danger{background:transparent;color:var(--color-error);border-color:transparent}.btn-danger:hover:not(:disabled){background:var(--color-error-bg);text-decoration:none}.btn-full{width:100%}.btn-sm{padding:var(--sp-1) var(--sp-3);font-size:var(--text-xs);border-radius:var(--radius-sm)}.btn-icon{padding:var(--sp-2);border-radius:var(--radius)}.card{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.card-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-5) var(--sp-6);border-bottom:1px solid var(--color-border)}.card-title{font-size:var(--text-lg);font-weight:600;color:var(--color-text);letter-spacing:-.2px}.card-body{padding:var(--sp-5) var(--sp-6)}.badge{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border-radius:999px;font-size:var(--text-xs);font-weight:600;letter-spacing:.2px}.badge-success{background:var(--color-success-bg);color:#065f46}.badge-warning{background:var(--color-warning-bg);color:#92400e}.badge-error{background:var(--color-error-bg);color:#991b1b}.badge-neutral{background:#f1f5f9;color:var(--color-text-muted)}.badge-primary{background:var(--color-primary-soft);color:var(--color-primary-dark)}.message-list{display:flex;flex-direction:column;gap:var(--sp-5);padding:var(--sp-6)}.message-row{display:flex;gap:var(--sp-3)}.message-row.user{justify-content:flex-end}.message-row.assistant{justify-content:flex-start}.message-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:700;flex-shrink:0;margin-top:2px}.message-avatar.assistant-avatar{background:var(--color-primary-soft);color:var(--color-primary)}.message-bubble{max-width:min(520px,72%);display:flex;flex-direction:column;gap:var(--sp-2)}.message-content{padding:var(--sp-4) var(--sp-5);border-radius:var(--radius-xl);line-height:1.65;font-size:var(--text-sm)}.message-row.user .message-content{background:var(--color-user-bubble);color:var(--color-user-text);border-bottom-right-radius:var(--radius-sm)}.message-row.assistant .message-content{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-bottom-left-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.message-meta{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.message-row.user .message-meta{justify-content:flex-end}.message-content h1,.message-content h2,.message-content h3{font-weight:600;margin-top:var(--sp-4);margin-bottom:var(--sp-2);line-height:1.3}.message-content h1{font-size:var(--text-xl)}.message-content h2{font-size:var(--text-lg)}.message-content h3{font-size:var(--text-base)}.message-content p{margin-bottom:var(--sp-3)}.message-content p:last-child{margin-bottom:0}.message-content ul,.message-content ol{padding-left:var(--sp-5);margin-bottom:var(--sp-3)}.message-content li{margin-bottom:var(--sp-1)}.message-content code{background:#0000000f;border-radius:4px;padding:1px 5px;font-family:var(--font-mono);font-size:.85em}.message-content pre{background:#1e293b;color:#e2e8f0;border-radius:var(--radius);padding:var(--sp-4);overflow-x:auto;margin:var(--sp-3) 0}.message-content pre code{background:transparent;padding:0;color:inherit;font-size:var(--text-sm)}.message-content strong{font-weight:600}.message-content em{font-style:italic}.message-content blockquote{border-left:3px solid var(--color-primary);padding-left:var(--sp-4);color:var(--color-text-muted);font-style:italic;margin:var(--sp-3) 0}.message-content.error-content{background:var(--color-error-bg);border-color:#fca5a5;color:#991b1b}.loading-dots{display:flex;align-items:center;gap:5px;padding:var(--sp-3) var(--sp-4)}.loading-dots span{width:7px;height:7px;border-radius:50%;background:var(--color-text-light);animation:dot-bounce 1.2s infinite ease-in-out}.loading-dots span:nth-child(1){animation-delay:0s}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes dot-bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-6px);opacity:1}}.chat-layout{display:grid;grid-template-columns:260px 1fr;height:100%;overflow:hidden}.chat-conversations{display:flex;flex-direction:column;border-right:1px solid var(--color-border);background:var(--color-surface);overflow:hidden}.chat-conversations-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--color-border);flex-shrink:0}.chat-conversations-header h2{font-size:var(--text-sm);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.6px}.conversation-list{flex:1;overflow-y:auto;padding:var(--sp-2)}.conversation-item{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-3);border-radius:var(--radius);cursor:pointer;transition:background var(--transition);gap:var(--sp-2)}.conversation-item:hover{background:var(--color-bg)}.conversation-item.active{background:var(--color-primary-soft)}.conversation-item-title{font-size:var(--text-sm);color:var(--color-text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.conversation-item.active .conversation-item-title{color:var(--color-primary-dark)}.conversation-item-delete{opacity:0;transition:opacity var(--transition);flex-shrink:0}.conversation-item:hover .conversation-item-delete{opacity:1}.chat-main{display:flex;flex-direction:column;overflow:hidden}.chat-messages{flex:1;overflow-y:auto;scroll-behavior:smooth}.chat-input-area{padding:var(--sp-4) var(--sp-6);border-top:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0}.chat-input-row{display:flex;gap:var(--sp-3);align-items:flex-end}.chat-input-row .input{flex:1;resize:none;min-height:44px;max-height:180px;overflow-y:auto}.chat-toolbar{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-6);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;flex-wrap:wrap}.chat-toolbar-group{display:flex;align-items:center;gap:var(--sp-2)}.chat-toolbar-label{font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted);white-space:nowrap}.chat-toolbar select{padding:5px var(--sp-8) 5px var(--sp-3);font-size:var(--text-xs);background-color:var(--color-bg);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;font-family:var(--font-sans);outline:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.chat-toolbar select:focus{border-color:var(--color-primary)}.support-toggle{display:flex;align-items:center;gap:var(--sp-2);cursor:pointer;font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted);-webkit-user-select:none;user-select:none}.support-toggle input[type=checkbox]{width:14px;height:14px;accent-color:var(--color-primary);cursor:pointer}.sources-panel{padding:0 var(--sp-6) var(--sp-4)}.sources-panel-toggle{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted);background:none;border:none;cursor:pointer;padding:var(--sp-2) 0;transition:color var(--transition)}.sources-panel-toggle:hover{color:var(--color-text)}.sources-list{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-3)}.source-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--color-bg);border-radius:var(--radius);border:1px solid var(--color-border);font-size:var(--text-xs);color:var(--color-text-muted)}.source-item-name{font-weight:500;color:var(--color-text);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.thoughts-list{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-3)}.thought-item{display:flex;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--color-bg);border-radius:var(--radius);border:1px solid var(--color-border);font-size:var(--text-xs)}.thought-step{width:20px;height:20px;border-radius:50%;background:var(--color-primary-soft);color:var(--color-primary-dark);font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.thought-content{flex:1}.thought-tool{font-weight:600;color:var(--color-primary)}.thought-summary{color:var(--color-text-muted);margin-top:2px}.error-bar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5);background:var(--color-error-bg);color:#991b1b;font-size:var(--text-sm);border-bottom:1px solid #fca5a5;flex-shrink:0}.page{display:flex;flex-direction:column;height:100%;overflow:hidden}.page-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-5) var(--sp-8);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0}.page-title{font-size:var(--text-xl);font-weight:700;color:var(--color-text);letter-spacing:-.4px}.page-body{flex:1;overflow-y:auto;padding:var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-8)}.collections-row{display:flex;gap:var(--sp-4);overflow-x:auto;padding-bottom:var(--sp-2);scrollbar-width:thin}.collection-card{flex-shrink:0;width:160px;min-height:90px;border-radius:var(--radius-lg);border:1.5px solid var(--color-border);padding:var(--sp-4);cursor:pointer;transition:all var(--transition);background:var(--color-surface);display:flex;flex-direction:column;gap:var(--sp-2)}.collection-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow)}.collection-card.active{border-color:var(--color-primary);background:var(--color-primary-soft)}.collection-card-name{font-size:var(--text-sm);font-weight:600;color:var(--color-text)}.collection-card.active .collection-card-name{color:var(--color-primary-dark)}.collection-card-add{border-style:dashed;color:var(--color-text-muted);justify-content:center;align-items:center;font-size:var(--text-xl);transition:all var(--transition)}.collection-card-add:hover{border-color:var(--color-primary);color:var(--color-primary)}.tab-bar{display:flex;gap:var(--sp-1);padding:var(--sp-1);background:var(--color-bg);border-radius:var(--radius);width:fit-content}.tab-btn{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted);border:none;background:transparent;cursor:pointer;transition:all var(--transition)}.tab-btn:hover{color:var(--color-text);background:var(--color-surface)}.tab-btn.active{background:var(--color-surface);color:var(--color-primary);box-shadow:var(--shadow-sm)}.sources-table{display:flex;flex-direction:column;gap:var(--sp-2)}.source-row{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);transition:border-color var(--transition)}.source-row:hover{border-color:var(--color-border-hover)}.source-row-name{flex:1;font-size:var(--text-sm);font-weight:500;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.source-row-error{font-size:var(--text-xs);color:var(--color-error);flex:1}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-6);max-width:900px}.char-counter{font-size:var(--text-xs);color:var(--color-text-light);text-align:right;margin-top:var(--sp-1)}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) 0;border-bottom:1px solid var(--color-border)}.toggle-row:last-child{border-bottom:none}.toggle-label{font-size:var(--text-sm);font-weight:500;color:var(--color-text)}.toggle-switch{position:relative;width:36px;height:20px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-track{position:absolute;inset:0;background:var(--color-border);border-radius:999px;cursor:pointer;transition:background var(--transition)}.toggle-switch input:checked~.toggle-track{background:var(--color-primary)}.toggle-thumb{position:absolute;top:3px;left:3px;width:14px;height:14px;background:#fff;border-radius:50%;transition:transform var(--transition);pointer-events:none;box-shadow:0 1px 3px #0003}.toggle-switch input:checked~.toggle-track~.toggle-thumb{transform:translate(16px)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.gap-6{gap:var(--sp-6)}.mt-4{margin-top:var(--sp-4)}.mb-4{margin-bottom:var(--sp-4)}.w-full{width:100%}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-muted{color:var(--color-text-muted)}.font-semibold{font-weight:600}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}
