:root{
  --bg:#f4f6fb; --card:#ffffff; --ink:#1c2333; --muted:#6b7280; --line:#e5e9f2;
  --brand:#2f6bff; --brand-weak:#eaf0ff;
  --radius:14px; --shadow:0 1px 3px rgba(16,24,40,.06),0 8px 24px rgba(16,24,40,.06);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.65}

header{position:sticky;top:0;z-index:10;display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:12px 20px;background:rgba(255,255,255,.9);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px}
.logo{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#2f6bff,#7b3dff);color:#fff;font-weight:700;font-size:18px}
.brand h1{font-size:17px;line-height:1.2}
.brand .sub{font-size:12px;color:var(--muted)}
.modes{display:flex;gap:4px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:4px}
.modes button{border:0;background:transparent;padding:6px 14px;border-radius:999px;font-size:13px;color:var(--muted);cursor:pointer;transition:.15s}
.modes button.active{background:var(--brand);color:#fff}
.ghost{border:1px solid var(--line);background:#fff;border-radius:10px;padding:7px 12px;font-size:13px;cursor:pointer;color:var(--ink)}
.ghost:hover{border-color:var(--brand);color:var(--brand)}
.ghost.small{padding:4px 10px;font-size:12px}
.chip-toggle{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer;color:var(--muted);transition:.15s}
.chip-toggle.active{border-color:var(--brand);color:var(--brand);background:var(--brand-weak)}

main{display:grid;grid-template-columns:1fr 340px;gap:16px;max-width:1200px;margin:0 auto;padding:16px 20px;height:calc(100vh - 65px)}
.chat-col{display:flex;flex-direction:column;min-width:0}
.chat-list{flex:1;overflow-y:auto;padding:8px 4px 16px}

.sess{display:flex;gap:6px;align-items:center}
.sess select{max-width:170px;border:1px solid var(--line);border-radius:10px;padding:7px 8px;font-size:13px;background:#fff;color:var(--ink);outline:none}

.hero{flex:1;display:flex;flex-direction:column;justify-content:center;text-align:center;max-width:640px;margin:0 auto;padding:0 12px}
.hero.hide{display:none}
.hero h2{font-size:24px;margin-bottom:10px}
.hero p{color:var(--muted);margin-bottom:24px}
.examples{display:flex;flex-direction:column;gap:10px;max-width:560px;margin:0 auto}
.example{border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px 16px;text-align:left;cursor:pointer;font-size:14px;color:var(--ink);transition:.15s;box-shadow:var(--shadow)}
.example:hover{border-color:var(--brand);color:var(--brand)}

.msg{max-width:760px;margin:0 auto 18px;display:flex;gap:12px}
.msg .avatar{flex:none;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;font-size:15px;color:#fff;background:linear-gradient(135deg,#2f6bff,#7b3dff)}
.msg.user{flex-direction:row-reverse}
.msg.user .avatar{background:#334155}
.bubble{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);max-width:82%;min-width:0;overflow-wrap:break-word}
.msg.user .bubble{background:var(--brand);border-color:var(--brand);color:#fff}
.meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.chip{font-size:12px;padding:2px 10px;border-radius:999px;background:var(--brand-weak);color:var(--brand)}
.chip.src{background:#f1f5f9;color:#475569}
.bubble h3,.bubble h4{margin:10px 0 6px}
.bubble h3{font-size:16px}
.bubble h4{font-size:15px}
.bubble p{margin:6px 0}
.bubble ul,.bubble ol{padding-left:22px;margin:6px 0}
.bubble li{margin:3px 0}
.bubble code{background:#f1f5f9;border-radius:4px;padding:1px 5px;font-size:13px}
.copybtn{margin-top:10px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:3px 12px;font-size:12px;cursor:pointer;color:var(--muted)}
.copybtn:hover{color:var(--brand);border-color:var(--brand)}
.kb-profile{padding-bottom:4px;border-bottom:1px solid var(--line)}
.kb-profile textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font:inherit;font-size:13px;outline:none;margin-bottom:8px;height:92px;resize:vertical}
.kb-profile textarea:focus{border-color:var(--brand)}

.composer{display:flex;gap:10px;align-items:flex-end;padding-top:12px}
.composer textarea{flex:1;resize:none;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font:inherit;background:#fff;outline:none;max-height:160px}
.composer textarea:focus{border-color:var(--brand)}
#send{border:0;background:var(--brand);color:#fff;border-radius:12px;padding:12px 22px;font-size:15px;cursor:pointer}
#send:disabled{opacity:.5;cursor:not-allowed}

.kb-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;overflow-y:auto}
.kb-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.kb-actions{display:flex;gap:6px}
.kb-panel h2{font-size:16px}
.kb-panel h3{font-size:13px;color:var(--muted);margin:14px 0 8px;font-weight:600}
#docList{list-style:none}
#docList li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;margin-bottom:6px;font-size:13px}
#docList .t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#docList .n{color:var(--muted);font-size:12px;flex:none}
#docList .del{border:0;background:none;color:#ef4444;cursor:pointer;font-size:12px;flex:none}
.kb-add input,.kb-add textarea,.kb-search input{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font:inherit;font-size:13px;outline:none;margin-bottom:8px}
.kb-add textarea{height:110px;resize:vertical}
.kb-add input:focus,.kb-add textarea:focus,.kb-search input:focus{border-color:var(--brand)}
.primary{border:0;background:var(--brand);color:#fff;border-radius:10px;padding:9px 18px;font-size:13px;cursor:pointer;width:100%}
.kb-search .row{display:flex;gap:8px}
.kb-search .row input{margin-bottom:0}
.kb-search .row .ghost{flex:none}
.hit{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin-top:8px;font-size:12px}
.hit .ht{display:flex;justify-content:space-between;color:var(--brand);font-weight:600;margin-bottom:4px}
.hit .hs{color:var(--muted);line-height:1.5}
.empty-tip{color:var(--muted);font-size:12px;padding:6px 2px}

#toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%);background:#111827;color:#fff;padding:10px 18px;border-radius:10px;font-size:13px;opacity:0;pointer-events:none;transition:.25s;max-width:80vw;z-index:99}
#toast.show{opacity:.95}
#kbToggle{display:none}

@media (max-width:960px){
  main{grid-template-columns:1fr;height:auto;padding:12px}
  .chat-col{height:calc(100vh - 150px)}
  #kbToggle{display:block;margin-left:auto}
  .kb-panel{display:none;position:fixed;left:0;right:0;bottom:0;max-height:70vh;border-radius:16px 16px 0 0;z-index:50}
  .kb-panel.open{display:block}
  .brand .sub{display:none}
  .modes button{padding:5px 10px;font-size:12px}
}
