:root{--bg: #1a1a1a;--panel: #222;--accent: #f46b3d;--accent-h: #d85a2f;--text: #eee;--text-d: #aaa;--radius: 10px}*{box-sizing:border-box;margin:0;padding:0;font-family:Segoe UI,system-ui,sans-serif}body{height:100vh;background:var(--bg);color:var(--text);overflow:hidden;font-size:15px}button{font-family:inherit}a{color:var(--accent)}@media print{body{display:none!important}}.app{height:100vh;display:flex;flex-direction:column}header.top{height:56px;background:#111;border-bottom:1px solid #333;display:flex;align-items:center;justify-content:space-between;padding:0 16px;flex-shrink:0;gap:16px}header.top .brand{display:flex;align-items:center;gap:12px}header.top .brand img{height:28px;width:auto}header.top .brand h1{font-size:15px;color:var(--accent);font-weight:600}header.top .brand .backend-badge{font-size:11px;color:var(--text-d);border:1px solid #ffffff22;border-radius:999px;padding:2px 9px;white-space:nowrap}header.top nav{display:flex;gap:6px}header.top nav button{background:none;border:1px solid transparent;color:var(--text-d);cursor:pointer;font-size:13px;padding:6px 12px;border-radius:6px}header.top nav button.active{color:#fff;border-color:var(--accent)}header.top nav button:hover{color:#fff}header.top .right{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text-d)}header.top .right button{background:none;border:none;color:var(--text-d);cursor:pointer;font-size:12px}header.top .right button:hover{color:#fff}main.content{flex:1;overflow:hidden;display:flex}.login-wrap{flex:1;display:flex;align-items:center;justify-content:center}.login-card{background:var(--panel);border:1px solid #333;border-radius:12px;padding:28px;width:340px}.login-card img{height:34px;margin-bottom:18px}.login-card h2{font-size:16px;margin-bottom:16px;color:#fff}.login-card input{width:100%;padding:10px 12px;margin-bottom:10px;background:#1a1a1a;border:1px solid #444;border-radius:8px;color:#fff;font-size:14px}.login-card button{width:100%;padding:10px;background:var(--accent);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px}.login-card button:hover{background:var(--accent-h)}.login-card .err{color:#e74c3c;font-size:12px;margin-bottom:8px}.chat-col{flex:1;display:flex;flex-direction:column;min-width:320px}.messages{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px}.msg{max-width:820px;width:100%;align-self:center;display:flex;gap:12px}.avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}.u .avatar{background:var(--accent);color:#fff}.a .avatar{background:#444;color:#fff}.body{flex:1;min-width:0}.name{font-size:12px;font-weight:600;margin-bottom:4px}.u .name{color:var(--accent)}.a .name{color:#ccc}.text{font-size:15.5px;line-height:1.65;word-wrap:break-word}.text p{margin-bottom:8px}.text ul,.text ol{padding-left:20px;margin:8px 0}.text li{margin-bottom:4px}.text strong{color:#fff}.text table{border-collapse:collapse;margin:8px 0;font-size:13px}.text th,.text td{border:1px solid #444;padding:4px 8px}.text code{background:#333;padding:2px 6px;border-radius:4px;font-family:monospace;font-size:12px}.text blockquote{border-left:3px solid var(--accent);padding-left:10px;color:var(--text-d);margin:8px 0}.cite{border:none;background:#f46b3d22;color:var(--accent);padding:1px 7px;border-radius:4px;font-size:11px;cursor:pointer;margin:0 2px}.cite:hover{background:#f46b3d44}.empty{text-align:center;color:var(--text-d);padding:70px 20px}.empty h2{font-size:19px;margin-bottom:8px;color:var(--text)}.box{border:1px solid #333;border-radius:8px;margin-bottom:10px;overflow:hidden;background:#1e1e1e}.box.nav{border-color:#f46b3d33}.box.debug{border-color:#4a9eff44}.box .hd{padding:8px 12px;background:#252525;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:13px;color:#aaa;-webkit-user-select:none;user-select:none}.box.nav .hd{background:#f46b3d11}.box.debug .hd{background:#1a2533;color:#82aaff}.box .hd .arrow{font-size:10px;transition:transform .2s}.box .hd.open .arrow{transform:rotate(90deg)}.box .bd{padding:10px 14px;font-size:13.5px;color:#ccc}.box .bd ul{padding-left:18px}.box .bd li{margin-bottom:5px}.trace{display:flex;gap:8px;align-items:flex-start;padding:3px 0;border-bottom:1px solid #333}.tag{font-size:10px;padding:1px 6px;border-radius:3px;flex-shrink:0;margin-top:1px}.tag.explore{background:#2d5a3f;color:#7ee787}.tag.extract{background:#5a3f2d;color:#f4a261}.tag.skip{background:#3d3d3d;color:#aaa}.debug pre{white-space:pre-wrap;font-size:11px;color:#bcd;background:#11161c;padding:8px;border-radius:6px;max-height:240px;overflow:auto;margin:6px 0}.debug .lbl{color:#4a9eff;font-weight:600;font-size:11px;margin-top:8px}.clarif{background:#2a2a2a;border:1px solid var(--accent);border-radius:8px;padding:12px 14px;margin:6px 0}.clarif .t{color:var(--accent);font-weight:600;margin-bottom:8px}.clarif .sg{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.clarif .sg button{background:#333;border:1px solid #444;color:#eee;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:13px}.clarif .sg button:hover{background:#f46b3d22}.input-area{border-top:1px solid #333;padding:12px 16px;background:#111;flex-shrink:0}.pastille{max-width:820px;margin:0 auto 8px;background:#3a2a16;border:1px solid var(--accent);color:#f4a261;font-size:12px;padding:6px 12px;border-radius:8px;display:flex;align-items:center;gap:8px}.dot{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.wrap{max-width:820px;margin:0 auto;display:flex;gap:8px;align-items:flex-end;background:var(--panel);border:1px solid #444;border-radius:var(--radius);padding:8px 12px}.wrap textarea{flex:1;resize:none;border:none;background:transparent;color:#fff;outline:none;font-size:15px;max-height:120px;min-height:22px;font-family:inherit;line-height:1.45}.wrap textarea:disabled{color:#666}.send{width:34px;height:34px;border-radius:8px;background:var(--accent);color:#fff;border:none;cursor:pointer;font-size:16px}.send:hover{background:var(--accent-h)}.send:disabled{opacity:.4;cursor:not-allowed}.viewer{width:0;display:flex;flex-direction:column;border-left:1px solid #333;background:#111;transition:width .25s;overflow:hidden}.viewer.open{width:50%;min-width:360px}.viewer .vh{height:42px;border-bottom:1px solid #333;display:flex;align-items:center;justify-content:space-between;padding:0 12px;flex-shrink:0;background:#161616}.viewer .vh span{font-size:13px;color:#aaa}.viewer .vh button{background:none;border:none;color:#888;cursor:pointer;font-size:16px}.viewer .vbody{flex:1;overflow:auto;padding:10px;text-align:center}.viewer img{max-width:100%;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none}.admin{flex:1;overflow-y:auto;padding:24px}.admin h2{font-size:18px;margin-bottom:16px;color:#fff}.admin .bar{display:flex;gap:10px;align-items:center;margin-bottom:18px;flex-wrap:wrap}.admin .bar button,.admin .bar label{background:var(--accent);color:#fff;border:none;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:13px}.admin .bar button.sec{background:#333}.admin table{width:100%;border-collapse:collapse;font-size:13px}.admin th,.admin td{text-align:left;padding:8px 10px;border-bottom:1px solid #2a2a2a}.admin th{color:var(--text-d);font-weight:600}.admin .status{font-size:11px;padding:2px 8px;border-radius:4px}.admin .status.indexed{background:#2d5a3f;color:#7ee787}.admin .status.uploaded{background:#5a3f2d;color:#f4a261}.admin .status.ongoing{background:#5a4416;color:#f4c84e}.admin .warn{color:#f4a261;font-size:11px}.admin .act{background:none;border:1px solid #444;color:#ccc;padding:4px 8px;border-radius:6px;cursor:pointer;font-size:12px;margin-right:6px}.admin .act:hover{border-color:var(--accent);color:#fff}.admin .act.del:hover{border-color:#e74c3c;color:#e74c3c}.admin .jobmsg{margin:12px 0;font-size:13px;color:#f4a261}
