:root{color-scheme:dark;--bg:#0b0f19;--panel:#111827;--line:#263244;--text:#e5e7eb;--muted:#94a3b8;--accent:#60a5fa}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif}header{height:56px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:rgba(17,24,39,.85);position:sticky;top:0;z-index:5;backdrop-filter:blur(10px)}button,.button{border:0;border-radius:10px;background:var(--accent);color:#06111f;font-weight:700;padding:10px 14px;text-decoration:none;cursor:pointer}button.danger{background:#f87171;color:#1f0808}button:disabled{opacity:.6;cursor:not-allowed}button:hover,.button:hover{filter:brightness(1.08)}.toolbar{display:flex;gap:8px;align-items:center}.serviceStatus{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:13px;white-space:nowrap}.serviceStatus .dot{width:9px;height:9px;border-radius:50%;background:#94a3b8;box-shadow:0 0 0 3px #94a3b822}.serviceStatus.ok .dot{background:#22c55e;box-shadow:0 0 0 3px #22c55e22}.serviceStatus.bad .dot{background:#ef4444;box-shadow:0 0 0 3px #ef444422}.serviceStatus.unknown .dot{background:#f59e0b;box-shadow:0 0 0 3px #f59e0b22}.layout{display:flex}#sidebar{width:320px;max-width:90vw;border-right:1px solid var(--line);background:#0d1424;position:fixed;top:56px;bottom:75px;left:0;z-index:4;transform:translateX(-100%);transition:.18s transform;overflow:auto}#sidebar.open{transform:translateX(0)}#kbPanel{width:380px;max-width:94vw;border-left:1px solid var(--line);background:#0d1424;position:fixed;top:56px;bottom:75px;right:0;z-index:4;transform:translateX(100%);transition:.18s transform;overflow:auto;padding-bottom:14px}#kbPanel.open{transform:translateX(0)}.sidehead{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid var(--line)}.sidehead button{padding:6px 10px}.session{display:block;width:calc(100% - 16px);margin:8px;padding:10px;text-align:left;background:#111827;color:var(--text);border:1px solid var(--line);border-radius:12px}.uploadBox{position:static;border:0;background:transparent;display:grid;grid-template-columns:1fr;gap:8px;padding:12px}.uploadBox input,.kbSearch input{border:1px solid var(--line);border-radius:10px;background:#0f172a;color:var(--text);padding:10px}.kbSearch{display:flex;gap:8px;padding:12px}.kbSearch input{min-width:0;flex:1}#uploadStatus{padding:0 12px 8px}#kbPanel h3{margin:14px 12px 8px}.kbFile,.kbHit,.kbJob{margin:8px 12px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#111827}.kbJob.processing,.kbJob.queued{border-color:#f59e0b}.kbJob.indexed{border-color:#22c55e}.kbJob.failed{border-color:#ef4444}.kbFile strong,.kbFile span,.kbFile small,.kbJob strong,.kbJob span,.kbJob small{display:block;overflow:hidden;text-overflow:ellipsis}.kbFile span,.kbFile small,.kbJob span,.kbJob small{color:var(--muted);font-size:12px;margin-top:4px}.kbFile button{margin-top:8px;padding:6px 8px;background:#f87171;color:#1f0808}.kbHit p{color:#cbd5e1;font-size:13px;max-height:160px;overflow:auto;white-space:pre-wrap}.session.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.session strong,.session span,.session small{display:block;overflow:hidden;text-overflow:ellipsis}.session span,.session small{color:var(--muted);font-weight:400;margin-top:4px}#chat{width:100%;max-width:980px;margin:0 auto;padding:24px 16px 120px}.msg{padding:14px 16px;border:1px solid var(--line);border-radius:14px;margin:12px 0;line-height:1.45}.user{background:#172033}.assistant{background:#0f172a}.role{font-size:12px;text-transform:uppercase;color:var(--muted);margin-bottom:6px;letter-spacing:.08em}.markdown>*:first-child{margin-top:0}.markdown>*:last-child{margin-bottom:0}.markdown p{margin:.55em 0}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{margin:1em 0 .45em;line-height:1.2}.markdown h1{font-size:1.55em}.markdown h2{font-size:1.35em}.markdown h3{font-size:1.18em}.markdown ul,.markdown ol{margin:.55em 0 .55em 1.5em;padding:0}.markdown li{margin:.25em 0}.markdown blockquote{margin:.7em 0;padding:.1em .9em;border-left:3px solid var(--accent);color:#cbd5e1;background:#0b1324;border-radius:0 8px 8px 0}.markdown hr{border:0;border-top:1px solid var(--line);margin:1em 0}.markdown a{color:#93c5fd}.markdown code{background:#020617;border:1px solid #1e293b;border-radius:5px;padding:.12em .32em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}.markdown pre{background:#020617;border:1px solid #1e293b;border-radius:12px;padding:12px;overflow:auto;white-space:pre;margin:.8em 0}.markdown pre code{background:transparent;border:0;padding:0;font-size:.9em}.tool{max-width:980px;margin:8px 0;border:1px solid #334155;border-radius:12px;background:#08111f}.tool summary{cursor:pointer;color:#93c5fd;padding:10px 12px}.tool pre{margin:0;padding:0 12px 12px;white-space:pre-wrap;color:#cbd5e1;max-height:360px;overflow:auto}form{position:fixed;bottom:0;left:0;right:0;border-top:1px solid var(--line);background:rgba(11,15,25,.92);display:flex;gap:10px;padding:14px;backdrop-filter:blur(10px);z-index:6}textarea{flex:1;max-width:900px;margin-left:auto;resize:none;border:1px solid var(--line);border-radius:12px;background:#0f172a;color:var(--text);padding:12px;font:inherit;outline:none}form button{margin-right:auto}.muted{color:var(--muted);font-size:14px}.center{min-height:100vh;display:grid;place-items:center}.card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:32px;box-shadow:0 20px 60px #0008}.narrow{width:min(420px,calc(100vw - 32px));text-align:center}.error{color:#fca5a5}@media (min-width:1300px){#sidebar{position:fixed;transform:none}.layout{padding-left:320px}#collapse{display:none}}