:root{
  --bg:#0a0d14; --panel:#0f1525; --panel2:#131b30; --line:#202a44;
  --ink:#eef2fb; --dim:#93a0bb; --faint:#5d6680; --accent:#5b8cff;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
.ws-body{background:var(--bg);color:var(--ink);
  font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Microsoft Yahei",sans-serif;
  display:flex;flex-direction:column;height:100vh;overflow:hidden}

/* 顶栏 */
.ws-topbar{height:56px;flex-shrink:0;display:flex;align-items:center;gap:24px;padding:0 22px;
  border-bottom:1px solid var(--line);background:rgba(10,14,22,.9);backdrop-filter:blur(12px)}
.ws-topbar .brand{font-size:17px;font-weight:800;color:#fff;text-decoration:none}
.ws-topbar .brand span{color:var(--accent)}
.ws-nav{display:flex;gap:18px;flex:1}
.ws-nav a{color:var(--dim);text-decoration:none;font-size:14px;padding:4px 0;border-bottom:2px solid transparent}
.ws-nav a.active{color:#fff;border-bottom-color:var(--accent)}
.ws-nav a:hover{color:#fff}

/* 主体三栏 */
.ws-main{flex:1;display:flex;min-height:0}

/* 左侧栏 */
.ws-sidebar{width:280px;flex-shrink:0;border-right:1px solid var(--line);background:var(--panel);
  display:flex;flex-direction:column;padding:14px}
.ws-new-btn{height:42px;border-radius:11px;border:0;background:linear-gradient(180deg,#5b8cff,#3f6fe0);
  color:#fff;font-weight:700;font-size:14px;cursor:pointer;margin-bottom:14px}
.ws-new-btn:hover{filter:brightness(1.08)}
.ws-import-box{margin:0 0 14px;border:1px solid var(--line);border-radius:12px;background:#11192b;padding:10px}
.ws-import-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.ws-import-top span{color:#cdd6e8;font-size:12px;font-weight:780}
.ws-import-top button{height:30px;border:1px solid var(--accent);background:#5b8cff;color:#fff;border-radius:8px;padding:0 9px;font:inherit;font-size:11.5px;font-weight:760;cursor:pointer}
.ws-import-box form{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}
.ws-import-box label{grid-column:1/-1;color:#cdd6e8;font-size:12px;font-weight:760}
.ws-import-box input{min-width:0;height:36px;border:1px solid #2a3858;background:#090d16;color:#fff;border-radius:9px;padding:0 10px;font:inherit;font-size:12.5px;outline:none}
.ws-import-box input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,140,255,.14)}
.ws-import-box button{height:36px;border:1px solid var(--accent);background:#5b8cff;color:#fff;border-radius:9px;padding:0 10px;font:inherit;font-size:12px;font-weight:760;cursor:pointer}
.ws-import-box button:disabled{opacity:.62;cursor:wait}
.ws-import-box p{min-height:17px;margin:7px 0 0;color:var(--faint);font-size:11.5px}
.ws-import-box p.ok{color:#b6f6dc}.ws-import-box p.error{color:#ff9ba8}
.ws-import-result{margin-top:8px;border-top:1px solid var(--line);padding-top:8px}
.ws-import-title{color:#fff;font-size:12.5px;font-weight:700;line-height:1.35;margin-bottom:7px}
.ws-import-actions{display:flex;gap:6px;flex-wrap:wrap}
.ws-import-actions button,.ws-import-actions a{height:30px;display:inline-flex;align-items:center;border:1px solid #2a3a62;background:#182238;color:#dbe6ff;border-radius:8px;padding:0 8px;text-decoration:none;font-size:11.5px;font-weight:740;cursor:pointer}
.ws-import-actions .primary{background:#5b8cff;border-color:#5b8cff;color:#fff}
.ws-import-actions .ready{border-color:rgba(54,214,176,.42);color:#b6f6dc;background:rgba(54,214,176,.1)}
.ws-manual-papers{margin-top:10px;display:flex;flex-direction:column;gap:8px;max-height:260px;overflow-y:auto}
.ws-manual-head{font-size:11.5px;color:#cdd6e8;font-weight:780;padding-top:2px}
.ws-manual-empty{font-size:11.5px;color:var(--faint);line-height:1.45;border-top:1px solid var(--line);padding-top:8px}
.ws-manual-paper{border:1px solid #25314d;background:#0b101d;border-radius:10px;padding:8px}
.ws-manual-paper.active{border-color:rgba(91,140,255,.55);background:#101a30}
.ws-manual-paper.parsing{border-color:rgba(255,206,87,.5);background:#171521}
.ws-manual-paper.error{border-color:rgba(255,114,132,.5);background:#1a1018}
.ws-manual-title{font-size:12px;font-weight:740;color:#eef2fb;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ws-manual-meta{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0;color:var(--faint);font-size:10.5px}
.ws-manual-paper.active .ws-manual-meta span:first-child{color:#b6f6dc}
.ws-manual-paper.parsing .ws-manual-meta span:first-child{color:#ffe09a}
.ws-manual-error{font-size:10.5px;color:#ff9ba8;margin:-2px 0 6px;line-height:1.35}
.ws-manual-actions{display:flex;gap:6px;flex-wrap:wrap}
.ws-manual-actions button,.ws-manual-actions a{height:28px;display:inline-flex;align-items:center;border:1px solid #2a3a62;background:#141e33;color:#dbe6ff;border-radius:7px;padding:0 7px;text-decoration:none;font-size:11px;font-weight:730;cursor:pointer}
.ws-manual-actions button:disabled{opacity:.55;cursor:wait}
.ws-manual-actions button:hover,.ws-manual-actions a:hover{border-color:var(--accent);color:#fff}
.ws-dir-filter{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.ws-dir-chip{font-size:11px;padding:4px 9px;border-radius:999px;border:1px solid var(--line);
  background:var(--panel2);color:var(--dim);cursor:pointer;transition:.14s}
.ws-dir-chip:hover,.ws-dir-chip.active{border-color:var(--accent);color:#fff;background:#16213d}
.ws-conv-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.ws-conv-item{padding:11px 12px;border-radius:10px;border:1px solid transparent;cursor:pointer;transition:.14s}
.ws-conv-item:hover{background:var(--panel2)}
.ws-conv-item.active{background:#16213d;border-color:var(--accent)}
.ws-conv-title{font-size:13px;font-weight:600;color:var(--ink);line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ws-conv-meta{font-size:11px;color:var(--faint);margin-top:4px}
.ws-conv-empty{color:var(--faint);font-size:13px;text-align:center;padding:30px 10px}

/* 聊天区 */
.ws-chat{flex:1;display:flex;flex-direction:column;min-width:0}
.ws-context-bar{flex-shrink:0;display:flex;align-items:center;gap:10px;padding:10px 18px;
  border-bottom:1px solid var(--line);background:var(--panel);font-size:12.5px;flex-wrap:wrap}
.wsc-label{color:var(--faint);font-weight:600}
.wsc-dir{color:#7aa2ff;background:rgba(91,140,255,.12);padding:3px 10px;border-radius:999px}
.wsc-papers{display:flex;gap:6px;flex-wrap:wrap}
.wsc-paper{color:#cdd6e8;background:var(--panel2);border:1px solid var(--line);padding:3px 9px;border-radius:8px;font-size:11.5px}
.wsc-paper button{background:none;border:0;color:var(--faint);cursor:pointer;margin-left:4px;font-size:13px}
.wsc-share{margin-left:auto;background:#182238;border:1px solid #2a3a62;color:#dbe6ff;
  padding:4px 11px;border-radius:8px;cursor:pointer;font-size:12px;font-weight:700}
.wsc-share:hover{border-color:var(--accent);color:#fff;background:#1b2948}
.wsc-attach{background:none;border:1px dashed var(--line);color:var(--dim);
  padding:4px 11px;border-radius:8px;cursor:pointer;font-size:12px}
.wsc-attach:hover{border-color:var(--accent);color:#fff}

.ws-messages{flex:1;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:20px;align-items:center}
.ws-msg{width:100%;max-width:760px;display:flex;gap:13px}
.ws-msg-avatar{width:32px;height:32px;border-radius:8px;flex-shrink:0;display:grid;place-items:center;font-size:14px;font-weight:700}
.ws-msg.user .ws-msg-avatar{background:#8a6ff5;color:#fff}
.ws-msg.assistant .ws-msg-avatar{background:linear-gradient(135deg,#5b8cff,#36d6b0);color:#06122c}
.ws-msg-content{position:relative;flex:1;min-width:0;padding-right:42px}
.ws-msg-copy{position:absolute;top:0;right:0;height:28px;padding:0 8px;border:1px solid var(--line);
  border-radius:7px;background:#11192b;color:var(--dim);font-size:11.5px;font-weight:700;cursor:pointer;opacity:.72}
.ws-msg:hover .ws-msg-copy,.ws-msg-copy:focus{opacity:1}
.ws-msg-copy:hover{border-color:var(--accent);color:#fff}
.ws-msg-body{flex:1;min-width:0;line-height:1.7;color:#dbe3f3;padding-top:4px}
.ws-msg-body h3,.ws-msg-body h4,.ws-msg-body h5{margin:16px 0 9px;color:#fff;font-weight:600}
.ws-msg-body h3{font-size:17px;border-bottom:1px solid var(--line);padding-bottom:6px}
.ws-msg-body p{margin:10px 0}
.ws-msg-body ul,.ws-msg-body ol{margin:10px 0;padding-left:24px}
.ws-msg-body li{margin:5px 0}
.ws-msg-body code{background:#1b2438;border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:.92em;font-family:'SF Mono',Consolas,monospace}
.ws-msg-body .code-block{margin:12px 0;background:#11192b;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.ws-msg-body .code-lang{padding:6px 12px;background:#0c1322;color:var(--dim);font-size:11px;font-weight:600;text-transform:uppercase}
.ws-msg-body .code-block pre{margin:0;padding:13px;overflow-x:auto}
.ws-msg-body .code-block code{background:none;border:0;padding:0;color:#cdd6e8;font-size:13px;line-height:1.6}
.ws-msg-body .table-wrap{margin:12px 0;overflow-x:auto;border:1px solid var(--line);border-radius:8px}
.ws-msg-body table{width:100%;border-collapse:collapse;font-size:13px}
.ws-msg-body th{background:#11192b;padding:9px 12px;text-align:left;font-weight:600;color:#fff;border-bottom:2px solid var(--line)}
.ws-msg-body td{padding:9px 12px;border-bottom:1px solid var(--line);color:#cdd6e8}
.ws-msg-body blockquote{margin:12px 0;padding:8px 14px;border-left:3px solid var(--accent);background:rgba(91,140,255,.07);color:#aab8cd}
.ws-msg-body hr{margin:16px 0;border:0;border-top:1px solid var(--line)}

/* 空状态 / 示例 */
.ws-empty{max-width:680px;margin:auto;text-align:center;padding:40px 20px}
.ws-empty h2{font-size:24px;color:#fff;margin:0 0 8px}
.ws-empty p{color:var(--dim);margin:0 0 28px}
.ws-examples{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.ws-example{padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:12px;
  text-align:left;cursor:pointer;transition:.14s;color:#cdd6e8;font-size:13px;line-height:1.5}
.ws-example:hover{border-color:var(--accent);background:var(--panel2)}

/* 输入区 */
.ws-compose{flex-shrink:0;display:flex;gap:10px;padding:16px 24px 22px;border-top:1px solid var(--line);
  background:var(--panel);align-items:flex-end}
.ws-compose textarea{flex:1;max-width:740px;margin:0 auto;min-height:46px;max-height:200px;padding:12px 14px;
  border-radius:12px;background:var(--bg);border:1px solid var(--line);color:var(--ink);
  font:inherit;resize:none;outline:none}
.ws-compose textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,140,255,.16)}
.ws-compose button{height:46px;padding:0 22px;border-radius:12px;border:0;
  background:linear-gradient(180deg,#5b8cff,#3f6fe0);color:#fff;font-weight:700;cursor:pointer;flex-shrink:0}
.ws-compose button:disabled{opacity:.5;cursor:default}

/* 挂载面板 */
.ws-attach-panel{position:fixed;inset:0;z-index:300;background:rgba(5,8,14,.7);backdrop-filter:blur(4px);
  display:flex;align-items:flex-start;justify-content:center;padding-top:10vh}
.ws-attach-panel[hidden]{display:none}
.wsa-inner{width:min(560px,92vw);max-height:70vh;background:var(--panel2);border:1px solid var(--line);
  border-radius:14px;overflow:hidden;display:flex;flex-direction:column}
.wsa-head{display:flex;gap:8px;padding:12px;border-bottom:1px solid var(--line)}
.wsa-head input{flex:1;height:40px;padding:0 12px;border-radius:10px;background:var(--bg);
  border:1px solid var(--line);color:var(--ink);outline:none}
.wsa-head button{height:40px;background:none;border:0;color:var(--dim);font-size:22px;cursor:pointer}
.wsa-head #wsaImport{width:auto;border:1px solid var(--accent);background:#5b8cff;color:#fff;border-radius:10px;padding:0 13px;font-size:13px;font-weight:760}
.wsa-head .wsa-upload{height:40px;display:inline-flex;align-items:center;border:1px solid #2a3a62;background:#141e33;color:#dbe6ff;border-radius:10px;padding:0 12px;font-size:13px;font-weight:760;cursor:pointer;white-space:nowrap}
.wsa-head .wsa-upload:hover{border-color:var(--accent);color:#fff}
.wsa-head #wsaClose{width:40px}
.wsa-results{overflow-y:auto;padding:8px}
.wsa-item{padding:11px 12px;border-radius:10px;cursor:pointer;border:1px solid transparent}
.wsa-item:hover{background:var(--panel);border-color:var(--accent)}
.wsa-item .t{font-size:13px;font-weight:600;color:var(--ink)}
.wsa-item .m{font-size:11.5px;color:var(--faint);margin-top:3px}
.wsa-item.import-suggest{border-color:rgba(91,140,255,.35);background:#101a30}
.wsa-item .actions{margin-top:8px;display:flex;gap:8px}
.wsa-item .actions button{height:30px;border:1px solid var(--accent);background:#5b8cff;color:#fff;border-radius:8px;padding:0 10px;font-size:12px;font-weight:740;cursor:pointer}

/* 顶栏账户 */
.ws-top-right .auth-btn{height:36px}

@media (max-width:768px){
  .ws-body{height:auto;min-height:100vh;overflow:auto}
  .ws-main{flex-direction:column;overflow:visible}
  .ws-sidebar{width:100%;border-right:0;border-bottom:1px solid var(--line);display:flex;max-height:42vh;overflow-y:auto}
  .ws-import-box{flex-shrink:0}
  .ws-conv-list{max-height:160px;flex:0 0 auto}
  .ws-chat{min-height:58vh}
  .ws-examples{grid-template-columns:1fr}
  .ws-topbar{gap:12px;padding:0 14px}
  .ws-nav{gap:10px}
  .ws-context-bar{padding:9px 12px;gap:7px}
  .wsc-share{margin-left:0}
  .ws-messages{padding:16px 12px;gap:16px}
  .ws-msg{gap:9px;max-width:100%}
  .ws-msg-content{padding-right:0}
  .ws-msg-copy{position:static;margin:0 0 6px auto;display:block}
  .ws-compose{padding:12px;gap:8px}
  .ws-compose button{padding:0 14px}
}
