:root{
  color-scheme:dark;
  --bg:#0f1115; --panel:#151821; --panel2:#1b1f2a; --border:#252b38;
  --text:#e7e9ef; --muted:#8b93a7; --dim:#5f6779;
  --accent:#c96442; --accent2:#e07a55; --ok:#3fb950; --err:#f85149; --warn:#d29922;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:15px/1.6 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;overflow:hidden}
#app{display:flex;height:100vh}

/* ---------- sidebar ---------- */
#sidebar{width:270px;flex:0 0 270px;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0}
.side-head{padding:14px;border-bottom:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:9px;font-weight:600;font-size:14px;margin-bottom:12px;letter-spacing:.2px}
.dot{width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 14px var(--accent)}
.primary-btn{width:100%;padding:9px 12px;border-radius:8px;border:1px solid var(--border);background:var(--panel2);color:var(--text);font-size:13.5px;font-weight:500;cursor:pointer;text-align:left}
.primary-btn:hover{border-color:var(--accent);color:#fff}
.side-search{padding:10px 14px}
.side-search input{width:100%;padding:7px 10px;border-radius:7px;border:1px solid var(--border);background:#0f1218;color:var(--text);font-size:13px;outline:none}
.side-search input:focus{border-color:var(--accent)}
#chatlist{flex:1;overflow-y:auto;padding:4px 8px 8px}
.chat-item{padding:8px 10px;border-radius:7px;font-size:13px;color:#c3c9d6;cursor:pointer;display:flex;justify-content:space-between;gap:8px;align-items:center}
.chat-item:hover{background:var(--panel2)}
.chat-item.active{background:#232937;color:#fff}
.chat-item .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-item .x{opacity:0;border:0;background:none;color:var(--dim);cursor:pointer;font-size:14px;padding:0 2px}
.chat-item:hover .x{opacity:1}
.chat-item .x:hover{color:var(--err)}
.side-foot{border-top:1px solid var(--border);padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.model-row{display:flex;flex-direction:column;gap:5px}
.model-row label{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--dim)}
.model-row select{width:100%;padding:7px 9px;border-radius:7px;border:1px solid var(--border);background:#0f1218;color:var(--text);font-size:12.5px;outline:none}
.side-actions{display:flex;gap:6px;flex-wrap:wrap}
.side-actions button{flex:1;padding:6px 4px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:11.5px;cursor:pointer;white-space:nowrap}
.side-actions button:hover{border-color:var(--accent);color:var(--text)}
.who{font-size:11px;color:var(--dim);display:flex;justify-content:space-between}

/* ---------- main ---------- */
#main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
#topbar{height:50px;flex:0 0 50px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;padding:0 16px;background:rgba(15,17,21,.85);backdrop-filter:blur(6px)}
#chat-title{font-size:13.5px;color:#cdd3df;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.top-right{display:flex;align-items:center;gap:8px}
.badge{font-size:10.5px;color:var(--muted);border:1px solid var(--border);border-radius:20px;padding:3px 9px}
.icon-btn{border:1px solid transparent;background:none;color:var(--muted);cursor:pointer;font-size:15px;padding:4px 7px;border-radius:6px}
.icon-btn:hover{background:var(--panel2);color:var(--text)}
#menu{display:none}

#messages{flex:1;overflow-y:auto;padding:26px 0 10px;min-height:0}
.msg{max-width:820px;margin:0 auto 22px;padding:0 22px;display:flex;gap:14px}
.msg .avatar{width:28px;height:28px;flex:0 0 28px;border-radius:7px;display:grid;place-items:center;font-size:12px;font-weight:700}
.msg.user .avatar{background:#2a3242;color:#cdd6e6}
.msg.assistant .avatar{background:var(--accent);color:#fff}
.msg .body{min-width:0;flex:1}
.msg .role{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--dim);margin-bottom:5px}
.content{word-wrap:break-word;overflow-wrap:anywhere}
.content p{margin:0 0 10px}
.content p:last-child{margin-bottom:0}
.content h1,.content h2,.content h3{margin:16px 0 8px;line-height:1.3}
.content h1{font-size:20px}.content h2{font-size:17px}.content h3{font-size:15px}
.content ul,.content ol{margin:6px 0 12px;padding-left:22px}
.content li{margin:3px 0}
.content a{color:var(--accent2)}
.content code{font-family:var(--mono);font-size:12.5px;background:#1e232f;padding:1.5px 5px;border-radius:4px}
.content pre{position:relative;background:#0b0d12;border:1px solid var(--border);border-radius:9px;padding:12px 13px;overflow-x:auto;margin:10px 0}
.content pre code{background:none;padding:0;font-size:12.5px;line-height:1.55;white-space:pre}
.content table{border-collapse:collapse;margin:10px 0;font-size:13px;display:block;overflow-x:auto}
.content th,.content td{border:1px solid var(--border);padding:6px 10px;text-align:left}
.content th{background:var(--panel2)}
.content blockquote{border-left:3px solid var(--accent);margin:8px 0;padding:2px 0 2px 12px;color:var(--muted)}
.copy-btn{position:absolute;top:6px;right:6px;font-size:10.5px;padding:2px 7px;border-radius:5px;border:1px solid var(--border);background:var(--panel2);color:var(--muted);cursor:pointer;opacity:0;transition:opacity .12s}
pre:hover .copy-btn{opacity:1}

/* tool cards */
.tool{margin:10px 0;border:1px solid var(--border);border-radius:9px;background:#12151d;overflow:hidden}
.tool-head{display:flex;align-items:center;gap:8px;padding:8px 11px;cursor:pointer;font-size:12.5px;color:#c8cedb;background:#161a24}
.tool-head:hover{background:#1a1f2b}
.tool-head .name{font-family:var(--mono);font-size:12px;color:var(--accent2)}
.tool-head .host{font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.tool-head .st{margin-left:auto;font-size:11px;font-family:var(--mono)}
.st.ok{color:var(--ok)}.st.bad{color:var(--err)}.st.run{color:var(--warn)}
.tool-body{display:none;border-top:1px solid var(--border);padding:10px 11px}
.tool.open .tool-body{display:block}
.tool-cmd{font-family:var(--mono);font-size:12px;color:#dfe4ef;background:#0b0d12;border:1px solid var(--border);border-radius:6px;padding:8px 9px;overflow-x:auto;white-space:pre-wrap;margin-bottom:8px}
.tool-out{font-family:var(--mono);font-size:11.5px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:340px;overflow:auto;color:#b9c1d1}
.tool-out.err{color:#ff9b95}

/* welcome */
.welcome{max-width:640px;margin:8vh auto 0;padding:0 22px;text-align:center}
.welcome h2{font-size:24px;margin:0 0 8px;font-weight:600}
.welcome p{color:var(--muted);font-size:13.5px;margin:0 0 22px}
.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.chip{padding:8px 13px;border-radius:20px;border:1px solid var(--border);background:var(--panel);color:#c3c9d6;font-size:12.5px;cursor:pointer}
.chip:hover{border-color:var(--accent);color:#fff}

/* composer */
#composer{flex:0 0 auto;padding:10px 0 16px;background:linear-gradient(180deg,rgba(15,17,21,0),var(--bg) 30%)}
#composer-inner{max-width:820px;margin:0 auto;padding:0 22px;display:flex;gap:9px;align-items:flex-end}
#input{flex:1;resize:none;max-height:210px;padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--panel);color:var(--text);font:14.5px/1.5 inherit;outline:none}
#input:focus{border-color:var(--accent)}
#send{width:40px;height:40px;flex:0 0 40px;border-radius:10px;border:0;background:var(--accent);color:#fff;font-size:15px;cursor:pointer}
#send:disabled{opacity:.45;cursor:default}
#status{max-width:820px;margin:6px auto 0;padding:0 22px;font-size:11.5px;color:var(--dim);min-height:16px}

/* modal */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:grid;place-items:center;z-index:50;padding:20px}
.modal.hidden{display:none}
.modal-card{width:min(900px,96vw);max-height:86vh;background:var(--panel);border:1px solid var(--border);border-radius:14px;display:flex;flex-direction:column;overflow:hidden}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--border)}
.modal-head h3{margin:0;font-size:14.5px;font-weight:600}
#modal-body{overflow:auto;padding:16px}
#modal-body pre{background:#0b0d12;border:1px solid var(--border);border-radius:8px;padding:11px;font-size:12px;white-space:pre-wrap;word-break:break-word;font-family:var(--mono)}
.mem-item{border:1px solid var(--border);border-radius:9px;padding:11px 13px;margin-bottom:10px;background:#12151d}
.mem-item h4{margin:0 0 5px;font-size:12.5px;font-family:var(--mono);color:var(--accent2)}
.mem-item .v{font-size:12.5px;color:#c3c9d6;white-space:pre-wrap}
.mem-item .meta{font-size:10.5px;color:var(--dim);margin-top:6px}
.act-row{border-bottom:1px solid var(--border);padding:9px 0;font-size:12px}
.act-row .c{font-family:var(--mono);font-size:11.5px;color:#dfe4ef}
.act-row .m{color:var(--dim);font-size:10.5px}
.act-row .o{font-family:var(--mono);font-size:11px;color:#9aa3b5;white-space:pre-wrap;max-height:110px;overflow:auto;margin-top:5px}

@media (max-width:820px){
  #sidebar{position:fixed;left:0;top:0;bottom:0;z-index:40;transform:translateX(-100%);transition:transform .18s}
  #sidebar.open{transform:none}
  #menu{display:block}
  .msg{padding:0 14px}
  #composer-inner{padding:0 12px}
  #status{padding:0 14px}
}
