:root{--bg:#0a0a0b;--bg-elevated:#0d0d0f;--bg-card:#111113;--bg-hover:#17171a;--bg-active:#1c1c20;--border:#1f1f23;--border-strong:#2a2a30;--text:#e8e8ea;--text-muted:#8c8c96;--text-dim:#5a5a64;--accent:#46c18a;--accent-hover:#5fd0a0;--accent-dim:#2f6f54;--accent-weak:#46c18a1f;--accent-border:#46c18a4d;--amber:#d6a344;--danger:#e5675f;--danger-weak:#e5675f1a;--radius:6px;--radius-sm:5px;--ring:0 0 0 3px var(--accent-weak);--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);letter-spacing:-.006em;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:14px;line-height:1.55}h1,h2,h3,h4{letter-spacing:-.02em;font-weight:650}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}::selection{background:var(--accent-weak);color:var(--text)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:padding-box;border:3px solid #0000;border-radius:999px}.mono{font-family:var(--font-mono);letter-spacing:0;font-size:.92em}input,textarea{background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;width:100%;padding:10px 12px;font-family:inherit;font-size:14px;transition:border-color .12s,box-shadow .12s}input::placeholder,textarea::placeholder{color:var(--text-dim)}input:focus,textarea:focus{border-color:var(--accent-border);box-shadow:var(--ring)}a{color:var(--accent);font-weight:500;text-decoration:none}a:hover{color:var(--accent-hover);text-underline-offset:2px;text-decoration:underline}.brand{letter-spacing:-.02em;align-items:center;gap:9px;font-size:15.5px;font-weight:650;display:inline-flex}.brand .logo{width:26px;height:26px;display:block}.brand .wordmark b{color:var(--text);font-weight:700}.brand .wordmark span{color:var(--text-dim);font-weight:600}.btn-primary{background:var(--text);color:#0a0a0b;border-radius:var(--radius-sm);justify-content:center;align-items:center;gap:8px;width:100%;padding:10px 16px;font-size:13.5px;font-weight:600;transition:background .12s,opacity .12s;display:inline-flex}.btn-primary:hover:not(:disabled){background:#fff}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-primary .spinner{border-color:#0a0a0b #00000040 #00000040}.btn-secondary{color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:0 0;justify-content:center;align-items:center;gap:7px;padding:9px 14px;font-size:13px;font-weight:500;transition:background .12s,border-color .12s;display:inline-flex}.btn-secondary:hover{background:var(--bg-hover);border-color:var(--text-dim)}.btn-danger{color:var(--text-dim);border-radius:var(--radius-sm);background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:7px 9px;font-size:12px;transition:background .12s,color .12s;display:inline-flex}.btn-danger:hover{background:var(--danger-weak);color:var(--danger)}.icon{flex-shrink:0;width:16px;height:16px}.error-msg{background:var(--danger-weak);color:#f0a39d;border-radius:var(--radius-sm);border:1px solid #e5675f47;align-items:flex-start;gap:9px;margin-bottom:16px;padding:10px 12px;font-size:13px;display:flex}.error-msg .icon{color:var(--danger);margin-top:1px}.muted{color:var(--text-muted)}.dim{color:var(--text-dim)}.auth-split{grid-template-columns:1.05fr 1fr;min-height:100vh;display:grid}.auth-brand{background:var(--bg-elevated);border-right:1px solid var(--border);flex-direction:column;justify-content:space-between;padding:44px;display:flex;position:relative;overflow:hidden}.auth-brand:before{content:"";background-image:linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px);opacity:.4;pointer-events:none;background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(160deg,#000 10%,#0000 80%);mask-image:linear-gradient(160deg,#000 10%,#0000 80%)}.auth-brand>*{z-index:1;position:relative}.auth-hero h2{letter-spacing:-.03em;margin:26px 0 14px;font-size:32px;font-weight:700;line-height:1.14}.auth-hero h2 .grad{color:var(--accent)}.auth-hero p{color:var(--text-muted);max-width:42ch;font-size:15px}.auth-points{gap:13px;margin-top:30px;list-style:none;display:grid}.auth-points li{align-items:flex-start;gap:12px;font-size:13.5px;display:flex}.auth-points .check{background:var(--accent-weak);width:20px;height:20px;color:var(--accent);border:1px solid var(--accent-border);border-radius:5px;flex-shrink:0;place-items:center;display:grid}.auth-points b{color:var(--text);font-weight:600}.auth-points span{color:var(--text-muted)}.auth-foot{color:var(--text-dim);font-size:12px;font-family:var(--font-mono)}.auth-main{place-items:center;padding:32px 24px;display:grid}.auth-card{width:100%;max-width:384px}.auth-card h1{margin-bottom:6px;font-size:24px}.auth-card .subtitle{color:var(--text-muted);margin-bottom:26px;font-size:14px}.field{margin-bottom:15px}.field label{color:var(--text-muted);margin-bottom:7px;font-size:12px;font-weight:500;display:block}.auth-switch{text-align:center;color:var(--text-muted);margin-top:22px;font-size:13px}.layout{grid-template-columns:248px 1fr;height:100vh;display:grid}.sidebar{background:var(--bg-elevated);border-right:1px solid var(--border);flex-direction:column;padding:16px 12px;display:flex}.sidebar-header{border-bottom:1px solid var(--border);margin-bottom:18px;padding:2px 6px 16px}.sidebar-header .tenant{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);align-items:center;gap:9px;margin-top:14px;padding:7px 9px;display:flex}.sidebar-header .tenant-badge{background:var(--bg-active);border:1px solid var(--border-strong);width:26px;height:26px;color:var(--text);border-radius:6px;flex-shrink:0;place-items:center;font-size:12px;font-weight:650;display:grid}.sidebar-header .tenant-name{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.sidebar-header .tenant-plan{color:var(--text-dim);font-size:11px;font-family:var(--font-mono)}.nav-section{margin-bottom:16px}.nav-section-title{text-transform:uppercase;color:var(--text-dim);letter-spacing:.08em;margin-bottom:7px;padding:0 10px;font-size:11px;font-weight:600}.nav-link{border-radius:var(--radius-sm);color:var(--text-muted);align-items:center;gap:10px;margin-bottom:2px;padding:8px 10px;font-size:13.5px;font-weight:500;transition:background .12s,color .12s;display:flex;position:relative}.nav-link .icon{color:var(--text-dim);width:17px;height:17px;transition:color .12s}.nav-link:hover{background:var(--bg-hover);color:var(--text)}.nav-link:hover .icon{color:var(--text-muted)}.nav-link.active{background:var(--bg-active);color:var(--text)}.nav-link.active .icon{color:var(--accent)}.nav-link.active:before{content:"";background:var(--accent);border-radius:0 2px 2px 0;width:2px;height:16px;position:absolute;top:50%;left:-12px;transform:translateY(-50%)}.sidebar-footer{border-top:1px solid var(--border);margin-top:auto;padding-top:14px}.user-row{align-items:center;gap:9px;margin-bottom:11px;padding:0 4px;display:flex}.avatar{background:var(--bg-card);border:1px solid var(--border-strong);width:30px;height:30px;color:var(--text);border-radius:6px;flex-shrink:0;place-items:center;font-size:12px;font-weight:600;display:grid}.user-email{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.main-area{padding:28px 36px;overflow-y:auto}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;display:flex}.page-header h2{font-size:21px}.page-header .page-sub{color:var(--text-muted);margin-top:3px;font-size:13px}.doc-grid{gap:8px;display:grid}.doc-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:13px 15px;transition:border-color .12s,background .12s;display:grid}.doc-card:hover{border-color:var(--border-strong);background:var(--bg-hover)}.doc-icon{border-radius:var(--radius-sm);background:var(--bg-elevated);width:38px;height:38px;color:var(--text-muted);border:1px solid var(--border);flex-shrink:0;place-items:center;display:grid}.doc-icon .icon{width:18px;height:18px}.doc-card .filename{margin-bottom:3px;font-size:14px;font-weight:600}.doc-card .meta{color:var(--text-muted);font-size:12px;font-family:var(--font-mono);flex-wrap:wrap;align-items:center;display:flex}.doc-card .meta .sep{color:var(--text-dim);margin:0 7px}.doc-actions{align-items:center;gap:8px;display:flex}.status-pill{text-transform:capitalize;color:var(--text-muted);border:1px solid var(--border-strong);font-size:11px;font-weight:500;font-family:var(--font-mono);letter-spacing:0;border-radius:999px;align-items:center;gap:6px;padding:3px 9px 3px 8px;display:inline-flex}.status-pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.status-pill.ready{color:var(--accent)}.status-pill.processing{color:var(--amber)}.status-pill.processing:before{animation:1.2s ease-in-out infinite pulse-dot}.status-pill.failed{color:var(--danger)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.25}}.upload-progress-card{background:var(--bg-card);border:1px solid var(--border-strong);border-radius:var(--radius);margin-bottom:12px;padding:15px 16px}.upload-progress-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.upload-progress-head .filename{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:9px;font-size:14px;font-weight:600;display:flex;overflow:hidden}.upload-progress-head .filename .icon{color:var(--text-muted);flex-shrink:0}.progress-track{background:var(--bg-active);border-radius:999px;height:5px;position:relative;overflow:hidden}.progress-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .3s}.progress-track.indeterminate .progress-fill{width:35%;animation:1.15s cubic-bezier(.4,0,.2,1) infinite progress-slide;position:absolute;left:0}@keyframes progress-slide{0%{transform:translate(-120%)}to{transform:translate(360%)}}.upload-progress-label{color:var(--text-muted);margin-top:9px;font-size:12px}.empty-state{background:var(--bg-card);border:1px dashed var(--border-strong);border-radius:var(--radius);text-align:center;color:var(--text-muted);padding:48px 24px}.empty-state .empty-icon{border-radius:var(--radius);background:var(--bg-elevated);width:46px;height:46px;color:var(--text-muted);border:1px solid var(--border);place-items:center;margin:0 auto 15px;display:grid}.empty-state p.title{color:var(--text);font-size:15px;font-weight:600}.chat-layout{grid-template-columns:236px 1fr;gap:24px;height:calc(100vh - 56px);display:grid}.chat-list{border-right:1px solid var(--border);padding-right:18px;overflow-y:auto}.chat-item{cursor:pointer;border-radius:var(--radius-sm);color:var(--text-muted);align-items:center;gap:8px;margin-bottom:2px;padding:8px 10px;font-size:13px;transition:background .12s,color .12s;display:flex}.chat-item:hover{background:var(--bg-hover);color:var(--text)}.chat-item.active{background:var(--bg-active);color:var(--text)}.chat-item .chat-title{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.chat-item .chat-x{color:var(--text-dim);opacity:0;border-radius:4px;padding:1px 5px;font-size:16px;line-height:1;transition:opacity .12s,background .12s,color .12s}.chat-item:hover .chat-x{opacity:1}.chat-item .chat-x:hover{background:var(--danger-weak);color:var(--danger)}.chat-container{flex-direction:column;height:100%;display:flex}.chat-messages{flex:1;padding-right:10px;overflow-y:auto}.chat-empty{text-align:center;place-items:center;height:100%;display:grid}.chat-empty .empty-icon{border-radius:var(--radius);background:var(--bg-card);width:52px;height:52px;color:var(--accent);border:1px solid var(--border-strong);place-items:center;margin:0 auto 16px;display:grid}.chat-empty h3{margin-bottom:8px;font-size:19px}.chat-empty p{color:var(--text-muted);max-width:42ch;margin:0 auto}.message{gap:13px;max-width:820px;margin-bottom:24px;display:flex}.msg-avatar{border:1px solid var(--border-strong);border-radius:6px;flex-shrink:0;place-items:center;width:28px;height:28px;font-size:11px;font-weight:650;display:grid}.message.user .msg-avatar{background:var(--bg-card);color:var(--text-muted)}.message.assistant .msg-avatar{background:var(--bg-card);color:var(--accent)}.msg-body{flex:1;min-width:0}.message .role{color:var(--text);margin-bottom:4px;font-size:12px;font-weight:600}.message .content{word-wrap:break-word;overflow-wrap:anywhere;color:var(--text);font-size:14.5px;line-height:1.68}.message .content.plain{white-space:pre-wrap}.message.user .content{color:var(--text-muted)}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p{margin:0 0 11px}.md ul,.md ol{margin:0 0 11px;padding-left:22px}.md li{margin:3px 0}.md li::marker{color:var(--text-dim)}.md h1,.md h2,.md h3,.md h4{margin:18px 0 8px;line-height:1.3}.md h1{font-size:18px}.md h2{font-size:16px}.md h3{font-size:14.5px}.md h4{font-size:13.5px}.md strong{color:var(--text);font-weight:650}.md em{color:var(--text)}.md a{color:var(--accent)}.md code{font-family:var(--font-mono);background:var(--bg-elevated);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:.86em}.md pre{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);margin:0 0 11px;padding:12px 14px;overflow-x:auto}.md pre code{background:0 0;border:none;padding:0;font-size:12.5px;line-height:1.6}.md blockquote{border-left:2px solid var(--border-strong);color:var(--text-muted);margin:0 0 11px;padding-left:13px}.md hr{border:none;border-top:1px solid var(--border);margin:16px 0}.md table{border-collapse:collapse;width:100%;margin:0 0 11px;font-size:13px}.md th,.md td{border:1px solid var(--border);text-align:left;padding:6px 10px}.md th{background:var(--bg-elevated);font-weight:600}.cite-ref{background:var(--accent-weak);min-width:15px;height:15px;color:var(--accent);font-family:var(--font-mono);vertical-align:text-top;cursor:default;border-radius:4px;place-items:center;margin:0 1px;padding:0 3px;font-size:9.5px;font-weight:600;line-height:1;display:inline-grid}.citations{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-top:15px;padding:13px}.citations-header{text-transform:uppercase;letter-spacing:.07em;color:var(--text-dim);font-size:11px;font-weight:600;font-family:var(--font-mono);margin-bottom:11px}.citation{color:var(--text-muted);border-left:2px solid var(--border-strong);margin-bottom:12px;padding-left:12px;font-size:13px}.citation:last-child{margin-bottom:0}.citation-source{color:var(--text);flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:3px;font-size:12px;font-weight:600;display:flex}.citation-source .cite-num{background:var(--accent-weak);min-width:17px;height:17px;color:var(--accent);font-size:10px;font-family:var(--font-mono);border-radius:4px;place-items:center;padding:0 4px;display:inline-grid}.citation-source .dim{font-family:var(--font-mono)}.citation .preview{color:var(--text-muted);font-size:12px;line-height:1.55}.cache-badge{background:var(--accent-weak);color:var(--accent);text-transform:uppercase;letter-spacing:.04em;vertical-align:middle;font-size:10px;font-weight:600;font-family:var(--font-mono);border-radius:4px;align-items:center;gap:4px;margin-left:9px;padding:2px 7px;display:inline-flex}.composer{border-top:1px solid var(--border);align-items:flex-end;gap:10px;margin-top:6px;padding-top:15px;display:flex}.composer textarea{resize:none;min-height:50px;max-height:200px}.composer .btn-primary{width:auto;height:50px;padding:0 20px}.typing{align-items:center;gap:4px;display:inline-flex}.typing span{background:var(--accent);border-radius:50%;width:5px;height:5px;animation:1.2s ease-in-out infinite typing-bounce}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}@keyframes typing-bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.upload-input{display:none}.spinner{border:2px solid var(--border-strong);border-top-color:var(--text);border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading-screen{height:100vh;color:var(--text-muted);place-items:center;gap:12px;display:grid}@media (width<=860px){.auth-split{grid-template-columns:1fr}.auth-brand{display:none}.layout{grid-template-columns:64px 1fr}.sidebar{padding:14px 8px}.brand .wordmark,.sidebar-header .tenant-name,.sidebar-header .tenant-plan,.nav-link span.label,.nav-section-title,.user-email{display:none}.sidebar-header .tenant{justify-content:center;padding:6px}.nav-link{justify-content:center}.main-area{padding:20px 16px}.chat-layout{grid-template-columns:1fr}.chat-list{display:none}}
